]> git.sesse.net Git - rdpsrv/blobdiff - Xserver/lib/font/Type1/spaces.h
Import X server from vnc-3.3.7.
[rdpsrv] / Xserver / lib / font / Type1 / spaces.h
diff --git a/Xserver/lib/font/Type1/spaces.h b/Xserver/lib/font/Type1/spaces.h
new file mode 100644 (file)
index 0000000..d19d9b3
--- /dev/null
@@ -0,0 +1,140 @@
+/* $XConsortium: spaces.h,v 1.4 94/02/06 16:27:06 gildea 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*/
+#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   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                             */
+       void (*convert)();     /* calculate "fractpoint" X,Y from float X,Y   */
+       void (*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*/