--- FORMAT3.2.orig	Wed Apr  3 10:27:14 2002
+++ FORMAT3.2	Wed Apr  3 10:27:14 2002
@@ -0,0 +1,563 @@
+/*
+ * FIG : Facility for Interactive Generation of figures
+ * Copyright (c) 1985 by Supoj Sutanthavibul
+ * Parts Copyright (c) 1989-1999 by Brian V. Smith
+ * Parts Copyright (c) 1991 by Paul King
+ * Parts Copyright (c) 1995 by C. Blanc and C. Schlick
+ *
+ * The X Consortium, and any party obtaining a copy of these files from
+ * the X Consortium, directly or indirectly, is granted, free of charge, a
+ * full and unrestricted irrevocable, world-wide, paid up, royalty-free,
+ * nonexclusive right and license to deal in this software and
+ * documentation files (the "Software"), including without limitation the
+ * rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons who receive
+ * copies from any such party to do so, with the only requirement being
+ * that this copyright notice remain intact.  This license includes without
+ * limitation a license to do the foregoing actions under any patents of
+ * the party supplying this software to the X Consortium.
+ */
+
+The new components in protocol 3.2 are the paper size, magnification,
+single/multiple page indicator and transparent color for GIF export in the
+header.
+
+The other modification between version 3.1 and version 3.2 of the
+protocol is the mathematical model used for splines. The new version
+uses X-splines which allows the user to mix interpolation and approximation
+points in a same curve. More precisely, it means that an X-spline curve
+is neither an interpolated spline nor an approximated one, it is BOTH
+(the behaviour of each point is controlled by one single parameter
+called "shape factor"). For additional information about X-splines, see:
+
+  "X-Splines: A Spline Model Designed for the End User"
+  by C. Blanc and C. Schlick, Proceedings of SIGGRAPH'95
+
+Caveat: Because spline models of previous versions (quadratic B-splines
+and Bezier with hidden points) are no longer supported, curves that are
+present in version 3.1 and older files are automatically converted to
+X-splines. This translation is only an approximation process. It means
+that the converted curves are not exactly the same as the original ones.
+Though the translation usually provides almost identical curves, some
+hand-fitting may be needed in some pathological cases.
+
+-------------------------------------------------------------------------------
+Description of the Fig Format Follows
+-------------------------------------------------------------------------------
+
+(1) The very first line is a comment line containing the name and version:
+	#FIG 3.2
+
+    The character # at the first column of a line indicates that the line
+    is a comment line which will be preserved when the Fig file is read in.
+    The user may edit them with the popup editor.  
+
+    The comment line(s) must immediately precede the object to which they
+    are associated.  In the case of the "whole figure comments" mentioned
+    below, they immediately precede the (resolution,coord_system) line.
+
+(2) The first non-comment line consists of the following:
+
+	string	orientation		("Landscape" or "Portrait")
+	string	justification		("Center" or "Flush Left")
+	string	units			("Metric" or "Inches")
+	string	papersize		("Letter", "Legal", "Ledger", "Tabloid",
+					 "A", "B", "C", "D", "E",
+					 "A4",   "A3", "A2", "A1", "A0" and "B5")
+	float	magnification		(export and print magnification, %)
+	string	multiple-page		("Single" or "Multiple" pages)
+	int	transparent color	(color number for transparent color for GIF
+					 export. -3=background, -2=None, -1=Default,
+					 0-31 for standard colors or 32- for user colors)
+	# optional comment		(An optional set of comments may be here,
+					 which are associated with the whole figure)
+	int	resolution coord_system	(Fig units/inch and coordinate system:
+					   1: origin at lower left corner (NOT USED)
+					   2: upper left)
+
+    Fig_resolution is the resolution of the figure in the file.
+    Xfig will always write the file with a resolution of 1200ppi so it
+    will scale the figure upon reading it in if its resolution is different
+    from 1200ppi.  Pixels are assumed to be square.
+
+    Xfig will read the orientation string and change the canvas to match
+    either the Landscape or Portrait mode of the figure file.
+
+    The units specification is self-explanatory.
+
+    The coordinate_system variable is ignored - the origin is ALWAYS the
+    upper-left corner.
+
+    ** Coordinates are given in "fig_resolution" units.
+    ** Line thicknesses are given in 1/80 inch (0.3175mm) or 1 screen pixel.
+       When exporting to EPS, PostScript or any bitmap format (e.g. GIF),  the
+       line thickness is reduced to 1/160 inch (0.159mm) to "lighten" the look.
+    ** dash-lengths/dot-gaps are given in 80-ths of an inch.
+
+
+(3) The rest of the file contains various objects.  An object can be one
+    of six classes (or types).
+
+	0)	Color pseudo-object.
+	1)	Arc.
+	2)	Ellipse which is a generalization of circle.
+	3)	Polyline which includes polygon and box.
+	4)	Spline which includes 
+		closed/open approximated/interpolated/x-spline spline.
+	5)	Text.
+	6)	Compound object which is composed of one or more objects.
+
+    In the following elaboration on object formats, every value of fig
+    output are separated by blank characters or new line ('\n').  The
+    value of the unused parameters will be -1.
+
+    Some fields are described as "enumeration type" or "bit vector"; the
+    values which these fields can take are defined in the header file object.h.
+    The pen_style field is unused.
+    These values may be defined in some future version of Fig.
+
+    The two color fields (pen and fill; pen only, for texts) are
+    defined as follows:
+
+	    -1 = Default
+	     0 = Black
+	     1 = Blue
+	     2 = Green
+	     3 = Cyan
+	     4 = Red
+	     5 = Magenta
+	     6 = Yellow
+	     7 = White
+	  8-11 = four shades of blue (dark to lighter)
+	 12-14 = three shades of green (dark to lighter)
+	 15-17 = three shades of cyan (dark to lighter)
+	 18-20 = three shades of red (dark to lighter)
+	 21-23 = three shades of magenta (dark to lighter)
+	 24-26 = three shades of brown (dark to lighter)
+	 27-30 = four shades of pink (dark to lighter)
+	    31 = Gold
+
+	 values from 32 to 543 (512 total) are user colors and
+	 are defined in color pseudo-objects (type 0)
+
+	 Your X server may limit the number of colors to something less
+	 than this, especially on a 8-bit PseudoColor visual, where
+	 the number of usable colors will be 256 minus the number of colors
+	 xfig preallocates for itself and the 32 standard colors (about 48).
+
+    For WHITE color, the area fill field is defined as follows:
+	
+	-1 = not filled
+	 0 = black
+	...  values from 1 to 19 are shades of grey, from darker to lighter
+	20 = white
+	21-40 not used
+	41-56 see patterns for colors, below
+
+    For BLACK or DEFAULT color, the area fill field is defined as follows:
+	
+	-1 = not filled
+	 0 = white
+	...  values from 1 to 19 are shades of grey, from lighter to darker
+	20 = black
+	21-40 not used
+	41-56 see patterns for colors, below
+
+    For all other colors, the area fill field is defined as follows:
+
+	-1 = not filled
+	 0 = black
+	...  values from 1 to 19 are "shades" of the color, from darker to lighter.
+		A shade is defined as the color mixed with black
+	20 = full saturation of the color
+	...  values from 21 to 39 are "tints" of the color from the color to white.
+		A tint is defined as the color mixed with white
+	40 = white
+	41 = 30 degree left diagonal pattern
+	42 = 30 degree right diagonal pattern
+	43 = 30 degree crosshatch
+	44 = 45 degree left diagonal pattern
+	45 = 45 degree right diagonal pattern
+	46 = 45 degree crosshatch
+	47 = horizontal bricks
+	48 = vertical bricks
+	49 = horizontal lines
+	50 = vertical lines
+	51 = crosshatch
+	52 = horizontal "shingles" skewed to the right
+	53 = horizontal "shingles" skewed to the left
+	54 = vertical "shingles" skewed one way
+	55 = vertical "shingles"skewed the other way
+	56 = fish scales
+	57 = small fish scales
+	58 = circles
+	59 = hexagons
+	60 = octagons
+	61 = horizontal "tire treads"
+	62 = vertical "tire treads"
+
+    The depth field is defined as follows:
+
+	 0 ... 999 where larger value means object is deeper than (under)
+		   objects with smaller depth
+
+    The line_style field is defined as follows:
+
+	-1 = Default
+	 0 = Solid
+	 1 = Dashed
+	 2 = Dotted
+	 3 = Dash-dotted
+	 4 = Dash-double-dotted
+	 5 = Dash-triple-dotted
+
+    The style_val field is defined as the length, in 1/80 inches, of the on/off
+    dashes for dashed lines, and the distance between the dots, in 1/80 inches,
+    for dotted lines.
+
+    The join_style field is defined FOR LINES only as follows:
+
+	 0 = Miter (the default in xfig 2.1 and earlier)
+	 1 = Round
+	 2 = Bevel
+
+    The cap_style field is defined FOR LINES, OPEN SPLINES and ARCS only as follows:
+
+	 0 = Butt (the default in xfig 2.1 and earlier)
+	 1 = Round
+	 2 = Projecting
+
+    The arrow_type field is defined for LINES, ARCS and OPEN SPLINES
+    only as follows:
+
+	 0 = Stick-type (the default in xfig 2.1 and earlier)
+
+		 \
+		    \
+	_______________\
+		       /
+		    /
+		 /
+
+	 1 = Closed triangle:
+
+		|\
+		|   \
+	________|      \
+		|      /
+		|   /
+		|/
+
+	 2 = Closed with "indented" butt:
+
+		|\
+		\   \
+		 \     \
+	__________\       \
+		  /       /
+		 /     /
+		/   /
+		|/
+
+	 3 = Closed with "pointed" butt:
+
+		   /\
+		  /    \
+		 /        \
+	________/            \
+		\            /
+		 \        /
+		  \    /
+		   \/
+
+    The arrow_style field is defined for LINES, ARCS and OPEN SPLINES
+    only as follows:
+
+	 0 = Hollow (actually filled with white)
+	 1 = Filled with pen_color
+
+(3.0) OBJECT DEFINITION:
+
+    (3.1) Color Pseudo-objects (user-defined colors)
+	  This is used to define arbitrary colors beyond the 32 standard colors.
+	  The color objects must be defined before any other Fig objects.
+
+    First line:
+	type	name			(brief description)
+	----	----			-------------------
+	int	object_code		(always 0)
+	int	color_number		(color number, from 32-543 (512 total))
+     hex string	rgb values		(hexadecimal string describing red,
+					 green and blue values (e.g. #330099) )
+
+    (3.2) ARC
+
+    First line:
+	type	name			(brief description)
+	----	----			-------------------
+	int	object_code		(always 5)
+	int	sub_type		(1: open ended arc
+					 2: pie-wedge (closed) )
+	int	line_style		(enumeration type)
+	int	line_thickness		(1/80 inch)
+	int	pen_color		(enumeration type, pen color)
+	int	fill_color		(enumeration type, fill color)
+	int	depth			(enumeration type)
+	int	pen_style		(pen style, not used)
+	int	area_fill		(enumeration type, -1 = no fill)
+	float	style_val		(1/80 inch)
+	int	cap_style		(enumeration type)
+	int	direction		(0: clockwise, 1: counterclockwise)
+	int	forward_arrow		(0: no forward arrow, 1: on)
+	int	backward_arrow		(0: no forward arrow, 1: on)
+	float	center_x, center_y	(center of the arc)
+	int	x1, y1			(Fig units, the 1st point the user entered)
+	int	x2, y2			(Fig units, the 2nd point)
+	int	x3, y3			(Fig units, the last point)
+
+    Forward arrow line (Optional; absent if forward_arrow is 0):
+	type	name			(brief description)
+	----	----			-------------------
+	int	arrow_type		(enumeration type)
+	int	arrow_style		(enumeration type)
+	float	arrow_thickness		(1/80 inch)
+	float 	arrow_width		(Fig units)
+	float	arrow_height		(Fig units)
+
+    Backward arrow line (Optional; absent if backward_arrow is 0):
+	type	name			(brief description)
+	----	----			-------------------
+	int	arrow_type		(enumeration type)
+	int	arrow_style		(enumeration type)
+	float	arrow_thickness		(1/80 inch)
+	float	arrow_width		(Fig units)
+	float	arrow_height		(Fig units)
+
+    (3.3) COMPOUND
+
+    A line with object code 6 signifies the start of a compound.
+    There are four more numbers on this line which indicate the
+    upper left corner and the lower right corner of the bounding
+    box of this compound.  A line with object code -6 signifies
+    the end of the compound.  Compound may be nested.
+
+    First line:
+	type	name			(brief description)
+	----	----			-------------------
+	int	object_code		(always 6)
+	int	upperleft_corner_x	(Fig units)
+	int	upperleft_corner_y	(Fig units)
+	int	lowerright_corner_x	(Fig units)
+	int	lowerright_corner_y	(Fig units)
+
+    Subsequent lines:
+	objects
+	.
+	.
+
+    Last line:
+	-6
+
+    (3.4) ELLIPSE
+
+    First line:
+	type	name			(brief description)
+	----	----			-------------------
+	int	object_code		(always 1)
+	int	sub_type		(1: ellipse defined by radii
+					 2: ellipse defined by diameters
+					 3: circle defined by radius
+					 4: circle defined by diameter)
+	int	line_style		(enumeration type)
+	int	thickness		(1/80 inch)
+	int	pen_color		(enumeration type, pen color)
+	int	fill_color		(enumeration type, fill color)
+	int	depth			(enumeration type)
+	int	pen_style		(pen style, not used)
+	int	area_fill		(enumeration type, -1 = no fill)
+	float	style_val		(1/80 inch)
+	int	direction		(always 1)
+	float	angle			(radians, the angle of the x-axis)
+	int	center_x, center_y	(Fig units)
+	int	radius_x, radius_y	(Fig units)
+	int	start_x, start_y	(Fig units; the 1st point entered)
+	int	end_x, end_y		(Fig units; the last point entered)
+
+    (3.5) POLYLINE
+
+    First line:
+	type	name			(brief description)
+	----	----			-------------------
+	int	object_code		(always 2)
+	int	sub_type		(1: polyline
+					 2: box
+					 3: polygon
+					 4: arc-box)
+					 5: imported-picture bounding-box)
+	int	line_style		(enumeration type)
+	int	thickness		(1/80 inch)
+	int	pen_color		(enumeration type, pen color)
+	int	fill_color		(enumeration type, fill color)
+	int	depth			(enumeration type)
+	int	pen_style		(pen style, not used)
+	int	area_fill		(enumeration type, -1 = no fill)
+	float	style_val		(1/80 inch)
+	int	join_style		(enumeration type)
+	int	cap_style		(enumeration type, only used for POLYLINE)
+	int	radius			(1/80 inch, radius of arc-boxes)
+	int	forward_arrow		(0: off, 1: on)
+	int	backward_arrow		(0: off, 1: on)
+	int	npoints			(number of points in line)
+
+    Forward arrow line: same as ARC object
+
+    Backward arrow line: same as ARC object
+
+    Points line:
+	type	name			(brief description)
+	----	----			-------------------
+	int	x1, y1			(Fig units)
+	int	x2, y2			(Fig units)
+	  .
+	  .
+	int	xnpoints ynpoints	(this will be the same as the 1st
+					point for polygon and box)
+
+    PIC line:
+	type	name			(brief description)
+	----	----			-------------------
+	boolean	flipped			orientation = normal (0) or flipped (1)
+	char	file[]			name of picture file to import
+
+    (3.6) SPLINE
+
+    First line:
+	type	name			(brief description)
+	----	----			-------------------
+	int	object_code		(always 3)
+	int	sub_type		(0: open approximated spline
+					     1: closed approximated spline
+					     2: open   interpolated spline
+					     3: closed interpolated spline
+					     4: open   x-spline 
+					     5: closed x-spline)
+	int	line_style		(See the end of this section)
+	int	thickness		(1/80 inch)
+	int	pen_color		(enumeration type, pen color)
+	int	fill_color		(enumeration type, fill color)
+	int	depth			(enumeration type)
+	int	pen_style		(pen style, not used)
+	int	area_fill		(enumeration type, -1 = no fill)
+	float	style_val		(1/80 inch)
+	int	cap_style		(enumeration type, only used for open splines)
+	int	forward_arrow		(0: off, 1: on)
+	int	backward_arrow		(0: off, 1: on)
+	int	npoints			(number of control points in spline)
+
+    Forward arrow line: same as ARC object
+
+    Backward arrow line: same as ARC object
+
+    Points line: same as POLYLINE object
+
+    Control points line :
+
+    There is one shape factor for each point. The value of this factor
+    must be between -1 (which means that the spline is interpolated at
+    this point) and 1 (which means that the spline is approximated at
+    this point). The spline is always smooth in the neighbourhood of a
+    control point, except when the value of	the factor is 0 for which
+    there is a first-order discontinuity (i.e. angular point).
+
+    (3.7) TEXT
+	type	name			(brief description)
+	----	----			-------------------
+	int	object 			(always 4)
+	int	sub_type		(0: Left justified
+					     1: Center justified
+					     2: Right justified)
+	int	color			(enumeration type)
+	int	depth			(enumeration type)
+	int	pen_style		(enumeration , not used)
+	int	font 			(enumeration type)
+	float	font_size 		(font size in points)
+	float	angle			(radians, the angle of the text)
+	int	font_flags		(bit vector)
+	float	height			(Fig units)
+	float	length			(Fig units)
+	int	x, y			(Fig units, coordinate of the origin
+					 of the string.  If sub_type = 0, it is
+					 the lower left corner of the string.
+					 If sub_type = 1, it is the lower
+					 center.  Otherwise it is the lower
+					 right corner of the string.)
+	char	string[]		(ASCII characters; starts after a blank
+					 character following the last number and
+					 ends before the sequence '\001'.  This
+					 sequence is not part of the string.
+					 Characters above octal 177 are
+					 represented by \xxx where xxx is the
+					 octal value.  This permits fig files to
+					 be edited with 7-bit editors and sent
+					 by e-mail without data loss.
+					 Note that the string may contain '\n'.)
+
+    The font_flags field is defined as follows:
+
+	 Bit	Description
+
+	  0	Rigid text (text doesn't scale when scaling compound objects)
+	  1	Special text (for LaTeX)
+	  2	PostScript font (otherwise LaTeX font is used)
+	  3	Hidden text
+
+    The font field is defined as follows:
+
+	For font_flags bit 2 = 0 (LaTeX fonts):
+
+	 0	Default font
+	 1	Roman
+	 2	Bold
+	 3	Italic
+	 4	Sans Serif
+	 5	Typewriter
+
+	For font_flags bit 2 = 1 (PostScript fonts):
+
+  (.ft value)
+	-1	Default font
+	 0	Times Roman           
+	 1	Times Italic          
+	 2	Times Bold            
+	 3	Times Bold Italic    
+	 4	AvantGarde Book      
+	 5	AvantGarde Book Oblique 
+	 6	AvantGarde Demi
+	 7	AvantGarde Demi Oblique
+	 8	Bookman Light
+	 9	Bookman Light Italic
+	10	Bookman Demi
+	11	Bookman Demi Italic
+	12	Courier
+	13	Courier Oblique
+	14	Courier Bold
+	15	Courier Bold Oblique
+	16	Helvetica
+	17	Helvetica Oblique
+	18	Helvetica Bold
+	19	Helvetica Bold Oblique
+	20	Helvetica Narrow
+	21	Helvetica Narrow Oblique
+	22	Helvetica Narrow Bold
+	23	Helvetica Narrow Bold Oblique
+	24	New Century Schoolbook Roman
+	25	New Century Schoolbook Italic
+	26	New Century Schoolbook Bold
+	27	New Century Schoolbook Bold Italic
+	28	Palatino Roman
+	29	Palatino Italic
+	30	Palatino Bold
+	31	Palatino Bold Italic
+	32	Symbol
+	33	Zapf Chancery Medium Italic
+	34	Zapf Dingbats
