/* * DC device-independent Get/SetXXX functions * * Copyright 1993 Alexandre Julliard * */ #include "config.h" #include "winbase.h" #include "winerror.h" #include "gdi.h" /*********************************************************************** * SetBkMode (GDI32.@) */ INT WINAPI SetBkMode( HDC hdc, INT mode ) { INT ret; DC *dc; if ((mode <= 0) || (mode > BKMODE_LAST)) { SetLastError(ERROR_INVALID_PARAMETER); return 0; } if (!(dc = DC_GetDCPtr( hdc ))) return 0; if (dc->funcs->pSetBkMode) ret = dc->funcs->pSetBkMode( dc, mode ); else { ret = dc->backgroundMode; dc->backgroundMode = mode; } GDI_ReleaseObj( hdc ); return ret; } /*********************************************************************** * SetROP2 (GDI32.@) */ INT WINAPI SetROP2( HDC hdc, INT mode ) { INT ret; DC *dc; if ((mode < R2_BLACK) || (mode > R2_WHITE)) { SetLastError(ERROR_INVALID_PARAMETER); return 0; } if (!(dc = DC_GetDCPtr( hdc ))) return 0; if (dc->funcs->pSetROP2) ret = dc->funcs->pSetROP2( dc, mode ); else { ret = dc->ROPmode; dc->ROPmode = mode; } GDI_ReleaseObj( hdc ); return ret; } /*********************************************************************** * SetRelAbs (GDI32.@) */ INT WINAPI SetRelAbs( HDC hdc, INT mode ) { INT ret; DC *dc; if ((mode != ABSOLUTE) && (mode != RELATIVE)) { SetLastError(ERROR_INVALID_PARAMETER); return 0; } if (!(dc = DC_GetDCPtr( hdc ))) return 0; if (dc->funcs->pSetRelAbs) ret = dc->funcs->pSetRelAbs( dc, mode ); else { ret = dc->relAbsMode; dc->relAbsMode = mode; } GDI_ReleaseObj( hdc ); return ret; } /*********************************************************************** * SetPolyFillMode (GDI32.@) */ INT WINAPI SetPolyFillMode( HDC hdc, INT mode ) { INT ret; DC *dc; if ((mode <= 0) || (mode > POLYFILL_LAST)) { SetLastError(ERROR_INVALID_PARAMETER); return 0; } if (!(dc = DC_GetDCPtr( hdc ))) return 0; if (dc->funcs->pSetPolyFillMode) ret = dc->funcs->pSetPolyFillMode( dc, mode ); else { ret = dc->polyFillMode; dc->polyFillMode = mode; } GDI_ReleaseObj( hdc ); return ret; } /*********************************************************************** * SetStretchBltMode (GDI32.@) */ INT WINAPI SetStretchBltMode( HDC hdc, INT mode ) { INT ret; DC *dc; if ((mode <= 0) || (mode > MAXSTRETCHBLTMODE)) { SetLastError(ERROR_INVALID_PARAMETER); return 0; } if (!(dc = DC_GetDCPtr( hdc ))) return 0; if (dc->funcs->pSetStretchBltMode) ret = dc->funcs->pSetStretchBltMode( dc, mode ); else { ret = dc->stretchBltMode; dc->stretchBltMode = mode; } GDI_ReleaseObj( hdc ); return ret; } /*********************************************************************** * GetBkColor (GDI32.@) */ COLORREF WINAPI GetBkColor( HDC hdc ) { COLORREF ret = 0; DC * dc = DC_GetDCPtr( hdc ); if (dc) { ret = dc->backgroundColor; GDI_ReleaseObj( hdc ); } return ret; } /*********************************************************************** * GetBkMode (GDI32.@) */ INT WINAPI GetBkMode( HDC hdc ) { INT ret = 0; DC * dc = DC_GetDCPtr( hdc ); if (dc) { ret = dc->backgroundMode; GDI_ReleaseObj( hdc ); } return ret; } /*********************************************************************** * GetMapMode (GDI32.@) */ INT WINAPI GetMapMode( HDC hdc ) { INT ret = 0; DC * dc = DC_GetDCPtr( hdc ); if (dc) { ret = dc->MapMode; GDI_ReleaseObj( hdc ); } return ret; } /*********************************************************************** * GetPolyFillMode (GDI32.@) */ INT WINAPI GetPolyFillMode( HDC hdc ) { INT ret = 0; DC * dc = DC_GetDCPtr( hdc ); if (dc) { ret = dc->polyFillMode; GDI_ReleaseObj( hdc ); } return ret; } /*********************************************************************** * GetROP2 (GDI32.@) */ INT WINAPI GetROP2( HDC hdc ) { INT ret = 0; DC * dc = DC_GetDCPtr( hdc ); if (dc) { ret = dc->ROPmode; GDI_ReleaseObj( hdc ); } return ret; } /*********************************************************************** * GetStretchBltMode (GDI32.@) */ INT WINAPI GetStretchBltMode( HDC hdc ) { INT ret = 0; DC * dc = DC_GetDCPtr( hdc ); if (dc) { ret = dc->stretchBltMode; GDI_ReleaseObj( hdc ); } return ret; } /*********************************************************************** * GetTextColor (GDI32.@) */ COLORREF WINAPI GetTextColor( HDC hdc ) { COLORREF ret = 0; DC * dc = DC_GetDCPtr( hdc ); if (dc) { ret = dc->textColor; GDI_ReleaseObj( hdc ); } return ret; } /*********************************************************************** * GetTextAlign (GDI32.@) */ UINT WINAPI GetTextAlign( HDC hdc ) { UINT ret = 0; DC * dc = DC_GetDCPtr( hdc ); if (dc) { ret = dc->textAlign; GDI_ReleaseObj( hdc ); } return ret; } /*********************************************************************** * GetArcDirection (GDI32.@) */ INT WINAPI GetArcDirection( HDC hdc ) { INT ret = 0; DC * dc = DC_GetDCPtr( hdc ); if (dc) { ret = dc->ArcDirection; GDI_ReleaseObj( hdc ); } return ret; } /*********************************************************************** * GetGraphicsMode (GDI32.@) */ INT WINAPI GetGraphicsMode( HDC hdc ) { INT ret = 0; DC * dc = DC_GetDCPtr( hdc ); if (dc) { ret = dc->GraphicsMode; GDI_ReleaseObj( hdc ); } return ret; } /*********************************************************************** * GetBrushOrgEx (GDI32.@) */ BOOL WINAPI GetBrushOrgEx( HDC hdc, LPPOINT pt ) { DC * dc = DC_GetDCPtr( hdc ); if (!dc) return FALSE; pt->x = dc->brushOrgX; pt->y = dc->brushOrgY; GDI_ReleaseObj( hdc ); return TRUE; } /*********************************************************************** * GetCurrentPositionEx (GDI32.@) */ BOOL WINAPI GetCurrentPositionEx( HDC hdc, LPPOINT pt ) { DC * dc = DC_GetDCPtr( hdc ); if (!dc) return FALSE; pt->x = dc->CursPosX; pt->y = dc->CursPosY; GDI_ReleaseObj( hdc ); return TRUE; } /*********************************************************************** * GetViewportExtEx (GDI32.@) */ BOOL WINAPI GetViewportExtEx( HDC hdc, LPSIZE size ) { DC * dc = DC_GetDCPtr( hdc ); if (!dc) return FALSE; size->cx = dc->vportExtX; size->cy = dc->vportExtY; GDI_ReleaseObj( hdc ); return TRUE; } /*********************************************************************** * GetViewportOrgEx (GDI32.@) */ BOOL WINAPI GetViewportOrgEx( HDC hdc, LPPOINT pt ) { DC * dc = DC_GetDCPtr( hdc ); if (!dc) return FALSE; pt->x = dc->vportOrgX; pt->y = dc->vportOrgY; GDI_ReleaseObj( hdc ); return TRUE; } /*********************************************************************** * GetWindowExtEx (GDI32.@) */ BOOL WINAPI GetWindowExtEx( HDC hdc, LPSIZE size ) { DC * dc = DC_GetDCPtr( hdc ); if (!dc) return FALSE; size->cx = dc->wndExtX; size->cy = dc->wndExtY; GDI_ReleaseObj( hdc ); return TRUE; } /*********************************************************************** * GetWindowOrgEx (GDI32.@) */ BOOL WINAPI GetWindowOrgEx( HDC hdc, LPPOINT pt ) { DC * dc = DC_GetDCPtr( hdc ); if (!dc) return FALSE; pt->x = dc->wndOrgX; pt->y = dc->wndOrgY; GDI_ReleaseObj( hdc ); return TRUE; } /**** 16-bit functions ****/ /*********************************************************************** * SetBkMode (GDI.2) */ INT16 WINAPI SetBkMode16( HDC16 hdc, INT16 mode ) { return SetBkMode( hdc, mode ); } /*********************************************************************** * SetROP2 (GDI.4) */ INT16 WINAPI SetROP216( HDC16 hdc, INT16 mode ) { return SetROP2( hdc, mode ); } /*********************************************************************** * SetRelAbs (GDI.5) */ INT16 WINAPI SetRelAbs16( HDC16 hdc, INT16 mode ) { return SetRelAbs( hdc, mode ); } /*********************************************************************** * SetPolyFillMode (GDI.6) */ INT16 WINAPI SetPolyFillMode16( HDC16 hdc, INT16 mode ) { return SetPolyFillMode( hdc, mode ); } /*********************************************************************** * SetStretchBltMode (GDI.7) */ INT16 WINAPI SetStretchBltMode16( HDC16 hdc, INT16 mode ) { return SetStretchBltMode( hdc, mode ); } /*********************************************************************** * GetBkColor (GDI.75) */ COLORREF WINAPI GetBkColor16( HDC16 hdc ) { return GetBkColor( hdc ); } /*********************************************************************** * GetBkMode (GDI.76) */ INT16 WINAPI GetBkMode16( HDC16 hdc ) { return GetBkMode( hdc ); } /*********************************************************************** * GetCurrentPosition (GDI.78) */ DWORD WINAPI GetCurrentPosition16( HDC16 hdc ) { POINT pt32; if (!GetCurrentPositionEx( hdc, &pt32 )) return 0; return MAKELONG( pt32.x, pt32.y ); } /*********************************************************************** * GetMapMode (GDI.81) */ INT16 WINAPI GetMapMode16( HDC16 hdc ) { return GetMapMode( hdc ); } /*********************************************************************** * GetPolyFillMode (GDI.84) */ INT16 WINAPI GetPolyFillMode16( HDC16 hdc ) { return GetPolyFillMode( hdc ); } /*********************************************************************** * GetROP2 (GDI.85) */ INT16 WINAPI GetROP216( HDC16 hdc ) { return GetROP2( hdc ); } /*********************************************************************** * GetRelAbs (GDI.86) */ INT16 WINAPI GetRelAbs16( HDC16 hdc ) { return GetRelAbs( hdc, 0 ); } /*********************************************************************** * GetStretchBltMode (GDI.88) */ INT16 WINAPI GetStretchBltMode16( HDC16 hdc ) { return GetStretchBltMode( hdc ); } /*********************************************************************** * GetTextColor (GDI.90) */ COLORREF WINAPI GetTextColor16( HDC16 hdc ) { return GetTextColor( hdc ); } /*********************************************************************** * GetViewportExt (GDI.94) */ DWORD WINAPI GetViewportExt16( HDC16 hdc ) { SIZE size; if (!GetViewportExtEx( hdc, &size )) return 0; return MAKELONG( size.cx, size.cy ); } /*********************************************************************** * GetViewportOrg (GDI.95) */ DWORD WINAPI GetViewportOrg16( HDC16 hdc ) { POINT pt; if (!GetViewportOrgEx( hdc, &pt )) return 0; return MAKELONG( pt.x, pt.y ); } /*********************************************************************** * GetWindowExt (GDI.96) */ DWORD WINAPI GetWindowExt16( HDC16 hdc ) { SIZE size; if (!GetWindowExtEx( hdc, &size )) return 0; return MAKELONG( size.cx, size.cy ); } /*********************************************************************** * GetWindowOrg (GDI.97) */ DWORD WINAPI GetWindowOrg16( HDC16 hdc ) { POINT pt; if (!GetWindowOrgEx( hdc, &pt )) return 0; return MAKELONG( pt.x, pt.y ); } /*********************************************************************** * InquireVisRgn (GDI.131) */ HRGN16 WINAPI InquireVisRgn16( HDC16 hdc ) { HRGN16 ret = 0; DC * dc = DC_GetDCPtr( hdc ); if (dc) { ret = dc->hVisRgn; GDI_ReleaseObj( hdc ); } return ret; } /*********************************************************************** * GetBrushOrg (GDI.149) */ DWORD WINAPI GetBrushOrg16( HDC16 hdc ) { POINT pt; if (!GetBrushOrgEx( hdc, &pt )) return 0; return MAKELONG( pt.x, pt.y ); } /*********************************************************************** * GetClipRgn (GDI.173) */ HRGN16 WINAPI GetClipRgn16( HDC16 hdc ) { HRGN16 ret = 0; DC * dc = DC_GetDCPtr( hdc ); if (dc) { ret = dc->hClipRgn; GDI_ReleaseObj( hdc ); } return ret; } /*********************************************************************** * GetTextAlign (GDI.345) */ UINT16 WINAPI GetTextAlign16( HDC16 hdc ) { return GetTextAlign( hdc ); } /*********************************************************************** * GetCurLogFont (GDI.411) */ HFONT16 WINAPI GetCurLogFont16( HDC16 hdc ) { HFONT16 ret = 0; DC * dc = DC_GetDCPtr( hdc ); if (dc) { ret = dc->hFont; GDI_ReleaseObj( hdc ); } return ret; } /*********************************************************************** * GetBrushOrgEx (GDI.469) */ BOOL16 WINAPI GetBrushOrgEx16( HDC16 hdc, LPPOINT16 pt ) { POINT pt32; if (!GetBrushOrgEx( hdc, &pt32 )) return FALSE; pt->x = pt32.x; pt->y = pt32.y; return TRUE; } /*********************************************************************** * GetCurrentPositionEx (GDI.470) */ BOOL16 WINAPI GetCurrentPositionEx16( HDC16 hdc, LPPOINT16 pt ) { POINT pt32; if (!GetCurrentPositionEx( hdc, &pt32 )) return FALSE; pt->x = pt32.x; pt->y = pt32.y; return TRUE; } /*********************************************************************** * GetViewportExtEx (GDI.472) */ BOOL16 WINAPI GetViewportExtEx16( HDC16 hdc, LPSIZE16 size ) { SIZE size32; if (!GetViewportExtEx( hdc, &size32 )) return FALSE; size->cx = size32.cx; size->cy = size32.cy; return TRUE; } /*********************************************************************** * GetViewportOrgEx (GDI.473) */ BOOL16 WINAPI GetViewportOrgEx16( HDC16 hdc, LPPOINT16 pt ) { POINT pt32; if (!GetViewportOrgEx( hdc, &pt32 )) return FALSE; pt->x = pt32.x; pt->y = pt32.y; return TRUE; } /*********************************************************************** * GetWindowExtEx (GDI.474) */ BOOL16 WINAPI GetWindowExtEx16( HDC16 hdc, LPSIZE16 size ) { SIZE size32; if (!GetWindowExtEx( hdc, &size32 )) return FALSE; size->cx = size32.cx; size->cy = size32.cy; return TRUE; } /*********************************************************************** * GetWindowOrgEx (GDI.475) */ BOOL16 WINAPI GetWindowOrgEx16( HDC16 hdc, LPPOINT16 pt ) { POINT pt32; if (!GetWindowOrgEx( hdc, &pt32 )) return FALSE; pt->x = pt32.x; pt->y = pt32.y; return TRUE; } /*********************************************************************** * GetArcDirection (GDI.524) */ INT16 WINAPI GetArcDirection16( HDC16 hdc ) { return GetArcDirection( hdc ); }