#ifndef PROPRINT_H
#define PROPRINT_H
#include <ProUtil.h>
typedef struct pro_print_size
{
ProPlotPaperSize size; /* A_SIZE_PLOT, VARIABLE_SIZE_PLOT, etc */
double width; /* In inches, if size == VARIABLE_SIZE_PLOT */
double height; /* In inches, if size == VARIABLE_SIZE_PLOT */
} ProPrintSize;
typedef enum
{
PRINT_SAVE_NULL = 0,
PRINT_SAVE_SINGLE_FILE,
PRINT_SAVE_MULTIPLE_FILE,
PRINT_SAVE_APPEND_TO_FILE
} ProPrintSaveMethod;
typedef enum
{
PRINT_CURRENT_SHEET = 0,
PRINT_ALL_SHEETS,
PRINT_SELECTED_SHEETS
} ProPrintSheets;
/* ================================================================
Printer Options : setup the printer
================================================================= */
typedef struct _prnprinter
{
ProCharName printer_type; /* POSTSCRIPT: generic postscript
COLORPOSTSC: color postscript
MS_PRINT_MGR: MS Print Manager
c.f. the list in Add Printer */
/* --- File related options --- */
ProBoolean save_to_file; /* save the plot to file */
ProPrintSaveMethod save_method; /* Append, single or multiple file */
ProPath filename;
ProBoolean delete_after; /* file is deleted after print command
is executed */
/* --- Print command options --- */
ProBoolean send_to_printer; /* Send the plot to printer directly */
ProPath print_command; /* command to print */
ProPath pen_table; /* file containing pen table */
ProPrintSize paper_size; /* Size of the paper to be printed */
int quantity; /* how many copies */
/* --- Printer specific options --- */
ProBoolean sw_handshake; /* TRUE: software, FALSE: hardware */
ProBoolean roll_media; /* TRUE: roll-media, FALSE: cut sheet */
ProBoolean use_ttf; /* TRUE: use TTF, FALSE: stroke text */
double slew; /* velocity in x and y directions */
ProBoolean rotate_plot; /* rotate plot 90 degrees */
} ProPrintPrinterOpts;
/* ================================================================
Model Options : setup the model
================================================================= */
typedef struct _prnobject
{
ProMdl mdl; /* model to be printed */
int quality; /* 0 (No line check)
1 (No overlap check)
2 (Simple overlap check)
3 (Complex overlap check) */
/* --- Options available only with solid objects --- */
ProBoolean use_solid_scale; /* Print using solid scale */
/* --- Options available only with drawing objects --- */
ProBoolean use_drawing_size; /* override paper_size in
ProPrintPrinterOptions
with the size of the drawing */
ProBoolean draw_format; /* Drawing format is also printed */
ProBoolean segmented; /* Segmented plots of the drawing
Allowed to be PRO_B_TRUE only if
plotting a single page */
ProBoolean layer_only; /* Print only a particular layer */
ProName layer_name; /* name of the layer */
ProPrintSheets sheets;
int range[2]; /* start and end sheets of a drawing */
} ProPrintMdlOpts;
/* ================================================================
Placement Options : setup the object placement
================================================================= */
typedef struct _prnplacement
{
double scale;
double offset[2]; /* Offset from lower-left corner of the plot
(in inches) */
ProBoolean keep_panzoom; /* maintain window panzoom */
/* --- options for clipping --- */
ProBoolean clip_plot; /* whether or not we want to clip the plot */
ProBoolean shift_to_ll_corner; /* shift the clip area to lower-left corner */
double clip_area[2][2]; /* range is from 0.0 to 1.0 */
/* --- options for label --- */
ProBoolean place_label;
double label_height; /* in inches */
} ProPrintPlacementOpts;
/*===========================================================================*/
PRO_BEGIN_C_DECLS
extern ProError ProPrintPrinterOptionsGet(ProCharName printer_type,
ProPrintPrinterOpts *options);
/*
Purpose: Get printer options for a specified printer
Input Arguments:
printer_type - Name of the printer type.
Output Arguments:
options - Initialized printer options
Return Values:
PRO_TK_NO_ERROR - The function completed successfully.
PRO_TK_BAD_INPUTS - One or more arguments is bad.
PRO_TK_E_NOT_FOUND - The printer type was not recognized
*/
extern ProError ProPrintMdlOptionsGet(ProMdl model,
ProPrintMdlOpts *options);
/*
Purpose: Get model options for a specified model
Input Arguments:
model - Model
Output Arguments:
options - Initialized model options
Return Values:
PRO_TK_NO_ERROR PRO_TK_BAD_INPUTS
*/
extern ProError ProPrintPlacementOptionsGet(ProPrintPlacementOpts *options);
/*
Purpose: Get the current print placement options
Input Arguments:
none
Output Arguments:
options - Initialized placement options
Return Values:
PRO_TK_NO_ERROR
*/
extern ProError ProPrintPCFOptionsGet(ProPath pcf_filename, ProMdl model,
ProPrintPrinterOpts *printer_options,
ProPrintMdlOpts *mdl_options,
ProPrintPlacementOpts *place_options);
/*
Purpose: Get the print options from a specified PCF file.
Input Arguments:
pcf_filename - The name of the PCF file
model - Model to be printed
Output Arguments:
printer_options - The printer options
mdl_options - The model options
place_options - The placement options
Return Values:
PRO_TK_NO_ERROR
PRO_TK_E_NOT_FOUND - The PCF file does not exist PRO_TK_BAD_INPUTS
*/
extern ProError ProPrintExecute(int window_id,
ProPrintPrinterOpts *printer_options,
ProPrintMdlOpts *mdl_options,
ProPrintPlacementOpts *place_options);
/*
Purpose: Print a window using the specified options
<P> The mdl in the window must match the mdl in mdl_options.
<P> All the options should be first initialized by the apropriate
ProPrintInit functions above.
<P> The filename must contain the full path or be the name of a
file in plot_dir or current directory. If file already exists
there, it will be overwritten.
<P> The mdl in the the mdl_options should be the object loaded to
the window to be printed. The window can be a non-graphics window.
<P> This function generates a wireframe plot of the object in
either vector or raster format.
<P> The correct ProPrintExecute printer_type is defined by the
plotter value on the first line of the plotter configuration file.
This file is available in the <Creo Parametric Load
Point>/text/plot_config folder. For the list of supported
printers, please refer to the list in "Add Printer" in Creo
Parametric's print dialog. </P>
Input Arguments:
window_id - The handle to the Creo Parametric window
printer_options - The printer options
mdl_options - The model options
place_options - The placement options
Output Arguments:
none
Return Values:
PRO_TK_NO_ERROR - Window printed successfully
PRO_TK_BAD_INPUTS - One or more arguments is bad
PRO_TK_BAD_CONTEXT - Print is not available in Design Test mode
PRO_TK_E_NOT_FOUND - Incomplete input data
PRO_TK_GENERAL_ERROR - Problem during data conversion
PRO_TK_INVALID_NAME - Wrong file name
PRO_TK_CANT_WRITE - No write access for target file
*/
PRO_END_C_DECLS
#endif /* PROPRINT_H */