03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync/*
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync *
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * Copyright © 2000 SuSE, Inc.
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync *
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * Permission to use, copy, modify, distribute, and sell this software and its
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * documentation for any purpose is hereby granted without fee, provided that
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * the above copyright notice appear in all copies and that both that
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * copyright notice and this permission notice appear in supporting
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * documentation, and that the name of SuSE not be used in advertising or
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * publicity pertaining to distribution of the software without specific,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * written prior permission. SuSE makes no representations about the
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * suitability of this software for any purpose. It is provided "as is"
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * without express or implied warranty.
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync *
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * SuSE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL SuSE
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync *
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync * Author: Keith Packard, SuSE, Inc.
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync */
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync#ifndef _GLYPHSTR_H_
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync#define _GLYPHSTR_H_
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync#include <X11/extensions/renderproto.h>
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync#include "picture.h"
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync#include "screenint.h"
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync#include "regionstr.h"
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync#include "miscstruct.h"
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync#include "privates.h"
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync#define GlyphFormat1 0
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync#define GlyphFormat4 1
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync#define GlyphFormat8 2
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync#define GlyphFormat16 3
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync#define GlyphFormat32 4
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync#define GlyphFormatNum 5
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsynctypedef struct _Glyph {
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync CARD32 refcnt;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync PrivateRec *devPrivates;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync unsigned char sha1[20];
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync CARD32 size; /* info + bitmap */
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync xGlyphInfo info;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync /* per-screen pixmaps follow */
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync} GlyphRec, *GlyphPtr;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync#define GlyphPicture(glyph) ((PicturePtr *) ((glyph) + 1))
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsynctypedef struct _GlyphRef {
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync CARD32 signature;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync GlyphPtr glyph;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync} GlyphRefRec, *GlyphRefPtr;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync#define DeletedGlyph ((GlyphPtr) 1)
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsynctypedef struct _GlyphHashSet {
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync CARD32 entries;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync CARD32 size;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync CARD32 rehash;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync} GlyphHashSetRec, *GlyphHashSetPtr;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsynctypedef struct _GlyphHash {
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync GlyphRefPtr table;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync GlyphHashSetPtr hashSet;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync CARD32 tableEntries;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync} GlyphHashRec, *GlyphHashPtr;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsynctypedef struct _GlyphSet {
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync CARD32 refcnt;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync int fdepth;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync PictFormatPtr format;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync GlyphHashRec hash;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync PrivateRec *devPrivates;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync} GlyphSetRec, *GlyphSetPtr;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync#define GlyphSetGetPrivate(pGlyphSet,k) \
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync dixLookupPrivate(&(pGlyphSet)->devPrivates, k)
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync#define GlyphSetSetPrivate(pGlyphSet,k,ptr) \
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync dixSetPrivate(&(pGlyphSet)->devPrivates, k, ptr)
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsynctypedef struct _GlyphList {
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync INT16 xOff;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync INT16 yOff;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync CARD8 len;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync PictFormatPtr format;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync} GlyphListRec, *GlyphListPtr;
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncextern _X_EXPORT void
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync GlyphUninit(ScreenPtr pScreen);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncextern _X_EXPORT GlyphHashSetPtr FindGlyphHashSet(CARD32 filled);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncextern _X_EXPORT GlyphRefPtr
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncFindGlyphRef(GlyphHashPtr hash,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync CARD32 signature, Bool match, unsigned char sha1[20]);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncextern _X_EXPORT GlyphPtr FindGlyphByHash(unsigned char sha1[20], int format);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncextern _X_EXPORT int
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncHashGlyph(xGlyphInfo * gi,
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync CARD8 *bits, unsigned long size, unsigned char sha1[20]);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncextern _X_EXPORT void
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync FreeGlyph(GlyphPtr glyph, int format);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncextern _X_EXPORT void
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync AddGlyph(GlyphSetPtr glyphSet, GlyphPtr glyph, Glyph id);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncextern _X_EXPORT Bool
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync DeleteGlyph(GlyphSetPtr glyphSet, Glyph id);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncextern _X_EXPORT GlyphPtr FindGlyph(GlyphSetPtr glyphSet, Glyph id);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncextern _X_EXPORT GlyphPtr AllocateGlyph(xGlyphInfo * gi, int format);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncextern _X_EXPORT Bool
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync AllocateGlyphHash(GlyphHashPtr hash, GlyphHashSetPtr hashSet);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncextern _X_EXPORT Bool
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync ResizeGlyphHash(GlyphHashPtr hash, CARD32 change, Bool global);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncextern _X_EXPORT Bool
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync ResizeGlyphSet(GlyphSetPtr glyphSet, CARD32 change);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncextern _X_EXPORT GlyphSetPtr AllocateGlyphSet(int fdepth, PictFormatPtr format);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncextern _X_EXPORT int
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync FreeGlyphSet(pointer value, XID gid);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync#define GLYPH_HAS_GLYPH_PICTURE_ACCESSOR 1 /* used for api compat */
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncextern _X_EXPORT PicturePtr
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync GetGlyphPicture(GlyphPtr glyph, ScreenPtr pScreen);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsyncextern _X_EXPORT void
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync SetGlyphPicture(GlyphPtr glyph, ScreenPtr pScreen, PicturePtr picture);
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync
03532efdc331b598d3dedc8cc7477641c3b0dd12vboxsync#endif /* _GLYPHSTR_H_ */