Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
libSDL
Project
Project
Details
Activity
Releases
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
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
PocketInsanity
libSDL
Commits
662a1c6c
Commit
662a1c6c
authored
Feb 19, 2011
by
Sam Lantinga
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Autogenerated full mask checks for pixel format match
parent
009af96c
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
133 additions
and
70 deletions
+133
-70
SDL_pixels.c
src/video/SDL_pixels.c
+133
-70
No files found.
src/video/SDL_pixels.c
View file @
662a1c6c
...
@@ -236,60 +236,107 @@ SDL_MasksToPixelFormatEnum(int bpp, Uint32 Rmask, Uint32 Gmask, Uint32 Bmask,
...
@@ -236,60 +236,107 @@ SDL_MasksToPixelFormatEnum(int bpp, Uint32 Rmask, Uint32 Gmask, Uint32 Bmask,
{
{
switch
(
bpp
)
{
switch
(
bpp
)
{
case
8
:
case
8
:
switch
(
Rmask
)
{
if
(
Rmask
==
0
)
{
case
0
:
return
SDL_PIXELFORMAT_INDEX8
;
return
SDL_PIXELFORMAT_INDEX8
;
case
0xE0
:
}
return
SDL_PIXELFORMAT_RGB332
;
if
(
Rmask
==
0xE0
&&
Gmask
==
0x1C
&&
Bmask
==
0x03
&&
Amask
==
0x00
)
{
return
SDL_PIXELFORMAT_RGB332
}
}
break
;
break
;
case
12
:
case
12
:
switch
(
Rmask
)
{
if
(
Rmask
==
0
)
{
case
0x0F00
:
return
SDL_PIXELFORMAT_RGB444
return
SDL_PIXELFORMAT_RGB444
;
}
if
(
Rmask
==
0x0F00
&&
Gmask
==
0x00F0
&&
Bmask
==
0x000F
&&
Amask
==
0x0000
)
{
return
SDL_PIXELFORMAT_RGB444
}
}
break
;
break
;
case
15
:
case
15
:
if
(
Rmask
==
0
)
{
if
(
Rmask
==
0
)
{
return
SDL_PIXELFORMAT_RGB555
;
return
SDL_PIXELFORMAT_RGB555
;
}
}
if
(
Rmask
==
0x7C00
&&
Bmask
==
0x001F
)
{
/* Fall through to 16-bit checks */
return
SDL_PIXELFORMAT_RGB555
;
}
if
(
Rmask
==
0x001F
&&
Bmask
==
0x7C00
)
{
return
SDL_PIXELFORMAT_BGR555
;
}
break
;
case
16
:
case
16
:
switch
(
Rmask
)
{
if
(
Rmask
==
0
)
{
case
0
:
return
SDL_PIXELFORMAT_RGB565
;
return
SDL_PIXELFORMAT_RGB565
;
case
0xF000
:
}
return
SDL_PIXELFORMAT_RGBA4444
;
if
(
Rmask
==
0x7C00
&&
case
0x0F00
:
Gmask
==
0x03E0
&&
return
SDL_PIXELFORMAT_ARGB4444
;
Bmask
==
0x001F
&&
case
0x00F0
:
Amask
==
0x0000
)
{
return
SDL_PIXELFORMAT_BGRA4444
;
return
SDL_PIXELFORMAT_RGB555
case
0x000F
:
}
return
SDL_PIXELFORMAT_ABGR4444
;
if
(
Rmask
==
0x001F
&&
case
0xF800
:
Gmask
==
0x03E0
&&
if
(
Bmask
==
0x001F
)
{
Bmask
==
0x7C00
&&
return
SDL_PIXELFORMAT_RGB565
;
Amask
==
0x0000
)
{
}
return
SDL_PIXELFORMAT_BGR555
break
;
}
case
0x7C00
:
if
(
Rmask
==
0x0F00
&&
if
(
Bmask
==
0x001F
)
{
Gmask
==
0x00F0
&&
return
SDL_PIXELFORMAT_RGB555
;
Bmask
==
0x000F
&&
}
Amask
==
0xF000
)
{
break
;
return
SDL_PIXELFORMAT_ARGB4444
case
0x001F
:
}
if
(
Bmask
==
0xF800
)
{
if
(
Rmask
==
0xF000
&&
return
SDL_PIXELFORMAT_BGR565
;
Gmask
==
0x0F00
&&
}
Bmask
==
0x00F0
&&
if
(
Bmask
==
0x7C00
)
{
Amask
==
0x000F
)
{
return
SDL_PIXELFORMAT_BGR555
;
return
SDL_PIXELFORMAT_RGBA4444
}
}
break
;
if
(
Rmask
==
0x000F
&&
Gmask
==
0x00F0
&&
Bmask
==
0x0F00
&&
Amask
==
0xF000
)
{
return
SDL_PIXELFORMAT_ABGR4444
}
if
(
Rmask
==
0x00F0
&&
Gmask
==
0x0F00
&&
Bmask
==
0xF000
&&
Amask
==
0x000F
)
{
return
SDL_PIXELFORMAT_BGRA4444
}
if
(
Rmask
==
0x7C00
&&
Gmask
==
0x03E0
&&
Bmask
==
0x001F
&&
Amask
==
0x8000
)
{
return
SDL_PIXELFORMAT_ARGB1555
}
if
(
Rmask
==
0xF800
&&
Gmask
==
0x07C0
&&
Bmask
==
0x003E
&&
Amask
==
0x0001
)
{
return
SDL_PIXELFORMAT_RGBA5551
}
if
(
Rmask
==
0x001F
&&
Gmask
==
0x03E0
&&
Bmask
==
0x7C00
&&
Amask
==
0x8000
)
{
return
SDL_PIXELFORMAT_ABGR1555
}
if
(
Rmask
==
0x003E
&&
Gmask
==
0x07C0
&&
Bmask
==
0xF800
&&
Amask
==
0x0001
)
{
return
SDL_PIXELFORMAT_BGRA5551
}
if
(
Rmask
==
0xF800
&&
Gmask
==
0x07E0
&&
Bmask
==
0x001F
&&
Amask
==
0x0000
)
{
return
SDL_PIXELFORMAT_RGB565
}
if
(
Rmask
==
0x001F
&&
Gmask
==
0x07E0
&&
Bmask
==
0xF800
&&
Amask
==
0x0000
)
{
return
SDL_PIXELFORMAT_BGR565
}
}
break
;
break
;
case
24
:
case
24
:
...
@@ -309,34 +356,50 @@ SDL_MasksToPixelFormatEnum(int bpp, Uint32 Rmask, Uint32 Gmask, Uint32 Bmask,
...
@@ -309,34 +356,50 @@ SDL_MasksToPixelFormatEnum(int bpp, Uint32 Rmask, Uint32 Gmask, Uint32 Bmask,
#endif
#endif
}
}
case
32
:
case
32
:
switch
(
Rmask
)
{
if
(
Rmask
==
0
)
{
case
0xFF000000
:
return
SDL_PIXELFORMAT_RGB888
;
if
(
Amask
==
0x000000FF
)
{
}
return
SDL_PIXELFORMAT_RGBA8888
;
if
(
Rmask
==
0x00FF0000
&&
}
Gmask
==
0x0000FF00
&&
break
;
Bmask
==
0x000000FF
&&
case
0
:
Amask
==
0x00000000
)
{
case
0x00FF0000
:
return
SDL_PIXELFORMAT_RGB888
if
(
Amask
==
0xFF000000
)
{
}
return
SDL_PIXELFORMAT_ARGB8888
;
if
(
Rmask
==
0x000000FF
&&
}
else
{
Gmask
==
0x0000FF00
&&
return
SDL_PIXELFORMAT_RGB888
;
Bmask
==
0x00FF0000
&&
}
Amask
==
0x00000000
)
{
break
;
return
SDL_PIXELFORMAT_BGR888
case
0x0000FF00
:
}
if
(
Amask
==
0x000000FF
)
{
if
(
Rmask
==
0x00FF0000
&&
return
SDL_PIXELFORMAT_BGRA8888
;
Gmask
==
0x0000FF00
&&
}
Bmask
==
0x000000FF
&&
break
;
Amask
==
0xFF000000
)
{
case
0x000000FF
:
return
SDL_PIXELFORMAT_ARGB8888
if
(
Amask
==
0xFF000000
)
{
}
return
SDL_PIXELFORMAT_ABGR8888
;
if
(
Rmask
==
0xFF000000
&&
}
else
{
Gmask
==
0x00FF0000
&&
return
SDL_PIXELFORMAT_BGR888
;
Bmask
==
0x0000FF00
&&
}
Amask
==
0x000000FF
)
{
break
;
return
SDL_PIXELFORMAT_RGBA8888
case
0x3FF00000
:
}
return
SDL_PIXELFORMAT_ARGB2101010
;
if
(
Rmask
==
0x000000FF
&&
Gmask
==
0x0000FF00
&&
Bmask
==
0x00FF0000
&&
Amask
==
0xFF000000
)
{
return
SDL_PIXELFORMAT_ABGR8888
}
if
(
Rmask
==
0x0000FF00
&&
Gmask
==
0x00FF0000
&&
Bmask
==
0xFF000000
&&
Amask
==
0x000000FF
)
{
return
SDL_PIXELFORMAT_BGRA8888
}
if
(
Rmask
==
0x3FF00000
&&
Gmask
==
0x000FFC00
&&
Bmask
==
0x000003FF
&&
Amask
==
0xC0000000
)
{
return
SDL_PIXELFORMAT_ARGB2101010
}
}
}
}
return
SDL_PIXELFORMAT_UNKNOWN
;
return
SDL_PIXELFORMAT_UNKNOWN
;
...
...
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