GPI.DEF 62 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526
  1. (* Release 3.10 *)
  2. (*-------------------------------------------------------------------------*
  3. * *
  4. * GPI.DEF - OS/2 PM GPI interface *
  5. * *
  6. * COPYRIGHT (C) 1989..1992 Clarion Software Corporation. *
  7. * Copyright (c) 1988 Microsoft Corporation *
  8. * All Rights Reserved *
  9. * This file is compatible with OS/2 version 1.2. *
  10. * *
  11. *--------------------------------------------------------------------------*)
  12. (*# call(o_a_size => off,
  13. o_a_copy=>off,
  14. result_optional=>on,
  15. reg_saved => (si, di, ds, st1, st2),
  16. reg_param => (),
  17. seg_name => none,
  18. near_call => off,
  19. ds_eq_ss => off) *)
  20. (*# module(implementation=>off, init_code => off) *)
  21. (*# name(prefix => os2_lib) *)
  22. (*# data(near_ptr => off) *)
  23. (*# check(index=>off,range=>off,overflow=>off,nil_ptr=>off) *)
  24. DEFINITION MODULE Gpi;
  25. (**)
  26. (**--- OS/2 Presentation Manager GPI ---------------------------------------*)
  27. (**)
  28. FROM OS2DEF IMPORT HDC,HRGN,HAB,HPS,HBITMAP,HMF,LSET,POINTL,RECTL,STR8,HMODULE ;
  29. (**)
  30. (*--- Conditional sections, set to TRUE if required ------------------------*)
  31. (**)
  32. CONST
  33. i_CONTROL = TRUE ; (* PS control *)
  34. i_CORR = TRUE ; (* Picking, boundary and correlation *)
  35. i_SEGM = TRUE ; (* Segment control and drawing *)
  36. i_SEGMEDIT = TRUE ; (* Segment editing *)
  37. i_TRANSF = TRUE ; (* Transforms and transform conversion *)
  38. i_PATH = FALSE; (* Paths and clipping with paths *)
  39. i_COLORTAB = TRUE ; (* Logical color tables *)
  40. i_PRIM1 = TRUE ; (* Drawing primitives *)
  41. i_PRIM2 = TRUE ; (* Drawing primitives uncommon *)
  42. i_LCID = FALSE; (* Physical and logical fonts *)
  43. i_BITMAP1 = TRUE ; (* Bitmaps and pel operations *)
  44. i_BITMAP2 = TRUE ; (* Bitmaps and pel operations uncommon *)
  45. i_BITMAP3 = FALSE; (* Bitmaps file formats *)
  46. i_REGION = FALSE; (* Regions and clipping with regions *)
  47. i_METAF = FALSE; (* Metafiles *)
  48. i_DEFAULT = FALSE; (* Gpi Defaults *)
  49. i_ORDER = FALSE; (* GOCA orders *)
  50. i_FONT = FALSE; (* Font structures *)
  51. (**)
  52. (**--- Win General section 1 -----------------------------------------------*)
  53. (**)
  54. CONST
  55. GPI_ERROR = 0; GPI_OK = 1; GPI_HITS = 2; (* HITSRET Correlation Error *)
  56. GPI_ALTERROR = -1; (* GPIRET, >=0 returns value *)
  57. TYPE
  58. FIXED = RECORD frac : CARDINAL; int : INTEGER; END;
  59. GPIRET = LONGINT;
  60. HITSRET = LONGINT;
  61. TYPE
  62. SIZEL = RECORD
  63. cx : LONGINT;
  64. cy : LONGINT;
  65. END;
  66. CONST
  67. CLR_NOINDEX = -254;
  68. PU_ARBITRARY = 04H; PU_PELS = 08H; PU_LOMETRIC = 0CH; PU_HIMETRIC = 010H;
  69. PU_LOENGLISH = 014H; PU_HIENGLISH = 018H; PU_TWIPS = 01CH;
  70. GPIF_DEFAULT = 0; GPIF_SHORT = 0100H; GPIF_LONG = 0200H;
  71. GPIT_NORMAL = 0; GPIT_MICRO = 01000H;
  72. GPIA_NOASSOC = 0; GPIA_ASSOC = 04000H;
  73. HDC_ERROR = HDC(-1);
  74. PROCEDURE CreatePS(a:HAB; c:HDC; VAR s:SIZEL; o:LONGCARD) : HPS;
  75. PROCEDURE DestroyPS(h:HPS) : BOOLEAN;
  76. PROCEDURE Associate(h:HPS; c:HDC) : BOOLEAN;
  77. PROCEDURE RestorePS(h:HPS; p:LONGINT) : BOOLEAN;
  78. PROCEDURE SavePS(h:HPS) : LONGINT;
  79. PROCEDURE Erase(h:HPS) : BOOLEAN;
  80. PROCEDURE QueryDevice(h:HPS) : HDC;
  81. (**)
  82. (**--- Gpi Control --------------------------------------------------------*)
  83. (**)
  84. (*%T i_CONTROL*)
  85. CONST
  86. (* options for GpiResetPS *)
  87. GRES_ATTRS = LSET(01H); GRES_SEGMENTS = LSET(02H); GRES_ALL = LSET(04H);
  88. (* option masks for PS options used by GpiQueryPs *)
  89. PS_UNITS = LSET(0FCH);
  90. PS_FORMAT = LSET(0F00H);
  91. PS_TYPE = LSET(01000H);
  92. PS_MODE = LSET(02000H);
  93. PS_ASSOCIATE = LSET(04000H);
  94. PS_NORESET = LSET(08000H);
  95. (* error context returned by GpiErrorSegmentData *)
  96. GPIE_SEGMENT = 0; GPIE_ELEMENT = 1; GPIE_DATA = 2;
  97. (* control parameter for GpiSetDrawControl *)
  98. DCTL_ERASE = 1; DCTL_DISPLAY = 2; DCTL_BOUNDARY = 3; DCTL_DYNAMIC = 4;
  99. DCTL_CORRELATE = 5;
  100. (* constants for GpiSet/QueryDrawControl *)
  101. DCTL_ERROR = -1; DCTL_OFF = 0; DCTL_ON = 1;
  102. (* constants for GpiSet/QueryStopDraw *)
  103. SDW_ERROR = -1; SDW_OFF = 0; SDW_ON = 1;
  104. (* drawing for GpiSet/QueryDrawingMode *)
  105. DM_ERROR = 0; DM_DRAW = 1; DM_RETAIN = 2; DM_DRAWANDRETAIN = 3;
  106. PROCEDURE ResetPS(h:HPS; o:LSET) : BOOLEAN;
  107. PROCEDURE SetPS(h:HPS; VAR s:SIZEL; o:LONGCARD) : BOOLEAN;
  108. PROCEDURE QueryPS(h:HPS; VAR s:SIZEL) : LSET;
  109. PROCEDURE ErrorSegmentData(h:HPS; VAR s:LONGCARD; VAR c:LONGINT) : GPIRET;
  110. PROCEDURE QueryDrawControl(h:HPS; c:LONGINT) : LONGINT;
  111. PROCEDURE SetDrawControl(h:HPS; c,v:LONGINT) : BOOLEAN;
  112. PROCEDURE QueryDrawingMode(h:HPS) : LONGINT;
  113. PROCEDURE SetDrawingMode(h:HPS; m:LONGINT) : BOOLEAN;
  114. PROCEDURE QueryStopDraw(h:HPS) : LONGINT;
  115. PROCEDURE SetStopDraw(h:HPS; v:LONGINT) : BOOLEAN;
  116. (*%E*)
  117. (**)
  118. (**--- Gpi Correlation ----------------------------------------------------*)
  119. (**)
  120. (*%T i_CORR*)
  121. CONST
  122. (* options for GpiSetPickApertureSize *)
  123. PICKAP_DEFAULT = 0; PICKAP_REC = 2;
  124. (* type of correlation for GpiCorrelateChain *)
  125. PICKSEL_VISIBLE = 0; PICKSEL_ALL = 1;
  126. PROCEDURE CorrelateChain(h:HPS; t:LONGINT; VAR p:POINTL; m,d:LONGCARD; VAR s:ARRAY OF LONGINT) : LONGINT;
  127. PROCEDURE QueryTag(h:HPS; VAR t:LONGINT) : BOOLEAN;
  128. PROCEDURE SetTag(h:HPS; t:LONGINT) : BOOLEAN;
  129. PROCEDURE QueryPickApertureSize(h:HPS; VAR s:SIZEL) : BOOLEAN;
  130. PROCEDURE SetPickApertureSize(h:HPS; o:LONGINT; VAR s:SIZEL) : BOOLEAN;
  131. PROCEDURE QueryPickAperturePosition(h:HPS; VAR p:POINTL) : BOOLEAN;
  132. PROCEDURE SetPickAperturePosition(h:HPS; VAR p:POINTL) : BOOLEAN;
  133. PROCEDURE QueryBoundaryData(h:HPS; VAR r:RECTL) : BOOLEAN;
  134. PROCEDURE ResetBoundaryData(h:HPS) : BOOLEAN;
  135. PROCEDURE CorrelateFrom(h:HPS; f,l:LONGCARD; t:LONGINT; VAR p:POINTL; m,d:LONGCARD; VAR s:ARRAY OF LONGINT) : LONGINT;
  136. PROCEDURE CorrelateSegment(h:HPS; s,t:LONGINT; VAR p:POINTL; m,d:LONGCARD; VAR a:ARRAY OF LONGINT) : LONGINT;
  137. (*%E*)
  138. (**)
  139. (**--- Gpi Segments -------------------------------------------------------*)
  140. (**)
  141. (*%T i_SEGM*)
  142. CONST
  143. (* data formats for GpiPutData and GpiGetData *)
  144. DFORM_NOCONV = 0; DFORM_S370SHORT = 1; DFORM_PCSHORT = 2; DFORM_PCLONG = 4;
  145. (* segment attributes used by GpiSet/QuerySegmentAttrs and others *)
  146. ATTR_ERROR = -1; ATTR_DETECTABLE = 1; ATTR_VISIBLE = 2; ATTR_CHAINED = 6;
  147. ATTR_DYNAMIC = 8; ATTR_FASTCHAIN = 9; ATTR_PROP_DETECTABLE = 10; ATTR_PROP_VISIBLE = 11;
  148. ATTR_OFF = 0; ATTR_ON = 1;
  149. (* segment priority used by GpiSetSegmentPriority and others *)
  150. LOWER_PRI = -1; HIGHER_PRI = 1;
  151. (* segment control functions *)
  152. PROCEDURE OpenSegment(h:HPS; s:LONGCARD) : BOOLEAN;
  153. PROCEDURE CloseSegment(h:HPS) :BOOLEAN;
  154. PROCEDURE DeleteSegment(h:HPS; s:LONGCARD) : BOOLEAN;
  155. PROCEDURE QueryInitialSegmentAttrs(h:HPS; a:LONGINT) : LONGINT;
  156. PROCEDURE SetInitialSegmentAttrs(h:HPS; a,v:LONGINT) : BOOLEAN;
  157. PROCEDURE QuerySegmentAttrs(h:HPS; i:LONGCARD; a:LONGINT) : LONGINT;
  158. PROCEDURE SetSegmentAttrs(h:HPS; s:LONGCARD; a,v:LONGINT) : BOOLEAN;
  159. PROCEDURE QuerySegmentPriority(h:HPS; s:LONGCARD; o:LONGINT) : GPIRET;
  160. PROCEDURE SetSegmentPriority(h:HPS; s,r:LONGCARD; o:LONGINT) : BOOLEAN;
  161. PROCEDURE DeleteSegments(h:HPS; f,l:LONGCARD) : BOOLEAN;
  162. PROCEDURE QuerySegmentNames(h:HPS; f,l,m:LONGCARD; VAR s:ARRAY OF LONGCARD) : GPIRET;
  163. (* draw functions for segments *)
  164. PROCEDURE GetData(h:HPS; s:LONGCARD; VAR o:LONGINT; f:LONGCARD; l:LONGCARD; VAR d:ARRAY OF BYTE) : GPIRET;
  165. PROCEDURE PutData(h:HPS; f:LONGINT; VAR c:LONGCARD; d:ARRAY OF BYTE) : HITSRET;
  166. PROCEDURE DrawChain(h:HPS) : BOOLEAN;
  167. PROCEDURE DrawFrom(h:HPS; f,l:LONGCARD) : BOOLEAN;
  168. PROCEDURE DrawSegment(h:HPS; s:LONGCARD) : BOOLEAN;
  169. PROCEDURE DrawDynamics(h:HPS) : BOOLEAN;
  170. PROCEDURE RemoveDynamics(h:HPS; f,l:LONGCARD) : BOOLEAN;
  171. (*%E*)
  172. (**)
  173. (**--- Gpi Segment Editing ------------------------------------------------*)
  174. (**)
  175. (*%T i_SEGMEDIT*)
  176. CONST
  177. (* edit modes used by GpiSet/QueryEditMode *)
  178. SEGEM_ERROR = 0; SEGEM_INSERT = 1; SEGEM_REPLACE = 2;
  179. (*** segment editing by element functions *)
  180. PROCEDURE BeginElement(h:HPS; t:LONGINT; d:ARRAY OF CHAR) : BOOLEAN;
  181. PROCEDURE EndElement(h:HPS) : BOOLEAN;
  182. PROCEDURE Label(h:HPS; l:LONGINT) : BOOLEAN;
  183. PROCEDURE Element(h:HPS; t:LONGINT; s:ARRAY OF CHAR; l:LONGCARD; VAR d:ARRAY OF BYTE) : HITSRET;
  184. PROCEDURE QueryElement(h:HPS; o,m:LONGCARD; VAR b:ARRAY OF BYTE) : GPIRET;
  185. PROCEDURE DeleteElement(h:HPS) : BOOLEAN;
  186. PROCEDURE DeleteElementRange(h:HPS; f,l:LONGINT) : BOOLEAN;
  187. PROCEDURE DeleteElementsBetweenLabels(h:HPS; f,l:LONGINT) : BOOLEAN;
  188. PROCEDURE QueryEditMode(h:HPS) : LONGINT;
  189. PROCEDURE SetEditMode(h:HPS; m:LONGINT) : BOOLEAN;
  190. PROCEDURE QueryElementPointer(h:HPS) : GPIRET;
  191. PROCEDURE SetElementPointer(h:HPS; e:LONGINT) : BOOLEAN;
  192. PROCEDURE OffsetElementPointer(h:HPS; o:LONGINT) : BOOLEAN;
  193. PROCEDURE QueryElementType(h:HPS; VAR t:LONGINT; c:LONGCARD; VAR d:ARRAY OF CHAR) : GPIRET;
  194. PROCEDURE SetElementPointerAtLabel(h:HPS; l:LONGINT) : BOOLEAN;
  195. (*%E*)
  196. (**)
  197. (**--- Gpi Transforms -----------------------------------------------------*)
  198. (**)
  199. (*%T i_TRANSF*)
  200. CONST
  201. (* co-ordinates space for GpiConvert *)
  202. CVTC_WORLD = 1; CVTC_MODEL = 2; CVTC_DEFAULTPAGE = 3; CVTC_PAGE = 4;
  203. CVTC_DEVICE = 5;
  204. (* type of transformation for GpiSetSegmentTransformMatrix *)
  205. TRANSFORM_REPLACE = 0; TRANSFORM_ADD = 1; TRANSFORM_PREEMPT = 2;
  206. TYPE
  207. (* transform matrix *)
  208. MATRIXLF = RECORD
  209. M11,M12 : FIXED;
  210. M13 : LONGINT;
  211. M21,M22 : FIXED;
  212. M23 : LONGINT;
  213. M31,M32,M33 : LONGINT;
  214. END;
  215. PROCEDURE QuerySegmentTransformMatrix(h:HPS; s,c:LONGCARD; VAR m:ARRAY OF MATRIXLF) : BOOLEAN;
  216. PROCEDURE SetSegmentTransformMatrix(h:HPS; s,c:LONGCARD; m:ARRAY OF MATRIXLF; o:LONGINT) : BOOLEAN;
  217. PROCEDURE Convert(h:HPS; s,t:LONGINT; c:LONGCARD; VAR p:ARRAY OF POINTL) : BOOLEAN;
  218. PROCEDURE QueryModelTransformMatrix(h:HPS; c:LONGCARD; VAR m:MATRIXLF) : BOOLEAN;
  219. PROCEDURE SetModelTransformMatrix(h:HPS; c:LONGCARD; m:ARRAY OF MATRIXLF; o:LONGINT) : BOOLEAN;
  220. PROCEDURE CallSegmentMatrix(h:HPS; s:LONGCARD; c:LONGCARD; VAR m:MATRIXLF; o:LONGINT) : HITSRET;
  221. PROCEDURE QueryDefaultViewMatrix(h:HPS; c:LONGCARD; VAR m:ARRAY OF MATRIXLF) : BOOLEAN;
  222. PROCEDURE SetDefaultViewMatrix(h:HPS; c:LONGCARD; m:ARRAY OF MATRIXLF; o:LONGINT) : BOOLEAN;
  223. PROCEDURE QueryPageViewport(h:HPS; VAR r:RECTL) : BOOLEAN;
  224. PROCEDURE SetPageViewport(h:HPS; VAR r:RECTL) : BOOLEAN;
  225. PROCEDURE QueryViewingTransformMatrix(h:HPS; c:LONGCARD; VAR m:ARRAY OF MATRIXLF) : BOOLEAN;
  226. PROCEDURE SetViewingTransformMatrix(h:HPS; c:LONGCARD; m:ARRAY OF MATRIXLF; o:LONGINT) : BOOLEAN;
  227. (*** transform helper routines *)
  228. PROCEDURE Translate(h: HPS; VAR m: MATRIXLF; l:LONGINT; VAR p:POINTL): BOOLEAN;
  229. PROCEDURE Scale(h: HPS; VAR m:MATRIXLF; l:LONGINT; VAR f:FIXED; VAR p:POINTL): BOOLEAN;
  230. PROCEDURE Rotate(h: HPS; VAR m:MATRIXLF; l:LONGINT; f:FIXED; VAR p:POINTL): BOOLEAN;
  231. (*** general clipping functions *)
  232. PROCEDURE SetGraphicsField(h:HPS; VAR r:RECTL) : BOOLEAN;
  233. PROCEDURE QueryGraphicsField(h:HPS; VAR r:RECTL) : BOOLEAN;
  234. PROCEDURE SetViewingLimits(h:HPS; VAR r:RECTL) : BOOLEAN;
  235. PROCEDURE QueryViewingLimits(h:HPS; VAR r:RECTL) : BOOLEAN;
  236. (*%E*)
  237. (**)
  238. (**--- Gpi Paths ----------------------------------------------------------*)
  239. (**)
  240. (*%T i_PATH*)
  241. CONST
  242. (* modes for GpiModifyPath *)
  243. MPATH_STROKE = 6;
  244. (* modes for GpiFillPath *)
  245. FPATH_ALTERNATE = 0; FPATH_WINDING = 2;
  246. (* modes for GpiSetClipPath *)
  247. SCP_ALTERNATE = 0; SCP_WINDING = 2; SCP_AND = 4; SCP_RESET = 0;
  248. PROCEDURE BeginPath(h:HPS; i:LONGINT) : BOOLEAN;
  249. PROCEDURE EndPath(h:HPS) : BOOLEAN;
  250. PROCEDURE CloseFigure(h:HPS) : BOOLEAN;
  251. PROCEDURE ModifyPath(h:HPS; p:LONGCARD; m:LONGINT) : BOOLEAN;
  252. PROCEDURE FillPath(h:HPS; p:LONGCARD; o:LONGINT) : HITSRET;
  253. PROCEDURE SetClipPath(h:HPS; p:LONGCARD; o:LONGINT) : BOOLEAN;
  254. PROCEDURE OutlinePath(h:HPS; Path: LONGINT; Options: LONGINT): LONGINT;
  255. PROCEDURE StrokePath(h:HPS; p,o:LONGCARD) : HITSRET;
  256. (*%E*)
  257. (**)
  258. (**--- Gpi Logical Color Tables -------------------------------------------*)
  259. (**)
  260. (*%T i_COLORTAB*)
  261. CONST
  262. (* options for GpiCreateLogColorTable and others *)
  263. LCOL_RESET = LSET(01H); LCOL_REALIZABLE = LSET(02H); LCOL_PURECOLOR = LSET(04H);
  264. (* format of logical lColor table for GpiCreateLogColorTable and others *)
  265. LCOLF_DEFAULT = 0; LCOLF_INDRGB = 1; LCOLF_CONSECRGB = 2; LCOLF_RGB = 3;
  266. (* options for GpiQueryRealColors and others *)
  267. LCOLOPT_REALIZED = LSET(01H); LCOLOPT_INDEX = LSET(02H);
  268. (* return codes from GpiQueryLogColorTable to indicate it is in RGB mode *)
  269. QLCT_ERROR = -1; QLCT_RGB = -2;
  270. (* GpiQueryLogColorTable index returned for colors not explicitly loaded *)
  271. QLCT_NOTLOADED = -1;
  272. (* return codes for GpiQueryColorData *)
  273. QCD_LCT_FORMAT = 0; QCD_LCT_LOINDEX = 1; QCD_LCT_HIINDEX = 2;
  274. (* logical lColor table functions *)
  275. PROCEDURE CreateLogColorTable(h:HPS; o:LSET; f:LONGINT; s,c:LONGCARD; VAR t:ARRAY OF LONGINT) : BOOLEAN;
  276. PROCEDURE RealizeColorTable(h:HPS) : BOOLEAN;
  277. PROCEDURE UnrealizeColorTable(h:HPS) : BOOLEAN;
  278. PROCEDURE QueryColorData(h:HPS; c:LONGCARD; VAR a:ARRAY OF LONGINT) : BOOLEAN;
  279. PROCEDURE QueryLogColorTable(h:HPS; o:LSET; s,c:LONGCARD; VAR a:ARRAY OF LONGINT) : LONGINT;
  280. PROCEDURE QueryRealColors(h:HPS; o:LSET; s,c:LONGCARD; VAR a:ARRAY OF LONGINT) : GPIRET;
  281. PROCEDURE QueryNearestColor(h:HPS; o:LSET; r:LONGINT) : GPIRET;
  282. PROCEDURE QueryColorIndex(h:HPS; o:LSET; c:LONGINT) : LONGINT;
  283. PROCEDURE QueryRGBColor(h:HPS; o:LSET; i:LONGINT) : GPIRET;
  284. (*%E*)
  285. (**)
  286. (**--- Gpi Common Primitives ----------------------------------------------*)
  287. (**)
  288. (*%T i_PRIM1*)
  289. CONST
  290. (* default color table indices *)
  291. CLR_FALSE = -5;
  292. CLR_TRUE = -4;
  293. CLR_ERROR = -255;
  294. CLR_DEFAULT = -3;
  295. CLR_WHITE = -2;
  296. CLR_BLACK = -1;
  297. CLR_BACKGROUND = 0;
  298. CLR_BLUE = 1;
  299. CLR_RED = 2;
  300. CLR_PINK = 3;
  301. CLR_GREEN = 4;
  302. CLR_CYAN = 5;
  303. CLR_YELLOW = 6;
  304. CLR_NEUTRAL = 7;
  305. CLR_DARKGRAY = 8;
  306. CLR_DARKBLUE = 9;
  307. CLR_DARKRED = 10;
  308. CLR_DARKPINK = 11;
  309. CLR_DARKGREEN = 12;
  310. CLR_DARKCYAN = 13;
  311. CLR_BROWN = 14;
  312. CLR_PALEGRAY = 15;
  313. (* rgb colors *)
  314. RGB_ERROR = -255; RGB_BLACK = 00H; RGB_BLUE = 0FFH; RGB_GREEN = 0FF00H;
  315. RGB_CYAN = 0FFFFH; RGB_RED = 0FF0000H; RGB_PINK = 0FF00FFH; RGB_YELLOW = 0FFFF00H;
  316. RGB_WHITE = 0FFFFFFH;
  317. (* control flags used by GpiBeginArea *)
  318. BA_NOBOUNDARY = LSET(0); BA_BOUNDARY = LSET(01H); BA_ALTERNATE = LSET(0); BA_WINDING = LSET(02H);
  319. (* fill options for GpiBox/GpiFullArc *)
  320. DRO_FILL = 1; DRO_OUTLINE = 2; DRO_OUTLINEFILL = 3;
  321. (* basic pattern symbols *)
  322. PATSYM_ERROR = -1; PATSYM_DEFAULT = 0; PATSYM_DENSE1 = 1; PATSYM_DENSE2 = 2;
  323. PATSYM_DENSE3 = 3; PATSYM_DENSE4 = 4; PATSYM_DENSE5 = 5; PATSYM_DENSE6 = 6;
  324. PATSYM_DENSE7 = 7; PATSYM_DENSE8 = 8; PATSYM_VERT = 9; PATSYM_HORIZ = 10;
  325. PATSYM_DIAG1 = 11; PATSYM_DIAG2 = 12; PATSYM_DIAG3 = 13; PATSYM_DIAG4 = 14;
  326. PATSYM_NOSHADE = 15; PATSYM_SOLID = 16; PATSYM_BLANK = 64; PATSYM_HALFTONE = 17;
  327. (* lcid values for GpiSet/QueryPattern and others *)
  328. LCID_ERROR = -1; LCID_DEFAULT = 0;
  329. PROCEDURE SetColor(h:HPS; c:LONGINT) : BOOLEAN;
  330. PROCEDURE QueryColor(h:HPS) : LONGINT;
  331. PROCEDURE Box(h:HPS; c:LONGINT; VAR p:POINTL; hr,vr:LONGINT) : HITSRET;
  332. PROCEDURE Move(h:HPS; VAR p:POINTL) : BOOLEAN;
  333. PROCEDURE Line(h:HPS; VAR p:POINTL) : HITSRET;
  334. PROCEDURE PolyLine(h:HPS; c:LONGCARD; p:ARRAY OF POINTL) : GPIRET;
  335. PROCEDURE SetPattern(h:HPS; p:LONGINT) : BOOLEAN;
  336. PROCEDURE QueryPattern(h:HPS) : LONGINT;
  337. PROCEDURE BeginArea(h:HPS; o:LSET) : BOOLEAN;
  338. PROCEDURE EndArea(h:HPS) : HITSRET;
  339. PROCEDURE CharString(h:HPS; c:LONGCARD; s:ARRAY OF CHAR) : HITSRET;
  340. PROCEDURE CharStringAt(h:HPS; VAR p:POINTL; c:LONGCARD; s:ARRAY OF CHAR) : HITSRET;
  341. (*%E*)
  342. (**)
  343. (**--- Gpi Uncommon Primitives --------------------------------------------*)
  344. (**)
  345. (*%T i_PRIM2*)
  346. CONST
  347. (* mode for GpiSetAttrMode *)
  348. AM_ERROR = -1; AM_PRESERVE = 0; AM_NOPRESERVE = 1;
  349. (* foreground mixes *)
  350. FM_ERROR = -1; FM_DEFAULT = 0; FM_OR = 1; FM_OVERPAINT = 2;
  351. FM_LEAVEALONE = 5; FM_XOR = 4; FM_AND = 6; FM_SUBTRACT = 7;
  352. FM_MASKSRCNOT = 8; FM_ZERO = 9; FM_NOTMERGESRC = 10; FM_NOTXORSRC = 11;
  353. FM_INVERT = 12; FM_MERGESRCNOT = 13; FM_NOTCOPYSRC = 14; FM_MERGENOTSRC = 15;
  354. FM_NOTMASKSRC = 16; FM_ONE = 17;
  355. (* background mixes *)
  356. BM_ERROR = -1; BM_DEFAULT = 0; BM_OVERPAINT = 2; BM_LEAVEALONE = 5;
  357. BM_OR = 1; BM_XOR = 4;
  358. (* basic line type styles *)
  359. LINETYPE_ERROR = -1; LINETYPE_DEFAULT = 0; LINETYPE_DOT = 1; LINETYPE_SHORTDASH = 2;
  360. LINETYPE_DASHDOT = 3; LINETYPE_DOUBLEDOT = 4; LINETYPE_LONGDASH = 5; LINETYPE_DASHDOUBLEDOT = 6;
  361. LINETYPE_SOLID = 7; LINETYPE_INVISIBLE = 8; LINETYPE_ALTERNATE = 9;
  362. (* cosmetic line widths *)
  363. LINEWIDTH_ERROR = -1; LINEWIDTH_DEFAULT = 0; LINEWIDTH_NORMAL = 010000H;
  364. (* actual line widths *)
  365. LINEWIDTHGEOM_ERROR = -1;
  366. (* line end styles *)
  367. LINEEND_ERROR = -1; LINEEND_DEFAULT = 0; LINEEND_FLAT = 1; LINEEND_SQUARE = 2;
  368. LINEEND_ROUND = 3;
  369. (* line join styles *)
  370. LINEJOIN_ERROR = -1; LINEJOIN_DEFAULT = 0; LINEJOIN_BEVEL = 1; LINEJOIN_ROUND = 2;
  371. LINEJOIN_MITRE = 3;
  372. (* character directions *)
  373. CHDIRN_ERROR = -1; CHDIRN_DEFAULT = 0; CHDIRN_LEFTRIGHT = 1; CHDIRN_TOPBOTTOM = 2;
  374. CHDIRN_RIGHTLEFT = 3; CHDIRN_BOTTOMTOP = 4;
  375. (* character modes *)
  376. CM_ERROR = -1; CM_DEFAULT = 0; CM_MODE1 = 1; CM_MODE2 = 2;
  377. CM_MODE3 = 3;
  378. (* basic marker symbols *)
  379. MARKSYM_ERROR = -1; MARKSYM_DEFAULT = 0; MARKSYM_CROSS = 1; MARKSYM_PLUS = 2;
  380. MARKSYM_DIAMOND = 3; MARKSYM_SQUARE = 4; MARKSYM_SIXPOINTSTAR = 5; MARKSYM_EIGHTPOINTSTAR = 6;
  381. MARKSYM_SOLIDDIAMOND = 7; MARKSYM_SOLIDSQUARE = 8; MARKSYM_DOT = 9; MARKSYM_SMALLCIRCLE = 10;
  382. MARKSYM_BLANK = 64;
  383. (* formatting options for GpiCharStringPosAt *)
  384. CHS_OPAQUE = LSET(01H); CHS_VECTOR = LSET(02H); CHS_LEAVEPOS = LSET(08H); CHS_CLIP = LSET(010H);
  385. (* bundle codes for GpiSetAttributes and GpiQueryAttributes *)
  386. PRIM_LINE = 1;
  387. PRIM_CHAR = 2;
  388. PRIM_MARKER = 3;
  389. PRIM_AREA = 4;
  390. PRIM_IMAGE = 5;
  391. (* line bundle mask bits *)
  392. LBB_COLOR = LSET{0};
  393. LBB_MIX_MODE = LSET{2};
  394. LBB_WIDTH = LSET{4};
  395. LBB_GEOM_WIDTH = LSET{5};
  396. LBB_TYPE = LSET{6};
  397. LBB_END = LSET{7};
  398. LBB_JOIN = LSET{8};
  399. (* character bundle mask bits *)
  400. CBB_COLOR = LSET{0};
  401. CBB_BACK_COLOR = LSET{1};
  402. CBB_MIX_MODE = LSET{2};
  403. CBB_BACK_MIX_MODE = LSET{3};
  404. CBB_SET = LSET{4};
  405. CBB_MODE = LSET{5};
  406. CBB_BOX = LSET{6};
  407. CBB_ANGLE = LSET{7};
  408. CBB_SHEAR = LSET{8};
  409. CBB_DIRECTION = LSET{9};
  410. (* marker bundle mask bits *)
  411. MBB_COLOR = LSET{0};
  412. MBB_BACK_COLOR = LSET{1};
  413. MBB_MIX_MODE = LSET{2};
  414. MBB_BACK_MIX_MODE = LSET{3};
  415. MBB_SET = LSET{4};
  416. MBB_SYMBOL = LSET{5};
  417. MBB_BOX = LSET{6};
  418. (* pattern bundle mask bits *)
  419. ABB_COLOR = LSET{0};
  420. ABB_BACK_COLOR = LSET{1};
  421. ABB_MIX_MODE = LSET{2};
  422. ABB_BACK_MIX_MODE = LSET{3};
  423. ABB_SET = LSET{4};
  424. ABB_SYMBOL = LSET{5};
  425. ABB_REF_POINT = LSET{6};
  426. (* image bundle mask bits *)
  427. IBB_COLOR = LSET{0};
  428. IBB_BACK_COLOR = LSET{1};
  429. IBB_MIX_MODE = LSET{2};
  430. IBB_BACK_MIX_MODE = LSET{3};
  431. TYPE
  432. (* structure for GpiSetArcParams and GpiQueryArcParams *)
  433. ARCPARAMS = RECORD
  434. P,Q,R,S : LONGINT;
  435. END;
  436. (* variation of SIZE used for FIXEDs *)
  437. SIZEF = RECORD
  438. cx,cy : LONGINT;
  439. END;
  440. (* structure for gradient parameters e.g. for GpiSetCharAngle *)
  441. GRADIENTL = RECORD
  442. x,y : LONGINT;
  443. END;
  444. (* line bundle for GpiSetAttributes and GpiQueryAttributes *)
  445. LINEBUNDLE = RECORD
  446. Color : LONGINT;
  447. Reserved : LONGINT;
  448. MixMode : CARDINAL;
  449. Reserved2 : CARDINAL;
  450. Width : LONGINT;
  451. GeomWidth : LONGINT;
  452. Type : CARDINAL;
  453. End : CARDINAL;
  454. Join : CARDINAL;
  455. END;
  456. (* character bundle for GpiSetAttributes and GpiQueryAttributes *)
  457. CHARBUNDLE = RECORD
  458. Color : LONGINT;
  459. BackColor : LONGINT;
  460. MixMode : CARDINAL;
  461. BackMixMode : CARDINAL;
  462. Set : CARDINAL;
  463. Precision : CARDINAL;
  464. Cell : SIZEF;
  465. Angle : POINTL;
  466. Shear : POINTL;
  467. Direction : CARDINAL;
  468. END;
  469. (* marker bundle for GpiSetAttributes and GpiQueryAttributes *)
  470. MARKERBUNDLE = RECORD
  471. Color : LONGINT;
  472. BackColor : LONGINT;
  473. MixMode : CARDINAL;
  474. BackMixMode : CARDINAL;
  475. Set : CARDINAL;
  476. Symbol : CARDINAL;
  477. Cell : SIZEF;
  478. END;
  479. (* pattern bundle for GpiSetAttributes and GpiQueryAttributes *)
  480. AREABUNDLE = RECORD
  481. Color : LONGINT;
  482. BackColor : LONGINT;
  483. MixMode : CARDINAL;
  484. BackMixMode : CARDINAL;
  485. Set : CARDINAL;
  486. Symbol : CARDINAL;
  487. RefPoint : POINTL;
  488. END;
  489. (* image bundle for GpiSetAttributes and GpiQueryAttributes *)
  490. IMAGEBUNDLE = RECORD
  491. Color : LONGINT;
  492. BackColor : LONGINT;
  493. MixMode : CARDINAL;
  494. BackMixMode : CARDINAL;
  495. END;
  496. (* pointer to any bundle used by GpiSet/QueryAttrs *)
  497. PBUNDLE = FarADDRESS;
  498. CONST
  499. (* array indices for GpiQueryTextBox *)
  500. TXTBOX_TOPLEFT = 0; TXTBOX_BOTTOMLEFT = 1; TXTBOX_TOPRIGHT = 2; TXTBOX_BOTTOMRIGHT = 3;
  501. TXTBOX_CONCAT = 4; TXTBOX_COUNT = 5;
  502. (* return codes for GpiPtVisible *)
  503. PVIS_ERROR = 0; PVIS_INVISIBLE = 1; PVIS_VISIBLE = 2;
  504. (* return codes for GpiRectVisible *)
  505. RVIS_ERROR = 0; RVIS_INVISIBLE = 1; RVIS_PARTIAL = 2; RVIS_VISIBLE = 3;
  506. (*** attribute mode functions *)
  507. PROCEDURE SetAttrMode(h:HPS; m:LONGINT) : BOOLEAN;
  508. PROCEDURE QueryAttrMode(h:HPS) : LONGINT;
  509. PROCEDURE SetAttrs(h:HPS; p:LONGINT; a,d:LSET; b:FarADDRESS) : BOOLEAN;
  510. PROCEDURE QueryAttrs(h:HPS; p:LONGINT; a:LSET; b:FarADDRESS) : LSET;
  511. PROCEDURE SetBackColor(h:HPS; c:LONGINT) : BOOLEAN;
  512. PROCEDURE QueryBackColor(h:HPS) : LONGINT;
  513. PROCEDURE SetMix(h:HPS; m:LONGINT) : BOOLEAN;
  514. PROCEDURE QueryMix(h:HPS) : LONGINT;
  515. PROCEDURE SetBackMix(h:HPS; c:LONGINT) : BOOLEAN;
  516. PROCEDURE QueryBackMix(h:HPS) : LONGINT;
  517. PROCEDURE SetLineType(h:HPS; t:LONGINT) : BOOLEAN;
  518. PROCEDURE QueryLineType(h:HPS) : LONGINT;
  519. PROCEDURE SetLineWidth(h:HPS; w:FIXED) : BOOLEAN;
  520. PROCEDURE QueryLineWidth(h:HPS) : LONGINT;
  521. PROCEDURE SetLineWidthGeom(h:HPS; w:LONGINT) : BOOLEAN;
  522. PROCEDURE QueryLineWidthGeom(h:HPS) : LONGINT;
  523. PROCEDURE SetLineEnd(h:HPS; e:LONGINT) : BOOLEAN;
  524. PROCEDURE QueryLineEnd(h:HPS) : LONGINT;
  525. PROCEDURE SetLineJoin(h:HPS; j:LONGINT) : BOOLEAN;
  526. PROCEDURE QueryLineJoin(h:HPS) : LONGINT;
  527. PROCEDURE SetCurrentPosition(h:HPS; VAR p:POINTL) : BOOLEAN;
  528. PROCEDURE QueryCurrentPosition(h:HPS; VAR p:POINTL) : BOOLEAN;
  529. PROCEDURE SetArcParams(h:HPS; VAR a:ARCPARAMS) : BOOLEAN;
  530. PROCEDURE QueryArcParams(h:HPS; VAR a:ARCPARAMS) : BOOLEAN;
  531. PROCEDURE PointArc(h:HPS; VAR p:POINTL) : HITSRET;
  532. PROCEDURE FullArc(h:HPS; c:LONGINT; m:FIXED) : HITSRET;
  533. PROCEDURE PartialArc(h:HPS; VAR p:POINTL; m:FIXED; a,s:LONGINT) : HITSRET;
  534. PROCEDURE PolyFilletSharp(h:HPS; c:LONGCARD; p:ARRAY OF POINTL; s:ARRAY OF FIXED) : HITSRET;
  535. PROCEDURE PolySpline(h:HPS; c:LONGCARD; p:ARRAY OF POINTL) : HITSRET;
  536. PROCEDURE PolyFillet(h:HPS; c:LONGCARD; p:ARRAY OF POINTL) : HITSRET;
  537. PROCEDURE SetPatternSet(h:HPS; s:LONGINT) : BOOLEAN;
  538. PROCEDURE QueryPatternSet(h:HPS) : LONGINT;
  539. PROCEDURE SetPatternRefPoint(h:HPS; VAR p:POINTL) : BOOLEAN;
  540. PROCEDURE QueryPatternRefPoint(h:HPS; VAR p:POINTL) : BOOLEAN;
  541. PROCEDURE QueryCharStringPos(h:HPS; o:LSET; c:LONGCARD; s:ARRAY OF CHAR; x:ARRAY OF LONGINT; VAR p:ARRAY OF POINTL) : BOOLEAN;
  542. PROCEDURE QueryCharStringPosAt(h:HPS; VAR p:POINTL; o:LSET; c:LONGCARD; s:ARRAY OF CHAR; x:ARRAY OF LONGINT; VAR po:ARRAY OF POINTL) : BOOLEAN;
  543. PROCEDURE QueryTextBox(h:HPS; c:LONGCARD; s:ARRAY OF CHAR; c2:LONGCARD; VAR p:ARRAY OF POINTL) : BOOLEAN;
  544. PROCEDURE QueryDefCharBox(h:HPS; VAR s:SIZEL) : BOOLEAN;
  545. PROCEDURE SetCharSet(h:HPS; i:LONGINT) : BOOLEAN;
  546. PROCEDURE QueryCharSet(h:HPS) : LONGINT;
  547. PROCEDURE SetCharBox(h:HPS; VAR b:SIZEF) : BOOLEAN;
  548. PROCEDURE QueryCharBox(h:HPS; VAR s:SIZEF) : BOOLEAN;
  549. PROCEDURE SetCharAngle(h:HPS; VAR a:GRADIENTL) : BOOLEAN;
  550. PROCEDURE QueryCharAngle(h:HPS; VAR a:GRADIENTL) : BOOLEAN;
  551. PROCEDURE SetCharShear(h:HPS; VAR p:POINTL) : BOOLEAN;
  552. PROCEDURE QueryCharShear(h:HPS; VAR p:POINTL) : BOOLEAN;
  553. PROCEDURE SetCharDirection(h:HPS; d:LONGINT) : BOOLEAN;
  554. PROCEDURE QueryCharDirection(h:HPS) : LONGINT;
  555. PROCEDURE SetCharMode(h:HPS; m:LONGINT) : BOOLEAN;
  556. PROCEDURE QueryCharMode(h:HPS) : LONGINT;
  557. PROCEDURE CharStringPos(h:HPS; VAR r:RECTL; o:LSET; c:LONGCARD; s:ARRAY OF CHAR; VAR i: ARRAY OF LONGINT) : HITSRET;
  558. PROCEDURE CharStringPosAt(h:HPS; VAR p:POINTL; VAR r:RECTL; o:LSET; c:LONGCARD; s:ARRAY OF CHAR; VAR i:ARRAY OF LONGINT) : HITSRET;
  559. PROCEDURE SetMarkerSet(h:HPS; s:LONGINT) : BOOLEAN;
  560. PROCEDURE QueryMarkerSet(h:HPS) : LONGINT;
  561. PROCEDURE SetMarker(h:HPS; s:LONGINT) : BOOLEAN;
  562. PROCEDURE QueryMarker(h:HPS) :LONGINT;
  563. PROCEDURE SetMarkerBox(h:HPS; VAR s:SIZEF) : BOOLEAN;
  564. PROCEDURE QueryMarkerBox(h:HPS; VAR s:SIZEF) : BOOLEAN;
  565. PROCEDURE Marker(h:HPS; VAR p:POINTL) : HITSRET;
  566. PROCEDURE PolyMarker(h:HPS; c:LONGCARD; p:ARRAY OF POINTL) : GPIRET;
  567. PROCEDURE Image(h:HPS; f:LONGINT; VAR s:SIZEL; l:LONGCARD; VAR d:ARRAY OF BYTE) : HITSRET;
  568. PROCEDURE Pop(h:HPS; c:LONGCARD) : BOOLEAN;
  569. PROCEDURE PtVisible(h:HPS; VAR p:POINTL) : LONGINT;
  570. PROCEDURE RectVisible(h:HPS; VAR r:RECTL) : LONGINT;
  571. PROCEDURE Comment(h:HPS; l:LONGCARD; VAR b:ARRAY OF BYTE) : BOOLEAN;
  572. (*%E*)
  573. (**)
  574. (**--- Gpi LCIDS ----------------------------------------------------------*)
  575. (**)
  576. (*%T i_LCID*)
  577. CONST
  578. (* return codes from GpiCreateLogFont *)
  579. FONT_DEFAULT = 1;
  580. FONT_MATCH = 2;
  581. (* lcid type for GpiQuerySetIds *)
  582. LCIDT_FONT = 6;
  583. LCIDT_BITMAP = 7;
  584. LCID_ALL = -1;
  585. TYPE
  586. (* kerning data returned by GpiQueryKerningPairs *)
  587. KERNINGPAIRS = RECORD
  588. FirstChar : INTEGER;
  589. SecondChar : INTEGER;
  590. KerningAmount : INTEGER;
  591. END;
  592. CONST
  593. (* options for GpiQueryFonts *)
  594. QF_PUBLIC = LSET(01H);
  595. QF_PRIVATE = LSET(02H);
  596. TYPE
  597. (* font file descriptions for GpiQueryFontFileDescriptions *)
  598. FFDESCS = ARRAY [0..1] OF ARRAY [0..31] OF CHAR;
  599. CONST
  600. (* values of Selection field of FATTRS structure *)
  601. FATTR_SEL_ITALIC = 001H;
  602. FATTR_SEL_UNDERSCORE = 002H;
  603. FATTR_SEL_OUTLINE = 008H;
  604. FATTR_SEL_STRIKEOUT = 010H;
  605. FATTR_SEL_BOLD = 020H;
  606. (* values of Type field of FATTRS structure *)
  607. FATTR_TYPE_FIXED = 002H;
  608. FATTR_TYPE_KERNING = 004H;
  609. FATTR_TYPE_MBCS = 008H;
  610. FATTR_TYPE_DBCS = 010H;
  611. FATTR_TYPE_ANTIALIASED= 020H;
  612. (* values of FontUse field of FATTRS structure *)
  613. FATTR_FONTUSE_NOMIX = 002H;
  614. FATTR_FONTUSE_OUTLINE = 004H;
  615. FATTR_FONTUSE_TRANSFORMABLE = 008H;
  616. (* size for fields in the font structures *)
  617. FACESIZE = 32;
  618. TYPE
  619. FATTRS = RECORD
  620. RecordLength : CARDINAL;
  621. Selection : CARDINAL;
  622. Match : LONGINT;
  623. FaceName : ARRAY [0..31] OF CHAR;
  624. IdRegistry : CARDINAL;
  625. CodePage : CARDINAL;
  626. MaxBaselineExt : LONGINT;
  627. AveCharWidth : LONGINT;
  628. Type : CARDINAL;
  629. FontUse : CARDINAL;
  630. END;
  631. CONST
  632. (* values of fsType field of FONTMETRICS structure *)
  633. FM_TYPE_FIXED = 0001H;
  634. FM_TYPE_LICENSED = 0002H;
  635. FM_TYPE_KERNING = 0004H;
  636. FM_TYPE_DBCS = 0010H;
  637. FM_TYPE_MBCS = 0018H;
  638. FM_TYPE_64K = 8000H;
  639. (* values of fsDefn field of FONTMETRICS structure *)
  640. FM_DEFN_OUTLINE = 0;
  641. FM_DEFN_GENERIC = 15;
  642. (* values of fsSelection field of FONTMETRICS structure *)
  643. FM_SEL_ITALIC = 0001H;
  644. FM_SEL_UNDERSCORE = 0002H;
  645. FM_SEL_NEGATIVE = 0004H;
  646. FM_SEL_OUTLINE = 0008H; (* Hollow Outline Font *)
  647. FM_SEL_STRIKEOUT = 0010H;
  648. FM_SEL_BOLD = 0020H;
  649. (* values of fsCapabilities field of FONTMETRICS structure *)
  650. FM_CAP_NOMIX = 0001H;
  651. TYPE
  652. FONTMETRICS = RECORD
  653. Familyname : ARRAY [0..31] OF CHAR;
  654. Facename : ARRAY [0..31] OF CHAR;
  655. IdRegistry : INTEGER;
  656. CodePage : INTEGER;
  657. EmHeight : LONGINT;
  658. XHeight : LONGINT;
  659. MaxAscender : LONGINT;
  660. MaxDescender : LONGINT;
  661. LowerCaseAscent : LONGINT;
  662. LowerCaseDescent : LONGINT;
  663. InternalLeading : LONGINT;
  664. ExternalLeading : LONGINT;
  665. AveCharWidth : LONGINT;
  666. MaxCharInc : LONGINT;
  667. EmInc : LONGINT;
  668. MaxBaselineExt : LONGINT;
  669. CharSlope : INTEGER;
  670. InlineDir : INTEGER;
  671. CharRot : INTEGER;
  672. WeightClass : CARDINAL;
  673. WidthClass : CARDINAL;
  674. XDeviceRes : INTEGER;
  675. YDeviceRes : INTEGER;
  676. FirstChar : INTEGER;
  677. LastChar : INTEGER;
  678. DefaultChar : INTEGER;
  679. BreakChar : INTEGER;
  680. NominalPointSize : INTEGER;
  681. MinimumPointSize : INTEGER;
  682. MaximumPointSize : INTEGER;
  683. Type : CARDINAL;
  684. Defn : BITSET;
  685. Selection : CARDINAL;
  686. Capabilities : CARDINAL;
  687. SubscriptXSize : LONGINT;
  688. SubscriptYSize : LONGINT;
  689. SubscriptXOffset : LONGINT;
  690. SubscriptYOffset : LONGINT;
  691. SuperscriptXSize : LONGINT;
  692. SuperscriptYSize : LONGINT;
  693. SuperscriptXOffset : LONGINT;
  694. SuperscriptYOffset : LONGINT;
  695. UnderscoreSize : LONGINT;
  696. UnderscorePosition : LONGINT;
  697. StrikeoutSize : LONGINT;
  698. StrikeoutPosition : LONGINT;
  699. KerningPairs : INTEGER;
  700. Reserved : INTEGER;
  701. Match : LONGINT;
  702. END;
  703. (*** physical and logical font functions *)
  704. PROCEDURE DeleteSetId(h:HPS; i:LONGINT) : BOOLEAN;
  705. PROCEDURE QueryNumberSetIds(h:HPS) : GPIRET;
  706. PROCEDURE QuerySetIds(h:HPS; c:LONGCARD; VAR t:ARRAY OF LONGINT; VAR n:ARRAY OF STR8; VAR i:ARRAY OF LONGCARD) : BOOLEAN;
  707. PROCEDURE LoadFonts(a:HAB; f:ARRAY OF CHAR) : BOOLEAN;
  708. PROCEDURE UnloadFonts(a:HAB; f:ARRAY OF CHAR) : BOOLEAN;
  709. PROCEDURE CreateLogFont(h:HPS; VAR n:STR8; i:LONGCARD; VAR a:FATTRS) : LONGINT;
  710. PROCEDURE QueryFonts(h:HPS; o:LSET; f:ARRAY OF CHAR; VAR c:LONGINT; l:LONGINT; VAR m:ARRAY OF FONTMETRICS) : LONGINT;
  711. PROCEDURE QueryFontMetrics(h:HPS; c:LONGCARD; VAR m:ARRAY OF FONTMETRICS) : BOOLEAN;
  712. PROCEDURE QueryKerningPairs(h:HPS; c:LONGCARD; VAR d:ARRAY OF KERNINGPAIRS) : GPIRET;
  713. PROCEDURE QueryWidthTable(h:HPS; f,c:LONGCARD; VAR d:ARRAY OF LONGCARD) : BOOLEAN;
  714. PROCEDURE SetCp(h:HPS; p:CARDINAL) : BOOLEAN;
  715. PROCEDURE QueryCp(h:HPS) : CARDINAL;
  716. PROCEDURE QueryFontFileDescriptions(a:HAB; f:ARRAY OF CHAR; VAR c:LONGCARD; VAR d:ARRAY OF FFDESCS) : GPIRET;
  717. (*%E*)
  718. (**)
  719. (**--- Gpi Common BITMAP functions ----------------------------------------*)
  720. (**)
  721. (*%T i_BITMAP1*)
  722. CONST
  723. (* rastor operations defined for GpiBitBlt *)
  724. ROP_SRCCOPY = 0CCH; ROP_SRCPAINT = 0EEH; ROP_SRCAND = 088H; ROP_SRCINVERT = 066H;
  725. ROP_SRCERASE = 044H; ROP_NOTSRCCOPY = 033H; ROP_NOTSRCERASE = 011H; ROP_MERGECOPY = 0C0H;
  726. ROP_MERGEPAINT = 0BBH; ROP_PATCOPY = 0F0H; ROP_PATPAINT = 0FBH; ROP_PATINVERT = 05AH;
  727. ROP_DSTINVERT = 055H; ROP_ZERO = 00H; ROP_ONE = 0FFH;
  728. (* Blt options for GpiBitBlt *)
  729. BBO_OR = LSET(0); BBO_AND = LSET(1); BBO_IGNORE = LSET(2);
  730. (* error return for GpiSetBitmap *)
  731. HBM_ERROR = HBITMAP(-1);
  732. (*** bitmap and pel functions *)
  733. PROCEDURE LoadBitmap(s:HPS; r:HMODULE; b:CARDINAL; w,h:LONGCARD) : HBITMAP;
  734. PROCEDURE DeleteBitmap(b:HBITMAP) : BOOLEAN;
  735. PROCEDURE SetBitmap(h:HPS; b:HBITMAP) : HBITMAP;
  736. PROCEDURE BitBlt(t,s:HPS; c:LONGCARD; VAR p:ARRAY OF POINTL; r:LONGCARD; o:LSET) : HITSRET;
  737. PROCEDURE WCBitBlt(h:HPS; b:HBITMAP; c:LONGCARD; p:ARRAY OF POINTL; r:LONGINT; o:LSET) : HITSRET;
  738. (*%E*)
  739. (**)
  740. (**--- Gpi Uncommon BITMAP Funtions ---------------------------------------*)
  741. (**)
  742. (*%T i_BITMAP2*)
  743. CONST
  744. (* usage flags for GpiCreateBitmap *)
  745. CBM_INIT = LSET(04H);
  746. TYPE
  747. (* bitmap parameterization used by GpiCreateBitmap and others *)
  748. BITMAPINFOHEADER = RECORD
  749. Fix : LONGCARD;
  750. x : CARDINAL;
  751. y : CARDINAL;
  752. Planes : CARDINAL;
  753. BitCount : CARDINAL;
  754. END;
  755. (* RGB data for _BITMAPINFO struct *)
  756. RGB = RECORD
  757. Blue : SHORTCARD;
  758. Green : SHORTCARD;
  759. Red : SHORTCARD;
  760. END;
  761. (* bitmap data used by GpiSetBitmapBits and others *)
  762. BITMAPINFO = RECORD
  763. Fix : LONGCARD;
  764. x : CARDINAL;
  765. y : CARDINAL;
  766. Planes : CARDINAL;
  767. BitCount : CARDINAL;
  768. Color : ARRAY [0..0] OF RGB; (* *** *)
  769. END;
  770. CONST
  771. (* error return code for GpiSet/QueryBitmapBits *)
  772. BMB_ERROR = -1;
  773. (*** bitmap and pel functions *)
  774. PROCEDURE CreateBitmap(h:HPS; VAR n:BITMAPINFOHEADER; o:LSET; VAR d:ARRAY OF BYTE; VAR i:BITMAPINFO) : HBITMAP;
  775. PROCEDURE SetBitmapDimension(b:HBITMAP; VAR s:SIZEL) : BOOLEAN;
  776. PROCEDURE QueryBitmapDimension(b:HBITMAP; VAR s:SIZEL) : BOOLEAN;
  777. PROCEDURE QueryDeviceBitmapFormats(h:HPS; c:LONGCARD; VAR a:ARRAY OF LONGINT) : BOOLEAN;
  778. PROCEDURE QueryBitmapParameters(b:HBITMAP; VAR i:BITMAPINFOHEADER) : BOOLEAN;
  779. PROCEDURE QueryBitmapBits(h:HPS; s,n:LONGCARD; VAR b:ARRAY OF BYTE; VAR i:BITMAPINFO) : GPIRET;
  780. PROCEDURE SetBitmapBits(h:HPS; s,n :LONGCARD; b:ARRAY OF BYTE; VAR d:BITMAPINFO) : GPIRET;
  781. PROCEDURE SetPel(h:HPS; VAR p:POINTL) : LONGINT;
  782. PROCEDURE QueryPel(h:HPS; VAR p:POINTL) : GPIRET;
  783. PROCEDURE SetBitmapId(h:HPS; b:HBITMAP; y:LONGINT) : BOOLEAN;
  784. PROCEDURE QueryBitmapHandle(h:HPS; i:LONGINT) : HBITMAP;
  785. (*%E*)
  786. (**)
  787. (**--- Bitmap file formats ------------------------------------------------*)
  788. (**)
  789. (*%T i_BITMAP3*)
  790. (*
  791. * This is the file format structure for Bit Maps, Pointers and Icons
  792. * as stored in the resource file of a PM application.
  793. *
  794. * Notes on file format:
  795. * Each BITMAPFILEHEADER entry is immediately followed by the color table
  796. * for the bit map bits it references.
  797. * Icons and Pointers contain two BITMAPFILEHEADERs for each ARRAYHEADER
  798. * item. The first one is for the ANDXOR mask, the second is for the
  799. * COLOR mask. All offsets are absolute based on the start of the FILE.
  800. *)
  801. TYPE
  802. BITMAPFILEHEADER = RECORD
  803. Type: CARDINAL;
  804. Size: LONGCARD;
  805. xHotspot: INTEGER;
  806. yHotspot: INTEGER;
  807. offBits : LONGCARD;
  808. bmp : BITMAPINFOHEADER;
  809. END;
  810. (* This is the 1.2 device independent format header *)
  811. BITMAPARRAYFILEHEADER = RECORD
  812. Type: CARDINAL;
  813. Size: LONGCARD;
  814. offNext : LONGCARD;
  815. cxDisplay: CARDINAL;
  816. cyDisplay: CARDINAL;
  817. bfh : BITMAPFILEHEADER;
  818. END;
  819. (* These are the identifying values that go in the usType field of the
  820. * BITMAPFILEHEADER and BITMAPARRAYFILEHEADER. (BFT_ => Bit map File Type) *)
  821. CONST
  822. BFT_ICON = 04349H; (* 'IC' *)
  823. BFT_BMAP = 04D42H; (* 'BM' *)
  824. BFT_POINTER = 05450H; (* 'PT' *)
  825. BFT_COLORICON = 04943H; (* 'CI' *)
  826. BFT_COLORPOINTER = 05043H; (* 'CP' *)
  827. BFT_BITMAPARRAY = 04142H; (* 'BA' *)
  828. (*%E*)
  829. (**)
  830. (**--- Gpi Regions --------------------------------------------------------*)
  831. (**)
  832. (*%T i_REGION*)
  833. CONST
  834. (* options for GpiCombineRegion *)
  835. CRGN_OR = 1; CRGN_COPY = 2; CRGN_XOR = 4; CRGN_AND = 6; CRGN_DIFF = 7;
  836. (* usDirection of returned region data for GpiQueryRegionRects *)
  837. RECTDIR_LFRT_TOPBOT = 1; RECTDIR_RTLF_TOPBOT = 2; RECTDIR_LFRT_BOTTOP = 3; RECTDIR_RTLF_BOTTOP = 4;
  838. TYPE
  839. (* control data for GpiQueryRegionRects *)
  840. RGNRECT = RECORD
  841. Start : CARDINAL;
  842. crc : CARDINAL;
  843. crcReturned : CARDINAL;
  844. Direction : CARDINAL;
  845. END;
  846. CONST
  847. (* return code to indicate type of region for GpiCombineRegion and others *)
  848. RGN_ERROR = 0; RGN_NULL = 1; RGN_RECT = 2; RGN_COMPLEX = 3;
  849. (* return codes for GpiPtInRegion *)
  850. PRGN_ERROR = 0; PRGN_OUTSIDE = 1; PRGN_INSIDE = 2;
  851. (* return codes for GpiRectInRegion *)
  852. RRGN_ERROR = 0; RRGN_OUTSIDE = 1; RRGN_PARTIAL = 2; RRGN_INSIDE = 3;
  853. (* return codes for GpiEqualRegion *)
  854. EQRGN_ERROR = 0; EQRGN_NOTEQUAL = 1; EQRGN_EQUAL = 2;
  855. (* error return code for GpiSetRegion *)
  856. HRGN_ERROR = HRGN(-1);
  857. (*** main region functions *)
  858. PROCEDURE CreateRegion(h:HPS; c:LONGCARD; VAR r:ARRAY OF RECTL) : HRGN;
  859. PROCEDURE SetRegion(h:HPS; r:HRGN; c:LONGCARD; a:ARRAY OF RECTL) : BOOLEAN;
  860. PROCEDURE DestroyRegion(h:HPS; r:HRGN) : BOOLEAN;
  861. PROCEDURE CombineRegion(h:HPS; d,s1,s2:HRGN; m:LONGCARD) : LONGINT;
  862. PROCEDURE EqualRegion(h:HPS; s1,s2:HRGN) : LONGINT;
  863. PROCEDURE OffsetRegion(h:HPS; r:HRGN; VAR p:POINTL) : BOOLEAN;
  864. PROCEDURE PtInRegion(h:HPS; r:HRGN; VAR p:POINTL) : LONGINT;
  865. PROCEDURE RectInRegion(h:HPS; r:HRGN; VAR t:RECTL) : LONGINT;
  866. PROCEDURE QueryRegionBox(h:HPS; r:HRGN; VAR b:RECTL) : LONGINT;
  867. PROCEDURE QueryRegionRects(h:HPS; r:HRGN; VAR b:RECTL; VAR c:RGNRECT; VAR a:ARRAY OF RECTL) : BOOLEAN;
  868. PROCEDURE PaintRegion(h:HPS; r:HRGN) : HITSRET;
  869. PROCEDURE SetClipRegion(h:HPS; r:HRGN; VAR o:HRGN) : LONGINT;
  870. PROCEDURE QueryClipRegion(h:HPS) : HRGN;
  871. PROCEDURE QueryClipBox(h:HPS; VAR r:RECTL) : LONGINT;
  872. PROCEDURE IntersectClipRectangle(h:HPS; VAR r:RECTL) : LONGINT;
  873. PROCEDURE ExcludeClipRectangle(h:HPS; VAR r:RECTL) : LONGINT;
  874. PROCEDURE OffsetClipRegion(h:HPS; VAR p:POINTL) : LONGINT;
  875. (*%E*)
  876. (**)
  877. (**--- Gpi Metafiles ------------------------------------------------------*)
  878. (**)
  879. (*%T i_METAF*)
  880. CONST
  881. (* constants for index values of options array for GpiPlayMetafile *)
  882. PMF_SEGBASE = 0; PMF_LOADTYPE = 1; PMF_RESOLVE = 2; PMF_LCIDS = 3;
  883. PMF_RESET = 4; PMF_SUPPRESS = 5; PMF_COLORTABLES = 6; PMF_COLORREALIZABLE = 7;
  884. (* options for GpiPlayMetafile *)
  885. RS_DEFAULT = 0; RS_NODISCARD = 1;
  886. LC_DEFAULT = 0; LC_NOLOAD = 1; LC_LOADDISC = 3;
  887. LT_DEFAULT = 0; LT_NOMODIFY = 1; LT_ORIGINALVIEW = 4;
  888. RES_DEFAULT = 0; RES_NORESET = 1; RES_RESET = 2;
  889. SUP_DEFAULT = 0; SUP_NOSUPPRESS = 1; SUP_SUPPRESS = 2;
  890. CTAB_DEFAULT = 0; CTAB_NOMODIFY = 1; CTAB_REPLACE = 3;
  891. CREA_DEFAULT = 0; CREA_REALIZE = 1; CREA_NOREALIZE = 2;
  892. DDEF_DEFAULT = 0; DDEF_IGNORE = 1; DDEF_LOADDISC = 3;
  893. RSP_DEFAULT = 0; RSP_NODISCARD = 1;
  894. PROCEDURE LoadMetaFile(a:HAB; f:ARRAY OF CHAR) : HMF;
  895. PROCEDURE PlayMetaFile(h:HPS; f:HMF; c1:LONGCARD; VAR o:ARRAY OF LONGINT; VAR s:LONGCARD; c2:LONGCARD; VAR d:ARRAY OF BYTE) : HITSRET;
  896. PROCEDURE SaveMetaFile(f:HMF; n:ARRAY OF CHAR) : BOOLEAN;
  897. PROCEDURE DeleteMetaFile(f:HMF) : BOOLEAN;
  898. PROCEDURE CopyMetaFile(f:HMF) : HMF;
  899. PROCEDURE QueryMetaFileLength(f:HMF) : GPIRET;
  900. PROCEDURE QueryMetaFileBits(f:HMF; o,c:LONGCARD; VAR d:ARRAY OF BYTE) : BOOLEAN;
  901. PROCEDURE SetMetaFileBits(f:HMF; o,c:LONGCARD; d:ARRAY OF BYTE) : BOOLEAN;
  902. (*%E*)
  903. (**)
  904. (**--- Gpi Defaults ------------------------------------------------------*)
  905. (**)
  906. (*%T i_DEFAULT*)
  907. (* default functions *)
  908. PROCEDURE QueryDefArcParams(h:HPS; VAR a:ARCPARAMS): BOOLEAN;
  909. PROCEDURE QueryDefAttrs(h:HPS; Prim: LONGINT; Mask: LONGCARD; bun: PBUNDLE): BOOLEAN;
  910. PROCEDURE QueryDefTag(h:HPS; VAR Tag: LONGINT): BOOLEAN;
  911. PROCEDURE QueryDefViewingLimits(h:HPS; VAR Limits: RECTL): BOOLEAN;
  912. PROCEDURE SetDefArcParams(h:HPS; VAR p: ARCPARAMS): BOOLEAN;
  913. PROCEDURE SetDefAttrs(h:HPS; Prim: LONGINT; Mask: LSET; bun: PBUNDLE): BOOLEAN;
  914. PROCEDURE SetDefTag(h:HPS; Tag: LONGINT): BOOLEAN;
  915. PROCEDURE SetDefViewingLimits(h:HPS; VAR Limits:RECTL): BOOLEAN;
  916. (*%E*)
  917. (**)
  918. (**--- GOCA Orders --------------------------------------------------------*)
  919. (**)
  920. (*%T i_ORDER*)
  921. (* form of RECTL with shorts instead of longs *)
  922. TYPE
  923. RECT1S = RECORD
  924. xLeft,
  925. yBottom,
  926. xRight,
  927. yTop: INTEGER;
  928. END;
  929. (* form of POINTL with 1 byte offsets instead of longs *)
  930. ODPOINT = RECORD
  931. dx,dy: SHORTCARD;
  932. END;
  933. (* form of SIZEL with shorts instead of longs *)
  934. SIZES = RECORD
  935. cx,cy: INTEGER;
  936. END;
  937. (* unsigned two-byte swapped integer *)
  938. SWPUSHORT = RECORD
  939. HiByte: SHORTCARD;
  940. LoByte: SHORTCARD;
  941. END;
  942. CONST
  943. (* 1-byte order codes *)
  944. OCODE_GNOP1 = 000H; (* No-operation *)
  945. OCODE_GESD = 0FFH; (* End symbol definition *)
  946. (* definitions to help determine whether an order code is a 2-byte order *)
  947. OCODE2_1 = 080H;
  948. OCODE2_2 = 088H;
  949. TYPE
  950. (* General 2-byte order structure *)
  951. ORDER = RECORD
  952. Code,Data: SHORTCARD;
  953. END;
  954. CONST
  955. (* 2-byte order codes *)
  956. OCODE_GBAR = 068H; (* Begin area *)
  957. OCODE_GCFIG = 07DH; (* Close figure *)
  958. OCODE_GEEL = 049H; (* End element *)
  959. OCODE_GEPTH = 07FH; (* End path *)
  960. OCODE_GEPROL = 03EH; (* End prologue *)
  961. OCODE_GPOP = 03FH; (* Pop *)
  962. OCODE_GSBMX = 00DH; (* Set background mix *)
  963. OCODE_GPSBMX = 04DH; (* Push & set b/g mix *)
  964. OCODE_GSCD = 03AH; (* Set char direction *)
  965. OCODE_GPSCD = 07AH; (* Push & set char direction *)
  966. OCODE_GSCR = 039H; (* Set char precision *)
  967. OCODE_GPSCR = 079H; (* Push & set char precision *)
  968. OCODE_GSCS = 038H; (* Set char set *)
  969. OCODE_GPSCS = 078H; (* Push & set char set *)
  970. OCODE_GSCOL = 00AH; (* Set color *)
  971. OCODE_GPSCOL = 04AH; (* Push & set color *)
  972. OCODE_GSLE = 01AH; (* Set line end *)
  973. OCODE_GPSLE = 05AH; (* Push & set line end *)
  974. OCODE_GSLJ = 01BH; (* Set line join *)
  975. OCODE_GPSLJ = 05BH; (* Push & set line join *)
  976. OCODE_GSLT = 018H; (* Set line type *)
  977. OCODE_GPSLT = 058H; (* Push & set line type *)
  978. OCODE_GSLW = 019H; (* Set line width *)
  979. OCODE_GPSLW = 059H; (* Push & set line width *)
  980. OCODE_GSMP = 03BH; (* Set marker precision *)
  981. OCODE_GPSMP = 07BH; (* Push & set marker precision *)
  982. OCODE_GSMS = 03CH; (* Set marker set *)
  983. OCODE_GPSMS = 07CH; (* Push & set marker set *)
  984. OCODE_GSMT = 029H; (* Set marker symbol *)
  985. OCODE_GPSMT = 069H; (* Push & set marker symbol *)
  986. OCODE_GSMX = 00CH; (* Set mix *)
  987. OCODE_GPSMX = 04CH; (* Push & set mix *)
  988. OCODE_GSPS = 008H; (* Set pattern set *)
  989. OCODE_GPSPS = 048H; (* Push & set pattern set *)
  990. OCODE_GSPT = 028H; (* Set pattern symbol *)
  991. OCODE_GPSPT = 009H; (* Push & set pattern symbol *)
  992. (* constants for 2-byte orders *)
  993. (* Begin area *)
  994. GBAR_RESERVED = 080H;
  995. GBAR_BOUNDARY = 0C0H;
  996. GBAR_NOBOUNDARY = 080H;
  997. GBAR_WINDING = 0A0H;
  998. GBAR_ALTERNATE = 080H;
  999. (* Set Character Precision *)
  1000. GSCR_PRECISION = 00FH;
  1001. (* definitions to help determine whether an order code is a long order *)
  1002. OCODE_VLONG = 0FEH;
  1003. (* long order structure *)
  1004. LORDER_ML = 253;
  1005. TYPE
  1006. LORDER = RECORD
  1007. Code,length: SHORTCARD;
  1008. Data: ARRAY [0..LORDER_ML] OF SHORTCARD;
  1009. END;
  1010. CONST
  1011. (* Long orders for which the length of data is normally zero *)
  1012. OCODE_GEAR = 060H; (* End Area *)
  1013. OCODE_GEIMG = 093H; (* End Image *)
  1014. (* Long orders for which the data is contained in a type already defined *)
  1015. (* Character String *)
  1016. OCODE_GCCHST = 083H; (* char string at curr posn *)
  1017. GCCHST_MC = 255; (* Max len of string in bytes *)
  1018. OCODE_GCHST = 0C3H; (* char string at given pos *)
  1019. GCHST_SMC = 251; (* Max len of string (S) *)
  1020. GCHST_LMC = 247; (* Max len of string (L) *)
  1021. (* Character String Move *)
  1022. OCODE_GCCHSTM = 0B1H; (* char string move at c.p. *)
  1023. GCCHSTM_MC = 255; (* Max len of string in byte *)
  1024. OCODE_GCHSTM = 0F1H; (* char string move at g.p. *)
  1025. GCHSTM_SMC = 251; (* Max len of string (S) *)
  1026. GCHSTM_LMC = 247; (* Max len of string (L) *)
  1027. (* Comment *)
  1028. OCODE_GCOMT = 001H; (* Comment *)
  1029. GCOMT_ML = 255; (* Maximum len of comment data *)
  1030. (* Image *)
  1031. OCODE_GIMD = 092H; (* Image data *)
  1032. GIMD_ML = 255; (* Maximum len of image data *)
  1033. (* Full Arc *)
  1034. OCODE_GCFARC = 087H; (* full arc at current posn *)
  1035. OCODE_GFARC = 0C7H; (* full arc at given posn *)
  1036. (* Label *)
  1037. OCODE_GLABL = 0D3H; (* Label *)
  1038. (* Set Current Position *)
  1039. OCODE_GSCP = 021H; (* Set current position *)
  1040. OCODE_GPSCP = 061H; (* Push and set curr posn *)
  1041. (* Bezier spline *)
  1042. OCODE_GCBEZ = 0A5H; (* Bezier spline at curr pos *)
  1043. GCBEZ_SMB = 21; (* Max number of splines (S) *)
  1044. GCBEZ_LMB = 10; (* Max number of splines (L) *)
  1045. OCODE_GBEZ = 0E5H; (* Bezier spline at given pos *)
  1046. GBEZ_SMB = 20; (* Max number of splines (S) *)
  1047. GBEZ_LMB = 10; (* Max number of splines (L) *)
  1048. (* Fillet *)
  1049. OCODE_GCFLT = 085H; (* fillet at current posn *)
  1050. GCFLT_SMP = 63; (* Max number of points (S) *)
  1051. GCFLT_LMP = 31; (* Max number of points (L) *)
  1052. OCODE_GFLT = 0C5H; (* fillet at given position *)
  1053. GFLT_SMP = 62; (* Max number of points (S) *)
  1054. GFLT_LMP = 30; (* Max number of points (L) *)
  1055. (* Polyline *)
  1056. OCODE_GCLINE = 081H; (* polyline at current posn *)
  1057. GCLINE_SMP = 63; (* Max number of points (S) *)
  1058. GCLINE_LMP = 31; (* Max number of points (L) *)
  1059. OCODE_GLINE = 0C1H; (* polyline at given posn *)
  1060. GLINE_SMP = 62; (* Max number of points (S) *)
  1061. GLINE_LMP = 30; (* Max number of points (L) *)
  1062. (* Polymarker *)
  1063. OCODE_GCMRK = 082H; (* marker at current posn *)
  1064. GCMRK_SMP = 63; (* Max number of points (S) *)
  1065. GCMRK_LMP = 31; (* Max number of points (L) *)
  1066. OCODE_GMRK = 0C2H; (* marker at given posn *)
  1067. GMRK_SMP = 62; (* Max number of points (S) *)
  1068. GMRK_LMP = 30; (* Max number of points (L) *)
  1069. (* Relative Line *)
  1070. OCODE_GCRLINE = 0A1H; (* Relative line at curr pos *)
  1071. GCRLINE_MP = 127; (* Max number of points *)
  1072. OCODE_GRLINE = 0E1H; (* Relative line at givn pos *)
  1073. GRLINE_SMP = 125; (* Max number of points (S) *)
  1074. GRLINE_LMP = 123; (* Max number of points (L) *)
  1075. (* Set Background Color *)
  1076. OCODE_GSBCOL = 025H; (* Set background color *)
  1077. OCODE_GPSBCOL = 065H; (* Push and set b/g color *)
  1078. (* Set Extended Color *)
  1079. OCODE_GSECOL = 026H; (* Set extended color *)
  1080. OCODE_GPSECOL = 066H; (* Push and set ext color *)
  1081. (* Extended Color values *)
  1082. SECOL_DEFAULT0 = 00000H;
  1083. SECOL_DEFAULT1 = 0FF00H;
  1084. SECOL_NEUTRAL = 0FF07H;
  1085. SECOL_RESET = 0FF08H;
  1086. (* Set Character Angle *)
  1087. OCODE_GSCA = 034H; (* Set character angle *)
  1088. OCODE_GPSCA = 074H; (* Push and set char angle *)
  1089. (* Set Character Shear *)
  1090. OCODE_GSCH = 035H; (* Set character shear *)
  1091. OCODE_GPSCH = 075H; (* Push and set char shear *)
  1092. (* Set Fractional Line Width *)
  1093. OCODE_GSFLW = 011H; (* Set fractional line width *)
  1094. OCODE_GPSFLW = 051H; (* Push and set frac l width *)
  1095. (* Set Pick Identifier *)
  1096. OCODE_GSPIK = 043H; (* Set pick identifier *)
  1097. OCODE_GPSPIK = 023H; (* Push and set pick id *)
  1098. OCODE_GCARC = 086H; (* Arc at Current Position *)
  1099. OCODE_GARC = 0C6H; (* Arc at Given Position *)
  1100. OCODE_GBEL = 0D2H; (* Begin Element *)
  1101. GBEL_DL = 251;
  1102. OCODE_GCBIMG = 091H; (* Begin Image at curr posn *)
  1103. OCODE_GBIMG = 0D1H; (* Begin Image at given posn *)
  1104. OCODE_GBPTH = 0D0H; (* Begin Path *)
  1105. OCODE_GCBOX = 080H; (* Box at current position *)
  1106. OCODE_GBOX = 0C0H; (* Box at given position *)
  1107. GCBOX_FILL = 040H;
  1108. GCBOX_BOUNDARY = 020H;
  1109. OCODE_GCALLS = 007H; (* call segment *)
  1110. OCODE_GFPTH = 0D7H; (* Fill path *)
  1111. GFPTH_ALTERNATE = 000H;
  1112. GFPTH_WINDING = 040H;
  1113. GFPTH_MODIFY = 020H;
  1114. OCODE_GOPTH = 0D4H; (* Outline Path *)
  1115. OCODE_GMPTH = 0D8H; (* modify path *)
  1116. GMPTH_STROKE = 006H;
  1117. OCODE_GCPARC = 0A3H; (* Partial arc at curr posn *)
  1118. OCODE_GPARC = 0E3H; (* Partial arc at given posn *)
  1119. OCODE_GSCPTH = 0B4H; (* Set clip path *)
  1120. GSCPTH_ALTERNATE = 000H;
  1121. GSCPTH_WINDING = 040H;
  1122. GSCPTH_RESET = 000H;
  1123. GSCPTH_INTERSECT = 020H;
  1124. OCODE_GSAP = 022H; (* Set arc parameters *)
  1125. OCODE_GPSAP = 062H; (* Push and set arc params *)
  1126. OCODE_GSBICOL = 0A7H; (* Set b/g indexed color *)
  1127. OCODE_GPSBICOL = 0E7H; (* Push and set b/g ind color *)
  1128. OCODE_GSICOL = 0A6H; (* Set indexed color *)
  1129. OCODE_GPSICOL = 0E6H; (* Push and set indexd color *)
  1130. SICOL_SPECIFY = 000H;
  1131. SICOL_SPECIAL = 040H;
  1132. SICOL_DEFAULT = 080H;
  1133. SICOL_BLACK = 1;
  1134. SICOL_WHITE = 2;
  1135. SICOL_ONES = 4;
  1136. SICOL_ZEROES = 5;
  1137. OCODE_GSCC = 033H; (* Set character cell *)
  1138. OCODE_GPSCC = 003H; (* Push and set char cell *)
  1139. GSCC_ZERODEF = 000H;
  1140. GSCC_ZEROZERO = 080H;
  1141. OCODE_GPSMC = 077H; (* Push and set marker cell *)
  1142. GSMC_ZERODEF = 000H;
  1143. GSMC_ZEROZERO = 080H;
  1144. OCODE_GSPRP = 0A0H; (* Set pattern ref point *)
  1145. OCODE_GPSPRP = 0E0H; (* Push and set patt ref pt *)
  1146. GSPRP_DEFAULT = 080H;
  1147. GSPRP_SPECIFY = 000H;
  1148. OCODE_GSIA = 014H; (* Set individual attribute *)
  1149. OCODE_GPSIA = 054H; (* Push and set ind attr *)
  1150. GSIA_COLOR = 001H;
  1151. GSIA_BCOLOR = 002H;
  1152. GSIA_MIX = 003H;
  1153. GSIA_BMIX = 004H;
  1154. GSIA_LINE = 001H;
  1155. GSIA_CHAR = 002H;
  1156. GSIA_MARKER = 003H;
  1157. GSIA_PATTERN = 004H;
  1158. GSIA_IMAGE = 005H;
  1159. GSIA_SPECIFY = 000H;
  1160. GSIA_SPECIAL = 040H;
  1161. GSIA_DEFAULT = 080H;
  1162. GSIA_BLACK = 1;
  1163. GSIA_WHITE = 2;
  1164. GSIA_ONES = 4;
  1165. GSIA_ZEROES = 5;
  1166. OCODE_GSTM = 024H; (* Set model transform *)
  1167. OCODE_GPSTM = 064H; (* Push and set model tfm *)
  1168. OCODE_GSTV = 031H; (* Set Viewing Transform *)
  1169. GSTM_ML = 16;
  1170. GSTM_M11 = 08000H;
  1171. GSTM_M12 = 04000H;
  1172. GSTM_M13 = 02000H;
  1173. GSTM_M14 = 01000H;
  1174. GSTM_M21 = 00800H;
  1175. GSTM_M22 = 00400H;
  1176. GSTM_M23 = 00200H;
  1177. GSTM_M24 = 00100H;
  1178. GSTM_M31 = 00080H;
  1179. GSTM_M32 = 00040H;
  1180. GSTM_M33 = 00020H;
  1181. GSTM_M34 = 00010H;
  1182. GSTM_M41 = 00008H;
  1183. GSTM_M42 = 00004H;
  1184. GSTM_M43 = 00002H;
  1185. GSTM_M44 = 00001H;
  1186. GSTM_UNITY = 000H;
  1187. GSTM_AFTER = 001H;
  1188. GSTM_BEFORE = 002H;
  1189. GSTM_OVERWRITE = 003H;
  1190. GSTV_OVERWRITE = 000H;
  1191. GSTV_AFTER = 004H;
  1192. OCODE_GSSB = 032H; (* Set segment boundary *)
  1193. OCODE_GSVW = 027H; (* Set viewing window *)
  1194. OCODE_GPSVW = 067H; (* Push and set view window *)
  1195. GSSB_ML = 4;
  1196. GSSB_XLEFT = 020H;
  1197. GSSB_XRIGHT = 010H;
  1198. GSSB_YBOTTOM = 008H;
  1199. GSSB_YTOP = 004H;
  1200. GSVW_INTERSECT = 000H;
  1201. GSVW_REPLACE = 080H;
  1202. OCODE_GSGCH = 004H; (* Set segment characteristics *)
  1203. GSGCH_ML = 254;
  1204. OCODE_GSSLW = 015H; (* Set stroke line width *)
  1205. OCODE_GPSSLW = 055H; (* Push and set strk l width *)
  1206. GSSLW_DEFAULT = 080H;
  1207. GSSLW_SPECIFY = 000H;
  1208. OCODE_GCSFLT = 0A4H; (* Sharp fillet at curr pos *)
  1209. OCODE_GSFLT = 0E4H; (* Sharp fillet at given pos *)
  1210. GCSFLT_SMF = 21;
  1211. GSFLT_SMF = 20;
  1212. GCSFLT_LMF = 12;
  1213. GSFLT_LMF = 12;
  1214. OCODE_GBBLT = 0D6H; (* Bitblt *)
  1215. OCODE_GESCP = 0D5H; (* Escape *)
  1216. GESCP_ML = 253;
  1217. GESCP_REG = 080H; (* identifier is registered *)
  1218. GEBB_REGID = 002H; (* uchIdent - Bitblt *)
  1219. ETYPE_GEBB = 0800200D5H;
  1220. GEBB_LMP = 29;
  1221. GEPEL_REGID = 001H; (* uchIdent - Set Pel *)
  1222. ETYPE_GEPEL = 0800100D5H;
  1223. ETYPE_LINEBUNDLE = 00000FD01H;
  1224. ETYPE_CHARBUNDLE = 00000FD02H;
  1225. ETYPE_MARKERBUNDLE = 00000FD03H;
  1226. ETYPE_AREABUNDLE = 00000FD04H;
  1227. ETYPE_IMAGEBUNDLE = 00000FD05H;
  1228. (***************************************************************************\
  1229. *
  1230. * Very long orders
  1231. *
  1232. \***************************************************************************)
  1233. (* Very long order structure *)
  1234. CONST
  1235. VORDER_ML = 65530;
  1236. TYPE
  1237. VORDER = RECORD
  1238. Code: SHORTCARD;
  1239. Qual: SHORTCARD;
  1240. Length: SWPUSHORT;
  1241. DATA: ARRAY [0..VORDER_ML-1] OF SHORTCARD;
  1242. END;
  1243. CONST
  1244. (* Character String Extended *)
  1245. OCODEQ_GCCHSTE = 0B0H; (* Qualifier - current posn *)
  1246. OCODEQ_GCHSTE = 0F0H; (* Qualifier - given position *)
  1247. ETYPE_GCCHSTE = 00000FEB0H;
  1248. ETYPE_GCHSTE = 00000FEF0H;
  1249. GCCHSTE_DRAWRECT = 080H;
  1250. GCCHSTE_NORECT = 000H;
  1251. GCCHSTE_CLIP = 040H;
  1252. GCCHSTE_NOCLIP = 000H;
  1253. GCCHSTE_DEEMPHASIZE = 020H;
  1254. GCCHSTE_NODEEMPHASIZE = 000H;
  1255. GCCHSTE_LEAVEPOS = 010H;
  1256. GCCHSTE_MOVEPOS = 000H;
  1257. OCODEQ_GEESCP = 0D5H; (* Qualifier - extended escape *)
  1258. (*%E*)
  1259. (**)
  1260. (**--- Font stuff ---------------------------------------------------------*)
  1261. (**)
  1262. (*%T i_FONT*)
  1263. TYPE
  1264. FOCAMETRICS = RECORD
  1265. Identity : LONGCARD;
  1266. Size : LONGCARD;
  1267. Familyname: ARRAY[0..31] OF CHAR;
  1268. Facename : ARRAY[0..31] OF CHAR;
  1269. RegistryId: INTEGER;
  1270. CodePage : INTEGER;
  1271. EmHeight : INTEGER;
  1272. XHeight : INTEGER;
  1273. yMaxAscender : INTEGER;
  1274. yMaxDescender : INTEGER;
  1275. yLowerCaseAscent : INTEGER;
  1276. yLowerCaseDescent: INTEGER;
  1277. yInternalLeading : INTEGER;
  1278. yExternalLeading : INTEGER;
  1279. xAveCharWidth : INTEGER;
  1280. xMaxCharInc : INTEGER;
  1281. xEmInc : INTEGER;
  1282. yMaxBaselineExt : INTEGER;
  1283. CharSlope : INTEGER;
  1284. InlineDir : INTEGER;
  1285. CharRot : INTEGER;
  1286. WeightClass: CARDINAL;
  1287. WidthClass : CARDINAL;
  1288. xDeviceRes : INTEGER;
  1289. yDeviceRes : INTEGER;
  1290. FirstChar : INTEGER;
  1291. LastChar : INTEGER;
  1292. DefaultChar: INTEGER;
  1293. BreakChar : INTEGER;
  1294. NominalPointSize : INTEGER;
  1295. MinimumPointSize : INTEGER;
  1296. MaximumPointSize : INTEGER;
  1297. TypeFlags : INTEGER;
  1298. Defn : INTEGER;
  1299. SelectionFlags : INTEGER;
  1300. Capabilities : INTEGER;
  1301. ySubscriptXSize : INTEGER;
  1302. ySubscriptYSize : INTEGER;
  1303. ySubscriptXOffset: INTEGER;
  1304. ySubscriptYOffset: INTEGER;
  1305. ySuperscriptXSize: INTEGER;
  1306. ySuperscriptYSize: INTEGER;
  1307. ySuperscriptXOffset: INTEGER;
  1308. ySuperscriptYOffset: INTEGER;
  1309. yUnderscoreSize : INTEGER;
  1310. yUnderscorePosition: INTEGER;
  1311. yStrikeoutSize : INTEGER;
  1312. yStrikeoutPosition : INTEGER;
  1313. KerningPairs : INTEGER;
  1314. FamilyClass : INTEGER;
  1315. DeviceNameOffset: FarADDRESS;
  1316. END;
  1317. FONTDEFINITIONHEADER = RECORD
  1318. Identity: LONGCARD;
  1319. Size : LONGCARD;
  1320. Fontdef : INTEGER;
  1321. Chardef : INTEGER;
  1322. CellSize: INTEGER;
  1323. xCellWidth : INTEGER;
  1324. yCellHeight : INTEGER;
  1325. xCellIncrement: INTEGER;
  1326. xCellA : INTEGER;
  1327. xCellB : INTEGER;
  1328. xCellC : INTEGER;
  1329. pCellBaseOffset: INTEGER;
  1330. END;
  1331. CONST
  1332. FONTDEFFONT1 = 0047H; (* set width, height, inc. & base offset *)
  1333. FONTDEFFONT2 = 0042H; (* set height & base offset *)
  1334. FONTDEFFONT3 = 0042H; (* set height & base offset *)
  1335. FONTDEFCHAR1 = 0081H; (* set char offset and width *)
  1336. FONTDEFCHAR2 = 0081H; (* set char offset and width *)
  1337. FONTDEFCHAR3 = 00B8H; (* set char offset, A, B, and C space *)
  1338. SPACE_UNDEF = 08000H; (* space undefined = take default *)
  1339. TYPE
  1340. FONTSIGNATURE = RECORD
  1341. Identity : LONGCARD;
  1342. Size : LONGCARD;
  1343. Signature: ARRAY [0..11] OF CHAR;
  1344. END;
  1345. FOCAFONT = RECORD
  1346. Signature : FONTSIGNATURE;
  1347. Metrics : FOCAMETRICS;
  1348. Definitions: FONTDEFINITIONHEADER;
  1349. END;
  1350. CONST
  1351. FONT_SIGNATURE = 0FFFFFFFEH; (* Identity header start *)
  1352. FONT_METRICS = 000000001H; (* Identity metrics *)
  1353. FONT_DEFINITION = 000000002H; (* Identity definition *)
  1354. FONT_ENDRECORD = 0FFFFFFFFH; (* Identity record end *)
  1355. (* Options for QueryFonts *)
  1356. QUERY_PUBLIC_FONTS = 01H;
  1357. QUERY_PRIVATE_FONTS = 02H;
  1358. CDEF_GENERIC = 00001H;
  1359. CDEF_BOLD = 00002H;
  1360. CDEF_ITALIC = 00004H;
  1361. CDEF_UNDERSCORE = 00008H;
  1362. CDEF_STRIKEOUT = 00010H;
  1363. CDEF_OUTLINE = 00020H;
  1364. (*%E*)
  1365. (**)
  1366. (**--- Gpi End ------------------------------------------------------------*)
  1367. (**)
  1368. END Gpi.
  1369.