/*********************************************************************************************
 *                                                                                           *
 *                                                                                           *
 *   Copyright 1989-2018 by AutoDesSys, Inc.                                                 *
 *                                                                                           *
 *   This software and its associated documentation contains proprietary,                    *
 *   confidential, and trade secret information of AutoDesSys Inc. and may not be            *
 *   disclosed, copied in any form, or used for any purpose except as specifically           *
 *   permitted in writing by AutoDesSys, Inc.                                                *
 *                                                                                           *
 *   AutoDesSys, Inc. grants permission to use the software to those who purchase            *
 *   a license.  Such a usage will be made according to the terms and conditions             *
 *   specified in the license agreement to which a licensee agrees before installing         *
 *   and commencing usage of the software.  The license agreement can be found               *
 *   on the envelop that contains the software CD.                                           *
 *                                                                                           *
 *   AutoDesSys, Inc. also grants permission to licensees to develop extensions to           *
 *   the software, which can be in the form of scripts or plugins.  The permission           *
 *   includes calling the API and call back functions provided by AutoDesSys, Inc.           *
 *   and accessing information relevant to these functions and the general workings          *
 *   of form.Z, but only up to the point to which AutoDesSys, Inc. has chosen to             *
 *   expose, through its form.Z SDK Manual.  All extensions developed by third               *
 *   parties will include a copy of this copyright note in an easily accessible place or     *
 *   a clear instruction to read this original note by AutoDesSys, Inc.                      *
 *                                                                                           *
 *   All the software distributed under a license, either for the purpose of using it or     *
 *   for the purpose of developing extensions, is distributed AS IS, WITHOUT                 *
 *   WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, AND                                    *
 *   AutoDesSys, Inc. HEREBY DISCLAIMS ALL SUCH WARRANTIES,                                  *
 *   INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF                                         *
 *   MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.                                    *
 *                                                                                           *
 *   formZ, RenderZone, and RadioZity are registered trademarks of AutoDesSys, Inc.          *
 *                                                                                           *
 *   form.Z SDK, Version 8.6.3, Dec 03, 2018                                                 *
 *                                                                                           *
 *                                                                                           *
 *********************************************************************************************/



#ifndef __FORMZ_EXPT_VECT_API_H
#define __FORMZ_EXPT_VECT_API_H 1


#include "fzrt_api.h"
#include "fz_ffmt_type_api.h"
#include "fz_layr_api.h"


#ifdef  __cplusplus
extern "C" {
#endif


				


/****************************************************************

	Vector Export


	Description
		These are functions used by renderers and draft plotters to draw image vector data 
		for export to a file.  These functions form a link between vector and polygon renderers 
		and vector exporters.  In formZ vector images are created by rendering vector data 
		almost directly to the file.  Renderers should call these functions from within their 
		implementation of fz_rndr_cbak_expt_vect_out.  The vector data should be created 
		as if it was being drawn to the screen, except these functions are called instead 
		of screen drawing calls.

		The types of vector data that can be are: text, points, arcs, lines and line sets.  Line 
		sets are essentially polylines.

		Text can be exported in one of three ways depending on the capabilities of the exporter 
		and the file format: 
		1. Text as paths - Text is exported as polylines. 
		2. Text as individual characters - Text is exported one character at a time. 
		3. Lines of text - Text is exported as strings.  Each string must not contain 
		any new line characters and must be one font, style, size, etc.
 ****************************************************************/


/****************************************************************

	fz_ffmt_lineset_flags_enum


	Description
		Controls drawing of polylines to vector images.

	Members
		FZ_FFMT_LINESET_FLAGS_STROKE_BIT
			Draw the outline of the polyline using the current line color.
		FZ_FFMT_LINESET_FLAGS_FILL_BIT
			Draw as a solid color filled polygon using the current fill color.
		FZ_FFMT_LINESET_FLAGS_CLIP_BIT
			Don't draw, but use as a clipping polygon.
		FZ_FFMT_LINESET_FLAGS_PAT_BIT
			Draw as a polygon filled with the current pattern and fill color.

	Availability	5.0.0.0

 ****************************************************************/
typedef enum fz_ffmt_lineset_flags_enum
{
	FZ_FFMT_LINESET_FLAGS_STROKE_BIT		= 0,
	FZ_FFMT_LINESET_FLAGS_FILL_BIT			= 1,
	FZ_FFMT_LINESET_FLAGS_CLIP_BIT			= 2,
	FZ_FFMT_LINESET_FLAGS_PAT_BIT			= 3
}  fz_ffmt_lineset_flags_enum;

#define FZ_FFMT_LINESET_FLAGS_FILL_STROKE	((1<<FZ_FFMT_LINESET_FLAGS_FILL_BIT)|(1<<FZ_FFMT_LINESET_FLAGS_STROKE_BIT))
#define FZ_FFMT_LINESET_FLAGS_FILL_PAT	((1<<FZ_FFMT_LINESET_FLAGS_PAT_BIT)|(1<<FZ_FFMT_LINESET_FLAGS_FILL_BIT))

/****************************************************************

	fz_ffmt_expt_vect_feature_enum


	Description
		Features supported or not supported by vector exporters.  By passing these 
		to fz_expt_vect_check_feature, it can be determined if a specific exporter 
		supports a feature.

	Members
		FZ_FFMT_EXPT_VECT_FEATURE_LINE_COLOR
			Exporter supports line colors.
		FZ_FFMT_EXPT_VECT_FEATURE_PARM_ARC_ARC
			Exporter supports parametric arcs.
		FZ_FFMT_EXPT_VECT_FEATURE_PATTERN
			Exporter supports patterns.
		FZ_FFMT_EXPT_VECT_FEATURE_DASH
			Exporter supports dash lines.
		FZ_FFMT_EXPT_VECT_FEATURE_VERT_INVERT
			Exporter uses inverted (vertical) coordinates.
		FZ_FFMT_EXPT_VECT_FULL_FACES
			The translator will export full face data.  If this 
			feature is not set, formZ will filter out duplicate segments 
			so that each edge is only exported once.
		FZ_FFMT_EXPT_VECT_POINTS_AS_POINTS
			The exporter will export points from a model view as points. 
			If this feature is not set, formZ will pass points to the translator 
			as they are drawn on the screen (i.e. as filled polylines in wireframe).

	Availability	5.0.0.0

 ****************************************************************/
typedef enum fz_ffmt_expt_vect_feature_enum
{
	FZ_FFMT_EXPT_VECT_FEATURE_LINE_COLOR = 0,
	FZ_FFMT_EXPT_VECT_FEATURE_PARM_ARC_ARC,
	FZ_FFMT_EXPT_VECT_FEATURE_PATTERN,
	FZ_FFMT_EXPT_VECT_FEATURE_DASH,
	FZ_FFMT_EXPT_VECT_FEATURE_VERT_INVERT,
	FZ_FFMT_EXPT_VECT_FULL_FACES,
	FZ_FFMT_EXPT_VECT_POINTS_AS_POINTS,
				
	FZ_FFMT_EXPT_VECT_FEATURE_MAX
}  fz_ffmt_expt_vect_feature_enum;

/****************************************************************

	fz_expt_vect_tag_enum


	Description
		Set information about exported vectors. 
		Exported vectors can be tagged with additional information. 
		This enumeration defines the information that can be tagged 
		with vectors.

	Members
		FZ_EXPT_VECT_TAG_FACE
			The object face that produces the vector data.
			Type: fzrt_int

	Availability	5.0.0.0

 ****************************************************************/
typedef enum fz_expt_vect_tag_enum
{
	FZ_EXPT_VECT_TAG_FACE,
								
	
	FZ_EXPT_VECT_TAG_MAX
}  fz_expt_vect_tag_enum;

/****************************************************************

	fz_expt_vect_lineset_add_pnt



	Description
		Adds a point to a lineset.

	Parameters
		windex  [Input]
			project window index
		expt_vect  [Input]
			Image vector export data
		x  [Input]
			The x location of the point to add to the line set
		y  [Input]
			The y location of the point to add to the line set

	Returns
		FZRT_NOERR on success.  Or: 
		Appropriate error on failure.


	Availability	5.0.0.0

 ****************************************************************/
typedef fzrt_error_td (*fz_expt_vect_lineset_add_pnt_func)(
							fzrt_int				windex,
							fz_expt_vect_ptr	expt_vect,
							double				x,
							double				y
							);

/****************************************************************

	fz_expt_vect_lineset_close



	Description
		Closes a line set.

	Parameters
		windex  [Input]
			project window index
		expt_vect  [Input]
			Image vector export data

	Returns
		FZRT_NOERR on success.  Or: 
		Appropriate error on failure.


	Availability	5.0.0.0

 ****************************************************************/
typedef fzrt_error_td (*fz_expt_vect_lineset_close_func)(
							fzrt_int				windex,
							fz_expt_vect_ptr	expt_vect
							);

/****************************************************************

	fz_expt_vect_lineset_reset



	Description
		Clears a line set.  This sets the number of points in the 
		line set to 0 and sets its closure to open.

	Parameters
		windex  [Input]
			project window index
		expt_vect  [Input]
			Image vector export data

	Returns
		FZRT_NOERR on success.  Or: 
		Appropriate error on failure.


	Availability	5.0.0.0

 ****************************************************************/
typedef fzrt_error_td (*fz_expt_vect_lineset_reset_func)(
							fzrt_int				windex,
							fz_expt_vect_ptr	expt_vect
							);

/****************************************************************

	fz_expt_vect_lineset_get_data



	Description
		Gets the points and closure for a line set.

	Parameters
		windex  [Input]
			project window index
		expt_vect  [Input]
			Image vector export data
		knt  [Result, Optional]
			The number of vertices in the line set.
		pnts  [Result]
			The array of vertices in the line set.
		closed  [Result, Optional]
			If TRUE, the line set is closed and a line segment should be 
			drawn connecting the last vertes to the first.  If FALSE, the line 
			set is open and the last vertex and first vertex are not connected.

	Returns
		FZRT_NOERR on success.  Or: 
		Appropriate error on failure.


	Availability	5.0.0.0

 ****************************************************************/
typedef fzrt_error_td (*fz_expt_vect_lineset_get_data_func)(
							fzrt_int				windex,
							fz_expt_vect_ptr	expt_vect,
							fzrt_int				*knt,
							fz_xy_td			*pnts,
							fzrt_boolean		*closed
							);

/****************************************************************

	fz_expt_vect_model_world_2_screen



	Description
		Converts a 2D projected model coordinate to 2D image vector coordinate.

	Parameters
		windex  [Input]
			project window index
		wx  [Input]
			projected world space x coordinate
		wy  [Input]
			projected world space y coordinate
		px  [Result]
			vector image x coordinate
		py  [Result]
			vector image y coordinate

	Returns
		FZRT_NOERR on success.  Or: 
		Appropriate error on failure.


	Availability	5.0.0.0

 ****************************************************************/
typedef fzrt_error_td (*fz_expt_vect_model_world_2_screen_func)(
							fzrt_int		windex,
							double		wx,
							double		wy,
							double		*px,
							double		*py
							);

/****************************************************************

	fz_expt_vect_draft_world_2_screen



	Description
		Converts a 2D draft coordinate to 2D image vector coordinate.

	Parameters
		windex  [Input]
			project window index
		wx  [Input]
			draft world space x coordinate
		wy  [Input]
			draft world space y coordinate
		px  [Result]
			vector image x coordinate
		py  [Result]
			vector image y coordinate

	Returns
		FZRT_NOERR on success.  Or: 
		Appropriate error on failure.


	Availability	5.0.0.0

 ****************************************************************/
typedef fzrt_error_td (*fz_expt_vect_draft_world_2_screen_func)(
							fzrt_int		windex,
							double		wx,
							double		wy,
							double		*px,
							double		*py
							);

/****************************************************************

	fz_expt_vect_draft_pane_world_2_screen



	Description
		Converts a 2D draft pane coordinate to 2D image vector coordinate.

	Returns
		FZRT_NOERR on success.  Or: 
		Appropriate error on failure.


	Availability	5.0.0.0

 ****************************************************************/
typedef fzrt_error_td (*fz_expt_vect_draft_pane_world_2_screen_func)(
							void		*dpane_ptr,
							fz_xy_td	*crd,
							short		ccnt
							);

/****************************************************************

	fz_expt_vect_draw_line



	Description
		Draws a line to a vector image.

	Parameters
		windex  [Input]
			project window index
		expt_vect  [Input]
			Image vector export data
		x1  [Input]
			The x location of the starting point of the line segment.
		y1  [Input]
			The y location of the starting point of the line segment.
		x2  [Input]
			The x location of the end point of the line segment.
		y2  [Input]
			The y location of the end point of the line segment.

	Returns
		FZRT_NOERR on success.  Or: 
		Appropriate error on failure.


	Availability	5.0.0.0

 ****************************************************************/
typedef fzrt_error_td (*fz_expt_vect_draw_line_func)(
							fzrt_int				windex,
							fz_expt_vect_ptr	expt_vect,
							double				x1,
							double				y1,
							double				x2,
							double				y2
							);

/****************************************************************

	fz_expt_vect_draw_lineset



	Description
		Draws a lineset to a vector image.

	Parameters
		windex  [Input]
			project window index
		expt_vect  [Input]
			Image vector export data
		how  [Input]
			What the lineset represents (i.e. outline, filled polygon, clip polygon).
			Bit Flag Type: fz_ffmt_lineset_flags_enum
		reset  [Input]
			If TRUE, clear the line set after exporting it

	Returns
		FZRT_NOERR on success.  Or: 
		Appropriate error on failure.


	Availability	5.0.0.0

 ****************************************************************/
typedef fzrt_error_td (*fz_expt_vect_draw_lineset_func)(
							fzrt_int						windex,
							fz_expt_vect_ptr			expt_vect,
							fzrt_int						how,
							fzrt_boolean				reset
							);

/****************************************************************

	fz_expt_vect_draw_point



	Description
		Draws a point to a vector image.

	Parameters
		windex  [Input]
			project window index
		expt_vect  [Input]
			Image vector export data
		x  [Input]
			The x location of the point.
		y  [Input]
			The y location of the point.

	Returns
		FZRT_NOERR on success.  Or: 
		Appropriate error on failure.


	Availability	5.0.0.0

 ****************************************************************/
typedef fzrt_error_td (*fz_expt_vect_draw_point_func)(
							fzrt_int				windex,
							fz_expt_vect_ptr	expt_vect,
							double				x,
							double				y
							);

/****************************************************************

	fz_expt_vect_draw_simple_text



	Description
		Draws simple text to a vector image.  Simple text is text that is all the same font 
		and size.  It has no style (normal, bold, etc.) unless the style is implicit 
		in the font.  It is not rotated and follows a linear path.  Any new line characters 
		are ignored.  Currently, formZ only calls this to export axis labels.

	Parameters
		windex  [Input]
			project window index
		expt_vect  [Input]
			Image vector export data
		fname  [Input]
			The font name.
		txsize  [Input]
			The point size of the font.
		x  [Input]
			The x location of the lower left corner of the text.
		y  [Input]
			The y location of the lower left corner of the text.
		str  [Input]
			The ascii text string.

	Returns
		FZRT_NOERR on success.  Or: 
		Appropriate error on failure.


	Availability	5.0.0.0

 ****************************************************************/
typedef fzrt_error_td (*fz_expt_vect_draw_simple_text_func)(
							fzrt_int				windex,
							fz_expt_vect_ptr	expt_vect,
							char				*fname,
							double				txsize,
							double				x,
							double				y,
							char				*str
							);

/****************************************************************

	fz_expt_vect_set_line_color



	Description
		Sets the line color for subsequent draws.

	Parameters
		windex  [Input]
			project window index
		expt_vect  [Input]
			Image vector export data
		rgb_color  [Input]
			The line color.

	Returns
		FZRT_NOERR on success.  Or: 
		Appropriate error on failure.


	Availability	5.0.0.0

 ****************************************************************/
typedef fzrt_error_td (*fz_expt_vect_set_line_color_func)(
							fzrt_int						windex,
							fz_expt_vect_ptr			expt_vect,
							fzrt_rgb_color_td *const	rgb_color
							);

/****************************************************************

	fz_expt_vect_set_fill_color



	Description
		Sets the fill color for subsequent draws.

	Parameters
		windex  [Input]
			project window index
		expt_vect  [Input]
			Image vector export data
		rgb_color  [Input]
			The fill color.

	Returns
		FZRT_NOERR on success.  Or: 
		Appropriate error on failure.


	Availability	5.0.0.0

 ****************************************************************/
typedef fzrt_error_td (*fz_expt_vect_set_fill_color_func)(
							fzrt_int						windex,
							fz_expt_vect_ptr			expt_vect,
							fzrt_rgb_color_td *const	rgb_color
							);

/****************************************************************

	fz_expt_vect_set_line_weight



	Description
		Sets the line weight for subsequent draws.

	Parameters
		windex  [Input]
			project window index
		expt_vect  [Input]
			Image vector export data
		line_width  [Input]
			The line width.

	Returns
		FZRT_NOERR on success.  Or: 
		Appropriate error on failure.


	Availability	5.0.0.0

 ****************************************************************/
typedef fzrt_error_td (*fz_expt_vect_set_line_weight_func)(
							fzrt_int				windex,
							fz_expt_vect_ptr	expt_vect,
							double				line_width
							);

/****************************************************************

	fz_expt_vect_get_line_weight



	Description
		Gets the file translator's default line weight.

	Parameters
		windex  [Input]
			project window index
		expt_vect  [Input]
			Image vector export data
		line_width  [Result]
			The line width.

	Returns
		FZRT_NOERR on success.  Or: 
		Appropriate error on failure.


	Availability	5.0.0.0

 ****************************************************************/
typedef fzrt_error_td (*fz_expt_vect_get_line_weight_func)(
							fzrt_int				windex,
							fz_expt_vect_ptr	expt_vect,
							double * const		line_width
							);

/****************************************************************

	fz_expt_vect_get_line_text_method



	Description
		Gets the file translator's text export method.

	Parameters
		windex  [Input]
			project window index
		expt_vect  [Input]
			Image vector export data
		text_method  [Result, Optional]
			How text is to be exported.
			Default Value: FZ_FFMT_IMAGE_VECT_WRITE_TEXT_METH_AS_PATHS

	Returns
		FZRT_NOERR on success.  Or: 
		Appropriate error on failure.


	Availability	5.0.0.0

 ****************************************************************/
typedef fzrt_error_td (*fz_expt_vect_get_line_text_method_func)(
		fzrt_int												windex,
		fz_expt_vect_ptr									expt_vect,
		fz_ffmt_image_vect_write_text_method_enum * const	text_method
																			
		);

/****************************************************************

	fz_expt_vect_start_compound



	Description
		Marks the start of a compound lineset.

	Parameters
		windex  [Input]
			project window index
		expt_vect  [Input]
			Image vector export data

	Returns
		FZRT_NOERR on success.  Or: 
		Appropriate error on failure.


	Availability	5.0.0.0

 ****************************************************************/
typedef fzrt_error_td (*fz_expt_vect_start_compound_func)(
							fzrt_int				windex,
							fz_expt_vect_ptr	expt_vect
							);

/****************************************************************

	fz_expt_vect_end_compound



	Description
		Marks the end of a compound lineset.

	Parameters
		windex  [Input]
			project window index
		expt_vect  [Input]
			Image vector export data

	Returns
		FZRT_NOERR on success.  Or: 
		Appropriate error on failure.


	Availability	5.0.0.0

 ****************************************************************/
typedef fzrt_error_td (*fz_expt_vect_end_compound_func)(
							fzrt_int				windex,
							fz_expt_vect_ptr	expt_vect
							);

/****************************************************************

	fz_expt_vect_save_gstate



	Description
		Instructs an exporter to save its graphics state.

	Parameters
		windex  [Input]
			project window index
		expt_vect  [Input]
			Image vector export data

	Returns
		FZRT_NOERR on success.  Or: 
		Appropriate error on failure.


	Availability	5.0.0.0

 ****************************************************************/
typedef fzrt_error_td (*fz_expt_vect_save_gstate_func)(
							fzrt_int				windex,
							fz_expt_vect_ptr	expt_vect
							);

/****************************************************************

	fz_expt_vect_restore_gstate



	Description
		Instructs an exporter to restore its saved graphics state.

	Parameters
		windex  [Input]
			project window index
		expt_vect  [Input]
			Image vector export data

	Returns
		FZRT_NOERR on success.  Or: 
		Appropriate error on failure.


	Availability	5.0.0.0

 ****************************************************************/
typedef fzrt_error_td (*fz_expt_vect_restore_gstate_func)(
							fzrt_int				windex,
							fz_expt_vect_ptr	expt_vect
							);

/****************************************************************

	fz_expt_vect_set_line_style



	Description
		Sets the line style for subsequent draws.

	Parameters
		windex  [Input]
			project window index
		expt_vect  [Input]
			Image vector export data
		type  [Input]
			Line style id (a lookup into the line style palette).
		lsty_flag  [Input]
			Bit flags controlling the drawing of the line style.
		delta  [Input]
			A parameter used to adjust the dashed at corners.
		d1  [Input]
			The length of the first dash.
		ddd  [Input]
			The length of the overall pattern.
		drawn  [Input]
			A parameter used to adjust the dashed at corners.

	Returns
		FZRT_NOERR on success.  Or: 
		Appropriate error on failure.


	Availability	5.0.0.0

 ****************************************************************/
typedef fzrt_error_td (*fz_expt_vect_set_line_style_func)(
							fzrt_int				windex,
							fz_expt_vect_ptr	expt_vect,
							char				type,
							short				lsty_flag,
							double				delta,
							double				d1,
							double				ddd,
							double				drawn
							);

/****************************************************************

	fz_expt_vect_draw_arc



	Description
		Draws arcs, circles and ellipses.

	Parameters
		windex  [Input]
			project window index
		expt_vect  [Input]
			Image vector export data
		cx  [Input]
			The x location of the center of the center of the arc.
		cy  [Input]
			The y location of the center of the center of the arc.
		rx  [Input]
			The radius along the x-axis.
		ry  [Input]
			The radius along the x-axis.
		ang1  [Input]
			The angle of the starting point of the arc.
		ang2  [Input]
			The angle of the end point of the arc.
		pitch  [Input]
			Rotation to apply to the arc.
		res  [Input]
			The maximum length of a line segment to represent the arc.
		how  [Input]
			What the arc represents (i.e. outline, filled polygon, clip polygon)
			Bit Flag Type: fz_ffmt_lineset_flags_enum

	Returns
		FZRT_NOERR on success.  Or: 
		Appropriate error on failure.


	Availability	5.0.0.0

 ****************************************************************/
typedef fzrt_error_td (*fz_expt_vect_draw_arc_func)(
							fzrt_int						windex,
							fz_expt_vect_ptr			expt_vect,
							double						cx,
							double						cy,
							double						rx,
							double						ry,
							double						ang1,
							double						ang2,
							double						pitch,
							short						res,
							fzrt_int						how
							);

/****************************************************************

	fz_expt_vect_set_pattern



	Description
		Sets the fill pattern for subsequent draws.

	Parameters
		windex  [Input]
			project window index
		expt_vect  [Input]
			Image vector export data
		color  [Input]
			The fill color.
		pat  [Input]
			The fill pattern.

	Returns
		FZRT_NOERR on success.  Or: 
		Appropriate error on failure.


	Availability	5.0.0.0

 ****************************************************************/
typedef fzrt_error_td (*fz_expt_vect_set_pattern_func)(
							fzrt_int					windex,
							fz_expt_vect_ptr		expt_vect,
							fzrt_rgb_color_td		*color,
							fzrt_pen_pattern_ptr	pat
							);

/****************************************************************

	fz_expt_vect_set_text_angle



	Description
		Sets the rotation of a text character.  This rotation is relative 
		to the plotted x-axis.  This sets the rotation for all subsequent 
		calls to fz_expt_vect_text_char.

	Parameters
		windex  [Input]
			project window index
		expt_vect  [Input]
			Image vector export data
		ang_rad  [Input]
			Rotation to apply to the text.

	Returns
		FZRT_NOERR on success.  Or: 
		Appropriate error on failure.


	Availability	5.0.0.0

 ****************************************************************/
typedef fzrt_error_td (*fz_expt_vect_set_text_angle_func)(
							fzrt_int				windex,
							fz_expt_vect_ptr	expt_vect,
							double				ang_rad
							);

/****************************************************************

	fz_expt_vect_set_text_font



	Description
		Sets the font of a text character.  This sets the font for 
		all subsequent calls to fz_expt_vect_text_char.

	Parameters
		windex  [Input]
			project window index
		expt_vect  [Input]
			Image vector export data
		font_name  [Input]
			The name of the font.
		size  [Input]
			The point size of the font.
		nchar  [Input]
			The number of characters this font applies to.

	Returns
		FZRT_NOERR on success.  Or: 
		Appropriate error on failure.


	Availability	5.0.0.0

 ****************************************************************/
typedef fzrt_error_td (*fz_expt_vect_set_text_font_func)(
							fzrt_int				windex,
							fz_expt_vect_ptr	expt_vect,
							char				*font_name,
							double				size,
							short				nchar
							);

/****************************************************************

	fz_expt_vect_text_char



	Description
		Writes a single text character.

	Parameters
		windex  [Input]
			project window index
		expt_vect  [Input]
			Image vector export data
		c  [Input]
			The ascii character to write.
		x  [Input]
			The x location of the character.
		y  [Input]
			The x location of the character.
		face  [Input]
			The id of the font.

	Returns
		FZRT_NOERR on success.  Or: 
		Appropriate error on failure.


	Availability	5.0.0.0

 ****************************************************************/
typedef fzrt_error_td (*fz_expt_vect_text_char_func)(
							fzrt_int				windex,
							fz_expt_vect_ptr	expt_vect,
							char				c,
							double				x,
							double				y,
							short				face
							);

/****************************************************************

	fz_expt_vect_string_header



	Description
		Tells an exporter that a text string is about to be exported. 
		This allows an exporter to write any necessary string begin 
		data to the file.

	Parameters
		windex  [Input]
			project window index
		expt_vect  [Input]
			Image vector export data
		llx  [Input]
			The x location of the lower left corner of the text.
		lly  [Input]
			The y location of the lower left corner of the text.
		size  [Input]
			The size of the string.
		angle  [Input]
			Rotation to apply to the text.
		lspc  [Input]
			The spacing between lines of text.
		just  [Input]
			The justification of the text.

	Returns
		FZRT_NOERR on success.  Or: 
		Appropriate error on failure.


	Availability	5.0.0.0

 ****************************************************************/
typedef fzrt_error_td (*fz_expt_vect_string_header_func)(
							fzrt_int				windex,
							fz_expt_vect_ptr	expt_vect,
							double				llx,
							double				lly,
							double				size,
							double				angle,
							double				lspc,
							char				just
							);

/****************************************************************

	fz_expt_vect_string_newline



	Description
		Inserts a new line in exported text.

	Parameters
		windex  [Input]
			project window index
		expt_vect  [Input]
			Image vector export data

	Returns
		FZRT_NOERR on success.  Or: 
		Appropriate error on failure.


	Availability	5.0.0.0

 ****************************************************************/
typedef fzrt_error_td (*fz_expt_vect_string_newline_func)(
							fzrt_int				windex,
							fz_expt_vect_ptr	expt_vect
							);

/****************************************************************

	fz_expt_vect_string_font



	Description
		Sets the font for exported text.  This sets the font for 
		all subsequent calls to fz_expt_vect_string_write.

	Parameters
		windex  [Input]
			project window index
		expt_vect  [Input]
			Image vector export data
		fnt  [Input]
			The Name of the font.
		size  [Input]
			Th font point size.

	Returns
		FZRT_NOERR on success.  Or: 
		Appropriate error on failure.


	Availability	5.0.0.0

 ****************************************************************/
typedef fzrt_error_td (*fz_expt_vect_string_font_func)(
							fzrt_int				windex,
							fz_expt_vect_ptr	expt_vect,
							char				*fnt,
							double				size
							);

/****************************************************************

	fz_expt_vect_string_write



	Description
		Writes a line of text.

	Parameters
		windex  [Input]
			project window index
		expt_vect  [Input]
			Image vector export data
		string  [Input]
			The text string to write.
		len  [Input]
			The length of the text string.

	Returns
		FZRT_NOERR on success.  Or: 
		Appropriate error on failure.


	Availability	5.0.0.0

 ****************************************************************/
typedef fzrt_error_td (*fz_expt_vect_string_write_func)(
							fzrt_int				windex,
							fz_expt_vect_ptr	expt_vect,
							char				*string,
							short				len
							);

/****************************************************************

	fz_expt_vect_string_trailer



	Description
		Tells an exporter that a text string is about to be exported. 
		This allows an exporter to write any necessary string end 
		data to the file.

	Parameters
		windex  [Input]
			project window index
		expt_vect  [Input]
			Image vector export data

	Returns
		FZRT_NOERR on success.  Or: 
		Appropriate error on failure.


	Availability	5.0.0.0

 ****************************************************************/
typedef fzrt_error_td (*fz_expt_vect_string_trailer_func)(
							fzrt_int				windex,
							fz_expt_vect_ptr	expt_vect
							);

/****************************************************************

	fz_expt_vect_check_feature



	Description
		Checks if a feature/capability is available in a vector exporter.

	Parameters
		windex  [Input]
			project window index
		expt_vect  [Input]
			Image vector export data
		ffmt_expt_vect_feature  [Input]
			The feature/capability
		check  [Result]
			If TRUE, the feature is supported

	Returns
		FZRT_NOERR on success.  Or: 
		Appropriate error on failure.


	Availability	5.0.0.0

 ****************************************************************/
typedef fzrt_error_td (*fz_expt_vect_check_feature_func)(
							fzrt_int							windex,
							fz_expt_vect_ptr				expt_vect,
							fz_ffmt_expt_vect_feature_enum	ffmt_expt_vect_feature,
							fzrt_boolean					*check
							);

/****************************************************************

	fz_expt_vect_prog_set_num_lines



	Description
		Set the number of vectors to be exported.  This tells 
		formZ how much data will be exported so that progress of the 
		export can be tracked and reported to the user via a progress bar.

	Parameters
		windex  [Input]
			project window index
		expt_vect  [Input]
			Image vector export data
		num_vects  [Input]
			The number of vectors to be exported
		prg_str  [Input]
			The progress string passed into fz_rndr_cbak_expt_vect_out

	Returns
		FZRT_NOERR on success.  Or: 
		Appropriate error on failure.


	Availability	5.0.0.0

 ****************************************************************/
typedef fzrt_error_td (*fz_expt_vect_prog_set_num_lines_func)(
							fzrt_int				windex,
							fz_expt_vect_ptr	expt_vect,
							fzrt_unsigned_int		num_vects,
							char				*prg_str
							);


/****************************************************************

	fz_expt_vect_set_tag



	Description
		Tags exported vector data. 
		This tells formZ which face each subsequent point, line, 
		lineset, arc, etc. are created from.

	Parameters
		windex  [Input]
			project window index
		expt_vect  [Input]
			Image vector export data
		tag  [Input]
			The tag to set
		val  [Input]
			The value of the tag

	Returns
		FZRT_NOERR on success.  Or: 
		Appropriate error on failure.


	Availability	5.0.0.0

 ****************************************************************/
typedef fzrt_error_td (*fz_expt_vect_set_tag_func)(
							fzrt_int					windex,
							fz_expt_vect_ptr		expt_vect,
							fz_expt_vect_tag_enum	tag,
							fzrt_int					val
							);

/****************************************************************

	fz_expt_vect_set_objt



	Description
		Tags exported vector data with its source object. 
		This tells formZ which object each subsequent point, line, 
		lineset, arc, etc. are created from.

	Parameters
		windex  [Input]
			project window index
		expt_vect  [Input]
			Image vector export data
		obj  [Input]
			The value of the tag

	Returns
		FZRT_NOERR on success.  Or: 
		Appropriate error on failure.


	Availability	5.0.0.0

 ****************************************************************/
typedef fzrt_error_td (*fz_expt_vect_set_objt_func)(
							fzrt_int					windex,
							fz_expt_vect_ptr		expt_vect,
							fz_objt_ptr				obj
							);

/****************************************************************

	fz_expt_vect_set_layr



	Description
		Tags exported vector data with a layer. 
		This tells formZ which layer each subsequent point, line, 
		lineset, arc, etc. are created from.

	Parameters
		windex  [Input]
			project window index
		expt_vect  [Input]
			Image vector export data
		layr  [Input]
			The value of the tag

	Returns
		FZRT_NOERR on success.  Or: 
		Appropriate error on failure.


	Availability	5.0.0.0

 ****************************************************************/
typedef fzrt_error_td (*fz_expt_vect_set_layr_func)(
							fzrt_int					windex,
							fz_expt_vect_ptr		expt_vect,
							fz_layr_ptr				layr
							);


/****************************************************************

	fz_expt_vect_modl_fset


	FZ_EXPT_VECT_FSET_TYPE
		
		formZ export vector data function set UUID.


	FZ_EXPT_VECT_FSET_NAME
		
		formZ export vector data function set name.


	FZ_EXPT_VECT_FSET_VERSION
		
		formZ export vector data function set version.


	Description
		Export Vector Data Function Set

	Availability	5.0.0.0

 ****************************************************************/


#define FZ_EXPT_VECT_FSET_TYPE		"\x75\x2a\x14\x4c\x8f\x20\x4b\x3b\x88\xd8\x8d\x16\x80\x62\xcf\x60"
#define FZ_EXPT_VECT_FSET_NAME		"Export Vector Data Functions"
#define FZ_EXPT_VECT_FSET_VERSION		FZPL_VERS_MAKE(5,0,0,0)

typedef struct fz_expt_vect_fset
{
	fzpl_fset_prvt_data_td								prvt_data;

	fz_expt_vect_lineset_add_pnt_func					fz_expt_vect_lineset_add_pnt;
	fz_expt_vect_lineset_close_func						fz_expt_vect_lineset_close;
	fz_expt_vect_lineset_reset_func						fz_expt_vect_lineset_reset;
	fz_expt_vect_lineset_get_data_func					fz_expt_vect_lineset_get_data;
	fz_expt_vect_model_world_2_screen_func				fz_expt_vect_model_world_2_screen;
	fz_expt_vect_draft_world_2_screen_func				fz_expt_vect_draft_world_2_screen;
	fz_expt_vect_draft_pane_world_2_screen_func			fz_expt_vect_draft_pane_world_2_screen;
	fz_expt_vect_draw_line_func							fz_expt_vect_draw_line;
	fz_expt_vect_draw_lineset_func						fz_expt_vect_draw_lineset;
	fz_expt_vect_draw_point_func						fz_expt_vect_draw_point;
	fz_expt_vect_draw_simple_text_func					fz_expt_vect_draw_simple_text;
	fz_expt_vect_set_line_color_func					fz_expt_vect_set_line_color;
	fz_expt_vect_set_fill_color_func					fz_expt_vect_set_fill_color;
	fz_expt_vect_set_line_weight_func					fz_expt_vect_set_line_weight;
	fz_expt_vect_get_line_weight_func					fz_expt_vect_get_line_weight;
	fz_expt_vect_get_line_text_method_func				fz_expt_vect_get_line_text_method;
	fz_expt_vect_start_compound_func					fz_expt_vect_start_compound;
	fz_expt_vect_end_compound_func						fz_expt_vect_end_compound;
	fz_expt_vect_save_gstate_func						fz_expt_vect_save_gstate;
	fz_expt_vect_restore_gstate_func					fz_expt_vect_restore_gstate;
	fz_expt_vect_set_line_style_func					fz_expt_vect_set_line_style;
	fz_expt_vect_draw_arc_func							fz_expt_vect_draw_arc;
	fz_expt_vect_set_pattern_func						fz_expt_vect_set_pattern;
	fz_expt_vect_set_text_angle_func					fz_expt_vect_set_text_angle;
	fz_expt_vect_set_text_font_func						fz_expt_vect_set_text_font;
	fz_expt_vect_text_char_func							fz_expt_vect_text_char;
	fz_expt_vect_string_header_func						fz_expt_vect_string_header;
	fz_expt_vect_string_newline_func					fz_expt_vect_string_newline;
	fz_expt_vect_string_font_func						fz_expt_vect_string_font;
	fz_expt_vect_string_write_func						fz_expt_vect_string_write;
	fz_expt_vect_string_trailer_func					fz_expt_vect_string_trailer;
	fz_expt_vect_check_feature_func						fz_expt_vect_check_feature;
	fz_expt_vect_prog_set_num_lines_func				fz_expt_vect_prog_set_num_lines;
	fz_expt_vect_set_tag_func							fz_expt_vect_set_tag;
	fz_expt_vect_set_objt_func							fz_expt_vect_set_objt;
	fz_expt_vect_set_layr_func							fz_expt_vect_set_layr;
	
	

}  fz_expt_vect_fset;



#ifdef  __cplusplus
}
#endif


#endif
