This manual page is for Mac OS X version 10.6.3

If you are running a different version of Mac OS X, view the documentation locally:

  • In Terminal, using the man(1) command

Reading manual pages

Manual pages are intended as a quick reference for people who already understand a technology.

  • For more information about the manual page format, see the manual page for manpages(5).

  • For more information about this technology, look for other documentation in the Apple Reference Library.

  • For general information about writing shell scripts, read Shell Scripting Primer.



libXp(3Xp)                                    XPRINT FUNCTIONS                                    libXp(3Xp)



NAME
       libXp - X Print Client Library

SYNOPSIS
       cc [ flag...  ] file...-lXp [ library...  ]
       #include <X11/extensions/Print.h>

DESCRIPTION
       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  XpGetPrinterList()  request.  Once  the  application  has
       selected a printer, it creates and sets a print context using XpCreateContext() and XpSetContext().

       The  Print Context represents the embodiment of the printer selected. It is initialized by the Xprint
       server at 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 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 XpEnd-Job() XpEndJob()
       Job() 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.


       A simple X application supplemented with some of the libXp routines might look like this:




       #include <X11/Xlib.h>
       #include <X11/extensions/Print.h>

       main()
       {
           Display *pdpy;
           Screen *pscreen;
           Window pwin;
           XPPrinterList plist;
           XPContext pcontext;
           int plistCnt;
           char *attrPool;
       #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 );
       }


SEE ALSO
       Xprt(1), XpCreateContext(3Xp),  XpDestroyContext(3Xp),  XpEndJob(3Xp),  XpEndPage(3Xp),  XpFreePrint-
       erList(3Xp),    XpGetAttributes(3Xp),   XpGetPageDimensions(3Xp),   XpGetPrinterList(3Xp),   XpSetAt-tributes(3Xp), XpSetAttributes(3Xp),
       tributes(3Xp), XpSetContext(3Xp), XpStartJob(3Xp), XpStartPage(3Xp)

       X Print Service Extension Library



X Version 11                                     libXp 1.0.0                                      libXp(3Xp)

Reporting Problems

The way to report a problem with this manual page depends on the type of problem:

Content errors
Report errors in the content of this documentation with the feedback links below.
Bug reports
Report bugs in the functionality of the described tool or API through Bug Reporter.
Formatting problems
Report formatting mistakes in the online version of these pages with the feedback links below.

Did this document help you? Yes It's good, but... Not helpful...