Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
N
nx-libs
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
1
Issues
1
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
dimbor
nx-libs
Commits
e2fa4f5c
Commit
e2fa4f5c
authored
Jul 29, 2019
by
Ulrich Sibiller
Committed by
Mike Gabriel
Sep 29, 2019
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Colormap.c: Formatting and scope improvements
parent
19267ddf
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
122 additions
and
123 deletions
+122
-123
Colormap.c
nx-X11/programs/Xserver/hw/nxagent/Colormap.c
+122
-123
No files found.
nx-X11/programs/Xserver/hw/nxagent/Colormap.c
View file @
e2fa4f5c
...
...
@@ -69,11 +69,7 @@ Bool nxagentReconnectAllColormap(void *p0);
Bool
nxagentCreateColormap
(
ColormapPtr
pCmap
)
{
VisualPtr
pVisual
;
XColor
*
colors
;
int
i
,
ncolors
;
Pixel
red
,
green
,
blue
;
Pixel
redInc
,
greenInc
,
blueInc
;
Visual
*
visual
;
int
class
;
...
...
@@ -83,8 +79,8 @@ Bool nxagentCreateColormap(ColormapPtr pCmap)
" visual [%lu].
\n
"
,
pCmap
->
pVisual
);
#endif
pVisual
=
pCmap
->
pVisual
;
ncolors
=
pVisual
->
ColormapEntries
;
VisualPtr
pVisual
=
pCmap
->
pVisual
;
int
ncolors
=
pVisual
->
ColormapEntries
;
pCmap
->
devPriv
=
(
void
*
)
malloc
(
sizeof
(
nxagentPrivColormap
));
...
...
@@ -102,7 +98,6 @@ Bool nxagentCreateColormap(ColormapPtr pCmap)
class
=
pVisual
->
class
;
}
nxagentColormapPriv
(
pCmap
)
->
colormap
=
XCreateColormap
(
nxagentDisplay
,
nxagentDefaultWindows
[
pCmap
->
pScreen
->
myNum
],
...
...
@@ -110,13 +105,15 @@ Bool nxagentCreateColormap(ColormapPtr pCmap)
(
class
&
DynamicClass
)
?
AllocAll
:
AllocNone
);
switch
(
class
)
{
switch
(
class
)
{
case
StaticGray
:
/* read only */
colors
=
(
XColor
*
)
malloc
(
ncolors
*
sizeof
(
XColor
));
for
(
i
=
0
;
i
<
ncolors
;
i
++
)
for
(
i
nt
i
=
0
;
i
<
ncolors
;
i
++
)
colors
[
i
].
pixel
=
i
;
XQueryColors
(
nxagentDisplay
,
nxagentColormap
(
pCmap
),
colors
,
ncolors
);
for
(
i
=
0
;
i
<
ncolors
;
i
++
)
{
for
(
int
i
=
0
;
i
<
ncolors
;
i
++
)
{
pCmap
->
red
[
i
].
co
.
local
.
red
=
colors
[
i
].
red
;
pCmap
->
red
[
i
].
co
.
local
.
green
=
colors
[
i
].
red
;
pCmap
->
red
[
i
].
co
.
local
.
blue
=
colors
[
i
].
red
;
...
...
@@ -126,10 +123,11 @@ Bool nxagentCreateColormap(ColormapPtr pCmap)
case
StaticColor
:
/* read only */
colors
=
(
XColor
*
)
malloc
(
ncolors
*
sizeof
(
XColor
));
for
(
i
=
0
;
i
<
ncolors
;
i
++
)
for
(
i
nt
i
=
0
;
i
<
ncolors
;
i
++
)
colors
[
i
].
pixel
=
i
;
XQueryColors
(
nxagentDisplay
,
nxagentColormap
(
pCmap
),
colors
,
ncolors
);
for
(
i
=
0
;
i
<
ncolors
;
i
++
)
{
for
(
int
i
=
0
;
i
<
ncolors
;
i
++
)
{
pCmap
->
red
[
i
].
co
.
local
.
red
=
colors
[
i
].
red
;
pCmap
->
red
[
i
].
co
.
local
.
green
=
colors
[
i
].
green
;
pCmap
->
red
[
i
].
co
.
local
.
blue
=
colors
[
i
].
blue
;
...
...
@@ -139,21 +137,29 @@ Bool nxagentCreateColormap(ColormapPtr pCmap)
case
TrueColor
:
/* read only */
colors
=
(
XColor
*
)
malloc
(
ncolors
*
sizeof
(
XColor
));
red
=
green
=
blue
=
0L
;
Pixel
red
=
0L
,
green
=
0L
,
blue
=
0L
;
Pixel
redInc
,
greenInc
,
blueInc
;
redInc
=
lowbit
(
pVisual
->
redMask
);
greenInc
=
lowbit
(
pVisual
->
greenMask
);
blueInc
=
lowbit
(
pVisual
->
blueMask
);
for
(
i
=
0
;
i
<
ncolors
;
i
++
)
{
for
(
int
i
=
0
;
i
<
ncolors
;
i
++
)
{
colors
[
i
].
pixel
=
red
|
green
|
blue
;
red
+=
redInc
;
if
(
red
>
pVisual
->
redMask
)
red
=
0L
;
if
(
red
>
pVisual
->
redMask
)
red
=
0L
;
green
+=
greenInc
;
if
(
green
>
pVisual
->
greenMask
)
green
=
0L
;
if
(
green
>
pVisual
->
greenMask
)
green
=
0L
;
blue
+=
blueInc
;
if
(
blue
>
pVisual
->
blueMask
)
blue
=
0L
;
if
(
blue
>
pVisual
->
blueMask
)
blue
=
0L
;
}
XQueryColors
(
nxagentDisplay
,
nxagentColormap
(
pCmap
),
colors
,
ncolors
);
for
(
i
=
0
;
i
<
ncolors
;
i
++
)
{
for
(
int
i
=
0
;
i
<
ncolors
;
i
++
)
{
pCmap
->
red
[
i
].
co
.
local
.
red
=
colors
[
i
].
red
;
pCmap
->
green
[
i
].
co
.
local
.
green
=
colors
[
i
].
green
;
pCmap
->
blue
[
i
].
co
.
local
.
blue
=
colors
[
i
].
blue
;
...
...
@@ -188,10 +194,13 @@ static int nxagentCountInstalledColormapWindows(WindowPtr pWin, void * ptr)
nxagentInstalledColormapWindows
*
icws
=
(
nxagentInstalledColormapWindows
*
)
ptr
;
for
(
int
i
=
0
;
i
<
icws
->
numCmapIDs
;
i
++
)
if
(
SEARCH_PREDICATE
)
{
{
if
(
SEARCH_PREDICATE
)
{
icws
->
numWindows
++
;
return
WT_DONTWALKCHILDREN
;
}
}
return
WT_WALKCHILDREN
;
}
...
...
@@ -201,10 +210,13 @@ static int nxagentGetInstalledColormapWindows(WindowPtr pWin, void * ptr)
nxagentInstalledColormapWindows
*
icws
=
(
nxagentInstalledColormapWindows
*
)
ptr
;
for
(
int
i
=
0
;
i
<
icws
->
numCmapIDs
;
i
++
)
if
(
SEARCH_PREDICATE
)
{
{
if
(
SEARCH_PREDICATE
)
{
icws
->
windows
[
icws
->
index
++
]
=
nxagentWindow
(
pWin
);
return
WT_DONTWALKCHILDREN
;
}
}
return
WT_WALKCHILDREN
;
}
...
...
@@ -240,7 +252,8 @@ void nxagentSetInstalledColormapWindows(ScreenPtr pScreen)
icws
.
numCmapIDs
=
nxagentListInstalledColormaps
(
pScreen
,
icws
.
cmapIDs
);
icws
.
numWindows
=
0
;
WalkTree
(
pScreen
,
nxagentCountInstalledColormapWindows
,
(
void
*
)
&
icws
);
if
(
icws
.
numWindows
)
{
if
(
icws
.
numWindows
)
{
icws
.
windows
=
(
Window
*
)
malloc
((
icws
.
numWindows
+
1
)
*
sizeof
(
Window
));
icws
.
index
=
0
;
WalkTree
(
pScreen
,
nxagentGetInstalledColormapWindows
,
(
void
*
)
&
icws
);
...
...
@@ -254,7 +267,8 @@ void nxagentSetInstalledColormapWindows(ScreenPtr pScreen)
SAFE_free
(
icws
.
cmapIDs
);
if
(
!
nxagentSameInstalledColormapWindows
(
icws
.
windows
,
icws
.
numWindows
))
{
if
(
!
nxagentSameInstalledColormapWindows
(
icws
.
windows
,
icws
.
numWindows
))
{
SAFE_free
(
nxagentOldInstalledColormapWindows
);
#ifdef _XSERVER64
...
...
@@ -281,36 +295,36 @@ void nxagentSetInstalledColormapWindows(ScreenPtr pScreen)
This will only work with default local visual colormaps.
*/
if
(
icws
.
numWindows
)
{
WindowPtr
pWin
;
Visual
*
visual
;
ColormapPtr
pCmap
;
pWin
=
nxagentWindowPtr
(
icws
.
windows
[
0
]);
visual
=
nxagentVisualFromID
(
pScreen
,
wVisual
(
pWin
));
if
(
visual
==
nxagentDefaultVisual
(
pScreen
))
pCmap
=
(
ColormapPtr
)
LookupIDByType
(
wColormap
(
pWin
),
RT_COLORMAP
);
else
pCmap
=
(
ColormapPtr
)
LookupIDByType
(
pScreen
->
defColormap
,
RT_COLORMAP
);
if
(
pCmap
!=
NULL
)
{
WindowPtr
pWin
;
Visual
*
visual
;
ColormapPtr
pCmap
;
pWin
=
nxagentWindowPtr
(
icws
.
windows
[
0
]);
visual
=
nxagentVisualFromID
(
pScreen
,
wVisual
(
pWin
));
if
(
visual
==
nxagentDefaultVisual
(
pScreen
))
pCmap
=
(
ColormapPtr
)
LookupIDByType
(
wColormap
(
pWin
),
RT_COLORMAP
);
else
pCmap
=
(
ColormapPtr
)
LookupIDByType
(
pScreen
->
defColormap
,
RT_COLORMAP
);
if
(
pCmap
!=
NULL
)
{
XSetWindowColormap
(
nxagentDisplay
,
nxagentDefaultWindows
[
pScreen
->
myNum
],
nxagentColormap
(
pCmap
));
}
#ifdef WARNING
else
{
fprintf
(
stderr
,
"nxagentSetInstalledColormapWindows: WARNING! "
"Window at [%p] has no colormap with class [%d].
\n
"
,
(
void
*
)
pWin
,
pWin
->
drawable
.
class
);
}
#endif
XSetWindowColormap
(
nxagentDisplay
,
nxagentDefaultWindows
[
pScreen
->
myNum
],
nxagentColormap
(
pCmap
));
}
#ifdef WARNING
else
{
fprintf
(
stderr
,
"nxagentSetInstalledColormapWindows: WARNING! "
"Window at [%p] has no colormap with class [%d].
\n
"
,
(
void
*
)
pWin
,
pWin
->
drawable
.
class
);
}
#endif
}
#endif
/* DUMB_WINDOW_MANAGERS */
}
else
...
...
@@ -345,7 +359,8 @@ void nxagentDirectInstallColormaps(ScreenPtr pScreen)
{
Colormap
pCmapIDs
[
MAXCMAPS
];
if
(
!
nxagentDoDirectColormaps
)
return
;
if
(
!
nxagentDoDirectColormaps
)
return
;
int
n
=
(
*
pScreen
->
ListInstalledColormaps
)(
pScreen
,
pCmapIDs
);
...
...
@@ -375,45 +390,39 @@ void nxagentDirectUninstallColormaps(ScreenPtr pScreen)
void
nxagentInstallColormap
(
ColormapPtr
pCmap
)
{
int
index
;
ColormapPtr
pOldCmap
;
index
=
pCmap
->
pScreen
->
myNum
;
pOldCmap
=
InstalledMaps
[
index
];
int
index
=
pCmap
->
pScreen
->
myNum
;
ColormapPtr
pOldCmap
=
InstalledMaps
[
index
];
if
(
pCmap
!=
pOldCmap
)
{
nxagentDirectUninstallColormaps
(
pCmap
->
pScreen
);
{
nxagentDirectUninstallColormaps
(
pCmap
->
pScreen
);
/* Uninstall pInstalledMap. Notify all interested parties. */
if
(
pOldCmap
!=
(
ColormapPtr
)
None
)
WalkTree
(
pCmap
->
pScreen
,
TellLostMap
,
(
void
*
)
&
pOldCmap
->
mid
);
/* Uninstall pInstalledMap. Notify all interested parties. */
if
(
pOldCmap
!=
(
ColormapPtr
)
None
)
WalkTree
(
pCmap
->
pScreen
,
TellLostMap
,
(
void
*
)
&
pOldCmap
->
mid
);
InstalledMaps
[
index
]
=
pCmap
;
WalkTree
(
pCmap
->
pScreen
,
TellGainedMap
,
(
void
*
)
&
pCmap
->
mid
);
InstalledMaps
[
index
]
=
pCmap
;
WalkTree
(
pCmap
->
pScreen
,
TellGainedMap
,
(
void
*
)
&
pCmap
->
mid
);
nxagentSetInstalledColormapWindows
(
pCmap
->
pScreen
);
nxagentDirectInstallColormaps
(
pCmap
->
pScreen
);
}
nxagentSetInstalledColormapWindows
(
pCmap
->
pScreen
);
nxagentDirectInstallColormaps
(
pCmap
->
pScreen
);
}
}
void
nxagentUninstallColormap
(
ColormapPtr
pCmap
)
{
int
index
;
ColormapPtr
pCurCmap
;
index
=
pCmap
->
pScreen
->
myNum
;
pCurCmap
=
InstalledMaps
[
index
];
int
index
=
pCmap
->
pScreen
->
myNum
;
ColormapPtr
pCurCmap
=
InstalledMaps
[
index
];
if
(
pCmap
==
pCurCmap
)
{
if
((
unsigned
int
)
pCmap
->
mid
!=
pCmap
->
pScreen
->
defColormap
)
{
if
((
unsigned
int
)
pCmap
->
mid
!=
pCmap
->
pScreen
->
defColormap
)
{
pCurCmap
=
(
ColormapPtr
)
LookupIDByType
(
pCmap
->
pScreen
->
defColormap
,
RT_COLORMAP
);
(
*
pCmap
->
pScreen
->
InstallColormap
)(
pCurCmap
);
}
pCurCmap
=
(
ColormapPtr
)
LookupIDByType
(
pCmap
->
pScreen
->
defColormap
,
RT_COLORMAP
);
(
*
pCmap
->
pScreen
->
InstallColormap
)(
pCurCmap
);
}
}
}
int
nxagentListInstalledColormaps
(
ScreenPtr
pScreen
,
Colormap
*
pCmapIds
)
...
...
@@ -456,50 +465,43 @@ void nxagentStoreColors(ColormapPtr pCmap, int nColors, xColorItem *pColors)
void
nxagentResolveColor
(
unsigned
short
*
pRed
,
unsigned
short
*
pGreen
,
unsigned
short
*
pBlue
,
VisualPtr
pVisual
)
{
int
shift
;
unsigned
int
lim
;
shift
=
16
-
pVisual
->
bitsPerRGBValue
;
lim
=
(
1
<<
pVisual
->
bitsPerRGBValue
)
-
1
;
int
shift
=
16
-
pVisual
->
bitsPerRGBValue
;
unsigned
int
lim
=
(
1
<<
pVisual
->
bitsPerRGBValue
)
-
1
;
if
((
pVisual
->
class
==
PseudoColor
)
||
(
pVisual
->
class
==
DirectColor
))
{
/* rescale to rgb bits */
*
pRed
=
((
*
pRed
>>
shift
)
*
65535
)
/
lim
;
*
pGreen
=
((
*
pGreen
>>
shift
)
*
65535
)
/
lim
;
*
pBlue
=
((
*
pBlue
>>
shift
)
*
65535
)
/
lim
;
}
{
/* rescale to rgb bits */
*
pRed
=
((
*
pRed
>>
shift
)
*
65535
)
/
lim
;
*
pGreen
=
((
*
pGreen
>>
shift
)
*
65535
)
/
lim
;
*
pBlue
=
((
*
pBlue
>>
shift
)
*
65535
)
/
lim
;
}
else
if
(
pVisual
->
class
==
GrayScale
)
{
/* rescale to gray then rgb bits */
*
pRed
=
(
30L
*
*
pRed
+
59L
*
*
pGreen
+
11L
*
*
pBlue
)
/
100
;
*
pBlue
=
*
pGreen
=
*
pRed
=
((
*
pRed
>>
shift
)
*
65535
)
/
lim
;
}
{
/* rescale to gray then rgb bits */
*
pRed
=
(
30L
*
*
pRed
+
59L
*
*
pGreen
+
11L
*
*
pBlue
)
/
100
;
*
pBlue
=
*
pGreen
=
*
pRed
=
((
*
pRed
>>
shift
)
*
65535
)
/
lim
;
}
else
if
(
pVisual
->
class
==
StaticGray
)
{
unsigned
int
limg
;
limg
=
pVisual
->
ColormapEntries
-
1
;
/* rescale to gray then [0..limg] then [0..65535] then rgb bits */
*
pRed
=
(
30L
*
*
pRed
+
59L
*
*
pGreen
+
11L
*
*
pBlue
)
/
100
;
*
pRed
=
((((
*
pRed
*
(
limg
+
1
)))
>>
16
)
*
65535
)
/
limg
;
*
pBlue
=
*
pGreen
=
*
pRed
=
((
*
pRed
>>
shift
)
*
65535
)
/
lim
;
}
{
unsigned
int
limg
=
pVisual
->
ColormapEntries
-
1
;
/* rescale to gray then [0..limg] then [0..65535] then rgb bits */
*
pRed
=
(
30L
*
*
pRed
+
59L
*
*
pGreen
+
11L
*
*
pBlue
)
/
100
;
*
pRed
=
((((
*
pRed
*
(
limg
+
1
)))
>>
16
)
*
65535
)
/
limg
;
*
pBlue
=
*
pGreen
=
*
pRed
=
((
*
pRed
>>
shift
)
*
65535
)
/
lim
;
}
else
{
unsigned
limr
,
limg
,
limb
;
limr
=
pVisual
->
redMask
>>
pVisual
->
offsetRed
;
limg
=
pVisual
->
greenMask
>>
pVisual
->
offsetGreen
;
limb
=
pVisual
->
blueMask
>>
pVisual
->
offsetBlue
;
/* rescale to [0..limN] then [0..65535] then rgb bits */
*
pRed
=
((((((
*
pRed
*
(
limr
+
1
))
>>
16
)
*
65535
)
/
limr
)
>>
shift
)
*
65535
)
/
lim
;
*
pGreen
=
((((((
*
pGreen
*
(
limg
+
1
))
>>
16
)
*
65535
)
/
limg
)
>>
shift
)
*
65535
)
/
lim
;
*
pBlue
=
((((((
*
pBlue
*
(
limb
+
1
))
>>
16
)
*
65535
)
/
limb
)
>>
shift
)
*
65535
)
/
lim
;
}
{
unsigned
limr
=
pVisual
->
redMask
>>
pVisual
->
offsetRed
;
unsigned
limg
=
pVisual
->
greenMask
>>
pVisual
->
offsetGreen
;
unsigned
limb
=
pVisual
->
blueMask
>>
pVisual
->
offsetBlue
;
/* rescale to [0..limN] then [0..65535] then rgb bits */
*
pRed
=
((((((
*
pRed
*
(
limr
+
1
))
>>
16
)
*
65535
)
/
limr
)
>>
shift
)
*
65535
)
/
lim
;
*
pGreen
=
((((((
*
pGreen
*
(
limg
+
1
))
>>
16
)
*
65535
)
/
limg
)
>>
shift
)
*
65535
)
/
lim
;
*
pBlue
=
((((((
*
pBlue
*
(
limb
+
1
))
>>
16
)
*
65535
)
/
limb
)
>>
shift
)
*
65535
)
/
lim
;
}
}
Bool
nxagentCreateDefaultColormap
(
ScreenPtr
pScreen
)
...
...
@@ -507,7 +509,6 @@ Bool nxagentCreateDefaultColormap(ScreenPtr pScreen)
VisualPtr
pVisual
;
ColormapPtr
pCmap
;
unsigned
short
zero
=
0
,
ones
=
0xFFFF
;
Pixel
wp
,
bp
;
#if defined(DEBUG) || defined(DEBUG_COLORMAP)
fprintf
(
stderr
,
"Debug: Searching for the root visual [%lu].
\n
"
,
...
...
@@ -523,8 +524,8 @@ Bool nxagentCreateDefaultColormap(ScreenPtr pScreen)
!=
Success
)
return
False
;
wp
=
pScreen
->
whitePixel
;
bp
=
pScreen
->
blackPixel
;
Pixel
wp
=
pScreen
->
whitePixel
;
Pixel
bp
=
pScreen
->
blackPixel
;
if
((
AllocColor
(
pCmap
,
&
ones
,
&
ones
,
&
ones
,
&
wp
,
0
)
!=
Success
)
||
(
AllocColor
(
pCmap
,
&
zero
,
&
zero
,
&
zero
,
&
bp
,
0
)
!=
...
...
@@ -543,7 +544,6 @@ static void nxagentReconnectColormap(void * p0, XID x1, void * p2)
{
ColormapPtr
pCmap
=
(
ColormapPtr
)
p0
;
Bool
*
pBool
=
(
Bool
*
)
p2
;
VisualPtr
pVisual
;
#ifdef NXAGENT_RECONNECT_COLORMAP_DEBUG
fprintf
(
stderr
,
"nxagentReconnectColormap: %p
\n
"
,
pCmap
);
...
...
@@ -552,7 +552,7 @@ static void nxagentReconnectColormap(void * p0, XID x1, void * p2)
if
(
!*
pBool
||
!
pCmap
)
return
;
pVisual
=
pCmap
->
pVisual
;
VisualPtr
pVisual
=
pCmap
->
pVisual
;
nxagentColormapPriv
(
pCmap
)
->
colormap
=
XCreateColormap
(
nxagentDisplay
,
...
...
@@ -569,14 +569,13 @@ static void nxagentReconnectColormap(void * p0, XID x1, void * p2)
Bool
nxagentReconnectAllColormap
(
void
*
p0
)
{
int
cid
;
Bool
success
=
True
;
#if defined(NXAGENT_RECONNECT_DEBUG) || defined(NXAGENT_RECONNECT_COLORMAP_DEBUG)
fprintf
(
stderr
,
"nxagentReconnectAllColormap
\n
"
);
#endif
for
(
cid
=
0
;
(
cid
<
MAXCLIENTS
)
&&
success
;
cid
++
)
for
(
int
cid
=
0
;
(
cid
<
MAXCLIENTS
)
&&
success
;
cid
++
)
{
if
(
clients
[
cid
]
&&
success
)
{
...
...
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