home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: Graphics / Graphics.zip / os2apipm.zip / OS2API / OS2-GPI.ADS < prev    next >
Text File  |  1996-08-10  |  100KB  |  2,350 lines

  1.  
  2. -- ╔═══════════════════════════════════════════════════════════════════╗
  3. -- ║       D E S I G N   E N G I N E R I N G              ║D║S║        ║
  4. -- ║            S O F T W A R E                           ╚═╩═╝        ║
  5. -- ║                                                                   ║
  6. -- ║        Package     Os2.Gpi                                        ║
  7. -- ║                                                                   ║
  8. -- ║        Author :  Leonid Dulman     1995 , 1996                    ║
  9. -- ║                                                                   ║
  10. -- ║             GNU ADA RUNTIME LIBRARY (GNARL) COMPONENTS            ║
  11. -- ║                                                                   ║
  12. -- ║               PM   GPI Interface                                  ║
  13. -- ║                                                                   ║
  14. -- ╚═══════════════════════════════════════════════════════════════════╝
  15.  
  16. package Os2.Gpi is
  17. pragma Preelaborate (Gpi);
  18.  
  19. --  General GPI return values
  20.  GPI_ERROR    :constant long:=   0;
  21.  GPI_OK       :constant long:=   1;
  22.  GPI_ALTERROR :constant long:=  -1;
  23. --
  24. --  long point number - implicit binary point between 2 and 3 hex digits
  25. --  long point number - implicit binary point between 1st and 2nd hex digits
  26. subtype FIXED88 is  USHORT ;  -- fx88
  27.  
  28. --   fixed point signed number - implicit binary point between bits 14 and 13.
  29. --                               Bit 15 is the sign bit.
  30. --                               Thus 1.0 is represented by 16384 (0x4000)
  31. --                               and -1.0 is represented by -16384 (0xc000)
  32.  
  33. subtype FIXED114 is USHORT ; -- fx114
  34. --
  35. --  -- make LONG number from SHORT integer part and USHORT fractional part
  36. --  #define MAKEFIXED(intpart,fractpart) MAKELONG(fractpart,intpart)
  37. --  -- extract fractional part from a fixed quantity
  38. --  #define FIXEDFRAC(fx)                (LOUSHORT(fx))
  39. --  -- extract integer part from a fixed quantity
  40. --  #define FIXEDINT(fx)                 ((SHORT)HIUSHORT(fx))
  41.  
  42. --  -- structure for size parameters e.g. for GpiCreatePS
  43. type SIZEL    is record          -- sizl
  44.   cx  :LONG ;
  45.   cy  :LONG ;
  46. end record; -- SIZEL;
  47. type PSIZEL  is access all SIZEL;
  48.  
  49. --  -- return code on GpiQueryLogColorTable,GpiQueryRealColors and GpiQueryPel
  50. CLR_NOINDEX :constant Long:=-254;
  51.  
  52. --     -- units for GpiCreatePS and others
  53.  
  54.  PU_ARBITRARY :constant  Long:= 16#0004#;
  55.  PU_PELS      :constant  Long:= 16#0008#;
  56.  PU_LOMETRIC  :constant  Long:= 16#000C#;
  57.  PU_HIMETRIC  :constant  Long:= 16#0010#;
  58.  PU_LOENGLISH :constant  Long:= 16#0014#;
  59.  PU_HIENGLISH :constant  Long:= 16#0018#;
  60.  PU_TWIPS     :constant  Long:= 16#001C#;
  61.  
  62.        -- format for GpiCreatePS
  63.  GPIF_DEFAULT :constant  Long:=                   0 ;
  64.  GPIF_SHORT   :constant  Long:=              16#0100#;
  65.  GPIF_LONG    :constant  Long:=              16#0200#;
  66.  
  67. -- PS type for GpiCreatePS
  68.  GPIT_NORMAL :constant  Long:=                    0 ;
  69.  GPIT_MICRO  :constant  Long:=               16#1000#;
  70.  
  71. -- implicit associate flag for GpiCreatePS
  72.  GPIA_NOASSOC :constant  Long:=                   0 ;
  73.  GPIA_ASSOC   :constant  Long:=              16#4000#;
  74.  
  75. -- PS Fill type for GpiCreatePS defect: 61035 RickT Add exclusive fill
  76.  GPIM_AREAEXCL :constant  Long:=             16#8000#;
  77.  
  78.    -- return error for GpiQueryDevice
  79. --  HDC_ERROR                ((HDC)-1L )
  80.  
  81. -- common GPICONTROL functions
  82.  
  83. function GpiCreatePS(ha       :HAB    ;
  84.                      dc       :HDC    ;
  85.                      psizlSize:PSIZEL ;
  86.                      flOptions:ULONG  ) return HPS ;
  87. pragma Import(c,GpiCreatePs, Link_name=>"_GpiCreatePs");
  88.  
  89. function GpiDestroyPS(ps:HPS ) return BOOL;
  90. pragma Import(c,GpiDestroyPS, Link_name=>"_GpiDestroyPS");
  91.  
  92. function GpiAssociate(ps:HPS ;
  93.                       dc:HDC  ) return BOOL;
  94. pragma Import(c,GpiAssociate, Link_name=>"_GpiAssociate");
  95.  
  96. function GpiRestorePS(ps   :HPS  ;
  97.                       lPSid:LONG ) return BOOL;
  98. pragma Import(c,GpiRestorePs, Link_name=>"_GpiRestorePs");
  99.  
  100. function GpiSavePS(ps:HPS  ) return LONG;
  101. pragma Import(c,GpiSavePs, Link_name=>"_GpiSavePs");
  102.  
  103. function GpiErase(ps:HPS  ) return  BOOL;
  104. pragma Import(c,GpiErase, Link_name=>"_GpiErase");
  105.  
  106. function GpiQueryDevice(pc:HPS) return  HDC;
  107. pragma Import(c,GpiQueryDevice, Link_name=>"_GpiQueryDevice");
  108.  
  109. -- options for GpiResetPS
  110.  GRES_ATTRS    :constant  Long:=             16#0001#;
  111.  GRES_SEGMENTS :constant  Long:=             16#0002#;
  112.  GRES_ALL      :constant  Long:=             16#0004#;
  113.  
  114. -- option masks for PS options used by GpiQueryPs
  115.  PS_UNITS      :constant  Long:=             16#00FC#;
  116.  PS_FORMAT     :constant  Long:=             16#0F00#;
  117.  PS_TYPE       :constant  Long:=             16#1000#;
  118.  PS_MODE       :constant  Long:=             16#2000#;
  119.  PS_ASSOCIATE  :constant  Long:=             16#4000#;
  120.  PS_NORESET    :constant  Long:=             16#8000#;
  121.  
  122.  
  123. -- error context returned by GpiErrorSegmentData
  124.  GPIE_SEGMENT  :constant  Long:=                 0 ;
  125.  GPIE_ELEMENT  :constant  Long:=                 1 ;
  126.  GPIE_DATA     :constant  Long:=                 2 ;
  127.  
  128.    -- control parameter for GpiSetDrawControl
  129.     DCTL_ERASE    :constant  Long:=                 1 ;
  130.     DCTL_DISPLAY  :constant  Long:=                 2 ;
  131.     DCTL_BOUNDARY :constant  Long:=                 3 ;
  132.     DCTL_DYNAMIC  :constant  Long:=                 4 ;
  133.     DCTL_CORRELATE:constant  Long:=                 5 ;
  134.  
  135.    -- constants for GpiSet/QueryDrawControl
  136.     DCTL_ERROR    :constant  Long:=                 -1 ;
  137.     DCTL_OFF      :constant  Long:=                 0 ;
  138.     DCTL_ON       :constant  Long:=                 1 ;
  139.  
  140.    -- constants for GpiSet/QueryStopDraw
  141.     SDW_ERROR     :constant  Long:=                 -1 ;
  142.     SDW_OFF       :constant  Long:=                 0 ;
  143.     SDW_ON        :constant  Long:=                 1 ;
  144.  
  145. -- drawing for GpiSet/QueryDrawingMode
  146.  DM_ERROR         :constant  Long:=              0 ;
  147.  DM_DRAW          :constant  Long:=              1 ;
  148.  DM_RETAIN        :constant  Long:=              2 ;
  149.  DM_DRAWANDRETAIN :constant  Long:=              3 ;
  150.  
  151. --   other GPICONTROL functions
  152.  
  153. function GpiResetPS(ps       :HPS   ;
  154.                     flOptions:ULONG ) return BOOL;
  155. pragma Import(c,GpiResetPs, Link_name=>"_GpiResetPs");
  156.  
  157. function GpiSetPS(ps       :HPS    ;
  158.                   psizlsize:PSIZEL ;
  159.                   flOptions:ULONG  ) return  BOOL;
  160. pragma Import(c,GpiSetPs, Link_name=>"_GpiSetPs");
  161.  
  162. function GpiQueryPS(ps       :HPS    ;
  163.                     psizlSize:PSIZEL ) return   ULONG;
  164. pragma Import(c,GpiQueryPs, Link_name=>"_GpiQueryPs");
  165.  
  166. function GpiErrorSegmentData(ps       :HPS   ;
  167.                              plSegment:PLONG ;
  168.                              plContext:PLONG ) return LONG ;
  169. pragma Import(c,GpiErrorSegmentData, Link_name=>"_GpiErrorSegmentData");
  170.  
  171. function GpiQueryDrawControl(ps      :HPS  ;
  172.                              lControl:LONG ) return LONG;
  173. pragma Import(c,GpiQueryDrawControl, Link_name=>"_GpiQueryDrawControl");
  174.  
  175. function GpiSetDrawControl(ps      :HPS  ;
  176.                            lControl:LONG ;
  177.                            lValue  :LONG ) return BOOL;
  178. pragma Import(c,GpiSetDrawControl, Link_name=>"_GpiSetDrawControl");
  179.  
  180. function GpiQueryDrawingMode(ps :HPS ) return  LONG;
  181. pragma Import(c,GpiQueryDrawingMode, Link_name=>"_GpiQueryDrawingMode");
  182.  
  183. function GpiSetDrawingMode(ps   :HPS  ;
  184.                            lMode:LONG ) return  BOOL;
  185. pragma Import(c,GpiSetDrawingMode, Link_name=>"_GpiSetDrawingMode");
  186.  
  187. function GpiQueryStopDraw( ps :HPS) return  LONG;
  188. pragma Import(c,GpiQueryStopDraw, Link_name=>"_GpiQueryStopDraw");
  189.  
  190. function GpiSetStopDraw(ps    :HPS  ;
  191.                         lValue:LONG ) return BOOL;
  192. pragma Import(c,GpiSetStopDraw, Link_name=>"_GpiSetStopDraw");
  193.  
  194. -- options for GpiSetPickApertureSize
  195.  PICKAP_DEFAULT  :constant  Long:=               0 ;
  196.  PICKAP_REC      :constant  Long:=               2 ;
  197.  
  198. -- type of correlation for GpiCorrelateChain
  199.  PICKSEL_VISIBLE :constant  Long:=               0 ;
  200.  PICKSEL_ALL     :constant  Long:=               1 ;
  201.  
  202. -- return code to indicate correlate hit(s)
  203.  GPI_HITS        :constant  Long:=               2 ;
  204.  
  205. --     picking;  correlation and boundary functions
  206.  
  207. function GpiCorrelateChain(ps       :HPS     ;
  208.                            lType    :LONG    ;
  209.                            pptlPick :PPOINTL ;
  210.                            lMaxHits :LONG    ;
  211.                            lMaxDepth:LONG    ;
  212.                            pl2      :PLONG   ) return LONG;
  213. pragma Import(c,GpiCorrelateChain, Link_name=>"_GpiCorrelateChain");
  214.  
  215. function GpiQueryTag(ps   :HPS   ;
  216.                      plTag:PLONG ) return BOOL;
  217. pragma Import(c,GpiQueryTag, Link_name=>"_GpiQueryTag");
  218.  
  219. function GpiSetTag(ps  :HPS  ;
  220.                    lTag:LONG ) return BOOL;
  221. pragma Import(c,GpiSetTag, Link_name=>"_GpiSetTag");
  222.  
  223. function GpiQueryPickApertureSize(ps       :HPS    ;
  224.                                   psizlSize:PSIZEL ) return BOOL;
  225. pragma Import(c,GpiQueryPickApertureSize, Link_name=>"_GpiQueryPickApertureSize");
  226.  
  227. function GpiSetPickApertureSize(ps       :HPS    ;
  228.                                 lOptions :LONG   ;
  229.                                 psizlSize:PSIZEL ) return BOOL;
  230. pragma Import(c,GpiSetPickApertureSize, Link_name=>"_GpiSetPickApertureSize");
  231.  
  232. function GpiQueryPickAperturePosition(ps       :HPS     ;
  233.                                       pptlPoint:PPOINTL ) return BOOL;
  234. pragma Import(c,GpiQueryPickAperturePosition, Link_name=>"_GpiQueryPickAperturePosition");
  235.  
  236. function GpiSetPickAperturePosition(ps      :HPS     ;
  237.                                     pptlPick:PPOINTL ) return BOOL;
  238. pragma Import(c,GpiSetPickAperturePosition, Link_name=>"_GpiSetPickAperturePosition");
  239.  
  240. function GpiQueryBoundaryData(ps          :HPS    ;
  241.                               prclBoundary:PRECTL ) return BOOL;
  242. pragma Import(c,GpiQueryBoundaryData, Link_name=>"_GpiQueryBoundaryData");
  243.  
  244. function GpiResetBoundaryData(ps :HPS ) return BOOL;
  245. pragma Import(c,GpiResetBoundaryData, Link_name=>"_GpiResetBoundaryData");
  246.  
  247. function GpiCorrelateFrom(ps           :HPS     ;
  248.                           lFirstSegment:LONG    ;
  249.                           lLastSegment :LONG    ;
  250.                           lType        :LONG    ;
  251.                           pptlPick     :PPOINTL ;
  252.                           lMaxHits     :LONG    ;
  253.                           lMaxDepth    :LONG    ;
  254.                           plSegTag     :PLONG   ) return  LONG;
  255. pragma Import(c,GpiCorrelateFrom, Link_name=>"_GpiCorrelateFrom");
  256.  
  257. function GpiCorrelateSegment(ps       :HPS     ;
  258.                              lSegment :LONG    ;
  259.                              lType    :LONG    ;
  260.                              pptlPick :PPOINTL ;
  261.                              lMaxHits :LONG    ;
  262.                              lMaxDepth:LONG    ;
  263.                              alSegTag :PLONG   ) return  LONG;
  264. pragma Import(c,GpiCorrelateSegment, Link_name=>"_GpiCorrelateSegment");
  265.  
  266. -- data formats for GpiPutData and GpiGetData
  267.    DFORM_NOCONV    :constant  Long:=               0 ;
  268.    DFORM_S370SHORT :constant  Long:=               1 ;
  269.    DFORM_PCSHORT   :constant  Long:=               2 ;
  270.    DFORM_PCLONG    :constant  Long:=               4 ;
  271.  
  272. -- segment attributes used by GpiSet/QuerySegmentAttrs and others
  273. ATTR_ERROR         :constant  Long:=            -1 ;
  274. ATTR_DETECTABLE    :constant  Long:=            1 ;
  275. ATTR_VISIBLE       :constant  Long:=            2 ;
  276. ATTR_CHAINED       :constant  Long:=            6 ;
  277. ATTR_DYNAMIC       :constant  Long:=            8 ;
  278. ATTR_FASTCHAIN       :constant  Long:=          9 ;
  279. ATTR_PROP_DETECTABLE :constant  Long:=          10 ;
  280. ATTR_PROP_VISIBLE    :constant  Long:=          11 ;
  281.  
  282. -- attribute on/off values
  283. ATTR_OFF   :constant  Long:=                    0 ;
  284. ATTR_ON    :constant  Long:=                    1 ;
  285.  
  286. -- segment priority used by GpiSetSegmentPriority and others
  287.  LOWER_PRI  :constant  Long:=                   -1;
  288.  HIGHER_PRI :constant  Long:=                    1 ;
  289.  
  290. --** segment control functions
  291.  
  292. function GpiOpenSegment(ps      :HPS  ;
  293.                         lSegment:LONG ) return  BOOL;
  294. pragma Import(c,GpiOpenSegment, Link_name=>"_GpiOpenSegment");
  295.  
  296. function GpiCloseSegment(ps :HPS ) return BOOL;
  297. pragma Import(c,GpiCloseSegment, Link_name=>"_GpiCloseSegment");
  298.  
  299. function GpiDeleteSegment(ps    :HPS  ;
  300.                           lSegid:LONG ) return  BOOL;
  301. pragma Import(c,GpiDeleteSegment, Link_name=>"_GpiDeleteSegment");
  302.  
  303. function GpiQueryInitialSegmentAttrs(ps        :HPS  ;
  304.                                      lAttribute:LONG ) return LONG;
  305. pragma Import(c,GpiQueryInitialSegmentAttrs, Link_name=>"_GpiQueryInitialSegmentAttrs");
  306.  
  307. function GpiSetInitialSegmentAttrs(ps        :HPS  ;
  308.                                    lAttribute:LONG ;
  309.                                    lValue    :LONG ) return  BOOL;
  310. pragma Import(c,GpiSetInitialSegmentAttrs, Link_name=>"_GpiSetInitialSegmentAttrs");
  311.  
  312. function GpiQuerySegmentAttrs(ps        :HPS  ;
  313.                               lSegid    :LONG ;
  314.                               lAttribute:LONG ) return  LONG;
  315. pragma Import(c,GpiQuerySegmentAttrs, Link_name=>"_GpiQuerySegmentAttrs");
  316.  
  317. function GpiSetSegmentAttrs(ps        :HPS  ;
  318.                             lSegid    :LONG ;
  319.                             lAttribute:LONG ;
  320.                             lValue    :LONG ) return  BOOL;
  321. pragma Import(c,GpiSetSegmentAttrs, Link_name=>"_GpiSetSegmentAttrs");
  322.  
  323. function GpiQuerySegmentPriority(ps       :HPS  ;
  324.                                  lRefSegid:LONG ;
  325.                                  lOrder   :LONG ) return LONG;
  326. pragma Import(c,GpiQuerySegmentPriority, Link_name=>"_GpiQuerySegmentPriority");
  327.  
  328. function GpiSetSegmentPriority(ps       :HPS  ;
  329.                                lSegid   :LONG ;
  330.                                lRefSegid:LONG ;
  331.                                lOrder   :LONG ) return BOOL;
  332. pragma Import(c,GpiSetSegmentPriority, Link_name=>"_GpiSetSegmentPriority");
  333.  
  334. function GpiDeleteSegments(ps           :HPS  ;
  335.                            lFirstSegment:LONG ;
  336.                            lLastSegment :LONG ) return  BOOL;
  337. pragma Import(c,GpiDeleteSegments, Link_name=>"_GpiDeleteSegments");
  338.  
  339. function GpiQuerySegmentNames(ps         :HPS  ;
  340.                               lFirstSegid:LONG ;
  341.                               lLastSegid :LONG ;
  342.                               lMax       :LONG ;
  343.                                alSegids  :PLONG) return LONG;
  344. pragma Import(c,GpiQuerySegmentNames, Link_name=>"_GpiQuerySegmentNames");
  345.  
  346. --     --** draw functions for segments
  347.  
  348. function GpiGetData(ps      :HPS   ;
  349.                     lSegid  :LONG  ;
  350.                     plOffset:PLONG ;
  351.                     lFormat :LONG  ;
  352.                     lLength :LONG  ;
  353.                     pbData  :PBYTE ) return  LONG;
  354. pragma Import(c,GpiGetData, Link_name=>"_GpiGetData");
  355.  
  356. function GpiPutData(ps     :HPS   ;
  357.                     lFormat:LONG  ;
  358.                     plCount:PLONG ;
  359.                     pbData :PBYTE ) return BOOL;
  360. pragma Import(c,GpiPutData, Link_name=>"_GpiPutData");
  361.  
  362. function GpiDrawChain( ps:HPS ) return BOOL;
  363. pragma Import(c,GpiDrawChain, Link_name=>"_GpiDrawChain");
  364.  
  365. function GpiDrawFrom(ps           :HPS  ;
  366.                      lFirstSegment:LONG ;
  367.                      lLastSegment :LONG ) return BOOL;
  368. pragma Import(c,GpiDrawFrom, Link_name=>"_GpiDrawFrom");
  369.  
  370. function GpiDrawSegment(ps      :HPS  ;
  371.                         lSegment:LONG ) return BOOL;
  372. pragma Import(c,GpiDrawSegment, Link_name=>"_GpiDrawSegment");
  373.  
  374. function GpiDrawDynamics(ps:HPS  ) return BOOL;
  375. pragma Import(c,GpiDrawDynamics, Link_name=>"_GpiDrawDynamics");
  376.  
  377. function GpiRemoveDynamics(ps         :HPS  ;
  378.                            lFirstSegid:LONG ;
  379.                            lLastSegid :LONG ) return BOOL;
  380. pragma Import(c,GpiRemoveDynamics, Link_name=>"_GpiRemoveDynamics");
  381.  
  382. -- edit modes used by GpiSet/QueryEditMode
  383.  SEGEM_ERROR   :constant  Long:=                     0 ;
  384.  SEGEM_INSERT  :constant  Long:=                     1 ;
  385.  SEGEM_REPLACE :constant  Long:=                     2 ;
  386.  
  387. --   segment editing by element functions
  388.  
  389. function GpiBeginElement(ps     :HPS  ;
  390.                          lType  :LONG ;
  391.                          pszDesc:PSZ  ) return BOOL;
  392. pragma Import(c,GpiBeginElement, Link_name=>"_GpiBeginElement");
  393.  
  394. function GpiEndElement( ps:HPS ) return BOOL;
  395. pragma Import(c,GpiEndElement, Link_name=>"_GpiEndElement");
  396.  
  397. function GpiLabel(ps    :HPS  ;
  398.                   lLabel:LONG ) return BOOL;
  399. pragma Import(c,GpiLabel, Link_name=>"_GpiLabel");
  400.  
  401. function GpiElement(ps     :HPS   ;
  402.                     lType  :LONG  ;
  403.                     pszDesc:PSZ   ;
  404.                     lLength:LONG  ;
  405.                     pbData :PBYTE ) return LONG;
  406. pragma Import(c,GpiElement, Link_name=>"_GpiElement");
  407.  
  408. function GpiQueryElement(ps        :HPS   ;
  409.                          lOff      :LONG  ;
  410.                          lMaxLength:LONG  ;
  411.                          pbData    :PBYTE ) return LONG;
  412. pragma Import(c,GpiQueryElement, Link_name=>"_GpiQueryElement");
  413.  
  414. function GpiDeleteElement( ps:HPS ) return BOOL;
  415. pragma Import(c,GpiDeleteElement, Link_name=>"_GpiDeleteElement");
  416.  
  417. function GpiDeleteElementRange(ps           :HPS  ;
  418.                                lFirstElement:LONG ;
  419.                                lLastElement :LONG ) return  BOOL;
  420. pragma Import(c,GpiDeleteElementRange, Link_name=>"_GpiDeleteElementRange");
  421.  
  422. function GpiDeleteElementsBetweenLabels(ps         :HPS  ;
  423.                                         lFirstLabel:LONG ;
  424.                                         lLastLabel :LONG ) return  BOOL;
  425. pragma Import(c,GpiDeleteElementsBetweenLabels, Link_name=>"_GpiDeleteElementsBetweenLabels");
  426.  
  427. function GpiQueryEditMode(ps:HPS  ) return LONG;
  428. pragma Import(c,GpiQueryEditMode, Link_name=>"_GpiQueryEditMode");
  429.  
  430. function GpiSetEditMode(ps   :HPS  ;
  431.                         lMode:LONG ) return BOOL;
  432. pragma Import(c,GpiSetEditMode, Link_name=>"_GpiSetEditMode");
  433.  
  434. function GpiQueryElementPointer( ps :HPS) return LONG;
  435. pragma Import(c,GpiQueryElementPointer, Link_name=>"_GpiQueryElementPointer");
  436.  
  437. function GpiSetElementPointer(ps      :HPS  ;
  438.                               lElement:LONG ) return BOOL;
  439. pragma Import(c,GpiSetElementPointer, Link_name=>"_GpiSetElementPointer");
  440.  
  441. function GpiOffsetElementPointer(ps     :HPS  ;
  442.                                  loffset:LONG ) return BOOL;
  443. pragma Import(c,GpiOffsetElementPointer, Link_name=>"_GpiOffsetElementPointer");
  444.  
  445. function GpiQueryElementType(ps     :HPS   ;
  446.                              plType :PLONG ;
  447.                              lLength:LONG  ;
  448.                              pszData:PSZ   ) return LONG;
  449. pragma Import(c,GpiQueryElementType, Link_name=>"_GpiQueryElementType");
  450.  
  451. function GpiSetElementPointerAtLabel(ps    :HPS  ;
  452.                                      lLabel:LONG ) return BOOL;
  453. pragma Import(c,GpiSetElementPointerAtLabel, Link_name=>"_GpiSetElementPointerAtLabel");
  454.  
  455. -- co-ordinates space for GpiConvert
  456.  CVTC_WORLD        :constant  Long:=             1 ;
  457.  CVTC_MODEL        :constant  Long:=             2 ;
  458.  CVTC_DEFAULTPAGE  :constant  Long:=             3 ;
  459.  CVTC_PAGE         :constant  Long:=             4 ;
  460.  CVTC_DEVICE       :constant  Long:=             5 ;
  461.  
  462. -- type of transformation for GpiSetSegmentTransformMatrix
  463.  TRANSFORM_REPLACE :constant  Long:=             0 ;
  464.  TRANSFORM_ADD     :constant  Long:=             1 ;
  465.  TRANSFORM_PREEMPT :constant  Long:=             2 ;
  466.  
  467. -- transform matrix
  468.  
  469. type MATRIXLF  is record        -- matlf
  470.     fxM11    :LONG;
  471.     fxM12    :LONG;
  472.      lM13    :LONG;
  473.     fxM21    :LONG;
  474.     fxM22    :LONG;
  475.      lM23    :LONG;
  476.      lM31    :LONG;
  477.      lM32    :LONG;
  478.      lM33    :LONG;
  479. end record; -- MATRIXLF;
  480. type PMATRIXLF  is access all MATRIXLF;
  481.  
  482. --        --** transform and transform conversion functions
  483.  
  484. function GpiQuerySegmentTransformMatrix(ps         :HPS       ;
  485.                                         lSegid     :LONG      ;
  486.                                         lCount     :LONG      ;
  487.                                         pmatlfArray:PMATRIXLF ) return BOOL;
  488. pragma Import(c,GpiQuerySegmentTransformMatrix, Link_name=>"_GpiQuerySegmentTransformMatrix");
  489.  
  490. function GpiSetSegmentTransformMatrix(ps         :HPS       ;
  491.                                       lSegid     :LONG      ;
  492.                                       lCount     :LONG      ;
  493.                                       pmatlfarray:PMATRIXLF ;
  494.                                       lOptions   :LONG      ) return BOOL;
  495. pragma Import(c,GpiSetSegmentTransformMatrix, Link_name=>"_GpiSetSegmentTransformMatrix");
  496.  
  497. function GpiConvert(ps        :HPS     ;
  498.                     lSrc      :LONG    ;
  499.                     lTarg     :LONG    ;
  500.                     lCount    :LONG    ;
  501.                     aptlPoints:PPOINTL ) return BOOL;
  502. pragma Import(c,GpiConvert, Link_name=>"_GpiConvert");
  503.  
  504. function GpiConvertWithMatrix(ps         :HPS       ;
  505.                               lCountp    :LONG      ;
  506.                               aptlPoints :PPOINTL   ;
  507.                               lCount     :LONG      ;
  508.                               pmatlfArray:PMATRIXLF ) return BOOL;
  509. pragma Import(c,GpiConvertWithMatrix, Link_name=>"_GpiConvertWithMatrix");
  510.  
  511. function GpiQueryModelTransformMatrix(ps         :HPS       ;
  512.                                       lCount     :LONG      ;
  513.                                       pmatlfArray:PMATRIXLF ) return BOOL;
  514. pragma Import(c,GpiQueryModelTransformMatrix, Link_name=>"_GpiQueryModelTransformMatrix");
  515.  
  516. function GpiSetModelTransformMatrix(ps         :HPS       ;
  517.                                     lCount     :LONG      ;
  518.                                     pmatlfArray:PMATRIXLF ;
  519.                                     lOptions   :LONG      ) return BOOL;
  520. pragma Import(c,GpiSetModelTransformMatrix, Link_name=>"_GpiSetModelTransformMatrix");
  521.  
  522. function GpiCallSegmentMatrix(ps         :HPS       ;
  523.                               lSegment   :LONG      ;
  524.                               lCount     :LONG      ;
  525.                               pmatlfArray:PMATRIXLF ;
  526.                               lOptions   :LONG      ) return LONG;
  527. pragma Import(c,GpiCallSegmentMatrix, Link_name=>"_GpiCallSegmentMatrix");
  528.  
  529. function GpiQueryDefaultViewMatrix(ps         :HPS       ;
  530.                                    lCount     :LONG      ;
  531.                                    pmatlfArray:PMATRIXLF ) return BOOL;
  532. pragma Import(c,GpiQueryDefaultViewMatrix, Link_name=>"_GpiQueryDefaultViewMatrix");
  533.  
  534. function GpiSetDefaultViewMatrix(ps         :HPS       ;
  535.                                  lCount     :LONG      ;
  536.                                  pmatlfarray:PMATRIXLF ;
  537.                                  lOptions   :LONG      ) return BOOL;
  538. pragma Import(c,GpiSetDefaultViewMatrix, Link_name=>"_GpiSetDefaultViewMatrix");
  539.  
  540. function GpiQueryPageViewport(ps          :HPS    ;
  541.                               prclViewport:PRECTL ) return BOOL;
  542. pragma Import(c,GpiQueryPageViewport, Link_name=>"_GpiQueryPageViewport");
  543.  
  544. function GpiSetPageViewport(ps          :HPS    ;
  545.                             prclViewport:PRECTL ) return BOOL;
  546. pragma Import(c,GpiSetPageViewport, Link_name=>"_GpiSetPageViewport");
  547.  
  548. function GpiQueryViewingTransformMatrix(ps         :HPS       ;
  549.                                         lCount     :LONG      ;
  550.                                         pmatlfArray:PMATRIXLF ) return BOOL;
  551. pragma Import(c,GpiQueryViewingTransformMatrix, Link_name=>"_GpiQueryViewingTransformMatrix");
  552.  
  553. function GpiSetViewingTransformMatrix(ps         :HPS       ;
  554.                                       lCount     :LONG      ;
  555.                                       pmatlfArray:PMATRIXLF ;
  556.                                       lOptions   :LONG      ) return BOOL;
  557. pragma Import(c,GpiSetViewingTransformMatrix, Link_name=>"_GpiSetViewingTransformMatrix");
  558.  
  559. --        --** transform helper routines
  560.  
  561. function GpiTranslate(p1 :HPS;
  562.                       p2 :PMATRIXLF;
  563.                       p3 :LONG;
  564.                       p4 :PPOINTL) return BOOL;
  565. pragma Import(c,GpiTranslate, Link_name=>"_GpiTranslate");
  566.  
  567. function GpiScale(p1:HPS;
  568.                   p2:PMATRIXLF;
  569.                   p3:LONG;
  570.                   p4:PLONG;
  571.                   p5:PPOINTL) return BOOL;
  572. pragma Import(c,GpiScale, Link_name=>"_GpiScale");
  573.  
  574. function GpiRotate(p1:HPS;
  575.                    p2:PMATRIXLF;
  576.                    p3:LONG;
  577.                    p4:LONG;
  578.                    p5:PPOINTL) return BOOL;
  579. pragma Import(c,GpiRotate, Link_name=>"_GpiRotate");
  580.  
  581. --        --** general clipping functions
  582.  
  583. function GpiSetGraphicsField(ps       :HPS    ;
  584.                              prclField:PRECTL ) return BOOL;
  585. pragma Import(c,GpiSetGraphicsField, Link_name=>"_GpiSetGraphicsField");
  586.  
  587. function GpiQueryGraphicsField(ps       :HPS    ;
  588.                                prclField:PRECTL ) return BOOL;
  589. pragma Import(c,GpiQueryGraphicsField, Link_name=>"_GpiQueryGraphicsField");
  590.  
  591. function GpiSetViewingLimits(ps        :HPS    ;
  592.                              prclLimits:PRECTL ) return BOOL;
  593. pragma Import(c,GpiSetViewingLimits, Link_name=>"_GpiSetViewingLimits");
  594.  
  595. function GpiQueryViewingLimits(ps        :HPS    ;
  596.                                prclLimits:PRECTL ) return BOOL;
  597. pragma Import(c,GpiQueryViewingLimits, Link_name=>"_GpiQueryViewingLimits");
  598.  
  599. -- modes for GpiModifyPath
  600. MPATH_STROKE  :constant  Long:=                 6 ;
  601.  
  602. -- modes for GpiFillPath
  603. FPATH_ALTERNATE :constant  Long:=               0 ;
  604. FPATH_WINDING   :constant  Long:=               2 ;
  605. FPATH_INCL      :constant  Long:=               0 ;
  606. FPATH_EXCL      :constant  Long:=               8 ;
  607.  
  608. -- modes for GpiSetClipPath
  609. SCP_ALTERNATE  :constant  Long:=                0 ;
  610. SCP_WINDING    :constant  Long:=                2 ;
  611. SCP_AND        :constant  Long:=                4 ;
  612. SCP_RESET      :constant  Long:=                0 ;
  613. SCP_INCL       :constant  Long:=                0 ;
  614. SCP_EXCL       :constant  Long:=                8 ;
  615.  
  616.   --** Path and Clip Path functions
  617.  
  618. function GpiBeginPath(ps   :HPS  ;
  619.                       lPath:LONG ) return BOOL;
  620. pragma Import(c,GpiBeginPath, Link_name=>"_GpiBeginPath");
  621.  
  622. function GpiEndPath( ps:HPS ) return BOOL;
  623. pragma Import(c,GpiEndPath, Link_name=>"_GpiEndPath");
  624.  
  625. function GpiCloseFigure(ps:HPS  ) return BOOL;
  626. pragma Import(c,GpiCloseFigure, Link_name=>"_GpiCloseFigure");
  627.  
  628. function GpiModifyPath( ps :HPS;
  629.                        lPath:LONG ;
  630.                        lMode:LONG ) return BOOL;
  631. pragma Import(c,GpiModifyPath, Link_name=>"_GpiModifyPath");
  632.  
  633. function GpiFillPath(ps      :HPS  ;
  634.                      lPath   :LONG ;
  635.                      lOptions:LONG ) return LONG;
  636. pragma Import(c,GpiFillPath, Link_name=>"_GpiFillPath");
  637.  
  638. function GpiSetClipPath(ps      :HPS  ;
  639.                         lPath   :LONG ;
  640.                         lOptions:LONG ) return BOOL;
  641. pragma Import(c,GpiSetClipPath, Link_name=>"_GpiSetClipPath");
  642.  
  643. function GpiOutlinePath(ps      :HPS  ;
  644.                         lPath   :LONG ;
  645.                         lOptions:LONG ) return LONG;
  646. pragma Import(c,GpiOutlinePath, Link_name=>"_GpiOutlinePath");
  647.  
  648. function GpiPathToRegion(GpiH    :HPS  ;
  649.                          lPath   :LONG ;
  650.                          lOptions:LONG ) return HRGN;
  651. pragma Import(c,GpiPathToRegion, Link_name=>"_GpiPathToRegion");
  652.  
  653. function GpiStrokePath(ps       :HPS   ;
  654.                        lPath    :LONG  ;
  655.                        flOptions:ULONG ) return LONG;
  656. pragma Import(c,GpiStrokePath, Link_name=>"_GpiStrokePath");
  657.  
  658. -- options for GpiCreateLogColorTable and others
  659.  LCOL_RESET     :constant  Long:=              16#0001#;
  660.  LCOL_REALIZABLE :constant  Long:=             16#0002#;
  661.  LCOL_PURECOLOR  :constant  Long:=             16#0004#;
  662.  LCOL_OVERRIDE_DEFAULT_COLORS :constant  Long:=16#0008#;
  663.  LCOL_REALIZED                :constant  Long:=16#0010#;
  664.  
  665. -- format of logical lColor table for GpiCreateLogColorTable and others
  666.  LCOLF_DEFAULT    :constant  Long:=              0 ;
  667.  LCOLF_INDRGB     :constant  Long:=              1 ;
  668.  LCOLF_CONSECRGB  :constant  Long:=              2 ;
  669.  LCOLF_RGB        :constant  Long:=              3 ;
  670.  LCOLF_PALETTE    :constant  Long:=              4 ;
  671.  
  672. -- options for GpiQueryRealColors and others
  673.  LCOLOPT_REALIZED :constant  Long:=          16#0001#;
  674.  LCOLOPT_INDEX    :constant  Long:=          16#0002#;
  675.  
  676.    -- return codes from GpiQueryLogColorTable to indicate it is in RGB mode
  677.     QLCT_ERROR    :constant  Long:=                -1;
  678.     QLCT_RGB      :constant  Long:=                -2;
  679.  
  680.    -- GpiQueryLogColorTable index returned for colors not explicitly loaded
  681.     QLCT_NOTLOADED :constant  Long:=               -1;
  682.  
  683. -- return codes for GpiQueryColorData
  684.  QCD_LCT_FORMAT    :constant  Long:=             0 ;
  685.  QCD_LCT_LOINDEX   :constant  Long:=             1 ;
  686.  QCD_LCT_HIINDEX   :constant  Long:=             2 ;
  687.  QCD_LCT_OPTIONS   :constant  Long:=             3 ;
  688.  
  689. -- Palette manager return values
  690.  PAL_ERROR         :constant  Long:=            -1;
  691.  
  692. -- color flags for GpiCreatePalette and others
  693.  PC_RESERVED       :constant  Long:=               01;
  694.  PC_EXPLICIT       :constant  Long:=               02 ;
  695.  PC_NOCOLLAPSE     :constant  Long:=               04 ;
  696.  
  697.    --   logical lColor table functions
  698.  
  699. function GpiCreateLogColorTable(ps       :HPS   ;
  700.                                 flOptions:ULONG ;
  701.                                 lFormat  :LONG  ;
  702.                                 lStart   :LONG  ;
  703.                                 lCount   :LONG  ;
  704.                                 alTable  :PLONG ) return BOOL;
  705. pragma Import(c,GpiCreateLogColorTable, Link_name=>"_GpiCreateLogColorTable");
  706.  
  707. function GpiQueryColorData(ps      :HPS  ;
  708.                            lCount  :LONG ;
  709.                             alArray:PLONG) return  BOOL;
  710. pragma Import(c,GpiQueryColorData, Link_name=>"_GpiQueryColorData");
  711.  
  712. function GpiQueryLogColorTable(ps       :HPS   ;
  713.                                flOptions:ULONG ;
  714.                                lStart   :LONG  ;
  715.                                lCount   :LONG  ;
  716.                                alArray  :PLONG ) return LONG;
  717. pragma Import(c,GpiQueryLogColorTable, Link_name=>"_GpiQueryLogColorTable");
  718.  
  719. function GpiQueryRealColors(ps       :HPS   ;
  720.                             flOptions:ULONG ;
  721.                             lStart   :LONG  ;
  722.                             lCount   :LONG  ;
  723.                             alColors :PLONG ) return  LONG;
  724. pragma Import(c,GpiQueryRealColors, Link_name=>"_GpiQueryRealColors");
  725.  
  726. function GpiQueryNearestColor(ps       :HPS   ;
  727.                               flOptions:ULONG ;
  728.                               lRgbIn   :LONG  ) return LONG;
  729. pragma Import(c,GpiQueryNearestColor, Link_name=>"_GpiQueryNearestColor");
  730.  
  731. function GpiQueryColorIndex(ps       :HPS   ;
  732.                             flOptions:ULONG ;
  733.                             lRgbColor:LONG  ) return LONG;
  734. pragma Import(c,GpiQueryColorIndex, Link_name=>"_GpiQueryColorIndex");
  735.  
  736. function GpiQueryRGBColor(ps         :HPS   ;
  737.                           flOptions  :ULONG ;
  738.                           lColorIndex:LONG  ) return LONG;
  739. pragma Import(c,GpiQueryRGBColor, Link_name=>"_GpiQueryRGBColor");
  740.  
  741. --           --Palette manager functions
  742.  
  743. function GpiCreatePalette(ha       :HAB    ;
  744.                           flOptions:ULONG  ;
  745.                           ulFormat :ULONG  ;
  746.                           ulCount  :ULONG  ;
  747.                           aulTable :PULONG ) return HPAL;
  748. pragma Import(c,GpiCreatePalette, Link_name=>"_GpiCreatePalette");
  749.  
  750. function GpiDeletePalette( pal:HPAL) return BOOL;
  751. pragma Import(c,GpiDeletePalette, Link_name=>"_GpiDeletePalette");
  752.  
  753. function GpiSelectPalette(ps :HPS   ;
  754.                           pal:HPAL  ) return HPAL;
  755. pragma Import(c,GpiSelectPalette, Link_name=>"_GpiSelectPalette");
  756.  
  757. function GpiAnimatePalette(pal     :HPAL   ;
  758.                            ulFormat:ULONG  ;
  759.                            ulStart :ULONG  ;
  760.                            ulCount :ULONG  ;
  761.                            aulTable:PULONG ) return LONG;
  762. pragma Import(c,GpiAnimatePalette, Link_name=>"_GpiAnimatePalette");
  763.  
  764. function GpiSetPaletteEntries(pal     :HPAL   ;
  765.                               ulFormat:ULONG  ;
  766.                               ulStart :ULONG  ;
  767.                               ulCount :ULONG  ;
  768.                               aulTable:PULONG ) return BOOL;
  769. pragma Import(c,GpiSetPaletteEntries, Link_name=>"_GpiSetPaletteEntries");
  770.  
  771. function GpiQueryPalette(ps:HPS  ) return HPAL;
  772. pragma Import(c,GpiQueryPalette, Link_name=>"_GpiQueryPalette");
  773.  
  774. function GpiQueryPaletteInfo(pal      :HPAL   ;
  775.                              ps       :HPS    ;
  776.                              flOptions:ULONG  ;
  777.                              ulStart  :ULONG  ;
  778.                              ulCount  :ULONG  ;
  779.                              aulArray :PULONG ) return LONG;
  780. pragma Import(c,GpiQueryPaletteInfo, Link_name=>"_GpiQueryPaletteInfo");
  781.  
  782. --     -- default color table indices
  783. --
  784.  CLR_FALSE     :constant Long:=-5 ;
  785.  CLR_TRUE      :constant Long:=-4 ;
  786.  
  787.  CLR_ERROR     :constant Long:=-255 ;
  788.  CLR_DEFAULT   :constant Long:=-3 ;
  789.  CLR_WHITE     :constant Long:=-2 ;
  790.  CLR_BLACK     :constant Long:=-1 ;
  791.  CLR_BACKGROUND:constant Long:=  0;
  792.  CLR_BLUE      :constant Long:=  1;
  793.  CLR_RED       :constant Long:=  2;
  794.  CLR_PINK      :constant Long:=  3;
  795.  CLR_GREEN     :constant Long:=  4;
  796.  CLR_CYAN      :constant Long:=  5;
  797.  CLR_YELLOW    :constant Long:=  6;
  798.  CLR_NEUTRAL   :constant Long:=  7;
  799.  
  800.  CLR_DARKGRAY  :constant Long:=  8;
  801.  CLR_DARKBLUE  :constant Long:=  9;
  802.  CLR_DARKRED   :constant Long:= 10;
  803.  CLR_DARKPINK  :constant Long:= 11;
  804.  CLR_DARKGREEN :constant Long:= 12;
  805.  CLR_DARKCYAN  :constant Long:= 13;
  806.  CLR_BROWN     :constant Long:= 14;
  807.  CLR_PALEGRAY  :constant Long:= 15;
  808.  
  809. -- rgb colors
  810.  RGB_ERROR         :constant  Long:=          (-255);
  811.  RGB_BLACK   :constant  Long:=           16#00000000#;
  812.  RGB_BLUE    :constant  Long:=           16#000000FF#;
  813.  RGB_GREEN   :constant  Long:=           16#0000FF00#;
  814.  RGB_CYAN    :constant  Long:=           16#0000FFFF#;
  815.  RGB_RED     :constant  Long:=           16#00FF0000#;
  816.  RGB_PINK    :constant  Long:=           16#00FF00FF#;
  817.  RGB_YELLOW  :constant  Long:=           16#00FFFF00#;
  818.  RGB_WHITE   :constant  Long:=           16#00FFFFF#;
  819.  
  820. -- control flags used by GpiBeginArea
  821.  BA_NOBOUNDARY :constant  Long:=                 0 ;
  822.  BA_BOUNDARY   :constant  Long:=             16#0001#;
  823.  
  824.  
  825.  BA_ALTERNATE  :constant  Long:=                 0 ;
  826.  BA_WINDING    :constant  Long:=             16#0002#;
  827.  
  828.  BA_INCL       :constant  Long:=                 0 ;
  829.  BA_EXCL       :constant  Long:=                 8 ;
  830.  
  831.  
  832. -- fill options for GpiBox/GpiFullArc
  833.  DRO_FILL      :constant  Long:=                 1 ;
  834.  DRO_OUTLINE   :constant  Long:=                 2 ;
  835.  DRO_OUTLINEFILL :constant  Long:=               3 ;
  836.  
  837. -- basic pattern symbols
  838.  PATSYM_ERROR    :constant  Long:=              (-1);
  839.  PATSYM_DEFAULT  :constant  Long:=               0 ;
  840.  PATSYM_DENSE1   :constant  Long:=               1 ;
  841.  PATSYM_DENSE2   :constant  Long:=               2 ;
  842.  PATSYM_DENSE3   :constant  Long:=               3 ;
  843.  PATSYM_DENSE4   :constant  Long:=               4 ;
  844.  PATSYM_DENSE5   :constant  Long:=               5 ;
  845.  PATSYM_DENSE6   :constant  Long:=               6 ;
  846.  PATSYM_DENSE7   :constant  Long:=               7 ;
  847.  PATSYM_DENSE8   :constant  Long:=               8 ;
  848.  PATSYM_VERT     :constant  Long:=               9 ;
  849.  PATSYM_HORIZ    :constant  Long:=               10 ;
  850.  PATSYM_DIAG1    :constant  Long:=               11 ;
  851.  PATSYM_DIAG2    :constant  Long:=               12 ;
  852.  PATSYM_DIAG3    :constant  Long:=               13 ;
  853.  PATSYM_DIAG4    :constant  Long:=               14 ;
  854.  PATSYM_NOSHADE  :constant  Long:=               15 ;
  855.  PATSYM_SOLID    :constant  Long:=               16 ;
  856. --     #ifndef INCL_SAADEFS
  857.  PATSYM_HALFTONE :constant  Long:=               17 ;
  858. --     #endif -- no INCL_SAADEFS
  859.  PATSYM_HATCH     :constant  Long:=              18 ;
  860.  PATSYM_DIAGHATCH :constant  Long:=              19 ;
  861.  PATSYM_BLANK     :constant  Long:=              64 ;
  862.  
  863. -- lcid values for GpiSet/QueryPattern and others
  864.  LCID_ERROR       :constant  Long:=             (-1);
  865.  LCID_DEFAULT     :constant  Long:=              0 ;
  866.  
  867.    --   global primitive functions
  868.  
  869. function GpiSetColor(ps    :HPS  ;
  870.                      lColor:LONG ) return BOOL;
  871. pragma Import(c,GpiSetColor, Link_name=>"_GpiSetColor");
  872.  
  873. function GpiQueryColor( ps:HPS ) return LONG;
  874. pragma Import(c,GpiQueryColor, Link_name=>"_GpiQueryColor");
  875.  
  876. --        --** line primitive functions
  877.  
  878. function GpiBox(ps       :HPS     ;
  879.                 lControl :LONG    ;
  880.                 pptlPoint:PPOINTL ;
  881.                 lHRound  :LONG    ;
  882.                 lVRound  :LONG    ) return LONG;
  883. pragma Import(c,GpiBox, Link_name=>"_GpiBox");
  884.  
  885. function GpiMove(ps       :HPS     ;
  886.                  pptlPoint:PPOINTL ) return BOOL;
  887. pragma Import(c,GpiMove, Link_name=>"_GpiMove");
  888.  
  889. function GpiLine(ps          :HPS     ;
  890.                  pptlEndPoint:PPOINTL ) return LONG;
  891. pragma Import(c,GpiLine, Link_name=>"_GpiLine");
  892.  
  893. function GpiPolyLine(ps        :HPS     ;
  894.                      lCount    :LONG    ;
  895.                      aptlPoints:PPOINTL ) return LONG;
  896. pragma Import(c,GpiPolyLine, Link_name=>"_GpiPolyLine");
  897.  
  898. function GpiPolyLineDisjoint(ps        :HPS     ;
  899.                              lCount    :LONG    ;
  900.                              aptlPoints:PPOINTL ) return LONG;
  901. pragma Import(c,GpiPolyLineDisjoint, Link_name=>"_GpiPolyLineDisjoint");
  902.  
  903. --        --** area primitive functions
  904.  
  905. function GpiSetPattern(ps            :HPS  ;
  906.                        lPatternSymbol:LONG ) return BOOL;
  907. pragma Import(c,GpiSetPattern, Link_name=>"_GpiSetPattern");
  908.  
  909. function GpiQueryPattern( ps :HPS) return LONG;
  910. pragma Import(c,GpiQueryPattern, Link_name=>"_GpiQueryPattern");
  911.  
  912. function GpiBeginArea(ps       :HPS   ;
  913.                       flOptions:ULONG ) return BOOL;
  914. pragma Import(c,GpiBeginArea, Link_name=>"_GpiBeginArea");
  915.  
  916. function GpiEndArea( ps :HPS) return LONG;
  917. pragma Import(c,GpiEndArea, Link_name=>"_GpiEndArea");
  918.  
  919. --        --** character primitive functions
  920.  
  921. function GpiCharString(ps       :HPS  ;
  922.                        lCount   :LONG ;
  923.                        pchString:PCH  ) return LONG;
  924. pragma Import(c,GpiCharString, Link_name=>"_GpiCharString");
  925.  
  926. function GpiCharStringAt(ps       :HPS     ;
  927.                          pptlPoint:PPOINTL ;
  928.                          lCount   :LONG    ;
  929.                          pchString:PCH     ) return LONG;
  930. pragma Import(c,GpiCharStringAt, Link_name=>"_GpiCharStringAt");
  931.  
  932. -- mode for GpiSetAttrMode
  933.  AM_ERROR         :constant  Long:=             (-1);
  934.  AM_PRESERVE      :constant  Long:=              0 ;
  935.  AM_NOPRESERVE    :constant  Long:=              1 ;
  936.  
  937. -- foreground mixes
  938.  FM_ERROR         :constant  Long:=             (-1);
  939.  FM_DEFAULT       :constant  Long:=              0 ;
  940.  FM_OR            :constant  Long:=              1 ;
  941.  FM_OVERPAINT     :constant  Long:=              2 ;
  942.  FM_LEAVEALONE    :constant  Long:=              5 ;
  943.  
  944.  FM_XOR           :constant  Long:=              4 ;
  945.  FM_AND           :constant  Long:=              6 ;
  946.  FM_SUBTRACT      :constant  Long:=              7 ;
  947.  FM_MASKSRCNOT    :constant  Long:=              8 ;
  948.  FM_ZERO          :constant  Long:=              9 ;
  949.  FM_NOTMERGESRC   :constant  Long:=              10 ;
  950.  FM_NOTXORSRC     :constant  Long:=              11 ;
  951.  FM_INVERT        :constant  Long:=              12 ;
  952.  FM_MERGESRCNOT   :constant  Long:=              13 ;
  953.  FM_NOTCOPYSRC    :constant  Long:=              14 ;
  954.  FM_MERGENOTSRC   :constant  Long:=              15 ;
  955.  FM_NOTMASKSRC    :constant  Long:=              16 ;
  956.  FM_ONE           :constant  Long:=              17 ;
  957.  
  958. -- background mixes
  959.  BM_ERROR         :constant  Long:=              -1 ;
  960.  BM_DEFAULT       :constant  Long:=              0 ;
  961.  BM_OR            :constant  Long:=              1 ;
  962.  BM_OVERPAINT     :constant  Long:=              2 ;
  963.  BM_LEAVEALONE    :constant  Long:=              5 ;
  964.  
  965.  BM_XOR           :constant  Long:=              4 ;
  966.  BM_AND           :constant  Long:=              6 ;
  967.  BM_SUBTRACT      :constant  Long:=              7 ;
  968.  BM_MASKSRCNOT    :constant  Long:=              8 ;
  969.  BM_ZERO          :constant  Long:=              9 ;
  970.  BM_NOTMERGESRC   :constant  Long:=              10 ;
  971.  BM_NOTXORSRC     :constant  Long:=              11 ;
  972.  BM_INVERT        :constant  Long:=              12 ;
  973.  BM_MERGESRCNOT   :constant  Long:=              13 ;
  974.  BM_NOTCOPYSRC    :constant  Long:=              14 ;
  975.  BM_MERGENOTSRC   :constant  Long:=              15 ;
  976.  BM_NOTMASKSRC    :constant  Long:=              16 ;
  977.  BM_ONE           :constant  Long:=              17 ;
  978.  BM_SRCTRANSPARENT :constant  Long:=             18 ;
  979.  BM_DESTTRANSPARENT:constant  Long:=             19 ;
  980.  
  981. -- basic line type styles
  982.  LINETYPE_ERROR    :constant  Long:=             -1;
  983.  LINETYPE_DEFAULT  :constant  Long:=             0 ;
  984.  LINETYPE_DOT      :constant  Long:=             1 ;
  985.  LINETYPE_SHORTDASH :constant  Long:=            2 ;
  986.  LINETYPE_DASHDOT   :constant  Long:=            3 ;
  987.  LINETYPE_DOUBLEDOT :constant  Long:=            4 ;
  988.  LINETYPE_LONGDASH  :constant  Long:=            5 ;
  989.  LINETYPE_DASHDOUBLEDOT :constant  Long:=        6 ;
  990.  LINETYPE_SOLID         :constant  Long:=        7 ;
  991.  LINETYPE_INVISIBLE     :constant  Long:=        8 ;
  992. --     #ifndef INCL_SAADEFS
  993.  LINETYPE_ALTERNATE  :constant  Long:=           9 ;
  994. --     #endif -- no INCL_SAADEFS
  995.  
  996. -- cosmetic line widths
  997.  LINEWIDTH_ERROR     :constant  Long:=           -1 ;
  998.  LINEWIDTH_DEFAULT   :constant  Long:=           0 ;
  999.  LINEWIDTH_NORMAL    :constant  Long:=   16#00010000#;   -- MAKEFIXED(1;0)
  1000.  LINEWIDTH_THICK     :constant  Long:=   16#00020000#;   -- MAKEFIXED(2;0)
  1001.  
  1002. -- actual line widths
  1003.  LINEWIDTHGEOM_ERROR :constant  Long:=           -1 ;
  1004.  
  1005. -- line end styles
  1006.  LINEEND_ERROR       :constant  Long:=           -1 ;
  1007.  LINEEND_DEFAULT     :constant  Long:=           0 ;
  1008.  LINEEND_FLAT        :constant  Long:=           1 ;
  1009.  LINEEND_SQUARE      :constant  Long:=           2 ;
  1010.  LINEEND_ROUND       :constant  Long:=           3 ;
  1011.  
  1012. -- line join styles
  1013.  LINEJOIN_ERROR      :constant  Long:=          (-1);
  1014.  LINEJOIN_DEFAULT    :constant  Long:=           0 ;
  1015.  LINEJOIN_BEVEL      :constant  Long:=           1 ;
  1016.  LINEJOIN_ROUND      :constant  Long:=           2 ;
  1017.  LINEJOIN_MITRE      :constant  Long:=           3 ;
  1018.  
  1019. -- character directions
  1020.  CHDIRN_ERROR        :constant  Long:=          (-1);
  1021.  CHDIRN_DEFAULT      :constant  Long:=           0 ;
  1022.  CHDIRN_LEFTRIGHT    :constant  Long:=           1 ;
  1023.  CHDIRN_TOPBOTTOM    :constant  Long:=           2 ;
  1024.  CHDIRN_RIGHTLEFT    :constant  Long:=           3 ;
  1025.  CHDIRN_BOTTOMTOP    :constant  Long:=           4 ;
  1026.  
  1027. -- character text alignments
  1028.  TA_NORMAL_HORIZ     :constant  Long:=16#0001#;
  1029.  TA_LEFT             :constant  Long:=16#0002#;
  1030.  TA_CENTER           :constant  Long:=16#0003#;
  1031.  TA_RIGHT            :constant  Long:=16#0004#;
  1032.  TA_STANDARD_HORIZ   :constant  Long:=16#0005#;
  1033.  TA_NORMAL_VERT      :constant  Long:=16#0100#;
  1034.  TA_TOP              :constant  Long:=16#0200#;
  1035.  TA_HALF             :constant  Long:=16#0300#;
  1036.  TA_BASE             :constant  Long:=16#0400#;
  1037.  TA_BOTTOM           :constant  Long:=16#0500#;
  1038.  TA_STANDARD_VERT    :constant  Long:=16#0600#;
  1039.  
  1040. -- character modes
  1041.  CM_ERROR            :constant  Long:=          (-1);
  1042.  CM_DEFAULT          :constant  Long:=           0 ;
  1043.  CM_MODE1            :constant  Long:=           1 ;
  1044.  CM_MODE2            :constant  Long:=           2 ;
  1045.  CM_MODE3            :constant  Long:=           3 ;
  1046.  
  1047. -- basic marker symbols
  1048.  MARKSYM_ERROR         :constant  Long:=        (-1);
  1049.  MARKSYM_DEFAULT       :constant  Long:=         0 ;
  1050.  MARKSYM_CROSS         :constant  Long:=         1 ;
  1051.  MARKSYM_PLUS          :constant  Long:=         2 ;
  1052.  MARKSYM_DIAMOND       :constant  Long:=         3 ;
  1053.  MARKSYM_SQUARE        :constant  Long:=         4 ;
  1054.  MARKSYM_SIXPOINTSTAR  :constant  Long:=         5 ;
  1055.  MARKSYM_EIGHTPOINTSTAR:constant  Long:=         6 ;
  1056.  MARKSYM_SOLIDDIAMOND  :constant  Long:=         7 ;
  1057.  MARKSYM_SOLIDSQUARE   :constant  Long:=         8 ;
  1058.  MARKSYM_DOT           :constant  Long:=         9 ;
  1059.  MARKSYM_SMALLCIRCLE   :constant  Long:=         10 ;
  1060.  MARKSYM_BLANK         :constant  Long:=         64 ;
  1061.  
  1062. -- formatting options for GpiCharStringPosAt
  1063.  CHS_OPAQUE          :constant  Long:=       16#0001#;
  1064.  CHS_VECTOR          :constant  Long:=       16#0002#;
  1065.  CHS_LEAVEPOS        :constant  Long:=       16#0008#;
  1066.  CHS_CLIP            :constant  Long:=       16#0010#;
  1067.  CHS_UNDERSCORE      :constant  Long:=       16#0200#;
  1068.  CHS_STRIKEOUT       :constant  Long:=       16#0400#;
  1069.  
  1070. -- bundle codes for GpiSetAttributes and GpiQueryAttributes
  1071.  PRIM_LINE           :constant  Long:=           1 ;
  1072.  PRIM_CHAR           :constant  Long:=           2 ;
  1073.  PRIM_MARKER         :constant  Long:=           3 ;
  1074.  PRIM_AREA           :constant  Long:=           4 ;
  1075.  PRIM_IMAGE          :constant  Long:=           5 ;
  1076.  
  1077. -- line bundle mask bits
  1078.  LBB_COLOR           :constant  Long:=       16#0001#;
  1079.  LBB_BACK_COLOR      :constant  Long:=       16#0002#;
  1080.  LBB_MIX_MODE        :constant  Long:=       16#0004#;
  1081.  LBB_BACK_MIX_MODE   :constant  Long:=       16#0008#;
  1082.  LBB_WIDTH           :constant  Long:=       16#0010#;
  1083.  LBB_GEOM_WIDTH      :constant  Long:=       16#0020#;
  1084.  LBB_TYPE            :constant  Long:=       16#0040#;
  1085.  LBB_END             :constant  Long:=       16#0080#;
  1086.  LBB_JOIN            :constant  Long:=       16#0100#;
  1087.  
  1088. -- character bundle mask bits
  1089.  CBB_COLOR           :constant  Long:=       16#0001#;
  1090.  CBB_BACK_COLOR      :constant  Long:=       16#0002#;
  1091.  CBB_MIX_MODE        :constant  Long:=       16#0004#;
  1092.  CBB_BACK_MIX_MODE   :constant  Long:=       16#0008#;
  1093.  CBB_SET             :constant  Long:=       16#0010#;
  1094.  CBB_MODE            :constant  Long:=       16#0020#;
  1095.  CBB_BOX             :constant  Long:=       16#0040#;
  1096.  CBB_ANGLE           :constant  Long:=       16#0080#;
  1097.  CBB_SHEAR           :constant  Long:=       16#0100#;
  1098.  CBB_DIRECTION       :constant  Long:=       16#0200#;
  1099.  CBB_TEXT_ALIGN      :constant  Long:=       16#0400#;
  1100.  CBB_EXTRA           :constant  Long:=       16#0800#;
  1101.  CBB_BREAK_EXTRA     :constant  Long:=       16#1000#;
  1102.  
  1103. -- marker bundle mask bits
  1104.  MBB_COLOR           :constant  Long:=       16#0001#;
  1105.  MBB_BACK_COLOR      :constant  Long:=       16#0002#;
  1106.  MBB_MIX_MODE        :constant  Long:=       16#0004#;
  1107.  MBB_BACK_MIX_MODE   :constant  Long:=       16#0008#;
  1108.  MBB_SET             :constant  Long:=       16#0010#;
  1109.  MBB_SYMBOL          :constant  Long:=       16#0020#;
  1110.  MBB_BOX             :constant  Long:=       16#0040#;
  1111.  
  1112. -- pattern bundle mask bits
  1113.  ABB_COLOR           :constant  Long:=       16#0001#;
  1114.  ABB_BACK_COLOR      :constant  Long:=       16#0002#;
  1115.  ABB_MIX_MODE        :constant  Long:=       16#0004#;
  1116.  ABB_BACK_MIX_MODE   :constant  Long:=       16#0008#;
  1117.  ABB_SET             :constant  Long:=       16#0010#;
  1118.  ABB_SYMBOL          :constant  Long:=       16#0020#;
  1119.  ABB_REF_POINT       :constant  Long:=       16#0040#;
  1120.  
  1121. -- image bundle mask bits
  1122.  IBB_COLOR           :constant  Long:=       16#0001#;
  1123.  IBB_BACK_COLOR      :constant  Long:=       16#0002#;
  1124.  IBB_MIX_MODE        :constant  Long:=       16#0004#;
  1125.  IBB_BACK_MIX_MODE   :constant  Long:=       16#0008#;
  1126.  
  1127. --      structure for GpiSetArcParams and GpiQueryArcParams
  1128.  
  1129. type ARCPARAMS    is record      -- arcp
  1130.    lP    :LONG ;
  1131.    lQ    :LONG ;
  1132.    lR    :LONG ;
  1133.    lS    :LONG ;
  1134. end record; -- ARCPARAMS;
  1135. type PARCPARAMS  is access all ARCPARAMS;
  1136.  
  1137. --      variation of SIZE used for:FIXEDs
  1138. type SIZEF      is record      -- sizfx
  1139.    cx    :LONG ;
  1140.    cy    :LONG ;
  1141. end record; -- SIZEF;
  1142. type PSIZEF  is access all SIZEF;
  1143.  
  1144. --     structure for gradient parameters e.g. for GpiSetCharAngle
  1145. type GRADIENTL   is record       -- gradl
  1146.     x   :LONG ;
  1147.     y   :LONG ;
  1148. end record; -- GRADIENTL;
  1149. type PGRADIENTL  is access all GRADIENTL;
  1150.  
  1151. --      line bundle for GpiSetAttributes and GpiQueryAttributes
  1152. type LINEBUNDLE  is record       -- lbnd
  1153.     lColor          :LONG    ;
  1154.     lBackColor      :LONG    ;
  1155.     usMixMode       :USHORT  ;
  1156.     usBackMixMode   :USHORT  ;
  1157.     fxWidth         :LONG    ;
  1158.     lGeomWidth      :LONG    ;
  1159.     usType          :USHORT  ;
  1160.     usEnd           :USHORT  ;
  1161.     usJoin          :USHORT  ;
  1162.     usReserved      :USHORT  ;
  1163. end record; -- LINEBUNDLE;
  1164. type PLINEBUNDLE  is access all LINEBUNDLE;
  1165.  
  1166. --     character bundle for GpiSetAttributes and GpiQueryAttributes
  1167. type CHARBUNDLE  is record       -- cbnd
  1168.   lColor           :LONG      ;
  1169.   lBackColor       :LONG      ;
  1170.   usMixMode        :USHORT    ;
  1171.   usBackMixMode    :USHORT    ;
  1172.   usSet            :USHORT    ;
  1173.   usPrecision      :USHORT    ;
  1174.   sizfxCell        :SIZEF     ;
  1175.   ptlAngle         :POINTL    ;
  1176.   ptlShear         :POINTL    ;
  1177.   usDirection      :USHORT    ;
  1178.   usTextAlign      :USHORT    ;
  1179.   fxExtra          :LONG      ;
  1180.   fxBreakExtra     :LONG      ;
  1181. end record; -- CHARBUNDLE ;
  1182. type PCHARBUNDLE  is access all CHARBUNDLE;
  1183.  
  1184. --     marker bundle for GpiSetAttributes and GpiQueryAttributes
  1185. type MARKERBUNDLE  is record     -- mbnd
  1186.     lColor          :LONG   ;
  1187.     lBackColor      :LONG   ;
  1188.     usMixMode       :USHORT ;
  1189.     usBackMixMode   :USHORT ;
  1190.     usSet           :USHORT ;
  1191.     usSymbol        :USHORT ;
  1192.     sizfxCell       :SIZEF  ;
  1193. end record; -- MARKERBUNDLE;
  1194. type PMARKERBUNDLE  is access all MARKERBUNDLE;
  1195.  
  1196. --     -- pattern bundle for GpiSetAttributes and GpiQueryAttributes
  1197. type AREABUNDLE  is record    -- pbnd
  1198.     lColor          :LONG   ;
  1199.     lBackColor      :LONG   ;
  1200.     usMixMode       :USHORT ;
  1201.     usBackMixMode   :USHORT ;
  1202.     usSet           :USHORT ;
  1203.     usSymbol        :USHORT ;
  1204.     ptlRefPoint     :POINTL ;
  1205. end record; -- AREABUNDLE;
  1206. type PAREABUNDLE  is access all AREABUNDLE;
  1207.  
  1208. --     image bundle for GpiSetAttributes and GpiQueryAttributes
  1209. type IMAGEBUNDLE  is record      -- ibmd
  1210.   lColor           :LONG   ;
  1211.   lBackColor       :LONG   ;
  1212.   usMixMode        :USHORT ;
  1213.   usBackMixMode    :USHORT ;
  1214. end record; -- IMAGEBUNDLE;
  1215. type PIMAGEBUNDLE  is access all IMAGEBUNDLE;
  1216.  
  1217. --     pointer to any bundle used by GpiSet/QueryAttrs
  1218. subtype PBUNDLE is  PVOID;
  1219.  
  1220. --     array indices for GpiQueryTextBox
  1221.  TXTBOX_TOPLEFT      :constant  Long:=           0 ;
  1222.  TXTBOX_BOTTOMLEFT   :constant  Long:=           1 ;
  1223.  TXTBOX_TOPRIGHT     :constant  Long:=           2 ;
  1224.  TXTBOX_BOTTOMRIGHT  :constant  Long:=           3 ;
  1225.  TXTBOX_CONCAT       :constant  Long:=           4 ;
  1226. -- array count for GpiQueryTextBox
  1227.  TXTBOX_COUNT        :constant  Long:=           5 ;
  1228.  
  1229. -- return codes for GpiPtVisible
  1230.  PVIS_ERROR          :constant  Long:=           0 ;
  1231.  PVIS_INVISIBLE      :constant  Long:=           1 ;
  1232.  PVIS_VISIBLE        :constant  Long:=           2 ;
  1233.  
  1234. -- return codes for GpiRectVisible
  1235.  RVIS_ERROR          :constant  Long:=           0 ;
  1236.  RVIS_INVISIBLE      :constant  Long:=           1 ;
  1237.  RVIS_PARTIAL        :constant  Long:=           2 ;
  1238.  RVIS_VISIBLE        :constant  Long:=           3 ;
  1239.  
  1240. --         attribute mode functions
  1241.  
  1242. function GpiSetAttrMode(ps   :HPS  ;
  1243.                         lMode:LONG ) return BOOL;
  1244. pragma Import(c,GpiSetAttrMode, Link_name=>"_GpiSetAttrMode");
  1245.  
  1246. function GpiQueryAttrMode(ps :HPS ) return LONG;
  1247. pragma Import(c,GpiQueryAttrMode, Link_name=>"_GpiQueryAttrMode");
  1248.  
  1249. --        bundle primitive functions
  1250.  
  1251. function GpiSetAttrs(ps        :HPS     ;
  1252.                      lPrimType :LONG    ;
  1253.                      flAttrMask:ULONG   ;
  1254.                      flDefMask :ULONG   ;
  1255.                      ppbunAttrs:PBUNDLE ) return BOOL;
  1256. pragma Import(c,GpiSetAttrs, Link_name=>"_GpiSetAttrs");
  1257.  
  1258. function GpiQueryAttrs(ps        :HPS     ;
  1259.                        lPrimType :LONG    ;
  1260.                        flAttrMask:ULONG   ;
  1261.                        ppbunAttrs:PBUNDLE ) return LONG;
  1262. pragma Import(c,GpiQueryAttrs, Link_name=>"_GpiQueryAttrs");
  1263.  
  1264. --        -- global primitive functions
  1265.  
  1266. function GpiSetBackColor(ps    :HPS  ;
  1267.                          lColor:LONG ) return BOOL;
  1268. pragma Import(c,GpiSetBackColor, Link_name=>"_GpiSetBackColor");
  1269.  
  1270. function GpiQueryBackColor(ps:HPS  ) return LONG;
  1271. pragma Import(c,GpiQueryBackColor, Link_name=>"_GpiQueryBackColor");
  1272.  
  1273. function GpiSetMix(ps      :HPS  ;
  1274.                    lMixMode:LONG ) return BOOL;
  1275. pragma Import(c,GpiSetMix, Link_name=>"_GpiSetMix");
  1276.  
  1277. function GpiQueryMix(ps:HPS) return LONG;
  1278. pragma Import(c,GpiQueryMix, Link_name=>"_GpiQueryMix");
  1279.  
  1280. function GpiSetBackMix(ps      :HPS  ;
  1281.                        lMixMode:LONG ) return BOOL;
  1282. pragma Import(c,GpiSetBackMix, Link_name=>"_GpiSetBackMix");
  1283.  
  1284. function GpiQueryBackMix(ps:HPS) return LONG;
  1285. pragma Import(c,GpiQueryBackMix, Link_name=>"_GpiQueryBackMix");
  1286.  
  1287. --         line primitive functions
  1288.  
  1289. function GpiSetLineType(ps       :HPS  ;
  1290.                         lLineType:LONG ) return BOOL;
  1291. pragma Import(c,GpiSetLineType, Link_name=>"_GpiSetLineType");
  1292.  
  1293. function GpiQueryLineType(ps:HPS) return LONG;
  1294. pragma Import(c,GpiQueryLineType, Link_name=>"_GpiQueryLineType");
  1295.  
  1296. function GpiSetLineWidth(ps         :HPS  ;
  1297.                          fxLineWidth:LONG ) return BOOL;
  1298. pragma Import(c,GpiSetLineWidth, Link_name=>"_GpiSetLineWidth");
  1299.  
  1300. function GpiQueryLineWidth(ps:HPS) return LONG;
  1301. pragma Import(c,GpiQueryLineWidth, Link_name=>"_GpiQueryLineWidth");
  1302.  
  1303. function GpiSetLineWidthGeom(ps        :HPS  ;
  1304.                              lLineWidth:LONG ) return BOOL;
  1305. pragma Import(c,GpiSetLineWidthGeom, Link_name=>"_GpiSetLineWidthGeom");
  1306.  
  1307. function GpiQueryLineWidthGeom(ps:HPS) return LONG;
  1308. pragma Import(c,GpiQueryLineWidthGeom, Link_name=>"_GpiQueryLineWidthGeom");
  1309.  
  1310. function GpiSetLineEnd(ps      :HPS  ;
  1311.                        lLineEnd:LONG ) return BOOL;
  1312. pragma Import(c,GpiSetLineEnd, Link_name=>"_GpiSetLineEnd");
  1313.  
  1314. function GpiQueryLineEnd(ps:HPS) return LONG;
  1315. pragma Import(c,GpiQueryLineEnd, Link_name=>"_GpiQueryLineEnd");
  1316.  
  1317. function GpiSetLineJoin(ps       :HPS  ;
  1318.                         lLineJoin:LONG ) return BOOL;
  1319. pragma Import(c,GpiSetLineJoin, Link_name=>"_GpiSetLineJoin");
  1320.  
  1321. function GpiQueryLineJoin(ps:HPS) return LONG;
  1322. pragma Import(c,GpiQueryLineJoin, Link_name=>"_GpiQueryLineJoin");
  1323.  
  1324. function GpiSetCurrentPosition(ps       :HPS     ;
  1325.                                pptlPoint:PPOINTL ) return BOOL;
  1326. pragma Import(c,GpiSetCurrentPosition, Link_name=>"_GpiSetCurrentPosition");
  1327.  
  1328. function GpiQueryCurrentPosition(ps       :HPS     ;
  1329.                                  pptlPoint:PPOINTL ) return BOOL;
  1330. pragma Import(c,GpiQueryCurrentPosition, Link_name=>"_GpiQueryCurrentPosition");
  1331.  
  1332. --         arc primitive functions
  1333.  
  1334. function GpiSetArcParams(ps            :HPS        ;
  1335.                          parcpArcParams:PARCPARAMS ) return BOOL;
  1336. pragma Import(c,GpiSetArcParams, Link_name=>"_GpiSetArcParams");
  1337.  
  1338. function GpiQueryArcParams(ps            :HPS        ;
  1339.                            parcpArcParams:PARCPARAMS ) return BOOL;
  1340. pragma Import(c,GpiQueryArcParams, Link_name=>"_GpiQueryArcParams");
  1341.  
  1342. function GpiPointArc(ps   :HPS     ;
  1343.                      pptl2:PPOINTL ) return LONG;
  1344. pragma Import(c,GpiPointArc, Link_name=>"_GpiPointArc");
  1345.  
  1346. function GpiFullArc(ps          :HPS  ;
  1347.                     lControl    :LONG ;
  1348.                     fxMultiplier:LONG ) return LONG;
  1349. pragma Import(c,GpiFullArc, Link_name=>"_GpiFullArc");
  1350.  
  1351. function GpiPartialArc(ps          :HPS     ;
  1352.                        pptlCenter  :PPOINTL ;
  1353.                        fxMultiplier:LONG    ;
  1354.                        fxStartAngle:LONG    ;
  1355.                        fxSweepAngle:LONG    ) return LONG;
  1356. pragma Import(c,GpiPartialArc, Link_name=>"_GpiPartialArc");
  1357.  
  1358. function GpiPolyFillet(ps        :HPS     ;
  1359.                        lCount    :LONG    ;
  1360.                        aptlPoints:PPOINTL ) return LONG;
  1361. pragma Import(c,GpiPolyFillet, Link_name=>"_GpiPolyFillet");
  1362.  
  1363. function GpiPolySpline(ps        :HPS     ;
  1364.                        lCount    :LONG    ;
  1365.                        aptlPoints:PPOINTL ) return LONG;
  1366. pragma Import(c,GpiPolySpline, Link_name=>"_GpiPolySpline");
  1367.  
  1368. function GpiPolyFilletSharp(ps        :HPS     ;
  1369.                             lCount    :LONG    ;
  1370.                             aptlPoints:PPOINTL ;
  1371.                             afxPoints :PLONG   ) return LONG;
  1372. pragma Import(c,GpiPolyFilletSharp, Link_name=>"_GpiPolyFilletSharp");
  1373.  
  1374. --         area primitive functions
  1375.  
  1376. function GpiSetPatternSet(ps  :HPS  ;
  1377.                           lSet:LONG ) return BOOL;
  1378. pragma Import(c,GpiSetPatternSet, Link_name=>"_GpiSetPatternSet");
  1379.  
  1380. function GpiQueryPatternSet(ps:HPS) return LONG;
  1381. pragma Import(c,GpiQueryPatternSet, Link_name=>"_GpiQueryPatternSet");
  1382.  
  1383. function GpiSetPatternRefPoint(ps          :HPS     ;
  1384.                                pptlRefPoint:PPOINTL ) return BOOL;
  1385. pragma Import(c,GpiSetPatternRefPoint, Link_name=>"_GpiSetPatternRefPoint");
  1386.  
  1387. function GpiQueryPatternRefPoint(ps          :HPS     ;
  1388.                                  pptlRefPoint:PPOINTL ) return BOOL;
  1389. pragma Import(c,GpiQueryPatternRefPoint, Link_name=>"_GpiQueryPatternRefPoint");
  1390.  
  1391. --        character primitive functions
  1392.  
  1393. function GpiQueryCharStringPos(ps           :HPS     ;
  1394.                                flOptions    :ULONG   ;
  1395.                                lCount       :LONG    ;
  1396.                                pchString    :PCH     ;
  1397.                                alXincrements:PLONG   ;
  1398.                                aptlPositions:PPOINTL ) return BOOL;
  1399. pragma Import(c,GpiQueryCharStringPos, Link_name=>"_GpiQueryCharStringPos");
  1400.  
  1401. function GpiQueryCharStringPosAt(ps           :HPS     ;
  1402.                                  pptlStart    :PPOINTL ;
  1403.                                  flOptions    :ULONG   ;
  1404.                                  lCount       :LONG    ;
  1405.                                  pchString    :PCH     ;
  1406.                                  alXincrements:PLONG   ;
  1407.                                  aptlPositions:PPOINTL ) return BOOL;
  1408. pragma Import(c,GpiQueryCharStringPosAt, Link_name=>"_GpiQueryCharStringPosAt");
  1409.  
  1410. function GpiQueryTextBox(ps        :HPS     ;
  1411.                          lCount1   :LONG    ;
  1412.                          pchString :PCH     ;
  1413.                          lCount2   :LONG    ;
  1414.                          aptlPoints:PPOINTL ) return BOOL;
  1415. pragma Import(c,GpiQueryTextBox, Link_name=>"_GpiQueryTextBox");
  1416.  
  1417. function GpiQueryDefCharBox(ps       :HPS    ;
  1418.                             psizlSize:PSIZEL ) return BOOL;
  1419. pragma Import(c,GpiQueryDefCharBox, Link_name=>"_GpiQueryDefCharBox");
  1420.  
  1421. function GpiSetCharSet(ps   :HPS  ;
  1422.                        llcid:LONG ) return BOOL;
  1423. pragma Import(c,GpiSetCharSet, Link_name=>"_GpiSetCharSet");
  1424.  
  1425. function GpiQueryCharSet(ps:HPS) return LONG;
  1426. pragma Import(c,GpiQueryCharSet, Link_name=>"_GpiQueryCharSet");
  1427.  
  1428. function GpiSetCharBox(ps       :HPS    ;
  1429.                        psizfxBox:PSIZEF ) return BOOL;
  1430. pragma Import(c,GpiSetCharBox, Link_name=>"_GpiSetCharBox");
  1431.  
  1432. function GpiQueryCharBox(ps        :HPS    ;
  1433.                          psizfxSize:PSIZEF ) return BOOL;
  1434. pragma Import(c,GpiQueryCharBox, Link_name=>"_GpiQueryCharBox");
  1435.  
  1436. function GpiSetCharAngle(ps         :HPS        ;
  1437.                          pgradlAngle:PGRADIENTL ) return BOOL;
  1438. pragma Import(c,GpiSetCharAngle, Link_name=>"_GpiSetCharAngle");
  1439.  
  1440. function GpiQueryCharAngle(ps         :HPS        ;
  1441.                            pgradlAngle:PGRADIENTL ) return BOOL;
  1442. pragma Import(c,GpiQueryCharAngle, Link_name=>"_GpiQueryCharAngle");
  1443.  
  1444. function GpiSetCharShear(ps       :HPS     ;
  1445.                          pptlAngle:PPOINTL ) return BOOL;
  1446. pragma Import(c,GpiSetCharShear, Link_name=>"_GpiSetCharShear");
  1447.  
  1448. function GpiQueryCharShear(ps       :HPS     ;
  1449.                            pptlShear:PPOINTL ) return BOOL;
  1450. pragma Import(c,GpiQueryCharShear, Link_name=>"_GpiQueryCharShear");
  1451.  
  1452. function GpiSetCharDirection(ps        :HPS  ;
  1453.                              lDirection:LONG ) return BOOL;
  1454. pragma Import(c,GpiSetCharDirection, Link_name=>"_GpiSetCharDirection");
  1455.  
  1456. function GpiQueryCharDirection(ps:HPS) return LONG;
  1457. pragma Import(c,GpiQueryCharDirection, Link_name=>"_GpiQueryCharDirection");
  1458.  
  1459. function GpiSetCharMode(ps   :HPS  ;
  1460.                         lMode:LONG ) return BOOL;
  1461. pragma Import(c,GpiSetCharMode, Link_name=>"_GpiSetCharMode");
  1462.  
  1463. function GpiQueryCharMode(ps:HPS) return LONG;
  1464. pragma Import(c,GpiQueryCharMode, Link_name=>"_GpiQueryCharMode");
  1465.  
  1466. function GpiSetTextAlignment(ps    :HPS  ;
  1467.                              lHoriz:LONG ;
  1468.                              lVert :LONG ) return BOOL;
  1469. pragma Import(c,GpiSetTextAlignment, Link_name=>"_GpiSetTextAlignment");
  1470.  
  1471. function GpiQueryTextAlignment(ps     :HPS   ;
  1472.                                plHoriz:PLONG ;
  1473.                                plVert :PLONG ) return BOOL;
  1474. pragma Import(c,GpiQueryTextAlignment, Link_name=>"_GpiQueryTextAlignment");
  1475.  
  1476. function GpiCharStringPos(ps       :HPS    ;
  1477.                           prclRect :PRECTL ;
  1478.                           flOptions:ULONG  ;
  1479.                           lCount   :LONG   ;
  1480.                           pchString:PCH    ;
  1481.                           alAdx    :PLONG  ) return LONG;
  1482. pragma Import(c,GpiCharStringPos, Link_name=>"_GpiCharStringPos");
  1483.  
  1484. function GpiCharStringPosAt(ps       :HPS     ;
  1485.                             pptlStart:PPOINTL ;
  1486.                             prclRect :PRECTL  ;
  1487.                             flOptions:ULONG   ;
  1488.                             lCount   :LONG    ;
  1489.                             pchString:PCH     ;
  1490.                             alAdx    :PLONG   ) return LONG;
  1491. pragma Import(c,GpiCharStringPosAt, Link_name=>"_GpiCharStringPosAt");
  1492.  
  1493. function GpiSetCharExtra(ps   :HPS   ;
  1494.                          Extra:LONG  ) return BOOL;
  1495. pragma Import(c,GpiSetCharExtra, Link_name=>"_GpiSetCharExtra");
  1496.  
  1497. function GpiSetCharBreakExtra(ps        :HPS   ;
  1498.                               BreakExtra:LONG  ) return BOOL;
  1499. pragma Import(c,GpiSetCharBreakExtra, Link_name=>"_GpiSetCharBreakExtra");
  1500.  
  1501. function GpiQueryCharExtra(ps   :HPS   ;
  1502.                            Extra:PLONG ) return BOOL;
  1503. pragma Import(c,GpiQueryCharExtra, Link_name=>"_GpiQueryCharExtra");
  1504.  
  1505. function GpiQueryCharBreakExtra(ps        :HPS   ;
  1506.                                 BreakExtra:PLONG ) return BOOL;
  1507. pragma Import(c,GpiQueryCharBreakExtra, Link_name=>"_GpiQueryCharBreakExtra");
  1508.  
  1509. --         marker primitive functions
  1510.  
  1511. function GpiMarker(ps       :HPS     ;
  1512.                    pptlPoint:PPOINTL ) return LONG;
  1513. pragma Import(c,GpiMarker, Link_name=>"_GpiMarker");
  1514.  
  1515. function GpiPolyMarker(ps        :HPS     ;
  1516.                        lCount    :LONG    ;
  1517.                        aptlPoints:PPOINTL ) return LONG;
  1518. pragma Import(c,GpiPolyMarker, Link_name=>"_GpiPolyMarker");
  1519.  
  1520. function GpiSetMarker(ps     :HPS  ;
  1521.                       lSymbol:LONG ) return BOOL;
  1522. pragma Import(c,GpiSetMarker, Link_name=>"_GpiSetMarker");
  1523.  
  1524. function GpiSetMarkerBox(ps        :HPS    ;
  1525.                          psizfxSize:PSIZEF ) return BOOL;
  1526. pragma Import(c,GpiSetMarkerBox, Link_name=>"_GpiSetMarkerBox");
  1527.  
  1528. function GpiSetMarkerSet(ps  :HPS  ;
  1529.                          lSet:LONG ) return BOOL;
  1530. pragma Import(c,GpiSetMarkerSet, Link_name=>"_GpiSetMarkerSet");
  1531.  
  1532. function GpiQueryMarker(ps:HPS) return LONG;
  1533. pragma Import(c,GpiQueryMarker, Link_name=>"_GpiQueryMarker");
  1534.  
  1535. function GpiQueryMarkerBox(ps        :HPS    ;
  1536.                            psizfxSize:PSIZEF ) return BOOL;
  1537. pragma Import(c,GpiQueryMarkerBox, Link_name=>"_GpiQueryMarkerBox");
  1538.  
  1539. function GpiQueryMarkerSet(ps:HPS) return LONG;
  1540. pragma Import(c,GpiQueryMarkerSet, Link_name=>"_GpiQueryMarkerSet");
  1541.  
  1542. --         image primitive functions
  1543.  
  1544. function GpiImage(ps            :HPS    ;
  1545.                   lFormat       :LONG   ;
  1546.                   psizlImageSize:PSIZEL ;
  1547.                   lLength       :LONG   ;
  1548.                   pbData        :PBYTE  ) return LONG;
  1549. pragma Import(c,GpiImage, Link_name=>"_GpiImage");
  1550.  
  1551. --         miscellaneous primitive functions
  1552.  
  1553. function GpiPop(ps    :HPS  ;
  1554.                 lCount:LONG ) return BOOL;
  1555. pragma Import(c,GpiPop, Link_name=>"_GpiPop");
  1556.  
  1557. function GpiPtVisible(ps       :HPS     ;
  1558.                       pptlPoint:PPOINTL ) return LONG;
  1559. pragma Import(c,GpiPtVisible, Link_name=>"_GpiPtVisible");
  1560.  
  1561. function GpiRectVisible(ps           :HPS    ;
  1562.                         prclRectangle:PRECTL ) return LONG;
  1563. pragma Import(c,GpiRectVisible, Link_name=>"_GpiRectVisible");
  1564.  
  1565. function GpiComment(ps     :HPS   ;
  1566.                     lLength:LONG  ;
  1567.                     pbData :PBYTE ) return BOOL;
  1568. pragma Import(c,GpiComment, Link_name=>"_GpiComment");
  1569.  
  1570. -- return codes from GpiCreateLogFont
  1571.  FONT_DEFAULT        :constant  Long:=           1 ;
  1572.  FONT_MATCH          :constant  Long:=           2 ;
  1573.  
  1574. -- lcid type for GpiQuerySetIds
  1575.  LCIDT_FONT          :constant  Long:=           6 ;
  1576.  
  1577.  LCIDT_BITMAP        :constant  Long:=           7 ;
  1578.  
  1579. -- constant used to delete all lcids by GpiDeleteSetId
  1580.  LCID_ALL            :constant  Long:=          (-1);
  1581.  
  1582. --      kerning data returned by GpiQueryKerningPairs
  1583. type KERNINGPAIRS  is record     -- krnpr
  1584.     sFirstChar       :SHORT ;
  1585.     sSecondChar      :SHORT ;
  1586.     lKerningAmount   :LONG  ;
  1587. end record; -- KERNINGPAIRS;
  1588. type PKERNINGPAIRS  is access all KERNINGPAIRS;
  1589.  
  1590. --     data required by GpiQueryFaceString
  1591. type FACENAMEDESC  is record     -- fnd
  1592.     usSize          :USHORT ;
  1593.     usWeightClass   :USHORT ;
  1594.     usWidthClass    :USHORT ;
  1595.     usReserved      :USHORT ;
  1596.     flOptions       :ULONG  ;
  1597. end record; -- FACENAMEDESC;
  1598. type PFACENAMEDESC  is access all FACENAMEDESC;
  1599.  
  1600. -- FACENAMEDESC 'WeightClass' options for GpiQueryFaceString
  1601.  FWEIGHT_DONT_CARE     :constant  Long:=0 ;
  1602.  FWEIGHT_ULTRA_LIGHT   :constant  Long:=1 ;
  1603.  FWEIGHT_EXTRA_LIGHT   :constant  Long:=2 ;
  1604.  FWEIGHT_LIGHT         :constant  Long:=3 ;
  1605.  FWEIGHT_SEMI_LIGHT    :constant  Long:= 4 ;
  1606.  FWEIGHT_NORMAL        :constant  Long:= 5 ;
  1607.  FWEIGHT_SEMI_BOLD     :constant  Long:= 6 ;
  1608.  FWEIGHT_BOLD          :constant  Long:=7 ;
  1609.  FWEIGHT_EXTRA_BOLD    :constant  Long:=8 ;
  1610.  FWEIGHT_ULTRA_BOLD    :constant  Long:=9 ;
  1611.  
  1612. -- FACENAMEDESC 'WidthClass' options for GpiQueryFaceString
  1613.  FWIDTH_DONT_CARE      :constant  Long:=0 ;
  1614.  FWIDTH_ULTRA_CONDENSED:constant  Long:=1 ;
  1615.  FWIDTH_EXTRA_CONDENSED:constant  Long:=2 ;
  1616.  FWIDTH_CONDENSED      :constant  Long:=3 ;
  1617.  FWIDTH_SEMI_CONDENSED :constant  Long:=4 ;
  1618.  FWIDTH_NORMAL         :constant  Long:=5 ;
  1619.  FWIDTH_SEMI_EXPANDED  :constant  Long:=6 ;
  1620.  FWIDTH_EXPANDED       :constant  Long:=7 ;
  1621.  FWIDTH_EXTRA_EXPANDED :constant  Long:=8 ;
  1622.  FWIDTH_ULTRA_EXPANDED :constant  Long:=9 ;
  1623.  
  1624. -- FACENAMEDESC 'options' for GpiQueryFaceString
  1625.  FTYPE_ITALIC          :constant  Long:=  16#0001#;
  1626.  FTYPE_ITALIC_DONT_CARE:constant  Long:=  16#0002#;
  1627.  FTYPE_OBLIQUE         :constant  Long:=  16#0004#;
  1628.  FTYPE_OBLIQUE_DONT_CARE:constant  Long:= 16#0008#;
  1629.  FTYPE_ROUNDED          :constant  Long:= 16#0010#;
  1630.  FTYPE_ROUNDED_DONT_CARE:constant  Long:= 16#0020#;
  1631.  
  1632. -- actions for GpiQueryFontAction
  1633.  QFA_PUBLIC    :constant  Long:= 1 ;
  1634.  QFA_PRIVATE   :constant  Long:= 2 ;
  1635.  QFA_ERROR     :constant  Long:=  GPI_ALTERROR ;
  1636.  
  1637. -- options for GpiQueryFonts
  1638.  QF_PUBLIC     :constant  Long:=             16#0001#;
  1639.  QF_PRIVATE    :constant  Long:=             16#0002#;
  1640.  QF_NO_GENERIC :constant  Long:=             16#0004#;
  1641.  QF_NO_DEVICE  :constant  Long:=             16#0008#;
  1642.  
  1643.    -- font file descriptions for GpiQueryFontFileDescriptions
  1644. type FFDESCS is array (1..2,1..FACESIZE) of aliased character; -- ffdescs 2*32
  1645. subtype PFFDESCS  is PCHAR ;
  1646. type FFDESCS2   is record   -- ffdescs2
  1647.      cbLength             :ULONG  ;
  1648.      cbFacenameOffset     :ULONG  ;
  1649.      abFamilyName         :BYTE   ;   --[1];
  1650. end record; -- FFDESCS2;
  1651. type PFFDESCS2  is access all FFDESCS2;
  1652.  
  1653. --         physical and logical font functions
  1654. --
  1655. function GpiCreateLogFont(ps       :HPS     ;
  1656.                           pName    :PSZ     ;
  1657.                           lLcid    :LONG    ;
  1658.                           pfatAttrs:PFATTRS ) return LONG;
  1659. pragma Import(c,GpiCreateLogFont, Link_name=>"_GpiCreateLogFont");
  1660.  
  1661. function GpiDeleteSetId(ps   :HPS  ;
  1662.                         lLcid:LONG ) return BOOL;
  1663. pragma Import(c,GpiDeleteSetId, Link_name=>"_GpiDeleteSetId");
  1664.  
  1665. function GpiLoadFonts(ha         :HAB ;
  1666.                       pszFilename:PSZ ) return BOOL;
  1667. pragma Import(c,GpiLoadFonts, Link_name=>"_GpiLoadFonts");
  1668.  
  1669. function GpiUnloadFonts(ha         :HAB ;
  1670.                         pszFilename:PSZ ) return BOOL;
  1671. pragma Import(c,GpiUnloadFonts, Link_name=>"_GpiUnloadFonts");
  1672.  
  1673. function GpiQueryFonts(ps            :HPS          ;
  1674.                        flOptions     :ULONG        ;
  1675.                        pszFacename   :PSZ          ;
  1676.                        plReqFonts    :PLONG        ;
  1677.                        lMetricsLength:LONG         ;
  1678.                        afmMetrics    :PFONTMETRICS ) return LONG;
  1679. pragma Import(c,GpiQueryFonts, Link_name=>"_GpiQueryFonts");
  1680.  
  1681. function GpiQueryFontMetrics(ps            :HPS          ;
  1682.                              lMetricsLength:LONG         ;
  1683.                              pfmMetrics    :PFONTMETRICS ) return BOOL;
  1684. pragma Import(c,GpiQueryFontMetrics, Link_name=>"_GpiQueryFontMetrics");
  1685.  
  1686. function GpiQueryKerningPairs(ps        :HPS           ;
  1687.                               lCount    :LONG          ;
  1688.                               akrnprData:PKERNINGPAIRS ) return LONG;
  1689. pragma Import(c,GpiQueryKerningPairs, Link_name=>"_GpiQueryKerningPairs");
  1690.  
  1691. function GpiQueryWidthTable(ps        :HPS  ;
  1692.                             lFirstChar:LONG ;
  1693.                             lCount    :LONG ;
  1694.                              alData   :PLONG) return BOOL;
  1695. pragma Import(c,GpiQueryWidthTable, Link_name=>"_GpiQueryWidthTable");
  1696.  
  1697. function GpiQueryNumberSetIds(ps:HPS) return LONG;
  1698. pragma Import(c,GpiQueryNumberSetIds, Link_name=>"_GpiQueryNumberSetIds");
  1699.  
  1700. function GpiQuerySetIds(ps     :HPS   ;
  1701.                         lCount :LONG  ;
  1702.                         alTypes:PLONG ;
  1703.                         aNames :PSZ   ;
  1704.                         allcids:PLONG ) return BOOL;
  1705. pragma Import(c,GpiQuerySetIds, Link_name=>"_GpiQuerySetIds");
  1706.  
  1707. function GpiQueryFaceString(Ps              :HPS           ;
  1708.                             FamilyName      :PSZ           ;
  1709.                             attrs           :PFACENAMEDESC ;
  1710.                             length          :LONG          ;
  1711.                             CompoundFaceName:PSZ           ) return ULONG;
  1712. pragma Import(c,GpiQueryFaceString, Link_name=>"_GpiQueryFaceString");
  1713.  
  1714. function GpiQueryLogicalFont(Ps    :HPS     ;
  1715.                              lcid  :LONG    ;
  1716.                              name  :PSZ     ;
  1717.                              attrs :PFATTRS ;
  1718.                              length:LONG    ) return BOOL;
  1719. pragma Import(c,GpiQueryLogicalFont, Link_name=>"_GpiQueryLogicalFont");
  1720.  
  1721. function GpiQueryFontAction(anchor :HAB   ;
  1722.                             options:ULONG ) return ULONG;
  1723. pragma Import(c,GpiQueryFontAction, Link_name=>"_GpiQueryFontAction");
  1724.  
  1725. function GpiLoadPublicFonts(ha:HAB;
  1726.                             ps:PSZ) return BOOL;
  1727. pragma Import(c,GpiLoadPublicFonts, Link_name=>"_GpiLoadPublicFonts");
  1728.  
  1729. function GpiUnloadPublicFonts(ha:HAB;
  1730.                               ps:PSZ) return BOOL;
  1731. pragma Import(c,GpiUnloadPublicFonts, Link_name=>"_GpiUnloadPublicFonts");
  1732.  
  1733. function GpiSetCp( ps        :HPS  ;
  1734.                    ulCodePage:ULONG) return BOOL  ;
  1735. pragma Import(c,GpiSetCp, Link_name=>"_GpiSetCp");
  1736.  
  1737. function GpiQueryCp(ps:HPS) return ULONG ;
  1738. pragma Import(c,GpiQueryCp, Link_name=>"_GpiQueryCp");
  1739.  
  1740. function GpiQueryFullFontFileDescs(ha               :HAB   ;
  1741.                                    pszFilename      :PSZ   ;
  1742.                                    plCount          :PLONG ;
  1743.                                    pNames           :PVOID ;
  1744.                                    plNamesBuffLength:PLONG ) return LONG  ;
  1745. pragma Import(c,GpiQueryFullFontFileDescs, Link_name=>"_GpiQueryFullFontFileDescs");
  1746.  
  1747. function GpiQueryFontFileDescriptions(ha           :HAB      ;
  1748.                                       pszFilename  :PSZ      ;
  1749.                                       plCount      :PLONG    ;
  1750.                                       affdescsNames:PFFDESCS ) return LONG  ;
  1751. pragma Import(c,GpiQueryFontFileDescriptions, Link_name=>"_GpiQueryFontFileDescriptions");
  1752.  
  1753. -- raster operations defined for GpiBitBlt
  1754.  ROP_SRCCOPY   :constant  Long:=             16#00CC#;
  1755.  ROP_SRCPAINT  :constant  Long:=             16#00EE#;
  1756.  ROP_SRCAND    :constant  Long:=             16#0088#;
  1757.  ROP_SRCINVERT :constant  Long:=             16#0066#;
  1758.  ROP_SRCERASE  :constant  Long:=             16#0044#;
  1759.  ROP_NOTSRCCOPY:constant  Long:=             16#0033#;
  1760.  ROP_NOTSRCERASE:constant  Long:=            16#0011#;
  1761.  ROP_MERGECOPY  :constant  Long:=            16#00C0#;
  1762.  ROP_MERGEPAINT :constant  Long:=            16#00BB#;
  1763.  ROP_PATCOPY    :constant  Long:=            16#00F0#;
  1764.  ROP_PATPAINT   :constant  Long:=            16#00FB#;
  1765.  ROP_PATINVERT  :constant  Long:=            16#005A#;
  1766.  ROP_DSTINVERT  :constant  Long:=            16#0055#;
  1767.  ROP_ZERO       :constant  Long:=            16#0000#;
  1768.  ROP_ONE        :constant  Long:=            16#00FF#;
  1769.  
  1770. -- Blt options for GpiBitBlt
  1771.  BBO_OR         :constant  Long:=                0 ;
  1772.  BBO_AND        :constant  Long:=                1 ;
  1773.  BBO_IGNORE     :constant  Long:=                2 ;
  1774.  BBO_PAL_COLORS :constant  Long:=                4 ;
  1775.  BBO_NO_COLOR_INFO :constant  Long:=             8 ;
  1776.  
  1777. -- Fill options for GpiFloodFill
  1778.  FF_BOUNDARY   :constant  Long:=                 0 ;
  1779.  FF_SURFACE    :constant  Long:=                 1 ;
  1780.  
  1781. --     -- error return for GpiSetBitmap
  1782. --      HBM_ERROR            ((HBITMAP)-1);
  1783. --
  1784. --         bitmap and pel functions
  1785. --
  1786. function GpiBitBlt(psTarget  :HPS     ;
  1787.                    psSource  :HPS     ;
  1788.                    lCount    :LONG    ;
  1789.                    aptlPoints:PPOINTL ;
  1790.                    lRop      :LONG    ;
  1791.                    flOptions :ULONG   ) return LONG   ;
  1792. pragma Import(c,GpiBitBlt, Link_name=>"_GpiBitBlt");
  1793.  
  1794. function GpiDeleteBitmap( hbm:HBITMAP) return BOOL   ;
  1795. pragma Import(c,GpiDeleteBitmap, Link_name=>"_GpiDeleteBitmap");
  1796.  
  1797. function GpiLoadBitmap(ps      :HPS     ;
  1798.                        Resource:HMODULE ;
  1799.                        idBitmap:ULONG   ;
  1800.                        lWidth  :LONG    ;
  1801.                        lHeight :LONG    ) return HBITMAP;
  1802. pragma Import(c,GpiLoadBitmap, Link_name=>"_GpiLoadBitmap");
  1803.  
  1804. function GpiSetBitmap(ps :HPS     ;
  1805.                       hbm:HBITMAP ) return HBITMAP;
  1806. pragma Import(c,GpiSetBitmap, Link_name=>"_GpiSetBitmap");
  1807.  
  1808. function GpiWCBitBlt(psTarget  :HPS     ;
  1809.                      hbmSource :HBITMAP ;
  1810.                      lCount    :LONG    ;
  1811.                      aptlPoints:PPOINTL ;
  1812.                      lRop      :LONG    ;
  1813.                      flOptions :ULONG   ) return LONG   ;
  1814. pragma Import(c,GpiWCBitBlt, Link_name=>"_GpiWCBitBlt");
  1815. --
  1816. --     --** include bitmap structures and file formats ************************
  1817.    -- bitmap parameterization used by GpiCreateBitmap and others
  1818. type BITMAPINFOHEADER  is record         -- bmp
  1819.   cbFix       :ULONG  ;
  1820.   cx          :USHORT ;
  1821.   cy          :USHORT ;
  1822.   cPlanes     :USHORT ;
  1823.   cBitCount   :USHORT ;
  1824. end record; --  BITMAPINFOHEADER;
  1825. type PBITMAPINFOHEADER  is access all BITMAPINFOHEADER;
  1826.  
  1827.    -- RGB data for _BITMAPINFO struct
  1828. type RGB   is record              -- rgb
  1829.    bBlue   :BYTE ;
  1830.    bGreen  :BYTE ;
  1831.    bRed    :BYTE ;
  1832. end record; --  RGB;
  1833.  
  1834.    -- bitmap data used by GpiSetBitmapBits and others
  1835. type BITMAPINFO  is record       -- bmi
  1836.    cbFix      :ULONG  ;
  1837.    cx         :USHORT ;
  1838.    cy         :USHORT ;
  1839.    cPlanes    :USHORT ;
  1840.    cBitCount  :USHORT ;
  1841.    argbColor  :RGB    ;   --[1];
  1842.    end record; --  BITMAPINFO;
  1843. type PBITMAPINFO  is access all BITMAPINFO;
  1844.  
  1845.    -- Constants for compression/decompression command
  1846.  
  1847.  CBD_COMPRESSION   :constant  Long:=  1 ;
  1848.  CBD_DECOMPRESSION :constant  Long:=  2 ;
  1849.  CBD_BITS          :constant  Long:=  0 ;
  1850.  
  1851. -- Flags for compression/decompression option
  1852.  
  1853.  CBD_COLOR_CONVERSION :constant Long:=16#00000001#;
  1854.  
  1855. -- Compression scheme in the ulCompression field of the bitmapinfo structure
  1856.  
  1857.  BCA_UNCOMP      :constant  Long:=   0 ;
  1858.  BCA_HUFFMAN1D   :constant  Long:=   3 ;
  1859.  BCA_RLE4        :constant  Long:=   2 ;
  1860.  BCA_RLE8        :constant  Long:=   1 ;
  1861.  BCA_RLE24       :constant  Long:=   4 ;
  1862.  BRU_METRIC      :constant  Long:=   0 ;
  1863.  BRA_BOTTOMUP    :constant  Long:=   0 ;
  1864.  BRH_NOTHALFTONED   :constant  Long:=0 ;
  1865.  BRH_ERRORDIFFUSION :constant  Long:=1 ;
  1866.  BRH_PANDA          :constant  Long:=2 ;
  1867.  BRH_SUPERCIRCLE    :constant  Long:=3 ;
  1868.  
  1869.  BCE_PALETTE        :constant  Long:= -1;
  1870.  BCE_RGB            :constant  Long:=0 ;
  1871.  
  1872. type BITMAPINFOHEADER2  is record        -- bmp2
  1873.    cbFix            :ULONG  ;  -- Length of structure
  1874.    cx               :ULONG  ;  -- Bit-map width in pels
  1875.    cy               :ULONG  ;  -- Bit-map height in pels
  1876.    cPlanes          :USHORT ;  -- Number of bit planes
  1877.    cBitCount        :USHORT ;  -- Number of bits per pel within a plane
  1878.    ulCompression    :ULONG  ;  -- Compression scheme used to store the bitmap
  1879.    cbImage          :ULONG  ;  -- Length of bit-map storage data in bytes
  1880.    cxResolution     :ULONG  ;  -- x resolution of target device
  1881.    cyResolution     :ULONG  ;  -- y resolution of target device
  1882.    cclrUsed         :ULONG  ;  -- Number of color indices used
  1883.    cclrImportant    :ULONG  ;  -- Number of important color indices
  1884.    usUnits          :USHORT ;  -- Units of measure
  1885.    usReserved       :USHORT ;  -- Reserved
  1886.    usRecording      :USHORT ;  -- Recording algorithm
  1887.    usRendering      :USHORT ;  -- Halftoning algorithm
  1888.    cSize1           :ULONG  ;  -- Size value 1
  1889.    cSize2           :ULONG  ;  -- Size value 2
  1890.    ulColorEncoding  :ULONG  ;  -- Color encoding
  1891.    ulIdentifier     :ULONG  ;  -- Reserved for application use
  1892. end record; --  BITMAPINFOHEADER2;
  1893. type PBITMAPINFOHEADER2  is access all BITMAPINFOHEADER2;
  1894.  
  1895. type RGB2   is record        -- rgb2
  1896.   bBlue       :BYTE ;        -- Blue component of the color definition
  1897.   bGreen      :BYTE ;        -- Green component of the color definition
  1898.   bRed        :BYTE ;        -- Red component of the color definition
  1899.   fcOptions   :BYTE ;        -- Reserved, must be zero
  1900. end record; --  RGB2;
  1901. type PRGB2  is access all RGB2;
  1902.  
  1903. type BITMAPINFO2  is record       -- bmi2
  1904.    cbFix            :ULONG  ;  -- Length of fixed portion of structure
  1905.    cx               :ULONG  ;  -- Bit-map width in pels
  1906.    cy               :ULONG  ;  -- Bit-map height in pels
  1907.    cPlanes          :USHORT ;  -- Number of bit planes
  1908.    cBitCount        :USHORT ;  -- Number of bits per pel within a plane
  1909.    ulCompression    :ULONG  ;  -- Compression scheme used to store the bitmap
  1910.    cbImage          :ULONG  ;  -- Length of bit-map storage data in bytes
  1911.    cxResolution     :ULONG  ;  -- x resolution of target device
  1912.    cyResolution     :ULONG  ;  -- y resolution of target device
  1913.    cclrUsed         :ULONG  ;  -- Number of color indices used
  1914.    cclrImportant    :ULONG  ;  -- Number of important color indices
  1915.    usUnits          :USHORT ;  -- Units of measure
  1916.    usReserved       :USHORT ;  -- Reserved
  1917.    usRecording      :USHORT ;  -- Recording algorithm
  1918.    usRendering      :USHORT ;  -- Halftoning algorithm
  1919.    cSize1           :ULONG  ;  -- Size value 1
  1920.    cSize2           :ULONG  ;  -- Size value 2
  1921.    ulColorEncoding  :ULONG  ;  -- Color encoding
  1922.    ulIdentifier     :ULONG  ;  -- Reserved for application use
  1923.    argbColor        :RGB2   ;  -- Color definition record   [1]
  1924. end record; --  BITMAPINFO2;
  1925. type PBITMAPINFO2  is access all BITMAPINFO2;
  1926.  
  1927. type BITMAPFILEHEADER  is record    -- bfh
  1928.    usType    :USHORT    ;
  1929.    cbSize    :ULONG     ;
  1930.    xHotspot  :SHORT     ;
  1931.    yHotspot  :SHORT     ;
  1932.    offBits   :ULONG     ;
  1933.    bmp  :BITMAPINFOHEADER ;
  1934. end record; --  BITMAPFILEHEADER;
  1935. type PBITMAPFILEHEADER  is access all BITMAPFILEHEADER;
  1936.  
  1937. type BITMAPARRAYFILEHEADER    is record     -- bafh
  1938.   usType      :USHORT           ;
  1939.   cbSize      :ULONG            ;
  1940.   offNext     :ULONG            ;
  1941.   cxDisplay   :USHORT           ;
  1942.   cyDisplay   :USHORT           ;
  1943.   bfh         :BITMAPFILEHEADER ;
  1944. end record; --  BITMAPARRAYFILEHEADER;
  1945. type PBITMAPARRAYFILEHEADER  is access all BITMAPARRAYFILEHEADER;
  1946.  
  1947. type BITMAPFILEHEADER2  is record    -- bfh2
  1948.   usType     :USHORT            ;
  1949.   cbSize     :ULONG             ;
  1950.   xHotspot   :SHORT             ;
  1951.   yHotspot   :SHORT             ;
  1952.   offBits    :ULONG             ;
  1953.   bmp2       :BITMAPINFOHEADER2 ;
  1954. end record; --  BITMAPFILEHEADER2;
  1955. type PBITMAPFILEHEADER2  is access all BITMAPFILEHEADER2;
  1956.  
  1957. type BITMAPARRAYFILEHEADER2   is record    -- bafh2
  1958.   usType      :USHORT            ;
  1959.   cbSize      :ULONG             ;
  1960.   offNext     :ULONG             ;
  1961.   cxDisplay   :USHORT            ;
  1962.   cyDisplay   :USHORT            ;
  1963.   bfh2        :BITMAPFILEHEADER2 ;
  1964. end record; --  BITMAPARRAYFILEHEADER2;
  1965. type PBITMAPARRAYFILEHEADER2  is access all BITMAPARRAYFILEHEADER2;
  1966.  
  1967. -- * These are the identifying values that go in the usType field of the
  1968. -- * BITMAPFILEHEADER(2) and BITMAPARRAYFILEHEADER(2).
  1969. -- * (BFT_ => Bit map File Type)
  1970. --
  1971. --  BFT_ICON           16#4349      'IC'
  1972. --  BFT_BMAP           16#4d42      'BM'
  1973. --  BFT_POINTER        16#5450      'PT'
  1974. --  BFT_COLORICON      16#4943      'CI'
  1975. --  BFT_COLORPOINTER   16#5043      'CP'
  1976. --  BFT_BITMAPARRAY    16#4142      'BA'
  1977. --
  1978. --     -- usage flags for GpiCreateBitmap
  1979. --      CBM_INIT        16#0004#;
  1980. --
  1981. --     -- error return code for GpiSet/QueryBitmapBits
  1982. --      BMB_ERROR                     -1;
  1983.  
  1984. --        --** bitmap and pel functions
  1985.  
  1986. function GpiCreateBitmap(ps           :HPS                ;
  1987.                          pbmpNew      :PBITMAPINFOHEADER2 ;
  1988.                          flOptions    :ULONG              ;
  1989.                          pbInitData   :PBYTE              ;
  1990.                          pbmiInfoTable:PBITMAPINFO2       ) return HBITMAP;
  1991. pragma Import(c,GpiCreateBitmap, Link_name=>"_GpiCreateBitmap");
  1992.  
  1993. function GpiSetBitmapBits(ps           :HPS          ;
  1994.                           lScanStart   :LONG         ;
  1995.                           lScans       :LONG         ;
  1996.                           pbBuffer     :PBYTE        ;
  1997.                           pbmiInfoTable:PBITMAPINFO2 ) return LONG  ;
  1998. pragma Import(c,GpiSetBitmapBits, Link_name=>"_GpiSetBitmapBits");
  1999.  
  2000. function GpiSetBitmapDimension(hbm                 :HBITMAP ;
  2001.                                psizlBitmapDimension:PSIZEL  ) return BOOL  ;
  2002. pragma Import(c,GpiSetBitmapDimension, Link_name=>"_GpiSetBitmapDimension");
  2003.  
  2004. function GpiSetBitmapId(ps   :HPS     ;
  2005.                         hbm  :HBITMAP ;
  2006.                         lLcid:LONG    ) return BOOL  ;
  2007. pragma Import(c,GpiSetBitmapId, Link_name=>"_GpiSetBitmapId");
  2008.  
  2009. function GpiQueryBitmapBits( ps           :HPS         ;
  2010.                              lScanStart   :LONG        ;
  2011.                              lScans       :LONG        ;
  2012.                              pbBuffer     :PBYTE       ;
  2013.                              pbmiInfoTable:PBITMAPINFO2) return LONG  ;
  2014. pragma Import(c,GpiQueryBitmapBits, Link_name=>"_GpiQueryBitmapBits");
  2015.  
  2016. function GpiQueryBitmapDimension(hbm                 :HBITMAP ;
  2017.                                  psizlBitmapDimension:PSIZEL  ) return BOOL  ;
  2018. pragma Import(c,GpiQueryBitmapDimension, Link_name=>"_GpiQueryBitmapDimension");
  2019.  
  2020. function GpiQueryBitmapHandle(ps   :HPS  ;
  2021.                               lLcid:LONG ) return HBITMAP;
  2022. pragma Import(c,GpiQueryBitmapHandle, Link_name=>"_GpiQueryBitmapHandle");
  2023.  
  2024. function GpiQueryBitmapParameters(hbm     :HBITMAP           ;
  2025.                                   pbmpData:PBITMAPINFOHEADER ) return BOOL  ;
  2026. pragma Import(c,GpiQueryBitmapParameters, Link_name=>"_GpiQueryBitmapParameters");
  2027.  
  2028. function GpiQueryBitmapInfoHeader(hbm     :HBITMAP            ;
  2029.                                   pbmpData:PBITMAPINFOHEADER2 ) return BOOL  ;
  2030. pragma Import(c,GpiQueryBitmapInfoHeader, Link_name=>"_GpiQueryBitmapInfoHeader");
  2031.  
  2032. function GpiQueryDeviceBitmapFormats(ps     :HPS   ;
  2033.                                      lCount :LONG  ;
  2034.                                      alArray:PLONG ) return BOOL  ;
  2035. pragma Import(c,GpiQueryDeviceBitmapFormats, Link_name=>"_GpiQueryDeviceBitmapFormats");
  2036.  
  2037. function GpiSetPel(ps       :HPS     ;
  2038.                    pptlPoint:PPOINTL ) return LONG  ;
  2039. pragma Import(c,GpiSetPel, Link_name=>"_GpiSetPel");
  2040.  
  2041. function GpiQueryPel(ps       :HPS     ;
  2042.                      pptlPoint:PPOINTL ) return LONG  ;
  2043. pragma Import(c,GpiQueryPel, Link_name=>"_GpiQueryPel");
  2044.  
  2045. function GpiFloodFill(ps      :HPS  ;
  2046.                       lOptions:LONG ;
  2047.                       lColor  :LONG ) return LONG  ;
  2048. pragma Import(c,GpiFloodFill, Link_name=>"_GpiFloodFill");
  2049.  
  2050. function GpiDrawBits(ps           :HPS          ;
  2051.                      pBits        :PVOID        ;
  2052.                      pbmiInfoTable:PBITMAPINFO2 ;
  2053.                      lCount       :LONG         ;
  2054.                      aptlPoints   :PPOINTL      ;
  2055.                      lRop         :LONG         ;
  2056.                      flOptions    :ULONG        ) return LONG  ;
  2057. pragma Import(c,GpiDrawBits, Link_name=>"_GpiDrawBits");
  2058.  
  2059.  -- options for GpiCombineRegion
  2060.   CRGN_OR        :constant  Long:=                1 ;
  2061.   CRGN_COPY      :constant  Long:=                2 ;
  2062.   CRGN_XOR       :constant  Long:=                4 ;
  2063.   CRGN_AND       :constant  Long:=                6 ;
  2064.   CRGN_DIFF      :constant  Long:=                7 ;
  2065.  
  2066.  -- usDirection of returned region data for GpiQueryRegionRects
  2067.   RECTDIR_LFRT_TOPBOT :constant  Long:=           1 ;
  2068.   RECTDIR_RTLF_TOPBOT :constant  Long:=           2 ;
  2069.   RECTDIR_LFRT_BOTTOP :constant  Long:=           3 ;
  2070.   RECTDIR_RTLF_BOTTOP :constant  Long:=           4 ;
  2071.  
  2072. --      control data for GpiQueryRegionRects
  2073. type RGNRECT    is record         -- rgnrc
  2074.     ircStart      :ULONG  ;
  2075.     crc           :ULONG  ;
  2076.     crcReturned   :ULONG  ;
  2077.     ulDirection   :ULONG  ;
  2078. end record; -- RGNRECT;
  2079. type PRGNRECT  is access all RGNRECT;
  2080.  
  2081. -- return code to indicate type of region for GpiCombineRegion and others
  2082.  RGN_ERROR    :constant  Long:=                  0 ;
  2083.  RGN_NULL     :constant  Long:=                  1 ;
  2084.  RGN_RECT     :constant  Long:=                  2 ;
  2085.  RGN_COMPLEX  :constant  Long:=                  3 ;
  2086.  
  2087. -- return codes for GpiPtInRegion
  2088.  PRGN_ERROR    :constant  Long:=                 0 ;
  2089.  PRGN_OUTSIDE  :constant  Long:=                 1 ;
  2090.  PRGN_INSIDE   :constant  Long:=                 2 ;
  2091.  
  2092. -- return codes for GpiRectInRegion
  2093.  RRGN_ERROR    :constant  Long:=                 0 ;
  2094.  RRGN_OUTSIDE  :constant  Long:=                 1 ;
  2095.  RRGN_PARTIAL  :constant  Long:=                 2 ;
  2096.  RRGN_INSIDE   :constant  Long:=                 3 ;
  2097.  
  2098. -- return codes for GpiEqualRegion
  2099.  EQRGN_ERROR   :constant  Long:=                 0 ;
  2100.  EQRGN_NOTEQUAL:constant  Long:=                 1 ;
  2101.  EQRGN_EQUAL   :constant  Long:=                 2 ;
  2102.  
  2103. -- error return code for GpiSetRegion
  2104. --      HRGN_ERROR              ((HRGN)-1);
  2105.  
  2106. --       main region functions
  2107.  
  2108. function GpiCombineRegion(ps      :HPS  ;
  2109.                           hrgnDest:HRGN ;
  2110.                           hrgnSrc1:HRGN ;
  2111.                           hrgnSrc2:HRGN ;
  2112.                           lMode   :LONG ) return LONG;
  2113. pragma Import(c,GpiCombineRegion, Link_name=>"_GpiCombineRegion");
  2114.  
  2115. function GpiCreateRegion(ps            :HPS    ;
  2116.                          lCount        :LONG   ;
  2117.                          arclRectangles:PRECTL ) return HRGN;
  2118. pragma Import(c,GpiCreateRegion, Link_name=>"_GpiCreateRegion");
  2119.  
  2120. function GpiDestroyRegion(ps  :HPS  ;
  2121.                           hrg :HRGN ) return BOOL;
  2122. pragma Import(c,GpiDestroyRegion, Link_name=>"_GpiDestroyRegion");
  2123.  
  2124. function GpiEqualRegion(ps      :HPS  ;
  2125.                         hrgnSrc1:HRGN ;
  2126.                         hrgnSrc2:HRGN ) return LONG;
  2127. pragma Import(c,GpiEqualRegion, Link_name=>"_GpiEqualRegion");
  2128.  
  2129. function GpiOffsetRegion(ps        :HPS     ;
  2130.                          Hrg       :HRGN    ;
  2131.                          pptlOffset:PPOINTL ) return BOOL;
  2132. pragma Import(c,GpiOffsetRegion, Link_name=>"_GpiOffsetRegion");
  2133.  
  2134. function GpiPaintRegion(ps  :HPS  ;
  2135.                         hrg :HRGN ) return LONG;
  2136. pragma Import(c,GpiPaintRegion, Link_name=>"_GpiPaintRegion");
  2137.  
  2138. function GpiFrameRegion(ps       :HPS    ;
  2139.                         hrg      :HRGN   ;
  2140.                         thickness:PSIZEL ) return LONG;
  2141. pragma Import(c,GpiFrameRegion, Link_name=>"_GpiFrameRegion");
  2142.  
  2143. function GpiPtInRegion(ps       :HPS     ;
  2144.                        hrg      :HRGN    ;
  2145.                        pptlPoint:PPOINTL ) return LONG;
  2146. pragma Import(c,GpiPtInRegion, Link_name=>"_GpiPtInRegion");
  2147.  
  2148. function GpiQueryRegionBox(ps       :HPS    ;
  2149.                            hrg      :HRGN   ;
  2150.                            prclBound:PRECTL ) return LONG;
  2151. pragma Import(c,GpiQueryRegionBox, Link_name=>"_GpiQueryRegionBox");
  2152.  
  2153. function GpiQueryRegionRects(ps           :HPS      ;
  2154.                              hrg          :HRGN     ;
  2155.                              prclBound    :PRECTL   ;
  2156.                              prgnrcControl:PRGNRECT ;
  2157.                              prclRect     :PRECTL   ) return BOOL;
  2158. pragma Import(c,GpiQueryRegionRects, Link_name=>"_GpiQueryRegionRects");
  2159.  
  2160. function GpiRectInRegion(ps      :HPS    ;
  2161.                          hrg     :HRGN   ;
  2162.                          prclRect:PRECTL ) return LONG;
  2163. pragma Import(c,GpiRectInRegion, Link_name=>"_GpiRectInRegion");
  2164.  
  2165. function GpiSetRegion(ps            :HPS    ;
  2166.                       hrg           :HRGN   ;
  2167.                       lcount        :LONG   ;
  2168.                       arclRectangles:PRECTL ) return BOOL;
  2169. pragma Import(c,GpiSetRegion, Link_name=>"_GpiSetRegion");
  2170.  
  2171. --         clip region functions
  2172.  
  2173. function GpiSetClipRegion(ps      :HPS   ;
  2174.                           hrg     :HRGN  ;
  2175.                           phrgnOld:PHRGN ) return LONG;
  2176. pragma Import(c,GpiSetClipRegion, Link_name=>"_GpiSetClipRegion");
  2177.  
  2178. function GpiQueryClipRegion(ps:HPS) return HRGN;
  2179. pragma Import(c,GpiQueryClipRegion, Link_name=>"_GpiQueryClipRegion");
  2180.  
  2181. function GpiQueryClipBox(ps       :HPS    ;
  2182.                          prclBound:PRECTL ) return LONG;
  2183. pragma Import(c,GpiQueryClipBox, Link_name=>"_GpiQueryClipBox");
  2184.  
  2185. function GpiExcludeClipRectangle(ps           :HPS    ;
  2186.                                  prclRectangle:PRECTL ) return LONG;
  2187. pragma Import(c,GpiExcludeClipRectangle, Link_name=>"_GpiExcludeClipRectangle");
  2188.  
  2189. function GpiIntersectClipRectangle(ps           :HPS    ;
  2190.                                    prclRectangle:PRECTL ) return LONG;
  2191. pragma Import(c,GpiIntersectClipRectangle, Link_name=>"_GpiIntersectClipRectangle");
  2192.  
  2193. function GpiOffsetClipRegion(ps       :HPS     ;
  2194.                              pptlPoint:PPOINTL ) return LONG;
  2195. pragma Import(c,GpiOffsetClipRegion, Link_name=>"_GpiOffsetClipRegion");
  2196.  
  2197.   -- constants for index values of options array for GpiPlayMetaFile
  2198.    PMF_SEGBASE  :constant  Long:=                   0 ;
  2199.    PMF_LOADTYPE :constant  Long:=                   1 ;
  2200.    PMF_RESOLVE  :constant  Long:=                   2 ;
  2201.    PMF_LCIDS    :constant  Long:=                   3 ;
  2202.    PMF_RESET    :constant  Long:=                   4 ;
  2203.    PMF_SUPPRESS  :constant  Long:=                  5 ;
  2204.    PMF_COLORTABLES :constant  Long:=                6 ;
  2205.    PMF_COLORREALIZABLE :constant  Long:=            7 ;
  2206.    PMF_DEFAULTS        :constant  Long:=            8 ;
  2207.    PMF_DELETEOBJECTS   :constant  Long:=            9 ;
  2208.  
  2209.   -- options for GpiPlayMetaFile
  2210.    RS_DEFAULT         :constant  Long:=            0 ;
  2211.    RS_NODISCARD       :constant  Long:=            1 ;
  2212.    LC_DEFAULT         :constant  Long:=            0 ;
  2213.    LC_NOLOAD          :constant  Long:=            1 ;
  2214.    LC_LOADDISC        :constant  Long:=            3 ;
  2215.    LT_DEFAULT         :constant  Long:=            0 ;
  2216.    LT_NOMODIFY        :constant  Long:=            1 ;
  2217.    LT_ORIGINALVIEW    :constant  Long:=            4 ;
  2218.    RES_DEFAULT        :constant  Long:=            0 ;
  2219.    RES_NORESET        :constant  Long:=            1 ;
  2220.    RES_RESET          :constant  Long:=            2 ;
  2221.    SUP_DEFAULT        :constant  Long:=            0 ;
  2222.    SUP_NOSUPPRESS     :constant  Long:=            1 ;
  2223.    SUP_SUPPRESS       :constant  Long:=            2 ;
  2224.    CTAB_DEFAULT       :constant  Long:=            0 ;
  2225.    CTAB_NOMODIFY      :constant  Long:=            1 ;
  2226.    CTAB_REPLACE       :constant  Long:=            3 ;
  2227.    CTAB_REPLACEPALETTE:constant  Long:=            4 ;
  2228.    CREA_DEFAULT       :constant  Long:=            0 ;
  2229.    CREA_REALIZE       :constant  Long:=            1 ;
  2230.    CREA_NOREALIZE     :constant  Long:=            2 ;
  2231.    CREA_DOREALIZE     :constant  Long:=            3 ;
  2232.  
  2233.    DDEF_DEFAULT       :constant  Long:=            0 ;
  2234.    DDEF_IGNORE        :constant  Long:=            1 ;
  2235.    DDEF_LOADDISC      :constant  Long:=            3 ;
  2236.    DOBJ_DEFAULT       :constant  Long:=            0 ;
  2237.    DOBJ_NODELETE      :constant  Long:=            1 ;
  2238.    DOBJ_DELETE        :constant  Long:=            2 ;
  2239.    RSP_DEFAULT        :constant  Long:=            0 ;
  2240.    RSP_NODISCARD      :constant  Long:=            1 ;
  2241.  
  2242. --         MetaFile functions
  2243.  
  2244. function GpiCopyMetaFile(mf:HMF  ) return HMF ;
  2245. pragma Import(c,GpiCopyMetaFile, Link_name=>"_GpiCopyMetaFile");
  2246.  
  2247. function GpiDeleteMetaFile( mf :HMF) return BOOL;
  2248. pragma Import(c,GpiDeleteMetaFile, Link_name=>"_GpiDeleteMetaFile");
  2249.  
  2250. function GpiLoadMetaFile(ha         :HAB ;
  2251.                          pszFilename:PSZ ) return HMF ;
  2252. pragma Import(c,GpiLoadMetaFile, Link_name=>"_GpiLoadMetaFile");
  2253.  
  2254. function GpiPlayMetaFile(ps        :HPS   ;
  2255.                          mf        :HMF   ;
  2256.                          lCount1   :LONG  ;
  2257.                          alOptarray:PLONG ;
  2258.                          plSegCount:PLONG ;
  2259.                          lCount2   :LONG  ;
  2260.                          pszDesc   :PSZ   ) return LONG;
  2261. pragma Import(c,GpiPlayMetaFile, Link_name=>"_GpiPlayMetaFile");
  2262.  
  2263. function GpiQueryMetaFileBits(mf     :HMF   ;
  2264.                               lOffset:LONG  ;
  2265.                               lLength:LONG  ;
  2266.                               pbData :PBYTE ) return BOOL;
  2267. pragma Import(c,GpiQueryMetaFileBits, Link_name=>"_GpiQueryMetaFileBits");
  2268.  
  2269. function GpiQueryMetaFileLength( mf :HMF) return LONG;
  2270. pragma Import(c,GpiQueryMetaFileLength, Link_name=>"_GpiQueryMetaFileLength");
  2271.  
  2272. function GpiSaveMetaFile(mf         :HMF ;
  2273.                          pszFilename:PSZ ) return BOOL;
  2274. pragma Import(c,GpiSaveMetaFile, Link_name=>"_GpiSaveMetaFile");
  2275.  
  2276. function GpiSetMetaFileBits(mf      :HMF   ;
  2277.                             lOffset :LONG  ;
  2278.                             lLength :LONG  ;
  2279.                             pbBuffer:PBYTE )return BOOL;
  2280. pragma Import(c,GpiSetMetaFileBits, Link_name=>"_GpiSetMetaFileBits");
  2281.  
  2282. --      default functions
  2283.  
  2284. function GpiQueryDefArcParams(ps            :HPS        ;
  2285.                               parcpArcParams:PARCPARAMS ) return BOOL;
  2286. pragma Import(c,GpiQueryDefArcParams, Link_name=>"_GpiQueryDefArcParams");
  2287.  
  2288. function GpiQueryDefAttrs(ps        :HPS     ;
  2289.                           lPrimType :LONG    ;
  2290.                           flAttrMask:ULONG   ;
  2291.                           ppbunAttrs:PBUNDLE ) return BOOL;
  2292. pragma Import(c,GpiQueryDefAttrs, Link_name=>"_GpiQueryDefAttrs");
  2293.  
  2294. function GpiQueryDefTag(ps   :HPS   ;
  2295.                         plTag:PLONG ) return BOOL;
  2296. pragma Import(c,GpiQueryDefTag, Link_name=>"_GpiQueryDefTag");
  2297.  
  2298. function GpiQueryDefViewingLimits(ps        :HPS    ;
  2299.                                   prclLimits:PRECTL ) return BOOL;
  2300. pragma Import(c,GpiQueryDefViewingLimits, Link_name=>"_GpiQueryDefViewingLimits");
  2301.  
  2302. function GpiSetDefArcParams(ps            :HPS        ;
  2303.                             parcpArcParams:PARCPARAMS ) return BOOL;
  2304. pragma Import(c,GpiSetDefArcParams, Link_name=>"_GpiSetDefArcParams");
  2305.  
  2306. function GpiSetDefAttrs(ps        :HPS     ;
  2307.                         lPrimType :LONG    ;
  2308.                         flAttrMask:ULONG   ;
  2309.                         ppbunAttrs:PBUNDLE ) return BOOL;
  2310. pragma Import(c,GpiSetDefAttrs, Link_name=>"_GpiSetDefAttrs");
  2311.  
  2312. function GpiSetDefTag(ps  :HPS  ;
  2313.                       lTag:LONG ) return BOOL;
  2314. pragma Import(c,GpiSetDefTag, Link_name=>"_GpiSetDefTag");
  2315.  
  2316. function GpiSetDefViewingLimits(ps        :HPS    ;
  2317.                                 prclLimits:PRECTL ) return BOOL;
  2318. pragma Import(c,GpiSetDefViewingLimits, Link_name=>"_GpiSetDefViewingLimits");
  2319.  
  2320. type POLYGON    is record  -- plygn
  2321.    ulPoints    :ULONG       ;
  2322.    aPointl     :PPOINTL     ;
  2323. end record; -- POLYGON;
  2324. type PPOLYGON  is access all POLYGON;
  2325.  
  2326. type POLYSET   is record  -- plyst
  2327.     ulPolys    :ULONG       ;
  2328.     aPolygon   :POLYGON     ;     --[1];
  2329. end record; -- POLYSET;
  2330. type PPOLYSET  is access all POLYSET;
  2331.  
  2332. -- control flags used by GpiPolygons
  2333.  POLYGON_NOBOUNDARY    :constant  Long:=              0 ;
  2334.  POLYGON_BOUNDARY      :constant  Long:=          16#0001#;
  2335.  
  2336.  POLYGON_ALTERNATE     :constant  Long:=              0 ;
  2337.  POLYGON_WINDING       :constant  Long:=          16#0002#;
  2338.  
  2339.  POLYGON_INCL          :constant  Long:=              0 ;
  2340.  POLYGON_EXCL          :constant  Long:=          16#0008#;
  2341.  
  2342. function GpiPolygons(ps       :HPS      ;
  2343.                      ulCount  :ULONG    ;
  2344.                      paplgn   :PPOLYGON ;
  2345.                      flOptions:ULONG    ;
  2346.                      flModel  :ULONG    ) return LONG;
  2347. pragma Import(c,GpiPolygons, Link_name=>"_GpiPolygons");
  2348.  
  2349. end os2.Gpi;
  2350.