Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

948 lines
13 KiB

  1. /*++
  2. Copyright (c) 1996 - 1999 Microsoft Corporation
  3. Module Name:
  4. fmfnprot.h
  5. Abstract:
  6. Font module main Function prototype header file.
  7. Environment:
  8. Windows NT Unidrv driver
  9. Revision History:
  10. 11/18/96 -ganeshp-
  11. Created it.
  12. dd-mm-yy -author-
  13. description
  14. --*/
  15. #ifndef _FMFNPROT_H
  16. #define _FMFNPROT_H
  17. //
  18. // Interface functions
  19. //
  20. //
  21. // Defined in fmtxtout.c
  22. //
  23. BOOL
  24. FMTextOut(
  25. SURFOBJ *pso,
  26. STROBJ *pstro,
  27. FONTOBJ *pfo,
  28. CLIPOBJ *pco,
  29. RECTL *prclExtra,
  30. RECTL *prclOpaque,
  31. BRUSHOBJ *pboFore,
  32. BRUSHOBJ *pboOpaque,
  33. POINTL *pptlBrushOrg,
  34. MIX mix
  35. );
  36. BOOL
  37. BPlayWhiteText(
  38. PDEV *pPDev
  39. );
  40. //
  41. // GlyphOut function Prototype
  42. //
  43. typedef BOOL
  44. (*pfnBOutputGlyph)(
  45. PDEV *pPDev,
  46. HGLYPH hg,
  47. FONTMAP *pFM,
  48. INT iXIn
  49. );
  50. //
  51. // Defined in fontddi.c
  52. //
  53. BOOL
  54. FMResetPDEV(
  55. PDEV *pPDevOld,
  56. PDEV *pPDevNew
  57. );
  58. VOID
  59. FMDisablePDEV(
  60. PDEV *pPDev
  61. );
  62. VOID
  63. FMDisableSurface(
  64. PDEV *pPDev
  65. );
  66. BOOL
  67. FMStartDoc(
  68. SURFOBJ *pso,
  69. PWSTR pDocName,
  70. DWORD jobId
  71. );
  72. BOOL
  73. FMStartPage(
  74. SURFOBJ *pso
  75. );
  76. BOOL
  77. FMSendPage(
  78. SURFOBJ *pso
  79. );
  80. BOOL
  81. FMEndDoc(
  82. SURFOBJ *pso,
  83. FLONG flags
  84. );
  85. BOOL
  86. FMNextBand(
  87. SURFOBJ *pso,
  88. POINTL *pptl
  89. );
  90. BOOL
  91. FMStartBanding(
  92. SURFOBJ *pso,
  93. POINTL *pptl
  94. );
  95. BOOL
  96. FMEnableSurface(
  97. PDEV *pPDev
  98. );
  99. //
  100. // Defined in intrface.c
  101. //
  102. BOOL
  103. BInitDeviceFontsFromGPD(
  104. PDEV *pPDev
  105. );
  106. BOOL
  107. BInitFontPDev(
  108. PDEV *pPDev
  109. );
  110. INT
  111. IGetMaxFonts(
  112. PDEV *pPDev
  113. );
  114. BOOL
  115. BBuildFontCartTable(
  116. PDEV *pPDev
  117. );
  118. BOOL
  119. BRegReadFontCarts(
  120. PDEV *pPDev
  121. ) ;
  122. BOOL
  123. BBuildFontMapTable(
  124. PDEV *pPDev
  125. ) ;
  126. VOID
  127. VSetFontID(
  128. DWORD *pdwOut,
  129. PFONTLIST pFontList
  130. );
  131. VOID
  132. VLogFont(
  133. POINT *pptGrxRes,
  134. LOGFONT *pLF,
  135. FONTMAP *pFM
  136. );
  137. BOOL
  138. BInitTextFlags(
  139. PDEV *pPDev
  140. );
  141. BOOL
  142. BInitGDIInfo(
  143. GDIINFO *pGDIInfo,
  144. PDEV *pPDev
  145. );
  146. //
  147. // Defined in fminit.c
  148. //
  149. INT
  150. IInitDeviceFonts(
  151. PDEV *pPDev
  152. );
  153. BOOL
  154. BFillinDeviceFM(
  155. PDEV *pPDev,
  156. FONTMAP *pfm,
  157. int iIndex
  158. );
  159. BOOL
  160. BGetOldFontInfo(
  161. FONTMAP *pfm,
  162. BYTE *pRes
  163. );
  164. BOOL
  165. BFMSetupXF(
  166. FONTMAP *pfm,
  167. PDEV *pPDev,
  168. INT iIndex
  169. );
  170. BOOL
  171. BIFIScale(
  172. FONTMAP *pfm,
  173. INT xdpi,
  174. INT ydpi
  175. );
  176. VOID
  177. VFillinGlyphData(
  178. PDEV *pPDev,
  179. FONTMAP *pfm
  180. );
  181. BOOL
  182. BGetNewFontInfo(
  183. FONTMAP *pfm,
  184. BYTE *pRes
  185. );
  186. PUNI_GLYPHSETDATA
  187. PNTGTT1To1(
  188. IN DWORD dwCodepage,
  189. IN BOOL bSymbolCharSet,
  190. IN INT iFirst,
  191. IN INT iLast
  192. );
  193. NT_RLE *
  194. PNTRLE1To1(
  195. IN BOOL bSymbolCharSet,
  196. int iFirst,
  197. int iLast
  198. );
  199. //
  200. // Defined in fileio.c
  201. //
  202. HANDLE
  203. DrvOpenFile
  204. (
  205. PWSTR pwstrFileName,
  206. PDEV *pPDEV
  207. );
  208. BOOL
  209. DrvReadFile
  210. (
  211. HANDLE hFile,
  212. LPVOID lpBuffer,
  213. DWORD nNumBytesToRead,
  214. LPDWORD lpNumBytesRead,
  215. PDEV *pPDev
  216. );
  217. DWORD
  218. DrvSetFilePointer
  219. (
  220. HANDLE hFile,
  221. LONG iDistanceToMove,
  222. DWORD dwMoveMethod,
  223. PDEV *pPDev
  224. );
  225. BOOL
  226. DrvCloseFile
  227. (
  228. HANDLE hFile,
  229. PDEV *pPDEV
  230. );
  231. //
  232. // Defined in fontread.c
  233. //
  234. INT
  235. IFIOpenRead(
  236. FI_MEM *pFIMem,
  237. PWSTR pwstrName,
  238. PDEV *pPDev
  239. );
  240. BOOL
  241. BFINextRead(
  242. FI_MEM *pFIMem
  243. ) ;
  244. int
  245. IFIRewind(
  246. FI_MEM *pFIMem
  247. );
  248. BOOL
  249. BFICloseRead(
  250. FI_MEM *pFIMem,
  251. PDEV *pPDev
  252. );
  253. //
  254. // Defined in xtrafont.c
  255. //
  256. int
  257. IXtraFonts(
  258. PDEV *pPDev
  259. );
  260. BOOL
  261. BGetXFont(
  262. PDEV *pPDev,
  263. int iIndex
  264. );
  265. void
  266. VXFRewind(
  267. PDEV *pPDev
  268. );
  269. //
  270. // Defined in FontFree.c
  271. //
  272. VOID
  273. VFontFreeMem(
  274. PDEV *pPDev
  275. );
  276. //
  277. // Defined in posnsort.c
  278. //
  279. BOOL
  280. BCreatePS(
  281. PDEV *pPDev
  282. );
  283. VOID
  284. VFreePS(
  285. PDEV *pPDev
  286. );
  287. BOOL
  288. BAddPS(
  289. PSHEAD *pPSH,
  290. PSGLYPH *pPSGIn,
  291. INT iyVal,
  292. INT iyMax
  293. );
  294. INT
  295. ISelYValPS(
  296. PSHEAD *pPSH,
  297. int iyVal
  298. );
  299. PSGLYPH *
  300. PSGGetNextPSG(
  301. PSHEAD *pPSH
  302. );
  303. //
  304. // Defined in download.c
  305. //
  306. BOOL
  307. BSendDLFont(
  308. PDEV *pPDev,
  309. FONTMAP *pFM
  310. );
  311. INT
  312. IDownloadFont(
  313. TO_DATA *ptod,
  314. STROBJ *pstro,
  315. INT *piRot
  316. );
  317. INT
  318. IHG2Index(
  319. TO_DATA *pTOD
  320. );
  321. DWORD
  322. DwGetTTGlyphWidth(
  323. FONTPDEV *pFontPDev,
  324. FONTOBJ *pfo,
  325. HGLYPH hGlyph);
  326. //
  327. // Defined in dloadpcl.c
  328. //
  329. DWORD
  330. DwDLPCLHeader(
  331. PDEV *pPDev,
  332. IFIMETRICS *pifi,
  333. int id
  334. );
  335. INT
  336. IDLGlyph(
  337. PDEV *pPDev,
  338. int iIndex,
  339. GLYPHDATA *pgd,
  340. DWORD *pdwMem
  341. );
  342. //
  343. // Defined in qeryfont.c
  344. //
  345. PIFIMETRICS
  346. FMQueryFont(
  347. PDEV *pPDev,
  348. ULONG_PTR iFile,
  349. ULONG iFace,
  350. ULONG_PTR *pid
  351. );
  352. ULONG
  353. FMGetGlyphMode(
  354. PDEV *pPDev,
  355. FONTOBJ *pfo
  356. );
  357. LONG
  358. FMQueryFontData(
  359. PDEV *pPDev,
  360. FONTOBJ *pfo,
  361. ULONG iMode,
  362. HGLYPH hg,
  363. GLYPHDATA *pgd,
  364. PVOID pv,
  365. ULONG cjSize
  366. );
  367. //
  368. // Defined in qfontdat.c
  369. //
  370. PVOID
  371. FMQueryFontTree(
  372. PDEV *pPDev,
  373. ULONG_PTR iFile,
  374. ULONG iFace,
  375. ULONG iMode,
  376. ULONG_PTR *pid
  377. );
  378. VOID *
  379. PVGetUCGlyphSetData(
  380. PDEV *pPDev,
  381. UINT iFace
  382. );
  383. VOID *
  384. PVGetUCRLE(
  385. PDEV *pPDev,
  386. FONTMAP *pFM
  387. );
  388. VOID *
  389. PVGetUCFD_GLYPHSET(
  390. PDEV *pPDev,
  391. FONTMAP *pFM
  392. );
  393. VOID *
  394. PVGetUCKernPairData(
  395. PDEV *pPDev,
  396. UINT iFace
  397. );
  398. VOID *
  399. PVUCKernPair(
  400. PDEV *pPDev,
  401. FONTMAP *pFM
  402. );
  403. //
  404. // Defined in fntmanag.c
  405. //
  406. ULONG
  407. FMFontManagement(
  408. SURFOBJ *pso,
  409. FONTOBJ *pfo,
  410. ULONG iMode,
  411. ULONG cjIn,
  412. PVOID pvIn,
  413. ULONG cjOut,
  414. PVOID pvOut
  415. );
  416. //
  417. // Defined in qadvwdth.c
  418. //
  419. BOOL
  420. FMQueryAdvanceWidths(
  421. PDEV *pPDev,
  422. FONTOBJ *pfo,
  423. ULONG iMode,
  424. HGLYPH *phg,
  425. PVOID *pvWidths,
  426. ULONG cGlyphs
  427. );
  428. //
  429. // Defined in fonts.c
  430. //
  431. FONTMAP *
  432. PfmGetIt(
  433. PDEV *pPDev,
  434. INT iIndex);
  435. FONTMAP *
  436. PfmGetDevicePFM(
  437. PDEV *pPDev,
  438. INT iIndex);
  439. FONTMAP *
  440. PfmGetDevicePFM(
  441. PDEV *pPDev,
  442. INT iIndex
  443. );
  444. BOOL
  445. BNewFont(
  446. PDEV *pPDev,
  447. INT iNewFont,
  448. PFONTMAP pfm,
  449. DWORD dwFontAttrib
  450. );
  451. BOOL
  452. BGetPSize(
  453. FONTPDEV *pFontPDev,
  454. POINTL *pptl,
  455. FWORD fwdUnitsPerEm,
  456. FWORD fwdAveCharWidth
  457. );
  458. BOOL
  459. BSelectFont(
  460. PDEV *pPDev,
  461. FONTMAP *pFM,
  462. POINTL *pptl
  463. );
  464. BOOL BSelScalableFont(
  465. PDEV *pPDev,
  466. POINTL *pptl,
  467. FONTMAP *pFM
  468. );
  469. INT
  470. IFont100toStr(
  471. BYTE *pjOut,
  472. int iBufSize,
  473. int iVal
  474. );
  475. INT
  476. ISetScale(
  477. FONTCTL *pctl,
  478. XFORMOBJ *pxo,
  479. BOOL bIntellifont,
  480. BOOL bAnyRotation
  481. );
  482. VOID
  483. VSetRotation(
  484. FONTPDEV *pFontPDev,
  485. int iRot
  486. );
  487. INT
  488. IGetGlyphWidth(
  489. PDEV *pPDev,
  490. FONTMAP *pFM,
  491. HGLYPH hg
  492. );
  493. LONG
  494. LMulFloatLong(
  495. PFLOATOBJ pfo,
  496. LONG l);
  497. INT
  498. IGetUFMGlyphWidth(
  499. PDEV *pPDev,
  500. FONTMAP *pFM,
  501. HGLYPH hg
  502. );
  503. INT
  504. IGetUFMGlyphWidthJr(
  505. POINT *pptGrxRes,
  506. FONTMAP *pFM,
  507. HGLYPH hg
  508. );
  509. VOID
  510. VSetCursor(
  511. IN PDEV *pPDev,
  512. IN INT iX,
  513. IN INT iY,
  514. IN WORD wMoveType,
  515. OUT POINTL *pptlRem
  516. );
  517. //
  518. // ttdload.c !!!TODO
  519. //
  520. BOOL BGetTTPointSize(
  521. PDEV *pPDev,
  522. POINTL *pptl,
  523. FONTMAP *pfm
  524. );
  525. BOOL BTTSelScalableFont(
  526. PDEV *pPDev,
  527. POINTL *pptl,
  528. FONTMAP *pfm
  529. );
  530. BOOL
  531. BSetFontAttrib(
  532. PDEV *pPDev,
  533. DWORD dwPrevAttrib,
  534. DWORD dwAttrib,
  535. BOOL bReset);
  536. BOOL
  537. BGetStockGlyphset(
  538. IN PDEV *pPDev,
  539. OUT VOID **ppvFDGlyphset,
  540. IN SHORT sResID);
  541. HGLYPH
  542. HDefaultGH(
  543. PFONTMAP pfm);
  544. BOOL
  545. BUpdateStandardVar(
  546. PDEV *pPDev,
  547. PFONTMAP pFontMap,
  548. INT iGlyphIndex,
  549. DWORD dwFontAtt,
  550. DWORD dwFlags);
  551. #define STD_ALL 0x00000FFF
  552. #define STD_STD 0x0000007F
  553. #define STD_TT 0x00000380
  554. #define STD_GL 0x00000001
  555. #define STD_FH 0x00000002
  556. #define STD_FW 0x00000004
  557. #define STD_FB 0x00000008
  558. #define STD_FI 0x00000010
  559. #define STD_FU 0x00000020
  560. #define STD_FS 0x00000040
  561. #define STD_NFID 0x00000080
  562. #define STD_CFID 0x00000100
  563. #define STD_PRND 0x00000200
  564. //
  565. // oldfonts.c
  566. //
  567. BOOL
  568. BRLEOutputGlyph(
  569. TO_DATA *pTod
  570. );
  571. BOOL
  572. BRLESelectFont(
  573. PDEV *pPDev,
  574. PFONTMAP pFM,
  575. POINTL *pptl);
  576. BOOL
  577. BRLEDeselectFont(
  578. PDEV *pPDev,
  579. PFONTMAP pFM);
  580. INT
  581. IGetIFIGlyphWidth(
  582. PDEV *pPDev,
  583. FONTMAP *pFM,
  584. HGLYPH hg);
  585. BOOL
  586. BSelectNonScalableFont(
  587. PDEV *pPDev,
  588. BYTE *pbCmd,
  589. INT iCmdLength,
  590. POINTL *pptl);
  591. BOOL
  592. BSelectPCLScalableFont(
  593. PDEV *pPDev,
  594. BYTE *pbCmd,
  595. INT iCmdLength,
  596. POINTL *pptl);
  597. BOOL
  598. BSelectCapslScalableFont(
  599. PDEV *pPDev,
  600. BYTE *pbCmd,
  601. INT iCmdLength,
  602. POINTL *pptl);
  603. BOOL
  604. BSelectPPDSScalableFont(
  605. PDEV *pPDev,
  606. BYTE *pbCmd,
  607. INT iCmdLength,
  608. POINTL *pptl);
  609. //
  610. // newfonts.c
  611. //
  612. BOOL
  613. BGTTOutputGlyph(
  614. TO_DATA *pTod);
  615. BOOL
  616. BGTTSelectFont(
  617. PDEV *pPDev,
  618. PFONTMAP pFM,
  619. POINTL *pptl);
  620. BOOL
  621. BGTTDeselectFont(
  622. PDEV *pPDev,
  623. PFONTMAP pFM);
  624. //
  625. // fmcallbk.c
  626. //
  627. DWORD
  628. DwOutputGlyphCallback(
  629. TO_DATA *pTod);
  630. BOOL
  631. BSelectFontCallback(
  632. PDEV *pdev,
  633. PFONTMAP pFM,
  634. POINTL *pptl);
  635. BOOL
  636. BDeselectFontCallback(
  637. PDEV *pdev,
  638. PFONTMAP pFM);
  639. PFONTMAP
  640. PfmInitPFMOEMCallback(
  641. PDEV *pPDev,
  642. FONTOBJ *pfo);
  643. //
  644. // Inerface functions for FontMap initialization.
  645. //
  646. //
  647. // Defined in bmpdload.c
  648. //
  649. FONTMAP *
  650. InitPFMTTBitmap(
  651. PDEV *pPDev,
  652. FONTOBJ *pFontObj
  653. );
  654. //
  655. // Defined in truetype.c
  656. //
  657. FONTMAP *
  658. InitPFMTTOutline(
  659. PDEV *pPDev,
  660. FONTOBJ *pFontObj
  661. );
  662. BOOL
  663. bTTSelectFont(
  664. IN PDEV *pPDev,
  665. IN PFONTMAP pFM,
  666. IN POINTL *pptl
  667. );
  668. BOOL
  669. bTTDeSelectFont(
  670. IN PDEV *pPDev,
  671. IN PFONTMAP pFM
  672. );
  673. DWORD
  674. dwTTDownloadFontHeader(
  675. IN PDEV *pPDev,
  676. IN PFONTMAP pFM
  677. );
  678. DWORD
  679. dwTTDownloadGlyph(
  680. IN PDEV *pPDev,
  681. IN PFONTMAP pFM,
  682. IN HGLYPH hGlyph,
  683. WORD wDLGlyphId,
  684. WORD *pwWidth
  685. );
  686. DWORD
  687. dwTTGlyphOut(
  688. TO_DATA *pTod
  689. );
  690. BOOL
  691. bTTCheckCondition(
  692. PDEV *pPDev,
  693. FONTOBJ *pfo,
  694. STROBJ *pstro,
  695. IFIMETRICS *pifi
  696. );
  697. BOOL
  698. bTTFreeMem(
  699. IN OUT PFONTMAP pFM
  700. );
  701. //
  702. // dlutils.c
  703. //
  704. PDLGLYPH
  705. PDLGHashGlyph (
  706. DL_MAP *pDL,
  707. HGLYPH hTTGlyph
  708. );
  709. VOID
  710. VFreeDLMAP (
  711. DL_MAP *pdm
  712. );
  713. VOID
  714. VFreeDL(
  715. PDEV *pPDev
  716. );
  717. DL_MAP *
  718. PGetDLMap (
  719. PFONTPDEV pFontPDev,
  720. FONTOBJ *pfo
  721. );
  722. BOOL
  723. BInitDLMap (
  724. PDEV *pPDev,
  725. FONTOBJ *pfo,
  726. DL_MAP *pdm
  727. );
  728. INT
  729. IGetDL_ID(
  730. PDEV * );
  731. DL_MAP *
  732. PGetDLMapFromIdx (
  733. PFONTPDEV pFontPDev,
  734. INT iFontIndex
  735. ) ;
  736. BOOL
  737. BPrintADLGlyph(
  738. PDEV *pPDev,
  739. TO_DATA *pTod,
  740. PDLGLYPH pdlGlyph
  741. );
  742. //
  743. // TrueTypeBMP module interface prototype. bmpdload.c
  744. //
  745. BOOL
  746. BFreeTrueTypeBMPPFM(
  747. PFONTMAP pfm
  748. );
  749. BOOL
  750. BCheckCondTrueTypeBMP(
  751. PDEV *pPDev,
  752. FONTOBJ *pfo,
  753. STROBJ *pso,
  754. IFIMETRICS *pifi
  755. );
  756. BOOL
  757. BSelectTrueTypeBMP(
  758. PDEV *pPDev,
  759. PFONTMAP pFM,
  760. POINTL* pptl
  761. );
  762. BOOL
  763. BDeselectTrueTypeBMP(
  764. PDEV *pPDev,
  765. FONTMAP *pfm
  766. );
  767. DWORD
  768. DwTrueTypeBMPGlyphOut(
  769. TO_DATA *pTod
  770. );
  771. DWORD
  772. DwDLTrueTypeBMPHeader(
  773. PDEV *pPDev,
  774. PFONTMAP pFM
  775. );
  776. DWORD
  777. DwDLTrueTypeBMPGlyph(
  778. PDEV *pPDev,
  779. PFONTMAP pFM,
  780. HGLYPH hGlyph,
  781. WORD wDLGlyphId,
  782. WORD *pwWidth
  783. );
  784. #endif // !_FMFNPROT_H