/******************************Module*Header*******************************\ * Module Name: pattern.c * * Used for creating and destroying the default patterns to be used on this * device. * * Copyright (c) 1992 Microsoft Corporation \**************************************************************************/ #include "precomp.h" /******************************Public*Data*Struct*************************\ * gaajPat * * These are the standard patterns defined Windows, they are used to produce * hatch brushes, grey brushes etc. * \**************************************************************************/ const BYTE gaajPat[HS_DDI_MAX][32] = { { 0x00,0x00,0x00,0x00, // ........ HS_HORIZONTAL 0 0x00,0x00,0x00,0x00, // ........ 0x00,0x00,0x00,0x00, // ........ 0xff,0x00,0x00,0x00, // ******** 0x00,0x00,0x00,0x00, // ........ 0x00,0x00,0x00,0x00, // ........ 0x00,0x00,0x00,0x00, // ........ 0x00,0x00,0x00,0x00 }, // ........ { 0x08,0x00,0x00,0x00, // ....*... HS_VERTICAL 1 0x08,0x00,0x00,0x00, // ....*... 0x08,0x00,0x00,0x00, // ....*... 0x08,0x00,0x00,0x00, // ....*... 0x08,0x00,0x00,0x00, // ....*... 0x08,0x00,0x00,0x00, // ....*... 0x08,0x00,0x00,0x00, // ....*... 0x08,0x00,0x00,0x00 }, // ....*... { 0x80,0x00,0x00,0x00, // *....... HS_FDIAGONAL 2 0x40,0x00,0x00,0x00, // .*...... 0x20,0x00,0x00,0x00, // ..*..... 0x10,0x00,0x00,0x00, // ...*.... 0x08,0x00,0x00,0x00, // ....*... 0x04,0x00,0x00,0x00, // .....*.. 0x02,0x00,0x00,0x00, // ......*. 0x01,0x00,0x00,0x00 }, // .......* { 0x01,0x00,0x00,0x00, // .......* HS_BDIAGONAL 3 0x02,0x00,0x00,0x00, // ......*. 0x04,0x00,0x00,0x00, // .....*.. 0x08,0x00,0x00,0x00, // ....*... 0x10,0x00,0x00,0x00, // ...*.... 0x20,0x00,0x00,0x00, // ..*..... 0x40,0x00,0x00,0x00, // .*...... 0x80,0x00,0x00,0x00 }, // *....... { 0x08,0x00,0x00,0x00, // ....*... HS_CROSS 4 0x08,0x00,0x00,0x00, // ....*... 0x08,0x00,0x00,0x00, // ....*... 0xff,0x00,0x00,0x00, // ******** 0x08,0x00,0x00,0x00, // ....*... 0x08,0x00,0x00,0x00, // ....*... 0x08,0x00,0x00,0x00, // ....*... 0x08,0x00,0x00,0x00 }, // ....*... { 0x81,0x00,0x00,0x00, // *......* HS_DIAGCROSS 5 0x42,0x00,0x00,0x00, // .*....*. 0x24,0x00,0x00,0x00, // ..*..*.. 0x18,0x00,0x00,0x00, // ...**... 0x18,0x00,0x00,0x00, // ...**... 0x24,0x00,0x00,0x00, // ..*..*.. 0x42,0x00,0x00,0x00, // .*....*. 0x81,0x00,0x00,0x00 } // *......* }; /******************************Public*Routine******************************\ * bInitPatterns * * This routine initializes the default patterns. * \**************************************************************************/ BOOL bInitPatterns(IN PPDEV ppdev, ULONG cPatterns) { SIZEL sizl; ULONG ulLoop; sizl.cx = 8; sizl.cy = 8; for (ulLoop = 0; ulLoop < cPatterns; ulLoop++) { ppdev->ahbmPat[ulLoop] = EngCreateBitmap(sizl, 4, BMF_1BPP, BMF_TOPDOWN, (PULONG) (&gaajPat[ulLoop][0])); if (ppdev->ahbmPat[ulLoop] == (HBITMAP) 0) { // Set the count created so vDisablePatterns will clean up. ppdev->cPatterns = ulLoop; return(FALSE); } } ppdev->cPatterns = cPatterns; return(TRUE); } /******************************Public*Routine******************************\ * vDisablePatterns * * Delete the standard patterns allocated. * \**************************************************************************/ VOID vDisablePatterns(IN PPDEV ppdev) { ULONG ulIndex; // Erase all patterns. for (ulIndex = 0; ulIndex < ppdev->cPatterns; ulIndex++) { if (ppdev->ahbmPat[ulIndex]) { EngDeleteSurface((HSURF) ppdev->ahbmPat[ulIndex]); } } }