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
86d58dc6
Commit
86d58dc6
authored
Feb 14, 2011
by
Vincent Povirk
Committed by
Alexandre Julliard
Feb 15, 2011
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
gdiplus: Store an ImageAttributes in texture brushes.
parent
8fdf64e8
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
53 additions
and
15 deletions
+53
-15
brush.c
dlls/gdiplus/brush.c
+52
-14
gdiplus_private.h
dlls/gdiplus/gdiplus_private.h
+1
-1
No files found.
dlls/gdiplus/brush.c
View file @
86d58dc6
...
...
@@ -164,8 +164,14 @@ GpStatus WINGDIPAPI GdipCloneBrush(GpBrush *brush, GpBrush **clone)
GpStatus
stat
;
GpTexture
*
texture
=
(
GpTexture
*
)
brush
;
GpTexture
*
new_texture
;
UINT
width
,
height
;
stat
=
GdipCreateTexture
(
texture
->
image
,
texture
->
wrap
,
&
new_texture
);
stat
=
GdipGetImageWidth
(
texture
->
image
,
&
width
);
if
(
stat
!=
Ok
)
return
stat
;
stat
=
GdipGetImageHeight
(
texture
->
image
,
&
height
);
if
(
stat
!=
Ok
)
return
stat
;
stat
=
GdipCreateTextureIA
(
texture
->
image
,
texture
->
imageattributes
,
0
,
0
,
width
,
height
,
&
new_texture
);
if
(
stat
==
Ok
)
{
...
...
@@ -773,7 +779,7 @@ GpStatus WINGDIPAPI GdipCreateTexture(GpImage *image, GpWrapMode wrapmode,
GpTexture
**
texture
)
{
UINT
width
,
height
;
GpImageAttributes
attributes
;
GpImageAttributes
*
attributes
;
GpStatus
stat
;
TRACE
(
"%p, %d %p
\n
"
,
image
,
wrapmode
,
texture
);
...
...
@@ -785,10 +791,20 @@ GpStatus WINGDIPAPI GdipCreateTexture(GpImage *image, GpWrapMode wrapmode,
if
(
stat
!=
Ok
)
return
stat
;
stat
=
GdipGetImageHeight
(
image
,
&
height
);
if
(
stat
!=
Ok
)
return
stat
;
attributes
.
wrap
=
wrapmode
;
return
GdipCreateTextureIA
(
image
,
&
attributes
,
0
,
0
,
width
,
height
,
stat
=
GdipCreateImageAttributes
(
&
attributes
);
if
(
stat
==
Ok
)
{
attributes
->
wrap
=
wrapmode
;
stat
=
GdipCreateTextureIA
(
image
,
attributes
,
0
,
0
,
width
,
height
,
texture
);
GdipDisposeImageAttributes
(
attributes
);
}
return
stat
;
}
/******************************************************************************
...
...
@@ -797,14 +813,25 @@ GpStatus WINGDIPAPI GdipCreateTexture(GpImage *image, GpWrapMode wrapmode,
GpStatus
WINGDIPAPI
GdipCreateTexture2
(
GpImage
*
image
,
GpWrapMode
wrapmode
,
REAL
x
,
REAL
y
,
REAL
width
,
REAL
height
,
GpTexture
**
texture
)
{
GpImageAttributes
attributes
;
GpImageAttributes
*
attributes
;
GpStatus
stat
;
TRACE
(
"%p %d %f %f %f %f %p
\n
"
,
image
,
wrapmode
,
x
,
y
,
width
,
height
,
texture
);
attributes
.
wrap
=
wrapmode
;
return
GdipCreateTextureIA
(
image
,
&
attributes
,
x
,
y
,
width
,
height
,
texture
);
stat
=
GdipCreateImageAttributes
(
&
attributes
);
if
(
stat
==
Ok
)
{
attributes
->
wrap
=
wrapmode
;
stat
=
GdipCreateTextureIA
(
image
,
attributes
,
x
,
y
,
width
,
height
,
texture
);
GdipDisposeImageAttributes
(
attributes
);
}
return
stat
;
}
/******************************************************************************
...
...
@@ -854,16 +881,25 @@ GpStatus WINGDIPAPI GdipCreateTextureIA(GpImage *image,
goto
exit
;
}
if
(
imageattr
)
{
status
=
GdipCloneImageAttributes
(
imageattr
,
&
(
*
texture
)
->
imageattributes
);
}
else
{
status
=
GdipCreateImageAttributes
(
&
(
*
texture
)
->
imageattributes
);
if
(
status
==
Ok
)
(
*
texture
)
->
imageattributes
->
wrap
=
WrapModeTile
;
}
if
(
status
!=
Ok
)
goto
exit
;
(
*
texture
)
->
brush
.
lb
.
lbStyle
=
BS_PATTERN
;
(
*
texture
)
->
brush
.
lb
.
lbColor
=
0
;
(
*
texture
)
->
brush
.
lb
.
lbHatch
=
(
ULONG_PTR
)
hbm
;
(
*
texture
)
->
brush
.
gdibrush
=
CreateBrushIndirect
(
&
(
*
texture
)
->
brush
.
lb
);
(
*
texture
)
->
brush
.
bt
=
BrushTypeTextureFill
;
if
(
imageattr
)
(
*
texture
)
->
wrap
=
imageattr
->
wrap
;
else
(
*
texture
)
->
wrap
=
WrapModeTile
;
(
*
texture
)
->
image
=
new_image
;
exit:
...
...
@@ -876,6 +912,7 @@ exit:
if
(
*
texture
)
{
GdipDeleteMatrix
((
*
texture
)
->
transform
);
GdipDisposeImageAttributes
((
*
texture
)
->
imageattributes
);
GdipFree
(
*
texture
);
*
texture
=
NULL
;
}
...
...
@@ -984,6 +1021,7 @@ GpStatus WINGDIPAPI GdipDeleteBrush(GpBrush *brush)
case
BrushTypeTextureFill
:
GdipDeleteMatrix
(((
GpTexture
*
)
brush
)
->
transform
);
GdipDisposeImage
(((
GpTexture
*
)
brush
)
->
image
);
GdipDisposeImageAttributes
(((
GpTexture
*
)
brush
)
->
imageattributes
);
break
;
default:
break
;
...
...
@@ -1277,7 +1315,7 @@ GpStatus WINGDIPAPI GdipGetTextureWrapMode(GpTexture *brush, GpWrapMode *wrapmod
if
(
!
brush
||
!
wrapmode
)
return
InvalidParameter
;
*
wrapmode
=
brush
->
wrap
;
*
wrapmode
=
brush
->
imageattributes
->
wrap
;
return
Ok
;
}
...
...
@@ -1757,7 +1795,7 @@ GpStatus WINGDIPAPI GdipSetTextureWrapMode(GpTexture *brush, GpWrapMode wrapmode
if
(
!
brush
)
return
InvalidParameter
;
brush
->
wrap
=
wrapmode
;
brush
->
imageattributes
->
wrap
=
wrapmode
;
return
Ok
;
}
...
...
dlls/gdiplus/gdiplus_private.h
View file @
86d58dc6
...
...
@@ -215,7 +215,7 @@ struct GpTexture{
GpBrush
brush
;
GpMatrix
*
transform
;
GpImage
*
image
;
WrapMode
wrap
;
/* not used yet */
GpImageAttributes
*
imageattributes
;
};
struct
GpPath
{
...
...
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