|
@@ -12,7 +12,9 @@
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
|
|
|
|
**********************************************************************}
|
|
**********************************************************************}
|
|
|
|
+{$IFNDEF FPC_DOTTEDUNITS}
|
|
unit Graph;
|
|
unit Graph;
|
|
|
|
+{$ENDIF FPC_DOTTEDUNITS}
|
|
|
|
|
|
interface
|
|
interface
|
|
|
|
|
|
@@ -44,8 +46,13 @@ interface
|
|
{$define USE_SYSTEM_BEGIN_THREAD}
|
|
{$define USE_SYSTEM_BEGIN_THREAD}
|
|
{$endif ndef USE_WINDOWS_API_THREAD_FUNCTIONS}
|
|
{$endif ndef USE_WINDOWS_API_THREAD_FUNCTIONS}
|
|
|
|
|
|
|
|
+{$IFDEF FPC_DOTTEDUNITS}
|
|
|
|
+uses
|
|
|
|
+ WinApi.Windows;
|
|
|
|
+{$ELSE FPC_DOTTEDUNITS}
|
|
uses
|
|
uses
|
|
windows;
|
|
windows;
|
|
|
|
+{$ENDIF FPC_DOTTEDUNITS}
|
|
|
|
|
|
{$i graphh.inc}
|
|
{$i graphh.inc}
|
|
|
|
|
|
@@ -129,8 +136,13 @@ CONST
|
|
|
|
|
|
implementation
|
|
implementation
|
|
|
|
|
|
|
|
+{$IFDEF FPC_DOTTEDUNITS}
|
|
|
|
+uses
|
|
|
|
+ System.Strings;
|
|
|
|
+{$ELSE FPC_DOTTEDUNITS}
|
|
uses
|
|
uses
|
|
strings;
|
|
strings;
|
|
|
|
+{$ENDIF FPC_DOTTEDUNITS}
|
|
|
|
|
|
{
|
|
{
|
|
Remarks:
|
|
Remarks:
|
|
@@ -245,7 +257,7 @@ function GetPixel16Win32GUI(x,y : smallint) : word;
|
|
if graphrunning then
|
|
if graphrunning then
|
|
begin
|
|
begin
|
|
EnterCriticalSection(graphdrawing);
|
|
EnterCriticalSection(graphdrawing);
|
|
- c:=Windows.GetPixel(bitmapdc,x,y);
|
|
|
|
|
|
+ c:={$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Windows.GetPixel(bitmapdc,x,y);
|
|
LeaveCriticalSection(graphdrawing);
|
|
LeaveCriticalSection(graphdrawing);
|
|
GetPixel16Win32GUI:=GetPaletteEntry(GetRValue(c),GetGValue(c),GetBValue(c));
|
|
GetPixel16Win32GUI:=GetPaletteEntry(GetRValue(c),GetGValue(c),GetBValue(c));
|
|
end
|
|
end
|
|
@@ -270,7 +282,7 @@ procedure DirectPutPixel16Win32GUI(x,y : smallint);
|
|
case currentwritemode of
|
|
case currentwritemode of
|
|
XorPut:
|
|
XorPut:
|
|
Begin
|
|
Begin
|
|
- c2:=Windows.GetPixel(windc,x,y);
|
|
|
|
|
|
+ c2:={$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Windows.GetPixel(windc,x,y);
|
|
c:=RGB(pal[col].red,pal[col].green,pal[col].blue) xor c2;
|
|
c:=RGB(pal[col].red,pal[col].green,pal[col].blue) xor c2;
|
|
if drawtobitmap then
|
|
if drawtobitmap then
|
|
SetPixelV(bitmapdc,x,y,c);
|
|
SetPixelV(bitmapdc,x,y,c);
|
|
@@ -279,7 +291,7 @@ procedure DirectPutPixel16Win32GUI(x,y : smallint);
|
|
End;
|
|
End;
|
|
AndPut:
|
|
AndPut:
|
|
Begin
|
|
Begin
|
|
- c2:=Windows.GetPixel(windc,x,y);
|
|
|
|
|
|
+ c2:={$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Windows.GetPixel(windc,x,y);
|
|
c:=RGB(pal[col].red,pal[col].green,pal[col].blue) and c2;
|
|
c:=RGB(pal[col].red,pal[col].green,pal[col].blue) and c2;
|
|
if drawtobitmap then
|
|
if drawtobitmap then
|
|
SetPixelV(bitmapdc,x,y,c);
|
|
SetPixelV(bitmapdc,x,y,c);
|
|
@@ -288,7 +300,7 @@ procedure DirectPutPixel16Win32GUI(x,y : smallint);
|
|
End;
|
|
End;
|
|
OrPut:
|
|
OrPut:
|
|
Begin
|
|
Begin
|
|
- c2:=Windows.GetPixel(windc,x,y);
|
|
|
|
|
|
+ c2:={$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Windows.GetPixel(windc,x,y);
|
|
c:=RGB(pal[col].red,pal[col].green,pal[col].blue) or c2;
|
|
c:=RGB(pal[col].red,pal[col].green,pal[col].blue) or c2;
|
|
if drawtobitmap then
|
|
if drawtobitmap then
|
|
SetPixelV(bitmapdc,x,y,c);
|
|
SetPixelV(bitmapdc,x,y,c);
|
|
@@ -796,7 +808,7 @@ procedure HLine16Win32GUI(x,x2,y: smallint);
|
|
col:=CurrentColor;
|
|
col:=CurrentColor;
|
|
for i:=x to x2 do
|
|
for i:=x to x2 do
|
|
begin
|
|
begin
|
|
- c2:=Windows.GetPixel(windc,i,y);
|
|
|
|
|
|
+ c2:={$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Windows.GetPixel(windc,i,y);
|
|
c:=RGB(pal[col].red,pal[col].green,pal[col].blue) and c2;
|
|
c:=RGB(pal[col].red,pal[col].green,pal[col].blue) and c2;
|
|
if drawtobitmap then
|
|
if drawtobitmap then
|
|
SetPixelV(bitmapdc,i,y,c);
|
|
SetPixelV(bitmapdc,i,y,c);
|
|
@@ -812,7 +824,7 @@ procedure HLine16Win32GUI(x,x2,y: smallint);
|
|
col:=CurrentColor;
|
|
col:=CurrentColor;
|
|
for i:=x to x2 do
|
|
for i:=x to x2 do
|
|
begin
|
|
begin
|
|
- c2:=Windows.GetPixel(windc,i,y);
|
|
|
|
|
|
+ c2:={$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Windows.GetPixel(windc,i,y);
|
|
c:=RGB(pal[col].red,pal[col].green,pal[col].blue) xor c2;
|
|
c:=RGB(pal[col].red,pal[col].green,pal[col].blue) xor c2;
|
|
|
|
|
|
if drawtobitmap then
|
|
if drawtobitmap then
|
|
@@ -829,7 +841,7 @@ procedure HLine16Win32GUI(x,x2,y: smallint);
|
|
col:=CurrentColor;
|
|
col:=CurrentColor;
|
|
for i:=x to x2 do
|
|
for i:=x to x2 do
|
|
begin
|
|
begin
|
|
- c2:=Windows.GetPixel(windc,i,y);
|
|
|
|
|
|
+ c2:={$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Windows.GetPixel(windc,i,y);
|
|
c:=RGB(pal[col].red,pal[col].green,pal[col].blue) or c2;
|
|
c:=RGB(pal[col].red,pal[col].green,pal[col].blue) or c2;
|
|
|
|
|
|
if drawtobitmap then
|
|
if drawtobitmap then
|
|
@@ -877,16 +889,16 @@ procedure HLine16Win32GUI(x,x2,y: smallint);
|
|
if drawtobitmap then
|
|
if drawtobitmap then
|
|
begin
|
|
begin
|
|
oldpen:=SelectObject(bitmapdc,pen);
|
|
oldpen:=SelectObject(bitmapdc,pen);
|
|
- Windows.MoveToEx(bitmapdc,x,y,nil);
|
|
|
|
- Windows.LineTo(bitmapdc,x2+1,y);
|
|
|
|
|
|
+ {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Windows.MoveToEx(bitmapdc,x,y,nil);
|
|
|
|
+ {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Windows.LineTo(bitmapdc,x2+1,y);
|
|
SelectObject(bitmapdc,oldpen);
|
|
SelectObject(bitmapdc,oldpen);
|
|
end;
|
|
end;
|
|
|
|
|
|
if drawtoscreen then
|
|
if drawtoscreen then
|
|
begin
|
|
begin
|
|
oldpen:=SelectObject(windc,pen);
|
|
oldpen:=SelectObject(windc,pen);
|
|
- Windows.MoveToEx(windc,x,y,nil);
|
|
|
|
- Windows.LineTo(windc,x2+1,y);
|
|
|
|
|
|
+ {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Windows.MoveToEx(windc,x,y,nil);
|
|
|
|
+ {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Windows.LineTo(windc,x2+1,y);
|
|
SelectObject(windc,oldpen);
|
|
SelectObject(windc,oldpen);
|
|
end;
|
|
end;
|
|
|
|
|
|
@@ -962,16 +974,16 @@ Begin
|
|
if drawtobitmap then
|
|
if drawtobitmap then
|
|
begin
|
|
begin
|
|
oldpen:=SelectObject(bitmapdc,pen);
|
|
oldpen:=SelectObject(bitmapdc,pen);
|
|
- Windows.MoveToEx(bitmapdc,x,y,nil);
|
|
|
|
- Windows.LineTo(bitmapdc,x,y2+1);
|
|
|
|
|
|
+ {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Windows.MoveToEx(bitmapdc,x,y,nil);
|
|
|
|
+ {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Windows.LineTo(bitmapdc,x,y2+1);
|
|
SelectObject(bitmapdc,oldpen);
|
|
SelectObject(bitmapdc,oldpen);
|
|
end;
|
|
end;
|
|
|
|
|
|
if drawtoscreen then
|
|
if drawtoscreen then
|
|
begin
|
|
begin
|
|
oldpen:=SelectObject(windc,pen);
|
|
oldpen:=SelectObject(windc,pen);
|
|
- Windows.MoveToEx(windc,x,y,nil);
|
|
|
|
- Windows.LineTo(windc,x,y2+1);
|
|
|
|
|
|
+ {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Windows.MoveToEx(windc,x,y,nil);
|
|
|
|
+ {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Windows.LineTo(windc,x,y2+1);
|
|
SelectObject(windc,oldpen);
|
|
SelectObject(windc,oldpen);
|
|
end;
|
|
end;
|
|
if (col<0) or (col>high(pens)) then
|
|
if (col<0) or (col>high(pens)) then
|
|
@@ -1053,7 +1065,7 @@ procedure Circle16Win32GUI(X, Y: smallint; Radius:Word);
|
|
if drawtobitmap then
|
|
if drawtobitmap then
|
|
begin
|
|
begin
|
|
oldpen:=SelectObject(bitmapdc,pen);
|
|
oldpen:=SelectObject(bitmapdc,pen);
|
|
- windows.arc(bitmapdc,x-radius,y-radius,x+radius,y+radius,
|
|
|
|
|
|
+ {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Windows.arc(bitmapdc,x-radius,y-radius,x+radius,y+radius,
|
|
x,y-radius,x,y-radius);
|
|
x,y-radius,x,y-radius);
|
|
SelectObject(bitmapdc,oldpen);
|
|
SelectObject(bitmapdc,oldpen);
|
|
end;
|
|
end;
|
|
@@ -1061,7 +1073,7 @@ procedure Circle16Win32GUI(X, Y: smallint; Radius:Word);
|
|
if drawtoscreen then
|
|
if drawtoscreen then
|
|
begin
|
|
begin
|
|
oldpen:=SelectObject(windc,pen);
|
|
oldpen:=SelectObject(windc,pen);
|
|
- windows.arc(windc,x-radius,y-radius,x+radius,y+radius,
|
|
|
|
|
|
+ {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Windows.arc(windc,x-radius,y-radius,x+radius,y+radius,
|
|
x,y-radius,x,y-radius);
|
|
x,y-radius,x,y-radius);
|
|
SelectObject(windc,oldpen);
|
|
SelectObject(windc,oldpen);
|
|
end;
|
|
end;
|
|
@@ -1307,13 +1319,13 @@ begin
|
|
// clear everything
|
|
// clear everything
|
|
oldpen:=SelectObject(bitmapdc,GetStockObject(BLACK_PEN));
|
|
oldpen:=SelectObject(bitmapdc,GetStockObject(BLACK_PEN));
|
|
oldbrush:=SelectObject(bitmapdc,GetStockObject(BLACK_BRUSH));
|
|
oldbrush:=SelectObject(bitmapdc,GetStockObject(BLACK_BRUSH));
|
|
- Windows.Rectangle(bitmapdc,0,0,maxx,maxy);
|
|
|
|
|
|
+ {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Windows.Rectangle(bitmapdc,0,0,maxx,maxy);
|
|
SelectObject(bitmapdc,oldpen);
|
|
SelectObject(bitmapdc,oldpen);
|
|
SelectObject(bitmapdc,oldbrush);
|
|
SelectObject(bitmapdc,oldbrush);
|
|
// ... the window too
|
|
// ... the window too
|
|
oldpen:=SelectObject(windc,GetStockObject(BLACK_PEN));
|
|
oldpen:=SelectObject(windc,GetStockObject(BLACK_PEN));
|
|
oldbrush:=SelectObject(windc,GetStockObject(BLACK_BRUSH));
|
|
oldbrush:=SelectObject(windc,GetStockObject(BLACK_BRUSH));
|
|
- Windows.Rectangle(windc,0,0,maxx,maxy);
|
|
|
|
|
|
+ {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Windows.Rectangle(windc,0,0,maxx,maxy);
|
|
SelectObject(windc,oldpen);
|
|
SelectObject(windc,oldpen);
|
|
SelectObject(windc,oldbrush);
|
|
SelectObject(windc,oldbrush);
|
|
// clear font cache
|
|
// clear font cache
|
|
@@ -1539,7 +1551,7 @@ function MessageHandleThread(p : pointer) : DWord; stdcall;
|
|
{$ifdef USE_SYSTEM_BEGIN_THREAD}
|
|
{$ifdef USE_SYSTEM_BEGIN_THREAD}
|
|
System.EndThread(1);
|
|
System.EndThread(1);
|
|
{$else not USE_SYSTEM_BEGIN_THREAD}
|
|
{$else not USE_SYSTEM_BEGIN_THREAD}
|
|
- Windows.ExitThread(1);
|
|
|
|
|
|
+ {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Windows.ExitThread(1);
|
|
{$endif not USE_SYSTEM_BEGIN_THREAD}
|
|
{$endif not USE_SYSTEM_BEGIN_THREAD}
|
|
end;
|
|
end;
|
|
end
|
|
end
|
|
@@ -1551,7 +1563,7 @@ function MessageHandleThread(p : pointer) : DWord; stdcall;
|
|
{$ifdef USE_SYSTEM_BEGIN_THREAD}
|
|
{$ifdef USE_SYSTEM_BEGIN_THREAD}
|
|
System.EndThread(1);
|
|
System.EndThread(1);
|
|
{$else not USE_SYSTEM_BEGIN_THREAD}
|
|
{$else not USE_SYSTEM_BEGIN_THREAD}
|
|
- Windows.ExitThread(1);
|
|
|
|
|
|
+ {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Windows.ExitThread(1);
|
|
{$endif not USE_SYSTEM_BEGIN_THREAD}
|
|
{$endif not USE_SYSTEM_BEGIN_THREAD}
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
@@ -1563,7 +1575,7 @@ function MessageHandleThread(p : pointer) : DWord; stdcall;
|
|
{$ifdef USE_SYSTEM_BEGIN_THREAD}
|
|
{$ifdef USE_SYSTEM_BEGIN_THREAD}
|
|
System.EndThread(1);
|
|
System.EndThread(1);
|
|
{$else not USE_SYSTEM_BEGIN_THREAD}
|
|
{$else not USE_SYSTEM_BEGIN_THREAD}
|
|
- Windows.ExitThread(1);
|
|
|
|
|
|
+ {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Windows.ExitThread(1);
|
|
{$endif not USE_SYSTEM_BEGIN_THREAD}
|
|
{$endif not USE_SYSTEM_BEGIN_THREAD}
|
|
end;
|
|
end;
|
|
while longint(GetMessage(@AMessage, 0, 0, 0))=longint(true) do
|
|
while longint(GetMessage(@AMessage, 0, 0, 0))=longint(true) do
|
|
@@ -1710,13 +1722,13 @@ procedure LineWin32GUI(X1, Y1, X2, Y2: smallint); {$ifndef fpc}far;{$endif fpc}
|
|
|
|
|
|
oldpen:=SelectObject(windc,pen);
|
|
oldpen:=SelectObject(windc,pen);
|
|
MoveToEx(windc,x1,y1,nil);
|
|
MoveToEx(windc,x1,y1,nil);
|
|
- Windows.LineTo(windc,x2,y2);
|
|
|
|
|
|
+ {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Windows.LineTo(windc,x2,y2);
|
|
SetPixel(windc,x2,y2,col);
|
|
SetPixel(windc,x2,y2,col);
|
|
SelectObject(windc,oldpen);
|
|
SelectObject(windc,oldpen);
|
|
|
|
|
|
oldpen:=SelectObject(bitmapdc,pen);
|
|
oldpen:=SelectObject(bitmapdc,pen);
|
|
MoveToEx(bitmapdc,x1,y1,nil);
|
|
MoveToEx(bitmapdc,x1,y1,nil);
|
|
- Windows.LineTo(bitmapdc,x2,y2);
|
|
|
|
|
|
+ {$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Windows.LineTo(bitmapdc,x2,y2);
|
|
SetPixel(bitmapdc,x2,y2,col);
|
|
SetPixel(bitmapdc,x2,y2,col);
|
|
SelectObject(bitmapdc,oldpen);
|
|
SelectObject(bitmapdc,oldpen);
|
|
|
|
|