Implemented GetLayout and SetLayout.

oldstable
Rémi Assailly 2005-01-10 12:30:18 +00:00 committed by Alexandre Julliard
parent 2c845618a3
commit 9821beed52
2 changed files with 29 additions and 8 deletions

View File

@ -77,6 +77,7 @@ DC *DC_AllocDC( const DC_FUNCTIONS *funcs, WORD magic )
dc->vportExtY = 1; dc->vportExtY = 1;
dc->miterLimit = 10.0f; /* 10.0 is the default, from MSDN */ dc->miterLimit = 10.0f; /* 10.0 is the default, from MSDN */
dc->flags = 0; dc->flags = 0;
dc->layout = 0;
dc->hClipRgn = 0; dc->hClipRgn = 0;
dc->hVisRgn = 0; dc->hVisRgn = 0;
dc->hPen = GetStockObject( BLACK_PEN ); dc->hPen = GetStockObject( BLACK_PEN );
@ -290,6 +291,7 @@ HDC WINAPI GetDCState( HDC hdc )
TRACE("(%p): returning %p\n", hdc, handle ); TRACE("(%p): returning %p\n", hdc, handle );
newdc->flags = dc->flags | DC_SAVED; newdc->flags = dc->flags | DC_SAVED;
newdc->layout = dc->layout;
newdc->hPen = dc->hPen; newdc->hPen = dc->hPen;
newdc->hBrush = dc->hBrush; newdc->hBrush = dc->hBrush;
newdc->hFont = dc->hFont; newdc->hFont = dc->hFont;
@ -383,6 +385,7 @@ void WINAPI SetDCState( HDC hdc, HDC hdcs )
TRACE("%p %p\n", hdc, hdcs ); TRACE("%p %p\n", hdc, hdcs );
dc->flags = dcs->flags & ~(DC_SAVED | DC_DIRTY); dc->flags = dcs->flags & ~(DC_SAVED | DC_DIRTY);
dc->layout = dcs->layout;
dc->hDevice = dcs->hDevice; dc->hDevice = dcs->hDevice;
dc->ROPmode = dcs->ROPmode; dc->ROPmode = dcs->ROPmode;
dc->polyFillMode = dcs->polyFillMode; dc->polyFillMode = dcs->polyFillMode;
@ -1872,28 +1875,45 @@ HRGN16 WINAPI GetClipRgn16( HDC16 hdc )
* GetLayout (GDI32.@) * GetLayout (GDI32.@)
* *
* Gets left->right or right->left text layout flags of a dc. * Gets left->right or right->left text layout flags of a dc.
* win98 just returns 0 and sets ERROR_CALL_NOT_IMPLEMENTED so we do the same
* *
*/ */
DWORD WINAPI GetLayout(HDC hdc) DWORD WINAPI GetLayout(HDC hdc)
{ {
FIXME("(%p): stub\n", hdc); DWORD layout = GDI_ERROR;
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
return 0; DC * dc = DC_GetDCPtr( hdc );
if (dc)
{
layout = dc->layout;
GDI_ReleaseObj( hdc );
}
TRACE("hdc : %p, layout : %08lx\n", hdc, layout);
return layout;
} }
/*********************************************************************** /***********************************************************************
* SetLayout (GDI32.@) * SetLayout (GDI32.@)
* *
* Sets left->right or right->left text layout flags of a dc. * Sets left->right or right->left text layout flags of a dc.
* win98 just returns 0 and sets ERROR_CALL_NOT_IMPLEMENTED so we do the same
* *
*/ */
DWORD WINAPI SetLayout(HDC hdc, DWORD layout) DWORD WINAPI SetLayout(HDC hdc, DWORD layout)
{ {
FIXME("(%p,%08lx): stub\n", hdc, layout); DWORD oldlayout = GDI_ERROR;
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
return 0; DC * dc = DC_GetDCPtr( hdc );
if (dc)
{
oldlayout = dc->layout;
dc->layout = layout;
GDI_ReleaseObj( hdc );
}
TRACE("hdc : %p, old layout : %08lx, new layout : %08lx\n", hdc, oldlayout, layout);
return oldlayout;
} }
/*********************************************************************** /***********************************************************************

View File

@ -218,6 +218,7 @@ typedef struct tagDC
FLOAT miterLimit; FLOAT miterLimit;
int flags; int flags;
DWORD layout;
HRGN hClipRgn; /* Clip region (may be 0) */ HRGN hClipRgn; /* Clip region (may be 0) */
HRGN hVisRgn; /* Visible region (must never be 0) */ HRGN hVisRgn; /* Visible region (must never be 0) */
HPEN hPen; HPEN hPen;