/*++ Copyright (c) 1996-1999 Microsoft Corporation Module Name: textout.c Abstract: Implementation of text output related DDI entry points: DrvTextOut Environment: Windows NT Unidrv driver Revision History: 10/14/96 -amandan- Initial framework. 03/31/97 -zhanw- Added OEM customization support --*/ #include "unidrv.h" BOOL DrvTextOut( SURFOBJ *pso, STROBJ *pstro, FONTOBJ *pfo, CLIPOBJ *pco, RECTL *prclExtra, RECTL *prclOpaque, BRUSHOBJ *pboFore, BRUSHOBJ *pboOpaque, POINTL *pptlOrg, MIX mix ) /*++ Routine Description: Implementation of DDI entry point DrvTextOut. Please refer to DDK documentation for more details. Arguments: pso - Defines the surface on which to be written. pstro - Defines the glyphs to be rendered and their positions pfo - Specifies the font to be used pco - Defines the clipping path prclExtra - A NULL-terminated array of rectangles to be filled prclOpaque - Specifies an opaque rectangle pboFore - Defines the foreground brush pboOpaque - Defines the opaque brush pptlOrg - Pointer to POINT struct , defining th origin mix - Specifies the foreground and background ROPs for pboFore Return Value: TRUE if successful, FALSE if there is an error --*/ { PDEV * pPDev; PFMPROCS pFontProcs; VERBOSE(("Entering DrvTextOut...\n")); ASSERT(pso && pstro && pfo); pPDev = (PDEV *)pso->dhpdev; ASSERT_VALID_PDEV(pPDev); // // use driver managed surface // if (pPDev->pso) pso = pPDev->pso; // // QFE Fix for TTY driver. // Set flag if DrvTextOut DDI is called. // if (pPDev->bTTY) { pPDev->fMode2 |= PF2_DRVTEXTOUT_CALLED_FOR_TTY; } // // Handle OEM hooks // HANDLE_OEMHOOKS(pPDev, EP_OEMTextOut, PFN_OEMTextOut, BOOL, (pso, pstro, pfo, pco, prclExtra, prclOpaque, pboFore, pboOpaque, pptlOrg, mix)); HANDLE_VECTORHOOKS(pPDev, EP_OEMTextOut, VMTextOut, BOOL, (pso, pstro, pfo, pco, prclExtra, prclOpaque, pboFore, pboOpaque, pptlOrg, mix)); pFontProcs = (PFMPROCS)pPDev->pFontProcs; if ( pFontProcs->FMTextOut == NULL) { CheckBitmapSurface(pso,&pstro->rclBkGround); return FALSE; } else return (pFontProcs->FMTextOut(pso, pstro, pfo, pco, prclExtra, prclOpaque, pboFore, pboOpaque, pptlOrg, mix) ); }