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