[WIN32K, GENDIB]
[reactos.git] / subsystems / win32 / win32k / objects / palette.c
index c489ef0..7896457 100644 (file)
@@ -14,7 +14,8 @@
 
 static UINT SystemPaletteUse = SYSPAL_NOSTATIC;  /* the program need save the pallete and restore it */
 
-PALETTE gpalRGB, gpalBGR, gpalMono, gpalRGB555, gpalRGB565;
+PALETTE gpalRGB, gpalBGR, gpalMono, gpalRGB555, gpalRGB565, *gppalDefault;
+PPALETTE appalSurfaceDefault[11];
 
 const PALETTEENTRY g_sysPalTemplate[NB_RESERVED_COLORS] =
 {
@@ -61,9 +62,6 @@ HPALETTE FASTCALL PALETTE_Init(VOID)
     int i;
     HPALETTE hpalette;
     PLOGPALETTE palPtr;
-#ifndef NO_MAPPING
-    PALOBJ *palObj;
-#endif
 
     // create default palette (20 system colors)
     palPtr = ExAllocatePoolWithTag(PagedPool,
@@ -85,19 +83,6 @@ HPALETTE FASTCALL PALETTE_Init(VOID)
     hpalette = NtGdiCreatePaletteInternal(palPtr,NB_RESERVED_COLORS);
     ExFreePoolWithTag(palPtr, TAG_PALETTE);
 
-#ifndef NO_MAPPING
-    palObj = (PALOBJ*)PALETTE_LockPalette(hpalette);
-    if (palObj)
-    {
-        if (!(palObj->mapping = ExAllocatePool(PagedPool, sizeof(int) * 20)))
-        {
-            DbgPrint("Win32k: Can not create palette mapping -- out of memory!");
-            return FALSE;
-        }
-        PALETTE_UnlockPalette(palObj);
-    }
-#endif
-
     /*  palette_size = visual->map_entries; */
 
     gpalRGB.Mode = PAL_RGB;
@@ -133,6 +118,19 @@ HPALETTE FASTCALL PALETTE_Init(VOID)
     gpalMono.BaseObject.ulShareCount = 0;
     gpalMono.BaseObject.BaseFlags = 0 ;
 
+    /* Initialize default surface palettes */
+    gppalDefault = PALETTE_ShareLockPalette(hpalette);
+    appalSurfaceDefault[BMF_1BPP] = &gpalMono;
+    appalSurfaceDefault[BMF_4BPP] = gppalDefault;
+    appalSurfaceDefault[BMF_8BPP] = gppalDefault;
+    appalSurfaceDefault[BMF_16BPP] = &gpalRGB565;
+    appalSurfaceDefault[BMF_24BPP] = &gpalBGR;
+    appalSurfaceDefault[BMF_32BPP] = &gpalBGR;
+    appalSurfaceDefault[BMF_4RLE] = gppalDefault;
+    appalSurfaceDefault[BMF_8RLE] = gppalDefault;
+    appalSurfaceDefault[BMF_JPEG] = &gpalRGB;
+    appalSurfaceDefault[BMF_PNG] = &gpalRGB;
+
     return hpalette;
 }
 
@@ -252,7 +250,7 @@ PALETTE_Cleanup(PVOID ObjectBody)
     PPALETTE pPal = (PPALETTE)ObjectBody;
     if (NULL != pPal->IndexedColors)
     {
-        ExFreePool(pPal->IndexedColors);
+        ExFreePoolWithTag(pPal->IndexedColors, TAG_PALETTE);
     }
 
     return TRUE;
@@ -394,7 +392,7 @@ EngCreatePalette(
 {
     HPALETTE Palette;
 
-    Palette = PALETTE_AllocPalette(Mode, NumColors, Colors, Red, Green, Blue);
+       Palette = PALETTE_AllocPalette(Mode, NumColors, Colors, Red, Green, Blue);
     if (Palette != NULL)
     {
         GDIOBJ_SetOwnership(Palette, NULL);
@@ -473,7 +471,7 @@ NtGdiCreatePaletteInternal ( IN LPLOGPALETTE pLogPal, IN UINT cEntries )
     else
     {
         /* FIXME - Handle PalGDI == NULL!!!! */
-        DPRINT1("waring PalGDI is NULL \n");
+        DPRINT1("PalGDI is NULL\n");
     }
   return NewPalette;
 }
@@ -1001,7 +999,7 @@ NtGdiDoPalette(
 
        if (pUnsafeEntries)
        {
-               pEntries = ExAllocatePool(PagedPool, cEntries * sizeof(PALETTEENTRY));
+               pEntries = ExAllocatePoolWithTag(PagedPool, cEntries * sizeof(PALETTEENTRY), TAG_PALETTE);
                if (!pEntries)
                        return 0;
                if (bInbound)
@@ -1013,7 +1011,7 @@ NtGdiDoPalette(
                        }
                        _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
                        {
-                               ExFreePool(pEntries);
+                               ExFreePoolWithTag(pEntries, TAG_PALETTE);
                                _SEH2_YIELD(return 0);
                        }
                        _SEH2_END
@@ -1067,7 +1065,7 @@ NtGdiDoPalette(
                        }
                        _SEH2_END
                }
-               ExFreePool(pEntries);
+               ExFreePoolWithTag(pEntries, TAG_PALETTE);
        }
 
        return ret;