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
85a6967f
Commit
85a6967f
authored
Sep 15, 2011
by
Alexandre Julliard
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
winex11: Move the pixel->color conversion out of the get_tile_pict function.
parent
90e3bc51
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
16 additions
and
13 deletions
+16
-13
xrender.c
dlls/winex11.drv/xrender.c
+16
-13
No files found.
dlls/winex11.drv/xrender.c
View file @
85a6967f
...
@@ -1869,15 +1869,14 @@ static void SmoothGlyphGray(XImage *image, int x, int y, void *bitmap, XGlyphInf
...
@@ -1869,15 +1869,14 @@ static void SmoothGlyphGray(XImage *image, int x, int y, void *bitmap, XGlyphInf
* Returns an appropriate Picture for tiling the text colour.
* Returns an appropriate Picture for tiling the text colour.
* Call and use result within the xrender_cs
* Call and use result within the xrender_cs
*/
*/
static
Picture
get_tile_pict
(
const
WineXRenderFormat
*
wxr_format
,
int
text_pixel
)
static
Picture
get_tile_pict
(
const
WineXRenderFormat
*
wxr_format
,
const
XRenderColor
*
color
)
{
{
static
struct
static
struct
{
{
Pixmap
xpm
;
Pixmap
xpm
;
Picture
pict
;
Picture
pict
;
int
current_color
;
XRenderColor
current_color
;
}
tiles
[
WXR_NB_FORMATS
],
*
tile
;
}
tiles
[
WXR_NB_FORMATS
],
*
tile
;
XRenderColor
col
;
tile
=
&
tiles
[
wxr_format
->
format
];
tile
=
&
tiles
[
wxr_format
->
format
];
...
@@ -1893,11 +1892,13 @@ static Picture get_tile_pict(const WineXRenderFormat *wxr_format, int text_pixel
...
@@ -1893,11 +1892,13 @@ static Picture get_tile_pict(const WineXRenderFormat *wxr_format, int text_pixel
wine_tsx11_unlock
();
wine_tsx11_unlock
();
/* init current_color to something different from text_pixel */
/* init current_color to something different from text_pixel */
tile
->
current_color
=
~
text_pixel
;
tile
->
current_color
=
*
color
;
tile
->
current_color
.
red
^=
0xffff
;
if
(
wxr_format
->
format
==
WXR_FORMAT_MONO
)
if
(
wxr_format
->
format
==
WXR_FORMAT_MONO
)
{
{
/* for a 1bpp bitmap we always need a 1 in the tile */
/* for a 1bpp bitmap we always need a 1 in the tile */
XRenderColor
col
;
col
.
red
=
col
.
green
=
col
.
blue
=
0
;
col
.
red
=
col
.
green
=
col
.
blue
=
0
;
col
.
alpha
=
0xffff
;
col
.
alpha
=
0xffff
;
wine_tsx11_lock
();
wine_tsx11_lock
();
...
@@ -1906,13 +1907,12 @@ static Picture get_tile_pict(const WineXRenderFormat *wxr_format, int text_pixel
...
@@ -1906,13 +1907,12 @@ static Picture get_tile_pict(const WineXRenderFormat *wxr_format, int text_pixel
}
}
}
}
if
(
text_pixel
!=
tile
->
current_color
&&
wxr_format
->
format
!=
WXR_FORMAT_MONO
)
if
(
memcmp
(
color
,
&
tile
->
current_color
,
sizeof
(
*
color
)
)
&&
wxr_format
->
format
!=
WXR_FORMAT_MONO
)
{
{
get_xrender_color
(
wxr_format
,
text_pixel
,
&
col
);
wine_tsx11_lock
();
wine_tsx11_lock
();
pXRenderFillRectangle
(
gdi_display
,
PictOpSrc
,
tile
->
pict
,
&
col
,
0
,
0
,
1
,
1
);
pXRenderFillRectangle
(
gdi_display
,
PictOpSrc
,
tile
->
pict
,
color
,
0
,
0
,
1
,
1
);
wine_tsx11_unlock
();
wine_tsx11_unlock
();
tile
->
current_color
=
text_pixel
;
tile
->
current_color
=
*
color
;
}
}
return
tile
->
pict
;
return
tile
->
pict
;
}
}
...
@@ -2080,6 +2080,7 @@ BOOL xrenderdrv_ExtTextOut( PHYSDEV dev, INT x, INT y, UINT flags,
...
@@ -2080,6 +2080,7 @@ BOOL xrenderdrv_ExtTextOut( PHYSDEV dev, INT x, INT y, UINT flags,
POINT
desired
,
current
;
POINT
desired
,
current
;
int
render_op
=
PictOpOver
;
int
render_op
=
PictOpOver
;
Picture
pict
=
get_xrender_picture
(
physdev
->
x11dev
);
Picture
pict
=
get_xrender_picture
(
physdev
->
x11dev
);
XRenderColor
col
;
/* There's a bug in XRenderCompositeText that ignores the xDst and yDst parameters.
/* There's a bug in XRenderCompositeText that ignores the xDst and yDst parameters.
So we pass zeros to the function and move to our starting position using the first
So we pass zeros to the function and move to our starting position using the first
...
@@ -2089,7 +2090,8 @@ BOOL xrenderdrv_ExtTextOut( PHYSDEV dev, INT x, INT y, UINT flags,
...
@@ -2089,7 +2090,8 @@ BOOL xrenderdrv_ExtTextOut( PHYSDEV dev, INT x, INT y, UINT flags,
desired
.
y
=
physdev
->
x11dev
->
dc_rect
.
top
+
y
;
desired
.
y
=
physdev
->
x11dev
->
dc_rect
.
top
+
y
;
current
.
x
=
current
.
y
=
0
;
current
.
x
=
current
.
y
=
0
;
tile_pict
=
get_tile_pict
(
physdev
->
info
.
format
,
physdev
->
x11dev
->
textPixel
);
get_xrender_color
(
physdev
->
info
.
format
,
physdev
->
x11dev
->
textPixel
,
&
col
);
tile_pict
=
get_tile_pict
(
physdev
->
info
.
format
,
&
col
);
/* FIXME the mapping of Text/BkColor onto 1 or 0 needs investigation.
/* FIXME the mapping of Text/BkColor onto 1 or 0 needs investigation.
*/
*/
...
@@ -2549,20 +2551,21 @@ BOOL X11DRV_XRender_GetSrcAreaStretch(X11DRV_PDEVICE *physDevSrc, X11DRV_PDEVICE
...
@@ -2549,20 +2551,21 @@ BOOL X11DRV_XRender_GetSrcAreaStretch(X11DRV_PDEVICE *physDevSrc, X11DRV_PDEVICE
/* mono -> color */
/* mono -> color */
if
(
physDevSrc
->
depth
==
1
&&
physDevDst
->
depth
>
1
)
if
(
physDevSrc
->
depth
==
1
&&
physDevDst
->
depth
>
1
)
{
{
XRenderColor
col
;
XRenderColor
fg
,
bg
;
get_xrender_color
(
dst_format
,
physDevDst
->
textPixel
,
&
col
);
get_xrender_color
(
dst_format
,
physDevDst
->
textPixel
,
&
fg
);
get_xrender_color
(
dst_format
,
physDevDst
->
backgroundPixel
,
&
bg
);
/* We use the source drawable as a mask */
/* We use the source drawable as a mask */
mask_pict
=
get_xrender_picture_source
(
physDevSrc
,
use_repeat
);
mask_pict
=
get_xrender_picture_source
(
physDevSrc
,
use_repeat
);
/* Use backgroundPixel as the foreground color */
/* Use backgroundPixel as the foreground color */
EnterCriticalSection
(
&
xrender_cs
);
EnterCriticalSection
(
&
xrender_cs
);
src_pict
=
get_tile_pict
(
dst_format
,
physDevDst
->
backgroundPixel
);
src_pict
=
get_tile_pict
(
dst_format
,
&
bg
);
/* Create a destination picture and fill it with textPixel color as the background color */
/* Create a destination picture and fill it with textPixel color as the background color */
wine_tsx11_lock
();
wine_tsx11_lock
();
dst_pict
=
pXRenderCreatePicture
(
gdi_display
,
pixmap
,
dst_format
->
pict_format
,
CPSubwindowMode
|
CPRepeat
,
&
pa
);
dst_pict
=
pXRenderCreatePicture
(
gdi_display
,
pixmap
,
dst_format
->
pict_format
,
CPSubwindowMode
|
CPRepeat
,
&
pa
);
pXRenderFillRectangle
(
gdi_display
,
PictOpSrc
,
dst_pict
,
&
col
,
0
,
0
,
width
,
height
);
pXRenderFillRectangle
(
gdi_display
,
PictOpSrc
,
dst_pict
,
&
fg
,
0
,
0
,
width
,
height
);
xrender_mono_blit
(
src_pict
,
mask_pict
,
dst_pict
,
x_src
,
y_src
,
xscale
,
yscale
,
width
,
height
);
xrender_mono_blit
(
src_pict
,
mask_pict
,
dst_pict
,
x_src
,
y_src
,
xscale
,
yscale
,
width
,
height
);
...
...
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