/******************************Module*Header*******************************\ * Module Name: poly.c * * * * Chunks large data to the server. * * * * Created: 30-May-1991 14:22:40 * * Author: Eric Kutter [erick] * * * * Copyright (c) 1991-1999 Microsoft Corporation * \**************************************************************************/ #include "precomp.h" #pragma hdrstop /******************************Public*Routine******************************\ * PolyPolygon * * PolyPolyline * * Polygon * * Polyline * * PolyBezier * * PolylineTo * * PolyBezierTo * * * * Output routines that call PolyPolyDraw to do the work. * * * * History: * * Thu 20-Jun-1991 01:08:40 -by- Charles Whitmer [chuckwh] * * Added metafiling, handle translation, and the attribute cache. * * * * 04-Jun-1991 -by- Eric Kutter [erick] * * Wrote it. * \**************************************************************************/ BOOL WINAPI PolyPolygon(HDC hdc, CONST POINT *apt, CONST INT *asz, int csz) { FIXUP_HANDLE(hdc); if (IS_ALTDC_TYPE(hdc)) { PLDC pldc; if (IS_METADC16_TYPE(hdc)) return (MF16_PolyPolygon(hdc, apt, asz, csz)); DC_PLDC(hdc,pldc,FALSE); if (pldc->iType == LO_METADC) { if (!MF_PolyPoly(hdc, apt, asz, (DWORD) csz,EMR_POLYPOLYGON)) return(FALSE); } if (pldc->fl & LDC_SAP_CALLBACK) vSAPCallback(pldc); if (pldc->fl & LDC_DOC_CANCELLED) return(FALSE); if (pldc->fl & LDC_CALL_STARTPAGE) StartPage(hdc); } return (BOOL) NtGdiPolyPolyDraw ( hdc, (PPOINT)apt, (LPINT)asz, csz, I_POLYPOLYGON ); } BOOL WINAPI PolyPolyline(HDC hdc, CONST POINT *apt, CONST DWORD *asz, DWORD csz) { FIXUP_HANDLE(hdc); if (IS_ALTDC_TYPE(hdc)) { PLDC pldc; if (IS_METADC16_TYPE(hdc)) return(FALSE); DC_PLDC(hdc,pldc,FALSE); if (pldc->iType == LO_METADC && !MF_PolyPoly(hdc,apt, asz, csz, EMR_POLYPOLYLINE)) return(FALSE); if (pldc->fl & LDC_SAP_CALLBACK) vSAPCallback(pldc); if (pldc->fl & LDC_DOC_CANCELLED) return(FALSE); if (pldc->fl & LDC_CALL_STARTPAGE) StartPage(hdc); } return (BOOL) NtGdiPolyPolyDraw ( hdc, (PPOINT)apt, (LPINT)asz, csz, I_POLYPOLYLINE ); } BOOL WINAPI Polygon(HDC hdc, CONST POINT *apt,int cpt) { FIXUP_HANDLE(hdc); if (IS_ALTDC_TYPE(hdc)) { PLDC pldc; if (IS_METADC16_TYPE(hdc)) return(MF16_RecordParmsPoly(hdc,(LPPOINT)apt,(INT)cpt,META_POLYGON)); DC_PLDC(hdc,pldc,FALSE); if (pldc->iType == LO_METADC) { if (!MF_Poly(hdc,apt,cpt,EMR_POLYGON)) return(FALSE); } if (pldc->fl & LDC_SAP_CALLBACK) vSAPCallback(pldc); if (pldc->fl & LDC_DOC_CANCELLED) return(FALSE); if (pldc->fl & LDC_CALL_STARTPAGE) StartPage(hdc); } return (BOOL) NtGdiPolyPolyDraw ( hdc, (PPOINT)apt, &cpt, 1, I_POLYPOLYGON ); } BOOL WINAPI Polyline(HDC hdc, CONST POINT *apt,int cpt) { FIXUP_HANDLE(hdc); if (IS_ALTDC_TYPE(hdc)) { PLDC pldc; if (IS_METADC16_TYPE(hdc)) return(MF16_RecordParmsPoly(hdc,(LPPOINT)apt,cpt,META_POLYLINE)); DC_PLDC(hdc,pldc,FALSE); if (pldc->iType == LO_METADC) { if (!MF_Poly(hdc,apt,cpt,EMR_POLYLINE)) return(FALSE); } if (pldc->fl & LDC_SAP_CALLBACK) vSAPCallback(pldc); if (pldc->fl & LDC_DOC_CANCELLED) return(FALSE); if (pldc->fl & LDC_CALL_STARTPAGE) StartPage(hdc); } return (BOOL) NtGdiPolyPolyDraw ( hdc, (PPOINT)apt, &cpt, 1, I_POLYPOLYLINE ); } BOOL WINAPI PolyBezier(HDC hdc, CONST POINT * apt,DWORD cpt) { FIXUP_HANDLE(hdc); if (IS_ALTDC_TYPE(hdc)) { PLDC pldc; if (IS_METADC16_TYPE(hdc)) return(FALSE); DC_PLDC(hdc,pldc,FALSE); if (pldc->iType == LO_METADC && !MF_Poly(hdc,apt,cpt,EMR_POLYBEZIER)) return(FALSE); if (pldc->fl & LDC_SAP_CALLBACK) vSAPCallback(pldc); if (pldc->fl & LDC_DOC_CANCELLED) return(FALSE); if (pldc->fl & LDC_CALL_STARTPAGE) StartPage(hdc); } return (BOOL) NtGdiPolyPolyDraw ( hdc, (PPOINT)apt, (LPINT)&cpt, 1, I_POLYBEZIER ); } BOOL WINAPI PolylineTo(HDC hdc, CONST POINT * apt,DWORD cpt) { FIXUP_HANDLE(hdc); if (IS_ALTDC_TYPE(hdc)) { PLDC pldc; if (IS_METADC16_TYPE(hdc)) return(FALSE); DC_PLDC(hdc,pldc,FALSE); if (pldc->iType == LO_METADC && !MF_Poly(hdc,apt,cpt,EMR_POLYLINETO)) return(FALSE); if (pldc->fl & LDC_SAP_CALLBACK) vSAPCallback(pldc); if (pldc->fl & LDC_DOC_CANCELLED) return(FALSE); if (pldc->fl & LDC_CALL_STARTPAGE) StartPage(hdc); } return (BOOL) NtGdiPolyPolyDraw ( hdc, (PPOINT)apt, (LPINT)&cpt, 1, I_POLYLINETO ); } BOOL WINAPI PolyBezierTo(HDC hdc, CONST POINT * apt,DWORD cpt) { FIXUP_HANDLE(hdc); if (IS_ALTDC_TYPE(hdc)) { PLDC pldc; if (IS_METADC16_TYPE(hdc)) return(FALSE); DC_PLDC(hdc,pldc,FALSE); if (pldc->iType == LO_METADC && !MF_Poly(hdc,apt,cpt,EMR_POLYBEZIERTO)) return(FALSE); if (pldc->fl & LDC_SAP_CALLBACK) vSAPCallback(pldc); if (pldc->fl & LDC_DOC_CANCELLED) return(FALSE); if (pldc->fl & LDC_CALL_STARTPAGE) StartPage(hdc); } return (BOOL) NtGdiPolyPolyDraw ( hdc, (PPOINT)apt, (LPINT)&cpt, 1, I_POLYBEZIERTO ); } /******************************Public*Routine******************************\ * CreatePolygonRgn * * * * Client side stub. Creates a local region handle, calls PolyPolyDraw to * * pass the call to the server. * * * * Tue 04-Jun-1991 17:39:51 -by- Charles Whitmer [chuckwh] * * Wrote it. * \**************************************************************************/ HRGN WINAPI CreatePolygonRgn ( CONST POINT *pptl, int cPoint, int iMode ) { LONG_PTR Mode = iMode; return((HRGN) NtGdiPolyPolyDraw ( (HDC)Mode, (PPOINT)pptl, &cPoint, 1, I_POLYPOLYRGN )); } /******************************Public*Routine******************************\ * CreatePolyPolygonRgn * * * * Client side stub. Creates a local region handle, calls PolyPolyDraw to * * pass the call to the server. * * * * Tue 04-Jun-1991 17:39:51 -by- Charles Whitmer [chuckwh] * * Wrote it. * \**************************************************************************/ HRGN WINAPI CreatePolyPolygonRgn ( CONST POINT *pptl, CONST INT *pc, int cPoly, int iMode ) { LONG_PTR Mode = iMode; return((HRGN) NtGdiPolyPolyDraw ( (HDC)Mode, (PPOINT)pptl, (LPINT)pc, cPoly, I_POLYPOLYRGN )); } /******************************Public*Routine******************************\ * PolyDraw * * The real PolyDraw client side stub. * * 13-Sep-1991 -by- J. Andrew Goossen [andrewgo] * Wrote it. \**************************************************************************/ BOOL WINAPI PolyDraw(HDC hdc, CONST POINT * apt, CONST BYTE * aj, int cpt) { FIXUP_HANDLE(hdc); if (IS_ALTDC_TYPE(hdc)) { PLDC pldc; if (IS_METADC16_TYPE(hdc)) return(FALSE); DC_PLDC(hdc,pldc,FALSE); if (pldc->iType == LO_METADC && !MF_PolyDraw(hdc,apt,aj,cpt)) return(FALSE); if (pldc->fl & LDC_SAP_CALLBACK) vSAPCallback(pldc); if (pldc->fl & LDC_DOC_CANCELLED) return(FALSE); if (pldc->fl & LDC_CALL_STARTPAGE) StartPage(hdc); } return((BOOL)NtGdiPolyDraw(hdc,(PPOINT)apt,(PBYTE)aj,cpt)); }