summaryrefslogtreecommitdiff
path: root/packages/ptc/src/ptc.pp
diff options
context:
space:
mode:
Diffstat (limited to 'packages/ptc/src/ptc.pp')
-rw-r--r--packages/ptc/src/ptc.pp262
1 files changed, 262 insertions, 0 deletions
diff --git a/packages/ptc/src/ptc.pp b/packages/ptc/src/ptc.pp
new file mode 100644
index 0000000000..bbc8b488ce
--- /dev/null
+++ b/packages/ptc/src/ptc.pp
@@ -0,0 +1,262 @@
+{
+ Free Pascal port of the OpenPTC C++ library.
+ Copyright (C) 2001-2006 Nikolay Nikolov (nickysn@users.sourceforge.net)
+ Original C++ version by Glenn Fiedler (ptc@gaffer.org)
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+}
+
+{$MODE objfpc}
+{$MACRO ON}
+{$UNDEF ENABLE_C_API}
+
+{$H+}
+
+{$IFDEF UNIX}
+
+ { X11 extensions we want to enable at compile time }
+ {$INCLUDE x11/extensions.inc}
+
+ {$IFDEF ENABLE_X11_EXTENSION_XF86DGA1}
+ {$DEFINE ENABLE_X11_EXTENSION_XF86DGA}
+ {$ENDIF ENABLE_X11_EXTENSION_XF86DGA1}
+ {$IFDEF ENABLE_X11_EXTENSION_XF86DGA2}
+ {$DEFINE ENABLE_X11_EXTENSION_XF86DGA}
+ {$ENDIF ENABLE_X11_EXTENSION_XF86DGA2}
+
+{$ENDIF UNIX}
+
+Unit ptc;
+
+Interface
+
+{$IFNDEF FPDOC}
+Uses
+ Hermes;
+{$ENDIF FPDOC}
+
+Const
+ PTCPAS_VERSION = 'PTCPas 0.99.7';
+
+Type
+ PUint8 = ^Uint8;
+ PUint16 = ^Uint16;
+ PUint32 = ^Uint32;
+ PUint64 = ^Uint64;
+ PSint8 = ^Sint8;
+ PSint16 = ^Sint16;
+ PSint32 = ^Sint32;
+ PSint64 = ^Sint64;
+ Uint8 = Byte;
+ Uint16 = Word;
+ Uint32 = DWord;
+ Uint64 = QWord;
+ Sint8 = ShortInt;
+ Sint16 = SmallInt;
+ Sint32 = LongInt;
+ Sint64 = Int64;
+
+{$INCLUDE coreinterface.inc}
+
+{$IFNDEF FPDOC}
+
+{$IFDEF ENABLE_C_API}
+{$INCLUDE c_api/index.pp}
+{$INCLUDE c_api/errord.pp}
+{$INCLUDE c_api/exceptd.pp}
+{$INCLUDE c_api/aread.pp}
+{$INCLUDE c_api/colord.pp}
+{$INCLUDE c_api/cleard.pp}
+{$INCLUDE c_api/clipperd.pp}
+{$INCLUDE c_api/copyd.pp}
+{$INCLUDE c_api/keyd.pp}
+{$INCLUDE c_api/formatd.pp}
+{$INCLUDE c_api/paletted.pp}
+{$INCLUDE c_api/surfaced.pp}
+{$INCLUDE c_api/consoled.pp}
+{$INCLUDE c_api/moded.pp}
+{$INCLUDE c_api/timerd.pp}
+{$ENDIF ENABLE_C_API}
+
+{$ENDIF FPDOC}
+
+Implementation
+
+{$IFDEF GO32V2}
+Uses
+ textfx2, vesa, vga, cga, timeunit, crt, go32, mouse33h;
+{$ENDIF GO32V2}
+
+{$IFDEF Win32}
+Uses
+ Windows, p_ddraw;
+{$ENDIF Win32}
+
+{$IFDEF WinCE}
+Uses
+ Windows, p_gx;
+{$ENDIF WinCE}
+
+{$IFDEF UNIX}
+Uses
+ BaseUnix, Unix, ctypes, x, xlib, xutil, xatom, keysym
+ {$IFDEF ENABLE_X11_EXTENSION_XRANDR}
+ , xrandr
+ {$ENDIF ENABLE_X11_EXTENSION_XRANDR}
+ {$IFDEF ENABLE_X11_EXTENSION_XF86VIDMODE}
+ , xf86vmode
+ {$ENDIF ENABLE_X11_EXTENSION_XF86VIDMODE}
+ {$IFDEF ENABLE_X11_EXTENSION_XF86DGA}
+ , xf86dga
+ {$ENDIF ENABLE_X11_EXTENSION_XF86DGA}
+ {$IFDEF ENABLE_X11_EXTENSION_XSHM}
+ , xshm, ipc
+ {$ENDIF ENABLE_X11_EXTENSION_XSHM}
+ ;
+{$ENDIF UNIX}
+
+{ this little procedure is not a good reason to include the whole sysutils
+ unit :) }
+Procedure FreeAndNil(Var q);
+
+Var
+ tmp : TObject;
+
+Begin
+ tmp := TObject(q);
+ Pointer(q) := Nil;
+ tmp.Free;
+End;
+
+Procedure FreeMemAndNil(Var q);
+
+Var
+ tmp : Pointer;
+
+Begin
+ tmp := Pointer(q);
+ Pointer(q) := Nil;
+ If tmp <> Nil Then
+ FreeMem(tmp);
+End;
+
+Function IntToStr(Value : Integer) : String;
+
+Begin
+ System.Str(Value, Result);
+End;
+
+Function IntToStr(Value : Int64) : String;
+
+Begin
+ System.Str(Value, Result);
+End;
+
+Function IntToStr(Value : QWord) : String;
+Begin
+ System.Str(Value, Result);
+End;
+
+{$INCLUDE log.inc}
+
+{$IFDEF WIN32}
+{$INCLUDE win32/base/cursor.inc}
+{$ENDIF WIN32}
+
+{$INCLUDE coreimplementation.inc}
+
+{$IFDEF GO32V2}
+{$INCLUDE dos/includes.inc}
+{$ENDIF GO32V2}
+
+{$IFDEF Win32}
+{$INCLUDE win32/base/monitord.inc}
+{$INCLUDE win32/base/eventd.inc}
+{$INCLUDE win32/base/windowd.inc}
+{$INCLUDE win32/base/hookd.inc}
+{$INCLUDE win32/base/kbdd.inc}
+{$INCLUDE win32/base/moused.inc}
+{$INCLUDE win32/directx/hookd.inc}
+{$INCLUDE win32/directx/libraryd.inc}
+{$INCLUDE win32/directx/displayd.inc}
+{$INCLUDE win32/directx/primaryd.inc}
+{$INCLUDE win32/directx/directxconsoled.inc}
+{$INCLUDE win32/gdi/win32dibd.inc}
+{$INCLUDE win32/gdi/gdiconsoled.inc}
+
+{$INCLUDE win32/base/monitor.inc}
+{$INCLUDE win32/base/event.inc}
+{$INCLUDE win32/base/window.inc}
+{$INCLUDE win32/base/hook.inc}
+{$INCLUDE win32/base/kbd.inc}
+{$INCLUDE win32/base/mousei.inc}
+{$INCLUDE win32/directx/check.inc}
+{$INCLUDE win32/directx/translate.inc}
+{$INCLUDE win32/directx/hook.inc}
+{$INCLUDE win32/directx/library.inc}
+{$INCLUDE win32/directx/display.inc}
+{$INCLUDE win32/directx/primary.inc}
+{$INCLUDE win32/directx/directxconsolei.inc}
+{$INCLUDE win32/gdi/win32dibi.inc}
+{$INCLUDE win32/gdi/gdiconsolei.inc}
+{$ENDIF Win32}
+
+{$IFDEF WinCE}
+{$INCLUDE wince/includes.inc}
+{$ENDIF WinCE}
+
+{$IFDEF UNIX}
+{$INCLUDE x11/includes.inc}
+{$ENDIF UNIX}
+
+{$INCLUDE consolei.inc}
+
+{$IFDEF ENABLE_C_API}
+{$INCLUDE c_api/except.pp}
+{$INCLUDE c_api/error.pp}
+{$INCLUDE c_api/area.pp}
+{$INCLUDE c_api/color.pp}
+{$INCLUDE c_api/clear.pp}
+{$INCLUDE c_api/clipper.pp}
+{$INCLUDE c_api/copy.pp}
+{$INCLUDE c_api/key.pp}
+{$INCLUDE c_api/format.pp}
+{$INCLUDE c_api/palette.pp}
+{$INCLUDE c_api/surface.pp}
+{$INCLUDE c_api/console.pp}
+{$INCLUDE c_api/mode.pp}
+{$INCLUDE c_api/timer.pp}
+{$ENDIF ENABLE_C_API}
+
+Initialization
+
+Begin
+ {$IFDEF ENABLE_C_API}
+ ptc_error_handler_function := @ptc_error_handler_default;
+ {$ENDIF ENABLE_C_API}
+ {$IFDEF WIN32}
+ TWin32Hook_m_monitor := TWin32Monitor.Create;
+ {$ENDIF WIN32}
+End;
+
+Finalization
+
+Begin
+ {$IFDEF WIN32}
+ FreeAndNil(TWin32Hook_m_monitor);
+ {$ENDIF WIN32}
+End;
+
+End.