10 LPLOGCOLORSPACEW lplcpw
,
14 LOGCOLORSPACEEXW lcpeexw
;
16 if ((lplcpw
->lcsSignature
!= LCS_SIGNATURE
) ||
17 (lplcpw
->lcsVersion
!= 0x400) ||
18 (lplcpw
->lcsSize
!= sizeof(LOGCOLORSPACEW
)))
20 SetLastError(ERROR_INVALID_COLORSPACE
);
23 RtlCopyMemory(&lcpeexw
.lcsColorSpace
, lplcpw
, sizeof(LOGCOLORSPACEW
));
25 return NtGdiCreateColorSpace(&lcpeexw
);
34 LPLOGCOLORSPACEW lplcpw
37 return IntCreateColorSpaceW(lplcpw
, FALSE
);
47 LPLOGCOLORSPACEA lplcpa
52 if ((lplcpa
->lcsSignature
!= LCS_SIGNATURE
) ||
53 (lplcpa
->lcsVersion
!= 0x400) ||
54 (lplcpa
->lcsSize
!= sizeof(LOGCOLORSPACEA
)))
56 SetLastError(ERROR_INVALID_COLORSPACE
);
60 lcpw
.lcsSignature
= lplcpa
->lcsSignature
;
61 lcpw
.lcsVersion
= lplcpa
->lcsVersion
;
62 lcpw
.lcsSize
= sizeof(LOGCOLORSPACEW
);
63 lcpw
.lcsCSType
= lplcpa
->lcsCSType
;
64 lcpw
.lcsIntent
= lplcpa
->lcsIntent
;
65 lcpw
.lcsEndpoints
= lplcpa
->lcsEndpoints
;
66 lcpw
.lcsGammaRed
= lplcpa
->lcsGammaRed
;
67 lcpw
.lcsGammaGreen
= lplcpa
->lcsGammaGreen
;
68 lcpw
.lcsGammaBlue
= lplcpa
->lcsGammaBlue
;
70 RtlMultiByteToUnicodeN( lcpw
.lcsFilename
,
74 strlen(lplcpa
->lcsFilename
) + 1);
76 return IntCreateColorSpaceW(&lcpw
, FALSE
);
84 GetColorSpace(HDC hDC
)
88 if (!GdiGetHandleUserData(hDC
, GDI_OBJECT_TYPE_DC
, (PVOID
)&pDc_Attr
))
90 SetLastError(ERROR_INVALID_HANDLE
);
93 return pDc_Attr
->hColorSpace
;
107 HCOLORSPACE rhCS
= GetColorSpace(hDC
);
109 if (GDI_HANDLE_GET_TYPE(hDC
) == GDI_OBJECT_TYPE_DC
)
111 if (NtGdiSetColorSpace(hDC
, hCS
)) return rhCS
;
114 if (GDI_HANDLE_GET_TYPE(hDC
) != GDI_OBJECT_TYPE_METADC
)
116 PLDC pLDC
= GdiGetLDC(hDC
);
119 SetLastError(ERROR_INVALID_HANDLE
);
122 if (pLDC
->iType
== LDC_EMFLDC
)