Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-cw
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-cw
Commits
3a9cabb8
Commit
3a9cabb8
authored
Dec 08, 2011
by
Alexandre Julliard
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
gdi32: Store the default color tables as static data.
parent
27eb63b0
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
93 additions
and
58 deletions
+93
-58
dib.c
dlls/gdi32/dib.c
+92
-58
gdi_private.h
dlls/gdi32/gdi_private.h
+1
-0
No files found.
dlls/gdi32/dib.c
View file @
3a9cabb8
...
...
@@ -944,30 +944,6 @@ UINT WINAPI GetDIBColorTable( HDC hdc, UINT startpos, UINT entries, RGBQUAD *col
return
result
;
}
static
const
RGBQUAD
DefLogPaletteQuads
[
20
]
=
{
/* Copy of Default Logical Palette */
/* rgbBlue, rgbGreen, rgbRed, rgbReserved */
{
0x00
,
0x00
,
0x00
,
0x00
},
{
0x00
,
0x00
,
0x80
,
0x00
},
{
0x00
,
0x80
,
0x00
,
0x00
},
{
0x00
,
0x80
,
0x80
,
0x00
},
{
0x80
,
0x00
,
0x00
,
0x00
},
{
0x80
,
0x00
,
0x80
,
0x00
},
{
0x80
,
0x80
,
0x00
,
0x00
},
{
0xc0
,
0xc0
,
0xc0
,
0x00
},
{
0xc0
,
0xdc
,
0xc0
,
0x00
},
{
0xf0
,
0xca
,
0xa6
,
0x00
},
{
0xf0
,
0xfb
,
0xff
,
0x00
},
{
0xa4
,
0xa0
,
0xa0
,
0x00
},
{
0x80
,
0x80
,
0x80
,
0x00
},
{
0x00
,
0x00
,
0xff
,
0x00
},
{
0x00
,
0xff
,
0x00
,
0x00
},
{
0x00
,
0xff
,
0xff
,
0x00
},
{
0xff
,
0x00
,
0x00
,
0x00
},
{
0xff
,
0x00
,
0xff
,
0x00
},
{
0xff
,
0xff
,
0x00
,
0x00
},
{
0xff
,
0xff
,
0xff
,
0x00
}
};
static
const
DWORD
bit_fields_888
[
3
]
=
{
0xff0000
,
0x00ff00
,
0x0000ff
};
static
const
DWORD
bit_fields_565
[
3
]
=
{
0xf800
,
0x07e0
,
0x001f
};
static
const
DWORD
bit_fields_555
[
3
]
=
{
0x7c00
,
0x03e0
,
0x001f
};
...
...
@@ -1069,44 +1045,102 @@ static void copy_color_info(BITMAPINFO *dst, const BITMAPINFO *src, UINT colorus
}
}
void
fill_default_color_table
(
BITMAPINFO
*
info
)
const
RGBQUAD
*
get_default_color_table
(
int
bpp
)
{
int
i
;
switch
(
info
->
bmiHeader
.
biBitCount
)
static
const
RGBQUAD
table_1
[
2
]
=
{
case
1
:
info
->
bmiColors
[
0
].
rgbRed
=
info
->
bmiColors
[
0
].
rgbGreen
=
info
->
bmiColors
[
0
].
rgbBlue
=
0
;
info
->
bmiColors
[
0
].
rgbReserved
=
0
;
info
->
bmiColors
[
1
].
rgbRed
=
info
->
bmiColors
[
1
].
rgbGreen
=
info
->
bmiColors
[
1
].
rgbBlue
=
0xff
;
info
->
bmiColors
[
1
].
rgbReserved
=
0
;
break
;
case
4
:
/* The EGA palette is the first and last 8 colours of the default palette
with the innermost pair swapped */
memcpy
(
info
->
bmiColors
,
DefLogPaletteQuads
,
7
*
sizeof
(
RGBQUAD
));
memcpy
(
info
->
bmiColors
+
7
,
DefLogPaletteQuads
+
12
,
1
*
sizeof
(
RGBQUAD
));
memcpy
(
info
->
bmiColors
+
8
,
DefLogPaletteQuads
+
7
,
1
*
sizeof
(
RGBQUAD
));
memcpy
(
info
->
bmiColors
+
9
,
DefLogPaletteQuads
+
13
,
7
*
sizeof
(
RGBQUAD
));
break
;
case
8
:
memcpy
(
info
->
bmiColors
,
DefLogPaletteQuads
,
10
*
sizeof
(
RGBQUAD
));
memcpy
(
info
->
bmiColors
+
246
,
DefLogPaletteQuads
+
10
,
10
*
sizeof
(
RGBQUAD
));
for
(
i
=
10
;
i
<
246
;
i
++
)
{
info
->
bmiColors
[
i
].
rgbRed
=
(
i
&
0x07
)
<<
5
;
info
->
bmiColors
[
i
].
rgbGreen
=
(
i
&
0x38
)
<<
2
;
info
->
bmiColors
[
i
].
rgbBlue
=
i
&
0xc0
;
info
->
bmiColors
[
i
].
rgbReserved
=
0
;
}
break
;
default:
ERR
(
"called with bitcount %d
\n
"
,
info
->
bmiHeader
.
biBitCount
);
{
0x00
,
0x00
,
0x00
},
{
0xff
,
0xff
,
0xff
}
};
static
const
RGBQUAD
table_4
[
16
]
=
{
{
0x00
,
0x00
,
0x00
},
{
0x00
,
0x00
,
0x80
},
{
0x00
,
0x80
,
0x00
},
{
0x00
,
0x80
,
0x80
},
{
0x80
,
0x00
,
0x00
},
{
0x80
,
0x00
,
0x80
},
{
0x80
,
0x80
,
0x00
},
{
0x80
,
0x80
,
0x80
},
{
0xc0
,
0xc0
,
0xc0
},
{
0x00
,
0x00
,
0xff
},
{
0x00
,
0xff
,
0x00
},
{
0x00
,
0xff
,
0xff
},
{
0xff
,
0x00
,
0x00
},
{
0xff
,
0x00
,
0xff
},
{
0xff
,
0xff
,
0x00
},
{
0xff
,
0xff
,
0xff
},
};
static
const
RGBQUAD
table_8
[
256
]
=
{
/* first and last 10 entries are the default system palette entries */
{
0x00
,
0x00
,
0x00
},
{
0x00
,
0x00
,
0x80
},
{
0x00
,
0x80
,
0x00
},
{
0x00
,
0x80
,
0x80
},
{
0x80
,
0x00
,
0x00
},
{
0x80
,
0x00
,
0x80
},
{
0x80
,
0x80
,
0x00
},
{
0xc0
,
0xc0
,
0xc0
},
{
0xc0
,
0xdc
,
0xc0
},
{
0xf0
,
0xca
,
0xa6
},
{
0x00
,
0x20
,
0x40
},
{
0x00
,
0x20
,
0x60
},
{
0x00
,
0x20
,
0x80
},
{
0x00
,
0x20
,
0xa0
},
{
0x00
,
0x20
,
0xc0
},
{
0x00
,
0x20
,
0xe0
},
{
0x00
,
0x40
,
0x00
},
{
0x00
,
0x40
,
0x20
},
{
0x00
,
0x40
,
0x40
},
{
0x00
,
0x40
,
0x60
},
{
0x00
,
0x40
,
0x80
},
{
0x00
,
0x40
,
0xa0
},
{
0x00
,
0x40
,
0xc0
},
{
0x00
,
0x40
,
0xe0
},
{
0x00
,
0x60
,
0x00
},
{
0x00
,
0x60
,
0x20
},
{
0x00
,
0x60
,
0x40
},
{
0x00
,
0x60
,
0x60
},
{
0x00
,
0x60
,
0x80
},
{
0x00
,
0x60
,
0xa0
},
{
0x00
,
0x60
,
0xc0
},
{
0x00
,
0x60
,
0xe0
},
{
0x00
,
0x80
,
0x00
},
{
0x00
,
0x80
,
0x20
},
{
0x00
,
0x80
,
0x40
},
{
0x00
,
0x80
,
0x60
},
{
0x00
,
0x80
,
0x80
},
{
0x00
,
0x80
,
0xa0
},
{
0x00
,
0x80
,
0xc0
},
{
0x00
,
0x80
,
0xe0
},
{
0x00
,
0xa0
,
0x00
},
{
0x00
,
0xa0
,
0x20
},
{
0x00
,
0xa0
,
0x40
},
{
0x00
,
0xa0
,
0x60
},
{
0x00
,
0xa0
,
0x80
},
{
0x00
,
0xa0
,
0xa0
},
{
0x00
,
0xa0
,
0xc0
},
{
0x00
,
0xa0
,
0xe0
},
{
0x00
,
0xc0
,
0x00
},
{
0x00
,
0xc0
,
0x20
},
{
0x00
,
0xc0
,
0x40
},
{
0x00
,
0xc0
,
0x60
},
{
0x00
,
0xc0
,
0x80
},
{
0x00
,
0xc0
,
0xa0
},
{
0x00
,
0xc0
,
0xc0
},
{
0x00
,
0xc0
,
0xe0
},
{
0x00
,
0xe0
,
0x00
},
{
0x00
,
0xe0
,
0x20
},
{
0x00
,
0xe0
,
0x40
},
{
0x00
,
0xe0
,
0x60
},
{
0x00
,
0xe0
,
0x80
},
{
0x00
,
0xe0
,
0xa0
},
{
0x00
,
0xe0
,
0xc0
},
{
0x00
,
0xe0
,
0xe0
},
{
0x40
,
0x00
,
0x00
},
{
0x40
,
0x00
,
0x20
},
{
0x40
,
0x00
,
0x40
},
{
0x40
,
0x00
,
0x60
},
{
0x40
,
0x00
,
0x80
},
{
0x40
,
0x00
,
0xa0
},
{
0x40
,
0x00
,
0xc0
},
{
0x40
,
0x00
,
0xe0
},
{
0x40
,
0x20
,
0x00
},
{
0x40
,
0x20
,
0x20
},
{
0x40
,
0x20
,
0x40
},
{
0x40
,
0x20
,
0x60
},
{
0x40
,
0x20
,
0x80
},
{
0x40
,
0x20
,
0xa0
},
{
0x40
,
0x20
,
0xc0
},
{
0x40
,
0x20
,
0xe0
},
{
0x40
,
0x40
,
0x00
},
{
0x40
,
0x40
,
0x20
},
{
0x40
,
0x40
,
0x40
},
{
0x40
,
0x40
,
0x60
},
{
0x40
,
0x40
,
0x80
},
{
0x40
,
0x40
,
0xa0
},
{
0x40
,
0x40
,
0xc0
},
{
0x40
,
0x40
,
0xe0
},
{
0x40
,
0x60
,
0x00
},
{
0x40
,
0x60
,
0x20
},
{
0x40
,
0x60
,
0x40
},
{
0x40
,
0x60
,
0x60
},
{
0x40
,
0x60
,
0x80
},
{
0x40
,
0x60
,
0xa0
},
{
0x40
,
0x60
,
0xc0
},
{
0x40
,
0x60
,
0xe0
},
{
0x40
,
0x80
,
0x00
},
{
0x40
,
0x80
,
0x20
},
{
0x40
,
0x80
,
0x40
},
{
0x40
,
0x80
,
0x60
},
{
0x40
,
0x80
,
0x80
},
{
0x40
,
0x80
,
0xa0
},
{
0x40
,
0x80
,
0xc0
},
{
0x40
,
0x80
,
0xe0
},
{
0x40
,
0xa0
,
0x00
},
{
0x40
,
0xa0
,
0x20
},
{
0x40
,
0xa0
,
0x40
},
{
0x40
,
0xa0
,
0x60
},
{
0x40
,
0xa0
,
0x80
},
{
0x40
,
0xa0
,
0xa0
},
{
0x40
,
0xa0
,
0xc0
},
{
0x40
,
0xa0
,
0xe0
},
{
0x40
,
0xc0
,
0x00
},
{
0x40
,
0xc0
,
0x20
},
{
0x40
,
0xc0
,
0x40
},
{
0x40
,
0xc0
,
0x60
},
{
0x40
,
0xc0
,
0x80
},
{
0x40
,
0xc0
,
0xa0
},
{
0x40
,
0xc0
,
0xc0
},
{
0x40
,
0xc0
,
0xe0
},
{
0x40
,
0xe0
,
0x00
},
{
0x40
,
0xe0
,
0x20
},
{
0x40
,
0xe0
,
0x40
},
{
0x40
,
0xe0
,
0x60
},
{
0x40
,
0xe0
,
0x80
},
{
0x40
,
0xe0
,
0xa0
},
{
0x40
,
0xe0
,
0xc0
},
{
0x40
,
0xe0
,
0xe0
},
{
0x80
,
0x00
,
0x00
},
{
0x80
,
0x00
,
0x20
},
{
0x80
,
0x00
,
0x40
},
{
0x80
,
0x00
,
0x60
},
{
0x80
,
0x00
,
0x80
},
{
0x80
,
0x00
,
0xa0
},
{
0x80
,
0x00
,
0xc0
},
{
0x80
,
0x00
,
0xe0
},
{
0x80
,
0x20
,
0x00
},
{
0x80
,
0x20
,
0x20
},
{
0x80
,
0x20
,
0x40
},
{
0x80
,
0x20
,
0x60
},
{
0x80
,
0x20
,
0x80
},
{
0x80
,
0x20
,
0xa0
},
{
0x80
,
0x20
,
0xc0
},
{
0x80
,
0x20
,
0xe0
},
{
0x80
,
0x40
,
0x00
},
{
0x80
,
0x40
,
0x20
},
{
0x80
,
0x40
,
0x40
},
{
0x80
,
0x40
,
0x60
},
{
0x80
,
0x40
,
0x80
},
{
0x80
,
0x40
,
0xa0
},
{
0x80
,
0x40
,
0xc0
},
{
0x80
,
0x40
,
0xe0
},
{
0x80
,
0x60
,
0x00
},
{
0x80
,
0x60
,
0x20
},
{
0x80
,
0x60
,
0x40
},
{
0x80
,
0x60
,
0x60
},
{
0x80
,
0x60
,
0x80
},
{
0x80
,
0x60
,
0xa0
},
{
0x80
,
0x60
,
0xc0
},
{
0x80
,
0x60
,
0xe0
},
{
0x80
,
0x80
,
0x00
},
{
0x80
,
0x80
,
0x20
},
{
0x80
,
0x80
,
0x40
},
{
0x80
,
0x80
,
0x60
},
{
0x80
,
0x80
,
0x80
},
{
0x80
,
0x80
,
0xa0
},
{
0x80
,
0x80
,
0xc0
},
{
0x80
,
0x80
,
0xe0
},
{
0x80
,
0xa0
,
0x00
},
{
0x80
,
0xa0
,
0x20
},
{
0x80
,
0xa0
,
0x40
},
{
0x80
,
0xa0
,
0x60
},
{
0x80
,
0xa0
,
0x80
},
{
0x80
,
0xa0
,
0xa0
},
{
0x80
,
0xa0
,
0xc0
},
{
0x80
,
0xa0
,
0xe0
},
{
0x80
,
0xc0
,
0x00
},
{
0x80
,
0xc0
,
0x20
},
{
0x80
,
0xc0
,
0x40
},
{
0x80
,
0xc0
,
0x60
},
{
0x80
,
0xc0
,
0x80
},
{
0x80
,
0xc0
,
0xa0
},
{
0x80
,
0xc0
,
0xc0
},
{
0x80
,
0xc0
,
0xe0
},
{
0x80
,
0xe0
,
0x00
},
{
0x80
,
0xe0
,
0x20
},
{
0x80
,
0xe0
,
0x40
},
{
0x80
,
0xe0
,
0x60
},
{
0x80
,
0xe0
,
0x80
},
{
0x80
,
0xe0
,
0xa0
},
{
0x80
,
0xe0
,
0xc0
},
{
0x80
,
0xe0
,
0xe0
},
{
0xc0
,
0x00
,
0x00
},
{
0xc0
,
0x00
,
0x20
},
{
0xc0
,
0x00
,
0x40
},
{
0xc0
,
0x00
,
0x60
},
{
0xc0
,
0x00
,
0x80
},
{
0xc0
,
0x00
,
0xa0
},
{
0xc0
,
0x00
,
0xc0
},
{
0xc0
,
0x00
,
0xe0
},
{
0xc0
,
0x20
,
0x00
},
{
0xc0
,
0x20
,
0x20
},
{
0xc0
,
0x20
,
0x40
},
{
0xc0
,
0x20
,
0x60
},
{
0xc0
,
0x20
,
0x80
},
{
0xc0
,
0x20
,
0xa0
},
{
0xc0
,
0x20
,
0xc0
},
{
0xc0
,
0x20
,
0xe0
},
{
0xc0
,
0x40
,
0x00
},
{
0xc0
,
0x40
,
0x20
},
{
0xc0
,
0x40
,
0x40
},
{
0xc0
,
0x40
,
0x60
},
{
0xc0
,
0x40
,
0x80
},
{
0xc0
,
0x40
,
0xa0
},
{
0xc0
,
0x40
,
0xc0
},
{
0xc0
,
0x40
,
0xe0
},
{
0xc0
,
0x60
,
0x00
},
{
0xc0
,
0x60
,
0x20
},
{
0xc0
,
0x60
,
0x40
},
{
0xc0
,
0x60
,
0x60
},
{
0xc0
,
0x60
,
0x80
},
{
0xc0
,
0x60
,
0xa0
},
{
0xc0
,
0x60
,
0xc0
},
{
0xc0
,
0x60
,
0xe0
},
{
0xc0
,
0x80
,
0x00
},
{
0xc0
,
0x80
,
0x20
},
{
0xc0
,
0x80
,
0x40
},
{
0xc0
,
0x80
,
0x60
},
{
0xc0
,
0x80
,
0x80
},
{
0xc0
,
0x80
,
0xa0
},
{
0xc0
,
0x80
,
0xc0
},
{
0xc0
,
0x80
,
0xe0
},
{
0xc0
,
0xa0
,
0x00
},
{
0xc0
,
0xa0
,
0x20
},
{
0xc0
,
0xa0
,
0x40
},
{
0xc0
,
0xa0
,
0x60
},
{
0xc0
,
0xa0
,
0x80
},
{
0xc0
,
0xa0
,
0xa0
},
{
0xc0
,
0xa0
,
0xc0
},
{
0xc0
,
0xa0
,
0xe0
},
{
0xc0
,
0xc0
,
0x00
},
{
0xc0
,
0xc0
,
0x20
},
{
0xc0
,
0xc0
,
0x40
},
{
0xc0
,
0xc0
,
0x60
},
{
0xc0
,
0xc0
,
0x80
},
{
0xc0
,
0xc0
,
0xa0
},
{
0xf0
,
0xfb
,
0xff
},
{
0xa4
,
0xa0
,
0xa0
},
{
0x80
,
0x80
,
0x80
},
{
0x00
,
0x00
,
0xff
},
{
0x00
,
0xff
,
0x00
},
{
0x00
,
0xff
,
0xff
},
{
0xff
,
0x00
,
0x00
},
{
0xff
,
0x00
,
0xff
},
{
0xff
,
0xff
,
0x00
},
{
0xff
,
0xff
,
0xff
},
};
switch
(
bpp
)
{
case
1
:
return
table_1
;
case
4
:
return
table_4
;
case
8
:
return
table_8
;
default:
return
NULL
;
}
}
void
fill_default_color_table
(
BITMAPINFO
*
info
)
{
info
->
bmiHeader
.
biClrUsed
=
1
<<
info
->
bmiHeader
.
biBitCount
;
memcpy
(
info
->
bmiColors
,
get_default_color_table
(
info
->
bmiHeader
.
biBitCount
),
info
->
bmiHeader
.
biClrUsed
*
sizeof
(
RGBQUAD
)
);
}
void
get_ddb_bitmapinfo
(
BITMAPOBJ
*
bmp
,
BITMAPINFO
*
info
)
...
...
dlls/gdi32/gdi_private.h
View file @
3a9cabb8
...
...
@@ -235,6 +235,7 @@ extern void DC_UpdateXforms( DC * dc ) DECLSPEC_HIDDEN;
/* dib.c */
extern
int
bitmap_info_size
(
const
BITMAPINFO
*
info
,
WORD
coloruse
)
DECLSPEC_HIDDEN
;
extern
BOOL
fill_color_table_from_pal_colors
(
BITMAPINFO
*
info
,
HDC
hdc
)
DECLSPEC_HIDDEN
;
extern
const
RGBQUAD
*
get_default_color_table
(
int
bpp
)
DECLSPEC_HIDDEN
;
extern
void
fill_default_color_table
(
BITMAPINFO
*
info
)
DECLSPEC_HIDDEN
;
extern
void
get_ddb_bitmapinfo
(
BITMAPOBJ
*
bmp
,
BITMAPINFO
*
info
)
DECLSPEC_HIDDEN
;
extern
BITMAPINFO
*
copy_packed_dib
(
const
BITMAPINFO
*
src_info
,
UINT
usage
)
DECLSPEC_HIDDEN
;
...
...
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