#ifndef _FSLIB_H_
#define _FSLIB_H_
#include <X11/Xfuncproto.h>
#include <X11/fonts/FS.h>
#include <X11/fonts/FSproto.h>
#define Bool int
#define Status int
#define True 1
#define False 0
#define QueuedAlready 0
#define QueuedAfterReading 1
#define QueuedAfterFlush 2
#define FSServerString(svr) ((svr)->server_name)
#define FSVendorRelease(svr) ((svr)->release)
#define FSProtocolVersion(svr) ((svr)->proto_version)
#define FSServerVendor(svr) ((svr)->vendor)
#define FSAuthorizationData(svr) ((svr)->auth_data)
#define FSAlternateServers(svr) ((svr)->alternate_servers)
#define FSNumAlternateServers(svr) ((svr)->num_alternates)
#define FSQLength(svr) ((svr)->qlen)
#define FSNextRequest(svr) ((svr)->request + 1)
#define FSLastKnownRequestProcessed(svr) ((svr)->last_request_read)
#define FSAllocID(svr) ((*(svr)->resource_alloc)((svr)))
typedef struct _alternate {
Bool subset;
char *name;
} AlternateServer;
typedef struct _FSExtData {
int number;
struct _FSExtData *next;
int (*free_private) (char *);
char *private_data;
} FSExtData;
typedef struct {
int extension;
int major_opcode;
int first_event;
int first_error;
} FSExtCodes;
typedef struct _FSServer FSServer;
typedef union _FSEvent FSEvent;
typedef struct _FSExtent {
struct _FSExtent *next;
FSExtCodes codes;
int (*close_server) (FSServer *, FSExtCodes *);
int (*error) (FSServer *, fsError *, FSExtCodes *, int *);
int (*error_string) (FSServer *, int, FSExtCodes *, char *, int);
char *name;
} _FSExtension;
typedef int (*FSSyncHandler)(FSServer *);
struct _FSServer {
struct _FSServer *next;
int fd;
int proto_version;
char *vendor;
int byte_order;
int vnumber;
int release;
int resource_id;
struct _FSQEvent *head,
*tail;
int qlen;
unsigned long last_request_read;
unsigned long request;
char *last_req;
char *buffer;
char *bufptr;
char *bufmax;
unsigned max_request_size;
char *server_name;
char *auth_data;
AlternateServer *alternate_servers;
int num_alternates;
FSExtData *ext_data;
_FSExtension *ext_procs;
int ext_number;
Bool (*event_vec[132]) (FSServer *, FSEvent *, fsEvent *);
Status (*wire_vec[132]) (FSServer *, FSEvent *, fsEvent *);
char *scratch_buffer;
unsigned long scratch_length;
FSSyncHandler synchandler;
unsigned long flags;
struct _XtransConnInfo *trans_conn;
};
typedef struct {
int type;
unsigned long serial;
Bool send_event;
FSServer *server;
} FSAnyEvent;
typedef struct {
int type;
FSServer *server;
FSID resourceid;
unsigned long serial;
unsigned char error_code;
unsigned char request_code;
unsigned char minor_code;
} FSErrorEvent;
union _FSEvent {
int type;
FSAnyEvent fsany;
};
typedef struct _FSQEvent {
struct _FSQEvent *next;
FSEvent event;
} _FSQEvent;
typedef unsigned long FSBitmapFormat;
typedef unsigned long FSBitmapFormatMask;
typedef struct _FSChar2b {
unsigned char high;
unsigned char low;
} FSChar2b;
typedef struct _FSRange {
FSChar2b min_char;
FSChar2b max_char;
} FSRange;
typedef struct _FSOffset {
unsigned int position;
unsigned int length;
} FSOffset;
typedef struct _FSXCharInfo {
short left;
short right;
short width;
short ascent;
short descent;
unsigned short attributes;
} FSXCharInfo;
typedef struct _FSPropOffset {
FSOffset name;
FSOffset value;
unsigned char type;
} FSPropOffset;
typedef struct _FSPropInfo {
unsigned int num_offsets;
unsigned int data_len;
} FSPropInfo;
typedef struct _FSXFontInfoHeader {
int flags;
FSRange char_range;
unsigned draw_direction;
FSChar2b default_char;
FSXCharInfo min_bounds;
FSXCharInfo max_bounds;
short font_ascent;
short font_descent;
} FSXFontInfoHeader;
_XFUNCPROTOBEGIN
extern FSServer * FSOpenServer ( char *server );
extern FSSyncHandler FSSynchronize(FSServer *, int);
extern FSSyncHandler FSSetAfterFunction(FSServer *, FSSyncHandler);
extern char * FSServerName ( char *server );
extern char ** FSListExtensions ( FSServer *svr, int *next );
extern int FSQueryExtension ( FSServer *svr, char *name, int *major_opcode,
int *first_event, int *first_error );
extern char ** FSListCatalogues ( FSServer *svr, char *pattern,
int maxNames, int *actualCount );
extern char ** FSGetCatalogues ( FSServer *svr, int *num );
extern long FSMaxRequestSize ( FSServer *svr );
extern char ** FSListFonts ( FSServer *svr, char *pattern, int maxNames,
int *actualCount );
extern char ** FSListFontsWithXInfo ( FSServer *svr, char *pattern,
int maxNames, int *count,
FSXFontInfoHeader ***info,
FSPropInfo ***pprops,
FSPropOffset ***offsets,
unsigned char ***prop_data );
extern Font FSOpenBitmapFont ( FSServer *svr, FSBitmapFormat hint,
FSBitmapFormatMask fmask, char *name,
Font *otherid );
extern int FSSync ( FSServer *svr, Bool discard );
extern int FSCloseServer ( FSServer *svr );
extern int FSCloseFont ( FSServer *svr, Font fid );
extern int FSGetErrorDatabaseText ( FSServer *svr, char *name, char *type,
char *defaultp, char *buffer, int nbytes );
extern int FSGetErrorText ( FSServer *svr, int code, char *buffer,
int nbytes );
extern int FSFlush ( FSServer *svr );
extern int FSFreeFontNames ( char **list );
extern int FSFreeCatalogues ( char **list );
extern int FSFreeExtensionList ( char **list );
extern int FSNextEvent ( FSServer *svr, FSEvent *event );
extern int FSQueryXBitmaps8 ( FSServer *svr, Font fid, FSBitmapFormat format,
int range_type, unsigned char *str,
unsigned long str_len, FSOffset **offsets,
unsigned char **glyphdata );
extern int FSQueryXBitmaps16 ( FSServer *svr, Font fid, FSBitmapFormat format,
int range_type, FSChar2b *str,
unsigned long str_len, FSOffset **offsets,
unsigned char **glyphdata );
extern int FSQueryXExtents8 ( FSServer *svr, Font fid, int range_type,
unsigned char *str, unsigned long str_len,
FSXCharInfo **extents );
extern int FSQueryXExtents16 ( FSServer *svr, Font fid, int range_type,
FSChar2b *str, unsigned long str_len,
FSXCharInfo **extents );
extern int FSQueryXInfo ( FSServer *svr, Font fid, FSXFontInfoHeader *info,
FSPropInfo *props, FSPropOffset **offsets,
unsigned char **prop_data );
extern int FSSetCatalogues ( FSServer *svr, int num, char **cats );
extern int FSFree ( char *data );
extern unsigned char * FSMalloc ( unsigned size );
_XFUNCPROTOEND
#endif