.if n .pH ref.path @(#)path	40.3
.ds Lb Shapes 
.BK "Shapes Reference Manual"
.CH "Path Object" "11"
.H 1 "Path Object"
.H 2 "Introduction"
.P
.nh
.IX "path object"
A \f2path\fP is a sequence of pen movements that
is assigned an identifier.
Once a sequence is in a path,
it can be re-rendered simply by invoking
Display_Context,
rather than repeating all the drawing routines.
.P
Another use for paths is to define raster level
clipping boundaries.
.H 4 "NAME"
.P
Area_Path \- Creates an area description out of
path geometry.
.IX "Area_Path"
.H 4 "SYNOPSIS"
.P
\f3Area_Path\f2(path, obj)\f1
.br
PATH path;
.br
CONTEXT or RASTER obj;
.H 4 "DESCRIPTION"
.P
Area_Path creates a path area out of a path's geometry.
A path area describes an arbitrary closed region
of a raster;
this region may be convex or concave,
and may consist of a series of lines and curves.
Path areas can be used to describe clip areas.
.P
The following sequence describes the creation of a path area:
.AL
.LI
Create a filled polygon or series of polygons in
accordance with the object's fill rule.
The path geometry is assumed to be in raster coordinates
(which is the case if you apply construction transforms).
.LI
Assign the resulting description to the path area.
.P
If the path has only area and no geometry,
the path area is unchanged.
.LE
.\" BEGIN SHAPES-----------------------------------------------
.if !"\*(Lb"Paint" \{\
.br
If the path has neither area nor geometry,
the path area begins at the PATH_ORG and has a
width and height defined by PATH_DIM.
Such a path is the fastest way to create
rectangular clipping paths.
.br \}
.\"  ENDIF SHAPES----------------------------------------------
.P
\f2path\f1
Specifies the path used to enclose the area.
.P
\f2obj\f1
Specifies the fill rule to use for creating the path area.
If the object is a context,
then the rule described in CTX_AREA_STYLE
attribute is used.
If the object is a raster,
the RAS_AREA_STYLE attribute is used.
.H 4 "RETURNED VALUE"
.P
Integer (a pointer to a non-user-accessible data structure)
.H 4 "SEE ALSO"
.P
Differ_Path
.br
Intersect_Path
.br
Union_Path
.br
CTX_AREA_STYLE
.br
RAS_AREA_STYLE
.H 4 "NAME"
.P
Clear_Path \- Removes the specified data from the path.
.IX "Clear_Path"
.H 4 "SYNOPSIS"
.P
\f3Clear_Path\f2(path, form)\f1
.br
PATH path;
.br
PATH_form form;
.H 4 "DESCRIPTION"
.P
Removes the specified data from the path.
.P
\f2PATH\f1
Specifies the path from which the data is to be removed.
.P
\f2form\f1
Specifies which data to remove.
.TB "Clear_Path Forms"
.TS
box tab(/);
cf4I | cf4I
l | lw(4.5i).
Form/Description
=
PATH_GEOMETRY/T{
Clears the path geometry and frees its associated resources.
If points are added later,
the required memory is reallocated for the new data.
May be ORed with PATH_AREA.
T}
_
PATH_AREA/T{
Clears the path area and frees its resources.
May be ORed with PATH_GEOMETRY or with PATH_RESET.
T}
_
PATH_INIT/T{
Removes the path geometry but does not free memory.
The result is an empty path.
If there is no geometry memory,
some is allocated.
T}
_
PATH_RESET/T{
Resets the path geometry but does not free memory.
The result is an empty path.
If there is no geometry memory,
some is allocated.
T}
.TE
.TT
.H 4 "RETURNED VALUE"
.P
[None]
.H 4 "SEE ALSO"
.P
Area_Path
.br
DRAWING MACROS
.H 4 "NAME"
.P
Copy_Path \- Copies the specified path data from
one path to another.
.IX "Copy_Path"
.H 4 "SYNOPSIS"
.P
\f3Copy_Path\f2(src, dst, form)\f1
.br
PATH src;
.br
PATH dst;
.br
PATH_form form;
.H 4 "DESCRIPTION"
.P
Copies the specified data from the source path to
the destination path,
discarding previous geometry and/or area of the
destination path.
Copy_Path can copy both path geometry and path area.
.P
\f2Performance Note\f1
Although Copy_Path appears to have made a full copy
of the path geometry,
the copy only occurs when you do any of following
after you make the copy:
.BL
.LI
clear data to the destination path
.LI
add data to the destination path
.LI
clear data to the source path
.LE
If you only add data to the source path,
a complete copy of the geometry is not made.
.P
\f2src\f1
Specifies the source path.
.P
\f2dst\f1
Specifies the destination path.
.P
\f2form\f1
Specifies what is copied:\ \&
the area, the geometry, or both.
.TB "Copy_Path Forms"
.TS
box tab(/);
cf4I | cf4I
l | l.
Form/Description
=
PATH_AREA/Copies the path area only
_
PATH_GEOMETRY/Copies path geometry only
_
PATH_AREA | PATH_GEOMETRY/Copies geometry and area
.TE
.TT
.H 4 "RETURNED VALUE"
.P
PATH
.H 4 "SEE ALSO"
.P
PATH_STATUS
.br
Clear_Path
.H 4 "NAME"
.P
Create_Path \- Creates a new path.
.IX "Create_Path"
.H 4 "SYNOPSIS"
.P
\f3Create_Path\f2(type, root)\f1
.br
PATH_type type;
.br
RASTER root;
.H 4 "DESCRIPTION"
.P
Creates a new path.
.P
\f2type\f1
Specifies the type of path:
.P
PATH_GENERIC \-  Accumulates the geometry
described by the drawing macros in the path.
These macros can be rendered more than once.
To clear the macros,
use the Clear_Path operators.
.\" BEGIN Paint------------------------------------------------
.if "\*(Lb"Paint" \{\
.P
PATH_IMMEDIATE \-  Renders and discards macros
immediately as they are passed to Shapes.
Shapes implementations may buffer macros,
so to ensure that the geometry makes it to the screen,
invoke Display_Context.
Construction transforms are not applied to the
PATH_IMMEDIATE path.
.br \}
.\"  ENDIF Paint------------------------------------------------
.P
\f2root\f1
Specifies the type of the parent object.
Currently, the only valid root is a NULL raster.
.H 4 "RETURNED VALUE"
.P
PATH, if successful.
.P
NULL is returned if the path cannot be created.
.H 4 "SEE ALSO"
.P
Destroy_Path
.br
CTX_PATH
.H 4 "NAME"
.P
Destroy_Path \- Destroys the specified path.
.IX "Destroy_Path"
.H 4 "SYNOPSIS"
.P
\f3Destroy_Path\f2(path)\f1
.br
PATH path;
.H 4 "DESCRIPTION"
.P
Destroys the specified path and frees its
resources if no other objects reference the path.
.P
\f2path\f1
Specifies the path to be destroyed.
.H 4 "RETURNED VALUE"
.P
[None]
.H 4 "SEE ALSO"
.P
Destroy_Obj
.br
Create_Path
.br
Clear_Path
.H 4 "NAME"
.P
Differ_Path \- Fills the destination path with
the difference between path1 and path2.
.IX "Differ_Path"
.H 4 "SYNOPSIS"
.P
\f3Differ_Path\f2(dst, path1, path2)\f1
.br
PATH dst;
.br
PATH path1;
.br
PATH path2;
.H 4 "DESCRIPTION"
.P
Fills the destination path with the difference
between path1 and path2.
This operator uses the path areas,
not the path geometry.
An error occurs if the specified path has no path area.
The resulting path area cannot be rendered,
but can be used as a clip path.
.P
The difference between path1 and path2 is the
area of path1 remaining after the intersection of
path1 and path2 has been subtracted.
Differ_Path is useful for constructing clip areas.
.P
Differ_Path returns the destination path if the
difference is successful,
or it returns NULL if it is not.
.FG "Comparison of Path Area Operators"
.DS
.BP PSART/ps.path_area
.DE
\f2dst\f1
Specifies the path to be filled with the
difference between path1 and path2.
.P
\f2path1\f1
Specifies the path area from which to subtract the path2 area.
.P
\f2path2\f1
Specifies the path area to be subtracted from path1.
.H 4 "RETURNED VALUE"
.P
PATH
.H 4 "SEE ALSO"
.P
Area_Path
.br
Intersect_Path
.br
Union_Path
.H 4 "NAME"
.P
Display_Path \- Displays the specified path in
the designated context.
.IX "Display_Path"
.H 4 "SYNOPSIS"
.P
\f3Display_Path\f2(path, ctx)\f1
.br
PATH path;
.br
CONTEXT ctx;
.H 4 "DESCRIPTION"
.P
Displays the specified path in the designated context.
Using Display_Path is faster than setting the
context's path to the path parameter,
calling Display_Context with the post attribute
CTX_RENDER,
and then resetting the context's path to its
previous value.
.P
Display_Path does not affect the context's current path.
.P
\f2path\f1
Specifies the path to be displayed.
.P
\f2ctx\f1
Specifies the context to provide the display
attributes for rendering the path.
.H 4 "RETURNED VALUE"
.P
[None]
.H 4 "SEE ALSO"
.P
Display_Context
.H 4 "NAME"
.P
Get_Path \- Returns the setting of the specified
path attribute.
.IX "Get_Path"
.H 4 "SYNOPSIS"
.P
\f3Get_Path\f2(path, attr)\f1
.br
PATH path;
.br
PATH_attr attr;
.H 4 "DESCRIPTION"
.P
Returns the setting of the specified path attribute.
.P
\f2path\f1
Specifies the path from which the attribute
setting is to be retrieved.
.P
\f2attr\f1
Specifies the attribute for which the setting is
to be returned.
.H 4 "RETURNED VALUE"
.P
Attribute setting
.H 4 "SEE ALSO"
.P
PATH_ORG
.br
PATH_TYPE
.br
PATH_DIM
.br
PATH_STATUS
.br
PATH_SIZE
.H 4 "NAME"
.P
Intersect_Path \- Fills the destination path with
the intersection of path1 and path2.
.IX "Intersect_Path"
.H 4 "SYNOPSIS"
.P
\f3Intersect_Path\f2(dst, path1, path2)\f1
.br
PATH dst;
.br
PATH path1;
.br
PATH path2;
.H 4 "DESCRIPTION"
.P
Creates a path area in the destination that is
the intersection of path1 and path2.
This operator uses path areas,
not path data.
The result cannot be rendered,
but can be used as a clip path.
.P
An error occurs if a path is specified that does
not have a path area.
See the illustration in Differ_Path.
.FG "Comparison of Path Area Operators"
.DS
.BP PSART/ps.path_area
.DE
.P
\f2dst\f1
Specifies the path to be filled from the
intersection of path1 and path2.
.P
\f2path2\f1
Specifies the path area that intersects with the
path2 area.
.P
\f2path1\f1
Specifies the path area that intersects with the
path1 area.
.H 4 "RETURNED VALUE"
.P
PATH
.H 4 "SEE ALSO"
.P
Area_Path
.br
Differ_Path
.br
Union_Path
.H 4 "NAME"
.P
Next_Path \- Reads the next path item from the PATH_READER object.
.IX "Next_Path"
.H 4 "SYNOPSIS"
.P
\f3Next_Path\f2(pr)\f1
.br
PATHREADER *pr;
.H 4 "DESCRIPTION"
.P
Reads the next path item from the pathreader.
.P
Next_Path retrieves items from the pathreader in
the same order that the items were appended to
the original path.
Next_Path only retrieves the item types specified
by the initializing call
to Read_Path.
To read the items,
use the Path_Item_Type macro and access
the elements of the PATH_ITEM structure.
.P
Several error conditions are possible in path readback:
.BL
.LI
A path is cleared or destroyed between Read_Path
and Next_Path calls.
.LI
Pathreader is used with Next_Path that has not
been previously initialized by Read_Path.
.P
\f2pr\f1
Specifies the pathreader.
Allocate storage for the pathreader with the
automatic declaration PATHREADER,
and initialize it with Read_Path.
.LE
.H 4 "RETURNED VALUE"
.P
PATH_ITEM *
.P
\- specifying a data point read back
from the path.
NULL is returned if there is an error or there is
no more data to be read back.
.H 4 "SEE ALSO"
.P
Read_Path
.br
Path_Item_Type
.br
Point Data Structure
.br
Draw_XXX
.H 4 "NAME"
.P
Overlap_Path \- Determines whether path1 and path2 overlap.
.IX "Overlap_Path"
.H 4 "SYNOPSIS"
.P
\f3Overlap_Path\f2(path1, path2)\f1
.br
PATH path1;
.br
PATH path2;
.br
.H 4 "DESCRIPTION"
.P
Determines whether path1 overlaps path2.
This operator uses path areas,
not path data.
It is an error to specify paths which have no path area.
.P
\f2path1\f1
Specifies one path area to check for overlap with another.
.P
\f2path2\f1
Specifies one path area to check for overlap with another.
.H 4 "RETURNED VALUE"
.P
Integer \- 0 if no overlap, non-zero for overlap.
.H 4 "SEE ALSO"
.P
Area_Path
.br
PointIn_Path
.H 4 "NAME"
.P
Path_Item_Type \- Determines the type of a PATH_ITEM structure.
.IX "Path_Item_Type"
.H 4 "SYNOPSIS"
.P
\f3Path_Item_Type\f2(path_item)\f1
.br
PATH_ITEM path_item;
.H 4 "DESCRIPTION"
.P
Determines the type of a PATH_ITEM structure.
Since the PATH_ITEM is a union of four structures,
you must know the type of the path item before
you access the path item structure.
.P
\f2path_item\f1
Specifies the path item whose type you wish to determine.
The path item has the following structure:
.P
.PC
typedef union
  {
   PATH_ITEM_TYPE type;
   COLOR 	  color;
   POINT 	  point;
   PATH_ITEM_CURVE curve;
  } PATH_ITEM;
.ft1
.SF
.P
The structures of color and point are described
in the Color and Point sections of this manual.
The structure definitions of PATH_ITEM_TYPE and
PATH_ITEM_CURVE follow:
.P
.PC
typedef struct { Unsigned long t; } PATH_ITEM_TYPE;

typedef enum
  {
   PATH_CURVE_BEZIER,         /* Bezier curves */
   PATH_CURVE_BSPLINE,        /* B-spline curves */
  } PATH_curve_form;

typedef struct
  {
   PATH_curve_form form : 8;
   unsigned char   order;
   unsigned short  t;
  } PATH_ITEM_CURVE;
.ft1
.SF
.H 4 "RETURNED VALUE"
.P
integer
.P
Access the Path item as a color if the return
values are one of:
.br
	COL_INDEX
.\" BEGIN Paint------------------------------------------------
.if "\*(Lb"Paint" \{\
.br
	COL_RGB
\}
.\"  ENDIF Paint-----------------------------------------------
.P
Access the path item as a point if the return
values are one of:
.br
	PT_CURVE_B2D	
.br
	PT_CURVE_B2H	
.br
	PT_CURVE_F2D	
.br
	PT_CURVE_F2H	
.br
	PT_LINE_B2D
.br
	PT_LINE_F2D
.br
	PT_LINEREL_B2D
.br
	PT_LINEREL_F2D
.br
	PT_MOVE_B2D
.br
	PT_MOVE_F2D
.br
	PT_MOVEREL_B2D
.br
	PT_MOVEREL_F2D
.P
Access the path item as a PATH_ITEM_CURVE if the
return type is:
.br
	PATH_CURVE
.P
Access the path item as a PATH_ITEM_TYPE if the
return type is one of:
.br
	PATH_CLOSE
.br
	PATH_CLOSE_SUB
.H 4 "SEE ALSO"
.P
Next_Path
.br
Read_Path
.br
Draw_XXX
.br
Curve
.br
Close
.br
CloseSubpath
.br
Point Data Structure
.H 4 "NAME"
.P
PointIn_Path \- Determines whether the specified
point is in the designated path.
.IX "PointIn_Path"
.H 4 "SYNOPSIS"
.P
\f3PointIn_Path\f2(path, p)\f1
.br
PATH path;
.br
POINT *p;
.H 4 "DESCRIPTION"
.P
Determines whether the specified point is in the
designated path.
This operator uses path area, not path geometry.
.P
\f2path\f1
Specifies the path that is to be checked for the point.
.P
\f2p\f1
Specifies the point to be checked.
.H 4 "RETURNED VALUE"
.P
Integer:
.br
 0 = point in the path area
.br
 1 = point not in path area
.br
\(mi1 = path does not have area
.H 4 "SEE ALSO"
.P
Area_Path
.br
Overlap_Path
.H 4 "NAME"
.P
Read_Path \- Initiates path readback.
.IX "Read_Path"
.H 4 "SYNOPSIS"
.P
\f3Read_Path\f2(path, pr, form)\f1
.br
PATH path;
.br
PATHREADER *path;
.br
PATH_READ_form form;
.H 4 "DESCRIPTION"
.P
Reads the path by initiating the pathreader.
.P
\f2path\f1
Specifies the path to read.
.P
\f2pr\f1
Specifies the pathreader to initialize.
Although you allocate storage for the pathreader
with an automatic declaration,
you access the contents of the object through
Next_Path.
.P
\f2form\f1
Specifies the type of data to be read:
.TB "Read_Path Forms"
.TS
box tab(/);
cf4I | cf4I
l | lw(4.5i).
Form/Description
=
PATH_READ_ABORT/T{
Causes path readback to be aborted.
Next_Path cannot read any more items from the path.
T}
_
PATH_READ_ALL/T{
Next_Path reads all items in the path,
including coordinate data, color, curve type and order,
and how the path is closed.
T}
_
PATH_READ_AREA/T{
This is not functional.
Shapes cannot read back path areas.
T}
_
PATH_READ_POINTS/T{
Next_Path will only read those path items that
represent coordinates.
T}
.TE
.TT
.H 4 "RETURNED VALUE"
.P
[None]
.H 4 "SEE ALSO"
.P
Next_Path
.br
Path_Item_Type
.\" BEGIN Paint------------------------------------------------
.\"if "\*(Lb"Paint" \{\
.\".br
.\".OH 'ReadFile_Path'PATH OBJECT'%'
.\".EH '%'PATH OBJECT'ReadFile_Path'
.\".bp
.\".UH 3 "NAME"
.\".IP
.\"ReadFile_Path \- Reads from a binary file into the designated path.
.\".IX "ReadFile_Path"
.\".UH 3 "SYNOPSIS"
.\".IP
.\"\f3ReadFile_Path\f2(path, file, opt)\f1
.\".br
.\"PATH path;
.\".br
.\"int file;
.\".br
.\"int opt;
.\".UH 3 "DESCRIPTION"
.\".IP
.\"Reads binary data from the specified file into the path.
.\".IP
.\"\f2path\f1
.\".RS
.\"Specifies the path into which the data is read.
.\".RE
.\".IP
.\"\f2file\f1
.\".RS
.\"Specifies the file from which the binary data is read.  This
.\"attribute may be either a character string or a FILE data
.\"structure.
.\".RE
.\".IP
.\"\f2opt\f1
.\".RS
.\"Specifies how to interpret the file parameter.
.\".TN "ReadFile_Path Options"
.\".TS
.\"box, tab(/);
.\"cfBI | cfBI | cfBI
.\"l | l | l.
.\"Option/Type of File Parameter/File Designation
.\"=
.\"PATH_FILE_NAME/char */Filename
.\"_
.\"PATH_FILE_FD/int/File descriptor of an open file
.\"_
.\"PATH_FILE_NOCLOSE/NA/T{
.\"Does not close file after reading data.  Returns the
.\"value of the open file descriptor.  May be or'ed with one of the options
.\"above.
.\"T}
.\".TE
.\".RE
.\".UH 3 "RETURNED VALUE"
.\".IP
.\".br
.\"File descriptor of open file, if option PATH_FILE_NOCLOSE selected,
.\".br
.\"Zero (0) if the file is closed.
.\".br
.\"ERR upon error.
.\".UH 3 "SEE ALSO"
.\"IP
.\"WriteFile_Path
.\".br \}
.\".\"  ENDIF Paint------------------------------------------------
.H 4 "NAME"
.P
Set_Path \- Sets the specified path attribute.
.IX "Set_Path"
.H 4 "SYNOPSIS"
.P
\f3Set_Path\f2(path, attr, setting)\f1
.br
PATH path;
.br
PATH_attr attr;
.br
<attribute type> setting;
.H 4 "DESCRIPTION"
.P
Sets the specified path attribute.
.P
\f2path\f1
Specifies the path for which the attribute is to be set.
.P
\f2attr\f1
Specifies the setting for the attribute.
.H 4 "RETURNED VALUE"
.P
Attribute setting
.H 4 "SEE ALSO"
.P
PATH_ORG
.br
PATH_TYPE
.br
PATH_DIM
.br
PATH_STATUS
.br
PATH_SIZE
.H 4 "NAME"
.P
Temp_Path \- Creates a path with no initial references.
.IX "Temp_Path"
.H 4 "SYNOPSIS"
.P
\f3Temp_Path\f2(type, root)\f1
.br
PATH_type type;
.br
RASTER root;
.H 4 "DESCRIPTION"
.P
Creates a path with no initial references,
so that it need not be explicitly destroyed.
Temp_Path is useful when you are passing the path
as an argument to another object.
.P
\f2type\f1
Specifies the type of path.
See Create_Path description.
.P
\f2root\f1
Specifies the type of the parent object.
.H 4 "RETURNED VALUE"
.P
PATH
.H 4 "SEE ALSO"
.P
Create_Path
.H 4 "NAME"
.P
Transform_Path \- Applies a transformation to all
points in the path.
.IX "Transform_Path"
.H 4 "SYNOPSIS"
.P
\f3Transform_Path\f2(path, trans)\f1
.br
PATH path;
.br
TRANSFORM trans;
.H 4 "DESCRIPTION"
.P
Applies the specified transformation to all
points in the path.
.P
If the path has geometry,
the transforms apply only to the path geometry.
.P
If the path has no geometry, but a path area,
the transformation uses the translation factors
of the specified transform.
.P
.P
\f2path\f1
Specifies the path to transform.
.P
\f2trans\f1
Specifies the transformation to apply to the
points in the path.
.\" BEGIN Paint------------------------------------------------
.if "\*(Lb"Paint" \{\
.br
If you specify a \f2trans\fP parameter that is a context object,
the path is transformed by the current rendering transforms.
.br \}
.\"  ENDIF Paint------------------------------------------------
.H 4 "RETURNED VALUE"
.P
[None]
.H 4 "SEE ALSO"
.P
CTX_VIEW_TRANSFORM
.\" BEGIN SHAPES-----------------------------------------------
.if !"\*(Lb"Paint" \{\
.br
Translate_Path
.H 4 "NAME"
.P
Translate_Path \- Translates a path with
reference to a point.
.IX "Translate_Path"
.H 4 "SYNOPSIS"
.P
\f3Translate_Path\f2(path, point)\f1
.br
PATH path;
.br
POINT *point;
.H 4 "DESCRIPTION"
.P
Translates a path with reference to a point to
speed the translation of a path area:\ \&
a path area is only translated if there is no path geometry.
Use Transform_Path to translate paths that
contain geometry.
.P
\f2path\f1
Specifies the path to translate.
.P
\f2point\f1
Specifies the point whose x- and y-coordinates
provide the translation factors.
.H 4 "RETURNED VALUE"
.P
[None]
.H 4 "SEE ALSO"
.P
Transform_Path
.br \}
.\"  ENDIF SHAPES----------------------------------------------
.H 4 "NAME"
.P
Union_Path \- Fills the destination path with the
union of path1 and path2.
.IX "Union_Path"
.H 4 "SYNOPSIS"
.P
\f3Union_Path\f2(dst, path1, path2)\f1
.br
PATH dst;
.br
PATH path1;
.br
PATH path2;
.H 4 "DESCRIPTION"
.P
Fills the destination path with the union of
path1 and path2.
This operator uses path areas, not path data.
The result cannot be rendered,
but can be used as a clip path.
.FG "Comparison of Path Area Operators"
.DS
.BP PSART/ps.path_area
.DE
.P
\f2dst\f1
Specifies the path to be filled from the union of
path1 and path2.
.P
\f2path1\f1
Specifies the path area to be united with the path2 area.
.P
\f2path2\f1
Specifies the path area that is to be united
with the path1 area.
.H 4 "RETURNED VALUE"
.P
PATH
.H 4 "SEE ALSO"
.P
Area_Path
.br
Differ_Path
.br
Intersect_Path
.\".\" BEGIN Paint------------------------------------------------
.\".if "\*(Lb"Paint" \{\
.\".br
.\".OH 'WriteFile_Path'PATH OBJECT'%'
.\".EH '%'PATH OBJECT'WriteFile_Path'
.\".bp
.\".UH 3 "NAME"
.\".IP
.\"WriteFile_Path \- Writes a path to a file.
.\".IX "WriteFile_Path"
.\".UH 3 "SYNOPSIS"
.\".IP
.\"\f3WriteFile_Path\f2(path, file, opt)\f1
.\".br
.\"PATH path;
.\".br
.\"int file;
.\".br
.\"int opt;
.\".UH 3 "DESCRIPTION"
.\".IP
.\"Writes the data from the specified path into a file.
.\".IP
.\"\f2path\f1
.\".RS
.\"Specifies the path to be written into a file.
.\".RE
.\".IP
.\"\f2file\f1
.\".RS
.\"Specifies the file into which the data is to be written.
.\".RE
.\".IP
.\"\f2opt\f1
.\".RS
.\"Specifies whether to interpret the \f2file\f1 argument as a string or a file
.\"descriptor.  See ReadFile_Path.
.\".RE
.\".UH 3 "RETURNED VALUE"
.\".IP
.\"Null, if successful, and PATH_FILE_NOCLOSE is disabled.
.\".br
.\"A non-zero integer the the file descriptor, if PATH_FILE_NOCLOSE is
.\"enabled.
.\".br
.\"ERR, upon an error condition.
.\".UH 3 "SEE ALSO"
.\".IP
.\"ReadFile_Path
.\".br \}
.\".\"  ENDIF Paint------------------------------------------------
.H 4 "NAME"
.P
PATH_DIM
.IX "PATH_DIM"
.H 4 "DESCRIPTION"
.P
Returns a pointer to the dimensions
(maximum width and height) of the path bounding box.
If a path has area,
the area is used to compute the bounding box.
If the path has only geometry,
the geometry is projected into raster coordinates,
and the construction transform is applied before
calculating the bounding box.
.P
.\" BEGIN SHAPES-----------------------------------------------
.if !"\*(Lb"Paint" \{\
.br
The Area_Path operator may use PATH_DIM as an argument.
If the path has no area and no geometry,
the rectangular area is constructed from PATH_DIM
and PATH_ORG.
.br \}
.\"  ENDIF SHAPES----------------------------------------------
.H 4 "RETURNED VALUE"
.P
POINT_B2D *
.H 4 "SEE ALSO"
.P
Area_Path
.br
Get_Path
.br
Set_Path
.br
PATH_ORG
.H 4 "NAME"
.P
PATH_ORG
.IX "PATH_ORG"
.H 4 "DESCRIPTION"
.P
Returns a pointer to the coordinates for the origin
(upper-left corner) of the path bounding box.
The origin represents the minimum x- and y-points
in the path.
If the path has area,
the area is used to compute the bounding box.
If the path has only geometry,
the geometry is projected into raster coordinates,
and the construction transform is applied before
calculating the bounding box.
.P
.\" BEGIN SHAPES-----------------------------------------------
.if !"\*(Lb"Paint" \{\
.br
The Area_Path operator may use PATH_ORG as an argument.
If the path has no area and no geometry,
the rectangular area  is constructed using
PATH_ORG and PATH_DIM.
.br \}
.\"  ENDIF SHAPES----------------------------------------------
.H 4 "RETURNED VALUE"
.P
POINT_B2D *
.H 4 "SEE ALSO"
.P
Area_Path
.br
Get_Path
.br
Set_Path
.br
PATH_DIM
.H 4 "NAME"
.P
PATH_SIZE
.P
.H 4 "DESCRIPTION"
.P
Specifies the number of expected items in the path.
The geometry area is enlarged to accommodate the
number specified.
It the area is big enough for the specified size,
the geometry area is not changed.
.H 4 "RETURNED VALUE"
.P
Integer
.H 4 "SEE ALSO"
.P
Set_Path
.br
Get_Path
.H 4 "NAME"
.P
PATH_STATUS
.P
.H 4 "DESCRIPTION"
.P
Indicates whether the path contains path geometry,
path area, or both.
A path may contain geometry, area, both, or none.
You can query (but not set) the PATH_STATUS to
determine the kinds of data it contains.
.TB "PATH_STATUS Types"
.TS
box tab(/);
cf4I | cf4I
l | lw(4.5i).
Type/Description
=
PATH_AREA/T{
If set, the path has area used as a clip area.
Path areas areas operate in raster coordinates.
T}
_
PATH_GEOMETRY/T{
If set, the path has geometry created by the
drawing macros.
T}
_
PATH_EMPTY/T{
The path has neither area nor geometry.
T}
.TE
.TT
.H 4 "RETURNED VALUE"
.P
Integer
.H 4 "SEE ALSO"
.P
Area_Path
.br
DRAW MACROS
.br
CTX_Empty (checks to see if the current pen is empty)
.br
Clear_Path
.\" BEGIN Paint------------------------------------------------
.if "\*(Lb"Paint" \{\
.br
.H 4 "NAME"
.P
PATH_TYPE
.IX "PATH_TYPE"
.H 4 "DESCRIPTION"
.P
Describes whether the type of the path is
PATH_IMMEDIATE or PATH_GENERIC.
This attribute may only be queried.
For a description of the differences between path
and immediate mode,
see the Create_Path operator.
.H 4 "RETURNED VALUE"
.P
PATH_type
.H 4 "SEE ALSO"
.P
Create_Path
.br
Draw_XXX
.br \}
.\"  ENDIF Paint------------------------------------------------
