diff options
Diffstat (limited to 'include/X11/fonts/libxfont2.h')
-rw-r--r-- | include/X11/fonts/libxfont2.h | 163 |
1 files changed, 163 insertions, 0 deletions
diff --git a/include/X11/fonts/libxfont2.h b/include/X11/fonts/libxfont2.h new file mode 100644 index 0000000..0ba7419 --- /dev/null +++ b/include/X11/fonts/libxfont2.h @@ -0,0 +1,163 @@ +/* + * Copyright © 2015 Keith Packard + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that copyright + * notice and this permission notice appear in supporting documentation, and + * that the name of the copyright holders not be used in advertising or + * publicity pertaining to distribution of the software without specific, + * written prior permission. The copyright holders make no representations + * about the suitability of this software for any purpose. It is provided "as + * is" without express or implied warranty. + * + * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, + * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO + * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR + * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, + * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER + * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE + * OF THIS SOFTWARE. + */ + +#ifndef _LIBXFONT2_H_ +#define _LIBXFONT2_H_ + +#include <stdarg.h> +#include <stdint.h> +#include <X11/Xfuncproto.h> +#include <X11/fonts/font.h> + +#define XFONT2_FPE_FUNCS_VERSION 1 + +typedef int (*WakeupFpe) (FontPathElementPtr fpe); + +typedef struct _xfont2_fpe_funcs { + int version; + NameCheckFunc name_check; + InitFpeFunc init_fpe; + FreeFpeFunc free_fpe; + ResetFpeFunc reset_fpe; + OpenFontFunc open_font; + CloseFontFunc close_font; + ListFontsFunc list_fonts; + StartLfwiFunc start_list_fonts_with_info; + NextLfwiFunc list_next_font_with_info; + WakeupFpe wakeup_fpe; + ClientDiedFunc client_died; + LoadGlyphsFunc load_glyphs; + StartLaFunc start_list_fonts_and_aliases; + NextLaFunc list_next_font_or_alias; + SetPathFunc set_path_hook; +} xfont2_fpe_funcs_rec, *xfont2_fpe_funcs_ptr; + +typedef void (*FontBlockHandlerProcPtr) (void *timeout); + +typedef void (*FontFdHandlerProcPtr) (int fd, void *data); + +#define XFONT2_CLIENT_FUNCS_VERSION 1 + +typedef struct _xfont2_client_funcs { + int version; + int (*client_auth_generation)(ClientPtr client); + Bool (*client_signal)(ClientPtr client); + void (*delete_font_client_id)(Font id); + void (*verrorf)(const char *f, va_list ap) _X_ATTRIBUTE_PRINTF(1,0); + FontPtr (*find_old_font)(FSID id); + FontResolutionPtr (*get_client_resolutions)(int *num); + int (*get_default_point_size)(void); + Font (*get_new_font_client_id)(void); + uint32_t (*get_time_in_millis)(void); + int (*init_fs_handlers)(FontPathElementPtr fpe, + FontBlockHandlerProcPtr block_handler); + int (*register_fpe_funcs)(const xfont2_fpe_funcs_rec *funcs); + void (*remove_fs_handlers)(FontPathElementPtr fpe, + FontBlockHandlerProcPtr block_handler, + Bool all ); + void *(*get_server_client)(void); + int (*set_font_authorizations)(char **authorizations, + int *authlen, void *client); + int (*store_font_client_font)(FontPtr pfont, Font id); + Atom (*make_atom)(const char *string, unsigned len, int makeit); + int (*valid_atom)(Atom atom); + const char *(*name_for_atom)(Atom atom); + unsigned long (*get_server_generation)(void); + int (*add_fs_fd)(int fd, FontFdHandlerProcPtr handler, void *data); + void (*remove_fs_fd)(int fd); + void (*adjust_fs_wait_for_delay)(void *wt, unsigned long newdelay); +} xfont2_client_funcs_rec, *xfont2_client_funcs_ptr; + +_X_EXPORT int +xfont2_init(xfont2_client_funcs_rec const *client_funcs); + +_X_EXPORT void +xfont2_query_glyph_extents(FontPtr pFont, CharInfoPtr *charinfo, + unsigned long count, ExtentInfoRec *info); + +_X_EXPORT Bool +xfont2_query_text_extents(FontPtr pFont, unsigned long count, + unsigned char *chars, ExtentInfoRec *info); + +_X_EXPORT Bool +xfont2_parse_glyph_caching_mode(char *str); + +_X_EXPORT void +xfont2_init_glyph_caching(void); + +_X_EXPORT void +xfont2_set_glyph_caching_mode(int newmode); + +_X_EXPORT FontNamesPtr +xfont2_make_font_names_record(unsigned size); + +_X_EXPORT void +xfont2_free_font_names(FontNamesPtr pFN); + +_X_EXPORT int +xfont2_add_font_names_name(FontNamesPtr names, + char *name, + int length); + +typedef struct _xfont2_pattern_cache *xfont2_pattern_cache_ptr; + +_X_EXPORT xfont2_pattern_cache_ptr +xfont2_make_font_pattern_cache(void); + +_X_EXPORT void +xfont2_free_font_pattern_cache(xfont2_pattern_cache_ptr cache); + +_X_EXPORT void +xfont2_empty_font_pattern_cache(xfont2_pattern_cache_ptr cache); + +_X_EXPORT void +xfont2_cache_font_pattern(xfont2_pattern_cache_ptr cache, + const char * pattern, + int patlen, + FontPtr pFont); + +_X_EXPORT FontPtr +xfont2_find_cached_font_pattern(xfont2_pattern_cache_ptr cache, + const char * pattern, + int patlen); + +_X_EXPORT void +xfont2_remove_cached_font_pattern(xfont2_pattern_cache_ptr cache, + FontPtr pFont); + +/* private.c */ + +_X_EXPORT int +xfont2_allocate_font_private_index (void); + +static inline void * +xfont2_font_get_private(FontPtr pFont, int n) +{ + if (n > pFont->maxPrivate) + return NULL; + return pFont->devPrivates[n]; +} + +_X_EXPORT Bool +xfont2_font_set_private(FontPtr pFont, int n, void *ptr); + +#endif /* _LIBXFONT2_H_ */ |