WinG fixes.
diff --git a/objects/palette.c b/objects/palette.c
index 44469fb..3a57d75 100644
--- a/objects/palette.c
+++ b/objects/palette.c
@@ -124,7 +124,21 @@
/***********************************************************************
- * CreateHalftonePalette [GDI32.47] Creates a halftone palette
+ * CreateHalftonePalette16 [GDI.?] Creates a halftone palette
+ *
+ * RETURNS
+ * Success: Handle to logical halftone palette
+ * Failure: 0
+ */
+HPALETTE16 WINAPI CreateHalftonePalette16(
+ HDC16 hdc) /* [in] Handle to device context */
+{
+ return CreateHalftonePalette32(hdc);
+ }
+
+
+/***********************************************************************
+ * CreateHalftonePalette32 [GDI32.47] Creates a halftone palette
*
* RETURNS
* Success: Handle to logical halftone palette
@@ -132,46 +146,40 @@
*
* FIXME: not truly tested
*/
-HPALETTE32 WINAPI CreateHalftonePalette(HDC32 hdc) /* [in] Handle to device context */
-{ int r,g,b,i;
- HPALETTE32 hPalette = 0;
- int palNumEntries = 216 + NB_RESERVED_COLORS;
-
- const PALETTEENTRY* __sysPalTemplate = COLOR_GetSystemPaletteTemplate();
+HPALETTE32 WINAPI CreateHalftonePalette32(
+ HDC32 hdc) /* [in] Handle to device context */
+{
+ int i, r, g, b;
+ struct {
+ WORD Version;
+ WORD NumberOfEntries;
+ PALETTEENTRY aEntries[256];
+ } Palette = {
+ 0x300, 256
+ };
- LOGPALETTE * pLogPal = (LOGPALETTE*) HeapAlloc( GetProcessHeap(), 0,
- sizeof(LOGPALETTE) + (palNumEntries-1)*sizeof(PALETTEENTRY));
-
- TRACE(palette,"(0x%x)\n", hdc);
+ GetSystemPaletteEntries32(hdc, 0, 256, Palette.aEntries);
+ return CreatePalette32((LOGPALETTE *)&Palette);
- pLogPal->palVersion = 0x300;
- pLogPal->palNumEntries = palNumEntries;
-
- for( i = 0; i < NB_RESERVED_COLORS; i ++ )
- { pLogPal->palPalEntry[i].peRed = __sysPalTemplate[i].peRed;
- pLogPal->palPalEntry[i].peGreen = __sysPalTemplate[i].peGreen;
- pLogPal->palPalEntry[i].peBlue = __sysPalTemplate[i].peBlue;
- pLogPal->palPalEntry[i].peFlags = 0;
- }
-
- for (r=0; r<6; r++)
- { for (g=0; g<6; g++)
- { for (b=0; b<6; b++)
- { pLogPal->palPalEntry[NB_RESERVED_COLORS+r*36+g*6+b].peRed = r*51;
- pLogPal->palPalEntry[NB_RESERVED_COLORS+r*36+g*6+b].peGreen = g*51;
- pLogPal->palPalEntry[NB_RESERVED_COLORS+r*36+g*6+b].peBlue = b*51;
- pLogPal->palPalEntry[NB_RESERVED_COLORS+r*36+g*6+b].peFlags = 0;
+ for (r = 0; r < 6; r++) {
+ for (g = 0; g < 6; g++) {
+ for (b = 0; b < 6; b++) {
+ i = r + g*6 + b*36 + 10;
+ Palette.aEntries[i].peRed = r * 51;
+ Palette.aEntries[i].peGreen = g * 51;
+ Palette.aEntries[i].peBlue = b * 51;
}
}
}
- hPalette = CreatePalette32 (pLogPal);
- if (hPalette)
- { SelectPalette32 (hdc, hPalette, FALSE);
+ for (i = 216; i < 246; i++) {
+ int v = (i - 216) * 8;
+ Palette.aEntries[i].peRed = v;
+ Palette.aEntries[i].peGreen = v;
+ Palette.aEntries[i].peBlue = v;
}
- HeapFree (GetProcessHeap(), 0, pLogPal);
- return hPalette;
+ return CreatePalette32((LOGPALETTE *)&Palette);
}