LordJashin Posted November 20, 2012 Share Posted November 20, 2012 (edited) This will merge an array of bitmaps either Horizontally or vertically (puts them together) based on what you put for Vertical boolean. Maybe a better name for this? I don't think merge is the right word? Any suggestions on how to make this better? Some good TIA functions could slim this down. [scar] {=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= function BitmapsMerge(BmpArr: array of TSCARBitmap; Vertical: Boolean): TSCARBitmap; Contributors: LordJashin Description: Merges an array of bitmaps (puts side by side) either horizontally or vertically depending on Vertical boolean There must be 2 or more bitmaps for this to do anything Date Created: November 19th, 2012. By LordJashin. Last Modified: November 19th, 2012. By LordJashin. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=} function BitmapsMerge(BmpArr: array of TSCARBitmap; Vertical: Boolean): TSCARBitmap; var i, j, w, h, x, y: Integer; b, bw, bh: TIntArray; begin Result := TSCARBitmap.Create(''); h := high(BmpArr); if (h < 1) then Exit; for i := 0 to h do if BitmapExists(BmpArr) then begin SetLength(b, j + 1); SetLength(bw, j + 1); SetLength(bh, j + 1); b[j] := i; bw[j] := BmpArr.Width; bh[j] := BmpArr.Height; Inc(j); end; if ((j - 1) < 1) then Exit; if not Vertical then begin h := TIAMax(bh); w := TIASum(bw); end else begin h := TIASum(bh); w := TIAMax(bw); end; Result.SetSize(w, h); for i := 0 to (j - 1) do if not Vertical then begin BmpArr[b].DrawTo(Result, x, y); x := x + BmpArr[b].Width; end else begin BmpArr[b].DrawTo(Result, x, y); y := y + BmpArr[b].Height; end; end; [/scar] Next I'm going to make a bitmap debugging function with TSCARBitmapClient used inside of DebugATPA. Edited November 20, 2012 by LordJashin Quote Link to comment Share on other sites More sharing options...
Bixby Sayz Posted November 20, 2012 Share Posted November 20, 2012 Perhaps StackBitmaps or TileBitmaps? Quote Link to comment Share on other sites More sharing options...
LordJashin Posted November 20, 2012 Author Share Posted November 20, 2012 (edited) I think I'll do TileBitmaps. Or maybe BitmapLine? EDIT: Thing is...with tiling I think of this: http://images2.fanpop.com/images/photos/4000000/Obama-tiled-small-barack-obama-4063341-2200-1700.jpg I think I'll go with Jani's approach with all the "Line" functions. So I'll call it BitmapLine... Edited November 20, 2012 by LordJashin Quote Link to comment Share on other sites More sharing options...
Bixby Sayz Posted November 20, 2012 Share Posted November 20, 2012 Yeah, I'm with you on tile. Line works for me. Quote Link to comment Share on other sites More sharing options...
LordJashin Posted November 20, 2012 Author Share Posted November 20, 2012 I updated OSI with the new changes. You can now use Debug functions on Bitmaps very easily: [scar] {$DEFINE OSIDebug} {$I OSI/OSI.scar} var Bmp: TSCARBitmap; begin Bmp := TSCARBitmap.Create('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'); SetBitmapAsClient(Bmp); DebugTBA([box(0, 0, 50, 50), Box(50, 50, 100, 100)]); wait(3000); HideDebugImgWindow; Bmp.Free; end. [/scar] Quote Link to comment Share on other sites More sharing options...