This is littleXwin.c in view mode; [Download] [Up]
/**************************************************************/ #include <stdio.h> #include <X11/Xlib.h> /* the X library */ #include <X11/Xutil.h> /* the X library */ /* a few arbitary constants */ #define START_X 10 #define START_Y 20 #define WINDOW_WIDTH 225 #define WINDOW_HEIGHT 400 #define BORDER_WIDTH 1 #define KEY_STR_LENGTH 20 Display *the_display; /* the display that will be used */ int the_screen; /* the screen that will be used */ Window root_window; /* the root window on the screen */ XSizeHints size_hints; /* size hints for the window manager */ XEvent the_event; /* the structure for the input event */ XSetWindowAttributes attributes;/* the windows attributes */ GC the_solid_GC, the_clear_GC; /* the graphics contexts */ XGCValues the_solid_GC_values, the_clear_GC_values; Colormap cmap; XFontStruct *the_fontstruct; /* the font info to be used */ Window open_window() { Window the_window; /* the window that will be opened */ int i, stop; /* Set the display to be the default display (ie, your display as given in the environment variable DISPLAY). */ if ((the_display = XOpenDisplay("")) == NULL) { printf("can't open display\n"); return(-1); } /* A few useful values. */ the_screen = DefaultScreen(the_display); root_window = RootWindow(the_display,the_screen); /* Set the size hints for the window manager. */ size_hints.x = START_X; size_hints.y = START_Y; size_hints.width = WINDOW_WIDTH; size_hints.height = WINDOW_HEIGHT; size_hints.flags = PSize|PPosition; /* Create a window of fixed size, origin, and borderwidth. The window will have a black border and white background. */ the_window = XCreateSimpleWindow(the_display,root_window, size_hints.x,size_hints.y,size_hints.width, size_hints.height,BORDER_WIDTH, BlackPixel(the_display,the_screen), WhitePixel(the_display,the_screen)); XSetStandardProperties(the_display,the_window,"My Window","My Icon", None,NULL,NULL,&size_hints); cmap = DefaultColormap(the_display, the_screen); the_solid_GC = XCreateGC(the_display, the_window, None, &the_solid_GC_values); the_clear_GC = XCreateGC(the_display, the_window, None, &the_clear_GC_values); /* for a sun */ XSetBackground(the_display, the_solid_GC, BlackPixel(the_display,the_screen)); XSetForeground(the_display, the_solid_GC, BlackPixel(the_display,the_screen)); XSetBackground(the_display, the_clear_GC, WhitePixel(the_display,the_screen)); XSetForeground(the_display, the_clear_GC, WhitePixel(the_display,the_screen)); if ((the_fontstruct = XLoadQueryFont(the_display,"8x13")) == NULL) { printf("could not open font\n"); return(-1); } /* Put the font into the graphics context for draw operations. */ XSetFont(the_display, the_solid_GC, the_fontstruct->fid); XSetFont(the_display, the_clear_GC, the_fontstruct->fid); /* Tell the server to make the window visible. */ XMapWindow(the_display,the_window); attributes.bit_gravity = NorthWestGravity; XChangeWindowAttributes(the_display, the_window, CWBitGravity, &attributes); XFlush(the_display); return(the_window); } int close_window(the_window) Window the_window; { XDestroyWindow(the_display, the_window); XFlush(the_display); return(1); } int draw_line(the_window, x1, y1, x2, y2) Window the_window; int x1, y1, x2, y2; { XDrawLine(the_display, the_window, the_solid_GC, x1, y1, x2, y2); XFlush(the_display); return(1); } int draw_arc(the_window, x, y, width, height, angle1, angle2) Window the_window; int x, y, width, height, angle1, angle2; { XDrawArc(the_display, the_window, the_solid_GC, x, y, width, height, angle1, angle2); XFlush(the_display); return(1); } int fill_arc(the_window, x, y, width, height, angle1, angle2) Window the_window; int x, y, width, height, angle1, angle2; { XFillArc(the_display, the_window, the_solid_GC, x, y, width, height, angle1, angle2); XFlush(the_display); return(1); } int clear_arc(the_window, x, y, width, height, angle1, angle2) Window the_window; int x, y, width, height, angle1, angle2; { XFillArc(the_display, the_window, the_clear_GC, x, y, width, height, angle1, angle2); XFlush(the_display); return(1); } int set_arc_mode (pie_or_chord) { if (pie_or_chord == 0) { XSetArcMode(the_display, the_solid_GC, ArcChord); XSetArcMode(the_display, the_clear_GC, ArcChord); } else { XSetArcMode(the_display, the_solid_GC, ArcPieSlice); XSetArcMode(the_display, the_clear_GC, ArcPieSlice); } return(1); } int erase_line(the_window, x1, y1, x2, y2) Window the_window; int x1, y1, x2, y2; { XDrawLine(the_display, the_window, the_clear_GC, x1, y1, x2, y2); XFlush(the_display); return(1); } int draw_text(the_window, string, x, y) Window the_window; char *string; int x, y; { XDrawString(the_display, the_window, the_solid_GC, x, y, string, strlen(string)); XFlush(the_display); return(1); } int erase_text(the_window, string, x, y) Window the_window; char *string; int x, y; { XDrawString(the_display, the_window, the_clear_GC, x, y, string, strlen(string)); XFlush(the_display); return(1); } int clear_window(the_window) Window the_window; { XClearWindow(the_display, the_window); XFlush(the_display); return(1); } int resize_window(the_window, width, height) Window the_window; int width, height; { XResizeWindow(the_display, the_window, width, height); XFlush(the_display); return(1); } int raise_window(the_window) Window the_window; { XRaiseWindow(the_display, the_window); XFlush(the_display); return(1); } int use_font (font_name) char *font_name; { if ((the_fontstruct = XLoadQueryFont(the_display, font_name)) == NULL) return(-1); /* Put the font into the graphics context for draw operations. */ XSetFont(the_display, the_solid_GC, the_fontstruct->fid); XSetFont(the_display, the_clear_GC, the_fontstruct->fid); XFlush(the_display); return(1); } int set_background (the_window, color_string) Window the_window; char *color_string; { XColor color; int result; if (result = XParseColor(the_display, cmap, color_string, &color)) { if (result = XAllocColor(the_display, cmap, &color)) { XSetWindowBackground(the_display, the_window, color.pixel); XSetBackground(the_display, the_clear_GC, color.pixel); XSetForeground(the_display, the_clear_GC, color.pixel); XFlush(the_display); } } return(result); } int set_foreground (color_string) char *color_string; { XColor color; int result; if (result = XParseColor(the_display, cmap, color_string, &color)) { if (result = XAllocColor(the_display, cmap, &color)) { XSetForeground(the_display, the_solid_GC, color.pixel); XSetBackground(the_display, the_solid_GC, color.pixel); XFlush(the_display); return(1); } } }
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.