summaryrefslogtreecommitdiff
path: root/man/libXp.man
diff options
context:
space:
mode:
Diffstat (limited to 'man/libXp.man')
-rw-r--r--man/libXp.man210
1 files changed, 210 insertions, 0 deletions
diff --git a/man/libXp.man b/man/libXp.man
new file mode 100644
index 0000000..c886327
--- /dev/null
+++ b/man/libXp.man
@@ -0,0 +1,210 @@
+.\" $XdotOrg: $
+.\"
+.\" Copyright 1996 Hewlett-Packard Company
+.\" Copyright 1996 International Business Machines Corp.
+.\" Copyright 1996, 1999, 2004 Sun Microsystems, Inc.
+.\" Copyright 1996 Novell, Inc.
+.\" Copyright 1996 Digital Equipment Corp.
+.\" Copyright 1996 Fujitsu Limited
+.\" Copyright 1996 Hitachi, Ltd.
+.\" Copyright 1996 X Consortium, Inc.
+.\"
+.\" 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 COPYRIGHT HOLDERS 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 names of the copyright holders
+.\" shall not be used in advertising or otherwise to promote the sale, use
+.\" or other dealings in this Software without prior written authorization
+.\" from said copyright holders.
+.\"
+.TH libXp 3Xp __xorgversion__ "XPRINT FUNCTIONS"
+.SH NAME
+libXp \- X Print Client Library
+.SH SYNOPSIS
+.B cc
+[
+.B flag...
+]
+file...-lXp
+[
+.B library...
+]
+.BR
+.nf
+XCOMM\&include <X11/extensions/Print.h>
+.fi
+.SH DESCRIPTION
+.LP
+libXp provides public APIs to allow client applications to render to non-display devices.
+
+When an application wishes to print, it makes a display connection to the X print server and asks
+to see the list of
+printers available with an
+.I XpGetPrinterList()
+request. Once the application has selected a printer, it creates and sets a print context using
+.I XpCreateContext()
+and
+.I XpSetContext().
+
+The Print Context represents the embodiment of the printer selected. It is initialized by the
+Xprint server at
+.I XpCreateContext()
+time to contain a printer's default capabilities, as well as, the description of its overall
+capabilties, and to maintain
+the state of settings on the printer, the state of rendering against the printer, and the rendered
+output.
+
+The Print Context affects how the DDX driver generates its page description language (PDL) and how
+the PDL is submitted to
+a spooler. The print context may also affect fonts and other elements in the dix layer of the X
+Print Server. The print
+contexts can be shared among processes. Applications can enlist the help of secondary processes to
+manipulate print options
+in the Print context rather than taking on the task directly.
+
+Once an application has set options within the print context, it makes calls such as
+.I XpStartJob()
+to delineate jobs, documents, and pages within a sequence of normal X calls.
+
+A job is a collection of documents, where each document is in turn a collection of pages. When
+.I XpEndJob()
+is called, the resulting PDL is either sent to a print spooler or can be retrieved by the
+application itself.
+
+The developer basically has to make changes to the X application to make use of the X Print
+Service.
+.LP
+
+A simple X application supplemented with some of the libXp routines might look like this:
+
+
+.\" Note: C Comments and include statements in the sample code must use the
+.\" zero-width non-printing nroff entity \& to prevent the C pre-processor
+.\" from processing or stripping them out during the build
+
+.nf
+
+XCOMM\&include <X11/Xlib.h>
+XCOMM\&include <X11/extensions/Print.h>
+
+main()
+{
+ Display *pdpy;
+ Screen *pscreen;
+ Window pwin;
+ XPPrinterList plist;
+ XPContext pcontext;
+ int plistCnt;
+ char *attrPool;
+XCOMM\&define NPOOLTYPES 5
+ XPAttributes poolType[NPOOLTYPES] = {XPJobAttr,XPDocAttr,XPPageAttr,
+ XPPrinterAttr,XPServerAttr};
+ int i;
+ unsigned short width, height;
+ XRectangle rect;
+ char *printServerName = ":1";
+ char *mylaser = "varos";
+
+ /\&*
+ * connect to the X print server
+ *\&/
+ pdpy = XOpenDisplay( printServerName );
+
+ /\&*
+ * see if the printer "mylaser" is available
+ *\&/
+
+ plist = XpGetPrinterList (pdpy, mylaser, &plistCnt );
+
+ /\&*
+ * Initialize a print context representing "mylaser"
+ *\&/
+
+ pcontext = XpCreateContext( pdpy, plist[0].name );
+ XpFreePrinterList( plist );
+
+ /\&*
+ * Possibly modify attributes in the print context
+ *\&/
+ for(i=0;i < NPOOLTYPES;i++) {
+ if(attrPool = XpGetAttributes( pdpy, pcontext, poolType[i] )) {
+ /\&* twiddle attributes *\&/
+ /\&*
+ XpSetAttributes( pdpy, pcontext, poolType[i],
+ attrPool, XPAttrMerge );
+ *\&/
+ XFree(attrPool);
+ }
+ }
+
+
+ /\&*
+ * Set a print server, then start a print job against it
+ *\&/
+
+ XpSetContext( pdpy, pcontext );
+ XpStartJob( pdpy, XPSpool );
+
+ /\&*
+ * Generate the first page
+ *\&/
+
+ pscreen = XpGetScreenOfContext( pdpy, pcontext );
+ XpGetPageDimensions( pdpy, pcontext, &width, &height,
+ &rect);
+ pwin = XCreateSimpleWindow( pdpy, RootWindowOfScreen( pscreen ),
+ rect.x, rect.y, rect.width, rect.height, 2,
+ BlackPixelOfScreen( pscreen),
+ WhitePixelOfScreen( pscreen));
+
+ XpStartPage( pdpy, pwin );
+ /\&* usual rendering stuff..... *\&/
+ XpEndPage( pdpy );
+
+ XpStartPage( pdpy, pwin );
+ /\&* some more rendering..... *\&/
+ XpEndPage( pdpy );
+
+ /\&*
+ * End the print job - the final results are sent by the X print
+ * server to the spooler sub system.
+ *\&/
+
+ XpEndJob( pdpy );
+ XpDestroyContext( pdpy, pcontext );
+ XCloseDisplay( pdpy );
+}
+
+.fi
+.SH "SEE ALSO"
+.BR Xprt (1),
+.BR XpCreateContext (3Xp),
+.BR XpDestroyContext (3Xp),
+.BR XpEndJob (3Xp),
+.BR XpEndPage (3Xp),
+.BR XpFreePrinterList (3Xp),
+.BR XpGetAttributes (3Xp),
+.BR XpGetPageDimensions (3Xp),
+.BR XpGetPrinterList (3Xp),
+.BR XpSetAttributes (3Xp),
+.BR XpSetContext (3Xp),
+.BR XpStartJob (3Xp),
+.BR XpStartPage (3Xp)
+
+.I X Print Service Extension Library