/* $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' and vice versa: */ #define TOFRACTPEL(p) (((fractpel)p)<>FRACTBITS) #define FRACTFLOAT (DOUBLE)(1L<