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
b89525fb
Commit
b89525fb
authored
Jan 18, 2004
by
Alexandre Julliard
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Removed the bitsPerPixel field in the generic DC structure, and leave
it up to the graphics driver to define it if necessary.
parent
bc624583
Hide whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
68 additions
and
84 deletions
+68
-84
dc.c
dlls/ttydrv/dc.c
+0
-2
init.c
dlls/wineps/init.c
+0
-2
bitblt.c
dlls/x11drv/bitblt.c
+20
-26
bitmap.c
dlls/x11drv/bitmap.c
+2
-2
brush.c
dlls/x11drv/brush.c
+5
-8
dib.c
dlls/x11drv/dib.c
+3
-4
graphics.c
dlls/x11drv/graphics.c
+1
-2
init.c
dlls/x11drv/init.c
+2
-1
palette.c
dlls/x11drv/palette.c
+2
-2
x11drv.h
dlls/x11drv/x11drv.h
+1
-0
xrender.c
dlls/x11drv/xrender.c
+8
-8
bitblt.c
graphics/bitblt.c
+4
-6
gdi.h
include/gdi.h
+0
-1
bitmap.c
objects/bitmap.c
+19
-14
dc.c
objects/dc.c
+1
-6
No files found.
dlls/ttydrv/dc.c
View file @
b89525fb
...
...
@@ -65,8 +65,6 @@ BOOL TTYDRV_DC_CreateDC(DC *dc, TTYDRV_PDEVICE **pdev, LPCWSTR driver, LPCWSTR d
physDev
->
window
=
root_window
;
physDev
->
cellWidth
=
cell_width
;
physDev
->
cellHeight
=
cell_height
;
dc
->
bitsPerPixel
=
1
;
}
return
TRUE
;
...
...
dlls/wineps/init.c
View file @
b89525fb
...
...
@@ -358,8 +358,6 @@ BOOL PSDRV_CreateDC( DC *dc, PSDRV_PDEVICE **pdev, LPCWSTR driver, LPCWSTR devic
PSDRV_UpdateDevCaps
(
physDev
);
dc
->
hFont
=
PSDRV_DefaultFont
;
if
(
GetObjectType
(
dc
->
hSelf
)
!=
OBJ_MEMDC
)
dc
->
bitsPerPixel
=
physDev
->
pi
->
ppd
->
ColorDevice
?
8
:
1
;
return
TRUE
;
}
...
...
dlls/x11drv/bitblt.c
View file @
b89525fb
...
...
@@ -867,8 +867,6 @@ static int BITBLT_GetSrcAreaStretch( X11DRV_PDEVICE *physDevSrc, X11DRV_PDEVICE
RECT
*
visRectSrc
,
RECT
*
visRectDst
)
{
XImage
*
imageSrc
,
*
imageDst
;
DC
*
dcDst
=
physDevDst
->
dc
;
RECT
rectSrc
=
*
visRectSrc
;
RECT
rectDst
=
*
visRectDst
;
...
...
@@ -893,13 +891,13 @@ static int BITBLT_GetSrcAreaStretch( X11DRV_PDEVICE *physDevSrc, X11DRV_PDEVICE
visRectSrc
->
bottom
-
visRectSrc
->
top
,
AllPlanes
,
ZPixmap
);
imageDst
=
X11DRV_DIB_CreateXImage
(
rectDst
.
right
-
rectDst
.
left
,
rectDst
.
bottom
-
rectDst
.
top
,
dcDst
->
bitsPerPixel
);
rectDst
.
bottom
-
rectDst
.
top
,
physDevDst
->
depth
);
BITBLT_StretchImage
(
imageSrc
,
imageDst
,
widthSrc
,
heightSrc
,
widthDst
,
heightDst
,
&
rectSrc
,
&
rectDst
,
physDevDst
->
textPixel
,
dcDst
->
bitsPerPixel
!=
1
?
physDevDst
->
textPixel
,
physDevDst
->
depth
!=
1
?
physDevDst
->
backgroundPixel
:
physDevSrc
->
backgroundPixel
,
dcDst
->
stretchBltMode
);
GetStretchBltMode
(
physDevDst
->
hdc
)
);
XPutImage
(
gdi_display
,
pixmap
,
gc
,
imageDst
,
0
,
0
,
0
,
0
,
rectDst
.
right
-
rectDst
.
left
,
rectDst
.
bottom
-
rectDst
.
top
);
XDestroyImage
(
imageSrc
);
...
...
@@ -922,15 +920,13 @@ static int BITBLT_GetSrcArea( X11DRV_PDEVICE *physDevSrc, X11DRV_PDEVICE *physDe
int
exposures
=
0
;
INT
width
=
visRectSrc
->
right
-
visRectSrc
->
left
;
INT
height
=
visRectSrc
->
bottom
-
visRectSrc
->
top
;
DC
*
dcSrc
=
physDevSrc
->
dc
;
DC
*
dcDst
=
physDevDst
->
dc
;
if
(
dcSrc
->
bitsPerPixel
==
dcDst
->
bitsPerPixel
)
if
(
physDevSrc
->
depth
==
physDevDst
->
depth
)
{
if
(
!
X11DRV_PALETTE_XPixelToPalette
||
(
dcDst
->
bitsPerPixel
==
1
))
/* monochrome -> monochrome */
(
physDevDst
->
depth
==
1
))
/* monochrome -> monochrome */
{
if
(
dcDst
->
bitsPerPixel
==
1
)
if
(
physDevDst
->
depth
==
1
)
{
/* MSDN says if StretchBlt must convert a bitmap from monochrome
to color or vice versa, the forground and background color of
...
...
@@ -979,7 +975,7 @@ static int BITBLT_GetSrcArea( X11DRV_PDEVICE *physDevSrc, X11DRV_PDEVICE *physDe
}
else
{
if
(
dcSrc
->
bitsPerPixel
==
1
)
/* monochrome -> color */
if
(
physDevSrc
->
depth
==
1
)
/* monochrome -> color */
{
if
(
X11DRV_PALETTE_XPixelToPalette
)
{
...
...
@@ -1010,7 +1006,7 @@ static int BITBLT_GetSrcArea( X11DRV_PDEVICE *physDevSrc, X11DRV_PDEVICE *physDe
{
return
exposures
;
}
imageDst
=
X11DRV_DIB_CreateXImage
(
width
,
height
,
dcDst
->
bitsPerPixel
);
imageDst
=
X11DRV_DIB_CreateXImage
(
width
,
height
,
physDevDst
->
depth
);
if
(
!
imageDst
)
{
XDestroyImage
(
imageSrc
);
...
...
@@ -1042,7 +1038,7 @@ static int BITBLT_GetDstArea(X11DRV_PDEVICE *physDev, Pixmap pixmap, GC gc, RECT
INT
width
=
visRectDst
->
right
-
visRectDst
->
left
;
INT
height
=
visRectDst
->
bottom
-
visRectDst
->
top
;
if
(
!
X11DRV_PALETTE_XPixelToPalette
||
(
physDev
->
d
c
->
bitsPerPixel
==
1
)
||
if
(
!
X11DRV_PALETTE_XPixelToPalette
||
(
physDev
->
d
epth
==
1
)
||
(
X11DRV_PALETTE_PaletteFlags
&
X11DRV_PALETTE_VIRTUAL
)
)
{
XCopyArea
(
gdi_display
,
physDev
->
drawable
,
pixmap
,
gc
,
...
...
@@ -1096,7 +1092,7 @@ static int BITBLT_PutDstArea(X11DRV_PDEVICE *physDev, Pixmap pixmap, RECT *visRe
/* !X11DRV_PALETTE_PaletteToXPixel is _NOT_ enough */
if
(
!
X11DRV_PALETTE_PaletteToXPixel
||
(
physDev
->
d
c
->
bitsPerPixel
==
1
)
||
if
(
!
X11DRV_PALETTE_PaletteToXPixel
||
(
physDev
->
d
epth
==
1
)
||
(
X11DRV_PALETTE_PaletteFlags
&
X11DRV_PALETTE_VIRTUAL
)
)
{
XCopyArea
(
gdi_display
,
pixmap
,
physDev
->
drawable
,
physDev
->
gc
,
0
,
0
,
width
,
height
,
...
...
@@ -1321,7 +1317,7 @@ static BOOL BITBLT_InternalStretchBlt( X11DRV_PDEVICE *physDevDst, INT xDst, INT
{
case
BLACKNESS
:
/* 0x00 */
wine_tsx11_lock
();
if
((
dcDst
->
bitsPerPixel
==
1
)
||
!
X11DRV_PALETTE_PaletteToXPixel
)
if
((
physDevDst
->
depth
==
1
)
||
!
X11DRV_PALETTE_PaletteToXPixel
)
XSetFunction
(
gdi_display
,
physDevDst
->
gc
,
GXclear
);
else
{
...
...
@@ -1337,7 +1333,7 @@ static BOOL BITBLT_InternalStretchBlt( X11DRV_PDEVICE *physDevDst, INT xDst, INT
return
TRUE
;
case
DSTINVERT
:
/* 0x55 */
if
((
dcDst
->
bitsPerPixel
==
1
)
||
!
X11DRV_PALETTE_PaletteToXPixel
||
if
((
physDevDst
->
depth
==
1
)
||
!
X11DRV_PALETTE_PaletteToXPixel
||
!
perfect_graphics
())
{
wine_tsx11_lock
();
...
...
@@ -1394,7 +1390,7 @@ static BOOL BITBLT_InternalStretchBlt( X11DRV_PDEVICE *physDevDst, INT xDst, INT
return
TRUE
;
case
SRCCOPY
:
/* 0xcc */
if
(
dcSrc
->
bitsPerPixel
==
dcDst
->
bitsPerPixel
)
if
(
physDevSrc
->
depth
==
physDevDst
->
depth
)
{
wine_tsx11_lock
();
XSetFunction
(
gdi_display
,
physDevDst
->
gc
,
GXcopy
);
...
...
@@ -1409,7 +1405,7 @@ static BOOL BITBLT_InternalStretchBlt( X11DRV_PDEVICE *physDevDst, INT xDst, INT
wine_tsx11_unlock
();
return
TRUE
;
}
if
(
dcSrc
->
bitsPerPixel
==
1
)
if
(
physDevSrc
->
depth
==
1
)
{
wine_tsx11_lock
();
XSetBackground
(
gdi_display
,
physDevDst
->
gc
,
physDevDst
->
textPixel
);
...
...
@@ -1441,7 +1437,7 @@ static BOOL BITBLT_InternalStretchBlt( X11DRV_PDEVICE *physDevDst, INT xDst, INT
case
WHITENESS
:
/* 0xff */
wine_tsx11_lock
();
if
((
dcDst
->
bitsPerPixel
==
1
)
||
!
X11DRV_PALETTE_PaletteToXPixel
)
if
((
physDevDst
->
depth
==
1
)
||
!
X11DRV_PALETTE_PaletteToXPixel
)
XSetFunction
(
gdi_display
,
physDevDst
->
gc
,
GXset
);
else
{
...
...
@@ -1464,11 +1460,11 @@ static BOOL BITBLT_InternalStretchBlt( X11DRV_PDEVICE *physDevDst, INT xDst, INT
XSetSubwindowMode
(
gdi_display
,
tmpGC
,
IncludeInferiors
);
XSetGraphicsExposures
(
gdi_display
,
tmpGC
,
False
);
pixmaps
[
DST
]
=
XCreatePixmap
(
gdi_display
,
root_window
,
width
,
height
,
dcDst
->
bitsPerPixel
);
physDevDst
->
depth
);
if
(
useSrc
)
{
pixmaps
[
SRC
]
=
XCreatePixmap
(
gdi_display
,
root_window
,
width
,
height
,
dcDst
->
bitsPerPixel
);
physDevDst
->
depth
);
if
(
fStretch
)
BITBLT_GetSrcAreaStretch
(
physDevSrc
,
physDevDst
,
pixmaps
[
SRC
],
tmpGC
,
xSrc
,
ySrc
,
widthSrc
,
heightSrc
,
...
...
@@ -1494,8 +1490,7 @@ static BOOL BITBLT_InternalStretchBlt( X11DRV_PDEVICE *physDevDst, INT xDst, INT
case
OP_ARGS
(
SRC
,
TMP
):
if
(
!
pixmaps
[
TMP
])
pixmaps
[
TMP
]
=
XCreatePixmap
(
gdi_display
,
root_window
,
width
,
height
,
dcDst
->
bitsPerPixel
);
width
,
height
,
physDevDst
->
depth
);
/* fall through */
case
OP_ARGS
(
DST
,
SRC
):
case
OP_ARGS
(
SRC
,
DST
):
...
...
@@ -1510,8 +1505,7 @@ static BOOL BITBLT_InternalStretchBlt( X11DRV_PDEVICE *physDevDst, INT xDst, INT
case
OP_ARGS
(
PAT
,
TMP
):
if
(
!
pixmaps
[
TMP
]
&&
!
fNullBrush
)
pixmaps
[
TMP
]
=
XCreatePixmap
(
gdi_display
,
root_window
,
width
,
height
,
dcDst
->
bitsPerPixel
);
width
,
height
,
physDevDst
->
depth
);
/* fall through */
case
OP_ARGS
(
PAT
,
DST
):
case
OP_ARGS
(
PAT
,
SRC
):
...
...
@@ -1570,7 +1564,7 @@ BOOL X11DRV_BitBlt( X11DRV_PDEVICE *physDevDst, INT xDst, INT yDst,
sSrc
=
X11DRV_LockDIBSection
(
physDevSrc
,
DIB_Status_None
,
FALSE
);
if
((
sSrc
==
DIB_Status_AppMod
)
&&
(
rop
==
SRCCOPY
)
&&
(
dcSrc
->
bitsPerPixel
==
dcDst
->
bitsPerPixel
))
(
physDevSrc
->
depth
==
physDevDst
->
depth
))
{
POINT
pts
[
2
];
/* do everything ourselves; map coordinates */
...
...
dlls/x11drv/bitmap.c
View file @
b89525fb
...
...
@@ -74,7 +74,6 @@ BOOL X11DRV_BITMAP_Init(void)
HBITMAP
X11DRV_SelectBitmap
(
X11DRV_PDEVICE
*
physDev
,
HBITMAP
hbitmap
)
{
BITMAPOBJ
*
bmp
;
DC
*
dc
=
physDev
->
dc
;
if
(
!
(
bmp
=
GDI_GetObjPtr
(
hbitmap
,
BITMAP_MAGIC
)))
return
0
;
...
...
@@ -88,8 +87,9 @@ HBITMAP X11DRV_SelectBitmap( X11DRV_PDEVICE *physDev, HBITMAP hbitmap )
/* Change GC depth if needed */
if
(
dc
->
bitsPerPixel
!=
bmp
->
bitmap
.
bmBitsPixel
)
if
(
physDev
->
depth
!=
bmp
->
bitmap
.
bmBitsPixel
)
{
physDev
->
depth
=
bmp
->
bitmap
.
bmBitsPixel
;
wine_tsx11_lock
();
XFreeGC
(
gdi_display
,
physDev
->
gc
);
physDev
->
gc
=
XCreateGC
(
gdi_display
,
physDev
->
drawable
,
0
,
NULL
);
...
...
dlls/x11drv/brush.c
View file @
b89525fb
...
...
@@ -107,7 +107,7 @@ static XImage *ditherImage = NULL;
/***********************************************************************
* BRUSH_DitherColor
*/
static
Pixmap
BRUSH_DitherColor
(
DC
*
dc
,
COLORREF
color
)
static
Pixmap
BRUSH_DitherColor
(
COLORREF
color
)
{
static
COLORREF
prevColor
=
0xffffffff
;
unsigned
int
x
,
y
;
...
...
@@ -154,12 +154,10 @@ static Pixmap BRUSH_DitherColor( DC *dc, COLORREF color )
*/
static
void
BRUSH_SelectSolidBrush
(
X11DRV_PDEVICE
*
physDev
,
COLORREF
color
)
{
DC
*
dc
=
physDev
->
dc
;
if
((
dc
->
bitsPerPixel
>
1
)
&&
(
screen_depth
<=
8
)
&&
!
X11DRV_IsSolidColor
(
color
))
if
((
physDev
->
depth
>
1
)
&&
(
screen_depth
<=
8
)
&&
!
X11DRV_IsSolidColor
(
color
))
{
/* Dithered brush */
physDev
->
brush
.
pixmap
=
BRUSH_DitherColor
(
dc
,
color
);
physDev
->
brush
.
pixmap
=
BRUSH_DitherColor
(
color
);
physDev
->
brush
.
fillStyle
=
FillTiled
;
physDev
->
brush
.
pixel
=
0
;
}
...
...
@@ -178,14 +176,13 @@ static void BRUSH_SelectSolidBrush( X11DRV_PDEVICE *physDev, COLORREF color )
static
BOOL
BRUSH_SelectPatternBrush
(
X11DRV_PDEVICE
*
physDev
,
HBITMAP
hbitmap
)
{
BOOL
ret
=
FALSE
;
DC
*
dc
=
physDev
->
dc
;
BITMAPOBJ
*
bmp
=
(
BITMAPOBJ
*
)
GDI_GetObjPtr
(
hbitmap
,
BITMAP_MAGIC
);
if
(
!
bmp
)
return
FALSE
;
if
(
!
bmp
->
physBitmap
)
goto
done
;
wine_tsx11_lock
();
if
((
dc
->
bitsPerPixel
==
1
)
&&
(
bmp
->
bitmap
.
bmBitsPixel
!=
1
))
if
((
physDev
->
depth
==
1
)
&&
(
bmp
->
bitmap
.
bmBitsPixel
!=
1
))
{
/* Special case: a color pattern on a monochrome DC */
physDev
->
brush
.
pixmap
=
XCreatePixmap
(
gdi_display
,
root_window
,
8
,
8
,
1
);
...
...
@@ -241,7 +238,7 @@ HBRUSH X11DRV_SelectBrush( X11DRV_PDEVICE *physDev, HBRUSH hbrush )
}
physDev
->
brush
.
style
=
logbrush
.
lbStyle
;
if
(
hbrush
==
GetStockObject
(
DC_BRUSH
))
logbrush
.
lbColor
=
physDev
->
dc
->
dcBrushColor
;
logbrush
.
lbColor
=
GetDCBrushColor
(
physDev
->
hdc
)
;
switch
(
logbrush
.
lbStyle
)
{
...
...
dlls/x11drv/dib.c
View file @
b89525fb
...
...
@@ -3585,7 +3585,6 @@ INT X11DRV_SetDIBitsToDevice( X11DRV_PDEVICE *physDev, INT xDest, INT yDest, DWO
int
height
;
BOOL
top_down
;
POINT
pt
;
DC
*
dc
=
physDev
->
dc
;
if
(
DIB_GetBitmapInfo
(
&
info
->
bmiHeader
,
&
width
,
&
height
,
&
descr
.
infoBpp
,
&
descr
.
compression
)
==
-
1
)
...
...
@@ -3634,7 +3633,7 @@ INT X11DRV_SetDIBitsToDevice( X11DRV_PDEVICE *physDev, INT xDest, INT yDest, DWO
X11DRV_SetupGCForText
(
physDev
);
/* To have the correct colors */
wine_tsx11_lock
();
XSetFunction
(
gdi_display
,
physDev
->
gc
,
X11DRV_XROPfunction
[
dc
->
ROPmode
-
1
]);
XSetFunction
(
gdi_display
,
physDev
->
gc
,
X11DRV_XROPfunction
[
GetROP2
(
physDev
->
hdc
)
-
1
]);
wine_tsx11_unlock
();
switch
(
descr
.
infoBpp
)
...
...
@@ -3644,7 +3643,7 @@ INT X11DRV_SetDIBitsToDevice( X11DRV_PDEVICE *physDev, INT xDest, INT yDest, DWO
case
8
:
descr
.
colorMap
=
(
RGBQUAD
*
)
X11DRV_DIB_BuildColorMap
(
coloruse
==
DIB_PAL_COLORS
?
physDev
:
NULL
,
coloruse
,
dc
->
bitsPerPixel
,
info
,
&
descr
.
nColorMap
);
physDev
->
depth
,
info
,
&
descr
.
nColorMap
);
if
(
!
descr
.
colorMap
)
return
0
;
descr
.
rMask
=
descr
.
gMask
=
descr
.
bMask
=
0
;
break
;
...
...
@@ -3671,7 +3670,7 @@ INT X11DRV_SetDIBitsToDevice( X11DRV_PDEVICE *physDev, INT xDest, INT yDest, DWO
descr
.
palentry
=
NULL
;
descr
.
lines
=
top_down
?
-
lines
:
lines
;
descr
.
infoWidth
=
width
;
descr
.
depth
=
dc
->
bitsPerPixel
;
descr
.
depth
=
physDev
->
depth
;
descr
.
drawable
=
physDev
->
drawable
;
descr
.
gc
=
physDev
->
gc
;
descr
.
xSrc
=
xSrc
;
...
...
dlls/x11drv/graphics.c
View file @
b89525fb
...
...
@@ -946,7 +946,6 @@ X11DRV_GetPixel( X11DRV_PDEVICE *physDev, INT x, INT y )
int
pixel
;
POINT
pt
;
BOOL
memdc
=
(
GetObjectType
(
physDev
->
hdc
)
==
OBJ_MEMDC
);
DC
*
dc
=
physDev
->
dc
;
pt
.
x
=
x
;
pt
.
y
=
y
;
...
...
@@ -967,7 +966,7 @@ X11DRV_GetPixel( X11DRV_PDEVICE *physDev, INT x, INT y )
/* If we are reading from the screen, use a temporary copy */
/* to avoid a BadMatch error */
if
(
!
pixmap
)
pixmap
=
XCreatePixmap
(
gdi_display
,
root_window
,
1
,
1
,
dc
->
bitsPerPixel
);
1
,
1
,
physDev
->
depth
);
XCopyArea
(
gdi_display
,
physDev
->
drawable
,
pixmap
,
BITMAP_colorGC
,
physDev
->
org
.
x
+
pt
.
x
,
physDev
->
org
.
y
+
pt
.
y
,
1
,
1
,
0
,
0
);
image
=
XGetImage
(
gdi_display
,
pixmap
,
0
,
0
,
1
,
1
,
AllPlanes
,
ZPixmap
);
...
...
dlls/x11drv/init.c
View file @
b89525fb
...
...
@@ -105,11 +105,12 @@ BOOL X11DRV_CreateDC( DC *dc, X11DRV_PDEVICE **pdev, LPCWSTR driver, LPCWSTR dev
if
(
GetObjectType
(
dc
->
hSelf
)
==
OBJ_MEMDC
)
{
physDev
->
drawable
=
BITMAP_stock_pixmap
;
physDev
->
depth
=
1
;
}
else
{
physDev
->
drawable
=
root_window
;
dc
->
bitsPerPixel
=
screen_depth
;
physDev
->
depth
=
screen_depth
;
}
physDev
->
org
.
x
=
physDev
->
org
.
y
=
0
;
physDev
->
drawable_org
.
x
=
physDev
->
drawable_org
.
y
=
0
;
...
...
dlls/x11drv/palette.c
View file @
b89525fb
...
...
@@ -891,7 +891,7 @@ int X11DRV_PALETTE_ToPhysical( X11DRV_PDEVICE *physDev, COLORREF color )
/* fall through to RGB */
case
0
:
/* RGB */
if
(
dc
&&
(
dc
->
bitsPerPixel
==
1
)
)
if
(
physDev
&&
(
physDev
->
depth
==
1
)
)
{
GDI_ReleaseObj
(
hPal
);
return
(((
color
>>
16
)
&
0xff
)
+
...
...
@@ -944,7 +944,7 @@ int X11DRV_PALETTE_ToPhysical( X11DRV_PDEVICE *physDev, COLORREF color )
/* fall through to RGB */
case
0
:
/* RGB */
if
(
dc
&&
(
dc
->
bitsPerPixel
==
1
)
)
if
(
physDev
&&
(
physDev
->
depth
==
1
)
)
{
GDI_ReleaseObj
(
hPal
);
return
(((
color
>>
16
)
&
0xff
)
+
...
...
dlls/x11drv/x11drv.h
View file @
b89525fb
...
...
@@ -97,6 +97,7 @@ typedef struct
X_PHYSBRUSH
brush
;
int
backgroundPixel
;
int
textPixel
;
int
depth
;
/* bit depth of the DC */
int
exposures
;
/* count of graphics exposures operations */
XVisualInfo
*
visuals
[
MAX_PIXELFORMATS
];
int
used_visuals
;
...
...
dlls/x11drv/xrender.c
View file @
b89525fb
...
...
@@ -1009,7 +1009,7 @@ BOOL X11DRV_XRender_ExtTextOut( X11DRV_PDEVICE *physDev, INT x, INT y, UINT flag
X11DRV_LockDIBSection
(
physDev
,
DIB_Status_GdiMod
,
FALSE
);
if
(
dc
->
bitsPerPixel
==
1
)
{
if
(
physDev
->
depth
==
1
)
{
if
((
dc
->
textColor
&
0xffffff
)
==
0
)
{
textPixel
=
0
;
backgroundPixel
=
1
;
...
...
@@ -1136,7 +1136,7 @@ BOOL X11DRV_XRender_ExtTextOut( X11DRV_PDEVICE *physDev, INT x, INT y, UINT flag
wine_tsx11_lock
();
physDev
->
xrender
->
pict
=
pXRenderCreatePicture
(
gdi_display
,
physDev
->
drawable
,
(
dc
->
bitsPerPixel
==
1
)
?
(
physDev
->
depth
==
1
)
?
mono_format
:
screen_format
,
CPSubwindowMode
,
&
pa
);
wine_tsx11_unlock
();
...
...
@@ -1176,7 +1176,7 @@ BOOL X11DRV_XRender_ExtTextOut( X11DRV_PDEVICE *physDev, INT x, INT y, UINT flag
if
(
!
physDev
->
xrender
->
tile_xpm
)
{
XRenderPictureAttributes
pa
;
XRenderPictFormat
*
format
=
(
dc
->
bitsPerPixel
==
1
)
?
mono_format
:
screen_format
;
XRenderPictFormat
*
format
=
(
physDev
->
depth
==
1
)
?
mono_format
:
screen_format
;
wine_tsx11_lock
();
physDev
->
xrender
->
tile_xpm
=
XCreatePixmap
(
gdi_display
,
physDev
->
drawable
,
...
...
@@ -1195,7 +1195,7 @@ BOOL X11DRV_XRender_ExtTextOut( X11DRV_PDEVICE *physDev, INT x, INT y, UINT flag
}
if
(
dc
->
textColor
!=
physDev
->
xrender
->
lastTextColor
)
{
if
(
dc
->
bitsPerPixel
!=
1
)
{
if
(
physDev
->
depth
!=
1
)
{
/* Map 0 -- 0xff onto 0 -- 0xffff */
col
.
red
=
GetRValue
(
dc
->
textColor
);
col
.
red
|=
col
.
red
<<
8
;
...
...
@@ -1218,7 +1218,7 @@ BOOL X11DRV_XRender_ExtTextOut( X11DRV_PDEVICE *physDev, INT x, INT y, UINT flag
/* FIXME the mapping of Text/BkColor onto 1 or 0 needs investigation.
*/
if
((
dc
->
bitsPerPixel
==
1
)
&&
(
textPixel
==
0
))
if
((
physDev
->
depth
==
1
)
&&
(
textPixel
==
0
))
render_op
=
PictOpOutReverse
;
/* This gives us 'black' text */
}
...
...
@@ -1320,7 +1320,7 @@ BOOL X11DRV_XRender_ExtTextOut( X11DRV_PDEVICE *physDev, INT x, INT y, UINT flag
yoff
+=
entry
->
gis
[
glyphs
[
idx
]].
yOff
;
}
}
}
else
if
(
dc
->
bitsPerPixel
==
1
)
{
}
else
if
(
physDev
->
depth
==
1
)
{
for
(
idx
=
0
;
idx
<
count
;
idx
++
)
{
SharpGlyphGray
(
physDev
,
physDev
->
org
.
x
+
x
+
xoff
,
physDev
->
org
.
y
+
y
+
yoff
,
...
...
@@ -1406,10 +1406,10 @@ BOOL X11DRV_XRender_ExtTextOut( X11DRV_PDEVICE *physDev, INT x, INT y, UINT flag
TRACE
(
"XGetImage(%p, %x, %d, %d, %d, %d, %lx, %x) depth = %d rets %p
\n
"
,
gdi_display
,
(
int
)
physDev
->
drawable
,
image_x
,
image_y
,
image_w
,
image_h
,
AllPlanes
,
ZPixmap
,
dc
->
bitsPerPixel
,
image
);
physDev
->
depth
,
image
);
if
(
!
image
)
{
Pixmap
xpm
=
XCreatePixmap
(
gdi_display
,
physDev
->
drawable
,
image_w
,
image_h
,
dc
->
bitsPerPixel
);
physDev
->
depth
);
GC
gc
;
XGCValues
gcv
;
...
...
graphics/bitblt.c
View file @
b89525fb
...
...
@@ -60,9 +60,8 @@ BOOL WINAPI BitBlt( HDC hdcDst, INT xDst, INT yDst, INT width,
if
((
dcDst
=
DC_GetDCUpdate
(
hdcDst
)))
{
dcSrc
=
DC_GetDCPtr
(
hdcSrc
);
TRACE
(
"hdcSrc=%p %d,%d %d bpp->hdcDest=%p %d,%d %dx%dx%d rop=%06lx
\n
"
,
hdcSrc
,
xSrc
,
ySrc
,
dcSrc
?
dcSrc
->
bitsPerPixel
:
0
,
hdcDst
,
xDst
,
yDst
,
width
,
height
,
dcDst
->
bitsPerPixel
,
rop
);
TRACE
(
"hdcSrc=%p %d,%d -> hdcDest=%p %d,%d %dx%d rop=%06lx
\n
"
,
hdcSrc
,
xSrc
,
ySrc
,
hdcDst
,
xDst
,
yDst
,
width
,
height
,
rop
);
if
(
dcDst
->
funcs
->
pBitBlt
)
ret
=
dcDst
->
funcs
->
pBitBlt
(
dcDst
->
physDev
,
xDst
,
yDst
,
width
,
height
,
dcSrc
?
dcSrc
->
physDev
:
NULL
,
xSrc
,
ySrc
,
rop
);
...
...
@@ -91,10 +90,9 @@ BOOL WINAPI StretchBlt( HDC hdcDst, INT xDst, INT yDst,
{
dcSrc
=
DC_GetDCPtr
(
hdcSrc
);
TRACE
(
"%p %d,%d %dx%d
x%d -> %p %d,%d %dx
%dx%d rop=%06lx
\n
"
,
TRACE
(
"%p %d,%d %dx%d
-> %p %d,%d
%dx%d rop=%06lx
\n
"
,
hdcSrc
,
xSrc
,
ySrc
,
widthSrc
,
heightSrc
,
dcSrc
?
dcSrc
->
bitsPerPixel
:
0
,
hdcDst
,
xDst
,
yDst
,
widthDst
,
heightDst
,
dcDst
->
bitsPerPixel
,
rop
);
hdcDst
,
xDst
,
yDst
,
widthDst
,
heightDst
,
rop
);
if
(
dcSrc
)
{
if
(
dcDst
->
funcs
->
pStretchBlt
)
...
...
include/gdi.h
View file @
b89525fb
...
...
@@ -146,7 +146,6 @@ typedef struct tagDC
short
breakRem
;
/* breakTotalExtra % breakCount */
RECT
totalExtent
;
BYTE
bitsPerPixel
;
INT
MapMode
;
INT
GraphicsMode
;
/* Graphics mode */
...
...
objects/bitmap.c
View file @
b89525fb
...
...
@@ -173,12 +173,24 @@ HBITMAP WINAPI CreateCompatibleBitmap( HDC hdc, INT width, INT height)
if
((
width
>=
0x10000
)
||
(
height
>=
0x10000
))
{
FIXME
(
"got bad width %d or height %d, please look for reason
\n
"
,
width
,
height
);
}
else
{
/* MS doc says if width or height is 0, return 1-by-1 pixel, monochrome bitmap */
if
(
!
width
||
!
height
)
hbmpRet
=
CreateBitmap
(
1
,
1
,
1
,
1
,
NULL
);
else
hbmpRet
=
CreateBitmap
(
width
,
height
,
1
,
dc
->
bitsPerPixel
,
NULL
);
}
else
{
INT
planes
,
bpp
;
if
(
GDIMAGIC
(
dc
->
header
.
wMagic
)
!=
MEMORY_DC_MAGIC
)
{
planes
=
GetDeviceCaps
(
hdc
,
PLANES
);
bpp
=
GetDeviceCaps
(
hdc
,
BITSPIXEL
);
}
else
/* memory DC, get the depth of the bitmap */
{
BITMAPOBJ
*
bmp
=
GDI_GetObjPtr
(
dc
->
hBitmap
,
BITMAP_MAGIC
);
planes
=
bmp
->
bitmap
.
bmPlanes
;
bpp
=
bmp
->
bitmap
.
bmBitsPixel
;
GDI_ReleaseObj
(
dc
->
hBitmap
);
}
hbmpRet
=
CreateBitmap
(
width
,
height
,
planes
,
bpp
,
NULL
);
}
TRACE
(
"
\t\t
%p
\n
"
,
hbmpRet
);
GDI_ReleaseObj
(
hdc
);
...
...
@@ -433,14 +445,7 @@ static HGDIOBJ BITMAP_SelectObject( HGDIOBJ handle, void *obj, HDC hdc )
dc
->
totalExtent
.
bottom
=
bitmap
->
bitmap
.
bmHeight
;
dc
->
flags
&=
~
DC_DIRTY
;
SetRectRgn
(
dc
->
hVisRgn
,
0
,
0
,
bitmap
->
bitmap
.
bmWidth
,
bitmap
->
bitmap
.
bmHeight
);
CLIPPING_UpdateGCRegion
(
dc
);
if
(
dc
->
bitsPerPixel
!=
bitmap
->
bitmap
.
bmBitsPixel
)
{
/* depth changed, reinitialize the DC */
dc
->
bitsPerPixel
=
bitmap
->
bitmap
.
bmBitsPixel
;
DC_InitDC
(
dc
);
}
DC_InitDC
(
dc
);
}
else
ret
=
0
;
...
...
objects/dc.c
View file @
b89525fb
...
...
@@ -107,7 +107,6 @@ DC *DC_AllocDC( const DC_FUNCTIONS *funcs, WORD magic )
dc
->
totalExtent
.
top
=
0
;
dc
->
totalExtent
.
right
=
0
;
dc
->
totalExtent
.
bottom
=
0
;
dc
->
bitsPerPixel
=
1
;
dc
->
MapMode
=
MM_TEXT
;
dc
->
GraphicsMode
=
GM_COMPATIBLE
;
dc
->
pAbortProc
=
NULL
;
...
...
@@ -297,7 +296,6 @@ HDC WINAPI GetDCState( HDC hdc )
newdc
->
hDevice
=
dc
->
hDevice
;
newdc
->
hPalette
=
dc
->
hPalette
;
newdc
->
totalExtent
=
dc
->
totalExtent
;
newdc
->
bitsPerPixel
=
dc
->
bitsPerPixel
;
newdc
->
ROPmode
=
dc
->
ROPmode
;
newdc
->
polyFillMode
=
dc
->
polyFillMode
;
newdc
->
stretchBltMode
=
dc
->
stretchBltMode
;
...
...
@@ -424,8 +422,6 @@ void WINAPI SetDCState( HDC hdc, HDC hdcs )
dc
->
vportExtX
=
dcs
->
vportExtX
;
dc
->
vportExtY
=
dcs
->
vportExtY
;
if
(
GDIMAGIC
(
dc
->
header
.
wMagic
)
!=
MEMORY_DC_MAGIC
)
dc
->
bitsPerPixel
=
dcs
->
bitsPerPixel
;
if
(
dcs
->
hClipRgn
)
{
if
(
!
dc
->
hClipRgn
)
dc
->
hClipRgn
=
CreateRectRgn
(
0
,
0
,
0
,
0
);
...
...
@@ -723,8 +719,7 @@ HDC WINAPI CreateCompatibleDC( HDC hdc )
TRACE
(
"(%p): returning %p
\n
"
,
hdc
,
dc
->
hSelf
);
dc
->
bitsPerPixel
=
1
;
dc
->
hBitmap
=
GetStockObject
(
DEFAULT_BITMAP
);
dc
->
hBitmap
=
GetStockObject
(
DEFAULT_BITMAP
);
/* Copy the driver-specific physical device info into
* the new DC. The driver may use this read-only info
...
...
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