문제
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의 절제입니까?
해결책
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;
제휴하지 않습니다 StackOverflow