~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

Wine Cross Reference
wine/dlls/gdi32/tests/palette.c

Version: ~ [ wine-1.1.9 ] ~ [ wine-1.1.8 ] ~ [ wine-1.1.7 ] ~ [ wine-1.0.1 ] ~ [ wine-1.1.6 ] ~ [ wine-1.1.5 ] ~ [ wine-1.1.4 ] ~ [ wine-1.1.3 ] ~ [ wine-1.1.2 ] ~ [ wine-1.1.1 ] ~ [ wine-1.1.0 ] ~ [ wine-1.0 ] ~ [ wine-1.0-rc5 ] ~ [ wine-1.0-rc4 ] ~ [ wine-1.0-rc3 ] ~ [ wine-1.0-rc2 ] ~ [ wine-1.0-rc1 ] ~ [ wine-0.9.61 ] ~ [ wine-0.9.60 ] ~ [ wine-0.9.59 ] ~ [ wine-0.9.58 ] ~ [ wine-0.9.57 ] ~ [ wine-0.9.56 ] ~ [ wine-0.9.55 ] ~ [ wine-0.9.54 ] ~ [ wine-0.9.53 ] ~ [ wine-0.9.52 ] ~ [ wine-0.9.51 ] ~ [ wine-0.9.50 ] ~ [ wine-0.9.49 ] ~ [ wine-0.9.48 ] ~ [ wine-0.9.47 ] ~ [ wine-0.9.46 ] ~ [ wine-0.9.45 ] ~ [ wine-0.9.44 ] ~ [ wine-0.9.43 ] ~ [ wine-0.9.42 ] ~ [ wine-0.9.41 ] ~ [ wine-0.9.40 ] ~ [ wine-0.9.39 ] ~ [ wine-0.9.38 ] ~ [ wine-0.9.37 ] ~ [ wine-0.9.36 ] ~ [ wine-0.9.35 ] ~ [ wine-0.9.34 ] ~ [ wine-0.9.33 ] ~ [ wine-0.9.32 ] ~ [ wine-0.9.31 ] ~ [ wine-0.9.30 ] ~ [ wine-0.9.29 ] ~ [ wine-0.9.28 ] ~ [ wine-0.9.27 ] ~ [ wine-0.9.26 ] ~ [ wine-0.9.25 ] ~ [ wine-0.9.24 ] ~ [ wine-0.9.23 ] ~ [ wine-0.9.22 ] ~ [ wine-0.9.21 ] ~ [ wine-0.9.20 ] ~ [ wine-0.9.19 ] ~ [ wine-0.9.18 ] ~ [ wine-0.9.17 ] ~ [ wine-0.9.16 ] ~ [ wine-0.9.15 ] ~ [ wine-0.9.14 ] ~ [ wine-0.9.13 ] ~ [ wine-0.9.12 ] ~ [ wine-0.9.11 ] ~ [ wine-0.9.10 ] ~ [ wine-0.9.9 ] ~ [ wine-0.9.8 ] ~ [ wine-0.9.7 ] ~ [ wine-0.9.6 ] ~ [ wine-0.9.5 ] ~ [ wine-0.9.4 ] ~ [ wine-0.9.3 ] ~ [ wine-0.9.2 ] ~ [ wine-0.9.1 ] ~ [ wine-0.9 ] ~ [ wine20050930 ] ~ [ wine20050830 ] ~ [ wine20050725 ] ~ [ wine20050628 ] ~ [ wine20050524 ] ~ [ wine20050419 ] ~ [ wine20050310 ] ~ [ wine20050211 ] ~ [ wine20050111 ] ~ [ wine20041201 ] ~ [ wine20041019 ] ~ [ wine20040914 ] ~ [ wine20040813 ] ~ [ wine20040716 ] ~ [ wine20040615 ] ~ [ wine20040505 ] ~ [ wine20040408 ] ~ [ wine20040309 ] ~ [ wine20040213 ] ~ [ wine20040121 ] ~ [ wine20031212 ] ~ [ wine20031118 ] ~ [ wine20031016 ] ~ [ wine20030911 ] ~ [ wine20030813 ] ~ [ wine20030709 ] ~ [ wine20030618 ] ~ [ wine20030508 ] ~ [ wine20030408 ] ~ [ wine20030318 ] ~ [ wine20030219 ] ~ [ wine20030115 ] ~ [ wine20021219 ] ~ [ wine20021125 ] ~ [ wine20021031 ] ~ [ wine20021007 ] ~ [ wine20020904 ] ~ [ wine20020804 ] ~ [ wine20020710 ] ~ [ wine20020605 ] ~ [ wine20020509 ] ~ [ wine20020411 ] ~ [ wine20020310 ] ~ [ wine20020228 ] ~ [ wine20011226 ] ~ [ wine20011108 ] ~ [ wine20011004 ] ~ [ wine20010824 ] ~ [ wine20010731 ] ~ [ wine20010629 ] ~ [ wine20010510 ] ~ [ wine20010418 ] ~ [ wine20010326 ] ~ [ wine20010305 ] ~ [ wine20010216 ] ~ [ wine20010112 ] ~ [ wine20001222 ] ~ [ wine20001202 ] ~ [ wine20001026 ] ~ [ wine20001002 ] ~ [ wine20000909 ] ~ [ wine20000821 ] ~ [ wine20000801 ] ~ [ wine20000716 ] ~ [ wine20000326 ] ~ [ wine20000227 ] ~ [ wine20000130 ] ~ [ wine20000109 ] ~

  1 /*
  2  * Unit test suite for palettes
  3  *
  4  * Copyright 2005 Glenn Wurster
  5  *
  6  * This library is free software; you can redistribute it and/or
  7  * modify it under the terms of the GNU Lesser General Public
  8  * License as published by the Free Software Foundation; either
  9  * version 2.1 of the License, or (at your option) any later version.
 10  *
 11  * This library is distributed in the hope that it will be useful,
 12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
 13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 14  * Lesser General Public License for more details.
 15  *
 16  * You should have received a copy of the GNU Lesser General Public
 17  * License along with this library; if not, write to the Free Software
 18  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
 19  */
 20 
 21 #include <stdarg.h>
 22 #include <assert.h>
 23 
 24 #include "windef.h"
 25 #include "winbase.h"
 26 #include "wingdi.h"
 27 #include "winuser.h"
 28 #include "mmsystem.h"
 29 
 30 #include "wine/test.h"
 31 
 32 static const PALETTEENTRY logpalettedata[8] = {
 33     { 0x10, 0x20, 0x30, PC_NOCOLLAPSE },
 34     { 0x20, 0x30, 0x40, PC_NOCOLLAPSE },
 35     { 0x30, 0x40, 0x50, PC_NOCOLLAPSE },
 36     { 0x40, 0x50, 0x60, PC_NOCOLLAPSE },
 37     { 0x50, 0x60, 0x70, PC_NOCOLLAPSE },
 38     { 0x60, 0x70, 0x80, PC_NOCOLLAPSE },
 39     { 0x70, 0x80, 0x90, PC_NOCOLLAPSE },
 40     { 0x80, 0x90, 0xA0, PC_NOCOLLAPSE },
 41 };
 42 
 43 static void test_DIB_PAL_COLORS(void) {
 44     HDC hdc = GetDC( NULL );
 45     HDC memhdc = CreateCompatibleDC( hdc );
 46     HBITMAP hbmp, hbmpOld;
 47     char bmpbuf[sizeof(BITMAPINFO) + 10 * sizeof(WORD)];
 48     PBITMAPINFO bmp = (PBITMAPINFO)bmpbuf;
 49     WORD * bmpPalPtr;
 50     char logpalettebuf[sizeof(LOGPALETTE) + sizeof(logpalettedata)];
 51     PLOGPALETTE logpalette = (PLOGPALETTE)logpalettebuf;
 52     HPALETTE hpal, hpalOld;
 53     COLORREF setColor, chkColor, getColor;
 54     int i;
 55 
 56     /* Initalize the logical palette with a few colours */
 57     logpalette->palVersion = 0x300;
 58     logpalette->palNumEntries = 8;
 59     memcpy( logpalette->palPalEntry, logpalettedata, sizeof(logpalettedata) );
 60     hpal = CreatePalette( logpalette ); 
 61     hpalOld = SelectPalette( memhdc, hpal, FALSE );
 62     ok( hpalOld != NULL, "error=%d\n", GetLastError() );
 63 
 64     /* Create a DIB BMP which references colours in the logical palette */
 65     memset( bmp, 0x00, sizeof(BITMAPINFO) );
 66     bmp->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
 67     bmp->bmiHeader.biWidth = 1;
 68     bmp->bmiHeader.biHeight = 1;
 69     bmp->bmiHeader.biPlanes = 1;
 70     bmp->bmiHeader.biBitCount = 8;
 71     bmp->bmiHeader.biCompression = BI_RGB;
 72     bmp->bmiHeader.biClrUsed = 10;
 73     bmp->bmiHeader.biClrImportant = 0;
 74     bmpPalPtr = (WORD *)&bmp->bmiColors;
 75     for( i = 0; i < 8; i++ ) {
 76         *bmpPalPtr++ = i;
 77     }
 78     *bmpPalPtr++ = 8; /* Pointer to logical palette index just outside range */
 79     *bmpPalPtr++ = 19; /* Pointer to bad logical palette index */
 80 
 81     hbmp = CreateDIBSection( memhdc, bmp, DIB_PAL_COLORS, 0, 0, 0 );
 82     ok( hbmp != NULL, "error=%d\n", GetLastError() );
 83     hbmpOld = SelectObject( memhdc, hbmp );
 84     ok( hbmpOld != NULL, "error=%d\n", GetLastError() );
 85 
 86     /* Test with a RGB to DIB_PAL_COLORS */
 87     setColor = RGB( logpalettedata[1].peRed, logpalettedata[1].peGreen, logpalettedata[1].peBlue );
 88     SetPixel( memhdc, 0, 0, setColor );
 89     chkColor = RGB( logpalettedata[1].peRed, logpalettedata[1].peGreen, logpalettedata[1].peBlue );
 90     getColor = GetPixel( memhdc, 0, 0 );
 91     ok( getColor == chkColor, "getColor=%08X\n", (UINT)getColor );
 92 
 93     /* Test with a valid DIBINDEX to DIB_PAL_COLORS */
 94     setColor = DIBINDEX( 2 );
 95     SetPixel( memhdc, 0, 0, setColor );
 96     chkColor = RGB( logpalettedata[2].peRed, logpalettedata[2].peGreen, logpalettedata[2].peBlue );
 97     getColor = GetPixel( memhdc, 0, 0 );
 98     ok( getColor == chkColor, "getColor=%08X\n", (UINT)getColor );
 99 
100     /* Test with a invalid DIBINDEX to DIB_PAL_COLORS */
101     setColor = DIBINDEX( 12 );
102     SetPixel( memhdc, 0, 0, setColor );
103     chkColor = RGB( 0, 0, 0 );
104     getColor = GetPixel( memhdc, 0, 0 );
105     ok( getColor == chkColor, "getColor=%08X\n", (UINT)getColor );
106 
107     /* Test for double wraparound on logical palette references from */
108     /* DIBINDEX by DIB_PAL_COLORS. */
109     setColor = DIBINDEX( 9 );
110     SetPixel( memhdc, 0, 0, setColor );
111     chkColor = RGB( logpalettedata[3].peRed, logpalettedata[3].peGreen, logpalettedata[3].peBlue );
112     getColor = GetPixel( memhdc, 0, 0 );
113     ok( getColor == chkColor ||
114         broken(getColor == 0), /* win9x */
115         "getColor=%08X\n", (UINT)getColor );
116 
117     SelectPalette( memhdc, hpalOld, FALSE );
118     DeleteObject( hpal );
119     SelectObject( memhdc, hbmpOld );
120     DeleteObject( hbmp );
121     DeleteDC( memhdc );
122     ReleaseDC( NULL, hdc );
123 }
124 
125 static void test_palette_entries(void)
126 {
127     char logpalettebuf[sizeof(LOGPALETTE) + sizeof(logpalettedata)];
128     PLOGPALETTE logpalette = (PLOGPALETTE)logpalettebuf;
129     HPALETTE hpal;
130     UINT res=0;
131     PALETTEENTRY palEntry = { 0x1, 0x2, 0x3, 0xff };
132     PALETTEENTRY getEntryResult;
133 
134     /* Initalize the logical palette with a few colours */
135     logpalette->palVersion = 0x300;
136     logpalette->palNumEntries = 8;
137     memcpy( logpalette->palPalEntry, logpalettedata, sizeof(logpalettedata) );
138     hpal = CreatePalette( logpalette );
139 
140     /* Set a new entry with peFlags to 0xff */
141     SetPaletteEntries(hpal, 0, 1, &palEntry);
142 
143     /* Retrieve the entry to see if GDI32 performs any filtering on peFlags */
144     res = GetPaletteEntries(hpal, 0, 1, &getEntryResult);
145     ok(res == 1, "GetPaletteEntries should have returned 1 but returned %d\n", res);
146 
147     ok( palEntry.peFlags == getEntryResult.peFlags, "palEntry.peFlags (%#x) != getEntryResult.peFlags (%#x)\n", palEntry.peFlags, getEntryResult.peFlags );
148 }
149 
150 START_TEST(palette)
151 {
152     test_DIB_PAL_COLORS();
153     test_palette_entries();
154 }
155 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

This page was automatically generated by the LXR engine.
Visit the LXR main site for more information.