+ fast GetImage, PutImage and GetScanLine implementations, based on a patch by James Richters

git-svn-id: trunk@37586 -
This commit is contained in:
nickysn 2017-11-13 00:48:47 +00:00
parent f22a6629c1
commit f35c28e3c0

View File

@ -1362,6 +1362,457 @@ begin
BlueValue := VGAPalette[ColorNum, 2] shl 2;
end;
{**********************************************************}
{ Procedure PutImage() }
{----------------------------------------------------------}
{ Displays the image contained in a bitmap starting at X,Y }
{ the first 2 bytes of the bitmap structure define the }
{ width and height of the bitmap }
{ note: This optomized version does not use PutPixel }
{ Which would be checking the viewport for every pixel }
{ Instead it just does it's own viewport check once then }
{ puts all the pixels within the veiwport without further}
{ checking. Also instead of checking BitBlt every pixel }
{ it is only checked once before all the pixels are }
{ displayed at once (JMR) }
{**********************************************************}
Procedure ptc_PutImageproc_8bpp(X,Y: smallint; var Bitmap; BitBlt: Word);
type
pt = array[0..{$ifdef cpu16}16382{$else}$fffffff{$endif}] of word;
ptw = array[0..2] of longint;
var
pixels:Pbyte;
k: longint;
i, j, y1, x1, deltaX, deltaX1, deltaY: smallint;
JxW, I_JxW: Longword;
Begin
inc(x,startXViewPort);
inc(y,startYViewPort);
{ width/height are 1-based, coordinates are zero based }
x1 := ptw(Bitmap)[0]+x-1; { get width and adjust end coordinate accordingly }
y1 := ptw(Bitmap)[1]+y-1; { get height and adjust end coordinate accordingly }
deltaY := 0;
deltaX := 0;
deltaX1 := 0;
k := 3 * sizeOf(Longint) div sizeOf(Word); { Three reserved longs at start of bitmap }
{ check which part of the image is in the viewport }
if clipPixels then
begin
if y < startYViewPort then
begin
deltaY := startYViewPort - y;
inc(k,(x1-x+1)*deltaY);
y := startYViewPort;
end;
if y1 > startYViewPort+viewHeight then
y1 := startYViewPort+viewHeight;
if x < startXViewPort then
begin
deltaX := startXViewPort-x;
x := startXViewPort;
end;
if x1 > startXViewPort + viewWidth then
begin
deltaX1 := x1 - (startXViewPort + viewWidth);
x1 := startXViewPort + viewWidth;
end;
end;
pixels := ptc_surface_lock;
case BitBlt of
XORPut:
Begin
for j:=Y to Y1 do
Begin
JxW:=j*PTCWidth;
inc(k,deltaX);
for i:=X to X1 do
begin
I_JxW:=i+JxW;
pixels[I_JxW] := pixels[I_JxW] xor (pt(bitmap)[k] and ColorMask);
inc(k);
end;
inc(k,deltaX1);
End;
End;
ORPut:
Begin
for j:=Y to Y1 do
Begin
JxW:=j*PTCWidth;
inc(k,deltaX);
for i:=X to X1 do
begin
I_JxW:=i+JxW;
pixels[I_JxW] := pixels[I_JxW] or (pt(bitmap)[k] and ColorMask);
inc(k);
end;
inc(k,deltaX1);
End;
End;
AndPut:
Begin
for j:=Y to Y1 do
Begin
JxW:=j*PTCWidth;
inc(k,deltaX);
for i:=X to X1 do
begin
I_JxW:=i+JxW;
pixels[I_JxW] := pixels[I_JxW] and (pt(bitmap)[k] and ColorMask);
inc(k);
end;
inc(k,deltaX1);
End;
End;
NotPut:
Begin
for j:=Y to Y1 do
Begin
JxW:=j*PTCWidth;
inc(k,deltaX);
for i:=X to X1 do
begin
pixels[i+JxW] := (pt(bitmap)[k] and ColorMask) xor ColorMask;
inc(k);
end;
inc(k,deltaX1);
End;
End;
Else
Begin
for j:=Y to Y1 do
Begin
JxW:=j*PTCWidth;
inc(k,deltaX);
for i:=X to X1 do
begin
pixels[i+JxW] := pt(bitmap)[k] and ColorMask;
inc(k);
end;
inc(k,deltaX1);
End;
End;
End; {case}
ptc_surface_unlock;
ptc_update;
end;
Procedure ptc_PutImageproc_16bpp(X,Y: smallint; var Bitmap; BitBlt: Word);
type
pt = array[0..{$ifdef cpu16}16382{$else}$fffffff{$endif}] of word;
ptw = array[0..2] of longint;
var
pixels:Pword;
k: longint;
i, j, y1, x1, deltaX, deltaX1, deltaY: smallint;
JxW, I_JxW: Longword;
Begin
inc(x,startXViewPort);
inc(y,startYViewPort);
{ width/height are 1-based, coordinates are zero based }
x1 := ptw(Bitmap)[0]+x-1; { get width and adjust end coordinate accordingly }
y1 := ptw(Bitmap)[1]+y-1; { get height and adjust end coordinate accordingly }
deltaY := 0;
deltaX := 0;
deltaX1 := 0;
k := 3 * sizeOf(Longint) div sizeOf(Word); { Three reserved longs at start of bitmap }
{ check which part of the image is in the viewport }
if clipPixels then
begin
if y < startYViewPort then
begin
deltaY := startYViewPort - y;
inc(k,(x1-x+1)*deltaY);
y := startYViewPort;
end;
if y1 > startYViewPort+viewHeight then
y1 := startYViewPort+viewHeight;
if x < startXViewPort then
begin
deltaX := startXViewPort-x;
x := startXViewPort;
end;
if x1 > startXViewPort + viewWidth then
begin
deltaX1 := x1 - (startXViewPort + viewWidth);
x1 := startXViewPort + viewWidth;
end;
end;
pixels := ptc_surface_lock;
case BitBlt of
XORPut:
Begin
for j:=Y to Y1 do
Begin
JxW:=j*PTCWidth;
inc(k,deltaX);
for i:=X to X1 do
begin
I_JxW:=i+JxW;
pixels[I_JxW] := pixels[I_JxW] xor pt(bitmap)[k];
inc(k);
end;
inc(k,deltaX1);
End;
End;
ORPut:
Begin
for j:=Y to Y1 do
Begin
JxW:=j*PTCWidth;
inc(k,deltaX);
for i:=X to X1 do
begin
I_JxW:=i+JxW;
pixels[I_JxW] := pixels[I_JxW] or pt(bitmap)[k];
inc(k);
end;
inc(k,deltaX1);
End;
End;
AndPut:
Begin
for j:=Y to Y1 do
Begin
JxW:=j*PTCWidth;
inc(k,deltaX);
for i:=X to X1 do
begin
I_JxW:=i+JxW;
pixels[I_JxW] := pixels[I_JxW] and pt(bitmap)[k];
inc(k);
end;
inc(k,deltaX1);
End;
End;
NotPut:
Begin
for j:=Y to Y1 do
Begin
JxW:=j*PTCWidth;
inc(k,deltaX);
for i:=X to X1 do
begin
pixels[i+JxW] := pt(bitmap)[k] xor $FFFF;
inc(k);
end;
inc(k,deltaX1);
End;
End;
Else
Begin
for j:=Y to Y1 do
Begin
JxW:=j*PTCWidth;
inc(k,deltaX);
for i:=X to X1 do
begin
pixels[i+JxW] := pt(bitmap)[k];
inc(k);
end;
inc(k,deltaX1);
End;
End;
End; {case}
ptc_surface_unlock;
ptc_update;
end;
{**********************************************************}
{ Procedure GetScanLine() }
{----------------------------------------------------------}
{ Returns the full scanline of the video line of the Y }
{ coordinate. The values are returned in a WORD array }
{ each WORD representing a pixel of the specified scanline }
{ note: we only need the pixels inside the ViewPort! (JM) }
{ note2: extended so you can specify start and end X coord }
{ so it is usable for GetImage too (JM) }
{ note3: This optomized version does not use GetPixel, }
{ Whcih would be checking the viewport for every pixel. }
{ Instead it just does it's own viewport check once then }
{ gets all the pixels on the scan line without further }
{ checking (JMR) }
{**********************************************************}
Procedure PTC_GetScanlineProc_8bpp (X1, X2, Y : smallint; Var Data);
Var
pixels : Pbyte;
x,vpx1,vpx2 : smallint;
Begin
vpx1:=X1+StartXViewPort;
vpx2:=X2+StartXViewPort;
Y:=Y+StartYViewPort;
{ constrain to the part of the scanline that is in the viewport }
if clipPixels then
begin
if vpx1 < startXViewPort then
vpx1 := startXViewPort;
if vpx2 > startXViewPort + viewWidth then
vpx2 := startXViewPort + viewWidth;
end;
{ constrain to the part of the scanline that is on the screen }
if vpx1 < 0 then
vpx1 := 0;
if vpx2 >= PTCwidth then
vpx2 := PTCwidth-1;
If (ClipPixels AND (y <= startYViewPort+viewHeight) and (y >= startYViewPort) and (y>=0) and (y<PTCheight)) or Not(ClipPixels) then
Begin
pixels := ptc_surface_lock;
For x:=vpx1 to vpx2 Do
WordArray(Data)[x-StartXViewPort-x1]:=pixels[x+y*PTCWidth] and ColorMask;
ptc_surface_unlock;
End;
End;
Procedure PTC_GetScanlineProc_16bpp (X1, X2, Y : smallint; Var Data);
Var
pixels : Pword;
x,vpx1,vpx2 : smallint;
Begin
vpx1:=X1+StartXViewPort;
vpx2:=X2+StartXViewPort;
Y:=Y+StartYViewPort;
{ constrain to the part of the scanline that is in the viewport }
if clipPixels then
begin
if vpx1 < startXViewPort then
vpx1 := startXViewPort;
if vpx2 > startXViewPort + viewWidth then
vpx2 := startXViewPort + viewWidth;
end;
{ constrain to the part of the scanline that is on the screen }
if vpx1 < 0 then
vpx1 := 0;
if vpx2 >= PTCwidth then
vpx2 := PTCwidth-1;
If (ClipPixels AND (y <= startYViewPort+viewHeight) and (y >= startYViewPort) and (y>=0) and (y<PTCheight)) or Not(ClipPixels) then
Begin
pixels := ptc_surface_lock;
For x:=vpx1 to vpx2 Do
WordArray(Data)[x-StartXViewPort-x1]:=pixels[x+y*PTCWidth];
ptc_surface_unlock;
End;
End;
{**********************************************************}
{ Procedure GetImage() }
{----------------------------------------------------------}
{ Returns a bitmap full the video specified by a rectagle }
{ defined by X1,Y1 to X2,Y2 }
{ the first 2 bytes of the bitmap structure define the }
{ width and height of the rectangle }
{ These are later used by PutImage() so the bitmap is }
{ properly represented }
{ there is a 3rd reserved byte before data starts }
{ note: This optomized version does not use GetScanLine or }
{ GetPixel, Whcih would be checking the viewport for }
{ every pixel. Instead it just does it's own viewport }
{ check once then gets all the pixels within the veiwport}
{ without further checking (JMR) }
{**********************************************************}
Procedure PTC_GetImageProc_8bpp(X1,Y1,X2,Y2: smallint; Var Bitmap);
type
pt = array[0..{$ifdef cpu16}16382{$else}$fffffff{$endif}] of word;
ptw = array[0..2] of longint;
var
pixels : Pbyte;
x,y,i,j,vpx1,vpx2,vpy1,vpy2 : smallint;
k : longint;
Begin
ptw(Bitmap)[0] := X2-X1+1; { First longint is width }
ptw(Bitmap)[1] := Y2-Y1+1; { Second longint is height }
ptw(bitmap)[2] := 0; { Third longint is reserved}
k:= 3 * Sizeof(longint) div sizeof(word); { Three reserved longs at start of bitmap }
vpx1:=x1+StartXViewPort;
vpx2:=x2+StartXViewPort;
vpy1:=y1+StartYViewPort;
vpy2:=y2+StartYViewPort;
{ check which part of the image is in the viewport }
if clipPixels then
begin
if vpx1 < startXViewPort then
vpx1 := startXViewPort;
if vpx2 > startXViewPort + viewWidth then
vpx2 := startXViewPort + viewWidth;
if vpy1 < startYViewPort then
vpy1 := startYViewPort;
if vpy2 > startYViewPort+viewHeight then
vpy2 := startYViewPort+viewHeight;
end;
{ check if coordinates are on the screen}
if vpx1 < 0 then
vpx1 := 0;
if vpx2 >= PTCwidth then
vpx2 := PTCwidth-1;
if vpy1 < 0 then
vpy1 := 0;
if vpy2 >= PTCheight then
vpy2 := PTCheight-1;
i := (x2 - x1 + 1);
j := i * (vpy1 - StartYViewPort - y1);
inc(k,j);
pixels := ptc_surface_lock;
for y:=vpy1 to vpy2 do
Begin
For x:=vpx1 to vpx2 Do
pt(Bitmap)[k+(x-StartXViewPort-x1)]:=pixels[x+y*PTCWidth] and ColorMask;
inc(k,i);
end;
ptc_surface_unlock;
end;
Procedure PTC_GetImageProc_16bpp(X1,Y1,X2,Y2: smallint; Var Bitmap);
type
pt = array[0..{$ifdef cpu16}16382{$else}$fffffff{$endif}] of word;
ptw = array[0..2] of longint;
var
pixels : Pword;
x,y,i,j,vpx1,vpx2,vpy1,vpy2 : smallint;
k : longint;
Begin
ptw(Bitmap)[0] := X2-X1+1; { First longint is width }
ptw(Bitmap)[1] := Y2-Y1+1; { Second longint is height }
ptw(bitmap)[2] := 0; { Third longint is reserved}
k:= 3 * Sizeof(longint) div sizeof(word); { Three reserved longs at start of bitmap }
vpx1:=x1+StartXViewPort;
vpx2:=x2+StartXViewPort;
vpy1:=y1+StartYViewPort;
vpy2:=y2+StartYViewPort;
{ check which part of the image is in the viewport }
if clipPixels then
begin
if vpx1 < startXViewPort then
vpx1 := startXViewPort;
if vpx2 > startXViewPort + viewWidth then
vpx2 := startXViewPort + viewWidth;
if vpy1 < startYViewPort then
vpy1 := startYViewPort;
if vpy2 > startYViewPort+viewHeight then
vpy2 := startYViewPort+viewHeight;
end;
{ check if coordinates are on the screen}
if vpx1 < 0 then
vpx1 := 0;
if vpx2 >= PTCwidth then
vpx2 := PTCwidth-1;
if vpy1 < 0 then
vpy1 := 0;
if vpy2 >= PTCheight then
vpy2 := PTCheight-1;
i := (x2 - x1 + 1);
j := i * (vpy1 - StartYViewPort - y1);
inc(k,j);
pixels := ptc_surface_lock;
for y:=vpy1 to vpy2 do
Begin
For x:=vpx1 to vpx2 Do
pt(Bitmap)[k+(x-StartXViewPort-x1)]:=pixels[x+y*PTCWidth];
inc(k,i);
end;
ptc_surface_unlock;
end;
{************************************************************************}
{* General routines *}
{************************************************************************}
@ -1522,7 +1973,10 @@ end;
InitMode := @ptc_Init320x200x4cgaC0;
DirectPutPixel := @ptc_DirectPixelProc_8bpp;
PutPixel := @ptc_PutPixelProc_8bpp;
PutImage := @ptc_PutImageProc_8bpp;
GetPixel := @ptc_GetPixelProc_8bpp;
GetScanLine := @ptc_GetScanLineProc_8bpp;
GetImage := @ptc_GetImageProc_8bpp;
SetRGBPalette := @ptc_SetRGBPaletteProc;
GetRGBPalette := @ptc_GetRGBPaletteProc;
@ -1555,7 +2009,10 @@ end;
InitMode := @ptc_Init320x200x4cgaC1;
DirectPutPixel := @ptc_DirectPixelProc_8bpp;
PutPixel := @ptc_PutPixelProc_8bpp;
PutImage := @ptc_PutImageProc_8bpp;
GetPixel := @ptc_GetPixelProc_8bpp;
GetScanLine := @ptc_GetScanLineProc_8bpp;
GetImage := @ptc_GetImageProc_8bpp;
SetRGBPalette := @ptc_SetRGBPaletteProc;
GetRGBPalette := @ptc_GetRGBPaletteProc;
@ -1588,7 +2045,10 @@ end;
InitMode := @ptc_Init320x200x4cgaC2;
DirectPutPixel := @ptc_DirectPixelProc_8bpp;
PutPixel := @ptc_PutPixelProc_8bpp;
PutImage := @ptc_PutImageProc_8bpp;
GetPixel := @ptc_GetPixelProc_8bpp;
GetScanLine := @ptc_GetScanLineProc_8bpp;
GetImage := @ptc_GetImageProc_8bpp;
SetRGBPalette := @ptc_SetRGBPaletteProc;
GetRGBPalette := @ptc_GetRGBPaletteProc;
@ -1621,7 +2081,10 @@ end;
InitMode := @ptc_Init320x200x4cgaC3;
DirectPutPixel := @ptc_DirectPixelProc_8bpp;
PutPixel := @ptc_PutPixelProc_8bpp;
PutImage := @ptc_PutImageProc_8bpp;
GetPixel := @ptc_GetPixelProc_8bpp;
GetScanLine := @ptc_GetScanLineProc_8bpp;
GetImage := @ptc_GetImageProc_8bpp;
SetRGBPalette := @ptc_SetRGBPaletteProc;
GetRGBPalette := @ptc_GetRGBPaletteProc;
@ -1654,7 +2117,10 @@ end;
InitMode := @ptc_Init640x200x2;
DirectPutPixel := @ptc_DirectPixelProc_8bpp;
PutPixel := @ptc_PutPixelProc_8bpp;
PutImage := @ptc_PutImageProc_8bpp;
GetPixel := @ptc_GetPixelProc_8bpp;
GetScanLine := @ptc_GetScanLineProc_8bpp;
GetImage := @ptc_GetImageProc_8bpp;
SetRGBPalette := @ptc_SetRGBPaletteProc;
GetRGBPalette := @ptc_GetRGBPaletteProc;
@ -1687,7 +2153,10 @@ end;
InitMode := @ptc_Init320x200x4cgaC0;
DirectPutPixel := @ptc_DirectPixelProc_8bpp;
PutPixel := @ptc_PutPixelProc_8bpp;
PutImage := @ptc_PutImageProc_8bpp;
GetPixel := @ptc_GetPixelProc_8bpp;
GetScanLine := @ptc_GetScanLineProc_8bpp;
GetImage := @ptc_GetImageProc_8bpp;
SetRGBPalette := @ptc_SetRGBPaletteProc;
GetRGBPalette := @ptc_GetRGBPaletteProc;
@ -1720,7 +2189,10 @@ end;
InitMode := @ptc_Init320x200x4cgaC1;
DirectPutPixel := @ptc_DirectPixelProc_8bpp;
PutPixel := @ptc_PutPixelProc_8bpp;
PutImage := @ptc_PutImageProc_8bpp;
GetPixel := @ptc_GetPixelProc_8bpp;
GetScanLine := @ptc_GetScanLineProc_8bpp;
GetImage := @ptc_GetImageProc_8bpp;
SetRGBPalette := @ptc_SetRGBPaletteProc;
GetRGBPalette := @ptc_GetRGBPaletteProc;
@ -1753,7 +2225,10 @@ end;
InitMode := @ptc_Init320x200x4cgaC2;
DirectPutPixel := @ptc_DirectPixelProc_8bpp;
PutPixel := @ptc_PutPixelProc_8bpp;
PutImage := @ptc_PutImageProc_8bpp;
GetPixel := @ptc_GetPixelProc_8bpp;
GetScanLine := @ptc_GetScanLineProc_8bpp;
GetImage := @ptc_GetImageProc_8bpp;
SetRGBPalette := @ptc_SetRGBPaletteProc;
GetRGBPalette := @ptc_GetRGBPaletteProc;
@ -1786,7 +2261,10 @@ end;
InitMode := @ptc_Init320x200x4cgaC3;
DirectPutPixel := @ptc_DirectPixelProc_8bpp;
PutPixel := @ptc_PutPixelProc_8bpp;
PutImage := @ptc_PutImageProc_8bpp;
GetPixel := @ptc_GetPixelProc_8bpp;
GetScanLine := @ptc_GetScanLineProc_8bpp;
GetImage := @ptc_GetImageProc_8bpp;
SetRGBPalette := @ptc_SetRGBPaletteProc;
GetRGBPalette := @ptc_GetRGBPaletteProc;
@ -1819,7 +2297,10 @@ end;
InitMode := @ptc_Init640x200x2;
DirectPutPixel := @ptc_DirectPixelProc_8bpp;
PutPixel := @ptc_PutPixelProc_8bpp;
PutImage := @ptc_PutImageProc_8bpp;
GetPixel := @ptc_GetPixelProc_8bpp;
GetScanLine := @ptc_GetScanLineProc_8bpp;
GetImage := @ptc_GetImageProc_8bpp;
SetRGBPalette := @ptc_SetRGBPaletteProc;
GetRGBPalette := @ptc_GetRGBPaletteProc;
@ -1852,7 +2333,10 @@ end;
InitMode := @ptc_Init640x480x2;
DirectPutPixel := @ptc_DirectPixelProc_8bpp;
PutPixel := @ptc_PutPixelProc_8bpp;
PutImage := @ptc_PutImageProc_8bpp;
GetPixel := @ptc_GetPixelProc_8bpp;
GetScanLine := @ptc_GetScanLineProc_8bpp;
GetImage := @ptc_GetImageProc_8bpp;
SetRGBPalette := @ptc_SetRGBPaletteProc;
GetRGBPalette := @ptc_GetRGBPaletteProc;
@ -1887,7 +2371,10 @@ end;
InitMode := @ptc_Init720x348x2;
DirectPutPixel := @ptc_DirectPixelProc_8bpp;
PutPixel := @ptc_PutPixelProc_8bpp;
PutImage := @ptc_PutImageProc_8bpp;
GetPixel := @ptc_GetPixelProc_8bpp;
GetScanLine := @ptc_GetScanLineProc_8bpp;
GetImage := @ptc_GetImageProc_8bpp;
SetRGBPalette := @ptc_SetRGBPaletteProc;
GetRGBPalette := @ptc_GetRGBPaletteProc;
HLine := @ptc_HLineProc_8bpp;
@ -1917,7 +2404,10 @@ end;
InitMode := @ptc_Init640x200x16;
DirectPutPixel := @ptc_DirectPixelProc_8bpp;
PutPixel := @ptc_PutPixelProc_8bpp;
PutImage := @ptc_PutImageProc_8bpp;
GetPixel := @ptc_GetPixelProc_8bpp;
GetScanLine := @ptc_GetScanLineProc_8bpp;
GetImage := @ptc_GetImageProc_8bpp;
SetRGBPalette := @ptc_SetRGBPaletteProc;
GetRGBPalette := @ptc_GetRGBPaletteProc;
@ -1947,7 +2437,10 @@ end;
InitMode := @ptc_Init640x350x16;
DirectPutPixel := @ptc_DirectPixelProc_8bpp;
PutPixel := @ptc_PutPixelProc_8bpp;
PutImage := @ptc_PutImageProc_8bpp;
GetPixel := @ptc_GetPixelProc_8bpp;
GetScanLine := @ptc_GetScanLineProc_8bpp;
GetImage := @ptc_GetImageProc_8bpp;
SetRGBPalette := @ptc_SetRGBPaletteProc;
GetRGBPalette := @ptc_GetRGBPaletteProc;
@ -1977,7 +2470,10 @@ end;
InitMode := @ptc_Init640x200x16;
DirectPutPixel := @ptc_DirectPixelProc_8bpp;
PutPixel := @ptc_PutPixelProc_8bpp;
PutImage := @ptc_PutImageProc_8bpp;
GetPixel := @ptc_GetPixelProc_8bpp;
GetScanLine := @ptc_GetScanLineProc_8bpp;
GetImage := @ptc_GetImageProc_8bpp;
SetRGBPalette := @ptc_SetRGBPaletteProc;
GetRGBPalette := @ptc_GetRGBPaletteProc;
@ -2007,7 +2503,10 @@ end;
InitMode := @ptc_Init640x350x16;
DirectPutPixel := @ptc_DirectPixelProc_8bpp;
PutPixel := @ptc_PutPixelProc_8bpp;
PutImage := @ptc_PutImageProc_8bpp;
GetPixel := @ptc_GetPixelProc_8bpp;
GetScanLine := @ptc_GetScanLineProc_8bpp;
GetImage := @ptc_GetImageProc_8bpp;
SetRGBPalette := @ptc_SetRGBPaletteProc;
GetRGBPalette := @ptc_GetRGBPaletteProc;
@ -2037,7 +2536,10 @@ end;
InitMode := @ptc_Init640x480x16;
DirectPutPixel := @ptc_DirectPixelProc_8bpp;
PutPixel := @ptc_PutPixelProc_8bpp;
PutImage := @ptc_PutImageProc_8bpp;
GetPixel := @ptc_GetPixelProc_8bpp;
GetScanLine := @ptc_GetScanLineProc_8bpp;
GetImage := @ptc_GetImageProc_8bpp;
SetRGBPalette := @ptc_SetRGBPaletteProc;
GetRGBPalette := @ptc_GetRGBPaletteProc;
@ -2067,7 +2569,10 @@ end;
InitMode := @ptc_Init320x200x256;
DirectPutPixel := @ptc_DirectPixelProc_8bpp;
PutPixel := @ptc_PutPixelProc_8bpp;
PutImage := @ptc_PutImageProc_8bpp;
GetPixel := @ptc_GetPixelProc_8bpp;
GetScanLine := @ptc_GetScanLineProc_8bpp;
GetImage := @ptc_GetImageProc_8bpp;
SetRGBPalette := @ptc_SetRGBPaletteProc;
GetRGBPalette := @ptc_GetRGBPaletteProc;
//SetAllPalette := @ptc_SetRGBAllPaletteProc;
@ -2098,7 +2603,10 @@ end;
InitMode := @ptc_Init320x200x256;
DirectPutPixel := @ptc_DirectPixelProc_8bpp;
PutPixel := @ptc_PutPixelProc_8bpp;
PutImage := @ptc_PutImageProc_8bpp;
GetPixel := @ptc_GetPixelProc_8bpp;
GetScanLine := @ptc_GetScanLineProc_8bpp;
GetImage := @ptc_GetImageProc_8bpp;
SetRGBPalette := @ptc_SetRGBPaletteProc;
GetRGBPalette := @ptc_GetRGBPaletteProc;
//SetAllPalette := @ptc_SetRGBAllPaletteProc;
@ -2129,7 +2637,10 @@ end;
InitMode := @ptc_Init640x400x256;
DirectPutPixel := @ptc_DirectPixelProc_8bpp;
PutPixel := @ptc_PutPixelProc_8bpp;
PutImage := @ptc_PutImageProc_8bpp;
GetPixel := @ptc_GetPixelProc_8bpp;
GetScanLine := @ptc_GetScanLineProc_8bpp;
GetImage := @ptc_GetImageProc_8bpp;
SetRGBPalette := @ptc_SetRGBPaletteProc;
GetRGBPalette := @ptc_GetRGBPaletteProc;
//SetAllPalette := @ptc_SetRGBAllPaletteProc;
@ -2160,7 +2671,10 @@ end;
InitMode := @ptc_Init640x480x256;
DirectPutPixel := @ptc_DirectPixelProc_8bpp;
PutPixel := @ptc_PutPixelProc_8bpp;
PutImage := @ptc_PutImageProc_8bpp;
GetPixel := @ptc_GetPixelProc_8bpp;
GetScanLine := @ptc_GetScanLineProc_8bpp;
GetImage := @ptc_GetImageProc_8bpp;
SetRGBPalette := @ptc_SetRGBPaletteProc;
GetRGBPalette := @ptc_GetRGBPaletteProc;
//SetAllPalette := @ptc_SetRGBAllPaletteProc;
@ -2191,7 +2705,10 @@ end;
InitMode := @ptc_Init320x200x32k;
DirectPutPixel := @ptc_DirectPixelProc_16bpp;
PutPixel := @ptc_PutPixelProc_16bpp;
PutImage := @ptc_PutImageProc_16bpp;
GetPixel := @ptc_GetPixelProc_16bpp;
GetScanLine := @ptc_GetScanLineProc_16bpp;
GetImage := @ptc_GetImageProc_16bpp;
SetRGBPalette := @ptc_SetRGBPaletteProc;
GetRGBPalette := @ptc_GetRGBPaletteProc;
HLine := @ptc_HLineProc_16bpp;
@ -2219,7 +2736,10 @@ end;
InitMode := @ptc_Init640x480x32k;
DirectPutPixel := @ptc_DirectPixelProc_16bpp;
PutPixel := @ptc_PutPixelProc_16bpp;
PutImage := @ptc_PutImageProc_16bpp;
GetPixel := @ptc_GetPixelProc_16bpp;
GetScanLine := @ptc_GetScanLineProc_16bpp;
GetImage := @ptc_GetImageProc_16bpp;
SetRGBPalette := @ptc_SetRGBPaletteProc;
GetRGBPalette := @ptc_GetRGBPaletteProc;
HLine := @ptc_HLineProc_16bpp;
@ -2247,7 +2767,10 @@ end;
InitMode := @ptc_Init320x200x64k;
DirectPutPixel := @ptc_DirectPixelProc_16bpp;
PutPixel := @ptc_PutPixelProc_16bpp;
PutImage := @ptc_PutImageProc_16bpp;
GetPixel := @ptc_GetPixelProc_16bpp;
GetScanLine := @ptc_GetScanLineProc_16bpp;
GetImage := @ptc_GetImageProc_16bpp;
SetRGBPalette := @ptc_SetRGBPaletteProc;
GetRGBPalette := @ptc_GetRGBPaletteProc;
HLine := @ptc_HLineProc_16bpp;
@ -2275,7 +2798,10 @@ end;
InitMode := @ptc_Init640x480x64k;
DirectPutPixel := @ptc_DirectPixelProc_16bpp;
PutPixel := @ptc_PutPixelProc_16bpp;
PutImage := @ptc_PutImageProc_16bpp;
GetPixel := @ptc_GetPixelProc_16bpp;
GetScanLine := @ptc_GetScanLineProc_16bpp;
GetImage := @ptc_GetImageProc_16bpp;
SetRGBPalette := @ptc_SetRGBPaletteProc;
GetRGBPalette := @ptc_GetRGBPaletteProc;
HLine := @ptc_HLineProc_16bpp;
@ -2305,7 +2831,10 @@ end;
InitMode := @ptc_Init800x600x16;
DirectPutPixel := @ptc_DirectPixelProc_8bpp;
PutPixel := @ptc_PutPixelProc_8bpp;
PutImage := @ptc_PutImageProc_8bpp;
GetPixel := @ptc_GetPixelProc_8bpp;
GetScanLine := @ptc_GetScanLineProc_8bpp;
GetImage := @ptc_GetImageProc_8bpp;
SetRGBPalette := @ptc_SetRGBPaletteProc;
GetRGBPalette := @ptc_GetRGBPaletteProc;
@ -2335,7 +2864,10 @@ end;
InitMode := @ptc_Init800x600x256;
DirectPutPixel := @ptc_DirectPixelProc_8bpp;
PutPixel := @ptc_PutPixelProc_8bpp;
PutImage := @ptc_PutImageProc_8bpp;
GetPixel := @ptc_GetPixelProc_8bpp;
GetScanLine := @ptc_GetScanLineProc_8bpp;
GetImage := @ptc_GetImageProc_8bpp;
SetRGBPalette := @ptc_SetRGBPaletteProc;
GetRGBPalette := @ptc_GetRGBPaletteProc;
//SetAllPalette := @ptc_SetRGBAllPaletteProc;
@ -2366,7 +2898,10 @@ end;
InitMode := @ptc_Init800x600x32k;
DirectPutPixel := @ptc_DirectPixelProc_16bpp;
PutPixel := @ptc_PutPixelProc_16bpp;
PutImage := @ptc_PutImageProc_16bpp;
GetPixel := @ptc_GetPixelProc_16bpp;
GetScanLine := @ptc_GetScanLineProc_16bpp;
GetImage := @ptc_GetImageProc_16bpp;
SetRGBPalette := @ptc_SetRGBPaletteProc;
GetRGBPalette := @ptc_GetRGBPaletteProc;
HLine := @ptc_HLineProc_16bpp;
@ -2394,7 +2929,10 @@ end;
InitMode := @ptc_Init800x600x64k;
DirectPutPixel := @ptc_DirectPixelProc_16bpp;
PutPixel := @ptc_PutPixelProc_16bpp;
PutImage := @ptc_PutImageProc_16bpp;
GetPixel := @ptc_GetPixelProc_16bpp;
GetScanLine := @ptc_GetScanLineProc_16bpp;
GetImage := @ptc_GetImageProc_16bpp;
SetRGBPalette := @ptc_SetRGBPaletteProc;
GetRGBPalette := @ptc_GetRGBPaletteProc;
HLine := @ptc_HLineProc_16bpp;
@ -2425,7 +2963,10 @@ end;
InitMode := @ptc_Init1024x768x16;
DirectPutPixel := @ptc_DirectPixelProc_8bpp;
PutPixel := @ptc_PutPixelProc_8bpp;
PutImage := @ptc_PutImageProc_8bpp;
GetPixel := @ptc_GetPixelProc_8bpp;
GetScanLine := @ptc_GetScanLineProc_8bpp;
GetImage := @ptc_GetImageProc_8bpp;
SetRGBPalette := @ptc_SetRGBPaletteProc;
GetRGBPalette := @ptc_GetRGBPaletteProc;
@ -2455,7 +2996,10 @@ end;
InitMode := @ptc_Init1024x768x256;
DirectPutPixel := @ptc_DirectPixelProc_8bpp;
PutPixel := @ptc_PutPixelProc_8bpp;
PutImage := @ptc_PutImageProc_8bpp;
GetPixel := @ptc_GetPixelProc_8bpp;
GetScanLine := @ptc_GetScanLineProc_8bpp;
GetImage := @ptc_GetImageProc_8bpp;
SetRGBPalette := @ptc_SetRGBPaletteProc;
GetRGBPalette := @ptc_GetRGBPaletteProc;
//SetAllPalette := @ptc_SetRGBAllPaletteProc;
@ -2486,7 +3030,10 @@ end;
InitMode := @ptc_Init1024x768x32k;
DirectPutPixel := @ptc_DirectPixelProc_16bpp;
PutPixel := @ptc_PutPixelProc_16bpp;
PutImage := @ptc_PutImageProc_16bpp;
GetPixel := @ptc_GetPixelProc_16bpp;
GetScanLine := @ptc_GetScanLineProc_16bpp;
GetImage := @ptc_GetImageProc_16bpp;
SetRGBPalette := @ptc_SetRGBPaletteProc;
GetRGBPalette := @ptc_GetRGBPaletteProc;
HLine := @ptc_HLineProc_16bpp;
@ -2514,7 +3061,10 @@ end;
InitMode := @ptc_Init1024x768x64k;
DirectPutPixel := @ptc_DirectPixelProc_16bpp;
PutPixel := @ptc_PutPixelProc_16bpp;
PutImage := @ptc_PutImageProc_16bpp;
GetPixel := @ptc_GetPixelProc_16bpp;
GetScanLine := @ptc_GetScanLineProc_16bpp;
GetImage := @ptc_GetImageProc_16bpp;
SetRGBPalette := @ptc_SetRGBPaletteProc;
GetRGBPalette := @ptc_GetRGBPaletteProc;
HLine := @ptc_HLineProc_16bpp;
@ -2545,7 +3095,10 @@ end;
InitMode := @ptc_Init1280x1024x16;
DirectPutPixel := @ptc_DirectPixelProc_8bpp;
PutPixel := @ptc_PutPixelProc_8bpp;
PutImage := @ptc_PutImageProc_8bpp;
GetPixel := @ptc_GetPixelProc_8bpp;
GetScanLine := @ptc_GetScanLineProc_8bpp;
GetImage := @ptc_GetImageProc_8bpp;
SetRGBPalette := @ptc_SetRGBPaletteProc;
GetRGBPalette := @ptc_GetRGBPaletteProc;
@ -2575,7 +3128,10 @@ end;
InitMode := @ptc_Init1280x1024x256;
DirectPutPixel := @ptc_DirectPixelProc_8bpp;
PutPixel := @ptc_PutPixelProc_8bpp;
PutImage := @ptc_PutImageProc_8bpp;
GetPixel := @ptc_GetPixelProc_8bpp;
GetScanLine := @ptc_GetScanLineProc_8bpp;
GetImage := @ptc_GetImageProc_8bpp;
SetRGBPalette := @ptc_SetRGBPaletteProc;
GetRGBPalette := @ptc_GetRGBPaletteProc;
//SetAllPalette := @ptc_SetRGBAllPaletteProc;
@ -2606,7 +3162,10 @@ end;
InitMode := @ptc_Init1280x1024x32k;
DirectPutPixel := @ptc_DirectPixelProc_16bpp;
PutPixel := @ptc_PutPixelProc_16bpp;
PutImage := @ptc_PutImageProc_16bpp;
GetPixel := @ptc_GetPixelProc_16bpp;
GetScanLine := @ptc_GetScanLineProc_16bpp;
GetImage := @ptc_GetImageProc_16bpp;
SetRGBPalette := @ptc_SetRGBPaletteProc;
GetRGBPalette := @ptc_GetRGBPaletteProc;
HLine := @ptc_HLineProc_16bpp;
@ -2634,7 +3193,10 @@ end;
InitMode := @ptc_Init1280x1024x64k;
DirectPutPixel := @ptc_DirectPixelProc_16bpp;
PutPixel := @ptc_PutPixelProc_16bpp;
PutImage := @ptc_PutImageProc_16bpp;
GetPixel := @ptc_GetPixelProc_16bpp;
GetScanLine := @ptc_GetScanLineProc_16bpp;
GetImage := @ptc_GetImageProc_16bpp;
SetRGBPalette := @ptc_SetRGBPaletteProc;
GetRGBPalette := @ptc_GetRGBPaletteProc;
HLine := @ptc_HLineProc_16bpp;
@ -2670,7 +3232,10 @@ end;
InitMode := @ptc_InitNonStandard16;
DirectPutPixel := @ptc_DirectPixelProc_8bpp;
PutPixel := @ptc_PutPixelProc_8bpp;
PutImage := @ptc_PutImageProc_8bpp;
GetPixel := @ptc_GetPixelProc_8bpp;
GetScanLine := @ptc_GetScanLineProc_8bpp;
GetImage := @ptc_GetImageProc_8bpp;
SetRGBPalette := @ptc_SetRGBPaletteProc;
GetRGBPalette := @ptc_GetRGBPaletteProc;
@ -2703,7 +3268,10 @@ end;
InitMode := @ptc_InitNonStandard256;
DirectPutPixel := @ptc_DirectPixelProc_8bpp;
PutPixel := @ptc_PutPixelProc_8bpp;
PutImage := @ptc_PutImageProc_8bpp;
GetPixel := @ptc_GetPixelProc_8bpp;
GetScanLine := @ptc_GetScanLineProc_8bpp;
GetImage := @ptc_GetImageProc_8bpp;
SetRGBPalette := @ptc_SetRGBPaletteProc;
GetRGBPalette := @ptc_GetRGBPaletteProc;
//SetAllPalette := @ptc_SetRGBAllPaletteProc;
@ -2737,7 +3305,10 @@ end;
InitMode := @ptc_InitNonStandard32k;
DirectPutPixel := @ptc_DirectPixelProc_16bpp;
PutPixel := @ptc_PutPixelProc_16bpp;
PutImage := @ptc_PutImageProc_16bpp;
GetPixel := @ptc_GetPixelProc_16bpp;
GetScanLine := @ptc_GetScanLineProc_16bpp;
GetImage := @ptc_GetImageProc_16bpp;
SetRGBPalette := @ptc_SetRGBPaletteProc;
GetRGBPalette := @ptc_GetRGBPaletteProc;
HLine := @ptc_HLineProc_16bpp;
@ -2768,7 +3339,10 @@ end;
InitMode := @ptc_InitNonStandard64k;
DirectPutPixel := @ptc_DirectPixelProc_16bpp;
PutPixel := @ptc_PutPixelProc_16bpp;
PutImage := @ptc_PutImageProc_16bpp;
GetPixel := @ptc_GetPixelProc_16bpp;
GetScanLine := @ptc_GetScanLineProc_16bpp;
GetImage := @ptc_GetImageProc_16bpp;
SetRGBPalette := @ptc_SetRGBPaletteProc;
GetRGBPalette := @ptc_GetRGBPaletteProc;
HLine := @ptc_HLineProc_16bpp;