]> git.sesse.net Git - rdpsrv/blobdiff - Xserver/lib/font/fontfile/printerfont.c
Import X server from vnc-3.3.7.
[rdpsrv] / Xserver / lib / font / fontfile / printerfont.c
diff --git a/Xserver/lib/font/fontfile/printerfont.c b/Xserver/lib/font/fontfile/printerfont.c
new file mode 100644 (file)
index 0000000..921de0c
--- /dev/null
@@ -0,0 +1,212 @@
+/* $XConsortium: printerfont.c /main/1 1996/09/28 16:49:21 rws $ */
+
+/*
+
+Copyright (c) 1991  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.
+
+*/
+
+/*
+ * Author:  Keith Packard, MIT X Consortium
+ */
+/* $NCDId: @(#)fontfile.c,v 1.6 1991/07/02 17:00:46 lemke Exp $ */
+
+#include    "fntfilst.h"
+
+/*
+ * Map FPE functions to renderer functions
+ */
+
+extern int FontFileInitFPE();
+extern int FontFileResetFPE();
+extern int FontFileFreeFPE();
+extern void FontFileCloseFont();
+#define PRINTERPATHPREFIX  "PRINTER:"
+
+/* STUB
+int XpClientIsPrintClient(client,fpe)
+pointer                client;
+FontPathElementPtr     fpe;
+{ return 1; }
+ */
+
+int
+PrinterFontNameCheck (name)
+    char    *name;
+{
+    if (strncmp(name,PRINTERPATHPREFIX,strlen(PRINTERPATHPREFIX)) != 0)
+       return 0;
+    name += strlen(PRINTERPATHPREFIX);
+#ifndef NCD
+    return *name == '/';
+#else
+    return ((strcmp(name, "built-ins") == 0) || (*name == '/'));
+#endif
+}
+
+int
+PrinterFontInitFPE (fpe)
+    FontPathElementPtr fpe;
+{
+    int                        status;
+    FontDirectoryPtr   dir;
+    char *             name;
+
+    name = fpe->name + strlen(PRINTERPATHPREFIX);
+    status = FontFileReadDirectory (name, &dir);
+    if (status == Successful)
+    {
+       if (dir->nonScalable.used > 0)
+           if (!FontFileRegisterBitmapSource (fpe))
+           {
+               FontFileFreeFPE (fpe);
+               return AllocError;
+           }
+       fpe->private = (pointer) dir;
+    }
+    return status;
+}
+
+/* Here we must check the client to see if it has a context attached to
+ * it that allows us to access the printer fonts
+ */
+
+int
+PrinterFontOpenFont (client, fpe, flags, name, namelen, format, fmask,
+                 id, pFont, aliasName, non_cachable_font)
+    pointer            client;
+    FontPathElementPtr fpe;
+    int                        flags;
+    char               *name;
+    int                        namelen;
+    fsBitmapFormat     format;
+    fsBitmapFormatMask fmask;
+    XID                        id;
+    FontPtr            *pFont;
+    char               **aliasName;
+    FontPtr            non_cachable_font;
+{
+    if (XpClientIsPrintClient(client,fpe))
+       return (FontFileOpenFont  (client, fpe, flags, name, namelen, format, 
+               fmask, id, pFont, aliasName, non_cachable_font));
+    return BadFontName;
+}
+
+PrinterFontListFonts (client, fpe, pat, len, max, names)
+    pointer     client;
+    FontPathElementPtr fpe;
+    char       *pat;
+    int         len;
+    int         max;
+    FontNamesPtr names;
+{
+    if (XpClientIsPrintClient(client,fpe))
+       return FontFileListFonts (client, fpe, pat, len, max, names);
+    return BadFontName;
+}
+
+PrinterFontStartListFontsWithInfo(client, fpe, pat, len, max, privatep)
+    pointer     client;
+    FontPathElementPtr fpe;
+    char       *pat;
+    int         len;
+    int         max;
+    pointer    *privatep;
+{
+    if (XpClientIsPrintClient(client,fpe))
+       return FontFileStartListFontsWithInfo(client, fpe, pat, len, 
+                               max, privatep);
+    return BadFontName;
+}
+
+PrinterFontListNextFontWithInfo(client, fpe, namep, namelenp, pFontInfo,
+                            numFonts, private)
+    pointer            client;
+    FontPathElementPtr fpe;
+    char               **namep;
+    int                        *namelenp;
+    FontInfoPtr                *pFontInfo;
+    int                        *numFonts;
+    pointer            private;
+{
+    if (XpClientIsPrintClient(client,fpe))
+       return FontFileListNextFontWithInfo(client, fpe, namep, namelenp, 
+                               pFontInfo, numFonts, private);
+    return BadFontName;
+}
+
+PrinterFontStartListFontsAndAliases(client, fpe, pat, len, max, privatep)
+    pointer     client;
+    FontPathElementPtr fpe;
+    char       *pat;
+    int         len;
+    int         max;
+    pointer    *privatep;
+{
+    if (XpClientIsPrintClient(client,fpe))
+       return FontFileStartListFontsAndAliases(client, fpe, pat, len, 
+                               max, privatep);
+    return BadFontName;
+}
+
+int
+PrinterFontListNextFontOrAlias(client, fpe, namep, namelenp, resolvedp,
+                           resolvedlenp, private)
+    pointer            client;
+    FontPathElementPtr fpe;
+    char               **namep;
+    int                        *namelenp;
+    char               **resolvedp;
+    int                        *resolvedlenp;
+    pointer            private;
+{
+    if (XpClientIsPrintClient(client,fpe))
+       return FontFileListNextFontOrAlias(client, fpe, namep, namelenp, 
+                               resolvedp, resolvedlenp, private);
+    return BadFontName;
+}
+
+extern void FontFileEmptyBitmapSource();
+typedef int (*IntFunc) ();
+static int  printer_font_type;
+
+PrinterFontRegisterFpeFunctions ()
+{
+    /* what is the use of printer font type? */
+    printer_font_type = RegisterFPEFunctions(PrinterFontNameCheck,
+                                         PrinterFontInitFPE,
+                                         FontFileFreeFPE,
+                                         FontFileResetFPE,
+                                         PrinterFontOpenFont,
+                                         FontFileCloseFont,
+                                         PrinterFontListFonts,
+                                         PrinterFontStartListFontsWithInfo,
+                                         PrinterFontListNextFontWithInfo,
+                                         (IntFunc) 0,
+                                         (IntFunc) 0,
+                                         (IntFunc) 0,
+                                         PrinterFontStartListFontsAndAliases,
+                                         PrinterFontListNextFontOrAlias,
+                                         FontFileEmptyBitmapSource);
+}