mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-09-18 11:09:22 +02:00
* introduce a DrawBitmapCharHoriz procedure variable to accelerate output on
win32
This commit is contained in:
parent
34dd37729c
commit
fe462795f6
@ -1400,6 +1400,8 @@ end;
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
procedure DrawBitmapCharHorizDefault(x,y : longint;charsize : word;const s : string);forward;
|
||||||
|
|
||||||
Procedure DefaultHooks;
|
Procedure DefaultHooks;
|
||||||
{********************************************************}
|
{********************************************************}
|
||||||
{ Procedure DefaultHooks() }
|
{ Procedure DefaultHooks() }
|
||||||
@ -1433,6 +1435,7 @@ end;
|
|||||||
PatternLine := {$ifdef fpc}@{$endif}PatternLineDefault;
|
PatternLine := {$ifdef fpc}@{$endif}PatternLineDefault;
|
||||||
HLine := {$ifdef fpc}@{$endif}HLineDefault;
|
HLine := {$ifdef fpc}@{$endif}HLineDefault;
|
||||||
VLine := {$ifdef fpc}@{$endif}VLineDefault;
|
VLine := {$ifdef fpc}@{$endif}VLineDefault;
|
||||||
|
DrawBitmapCharHoriz := {$ifdef fpc}@{$endif}DrawBitmapCharHorizDefault;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
Procedure InitVars;
|
Procedure InitVars;
|
||||||
@ -2314,7 +2317,11 @@ begin
|
|||||||
end;
|
end;
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.29 2000-03-24 13:01:15 florian
|
Revision 1.30 2000-03-24 18:16:32 florian
|
||||||
|
* introduce a DrawBitmapCharHoriz procedure variable to accelerate output on
|
||||||
|
win32
|
||||||
|
|
||||||
|
Revision 1.29 2000/03/24 13:01:15 florian
|
||||||
* ClearViewPort fixed
|
* ClearViewPort fixed
|
||||||
|
|
||||||
Revision 1.28 2000/03/19 11:20:13 peter
|
Revision 1.28 2000/03/19 11:20:13 peter
|
||||||
|
@ -505,6 +505,9 @@ TYPE
|
|||||||
procedure(ColorNum: smallint; var
|
procedure(ColorNum: smallint; var
|
||||||
RedValue, GreenValue, BlueValue: smallint);
|
RedValue, GreenValue, BlueValue: smallint);
|
||||||
|
|
||||||
|
{ allows to speed up the drawing of bitmap font }
|
||||||
|
DrawBitmapCharHorizProc = procedure(x,y : longint;charsize : word;const s : string);
|
||||||
|
|
||||||
|
|
||||||
TYPE
|
TYPE
|
||||||
{-----------------------------------}
|
{-----------------------------------}
|
||||||
@ -551,6 +554,7 @@ TYPE
|
|||||||
HLine : HLineProc;
|
HLine : HLineProc;
|
||||||
VLine : VLineProc;
|
VLine : VLineProc;
|
||||||
InitMode : InitModeProc;
|
InitMode : InitModeProc;
|
||||||
|
DrawBitmapCharHoriz : DrawBitmapCharHorizProc;
|
||||||
next: PModeInfo;
|
next: PModeInfo;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -558,6 +562,7 @@ TYPE
|
|||||||
|
|
||||||
VAR
|
VAR
|
||||||
DirectPutPixel : DefPixelProc;
|
DirectPutPixel : DefPixelProc;
|
||||||
|
DrawBitmapCharHoriz : DrawBitmapCharHorizProc;
|
||||||
ClearViewPort : ClrViewProc;
|
ClearViewPort : ClrViewProc;
|
||||||
PutPixel : PutPixelProc;
|
PutPixel : PutPixelProc;
|
||||||
PutImage : PutImageProc;
|
PutImage : PutImageProc;
|
||||||
@ -674,7 +679,11 @@ Function GetDriverName: string;
|
|||||||
|
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.1 2000-03-19 11:20:13 peter
|
Revision 1.2 2000-03-24 18:16:33 florian
|
||||||
|
* introduce a DrawBitmapCharHoriz procedure variable to accelerate output on
|
||||||
|
win32
|
||||||
|
|
||||||
|
Revision 1.1 2000/03/19 11:20:13 peter
|
||||||
* graph unit include is now independent and the dependent part
|
* graph unit include is now independent and the dependent part
|
||||||
is now in graph.pp
|
is now in graph.pp
|
||||||
* ggigraph unit for linux added
|
* ggigraph unit for linux added
|
||||||
|
@ -352,6 +352,59 @@
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure DrawBitmapCharHorizDefault(x,y : longint;charsize : word;const s : string);
|
||||||
|
|
||||||
|
var
|
||||||
|
cnt1,cnt2,cnt3,cnt4,j,k,i,xpos,c : longint;
|
||||||
|
fontbitmap : TBitmapChar;
|
||||||
|
|
||||||
|
begin
|
||||||
|
c:=length(s);
|
||||||
|
for i:=0 to c-1 do
|
||||||
|
begin
|
||||||
|
xpos:=x+(i*8)*Charsize;
|
||||||
|
{ we copy the character bitmap before accessing it }
|
||||||
|
{ this improves speed on non optimizing compilers }
|
||||||
|
{ since it is one less address calculation. }
|
||||||
|
Fontbitmap:=TBitmapChar(DefaultFontData[s[i+1]]);
|
||||||
|
{ no scaling }
|
||||||
|
if CharSize = 1 then
|
||||||
|
Begin
|
||||||
|
for j:=0 to 7 do
|
||||||
|
for k:=0 to 7 do
|
||||||
|
if Fontbitmap[j,k]<>0 then
|
||||||
|
PutPixel(xpos+k,j+y,CurrentColor);
|
||||||
|
end
|
||||||
|
else
|
||||||
|
{ perform scaling of bitmap font }
|
||||||
|
Begin
|
||||||
|
j:=0;
|
||||||
|
cnt3:=0;
|
||||||
|
|
||||||
|
while j <= 7 do
|
||||||
|
begin
|
||||||
|
{ X-axis scaling }
|
||||||
|
for cnt4 := 0 to charsize-1 do
|
||||||
|
begin
|
||||||
|
k:=0;
|
||||||
|
cnt2 := 0;
|
||||||
|
while k <= 7 do
|
||||||
|
begin
|
||||||
|
for cnt1 := 0 to charsize-1 do
|
||||||
|
begin
|
||||||
|
If FontBitmap[j,k] <> 0 then
|
||||||
|
PutPixel(xpos+cnt1+cnt2,y+cnt3+cnt4,CurrentColor);
|
||||||
|
end;
|
||||||
|
Inc(k);
|
||||||
|
Inc(cnt2,charsize);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
Inc(j);
|
||||||
|
Inc(cnt3,charsize);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure OutTextXY(x,y : smallint;const TextString : string);
|
procedure OutTextXY(x,y : smallint;const TextString : string);
|
||||||
|
|
||||||
@ -363,13 +416,13 @@
|
|||||||
i,j,k,c : longint;
|
i,j,k,c : longint;
|
||||||
xpos,ypos : longint;
|
xpos,ypos : longint;
|
||||||
counter : longint;
|
counter : longint;
|
||||||
FontBitmap : TBitmapChar;
|
|
||||||
cnt1,cnt2 : smallint;
|
cnt1,cnt2 : smallint;
|
||||||
cnt3,cnt4 : smallint;
|
cnt3,cnt4 : smallint;
|
||||||
charsize : word;
|
charsize : word;
|
||||||
WriteMode : word;
|
WriteMode : word;
|
||||||
curX2, curY2, xpos2, ypos2, x2, y2: graph_float;
|
curX2, curY2, xpos2, ypos2, x2, y2: graph_float;
|
||||||
oldvalues : linesettingstype;
|
oldvalues : linesettingstype;
|
||||||
|
fontbitmap : TBitmapChar;
|
||||||
chr : char;
|
chr : char;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
@ -390,52 +443,7 @@
|
|||||||
Dec(c);
|
Dec(c);
|
||||||
if CurrentTextInfo.direction=HorizDir then
|
if CurrentTextInfo.direction=HorizDir then
|
||||||
{ Horizontal direction }
|
{ Horizontal direction }
|
||||||
begin
|
DrawBitmapCharHoriz(x,y,charsize,TextString)
|
||||||
for i:=0 to c do
|
|
||||||
begin
|
|
||||||
chr := TextString[i+1];
|
|
||||||
xpos:=x+(i shl 3)*Charsize;
|
|
||||||
{ we copy the character bitmap before accessing it }
|
|
||||||
{ this improves speed on non optimizing compilers }
|
|
||||||
{ since it is one less address calculation. }
|
|
||||||
Fontbitmap:=TBitmapChar(DefaultFontData[chr]);
|
|
||||||
{ no scaling }
|
|
||||||
if CharSize = 1 then
|
|
||||||
Begin
|
|
||||||
for j:=0 to 7 do
|
|
||||||
for k:=0 to 7 do
|
|
||||||
if Fontbitmap[j,k] <> 0 then PutPixel(xpos+k,j+y,CurrentColor);
|
|
||||||
end
|
|
||||||
else
|
|
||||||
{ perform scaling of bitmap font }
|
|
||||||
Begin
|
|
||||||
j:=0;
|
|
||||||
cnt3:=0;
|
|
||||||
|
|
||||||
while j <= 7 do
|
|
||||||
begin
|
|
||||||
{ X-axis scaling }
|
|
||||||
for cnt4 := 0 to charsize-1 do
|
|
||||||
begin
|
|
||||||
k:=0;
|
|
||||||
cnt2 := 0;
|
|
||||||
while k <= 7 do
|
|
||||||
begin
|
|
||||||
for cnt1 := 0 to charsize-1 do
|
|
||||||
begin
|
|
||||||
If FontBitmap[j,k] <> 0 then
|
|
||||||
PutPixel(xpos+cnt1+cnt2,y+cnt3+cnt4,CurrentColor);
|
|
||||||
end;
|
|
||||||
Inc(k);
|
|
||||||
Inc(cnt2,charsize);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
Inc(j);
|
|
||||||
Inc(cnt3,charsize);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
end
|
|
||||||
else
|
else
|
||||||
{ Vertical direction }
|
{ Vertical direction }
|
||||||
begin
|
begin
|
||||||
@ -727,7 +735,11 @@
|
|||||||
|
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.15 2000-02-27 14:41:25 peter
|
Revision 1.16 2000-03-24 18:16:33 florian
|
||||||
|
* introduce a DrawBitmapCharHoriz procedure variable to accelerate output on
|
||||||
|
win32
|
||||||
|
|
||||||
|
Revision 1.15 2000/02/27 14:41:25 peter
|
||||||
* removed warnings/notes
|
* removed warnings/notes
|
||||||
|
|
||||||
Revision 1.14 2000/01/07 16:41:38 daniel
|
Revision 1.14 2000/01/07 16:41:38 daniel
|
||||||
|
@ -309,7 +309,8 @@
|
|||||||
SetVisualPage := modeInfo^.SetVisualPage;
|
SetVisualPage := modeInfo^.SetVisualPage;
|
||||||
if assigned(modeInfo^.SetActivePage) then
|
if assigned(modeInfo^.SetActivePage) then
|
||||||
SetActivePage := modeInfo^.SetActivePage;
|
SetActivePage := modeInfo^.SetActivePage;
|
||||||
|
if assigned(modeInfo^.DrawBitmapCharHoriz) then
|
||||||
|
DrawBitmapCharHoriz:=modeInfo^.DrawBitmapCharHoriz;
|
||||||
|
|
||||||
IntCurrentMode := modeinfo^.ModeNumber;
|
IntCurrentMode := modeinfo^.ModeNumber;
|
||||||
IntCurrentDriver := modeinfo^.DriverNumber;
|
IntCurrentDriver := modeinfo^.DriverNumber;
|
||||||
@ -362,7 +363,11 @@
|
|||||||
|
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.20 2000-03-24 13:01:15 florian
|
Revision 1.21 2000-03-24 18:16:33 florian
|
||||||
|
* introduce a DrawBitmapCharHoriz procedure variable to accelerate output on
|
||||||
|
win32
|
||||||
|
|
||||||
|
Revision 1.20 2000/03/24 13:01:15 florian
|
||||||
* ClearViewPort fixed
|
* ClearViewPort fixed
|
||||||
|
|
||||||
Revision 1.19 2000/01/07 16:41:39 daniel
|
Revision 1.19 2000/01/07 16:41:39 daniel
|
||||||
|
Loading…
Reference in New Issue
Block a user