summaryrefslogtreecommitdiff
path: root/include/X11/fonts/libxfont2.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/X11/fonts/libxfont2.h')
-rw-r--r--include/X11/fonts/libxfont2.h163
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_ */