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  XpGetDocu-
       mentData	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 XpGetDoc-
       umentData 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
       returns	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 re-
       ceived.

       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	 writ-
       ing, 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), XmPrintPopup-
       PDM(3)

							      XmPrintToFile(3)

NAME | SYNOPSIS | DESCRIPTION | RETURN VALUE | ERRORS/WARNINGS | EXAMPLES | SEE ALSO

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

home | help