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