{ =========================================================================== BBS: Canada Remote Systems Date: 05-26-93 (00:24) Number: 24154 From: SEAN PALMER Refer#: NONE To: ALL Recvd: NO Subj: SCALING BITMAPS Conf: (1221) F-PASCAL --------------------------------------------------------------------------- Don't know if anyone is interested, but here is some code to scale bitmaps. I JUST now wrote it, and it's tested, but it hasn't even begun to be optimized yet (that's why it's still postable in the Pascal Echo, no .ASM stuff yet) 8) works with VGA mode $13. } type fixed=record case boolean of true:(l:longint); false:(f:word;i:integer); end; procedure scaleBitmap(var bitmap;x,y:word;x1,y1,x2,y2:word); var a,i:word; sx,sy,cy,s:fixed; map:array[0..65521]of byte absolute bitmap; begin sx.l:=(x*$10000)div succ(x2-x1); sy.l:=(y*$10000)div succ(y2-y1); cy.i:=pred(y); cy.f:=$FFFF; while cy.i>=0 do begin a:=y2*320+x1; s.l:=(cy.i*x)*$10000; for i:=x2-x1 downto 0 do begin mem[$A000:a]:=map[s.i]; inc(a); inc(s.l,sx.l); end; dec(cy.l,sy.l); dec(y2); end; end; const bmp:array[0..3,0..3]of byte= ((0,1,2,3), (1,2,3,4), (2,3,4,5), (3,4,5,6)); var i:integer; begin asm mov ax,$13; int $10; end; for i:=1 to 99 do scaleBitMap(bmp,4,4,0,0,i*2,i*2); asm mov ax,$3; int $10; end; end.