Jump to content
LordJashin

BitmapsMerge function

Recommended Posts

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 by LordJashin
Link to comment
Share on other sites

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 by LordJashin
Link to comment
Share on other sites

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]

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
  • Create New...