602 lines
19 KiB
C
602 lines
19 KiB
C
|
/*
|
||
|
|
||
|
Copyright 1996, 1998 The Open Group
|
||
|
|
||
|
Permission to use, copy, modify, distribute, and sell this software and its
|
||
|
documentation for any purpose is hereby granted without fee, provided that
|
||
|
the above copyright notice appear in all copies and that both that
|
||
|
copyright notice and this permission notice appear in supporting
|
||
|
documentation.
|
||
|
|
||
|
The above copyright notice and this permission notice shall be included in
|
||
|
all copies or substantial portions of the Software.
|
||
|
|
||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||
|
OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
|
||
|
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||
|
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||
|
|
||
|
Except as contained in this notice, the name of The Open Group shall not be
|
||
|
used in advertising or otherwise to promote the sale, use or other dealings
|
||
|
in this Software without prior written authorization from The Open Group.
|
||
|
|
||
|
*/
|
||
|
/*
|
||
|
* (c) Copyright 1996 Hewlett-Packard Company
|
||
|
* (c) Copyright 1996 International Business Machines Corp.
|
||
|
* (c) Copyright 1996 Sun Microsystems, Inc.
|
||
|
* (c) Copyright 1996 Novell, Inc.
|
||
|
* (c) Copyright 1996 Digital Equipment Corp.
|
||
|
* (c) Copyright 1996 Fujitsu Limited
|
||
|
* (c) Copyright 1996 Hitachi, Ltd.
|
||
|
*
|
||
|
* Permission is hereby granted, free of charge, to any person obtaining
|
||
|
* a copy of this software and associated documentation files (the
|
||
|
* "Software"), to deal in the Software without restriction, including
|
||
|
* without limitation the rights to use, copy, modify, merge, publish,
|
||
|
* distribute, sublicense, and/or sell copies of the Software, and to
|
||
|
* permit persons to whom the Software is furnished to do so, subject
|
||
|
* to the following conditions:
|
||
|
*
|
||
|
* The above copyright notice and this permission notice shall be included
|
||
|
* in all copies or substantial portions of the Software.
|
||
|
*
|
||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||
|
* THE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||
|
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
|
||
|
* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||
|
* SOFTWARE.
|
||
|
*
|
||
|
* Except as contained in this notice, the names of the copyright holders
|
||
|
* shall not be used in advertising or otherwise to promote the sale, use
|
||
|
* or other dealings in this Software without prior written authorization
|
||
|
* from said copyright holders.
|
||
|
*/
|
||
|
|
||
|
/*******************************************************************
|
||
|
**
|
||
|
** *********************************************************
|
||
|
** *
|
||
|
** * File: Ps.h
|
||
|
** *
|
||
|
** * Contents: defines and includes for the Ps driver
|
||
|
** * for a printing X server.
|
||
|
** *
|
||
|
** * Created By: Roger Helmendach (Liberty Systems)
|
||
|
** *
|
||
|
** * Copyright: Copyright 1996 The Open Group, Inc.
|
||
|
** *
|
||
|
** *********************************************************
|
||
|
**
|
||
|
********************************************************************/
|
||
|
|
||
|
#ifdef HAVE_DIX_CONFIG_H
|
||
|
#include <dix-config.h>
|
||
|
#endif
|
||
|
|
||
|
#ifndef _PS_H_
|
||
|
#define _PS_H_
|
||
|
|
||
|
#include <stdio.h>
|
||
|
|
||
|
#ifdef abs
|
||
|
#undef abs /* this is because of a non-Spec1170ness in misc.h */
|
||
|
#endif
|
||
|
#include <stdlib.h>
|
||
|
#include "scrnintstr.h"
|
||
|
#include "dix.h"
|
||
|
|
||
|
#include "PsDef.h"
|
||
|
#include "psout.h"
|
||
|
|
||
|
#include <X11/extensions/Print.h>
|
||
|
#include <X11/extensions/Printstr.h>
|
||
|
|
||
|
#include "regionstr.h"
|
||
|
#include <X11/fonts/fontstruct.h>
|
||
|
#include "dixfontstr.h"
|
||
|
#include "gcstruct.h"
|
||
|
|
||
|
/*
|
||
|
* Some sleazes to force the XrmDB stuff into the server
|
||
|
*/
|
||
|
#ifndef HAVE_XPointer
|
||
|
typedef char *XPointer;
|
||
|
#define Status int
|
||
|
#define True 1
|
||
|
#define False 0
|
||
|
#endif
|
||
|
|
||
|
#include "misc.h"
|
||
|
#include <X11/Xfuncproto.h>
|
||
|
#include <X11/Xresource.h>
|
||
|
#include "attributes.h"
|
||
|
|
||
|
|
||
|
/*
|
||
|
* Public index variables from PsInit.c
|
||
|
*/
|
||
|
|
||
|
extern int PsScreenPrivateIndex;
|
||
|
extern int PsWindowPrivateIndex;
|
||
|
extern int PsContextPrivateIndex;
|
||
|
extern int PsPixmapPrivateIndex;
|
||
|
extern XpValidatePoolsRec PsValidatePoolsRec;
|
||
|
|
||
|
/*
|
||
|
* Display list structures
|
||
|
*/
|
||
|
|
||
|
#define DPY_BLOCKSIZE 4096
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
int mode;
|
||
|
int nPoints;
|
||
|
xPoint *pPoints;
|
||
|
} PsPolyPointsRec;
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
int nSegments;
|
||
|
xSegment *pSegments;
|
||
|
} PsSegmentsRec;
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
int nRects;
|
||
|
xRectangle *pRects;
|
||
|
} PsRectanglesRec;
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
int nArcs;
|
||
|
xArc *pArcs;
|
||
|
} PsArcsRec;
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
int x;
|
||
|
int y;
|
||
|
int count;
|
||
|
char *string;
|
||
|
} PsText8Rec;
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
int x;
|
||
|
int y;
|
||
|
int count;
|
||
|
unsigned short *string;
|
||
|
} PsText16Rec;
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
int depth;
|
||
|
int x;
|
||
|
int y;
|
||
|
int w;
|
||
|
int h;
|
||
|
int leftPad;
|
||
|
int format;
|
||
|
int res; /* image resolution */
|
||
|
char *pData;
|
||
|
} PsImageRec;
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
int x;
|
||
|
int y;
|
||
|
int w;
|
||
|
int h;
|
||
|
} PsFrameRec;
|
||
|
|
||
|
typedef enum
|
||
|
{
|
||
|
PolyPointCmd,
|
||
|
PolyLineCmd,
|
||
|
PolySegmentCmd,
|
||
|
PolyRectangleCmd,
|
||
|
FillPolygonCmd,
|
||
|
PolyFillRectCmd,
|
||
|
PolyArcCmd,
|
||
|
PolyFillArcCmd,
|
||
|
Text8Cmd,
|
||
|
Text16Cmd,
|
||
|
TextI8Cmd,
|
||
|
TextI16Cmd,
|
||
|
PutImageCmd,
|
||
|
BeginFrameCmd,
|
||
|
EndFrameCmd
|
||
|
} DisplayElmType;
|
||
|
|
||
|
typedef struct _DisplayElmRec
|
||
|
{
|
||
|
DisplayElmType type;
|
||
|
GCPtr gc;
|
||
|
union
|
||
|
{
|
||
|
PsPolyPointsRec polyPts;
|
||
|
PsSegmentsRec segments;
|
||
|
PsRectanglesRec rects;
|
||
|
PsArcsRec arcs;
|
||
|
PsText8Rec text8;
|
||
|
PsText16Rec text16;
|
||
|
PsImageRec image;
|
||
|
PsFrameRec frame;
|
||
|
} c;
|
||
|
} DisplayElmRec;
|
||
|
|
||
|
typedef DisplayElmRec *DisplayElmPtr;
|
||
|
|
||
|
typedef struct _DisplayListRec
|
||
|
{
|
||
|
struct _DisplayListRec *next;
|
||
|
int nelms;
|
||
|
DisplayElmRec elms[DPY_BLOCKSIZE];
|
||
|
} DisplayListRec;
|
||
|
|
||
|
typedef DisplayListRec *DisplayListPtr;
|
||
|
|
||
|
/*
|
||
|
* Private structures
|
||
|
*/
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
XrmDatabase resDB;
|
||
|
Bool (*DestroyWindow)(WindowPtr);
|
||
|
} PsScreenPrivRec, *PsScreenPrivPtr;
|
||
|
|
||
|
typedef struct PsFontTypeInfoRec PsFontTypeInfoRec;
|
||
|
|
||
|
/* Structure to hold information about one font on disk
|
||
|
* Notes:
|
||
|
* - multiple XLFD names can refer to the same |PsFontTypeInfoRec| (if
|
||
|
* they all use the same font on the disk)
|
||
|
* - the FreeType font download code uses multiple |PsFontTypeInfoRec|
|
||
|
* records for one font on disk if they differ in the encoding being
|
||
|
* used (this is an exception from the
|
||
|
* 'one-|PsFontTypeInfoRec|-per-font-on-disk'-design; maybe it it is better
|
||
|
* to rework that in a later step and add a new per-encoding structure).
|
||
|
*/
|
||
|
struct PsFontTypeInfoRec
|
||
|
{
|
||
|
PsFontTypeInfoRec *next; /* Next record in list... */
|
||
|
char *adobe_ps_name; /* PostScript font name (from the
|
||
|
* "_ADOBE_POSTSCRIPT_FONTNAME" atom) */
|
||
|
char *download_ps_name; /* PostScript font name used for font download */
|
||
|
char *filename; /* File name of font */
|
||
|
#ifdef XP_USE_FREETYPE
|
||
|
char *ft_download_encoding; /* encoding used for download */
|
||
|
PsFTDownloadFontType ft_download_font_type; /* PS font type used for download (e.g. Type1/Type3/CID/etc.) */
|
||
|
#endif /* XP_USE_FREETYPE */
|
||
|
int is_iso_encoding; /* Is this font encoded in ISO Latin 1 ? */
|
||
|
int font_type; /* See PSFTI_FONT_TYPE_* below... */
|
||
|
Bool downloadableFont; /* Font can be downloaded */
|
||
|
Bool alreadyDownloaded[256]; /* Font has been downloaded (for 256 8bit "sub"-font) */
|
||
|
};
|
||
|
|
||
|
#define PSFTI_FONT_TYPE_OTHER (0)
|
||
|
#define PSFTI_FONT_TYPE_PMF (1)
|
||
|
#define PSFTI_FONT_TYPE_PS_TYPE1_PFA (2)
|
||
|
#define PSFTI_FONT_TYPE_PS_TYPE1_PFB (3)
|
||
|
#define PSFTI_FONT_TYPE_TRUETYPE (4)
|
||
|
/* PSFTI_FONT_TYPE_FREETYPE is means the font is handled by the freetype engine */
|
||
|
#define PSFTI_FONT_TYPE_FREETYPE (5)
|
||
|
|
||
|
typedef struct PsFontInfoRec PsFontInfoRec;
|
||
|
|
||
|
/* Structure which represents our context info for a single XLFD font
|
||
|
* Note that multiple |PsFontInfoRec| records can share the same
|
||
|
* |PsFontTypeInfoRec| record - the |PsFontInfoRec| records represent
|
||
|
* different appearances of the same font on disk(=|PsFontTypeInfoRec|)).
|
||
|
*/
|
||
|
struct PsFontInfoRec
|
||
|
{
|
||
|
PsFontInfoRec *next; /* Next record in list... */
|
||
|
/* |font| and |font_fontPrivate| are used by |PsFindFontInfoRec()| to
|
||
|
* identify a font */
|
||
|
FontPtr font; /* The font this record is for */
|
||
|
pointer font_fontPrivate;
|
||
|
PsFontTypeInfoRec *ftir; /* Record about the font file on disk */
|
||
|
const char *dfl_name; /* XLFD for this font */
|
||
|
int size; /* Font size. Use |mtx| if |size==0| */
|
||
|
float mtx[4]; /* Transformation matrix (see |size|) */
|
||
|
};
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
char *jobFileName;
|
||
|
FILE *pJobFile;
|
||
|
GC lastGC;
|
||
|
unsigned char *dash;
|
||
|
int validGC;
|
||
|
ClientPtr getDocClient;
|
||
|
int getDocBufSize;
|
||
|
PsOutPtr pPsOut;
|
||
|
PsFontTypeInfoRec *fontTypeInfoRecords;
|
||
|
PsFontInfoRec *fontInfoRecords;
|
||
|
} PsContextPrivRec, *PsContextPrivPtr;
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
int validContext;
|
||
|
XpContextPtr context;
|
||
|
} PsWindowPrivRec, *PsWindowPrivPtr;
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
XpContextPtr context;
|
||
|
GC lastGC;
|
||
|
int validGC;
|
||
|
DisplayListPtr dispList;
|
||
|
} PsPixmapPrivRec, *PsPixmapPrivPtr;
|
||
|
|
||
|
/*
|
||
|
* Macro functions
|
||
|
*/
|
||
|
|
||
|
#define SEND_PS(f,c) fwrite( c, sizeof( char ), strlen( c ), f )
|
||
|
#define MIN(a,b) (((a)<(b))?(a):(b))
|
||
|
#ifndef MAX
|
||
|
#define MAX(a,b) (((a)>(b))?(a):(b))
|
||
|
#endif
|
||
|
|
||
|
/*
|
||
|
* Functions in PsInit.c
|
||
|
*/
|
||
|
|
||
|
extern Bool InitializePsDriver(int ndx, ScreenPtr pScreen, int argc,
|
||
|
char **argv);
|
||
|
extern XpContextPtr PsGetContextFromWindow(WindowPtr win);
|
||
|
|
||
|
/*
|
||
|
* Functions in PsCache.c
|
||
|
*/
|
||
|
|
||
|
extern int PsBmIsImageCached(int gWidth, int gHeight, char *pBuffer);
|
||
|
extern int PsBmPutImageInCache(int gWidth, int gHeight, char *pBuffer);
|
||
|
extern void PsBmClearImageCache(void);
|
||
|
|
||
|
/*
|
||
|
* Functions in PsPrint.c
|
||
|
*/
|
||
|
|
||
|
extern int PsStartJob(XpContextPtr pCon, Bool sendClientData, ClientPtr client);
|
||
|
extern int PsEndJob(XpContextPtr pCon, Bool cancel);
|
||
|
extern int PsStartPage(XpContextPtr pCon, WindowPtr pWin);
|
||
|
extern int PsEndPage(XpContextPtr pCon, WindowPtr pWin);
|
||
|
extern int PsStartDoc(XpContextPtr pCon, XPDocumentType type);
|
||
|
extern int PsEndDoc(XpContextPtr pCon, Bool cancel);
|
||
|
extern int PsDocumentData(XpContextPtr pCon, DrawablePtr pDraw, char *pData,
|
||
|
int len_data, char *pFmt, int len_fmt, char *pOpt, int len_opt,
|
||
|
ClientPtr client);
|
||
|
extern int PsGetDocumentData(XpContextPtr pCon, ClientPtr client,
|
||
|
int maxBufferSize);
|
||
|
|
||
|
/*
|
||
|
* Functions in PsGC.c
|
||
|
*/
|
||
|
|
||
|
extern Bool PsCreateGC(GCPtr pGC);
|
||
|
extern PsContextPrivPtr PsGetPsContextPriv( DrawablePtr pDrawable );
|
||
|
extern int PsUpdateDrawableGC(GCPtr pGC, DrawablePtr pDrawable,
|
||
|
PsOutPtr *psOut, ColormapPtr *cMap);
|
||
|
extern void PsValidateGC(GCPtr pGC, unsigned long changes, DrawablePtr pDrawable);
|
||
|
extern void PsChangeGC(GCPtr pGC, unsigned long changes);
|
||
|
extern void PsCopyGC(GCPtr pGCSrc, unsigned long mask, GCPtr pGCDst);
|
||
|
extern void PsDestroyGC(GCPtr pGC);
|
||
|
extern void PsChangeClip(GCPtr pGC, int type, pointer pValue, int nrects);
|
||
|
extern void PsDestroyClip(GCPtr pGC);
|
||
|
extern void PsCopyClip(GCPtr pgcDst, GCPtr pgcSrc);
|
||
|
|
||
|
extern GCPtr PsCreateAndCopyGC(DrawablePtr pDrawable, GCPtr pSrc);
|
||
|
|
||
|
/*
|
||
|
* Functions in PsMisc.c
|
||
|
*/
|
||
|
|
||
|
extern void PsQueryBestSize(int type, short *pwidth, short *pheight,
|
||
|
ScreenPtr pScreen);
|
||
|
extern Bool PsCloseScreen(int index, ScreenPtr pScreen);
|
||
|
extern void PsLineAttrs(PsOutPtr psOut, GCPtr pGC, ColormapPtr cMap);
|
||
|
extern int PsGetMediumDimensions(
|
||
|
XpContextPtr pCon,
|
||
|
CARD16 *pWidth,
|
||
|
CARD16 *pHeight);
|
||
|
extern int PsGetReproducibleArea(
|
||
|
XpContextPtr pCon,
|
||
|
xRectangle *pRect);
|
||
|
extern int PsSetImageResolution(
|
||
|
XpContextPtr pCon,
|
||
|
int imageRes,
|
||
|
Bool *status);
|
||
|
|
||
|
/*
|
||
|
* Functions in PsSpans.c
|
||
|
*/
|
||
|
|
||
|
extern void PsFillSpans(DrawablePtr pDrawable, GCPtr pGC, int nSpans,
|
||
|
DDXPointPtr pPoints, int *pWidths, int fSorted);
|
||
|
extern void PsSetSpans(DrawablePtr pDrawable, GCPtr pGC, char *pSrc,
|
||
|
DDXPointPtr pPoints, int *pWidths, int nSpans,
|
||
|
int fSorted);
|
||
|
|
||
|
/*
|
||
|
* Functions in PsArea.c
|
||
|
*/
|
||
|
|
||
|
extern void PsPutScaledImage(DrawablePtr pDrawable, GCPtr pGC, int depth,
|
||
|
int x, int y, int w, int h, int leftPad, int format,
|
||
|
int imageRes, char *pImage);
|
||
|
extern void PsPutScaledImageIM(DrawablePtr pDrawable, GCPtr pGC, int depth,
|
||
|
int x, int y, int w, int h, int leftPad,
|
||
|
int format, int imageRes, char *pImage);
|
||
|
extern void PsPutImage(DrawablePtr pDrawable, GCPtr pGC, int depth,
|
||
|
int x, int y, int w, int h, int leftPad, int format,
|
||
|
char *pImage);
|
||
|
extern void PsPutImageMask(DrawablePtr pDrawable, GCPtr pGC, int depth, int x, int y,
|
||
|
int w, int h, int leftPad, int format, char *pImage);
|
||
|
extern RegionPtr PsCopyArea(DrawablePtr pSrc, DrawablePtr pDst, GCPtr pGC,
|
||
|
int srcx, int srcy, int width, int height,
|
||
|
int dstx, int dsty);
|
||
|
extern RegionPtr PsCopyPlane(DrawablePtr pSrc, DrawablePtr pDst, GCPtr pGC,
|
||
|
int srcx, int srcy, int width, int height,
|
||
|
int dstx, int dsty, unsigned long plane);
|
||
|
|
||
|
/*
|
||
|
* Functions in PsPixel.c
|
||
|
*/
|
||
|
|
||
|
extern void PsPolyPoint(DrawablePtr pDrawable, GCPtr pGC, int mode,
|
||
|
int nPoints, xPoint *pPoints);
|
||
|
extern void PsPushPixels(GCPtr pGC, PixmapPtr pBitmap, DrawablePtr pDrawable,
|
||
|
int width, int height, int x, int y);
|
||
|
|
||
|
/*
|
||
|
* Functions in PsLine.c
|
||
|
*/
|
||
|
|
||
|
extern void PsPolyLine(DrawablePtr pDrawable, GCPtr pGC, int mode,
|
||
|
int nPoints, xPoint *pPoints);
|
||
|
extern void PsPolySegment(DrawablePtr pDrawable, GCPtr pGC, int nSegments,
|
||
|
xSegment *pSegments);
|
||
|
|
||
|
/*
|
||
|
* Functions in PsPolygon.c
|
||
|
*/
|
||
|
|
||
|
extern void PsPolyRectangle(DrawablePtr pDrawable, GCPtr pGC, int nRects,
|
||
|
xRectangle *pRects);
|
||
|
extern void PsFillPolygon(DrawablePtr pDrawable, GCPtr pGC, int shape,
|
||
|
int mode, int nPoints, DDXPointPtr pPoints);
|
||
|
extern void PsPolyFillRect(DrawablePtr pDrawable, GCPtr pGC, int nRects,
|
||
|
xRectangle *pRects);
|
||
|
|
||
|
/*
|
||
|
* Functions in PsPolygon.c
|
||
|
*/
|
||
|
|
||
|
extern void PsPolyArc(DrawablePtr pDrawable, GCPtr pGC, int nArcs,
|
||
|
xArc *pArcs);
|
||
|
extern void PsPolyFillArc(DrawablePtr pDrawable, GCPtr pGC, int nArcs,
|
||
|
xArc *pArcs);
|
||
|
|
||
|
/*
|
||
|
* Functions in PsText.c
|
||
|
*/
|
||
|
|
||
|
extern int PsPolyText8(DrawablePtr pDrawable, GCPtr pGC, int x, int y,
|
||
|
int count, char *string);
|
||
|
extern int PsPolyText16(DrawablePtr pDrawable, GCPtr pGC, int x, int y,
|
||
|
int count, unsigned short *string);
|
||
|
extern void PsImageText8(DrawablePtr pDrawable, GCPtr pGC, int x, int y,
|
||
|
int count, char *string);
|
||
|
extern void PsImageText16(DrawablePtr pDrawable, GCPtr pGC, int x, int y,
|
||
|
int count, unsigned short *string);
|
||
|
extern void PsImageGlyphBlt(DrawablePtr pDrawable, GCPtr pGC, int x, int y,
|
||
|
unsigned int nGlyphs, CharInfoPtr *pCharInfo,
|
||
|
pointer pGlyphBase);
|
||
|
extern void PsPolyGlyphBlt(DrawablePtr pDrawable, GCPtr pGC, int x, int y,
|
||
|
unsigned int nGlyphs, CharInfoPtr *pCharInfo,
|
||
|
pointer pGlyphBase);
|
||
|
|
||
|
/*
|
||
|
* Functions in PsWindow.c
|
||
|
*/
|
||
|
|
||
|
extern Bool PsCreateWindow(WindowPtr pWin);
|
||
|
extern Bool PsMapWindow(WindowPtr pWin);
|
||
|
extern Bool PsPositionWindow(WindowPtr pWin, int x, int y);
|
||
|
extern Bool PsUnmapWindow(WindowPtr pWin);
|
||
|
extern void PsCopyWindow(WindowPtr pWin, DDXPointRec ptOldOrg,
|
||
|
RegionPtr prgnSrc);
|
||
|
extern Bool PsChangeWindowAttributes(WindowPtr pWin, unsigned long mask);
|
||
|
extern void PsPaintWindow(WindowPtr pWin, RegionPtr pRegion, int what);
|
||
|
extern Bool PsDestroyWindow(WindowPtr pWin);
|
||
|
|
||
|
/*
|
||
|
* Functions in PsFonts.c
|
||
|
*/
|
||
|
|
||
|
extern Bool PsRealizeFont(ScreenPtr pscr, FontPtr pFont);
|
||
|
extern Bool PsUnrealizeFont(ScreenPtr pscr, FontPtr pFont);
|
||
|
extern char *PsGetFontName(FontPtr pFont);
|
||
|
extern int PsGetFontSize(FontPtr pFont, float *mtx);
|
||
|
extern char *PsGetPSFontName(FontPtr pFont);
|
||
|
extern char *PsGetPSFaceOrFontName(FontPtr pFont);
|
||
|
extern int PsIsISOLatin1Encoding(FontPtr pFont);
|
||
|
extern char *PsGetEncodingName(FontPtr pFont);
|
||
|
extern PsFontInfoRec *PsGetFontInfoRec(DrawablePtr pDrawable, FontPtr pFont);
|
||
|
extern void PsFreeFontInfoRecords(PsContextPrivPtr priv);
|
||
|
extern PsFTDownloadFontType PsGetFTDownloadFontType(void);
|
||
|
|
||
|
/*
|
||
|
* Functions in PsFTFonts.c
|
||
|
*/
|
||
|
|
||
|
extern char *PsGetFTFontFileName(FontPtr pFont);
|
||
|
extern Bool PsIsFreeTypeFont(FontPtr pFont);
|
||
|
|
||
|
/*
|
||
|
* Functions in PsAttr.c
|
||
|
*/
|
||
|
|
||
|
extern char *PsGetAttributes(XpContextPtr pCon, XPAttributes pool);
|
||
|
extern char *PsGetOneAttribute(XpContextPtr pCon, XPAttributes pool,
|
||
|
char *attr);
|
||
|
extern int PsAugmentAttributes(XpContextPtr pCon, XPAttributes pool,
|
||
|
char *attrs);
|
||
|
extern int PsSetAttributes(XpContextPtr pCon, XPAttributes pool, char *attrs);
|
||
|
|
||
|
/*
|
||
|
* Functions in PsColor.c
|
||
|
*/
|
||
|
|
||
|
extern Bool PsCreateColormap(ColormapPtr pColor);
|
||
|
extern void PsDestroyColormap(ColormapPtr pColor);
|
||
|
extern void PsInstallColormap(ColormapPtr pColor);
|
||
|
extern void PsUninstallColormap(ColormapPtr pColor);
|
||
|
extern int PsListInstalledColormaps(ScreenPtr pScreen, XID *pCmapList);
|
||
|
extern void PsStoreColors(ColormapPtr pColor, int ndef, xColorItem *pdefs);
|
||
|
extern void PsResolveColor(unsigned short *pRed, unsigned short *pGreen,
|
||
|
unsigned short *pBlue, VisualPtr pVisual);
|
||
|
extern PsOutColor PsGetPixelColor(ColormapPtr cMap, int pixval);
|
||
|
extern void PsSetFillColor(DrawablePtr pDrawable, GCPtr pGC, PsOutPtr psOut,
|
||
|
ColormapPtr cMap);
|
||
|
|
||
|
/*
|
||
|
* Functions in PsPixmap.c
|
||
|
*/
|
||
|
|
||
|
extern PixmapPtr PsCreatePixmap(ScreenPtr pScreen, int width, int height,
|
||
|
int depth);
|
||
|
extern void PsScrubPixmap(PixmapPtr pPixmap);
|
||
|
extern Bool PsDestroyPixmap(PixmapPtr pPixmap);
|
||
|
extern DisplayListPtr PsGetFreeDisplayBlock(PsPixmapPrivPtr priv);
|
||
|
extern void PsReplay(DisplayElmPtr elm, DrawablePtr pDrawable);
|
||
|
extern void PsReplayPixmap(PixmapPtr pix, DrawablePtr pDrawable);
|
||
|
extern int PsCloneDisplayElm(PixmapPtr dst,
|
||
|
DisplayElmPtr elm, DisplayElmPtr newElm,
|
||
|
int xoff, int yoff);
|
||
|
extern void PsCopyDisplayList(PixmapPtr src, PixmapPtr dst, int xoff,
|
||
|
int yoff, int x, int y, int w, int h);
|
||
|
extern PsElmPtr PsCreateFillElementList(PixmapPtr pix, int *nElms);
|
||
|
extern PsElmPtr PsCloneFillElementList(int nElms, PsElmPtr elms);
|
||
|
extern void PsDestroyFillElementList(int nElms, PsElmPtr elms);
|
||
|
|
||
|
/*
|
||
|
* Functions in PsImageUtil.c
|
||
|
*/
|
||
|
|
||
|
extern unsigned long
|
||
|
PsGetImagePixel(char *pImage, int depth, int w, int h, int leftPad, int format,
|
||
|
int px, int py);
|
||
|
|
||
|
#endif /* _PS_H_ */
|