winddi.h 82 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168
  1. /*
  2. * winddi.h
  3. *
  4. * GDI device driver interface
  5. *
  6. * This file is part of the w32api package.
  7. *
  8. * Contributors:
  9. * Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
  10. *
  11. * THIS SOFTWARE IS NOT COPYRIGHTED
  12. *
  13. * This source code is offered for use in the public domain. You may
  14. * use, modify or distribute it freely.
  15. *
  16. * This code is distributed in the hope that it will be useful but
  17. * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
  18. * DISCLAIMED. This includes but is not limited to warranties of
  19. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  20. *
  21. */
  22. #ifndef _WINDDI_
  23. #define _WINDDI_
  24. #ifdef __VIDEO_H__
  25. #error video.h cannot be included with winddi.h
  26. #else
  27. #include <ddrawint.h>
  28. #include <d3dnthal.h>
  29. #ifdef __cplusplus
  30. extern "C" {
  31. #endif
  32. #ifndef DECLSPEC_IMPORT
  33. #ifndef __WIDL__
  34. #define DECLSPEC_IMPORT __declspec(dllimport)
  35. #else
  36. #define DECLSPEC_IMPORT
  37. #endif
  38. #endif
  39. #ifndef WIN32KAPI
  40. #define WIN32KAPI DECLSPEC_ADDRSAFE
  41. #endif
  42. #define DDI_DRIVER_VERSION_NT4 0x00020000
  43. #define DDI_DRIVER_VERSION_SP3 0x00020003
  44. #define DDI_DRIVER_VERSION_NT5 0x00030000
  45. #define DDI_DRIVER_VERSION_NT5_01 0x00030100
  46. #define GDI_DRIVER_VERSION 0x4000
  47. #ifdef _X86_
  48. typedef DWORD FLOATL;
  49. #else /* !_X86_ */
  50. typedef FLOAT FLOATL;
  51. #endif
  52. typedef SHORT FWORD;
  53. typedef LONG LDECI4;
  54. typedef ULONG IDENT;
  55. typedef ULONG_PTR HFF;
  56. typedef ULONG_PTR HFC;
  57. typedef LONG PTRDIFF;
  58. typedef PTRDIFF *PPTRDIFF;
  59. typedef LONG FIX;
  60. typedef FIX *PFIX;
  61. typedef ULONG ROP4;
  62. typedef ULONG MIX;
  63. typedef ULONG HGLYPH;
  64. typedef HGLYPH *PHGLYPH;
  65. typedef LONG_PTR (APIENTRY *PFN)();
  66. DECLARE_HANDLE(HBM);
  67. DECLARE_HANDLE(HDEV);
  68. DECLARE_HANDLE(HSURF);
  69. DECLARE_HANDLE(DHSURF);
  70. DECLARE_HANDLE(DHPDEV);
  71. DECLARE_HANDLE(HDRVOBJ);
  72. #ifndef _NTDDVDEO_
  73. typedef struct _ENG_EVENT *PEVENT;
  74. #endif
  75. #define OPENGL_CMD 4352
  76. #define OPENGL_GETINFO 4353
  77. #define WNDOBJ_SETUP 4354
  78. #define FD_ERROR 0xFFFFFFFF
  79. #define DDI_ERROR 0xFFFFFFFF
  80. #define HFF_INVALID ((HFF) 0)
  81. #define HFC_INVALID ((HFC) 0)
  82. #define HGLYPH_INVALID ((HGLYPH) -1)
  83. #define FP_ALTERNATEMODE 1
  84. #define FP_WINDINGMODE 2
  85. #define DN_ACCELERATION_LEVEL 1
  86. #define DN_DEVICE_ORIGIN 2
  87. #define DN_SLEEP_MODE 3
  88. #define DN_DRAWING_BEGIN 4
  89. #define DCR_SOLID 0
  90. #define DCR_DRIVER 1
  91. #define DCR_HALFTONE 2
  92. #define GX_IDENTITY 0
  93. #define GX_OFFSET 1
  94. #define GX_SCALE 2
  95. #define GX_GENERAL 3
  96. #define LTOFX(x) ((x) << 4)
  97. #define FXTOL(x) ((x) >> 4)
  98. #define FXTOLFLOOR(x) ((x) >> 4)
  99. #define FXTOLCEILING(x) ((x + 0x0F) >> 4)
  100. #define FXTOLROUND(x) ((((x) >> 3) + 1) >> 1)
  101. typedef struct _POINTE {
  102. FLOATL x;
  103. FLOATL y;
  104. } POINTE, *PPOINTE;
  105. typedef union _FLOAT_LONG {
  106. FLOATL e;
  107. LONG l;
  108. } FLOAT_LONG, *PFLOAT_LONG;
  109. typedef struct _POINTFIX {
  110. FIX x;
  111. FIX y;
  112. } POINTFIX, *PPOINTFIX;
  113. typedef struct _RECTFX {
  114. FIX xLeft;
  115. FIX yTop;
  116. FIX xRight;
  117. FIX yBottom;
  118. } RECTFX, *PRECTFX;
  119. typedef struct _POINTQF {
  120. LARGE_INTEGER x;
  121. LARGE_INTEGER y;
  122. } POINTQF, *PPOINTQF;
  123. typedef struct _BLENDOBJ {
  124. BLENDFUNCTION BlendFunction;
  125. } BLENDOBJ,*PBLENDOBJ;
  126. /* BRUSHOBJ.flColorType */
  127. #define BR_DEVICE_ICM 0x01
  128. #define BR_HOST_ICM 0x02
  129. #define BR_CMYKCOLOR 0x04
  130. #define BR_ORIGCOLOR 0x08
  131. typedef struct _BRUSHOBJ {
  132. ULONG iSolidColor;
  133. PVOID pvRbrush;
  134. FLONG flColorType;
  135. } BRUSHOBJ;
  136. typedef struct _CIECHROMA {
  137. LDECI4 x;
  138. LDECI4 y;
  139. LDECI4 Y;
  140. } CIECHROMA;
  141. typedef struct _RUN {
  142. LONG iStart;
  143. LONG iStop;
  144. } RUN, *PRUN;
  145. typedef struct _CLIPLINE {
  146. POINTFIX ptfxA;
  147. POINTFIX ptfxB;
  148. LONG lStyleState;
  149. ULONG c;
  150. RUN arun[1];
  151. } CLIPLINE, *PCLIPLINE;
  152. /* CLIPOBJ.iDComplexity constants */
  153. #define DC_TRIVIAL 0
  154. #define DC_RECT 1
  155. #define DC_COMPLEX 3
  156. /* CLIPOBJ.iFComplexity constants */
  157. #define FC_RECT 1
  158. #define FC_RECT4 2
  159. #define FC_COMPLEX 3
  160. /* CLIPOBJ.iMode constants */
  161. #define TC_RECTANGLES 0
  162. #define TC_PATHOBJ 2
  163. /* CLIPOBJ.fjOptions constants */
  164. #define OC_BANK_CLIP 1
  165. typedef struct _CLIPOBJ {
  166. ULONG iUniq;
  167. RECTL rclBounds;
  168. BYTE iDComplexity;
  169. BYTE iFComplexity;
  170. BYTE iMode;
  171. BYTE fjOptions;
  172. } CLIPOBJ;
  173. typedef struct _COLORINFO {
  174. CIECHROMA Red;
  175. CIECHROMA Green;
  176. CIECHROMA Blue;
  177. CIECHROMA Cyan;
  178. CIECHROMA Magenta;
  179. CIECHROMA Yellow;
  180. CIECHROMA AlignmentWhite;
  181. LDECI4 RedGamma;
  182. LDECI4 GreenGamma;
  183. LDECI4 BlueGamma;
  184. LDECI4 MagentaInCyanDye;
  185. LDECI4 YellowInCyanDye;
  186. LDECI4 CyanInMagentaDye;
  187. LDECI4 YellowInMagentaDye;
  188. LDECI4 CyanInYellowDye;
  189. LDECI4 MagentaInYellowDye;
  190. } COLORINFO, *PCOLORINFO;
  191. /* DEVHTADJDATA.DeviceFlags constants */
  192. #define DEVHTADJF_COLOR_DEVICE 0x00000001
  193. #define DEVHTADJF_ADDITIVE_DEVICE 0x00000002
  194. typedef struct _DEVHTINFO {
  195. DWORD HTFlags;
  196. DWORD HTPatternSize;
  197. DWORD DevPelsDPI;
  198. COLORINFO ColorInfo;
  199. } DEVHTINFO, *PDEVHTINFO;
  200. typedef struct _DEVHTADJDATA {
  201. DWORD DeviceFlags;
  202. DWORD DeviceXDPI;
  203. DWORD DeviceYDPI;
  204. PDEVHTINFO pDefHTInfo;
  205. PDEVHTINFO pAdjHTInfo;
  206. } DEVHTADJDATA, *PDEVHTADJDATA;
  207. /* DEVINFO.flGraphicsCaps flags */
  208. #define GCAPS_BEZIERS 0x00000001
  209. #define GCAPS_GEOMETRICWIDE 0x00000002
  210. #define GCAPS_ALTERNATEFILL 0x00000004
  211. #define GCAPS_WINDINGFILL 0x00000008
  212. #define GCAPS_HALFTONE 0x00000010
  213. #define GCAPS_COLOR_DITHER 0x00000020
  214. #define GCAPS_HORIZSTRIKE 0x00000040
  215. #define GCAPS_VERTSTRIKE 0x00000080
  216. #define GCAPS_OPAQUERECT 0x00000100
  217. #define GCAPS_VECTORFONT 0x00000200
  218. #define GCAPS_MONO_DITHER 0x00000400
  219. #define GCAPS_ASYNCCHANGE 0x00000800
  220. #define GCAPS_ASYNCMOVE 0x00001000
  221. #define GCAPS_DONTJOURNAL 0x00002000
  222. #define GCAPS_DIRECTDRAW 0x00004000
  223. #define GCAPS_ARBRUSHOPAQUE 0x00008000
  224. #define GCAPS_PANNING 0x00010000
  225. #define GCAPS_HIGHRESTEXT 0x00040000
  226. #define GCAPS_PALMANAGED 0x00080000
  227. #define GCAPS_DITHERONREALIZE 0x00200000
  228. #define GCAPS_NO64BITMEMACCESS 0x00400000
  229. #define GCAPS_FORCEDITHER 0x00800000
  230. #define GCAPS_GRAY16 0x01000000
  231. #define GCAPS_ICM 0x02000000
  232. #define GCAPS_CMYKCOLOR 0x04000000
  233. #define GCAPS_LAYERED 0x08000000
  234. #define GCAPS_ARBRUSHTEXT 0x10000000
  235. #define GCAPS_SCREENPRECISION 0x20000000
  236. #define GCAPS_FONT_RASTERIZER 0x40000000
  237. #define GCAPS_NUP 0x80000000
  238. /* DEVINFO.iDitherFormat constants */
  239. #define BMF_1BPP __MSABI_LONG(1)
  240. #define BMF_4BPP __MSABI_LONG(2)
  241. #define BMF_8BPP __MSABI_LONG(3)
  242. #define BMF_16BPP __MSABI_LONG(4)
  243. #define BMF_24BPP __MSABI_LONG(5)
  244. #define BMF_32BPP __MSABI_LONG(6)
  245. #define BMF_4RLE __MSABI_LONG(7)
  246. #define BMF_8RLE __MSABI_LONG(8)
  247. #define BMF_JPEG __MSABI_LONG(9)
  248. #define BMF_PNG __MSABI_LONG(10)
  249. /* DEVINFO.flGraphicsCaps2 flags */
  250. #define GCAPS2_JPEGSRC 0x00000001
  251. #define GCAPS2_xxxx 0x00000002
  252. #define GCAPS2_PNGSRC 0x00000008
  253. #define GCAPS2_CHANGEGAMMARAMP 0x00000010
  254. #define GCAPS2_ALPHACURSOR 0x00000020
  255. #define GCAPS2_SYNCFLUSH 0x00000040
  256. #define GCAPS2_SYNCTIMER 0x00000080
  257. #define GCAPS2_ICD_MULTIMON 0x00000100
  258. #define GCAPS2_MOUSETRAILS 0x00000200
  259. #define GCAPS2_RESERVED1 0x00000400
  260. typedef struct _DEVINFO {
  261. FLONG flGraphicsCaps;
  262. LOGFONTW lfDefaultFont;
  263. LOGFONTW lfAnsiVarFont;
  264. LOGFONTW lfAnsiFixFont;
  265. ULONG cFonts;
  266. ULONG iDitherFormat;
  267. USHORT cxDither;
  268. USHORT cyDither;
  269. HPALETTE hpalDefault;
  270. FLONG flGraphicsCaps2;
  271. } DEVINFO, *PDEVINFO;
  272. struct _DRIVEROBJ;
  273. typedef WINBOOL
  274. (APIENTRY CALLBACK *FREEOBJPROC)(
  275. struct _DRIVEROBJ *pDriverObj);
  276. typedef struct _DRIVEROBJ {
  277. PVOID pvObj;
  278. FREEOBJPROC pFreeProc;
  279. HDEV hdev;
  280. DHPDEV dhpdev;
  281. } DRIVEROBJ;
  282. /* DRVFN.iFunc constants */
  283. #define INDEX_DrvEnablePDEV __MSABI_LONG(0)
  284. #define INDEX_DrvCompletePDEV __MSABI_LONG(1)
  285. #define INDEX_DrvDisablePDEV __MSABI_LONG(2)
  286. #define INDEX_DrvEnableSurface __MSABI_LONG(3)
  287. #define INDEX_DrvDisableSurface __MSABI_LONG(4)
  288. #define INDEX_DrvAssertMode __MSABI_LONG(5)
  289. #define INDEX_DrvOffset __MSABI_LONG(6)
  290. #define INDEX_DrvResetPDEV __MSABI_LONG(7)
  291. #define INDEX_DrvDisableDriver __MSABI_LONG(8)
  292. #define INDEX_DrvUnknown1 __MSABI_LONG(9)
  293. #define INDEX_DrvCreateDeviceBitmap __MSABI_LONG(10)
  294. #define INDEX_DrvDeleteDeviceBitmap __MSABI_LONG(11)
  295. #define INDEX_DrvRealizeBrush __MSABI_LONG(12)
  296. #define INDEX_DrvDitherColor __MSABI_LONG(13)
  297. #define INDEX_DrvStrokePath __MSABI_LONG(14)
  298. #define INDEX_DrvFillPath __MSABI_LONG(15)
  299. #define INDEX_DrvStrokeAndFillPath __MSABI_LONG(16)
  300. #define INDEX_DrvPaint __MSABI_LONG(17)
  301. #define INDEX_DrvBitBlt __MSABI_LONG(18)
  302. #define INDEX_DrvCopyBits __MSABI_LONG(19)
  303. #define INDEX_DrvStretchBlt __MSABI_LONG(20)
  304. #define INDEX_DrvUnknown2 __MSABI_LONG(21)
  305. #define INDEX_DrvSetPalette __MSABI_LONG(22)
  306. #define INDEX_DrvTextOut __MSABI_LONG(23)
  307. #define INDEX_DrvEscape __MSABI_LONG(24)
  308. #define INDEX_DrvDrawEscape __MSABI_LONG(25)
  309. #define INDEX_DrvQueryFont __MSABI_LONG(26)
  310. #define INDEX_DrvQueryFontTree __MSABI_LONG(27)
  311. #define INDEX_DrvQueryFontData __MSABI_LONG(28)
  312. #define INDEX_DrvSetPointerShape __MSABI_LONG(29)
  313. #define INDEX_DrvMovePointer __MSABI_LONG(30)
  314. #define INDEX_DrvLineTo __MSABI_LONG(31)
  315. #define INDEX_DrvSendPage __MSABI_LONG(32)
  316. #define INDEX_DrvStartPage __MSABI_LONG(33)
  317. #define INDEX_DrvEndDoc __MSABI_LONG(34)
  318. #define INDEX_DrvStartDoc __MSABI_LONG(35)
  319. #define INDEX_DrvUnknown3 __MSABI_LONG(36)
  320. #define INDEX_DrvGetGlyphMode __MSABI_LONG(37)
  321. #define INDEX_DrvSynchronize __MSABI_LONG(38)
  322. #define INDEX_DrvUnknown4 __MSABI_LONG(39)
  323. #define INDEX_DrvSaveScreenBits __MSABI_LONG(40)
  324. #define INDEX_DrvGetModes __MSABI_LONG(41)
  325. #define INDEX_DrvFree __MSABI_LONG(42)
  326. #define INDEX_DrvDestroyFont __MSABI_LONG(43)
  327. #define INDEX_DrvQueryFontCaps __MSABI_LONG(44)
  328. #define INDEX_DrvLoadFontFile __MSABI_LONG(45)
  329. #define INDEX_DrvUnloadFontFile __MSABI_LONG(46)
  330. #define INDEX_DrvFontManagement __MSABI_LONG(47)
  331. #define INDEX_DrvQueryTrueTypeTable __MSABI_LONG(48)
  332. #define INDEX_DrvQueryTrueTypeOutline __MSABI_LONG(49)
  333. #define INDEX_DrvGetTrueTypeFile __MSABI_LONG(50)
  334. #define INDEX_DrvQueryFontFile __MSABI_LONG(51)
  335. #define INDEX_DrvMovePanning __MSABI_LONG(52)
  336. #define INDEX_DrvQueryAdvanceWidths __MSABI_LONG(53)
  337. #define INDEX_DrvSetPixelFormat __MSABI_LONG(54)
  338. #define INDEX_DrvDescribePixelFormat __MSABI_LONG(55)
  339. #define INDEX_DrvSwapBuffers __MSABI_LONG(56)
  340. #define INDEX_DrvStartBanding __MSABI_LONG(57)
  341. #define INDEX_DrvNextBand __MSABI_LONG(58)
  342. #define INDEX_DrvGetDirectDrawInfo __MSABI_LONG(59)
  343. #define INDEX_DrvEnableDirectDraw __MSABI_LONG(60)
  344. #define INDEX_DrvDisableDirectDraw __MSABI_LONG(61)
  345. #define INDEX_DrvQuerySpoolType __MSABI_LONG(62)
  346. #define INDEX_DrvUnknown5 __MSABI_LONG(63)
  347. #define INDEX_DrvIcmCreateColorTransform __MSABI_LONG(64)
  348. #define INDEX_DrvIcmDeleteColorTransform __MSABI_LONG(65)
  349. #define INDEX_DrvIcmCheckBitmapBits __MSABI_LONG(66)
  350. #define INDEX_DrvIcmSetDeviceGammaRamp __MSABI_LONG(67)
  351. #define INDEX_DrvGradientFill __MSABI_LONG(68)
  352. #define INDEX_DrvStretchBltROP __MSABI_LONG(69)
  353. #define INDEX_DrvPlgBlt __MSABI_LONG(70)
  354. #define INDEX_DrvAlphaBlend __MSABI_LONG(71)
  355. #define INDEX_DrvSynthesizeFont __MSABI_LONG(72)
  356. #define INDEX_DrvGetSynthesizedFontFiles __MSABI_LONG(73)
  357. #define INDEX_DrvTransparentBlt __MSABI_LONG(74)
  358. #define INDEX_DrvQueryPerBandInfo __MSABI_LONG(75)
  359. #define INDEX_DrvQueryDeviceSupport __MSABI_LONG(76)
  360. #define INDEX_DrvReserved1 __MSABI_LONG(77)
  361. #define INDEX_DrvReserved2 __MSABI_LONG(78)
  362. #define INDEX_DrvReserved3 __MSABI_LONG(79)
  363. #define INDEX_DrvReserved4 __MSABI_LONG(80)
  364. #define INDEX_DrvReserved5 __MSABI_LONG(81)
  365. #define INDEX_DrvReserved6 __MSABI_LONG(82)
  366. #define INDEX_DrvReserved7 __MSABI_LONG(83)
  367. #define INDEX_DrvReserved8 __MSABI_LONG(84)
  368. #define INDEX_DrvDeriveSurface __MSABI_LONG(85)
  369. #define INDEX_DrvQueryGlyphAttrs __MSABI_LONG(86)
  370. #define INDEX_DrvNotify __MSABI_LONG(87)
  371. #define INDEX_DrvSynchronizeSurface __MSABI_LONG(88)
  372. #define INDEX_DrvResetDevice __MSABI_LONG(89)
  373. #define INDEX_DrvReserved9 __MSABI_LONG(90)
  374. #define INDEX_DrvReserved10 __MSABI_LONG(91)
  375. #define INDEX_DrvReserved11 __MSABI_LONG(92)
  376. #define INDEX_LAST __MSABI_LONG(93)
  377. typedef struct _DRVFN {
  378. ULONG iFunc;
  379. PFN pfn;
  380. } DRVFN, *PDRVFN;
  381. /* DRVENABLEDATA.iDriverVersion constants */
  382. #define DDI_DRIVER_VERSION_NT4 0x00020000
  383. #define DDI_DRIVER_VERSION_SP3 0x00020003
  384. #define DDI_DRIVER_VERSION_NT5 0x00030000
  385. #define DDI_DRIVER_VERSION_NT5_01 0x00030100
  386. #define DDI_DRIVER_VERSION_NT5_01_SP1 0x00030101
  387. typedef struct _DRVENABLEDATA {
  388. ULONG iDriverVersion;
  389. ULONG c;
  390. DRVFN *pdrvfn;
  391. } DRVENABLEDATA, *PDRVENABLEDATA;
  392. DECLARE_HANDLE(HSEMAPHORE);
  393. typedef struct {
  394. DWORD nSize;
  395. HDC hdc;
  396. PBYTE pvEMF;
  397. PBYTE pvCurrentRecord;
  398. } EMFINFO, *PEMFINFO;
  399. typedef struct _ENGSAFESEMAPHORE {
  400. HSEMAPHORE hsem;
  401. LONG lCount;
  402. } ENGSAFESEMAPHORE;
  403. typedef struct _ENG_TIME_FIELDS {
  404. USHORT usYear;
  405. USHORT usMonth;
  406. USHORT usDay;
  407. USHORT usHour;
  408. USHORT usMinute;
  409. USHORT usSecond;
  410. USHORT usMilliseconds;
  411. USHORT usWeekday;
  412. } ENG_TIME_FIELDS, *PENG_TIME_FIELDS;
  413. typedef struct _ENUMRECTS {
  414. ULONG c;
  415. RECTL arcl[1];
  416. } ENUMRECTS;
  417. typedef struct _FD_XFORM {
  418. FLOATL eXX;
  419. FLOATL eXY;
  420. FLOATL eYX;
  421. FLOATL eYY;
  422. } FD_XFORM, *PFD_XFORM;
  423. /* FD_DEVICEMETRICS.flRealizedType constants */
  424. #define FDM_TYPE_BM_SIDE_CONST 0x00000001
  425. #define FDM_TYPE_MAXEXT_EQUAL_BM_SIDE 0x00000002
  426. #define FDM_TYPE_CHAR_INC_EQUAL_BM_BASE 0x00000004
  427. #define FDM_TYPE_ZERO_BEARINGS 0x00000008
  428. #define FDM_TYPE_CONST_BEARINGS 0x00000010
  429. typedef struct _FD_DEVICEMETRICS {
  430. FLONG flRealizedType;
  431. POINTE pteBase;
  432. POINTE pteSide;
  433. LONG lD;
  434. FIX fxMaxAscender;
  435. FIX fxMaxDescender;
  436. POINTL ptlUnderline1;
  437. POINTL ptlStrikeout;
  438. POINTL ptlULThickness;
  439. POINTL ptlSOThickness;
  440. ULONG cxMax;
  441. ULONG cyMax;
  442. ULONG cjGlyphMax;
  443. FD_XFORM fdxQuantized;
  444. LONG lNonLinearExtLeading;
  445. LONG lNonLinearIntLeading;
  446. LONG lNonLinearMaxCharWidth;
  447. LONG lNonLinearAvgCharWidth;
  448. LONG lMinA;
  449. LONG lMinC;
  450. LONG lMinD;
  451. LONG alReserved[1];
  452. } FD_DEVICEMETRICS, *PFD_DEVICEMETRICS;
  453. /* FD_GLYPHATTR.iMode constants */
  454. #define FO_ATTR_MODE_ROTATE 1
  455. typedef struct _FD_GLYPHATTR {
  456. ULONG cjThis;
  457. ULONG cGlyphs;
  458. ULONG iMode;
  459. BYTE aGlyphAttr[1];
  460. } FD_GLYPHATTR, *PFD_GLYPHATTR;
  461. /* FD_GLYPHSET.flAccel */
  462. #define GS_UNICODE_HANDLES 0x00000001
  463. #define GS_8BIT_HANDLES 0x00000002
  464. #define GS_16BIT_HANDLES 0x00000004
  465. typedef struct _WCRUN {
  466. WCHAR wcLow;
  467. USHORT cGlyphs;
  468. HGLYPH *phg;
  469. } WCRUN, *PWCRUN;
  470. typedef struct _FD_GLYPHSET {
  471. ULONG cjThis;
  472. FLONG flAccel;
  473. ULONG cGlyphsSupported;
  474. ULONG cRuns;
  475. WCRUN awcrun[1];
  476. } FD_GLYPHSET, *PFD_GLYPHSET;
  477. typedef struct _FD_KERNINGPAIR {
  478. WCHAR wcFirst;
  479. WCHAR wcSecond;
  480. FWORD fwdKern;
  481. } FD_KERNINGPAIR;
  482. #if defined(_X86_) && !defined(USERMODE_DRIVER)
  483. typedef struct _FLOATOBJ
  484. {
  485. ULONG ul1;
  486. ULONG ul2;
  487. } FLOATOBJ, *PFLOATOBJ;
  488. #else
  489. typedef FLOAT FLOATOBJ, *PFLOATOBJ;
  490. #endif
  491. typedef struct _FLOATOBJ_XFORM {
  492. FLOATOBJ eM11;
  493. FLOATOBJ eM12;
  494. FLOATOBJ eM21;
  495. FLOATOBJ eM22;
  496. FLOATOBJ eDx;
  497. FLOATOBJ eDy;
  498. } FLOATOBJ_XFORM, *PFLOATOBJ_XFORM, FAR *LPFLOATOBJ_XFORM;
  499. /* FONTDIFF.fsSelection */
  500. #define FM_SEL_ITALIC 0x0001
  501. #define FM_SEL_UNDERSCORE 0x0002
  502. #define FM_SEL_NEGATIVE 0x0004
  503. #define FM_SEL_OUTLINED 0x0008
  504. #define FM_SEL_STRIKEOUT 0x0010
  505. #define FM_SEL_BOLD 0x0020
  506. #define FM_SEL_REGULAR 0x0040
  507. typedef struct _FONTDIFF {
  508. BYTE jReserved1;
  509. BYTE jReserved2;
  510. BYTE jReserved3;
  511. BYTE bWeight;
  512. USHORT usWinWeight;
  513. FSHORT fsSelection;
  514. FWORD fwdAveCharWidth;
  515. FWORD fwdMaxCharInc;
  516. POINTL ptlCaret;
  517. } FONTDIFF;
  518. typedef struct _FONTSIM {
  519. PTRDIFF dpBold;
  520. PTRDIFF dpItalic;
  521. PTRDIFF dpBoldItalic;
  522. } FONTSIM;
  523. /* FONTINFO.flCaps constants */
  524. #define FO_DEVICE_FONT __MSABI_LONG(1)
  525. #define FO_OUTLINE_CAPABLE __MSABI_LONG(2)
  526. typedef struct _FONTINFO {
  527. ULONG cjThis;
  528. FLONG flCaps;
  529. ULONG cGlyphsSupported;
  530. ULONG cjMaxGlyph1;
  531. ULONG cjMaxGlyph4;
  532. ULONG cjMaxGlyph8;
  533. ULONG cjMaxGlyph32;
  534. } FONTINFO, *PFONTINFO;
  535. /* FONTOBJ.flFontType constants */
  536. #define FO_TYPE_RASTER RASTER_FONTTYPE
  537. #define FO_TYPE_DEVICE DEVICE_FONTTYPE
  538. #define FO_TYPE_TRUETYPE TRUETYPE_FONTTYPE
  539. #define FO_TYPE_OPENTYPE OPENTYPE_FONTTYPE
  540. #define FO_SIM_BOLD 0x00002000
  541. #define FO_SIM_ITALIC 0x00004000
  542. #define FO_EM_HEIGHT 0x00008000
  543. #define FO_GRAY16 0x00010000
  544. #define FO_NOGRAY16 0x00020000
  545. #define FO_NOHINTS 0x00040000
  546. #define FO_NO_CHOICE 0x00080000
  547. #define FO_CFF 0x00100000
  548. #define FO_POSTSCRIPT 0x00200000
  549. #define FO_MULTIPLEMASTER 0x00400000
  550. #define FO_VERT_FACE 0x00800000
  551. #define FO_DBCS_FONT 0X01000000
  552. #define FO_NOCLEARTYPE 0x02000000
  553. #define FO_CLEARTYPE_X 0x10000000
  554. #define FO_CLEARTYPE_Y 0x20000000
  555. typedef struct _FONTOBJ {
  556. ULONG iUniq;
  557. ULONG iFace;
  558. ULONG cxMax;
  559. FLONG flFontType;
  560. ULONG_PTR iTTUniq;
  561. ULONG_PTR iFile;
  562. SIZE sizLogResPpi;
  563. ULONG ulStyleSize;
  564. PVOID pvConsumer;
  565. PVOID pvProducer;
  566. } FONTOBJ;
  567. typedef struct _GAMMARAMP {
  568. WORD Red[256];
  569. WORD Green[256];
  570. WORD Blue[256];
  571. } GAMMARAMP, *PGAMMARAMP;
  572. /* GDIINFO.ulPrimaryOrder constants */
  573. #define PRIMARY_ORDER_ABC 0
  574. #define PRIMARY_ORDER_ACB 1
  575. #define PRIMARY_ORDER_BAC 2
  576. #define PRIMARY_ORDER_BCA 3
  577. #define PRIMARY_ORDER_CBA 4
  578. #define PRIMARY_ORDER_CAB 5
  579. /* GDIINFO.ulHTPatternSize constants */
  580. #define HT_PATSIZE_2x2 0
  581. #define HT_PATSIZE_2x2_M 1
  582. #define HT_PATSIZE_4x4 2
  583. #define HT_PATSIZE_4x4_M 3
  584. #define HT_PATSIZE_6x6 4
  585. #define HT_PATSIZE_6x6_M 5
  586. #define HT_PATSIZE_8x8 6
  587. #define HT_PATSIZE_8x8_M 7
  588. #define HT_PATSIZE_10x10 8
  589. #define HT_PATSIZE_10x10_M 9
  590. #define HT_PATSIZE_12x12 10
  591. #define HT_PATSIZE_12x12_M 11
  592. #define HT_PATSIZE_14x14 12
  593. #define HT_PATSIZE_14x14_M 13
  594. #define HT_PATSIZE_16x16 14
  595. #define HT_PATSIZE_16x16_M 15
  596. #define HT_PATSIZE_SUPERCELL 16
  597. #define HT_PATSIZE_SUPERCELL_M 17
  598. #define HT_PATSIZE_USER 18
  599. #define HT_PATSIZE_MAX_INDEX HT_PATSIZE_USER
  600. #define HT_PATSIZE_DEFAULT HT_PATSIZE_SUPERCELL_M
  601. #define HT_USERPAT_CX_MIN 4
  602. #define HT_USERPAT_CX_MAX 256
  603. #define HT_USERPAT_CY_MIN 4
  604. #define HT_USERPAT_CY_MAX 256
  605. /* GDIINFO.ulHTOutputFormat constants */
  606. #define HT_FORMAT_1BPP 0
  607. #define HT_FORMAT_4BPP 2
  608. #define HT_FORMAT_4BPP_IRGB 3
  609. #define HT_FORMAT_8BPP 4
  610. #define HT_FORMAT_16BPP 5
  611. #define HT_FORMAT_24BPP 6
  612. #define HT_FORMAT_32BPP 7
  613. /* GDIINFO.flHTFlags */
  614. #define HT_FLAG_SQUARE_DEVICE_PEL 0x00000001
  615. #define HT_FLAG_HAS_BLACK_DYE 0x00000002
  616. #define HT_FLAG_ADDITIVE_PRIMS 0x00000004
  617. #define HT_FLAG_USE_8BPP_BITMASK 0x00000008
  618. #define HT_FLAG_INK_HIGH_ABSORPTION 0x00000010
  619. #define HT_FLAG_INK_ABSORPTION_INDICES 0x00000060
  620. #define HT_FLAG_DO_DEVCLR_XFORM 0x00000080
  621. #define HT_FLAG_OUTPUT_CMY 0x00000100
  622. #define HT_FLAG_PRINT_DRAFT_MODE 0x00000200
  623. #define HT_FLAG_INVERT_8BPP_BITMASK_IDX 0x00000400
  624. #define HT_FLAG_8BPP_CMY332_MASK 0xFF000000
  625. #define MAKE_CMYMASK_BYTE(c,m,y) ((BYTE)(((BYTE)(c) & 0x07) << 5) \
  626. |(BYTE)(((BYTE)(m) & 0x07) << 2) \
  627. |(BYTE)((BYTE)(y) & 0x03))
  628. #define MAKE_CMY332_MASK(c,m,y) ((DWORD)(((DWORD)(c) & 0x07) << 29)\
  629. |(DWORD)(((DWORD)(m) & 0x07) << 26)\
  630. |(DWORD)(((DWORD)(y) & 0x03) << 24))
  631. /* GDIINFO.flHTFlags constants */
  632. #define HT_FLAG_INK_ABSORPTION_IDX0 0x00000000
  633. #define HT_FLAG_INK_ABSORPTION_IDX1 0x00000020
  634. #define HT_FLAG_INK_ABSORPTION_IDX2 0x00000040
  635. #define HT_FLAG_INK_ABSORPTION_IDX3 0x00000060
  636. #define HT_FLAG_HIGHEST_INK_ABSORPTION (HT_FLAG_INK_HIGH_ABSORPTION \
  637. |HT_FLAG_INK_ABSORPTION_IDX3)
  638. #define HT_FLAG_HIGHER_INK_ABSORPTION (HT_FLAG_INK_HIGH_ABSORPTION \
  639. |HT_FLAG_INK_ABSORPTION_IDX2)
  640. #define HT_FLAG_HIGH_INK_ABSORPTION (HT_FLAG_INK_HIGH_ABSORPTION \
  641. |HT_FLAG_INK_ABSORPTION_IDX1)
  642. #define HT_FLAG_NORMAL_INK_ABSORPTION HT_FLAG_INK_ABSORPTION_IDX0
  643. #define HT_FLAG_LOW_INK_ABSORPTION HT_FLAG_INK_ABSORPTION_IDX1
  644. #define HT_FLAG_LOWER_INK_ABSORPTION HT_FLAG_INK_ABSORPTION_IDX2
  645. #define HT_FLAG_LOWEST_INK_ABSORPTION HT_FLAG_INK_ABSORPTION_IDX3
  646. #define HT_BITMASKPALRGB (DWORD)'0BGR'
  647. #define HT_SET_BITMASKPAL2RGB(pPal) (*((LPDWORD)(pPal)) = HT_BITMASKPALRGB)
  648. #define HT_IS_BITMASKPALRGB(pPal) (*((LPDWORD)(pPal)) == (DWORD)0)
  649. /* GDIINFO.ulPhysicalPixelCharacteristics constants */
  650. #define PPC_DEFAULT 0x0
  651. #define PPC_UNDEFINED 0x1
  652. #define PPC_RGB_ORDER_VERTICAL_STRIPES 0x2
  653. #define PPC_BGR_ORDER_VERTICAL_STRIPES 0x3
  654. #define PPC_RGB_ORDER_HORIZONTAL_STRIPES 0x4
  655. #define PPC_BGR_ORDER_HORIZONTAL_STRIPES 0x5
  656. #define PPG_DEFAULT 0
  657. #define PPG_SRGB 1
  658. typedef struct _GDIINFO {
  659. ULONG ulVersion;
  660. ULONG ulTechnology;
  661. ULONG ulHorzSize;
  662. ULONG ulVertSize;
  663. ULONG ulHorzRes;
  664. ULONG ulVertRes;
  665. ULONG cBitsPixel;
  666. ULONG cPlanes;
  667. ULONG ulNumColors;
  668. ULONG flRaster;
  669. ULONG ulLogPixelsX;
  670. ULONG ulLogPixelsY;
  671. ULONG flTextCaps;
  672. ULONG ulDACRed;
  673. ULONG ulDACGreen;
  674. ULONG ulDACBlue;
  675. ULONG ulAspectX;
  676. ULONG ulAspectY;
  677. ULONG ulAspectXY;
  678. LONG xStyleStep;
  679. LONG yStyleStep;
  680. LONG denStyleStep;
  681. POINTL ptlPhysOffset;
  682. SIZEL szlPhysSize;
  683. ULONG ulNumPalReg;
  684. COLORINFO ciDevice;
  685. ULONG ulDevicePelsDPI;
  686. ULONG ulPrimaryOrder;
  687. ULONG ulHTPatternSize;
  688. ULONG ulHTOutputFormat;
  689. ULONG flHTFlags;
  690. ULONG ulVRefresh;
  691. ULONG ulBltAlignment;
  692. ULONG ulPanningHorzRes;
  693. ULONG ulPanningVertRes;
  694. ULONG xPanningAlignment;
  695. ULONG yPanningAlignment;
  696. ULONG cxHTPat;
  697. ULONG cyHTPat;
  698. LPBYTE pHTPatA;
  699. LPBYTE pHTPatB;
  700. LPBYTE pHTPatC;
  701. ULONG flShadeBlend;
  702. ULONG ulPhysicalPixelCharacteristics;
  703. ULONG ulPhysicalPixelGamma;
  704. } GDIINFO, *PGDIINFO;
  705. /* PATHDATA.flags constants */
  706. #define PD_BEGINSUBPATH 0x00000001
  707. #define PD_ENDSUBPATH 0x00000002
  708. #define PD_RESETSTYLE 0x00000004
  709. #define PD_CLOSEFIGURE 0x00000008
  710. #define PD_BEZIERS 0x00000010
  711. #define PD_ALL (PD_BEGINSUBPATH \
  712. |PD_ENDSUBPATH \
  713. |PD_RESETSTYLE \
  714. |PD_CLOSEFIGURE \
  715. PD_BEZIERS)
  716. typedef struct _PATHDATA {
  717. FLONG flags;
  718. ULONG count;
  719. POINTFIX *pptfx;
  720. } PATHDATA, *PPATHDATA;
  721. /* PATHOBJ.fl constants */
  722. #define PO_BEZIERS 0x00000001
  723. #define PO_ELLIPSE 0x00000002
  724. #define PO_ALL_INTEGERS 0x00000004
  725. #define PO_ENUM_AS_INTEGERS 0x00000008
  726. typedef struct _PATHOBJ {
  727. FLONG fl;
  728. ULONG cCurves;
  729. } PATHOBJ;
  730. typedef struct _GLYPHBITS {
  731. POINTL ptlOrigin;
  732. SIZEL sizlBitmap;
  733. BYTE aj[1];
  734. } GLYPHBITS;
  735. typedef union _GLYPHDEF {
  736. GLYPHBITS *pgb;
  737. PATHOBJ *ppo;
  738. } GLYPHDEF;
  739. typedef struct _GLYPHPOS {
  740. HGLYPH hg;
  741. GLYPHDEF *pgdf;
  742. POINTL ptl;
  743. } GLYPHPOS, *PGLYPHPOS;
  744. typedef struct _GLYPHDATA {
  745. GLYPHDEF gdf;
  746. HGLYPH hg;
  747. FIX fxD;
  748. FIX fxA;
  749. FIX fxAB;
  750. FIX fxInkTop;
  751. FIX fxInkBottom;
  752. RECTL rclInk;
  753. POINTQF ptqD;
  754. } GLYPHDATA;
  755. typedef struct _IFIEXTRA {
  756. ULONG ulIdentifier;
  757. PTRDIFF dpFontSig;
  758. ULONG cig;
  759. PTRDIFF dpDesignVector;
  760. PTRDIFF dpAxesInfoW;
  761. ULONG aulReserved[1];
  762. } IFIEXTRA, *PIFIEXTRA;
  763. /* IFIMETRICS constants */
  764. #define FM_VERSION_NUMBER 0x0
  765. /* IFIMETRICS.fsType constants */
  766. #define FM_TYPE_LICENSED 0x2
  767. #define FM_READONLY_EMBED 0x4
  768. #define FM_EDITABLE_EMBED 0x8
  769. #define FM_NO_EMBEDDING FM_TYPE_LICENSED
  770. /* IFIMETRICS.flInfo constants */
  771. #define FM_INFO_TECH_TRUETYPE 0x00000001
  772. #define FM_INFO_TECH_BITMAP 0x00000002
  773. #define FM_INFO_TECH_STROKE 0x00000004
  774. #define FM_INFO_TECH_OUTLINE_NOT_TRUETYPE 0x00000008
  775. #define FM_INFO_ARB_XFORMS 0x00000010
  776. #define FM_INFO_1BPP 0x00000020
  777. #define FM_INFO_4BPP 0x00000040
  778. #define FM_INFO_8BPP 0x00000080
  779. #define FM_INFO_16BPP 0x00000100
  780. #define FM_INFO_24BPP 0x00000200
  781. #define FM_INFO_32BPP 0x00000400
  782. #define FM_INFO_INTEGER_WIDTH 0x00000800
  783. #define FM_INFO_CONSTANT_WIDTH 0x00001000
  784. #define FM_INFO_NOT_CONTIGUOUS 0x00002000
  785. #define FM_INFO_TECH_MM 0x00004000
  786. #define FM_INFO_RETURNS_OUTLINES 0x00008000
  787. #define FM_INFO_RETURNS_STROKES 0x00010000
  788. #define FM_INFO_RETURNS_BITMAPS 0x00020000
  789. #define FM_INFO_DSIG 0x00040000
  790. #define FM_INFO_RIGHT_HANDED 0x00080000
  791. #define FM_INFO_INTEGRAL_SCALING 0x00100000
  792. #define FM_INFO_90DEGREE_ROTATIONS 0x00200000
  793. #define FM_INFO_OPTICALLY_FIXED_PITCH 0x00400000
  794. #define FM_INFO_DO_NOT_ENUMERATE 0x00800000
  795. #define FM_INFO_ISOTROPIC_SCALING_ONLY 0x01000000
  796. #define FM_INFO_ANISOTROPIC_SCALING_ONLY 0x02000000
  797. #define FM_INFO_TECH_CFF 0x04000000
  798. #define FM_INFO_FAMILY_EQUIV 0x08000000
  799. #define FM_INFO_DBCS_FIXED_PITCH 0x10000000
  800. #define FM_INFO_NONNEGATIVE_AC 0x20000000
  801. #define FM_INFO_IGNORE_TC_RA_ABLE 0x40000000
  802. #define FM_INFO_TECH_TYPE1 0x80000000
  803. #define MAXCHARSETS 16
  804. /* IFIMETRICS.ulPanoseCulture constants */
  805. #define FM_PANOSE_CULTURE_LATIN 0x0
  806. typedef struct _IFIMETRICS {
  807. ULONG cjThis;
  808. ULONG cjIfiExtra;
  809. PTRDIFF dpwszFamilyName;
  810. PTRDIFF dpwszStyleName;
  811. PTRDIFF dpwszFaceName;
  812. PTRDIFF dpwszUniqueName;
  813. PTRDIFF dpFontSim;
  814. LONG lEmbedId;
  815. LONG lItalicAngle;
  816. LONG lCharBias;
  817. PTRDIFF dpCharSets;
  818. BYTE jWinCharSet;
  819. BYTE jWinPitchAndFamily;
  820. USHORT usWinWeight;
  821. ULONG flInfo;
  822. USHORT fsSelection;
  823. USHORT fsType;
  824. FWORD fwdUnitsPerEm;
  825. FWORD fwdLowestPPEm;
  826. FWORD fwdWinAscender;
  827. FWORD fwdWinDescender;
  828. FWORD fwdMacAscender;
  829. FWORD fwdMacDescender;
  830. FWORD fwdMacLineGap;
  831. FWORD fwdTypoAscender;
  832. FWORD fwdTypoDescender;
  833. FWORD fwdTypoLineGap;
  834. FWORD fwdAveCharWidth;
  835. FWORD fwdMaxCharInc;
  836. FWORD fwdCapHeight;
  837. FWORD fwdXHeight;
  838. FWORD fwdSubscriptXSize;
  839. FWORD fwdSubscriptYSize;
  840. FWORD fwdSubscriptXOffset;
  841. FWORD fwdSubscriptYOffset;
  842. FWORD fwdSuperscriptXSize;
  843. FWORD fwdSuperscriptYSize;
  844. FWORD fwdSuperscriptXOffset;
  845. FWORD fwdSuperscriptYOffset;
  846. FWORD fwdUnderscoreSize;
  847. FWORD fwdUnderscorePosition;
  848. FWORD fwdStrikeoutSize;
  849. FWORD fwdStrikeoutPosition;
  850. BYTE chFirstChar;
  851. BYTE chLastChar;
  852. BYTE chDefaultChar;
  853. BYTE chBreakChar;
  854. WCHAR wcFirstChar;
  855. WCHAR wcLastChar;
  856. WCHAR wcDefaultChar;
  857. WCHAR wcBreakChar;
  858. POINTL ptlBaseline;
  859. POINTL ptlAspect;
  860. POINTL ptlCaret;
  861. RECTL rclFontBox;
  862. BYTE achVendId[4];
  863. ULONG cKerningPairs;
  864. ULONG ulPanoseCulture;
  865. PANOSE panose;
  866. #if defined(_WIN64)
  867. PVOID Align;
  868. #endif
  869. } IFIMETRICS, *PIFIMETRICS;
  870. /* LINEATTRS.fl */
  871. #define LA_GEOMETRIC 0x00000001
  872. #define LA_ALTERNATE 0x00000002
  873. #define LA_STARTGAP 0x00000004
  874. #define LA_STYLED 0x00000008
  875. /* LINEATTRS.iJoin */
  876. #define JOIN_ROUND __MSABI_LONG(0)
  877. #define JOIN_BEVEL __MSABI_LONG(1)
  878. #define JOIN_MITER __MSABI_LONG(2)
  879. /* LINEATTRS.iEndCap */
  880. #define ENDCAP_ROUND __MSABI_LONG(0)
  881. #define ENDCAP_SQUARE __MSABI_LONG(1)
  882. #define ENDCAP_BUTT __MSABI_LONG(2)
  883. typedef struct _LINEATTRS {
  884. FLONG fl;
  885. ULONG iJoin;
  886. ULONG iEndCap;
  887. FLOAT_LONG elWidth;
  888. FLOATL eMiterLimit;
  889. ULONG cstyle;
  890. PFLOAT_LONG pstyle;
  891. FLOAT_LONG elStyleState;
  892. } LINEATTRS, *PLINEATTRS;
  893. typedef struct _PALOBJ {
  894. ULONG ulReserved;
  895. } PALOBJ;
  896. typedef struct _PERBANDINFO {
  897. WINBOOL bRepeatThisBand;
  898. SIZEL szlBand;
  899. ULONG ulHorzRes;
  900. ULONG ulVertRes;
  901. } PERBANDINFO, *PPERBANDINFO;
  902. /* STROBJ.flAccel constants */
  903. #define SO_FLAG_DEFAULT_PLACEMENT 0x00000001
  904. #define SO_HORIZONTAL 0x00000002
  905. #define SO_VERTICAL 0x00000004
  906. #define SO_REVERSED 0x00000008
  907. #define SO_ZERO_BEARINGS 0x00000010
  908. #define SO_CHAR_INC_EQUAL_BM_BASE 0x00000020
  909. #define SO_MAXEXT_EQUAL_BM_SIDE 0x00000040
  910. #define SO_DO_NOT_SUBSTITUTE_DEVICE_FONT 0x00000080
  911. #define SO_GLYPHINDEX_TEXTOUT 0x00000100
  912. #define SO_ESC_NOT_ORIENT 0x00000200
  913. #define SO_DXDY 0x00000400
  914. #define SO_CHARACTER_EXTRA 0x00000800
  915. #define SO_BREAK_EXTRA 0x00001000
  916. typedef struct _STROBJ {
  917. ULONG cGlyphs;
  918. FLONG flAccel;
  919. ULONG ulCharInc;
  920. RECTL rclBkGround;
  921. GLYPHPOS *pgp;
  922. LPWSTR pwszOrg;
  923. } STROBJ;
  924. /* SURFOBJ.iType constants */
  925. #define STYPE_BITMAP __MSABI_LONG(0)
  926. #define STYPE_DEVICE __MSABI_LONG(1)
  927. #define STYPE_DEVBITMAP __MSABI_LONG(3)
  928. /* SURFOBJ.fjBitmap constants */
  929. #define BMF_TOPDOWN 0x0001
  930. #define BMF_NOZEROINIT 0x0002
  931. #define BMF_DONTCACHE 0x0004
  932. #define BMF_USERMEM 0x0008
  933. #define BMF_KMSECTION 0x0010
  934. #define BMF_NOTSYSMEM 0x0020
  935. #define BMF_WINDOW_BLT 0x0040
  936. #define BMF_UMPDMEM 0x0080
  937. #define BMF_RESERVED 0xFF00
  938. typedef struct _SURFOBJ {
  939. DHSURF dhsurf;
  940. HSURF hsurf;
  941. DHPDEV dhpdev;
  942. HDEV hdev;
  943. SIZEL sizlBitmap;
  944. ULONG cjBits;
  945. PVOID pvBits;
  946. PVOID pvScan0;
  947. LONG lDelta;
  948. ULONG iUniq;
  949. ULONG iBitmapFormat;
  950. USHORT iType;
  951. USHORT fjBitmap;
  952. } SURFOBJ;
  953. typedef struct _TYPE1_FONT {
  954. HANDLE hPFM;
  955. HANDLE hPFB;
  956. ULONG ulIdentifier;
  957. } TYPE1_FONT;
  958. typedef struct _WNDOBJ {
  959. CLIPOBJ coClient;
  960. PVOID pvConsumer;
  961. RECTL rclClient;
  962. SURFOBJ *psoOwner;
  963. } WNDOBJ, *PWNDOBJ;
  964. typedef struct _XFORML {
  965. FLOATL eM11;
  966. FLOATL eM12;
  967. FLOATL eM21;
  968. FLOATL eM22;
  969. FLOATL eDx;
  970. FLOATL eDy;
  971. } XFORML, *PXFORML;
  972. typedef struct _XFORMOBJ {
  973. ULONG ulReserved;
  974. } XFORMOBJ;
  975. /* XLATEOBJ.flXlate constants */
  976. #define XO_TRIVIAL 0x00000001
  977. #define XO_TABLE 0x00000002
  978. #define XO_TO_MONO 0x00000004
  979. #define XO_FROM_CMYK 0x00000008
  980. #define XO_DEVICE_ICM 0x00000010
  981. #define XO_HOST_ICM 0x00000020
  982. typedef struct _XLATEOBJ {
  983. ULONG iUniq;
  984. FLONG flXlate;
  985. USHORT iSrcType;
  986. USHORT iDstType;
  987. ULONG cEntries;
  988. ULONG *pulXlate;
  989. } XLATEOBJ;
  990. /* WNDOBJCHANGEPROC.fl constants */
  991. #define WOC_RGN_CLIENT_DELTA 0x00000001
  992. #define WOC_RGN_CLIENT 0x00000002
  993. #define WOC_RGN_SURFACE_DELTA 0x00000004
  994. #define WOC_RGN_SURFACE 0x00000008
  995. #define WOC_CHANGED 0x00000010
  996. #define WOC_DELETE 0x00000020
  997. #define WOC_DRAWN 0x00000040
  998. #define WOC_SPRITE_OVERLAP 0x00000080
  999. #define WOC_SPRITE_NO_OVERLAP 0x00000100
  1000. typedef VOID (APIENTRY CALLBACK *WNDOBJCHANGEPROC)(
  1001. WNDOBJ *pwo,
  1002. FLONG fl);
  1003. WIN32KAPI
  1004. HANDLE
  1005. APIENTRY
  1006. BRUSHOBJ_hGetColorTransform(
  1007. BRUSHOBJ *pbo);
  1008. WIN32KAPI
  1009. PVOID
  1010. APIENTRY
  1011. BRUSHOBJ_pvAllocRbrush(
  1012. BRUSHOBJ *pbo,
  1013. ULONG cj);
  1014. WIN32KAPI
  1015. PVOID
  1016. APIENTRY
  1017. BRUSHOBJ_pvGetRbrush(
  1018. BRUSHOBJ *pbo);
  1019. WIN32KAPI
  1020. ULONG
  1021. APIENTRY
  1022. BRUSHOBJ_ulGetBrushColor(
  1023. BRUSHOBJ *pbo);
  1024. WIN32KAPI
  1025. WINBOOL
  1026. APIENTRY
  1027. CLIPOBJ_bEnum(
  1028. CLIPOBJ *pco,
  1029. ULONG cj,
  1030. ULONG *pv);
  1031. /* CLIPOBJ_cEnumStart.iType constants */
  1032. #define CT_RECTANGLES __MSABI_LONG(0)
  1033. /* CLIPOBJ_cEnumStart.iDirection constants */
  1034. #define CD_RIGHTDOWN 0x00000000
  1035. #define CD_LEFTDOWN 0x00000001
  1036. #define CD_LEFTWARDS 0x00000001
  1037. #define CD_RIGHTUP 0x00000002
  1038. #define CD_UPWARDS 0x00000002
  1039. #define CD_LEFTUP 0x00000003
  1040. #define CD_ANY 0x00000004
  1041. WIN32KAPI
  1042. ULONG
  1043. APIENTRY
  1044. CLIPOBJ_cEnumStart(
  1045. CLIPOBJ *pco,
  1046. WINBOOL bAll,
  1047. ULONG iType,
  1048. ULONG iDirection,
  1049. ULONG cLimit);
  1050. WIN32KAPI
  1051. PATHOBJ*
  1052. APIENTRY
  1053. CLIPOBJ_ppoGetPath(
  1054. CLIPOBJ *pco);
  1055. WIN32KAPI
  1056. VOID
  1057. APIENTRY
  1058. EngAcquireSemaphore(
  1059. HSEMAPHORE hsem);
  1060. #define FL_ZERO_MEMORY 0x00000001
  1061. #define FL_NONPAGED_MEMORY 0x00000002
  1062. WIN32KAPI
  1063. PVOID
  1064. APIENTRY
  1065. EngAllocMem(
  1066. ULONG Flags,
  1067. ULONG MemSize,
  1068. ULONG Tag);
  1069. WIN32KAPI
  1070. PVOID
  1071. APIENTRY
  1072. EngAllocPrivateUserMem(
  1073. PDD_SURFACE_LOCAL psl,
  1074. SIZE_T cj,
  1075. ULONG tag);
  1076. WIN32KAPI
  1077. PVOID
  1078. APIENTRY
  1079. EngAllocUserMem(
  1080. SIZE_T cj,
  1081. ULONG tag);
  1082. WIN32KAPI
  1083. WINBOOL
  1084. APIENTRY
  1085. EngAlphaBlend(
  1086. SURFOBJ *psoDest,
  1087. SURFOBJ *psoSrc,
  1088. CLIPOBJ *pco,
  1089. XLATEOBJ *pxlo,
  1090. RECTL *prclDest,
  1091. RECTL *prclSrc,
  1092. BLENDOBJ *pBlendObj);
  1093. /* EngAssociateSurface.flHooks constants */
  1094. #define HOOK_BITBLT 0x00000001
  1095. #define HOOK_STRETCHBLT 0x00000002
  1096. #define HOOK_PLGBLT 0x00000004
  1097. #define HOOK_TEXTOUT 0x00000008
  1098. #define HOOK_PAINT 0x00000010
  1099. #define HOOK_STROKEPATH 0x00000020
  1100. #define HOOK_FILLPATH 0x00000040
  1101. #define HOOK_STROKEANDFILLPATH 0x00000080
  1102. #define HOOK_LINETO 0x00000100
  1103. #define HOOK_COPYBITS 0x00000400
  1104. #define HOOK_MOVEPANNING 0x00000800
  1105. #define HOOK_SYNCHRONIZE 0x00001000
  1106. #define HOOK_STRETCHBLTROP 0x00002000
  1107. #define HOOK_SYNCHRONIZEACCESS 0x00004000
  1108. #define HOOK_TRANSPARENTBLT 0x00008000
  1109. #define HOOK_ALPHABLEND 0x00010000
  1110. #define HOOK_GRADIENTFILL 0x00020000
  1111. #define HOOK_FLAGS 0x0003b5ff
  1112. WIN32KAPI
  1113. WINBOOL
  1114. APIENTRY
  1115. EngAssociateSurface(
  1116. HSURF hsurf,
  1117. HDEV hdev,
  1118. FLONG flHooks);
  1119. WIN32KAPI
  1120. WINBOOL
  1121. APIENTRY
  1122. EngBitBlt(
  1123. SURFOBJ *psoTrg,
  1124. SURFOBJ *psoSrc,
  1125. SURFOBJ *psoMask,
  1126. CLIPOBJ *pco,
  1127. XLATEOBJ *pxlo,
  1128. RECTL *prclTrg,
  1129. POINTL *pptlSrc,
  1130. POINTL *pptlMask,
  1131. BRUSHOBJ *pbo,
  1132. POINTL *pptlBrush,
  1133. ROP4 rop4);
  1134. WIN32KAPI
  1135. WINBOOL
  1136. APIENTRY
  1137. EngCheckAbort(
  1138. SURFOBJ *pso);
  1139. WIN32KAPI
  1140. VOID
  1141. APIENTRY
  1142. EngClearEvent(
  1143. PEVENT pEvent);
  1144. WIN32KAPI
  1145. FD_GLYPHSET*
  1146. APIENTRY
  1147. EngComputeGlyphSet(
  1148. INT nCodePage,
  1149. INT nFirstChar,
  1150. INT cChars);
  1151. /* EngControlSprites.fl constants */
  1152. #define ECS_TEARDOWN 0x00000001
  1153. #define ECS_REDRAW 0x00000002
  1154. WIN32KAPI
  1155. WINBOOL
  1156. APIENTRY
  1157. EngControlSprites(
  1158. WNDOBJ *pwo,
  1159. FLONG fl);
  1160. WIN32KAPI
  1161. WINBOOL
  1162. APIENTRY
  1163. EngCopyBits(
  1164. SURFOBJ *psoDest,
  1165. SURFOBJ *psoSrc,
  1166. CLIPOBJ *pco,
  1167. XLATEOBJ *pxlo,
  1168. RECTL *prclDest,
  1169. POINTL *pptlSrc);
  1170. WIN32KAPI
  1171. HBITMAP
  1172. APIENTRY
  1173. EngCreateBitmap(
  1174. SIZEL sizl,
  1175. LONG lWidth,
  1176. ULONG iFormat,
  1177. FLONG fl,
  1178. PVOID pvBits);
  1179. WIN32KAPI
  1180. CLIPOBJ*
  1181. APIENTRY
  1182. EngCreateClip(
  1183. VOID);
  1184. WIN32KAPI
  1185. HBITMAP
  1186. APIENTRY
  1187. EngCreateDeviceBitmap(
  1188. DHSURF dhsurf,
  1189. SIZEL sizl,
  1190. ULONG iFormatCompat);
  1191. WIN32KAPI
  1192. HSURF
  1193. APIENTRY
  1194. EngCreateDeviceSurface(
  1195. DHSURF dhsurf,
  1196. SIZEL sizl,
  1197. ULONG iFormatCompat);
  1198. #if 0
  1199. WIN32KAPI
  1200. HDRVOBJ
  1201. APIENTRY
  1202. EngCreateDriverObj(
  1203. PVOID pvObj,
  1204. FREEOBJPROC pFreeObjProc,
  1205. HDEV hdev);
  1206. #endif
  1207. WIN32KAPI
  1208. WINBOOL
  1209. APIENTRY
  1210. EngCreateEvent(
  1211. PEVENT *ppEvent);
  1212. /* EngCreatePalette.iMode constants */
  1213. #define PAL_INDEXED 0x00000001
  1214. #define PAL_BITFIELDS 0x00000002
  1215. #define PAL_RGB 0x00000004
  1216. #define PAL_BGR 0x00000008
  1217. #define PAL_CMYK 0x00000010
  1218. WIN32KAPI
  1219. HPALETTE
  1220. APIENTRY
  1221. EngCreatePalette(
  1222. ULONG iMode,
  1223. ULONG cColors,
  1224. ULONG *pulColors,
  1225. FLONG flRed,
  1226. FLONG flGreen,
  1227. FLONG flBlue);
  1228. WIN32KAPI
  1229. PATHOBJ*
  1230. APIENTRY
  1231. EngCreatePath(
  1232. VOID);
  1233. WIN32KAPI
  1234. HSEMAPHORE
  1235. APIENTRY
  1236. EngCreateSemaphore(
  1237. VOID);
  1238. /* EngCreateWnd.fl constants */
  1239. #define WO_RGN_CLIENT_DELTA 0x00000001
  1240. #define WO_RGN_CLIENT 0x00000002
  1241. #define WO_RGN_SURFACE_DELTA 0x00000004
  1242. #define WO_RGN_SURFACE 0x00000008
  1243. #define WO_RGN_UPDATE_ALL 0x00000010
  1244. #define WO_RGN_WINDOW 0x00000020
  1245. #define WO_DRAW_NOTIFY 0x00000040
  1246. #define WO_SPRITE_NOTIFY 0x00000080
  1247. #define WO_RGN_DESKTOP_COORD 0x00000100
  1248. WIN32KAPI
  1249. WNDOBJ*
  1250. APIENTRY
  1251. EngCreateWnd(
  1252. SURFOBJ *pso,
  1253. HWND hwnd,
  1254. WNDOBJCHANGEPROC pfn,
  1255. FLONG fl,
  1256. int iPixelFormat);
  1257. WIN32KAPI
  1258. VOID
  1259. APIENTRY
  1260. EngDebugBreak(
  1261. VOID);
  1262. WIN32KAPI
  1263. VOID
  1264. APIENTRY
  1265. EngDebugPrint(
  1266. PCHAR StandardPrefix,
  1267. PCHAR DebugMessage,
  1268. va_list ap);
  1269. WIN32KAPI
  1270. VOID
  1271. APIENTRY
  1272. EngDeleteClip(
  1273. CLIPOBJ *pco);
  1274. WIN32KAPI
  1275. WINBOOL
  1276. APIENTRY
  1277. EngDeleteDriverObj(
  1278. HDRVOBJ hdo,
  1279. WINBOOL bCallBack,
  1280. WINBOOL bLocked);
  1281. WIN32KAPI
  1282. WINBOOL
  1283. APIENTRY
  1284. EngDeleteEvent(
  1285. PEVENT pEvent);
  1286. WIN32KAPI
  1287. WINBOOL
  1288. APIENTRY
  1289. EngDeleteFile(
  1290. LPWSTR pwszFileName);
  1291. WIN32KAPI
  1292. WINBOOL
  1293. APIENTRY
  1294. EngDeletePalette(
  1295. HPALETTE hpal);
  1296. WIN32KAPI
  1297. VOID
  1298. APIENTRY
  1299. EngDeletePath(
  1300. PATHOBJ *ppo);
  1301. WIN32KAPI
  1302. VOID
  1303. APIENTRY
  1304. EngDeleteSafeSemaphore(
  1305. ENGSAFESEMAPHORE *pssem);
  1306. WIN32KAPI
  1307. VOID
  1308. APIENTRY
  1309. EngDeleteSemaphore(
  1310. HSEMAPHORE hsem);
  1311. WIN32KAPI
  1312. WINBOOL
  1313. APIENTRY
  1314. EngDeleteSurface(
  1315. HSURF hsurf);
  1316. WIN32KAPI
  1317. VOID
  1318. APIENTRY
  1319. EngDeleteWnd(
  1320. WNDOBJ *pwo);
  1321. WIN32KAPI
  1322. DWORD
  1323. APIENTRY
  1324. EngDeviceIoControl(
  1325. HANDLE hDevice,
  1326. DWORD dwIoControlCode,
  1327. LPVOID lpInBuffer,
  1328. DWORD nInBufferSize,
  1329. LPVOID lpOutBuffer,
  1330. DWORD nOutBufferSize,
  1331. LPDWORD lpBytesReturned);
  1332. WIN32KAPI
  1333. ULONG
  1334. APIENTRY
  1335. EngDitherColor(
  1336. HDEV hdev,
  1337. ULONG iMode,
  1338. ULONG rgb,
  1339. ULONG *pul);
  1340. WIN32KAPI
  1341. WINBOOL
  1342. APIENTRY
  1343. EngEnumForms(
  1344. HANDLE hPrinter,
  1345. DWORD Level,
  1346. LPBYTE pForm,
  1347. DWORD cbBuf,
  1348. LPDWORD pcbNeeded,
  1349. LPDWORD pcReturned);
  1350. WIN32KAPI
  1351. WINBOOL
  1352. APIENTRY
  1353. EngEraseSurface(
  1354. SURFOBJ *pso,
  1355. RECTL *prcl,
  1356. ULONG iColor);
  1357. WIN32KAPI
  1358. WINBOOL
  1359. APIENTRY
  1360. EngFillPath(
  1361. SURFOBJ *pso,
  1362. PATHOBJ *ppo,
  1363. CLIPOBJ *pco,
  1364. BRUSHOBJ *pbo,
  1365. POINTL *pptlBrushOrg,
  1366. MIX mix,
  1367. FLONG flOptions);
  1368. WIN32KAPI
  1369. PVOID
  1370. APIENTRY
  1371. EngFindImageProcAddress(
  1372. HANDLE hModule,
  1373. LPSTR lpProcName);
  1374. WIN32KAPI
  1375. PVOID
  1376. APIENTRY
  1377. EngFindResource(
  1378. HANDLE h,
  1379. int iName,
  1380. int iType,
  1381. PULONG pulSize);
  1382. WIN32KAPI
  1383. PVOID
  1384. APIENTRY
  1385. EngFntCacheAlloc(
  1386. ULONG FastCheckSum,
  1387. ULONG ulSize);
  1388. /* EngFntCacheFault.iFaultMode constants */
  1389. #define ENG_FNT_CACHE_READ_FAULT 0x00000001
  1390. #define ENG_FNT_CACHE_WRITE_FAULT 0x00000002
  1391. WIN32KAPI
  1392. VOID
  1393. APIENTRY
  1394. EngFntCacheFault(
  1395. ULONG ulFastCheckSum,
  1396. ULONG iFaultMode);
  1397. WIN32KAPI
  1398. PVOID
  1399. APIENTRY
  1400. EngFntCacheLookUp(
  1401. ULONG FastCheckSum,
  1402. ULONG *pulSize);
  1403. WIN32KAPI
  1404. VOID
  1405. APIENTRY
  1406. EngFreeMem(
  1407. PVOID Mem);
  1408. WIN32KAPI
  1409. VOID
  1410. APIENTRY
  1411. EngFreeModule(
  1412. HANDLE h);
  1413. WIN32KAPI
  1414. VOID
  1415. APIENTRY
  1416. EngFreePrivateUserMem(
  1417. PDD_SURFACE_LOCAL psl,
  1418. PVOID pv);
  1419. WIN32KAPI
  1420. VOID
  1421. APIENTRY
  1422. EngFreeUserMem(
  1423. PVOID pv);
  1424. WIN32KAPI
  1425. VOID
  1426. APIENTRY
  1427. EngGetCurrentCodePage(
  1428. PUSHORT OemCodePage,
  1429. PUSHORT AnsiCodePage);
  1430. WIN32KAPI
  1431. HANDLE
  1432. APIENTRY
  1433. EngGetCurrentProcessId(
  1434. VOID);
  1435. WIN32KAPI
  1436. HANDLE
  1437. APIENTRY
  1438. EngGetCurrentThreadId(
  1439. VOID);
  1440. WIN32KAPI
  1441. LPWSTR
  1442. APIENTRY
  1443. EngGetDriverName(
  1444. HDEV hdev);
  1445. WIN32KAPI
  1446. WINBOOL
  1447. APIENTRY
  1448. EngGetFileChangeTime(
  1449. HANDLE h,
  1450. LARGE_INTEGER *pChangeTime);
  1451. WIN32KAPI
  1452. WINBOOL
  1453. APIENTRY
  1454. EngGetFilePath(
  1455. HANDLE h,
  1456. WCHAR (*pDest)[MAX_PATH+1]);
  1457. WIN32KAPI
  1458. WINBOOL
  1459. APIENTRY
  1460. EngGetForm(
  1461. HANDLE hPrinter,
  1462. LPWSTR pFormName,
  1463. DWORD Level,
  1464. LPBYTE pForm,
  1465. DWORD cbBuf,
  1466. LPDWORD pcbNeeded);
  1467. WIN32KAPI
  1468. ULONG
  1469. APIENTRY
  1470. EngGetLastError(
  1471. VOID);
  1472. WIN32KAPI
  1473. WINBOOL
  1474. APIENTRY
  1475. EngGetPrinter(
  1476. HANDLE hPrinter,
  1477. DWORD dwLevel,
  1478. LPBYTE pPrinter,
  1479. DWORD cbBuf,
  1480. LPDWORD pcbNeeded);
  1481. WIN32KAPI
  1482. DWORD
  1483. APIENTRY
  1484. EngGetPrinterData(
  1485. HANDLE hPrinter,
  1486. LPWSTR pValueName,
  1487. LPDWORD pType,
  1488. LPBYTE pData,
  1489. DWORD nSize,
  1490. LPDWORD pcbNeeded);
  1491. WIN32KAPI
  1492. LPWSTR
  1493. APIENTRY
  1494. EngGetPrinterDataFileName(
  1495. HDEV hdev);
  1496. WIN32KAPI
  1497. WINBOOL
  1498. APIENTRY
  1499. EngGetPrinterDriver(
  1500. HANDLE hPrinter,
  1501. LPWSTR pEnvironment,
  1502. DWORD dwLevel,
  1503. BYTE *lpbDrvInfo,
  1504. DWORD cbBuf,
  1505. DWORD *pcbNeeded);
  1506. WIN32KAPI
  1507. HANDLE
  1508. APIENTRY
  1509. EngGetProcessHandle(
  1510. VOID);
  1511. WIN32KAPI
  1512. WINBOOL
  1513. APIENTRY
  1514. EngGetType1FontList(
  1515. HDEV hdev,
  1516. TYPE1_FONT *pType1Buffer,
  1517. ULONG cjType1Buffer,
  1518. PULONG pulLocalFonts,
  1519. PULONG pulRemoteFonts,
  1520. LARGE_INTEGER *pLastModified);
  1521. WIN32KAPI
  1522. WINBOOL
  1523. APIENTRY
  1524. EngGradientFill(
  1525. SURFOBJ *psoDest,
  1526. CLIPOBJ *pco,
  1527. XLATEOBJ *pxlo,
  1528. TRIVERTEX *pVertex,
  1529. ULONG nVertex,
  1530. PVOID pMesh,
  1531. ULONG nMesh,
  1532. RECTL *prclExtents,
  1533. POINTL *pptlDitherOrg,
  1534. ULONG ulMode);
  1535. /* EngHangNotification return values */
  1536. #define EHN_RESTORED 0x00000000
  1537. #define EHN_ERROR 0x00000001
  1538. WIN32KAPI
  1539. ULONG
  1540. APIENTRY
  1541. EngHangNotification(
  1542. HDEV hDev,
  1543. PVOID Reserved);
  1544. WIN32KAPI
  1545. WINBOOL
  1546. APIENTRY
  1547. EngInitializeSafeSemaphore(
  1548. ENGSAFESEMAPHORE *pssem);
  1549. WIN32KAPI
  1550. WINBOOL
  1551. APIENTRY
  1552. EngIsSemaphoreOwned(
  1553. HSEMAPHORE hsem);
  1554. WIN32KAPI
  1555. WINBOOL
  1556. APIENTRY
  1557. EngIsSemaphoreOwnedByCurrentThread(
  1558. HSEMAPHORE hsem);
  1559. WIN32KAPI
  1560. WINBOOL
  1561. APIENTRY
  1562. EngLineTo(
  1563. SURFOBJ *pso,
  1564. CLIPOBJ *pco,
  1565. BRUSHOBJ *pbo,
  1566. LONG x1,
  1567. LONG y1,
  1568. LONG x2,
  1569. LONG y2,
  1570. RECTL *prclBounds,
  1571. MIX mix);
  1572. WIN32KAPI
  1573. HANDLE
  1574. APIENTRY
  1575. EngLoadImage(
  1576. LPWSTR pwszDriver);
  1577. WIN32KAPI
  1578. HANDLE
  1579. APIENTRY
  1580. EngLoadModule(
  1581. LPWSTR pwsz);
  1582. WIN32KAPI
  1583. HANDLE
  1584. APIENTRY
  1585. EngLoadModuleForWrite(
  1586. LPWSTR pwsz,
  1587. ULONG cjSizeOfModule);
  1588. WIN32KAPI
  1589. PDD_SURFACE_LOCAL
  1590. APIENTRY
  1591. EngLockDirectDrawSurface(
  1592. HANDLE hSurface);
  1593. WIN32KAPI
  1594. DRIVEROBJ*
  1595. APIENTRY
  1596. EngLockDriverObj(
  1597. HDRVOBJ hdo);
  1598. WIN32KAPI
  1599. SURFOBJ*
  1600. APIENTRY
  1601. EngLockSurface(
  1602. HSURF hsurf);
  1603. WIN32KAPI
  1604. WINBOOL
  1605. APIENTRY
  1606. EngLpkInstalled(
  1607. VOID);
  1608. WIN32KAPI
  1609. PEVENT
  1610. APIENTRY
  1611. EngMapEvent(
  1612. HDEV hDev,
  1613. HANDLE hUserObject,
  1614. PVOID Reserved1,
  1615. PVOID Reserved2,
  1616. PVOID Reserved3);
  1617. WIN32KAPI
  1618. PVOID
  1619. APIENTRY
  1620. EngMapFile(
  1621. LPWSTR pwsz,
  1622. ULONG cjSize,
  1623. ULONG_PTR *piFile);
  1624. WIN32KAPI
  1625. WINBOOL
  1626. APIENTRY
  1627. EngMapFontFile(
  1628. ULONG_PTR iFile,
  1629. PULONG *ppjBuf,
  1630. ULONG *pcjBuf);
  1631. WIN32KAPI
  1632. WINBOOL
  1633. APIENTRY
  1634. EngMapFontFileFD(
  1635. ULONG_PTR iFile,
  1636. PULONG *ppjBuf,
  1637. ULONG *pcjBuf);
  1638. WIN32KAPI
  1639. PVOID
  1640. APIENTRY
  1641. EngMapModule(
  1642. HANDLE h,
  1643. PULONG pSize);
  1644. WIN32KAPI
  1645. WINBOOL
  1646. APIENTRY
  1647. EngMarkBandingSurface(
  1648. HSURF hsurf);
  1649. /* EngModifySurface.flSurface constants */
  1650. #define MS_NOTSYSTEMMEMORY 0x00000001
  1651. #define MS_SHAREDACCESS 0x00000002
  1652. WIN32KAPI
  1653. WINBOOL
  1654. APIENTRY
  1655. EngModifySurface(
  1656. HSURF hsurf,
  1657. HDEV hdev,
  1658. FLONG flHooks,
  1659. FLONG flSurface,
  1660. DHSURF dhsurf,
  1661. VOID *pvScan0,
  1662. LONG lDelta,
  1663. VOID *pvReserved);
  1664. WIN32KAPI
  1665. VOID
  1666. APIENTRY
  1667. EngMovePointer(
  1668. SURFOBJ *pso,
  1669. LONG x,
  1670. LONG y,
  1671. RECTL *prcl);
  1672. WIN32KAPI
  1673. int
  1674. APIENTRY
  1675. EngMulDiv(
  1676. int a,
  1677. int b,
  1678. int c);
  1679. WIN32KAPI
  1680. VOID
  1681. APIENTRY
  1682. EngMultiByteToUnicodeN(
  1683. LPWSTR UnicodeString,
  1684. ULONG MaxBytesInUnicodeString,
  1685. PULONG BytesInUnicodeString,
  1686. PCHAR MultiByteString,
  1687. ULONG BytesInMultiByteString);
  1688. WIN32KAPI
  1689. INT
  1690. APIENTRY
  1691. EngMultiByteToWideChar(
  1692. UINT CodePage,
  1693. LPWSTR WideCharString,
  1694. INT BytesInWideCharString,
  1695. LPSTR MultiByteString,
  1696. INT BytesInMultiByteString);
  1697. WIN32KAPI
  1698. WINBOOL
  1699. APIENTRY
  1700. EngPaint(
  1701. SURFOBJ *pso,
  1702. CLIPOBJ *pco,
  1703. BRUSHOBJ *pbo,
  1704. POINTL *pptlBrushOrg,
  1705. MIX mix);
  1706. WIN32KAPI
  1707. WINBOOL
  1708. APIENTRY
  1709. EngPlgBlt(
  1710. SURFOBJ *psoTrg,
  1711. SURFOBJ *psoSrc,
  1712. SURFOBJ *psoMsk,
  1713. CLIPOBJ *pco,
  1714. XLATEOBJ *pxlo,
  1715. COLORADJUSTMENT *pca,
  1716. POINTL *pptlBrushOrg,
  1717. POINTFIX *pptfx,
  1718. RECTL *prcl,
  1719. POINTL *pptl,
  1720. ULONG iMode);
  1721. WIN32KAPI
  1722. VOID
  1723. APIENTRY
  1724. EngProbeForRead(
  1725. PVOID Address,
  1726. ULONG Length,
  1727. ULONG Alignment);
  1728. WIN32KAPI
  1729. VOID
  1730. APIENTRY
  1731. EngProbeForReadAndWrite(
  1732. PVOID Address,
  1733. ULONG Length,
  1734. ULONG Alignment);
  1735. typedef enum _ENG_DEVICE_ATTRIBUTE {
  1736. QDA_RESERVED = 0,
  1737. QDA_ACCELERATION_LEVEL
  1738. } ENG_DEVICE_ATTRIBUTE;
  1739. WIN32KAPI
  1740. WINBOOL
  1741. APIENTRY
  1742. EngQueryDeviceAttribute(
  1743. HDEV hdev,
  1744. ENG_DEVICE_ATTRIBUTE devAttr,
  1745. VOID *pvIn,
  1746. ULONG ulInSize,
  1747. VOID *pvOut,
  1748. ULONG ulOutSize);
  1749. WIN32KAPI
  1750. LARGE_INTEGER
  1751. APIENTRY
  1752. EngQueryFileTimeStamp(
  1753. LPWSTR pwsz);
  1754. WIN32KAPI
  1755. VOID
  1756. APIENTRY
  1757. EngQueryLocalTime(
  1758. PENG_TIME_FIELDS ptf);
  1759. WIN32KAPI
  1760. ULONG
  1761. APIENTRY
  1762. EngQueryPalette(
  1763. HPALETTE hPal,
  1764. ULONG *piMode,
  1765. ULONG cColors,
  1766. ULONG *pulColors);
  1767. WIN32KAPI
  1768. VOID
  1769. APIENTRY
  1770. EngQueryPerformanceCounter(
  1771. LONGLONG *pPerformanceCount);
  1772. WIN32KAPI
  1773. VOID
  1774. APIENTRY
  1775. EngQueryPerformanceFrequency(
  1776. LONGLONG *pFrequency);
  1777. typedef enum _ENG_SYSTEM_ATTRIBUTE {
  1778. EngProcessorFeature = 1,
  1779. EngNumberOfProcessors,
  1780. EngOptimumAvailableUserMemory,
  1781. EngOptimumAvailableSystemMemory,
  1782. } ENG_SYSTEM_ATTRIBUTE;
  1783. #define QSA_MMX 0x00000100
  1784. #define QSA_SSE 0x00002000
  1785. #define QSA_3DNOW 0x00004000
  1786. WIN32KAPI
  1787. WINBOOL
  1788. APIENTRY
  1789. EngQuerySystemAttribute(
  1790. ENG_SYSTEM_ATTRIBUTE CapNum,
  1791. PDWORD pCapability);
  1792. WIN32KAPI
  1793. LONG
  1794. APIENTRY
  1795. EngReadStateEvent(
  1796. PEVENT pEvent);
  1797. WIN32KAPI
  1798. VOID
  1799. APIENTRY
  1800. EngReleaseSemaphore(
  1801. HSEMAPHORE hsem);
  1802. WIN32KAPI
  1803. WINBOOL
  1804. APIENTRY
  1805. EngRestoreFloatingPointState(
  1806. VOID *pBuffer);
  1807. WIN32KAPI
  1808. ULONG
  1809. APIENTRY
  1810. EngSaveFloatingPointState(
  1811. VOID *pBuffer,
  1812. ULONG cjBufferSize);
  1813. WIN32KAPI
  1814. HANDLE
  1815. APIENTRY
  1816. EngSecureMem(
  1817. PVOID Address,
  1818. ULONG Length);
  1819. WIN32KAPI
  1820. LONG
  1821. APIENTRY
  1822. EngSetEvent(
  1823. PEVENT pEvent);
  1824. WIN32KAPI
  1825. VOID
  1826. APIENTRY
  1827. EngSetLastError(
  1828. ULONG iError);
  1829. WIN32KAPI
  1830. ULONG
  1831. APIENTRY
  1832. EngSetPointerShape(
  1833. SURFOBJ *pso,
  1834. SURFOBJ *psoMask,
  1835. SURFOBJ *psoColor,
  1836. XLATEOBJ *pxlo,
  1837. LONG xHot,
  1838. LONG yHot,
  1839. LONG x,
  1840. LONG y,
  1841. RECTL *prcl,
  1842. FLONG fl);
  1843. WIN32KAPI
  1844. WINBOOL
  1845. APIENTRY
  1846. EngSetPointerTag(
  1847. HDEV hdev,
  1848. SURFOBJ *psoMask,
  1849. SURFOBJ *psoColor,
  1850. XLATEOBJ *pxlo,
  1851. FLONG fl);
  1852. WIN32KAPI
  1853. DWORD
  1854. APIENTRY
  1855. EngSetPrinterData(
  1856. HANDLE hPrinter,
  1857. LPWSTR pType,
  1858. DWORD dwType,
  1859. LPBYTE lpbPrinterData,
  1860. DWORD cjPrinterData);
  1861. typedef int (CDECL *SORTCOMP)(const void *pv1, const void *pv2);
  1862. WIN32KAPI
  1863. VOID
  1864. APIENTRY
  1865. EngSort(
  1866. PBYTE pjBuf,
  1867. ULONG c,
  1868. ULONG cjElem,
  1869. SORTCOMP pfnComp);
  1870. WIN32KAPI
  1871. WINBOOL
  1872. APIENTRY
  1873. EngStretchBlt(
  1874. SURFOBJ *psoDest,
  1875. SURFOBJ *psoSrc,
  1876. SURFOBJ *psoMask,
  1877. CLIPOBJ *pco,
  1878. XLATEOBJ *pxlo,
  1879. COLORADJUSTMENT *pca,
  1880. POINTL *pptlHTOrg,
  1881. RECTL *prclDest,
  1882. RECTL *prclSrc,
  1883. POINTL *pptlMask,
  1884. ULONG iMode);
  1885. WIN32KAPI
  1886. WINBOOL
  1887. APIENTRY
  1888. EngStretchBltROP(
  1889. SURFOBJ *psoDest,
  1890. SURFOBJ *psoSrc,
  1891. SURFOBJ *psoMask,
  1892. CLIPOBJ *pco,
  1893. XLATEOBJ *pxlo,
  1894. COLORADJUSTMENT *pca,
  1895. POINTL *pptlHTOrg,
  1896. RECTL *prclDest,
  1897. RECTL *prclSrc,
  1898. POINTL *pptlMask,
  1899. ULONG iMode,
  1900. BRUSHOBJ *pbo,
  1901. DWORD rop4);
  1902. WIN32KAPI
  1903. WINBOOL
  1904. APIENTRY
  1905. EngStrokeAndFillPath(
  1906. SURFOBJ *pso,
  1907. PATHOBJ *ppo,
  1908. CLIPOBJ *pco,
  1909. XFORMOBJ *pxo,
  1910. BRUSHOBJ *pboStroke,
  1911. LINEATTRS *plineattrs,
  1912. BRUSHOBJ *pboFill,
  1913. POINTL *pptlBrushOrg,
  1914. MIX mixFill,
  1915. FLONG flOptions);
  1916. WIN32KAPI
  1917. WINBOOL
  1918. APIENTRY
  1919. EngStrokePath(
  1920. SURFOBJ *pso,
  1921. PATHOBJ *ppo,
  1922. CLIPOBJ *pco,
  1923. XFORMOBJ *pxo,
  1924. BRUSHOBJ *pbo,
  1925. POINTL *pptlBrushOrg,
  1926. LINEATTRS *plineattrs,
  1927. MIX mix);
  1928. WIN32KAPI
  1929. WINBOOL
  1930. APIENTRY
  1931. EngTextOut(
  1932. SURFOBJ *pso,
  1933. STROBJ *pstro,
  1934. FONTOBJ *pfo,
  1935. CLIPOBJ *pco,
  1936. RECTL *prclExtra,
  1937. RECTL *prclOpaque,
  1938. BRUSHOBJ *pboFore,
  1939. BRUSHOBJ *pboOpaque,
  1940. POINTL *pptlOrg,
  1941. MIX mix);
  1942. WIN32KAPI
  1943. WINBOOL
  1944. APIENTRY
  1945. EngTransparentBlt(
  1946. SURFOBJ *psoDst,
  1947. SURFOBJ *psoSrc,
  1948. CLIPOBJ *pco,
  1949. XLATEOBJ *pxlo,
  1950. RECTL *prclDst,
  1951. RECTL *prclSrc,
  1952. ULONG iTransColor,
  1953. ULONG ulReserved);
  1954. WIN32KAPI
  1955. VOID
  1956. APIENTRY
  1957. EngUnicodeToMultiByteN(
  1958. PCHAR MultiByteString,
  1959. ULONG MaxBytesInMultiByteString,
  1960. PULONG BytesInMultiByteString,
  1961. PWSTR UnicodeString,
  1962. ULONG BytesInUnicodeString);
  1963. WIN32KAPI
  1964. VOID
  1965. APIENTRY
  1966. EngUnloadImage(
  1967. HANDLE hModule);
  1968. WIN32KAPI
  1969. WINBOOL
  1970. APIENTRY
  1971. EngUnlockDirectDrawSurface(
  1972. PDD_SURFACE_LOCAL pSurface);
  1973. WIN32KAPI
  1974. WINBOOL
  1975. APIENTRY
  1976. EngUnlockDriverObj(
  1977. HDRVOBJ hdo);
  1978. WIN32KAPI
  1979. VOID
  1980. APIENTRY
  1981. EngUnlockSurface(
  1982. SURFOBJ *pso);
  1983. WIN32KAPI
  1984. WINBOOL
  1985. APIENTRY
  1986. EngUnmapEvent(
  1987. PEVENT pEvent);
  1988. WIN32KAPI
  1989. WINBOOL
  1990. APIENTRY
  1991. EngUnmapFile(
  1992. ULONG_PTR iFile);
  1993. WIN32KAPI
  1994. VOID
  1995. APIENTRY
  1996. EngUnmapFontFile(
  1997. ULONG_PTR iFile);
  1998. WIN32KAPI
  1999. VOID
  2000. APIENTRY
  2001. EngUnmapFontFileFD(
  2002. ULONG_PTR iFile);
  2003. WIN32KAPI
  2004. VOID
  2005. APIENTRY
  2006. EngUnsecureMem(
  2007. HANDLE hSecure);
  2008. WIN32KAPI
  2009. WINBOOL
  2010. APIENTRY
  2011. EngWaitForSingleObject(
  2012. PEVENT pEvent,
  2013. PLARGE_INTEGER pTimeOut);
  2014. WIN32KAPI
  2015. INT
  2016. APIENTRY
  2017. EngWideCharToMultiByte(
  2018. UINT CodePage,
  2019. LPWSTR WideCharString,
  2020. INT BytesInWideCharString,
  2021. LPSTR MultiByteString,
  2022. INT BytesInMultiByteString);
  2023. WIN32KAPI
  2024. WINBOOL
  2025. APIENTRY
  2026. EngWritePrinter(
  2027. HANDLE hPrinter,
  2028. LPVOID pBuf,
  2029. DWORD cbBuf,
  2030. LPDWORD pcWritten);
  2031. #if defined(_X86_) && !defined(USERMODE_DRIVER)
  2032. WIN32KAPI
  2033. VOID
  2034. APIENTRY
  2035. FLOATOBJ_Add(
  2036. PFLOATOBJ pf,
  2037. PFLOATOBJ pf1);
  2038. WIN32KAPI
  2039. VOID
  2040. APIENTRY
  2041. FLOATOBJ_AddFloat(
  2042. PFLOATOBJ pf,
  2043. FLOATL f);
  2044. WIN32KAPI
  2045. VOID
  2046. APIENTRY
  2047. FLOATOBJ_AddLong(
  2048. PFLOATOBJ pf,
  2049. LONG l);
  2050. WIN32KAPI
  2051. VOID
  2052. APIENTRY
  2053. FLOATOBJ_Div(
  2054. PFLOATOBJ pf,
  2055. PFLOATOBJ pf1);
  2056. WIN32KAPI
  2057. VOID
  2058. APIENTRY
  2059. FLOATOBJ_DivFloat(
  2060. PFLOATOBJ pf,
  2061. FLOATL f);
  2062. WIN32KAPI
  2063. VOID
  2064. APIENTRY
  2065. FLOATOBJ_DivLong(
  2066. PFLOATOBJ pf,
  2067. LONG l);
  2068. WIN32KAPI
  2069. WINBOOL
  2070. APIENTRY
  2071. FLOATOBJ_Equal(
  2072. PFLOATOBJ pf,
  2073. PFLOATOBJ pf1);
  2074. WIN32KAPI
  2075. WINBOOL
  2076. APIENTRY
  2077. FLOATOBJ_EqualLong(
  2078. PFLOATOBJ pf,
  2079. LONG l);
  2080. WIN32KAPI
  2081. LONG
  2082. APIENTRY
  2083. FLOATOBJ_GetFloat(
  2084. PFLOATOBJ pf);
  2085. WIN32KAPI
  2086. LONG
  2087. APIENTRY
  2088. FLOATOBJ_GetLong(
  2089. PFLOATOBJ pf);
  2090. WIN32KAPI
  2091. WINBOOL
  2092. APIENTRY
  2093. FLOATOBJ_GreaterThan(
  2094. PFLOATOBJ pf,
  2095. PFLOATOBJ pf1);
  2096. WIN32KAPI
  2097. WINBOOL
  2098. APIENTRY
  2099. FLOATOBJ_GreaterThanLong(
  2100. PFLOATOBJ pf,
  2101. LONG l);
  2102. WIN32KAPI
  2103. WINBOOL
  2104. APIENTRY
  2105. FLOATOBJ_LessThan(
  2106. PFLOATOBJ pf,
  2107. PFLOATOBJ pf1);
  2108. WIN32KAPI
  2109. WINBOOL
  2110. APIENTRY
  2111. FLOATOBJ_LessThanLong(
  2112. PFLOATOBJ pf,
  2113. LONG l);
  2114. WIN32KAPI
  2115. VOID
  2116. APIENTRY
  2117. FLOATOBJ_Mul(
  2118. PFLOATOBJ pf,
  2119. PFLOATOBJ pf1);
  2120. WIN32KAPI
  2121. VOID
  2122. APIENTRY
  2123. FLOATOBJ_MulFloat(
  2124. PFLOATOBJ pf,
  2125. FLOATL f);
  2126. WIN32KAPI
  2127. VOID
  2128. APIENTRY
  2129. FLOATOBJ_MulLong(
  2130. PFLOATOBJ pf,
  2131. LONG l);
  2132. WIN32KAPI
  2133. VOID
  2134. APIENTRY
  2135. FLOATOBJ_Neg(
  2136. PFLOATOBJ pf);
  2137. WIN32KAPI
  2138. VOID
  2139. APIENTRY
  2140. FLOATOBJ_SetFloat(
  2141. PFLOATOBJ pf,
  2142. FLOATL f);
  2143. WIN32KAPI
  2144. VOID
  2145. APIENTRY
  2146. FLOATOBJ_SetLong(
  2147. PFLOATOBJ pf,
  2148. LONG l);
  2149. WIN32KAPI
  2150. VOID
  2151. APIENTRY
  2152. FLOATOBJ_Sub(
  2153. PFLOATOBJ pf,
  2154. PFLOATOBJ pf1);
  2155. WIN32KAPI
  2156. VOID
  2157. APIENTRY
  2158. FLOATOBJ_SubFloat(
  2159. PFLOATOBJ pf,
  2160. FLOATL f);
  2161. WIN32KAPI
  2162. VOID
  2163. APIENTRY
  2164. FLOATOBJ_SubLong(
  2165. PFLOATOBJ pf,
  2166. LONG l);
  2167. #else
  2168. #define FLOATOBJ_SetFloat(pf, f) {*(pf) = (f);}
  2169. #define FLOATOBJ_SetLong(pf, l) {*(pf) = (FLOAT)(l);}
  2170. #define FLOATOBJ_GetFloat(pf) (*(PULONG)(pf))
  2171. #define FLOATOBJ_GetLong(pf) ((LONG)*(pf))
  2172. #define FLOATOBJ_Add(pf, pf1) {*(pf) += *(pf1);}
  2173. #define FLOATOBJ_AddFloat(pf, f) {*(pf) += (f);}
  2174. #define FLOATOBJ_AddLong(pf, l) {*(pf) += (l);}
  2175. #define FLOATOBJ_Sub(pf, pf1) {*(pf) -= *(pf1);}
  2176. #define FLOATOBJ_SubFloat(pf, f) {*(pf) -= (f);}
  2177. #define FLOATOBJ_SubLong(pf, l) {*(pf) -= (l);}
  2178. #define FLOATOBJ_Mul(pf, pf1) {*(pf) *= *(pf1);}
  2179. #define FLOATOBJ_MulFloat(pf, f) {*(pf) *= (f);}
  2180. #define FLOATOBJ_MulLong(pf, l) {*(pf) *= (l);}
  2181. #define FLOATOBJ_Div(pf, pf1) {*(pf) /= *(pf1);}
  2182. #define FLOATOBJ_DivFloat(pf, f) {*(pf) /= (f);}
  2183. #define FLOATOBJ_DivLong(pf, l) {*(pf) /= (l);}
  2184. #define FLOATOBJ_Neg(pf) {*(pf) = -(*(pf));}
  2185. #define FLOATOBJ_Equal(pf, pf1) (*(pf) == *(pf1))
  2186. #define FLOATOBJ_GreaterThan(pf, pf1) (*(pf) > *(pf1))
  2187. #define FLOATOBJ_LessThan(pf, pf1) (*(pf) < *(pf1))
  2188. #define FLOATOBJ_EqualLong(pf, l) (*(pf) == (FLOAT)(l))
  2189. #define FLOATOBJ_GreaterThanLong(pf, l) (*(pf) > (FLOAT)(l))
  2190. #define FLOATOBJ_LessThanLong(pf, l) (*(pf) < (FLOAT)(l))
  2191. #endif
  2192. WIN32KAPI
  2193. ULONG
  2194. APIENTRY
  2195. FONTOBJ_cGetAllGlyphHandles(
  2196. FONTOBJ *pfo,
  2197. HGLYPH *phg);
  2198. WIN32KAPI
  2199. ULONG
  2200. APIENTRY
  2201. FONTOBJ_cGetGlyphs(
  2202. FONTOBJ *pfo,
  2203. ULONG iMode,
  2204. ULONG cGlyph,
  2205. HGLYPH *phg,
  2206. PVOID *ppvGlyph);
  2207. WIN32KAPI
  2208. FD_GLYPHSET*
  2209. APIENTRY
  2210. FONTOBJ_pfdg(
  2211. FONTOBJ *pfo);
  2212. WIN32KAPI
  2213. IFIMETRICS*
  2214. APIENTRY
  2215. FONTOBJ_pifi(
  2216. FONTOBJ *pfo);
  2217. WIN32KAPI
  2218. PBYTE
  2219. APIENTRY
  2220. FONTOBJ_pjOpenTypeTablePointer(
  2221. FONTOBJ *pfo,
  2222. ULONG ulTag,
  2223. ULONG *pcjTable);
  2224. WIN32KAPI
  2225. PFD_GLYPHATTR
  2226. APIENTRY
  2227. FONTOBJ_pQueryGlyphAttrs(
  2228. FONTOBJ *pfo,
  2229. ULONG iMode);
  2230. WIN32KAPI
  2231. PVOID
  2232. APIENTRY
  2233. FONTOBJ_pvTrueTypeFontFile(
  2234. FONTOBJ *pfo,
  2235. ULONG *pcjFile);
  2236. WIN32KAPI
  2237. LPWSTR
  2238. APIENTRY
  2239. FONTOBJ_pwszFontFilePaths(
  2240. FONTOBJ *pfo,
  2241. ULONG *pcwc);
  2242. WIN32KAPI
  2243. XFORMOBJ*
  2244. APIENTRY
  2245. FONTOBJ_pxoGetXform(
  2246. FONTOBJ *pfo);
  2247. WIN32KAPI
  2248. VOID
  2249. APIENTRY
  2250. FONTOBJ_vGetInfo(
  2251. FONTOBJ *pfo,
  2252. ULONG cjSize,
  2253. FONTINFO *pfi);
  2254. WIN32KAPI
  2255. LONG
  2256. APIENTRY
  2257. HT_ComputeRGBGammaTable(
  2258. USHORT GammaTableEntries,
  2259. USHORT GammaTableType,
  2260. USHORT RedGamma,
  2261. USHORT GreenGamma,
  2262. USHORT BlueGamma,
  2263. LPBYTE pGammaTable);
  2264. WIN32KAPI
  2265. LONG
  2266. APIENTRY
  2267. HT_Get8BPPFormatPalette(
  2268. LPPALETTEENTRY pPaletteEntry,
  2269. USHORT RedGamma,
  2270. USHORT GreenGamma,
  2271. USHORT BlueGamma);
  2272. WIN32KAPI
  2273. LONG
  2274. APIENTRY
  2275. HT_Get8BPPMaskPalette(
  2276. LPPALETTEENTRY pPaletteEntry,
  2277. WINBOOL Use8BPPMaskPal,
  2278. BYTE CMYMask,
  2279. USHORT RedGamma,
  2280. USHORT GreenGamma,
  2281. USHORT BlueGamma);
  2282. WIN32KAPI
  2283. LONG
  2284. APIENTRY
  2285. HTUI_DeviceColorAdjustment(
  2286. LPSTR pDeviceName,
  2287. PDEVHTADJDATA pDevHTAdjData);
  2288. WIN32KAPI
  2289. ULONG
  2290. APIENTRY
  2291. PALOBJ_cGetColors(
  2292. PALOBJ *ppalo,
  2293. ULONG iStart,
  2294. ULONG cColors,
  2295. ULONG *pulColors);
  2296. WIN32KAPI
  2297. WINBOOL
  2298. APIENTRY
  2299. PATHOBJ_bCloseFigure(
  2300. PATHOBJ *ppo);
  2301. WIN32KAPI
  2302. WINBOOL
  2303. APIENTRY
  2304. PATHOBJ_bEnum(
  2305. PATHOBJ *ppo,
  2306. PATHDATA *ppd);
  2307. WIN32KAPI
  2308. WINBOOL
  2309. APIENTRY
  2310. PATHOBJ_bEnumClipLines(
  2311. PATHOBJ *ppo,
  2312. ULONG cb,
  2313. CLIPLINE *pcl);
  2314. WIN32KAPI
  2315. WINBOOL
  2316. APIENTRY
  2317. PATHOBJ_bMoveTo(
  2318. PATHOBJ *ppo,
  2319. POINTFIX ptfx);
  2320. WIN32KAPI
  2321. WINBOOL
  2322. APIENTRY
  2323. PATHOBJ_bPolyBezierTo(
  2324. PATHOBJ *ppo,
  2325. POINTFIX *pptfx,
  2326. ULONG cptfx);
  2327. WIN32KAPI
  2328. WINBOOL
  2329. APIENTRY
  2330. PATHOBJ_bPolyLineTo(
  2331. PATHOBJ *ppo,
  2332. POINTFIX *pptfx,
  2333. ULONG cptfx);
  2334. WIN32KAPI
  2335. VOID
  2336. APIENTRY
  2337. PATHOBJ_vEnumStart(
  2338. PATHOBJ *ppo);
  2339. WIN32KAPI
  2340. VOID
  2341. APIENTRY
  2342. PATHOBJ_vEnumStartClipLines(
  2343. PATHOBJ *ppo,
  2344. CLIPOBJ *pco,
  2345. SURFOBJ *pso,
  2346. LINEATTRS *pla);
  2347. WIN32KAPI
  2348. VOID
  2349. APIENTRY
  2350. PATHOBJ_vGetBounds(
  2351. PATHOBJ *ppo,
  2352. PRECTFX prectfx);
  2353. WIN32KAPI
  2354. WINBOOL
  2355. APIENTRY
  2356. STROBJ_bEnum(
  2357. STROBJ *pstro,
  2358. ULONG *pc,
  2359. PGLYPHPOS *ppgpos);
  2360. WIN32KAPI
  2361. WINBOOL
  2362. APIENTRY
  2363. STROBJ_bEnumPositionsOnly(
  2364. STROBJ *pstro,
  2365. ULONG *pc,
  2366. PGLYPHPOS *ppgpos);
  2367. WIN32KAPI
  2368. WINBOOL
  2369. APIENTRY
  2370. STROBJ_bGetAdvanceWidths(
  2371. STROBJ *pso,
  2372. ULONG iFirst,
  2373. ULONG c,
  2374. POINTQF *pptqD);
  2375. WIN32KAPI
  2376. DWORD
  2377. APIENTRY
  2378. STROBJ_dwGetCodePage(
  2379. STROBJ *pstro);
  2380. WIN32KAPI
  2381. FIX
  2382. APIENTRY
  2383. STROBJ_fxBreakExtra(
  2384. STROBJ *pstro);
  2385. WIN32KAPI
  2386. FIX
  2387. APIENTRY
  2388. STROBJ_fxCharacterExtra(
  2389. STROBJ *pstro);
  2390. WIN32KAPI
  2391. VOID
  2392. APIENTRY
  2393. STROBJ_vEnumStart(
  2394. STROBJ *pstro);
  2395. WIN32KAPI
  2396. WINBOOL
  2397. APIENTRY
  2398. WNDOBJ_bEnum(
  2399. WNDOBJ *pwo,
  2400. ULONG cj,
  2401. ULONG *pul);
  2402. WIN32KAPI
  2403. ULONG
  2404. APIENTRY
  2405. WNDOBJ_cEnumStart(
  2406. WNDOBJ *pwo,
  2407. ULONG iType,
  2408. ULONG iDirection,
  2409. ULONG cLimit);
  2410. WIN32KAPI
  2411. VOID
  2412. APIENTRY
  2413. WNDOBJ_vSetConsumer(
  2414. WNDOBJ *pwo,
  2415. PVOID pvConsumer);
  2416. /* XFORMOBJ_bApplyXform.iMode constants */
  2417. #define XF_LTOL __MSABI_LONG(0)
  2418. #define XF_INV_LTOL __MSABI_LONG(1)
  2419. #define XF_LTOFX __MSABI_LONG(2)
  2420. #define XF_INV_FXTOL __MSABI_LONG(3)
  2421. WIN32KAPI
  2422. WINBOOL
  2423. APIENTRY
  2424. XFORMOBJ_bApplyXform(
  2425. XFORMOBJ *pxo,
  2426. ULONG iMode,
  2427. ULONG cPoints,
  2428. PVOID pvIn,
  2429. PVOID pvOut);
  2430. WIN32KAPI
  2431. ULONG
  2432. APIENTRY
  2433. XFORMOBJ_iGetFloatObjXform(
  2434. XFORMOBJ *pxo,
  2435. FLOATOBJ_XFORM *pxfo);
  2436. WIN32KAPI
  2437. ULONG
  2438. APIENTRY
  2439. XFORMOBJ_iGetXform(
  2440. XFORMOBJ *pxo,
  2441. XFORML *pxform);
  2442. /* XLATEOBJ_cGetPalette.iPal constants */
  2443. #define XO_SRCPALETTE 1
  2444. #define XO_DESTPALETTE 2
  2445. #define XO_DESTDCPALETTE 3
  2446. #define XO_SRCBITFIELDS 4
  2447. #define XO_DESTBITFIELDS 5
  2448. WIN32KAPI
  2449. ULONG
  2450. APIENTRY
  2451. XLATEOBJ_cGetPalette(
  2452. XLATEOBJ *pxlo,
  2453. ULONG iPal,
  2454. ULONG cPal,
  2455. ULONG *pPal);
  2456. WIN32KAPI
  2457. HANDLE
  2458. APIENTRY
  2459. XLATEOBJ_hGetColorTransform(
  2460. XLATEOBJ *pxlo);
  2461. WIN32KAPI
  2462. ULONG
  2463. APIENTRY
  2464. XLATEOBJ_iXlate(
  2465. XLATEOBJ *pxlo,
  2466. ULONG iColor);
  2467. WIN32KAPI
  2468. ULONG*
  2469. APIENTRY
  2470. XLATEOBJ_piVector(
  2471. XLATEOBJ *pxlo);
  2472. /* Graphics Driver Functions */
  2473. WINBOOL
  2474. APIENTRY
  2475. DrvAlphaBlend(
  2476. SURFOBJ *psoDest,
  2477. SURFOBJ *psoSrc,
  2478. CLIPOBJ *pco,
  2479. XLATEOBJ *pxlo,
  2480. RECTL *prclDest,
  2481. RECTL *prclSrc,
  2482. BLENDOBJ *pBlendObj);
  2483. WINBOOL
  2484. APIENTRY
  2485. DrvAssertMode(
  2486. DHPDEV dhpdev,
  2487. WINBOOL bEnable);
  2488. WINBOOL
  2489. APIENTRY
  2490. DrvBitBlt(
  2491. SURFOBJ *psoTrg,
  2492. SURFOBJ *psoSrc,
  2493. SURFOBJ *psoMask,
  2494. CLIPOBJ *pco,
  2495. XLATEOBJ *pxlo,
  2496. RECTL *prclTrg,
  2497. POINTL *pptlSrc,
  2498. POINTL *pptlMask,
  2499. BRUSHOBJ *pbo,
  2500. POINTL *pptlBrush,
  2501. ROP4 rop4);
  2502. VOID
  2503. APIENTRY
  2504. DrvCompletePDEV(
  2505. DHPDEV dhpdev,
  2506. HDEV hdev);
  2507. WINBOOL
  2508. APIENTRY
  2509. DrvCopyBits(
  2510. SURFOBJ *psoDest,
  2511. SURFOBJ *psoSrc,
  2512. CLIPOBJ *pco,
  2513. XLATEOBJ *pxlo,
  2514. RECTL *prclDest,
  2515. POINTL *pptlSrc);
  2516. HBITMAP
  2517. APIENTRY
  2518. DrvCreateDeviceBitmap(
  2519. DHPDEV dhpdev,
  2520. SIZEL sizl,
  2521. ULONG iFormat);
  2522. VOID
  2523. APIENTRY
  2524. DrvDeleteDeviceBitmap(
  2525. DHSURF dhsurf);
  2526. HBITMAP
  2527. APIENTRY
  2528. DrvDeriveSurface(
  2529. DD_DIRECTDRAW_GLOBAL *pDirectDraw,
  2530. DD_SURFACE_LOCAL *pSurface);
  2531. LONG
  2532. APIENTRY
  2533. DrvDescribePixelFormat(
  2534. DHPDEV dhpdev,
  2535. LONG iPixelFormat,
  2536. ULONG cjpfd,
  2537. PIXELFORMATDESCRIPTOR *ppfd);
  2538. VOID
  2539. APIENTRY
  2540. DrvDestroyFont(
  2541. FONTOBJ *pfo);
  2542. VOID
  2543. APIENTRY
  2544. DrvDisableDriver(
  2545. VOID);
  2546. VOID
  2547. APIENTRY
  2548. DrvDisablePDEV(
  2549. DHPDEV dhpdev);
  2550. VOID
  2551. APIENTRY
  2552. DrvDisableSurface(
  2553. DHPDEV dhpdev);
  2554. #define DM_DEFAULT 0x00000001
  2555. #define DM_MONOCHROME 0x00000002
  2556. ULONG
  2557. APIENTRY
  2558. DrvDitherColor(
  2559. DHPDEV dhpdev,
  2560. ULONG iMode,
  2561. ULONG rgb,
  2562. ULONG *pul);
  2563. ULONG
  2564. APIENTRY
  2565. DrvDrawEscape(
  2566. SURFOBJ *pso,
  2567. ULONG iEsc,
  2568. CLIPOBJ *pco,
  2569. RECTL *prcl,
  2570. ULONG cjIn,
  2571. PVOID pvIn);
  2572. WINBOOL
  2573. APIENTRY
  2574. DrvEnableDriver(
  2575. ULONG iEngineVersion,
  2576. ULONG cj,
  2577. DRVENABLEDATA *pded);
  2578. DHPDEV
  2579. APIENTRY
  2580. DrvEnablePDEV(
  2581. DEVMODEW *pdm,
  2582. LPWSTR pwszLogAddress,
  2583. ULONG cPat,
  2584. HSURF *phsurfPatterns,
  2585. ULONG cjCaps,
  2586. ULONG *pdevcaps,
  2587. ULONG cjDevInfo,
  2588. DEVINFO *pdi,
  2589. HDEV hdev,
  2590. LPWSTR pwszDeviceName,
  2591. HANDLE hDriver);
  2592. HSURF
  2593. APIENTRY
  2594. DrvEnableSurface(
  2595. DHPDEV dhpdev);
  2596. /* DrvEndDoc.fl constants */
  2597. #define ED_ABORTDOC 0x00000001
  2598. WINBOOL
  2599. APIENTRY
  2600. DrvEndDoc(
  2601. SURFOBJ *pso,
  2602. FLONG fl);
  2603. ULONG
  2604. APIENTRY
  2605. DrvEscape(
  2606. SURFOBJ *pso,
  2607. ULONG iEsc,
  2608. ULONG cjIn,
  2609. PVOID pvIn,
  2610. ULONG cjOut,
  2611. PVOID pvOut);
  2612. WINBOOL
  2613. APIENTRY
  2614. DrvFillPath(
  2615. SURFOBJ *pso,
  2616. PATHOBJ *ppo,
  2617. CLIPOBJ *pco,
  2618. BRUSHOBJ *pbo,
  2619. POINTL *pptlBrushOrg,
  2620. MIX mix,
  2621. FLONG flOptions);
  2622. ULONG
  2623. APIENTRY
  2624. DrvFontManagement(
  2625. SURFOBJ *pso,
  2626. FONTOBJ *pfo,
  2627. ULONG iMode,
  2628. ULONG cjIn,
  2629. PVOID pvIn,
  2630. ULONG cjOut,
  2631. PVOID pvOut);
  2632. VOID
  2633. APIENTRY
  2634. DrvFree(
  2635. PVOID pv,
  2636. ULONG_PTR id);
  2637. /* DrvGetGlyphMode return values */
  2638. #define FO_HGLYPHS __MSABI_LONG(0)
  2639. #define FO_GLYPHBITS __MSABI_LONG(1)
  2640. #define FO_PATHOBJ __MSABI_LONG(2)
  2641. ULONG
  2642. APIENTRY
  2643. DrvGetGlyphMode(
  2644. DHPDEV dhpdev,
  2645. FONTOBJ *pfo);
  2646. ULONG
  2647. APIENTRY
  2648. DrvGetModes(
  2649. HANDLE hDriver,
  2650. ULONG cjSize,
  2651. DEVMODEW *pdm);
  2652. PVOID
  2653. APIENTRY
  2654. DrvGetTrueTypeFile(
  2655. ULONG_PTR iFile,
  2656. ULONG *pcj);
  2657. WINBOOL
  2658. APIENTRY
  2659. DrvGradientFill(
  2660. SURFOBJ *psoDest,
  2661. CLIPOBJ *pco,
  2662. XLATEOBJ *pxlo,
  2663. TRIVERTEX *pVertex,
  2664. ULONG nVertex,
  2665. PVOID pMesh,
  2666. ULONG nMesh,
  2667. RECTL *prclExtents,
  2668. POINTL *pptlDitherOrg,
  2669. ULONG ulMode);
  2670. WINBOOL
  2671. APIENTRY
  2672. DrvIcmCheckBitmapBits(
  2673. DHPDEV dhpdev,
  2674. HANDLE hColorTransform,
  2675. SURFOBJ *pso,
  2676. PBYTE paResults);
  2677. HANDLE
  2678. APIENTRY
  2679. DrvIcmCreateColorTransform(
  2680. DHPDEV dhpdev,
  2681. LPLOGCOLORSPACEW pLogColorSpace,
  2682. PVOID pvSourceProfile,
  2683. ULONG cjSourceProfile,
  2684. PVOID pvDestProfile,
  2685. ULONG cjDestProfile,
  2686. PVOID pvTargetProfile,
  2687. ULONG cjTargetProfile,
  2688. DWORD dwReserved);
  2689. WINBOOL
  2690. APIENTRY
  2691. DrvIcmDeleteColorTransform(
  2692. DHPDEV dhpdev,
  2693. HANDLE hcmXform);
  2694. /* DrvIcmSetDeviceGammaRamp.iFormat constants */
  2695. #define IGRF_RGB_256BYTES 0x00000000
  2696. #define IGRF_RGB_256WORDS 0x00000001
  2697. WINBOOL
  2698. APIENTRY
  2699. DrvIcmSetDeviceGammaRamp(
  2700. DHPDEV dhpdev,
  2701. ULONG iFormat,
  2702. LPVOID lpRamp);
  2703. WINBOOL
  2704. APIENTRY
  2705. DrvLineTo(
  2706. SURFOBJ *pso,
  2707. CLIPOBJ *pco,
  2708. BRUSHOBJ *pbo,
  2709. LONG x1,
  2710. LONG y1,
  2711. LONG x2,
  2712. LONG y2,
  2713. RECTL *prclBounds,
  2714. MIX mix);
  2715. ULONG_PTR
  2716. APIENTRY
  2717. DrvLoadFontFile(
  2718. ULONG cFiles,
  2719. ULONG_PTR *piFile,
  2720. PVOID *ppvView,
  2721. ULONG *pcjView,
  2722. DESIGNVECTOR *pdv,
  2723. ULONG ulLangID,
  2724. ULONG ulFastCheckSum);
  2725. VOID
  2726. APIENTRY
  2727. DrvMovePointer(
  2728. SURFOBJ *pso,
  2729. LONG x,
  2730. LONG y,
  2731. RECTL *prcl);
  2732. WINBOOL
  2733. APIENTRY
  2734. DrvNextBand(
  2735. SURFOBJ *pso,
  2736. POINTL *pptl);
  2737. VOID
  2738. APIENTRY
  2739. DrvNotify(
  2740. SURFOBJ *pso,
  2741. ULONG iType,
  2742. PVOID pvData);
  2743. WINBOOL
  2744. APIENTRY
  2745. DrvOffset(
  2746. SURFOBJ *pso,
  2747. LONG x,
  2748. LONG y,
  2749. FLONG flReserved);
  2750. WINBOOL
  2751. APIENTRY
  2752. DrvPaint(
  2753. SURFOBJ *pso,
  2754. CLIPOBJ *pco,
  2755. BRUSHOBJ *pbo,
  2756. POINTL *pptlBrushOrg,
  2757. MIX mix);
  2758. WINBOOL
  2759. APIENTRY
  2760. DrvPlgBlt(
  2761. SURFOBJ *psoTrg,
  2762. SURFOBJ *psoSrc,
  2763. SURFOBJ *psoMsk,
  2764. CLIPOBJ *pco,
  2765. XLATEOBJ *pxlo,
  2766. COLORADJUSTMENT *pca,
  2767. POINTL *pptlBrushOrg,
  2768. POINTFIX *pptfx,
  2769. RECTL *prcl,
  2770. POINTL *pptl,
  2771. ULONG iMode);
  2772. /* DrvQueryAdvanceWidths.iMode constants */
  2773. #define QAW_GETWIDTHS 0
  2774. #define QAW_GETEASYWIDTHS 1
  2775. WINBOOL
  2776. APIENTRY
  2777. DrvQueryAdvanceWidths(
  2778. DHPDEV dhpdev,
  2779. FONTOBJ *pfo,
  2780. ULONG iMode,
  2781. HGLYPH *phg,
  2782. PVOID pvWidths,
  2783. ULONG cGlyphs);
  2784. /* DrvQueryDeviceSupport.iType constants */
  2785. #define QDS_CHECKJPEGFORMAT 0x00000000
  2786. #define QDS_CHECKPNGFORMAT 0x00000001
  2787. WINBOOL
  2788. APIENTRY
  2789. DrvQueryDeviceSupport(
  2790. SURFOBJ *pso,
  2791. XLATEOBJ *pxlo,
  2792. XFORMOBJ *pxo,
  2793. ULONG iType,
  2794. ULONG cjIn,
  2795. PVOID pvIn,
  2796. ULONG cjOut,
  2797. PVOID pvOut);
  2798. /* DrvQueryDriverInfo.dwMode constants */
  2799. #define DRVQUERY_USERMODE 0x00000001
  2800. WINBOOL
  2801. APIENTRY
  2802. DrvQueryDriverInfo(
  2803. DWORD dwMode,
  2804. PVOID pBuffer,
  2805. DWORD cbBuf,
  2806. PDWORD pcbNeeded);
  2807. PIFIMETRICS
  2808. APIENTRY
  2809. DrvQueryFont(
  2810. DHPDEV dhpdev,
  2811. ULONG_PTR iFile,
  2812. ULONG iFace,
  2813. ULONG_PTR *pid);
  2814. /* DrvQueryFontCaps.pulCaps constants */
  2815. #define QC_OUTLINES 0x00000001
  2816. #define QC_1BIT 0x00000002
  2817. #define QC_4BIT 0x00000004
  2818. #define QC_FONTDRIVERCAPS (QC_OUTLINES | QC_1BIT | QC_4BIT)
  2819. LONG
  2820. APIENTRY
  2821. DrvQueryFontCaps(
  2822. ULONG culCaps,
  2823. ULONG *pulCaps);
  2824. /* DrvQueryFontData.iMode constants */
  2825. #define QFD_GLYPHANDBITMAP __MSABI_LONG(1)
  2826. #define QFD_GLYPHANDOUTLINE __MSABI_LONG(2)
  2827. #define QFD_MAXEXTENTS __MSABI_LONG(3)
  2828. #define QFD_TT_GLYPHANDBITMAP __MSABI_LONG(4)
  2829. #define QFD_TT_GRAY1_BITMAP __MSABI_LONG(5)
  2830. #define QFD_TT_GRAY2_BITMAP __MSABI_LONG(6)
  2831. #define QFD_TT_GRAY4_BITMAP __MSABI_LONG(8)
  2832. #define QFD_TT_GRAY8_BITMAP __MSABI_LONG(9)
  2833. #define QFD_TT_MONO_BITMAP QFD_TT_GRAY1_BITMAP
  2834. LONG
  2835. APIENTRY
  2836. DrvQueryFontData(
  2837. DHPDEV dhpdev,
  2838. FONTOBJ *pfo,
  2839. ULONG iMode,
  2840. HGLYPH hg,
  2841. GLYPHDATA *pgd,
  2842. PVOID pv,
  2843. ULONG cjSize);
  2844. /* DrvQueryFontFile.ulMode constants */
  2845. #define QFF_DESCRIPTION 0x00000001
  2846. #define QFF_NUMFACES 0x00000002
  2847. LONG
  2848. APIENTRY
  2849. DrvQueryFontFile(
  2850. ULONG_PTR iFile,
  2851. ULONG ulMode,
  2852. ULONG cjBuf,
  2853. ULONG *pulBuf);
  2854. /* DrvQueryFontTree.iMode constants */
  2855. #define QFT_UNICODE __MSABI_LONG(0)
  2856. #define QFT_LIGATURES __MSABI_LONG(1)
  2857. #define QFT_KERNPAIRS __MSABI_LONG(2)
  2858. #define QFT_GLYPHSET __MSABI_LONG(3)
  2859. PVOID
  2860. APIENTRY
  2861. DrvQueryFontTree(
  2862. DHPDEV dhpdev,
  2863. ULONG_PTR iFile,
  2864. ULONG iFace,
  2865. ULONG iMode,
  2866. ULONG_PTR *pid);
  2867. PFD_GLYPHATTR
  2868. APIENTRY
  2869. DrvQueryGlyphAttrs(
  2870. FONTOBJ *pfo,
  2871. ULONG iMode);
  2872. ULONG
  2873. APIENTRY
  2874. DrvQueryPerBandInfo(
  2875. SURFOBJ *pso,
  2876. PERBANDINFO *pbi);
  2877. /* DrvQueryTrueTypeOutline.bMetricsOnly constants */
  2878. #define TTO_METRICS_ONLY 0x00000001
  2879. #define TTO_QUBICS 0x00000002
  2880. #define TTO_UNHINTED 0x00000004
  2881. LONG
  2882. APIENTRY
  2883. DrvQueryTrueTypeOutline(
  2884. DHPDEV dhpdev,
  2885. FONTOBJ *pfo,
  2886. HGLYPH hglyph,
  2887. WINBOOL bMetricsOnly,
  2888. GLYPHDATA *pgldt,
  2889. ULONG cjBuf,
  2890. TTPOLYGONHEADER *ppoly);
  2891. LONG
  2892. APIENTRY
  2893. DrvQueryTrueTypeTable(
  2894. ULONG_PTR iFile,
  2895. ULONG ulFont,
  2896. ULONG ulTag,
  2897. PTRDIFF dpStart,
  2898. ULONG cjBuf,
  2899. BYTE *pjBuf,
  2900. PBYTE *ppjTable,
  2901. ULONG *pcjTable);
  2902. /* DrvRealizeBrush.iHatch constants */
  2903. #define RB_DITHERCOLOR __MSABI_LONG(0x80000000)
  2904. #define HS_DDI_MAX 6
  2905. WINBOOL
  2906. APIENTRY
  2907. DrvRealizeBrush(
  2908. BRUSHOBJ *pbo,
  2909. SURFOBJ *psoTarget,
  2910. SURFOBJ *psoPattern,
  2911. SURFOBJ *psoMask,
  2912. XLATEOBJ *pxlo,
  2913. ULONG iHatch);
  2914. /* DrvResetDevice return values */
  2915. #define DRD_SUCCESS 0
  2916. #define DRD_ERROR 1
  2917. ULONG
  2918. APIENTRY
  2919. DrvResetDevice(
  2920. DHPDEV dhpdev,
  2921. PVOID Reserved);
  2922. WINBOOL
  2923. APIENTRY
  2924. DrvResetPDEV(
  2925. DHPDEV dhpdevOld,
  2926. DHPDEV dhpdevNew);
  2927. /* DrvSaveScreenBits.iMode constants */
  2928. #define SS_SAVE 0x00000000
  2929. #define SS_RESTORE 0x00000001
  2930. #define SS_FREE 0x00000002
  2931. ULONG_PTR
  2932. APIENTRY
  2933. DrvSaveScreenBits(
  2934. SURFOBJ *pso,
  2935. ULONG iMode,
  2936. ULONG_PTR ident,
  2937. RECTL *prcl);
  2938. WINBOOL
  2939. APIENTRY
  2940. DrvSendPage(
  2941. SURFOBJ *pso);
  2942. WINBOOL
  2943. APIENTRY
  2944. DrvSetPalette(
  2945. DHPDEV dhpdev,
  2946. PALOBJ *ppalo,
  2947. FLONG fl,
  2948. ULONG iStart,
  2949. ULONG cColors);
  2950. WINBOOL
  2951. APIENTRY
  2952. DrvSetPixelFormat(
  2953. SURFOBJ *pso,
  2954. LONG iPixelFormat,
  2955. HWND hwnd);
  2956. /* DrvSetPointerShape return values */
  2957. #define SPS_ERROR 0x00000000
  2958. #define SPS_DECLINE 0x00000001
  2959. #define SPS_ACCEPT_NOEXCLUDE 0x00000002
  2960. #define SPS_ACCEPT_EXCLUDE 0x00000003
  2961. #define SPS_ACCEPT_SYNCHRONOUS 0x00000004
  2962. /* DrvSetPointerShape.fl constants */
  2963. #define SPS_CHANGE __MSABI_LONG(0x00000001)
  2964. #define SPS_ASYNCCHANGE __MSABI_LONG(0x00000002)
  2965. #define SPS_ANIMATESTART __MSABI_LONG(0x00000004)
  2966. #define SPS_ANIMATEUPDATE __MSABI_LONG(0x00000008)
  2967. #define SPS_ALPHA __MSABI_LONG(0x00000010)
  2968. #define SPS_LENGTHMASK __MSABI_LONG(0x00000F00)
  2969. #define SPS_FREQMASK __MSABI_LONG(0x000FF000)
  2970. ULONG
  2971. APIENTRY
  2972. DrvSetPointerShape(
  2973. SURFOBJ *pso,
  2974. SURFOBJ *psoMask,
  2975. SURFOBJ *psoColor,
  2976. XLATEOBJ *pxlo,
  2977. LONG xHot,
  2978. LONG yHot,
  2979. LONG x,
  2980. LONG y,
  2981. RECTL *prcl,
  2982. FLONG fl);
  2983. WINBOOL
  2984. APIENTRY
  2985. DrvStartBanding(
  2986. SURFOBJ *pso,
  2987. POINTL *pptl);
  2988. WINBOOL
  2989. APIENTRY
  2990. DrvStartDoc(
  2991. SURFOBJ *pso,
  2992. LPWSTR pwszDocName,
  2993. DWORD dwJobId);
  2994. WINBOOL
  2995. APIENTRY
  2996. DrvStartPage(
  2997. SURFOBJ *pso);
  2998. WINBOOL
  2999. APIENTRY
  3000. DrvStretchBlt(
  3001. SURFOBJ *psoDest,
  3002. SURFOBJ *psoSrc,
  3003. SURFOBJ *psoMask,
  3004. CLIPOBJ *pco,
  3005. XLATEOBJ *pxlo,
  3006. COLORADJUSTMENT *pca,
  3007. POINTL *pptlHTOrg,
  3008. RECTL *prclDest,
  3009. RECTL *prclSrc,
  3010. POINTL *pptlMask,
  3011. ULONG iMode);
  3012. WINBOOL
  3013. APIENTRY
  3014. DrvStretchBltROP(
  3015. SURFOBJ *psoDest,
  3016. SURFOBJ *psoSrc,
  3017. SURFOBJ *psoMask,
  3018. CLIPOBJ *pco,
  3019. XLATEOBJ *pxlo,
  3020. COLORADJUSTMENT *pca,
  3021. POINTL *pptlHTOrg,
  3022. RECTL *prclDest,
  3023. RECTL *prclSrc,
  3024. POINTL *pptlMask,
  3025. ULONG iMode,
  3026. BRUSHOBJ *pbo,
  3027. DWORD rop4);
  3028. WINBOOL
  3029. APIENTRY
  3030. DrvStrokeAndFillPath(
  3031. SURFOBJ *pso,
  3032. PATHOBJ *ppo,
  3033. CLIPOBJ *pco,
  3034. XFORMOBJ *pxo,
  3035. BRUSHOBJ *pboStroke,
  3036. LINEATTRS *plineattrs,
  3037. BRUSHOBJ *pboFill,
  3038. POINTL *pptlBrushOrg,
  3039. MIX mixFill,
  3040. FLONG flOptions);
  3041. WINBOOL
  3042. APIENTRY
  3043. DrvStrokePath(
  3044. SURFOBJ *pso,
  3045. PATHOBJ *ppo,
  3046. CLIPOBJ *pco,
  3047. XFORMOBJ *pxo,
  3048. BRUSHOBJ *pbo,
  3049. POINTL *pptlBrushOrg,
  3050. LINEATTRS *plineattrs,
  3051. MIX mix);
  3052. WINBOOL
  3053. APIENTRY
  3054. DrvSwapBuffers(
  3055. SURFOBJ *pso,
  3056. WNDOBJ *pwo);
  3057. VOID
  3058. APIENTRY
  3059. DrvSynchronize(
  3060. DHPDEV dhpdev,
  3061. RECTL *prcl);
  3062. /* DrvSynchronizeSurface.fl constants */
  3063. #define DSS_TIMER_EVENT 0x00000001
  3064. #define DSS_FLUSH_EVENT 0x00000002
  3065. VOID
  3066. APIENTRY
  3067. DrvSynchronizeSurface(
  3068. SURFOBJ *pso,
  3069. RECTL *prcl,
  3070. FLONG fl);
  3071. WINBOOL
  3072. APIENTRY
  3073. DrvTextOut(
  3074. SURFOBJ *pso,
  3075. STROBJ *pstro,
  3076. FONTOBJ *pfo,
  3077. CLIPOBJ *pco,
  3078. RECTL *prclExtra,
  3079. RECTL *prclOpaque,
  3080. BRUSHOBJ *pboFore,
  3081. BRUSHOBJ *pboOpaque,
  3082. POINTL *pptlOrg,
  3083. MIX mix);
  3084. WINBOOL
  3085. APIENTRY
  3086. DrvTransparentBlt(
  3087. SURFOBJ *psoDst,
  3088. SURFOBJ *psoSrc,
  3089. CLIPOBJ *pco,
  3090. XLATEOBJ *pxlo,
  3091. RECTL *prclDst,
  3092. RECTL *prclSrc,
  3093. ULONG iTransColor,
  3094. ULONG ulReserved);
  3095. WINBOOL
  3096. APIENTRY
  3097. DrvUnloadFontFile(
  3098. ULONG_PTR iFile);
  3099. typedef WINBOOL
  3100. (APIENTRY *PFN_DrvAlphaBlend)(
  3101. SURFOBJ *psoDest,
  3102. SURFOBJ *psoSrc,
  3103. CLIPOBJ *pco,
  3104. XLATEOBJ *pxlo,
  3105. RECTL *prclDest,
  3106. RECTL *prclSrc,
  3107. BLENDOBJ *pBlendObj);
  3108. typedef WINBOOL
  3109. (APIENTRY *PFN_DrvAssertMode)(
  3110. DHPDEV dhpdev,
  3111. WINBOOL bEnable);
  3112. typedef WINBOOL
  3113. (APIENTRY *PFN_DrvBitBlt)(
  3114. SURFOBJ *psoTrg,
  3115. SURFOBJ *psoSrc,
  3116. SURFOBJ *psoMask,
  3117. CLIPOBJ *pco,
  3118. XLATEOBJ *pxlo,
  3119. RECTL *prclTrg,
  3120. POINTL *pptlSrc,
  3121. POINTL *pptlMask,
  3122. BRUSHOBJ *pbo,
  3123. POINTL *pptlBrush,
  3124. ROP4 rop4);
  3125. typedef VOID
  3126. (APIENTRY *PFN_DrvCompletePDEV)(
  3127. DHPDEV dhpdev,
  3128. HDEV hdev);
  3129. typedef WINBOOL
  3130. (APIENTRY *PFN_DrvCopyBits)(
  3131. SURFOBJ *psoDest,
  3132. SURFOBJ *psoSrc,
  3133. CLIPOBJ *pco,
  3134. XLATEOBJ *pxlo,
  3135. RECTL *prclDest,
  3136. POINTL *pptlSrc);
  3137. typedef HBITMAP
  3138. (APIENTRY *PFN_DrvCreateDeviceBitmap)(
  3139. DHPDEV dhpdev,
  3140. SIZEL sizl,
  3141. ULONG iFormat);
  3142. typedef VOID
  3143. (APIENTRY *PFN_DrvDeleteDeviceBitmap)(
  3144. DHSURF dhsurf);
  3145. typedef HBITMAP
  3146. (APIENTRY *PFN_DrvDeriveSurface)(
  3147. DD_DIRECTDRAW_GLOBAL *pDirectDraw,
  3148. DD_SURFACE_LOCAL *pSurface);
  3149. typedef LONG
  3150. (APIENTRY *PFN_DrvDescribePixelFormat)(
  3151. DHPDEV dhpdev,
  3152. LONG iPixelFormat,
  3153. ULONG cjpfd,
  3154. PIXELFORMATDESCRIPTOR *ppfd);
  3155. typedef VOID
  3156. (APIENTRY *PFN_DrvDestroyFont)(
  3157. FONTOBJ *pfo);
  3158. typedef VOID
  3159. (APIENTRY *PFN_DrvDisableDriver)(
  3160. VOID);
  3161. typedef VOID
  3162. (APIENTRY *PFN_DrvDisablePDEV)(
  3163. DHPDEV dhpdev);
  3164. typedef VOID
  3165. (APIENTRY *PFN_DrvDisableSurface)(
  3166. DHPDEV dhpdev);
  3167. typedef ULONG
  3168. (APIENTRY *PFN_DrvDitherColor)(
  3169. DHPDEV dhpdev,
  3170. ULONG iMode,
  3171. ULONG rgb,
  3172. ULONG *pul);
  3173. typedef ULONG
  3174. (APIENTRY *PFN_DrvDrawEscape)(
  3175. SURFOBJ *pso,
  3176. ULONG iEsc,
  3177. CLIPOBJ *pco,
  3178. RECTL *prcl,
  3179. ULONG cjIn,
  3180. PVOID pvIn);
  3181. typedef WINBOOL
  3182. (APIENTRY *PFN_DrvEnableDriver)(
  3183. ULONG iEngineVersion,
  3184. ULONG cj,
  3185. DRVENABLEDATA *pded);
  3186. typedef DHPDEV
  3187. (APIENTRY *PFN_DrvEnablePDEV)(
  3188. DEVMODEW *pdm,
  3189. LPWSTR pwszLogAddress,
  3190. ULONG cPat,
  3191. HSURF *phsurfPatterns,
  3192. ULONG cjCaps,
  3193. GDIINFO *pdevcaps,
  3194. ULONG cjDevInfo,
  3195. DEVINFO *pdi,
  3196. HDEV hdev,
  3197. LPWSTR pwszDeviceName,
  3198. HANDLE hDriver);
  3199. typedef HSURF
  3200. (APIENTRY *PFN_DrvEnableSurface)(
  3201. DHPDEV dhpdev);
  3202. typedef WINBOOL
  3203. (APIENTRY *PFN_DrvEndDoc)(
  3204. SURFOBJ *pso,
  3205. FLONG fl);
  3206. typedef ULONG
  3207. (APIENTRY *PFN_DrvEscape)(
  3208. SURFOBJ *pso,
  3209. ULONG iEsc,
  3210. ULONG cjIn,
  3211. PVOID pvIn,
  3212. ULONG cjOut,
  3213. PVOID pvOut);
  3214. typedef WINBOOL
  3215. (APIENTRY *PFN_DrvFillPath)(
  3216. SURFOBJ *pso,
  3217. PATHOBJ *ppo,
  3218. CLIPOBJ *pco,
  3219. BRUSHOBJ *pbo,
  3220. POINTL *pptlBrushOrg,
  3221. MIX mix,
  3222. FLONG flOptions);
  3223. typedef ULONG
  3224. (APIENTRY *PFN_DrvFontManagement)(
  3225. SURFOBJ *pso,
  3226. FONTOBJ *pfo,
  3227. ULONG iMode,
  3228. ULONG cjIn,
  3229. PVOID pvIn,
  3230. ULONG cjOut,
  3231. PVOID pvOut);
  3232. typedef VOID
  3233. (APIENTRY *PFN_DrvFree)(
  3234. PVOID pv,
  3235. ULONG_PTR id);
  3236. typedef ULONG
  3237. (APIENTRY *PFN_DrvGetGlyphMode)(
  3238. DHPDEV dhpdev,
  3239. FONTOBJ *pfo);
  3240. typedef ULONG
  3241. (APIENTRY *PFN_DrvGetModes)(
  3242. HANDLE hDriver,
  3243. ULONG cjSize,
  3244. DEVMODEW *pdm);
  3245. typedef PVOID
  3246. (APIENTRY *PFN_DrvGetTrueTypeFile)(
  3247. ULONG_PTR iFile,
  3248. ULONG *pcj);
  3249. typedef WINBOOL
  3250. (APIENTRY *PFN_DrvGradientFill)(
  3251. SURFOBJ *psoDest,
  3252. CLIPOBJ *pco,
  3253. XLATEOBJ *pxlo,
  3254. TRIVERTEX *pVertex,
  3255. ULONG nVertex,
  3256. PVOID pMesh,
  3257. ULONG nMesh,
  3258. RECTL *prclExtents,
  3259. POINTL *pptlDitherOrg,
  3260. ULONG ulMode);
  3261. typedef WINBOOL
  3262. (APIENTRY *PFN_DrvIcmCheckBitmapBits)(
  3263. DHPDEV dhpdev,
  3264. HANDLE hColorTransform,
  3265. SURFOBJ *pso,
  3266. PBYTE paResults);
  3267. typedef HANDLE
  3268. (APIENTRY *PFN_DrvIcmCreateColorTransform)(
  3269. DHPDEV dhpdev,
  3270. LPLOGCOLORSPACEW pLogColorSpace,
  3271. PVOID pvSourceProfile,
  3272. ULONG cjSourceProfile,
  3273. PVOID pvDestProfile,
  3274. ULONG cjDestProfile,
  3275. PVOID pvTargetProfile,
  3276. ULONG cjTargetProfile,
  3277. DWORD dwReserved);
  3278. typedef WINBOOL
  3279. (APIENTRY *PFN_DrvIcmDeleteColorTransform)(
  3280. DHPDEV dhpdev,
  3281. HANDLE hcmXform);
  3282. typedef WINBOOL
  3283. (APIENTRY *PFN_DrvIcmSetDeviceGammaRamp)(
  3284. DHPDEV dhpdev,
  3285. ULONG iFormat,
  3286. LPVOID lpRamp);
  3287. typedef WINBOOL
  3288. (APIENTRY *PFN_DrvLineTo)(
  3289. SURFOBJ *pso,
  3290. CLIPOBJ *pco,
  3291. BRUSHOBJ *pbo,
  3292. LONG x1,
  3293. LONG y1,
  3294. LONG x2,
  3295. LONG y2,
  3296. RECTL *prclBounds,
  3297. MIX mix);
  3298. typedef ULONG_PTR
  3299. (APIENTRY *PFN_DrvLoadFontFile)(
  3300. ULONG cFiles,
  3301. ULONG_PTR *piFile,
  3302. PVOID *ppvView,
  3303. ULONG *pcjView,
  3304. DESIGNVECTOR *pdv,
  3305. ULONG ulLangID,
  3306. ULONG ulFastCheckSum);
  3307. typedef VOID
  3308. (APIENTRY *PFN_DrvMovePointer)(
  3309. SURFOBJ *pso,
  3310. LONG x,
  3311. LONG y,
  3312. RECTL *prcl);
  3313. typedef WINBOOL
  3314. (APIENTRY *PFN_DrvNextBand)(
  3315. SURFOBJ *pso,
  3316. POINTL *pptl);
  3317. typedef VOID
  3318. (APIENTRY *PFN_DrvNotify)(
  3319. SURFOBJ *pso,
  3320. ULONG iType,
  3321. PVOID pvData);
  3322. typedef WINBOOL
  3323. (APIENTRY *PFN_DrvOffset)(
  3324. SURFOBJ *pso,
  3325. LONG x,
  3326. LONG y,
  3327. FLONG flReserved);
  3328. typedef WINBOOL
  3329. (APIENTRY *PFN_DrvPaint)(
  3330. SURFOBJ *pso,
  3331. CLIPOBJ *pco,
  3332. BRUSHOBJ *pbo,
  3333. POINTL *pptlBrushOrg,
  3334. MIX mix);
  3335. typedef WINBOOL
  3336. (APIENTRY *PFN_DrvPlgBlt)(
  3337. SURFOBJ *psoTrg,
  3338. SURFOBJ *psoSrc,
  3339. SURFOBJ *psoMsk,
  3340. CLIPOBJ *pco,
  3341. XLATEOBJ *pxlo,
  3342. COLORADJUSTMENT *pca,
  3343. POINTL *pptlBrushOrg,
  3344. POINTFIX *pptfx,
  3345. RECTL *prcl,
  3346. POINTL *pptl,
  3347. ULONG iMode);
  3348. typedef WINBOOL
  3349. (APIENTRY *PFN_DrvQueryAdvanceWidths)(
  3350. DHPDEV dhpdev,
  3351. FONTOBJ *pfo,
  3352. ULONG iMode,
  3353. HGLYPH *phg,
  3354. PVOID pvWidths,
  3355. ULONG cGlyphs);
  3356. typedef WINBOOL
  3357. (APIENTRY *PFN_DrvQueryDeviceSupport)(
  3358. SURFOBJ *pso,
  3359. XLATEOBJ *pxlo,
  3360. XFORMOBJ *pxo,
  3361. ULONG iType,
  3362. ULONG cjIn,
  3363. PVOID pvIn,
  3364. ULONG cjOut,
  3365. PVOID pvOut);
  3366. typedef WINBOOL
  3367. (APIENTRY *PFN_DrvQueryDriverInfo)(
  3368. DWORD dwMode,
  3369. PVOID pBuffer,
  3370. DWORD cbBuf,
  3371. PDWORD pcbNeeded);
  3372. typedef PIFIMETRICS
  3373. (APIENTRY *PFN_DrvQueryFont)(
  3374. DHPDEV dhpdev,
  3375. ULONG_PTR iFile,
  3376. ULONG iFace,
  3377. ULONG_PTR *pid);
  3378. typedef LONG
  3379. (APIENTRY *PFN_DrvQueryFontCaps)(
  3380. ULONG culCaps,
  3381. ULONG *pulCaps);
  3382. typedef LONG
  3383. (APIENTRY *PFN_DrvQueryFontData)(
  3384. DHPDEV dhpdev,
  3385. FONTOBJ *pfo,
  3386. ULONG iMode,
  3387. HGLYPH hg,
  3388. GLYPHDATA *pgd,
  3389. PVOID pv,
  3390. ULONG cjSize);
  3391. typedef LONG
  3392. (APIENTRY *PFN_DrvQueryFontFile)(
  3393. ULONG_PTR iFile,
  3394. ULONG ulMode,
  3395. ULONG cjBuf,
  3396. ULONG *pulBuf);
  3397. typedef PVOID
  3398. (APIENTRY *PFN_DrvQueryFontTree)(
  3399. DHPDEV dhpdev,
  3400. ULONG_PTR iFile,
  3401. ULONG iFace,
  3402. ULONG iMode,
  3403. ULONG_PTR *pid);
  3404. typedef PFD_GLYPHATTR
  3405. (APIENTRY *PFN_DrvQueryGlyphAttrs)(
  3406. FONTOBJ *pfo,
  3407. ULONG iMode);
  3408. typedef ULONG
  3409. (APIENTRY *PFN_DrvQueryPerBandInfo)(
  3410. SURFOBJ *pso,
  3411. PERBANDINFO *pbi);
  3412. typedef LONG
  3413. (APIENTRY *PFN_DrvQueryTrueTypeOutline)(
  3414. DHPDEV dhpdev,
  3415. FONTOBJ *pfo,
  3416. HGLYPH hglyph,
  3417. WINBOOL bMetricsOnly,
  3418. GLYPHDATA *pgldt,
  3419. ULONG cjBuf,
  3420. TTPOLYGONHEADER *ppoly);
  3421. typedef LONG
  3422. (APIENTRY *PFN_DrvQueryTrueTypeTable)(
  3423. ULONG_PTR iFile,
  3424. ULONG ulFont,
  3425. ULONG ulTag,
  3426. PTRDIFF dpStart,
  3427. ULONG cjBuf,
  3428. BYTE *pjBuf,
  3429. PBYTE *ppjTable,
  3430. ULONG *pcjTable);
  3431. typedef WINBOOL
  3432. (APIENTRY *PFN_DrvRealizeBrush)(
  3433. BRUSHOBJ *pbo,
  3434. SURFOBJ *psoTarget,
  3435. SURFOBJ *psoPattern,
  3436. SURFOBJ *psoMask,
  3437. XLATEOBJ *pxlo,
  3438. ULONG iHatch);
  3439. typedef ULONG
  3440. (APIENTRY *PFN_DrvResetDevice)(
  3441. DHPDEV dhpdev,
  3442. PVOID Reserved);
  3443. typedef WINBOOL
  3444. (APIENTRY *PFN_DrvResetPDEV)(
  3445. DHPDEV dhpdevOld,
  3446. DHPDEV dhpdevNew);
  3447. typedef ULONG_PTR
  3448. (APIENTRY *PFN_DrvSaveScreenBits)(
  3449. SURFOBJ *pso,
  3450. ULONG iMode,
  3451. ULONG_PTR ident,
  3452. RECTL *prcl);
  3453. typedef WINBOOL
  3454. (APIENTRY *PFN_DrvSendPage)(
  3455. SURFOBJ *pso);
  3456. typedef WINBOOL
  3457. (APIENTRY *PFN_DrvSetPalette)(
  3458. DHPDEV dhpdev,
  3459. PALOBJ *ppalo,
  3460. FLONG fl,
  3461. ULONG iStart,
  3462. ULONG cColors);
  3463. typedef WINBOOL
  3464. (APIENTRY *PFN_DrvSetPixelFormat)(
  3465. SURFOBJ *pso,
  3466. LONG iPixelFormat,
  3467. HWND hwnd);
  3468. typedef ULONG
  3469. (APIENTRY *PFN_DrvSetPointerShape)(
  3470. SURFOBJ *pso,
  3471. SURFOBJ *psoMask,
  3472. SURFOBJ *psoColor,
  3473. XLATEOBJ *pxlo,
  3474. LONG xHot,
  3475. LONG yHot,
  3476. LONG x,
  3477. LONG y,
  3478. RECTL *prcl,
  3479. FLONG fl);
  3480. typedef WINBOOL
  3481. (APIENTRY *PFN_DrvStartBanding)(
  3482. SURFOBJ *pso,
  3483. POINTL *pptl);
  3484. typedef WINBOOL
  3485. (APIENTRY *PFN_DrvStartDoc)(
  3486. SURFOBJ *pso,
  3487. LPWSTR pwszDocName,
  3488. DWORD dwJobId);
  3489. typedef WINBOOL
  3490. (APIENTRY *PFN_DrvStartPage)(
  3491. SURFOBJ *pso);
  3492. typedef WINBOOL
  3493. (APIENTRY *PFN_DrvStretchBlt)(
  3494. SURFOBJ *psoDest,
  3495. SURFOBJ *psoSrc,
  3496. SURFOBJ *psoMask,
  3497. CLIPOBJ *pco,
  3498. XLATEOBJ *pxlo,
  3499. COLORADJUSTMENT *pca,
  3500. POINTL *pptlHTOrg,
  3501. RECTL *prclDest,
  3502. RECTL *prclSrc,
  3503. POINTL *pptlMask,
  3504. ULONG iMode);
  3505. typedef WINBOOL
  3506. (APIENTRY *PFN_DrvStretchBltROP)(
  3507. SURFOBJ *psoDest,
  3508. SURFOBJ *psoSrc,
  3509. SURFOBJ *psoMask,
  3510. CLIPOBJ *pco,
  3511. XLATEOBJ *pxlo,
  3512. COLORADJUSTMENT *pca,
  3513. POINTL *pptlHTOrg,
  3514. RECTL *prclDest,
  3515. RECTL *prclSrc,
  3516. POINTL *pptlMask,
  3517. ULONG iMode,
  3518. BRUSHOBJ *pbo,
  3519. DWORD rop4);
  3520. typedef WINBOOL
  3521. (APIENTRY *PFN_DrvStrokeAndFillPath)(
  3522. SURFOBJ *pso,
  3523. PATHOBJ *ppo,
  3524. CLIPOBJ *pco,
  3525. XFORMOBJ *pxo,
  3526. BRUSHOBJ *pboStroke,
  3527. LINEATTRS *plineattrs,
  3528. BRUSHOBJ *pboFill,
  3529. POINTL *pptlBrushOrg,
  3530. MIX mixFill,
  3531. FLONG flOptions);
  3532. typedef WINBOOL
  3533. (APIENTRY *PFN_DrvStrokePath)(
  3534. SURFOBJ *pso,
  3535. PATHOBJ *ppo,
  3536. CLIPOBJ *pco,
  3537. XFORMOBJ *pxo,
  3538. BRUSHOBJ *pbo,
  3539. POINTL *pptlBrushOrg,
  3540. LINEATTRS *plineattrs,
  3541. MIX mix);
  3542. typedef WINBOOL
  3543. (APIENTRY *PFN_DrvSwapBuffers)(
  3544. SURFOBJ *pso,
  3545. WNDOBJ *pwo);
  3546. typedef VOID
  3547. (APIENTRY *PFN_DrvSynchronize)(
  3548. DHPDEV dhpdev,
  3549. RECTL *prcl);
  3550. typedef VOID
  3551. (APIENTRY *PFN_DrvSynchronizeSurface)(
  3552. SURFOBJ *pso,
  3553. RECTL *prcl,
  3554. FLONG fl);
  3555. typedef WINBOOL
  3556. (APIENTRY *PFN_DrvTextOut)(
  3557. SURFOBJ *pso,
  3558. STROBJ *pstro,
  3559. FONTOBJ *pfo,
  3560. CLIPOBJ *pco,
  3561. RECTL *prclExtra,
  3562. RECTL *prclOpaque,
  3563. BRUSHOBJ *pboFore,
  3564. BRUSHOBJ *pboOpaque,
  3565. POINTL *pptlOrg,
  3566. MIX mix);
  3567. typedef WINBOOL
  3568. (APIENTRY *PFN_DrvTransparentBlt)(
  3569. SURFOBJ *psoDst,
  3570. SURFOBJ *psoSrc,
  3571. CLIPOBJ *pco,
  3572. XLATEOBJ *pxlo,
  3573. RECTL *prclDst,
  3574. RECTL *prclSrc,
  3575. ULONG iTransColor,
  3576. ULONG ulReserved);
  3577. typedef WINBOOL
  3578. (APIENTRY *PFN_DrvUnloadFontFile)(
  3579. ULONG_PTR iFile);
  3580. WIN32KAPI
  3581. VOID
  3582. APIENTRY
  3583. DrvDisableDirectDraw(
  3584. DHPDEV dhpdev);
  3585. typedef VOID
  3586. (APIENTRY *PFN_DrvDisableDirectDraw)(
  3587. DHPDEV dhpdev);
  3588. WIN32KAPI
  3589. WINBOOL
  3590. APIENTRY
  3591. DrvEnableDirectDraw(
  3592. DHPDEV dhpdev,
  3593. DD_CALLBACKS *pCallBacks,
  3594. DD_SURFACECALLBACKS *pSurfaceCallBacks,
  3595. DD_PALETTECALLBACKS *pPaletteCallBacks);
  3596. typedef WINBOOL
  3597. (APIENTRY *PFN_DrvEnableDirectDraw)(
  3598. DHPDEV dhpdev,
  3599. DD_CALLBACKS *pCallBacks,
  3600. DD_SURFACECALLBACKS *pSurfaceCallBacks,
  3601. DD_PALETTECALLBACKS *pPaletteCallBacks);
  3602. WIN32KAPI
  3603. WINBOOL
  3604. APIENTRY
  3605. DrvGetDirectDrawInfo(
  3606. DHPDEV dhpdev,
  3607. DD_HALINFO *pHalInfo,
  3608. DWORD *pdwNumHeaps,
  3609. VIDEOMEMORY *pvmList,
  3610. DWORD *pdwNumFourCCCodes,
  3611. DWORD *pdwFourCC);
  3612. typedef WINBOOL
  3613. (APIENTRY *PFN_DrvGetDirectDrawInfo)(
  3614. DHPDEV dhpdev,
  3615. DD_HALINFO *pHalInfo,
  3616. DWORD *pdwNumHeaps,
  3617. VIDEOMEMORY *pvmList,
  3618. DWORD *pdwNumFourCCCodes,
  3619. DWORD *pdwFourCC);
  3620. //DECLSPEC_DEPRECATED_DDK
  3621. WINBOOL
  3622. APIENTRY
  3623. DrvQuerySpoolType(
  3624. DHPDEV dhpdev,
  3625. LPWSTR pwchType);
  3626. typedef WINBOOL
  3627. (APIENTRY *PFN_DrvQuerySpoolType)(
  3628. DHPDEV dhpdev,
  3629. LPWSTR pwchType);
  3630. #ifdef __cplusplus
  3631. }
  3632. #endif
  3633. #endif /* defined __VIDEO_H__ */
  3634. #endif /* _WINDDI_ */