if(Colors != NULL)
{
- PalGDI->IndexedColors = ExAllocatePool(NonPagedPool, sizeof(ULONG)*NumColors);
- RtlCopyMemory(PalGDI->IndexedColors, Colors, sizeof(ULONG)*NumColors);
+ PalGDI->IndexedColors = ExAllocatePool(NonPagedPool, sizeof(PALETTEENTRY) * NumColors);
+ RtlCopyMemory(PalGDI->IndexedColors, Colors, sizeof(PALETTEENTRY) * NumColors);
}
if(Mode==PAL_INDEXED)
const PALETTEENTRY* COLOR_GetSystemPaletteTemplate(void)
{
- return COLOR_sysPalTemplate;
+ return &COLOR_sysPalTemplate;
}
BOOL STDCALL W32kAnimatePalette(HPALETTE hpal,
PalObj = AccessUserObject(NewPalette);
- size = sizeof(LOGPALETTE) + (palette->palNumEntries - 1) * sizeof(PALETTEENTRY);
- memcpy(&PalObj->logpalette, palette, size);
- PALETTE_ValidateFlags(PalObj->logpalette.palPalEntry, PalObj->logpalette.palNumEntries);
+ size = sizeof(LOGPALETTE) + (palette->palNumEntries * sizeof(PALETTEENTRY));
+ PalObj->logpalette = ExAllocatePool(NonPagedPool, size);
+ memcpy(PalObj->logpalette, palette, size);
+ PALETTE_ValidateFlags(PalObj->logpalette->palPalEntry, PalObj->logpalette->palNumEntries);
PalObj->logicalToSystem = NULL;
return NewPalette;
return nearest;
}
- nearest = COLOR_LookupNearestColor(palObj->logpalette.palPalEntry,
- palObj->logpalette.palNumEntries, Color);
+ nearest = COLOR_LookupNearestColor(palObj->logpalette->palPalEntry,
+ palObj->logpalette->palNumEntries, Color);
// GDI_ReleaseObj( hpal );
// GDI_ReleaseObj( hdc );
if( palObj )
{
// Return closest match for the given RGB color
- index = COLOR_PaletteLookupPixel(palObj->logpalette.palPalEntry, palObj->logpalette.palNumEntries, NULL, Color, FALSE);
+ index = COLOR_PaletteLookupPixel(palObj->logpalette->palPalEntry, palObj->logpalette->palNumEntries, NULL, Color, FALSE);
// GDI_ReleaseObj( hpalette );
}
palPtr = AccessUserObject(hpal);
if (!palPtr) return 0;
- numEntries = palPtr->logpalette.palNumEntries;
+ numEntries = palPtr->logpalette->palNumEntries;
if (StartIndex + Entries > numEntries) Entries = numEntries - StartIndex;
if (pe)
{
// GDI_ReleaseObj( hpalette );
return 0;
}
- memcpy(pe, &palPtr->logpalette.palPalEntry[StartIndex], Entries * sizeof(PALETTEENTRY));
+ memcpy(pe, &palPtr->logpalette->palPalEntry[StartIndex], Entries * sizeof(PALETTEENTRY));
for(numEntries = 0; numEntries < Entries ; numEntries++)
if (pe[numEntries].peFlags & 0xF0)
pe[numEntries].peFlags = 0;
sysGDI = AccessInternalObject(systemPalette);
// Step 1: Create mapping of system palette\DC palette
- realized = PALETTE_SetMapping(palPtr, 0, palPtr->logpalette.palNumEntries,
+ realized = PALETTE_SetMapping(palPtr, 0, palPtr->logpalette->palNumEntries,
(dc->w.hPalette != hPrimaryPalette) ||
(dc->w.hPalette == W32kGetStockObject(DEFAULT_PALETTE)));
} else {
if(SurfGDI->SetPalette)
{
- success = SurfGDI->SetPalette(dc->PDev, sysPtr, 0, 0, sysPtr->logpalette.palNumEntries);
+ success = SurfGDI->SetPalette(dc->PDev, sysPtr, 0, 0, sysPtr->logpalette->palNumEntries);
}
}
PXLATEOBJ XlateObj = NULL;
if(!palPtr) return FALSE;
- cPrevEnt = palPtr->logpalette.palNumEntries;
- prevVer = palPtr->logpalette.palVersion;
+ cPrevEnt = palPtr->logpalette->palNumEntries;
+ prevVer = palPtr->logpalette->palVersion;
prevsize = sizeof(LOGPALETTE) + (cPrevEnt - 1) * sizeof(PALETTEENTRY) + sizeof(int*) + sizeof(GDIOBJHDR);
size += sizeof(int*) + sizeof(GDIOBJHDR);
XlateObj = palPtr->logicalToSystem;
memset( (BYTE*)palPtr + prevsize, 0, size - prevsize );
PALETTE_ValidateFlags((PALETTEENTRY*)((BYTE*)palPtr + prevsize), cEntries - cPrevEnt );
}
- palPtr->logpalette.palNumEntries = cEntries;
- palPtr->logpalette.palVersion = prevVer;
+ palPtr->logpalette->palNumEntries = cEntries;
+ palPtr->logpalette->palVersion = prevVer;
// GDI_ReleaseObj( hPal );
return TRUE; */
palPtr = AccessUserObject(hpal);
if (!palPtr) return 0;
- numEntries = palPtr->logpalette.palNumEntries;
+ numEntries = palPtr->logpalette->palNumEntries;
if (Start >= numEntries)
{
// GDI_ReleaseObj( hpalette );
return 0;
}
if (Start + Entries > numEntries) Entries = numEntries - Start;
- memcpy(&palPtr->logpalette.palPalEntry[Start], pe, Entries * sizeof(PALETTEENTRY));
- PALETTE_ValidateFlags(palPtr->logpalette.palPalEntry, palPtr->logpalette.palNumEntries);
+ memcpy(&palPtr->logpalette->palPalEntry[Start], pe, Entries * sizeof(PALETTEENTRY));
+ PALETTE_ValidateFlags(palPtr->logpalette->palPalEntry, palPtr->logpalette->palNumEntries);
ExFreePool(palPtr->logicalToSystem);
palPtr->logicalToSystem = NULL;
// GDI_ReleaseObj( hpalette );
/*
* GDIOBJ.C - GDI object manipulation routines
*
- * $Id: gdiobj.c,v 1.7 2001/03/31 15:35:08 jfilby Exp $
+ * $Id: gdiobj.c,v 1.8 2001/06/04 14:54:40 jfilby Exp $
*
*/
VOID CreateStockObjects(void)
{
// Create GDI Stock Objects from the logical structures we've defined
+
StockObjects[WHITE_BRUSH] = W32kCreateBrushIndirect(&WhiteBrush);
StockObjects[LTGRAY_BRUSH] = W32kCreateBrushIndirect(&LtGrayBrush);
StockObjects[GRAY_BRUSH] = W32kCreateBrushIndirect(&GrayBrush);
const PALETTEENTRY* __sysPalTemplate = COLOR_GetSystemPaletteTemplate();
// create default palette (20 system colors)
- palPtr = ExAllocatePool(NonPagedPool, sizeof(LOGPALETTE) + (NB_RESERVED_COLORS-1) * sizeof(PALETTEENTRY));
+ palPtr = ExAllocatePool(NonPagedPool, sizeof(LOGPALETTE) + (NB_RESERVED_COLORS * sizeof(PALETTEENTRY)));
if (!palPtr) return FALSE;
palPtr->palVersion = 0x300;
palPtr->palPalEntry[i].peBlue = __sysPalTemplate[i].peBlue;
palPtr->palPalEntry[i].peFlags = 0;
}
+
hpalette = W32kCreatePalette(palPtr);
ExFreePool(palPtr);
// initialize palette mapping table
//mapping = HeapReAlloc( GetProcessHeap(), 0, palPtr->mapping,
- // sizeof(int)*palPtr->logpalette.palNumEntries);
+ // sizeof(int)*palPtr->logpalette->palNumEntries);
ExFreePool(palPtr->mapping);
- mapping = ExAllocatePool(NonPagedPool, sizeof(int)*palPtr->logpalette.palNumEntries);
+ mapping = ExAllocatePool(NonPagedPool, sizeof(int)*palPtr->logpalette->palNumEntries);
palPtr->mapping = mapping;
index = -1;
flag = PC_SYS_USED;
- switch( palPtr->logpalette.palPalEntry[uStart].peFlags & 0x07 )
+ switch( palPtr->logpalette->palPalEntry[uStart].peFlags & 0x07 )
{
case PC_EXPLICIT: // palette entries are indices into system palette
// The PC_EXPLICIT flag is used to copy an entry from the system palette into the logical palette
- index = *(WORD*)(palPtr->logpalette.palPalEntry + uStart);
+ index = *(WORD*)(palPtr->logpalette->palPalEntry + uStart);
if(index > 255 || (index >= COLOR_gapStart && index <= COLOR_gapEnd))
{
DbgPrint("Win32k: PC_EXPLICIT: idx %d out of system palette, assuming black.\n", index);
// fall through
default: // try to collapse identical colors
index = COLOR_PaletteLookupExactIndex(COLOR_sysPal, 256,
- *(COLORREF*)(palPtr->logpalette.palPalEntry + uStart));
+ *(COLORREF*)(palPtr->logpalette->palPalEntry + uStart));
// fall through
case PC_NOCOLLAPSE:
PALETTE_firstFree = PALETTE_freeList[index];
color.pixel = (PALETTE_PaletteToXPixel) ? PALETTE_PaletteToXPixel[index] : index;
- color.red = palPtr->logpalette.palPalEntry[uStart].peRed << 8;
- color.green = palPtr->logpalette.palPalEntry[uStart].peGreen << 8;
- color.blue = palPtr->logpalette.palPalEntry[uStart].peBlue << 8;
+ color.red = palPtr->logpalette->palPalEntry[uStart].peRed << 8;
+ color.green = palPtr->logpalette->palPalEntry[uStart].peGreen << 8;
+ color.blue = palPtr->logpalette->palPalEntry[uStart].peBlue << 8;
color.flags = DoRed | DoGreen | DoBlue;
TSXStoreColor(display, PALETTE_PaletteXColormap, &color);
- COLOR_sysPal[index] = palPtr->logpalette.palPalEntry[uStart];
+ COLOR_sysPal[index] = palPtr->logpalette->palPalEntry[uStart];
COLOR_sysPal[index].peFlags = flag;
PALETTE_freeList[index] = 0;
/* else if (PALETTE_PaletteFlags & PALETTE_VIRTUAL)
{
index = PALETTE_ToPhysical(NULL, 0x00ffffff &
- *(COLORREF*)(palPtr->logpalette.palPalEntry + uStart));
+ *(COLORREF*)(palPtr->logpalette->palPalEntry + uStart));
break;
} FIXME */
// we have to map to existing entry in the system palette
index = COLOR_PaletteLookupPixel(COLOR_sysPal, 256, NULL,
- *(COLORREF*)(palPtr->logpalette.palPalEntry + uStart), TRUE);
+ *(COLORREF*)(palPtr->logpalette->palPalEntry + uStart), TRUE);
}
- palPtr->logpalette.palPalEntry[uStart].peFlags |= PC_SYS_USED;
+ palPtr->logpalette->palPalEntry[uStart].peFlags |= PC_SYS_USED;
/* if(PALETTE_PaletteToXPixel) index = PALETTE_PaletteToXPixel[index]; FIXME */
break;
ANSI_STRING StringA;
UNICODE_STRING StringU;
- FontObj = EngAllocMem(FL_ZERO_MEMORY, sizeof(XLATEOBJ), NULL);
- FontGDI = EngAllocMem(FL_ZERO_MEMORY, sizeof(XLATEGDI), NULL);
+ FontObj = EngAllocMem(FL_ZERO_MEMORY, sizeof(FONTOBJ), NULL);
+ FontGDI = EngAllocMem(FL_ZERO_MEMORY, sizeof(FONTGDI), NULL);
NewFont = CreateGDIHandle(FontGDI, FontObj);
RtlCreateUnicodeString(&uFileName, Filename);
// Add this font resource to the font table
FontTable[FontsLoaded].hFont = NewFont;
- FontTable[FontsLoaded].FaceName = ExAllocatePool(NonPagedPool, (StringU.Length + 1) * 2);
RtlInitAnsiString(&StringA, (LPSTR)face->family_name);
RtlAnsiStringToUnicodeString(&StringU, &StringA, TRUE);
+ FontTable[FontsLoaded].FaceName = ExAllocatePool(NonPagedPool, (StringU.Length + 1) * 2);
wcscpy(FontTable[FontsLoaded].FaceName, StringU.Buffer);
RtlFreeUnicodeString(&StringU);