Removed code support for dcattr, it was over kill. Fix display locks, take resource...
[reactos.git] / reactos / subsystems / win32 / win32k / objects / dcutil.c
1
2 #include <w32k.h>
3
4 #define NDEBUG
5 #include <debug.h>
6
7 static
8 VOID
9 CopytoUserDcAttr(PDC dc, PDC_ATTR Dc_Attr, FLONG Dirty)
10 {
11 Dc_Attr->hpen = dc->Dc_Attr.hpen;
12 Dc_Attr->hbrush = dc->Dc_Attr.hbrush;
13 Dc_Attr->hColorSpace = dc->Dc_Attr.hColorSpace;
14 Dc_Attr->hlfntNew = dc->Dc_Attr.hlfntNew;
15
16 Dc_Attr->jROP2 = dc->Dc_Attr.jROP2;
17 Dc_Attr->jFillMode = dc->Dc_Attr.jFillMode;
18 Dc_Attr->jStretchBltMode = dc->Dc_Attr.jStretchBltMode;
19 Dc_Attr->lRelAbs = dc->Dc_Attr.lRelAbs;
20 Dc_Attr->jBkMode = dc->Dc_Attr.jBkMode;
21
22 Dc_Attr->crBackgroundClr = dc->Dc_Attr.crBackgroundClr;
23 Dc_Attr->ulBackgroundClr = dc->Dc_Attr.ulBackgroundClr;
24 Dc_Attr->crForegroundClr = dc->Dc_Attr.crForegroundClr;
25 Dc_Attr->ulForegroundClr = dc->Dc_Attr.ulForegroundClr;
26
27 Dc_Attr->ulBrushClr = dc->Dc_Attr.ulBrushClr;
28 Dc_Attr->crBrushClr = dc->Dc_Attr.crBrushClr;
29
30 Dc_Attr->ulPenClr = dc->Dc_Attr.ulPenClr;
31 Dc_Attr->crPenClr = dc->Dc_Attr.crPenClr;
32
33 Dc_Attr->ptlBrushOrigin = dc->Dc_Attr.ptlBrushOrigin;
34
35 Dc_Attr->lTextAlign = dc->Dc_Attr.lTextAlign;
36 Dc_Attr->lTextExtra = dc->Dc_Attr.lTextExtra;
37 Dc_Attr->cBreak = dc->Dc_Attr.cBreak;
38 Dc_Attr->lBreakExtra = dc->Dc_Attr.lBreakExtra;
39 Dc_Attr->iMapMode = dc->Dc_Attr.iMapMode;
40 Dc_Attr->iGraphicsMode = dc->Dc_Attr.iGraphicsMode;
41
42 Dc_Attr->ptlCurrent = dc->Dc_Attr.ptlCurrent;
43 Dc_Attr->ptlWindowOrg = dc->Dc_Attr.ptlWindowOrg;
44 Dc_Attr->szlWindowExt = dc->Dc_Attr.szlWindowExt;
45 Dc_Attr->ptlViewportOrg = dc->Dc_Attr.ptlViewportOrg;
46 Dc_Attr->szlViewportExt = dc->Dc_Attr.szlViewportExt;
47
48 Dc_Attr->ulDirty_ = dc->Dc_Attr.ulDirty_; //Copy flags! We may have set them.
49
50 XForm2MatrixS( &Dc_Attr->mxWorldToDevice, &dc->w.xformWorld2Vport);
51 XForm2MatrixS( &Dc_Attr->mxDevicetoWorld, &dc->w.xformVport2World);
52 XForm2MatrixS( &Dc_Attr->mxWorldToPage, &dc->w.xformWorld2Wnd);
53 }
54
55
56 BOOL
57 FASTCALL
58 DCU_SyncDcAttrtoUser(PDC dc, FLONG Dirty)
59 {
60 PDC_ATTR Dc_Attr = dc->pDc_Attr;
61 if (!Dirty) return FALSE;
62
63 if (Dc_Attr == ((PDC_ATTR)&dc->Dc_Attr)) return TRUE; // No need to copy self.
64
65 if (!Dc_Attr) return FALSE;
66 else
67 CopytoUserDcAttr( dc, Dc_Attr, Dirty);
68 return TRUE;
69 }
70
71 BOOL
72 FASTCALL
73 DCU_SynchDcAttrtoUser(HDC hDC, FLONG Dirty)
74 {
75 PDC pDC = DC_LockDc ( hDC );
76 if (!pDC) return FALSE;
77 BOOL Ret = DCU_SyncDcAttrtoUser(pDC, Dirty);
78 DC_UnlockDc( pDC );
79 return Ret;
80 }
81
82