URI:
       graphics_xlib.h - ltk - GUI toolkit for X11 (WIP)
  HTML git clone git://lumidify.org/ltk.git (fast, but not encrypted)
  HTML git clone https://lumidify.org/git/ltk.git (encrypted, but very slow)
  HTML git clone git://4kcetb7mo7hj6grozzybxtotsub5bempzo4lirzc3437amof2c2impyd.onion/ltk.git (over tor)
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
       graphics_xlib.h (2393B)
       ---
            1 /*
            2  * Copyright (c) 2022-2024 lumidify <nobody@lumidify.org>
            3  *
            4  * Permission to use, copy, modify, and/or distribute this software for any
            5  * purpose with or without fee is hereby granted, provided that the above
            6  * copyright notice and this permission notice appear in all copies.
            7  *
            8  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
            9  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
           10  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
           11  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
           12  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
           13  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
           14  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
           15  */
           16 
           17 #ifndef LTK_GRAPHICS_XLIB_H
           18 #define LTK_GRAPHICS_XLIB_H
           19 
           20 /* FIXME: make this a setting somewhere sensible */
           21 #define USE_XLIB_GRAPHICS 1
           22 
           23 #if USE_PANGO == 1
           24 #undef USE_XFT
           25 #define USE_XFT 1
           26 #endif
           27 
           28 #include <X11/X.h>
           29 #include <X11/Xlib.h>
           30 #include <X11/extensions/Xdbe.h>
           31 
           32 #if USE_XFT == 1
           33 #include <X11/Xft/Xft.h>
           34 #endif
           35 
           36 #include "rect.h"
           37 #include "array.h"
           38 #include "graphics.h"
           39 
           40 struct ltk_moninfo {
           41         int x, y;
           42         int width, height;
           43         int mwidth, mheight;
           44         unsigned int dpi;
           45 };
           46 
           47 LTK_ARRAY_INIT_STRUCT_DECL(moninfo, struct ltk_moninfo)
           48 
           49 /* FIXME: figure out which of these items might make more
           50    sense in ltk_renderwindow */
           51 struct ltk_renderdata {
           52         Display *dpy;
           53         Visual *vis;
           54         ltk_array(moninfo) *monitors;
           55         Colormap cm;
           56         Atom wm_delete_msg;
           57         Window root_window;
           58         int screen;
           59         int depth;
           60         int xkb_event_type;
           61         int xrandr_event_type;
           62         /* double buffering enabled */
           63         char db_enabled;
           64         char xkb_supported;
           65         char xrandr_supported;
           66 };
           67 
           68 struct ltk_renderwindow {
           69         struct ltk_renderdata *renderdata;
           70         unsigned int dpi;
           71         GC gc;
           72         Window xwindow;
           73         XdbeBackBuffer back_buf;
           74         Drawable drawable;
           75         XIM xim;
           76         XIC xic;
           77         XPoint spot;
           78         XVaNestedList spotlist;
           79         ltk_rect rect;
           80 };
           81 
           82 /* FIXME: only generate draw if needed */
           83 struct ltk_surface {
           84         int w, h;
           85         ltk_renderwindow *window;
           86         Drawable d;
           87         #if USE_XFT == 1
           88         XftDraw *xftdraw;
           89         #endif
           90         char resizable;
           91 };
           92 
           93 int ltk_recalc_renderwindow_dpi(ltk_renderwindow *window);
           94 
           95 struct ltk_color {
           96         XColor xcolor;
           97         #if USE_XFT == 1
           98         XftColor xftcolor;
           99         #endif
          100 };
          101 
          102 #endif /* LTK_GRAPHICS_XLIB_H */