home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Interactive Guide / c-cplusplus-interactive-guide.iso / c_ref / csource1 / program3 / pmgpi.pas < prev    next >
Pascal/Delphi Source File  |  1993-11-23  |  63KB  |  1,460 lines

  1. { **************************************************************************\
  2. *
  3. * Module Name: PMGPI.H
  4. *
  5. * OS/2 Presentation Manager GPI constants, types and function declarations
  6. *
  7. * Copyright (c) International Business Machines Corporation 1981, 1988-1990
  8. *
  9. * =============================================================================
  10. *
  11. * The following symbols are used in this file for conditional sections.
  12. *
  13. *   INCL_GPI                Include all of the GPI
  14. *   INCL_GPICONTROL         Basic PS control
  15. *   INCL_GPICORRELATION     Picking, Boundary and Correlation
  16. *   INCL_GPISEGMENTS        Segment Control and Drawing
  17. *   INCL_GPISEGEDITING      Segment Editing via Elements
  18. *   INCL_GPITRANSFORMS      Transform and Transform Conversion
  19. *   INCL_GPIPATHS           Paths and Clipping with Paths
  20. *   INCL_GPILOGCOLORTABLE   Logical Color Tables
  21. *   INCL_GPIPRIMITIVES      Drawing Primitives and Primitive Attributes
  22. *   INCL_GPILCIDS           Phyical and Logical Fonts with Lcids
  23. *   INCL_GPIBITMAPS         Bitmaps and Pel Operations
  24. *   INCL_GPIREGIONS         Regions and Clipping with Regions
  25. *   INCL_GPIMETAFILES       Metafiles
  26. *   INCL_GPIDEFAULTS        Default Primitive Attributes
  27. *   INCL_GPIERRORS          defined if INCL_ERRORS defined
  28. *
  29. * There is a symbol used in this file called INCL_DDIDEFS. This is used to
  30. * include only the definitions for the DDI. The programmer using the GPI
  31. * can ignore this symbol
  32. *
  33. * There is a symbol used in this file called INCL_SAADEFS. This is used to
  34. * include only the definitions for the SAA. The programmer using the GPI
  35. * can ignore this symbol
  36. *
  37. \**************************************************************************}
  38. {| Version:   1.00
  39.  | Original translation: Peter Singer (PSi)
  40.  }
  41. Unit PmGPI;
  42. Interface
  43. Uses
  44.   Os2Def;
  45.  
  46. CONST
  47.  {  General GPI return values }
  48.    GPI_ERROR                   =   0;
  49.    GPI_OK                      =   1;
  50.    GPI_ALTERROR                =  -1;
  51.  
  52.  {  fixed point number - implicit binary point between 2 and 3 hex digits }
  53. TYPE
  54.    FIXED  = LONG;             { fx }
  55.    PFIXED = ^FIXED;
  56.  
  57.  {  fixed point number - implicit binary point between 1st and 2nd hex digits }
  58.    FIXED88 = USHORT;         { fx88 }
  59.  
  60.  {  fixed point signed number - implicit binary point between bits 14 and 13. }
  61.  {                              Bit 15 is the sign bit.                       }
  62.  {                              Thus 1.0 is represented by 16384 (0x4000)     }
  63.  {                              and -1.0 is represented by -16384 (0xc000)    }
  64.    FIXED114 = USHORT;         { fx114 }
  65.  
  66.  {  make FIXED number from SHORT integer part and USHORT fractional part }
  67. {***MC #define MAKEFIXED(intpart,fractpart) MAKELONG(fractpart,intpart)}
  68.  {  extract fractional part from a fixed quantity }
  69. {****MC #define FIXEDFRAC(fx)                (LOUSHORT(fx))}
  70.  {  extract integer part from a fixed quantity }
  71. {****MV #define FIXEDINT(fx)                 ((SHORT)HIUSHORT(fx))}
  72.  
  73.  {  structure for size parameters e.g. for GpiCreatePS }
  74. TYPE
  75.     SIZEL = record            {  sizl }
  76.       cx,
  77.       cy: LONG;
  78.     end;
  79.     PSIZEL =^SIZEL;
  80.  
  81. CONST
  82.  {  return code on GpiQueryLogColorTable,GpiQueryRealColors and GpiQueryPel }
  83.  CLR_NOINDEX               =  -254;
  84.  
  85.  
  86.  {  units for GpiCreatePS and others }
  87.  PU_ARBITRARY              = $0004;
  88.  PU_PELS                   = $0008;
  89.  PU_LOMETRIC               = $000C;
  90.  PU_HIMETRIC               = $0010;
  91.  PU_LOENGLISH              = $0014;
  92.  PU_HIENGLISH              = $0018;
  93.  PU_TWIPS                  = $001C;
  94.  
  95.  {  format for GpiCreatePS }
  96.  GPIF_DEFAULT              =     0;
  97.  GPIF_SHORT                = $0100;
  98.  GPIF_LONG                 = $0200;
  99.  
  100.  
  101.  {  PS type for GpiCreatePS }
  102.  GPIT_NORMAL               =     0;
  103.  GPIT_MICRO                = $1000;
  104.  
  105.  
  106.  {  implicit associate flag for GpiCreatePS }
  107.  GPIA_NOASSOC              =     0;
  108.  GPIA_ASSOC                = $4000;
  109.  
  110.  {  return error for GpiQueryDevice }
  111.  HDC_ERROR                = HDC(-1);
  112.  
  113.  {  common GPICONTROL functions }
  114. Function GpiCreatePS(hab: HAB; hdc: HDC; psizlSize: PSIZEL; flOptions: ULONG): HPS;
  115. Function GpiDestroyPS(hps: HPS): BOOL;
  116. Function GpiAssociate(hps: HPS; hdc: HDC): BOOL;
  117. Function GpiRestorePS(hps: HPS; lPSid: LONG): BOOL;
  118. Function GpiSavePS(hps: HPS): LONG;
  119. Function GpiErase(hps: HPS): BOOL;
  120.  
  121. Function GpiQueryDevice(hps: HPS): HDC;
  122.  
  123. CONST
  124.  {  options for GpiResetPS }
  125.  GRES_ATTRS                = $0001;
  126.  GRES_SEGMENTS             = $0002;
  127.  GRES_ALL                  = $0004;
  128.  
  129.  {  option masks for PS options used by GpiQueryPs }
  130.  PS_UNITS                  = $00FC;
  131.  PS_FORMAT                 = $0F00;
  132.  PS_TYPE                   = $1000;
  133.  PS_MODE                   = $2000;
  134.  PS_ASSOCIATE              = $4000;
  135.  PS_NORESET                = $8000;
  136.  
  137.  
  138.  {  error context returned by GpiErrorSegmentData }
  139.  GPIE_SEGMENT              =     0;
  140.  GPIE_ELEMENT              =     1;
  141.  GPIE_DATA                 =     2;
  142.  
  143.  
  144.  {  control parameter for GpiSetDrawControl }
  145.  DCTL_ERASE                =     1;
  146.  DCTL_DISPLAY              =     2;
  147.  DCTL_BOUNDARY             =     3;
  148.  DCTL_DYNAMIC              =     4;
  149.  DCTL_CORRELATE            =     5;
  150.  
  151.  {  constants for GpiSet/QueryDrawControl }
  152.  DCTL_ERROR                =    -1;
  153.  DCTL_OFF                  =     0;
  154.  DCTL_ON                   =     1;
  155.  
  156.  {  constants for GpiSet/QueryStopDraw }
  157.  SDW_ERROR                 =    -1;
  158.  SDW_OFF                   =     0;
  159.  SDW_ON                    =     1;
  160.  
  161.  
  162.  {  drawing for GpiSet/QueryDrawingMode }
  163.  DM_ERROR                  =     0;
  164.  DM_DRAW                   =     1;
  165.  DM_RETAIN                 =     2;
  166.  DM_DRAWANDRETAIN          =     3;
  167.  
  168.  { ** other GPICONTROL functions }
  169. Function GpiResetPS(hps: HPS; flOptions: ULONG): BOOL;
  170.  
  171. Function GpiSetPS(hps: HPS; psizlsize: PSIZEL; flOptions: ULONG): BOOL;
  172.  
  173.  
  174. Function GpiQueryPS(hps: HPS; psizlSize: PSIZEL): ULONG;
  175. Function GpiErrorSegmentData(hps: HPS; plSegment, plContext: PLONG): LONG;
  176.  
  177. Function GpiQueryDrawControl(hps: HPS; lControl: LONG): LONG;
  178. Function GpiSetDrawControl(hps: HPS; lControl, lValue: LONG): BOOL;
  179.  
  180. Function GpiQueryDrawingMode(hps: HPS): LONG;
  181. Function GpiSetDrawingMode(hps: HPS; lMode: LONG): BOOL;
  182.  
  183. Function GpiQueryStopDraw(hps: HPS): LONG;
  184. Function GpiSetStopDraw(hps: HPS; lValue: LONG): BOOL;
  185.  
  186. CONST
  187.  {  options for GpiSetPickApertureSize }
  188.  PICKAP_DEFAULT              =   0;
  189.  PICKAP_REC                  =   2;
  190.  
  191.  {  type of correlation for GpiCorrelateChain }
  192.  PICKSEL_VISIBLE             =   0;
  193.  PICKSEL_ALL                 =   1;
  194.  
  195.  {  return code to indicate correlate hit(s) }
  196.  GPI_HITS                    =   2;
  197.  
  198.  { ** picking,  correlation and boundary functions }
  199. Function GpiCorrelateChain(hps: HPS; lType: LONG; pptlPick: PPOINTL;
  200.                            lMaxHits, lMaxDepth: LONG; pl2: PLONG): LONG;
  201. Function GpiQueryTag(hps: HPS; plTag: PLONG): BOOL;
  202. Function GpiSetTag(hps: HPS; lTag: LONG): BOOL;
  203. Function GpiQueryPickApertureSize(hps: HPS; psizlSize: PSIZEL): BOOL;
  204. Function GpiSetPickApertureSize(hps: HPS; lOptions: LONG; psizlSize: PSIZEL): BOOL;
  205.  
  206.  
  207. Function GpiQueryPickAperturePosition(hps: HPS; pptlPoint: PPOINTL): BOOL;
  208. Function GpiSetPickAperturePosition(hps: HPS; pptlPick: PPOINTL): BOOL;
  209. Function GpiQueryBoundaryData(hps: HPS; prclBoundary: PRECTL): BOOL;
  210. Function GpiResetBoundaryData(hps: HPS): BOOL;
  211.  
  212. Function GpiCorrelateFrom(hps: HPS; lFirstSegment, lLastSegment: LONG;
  213.                           lType: LONG; pptlPick: PPOINTL;
  214.                           lMaxHits, lMaxDepth: LONG; plSegTag: PLONG): LONG;
  215. Function GpiCorrelateSegment(hps: HPS; lSegment, lType: LONG;
  216.                              pptlPick: PPOINTL; lMaxHits, lMaxDepth: LONG;
  217.                              alSegTag: PLONG): LONG;
  218.  
  219. CONST
  220.  {  data formats for GpiPutData and GpiGetData }
  221.  DFORM_NOCONV                 =  0;
  222.  
  223.  
  224.  DFORM_S370SHORT              =  1;
  225.  DFORM_PCSHORT                =  2;
  226.  DFORM_PCLONG                 =  4;
  227.  
  228.  
  229.  {  segment attributes used by GpiSet/QuerySegmentAttrs and others