/* * Motif * * Copyright (c) 1987-2012, The Open Group. All rights reserved. * * These libraries and programs are free software; you can * redistribute them and/or modify them under the terms of the GNU * Lesser General Public License as published by the Free Software * Foundation; either version 2 of the License, or (at your option) * any later version. * * These libraries and programs are distributed in the hope that * they will be useful, but WITHOUT ANY WARRANTY; without even the * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU Lesser General Public License for more * details. * * You should have received a copy of the GNU Lesser General Public * License along with these librararies and programs; if not, write * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth * Floor, Boston, MA 02110-1301 USA * */ /* * HISTORY */ /* $XConsortium: XmRenderTI.h /main/5 1995/07/13 18:24:12 drk $ */ #ifndef _XmRenderTI_h #define _XmRenderTI_h #include #ifdef USE_XFT #include #endif #ifdef __cplusplus extern "C" { #endif /* Internal types for XmRenderTable.c */ #define REND_OPTIMIZED_BITS 1 #define REND_MARK_BITS REND_OPTIMIZED_BITS #define REND_REFCOUNT_BITS (16 - REND_OPTIMIZED_BITS) /* * Macros for Rendition data structure access */ #define _XmRendRefcount(r) ((_XmRendition)*(r))->refcount #define _XmRendFontOnly(r) ((_XmRendition)*(r))->fontOnly #define _XmRendLoadModel(r) ((_XmRendition)*(r))->loadModel #define _XmRendTag(r) ((_XmRendition)*(r))->tag #define _XmRendFontName(r) ((_XmRendition)*(r))->fontName #define _XmRendFontType(r) ((_XmRendition)*(r))->fontType #define _XmRendFont(r) ((_XmRendition)*(r))->font #define _XmRendDisplay(r) ((_XmRendition)*(r))->display #define _XmRendTabs(r) ((_XmRendition)*(r))->tabs #if USE_XFT #define _XmRendBG(r) ((_XmRendition)*(r))->xftBackground.pixel #define _XmRendFG(r) ((_XmRendition)*(r))->xftForeground.pixel #define _XmRendXftFont(r) ((_XmRendition)*(r))->xftFont #define _XmRendXftFG(r) ((_XmRendition)*(r))->xftForeground #define _XmRendXftBG(r) ((_XmRendition)*(r))->xftBackground #define _XmRendPattern(r) ((_XmRendition)*(r))->pattern #define _XmRendFontStyle(r) ((_XmRendition)*(r))->fontStyle #define _XmRendFontFoundry(r) ((_XmRendition)*(r))->fontFoundry #define _XmRendFontEncoding(r) ((_XmRendition)*(r))->fontEncoding #define _XmRendFontSize(r) ((_XmRendition)*(r))->fontSize #define _XmRendPixelSize(r) ((_XmRendition)*(r))->pixelSize #define _XmRendFontSlant(r) ((_XmRendition)*(r))->fontSlant #define _XmRendFontSpacing(r) ((_XmRendition)*(r))->fontSpacing #define _XmRendFontWeight(r) ((_XmRendition)*(r))->fontWeight #else #define _XmRendBG(r) ((_XmRendition)*(r))->background #define _XmRendFG(r) ((_XmRendition)*(r))->foreground #define _XmRendXftFont(r) (NULL) #endif #define _XmRendBGState(r) ((_XmRendition)*(r))->backgroundState #define _XmRendFGState(r) ((_XmRendition)*(r))->foregroundState #define _XmRendUnderlineType(r) ((_XmRendition)*(r))->underlineType #define _XmRendStrikethruType(r)((_XmRendition)*(r))->strikethruType #define _XmRendGC(r) ((_XmRendition)*(r))->gc #define _XmRendTags(r) ((_XmRendition)*(r))->tags #define _XmRendTagCount(r) ((_XmRendition)*(r))->count #define _XmRendHadEnds(r) ((_XmRendition)*(r))->hadEnds #define _XmRendRefcountInc(r) ++(((_XmRendition)*(r))->refcount) #define _XmRendRefcountDec(r) --(((_XmRendition)*(r))->refcount) #define FIX_1415 typedef struct __XmRenditionRec { /* flag indicating _XmFontRenditionRec */ unsigned int fontOnly : REND_OPTIMIZED_BITS; unsigned int refcount : REND_REFCOUNT_BITS; unsigned char loadModel; XmStringTag tag; String fontName; XmFontType fontType; XtPointer font; Display *display; GC gc; XmStringTag *tags; unsigned int count; Boolean hadEnds; XmTabList tabs; Pixel background; Pixel foreground; unsigned char underlineType; unsigned char strikethruType; unsigned char backgroundState; unsigned char foregroundState; #ifdef USE_XFT char *fontStyle, /* *family, Use font_name instead. */ *fontFoundry, *fontEncoding; int fontSize, pixelSize, fontSlant, fontSpacing, fontWeight; XftPattern *pattern; XftFont *xftFont; XftColor xftForeground, xftBackground; #endif } _XmRenditionRec, *_XmRendition; typedef struct __XmFontRenditionRec { /* flag indicating _XmFontRenditionRec */ unsigned int fontOnly : REND_OPTIMIZED_BITS; unsigned int refcount : REND_REFCOUNT_BITS; unsigned char loadModel; XmStringTag tag; String fontName; XmFontType fontType; XtPointer font; Display *display; GC *gc; XmStringTag *tags; unsigned int count; } _XmFontRenditionRec, *_XmFontRendition; /* Accessor macros. */ #define _XmRTCount(rt) ((_XmRenderTable)*(rt))->count #define _XmRTRenditions(rt) ((_XmRenderTable)*(rt))->renditions #define _XmRTDisplay(rt) ((_XmRenderTable)*(rt))->display #define _XmRTMark(rt) ((_XmRenderTable)*(rt))->mark #define _XmRTRefcount(rt) ((_XmRenderTable)*(rt))->refcount #define _XmRTRefcountInc(rt) ++(((_XmRenderTable)*(rt))->refcount) #define _XmRTRefcountDec(rt) --(((_XmRenderTable)*(rt))->refcount) #define RENDITIONS_IN_STRUCT 1 typedef struct __XmRenderTableRec { unsigned int mark : REND_MARK_BITS; unsigned int refcount : REND_REFCOUNT_BITS; unsigned short count; Display *display; XmRendition renditions[RENDITIONS_IN_STRUCT]; } _XmRenderTableRec, *_XmRenderTable; /******** Private Function Declarations for XmRenderTable.c ********/ extern XmRendition _XmRenderTableFindRendition(XmRenderTable table, XmStringTag tag, #if NeedWidePrototypes int cached_tag, int need_font, int call, #else Boolean cached_tag, Boolean need_font, Boolean call, #endif /* NeedWidePrototypes */ short *index); extern XmRendition _XmRenditionCreate(Display *display, Widget widget, String resname, String resclass, XmStringTag tag, ArgList arglist, Cardinal argcount, Boolean *in_db); extern XmRendition _XmRenderTableGetMerged(XmRenderTable rt, XmStringTag base, XmStringTag *tags, #if NeedWidePrototypes unsigned int tag_count #else unsigned short tag_count #endif /* NeedWidePrototypes */ ); extern XmRendition _XmRenditionMerge(Display *d, XmRendition *scr, XmRendition base_rend, XmRenderTable rt, XmStringTag base_tag, XmStringTag *tags, #if NeedWidePrototypes unsigned int tag_count, unsigned int copy #else unsigned short tag_count, Boolean copy #endif /* NeedWidePrototypes */ ); extern Widget _XmCreateRenderTable(Widget parent, String name, ArgList arglist, Cardinal argcount); extern Widget _XmCreateRendition(Widget parent, String name, ArgList arglist, Cardinal argcount); extern Display *_XmRenderTableDisplay(XmRenderTable table); extern XmRendition _XmRenditionCopy(XmRendition rend, Boolean shared); extern Boolean _XmRenderTableFindFallback(XmRenderTable , XmStringTag tag, #if NeedWidePrototypes int cached_tag, #else Boolean cached_tag, #endif /* NeedWidePrototypes */ short *indx, XmRendition *rend_ptr) ; extern Boolean _XmRenderTableFindFirstFont(XmRenderTable rendertable, short *indx, XmRendition *rend_ptr); extern XmRenderTable _XmRenderTableRemoveRenditions(XmRenderTable oldtable, XmStringTag *tags, int tag_count, #if NeedWidePrototypes int chk_font, #else Boolean chk_font, #endif /* NeedWidePrototypes */ XmFontType type, XtPointer font); #ifdef USE_XFT /* * XftDraw cache functions, implemented in lib/Xm/FontList.c */ XftDraw * _XmXftDrawCreate(Display *display, Window window); void _XmXftDrawDestroy(Display *display, Window window, XftDraw *d); void _XmXftDrawString(Display *display, Window window, XmRendition rend, int bpc, #if NeedWidePrototypes int x, int y, #else Position x, Position y, #endif /* NeedWidePrototypes */ char *s, int len, #if NeedWidePrototypes int image #else Boolean image #endif /* NeedWidePrototypes */ ); void _XmXftDrawString2(Display *display, Window window, GC gc, XftFont *font, int bpc, #if NeedWidePrototypes int x, int y, #else Position x, Position y, #endif char *s, int len); void _XmXftSetClipRectangles(Display *display, Window window, Position x, Position y, XRectangle *rects, int n); XftColor _XmXftGetXftColor(Display *display, Pixel color); #ifdef FIX_1415 void _XmXftFontAverageWidth(Widget w, XtPointer f, int *width); #endif #endif /******** End Private Function Declarations ********/ #ifdef __cplusplus } /* Close scope of 'extern "C"' declaration which encloses file. */ #endif #endif /* _XmRenderTI_h */ /* DON'T ADD ANYTHING AFTER THIS #endif */