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
5c844409
Commit
5c844409
authored
Jan 09, 2019
by
Paul Gofman
Committed by
Alexandre Julliard
Jan 09, 2019
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
user32/tests: Add test for 8 bit image stretch mode in CopyImage().
Signed-off-by:
Paul Gofman
<
gofmanp@gmail.com
>
Signed-off-by:
Alexandre Julliard
<
julliard@winehq.org
>
parent
8cdef631
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
40 additions
and
9 deletions
+40
-9
cursoricon.c
dlls/user32/tests/cursoricon.c
+40
-9
No files found.
dlls/user32/tests/cursoricon.c
View file @
5c844409
...
@@ -2755,17 +2755,19 @@ static COLORREF get_color_from_bits(const unsigned char *bits, const BITMAPINFO
...
@@ -2755,17 +2755,19 @@ static COLORREF get_color_from_bits(const unsigned char *bits, const BITMAPINFO
unsigned
int
row
,
unsigned
int
column
)
unsigned
int
row
,
unsigned
int
column
)
{
{
const
BITMAPINFOHEADER
*
h
=
&
bmi
->
bmiHeader
;
const
BITMAPINFOHEADER
*
h
=
&
bmi
->
bmiHeader
;
unsigned
int
stride
,
shift
,
mask
;
const
unsigned
char
*
data
;
const
unsigned
char
*
data
;
unsigned
int
stride
;
RGBQUAD
color
;
RGBQUAD
color
;
ok
(
h
->
biBitCount
==
1
||
h
->
biBitCount
>=
24
,
"Unsupported bit count %u.
\n
"
,
h
->
biBitCount
);
ok
(
h
->
biBitCount
<=
8
||
h
->
biBitCount
>=
24
,
"Unsupported bit count %u.
\n
"
,
h
->
biBitCount
);
stride
=
((
h
->
biBitCount
*
h
->
biWidth
+
7
)
/
8
+
3
)
&
~
3
;
stride
=
((
h
->
biBitCount
*
h
->
biWidth
+
7
)
/
8
+
3
)
&
~
3
;
data
=
bits
+
row
*
stride
+
column
*
h
->
biBitCount
/
8
;
data
=
bits
+
row
*
stride
+
column
*
h
->
biBitCount
/
8
;
if
(
h
->
biBitCount
>=
24
)
if
(
h
->
biBitCount
>=
24
)
return
RGB
(
data
[
2
],
data
[
1
],
data
[
0
]);
return
RGB
(
data
[
2
],
data
[
1
],
data
[
0
]);
color
=
bmi
->
bmiColors
[
!!
(
data
[
0
]
&
(
1u
<<
(
7
-
(
column
%
8
))))];
shift
=
8
-
h
->
biBitCount
-
(
column
*
h
->
biBitCount
)
%
8
;
mask
=
~
(
~
0u
<<
h
->
biBitCount
);
color
=
bmi
->
bmiColors
[(
data
[
0
]
>>
shift
)
&
mask
];
return
RGB
(
color
.
rgbRed
,
color
.
rgbGreen
,
color
.
rgbBlue
);
return
RGB
(
color
.
rgbRed
,
color
.
rgbGreen
,
color
.
rgbBlue
);
}
}
...
@@ -2783,6 +2785,18 @@ static void test_CopyImage_StretchMode(void)
...
@@ -2783,6 +2785,18 @@ static void test_CopyImage_StretchMode(void)
0x3f
,
0xff
,
0x00
,
0x3f
,
0xff
,
0x3f
,
0x00
,
0x00
,
0x3f
,
0xff
,
0x00
,
0x3f
,
0xff
,
0x3f
,
0x00
,
0x00
,
0x3f
,
0xff
,
0x7f
,
0x00
,
0xff
,
0x3f
,
0x00
,
0x00
,
0x3f
,
0xff
,
0x7f
,
0x00
,
0xff
,
0x3f
,
0x00
,
0x00
,
};
};
static
const
unsigned
char
test_bits_8
[]
=
{
0x00
,
0xff
,
0x00
,
0xff
,
0x00
,
0x00
,
0x00
,
0x00
,
0xff
,
0x55
,
0x00
,
0xff
,
0x00
,
0xff
,
0xff
,
0x00
,
};
static
const
unsigned
char
expected_bits_8
[]
=
{
0xff
,
0xff
,
0x00
,
0x00
,
0x55
,
0xff
,
0x00
,
0x00
,
};
static
const
unsigned
char
test_bits_1
[]
=
static
const
unsigned
char
test_bits_1
[]
=
{
{
0x30
,
0x0
,
0x0
,
0x0
,
0x30
,
0x0
,
0x0
,
0x0
,
...
@@ -2795,6 +2809,12 @@ static void test_CopyImage_StretchMode(void)
...
@@ -2795,6 +2809,12 @@ static void test_CopyImage_StretchMode(void)
0x40
,
0x0
,
0x0
,
0x0
,
0x40
,
0x0
,
0x0
,
0x0
,
0x0
,
0x0
,
0x0
,
0x0
,
0x0
,
0x0
,
0x0
,
0x0
,
};
};
static
const
RGBQUAD
colors_bits_1
[]
=
{
{
0
,
0
,
0
},
{
0xff
,
0xff
,
0xff
},
};
static
RGBQUAD
colors_bits_8
[
256
];
static
const
struct
static
const
struct
{
{
...
@@ -2802,19 +2822,25 @@ static void test_CopyImage_StretchMode(void)
...
@@ -2802,19 +2822,25 @@ static void test_CopyImage_StretchMode(void)
WORD
bit_count
;
WORD
bit_count
;
const
unsigned
char
*
test_bits
,
*
expected_bits
;
const
unsigned
char
*
test_bits
,
*
expected_bits
;
size_t
test_bits_size
,
result_bits_size
;
size_t
test_bits_size
,
result_bits_size
;
const
RGBQUAD
*
bmi_colors
;
size_t
bmi_colors_size
;
BOOL
todo
;
BOOL
todo
;
}
}
tests
[]
=
tests
[]
=
{
{
{
4
,
4
,
2
,
2
,
24
,
test_bits_24
,
expected_bits_24
,
{
4
,
4
,
2
,
2
,
24
,
test_bits_24
,
expected_bits_24
,
sizeof
(
test_bits_24
),
sizeof
(
expected_bits_24
),
TRUE
},
sizeof
(
test_bits_24
),
sizeof
(
expected_bits_24
),
NULL
,
0
,
TRUE
},
{
4
,
4
,
2
,
2
,
1
,
test_bits_1
,
expected_bits_1
,
{
4
,
4
,
2
,
2
,
1
,
test_bits_1
,
expected_bits_1
,
sizeof
(
test_bits_1
),
sizeof
(
expected_bits_1
),
FALSE
},
sizeof
(
test_bits_1
),
sizeof
(
expected_bits_1
),
colors_bits_1
,
sizeof
(
colors_bits_1
),
FALSE
},
{
4
,
4
,
2
,
2
,
8
,
test_bits_8
,
expected_bits_8
,
sizeof
(
test_bits_8
),
sizeof
(
expected_bits_8
),
colors_bits_8
,
sizeof
(
colors_bits_8
),
TRUE
},
};
};
HBITMAP
bitmap
,
bitmap_copy
;
HBITMAP
bitmap
,
bitmap_copy
;
unsigned
int
row
,
column
,
i
;
unsigned
char
*
result_bits
;
unsigned
char
*
result_bits
;
unsigned
int
row
,
column
;
unsigned
int
test_index
;
unsigned
int
test_index
;
unsigned
char
*
bits
;
unsigned
char
*
bits
;
BITMAPINFO
*
bmi
;
BITMAPINFO
*
bmi
;
...
@@ -2825,14 +2851,19 @@ static void test_CopyImage_StretchMode(void)
...
@@ -2825,14 +2851,19 @@ static void test_CopyImage_StretchMode(void)
bmi
->
bmiHeader
.
biSize
=
sizeof
(
BITMAPINFOHEADER
);
bmi
->
bmiHeader
.
biSize
=
sizeof
(
BITMAPINFOHEADER
);
bmi
->
bmiHeader
.
biPlanes
=
1
;
bmi
->
bmiHeader
.
biPlanes
=
1
;
bmi
->
bmiHeader
.
biCompression
=
BI_RGB
;
bmi
->
bmiHeader
.
biCompression
=
BI_RGB
;
bmi
->
bmiColors
[
1
].
rgbRed
=
0xff
;
bmi
->
bmiColors
[
1
].
rgbGreen
=
0xff
;
for
(
i
=
0
;
i
<
256
;
++
i
)
bmi
->
bmiColors
[
1
].
rgbBlue
=
0xff
;
colors_bits_8
[
i
].
rgbRed
=
colors_bits_8
[
i
].
rgbGreen
=
colors_bits_8
[
i
].
rgbBlue
=
i
;
hdc
=
GetDC
(
NULL
);
hdc
=
GetDC
(
NULL
);
for
(
test_index
=
0
;
test_index
<
ARRAY_SIZE
(
tests
);
++
test_index
)
for
(
test_index
=
0
;
test_index
<
ARRAY_SIZE
(
tests
);
++
test_index
)
{
{
if
(
tests
[
test_index
].
bmi_colors
)
memcpy
(
bmi
->
bmiColors
,
tests
[
test_index
].
bmi_colors
,
tests
[
test_index
].
bmi_colors_size
);
else
memset
(
bmi
->
bmiColors
,
0
,
256
*
sizeof
(
RGBQUAD
));
bmi
->
bmiHeader
.
biWidth
=
tests
[
test_index
].
width
;
bmi
->
bmiHeader
.
biWidth
=
tests
[
test_index
].
width
;
bmi
->
bmiHeader
.
biHeight
=
tests
[
test_index
].
height
;
bmi
->
bmiHeader
.
biHeight
=
tests
[
test_index
].
height
;
bmi
->
bmiHeader
.
biBitCount
=
tests
[
test_index
].
bit_count
;
bmi
->
bmiHeader
.
biBitCount
=
tests
[
test_index
].
bit_count
;
...
...
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