mirror of
https://github.com/reactos/reactos.git
synced 2025-08-02 13:16:07 +00:00
[WIN32K]
Improve formatting svn path=/trunk/; revision=58405
This commit is contained in:
parent
32f93fc9b7
commit
95e9b1a4a7
1 changed files with 293 additions and 281 deletions
|
@ -39,12 +39,13 @@ IntGdiDeleteColorSpace(
|
||||||
{
|
{
|
||||||
BOOL Ret = FALSE;
|
BOOL Ret = FALSE;
|
||||||
|
|
||||||
if ( hColorSpace != hStockColorSpace &&
|
if ((hColorSpace != hStockColorSpace) &&
|
||||||
GDI_HANDLE_GET_TYPE(hColorSpace) == GDILoObjType_LO_ICMLCS_TYPE)
|
(GDI_HANDLE_GET_TYPE(hColorSpace) == GDILoObjType_LO_ICMLCS_TYPE))
|
||||||
{
|
{
|
||||||
Ret = GreDeleteObject(hColorSpace);
|
Ret = GreDeleteObject(hColorSpace);
|
||||||
if ( !Ret ) EngSetLastError(ERROR_INVALID_PARAMETER);
|
if (!Ret) EngSetLastError(ERROR_INVALID_PARAMETER);
|
||||||
}
|
}
|
||||||
|
|
||||||
return Ret;
|
return Ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -58,9 +59,7 @@ NtGdiCreateColorSpace(
|
||||||
|
|
||||||
_SEH2_TRY
|
_SEH2_TRY
|
||||||
{
|
{
|
||||||
ProbeForRead( pLogColorSpace,
|
ProbeForRead( pLogColorSpace, sizeof(LOGCOLORSPACEEXW), 1);
|
||||||
sizeof(LOGCOLORSPACEEXW),
|
|
||||||
1);
|
|
||||||
RtlCopyMemory(&Safelcs, pLogColorSpace, sizeof(LOGCOLORSPACEEXW));
|
RtlCopyMemory(&Safelcs, pLogColorSpace, sizeof(LOGCOLORSPACEEXW));
|
||||||
}
|
}
|
||||||
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
|
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
|
||||||
|
@ -74,6 +73,7 @@ NtGdiCreateColorSpace(
|
||||||
SetLastNtError(Status);
|
SetLastNtError(Status);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
return IntGdiCreateColorSpace(&Safelcs);
|
return IntGdiCreateColorSpace(&Safelcs);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -92,7 +92,7 @@ IntGetDeviceGammaRamp(HDEV hPDev, PGAMMARAMP Ramp)
|
||||||
PPDEVOBJ pGDev = (PPDEVOBJ) hPDev;
|
PPDEVOBJ pGDev = (PPDEVOBJ) hPDev;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
if (!(pGDev->flFlags & PDEV_DISPLAY )) return FALSE;
|
if (!(pGDev->flFlags & PDEV_DISPLAY)) return FALSE;
|
||||||
|
|
||||||
if ((pGDev->devinfo.iDitherFormat == BMF_8BPP) ||
|
if ((pGDev->devinfo.iDitherFormat == BMF_8BPP) ||
|
||||||
(pGDev->devinfo.iDitherFormat == BMF_16BPP) ||
|
(pGDev->devinfo.iDitherFormat == BMF_16BPP) ||
|
||||||
|
@ -100,26 +100,29 @@ IntGetDeviceGammaRamp(HDEV hPDev, PGAMMARAMP Ramp)
|
||||||
(pGDev->devinfo.iDitherFormat == BMF_32BPP))
|
(pGDev->devinfo.iDitherFormat == BMF_32BPP))
|
||||||
{
|
{
|
||||||
if (pGDev->flFlags & PDEV_GAMMARAMP_TABLE)
|
if (pGDev->flFlags & PDEV_GAMMARAMP_TABLE)
|
||||||
RtlCopyMemory( Ramp,
|
{
|
||||||
pGDev->pvGammaRamp,
|
RtlCopyMemory(Ramp, pGDev->pvGammaRamp, sizeof(GAMMARAMP));
|
||||||
sizeof(GAMMARAMP));
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
// Generate the 256-colors array
|
// Generate the 256-colors array
|
||||||
for(i=0; i<256; i++ )
|
for (i = 0; i < 256; i++ )
|
||||||
{
|
{
|
||||||
int NewValue = i * 256;
|
int NewValue = i * 256;
|
||||||
|
|
||||||
Ramp->Red[i] = Ramp->Green[i] = Ramp->Blue[i] = ((WORD)NewValue);
|
Ramp->Red[i] = Ramp->Green[i] = Ramp->Blue[i] = ((WORD)NewValue);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOL
|
BOOL
|
||||||
APIENTRY
|
APIENTRY
|
||||||
NtGdiGetDeviceGammaRamp(HDC hDC,
|
NtGdiGetDeviceGammaRamp(
|
||||||
|
HDC hDC,
|
||||||
LPVOID Ramp)
|
LPVOID Ramp)
|
||||||
{
|
{
|
||||||
BOOL Ret;
|
BOOL Ret;
|
||||||
|
@ -215,12 +218,12 @@ NtGdiSetColorSpace(IN HDC hdc,
|
||||||
|
|
||||||
BOOL
|
BOOL
|
||||||
FASTCALL
|
FASTCALL
|
||||||
UpdateDeviceGammaRamp( HDEV hPDev )
|
UpdateDeviceGammaRamp(HDEV hPDev)
|
||||||
{
|
{
|
||||||
BOOL Ret = FALSE;
|
BOOL Ret = FALSE;
|
||||||
PPALETTE palGDI;
|
PPALETTE palGDI;
|
||||||
PALOBJ *palPtr;
|
PALOBJ *palPtr;
|
||||||
PPDEVOBJ pGDev = (PPDEVOBJ) hPDev;
|
PPDEVOBJ pGDev = (PPDEVOBJ)hPDev;
|
||||||
|
|
||||||
if ((pGDev->devinfo.iDitherFormat == BMF_8BPP) ||
|
if ((pGDev->devinfo.iDitherFormat == BMF_8BPP) ||
|
||||||
(pGDev->devinfo.iDitherFormat == BMF_16BPP) ||
|
(pGDev->devinfo.iDitherFormat == BMF_16BPP) ||
|
||||||
|
@ -232,7 +235,7 @@ UpdateDeviceGammaRamp( HDEV hPDev )
|
||||||
IGRF_RGB_256WORDS,
|
IGRF_RGB_256WORDS,
|
||||||
pGDev->pvGammaRamp);
|
pGDev->pvGammaRamp);
|
||||||
|
|
||||||
if ( (pGDev->devinfo.iDitherFormat != BMF_8BPP) ||
|
if ((pGDev->devinfo.iDitherFormat != BMF_8BPP) ||
|
||||||
!(pGDev->gdiinfo.flRaster & RC_PALETTE)) return FALSE;
|
!(pGDev->gdiinfo.flRaster & RC_PALETTE)) return FALSE;
|
||||||
|
|
||||||
if (!(pGDev->flFlags & PDEV_GAMMARAMP_TABLE)) return FALSE;
|
if (!(pGDev->flFlags & PDEV_GAMMARAMP_TABLE)) return FALSE;
|
||||||
|
@ -288,9 +291,11 @@ IntSetDeviceGammaRamp(HDEV hPDev, PGAMMARAMP Ramp, BOOL Test)
|
||||||
(pGDev->devinfo.iDitherFormat == BMF_32BPP))
|
(pGDev->devinfo.iDitherFormat == BMF_32BPP))
|
||||||
{
|
{
|
||||||
if (!pGDev->DriverFunctions.IcmSetDeviceGammaRamp)
|
if (!pGDev->DriverFunctions.IcmSetDeviceGammaRamp)
|
||||||
{ // No driver support
|
{
|
||||||
|
// No driver support
|
||||||
if (!(pGDev->devinfo.flGraphicsCaps2 & GCAPS2_CHANGEGAMMARAMP))
|
if (!(pGDev->devinfo.flGraphicsCaps2 & GCAPS2_CHANGEGAMMARAMP))
|
||||||
{ // Driver does not support Gamma Ramp, so test to see we
|
{
|
||||||
|
// Driver does not support Gamma Ramp, so test to see we
|
||||||
// have BMF_8BPP only and palette operation support.
|
// have BMF_8BPP only and palette operation support.
|
||||||
if ((pGDev->devinfo.iDitherFormat != BMF_8BPP) ||
|
if ((pGDev->devinfo.iDitherFormat != BMF_8BPP) ||
|
||||||
!(pGDev->gdiinfo.flRaster & RC_PALETTE)) return FALSE;
|
!(pGDev->gdiinfo.flRaster & RC_PALETTE)) return FALSE;
|
||||||
|
@ -298,8 +303,11 @@ IntSetDeviceGammaRamp(HDEV hPDev, PGAMMARAMP Ramp, BOOL Test)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pGDev->flFlags & PDEV_GAMMARAMP_TABLE)
|
if (pGDev->flFlags & PDEV_GAMMARAMP_TABLE)
|
||||||
if (RtlCompareMemory( pGDev->pvGammaRamp, Ramp, sizeof(GAMMARAMP)) ==
|
{
|
||||||
|
if (RtlCompareMemory(pGDev->pvGammaRamp, Ramp, sizeof(GAMMARAMP)) ==
|
||||||
sizeof(GAMMARAMP)) return TRUE;
|
sizeof(GAMMARAMP)) return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
// Verify Ramp is inside range.
|
// Verify Ramp is inside range.
|
||||||
IcmGR = -IcmGammaRangeSet;
|
IcmGR = -IcmGammaRangeSet;
|
||||||
TstPeak = (Test == FALSE);
|
TstPeak = (Test == FALSE);
|
||||||
|
@ -308,46 +316,50 @@ IntSetDeviceGammaRamp(HDEV hPDev, PGAMMARAMP Ramp, BOOL Test)
|
||||||
R = Ramp->Red[i] / 256;
|
R = Ramp->Red[i] / 256;
|
||||||
G = Ramp->Green[i] / 256;
|
G = Ramp->Green[i] / 256;
|
||||||
B = Ramp->Blue[i] / 256;
|
B = Ramp->Blue[i] / 256;
|
||||||
if ( R >= IcmGR)
|
|
||||||
|
if (R >= IcmGR)
|
||||||
{
|
{
|
||||||
if ( R <= IcmGammaRangeSet + i)
|
if (R <= IcmGammaRangeSet + i)
|
||||||
{
|
{
|
||||||
if ( G >= IcmGR &&
|
if ((G >= IcmGR) &&
|
||||||
(G <= IcmGammaRangeSet + i) &&
|
(G <= IcmGammaRangeSet + i) &&
|
||||||
B >= IcmGR &&
|
(B >= IcmGR) &&
|
||||||
(B <= IcmGammaRangeSet + i) ) continue;
|
(B <= IcmGammaRangeSet + i) ) continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Test) return Ret; // Don't set and return.
|
if (Test) return Ret; // Don't set and return.
|
||||||
|
|
||||||
// No test override, check max range
|
// No test override, check max range
|
||||||
if (TstPeak)
|
if (TstPeak)
|
||||||
{
|
{
|
||||||
if ( R != (IcmGR * 256) ||
|
if ((R != (IcmGR * 256)) ||
|
||||||
G != (IcmGR * 256) ||
|
(G != (IcmGR * 256)) ||
|
||||||
B != (IcmGR * 256) ) TstPeak = FALSE; // W/i range.
|
(B != (IcmGR * 256)) ) TstPeak = FALSE; // W/i range.
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// ReactOS allocates a ramp even if it is 8BPP and Palette only.
|
// ReactOS allocates a ramp even if it is 8BPP and Palette only.
|
||||||
// This way we have a record of the change in memory.
|
// This way we have a record of the change in memory.
|
||||||
if (!pGDev->pvGammaRamp && !(pGDev->flFlags & PDEV_GAMMARAMP_TABLE))
|
if (!pGDev->pvGammaRamp && !(pGDev->flFlags & PDEV_GAMMARAMP_TABLE))
|
||||||
{ // If the above is true and we have nothing allocated, create it.
|
{
|
||||||
|
// If the above is true and we have nothing allocated, create it.
|
||||||
pGDev->pvGammaRamp = ExAllocatePoolWithTag(PagedPool, sizeof(GAMMARAMP), GDITAG_ICM);
|
pGDev->pvGammaRamp = ExAllocatePoolWithTag(PagedPool, sizeof(GAMMARAMP), GDITAG_ICM);
|
||||||
pGDev->flFlags |= PDEV_GAMMARAMP_TABLE;
|
pGDev->flFlags |= PDEV_GAMMARAMP_TABLE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pGDev->pvGammaRamp)
|
if (pGDev->pvGammaRamp)
|
||||||
RtlCopyMemory( pGDev->pvGammaRamp, Ramp, sizeof(GAMMARAMP));
|
RtlCopyMemory(pGDev->pvGammaRamp, Ramp, sizeof(GAMMARAMP));
|
||||||
|
|
||||||
Ret = UpdateDeviceGammaRamp(hPDev);
|
Ret = UpdateDeviceGammaRamp(hPDev);
|
||||||
|
|
||||||
return Ret;
|
|
||||||
}
|
}
|
||||||
else
|
|
||||||
return Ret;
|
return Ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOL
|
BOOL
|
||||||
APIENTRY
|
APIENTRY
|
||||||
NtGdiSetDeviceGammaRamp(HDC hDC,
|
NtGdiSetDeviceGammaRamp(
|
||||||
|
HDC hDC,
|
||||||
LPVOID Ramp)
|
LPVOID Ramp)
|
||||||
{
|
{
|
||||||
BOOL Ret;
|
BOOL Ret;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue