8 WMRetainPixmap(WMPixmap
*pixmap
)
18 WMReleasePixmap(WMPixmap
*pixmap
)
20 wassertr(pixmap
!=NULL
);
24 if (pixmap
->refCount
<1) {
25 XFreePixmap(pixmap
->screen
->display
, pixmap
->pixmap
);
27 XFreePixmap(pixmap
->screen
->display
, pixmap
->mask
);
34 WMCreatePixmapFromXPixmaps(WMScreen
*scrPtr
, Pixmap pixmap
, Pixmap mask
,
35 int width
, int height
, int depth
)
39 pixPtr
= malloc(sizeof(WMPixmap
));
43 pixPtr
->screen
= scrPtr
;
44 pixPtr
->pixmap
= pixmap
;
46 pixPtr
->width
= width
;
47 pixPtr
->height
= height
;
48 pixPtr
->depth
= depth
;
58 WMCreatePixmapFromFile(WMScreen
*scrPtr
, char *fileName
)
63 image
= RLoadImage(scrPtr
->rcontext
, fileName
, 0);
67 pixPtr
= WMCreatePixmapFromRImage(scrPtr
, image
, 127);
76 WMCreatePixmapFromRImage(WMScreen
*scrPtr
, RImage
*image
, int threshold
)
81 if (!RConvertImageMask(scrPtr
->rcontext
, image
, &pixmap
, &mask
,
86 pixPtr
= malloc(sizeof(WMPixmap
));
90 pixPtr
->screen
= scrPtr
;
91 pixPtr
->pixmap
= pixmap
;
93 pixPtr
->width
= image
->width
;
94 pixPtr
->height
= image
->height
;
95 pixPtr
->depth
= scrPtr
->depth
;
103 WMCreateBlendedPixmapFromFile(WMScreen
*scrPtr
, char *fileName
, RColor
*color
)
109 image
= RLoadImage(scrPtr
->rcontext
, fileName
, 0);
113 RCombineImageWithColor(image
, color
);
115 pixPtr
= WMCreatePixmapFromRImage(scrPtr
, image
, 0);
117 RDestroyImage(image
);
124 WMCreatePixmapFromXPMData(WMScreen
*scrPtr
, char **data
)
129 image
= RGetImageFromXPMData(scrPtr
->rcontext
, data
);
133 pixPtr
= WMCreatePixmapFromRImage(scrPtr
, image
, 127);
135 RDestroyImage(image
);
142 WMGetPixmapXID(WMPixmap
*pixmap
)
144 wassertrv(pixmap
!= NULL
, None
);
146 return pixmap
->pixmap
;
151 WMGetPixmapMaskXID(WMPixmap
*pixmap
)
153 wassertrv(pixmap
!= NULL
, None
);
160 WMGetPixmapSize(WMPixmap
*pixmap
)
164 wassertrv(pixmap
!= NULL
, size
);
166 size
.width
= pixmap
->width
;
167 size
.height
= pixmap
->height
;
174 WMGetSystemPixmap(WMScreen
*scr
, int image
)
178 return WMRetainPixmap(scr
->buttonArrow
);
180 case WSIHighlightedReturnArrow
:
181 return WMRetainPixmap(scr
->pushedButtonArrow
);
183 case WSIScrollerDimple
:
184 return WMRetainPixmap(scr
->scrollerDimple
);
187 return WMRetainPixmap(scr
->leftArrow
);
189 case WSIHighlightedArrowLeft
:
190 return WMRetainPixmap(scr
->hiLeftArrow
);
193 return WMRetainPixmap(scr
->rightArrow
);
195 case WSIHighlightedArrowRight
:
196 return WMRetainPixmap(scr
->hiRightArrow
);
199 return WMRetainPixmap(scr
->upArrow
);
201 case WSIHighlightedArrowUp
:
202 return WMRetainPixmap(scr
->hiUpArrow
);
205 return WMRetainPixmap(scr
->downArrow
);
207 case WSIHighlightedArrowDown
:
208 return WMRetainPixmap(scr
->hiDownArrow
);
211 return WMRetainPixmap(scr
->checkMark
);
221 WMDrawPixmap(WMPixmap
*pixmap
, Drawable d
, int x
, int y
)
223 WMScreen
*scr
= pixmap
->screen
;
225 XSetClipMask(scr
->display
, scr
->clipGC
, pixmap
->mask
);
226 XSetClipOrigin(scr
->display
, scr
->clipGC
, x
, y
);
228 XCopyArea(scr
->display
, pixmap
->pixmap
, d
, scr
->clipGC
, 0, 0,
229 pixmap
->width
, pixmap
->height
, x
, y
);