]> git.sesse.net Git - rdpsrv/blobdiff - Xserver/lib/font/Speedo/spfuncs.c
Import X server from vnc-3.3.7.
[rdpsrv] / Xserver / lib / font / Speedo / spfuncs.c
diff --git a/Xserver/lib/font/Speedo/spfuncs.c b/Xserver/lib/font/Speedo/spfuncs.c
new file mode 100644 (file)
index 0000000..d368dc7
--- /dev/null
@@ -0,0 +1,160 @@
+/* $XConsortium: spfuncs.c,v 1.13 94/06/06 17:42:26 gildea Exp $ */
+/*
+ * Copyright 1990, 1991 Network Computing Devices;
+ * Portions Copyright 1987 by Digital Equipment Corporation
+ *
+ * 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, and that the names of Network Computing Devices or Digital
+ * not be used in advertising or publicity pertaining to distribution of
+ * the software without specific, written prior permission.
+ *
+ * NETWORK COMPUTING DEVICES AND DIGITAL DISCLAIM ALL WARRANTIES WITH
+ * REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS, IN NO EVENT SHALL NETWORK COMPUTING DEVICES OR DIGITAL 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.
+ *
+ * Author: Dave Lemke, Network Computing Devices, Inc
+ */
+
+/*
+
+Copyright (c) 1987  X Consortium
+
+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 X CONSORTIUM 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 X Consortium 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 X Consortium.
+
+*/
+
+#include <X11/Xos.h>
+#include "fntfilst.h"
+#include "spint.h"
+
+/* ARGSUSED */
+SpeedoOpenScalable (fpe, pFont, flags, entry, fileName, vals, format, fmask,
+                   non_cachable_font)
+    FontPathElementPtr fpe;
+    FontPtr            *pFont;
+    int                        flags;
+    FontEntryPtr       entry;
+    char               *fileName;
+    FontScalablePtr    vals;
+    fsBitmapFormat     format;
+    fsBitmapFormatMask fmask;
+    FontPtr            non_cachable_font;      /* We don't do licensing */
+{
+    char       fullName[MAXFONTNAMELEN];
+
+    strcpy (fullName, entry->name.name);
+    return SpeedoFontLoad (pFont, fullName, fileName, entry, vals,
+                           format, fmask, flags);
+}
+
+/*
+ * XXX
+ *
+ * this does a lot more then i'd like, but it has to get the bitmaps
+ * in order to get accurate metrics (which it *must* have).
+ *
+ * a possible optimization is to avoid allocating the glyph memory
+ * and to simply save the values without doing the work.
+ */
+static int
+get_font_info(pinfo, fontname, filename, entry, vals, spfont)
+    FontInfoPtr pinfo;
+    char       *fontname;
+    char       *filename;
+    FontEntryPtr       entry;
+    FontScalablePtr    vals;
+    SpeedoFontPtr *spfont;
+{
+    SpeedoFontPtr spf;
+    int         err;
+    long       sWidth;
+
+    err = sp_open_font(fontname, filename, entry, vals,
+              (fsBitmapFormat) 0, (fsBitmapFormatMask) 0, (unsigned long) 0,
+                      &spf);
+
+    if (err != Successful)
+       return err;
+
+    sp_fp_cur = spf;
+    sp_reset_master(spf->master);
+
+    sp_make_header(spf, pinfo);
+
+    sp_compute_bounds(spf, pinfo, (unsigned long) 0, &sWidth);
+
+    sp_compute_props(spf, fontname, pinfo, sWidth);
+
+    /* compute remaining accelerators */
+    FontComputeInfoAccelerators (pinfo);
+
+    *spfont = spf;
+
+    return Successful;
+}
+
+/* ARGSUSED */
+SpeedoGetInfoScaleable(fpe, pFontInfo, entry, fontName, fileName, vals)
+    FontPathElementPtr fpe;
+    FontInfoPtr                pFontInfo;
+    FontEntryPtr       entry;
+    FontNamePtr                fontName;
+    char               *fileName;
+    FontScalablePtr    vals;
+{
+    SpeedoFontPtr spf = NULL;
+    char        fullName[MAXFONTNAMELEN];
+    int         err;
+
+    strcpy(fullName, entry->name.name);
+    FontParseXLFDName(fullName, vals, FONT_XLFD_REPLACE_VALUE);
+
+    err = get_font_info(pFontInfo, fullName, fileName, entry, vals, &spf);
+
+    if (spf)
+       sp_close_font(spf);
+
+    return err;
+}
+
+static FontRendererRec renderer = {
+    ".spd", 4, (int (*)()) 0, SpeedoOpenScalable,
+       (int (*)()) 0, SpeedoGetInfoScaleable, 0
+    , CAP_MATRIX | CAP_CHARSUBSETTING
+};
+    
+SpeedoRegisterFontFileFunctions()
+{
+    sp_make_standard_props();
+    sp_reset();
+    FontFileRegisterRenderer(&renderer);
+}