⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 spaces.h

📁 source code: Covert TXT to PDF
💻 H
字号:
/* $XConsortium: spaces.h,v 1.3 91/10/10 11:19:22 rws Exp $ *//* Copyright International Business Machines, Corp. 1991 * All Rights Reserved * Copyright Lexmark International, Inc. 1991 * All Rights Reserved * * License to use, copy, modify, and distribute this software and its * documentation for any purpose and without fee is hereby granted, * provided that the above copyright notice appear in all copies and that * both that copyright notice and this permission notice appear in * supporting documentation, and that the name of IBM or Lexmark not be * used in advertising or publicity pertaining to distribution of the * software without specific, written prior permission. * * IBM AND LEXMARK PROVIDE THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES OF * ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, * AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.  THE ENTIRE RISK AS TO THE * QUALITY AND PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT * OR MAINTAIN, BELONGS TO THE LICENSEE.  SHOULD ANY PORTION OF THE * SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM OR LEXMARK) ASSUMES THE * ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION.  IN NO EVENT SHALL * IBM OR LEXMARK BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF * THIS SOFTWARE. *//*SHARED*/#include "types.h"#define   USER                       t1_User#define   IDENTITY                   t1_Identity #define   Context(d,u)               t1_Context(d,u)#define   Transform(o,f1,f2,f3,f4)   t1_Transform(o,f1,f2,f3,f4)#define   Rotate(o,d)                t1_Rotate(o,d)#define   Scale(o,sx,sy)             t1_Scale(o,sx,sy)#define   QuerySpace(S,f1,f2,f3,f4)  t1_QuerySpace(S,f1,f2,f3,f4)#define   Warp(s1,o,s2)              t1_Warp(s1,o,s2) struct XYspace *t1_Context(); /* creates a coordinate space for a device      */struct xobject *t1_Transform();  /* transform an object                       */struct xobject *t1_Rotate();  /* rotate an object                             */struct xobject *t1_Scale();   /* scale an object                              */struct xobject *t1_Warp();    /* transform like delta of two spaces           */void t1_QuerySpace();         /* returns coordinate space matrix              */ /*END SHARED*//*SHARED*/ #define   DeviceResolution   t1_DeviceResolution#define   InitSpaces()       t1_InitSpaces()#define   CopySpace(s)       t1_CopySpace(s)#define   Xform(o,M)         t1_Xform(o,M)#define   UnConvert(S,pt,xp,yp)    t1_UnConvert(S,pt,xp,yp)#define   MatrixMultiply(A,B,C)    t1_MMultiply(A,B,C)#define   MatrixInvert(A,B)        t1_MInvert(A,B)#define   PseudoSpace(S,M)   t1_PseudoSpace(S,M)#define   FindContext(M)     t1_FindContext(M) void t1_InitSpaces();         /* initialize pre-defined coordinate spaces     */struct XYspace *t1_CopySpace(); /* duplicate a coordinate space               */struct xobject *t1_Xform();   /* transform object by matrix                   */void t1_UnConvert();          /* return user coordinates from device coordinates */void t1_MMultiply();          /* multiply two matrices                        */void t1_MInvert();            /* invert a matrix                              */void t1_PseudoSpace();        /* force a coordinate space from a matrix       */int t1_FindContext();         /* return the "context" represented by a matrix */ /*END SHARED*//*SHARED*/ /* #define    KillSpace(s)     Free(s)Note - redefined KillSpace() to check references !3-26-91 PNM */ #define KillSpace(s)      if ( (--(s->references) == 0) ||\                      ( (s->references == 1) && ISPERMANENT(s->flag) ) )\                        Free(s) #define    ConsumeSpace(s)  MAKECONSUME(s,KillSpace(s))#define    UniqueSpace(s)   MAKEUNIQUE(s,CopySpace(s)) /*END SHARED*//*SHARED*/ typedef SHORT pel;           /* integer pel locations                        */typedef LONG fractpel;       /* fractional pel locations                     */ #define   FRACTBITS     16   /* number of fractional bits in 'fractpel'      *//*We define the following macros to convert from 'fractpel' to 'pel' andvice versa:*/#define   TOFRACTPEL(p)   (((fractpel)p)<<FRACTBITS)#define   FPHALF          (1<<(FRACTBITS-1))#define   NEARESTPEL(fp)  (((fp)+FPHALF)>>FRACTBITS)#define   FRACTFLOAT   (DOUBLE)(1L<<FRACTBITS) /*END SHARED*//*SHARED*/ struct doublematrix {       DOUBLE normal[2][2];       DOUBLE inverse[2][2];} ; /*END SHARED*//*SHARED*/ struct XYspace {       XOBJ_COMMON           /* xobject common data define 3-26-91 PNM       */			     /* type = SPACETYPE			     */       int (*convert)();     /* calculate "fractpoint" X,Y from float X,Y    */       int (*iconvert)();    /* calculate "fractpoint" X,Y from int X,Y      */       fractpel (*xconvert)();  /* subroutine of convert                     */       fractpel (*yconvert)();  /* subroutine of convert                     */       fractpel (*ixconvert)();  /* subroutine of iconvert                   */       fractpel (*iyconvert)();  /* subroutine of iconvert                   */       int ID;               /* unique identifier (used in font caching)     */       unsigned char context;  /* device context of coordinate space         */       struct doublematrix tofract;  /* xform to get to fractional pels      */       fractpel itofract[2][2];  /* integer version of "tofract.normal"      */} ; #define    INVALIDID  0      /* no valid space will have this ID             */ /*END SHARED*//*SHARED*/ struct fractpoint {       fractpel x,y;} ; /*END SHARED*//*SHARED*/ #define  NULLCONTEXT   0 /*END SHARED*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -