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
747fa33b
Commit
747fa33b
authored
Apr 13, 2023
by
Piotr Caban
Committed by
Alexandre Julliard
Apr 13, 2023
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
gdi32: Handle EMR_TRANSPARENTBLT record in PlayEnhMetaFileRecord.
parent
8b48ee98
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
47 additions
and
1 deletion
+47
-1
enhmetafile.c
dlls/gdi32/enhmetafile.c
+47
-1
No files found.
dlls/gdi32/enhmetafile.c
View file @
747fa33b
...
...
@@ -2238,6 +2238,53 @@ BOOL WINAPI PlayEnhMetaFileRecord(
break
;
}
case
EMR_TRANSPARENTBLT
:
{
const
EMRTRANSPARENTBLT
*
pTransparentBlt
=
(
const
EMRTRANSPARENTBLT
*
)
mr
;
TRACE
(
"EMR_TRANSPARENTBLT: %ld, %ld %ldx%ld -> %ld, %ld %ldx%ld color %08lx offBitsSrc %ld
\n
"
,
pTransparentBlt
->
xSrc
,
pTransparentBlt
->
ySrc
,
pTransparentBlt
->
cxSrc
,
pTransparentBlt
->
cySrc
,
pTransparentBlt
->
xDest
,
pTransparentBlt
->
yDest
,
pTransparentBlt
->
cxDest
,
pTransparentBlt
->
cyDest
,
pTransparentBlt
->
dwRop
,
pTransparentBlt
->
offBitsSrc
);
if
(
pTransparentBlt
->
offBmiSrc
==
0
)
{
FIXME
(
"EMR_TRANSPARENTBLT: offBmiSrc == 0
\n
"
);
}
else
{
HDC
hdcSrc
=
NtGdiCreateCompatibleDC
(
hdc
);
HBRUSH
hBrush
,
hBrushOld
;
HBITMAP
hBmp
=
0
,
hBmpOld
=
0
;
const
BITMAPINFO
*
pbi
=
(
const
BITMAPINFO
*
)((
const
BYTE
*
)
mr
+
pTransparentBlt
->
offBmiSrc
);
SetGraphicsMode
(
hdcSrc
,
GM_ADVANCED
);
SetWorldTransform
(
hdcSrc
,
&
pTransparentBlt
->
xformSrc
);
hBrush
=
CreateSolidBrush
(
pTransparentBlt
->
crBkColorSrc
);
hBrushOld
=
SelectObject
(
hdcSrc
,
hBrush
);
PatBlt
(
hdcSrc
,
pTransparentBlt
->
rclBounds
.
left
,
pTransparentBlt
->
rclBounds
.
top
,
pTransparentBlt
->
rclBounds
.
right
-
pTransparentBlt
->
rclBounds
.
left
,
pTransparentBlt
->
rclBounds
.
bottom
-
pTransparentBlt
->
rclBounds
.
top
,
PATCOPY
);
SelectObject
(
hdcSrc
,
hBrushOld
);
DeleteObject
(
hBrush
);
hBmp
=
CreateDIBitmap
(
hdc
,
(
const
BITMAPINFOHEADER
*
)
pbi
,
CBM_INIT
,
(
const
BYTE
*
)
mr
+
pTransparentBlt
->
offBitsSrc
,
pbi
,
pTransparentBlt
->
iUsageSrc
);
hBmpOld
=
SelectObject
(
hdcSrc
,
hBmp
);
GdiTransparentBlt
(
hdc
,
pTransparentBlt
->
xDest
,
pTransparentBlt
->
yDest
,
pTransparentBlt
->
cxDest
,
pTransparentBlt
->
cyDest
,
hdcSrc
,
pTransparentBlt
->
xSrc
,
pTransparentBlt
->
ySrc
,
pTransparentBlt
->
cxSrc
,
pTransparentBlt
->
cySrc
,
pTransparentBlt
->
dwRop
);
SelectObject
(
hdcSrc
,
hBmpOld
);
DeleteObject
(
hBmp
);
DeleteDC
(
hdcSrc
);
}
break
;
}
case
EMR_GRADIENTFILL
:
{
EMRGRADIENTFILL
*
grad
=
(
EMRGRADIENTFILL
*
)
mr
;
...
...
@@ -2257,7 +2304,6 @@ BOOL WINAPI PlayEnhMetaFileRecord(
case
EMR_COLORCORRECTPALETTE
:
case
EMR_SETICMPROFILEA
:
case
EMR_SETICMPROFILEW
:
case
EMR_TRANSPARENTBLT
:
case
EMR_SETLINKEDUFI
:
case
EMR_COLORMATCHTOTARGETW
:
case
EMR_CREATECOLORSPACEW
:
...
...
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