scott@mccall.com (08/28/90)
I've got a problem with creating a cursor.
I'm wanting to create a 4x4 pixel cursor(please no flames
for choice of cursor,as it is relevant to the application
I'm working on) with a hotspot at 2,2. And cursor_bits defined
as:: static char cursor_bits[] = {0x0f,0x0f,0x0f,0x0f};
I setup a routine that has these calls:
XCreatePixmapFromBitmapData
XLookupColor
XCreatePixmapCursor
XDefineCursor
The pixmap displayed seems to be 4 high and 16(?) long, with
the first 4 pixels set and random pixels set after that. It
does seem to change from compliation to compliation.
I'm running this on VMS ver5.3 on a DECstation 2000.
Any comments and help is greatly appreciated. Thanks.
--
Scott Davis <scott@mccall.com> The McCall Pattern Company
(uucp: ...!rutgers!ksuvax1!mccall!scott) 615 McCall Road
(800)255-2762, in Kansas (913)776-4041 Manhattan, KS 66502, USAmouse@LARRY.MCRCIM.MCGILL.EDU (09/04/90)
> I'm wanting to create a 4x4 pixel cursor [...] with a hotspot at 2,2. > And cursor_bits defined as:: static char cursor_bits[] = {[...]}; > I setup a routine that has these calls: > XCreatePixmapFromBitmapData > XLookupColor > XCreatePixmapCursor > XDefineCursor > The pixmap displayed seems to be 4 high and 16(?) long, with the > first 4 pixels set and random pixels set after that. It does seem to > change from compliation to compliation. Without seeing the arguments you pass to those calls (in particular, to XCreatePixmapFromBitmapData and XCreatePixmapCursor), it's hard to do more than guess. However... I would guess you are passing None as the mask pixmap to XCreatePixmapCursor, and the cursor image pixmap is actually stored with a width of 16, and the other 12 columns are junk left over from whatever was previously using that memory. I suspect this is technically legal; the Xlib document says "The components of the cursor can be transformed arbitrarily to meet display limitations.", which sounds like a license to do anything it pleases, but I would still call this a bug. (Seems to me it should restrict the cursor to the size of the supplied pixmap!) The likliest-to-work fix that comes to mind is to use an explicit mask pixmap. Since you say you want a 4x4 cursor, create a 4x4 pixmap of depth 1 and fill it with 1s (either with XCreatePixmapFromBitmapData or with explicit calls), then pass that to XCreatePixmapCursor. der Mouse old: mcgill-vision!mouse new: mouse@larry.mcrcim.mcgill.edu