Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
XmPrintToFile(3)	    Library Functions Manual		XmPrintToFile(3)

NAME
     XmPrintToFile -- Retrieves and saves data that would normally be printed by
     the X Print Server.

SYNOPSIS
     #include <Xm/Print.h>
     XtEnumXmPrintToFile(
     Display*dpy,
     Stringfilename,
     XPFinishProcfinish_proc,
     XtPointerclient_data);

DESCRIPTION
     XmPrintToFile  hides the details of X display connection and XpGetDocument-
     Data to the Motif application programmer.

     This function is a convenience routine that hides the details of the X  and
     Xp internals to the application programmer by calling the XpGetDocumentData
     function with appropriate save and finish callbacks.

     This  is  used in the context of X Printing when the user has specified the
     "print-to-file" option from a regular Print Setup Dialog box.

     XmPrintToFile first tries to open the given filename for  writing	and  re-
     turns False if it can't.  Else, it uses XpGetDocumentData, giving it a save
     proc  that  writes  the  data  received  in the file and a finish proc that
     closes the file or removes it on an  unsuccessful	termination.   It  calls
     finish_proc  at  that  point,  passing it the argument received from the Xp
     layer (status == XPGetDocFinished means the file is valid and  was  closed,
     otherwise the file was removed).

     XmPrintToFile  is	non-blocking;  if it returns successfully, it just means
     the file was opened successfully, not that all the data was received.

     dpy       Print display connection.

     filename  Name of the file to put the print data in.

     finish_proc
	       Called when all the data has been received.

     client_data
	       Passed with the finish_proc.

RETURN VALUE
     Returns False if the filename could not be created or opened  for	writing,
     True otherwise.

ERRORS/WARNINGS
     Not applicable

EXAMPLES
     A typical OK callback from a DtPrintSetupBox:

     PrintOKCallback(widget...)
     /*-------------*/
     {	 int save_data = XPSpool;

	 pshell = XmPrintSetup (widget, pbs->print_screen,
					"Print", NULL, 0);

	 XtAddCallback(pshell, XmNstartJobCallback, startJobCB, data);

	 if (pbs->destination == DtPRINT_TO_FILE)
		      save_data = XPGetData;

	 /* start job must precede XpGetDocumentData in XmPrintToFile */
	 XpStartJob(XtDisplay(pshell), save_data);
	 XFlush(XtDisplay(pshell));  /* maintain the sequence
				      between startjob and getdocument */

	 /* setup print to file */
	 if (pbs->destination == DtPRINT_TO_FILE)
	     XmPrintToFile(XtDisplay(pshell),
				      pbs->dest_info, FinishPrintToFile, NULL);
	 }

     }

     static void
     startJobCB(Widget, XtPointer call_data, XtPointer client_data)
     {
       print(p);   /* rendering happens here */

       XpEndJob(XtDisplay(p->print_shell));

       /* clean up */
       XtDestroyWidget(p->print_shell);
	       XtCloseDisplay(XtDisplay(p->print_shell));
     }

SEE ALSO
     XmPrintSetup(3), XmPrintShell(3), XmRedisplayWidget(3), XmPrintPopupPDM(3)

								XmPrintToFile(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=XmPrintToFile&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help