/******************************Module*Header*******************************\ * Module Name: ftjnl.c * * (Brief description) * * Created: 20-Feb-1992 08:41:04 * Author: - by - Eric Kutter [erick] * * Copyright (c) 1990 Microsoft Corporation \**************************************************************************/ #include "precomp.h" #pragma hdrstop VOID vStressDIBBrushes(HDC hdc, ULONG flDIB, ULONG ulY); VOID vPage1(HWND hwnd, HDC hdc, RECT* prcl); VOID vPage2(HWND hwnd, HDC hdc, RECT* prcl); VOID vPage3(HWND hwnd, HDC hdc, RECT* prcl); VOID vPage4(HWND hwnd, HDC hdc, RECT* prcl); VOID vPage5(HWND hwnd, HDC hdc, RECT* prcl); VOID vPage6(HWND hwnd, HDC hdc, RECT* prcl); VOID vPage0F(HWND hwnd, HDC hdc, RECT* prcl); VOID vPage1F(HWND hwnd, HDC hdc, RECT* prcl); VOID vPage2F(HWND hwnd, HDC hdc, RECT* prcl); VOID vScreenToPage(HWND hwnd, HDC hdc, RECT* prcl); PFN_FT_TEST ajf[] = { vPage1, vPage2, vPage3, // vScreenToPage #if 0 vTestBitmap, vTestBlting, vTestBrush, vTestColor, vTestBMText, vTestDIB, vTestFilling, vTestFonts, vTestLines, vTestPalettes, vTestPlgBlt, vTestMapping, vTestRegion, vTestStretch, #endif vPage0F, vPage1F, vPage2F }; #define CPAGES (sizeof(ajf) / sizeof(PFN_FT_TEST)) #if 0 #define DBGMSG OutputDebugString #else #define DBGMSG DbgPrint #endif ULONG gy; ULONG cFonts; /******************************Public*Routine******************************\ * * * * History: * 20-Feb-1992 -by- - by - Eric Kutter [erick] * Wrote it. \**************************************************************************/ VOID vTestJournaling(HWND hwnd, HDC hdcDisp, RECT *prcl) { PRINTDLG pd; HDC hdc; CHAR achBuf[80]; INT i; LPDEVMODE lpDevMode; LPDEVNAMES lpDevNames; DOCINFO di; di.cbSize = sizeof(di); di.lpszDocName = NULL; di.lpszOutput = NULL; di.lpszDatatype = NULL; di.fwType = 0; memset(&pd,0,sizeof(pd)); pd.lStructSize = sizeof(pd); pd.hwndOwner = hwnd; pd.hDevMode = NULL; pd.hDevNames = NULL; pd.hDC = NULL; pd.Flags = PD_RETURNDC | PD_PAGENUMS; pd.nCopies = 1; pd.nFromPage = 1; pd.nToPage = CPAGES; pd.nMinPage = 1; pd.nMaxPage = CPAGES; #if 1 PrintDlg(&pd); #endif //!!! HACK-O-RAMA if (pd.hDC == NULL) { DBGMSG("doing it the hard way\n"); if(!pd.hDevNames){ /* Retrieve default printer if none selected. */ //pd.Flags = PD_RETURNDEFAULT|PD_PRINTSETUP; pd.Flags = PD_PRINTSETUP; if (!PrintDlg(&pd)) return; } if(!pd.hDevNames){ /* Retrieve default printer if none selected. */ pd.Flags = PD_RETURNDEFAULT|PD_PRINTSETUP; //pd.Flags = PRINTSETUP; if (!PrintDlg(&pd)) return; } if (!pd.hDevNames) { DBGMSG("bad hDevNames\n"); return; } lpDevNames = (LPDEVNAMES)GlobalLock(pd.hDevNames); if (pd.hDevMode) lpDevMode = (LPDEVMODE)GlobalLock(pd.hDevMode); else lpDevMode = NULL; /* For pre 3.0 Drivers,hDevMode will be null from Commdlg so lpDevMode * will be NULL after GlobalLock() */ pd.hDC = CreateDC((LPSTR)lpDevNames+lpDevNames->wDriverOffset, (LPSTR)lpDevNames+lpDevNames->wDeviceOffset, (LPSTR)lpDevNames+lpDevNames->wOutputOffset, lpDevMode); GlobalUnlock(pd.hDevNames); if (pd.hDevMode) GlobalUnlock(pd.hDevMode); } hdc = pd.hDC; DbgPrint("Ft-vTestJournaling has hdc %lx \n", hdc); if (hdc == NULL) { DBGMSG("couldn't create DC\n"); return; } { ULONG ulX,ulY; HDC hdcTemp; HBITMAP hbmTemp, hbmDefault; RECT rclPage; rclPage.left = 0; rclPage.top = 0; hdcTemp = CreateCompatibleDC(hdc); GdiSetBatchLimit(1); if (!StartDoc(hdc,&di)) DBGMSG("StartDoc failed in print\n"); for (i = pd.nFromPage; i <= pd.nToPage; ++i) { // print the document, We print to a compatible bitmap every page // before we print the page to see how it looks on the screen. DbgPrint("Ft-vTestJournaling In print loop %lu \n", i); if (!StartPage(hdc)) DBGMSG("StartPage failed\n"); ulX = GetDeviceCaps(hdc, HORZRES); ulY = GetDeviceCaps(hdc, VERTRES); DbgPrint("Ft-vTestJournaling This is the size of the printer %lu %lu \n", ulX, ulY); hbmTemp = CreateCompatibleBitmap(hdc, ulX, ulY); if (hbmTemp == (HBITMAP) 0) { DbgPrint("Ft-vTestJournaling failed hbmTemp creation\n"); } hbmDefault = SelectObject(hdcTemp, hbmTemp); rclPage.right = GetDeviceCaps(hdcDisp, HORZRES); rclPage.bottom = GetDeviceCaps(hdcDisp, VERTRES); // This is total hack-or-rama. We pass the ScreenDC into the function // so we can use it also. (*ajf[i-1])((HWND) hdcDisp, hdcDisp, &rclPage); if (!BitBlt(hdcDisp, 0, 0, ulX, ulY, hdcTemp, 0, 0, SRCCOPY)) { DbgPrint("Ft-vTestJournaling failed BitBlt of Bm to scrn\n"); } SelectObject(hdcTemp, hbmDefault); DeleteObject(hbmTemp); rclPage.right = GetDeviceCaps(hdc, HORZRES); rclPage.bottom = GetDeviceCaps(hdc, VERTRES); (*ajf[i-1])((HWND) hdcDisp, hdc, &rclPage); if (!EndPage(hdc)) DBGMSG("EndPage failed\n"); } EndDoc(hdc); DeleteDC(hdcTemp); } DeleteDC(hdc); GlobalFree(pd.hDevNames); GlobalFree(pd.hDevMode); return; } /******************************Public*Routine******************************\ * vScreenToPage * * Test blting screen to page. * * History: * Sat 26-Sep-1992 -by- Patrick Haluptzok [patrickh] * Wrote it. \**************************************************************************/ VOID vScreenToPage(HWND hwnd, HDC hdc, RECT* prcl) { HDC hdcScreen; RECT rclPage; hdcScreen = (HDC) hwnd; if (!BitBlt(hdc, 0, 0, 1000, 1000, hdcScreen, 0, 0, SRCCOPY)) { DbgPrint("BitBlt Screen to Page failed\n"); } rclPage = *prcl; hwnd; } /******************************Public*Routine******************************\ * vPage1 * * Test Brushes. * * History: * 01-Apr-1992 -by- Patrick Haluptzok patrickh * Wrote it. \**************************************************************************/ VOID vPage1(HWND hwnd, HDC hdc, RECT* prcl) { HBRUSH hbrR,hbrG,hbrB,hbrPat,hbrTemp,hbrDefault; HBITMAP hbm,hbmDefault,hbmN; HDC hdcM,hdcN; ULONG ulTemp; RECT rclPage; rclPage = *prcl; hwnd; DbgPrint("Printing Page 1 %lx\n", hdc); hbrR = CreateSolidBrush(RGB(0xFF,0,0)); hbrG = CreateSolidBrush(RGB(0,0xFF,0)); hbrB = CreateSolidBrush(RGB(0,0,0xFF)); // Simple solid color PatBlt test hbrDefault = SelectObject(hdc, hbrR); if (!PatBlt(hdc,10,10,20,20,PATCOPY)) DBGMSG("Failed page 1 patblt\n"); // A hatch brush. for (ulTemp = 0; ulTemp < 19; ulTemp++) { hbrTemp = CreateHatchBrush(ulTemp, RGB(0xFF, 0, 0)); if (hbrTemp == (HBRUSH) 0) { DbgPrint("vPage1 solid dither brush creation failed\n"); return; } hbrDefault = SelectObject(hdc, hbrTemp); PatBlt(hdc, ulTemp * 50, 100, 50, 100, PATCOPY); SelectObject(hdc,hbrDefault); DeleteObject(hbrTemp); } // A little dithering with solid brushes. for (ulTemp = 0; ulTemp < 8; ulTemp++) { hbrTemp = CreateSolidBrush(RGB((ulTemp * 32), 255, 255)); if (hbrTemp == (HBRUSH) 0) { DbgPrint("vPage1 solid dither brush creation failed\n"); return; } hbrDefault = SelectObject(hdc, hbrTemp); PatBlt(hdc, ulTemp * 50, 200, 50, 100, PATCOPY); SelectObject(hdc,hbrDefault); DeleteObject(hbrTemp); } // A pattern brush. hbm = CreateCompatibleBitmap(hdc, 30, 30); hdcM = CreateCompatibleDC(hdc); SelectObject(hdcM, hbm); SelectObject(hdcM, hbrR); PatBlt(hdcM, 0, 0, 10, 30, PATCOPY); SelectObject(hdcM, hbrB); PatBlt(hdcM, 10, 0, 10, 30, PATCOPY); SelectObject(hdcM, hbrG); PatBlt(hdcM, 20, 0, 10, 30, PATCOPY); hbrPat = CreatePatternBrush(hbm); if (hbrPat == (HBRUSH) 0) { DbgPrint("vPage1 failed pattern brush creation\n"); return; } SelectObject(hdc, hbrPat); PatBlt(hdc, 0, 300, 200, 100, PATCOPY); DeleteDC(hdcM); DeleteObject(hbm); // A DIB brush vStressDIBBrushes(hdc, DIB_PAL_COLORS, 400); vStressDIBBrushes(hdc, DIB_PAL_INDICES, 500); // Clean up time. SelectObject(hdc, hbrDefault); DeleteObject(hbrPat); DeleteObject(hbrR); DeleteObject(hbrG); DeleteObject(hbrB); } /******************************Public*Routine******************************\ * vPage2 * * Test Blting - all formats to printer. * * History: * 01-Apr-1992 -by- Patrick Haluptzok patrickh * Wrote it. \**************************************************************************/ #define FUNKY_ROP 0xAACC0000 VOID vPage2(HWND hwnd, HDC hdc, RECT* prcl) { HBRUSH hbrR,hbrG,hbrB,hbrDefault; HBITMAP hbm,hbmDefault,hbmN,hbmMask; HDC hdcM,hdcN; POINT aPoint[4]; RECT rclPage; COLORREF crTxt, crBack; POINT aPointStar[5] = {{50,0},{75,100},{0,35},{100,35},{25,100}}; rclPage = *prcl; hwnd; DbgPrint("Printing Page 2 %lx\n", hdc); hbrR = CreateSolidBrush(RGB(0xFF,0,0)); hbrG = CreateSolidBrush(RGB(0,0xFF,0)); hbrB = CreateSolidBrush(RGB(0,0,0xFF)); // Simple solid color PatBlt test hbrDefault = SelectObject(hdc, hbrR); hdcM = CreateCompatibleDC(hdc); hdcN = CreateCompatibleDC(hdc); // Set up STAR mask in hbm1 hbmMask = CreateBitmap(100,100,1,1,NULL); hbmDefault = SelectObject(hdcM, hbmMask); PatBlt(hdcM, 0, 0, 100, 100, BLACKNESS); SelectObject(hdcM, GetStockObject(WHITE_BRUSH)); Polygon(hdcM, aPointStar,5); BitBlt(hdc,840,0,100,100,hdcM,0,0,SRCCOPY); SelectObject(hdcM, hbmDefault); // Source blting test - identity. hbm = CreateCompatibleBitmap(hdc, 100, 100); hbmDefault = SelectObject(hdcM, hbm); SelectObject(hdcM, hbrR); PatBlt(hdcM, 0, 0, 100, 100, PATCOPY); SelectObject(hdcM, hbrB); PatBlt(hdcM, 20, 20, 60, 60, PATCOPY); SelectObject(hdcM, hbrG); PatBlt(hdcM, 40, 40, 20, 20, PATCOPY); BitBlt(hdc, 40, 0, 100, 100, hdcM, 0, 0, SRCCOPY); MaskBlt(hdc, 40, 100, 100, 100, hdcM, 0, 0, hbmMask, 0, 0, FUNKY_ROP); SelectObject(hdcM, hbmDefault); DeleteObject(hbm); // Source blting test - 1/pel Src hbm = CreateBitmap(100, 100, 1, 1, NULL); SelectObject(hdcM, hbm); PatBlt(hdcM, 0, 0, 100, 100, BLACKNESS); PatBlt(hdcM, 20, 20, 60, 60, WHITENESS); crTxt = SetTextColor(hdc,RGB(0xFF,0,0)); crBack = SetBkColor(hdc,RGB(0,0,0xFF)); BitBlt(hdc, 140, 0, 100, 100, hdcM, 0, 0, SRCCOPY); MaskBlt(hdc, 140, 100, 100, 100, hdcM, 0, 0, hbmMask, 0, 0, FUNKY_ROP); SelectObject(hdcM, hbmDefault); DeleteObject(hbm); // Source blting test - 4/pel Src hbm = CreateBitmap(100, 100, 1, 4, NULL); SelectObject(hdcM, hbm); SelectObject(hdcM, hbrR); PatBlt(hdcM, 0, 0, 100, 100, PATCOPY); SelectObject(hdcM, hbrB); PatBlt(hdcM, 20, 20, 60, 60, PATCOPY); SelectObject(hdcM, hbrG); PatBlt(hdcM, 40, 40, 20, 20, PATCOPY); BitBlt(hdc, 240, 0, 100, 100, hdcM, 0, 0, SRCCOPY); MaskBlt(hdc, 240, 100, 100, 100, hdcM, 0, 0, hbmMask, 0, 0, FUNKY_ROP); SelectObject(hdcM, hbmDefault); DeleteObject(hbm); // Source blting test - 8/pel Src hbm = CreateBitmap(100, 100, 1, 8, NULL); SelectObject(hdcM, hbm); SelectObject(hdcM, hbrR); PatBlt(hdcM, 0, 0, 100, 100, PATCOPY); SelectObject(hdcM, hbrB); PatBlt(hdcM, 20, 20, 60, 60, PATCOPY); SelectObject(hdcM, hbrG); PatBlt(hdcM, 40, 40, 20, 20, PATCOPY); BitBlt(hdc, 340, 0, 100, 100, hdcM, 0, 0, SRCCOPY); MaskBlt(hdc, 340, 100, 100, 100, hdcM, 0, 0, hbmMask, 0, 0, FUNKY_ROP); SelectObject(hdcM, hbmDefault); DeleteObject(hbm); // Source blting test - 24/pel Src hbm = CreateBitmap(100, 100, 1, 24, NULL); SelectObject(hdcM, hbm); SelectObject(hdcM, hbrR); PatBlt(hdcM, 0, 0, 100, 100, PATCOPY); SelectObject(hdcM, hbrB); PatBlt(hdcM, 20, 20, 60, 60, PATCOPY); SelectObject(hdcM, hbrG); PatBlt(hdcM, 40, 40, 20, 20, PATCOPY); BitBlt(hdc, 440, 0, 100, 100, hdcM, 0, 0, SRCCOPY); MaskBlt(hdc, 440, 100, 100, 100, hdcM, 0, 0, hbmMask, 0, 0, FUNKY_ROP); SelectObject(hdcM, hbmDefault); DeleteObject(hbm); // Source blting test - 32/pel Src hbm = CreateBitmap(100, 100, 1, 32, NULL); SelectObject(hdcM, hbm); SelectObject(hdcM, hbrR); PatBlt(hdcM, 0, 0, 100, 100, PATCOPY); SelectObject(hdcM, hbrB); PatBlt(hdcM, 20, 20, 60, 60, PATCOPY); SelectObject(hdcM, hbrG); PatBlt(hdcM, 40, 40, 20, 20, PATCOPY); BitBlt(hdc, 540, 0, 100, 100, hdcM, 0, 0, SRCCOPY); MaskBlt(hdc, 540, 100, 100, 100, hdcM, 0, 0, hbmMask, 0, 0, FUNKY_ROP); // Source blting test - 32/pel Src hbmN = CreateBitmap(100, 100, 1, 32, NULL); SelectObject(hdcN, hbmN); BitBlt(hdcN, 0, 0, 100, 100, hdcM, 0, 0, SRCCOPY); BitBlt(hdc, 640, 0, 100, 100, hdcN, 0, 0, SRCCOPY); MaskBlt(hdc, 640, 100, 100, 100, hdcN, 0, 0, hbmMask, 0, 0, FUNKY_ROP); SelectObject(hdcN, hbmDefault); DeleteObject(hbmN); hbmN = CreateCompatibleBitmap(hdcM, 100, 100); SelectObject(hdcN, hbmN); BitBlt(hdcN, 0, 0, 100, 100, hdcM, 0, 0, SRCCOPY); BitBlt(hdc, 740, 0, 100, 100, hdcN, 0, 0, SRCCOPY); MaskBlt(hdc, 740, 100, 100, 100, hdcM, 0, 0, hbmMask, 0, 0, FUNKY_ROP); SelectObject(hdcN, hbmDefault); DeleteObject(hbmN); // Printer to Printer BitBlt,StrchBlt,PlgBlt. BitBlt(hdc, 40, 200, 100, 100, hdc, 40, 0, SRCCOPY); StretchBlt(hdc, 140, 200, 200, 200, hdc, 40, 0, 100, 100, SRCCOPY); aPoint[0].x = 0; aPoint[0].y = 100; aPoint[1].x = 100; aPoint[1].y = 0; aPoint[2].x = 100; aPoint[2].y = 200; aPoint[3].x = 200; aPoint[3].y = 100; aPoint[0].y += 300; aPoint[1].y += 300; aPoint[2].y += 300; aPoint[3].y += 300; aPoint[0].x += 300; aPoint[1].x += 300; aPoint[2].x += 300; aPoint[3].x += 300; PlgBlt(hdc, aPoint, hdc, 40, 0, 100, 100, (HBITMAP) 0, 0, 0); SetTextColor(hdc,crTxt); SetBkColor(hdc,crBack); SelectObject(hdcM, hbmDefault); DeleteObject(hbm); DeleteDC(hdcN); DeleteDC(hdcM); // Clean up time. SelectObject(hdc, hbrDefault); DeleteObject(hbmMask); DeleteObject(hbrR); DeleteObject(hbrG); DeleteObject(hbrB); } /******************************Public*Routine******************************\ * vPage3 * * Test PlgBlt and StretchBlt. * * History: * 01-Apr-1992 -by- Patrick Haluptzok patrickh * Wrote it. \**************************************************************************/ VOID vPage3(HWND hwnd, HDC hdc, RECT* prcl) { HBRUSH hbrR,hbrG,hbrB,hbrDefault; HBITMAP hbm,hbmDefault; HDC hdcM,hdcN; ULONG ulTemp; RECT rclPage; rclPage = *prcl; hwnd; DbgPrint("Printing Page 3 %lx\n", hdc); hbrR = CreateSolidBrush(RGB(0xFF,0,0)); hbrG = CreateSolidBrush(RGB(0,0xFF,0)); hbrB = CreateSolidBrush(RGB(0,0,0xFF)); // Simple solid color PatBlt test hbrDefault = SelectObject(hdc, hbrR); if (!PatBlt(hdc,10,10,20,20,PATCOPY)) DBGMSG("Failed page 1 patblt\n"); hdcM = CreateCompatibleDC(hdc); vTestPlg1(hdc); // StretchBlt Test Code. // Stretch blting test - 4/pel Src hbm = CreateBitmap(100, 100, 1, 4, NULL); hbmDefault = SelectObject(hdcM, hbm); SelectObject(hdcM, hbrR); PatBlt(hdcM, 0, 0, 100, 100, PATCOPY); SelectObject(hdcM, hbrB); PatBlt(hdcM, 20, 20, 60, 60, PATCOPY); SelectObject(hdcM, hbrG); PatBlt(hdcM, 40, 40, 20, 20, PATCOPY); StretchBlt(hdc, 0, 400, 200, 200, hdcM, 0, 0, 100, 100, SRCCOPY); SelectObject(hdcM, hbmDefault); DeleteObject(hbm); // Stretch blting test - 8/pel Src hbm = CreateBitmap(100, 100, 1, 8, NULL); SelectObject(hdcM, hbm); SelectObject(hdcM, hbrR); PatBlt(hdcM, 0, 0, 100, 100, PATCOPY); SelectObject(hdcM, hbrB); PatBlt(hdcM, 20, 20, 60, 60, PATCOPY); SelectObject(hdcM, hbrG); PatBlt(hdcM, 40, 40, 20, 20, PATCOPY); StretchBlt(hdc, 0, 400, 50, 50, hdcM, 0, 0, 100, 100, SRCCOPY); SelectObject(hdcM, hbmDefault); DeleteObject(hbm); DeleteDC(hdcM); SelectObject(hdc, hbrDefault); DeleteObject(hbrR); DeleteObject(hbrG); DeleteObject(hbrB); } /******************************Public*Routine******************************\ * * Test for Eric's print stuff, go crazy write big and all over the page * because he's got a laser jet that cranks out the pages. * * History: * 20-Feb-1992 -by- - by - Eric Kutter [erick] * Wrote it. \**************************************************************************/ ULONG iJnlPrintFont ( PLOGFONT plf, PTEXTMETRIC ptm, ULONG flType, HDC *phdc) { int iRet = TRUE; HFONT hfnt; ++cFonts; if (cFonts & 3) return(TRUE); if (cFonts > 25) return(0); if (gy > 3000) return(0); if ((hfnt = CreateFontIndirect(plf)) == NULL) { DbgPrint("Logical font creation failed.\n"); return(0); } hfnt = SelectObject(*phdc,hfnt); TextOut(*phdc,1200,gy,"ABCDEFGHIJKLMNOPQRSTUVWXYZ",26); gy += ptm->tmHeight+ptm->tmExternalLeading; hfnt = SelectObject(*phdc,hfnt); DeleteObject(hfnt); return(iRet); ptm; flType; } ULONG iJnlEnumFace ( PLOGFONT plf, PTEXTMETRIC ptm, ULONG flType, HDC *phdc) { int iRet; iRet = EnumFonts ( *phdc, (LPSTR) (plf->lfFaceName), (FONTENUMPROCA) iJnlPrintFont, (LPARAM) phdc ); return(iRet); ptm; flType; } VOID vJnlEnumFonts(HDC hdc) { gy = 100; cFonts = 0; EnumFonts ( hdc, (LPSTR) NULL, (FONTENUMPROCA) iJnlEnumFace, (LPARAM) &hdc ); } ULONG gulHorzBand = 1; ULONG gulVertBand = 1; VOID vPage0F(HWND hwnd, HDC hdc, RECT* prcl) { INT x,y; HFONT hfnt; HBRUSH hbrush; RECT rclPage; rclPage = *prcl; hwnd; DbgPrint("Printing Page 0F %lx\n", hdc); TextOut(hdc,100,50,"Page 0F",7); // draw the clip area hbrush = SelectObject(hdc,GetStockObject(NULL_BRUSH)); Rectangle(hdc,0,0,2301,3101); Rectangle(hdc,400,400,2000,2900); Rectangle(hdc,599,599,1801,2701); SelectObject(hdc,hbrush); for (x = 0; x < 2400; x += (2400 / gulHorzBand)) { MoveToEx(hdc,x,0,NULL); LineTo(hdc,x,3150); } for (y = 0; y < 3150; y += (3150 / gulVertBand)) { MoveToEx(hdc,0,y,NULL); LineTo(hdc,2400,y); } } /**************************************************************************\ * \**************************************************************************/ VOID vPage1F(HWND hwnd, HDC hdc, RECT* prcl) { INT y; HFONT hfnt; HRGN hrgn1, hrgn2; HBRUSH hbrush; int xsz,ysz; prcl; hwnd; DbgPrint("Printing Page 1F %lx\n", hdc); xsz = GetDeviceCaps(hdc,HORZRES) - 1; ysz = GetDeviceCaps(hdc,VERTRES) - 1; TextOut(hdc,100,50,"Page 1F",7); // draw the clip area #if 1 hbrush = SelectObject(hdc,GetStockObject(NULL_BRUSH)); Rectangle(hdc,0,0,xsz,ysz); Rectangle(hdc,400,400,xsz-400,ysz-400); Rectangle(hdc,599,599,xsz-599,ysz-599); SelectObject(hdc,hbrush); #endif // setup the clip region #if 1 hrgn1 = CreateRectRgn(0,0,xsz,ysz); hrgn2 = CreateRectRgn(400,400,xsz-400,ysz-400); CombineRgn(hrgn1,hrgn1,hrgn2,RGN_DIFF); DeleteObject(hrgn2); hrgn2 = CreateRectRgn(600,600,xsz-600,ysz-600); CombineRgn(hrgn1,hrgn1,hrgn2,RGN_OR); DeleteObject(hrgn2); SelectClipRgn(hdc,hrgn1); DeleteObject(hrgn1); #endif // create the font hfnt = CreateFont(300, // height 200, // width 0, // escapement 0, // orientation 400, // weight FALSE, // italic FALSE, // underline FALSE, // strikeout OEM_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, VARIABLE_PITCH | FF_DONTCARE, NULL); if (hfnt == NULL) { DbgPrint("hfnt == NULL\n"); return; } hfnt = SelectObject(hdc,hfnt); hbrush = CreateHatchBrush(HS_CROSS,0); hbrush = SelectObject(hdc,hbrush); y = 100; for (y = 100; y < ysz; y += 300) TextOut(hdc,10,y,"TEXT",4); hbrush = SelectObject(hdc,hbrush); DeleteObject(hbrush); hfnt = SelectObject(hdc,hfnt); DeleteObject(hfnt); vJnlEnumFonts(hdc); SelectClipRgn(hdc,NULL); } /**************************************************************************\ * \**************************************************************************/ VOID vPage2F(HWND hwnd, HDC hdc, RECT* prcl) { HBRUSH hbrush; HPEN hpen; HRGN hrgn1, hrgn2; RECT rclPage; rclPage = *prcl; hwnd; DbgPrint("Printing Page 2F %lx\n", hdc); TextOut(hdc,100,50,"Page 2F",7); // setup the clip region hrgn1 = CreateRectRgn(0,0,2300,3100); hrgn2 = CreateRectRgn(300,300,2000,2800); CombineRgn(hrgn1,hrgn1,hrgn2,RGN_DIFF); DeleteObject(hrgn2); hrgn2 = CreateRectRgn(500,500,1800,2600); CombineRgn(hrgn1,hrgn1,hrgn2,RGN_OR); DeleteObject(hrgn2); SelectClipRgn(hdc,hrgn1); DeleteObject(hrgn1); // rectangle // hbrush = CreateHatchBrush(HS_HORIZONTAL,0); // hbrush = SelectObject(hdc,hbrush); hbrush = SelectObject(hdc,GetStockObject(NULL_BRUSH)); Rectangle(hdc,0,0,2300,3100); hbrush = SelectObject(hdc,hbrush); // DeleteObject(hbrush); // ellipse hbrush = CreateHatchBrush(HS_CROSS,0); hbrush = SelectObject(hdc,hbrush); Ellipse(hdc,0,0,2300,3100); hbrush = SelectObject(hdc,hbrush); DeleteObject(hbrush); // ellipse hpen = CreatePen(PS_SOLID,100,0); hpen = SelectObject(hdc,hpen); // hbrush = CreateHatchBrush(HS_VERTICAL,0); // hbrush = SelectObject(hdc,hbrush); hbrush = SelectObject(hdc,GetStockObject(NULL_BRUSH)); Ellipse(hdc,500,800,1800,2400); hbrush = SelectObject(hdc,hbrush); // DeleteObject(hbrush); hpen = SelectObject(hdc,hpen); DeleteObject(hpen); SelectClipRgn(hdc,NULL); } /******************************Public*Routine******************************\ * vStressDIBBrushes * * Test CreateDIBPatternBrush, see if it works for DIB_PAL_COLORS, * DIB_ * * History: * 08-Jun-1991 -by- Patrick Haluptzok patrickh * Wrote it. \**************************************************************************/ typedef struct _BITMAPINFOPATI { BITMAPINFOHEADER bmiHeader; SHORT bmiColors[16]; DWORD dw[16]; } BITMAPINFOPATI; BITMAPINFOPATI bmi566 = { { sizeof(BITMAPINFOHEADER), 8, 8, 1, 4, BI_RGB, 32, // 64, 0, 0, 16, 16 }, { 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 }, { 0x33333333, 0x33333333, 0x33333333, 0x33333333, 0x44444444, 0x44444444, 0x44444444, 0x44444444 } }; VOID vStressDIBBrushes(HDC hdc, ULONG flDIB, ULONG ulY) { HBRUSH hbrDefault, hbrDIB; HDC hdc4; HBITMAP hbm4; hbrDIB = CreateDIBPatternBrushPt(&bmi566, flDIB); if (hbrDIB == (HBRUSH) 0) { DbgPrint("vStressDIBBrushes failed to CreateDIBPatternBrush\n"); return; } hdc4 = CreateCompatibleDC(hdc); hbm4 = CreateCompatibleBitmap(hdc, 200, 100); SelectObject(hdc4, hbm4); hbrDefault = SelectObject(hdc4, hbrDIB); SelectObject(hdc, hbrDIB); PatBlt(hdc, 0, ulY, 200, 100, PATCOPY); PatBlt(hdc4, 0, 0, 200, 100, PATCOPY); BitBlt(hdc, 200, ulY, 200, 100, hdc4, 0, 0, SRCCOPY); SelectObject(hdc, hbrDefault); SelectObject(hdc4, hbrDefault); DeleteDC(hdc4); DeleteObject(hbrDIB); DeleteObject(hbm4); }