>>106488051 (OP)
OP code
#include <stdint.h>
#include <X11/Xlib.h>
#include <X11/Xos.h>
#define MIN(x, y) (((x) < (y)) ? (x) : (y))
int32_t swastika[] = {
2, 0,
1, 1,
-1, -1,
-2, 0
};
int main(int argc, char **argv){
Display *dis = XOpenDisplay(NULL);
Window root;
uint32_t border_width;
uint32_t depth;
uint32_t win_w, win_h;
int32_t win_x, win_y;
Window win = XCreateSimpleWindow(dis, RootWindow(dis, DefaultScreen(dis)),
10, 10,
800, 600,
0, 0x0, 0x0
);
XStoreName(dis, win, "Swastika");
GC gc = XCreateGC(dis, win, 0, NULL);
XMapWindow(dis, win);
while(1){
XGetGeometry(dis, win,
&root,
&win_x, &win_y, &win_w, &win_h,
&border_width, &depth
);
XSetForeground(dis, gc, 0x990000);
XFillRectangle(dis, win, gc,
0, 0, win_w, win_h
);
int32_t midx = win_w / 2;
int32_t midy = win_h / 2;
int32_t size = MIN(midx, midy) * 1.3;
XSetForeground(dis, gc, 0xFFFFFF);
XSetArcMode(dis, gc, ArcChord);
XFillArc(dis, win, gc,
midx - size / 2,
midy - size / 2,
size, size,
0, 360 * 64
);
XSetForeground(dis, gc, 0x000000);
XSetLineAttributes(dis, gc,
size / 10, LineSolid, CapProjecting, JoinMiter
);
int32_t mx = size / 6;
int32_t my = -size / 6;
for(int i = 0; i < sizeof(swastika) / sizeof(*swastika) - 2; i += 2){
int32_t *line = swastika + i;
XDrawLine(dis, win, gc,
line[0] * mx + midx, +line[1] * my + midy,
line[2] * mx + midx, +line[3] * my + midy
);
XDrawLine(dis, win, gc,
line[1] * mx + midx, -line[0] * my + midy,
line[3] * mx + midx, -line[2] * my + midy
);
usleep(4000);
}
}
return 0;
}