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
1079f374
Commit
1079f374
authored
Feb 17, 2008
by
Roderick Colenbrander
Committed by
Alexandre Julliard
Feb 19, 2008
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
wined3d: When DDCAPS_ALLOW256 is set, palette entry 0 and 255 are filled with black and white.
parent
c9376343
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
88 additions
and
0 deletions
+88
-0
dsurface.c
dlls/ddraw/tests/dsurface.c
+74
-0
palette.c
dlls/wined3d/palette.c
+14
-0
No files found.
dlls/ddraw/tests/dsurface.c
View file @
1079f374
...
...
@@ -2364,6 +2364,79 @@ static void BltParamTest(void)
IDirectDrawSurface_Release
(
surface2
);
}
static
void
PaletteTest
(
void
)
{
HRESULT
hr
;
IDirectDrawPalette
*
palette
;
PALETTEENTRY
Table
[
256
];
PALETTEENTRY
palEntries
[
256
];
int
i
;
for
(
i
=
0
;
i
<
256
;
i
++
)
{
Table
[
i
].
peRed
=
0xff
;
Table
[
i
].
peGreen
=
0
;
Table
[
i
].
peBlue
=
0
;
Table
[
i
].
peFlags
=
0
;
}
/* Create a 8bit palette without DDPCAPS_ALLOW256 set */
hr
=
IDirectDraw_CreatePalette
(
lpDD
,
DDPCAPS_8BIT
,
Table
,
&
palette
,
NULL
);
ok
(
hr
==
DD_OK
,
"CreatePalette failed with %08x
\n
"
,
hr
);
/* Read back the palette and verify the entries. Without DDPCAPS_ALLOW256 set
/ entry 0 and 255 should have been overwritten with black and white */
IDirectDrawPalette_GetEntries
(
palette
,
0
,
0
,
256
,
&
palEntries
[
0
]);
ok
(
hr
==
DD_OK
,
"GetEntries failed with %08x
\n
"
,
hr
);
if
(
hr
==
DD_OK
)
{
ok
((
palEntries
[
0
].
peRed
==
0
)
&&
(
palEntries
[
0
].
peGreen
==
0
)
&&
(
palEntries
[
0
].
peBlue
==
0
),
"Palette entry 0 of a palette without DDPCAPS_ALLOW256 set should be (0,0,0) but it is (%d,%d,%d)
\n
"
,
palEntries
[
0
].
peRed
,
palEntries
[
0
].
peGreen
,
palEntries
[
0
].
peBlue
);
ok
((
palEntries
[
255
].
peRed
==
255
)
&&
(
palEntries
[
255
].
peGreen
==
255
)
&&
(
palEntries
[
255
].
peBlue
==
255
),
"Palette entry 255 of a palette without DDPCAPS_ALLOW256 set should be (255,255,255) but it is (%d,%d,%d)
\n
"
,
palEntries
[
255
].
peRed
,
palEntries
[
255
].
peGreen
,
palEntries
[
255
].
peBlue
);
/* Entry 1-254 should contain red */
for
(
i
=
1
;
i
<
255
;
i
++
)
ok
((
palEntries
[
i
].
peRed
==
255
)
&&
(
palEntries
[
i
].
peGreen
==
0
)
&&
(
palEntries
[
i
].
peBlue
==
0
),
"Palette entry %d should have contained (255,0,0) but was set to %d,%d,%d)
\n
"
,
i
,
palEntries
[
i
].
peRed
,
palEntries
[
i
].
peGreen
,
palEntries
[
i
].
peBlue
);
}
/* CreatePalette without DDPCAPS_ALLOW256 ignores entry 0 and 255,
/ now check we are able to update the entries afterwards. */
IDirectDrawPalette_SetEntries
(
palette
,
0
,
0
,
256
,
&
Table
[
0
]);
ok
(
hr
==
DD_OK
,
"SetEntries failed with %08x
\n
"
,
hr
);
IDirectDrawPalette_GetEntries
(
palette
,
0
,
0
,
256
,
&
palEntries
[
0
]);
ok
(
hr
==
DD_OK
,
"GetEntries failed with %08x
\n
"
,
hr
);
if
(
hr
==
DD_OK
)
{
ok
((
palEntries
[
0
].
peRed
==
0
)
&&
(
palEntries
[
0
].
peGreen
==
0
)
&&
(
palEntries
[
0
].
peBlue
==
0
),
"Palette entry 0 should have been set to (0,0,0) but it contains (%d,%d,%d)
\n
"
,
palEntries
[
0
].
peRed
,
palEntries
[
0
].
peGreen
,
palEntries
[
0
].
peBlue
);
ok
((
palEntries
[
255
].
peRed
==
255
)
&&
(
palEntries
[
255
].
peGreen
==
255
)
&&
(
palEntries
[
255
].
peBlue
==
255
),
"Palette entry 255 should have been set to (255,255,255) but it contains (%d,%d,%d)
\n
"
,
palEntries
[
255
].
peRed
,
palEntries
[
255
].
peGreen
,
palEntries
[
255
].
peBlue
);
}
IDirectDrawPalette_Release
(
palette
);
/* Create a 8bit palette with DDPCAPS_ALLOW256 set */
hr
=
IDirectDraw_CreatePalette
(
lpDD
,
DDPCAPS_ALLOW256
|
DDPCAPS_8BIT
,
Table
,
&
palette
,
NULL
);
ok
(
hr
==
DD_OK
,
"CreatePalette failed with %08x
\n
"
,
hr
);
IDirectDrawPalette_GetEntries
(
palette
,
0
,
0
,
256
,
&
palEntries
[
0
]);
ok
(
hr
==
DD_OK
,
"GetEntries failed with %08x
\n
"
,
hr
);
if
(
hr
==
DD_OK
)
{
/* All entries should contain red */
for
(
i
=
0
;
i
<
256
;
i
++
)
ok
((
palEntries
[
i
].
peRed
==
255
)
&&
(
palEntries
[
i
].
peGreen
==
0
)
&&
(
palEntries
[
i
].
peBlue
==
0
),
"Palette entry %d should have contained (255,0,0) but was set to %d,%d,%d)
\n
"
,
i
,
palEntries
[
i
].
peRed
,
palEntries
[
i
].
peGreen
,
palEntries
[
i
].
peBlue
);
}
IDirectDrawPalette_Release
(
palette
);
}
static
void
StructSizeTest
(
void
)
{
IDirectDrawSurface
*
surface1
;
...
...
@@ -2491,5 +2564,6 @@ START_TEST(dsurface)
PrivateDataTest
();
BltParamTest
();
StructSizeTest
();
PaletteTest
();
ReleaseDirectDraw
();
}
dlls/wined3d/palette.c
View file @
1079f374
...
...
@@ -111,6 +111,7 @@ static HRESULT WINAPI IWineD3DPaletteImpl_SetEntries(IWineD3DPalette *iface, DW
IWineD3DResourceImpl
*
res
;
TRACE
(
"(%p)->(%08x,%d,%d,%p)
\n
"
,
This
,
Flags
,
Start
,
Count
,
PalEnt
);
TRACE
(
"Palette flags: %#x
\n
"
,
This
->
Flags
);
if
(
This
->
Flags
&
WINEDDPCAPS_8BITENTRIES
)
{
unsigned
int
i
;
...
...
@@ -122,6 +123,19 @@ static HRESULT WINAPI IWineD3DPaletteImpl_SetEntries(IWineD3DPalette *iface, DW
else
{
memcpy
(
This
->
palents
+
Start
,
PalEnt
,
Count
*
sizeof
(
PALETTEENTRY
));
/* When WINEDDCAPS_ALLOW256 isn't set we need to override entry 0 with black and 255 with white */
if
(
!
(
This
->
Flags
&
WINEDDPCAPS_ALLOW256
))
{
TRACE
(
"WINEDDPCAPS_ALLOW256 set, overriding palette entry 0 with black and 255 with white
\n
"
);
This
->
palents
[
0
].
peRed
=
0
;
This
->
palents
[
0
].
peGreen
=
0
;
This
->
palents
[
0
].
peBlue
=
0
;
This
->
palents
[
255
].
peRed
=
255
;
This
->
palents
[
255
].
peGreen
=
255
;
This
->
palents
[
255
].
peBlue
=
255
;
}
if
(
This
->
hpal
)
SetPaletteEntries
(
This
->
hpal
,
Start
,
Count
,
This
->
palents
+
Start
);
}
...
...
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