/* * @implemented */ DWORD WINAPI SetLayout(HDC hdc, DWORD dwLayout) { #if 0 if (GDI_HANDLE_GET_TYPE(hdc) != GDI_OBJECT_TYPE_DC) { if (GDI_HANDLE_GET_TYPE(hdc) == GDI_OBJECT_TYPE_METADC) return MFDRV_SetLayout( hdc, dwLayout); else { PLDC pLDC = GdiGetLDC(hdc); if ( !pLDC ) { SetLastError(ERROR_INVALID_HANDLE); return 0; } if (pLDC->iType == LDC_EMFLDC) { return EMFDRV_SetLayout( hdc, dwLayout); } } } #endif if (!GdiIsHandleValid((HGDIOBJ) hdc) || (GDI_HANDLE_GET_TYPE(hdc) != GDI_OBJECT_TYPE_DC)) return GDI_ERROR; return NtGdiSetLayout( hdc, -1, dwLayout); }
/* * @implemented */ DWORD WINAPI SetLayoutWidth(HDC hdc,LONG wox,DWORD dwLayout) { if (!GdiIsHandleValid((HGDIOBJ) hdc) || (GDI_HANDLE_GET_TYPE(hdc) != GDI_OBJECT_TYPE_DC)) return GDI_ERROR; return NtGdiSetLayout( hdc, wox, dwLayout); }
/* * @implemented */ COLORREF WINAPI GetPixel( _In_ HDC hdc, _In_ INT x, _In_ INT y) { if (GDI_HANDLE_GET_TYPE(hdc) != GDI_OBJECT_TYPE_DC) return CLR_INVALID; if (!GdiIsHandleValid((HGDIOBJ) hdc)) return CLR_INVALID; return NtGdiGetPixel(hdc, x, y); }
INT WINAPI MirrorRgnDC( _In_ HDC hdc, _In_ HRGN hrgn, _In_ HRGN *phrn) { if (!GdiIsHandleValid((HGDIOBJ) hdc) || (GDI_HANDLE_GET_TYPE(hdc) != GDI_OBJECT_TYPE_DC)) return 0; return MirrorRgnByWidth(hrgn, NtGdiGetDeviceWidth(hdc), phrn); }
/* * @implemented * */ HGDIOBJ WINAPI SelectObject( _In_ HDC hdc, _In_ HGDIOBJ hobj) { /* Fix up 16 bit handles */ hobj = GdiFixUpHandle(hobj); if (!GdiIsHandleValid(hobj)) { return NULL; } /* Call the appropriate select function */ switch (GDI_HANDLE_GET_TYPE(hobj)) { case GDILoObjType_LO_REGION_TYPE: return (HGDIOBJ)ExtSelectClipRgn(hdc, hobj, RGN_COPY); case GDILoObjType_LO_BITMAP_TYPE: case GDILoObjType_LO_DIBSECTION_TYPE: return GdiSelectBitmap(hdc, hobj); case GDILoObjType_LO_BRUSH_TYPE: return GdiSelectBrush(hdc, hobj); case GDILoObjType_LO_PEN_TYPE: case GDILoObjType_LO_EXTPEN_TYPE: return GdiSelectPen(hdc, hobj); case GDILoObjType_LO_FONT_TYPE: return GdiSelectFont(hdc, hobj); case GDILoObjType_LO_ICMLCS_TYPE: return SetColorSpace(hdc, hobj); case GDILoObjType_LO_PALETTE_TYPE: SetLastError(ERROR_INVALID_FUNCTION); default: return NULL; } return NULL; }
INT WINAPI GetDIBits( HDC hDC, HBITMAP hbmp, UINT uStartScan, UINT cScanLines, LPVOID lpvBits, LPBITMAPINFO lpbmi, UINT uUsage) { UINT cjBmpScanSize; UINT cjInfoSize; if (!hDC || !GdiIsHandleValid((HGDIOBJ) hDC) || !lpbmi) { GdiSetLastError(ERROR_INVALID_PARAMETER); return 0; } cjBmpScanSize = DIB_BitmapMaxBitsSize(lpbmi, cScanLines); /* Caller must provide maximum size possible */ cjInfoSize = DIB_BitmapInfoSize(lpbmi, uUsage, TRUE); if (lpvBits) { if (lpbmi->bmiHeader.biSize >= sizeof(BITMAPINFOHEADER)) { if (lpbmi->bmiHeader.biCompression == BI_JPEG || lpbmi->bmiHeader.biCompression == BI_PNG) { SetLastError(ERROR_INVALID_PARAMETER); return 0; } } } return NtGdiGetDIBitsInternal(hDC, hbmp, uStartScan, cScanLines, lpvBits, lpbmi, uUsage, cjBmpScanSize, cjInfoSize); }
/* * @implemented */ BOOL WINAPI ScaleWindowExtEx( HDC a0, int a1, int a2, int a3, int a4, LPSIZE a5 ) { #if 0 if (GDI_HANDLE_GET_TYPE(a0) != GDI_OBJECT_TYPE_DC) { if (GDI_HANDLE_GET_TYPE(a0) == GDI_OBJECT_TYPE_METADC) return MFDRV_; else { PLDC pLDC = GdiGetLDC(a0); if ( !pLDC ) { SetLastError(ERROR_INVALID_HANDLE); return FALSE; } if (pLDC->iType == LDC_EMFLDC) { return EMFDRV_; } } } #endif if (!GdiIsHandleValid((HGDIOBJ) a0) || (GDI_HANDLE_GET_TYPE(a0) != GDI_OBJECT_TYPE_DC)) return FALSE; return NtGdiScaleWindowExtEx(a0, a1, a2, a3, a4, a5); }