从XDrawString 男人页面它似乎aceepts签署32位x和y坐标

  

int XDrawString(Display *display, Drawable d, GC gc, int x, int y, char *string, int length);

请注意X和Y两者是如何INT(即:上的gcc / LINUX2.6-I386 32位带符号整数至少)

问题是,当我通过y = 32767(2 ^ 15 - 1)。该字符串被绘制在正确的位置,但高于此值的字符串不绘制任何

我怀疑内部32位整数,不使用,而是16位有符号的坐标的整数。

鉴于手册页似乎表明该函数接受32位整数,有没有需要打开允许使用的时间越长整数的一些编译选项?或者这是Xlib的的limmitation?

有帮助吗?

解决方案

在X11协议确实指定的16位。

看一看定义为在xPolyTextReq <X11/Xproto.h>

typedef struct {
    CARD8 reqType;
    CARD8 pad;
    CARD16 length B16;
    Drawable drawable B32;
    GContext gc B32;
    INT16 x B16, y B16;         /* items (xTextElt) start after struct */
} xPolyTextReq;
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top