xserver

xserver with xephyr scale patch
git clone https://git.neptards.moe/u3shit/xserver.git
Log | Files | Refs | README | LICENSE

Font.c (2091B)


      1 /*
      2 
      3 Copyright 1993 by Davor Matic
      4 
      5 Permission to use, copy, modify, distribute, and sell this software
      6 and its documentation for any purpose is hereby granted without fee,
      7 provided that the above copyright notice appear in all copies and that
      8 both that copyright notice and this permission notice appear in
      9 supporting documentation.  Davor Matic makes no representations about
     10 the suitability of this software for any purpose.  It is provided "as
     11 is" without express or implied warranty.
     12 
     13 */
     14 
     15 #ifdef HAVE_XNEST_CONFIG_H
     16 #include <xnest-config.h>
     17 #endif
     18 
     19 #include <X11/X.h>
     20 #include <X11/Xatom.h>
     21 #include <X11/Xproto.h>
     22 #include "misc.h"
     23 #include "regionstr.h"
     24 #include <X11/fonts/font.h>
     25 #include <X11/fonts/fontstruct.h>
     26 #include "dixfontstr.h"
     27 #include "scrnintstr.h"
     28 
     29 #include "Xnest.h"
     30 
     31 #include "Display.h"
     32 #include "XNFont.h"
     33 
     34 int xnestFontPrivateIndex;
     35 
     36 Bool
     37 xnestRealizeFont(ScreenPtr pScreen, FontPtr pFont)
     38 {
     39     void *priv;
     40     Atom name_atom, value_atom;
     41     int nprops;
     42     FontPropPtr props;
     43     int i;
     44     const char *name;
     45 
     46     xfont2_font_set_private(pFont, xnestFontPrivateIndex, NULL);
     47 
     48     name_atom = MakeAtom("FONT", 4, True);
     49     value_atom = 0L;
     50 
     51     nprops = pFont->info.nprops;
     52     props = pFont->info.props;
     53 
     54     for (i = 0; i < nprops; i++)
     55         if (props[i].name == name_atom) {
     56             value_atom = props[i].value;
     57             break;
     58         }
     59 
     60     if (!value_atom)
     61         return False;
     62 
     63     name = NameForAtom(value_atom);
     64 
     65     if (!name)
     66         return False;
     67 
     68     priv = (void *) malloc(sizeof(xnestPrivFont));
     69     xfont2_font_set_private(pFont, xnestFontPrivateIndex, priv);
     70 
     71     xnestFontPriv(pFont)->font_struct = XLoadQueryFont(xnestDisplay, name);
     72 
     73     if (!xnestFontStruct(pFont))
     74         return False;
     75 
     76     return True;
     77 }
     78 
     79 Bool
     80 xnestUnrealizeFont(ScreenPtr pScreen, FontPtr pFont)
     81 {
     82     if (xnestFontPriv(pFont)) {
     83         if (xnestFontStruct(pFont))
     84             XFreeFont(xnestDisplay, xnestFontStruct(pFont));
     85         free(xnestFontPriv(pFont));
     86         xfont2_font_set_private(pFont, xnestFontPrivateIndex, NULL);
     87     }
     88     return True;
     89 }