瀏覽代碼

+ first version

Tomas Hajny 23 年之前
父節點
當前提交
080dd06666
共有 1 個文件被更改,包括 303 次插入0 次删除
  1. 303 0
      rtl/os2/pmdev.pas

+ 303 - 0
rtl/os2/pmdev.pas

@@ -0,0 +1,303 @@
+{
+    $Id$
+    This file is part of the Free Pascal run time library.
+    Copyright (c) 2002 by Yuri Prokushev ([email protected]).
+
+    OS/2 Presentation Manager Device Context constants, types and
+    function declarations
+
+    See the file COPYING.FPC, included in this distribution,
+    for details about the copyright.
+
+    This program 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.
+
+ **********************************************************************}
+
+{Warning: This code is alfa. Future versions
+ of this unit might not be compatible.}
+ 
+unit pmdev;
+
+interface
+
+uses
+  os2def;
+
+//General DEV return values
+const
+  DEV_ERROR                       =0;
+  DEV_OK                          =1;
+
+//DC type for DevOpenDC
+
+  OD_QUEUED                       =2;
+  OD_DIRECT                       =5;
+  OD_INFO                         =6;
+  OD_METAFILE                     =7;
+  OD_MEMORY                       =8;
+  OD_METAFILE_NOQUERY             =9;
+
+//codes for DevQueryCaps
+  CAPS_FAMILY                     =0;
+  CAPS_IO_CAPS                    =1;
+  CAPS_TECHNOLOGY                 =2;
+  CAPS_DRIVER_VERSION             =3;
+  CAPS_WIDTH                      =4;  //pels            
+  CAPS_HEIGHT                     =5;  //pels            
+  CAPS_WIDTH_IN_CHARS             =6;
+  CAPS_HEIGHT_IN_CHARS            =7;
+  CAPS_HORIZONTAL_RESOLUTION      =8;  //pels per meter  
+  CAPS_VERTICAL_RESOLUTION        =9;  //pels per meter  
+  CAPS_CHAR_WIDTH                 =10; //pels            
+  CAPS_CHAR_HEIGHT                =11; //pels            
+  CAPS_SMALL_CHAR_WIDTH           =12; //pels            
+  CAPS_SMALL_CHAR_HEIGHT          =13; //pels            
+  CAPS_COLORS                     =14;
+  CAPS_COLOR_PLANES               =15;
+  CAPS_COLOR_BITCOUNT             =16;
+  CAPS_COLOR_TABLE_SUPPORT        =17;
+  CAPS_MOUSE_BUTTONS              =18;
+  CAPS_FOREGROUND_MIX_SUPPORT     =19;
+  CAPS_BACKGROUND_MIX_SUPPORT     =20;
+  CAPS_DEVICE_WINDOWING           =31;
+  CAPS_ADDITIONAL_GRAPHICS        =32;
+  CAPS_VIO_LOADABLE_FONTS         =21;
+  CAPS_WINDOW_BYTE_ALIGNMENT      =22;
+  CAPS_BITMAP_FORMATS             =23;
+  CAPS_RASTER_CAPS                =24;
+  CAPS_MARKER_HEIGHT              =25; //pels            
+  CAPS_MARKER_WIDTH               =26; //pels            
+  CAPS_DEVICE_FONTS               =27;
+  CAPS_GRAPHICS_SUBSET            =28;
+  CAPS_GRAPHICS_VERSION           =29;
+  CAPS_GRAPHICS_VECTOR_SUBSET     =30;
+  CAPS_PHYS_COLORS                =33;
+  CAPS_COLOR_INDEX                =34;
+  CAPS_GRAPHICS_CHAR_WIDTH        =35;
+  CAPS_GRAPHICS_CHAR_HEIGHT       =36;
+  CAPS_HORIZONTAL_FONT_RES        =37;
+  CAPS_VERTICAL_FONT_RES          =38;
+  CAPS_DEVICE_FONT_SIM            =39;
+  CAPS_LINEWIDTH_THICK            =40;
+  CAPS_DEVICE_POLYSET_POINTS      =41;
+  
+//Constants for CAPS_IO_CAPS
+  CAPS_IO_DUMMY                   =1;
+  CAPS_IO_SUPPORTS_OP             =2;
+  CAPS_IO_SUPPORTS_IP             =3;
+  CAPS_IO_SUPPORTS_IO             =4;
+  
+//Constants for CAPS_TECHNOLOGY
+  CAPS_TECH_UNKNOWN               =0;
+  CAPS_TECH_VECTOR_PLOTTER        =1;
+  CAPS_TECH_RASTER_DISPLAY        =2;
+  CAPS_TECH_RASTER_PRINTER        =3;
+  CAPS_TECH_RASTER_CAMERA         =4;
+  CAPS_TECH_POSTSCRIPT            =5;
+  
+//Constants for CAPS_COLOR_TABLE_SUPPORT
+  CAPS_COLTABL_RGB_8              =1;
+  CAPS_COLTABL_RGB_8_PLUS         =2;
+  CAPS_COLTABL_TRUE_MIX           =4;
+  CAPS_COLTABL_REALIZE            =8;
+
+//Constants for CAPS_FOREGROUND_MIX_SUPPORT
+  CAPS_FM_OR                      =1;
+  CAPS_FM_OVERPAINT               =2;
+  CAPS_FM_XOR                     =8;
+  CAPS_FM_LEAVEALONE             =16;
+  CAPS_FM_AND                    =32;
+  CAPS_FM_GENERAL_BOOLEAN        =64;
+
+//Constants for CAPS_BACKGROUND_MIX_SUPPORT
+  CAPS_BM_OR                      =1;
+  CAPS_BM_OVERPAINT               =2;
+  CAPS_BM_XOR                     =8;
+  CAPS_BM_LEAVEALONE             =16;
+  CAPS_BM_AND                    =32;
+  CAPS_BM_GENERAL_BOOLEAN        =64;
+  CAPS_BM_SRCTRANSPARENT        =128;
+  CAPS_BM_DESTTRANSPARENT       =256;
+
+//Constants for CAPS_DEVICE_WINDOWING
+  CAPS_DEV_WINDOWING_SUPPORT      =1;
+
+//Constants for CAPS_ADDITIONAL_GRAPHICS
+  CAPS_VDD_DDB_TRANSFER            =1;
+  CAPS_GRAPHICS_KERNING_SUPPORT    =2;
+  CAPS_FONT_OUTLINE_DEFAULT        =4;
+  CAPS_FONT_IMAGE_DEFAULT          =8;
+//bits represented by values 16L and 32L are reserved
+  CAPS_SCALED_DEFAULT_MARKERS     =64;
+  CAPS_COLOR_CURSOR_SUPPORT      =128;
+  CAPS_PALETTE_MANAGER           =256;
+  CAPS_COSMETIC_WIDELINE_SUPPORT =512;
+  CAPS_DIRECT_FILL              =1024;
+  CAPS_REBUILD_FILLS            =2048;
+  CAPS_CLIP_FILLS               =$00001000; //4096L
+  CAPS_ENHANCED_FONTMETRICS     =$00002000; //8192L
+  CAPS_TRANSFORM_SUPPORT        =$00004000; //16384L
+
+//Constants for CAPS_WINDOW_BYTE_ALIGNMENT
+  CAPS_BYTE_ALIGN_REQUIRED        =0;
+  CAPS_BYTE_ALIGN_RECOMMENDED     =1;
+  CAPS_BYTE_ALIGN_NOT_REQUIRED    =2;
+
+//Constants for CAPS_RASTER_CAPS
+  CAPS_RASTER_BITBLT              =1;
+  CAPS_RASTER_BANDING             =2;
+  CAPS_RASTER_BITBLT_SCALING      =4;
+  CAPS_RASTER_SET_PEL            =16;
+  CAPS_RASTER_FONTS              =32;
+  CAPS_RASTER_FLOOD_FILL         =64;
+
+//structures for DEVESC_QUERYVIOCELLSIZES
+
+type
+  PVioSizeCount=^VioSizeCount;
+  VioSizeCount=record
+    maxcount: Longint;
+    count: Longint;
+  end;
+
+  PVioFontCellSize=^VioFontCellSize;
+  VioFontCellSize=record
+    cx: Longint;
+    cy: Longint;
+  end;
+
+//structure for DEVESC_GETSCALINGFACTOR
+  PSFactors=^SFactors;
+  SFactors=record
+    x: Longint;
+    y: Longint;
+  end;
+
+//structure for DEVESC_NEXTBAND
+  PBandRect=^BandRect;
+  BandRect=record
+    xleft: Longint;
+    ybottom: Longint;
+    xright: Longint;
+    ytop: Longint;
+  end;            
+
+//return codes for DevEscape
+const
+  DEVESC_ERROR                  =-1;
+  DEVESC_NOTIMPLEMENTED         =0;
+
+//codes for DevEscape
+  DEVESC_QUERYESCSUPPORT      =   0;
+  DEVESC_GETSCALINGFACTOR     =   1;
+  DEVESC_QUERYVIOCELLSIZES    =   2;
+  DEVESC_GETCP                =8000;
+
+  DEVESC_STARTDOC             =8150;
+  DEVESC_ENDDOC               =8151;
+  DEVESC_NEXTBAND             =8152;
+  DEVESC_ABORTDOC             =8153;
+
+  DEVESC_NEWFRAME            =16300;
+  DEVESC_DRAFTMODE           =16301;
+  DEVESC_FLUSHOUTPUT         =16302;
+  DEVESC_RAWDATA             =16303;
+  DEVESC_SETMODE             =16304;
+
+  DEVESC_DBE_FIRST           =24450;
+  DEVESC_DBE_LAST            =24455;
+
+//DevEscape codes for adding extra space to character strings
+  DEVESC_CHAR_EXTRA          =16998;
+  DEVESC_BREAK_EXTRA         =16999;
+
+//codes for DevEscape PM_Q_ESC spool files
+  DEVESC_STD_JOURNAL         =32600;
+
+//structure for DEVESC_SETMODE
+type
+  PEscMode=^EscMode;
+  EscMode=record
+    mode: cardinal;
+    modedata: byte;
+  end;
+
+//return codes for DevPostDeviceModes
+const
+  DPDM_ERROR                   =-1;
+  DPDM_NONE                    =0;
+
+//codes for DevPostDeviceModes
+  DPDM_POSTJOBPROP             =0;
+  DPDM_CHANGEPROP              =1;
+  DPDM_QUERYJOBPROP            =2;
+
+//string types for DevQueryDeviceNames
+type
+  Str8 = Array[0..7] of Char;
+  Str16= Array[0..15] of Char;
+  Str32= Array[0..31] of Char;
+  Str64= Array[0..63] of Char;
+
+//return code for DevQueryHardcopyCaps
+const
+  DQHC_ERROR                    =-1;
+
+//codes for DevQueryHardcopyCaps
+const
+  HCAPS_CURRENT                 =1;
+  HCAPS_SELECTABLE              =2;
+
+//structure for DevQueryHardcopyCaps
+type
+  PHCInfo=^HCInfo;
+  HCInfo=record
+    szFormname: Array[0..31] of Char;
+    cx: Longint;
+    cy: Longint;
+    xLeftClip: Longint;
+    yBottomClip: Longint;
+    xRightClip: Longint;
+    yTopClip: Longint;
+    xPels: Longint;
+    yPels: Longint;
+    flAttributes: Longint;
+  end;
+
+function DevOpenDC(ahab: HAB; lType: Longint; pszToken: PChar; lCount: Longint; var pdopData: DevOpenStruc; hdcComp: cardinal): cardinal; cdecl;
+function DevCloseDC(ahdc: cardinal): cardinal; cdecl;
+function DevEscape(ahdc: cardinal; lCode, lInCount: Longint; var pbInData; var plOutCount: Longint; var pbOutData): Longint; cdecl;
+function DevQueryCaps(ahdc: cardinal; lStart, lCount: Longint; var alArray: Longint): Longbool; cdecl;
+function DevQueryDeviceNames(ahab: HAB; pszDriverName: PChar; var pldn: Longint; aDeviceName: Str32; aDeviceDesc: Str64; var pldt: Longint; aDataType: Str16): Longbool; cdecl;
+function DevQueryHardcopyCaps(ahdc: cardinal; lStartForm, lForms: Longint; var phciHcInfo: HCInfo): Longint; cdecl;
+function DevPostDeviceModes(ahab: HAB; var pdrivDriverData: DrivData; pszDriverName, pszDeviceName, pszName: PChar; flOptions: cardinal): Longint; cdecl;
+                  
+implementation
+
+function DevOpenDC(ahab: HAB; lType: Longint; pszToken: PChar; lCount: Longint; var pdopData: DevOpenStruc; hdcComp: cardinal): cardinal; cdecl;
+    external 'PMGPI' index 610;
+function DevCloseDC(ahdc: cardinal): cardinal; cdecl;
+    external 'PMGPI' index 604;
+function DevEscape(ahdc: cardinal; lCode, lInCount: Longint; var pbInData; var plOutCount: Longint; var pbOutData): Longint; cdecl;
+    external 'PMGPI' index 605;
+function DevQueryCaps(ahdc: cardinal; lStart, lCount: Longint;var alArray: Longint): Longbool; cdecl;
+    external 'PMGPI' index 606;
+function DevQueryDeviceNames(ahab: HAB; pszDriverName: PChar; var pldn: Longint; aDeviceName: Str32; aDeviceDesc: Str64; var pldt: Longint; aDataType: Str16): Longbool; cdecl;
+    external 'PMGPI' index 607;
+function DevQueryHardcopyCaps(ahdc: cardinal; lStartForm, lForms: Longint; var phciHcInfo: HCInfo): Longint; cdecl;
+    external 'PMGPI' index 608;
+function DevPostDeviceModes(ahab: HAB; var pdrivDriverData: DrivData; pszDriverName, pszDeviceName, pszName: PChar; flOptions: cardinal): Longint; cdecl;
+    external 'PMGPI' index 609;
+                    
+end.
+
+{
+
+$Log$
+Revision 1.1  2002-10-18 18:08:52  hajny
+  + first version
+
+
+}