Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
16ff6689
Commit
16ff6689
authored
Nov 05, 2003
by
Ulrich Czekalla
Committed by
Alexandre Julliard
Nov 05, 2003
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Implemented SetDCPenColor and SetDCBrushColor.
parent
d48f3b60
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
130 additions
and
6 deletions
+130
-6
driver.c
dlls/gdi/driver.c
+2
-0
init.c
dlls/gdi/enhmfdrv/init.c
+2
-0
gdi32.spec
dlls/gdi/gdi32.spec
+1
-0
init.c
dlls/gdi/mfdrv/init.c
+2
-0
x11drv.spec
dlls/x11drv/x11drv.spec
+2
-0
brush.c
graphics/x11drv/brush.c
+14
-2
pen.c
graphics/x11drv/pen.c
+14
-0
gdi.h
include/gdi.h
+4
-0
wingdi.h
include/wingdi.h
+3
-1
dc.c
objects/dc.c
+82
-3
gdiobj.c
objects/gdiobj.c
+4
-0
No files found.
dlls/gdi/driver.c
View file @
16ff6689
...
...
@@ -157,7 +157,9 @@ static struct graphics_driver *create_driver( HMODULE module )
GET_FUNC
(
SetBitmapBits
);
GET_FUNC
(
SetBkColor
);
GET_FUNC
(
SetBkMode
);
GET_FUNC
(
SetDCBrushColor
);
GET_FUNC
(
SetDCOrg
);
GET_FUNC
(
SetDCPenColor
);
GET_FUNC
(
SetDIBColorTable
);
GET_FUNC
(
SetDIBits
);
GET_FUNC
(
SetDIBitsToDevice
);
...
...
dlls/gdi/enhmfdrv/init.c
View file @
16ff6689
...
...
@@ -116,7 +116,9 @@ static const DC_FUNCTIONS EMFDRV_Funcs =
NULL
,
/* pSetBitmapBits */
EMFDRV_SetBkColor
,
/* pSetBkColor */
EMFDRV_SetBkMode
,
/* pSetBkMode */
NULL
,
/* pSetDCBrushColor */
NULL
,
/* pSetDCOrg */
NULL
,
/* pSetDCPenColor */
NULL
,
/* pSetDIBColorTable */
NULL
,
/* pSetDIBits */
EMFDRV_SetDIBitsToDevice
,
/* pSetDIBitsToDevice */
...
...
dlls/gdi/gdi32.spec
View file @
16ff6689
...
...
@@ -350,6 +350,7 @@
@ stdcall SetColorAdjustment(long ptr)
@ stdcall SetColorSpace(long long)
@ stdcall SetDCBrushColor(long long)
@ stdcall SetDCPenColor(long long)
@ stdcall SetDIBColorTable(long long long ptr)
@ stdcall SetDIBits(long long long long ptr ptr long)
@ stdcall SetDIBitsToDevice(long long long long long long long long long ptr ptr long)
...
...
dlls/gdi/mfdrv/init.c
View file @
16ff6689
...
...
@@ -117,7 +117,9 @@ static const DC_FUNCTIONS MFDRV_Funcs =
NULL
,
/* pSetBitmapBits */
MFDRV_SetBkColor
,
/* pSetBkColor */
MFDRV_SetBkMode
,
/* pSetBkMode */
NULL
,
/* pSetDCBrushColor*/
NULL
,
/* pSetDCOrg */
NULL
,
/* pSetDCPenColor*/
NULL
,
/* pSetDIBColorTable */
NULL
,
/* pSetDIBits */
MFDRV_SetDIBitsToDevice
,
/* pSetDIBitsToDevice */
...
...
dlls/x11drv/x11drv.spec
View file @
16ff6689
...
...
@@ -46,7 +46,9 @@
@ cdecl SelectPen(ptr long) X11DRV_SelectPen
@ cdecl SetBitmapBits(long ptr long) X11DRV_SetBitmapBits
@ cdecl SetBkColor(ptr long) X11DRV_SetBkColor
@ cdecl SetDCBrushColor(ptr long) X11DRV_SetDCBrushColor
@ cdecl SetDCOrg(ptr long long) X11DRV_SetDCOrg
@ cdecl SetDCPenColor(ptr long) X11DRV_SetDCPenColor
@ cdecl SetDIBColorTable(ptr long long ptr) X11DRV_SetDIBColorTable
@ cdecl SetDIBits(ptr long long long ptr ptr long) X11DRV_SetDIBits
@ cdecl SetDIBitsToDevice(ptr long long long long long long long long ptr ptr long) X11DRV_SetDIBitsToDevice
...
...
graphics/x11drv/brush.c
View file @
16ff6689
...
...
@@ -218,8 +218,6 @@ static BOOL BRUSH_SelectPatternBrush( X11DRV_PDEVICE *physDev, HBITMAP hbitmap )
}
/***********************************************************************
* SelectBrush (X11DRV.@)
*/
...
...
@@ -239,6 +237,8 @@ HBRUSH X11DRV_SelectBrush( X11DRV_PDEVICE *physDev, HBRUSH hbrush )
physDev
->
brush
.
pixmap
=
0
;
}
physDev
->
brush
.
style
=
logbrush
.
lbStyle
;
if
(
hbrush
==
GetStockObject
(
DC_BRUSH
))
logbrush
.
lbColor
=
physDev
->
dc
->
dcBrushColor
;
switch
(
logbrush
.
lbStyle
)
{
...
...
@@ -282,3 +282,15 @@ HBRUSH X11DRV_SelectBrush( X11DRV_PDEVICE *physDev, HBRUSH hbrush )
}
return
hbrush
;
}
/***********************************************************************
* SetDCBrushColor (X11DRV.@)
*/
COLORREF
X11DRV_SetDCBrushColor
(
X11DRV_PDEVICE
*
physDev
,
COLORREF
crColor
)
{
if
(
GetCurrentObject
(
physDev
->
hdc
,
OBJ_BRUSH
)
==
GetStockObject
(
DC_BRUSH
))
BRUSH_SelectSolidBrush
(
physDev
,
crColor
);
return
crColor
;
}
graphics/x11drv/pen.c
View file @
16ff6689
...
...
@@ -50,6 +50,8 @@ HPEN X11DRV_SelectPen( X11DRV_PDEVICE *physDev, HPEN hpen )
dc
->
xformWorld2Vport
.
eM11
);
if
(
physDev
->
pen
.
width
<
0
)
physDev
->
pen
.
width
=
-
physDev
->
pen
.
width
;
if
(
physDev
->
pen
.
width
==
1
)
physDev
->
pen
.
width
=
0
;
/* Faster */
if
(
hpen
==
GetStockObject
(
DC_PEN
))
logpen
.
lopnColor
=
dc
->
dcPenColor
;
physDev
->
pen
.
pixel
=
X11DRV_PALETTE_ToPhysical
(
physDev
,
logpen
.
lopnColor
);
switch
(
logpen
.
lopnStyle
&
PS_STYLE_MASK
)
{
...
...
@@ -79,3 +81,15 @@ HPEN X11DRV_SelectPen( X11DRV_PDEVICE *physDev, HPEN hpen )
}
return
hpen
;
}
/***********************************************************************
* SetDCPenColor (X11DRV.@)
*/
COLORREF
X11DRV_SetDCPenColor
(
X11DRV_PDEVICE
*
physDev
,
COLORREF
crColor
)
{
if
(
GetCurrentObject
(
physDev
->
hdc
,
OBJ_PEN
)
==
GetStockObject
(
DC_PEN
))
physDev
->
pen
.
pixel
=
X11DRV_PALETTE_ToPhysical
(
physDev
,
crColor
);
return
crColor
;
}
include/gdi.h
View file @
16ff6689
...
...
@@ -139,6 +139,8 @@ typedef struct tagDC
WORD
backgroundMode
;
COLORREF
backgroundColor
;
COLORREF
textColor
;
COLORREF
dcBrushColor
;
COLORREF
dcPenColor
;
short
brushOrgX
;
short
brushOrgY
;
...
...
@@ -256,7 +258,9 @@ typedef struct tagDC_FUNCS
LONG
(
*
pSetBitmapBits
)(
HBITMAP
,
const
void
*
,
LONG
);
COLORREF
(
*
pSetBkColor
)(
PHYSDEV
,
COLORREF
);
INT
(
*
pSetBkMode
)(
PHYSDEV
,
INT
);
COLORREF
(
*
pSetDCBrushColor
)(
PHYSDEV
,
COLORREF
);
DWORD
(
*
pSetDCOrg
)(
PHYSDEV
,
INT
,
INT
);
COLORREF
(
*
pSetDCPenColor
)(
PHYSDEV
,
COLORREF
);
UINT
(
*
pSetDIBColorTable
)(
PHYSDEV
,
UINT
,
UINT
,
const
RGBQUAD
*
);
INT
(
*
pSetDIBits
)(
PHYSDEV
,
HBITMAP
,
UINT
,
UINT
,
LPCVOID
,
const
BITMAPINFO
*
,
UINT
);
INT
(
*
pSetDIBitsToDevice
)(
PHYSDEV
,
INT
,
INT
,
DWORD
,
DWORD
,
INT
,
INT
,
UINT
,
UINT
,
LPCVOID
,
...
...
include/wingdi.h
View file @
16ff6689
...
...
@@ -1830,8 +1830,10 @@ typedef struct
#define DEFAULT_PALETTE 15
#define SYSTEM_FIXED_FONT 16
#define DEFAULT_GUI_FONT 17
#define DC_BRUSH 18
#define DC_PEN 19
#define STOCK_LAST 1
7
#define STOCK_LAST 1
9
#define CLR_INVALID 0xffffffff
/* Metafile header structure */
...
...
objects/dc.c
View file @
16ff6689
...
...
@@ -92,6 +92,8 @@ DC *DC_AllocDC( const DC_FUNCTIONS *funcs, WORD magic )
dc
->
relAbsMode
=
ABSOLUTE
;
dc
->
backgroundMode
=
OPAQUE
;
dc
->
backgroundColor
=
RGB
(
255
,
255
,
255
);
dc
->
dcBrushColor
=
RGB
(
255
,
255
,
255
);
dc
->
dcPenColor
=
RGB
(
0
,
0
,
0
);
dc
->
textColor
=
RGB
(
0
,
0
,
0
);
dc
->
brushOrgX
=
0
;
dc
->
brushOrgY
=
0
;
...
...
@@ -301,6 +303,8 @@ HDC WINAPI GetDCState( HDC hdc )
newdc
->
backgroundMode
=
dc
->
backgroundMode
;
newdc
->
backgroundColor
=
dc
->
backgroundColor
;
newdc
->
textColor
=
dc
->
textColor
;
newdc
->
dcBrushColor
=
dc
->
dcBrushColor
;
newdc
->
dcPenColor
=
dc
->
dcPenColor
;
newdc
->
brushOrgX
=
dc
->
brushOrgX
;
newdc
->
brushOrgY
=
dc
->
brushOrgY
;
newdc
->
textAlign
=
dc
->
textAlign
;
...
...
@@ -389,6 +393,8 @@ void WINAPI SetDCState( HDC hdc, HDC hdcs )
dc
->
backgroundMode
=
dcs
->
backgroundMode
;
dc
->
backgroundColor
=
dcs
->
backgroundColor
;
dc
->
textColor
=
dcs
->
textColor
;
dc
->
dcBrushColor
=
dcs
->
dcBrushColor
;
dc
->
dcPenColor
=
dcs
->
dcPenColor
;
dc
->
brushOrgX
=
dcs
->
brushOrgX
;
dc
->
brushOrgY
=
dcs
->
brushOrgY
;
dc
->
textAlign
=
dcs
->
textAlign
;
...
...
@@ -855,6 +861,8 @@ COLORREF WINAPI SetBkColor( HDC hdc, COLORREF color )
COLORREF
oldColor
;
DC
*
dc
=
DC_GetDCPtr
(
hdc
);
TRACE
(
"hdc=%p color=0x%08lx
\n
"
,
hdc
,
color
);
if
(
!
dc
)
return
CLR_INVALID
;
oldColor
=
dc
->
backgroundColor
;
if
(
dc
->
funcs
->
pSetBkColor
)
...
...
@@ -880,6 +888,8 @@ COLORREF WINAPI SetTextColor( HDC hdc, COLORREF color )
COLORREF
oldColor
;
DC
*
dc
=
DC_GetDCPtr
(
hdc
);
TRACE
(
" hdc=%p color=0x%08lx
\n
"
,
hdc
,
color
);
if
(
!
dc
)
return
CLR_INVALID
;
oldColor
=
dc
->
textColor
;
if
(
dc
->
funcs
->
pSetTextColor
)
...
...
@@ -904,6 +914,9 @@ UINT WINAPI SetTextAlign( HDC hdc, UINT align )
{
UINT
prevAlign
;
DC
*
dc
=
DC_GetDCPtr
(
hdc
);
TRACE
(
"hdc=%p align=%d
\n
"
,
hdc
,
align
);
if
(
!
dc
)
return
0x0
;
if
(
dc
->
funcs
->
pSetTextAlign
)
prevAlign
=
dc
->
funcs
->
pSetTextAlign
(
dc
->
physDev
,
align
);
...
...
@@ -1455,9 +1468,75 @@ DWORD WINAPI SetLayout(HDC hdc, DWORD layout)
*/
COLORREF
WINAPI
SetDCBrushColor
(
HDC
hdc
,
COLORREF
crColor
)
{
FIXME
(
"(%p, %08lx): stub
\n
"
,
hdc
,
crColor
);
SetLastError
(
ERROR_CALL_NOT_IMPLEMENTED
);
return
CLR_INVALID
;
DC
*
dc
;
COLORREF
oldClr
=
CLR_INVALID
;
TRACE
(
"hdc(%p) crColor(%08lx)
\n
"
,
hdc
,
crColor
);
dc
=
DC_GetDCPtr
(
hdc
);
if
(
dc
)
{
if
(
dc
->
funcs
->
pSetDCBrushColor
)
crColor
=
dc
->
funcs
->
pSetDCBrushColor
(
dc
->
physDev
,
crColor
);
else
if
(
dc
->
hBrush
==
GetStockObject
(
DC_BRUSH
))
{
/* If DC_BRUSH is selected, update driver pen color */
HBRUSH
hBrush
=
CreateSolidBrush
(
crColor
);
dc
->
funcs
->
pSelectBrush
(
dc
->
physDev
,
hBrush
);
DeleteObject
(
hBrush
);
}
if
(
crColor
!=
CLR_INVALID
)
{
oldClr
=
dc
->
dcBrushColor
;
dc
->
dcBrushColor
=
crColor
;
}
GDI_ReleaseObj
(
hdc
);
}
return
oldClr
;
}
/***********************************************************************
* SetDCPenColor (GDI32.@)
*
* Sets the current device context (DC) pen color to the specified
* color value. If the device cannot represent the specified color
* value, the color is set to the nearest physical color.
*
*/
COLORREF
WINAPI
SetDCPenColor
(
HDC
hdc
,
COLORREF
crColor
)
{
DC
*
dc
;
COLORREF
oldClr
=
CLR_INVALID
;
TRACE
(
"hdc(%p) crColor(%08lx)
\n
"
,
hdc
,
crColor
);
dc
=
DC_GetDCPtr
(
hdc
);
if
(
dc
)
{
if
(
dc
->
funcs
->
pSetDCPenColor
)
crColor
=
dc
->
funcs
->
pSetDCPenColor
(
dc
->
physDev
,
crColor
);
else
if
(
dc
->
hPen
==
GetStockObject
(
DC_PEN
))
{
/* If DC_PEN is selected, update the driver pen color */
LOGPEN
logpen
=
{
PS_SOLID
,
{
0
,
0
},
crColor
};
HPEN
hPen
=
CreatePenIndirect
(
&
logpen
);
dc
->
funcs
->
pSelectPen
(
dc
->
physDev
,
hPen
);
DeleteObject
(
hPen
);
}
if
(
crColor
!=
CLR_INVALID
)
{
oldClr
=
dc
->
dcPenColor
;
dc
->
dcPenColor
=
crColor
;
}
GDI_ReleaseObj
(
hdc
);
}
return
oldClr
;
}
/***********************************************************************
...
...
objects/gdiobj.c
View file @
16ff6689
...
...
@@ -61,6 +61,8 @@ static const LOGPEN WhitePen = { PS_SOLID, { 0, 0 }, RGB(255,255,255) };
static
const
LOGPEN
BlackPen
=
{
PS_SOLID
,
{
0
,
0
},
RGB
(
0
,
0
,
0
)
};
static
const
LOGPEN
NullPen
=
{
PS_NULL
,
{
0
,
0
},
0
};
static
const
LOGBRUSH
DCBrush
=
{
BS_SOLID
,
RGB
(
255
,
255
,
255
),
0
};
static
const
LOGPEN
DCPen
=
{
PS_SOLID
,
{
0
,
0
},
RGB
(
0
,
0
,
0
)
};
/* reserve one extra entry for the stock default bitmap */
/* this is what Windows does too */
...
...
@@ -619,6 +621,8 @@ BOOL GDI_Init(void)
stock_objects
[
SYSTEM_FIXED_FONT
]
=
create_stock_font
(
"SystemFixed"
,
&
deffonts
->
SystemFixedFont
,
hkey
);
stock_objects
[
DEFAULT_GUI_FONT
]
=
create_stock_font
(
"DefaultGui"
,
&
deffonts
->
DefaultGuiFont
,
hkey
);
stock_objects
[
DC_BRUSH
]
=
CreateBrushIndirect
(
&
DCBrush
);
stock_objects
[
DC_PEN
]
=
CreatePenIndirect
(
&
DCPen
);
/* clear the NOSYSTEM bit on all stock objects*/
for
(
i
=
0
;
i
<
NB_STOCK_OBJECTS
;
i
++
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment