/*
	WARNING: This file was generated by dkct.
	Changes you make here will be lost if dkct is run again!
	You should modify the original source and run dkct on it.
	Original source: f2lsvgst.ctr
*/

/*
Copyright (C) 2013, Dirk Krause

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:

* Redistributions of source code must retain the above copyright notice,
  this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above opyright notice,
  this list of conditions and the following disclaimer in the documentation
  and/or other materials provided with the distribution.
* Neither the name of the author nor the names of contributors may be used
  to endorse or promote products derived from this software without specific
  prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED.
IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/

/**	@file f2lsvgst.c The f2lsvgst module.
*/


#line 410 "f2lsvgst.ctr"

#include "f2lsvgst.h"





#line 416 "f2lsvgst.ctr"



/**	Keywords used by the module.
*/
static char const * const	f2lsvgst_c8_kw[] = {
/* 0 */
"\n",

/* 1 */
"svg:",

/* 2 */
"<",

/* 3 */
"pattern",

/* 4 */
"/",

/* 5 */
">",

/* 6 */
"<",

/* 7 */
" id=\"",

/* 8 */
"p",

/* 9 */
"\" x=\"0\" y=\"0\" width=\"%lg\" height=\"%lg\"\npatternUnits=\"userSpaceOnUse\"\n>\n",

/* 10 */
"rect",

/* 11 */
" x=\"0\" y=\"0\" width=\"%lg\" height=\"%lg\"\n",

/* 12 */
"style=\"fill: #%02X%02X%02X; stroke: none;\"\n",

/* 13 */
"/>\n",

/* 14 */
" style=\"stroke: none; fill: #%02X%02X%02X;\"\n",

/* 15 */
"points=\"0,0 0.9,0 7.2,3.64 7.2,4.16 6.3,4.16 0,0.52\"",

/* 16 */
"points=\"0,3.64 0.9,4.16 0,4.16\"",

/* 17 */
"points=\"6.3,0 7.2,0.52 7.2,0\"",

/* 18 */
"polyline",

/* 19 */
"points=\"0,4.16 0.9,4.16 7.2,0.52 7.2,0 6.3,0 0,3.64\"",

/* 20 */
"points=\"0,0.52 0.9,0 0,0\"",

/* 21 */
"points=\"6.3,4.16 7.2,4.16 7.2,3.64\"",

/* 22 */
"style=\"fill: none; stroke: #%02X%02X%02X; stroke-width: 0.9; stroke-linecap: round;\"",

/* 23 */
"points=\"0,0 7.2,4.16\"",

/* 24 */
"points=\"0,4.16 7.2,0\"",

/* 25 */
"points=\"0,0 0.64,0 5.09,4.45 5.09,5.09 4.45,5.09 0,0.64\"",

/* 26 */
"points=\"0,4.45 0.64,5.09 0,5.09\"",

/* 27 */
"points=\"4.45,0 5.09,0.64 5.09,0\"",

/* 28 */
"points=\"0,5.09 0.64,5.09 5.09,0.64 5.09,0 4.45,0 0,4.45\"",

/* 29 */
"points=\"0,0.64 0.64,0 0,0\"",

/* 30 */
"points=\"4.45,5.09 5.09,5.09 5.09,4.45\"",

/* 31 */
"points=\"0,0 5.09,5.09\"",

/* 32 */
"points=\"0,5.09 5.09,0\"",

/* 33 */
"points=\"3.6,0 3.6,7.2\"",

/* 34 */
"points=\"18,0 18,7.2\"",

/* 35 */
"points=\"10.8,7.2 10.8,14.4\"",

/* 36 */
"points=\"25.2,7.2 25.2,14.4\"",

/* 37 */
"points=\"0,0 28.8,0\"",

/* 38 */
"points=\"0,14.4 28.8,14.4\"",

/* 39 */
"points=\"0,7.2 28.8,7.2\"",

/* 40 */
"points=\"0,3.6 7.2,3.6\"",

/* 41 */
"points=\"0,18 7.2,18\"",

/* 42 */
"points=\"7.2,10.8 14.4,10.8\"",

/* 43 */
"points=\"7.2,25.2 14.4,25.2\"",

/* 44 */
"points=\"0,0 0,28.8\"",

/* 45 */
"points=\"7.2,0 7.2,28.8\"",

/* 46 */
"points=\"14.4,0 14.4,28.8\"",

/* 47 */
"points=\"0,0 3.6,0\"",

/* 48 */
"points=\"0,3.6 3.6,3.6\"",

/* 49 */
"points=\"0,0 0,3.6\"",

/* 50 */
"points=\"3.6,0 3.6,3.6\"",

/* 51 */
"polygon",

/* 52 */
"points=\"0,0 0,3.6 3.6,3.6 3.6,0\"",

/* 53 */
"points=\"0.45,7.2 3.15,0\"",

/* 54 */
"points=\"4.05,14.4 6.75,7.2\"",

/* 55 */
"points=\"7.65,21.6 10.35,14.4\"",

/* 56 */
"points=\"11.25,28.8 13.95,21.6\"",

/* 57 */
"points=\"0,0 14.4,0\"",

/* 58 */
"points=\"0,7.2 14.4,7.2\"",

/* 59 */
"points=\"0,14.4 14.4,14.4\"",

/* 60 */
"points=\"0,21.6 14.4,21.6\"",

/* 61 */
"points=\"0,28.8 14.4,28.8\"",

/* 62 */
"points=\"0,0 3.6,7.2\"",

/* 63 */
"points=\"10.8,7.2 14.4,14.4\"",

/* 64 */
"points=\"7.2,14.4 10.8,21.6\"",

/* 65 */
"points=\"3.6,21.6 7.2,28.8\"",

/* 66 */
"points=\"0,0 14.4,0\"",

/* 67 */
"points=\"0,7.2 14.4,7.2\"",

/* 68 */
"points=\"0,14.4 14.4,14.4\"",

/* 69 */
"points=\"0,21.6 14.4,21.6\"",

/* 70 */
"points=\"0,28.8 14.4,28.8\"",

/* 71 */
"points=\"0,10.8 7.2,14.4\"",

/* 72 */
"points=\"7.2,7.2 14.4,10.8\"",

/* 73 */
"points=\"14.4,3.6 21.6,7.2\"",

/* 74 */
"points=\"21.6,0 28.8,3.6\"",

/* 75 */
"points=\"0,0 0,14.4\"",

/* 76 */
"points=\"7.2,0 7.2,14.4\"",

/* 77 */
"points=\"14.4,0 14.4,14.4\"",

/* 78 */
"points=\"21.6,0 21.6,14.4\"",

/* 79 */
"points=\"28.8,0 28.8,14.4\"",

/* 80 */
"points=\"0,14.4 7.2,10.8\"",

/* 81 */
"points=\"7.2,3.6 14.4,0\"",

/* 82 */
"points=\"14.4,7.2 21.6,3.6\"",

/* 83 */
"points=\"21.6,10.8 28.8,7.2\"",

/* 84 */
"points=\"0,0 0,14.4\"",

/* 85 */
"points=\"7.2,0 7.2,14.4\"",

/* 86 */
"points=\"14.4,0 14.4,14.4\"",

/* 87 */
"points=\"21.6,0 21.6,14.4\"",

/* 88 */
"points=\"28.8,0 28.8,14.4\"",

/* 89 */
"path",

/* 90 */
"d=\"M0,0A9 9 0 0 0 14.54,0\"",

/* 91 */
"d=\"M0,7.4A9 9 0 0 0 7.27,3.7\"",

/* 92 */
"d=\"M7.27,3.7A9 9 0 0 0 14.54,7.4\"",

/* 93 */
"d=\"M0,0A9 9 0 0 0 7.27,-3.7\"",

/* 94 */
"d=\"M7.27,-3.7A9 9 0 0 0 14.54,0\"",

/* 95 */
"d=\"M0,0A3.6 3.6 0 0 0 7.2,0\"",

/* 96 */
"d=\"M0,7.2A3.6 3.6 0 0 0 3.6,3.6\"",

/* 97 */
"d=\"M3.6,3.6A3.6 3.6 0 0 0 7.2,7.2\"",

/* 98 */
"d=\"M0,0A3.6 3.6 0 0 0 3.6,-3.6\"",

/* 99 */
"d=\"M3.6,-3.6A3.6 3.6 0 0 0 7.2,0\"",

/* 100 */
"circle",

/* 101 */
"style=\"fill: none; stroke: #%02X%02X%02X; stroke-width: 0.9;\"",

/* 102 */
" cx=\"7.2\" cy=\"7.2\" r=\"7.2\"",

/* 103 */
"points=\"3.6,0 0,6.24 3.6,12.47 10.8,12.47 14.4,6.24 10.8,0\"",

/* 104 */
"points=\"14.4,6.24 21.6,6.24\"",

/* 105 */
"points=\"21.6,6.24 25.2,0\"",

/* 106 */
"points=\"21.6,6.24 25.2,12.47\"",

/* 107 */
"points=\"0,4.22 4.22,0 10.18,0 14.4,4.22",

/* 108 */
"14.4,10.18 10.18,14.4 4.22,14.4 0,10.18\"",

/* 109 */
"points=\"0,1.8 3.6,5.4 7.2,1.8\"",

/* 110 */
"points=\"1.8,0 5.4,3.6 1.8,7.2\"",

/* 111 */
"s",

/* 112 */
".",

/* 113 */
" {\n",

/* 114 */
"}\n",

/* 115 */
"font-family: \"",

/* 116 */
"\",serif;\n",

/* 117 */
"\",sans-serif;\n",

/* 118 */
"\",monospace;\n",

/* 119 */
"font-style: normal;\n",

/* 120 */
"font-style: italic;\n",

/* 121 */
"font-style: oblique;\n",

/* 122 */
"font-weight: %d;\n",

/* 123 */
"font-family: serif;\n",

/* 124 */
"font-family: sans-serif;\n",

/* 125 */
"font-family: monospace;\n",

/* 126 */
"font-style: normal;\n",

/* 127 */
"font-style: italic;\n",

/* 128 */
"font-weight: normal;\n",

/* 129 */
"font-weight: bold;\n",

/* 130 */
"font-size: %lgpt;\n",

/* 131 */
"text-anchor: start;\n",

/* 132 */
"text-anchor: middle;\n",

/* 133 */
"text-anchor: end;\n",

/* 134 */
"fill: url(#",

/* 135 */
");\nfillrule: evenodd;\n",

/* 136 */
"fill: #%02X%02X%02X;\nfillrule: evenodd;\n",

/* 137 */
"fill: none;\n",

/* 138 */
"stroke: #%02X%02X%02X;\n",

/* 139 */
"stroke-width: %lg;\n",

/* 140 */
"stroke-linecap: square;\n",

/* 141 */
"stroke-linecap: round;\n",

/* 142 */
"stroke-linecap: butt;\n",

/* 143 */
"stroke-linejoin: bevel;\n",

/* 144 */
"stroke-linejoin: round;\n",

/* 145 */
"stroke-linejoin: miter;\n",

/* 146 */
"stroke-dasharray: ",

/* 147 */
";\n",

/* 148 */
"none",

/* 149 */
"%lg,%lg",

/* 150 */
"%lg,%lg,%lg,%lg",

/* 151 */
"%lg,%lg,%lg,%lg,%lg,%lg",

/* 152 */
"%lg,%lg,%lg,%lg,%lg,%lg,%lg,%lg",

/* 153 */
"font-family=\"'",

/* 154 */
"',serif\"\n",

/* 155 */
"',sans-serif\"\n",

/* 156 */
"',monospace\"\n",

/* 157 */
"font-style=\"oblique\"\n",

/* 158 */
"font-style=\"italic\"\n",

/* 159 */
"font-weight=\"%d\"\n",

/* 160 */
"font-size=\"%lgpt\"\n",

/* 161 */
"font-family=\"serif\"\n",

/* 162 */
"font-family=\"sans-serif\"\n",

/* 163 */
"font-family=\"monospace\"\n",

/* 164 */
"font-weight=\"bold\"\n",

/* 165 */
"text-anchor=\"middle\"\n",

/* 166 */
"text-anchor=\"end\"\n",

/* 167 */
"fill=\"url(#",

/* 168 */
")\"\n",

/* 169 */
"fill=\"#%02X%02X%02X\"\n",

/* 170 */
"fill=\"none\"\n",

/* 171 */
"stroke=\"#%02X%02X%02X\"\n",

/* 172 */
"stroke-width=\"%lg\"\n",

/* 173 */
"stroke-dasharray=\"%lg,%lg\"\n",

/* 174 */
"stroke-dasharray=\"%lg,%lg,%lg,%lg\"\n",

/* 175 */
"stroke-dasharray=\"%lg,%lg,%lg,%lg,%lg,%lg\"\n",

/* 176 */
"stroke-dasharray=\"%lg,%lg,%lg,%lg,%lg,%lg,%lg,%lg\"\n",

/* 177 */
"stroke-linecap=\"square\"\n",

/* 178 */
"stroke-linecap=\"round\"\n",

/* 179 */
"stroke-linejoin=\"bevel\"\n",

/* 180 */
"stroke-linejoin=\"round\"\n",

/* 181 */
"class=\"",

/* 182 */
"\"\n",

/* 183 */
"fill: #%02X%02X%02X;\n",

/* 184 */
"fill=\"#%02X%02X%02X\"\nfillrule=\"evenodd\"\n",

/* 185 */
"stroke-miterlimit: 20;\n",

/* 186 */
"stroke-miterlimit=\"20\"\n",

/* 187 */
"\",\"",

/* 188 */
"','",

NULL


#line 889 "f2lsvgst.ctr"
};



/**	Compare two integer values.
	@param	x	Left value.
	@param	y	Right value.
	@return	Comparison result.
*/
int
f2lsvgst_compare_int(int x, int y)
{
  int		 back = 0;
  

#line 903 "f2lsvgst.ctr"
  if(x > y) {
    back = 1;
  } else {
    if(x < y) {
      back = -1;
    }
  } 

#line 910 "f2lsvgst.ctr"
  return	 back;
}



int
f2lsvgst_compare_pattern(void *l, void *r, int cr)
{
  int				 back = 0;
  f2l_svg_fill_pattern_t	*pl;
  f2l_svg_fill_pattern_t	*pr;
  if(l) {
    if(r) {
      pl = (f2l_svg_fill_pattern_t *)l;
      pr = (f2l_svg_fill_pattern_t *)r;
      back = f2lsvgst_compare_int(pl->fn, pr->fn);
      if(0 == back) {
        back = f2lsvgst_compare_int(pl->sr, pr->sr);
	if(0 == back) {
	  back = f2lsvgst_compare_int(pl->sg, pr->sg);
	  if(0 == back) {
	    back = f2lsvgst_compare_int(pl->sb, pr->sb);
	    if(0 == back) {
	      back = f2lsvgst_compare_int(pl->fr, pr->fr);
	      if(0 == back) {
	        back = f2lsvgst_compare_int(pl->fg, pr->fg);
		if(0 == back) {
		  back = f2lsvgst_compare_int(pl->fb, pr->fb);
		}
	      }
	    }
	  }
	}
      }
    } else { back = 1; }
  } else {
    if(r) { back = -1; }
  }
  return back;
}



int
f2lsvgst_compare_object_styles(void *l, void *r, int cr)
{
  f2l_svg_style_t	*pl;
  f2l_svg_style_t	*pr;
  int			 back = 0;
  

#line 960 "f2lsvgst.ctr"
  if(l) {
    if(r) {
      pl = (f2l_svg_style_t *)l;
      pr = (f2l_svg_style_t *)r;
      /*	Stroke color.
      */			

#line 966 "f2lsvgst.ctr"
      if((pl->flags) & DK3_SVG_FLAGS_COLOR_STROKE) {
        if((pr->flags) & DK3_SVG_FLAGS_COLOR_STROKE) {
	  back = f2lsvgst_compare_int(pl->sr, pr->sr);
	  

#line 970 "f2lsvgst.ctr"
	  if(0 == back) {
	    back = f2lsvgst_compare_int(pl->sg, pr->sg);
	    

#line 973 "f2lsvgst.ctr"
	    if(0 == back) {
	      back = f2lsvgst_compare_int(pl->sb, pr->sb);
	      

#line 976 "f2lsvgst.ctr"
	    }
	  }
	} else {
	  back = 1;			

#line 980 "f2lsvgst.ctr"
	}
      } else {
        if((pr->flags) & DK3_SVG_FLAGS_COLOR_STROKE) {
	  back = -1;			

#line 984 "f2lsvgst.ctr"
	}
      }
      /*	Line width.
      */
      if(0 == back) {		

#line 989 "f2lsvgst.ctr"
        if((pl->flags) & DK3_SVG_FLAGS_LINEWIDTH) {
          if((pr->flags) & DK3_SVG_FLAGS_LINEWIDTH) {
	    if(pl->lw > (pr->lw + 1.0e-6)) {
	      back = 1;			

#line 993 "f2lsvgst.ctr"
	    } else {
	      if(pr->lw > (pl->lw + 1.0e-6)) {
	        back = -1;		

#line 996 "f2lsvgst.ctr"
	      }
	    }
	  } else {
	    back = 1;			

#line 1000 "f2lsvgst.ctr"
	  }
        } else {
          if((pr->flags) & DK3_SVG_FLAGS_LINEWIDTH) {
	    back = -1;			

#line 1004 "f2lsvgst.ctr"
	  }
        }
      }
      /*	Line cap.
      */
      if(0 == back) {		

#line 1010 "f2lsvgst.ctr"
        if((pl->flags) & DK3_SVG_FLAGS_LINE_CAP) {
	  if((pr->flags) & DK3_SVG_FLAGS_LINE_CAP) {
	    back = f2lsvgst_compare_int(pl->lc, pr->lc);
	    

#line 1014 "f2lsvgst.ctr"
	  } else {
	    back = 1;			

#line 1016 "f2lsvgst.ctr"
	  }
	} else {
	  if((pr->flags) & DK3_SVG_FLAGS_LINE_CAP) {
	    back = -1;			

#line 1020 "f2lsvgst.ctr"
	  }
	}
      }
      /*	Line join.
      */
      if(0 == back) {		

#line 1026 "f2lsvgst.ctr"
        if((pl->flags) & DK3_SVG_FLAGS_LINE_JOIN) {
	  if((pr->flags) & DK3_SVG_FLAGS_LINE_JOIN) {
	    back = f2lsvgst_compare_int(pl->lj, pr->lj);
	    

#line 1030 "f2lsvgst.ctr"
	  } else {
	    back = 1;			

#line 1032 "f2lsvgst.ctr"
	  }
	} else {
	  if((pr->flags) & DK3_SVG_FLAGS_LINE_JOIN) {
	    back = -1;			

#line 1036 "f2lsvgst.ctr"
	  }
	}
      }
      /*	Line style.
      */
      if(0 == back) {		

#line 1042 "f2lsvgst.ctr"
        if((pl->flags) & DK3_SVG_FLAGS_LINESTYLE) {
          if((pr->flags) & DK3_SVG_FLAGS_LINESTYLE) {
	    if(pl->ls > pr->ls) {
	      back = 1;			

#line 1046 "f2lsvgst.ctr"
	    } else {
	      if(pr->ls > pl->ls) {
	        back = -1;		

#line 1049 "f2lsvgst.ctr"
	      } else {
	        if((0 != pl->ls) && (0 != pr->ls)) {
	          if(pl->lsv > (pr->lsv + 1.0e-6)) {
		    back = 1;		

#line 1053 "f2lsvgst.ctr"
		  } else {
		    if(pr->lsv > (pl->lsv + 1.0e-6)) {
		      back = -1;	

#line 1056 "f2lsvgst.ctr"
		    }
		  }
	        }
	      }
	    }
	  } else {
	    back = 1;			

#line 1063 "f2lsvgst.ctr"
	  }
        } else {
          if((pr->flags) & DK3_SVG_FLAGS_LINESTYLE) {
	    back = -1;			

#line 1067 "f2lsvgst.ctr"
	  }
        }
      }
      /*	Fill pattern or fill color.
      */
      if(0 == back) {		

#line 1073 "f2lsvgst.ctr"
        if(pl->fp) {
	  if(pr->fp) {
	    back =
	    f2lsvgst_compare_pattern((void *)(pl->fp),(void *)(pr->fp),0);
	    

#line 1078 "f2lsvgst.ctr"
	  } else {
	    back = 1;			

#line 1080 "f2lsvgst.ctr"
	  }
	} else {
	  if(pr->fp) {
	    back = -1;			

#line 1084 "f2lsvgst.ctr"
	  }
	  else {
            /*	Fill color only if both objects do not have fill patterns.
            */
            if(0 == back) {
	      if((pl->flags) & DK3_SVG_FLAGS_COLOR_FILL) {
	        if((pr->flags) & DK3_SVG_FLAGS_COLOR_FILL) {
                  back = f2lsvgst_compare_int(pl->fr, pr->fr);
		  

#line 1093 "f2lsvgst.ctr"
	          if(0 == back) {
	            back = f2lsvgst_compare_int(pl->fg, pr->fg);
		    

#line 1096 "f2lsvgst.ctr"
	            if(0 == back) {
	              back = f2lsvgst_compare_int(pl->fb, pr->fb);
		      

#line 1099 "f2lsvgst.ctr"
	            }
	          }
	        } else {
	          back = 1;		

#line 1103 "f2lsvgst.ctr"
	        }
	      } else {
	        if((pr->flags) & DK3_SVG_FLAGS_COLOR_FILL) {
	          back = -1;		

#line 1107 "f2lsvgst.ctr"
	        }
	      }
            }
 	  }
	}
      }
      /*	Font.
      */
      if(0 == back) {		

#line 1116 "f2lsvgst.ctr"
        if((pl->flags) & DK3_SVG_FLAGS_FONT) {
	  if((pr->flags) & DK3_SVG_FLAGS_FONT) {
	    if((pl->flags) & DK3_SVG_FLAGS_PS_FONT) {
	      if((pr->flags) & DK3_SVG_FLAGS_PS_FONT) {
	        back = f2lsvgst_compare_int(pl->tf, pr->tf);
		

#line 1122 "f2lsvgst.ctr"
	        if(0 == back) {
	          if(pl->ts > (pr->ts + 1.0e-6)) {
	            back = 1;		

#line 1125 "f2lsvgst.ctr"
	          } else {
	            if(pl->ts < (pr->ts - 1.0e-6)) {
		      back = -1;	

#line 1128 "f2lsvgst.ctr"
		    }
	          }
	        }
	      } else {
	        back = 1;		

#line 1133 "f2lsvgst.ctr"
	      }
	    } else {
	      if((pr->flags) & DK3_SVG_FLAGS_PS_FONT) {
	        back = -1;		

#line 1137 "f2lsvgst.ctr"
	      } else {
	        back = f2lsvgst_compare_int(pl->tf, pr->tf);
		

#line 1140 "f2lsvgst.ctr"
		if(0 == back) {
	          if(pl->ts > (pr->ts + 1.0e-6)) {
	            back = 1;		

#line 1143 "f2lsvgst.ctr"
	          } else {
	            if(pl->ts < (pr->ts - 1.0e-6)) {
		      back = -1;	

#line 1146 "f2lsvgst.ctr"
		    }
	          }
		}
	      }
	    }
	  } else {
	    back = 1;		

#line 1153 "f2lsvgst.ctr"
	  }
	} else {
	  if((pr->flags) & DK3_SVG_FLAGS_FONT) {
	    back = -1;		

#line 1157 "f2lsvgst.ctr"
	  }
	}
      }
      /*	Text align.
      */
      if(0 == back) {		

#line 1163 "f2lsvgst.ctr"
        if((pl->flags) & DK3_SVG_FLAGS_TEXT_ALIGN) {
	  if((pr->flags) & DK3_SVG_FLAGS_TEXT_ALIGN) {
	    back = f2lsvgst_compare_int(pl->al, pr->al);
	    

#line 1167 "f2lsvgst.ctr"
	  } else {
	    back = 1;			

#line 1169 "f2lsvgst.ctr"
	  }
	} else {
	  if((pr->flags) & DK3_SVG_FLAGS_TEXT_ALIGN) {
	    back = -1;			

#line 1173 "f2lsvgst.ctr"
	  }
	}
      }
    } else {				

#line 1177 "f2lsvgst.ctr"
      back = 1;
    }
  } else {
    if(r) {
      back = -1;			

#line 1182 "f2lsvgst.ctr"
    }
  } 

#line 1184 "f2lsvgst.ctr"
  return back;
}



void
f2lsvgst_pattern_delete(f2l_svg_fill_pattern_t *pa)
{
  

#line 1193 "f2lsvgst.ctr"
  if(pa) {
    

#line 1195 "f2lsvgst.ctr"
    dk3_delete(pa)
  } 

#line 1197 "f2lsvgst.ctr"
}



f2l_svg_fill_pattern_t *
f2lsvgst_pattern_new(f2l_svg_t *psvg)
{
  f2l_svg_fill_pattern_t	*back	= NULL;
  

#line 1206 "f2lsvgst.ctr"
  if(psvg) {
    back = dk3_new(f2l_svg_fill_pattern_t,1);
    if(back) {
      back->pn = 0UL;
      back->fn = 0;
      back->sr = 0; back->sg = 0; back->sb = 0;
      back->fr = 0; back->fg = 0; back->fb = 0;
    } else {
      psvg->ec = DK3_ERROR_MEMORY;
    }
  } 

#line 1217 "f2lsvgst.ctr"
  return back;
}



void
f2lsvgst_style_initialize(f2l_svg_style_t *st)
{
  

#line 1226 "f2lsvgst.ctr"
  if(st) {
    /*	2013-01-25: Same order as in typedef makes completeness checking easier.
    */
    st->fp = NULL;
    st->ts = 0.0;
    st->lw = 0.0;
    st->lsv = 0.0;
    st->sn = 0UL;
    st->tf = 0;
    st->flags = 0;
    st->sr = 0; st->sg = 0; st->sb = 0;
    st->fr = 0; st->fg = 0; st->fb = 0;
    st->ls = 0;
    st->al = 0;
    st->lc = 0;
    st->lj = 0;
  } 

#line 1243 "f2lsvgst.ctr"
}


#if TRACE_DEBUG
/**	Report style contents.
	@param	pst	SVG style to report.
*/
static
void
f2lsvgst_style_report(f2l_svg_style_t	*pst)
{
  FILE		*tf;
  tf = dktrace_file();
  if(tf) {
    if((pst->flags) & DK3_SVG_FLAGS_COLOR_STROKE) {
      fprintf(tf, "Stroke: #%02X%02X%02X\n", pst->sr, pst->sg, pst->sb);
    }
    if((pst->flags) & DK3_SVG_FLAGS_LINEWIDTH) {
      fprintf(tf, "Line width: %lg\n", pst->lw);
    }
    if((pst->flags) & DK3_SVG_FLAGS_LINESTYLE) {
      fprintf(tf, "Line style: %d %lg\n", pst->ls, pst->lsv);
    }
    if((pst->flags) & DK3_SVG_FLAGS_LINE_CAP) {
      fprintf(tf, "Line   cap: %d\n", pst->lc);
    }
    if((pst->flags) & DK3_SVG_FLAGS_LINE_JOIN) {
      fprintf(tf, "Line  join: %d\n", pst->lj);
    }
    if(pst->fp) {
      fprintf(tf, "Fill: pattern\n");
    } else {
      if((pst->flags) & DK3_SVG_FLAGS_COLOR_FILL) {
        fprintf(tf, "Fill: #%02X%02X%02X", pst->fr, pst->fg, pst->fb);
      }
    }
    if((pst->flags) & DK3_SVG_FLAGS_FONT) {
      fprintf(tf, "Font:  PS=%d  NUMBER=%d  SIZE=%lg\n", (((pst->flags) & DK3_SVG_FLAGS_PS_FONT) ? 1 : 0), pst->tf, pst->ts);
    }
    if((pst->flags) & DK3_SVG_FLAGS_TEXT_ALIGN) {
      fprintf(tf, "Text align: %d\n", pst->al);
    }
  }
}
#endif


void
f2lsvgst_style_delete(f2l_svg_style_t *st)
{
  

#line 1294 "f2lsvgst.ctr"
  if(st) {
    f2lsvgst_style_initialize(st);
    dk3_delete(st)
  } 

#line 1298 "f2lsvgst.ctr"
}



f2l_svg_style_t *
f2lsvgst_style_new(f2l_svg_t *psvg)
{
  f2l_svg_style_t	*back	= NULL;
  

#line 1307 "f2lsvgst.ctr"
  if(psvg) {
    back = dk3_new(f2l_svg_style_t,1);
    if(back) {
      f2lsvgst_style_initialize(back);
    } else {
      psvg->ec = DK3_ERROR_MEMORY;
    }
  } 

#line 1315 "f2lsvgst.ctr"
  return back;
}



void
f2lsvgst_delete(f2l_svg_t *psvg)
{
  f2l_svg_style_t		*st;
  f2l_svg_fill_pattern_t	*pa;
  

#line 1326 "f2lsvgst.ctr"
  if(psvg) {
    if(psvg->psFontsUsed) {
      dk3_release(psvg->psFontsUsed)
    }
    if(psvg->sStyles) {
      if(psvg->iStyles) {
        dk3sto_it_reset(psvg->iStyles);
	while(NULL != (st = (f2l_svg_style_t *)dk3sto_it_next(psvg->iStyles))) {
	  f2lsvgst_style_delete(st);
	}
	dk3sto_it_close(psvg->iStyles);
      }
      dk3sto_close(psvg->sStyles);
    } psvg->sStyles = NULL; psvg->iStyles = NULL;
    if(psvg->sPatterns) {
      if(psvg->iPatterns) {
        dk3sto_it_reset(psvg->iPatterns);
	do {
	  pa = (f2l_svg_fill_pattern_t *)dk3sto_it_next(psvg->iPatterns);
	  if(pa) {
	    f2lsvgst_pattern_delete(pa);
	  }
	} while(pa);
	dk3sto_it_close(psvg->iPatterns);
      }
      dk3sto_close(psvg->sPatterns);
    } psvg->sPatterns = NULL; psvg->iPatterns = NULL;
    dk3_delete(psvg)
  } 

#line 1355 "f2lsvgst.ctr"
}



f2l_svg_t *
f2lsvgst_new_app(dk3_app_t *app)
{
  f2l_svg_t		*back	= NULL;
  size_t		 i;
  int			 ok	= 0;
  

#line 1366 "f2lsvgst.ctr"
  back = dk3_new_app(f2l_svg_t,1,app);
  if(back) {
    back->sPatterns = NULL;
    back->iPatterns = NULL;
    back->sStyles = NULL;
    back->iStyles = NULL;
    back->nPatterns = 0UL;
    back->nStyles = 0UL;
    back->psFontsUsed = NULL;
    back->ec = 0;
    back->sPatterns = dk3sto_open_app(app);
    if(back->sPatterns) {
      dk3sto_set_comp(back->sPatterns, f2lsvgst_compare_pattern, 0);
      back->iPatterns = dk3sto_it_open(back->sPatterns);
      if(back->iPatterns) {
        back->sStyles = dk3sto_open_app(app);
	if(back->sStyles) {
	  dk3sto_set_comp(back->sStyles, f2lsvgst_compare_object_styles, 0);
	  back->iStyles = dk3sto_it_open(back->sStyles);
	  if(back->iStyles) {
	    back->psFontsUsed = dk3_new_app(int,35,app);
	    if(back) {
	      for(i = 0; i < 35; i++) { (back->psFontsUsed)[i] = 0; }
	      ok = 1;
	    }
	  }
	}
      }
    }
    if(!(ok)) {
      f2lsvgst_delete(back);
      back = NULL;
    }
  } 

#line 1400 "f2lsvgst.ctr"
  return back;
}



int
f2lsvgst_get_error_code(f2l_svg_t *psvg)
{
  int		 back = 0;
  if(psvg) {
    back = psvg->ec;
    psvg->ec = 0;
  } 

#line 1413 "f2lsvgst.ctr"
  return back;
}


f2l_svg_fill_pattern_t *
f2lsvgst_pattern_add(f2l_svg_t *psvg, f2l_svg_fill_pattern_t *src)
{
  f2l_svg_fill_pattern_t	*back = NULL;
  

#line 1422 "f2lsvgst.ctr"
  if((psvg) && (src)) {
    back = (f2l_svg_fill_pattern_t *)dk3sto_it_find_like(
      psvg->iPatterns, (void *)src, 0
    );
    if(!(back)) {
      if(0UL != (1UL + psvg->nPatterns)) {
        back = f2lsvgst_pattern_new(psvg);
        if(back) {
          dk3mem_cpy((void *)back, (void *)src, sizeof(f2l_svg_fill_pattern_t));
	  if(dk3sto_add(psvg->sPatterns, (void *)back)) {
	    back->pn = psvg->nPatterns;
	    psvg->nPatterns += 1UL;
	  } else {
	    f2lsvgst_pattern_delete(back);
	    back = NULL;
	  }
        }
      } else {
        psvg->ec = DK3_ERROR_MATH_OVERFLOW;
      }
    }
  } 

#line 1444 "f2lsvgst.ctr"
  return  back;
}



f2l_svg_style_t *
f2lsvgst_style_add(f2l_svg_t *psvg, f2l_svg_style_t *src)
{
  f2l_svg_style_t		*back = NULL;
  

#line 1454 "f2lsvgst.ctr"
  if((psvg) && (src)) {
    back = (f2l_svg_style_t *)dk3sto_it_find_like(
      psvg->iStyles, (void *)src, 0
    );
    if(!(back)) {	

#line 1459 "f2lsvgst.ctr"
      if(0UL != (1UL + psvg->nStyles)) {	

#line 1460 "f2lsvgst.ctr"
        back = f2lsvgst_style_new(psvg);
        if(back) {	

#line 1462 "f2lsvgst.ctr"
          dk3mem_cpy((void *)back, (void *)src, sizeof(f2l_svg_style_t));
	  if(dk3sto_add(psvg->sStyles, (void *)back)) {
	    back->sn = psvg->nStyles;
	    psvg->nStyles += 1UL;
	  } else {
	    f2lsvgst_style_delete(back);
	    back = NULL;
	  }
        } else {	

#line 1471 "f2lsvgst.ctr"
	}
      } else {
        psvg->ec = DK3_ERROR_MATH_OVERFLOW;
      }
    } else {		

#line 1476 "f2lsvgst.ctr"
    }
  } 

#line 1478 "f2lsvgst.ctr"
  return back;
}



int
f2lsvgst_style_set_pattern(
  f2l_svg_t			*psvg,
  f2l_svg_style_t		*pst,
  f2l_svg_fill_pattern_t	*ppat
)
{
  int				 back = 0;
  

#line 1492 "f2lsvgst.ctr"
  if((psvg) && (pst) && (ppat)) {
    if(!(pst->fp)) {
      pst->fp = f2lsvgst_pattern_add(psvg, ppat);
      if(pst->fp) {
        back = 1;
      }
    }
  } 

#line 1500 "f2lsvgst.ctr"
  return back;
}



void
f2lsvgst_style_set_text(
  f2l_svg_t		*psvg,
  f2l_svg_style_t	*pst,
  int			 ps,
  int			 tf,
  double		 ts
)
{
  

#line 1515 "f2lsvgst.ctr"
  if(pst) {
    pst->tf = tf;
    pst->ts = ts;
    pst->flags |= (DK3_SVG_FLAGS_FONT);
    if(ps) {
      pst->flags |= (DK3_SVG_FLAGS_PS_FONT);
    } else {
      pst->flags &= (~(DK3_SVG_FLAGS_PS_FONT));
    }
  }
  if((psvg) && (ps)) {
    if((0 <= tf) && (tf < 35)) {
      (psvg->psFontsUsed)[tf] = 1;
    }
  } 

#line 1530 "f2lsvgst.ctr"
}



void
f2lsvgst_style_set_line_width(
  f2l_svg_style_t	*pst,
  double		 lw
)
{
  

#line 1541 "f2lsvgst.ctr"
  if(pst) {
    pst->lw = lw;
    pst->flags |= (DK3_SVG_FLAGS_LINEWIDTH);
  } 

#line 1545 "f2lsvgst.ctr"
}



void
f2lsvgst_style_set_line_style(
  f2l_svg_style_t		*pst,
  int				 ls,
  double			 lsv
)
{
  

#line 1557 "f2lsvgst.ctr"
  if(pst) {
    pst->ls = ls; pst->lsv = lsv;
    pst->flags|= (DK3_SVG_FLAGS_LINESTYLE);
  } 

#line 1561 "f2lsvgst.ctr"
}



void
f2lsvgst_style_set_line_color(
  f2l_svg_style_t		*pst,
  int				 r,
  int				 g,
  int				 b
)
{
  

#line 1574 "f2lsvgst.ctr"
  if(pst) {
    pst->sr = r; pst->sg = g; pst->sb = b;
    pst->flags |= (DK3_SVG_FLAGS_COLOR_STROKE);
  } 

#line 1578 "f2lsvgst.ctr"
}



void
f2lsvgst_style_set_fill_color(
  f2l_svg_style_t		*pst,
  int				 r,
  int				 g,
  int				 b
)
{
  

#line 1591 "f2lsvgst.ctr"
  if(pst) {
    pst->fr = r; pst->fg = g; pst->fb = b;
    pst->flags |= (DK3_SVG_FLAGS_COLOR_FILL);
  } 

#line 1595 "f2lsvgst.ctr"
}



int
f2lsvgst_any_ps_font_used(f2l_svg_t *psvg)
{
  size_t	 i;
  int		 back = 0;
  for(i = 0; i < 35; i++) {
    if((psvg->psFontsUsed)[i]) {
      back = 1;
    }
  }
  return back;
}



void
f2lsvgst_style_set_text_align(f2l_svg_style_t *pst, int al)
{
  if(pst) {
    pst->al = al;
    pst->flags |= (DK3_SVG_FLAGS_TEXT_ALIGN);
  }
}



void
f2lsvgst_style_set_text_line_cap(f2l_svg_style_t *pst, int lc)
{
  if(pst) {
    pst->lc = lc;
    pst->flags |= (DK3_SVG_FLAGS_LINE_CAP);
  }
}



void
f2lsvgst_style_set_text_line_join(f2l_svg_style_t *pst, int lj)
{
  if(pst) {
    pst->lj = lj;
    pst->flags |= (DK3_SVG_FLAGS_LINE_JOIN);
  }
}



/**	Write one tag name, either with or without svg: prefix.
	@param	job	Job structure.
	@param	ind	Index of tag name in f2lsvgst_c8_kw.
*/
static
void
f2lsvgst_tag(
  f2l_job_t		*job,
  size_t		 ind
)
{
  if(job->fragment) {
    fputs(f2lsvgst_c8_kw[1], job->of1);
  }
  fputs(f2lsvgst_c8_kw[ind], job->of1);
}



/**	Write a number as string.
	@param	job	Job structure.
	@param	current	Current value.
	@param	max	Maximum value.
*/
static
void
f2lsvgst_write_id(
  f2l_job_t		*job,
  unsigned long		 current,
  unsigned long		 max
)
{
  char		 buf[128];
  char		*ptr;
  size_t	 maxlgt;
  size_t	 lgt;
  size_t	 i;

  sprintf(buf, "%lu", max);
  maxlgt = strlen(buf);
  sprintf(buf, "%lu", current);
  lgt = strlen(buf);
  for(i = lgt; i < maxlgt; i++) {
    fputc('A', job->of1);
  }
  ptr = buf;
  while(*ptr) {
    switch(*ptr) {
      case '0': { *ptr = 'A'; } break;
      case '1': { *ptr = 'B'; } break;
      case '2': { *ptr = 'C'; } break;
      case '3': { *ptr = 'D'; } break;
      case '4': { *ptr = 'E'; } break;
      case '5': { *ptr = 'F'; } break;
      case '6': { *ptr = 'G'; } break;
      case '7': { *ptr = 'H'; } break;
      case '8': { *ptr = 'I'; } break;
      case '9': { *ptr = 'J'; } break;
    }
    ptr++;
  }
  fputs(buf, job->of1);
}



void
f2lsvgst_write_pattern_id(
  f2l_job_t			*job,
  dk3_fig_drawing_t		*drw,
  f2l_svg_t			*psvg,
  f2l_svg_fill_pattern_t	*pat
)
{
  

#line 1722 "f2lsvgst.ctr"
  fputs(f2lsvgst_c8_kw[8], job->of1);
  f2lsvgst_write_id(job, pat->pn, psvg->nPatterns);
  

#line 1725 "f2lsvgst.ctr"
}



void
f2lsvgst_write_style_id(
  f2l_job_t			*job,
  dk3_fig_drawing_t		*drw,
  f2l_svg_t			*psvg,
  f2l_svg_style_t		*pst
)
{
  

#line 1738 "f2lsvgst.ctr"
  fputs(f2lsvgst_c8_kw[111], job->of1);
  f2lsvgst_write_id(job, pst->sn, psvg->nStyles);
  

#line 1741 "f2lsvgst.ctr"
}


/**	Write opening pattern tag.
	@param	job	Job structure.
	@param	drw	Drawing structure.
	@param	psvg	SVG style collection.
	@param	pat	Pattern to write.
	@param	w	Pattern width.
	@param	h	Pattern height.
*/
static
void
f2lsvgst_write_opening_pattern_tag(
  f2l_job_t			*job,
  dk3_fig_drawing_t		*drw,
  f2l_svg_t			*psvg,
  f2l_svg_fill_pattern_t	*pat,
  double			 w,
  double			 h
)
{
  fputs(f2lsvgst_c8_kw[6], job->of1);
  f2lsvgst_tag(job, 3);
  fputs(f2lsvgst_c8_kw[7], job->of1);
  f2lsvgst_write_pattern_id(job, drw, psvg, pat);
  fprintf(job->of1, f2lsvgst_c8_kw[9], w, h);
}



/**	Write opening pattern tag.
	@param	job	Job structure.
	@param	drw	Drawing structure.
	@param	psvg	SVG style collection.
	@param	pat	Pattern to write.
	@param	w	Pattern width.
	@param	h	Pattern height.
*/
static
void
f2lsvgst_pattern_background(
  f2l_job_t			*job,
  dk3_fig_drawing_t		*drw,
  f2l_svg_t			*psvg,
  f2l_svg_fill_pattern_t	*pat,
  double			 w,
  double			 h
)
{
  fputs(f2lsvgst_c8_kw[6], job->of1);
  f2lsvgst_tag(job, 10);
  fprintf(job->of1, f2lsvgst_c8_kw[11], w, h);
  fprintf(job->of1, f2lsvgst_c8_kw[12], pat->fr, pat->fg, pat->fb);
  fputs(f2lsvgst_c8_kw[13], job->of1);
}



/**	Draw foreground line in pattern.
	@param	job	Job structure.
	@param	drw	Drawing structure.
	@param	psvg	SVG style collection.
	@param	pat	Pattern to write.
	@param	ind	Index of points line in f2lsvgst_c8_kw.
*/
static
void
f2lsvgst_pattern_foreground_line(
  f2l_job_t			*job,
  dk3_fig_drawing_t		*drw,
  f2l_svg_t			*psvg,
  f2l_svg_fill_pattern_t	*pat,
  size_t			 ind
)
{
  fputs(f2lsvgst_c8_kw[6], job->of1);
  f2lsvgst_tag(job, 18);
  fprintf(job->of1, f2lsvgst_c8_kw[14], pat->sr, pat->sg, pat->sb);
  fputs(f2lsvgst_c8_kw[ind], job->of1);
  fputs(f2lsvgst_c8_kw[0], job->of1);
  fputs(f2lsvgst_c8_kw[13], job->of1);
}



/**	Draw foreground line in pattern.
	@param	job	Job structure.
	@param	drw	Drawing structure.
	@param	psvg	SVG style collection.
	@param	pat	Pattern to write.
	@param	ind	Index of points line in f2lsvgst_c8_kw.
*/
static
void
f2lsvgst_pattern_foreground_line_lcr(
  f2l_job_t			*job,
  dk3_fig_drawing_t		*drw,
  f2l_svg_t			*psvg,
  f2l_svg_fill_pattern_t	*pat,
  size_t			 ind
)
{
  fputs(f2lsvgst_c8_kw[6], job->of1);
  f2lsvgst_tag(job, 18);
  fputs(f2lsvgst_c8_kw[0], job->of1);
  fprintf(job->of1, f2lsvgst_c8_kw[22], pat->sr, pat->sg, pat->sb);
  fputs(f2lsvgst_c8_kw[0], job->of1);
  fputs(f2lsvgst_c8_kw[ind], job->of1);
  fputs(f2lsvgst_c8_kw[0], job->of1);
  fputs(f2lsvgst_c8_kw[13], job->of1);
}



/**	Draw foreground polygon in pattern.
	@param	job	Job structure.
	@param	drw	Drawing structure.
	@param	psvg	SVG style collection.
	@param	pat	Pattern to write.
	@param	ind	Index of points line in f2lsvgst_c8_kw.
*/
static
void
f2lsvgst_pattern_foreground_polygon_lcr(
  f2l_job_t			*job,
  dk3_fig_drawing_t		*drw,
  f2l_svg_t			*psvg,
  f2l_svg_fill_pattern_t	*pat,
  size_t			 ind
)
{
  fputs(f2lsvgst_c8_kw[6], job->of1);
  f2lsvgst_tag(job, 51);
  fputs(f2lsvgst_c8_kw[0], job->of1);
  fprintf(job->of1, f2lsvgst_c8_kw[22], pat->sr, pat->sg, pat->sb);
  fputs(f2lsvgst_c8_kw[0], job->of1);
  fputs(f2lsvgst_c8_kw[ind], job->of1);
  fputs(f2lsvgst_c8_kw[0], job->of1);
  fputs(f2lsvgst_c8_kw[13], job->of1);
}



/**	Draw foreground polygon in pattern, 2 data lines.
	@param	job	Job structure.
	@param	drw	Drawing structure.
	@param	psvg	SVG style collection.
	@param	pat	Pattern to write.
	@param	i1	Index of points line in f2lsvgst_c8_kw.
	@param	i2	Index of points line 2.
*/
static
void
f2lsvgst_pattern_foreground_polygon_lcr_l2(
  f2l_job_t			*job,
  dk3_fig_drawing_t		*drw,
  f2l_svg_t			*psvg,
  f2l_svg_fill_pattern_t	*pat,
  size_t			 i1,
  size_t			 i2
)
{
  fputs(f2lsvgst_c8_kw[6], job->of1);
  f2lsvgst_tag(job, 51);
  fputs(f2lsvgst_c8_kw[0], job->of1);
  fprintf(job->of1, f2lsvgst_c8_kw[22], pat->sr, pat->sg, pat->sb);
  fputs(f2lsvgst_c8_kw[0], job->of1);
  fputs(f2lsvgst_c8_kw[i1], job->of1);
  fputs(f2lsvgst_c8_kw[0], job->of1);
  fputs(f2lsvgst_c8_kw[i2], job->of1);
  fputs(f2lsvgst_c8_kw[0], job->of1);
  fputs(f2lsvgst_c8_kw[13], job->of1);
}



/**	Draw foreground path in pattern
	@param	job	Job structure.
	@param	drw	Drawing structure.
	@param	psvg	SVG style collection.
	@param	pat	Pattern to write.
	@param	ind	Index of data line in f2lsvgst_c8_kw.
*/
static
void
f2lsvgst_pattern_foreground_path_lcr(
  f2l_job_t			*job,
  dk3_fig_drawing_t		*drw,
  f2l_svg_t			*psvg,
  f2l_svg_fill_pattern_t	*pat,
  size_t			 ind
)
{
  fputs(f2lsvgst_c8_kw[6], job->of1);
  f2lsvgst_tag(job, 89);
  fputs(f2lsvgst_c8_kw[0], job->of1);
  fprintf(job->of1, f2lsvgst_c8_kw[22], pat->sr, pat->sg, pat->sb);
  fputs(f2lsvgst_c8_kw[0], job->of1);
  fputs(f2lsvgst_c8_kw[ind], job->of1);
  fputs(f2lsvgst_c8_kw[0], job->of1);
  fputs(f2lsvgst_c8_kw[13], job->of1);
}



/**	Draw foreground circle in pattern
	@param	job	Job structure.
	@param	drw	Drawing structure.
	@param	psvg	SVG style collection.
	@param	pat	Pattern to write.
*/
static
void
f2lsvgst_pattern_foreground_circle_lcr(
  f2l_job_t			*job,
  dk3_fig_drawing_t		*drw,
  f2l_svg_t			*psvg,
  f2l_svg_fill_pattern_t	*pat
)
{
  fputs(f2lsvgst_c8_kw[6], job->of1);
  f2lsvgst_tag(job, 100);
  fputs(f2lsvgst_c8_kw[102], job->of1);
  fputs(f2lsvgst_c8_kw[0], job->of1);
  fprintf(job->of1, f2lsvgst_c8_kw[101], pat->sr, pat->sg, pat->sb);
  fputs(f2lsvgst_c8_kw[0], job->of1);
  fputs(f2lsvgst_c8_kw[13], job->of1);
}



/**	Write pattern 41 definition to SVG output file.
	@param	job	Job structure.
	@param	drw	Drawing structure.
	@param	psvg	SVG style collection.
	@param	pat	Pattern to write.
*/
static
void
f2lsvgst_pattern_41(
  f2l_job_t			*job,
  dk3_fig_drawing_t		*drw,
  f2l_svg_t			*psvg,
  f2l_svg_fill_pattern_t	*pat
)
{
  /*	Opening pattern tag.
  */
  f2lsvgst_write_opening_pattern_tag(job, drw, psvg, pat, 7.2, 4.16);
  /*	Pattern contents 1: background.
  */
  f2lsvgst_pattern_background(job, drw, psvg, pat, 7.2, 4.16);
  /*	Pattern contents 2: lines.
  */
  f2lsvgst_pattern_foreground_line(job, drw, psvg, pat, 15);
  f2lsvgst_pattern_foreground_line(job, drw, psvg, pat, 16);
  f2lsvgst_pattern_foreground_line(job, drw, psvg, pat, 17);
  /*	Close pattern tag.
  */
  fputs(f2lsvgst_c8_kw[6], job->of1);
  fputs(f2lsvgst_c8_kw[4], job->of1);
  f2lsvgst_tag(job, 3);
  fputs(f2lsvgst_c8_kw[5], job->of1);
  fputs(f2lsvgst_c8_kw[0], job->of1);
}



/**	Write pattern 42 definition to SVG output file.
	@param	job	Job structure.
	@param	drw	Drawing structure.
	@param	psvg	SVG style collection.
	@param	pat	Pattern to write.
*/
static
void
f2lsvgst_pattern_42(
  f2l_job_t			*job,
  dk3_fig_drawing_t		*drw,
  f2l_svg_t			*psvg,
  f2l_svg_fill_pattern_t	*pat
)
{
  /*	Opening pattern tag.
  */
  f2lsvgst_write_opening_pattern_tag(job, drw, psvg, pat, 7.2, 4.16);
  /*	Pattern contents 1: background.
  */
  f2lsvgst_pattern_background(job, drw, psvg, pat, 7.2, 4.16);
  /*	Pattern contents 2: lines.
  */
  f2lsvgst_pattern_foreground_line(job, drw, psvg, pat, 19);
  f2lsvgst_pattern_foreground_line(job, drw, psvg, pat, 20);
  f2lsvgst_pattern_foreground_line(job, drw, psvg, pat, 21);
  /*	Close pattern tag.
  */
  fputs(f2lsvgst_c8_kw[6], job->of1);
  fputs(f2lsvgst_c8_kw[4], job->of1);
  f2lsvgst_tag(job, 3);
  fputs(f2lsvgst_c8_kw[5], job->of1);
  fputs(f2lsvgst_c8_kw[0], job->of1);
}



/**	Write pattern 43 definition to SVG output file.
	@param	job	Job structure.
	@param	drw	Drawing structure.
	@param	psvg	SVG style collection.
	@param	pat	Pattern to write.
*/
static
void
f2lsvgst_pattern_43(
  f2l_job_t			*job,
  dk3_fig_drawing_t		*drw,
  f2l_svg_t			*psvg,
  f2l_svg_fill_pattern_t	*pat
)
{
  /*	Opening pattern tag.
  */
  f2lsvgst_write_opening_pattern_tag(job, drw, psvg, pat, 7.2, 4.16);
  /*	Pattern contents 1: background.
  */
  f2lsvgst_pattern_background(job, drw, psvg, pat, 7.2, 4.16);
  /*	Pattern contents 2: lines.
  */
#if 1
  f2lsvgst_pattern_foreground_line_lcr(job, drw, psvg, pat, 23);
  f2lsvgst_pattern_foreground_line_lcr(job, drw, psvg, pat, 24);
#else
  f2lsvgst_pattern_foreground_line(job, drw, psvg, pat, 15);
  f2lsvgst_pattern_foreground_line(job, drw, psvg, pat, 16);
  f2lsvgst_pattern_foreground_line(job, drw, psvg, pat, 17);
  f2lsvgst_pattern_foreground_line(job, drw, psvg, pat, 19);
  f2lsvgst_pattern_foreground_line(job, drw, psvg, pat, 20);
  f2lsvgst_pattern_foreground_line(job, drw, psvg, pat, 21);
#endif
  /*	Close pattern tag.
  */
  fputs(f2lsvgst_c8_kw[6], job->of1);
  fputs(f2lsvgst_c8_kw[4], job->of1);
  f2lsvgst_tag(job, 3);
  fputs(f2lsvgst_c8_kw[5], job->of1);
  fputs(f2lsvgst_c8_kw[0], job->of1);
}



/**	Write pattern 44 definition to SVG output file.
	@param	job	Job structure.
	@param	drw	Drawing structure.
	@param	psvg	SVG style collection.
	@param	pat	Pattern to write.
*/
static
void
f2lsvgst_pattern_44(
  f2l_job_t			*job,
  dk3_fig_drawing_t		*drw,
  f2l_svg_t			*psvg,
  f2l_svg_fill_pattern_t	*pat
)
{
  /*	Opening pattern tag.
  */
  f2lsvgst_write_opening_pattern_tag(job, drw, psvg, pat, 5.09, 5.09);
  /*	Pattern contents 1: background.
  */
  f2lsvgst_pattern_background(job, drw, psvg, pat, 5.09, 5.09);
  /*	Pattern contents 2: lines.
  */
  f2lsvgst_pattern_foreground_line(job, drw, psvg, pat, 25);
  f2lsvgst_pattern_foreground_line(job, drw, psvg, pat, 26);
  f2lsvgst_pattern_foreground_line(job, drw, psvg, pat, 27);
  /*	Close pattern tag.
  */
  fputs(f2lsvgst_c8_kw[6], job->of1);
  fputs(f2lsvgst_c8_kw[4], job->of1);
  f2lsvgst_tag(job, 3);
  fputs(f2lsvgst_c8_kw[5], job->of1);
  fputs(f2lsvgst_c8_kw[0], job->of1);
}



/**	Write pattern 45 definition to SVG output file.
	@param	job	Job structure.
	@param	drw	Drawing structure.
	@param	psvg	SVG style collection.
	@param	pat	Pattern to write.
*/
static
void
f2lsvgst_pattern_45(
  f2l_job_t			*job,
  dk3_fig_drawing_t		*drw,
  f2l_svg_t			*psvg,
  f2l_svg_fill_pattern_t	*pat
)
{
  /*	Opening pattern tag.
  */
  f2lsvgst_write_opening_pattern_tag(job, drw, psvg, pat, 5.09, 5.09);
  /*	Pattern contents 1: background.
  */
  f2lsvgst_pattern_background(job, drw, psvg, pat, 5.09, 5.09);
  /*	Pattern contents 2: lines.
  */
  f2lsvgst_pattern_foreground_line(job, drw, psvg, pat, 28);
  f2lsvgst_pattern_foreground_line(job, drw, psvg, pat, 29);
  f2lsvgst_pattern_foreground_line(job, drw, psvg, pat, 30);
  /*	Close pattern tag.
  */
  fputs(f2lsvgst_c8_kw[6], job->of1);
  fputs(f2lsvgst_c8_kw[4], job->of1);
  f2lsvgst_tag(job, 3);
  fputs(f2lsvgst_c8_kw[5], job->of1);
  fputs(f2lsvgst_c8_kw[0], job->of1);
}



/**	Write pattern 46 definition to SVG output file.
	@param	job	Job structure.
	@param	drw	Drawing structure.
	@param	psvg	SVG style collection.
	@param	pat	Pattern to write.
*/
static
void
f2lsvgst_pattern_46(
  f2l_job_t			*job,
  dk3_fig_drawing_t		*drw,
  f2l_svg_t			*psvg,
  f2l_svg_fill_pattern_t	*pat
)
{
  /*	Opening pattern tag.
  */
  f2lsvgst_write_opening_pattern_tag(job, drw, psvg, pat, 5.09, 5.09);
  /*	Pattern contents 1: background.
  */
  f2lsvgst_pattern_background(job, drw, psvg, pat, 5.09, 5.09);
  /*	Pattern contents 2: lines.
  */
#if 1
  f2lsvgst_pattern_foreground_line_lcr(job, drw, psvg, pat, 31);
  f2lsvgst_pattern_foreground_line_lcr(job, drw, psvg, pat, 32);
#else
  f2lsvgst_pattern_foreground_line(job, drw, psvg, pat, 25);
  f2lsvgst_pattern_foreground_line(job, drw, psvg, pat, 26);
  f2lsvgst_pattern_foreground_line(job, drw, psvg, pat, 27);
  f2lsvgst_pattern_foreground_line(job, drw, psvg, pat, 28);
  f2lsvgst_pattern_foreground_line(job, drw, psvg, pat, 29);
  f2lsvgst_pattern_foreground_line(job, drw, psvg, pat, 30);
#endif
  /*	Close pattern tag.
  */
  fputs(f2lsvgst_c8_kw[6], job->of1);
  fputs(f2lsvgst_c8_kw[4], job->of1);
  f2lsvgst_tag(job, 3);
  fputs(f2lsvgst_c8_kw[5], job->of1);
  fputs(f2lsvgst_c8_kw[0], job->of1);
}



/**	Write pattern 47 definition to SVG output file.
	@param	job	Job structure.
	@param	drw	Drawing structure.
	@param	psvg	SVG style collection.
	@param	pat	Pattern to write.
*/
static
void
f2lsvgst_pattern_47(
  f2l_job_t			*job,
  dk3_fig_drawing_t		*drw,
  f2l_svg_t			*psvg,
  f2l_svg_fill_pattern_t	*pat
)
{
  /*	Opening pattern tag.
  */
  f2lsvgst_write_opening_pattern_tag(job, drw, psvg, pat, 28.8, 14.4);
  /*	Pattern contents 1: background.
  */
  f2lsvgst_pattern_background(job, drw, psvg, pat, 28.8, 14.4);
  /*	Pattern contents 2: lines.
  */
  f2lsvgst_pattern_foreground_line_lcr(job, drw, psvg, pat, 33);
  f2lsvgst_pattern_foreground_line_lcr(job, drw, psvg, pat, 34);
  f2lsvgst_pattern_foreground_line_lcr(job, drw, psvg, pat, 35);
  f2lsvgst_pattern_foreground_line_lcr(job, drw, psvg, pat, 36);
  f2lsvgst_pattern_foreground_line_lcr(job, drw, psvg, pat, 37);
  f2lsvgst_pattern_foreground_line_lcr(job, drw, psvg, pat, 38);
  f2lsvgst_pattern_foreground_line_lcr(job, drw, psvg, pat, 39);
  /*	Close pattern tag.
  */
  fputs(f2lsvgst_c8_kw[6], job->of1);
  fputs(f2lsvgst_c8_kw[4], job->of1);
  f2lsvgst_tag(job, 3);
  fputs(f2lsvgst_c8_kw[5], job->of1);
  fputs(f2lsvgst_c8_kw[0], job->of1);
}



/**	Write pattern 48 definition to SVG output file.
	@param	job	Job structure.
	@param	drw	Drawing structure.
	@param	psvg	SVG style collection.
	@param	pat	Pattern to write.
*/
static
void
f2lsvgst_pattern_48(
  f2l_job_t			*job,
  dk3_fig_drawing_t		*drw,
  f2l_svg_t			*psvg,
  f2l_svg_fill_pattern_t	*pat
)
{
  /*	Opening pattern tag.
  */
  f2lsvgst_write_opening_pattern_tag(job, drw, psvg, pat, 14.4, 28.8);
  /*	Pattern contents 1: background.
  */
  f2lsvgst_pattern_background(job, drw, psvg, pat, 14.4, 28.8);
  /*	Pattern contents 2: lines.
  */
  f2lsvgst_pattern_foreground_line_lcr(job, drw, psvg, pat, 40);
  f2lsvgst_pattern_foreground_line_lcr(job, drw, psvg, pat, 41);
  f2lsvgst_pattern_foreground_line_lcr(job, drw, psvg, pat, 42);
  f2lsvgst_pattern_foreground_line_lcr(job, drw, psvg, pat, 43);
  f2lsvgst_pattern_foreground_line_lcr(job, drw, psvg, pat, 44);
  f2lsvgst_pattern_foreground_line_lcr(job, drw, psvg, pat, 45);
  f2lsvgst_pattern_foreground_line_lcr(job, drw, psvg, pat, 46);
  /*	Close pattern tag.
  */
  fputs(f2lsvgst_c8_kw[6], job->of1);
  fputs(f2lsvgst_c8_kw[4], job->of1);
  f2lsvgst_tag(job, 3);
  fputs(f2lsvgst_c8_kw[5], job->of1);
  fputs(f2lsvgst_c8_kw[0], job->of1);
}



/**	Write pattern 49 definition to SVG output file.
	@param	job	Job structure.
	@param	drw	Drawing structure.
	@param	psvg	SVG style collection.
	@param	pat	Pattern to write.
*/
static
void
f2lsvgst_pattern_49(
  f2l_job_t			*job,
  dk3_fig_drawing_t		*drw,
  f2l_svg_t			*psvg,
  f2l_svg_fill_pattern_t	*pat
)
{
  /*	Opening pattern tag.
  */
  f2lsvgst_write_opening_pattern_tag(job, drw, psvg, pat, 3.6, 3.6);
  /*	Pattern contents 1: background.
  */
  f2lsvgst_pattern_background(job, drw, psvg, pat, 3.6, 3.6);
  /*	Pattern contents 2: lines.
  */
  f2lsvgst_pattern_foreground_line_lcr(job, drw, psvg, pat, 47);
  f2lsvgst_pattern_foreground_line_lcr(job, drw, psvg, pat, 48);
  /*	Close pattern tag.
  */
  fputs(f2lsvgst_c8_kw[6], job->of1);
  fputs(f2lsvgst_c8_kw[4], job->of1);
  f2lsvgst_tag(job, 3);
  fputs(f2lsvgst_c8_kw[5], job->of1);
  fputs(f2lsvgst_c8_kw[0], job->of1);
}



/**	Write pattern 50 definition to SVG output file.
	@param	job	Job structure.
	@param	drw	Drawing structure.
	@param	psvg	SVG style collection.
	@param	pat	Pattern to write.
*/
static
void
f2lsvgst_pattern_50(
  f2l_job_t			*job,
  dk3_fig_drawing_t		*drw,
  f2l_svg_t			*psvg,
  f2l_svg_fill_pattern_t	*pat
)
{
  /*	Opening pattern tag.
  */
  f2lsvgst_write_opening_pattern_tag(job, drw, psvg, pat, 3.6, 3.6);
  /*	Pattern contents 1: background.
  */
  f2lsvgst_pattern_background(job, drw, psvg, pat, 3.6, 3.6);
  /*	Pattern contents 2: lines.
  */
  f2lsvgst_pattern_foreground_line_lcr(job, drw, psvg, pat, 49);
  f2lsvgst_pattern_foreground_line_lcr(job, drw, psvg, pat, 50);
  /*	Close pattern tag.
  */
  fputs(f2lsvgst_c8_kw[6], job->of1);
  fputs(f2lsvgst_c8_kw[4], job->of1);
  f2lsvgst_tag(job, 3);
  fputs(f2lsvgst_c8_kw[5], job->of1);
  fputs(f2lsvgst_c8_kw[0], job->of1);
}



/**	Write pattern 51 definition to SVG output file.
	@param	job	Job structure.
	@param	drw	Drawing structure.
	@param	psvg	SVG style collection.
	@param	pat	Pattern to write.
*/
static
void
f2lsvgst_pattern_51(
  f2l_job_t			*job,
  dk3_fig_drawing_t		*drw,
  f2l_svg_t			*psvg,
  f2l_svg_fill_pattern_t	*pat
)
{
  /*	Opening pattern tag.
  */
  f2lsvgst_write_opening_pattern_tag(job, drw, psvg, pat, 3.6, 3.6);
  /*	Pattern contents 1: background.
  */
  f2lsvgst_pattern_background(job, drw, psvg, pat, 3.6, 3.6);
  /*	Pattern contents 2: lines.
  */
  f2lsvgst_pattern_foreground_polygon_lcr(job, drw, psvg, pat, 52);
  /*	Close pattern tag.
  */
  fputs(f2lsvgst_c8_kw[6], job->of1);
  fputs(f2lsvgst_c8_kw[4], job->of1);
  f2lsvgst_tag(job, 3);
  fputs(f2lsvgst_c8_kw[5], job->of1);
  fputs(f2lsvgst_c8_kw[0], job->of1);
}



/**	Write pattern 52 definition to SVG output file.
	@param	job	Job structure.
	@param	drw	Drawing structure.
	@param	psvg	SVG style collection.
	@param	pat	Pattern to write.
*/
static
void
f2lsvgst_pattern_52(
  f2l_job_t			*job,
  dk3_fig_drawing_t		*drw,
  f2l_svg_t			*psvg,
  f2l_svg_fill_pattern_t	*pat
)
{
  /*	Opening pattern tag.
  */
  f2lsvgst_write_opening_pattern_tag(job, drw, psvg, pat, 14.4, 28.8);
  /*	Pattern contents 1: background.
  */
  f2lsvgst_pattern_background(job, drw, psvg, pat, 14.4, 28.8);
  /*	Pattern contents 2: lines.
  */
  f2lsvgst_pattern_foreground_line_lcr(job, drw, psvg, pat, 53);
  f2lsvgst_pattern_foreground_line_lcr(job, drw, psvg, pat, 54);
  f2lsvgst_pattern_foreground_line_lcr(job, drw, psvg, pat, 55);
  f2lsvgst_pattern_foreground_line_lcr(job, drw, psvg, pat, 56);
  f2lsvgst_pattern_foreground_line_lcr(job, drw, psvg, pat, 57);
  f2lsvgst_pattern_foreground_line_lcr(job, drw, psvg, pat, 58);
  f2lsvgst_pattern_foreground_line_lcr(job, drw, psvg, pat, 59);
  f2lsvgst_pattern_foreground_line_lcr(job, drw, psvg, pat, 60);
  f2lsvgst_pattern_foreground_line_lcr(job, drw, psvg, pat, 61);
  /*	Close pattern tag.
  */
  fputs(f2lsvgst_c8_kw[6], job->of1);
  fputs(f2lsvgst_c8_kw[4], job->of1);
  f2lsvgst_tag(job, 3);
  fputs(f2lsvgst_c8_kw[5], job->of1);
  fputs(f2lsvgst_c8_kw[0], job->of1);
}



/**	Write pattern 53 definition to SVG output file.
	@param	job	Job structure.
	@param	drw	Drawing structure.
	@param	psvg	SVG style collection.
	@param	pat	Pattern to write.
*/
static
void
f2lsvgst_pattern_53(
  f2l_job_t			*job,
  dk3_fig_drawing_t		*drw,
  f2l_svg_t			*psvg,
  f2l_svg_fill_pattern_t	*pat
)
{
  /*	Opening pattern tag.
  */
  f2lsvgst_write_opening_pattern_tag(job, drw, psvg, pat, 14.4, 28.8);
  /*	Pattern contents 1: background.
  */
  f2lsvgst_pattern_background(job, drw, psvg, pat, 14.4, 28.8);
  /*	Pattern contents 2: lines.
  */
  f2lsvgst_pattern_foreground_line_lcr(job, drw, psvg, pat, 62);
  f2lsvgst_pattern_foreground_line_lcr(job, drw, psvg, pat, 63);
  f2lsvgst_pattern_foreground_line_lcr(job, drw, psvg, pat, 64);
  f2lsvgst_pattern_foreground_line_lcr(job, drw, psvg, pat, 65);
  f2lsvgst_pattern_foreground_line_lcr(job, drw, psvg, pat, 66);
  f2lsvgst_pattern_foreground_line_lcr(job, drw, psvg, pat, 67);
  f2lsvgst_pattern_foreground_line_lcr(job, drw, psvg, pat, 68);
  f2lsvgst_pattern_foreground_line_lcr(job, drw, psvg, pat, 69);
  f2lsvgst_pattern_foreground_line_lcr(job, drw, psvg, pat, 70);
  /*	Close pattern tag.
  */
  fputs(f2lsvgst_c8_kw[6], job->of1);
  fputs(f2lsvgst_c8_kw[4], job->of1);
  f2lsvgst_tag(job, 3);
  fputs(f2lsvgst_c8_kw[5], job->of1);
  fputs(f2lsvgst_c8_kw[0], job->of1);
}



/**	Write pattern 54 definition to SVG output file.
	@param	job	Job structure.
	@param	drw	Drawing structure.
	@param	psvg	SVG style collection.
	@param	pat	Pattern to write.
*/
static
void
f2lsvgst_pattern_54(
  f2l_job_t			*job,
  dk3_fig_drawing_t		*drw,
  f2l_svg_t			*psvg,
  f2l_svg_fill_pattern_t	*pat
)
{
  /*	Opening pattern tag.
  */
  f2lsvgst_write_opening_pattern_tag(job, drw, psvg, pat, 28.8, 14.4);
  /*	Pattern contents 1: background.
  */
  f2lsvgst_pattern_background(job, drw, psvg, pat, 28.8, 14.4);
  /*	Pattern contents 2: lines.
  */
  f2lsvgst_pattern_foreground_line_lcr(job, drw, psvg, pat, 71);
  f2lsvgst_pattern_foreground_line_lcr(job, drw, psvg, pat, 72);
  f2lsvgst_pattern_foreground_line_lcr(job, drw, psvg, pat, 73);
  f2lsvgst_pattern_foreground_line_lcr(job, drw, psvg, pat, 74);
  f2lsvgst_pattern_foreground_line_lcr(job, drw, psvg, pat, 75);
  f2lsvgst_pattern_foreground_line_lcr(job, drw, psvg, pat, 76);
  f2lsvgst_pattern_foreground_line_lcr(job, drw, psvg, pat, 77);
  f2lsvgst_pattern_foreground_line_lcr(job, drw, psvg, pat, 78);
  f2lsvgst_pattern_foreground_line_lcr(job, drw, psvg, pat, 79);
  /*	Close pattern tag.
  */
  fputs(f2lsvgst_c8_kw[6], job->of1);
  fputs(f2lsvgst_c8_kw[4], job->of1);
  f2lsvgst_tag(job, 3);
  fputs(f2lsvgst_c8_kw[5], job->of1);
  fputs(f2lsvgst_c8_kw[0], job->of1);
}



/**	Write pattern 55 definition to SVG output file.
	@param	job	Job structure.
	@param	drw	Drawing structure.
	@param	psvg	SVG style collection.
	@param	pat	Pattern to write.
*/
static
void
f2lsvgst_pattern_55(
  f2l_job_t			*job,
  dk3_fig_drawing_t		*drw,
  f2l_svg_t			*psvg,
  f2l_svg_fill_pattern_t	*pat
)
{
  /*	Opening pattern tag.
  */
  f2lsvgst_write_opening_pattern_tag(job, drw, psvg, pat, 28.8, 14.4);
  /*	Pattern contents 1: background.
  */
  f2lsvgst_pattern_background(job, drw, psvg, pat, 28.8, 14.4);
  /*	Pattern contents 2: lines.
  */
  f2lsvgst_pattern_foreground_line_lcr(job, drw, psvg, pat, 80);
  f2lsvgst_pattern_foreground_line_lcr(job, drw, psvg, pat, 81);
  f2lsvgst_pattern_foreground_line_lcr(job, drw, psvg, pat, 82);
  f2lsvgst_pattern_foreground_line_lcr(job, drw, psvg, pat, 83);
  f2lsvgst_pattern_foreground_line_lcr(job, drw, psvg, pat, 84);
  f2lsvgst_pattern_foreground_line_lcr(job, drw, psvg, pat, 85);
  f2lsvgst_pattern_foreground_line_lcr(job, drw, psvg, pat, 86);
  f2lsvgst_pattern_foreground_line_lcr(job, drw, psvg, pat, 87);
  f2lsvgst_pattern_foreground_line_lcr(job, drw, psvg, pat, 88);
  /*	Close pattern tag.
  */
  fputs(f2lsvgst_c8_kw[6], job->of1);
  fputs(f2lsvgst_c8_kw[4], job->of1);
  f2lsvgst_tag(job, 3);
  fputs(f2lsvgst_c8_kw[5], job->of1);
  fputs(f2lsvgst_c8_kw[0], job->of1);
}



/**	Write pattern 56 definition to SVG output file.
	@param	job	Job structure.
	@param	drw	Drawing structure.
	@param	psvg	SVG style collection.
	@param	pat	Pattern to write.
*/
static
void
f2lsvgst_pattern_56(
  f2l_job_t			*job,
  dk3_fig_drawing_t		*drw,
  f2l_svg_t			*psvg,
  f2l_svg_fill_pattern_t	*pat
)
{
  /*	Opening pattern tag.
  */
  f2lsvgst_write_opening_pattern_tag(job, drw, psvg, pat, 14.54, 7.4);
  /*	Pattern contents 1: background.
  */
  f2lsvgst_pattern_background(job, drw, psvg, pat, 14.54, 7.4);
  /*	Pattern contents 2: lines.
  */
  f2lsvgst_pattern_foreground_path_lcr(job, drw, psvg, pat, 90);
  f2lsvgst_pattern_foreground_path_lcr(job, drw, psvg, pat, 91);
  f2lsvgst_pattern_foreground_path_lcr(job, drw, psvg, pat, 92);
  f2lsvgst_pattern_foreground_path_lcr(job, drw, psvg, pat, 93);
  f2lsvgst_pattern_foreground_path_lcr(job, drw, psvg, pat, 94);
  /*	Close pattern tag.
  */
  fputs(f2lsvgst_c8_kw[6], job->of1);
  fputs(f2lsvgst_c8_kw[4], job->of1);
  f2lsvgst_tag(job, 3);
  fputs(f2lsvgst_c8_kw[5], job->of1);
  fputs(f2lsvgst_c8_kw[0], job->of1);
}



/**	Write pattern 57 definition to SVG output file.
	@param	job	Job structure.
	@param	drw	Drawing structure.
	@param	psvg	SVG style collection.
	@param	pat	Pattern to write.
*/
static
void
f2lsvgst_pattern_57(
  f2l_job_t			*job,
  dk3_fig_drawing_t		*drw,
  f2l_svg_t			*psvg,
  f2l_svg_fill_pattern_t	*pat
)
{
  /*	Opening pattern tag.
  */
  f2lsvgst_write_opening_pattern_tag(job, drw, psvg, pat, 7.2, 7.2);
  /*	Pattern contents 1: background.
  */
  f2lsvgst_pattern_background(job, drw, psvg, pat, 7.2, 7.2);
  /*	Pattern contents 2: lines.
  */
  f2lsvgst_pattern_foreground_path_lcr(job, drw, psvg, pat, 95);
  f2lsvgst_pattern_foreground_path_lcr(job, drw, psvg, pat, 96);
  f2lsvgst_pattern_foreground_path_lcr(job, drw, psvg, pat, 97);
  f2lsvgst_pattern_foreground_path_lcr(job, drw, psvg, pat, 98);
  f2lsvgst_pattern_foreground_path_lcr(job, drw, psvg, pat, 99);
  /*	Close pattern tag.
  */
  fputs(f2lsvgst_c8_kw[6], job->of1);
  fputs(f2lsvgst_c8_kw[4], job->of1);
  f2lsvgst_tag(job, 3);
  fputs(f2lsvgst_c8_kw[5], job->of1);
  fputs(f2lsvgst_c8_kw[0], job->of1);
}



/**	Write pattern 58 definition to SVG output file.
	@param	job	Job structure.
	@param	drw	Drawing structure.
	@param	psvg	SVG style collection.
	@param	pat	Pattern to write.
*/
static
void
f2lsvgst_pattern_58(
  f2l_job_t			*job,
  dk3_fig_drawing_t		*drw,
  f2l_svg_t			*psvg,
  f2l_svg_fill_pattern_t	*pat
)
{
  /*	Opening pattern tag.
  */
  f2lsvgst_write_opening_pattern_tag(job, drw, psvg, pat, 14.4, 14.4);
  /*	Pattern contents 1: background.
  */
  f2lsvgst_pattern_background(job, drw, psvg, pat, 14.4, 14.4);
  /*	Pattern contents 2: lines.
  */
  f2lsvgst_pattern_foreground_circle_lcr(job, drw, psvg, pat);
  /*	Close pattern tag.
  */
  fputs(f2lsvgst_c8_kw[6], job->of1);
  fputs(f2lsvgst_c8_kw[4], job->of1);
  f2lsvgst_tag(job, 3);
  fputs(f2lsvgst_c8_kw[5], job->of1);
  fputs(f2lsvgst_c8_kw[0], job->of1);
}



/**	Write pattern 59 definition to SVG output file.
	@param	job	Job structure.
	@param	drw	Drawing structure.
	@param	psvg	SVG style collection.
	@param	pat	Pattern to write.
*/
static
void
f2lsvgst_pattern_59(
  f2l_job_t			*job,
  dk3_fig_drawing_t		*drw,
  f2l_svg_t			*psvg,
  f2l_svg_fill_pattern_t	*pat
)
{
  /*	Opening pattern tag.
  */
  f2lsvgst_write_opening_pattern_tag(job, drw, psvg, pat, 21.6, 12.47);
  /*	Pattern contents 1: background.
  */
  f2lsvgst_pattern_background(job, drw, psvg, pat, 21.6, 12.47);
  /*	Pattern contents 2: lines.
  */
  f2lsvgst_pattern_foreground_polygon_lcr(job, drw, psvg, pat, 103);
  f2lsvgst_pattern_foreground_line_lcr(job, drw, psvg, pat, 104);
  f2lsvgst_pattern_foreground_line_lcr(job, drw, psvg, pat, 105);
  f2lsvgst_pattern_foreground_line_lcr(job, drw, psvg, pat, 106);
  /*	Close pattern tag.
  */
  fputs(f2lsvgst_c8_kw[6], job->of1);
  fputs(f2lsvgst_c8_kw[4], job->of1);
  f2lsvgst_tag(job, 3);
  fputs(f2lsvgst_c8_kw[5], job->of1);
  fputs(f2lsvgst_c8_kw[0], job->of1);
}



/**	Write pattern 60 definition to SVG output file.
	@param	job	Job structure.
	@param	drw	Drawing structure.
	@param	psvg	SVG style collection.
	@param	pat	Pattern to write.
*/
static
void
f2lsvgst_pattern_60(
  f2l_job_t			*job,
  dk3_fig_drawing_t		*drw,
  f2l_svg_t			*psvg,
  f2l_svg_fill_pattern_t	*pat
)
{
  /*	Opening pattern tag.
  */
  f2lsvgst_write_opening_pattern_tag(job, drw, psvg, pat, 14.4, 14.4);
  /*	Pattern contents 1: background.
  */
  f2lsvgst_pattern_background(job, drw, psvg, pat, 14.4, 14.4);
  /*	Pattern contents 2: lines.
  */
  f2lsvgst_pattern_foreground_polygon_lcr_l2(job, drw, psvg, pat, 107, 108);
  /*	Close pattern tag.
  */
  fputs(f2lsvgst_c8_kw[6], job->of1);
  fputs(f2lsvgst_c8_kw[4], job->of1);
  f2lsvgst_tag(job, 3);
  fputs(f2lsvgst_c8_kw[5], job->of1);
  fputs(f2lsvgst_c8_kw[0], job->of1);
}



/**	Write pattern 61 definition to SVG output file.
	@param	job	Job structure.
	@param	drw	Drawing structure.
	@param	psvg	SVG style collection.
	@param	pat	Pattern to write.
*/
static
void
f2lsvgst_pattern_61(
  f2l_job_t			*job,
  dk3_fig_drawing_t		*drw,
  f2l_svg_t			*psvg,
  f2l_svg_fill_pattern_t	*pat
)
{
  /*	Opening pattern tag.
  */
  f2lsvgst_write_opening_pattern_tag(job, drw, psvg, pat, 7.2, 7.2);
  /*	Pattern contents 1: background.
  */
  f2lsvgst_pattern_background(job, drw, psvg, pat, 7.2, 7.2);
  /*	Pattern contents 2: lines.
  */
  f2lsvgst_pattern_foreground_line_lcr(job, drw, psvg, pat, 109);
  /*	Close pattern tag.
  */
  fputs(f2lsvgst_c8_kw[6], job->of1);
  fputs(f2lsvgst_c8_kw[4], job->of1);
  f2lsvgst_tag(job, 3);
  fputs(f2lsvgst_c8_kw[5], job->of1);
  fputs(f2lsvgst_c8_kw[0], job->of1);
}



/**	Write pattern 62 definition to SVG output file.
	@param	job	Job structure.
	@param	drw	Drawing structure.
	@param	psvg	SVG style collection.
	@param	pat	Pattern to write.
*/
static
void
f2lsvgst_pattern_62(
  f2l_job_t			*job,
  dk3_fig_drawing_t		*drw,
  f2l_svg_t			*psvg,
  f2l_svg_fill_pattern_t	*pat
)
{
  /*	Opening pattern tag.
  */
  f2lsvgst_write_opening_pattern_tag(job, drw, psvg, pat, 7.2, 7.2);
  /*	Pattern contents 1: background.
  */
  f2lsvgst_pattern_background(job, drw, psvg, pat, 7.2, 7.2);
  /*	Pattern contents 2: lines.
  */
  f2lsvgst_pattern_foreground_line_lcr(job, drw, psvg, pat, 110);
  /*	Close pattern tag.
  */
  fputs(f2lsvgst_c8_kw[6], job->of1);
  fputs(f2lsvgst_c8_kw[4], job->of1);
  f2lsvgst_tag(job, 3);
  fputs(f2lsvgst_c8_kw[5], job->of1);
  fputs(f2lsvgst_c8_kw[0], job->of1);
}



/**	Write one pattern definition to SVG output file.
	@param	job	Job structure.
	@param	drw	Drawing structure.
	@param	psvg	SVG style collection.
	@param	pat	Pattern to write.
*/
static
void
f2lsvgst_write_one_pattern(
  f2l_job_t			*job,
  dk3_fig_drawing_t		*drw,
  f2l_svg_t			*psvg,
  f2l_svg_fill_pattern_t	*pat
)
{
  switch(pat->fn) {
    case 41: {
      f2lsvgst_pattern_41(job, drw, psvg, pat);
    } break;
    case 42: {
      f2lsvgst_pattern_42(job, drw, psvg, pat);
    } break;
    case 43: {
      f2lsvgst_pattern_43(job, drw, psvg, pat);
    } break;
    case 44: {
      f2lsvgst_pattern_44(job, drw, psvg, pat);
    } break;
    case 45: {
      f2lsvgst_pattern_45(job, drw, psvg, pat);
    } break;
    case 46: {
      f2lsvgst_pattern_46(job, drw, psvg, pat);
    } break;
    case 47: {
      f2lsvgst_pattern_47(job, drw, psvg, pat);
    } break;
    case 48: {
      f2lsvgst_pattern_48(job, drw, psvg, pat);
    } break;
    case 49: {
      f2lsvgst_pattern_49(job, drw, psvg, pat);
    } break;
    case 50: {
      f2lsvgst_pattern_50(job, drw, psvg, pat);
    } break;
    case 51: {
      f2lsvgst_pattern_51(job, drw, psvg, pat);
    } break;
    case 52: {
      f2lsvgst_pattern_52(job, drw, psvg, pat);
    } break;
    case 53: {
      f2lsvgst_pattern_53(job, drw, psvg, pat);
    } break;
    case 54: {
      f2lsvgst_pattern_54(job, drw, psvg, pat);
    } break;
    case 55: {
      f2lsvgst_pattern_55(job, drw, psvg, pat);
    } break;
    case 56: {
      f2lsvgst_pattern_56(job, drw, psvg, pat);
    } break;
    case 57: {
      f2lsvgst_pattern_57(job, drw, psvg, pat);
    } break;
    case 58: {
      f2lsvgst_pattern_58(job, drw, psvg, pat);
    } break;
    case 59: {
      f2lsvgst_pattern_59(job, drw, psvg, pat);
    } break;
    case 60: {
      f2lsvgst_pattern_60(job, drw, psvg, pat);
    } break;
    case 61: {
      f2lsvgst_pattern_61(job, drw, psvg, pat);
    } break;
    case 62: {
      f2lsvgst_pattern_62(job, drw, psvg, pat);
    } break;
  }
}



void
f2lsvgst_write_patterns(
  f2l_job_t		*job,
  dk3_fig_drawing_t	*drw,
  f2l_svg_t		*psvg
)
{
  f2l_svg_fill_pattern_t	*pat;
  if((psvg->sPatterns) && (psvg->iPatterns)) {
    dk3sto_it_reset(psvg->iPatterns);
    do {
      pat = (f2l_svg_fill_pattern_t *)dk3sto_it_next(psvg->iPatterns);
      if(pat) {
        f2lsvgst_write_one_pattern(job, drw, psvg, pat);
      }
    } while(pat);
  }
}



/**	Write one style to SVG output file.
	@param	job	Job structure.
	@param	drw	Drawing structure.
	@param	psvg	SVG style collection.
	@param	pst	Style definition to write.
*/
static
void
f2lsvgst_write_one_style(
  f2l_job_t		*job,
  dk3_fig_drawing_t	*drw,
  f2l_svg_t		*psvg,
  f2l_svg_style_t	*pst
)
{
  char const * const	*rffn;	/* Replacement font family name. */
  double		 ts;	/* Text size. */
  double		 gw;	/* Gap width in line styles. */
  int			 ff;	/* Font family */

  if(pst->tf < 0)  { pst->tf = 0; }
  if(pst->tf > 34) { pst->tf = 34; }
  fputs(f2lsvgst_c8_kw[112], job->of1);
  f2lsvgst_write_style_id(job, drw, psvg, pst);
  fputs(f2lsvgst_c8_kw[113], job->of1);
  if((pst->flags) & DK3_SVG_FLAGS_FONT) {
    if((pst->flags) & DK3_SVG_FLAGS_PS_FONT) {
      /*	Font family
      */
      fputs(f2lsvgst_c8_kw[115], job->of1);
      fputs(dk3font_get_svg_family(pst->tf), job->of1);
      if(job->otherfonts) {
        /*	PS family name.
        */
        fputs(f2lsvgst_c8_kw[187], job->of1);
        fputs(dk3font_get_ps_family(pst->tf), job->of1);
        /*	Replacement family names.
        */
	rffn = dk3font_get_replacement_families(pst->tf);
	while(*rffn) {
	  fputs(f2lsvgst_c8_kw[187], job->of1);
	  fputs(*rffn, job->of1);
	  rffn++;
	}
      }
      ff = dk3font_get_svg_features(pst->tf);
      switch(ff & DK3_FONT_FAMILY) {
        case DK3_FONT_TYPEWRITER: {
	  fputs(f2lsvgst_c8_kw[118], job->of1);
	} break;
	case DK3_FONT_SANS_SERIF: {
	  fputs(f2lsvgst_c8_kw[117], job->of1);
	} break;
	default: {
	  fputs(f2lsvgst_c8_kw[116], job->of1);
	} break;
      }
      /*	Font style
      */
      if(ff & DK3_FONT_OBLIQUE) {
        fputs(f2lsvgst_c8_kw[121], job->of1);
      } else {
        if(ff & DK3_FONT_ITALIC) {
	  fputs(f2lsvgst_c8_kw[120], job->of1);
	} else {
#if 0
	  /*	2013-01-27: This is the default.
	  */
	  fputs(f2lsvgst_c8_kw[119], job->of1);
#endif
	}
      }
      /*	Font weight
      */
      ff = dk3font_get_svg_font_weight(pst->tf);
      fprintf(job->of1, f2lsvgst_c8_kw[122], ff);
    } else {
      /*	Font family, style, weight
      */
      switch(pst->tf) {
        case 5: {	/* Typewriter */
          fputs(f2lsvgst_c8_kw[125], job->of1);
#if 0
	  /*	2013-01-27: This is the default.
	  */
	  fputs(f2lsvgst_c8_kw[126], job->of1);
	  fputs(f2lsvgst_c8_kw[128], job->of1);
#endif
	} break;
	case 4: {	/* Sans-serif */
          fputs(f2lsvgst_c8_kw[124], job->of1);
#if 0
	  /*	2013-01-27: This is the default.
	  */
	  fputs(f2lsvgst_c8_kw[126], job->of1);
	  fputs(f2lsvgst_c8_kw[128], job->of1);
#endif
	} break;
	case 3: {	/* Italic serif */
          fputs(f2lsvgst_c8_kw[123], job->of1);
	  fputs(f2lsvgst_c8_kw[127], job->of1);
#if 0
	  /*	2013-01-27: This is the default.
	  */
	  fputs(f2lsvgst_c8_kw[128], job->of1);
#endif
	} break;
	case 2: {	/* Bold serif */
          fputs(f2lsvgst_c8_kw[123], job->of1);
#if 0
	  /*	2013-01-27: This is the default.
	  */
	  fputs(f2lsvgst_c8_kw[126], job->of1);
#endif
	  fputs(f2lsvgst_c8_kw[129], job->of1);
	} break;
	default: {	/* Default font (serif) */
          fputs(f2lsvgst_c8_kw[123], job->of1);
#if 0
	  /*	2013-01-27: This is the default.
	  */
	  fputs(f2lsvgst_c8_kw[126], job->of1);
	  fputs(f2lsvgst_c8_kw[128], job->of1);
#endif
	} break;
      }
    }
    /*	Font size
    */
    ts = pst->ts;
    if(0.0 < job->nts) {
      ts = ts * job->nts;
    }
    fprintf(job->of1, f2lsvgst_c8_kw[130], ts);
  }
  /*	Text align
  */
  if((pst->flags) & DK3_SVG_FLAGS_TEXT_ALIGN) {
    switch(pst->al) {
      case 2: {
        fputs(f2lsvgst_c8_kw[133], job->of1);
      } break;
      case 1: {
        fputs(f2lsvgst_c8_kw[132], job->of1);
      } break;
      default: {
#if 0
	/*	2013-01-27: This is the default.
	*/
        fputs(f2lsvgst_c8_kw[131], job->of1);
#endif
      } break;
    }
  }
  /*	Fill pattern or color		fill
  */
  if(pst->fp) {
    fputs(f2lsvgst_c8_kw[134], job->of1);
    f2lsvgst_write_pattern_id(job, drw, psvg, pst->fp);
    fputs(f2lsvgst_c8_kw[135], job->of1);
  } else {
    if((pst->flags) & DK3_SVG_FLAGS_COLOR_FILL) {
      if((pst->flags) & DK3_SVG_FLAGS_FONT) {
        fprintf(job->of1, f2lsvgst_c8_kw[183], pst->fr, pst->fg, pst->fb);
      } else {
        fprintf(job->of1, f2lsvgst_c8_kw[136], pst->fr, pst->fg, pst->fb);
      }
    } else {				/* No fill */
      fputs(f2lsvgst_c8_kw[137], job->of1);
    }
  }
  /*	Stroke color			stroke
  */
  if((pst->flags) & DK3_SVG_FLAGS_COLOR_STROKE) {
    fprintf(job->of1, f2lsvgst_c8_kw[138], pst->sr, pst->sg, pst->sb);
  }
  /*	Stroke linewidth		stroke-width
  */
  if((pst->flags) & DK3_SVG_FLAGS_LINEWIDTH) {
    fprintf(job->of1, f2lsvgst_c8_kw[139], pst->lw);
  }
  /*	Stroke linestyle		stroke-dasharray
  */
  if((pst->flags) & DK3_SVG_FLAGS_LINESTYLE) {
    if((pst->flags) & DK3_SVG_FLAGS_LINEWIDTH) {
      if(0 != pst->ls) {
  	gw = f2lto_find_gap_length(job, pst->lw, pst->lsv);
        fputs(f2lsvgst_c8_kw[146], job->of1);
        switch(pst->ls) {
          case DK3_FIG_LS_DASH_TRIPLE_DOTTED: {
	    fprintf(
	      job->of1,
	      f2lsvgst_c8_kw[152],
	      pst->lsv, gw, pst->lw, gw, pst->lw, gw,
	      pst->lw, gw
	    );
	  } break;
	  case DK3_FIG_LS_DASH_DOUBLE_DOTTED: {
	    fprintf(
	      job->of1,
	      f2lsvgst_c8_kw[151],
	      pst->lsv, gw, pst->lw, gw, pst->lw, gw
	    );
	  } break;
	  case DK3_FIG_LS_DASH_DOTTED: {
	    fprintf(
	      job->of1,
	      f2lsvgst_c8_kw[150],
	      pst->lsv, gw, pst->lw, gw
	    );
	  } break;
	  case DK3_FIG_LS_DOTTED: {
	    fprintf(
	      job->of1,
	      f2lsvgst_c8_kw[149],
	      pst->lw, gw
	    );
	  } break;
	  case DK3_FIG_LS_DASHED: {
	    fprintf(
	      job->of1,
	      f2lsvgst_c8_kw[149],
	      pst->lsv, gw
	    );
	  } break;
	  default: {
            fputs(f2lsvgst_c8_kw[148], job->of1);
	  } break;
        }
        fputs(f2lsvgst_c8_kw[147], job->of1);
      }
    }
  }
  /*	Linecap				stroke-linecap
  */
  if((pst->flags) & DK3_SVG_FLAGS_LINE_CAP) {
    if(DK3_FIG_LC_BUTT != pst->lc) {
      switch(pst->lc) {
        case DK3_FIG_LC_PROJECTING: {
          fputs(f2lsvgst_c8_kw[140], job->of1);
	} break;
	case DK3_FIG_LC_ROUND: {
          fputs(f2lsvgst_c8_kw[141], job->of1);
	} break;
	default: {
#if 0
	  /*	2013-01-27: This is the default.
	  */
          fputs(f2lsvgst_c8_kw[142], job->of1);
#endif
	} break;
      }
    }
  }
  /*	Linejoin			stroke-linejoin
  */
  if((pst->flags) & DK3_SVG_FLAGS_LINE_JOIN) {
    switch(pst->lj) {
        case DK3_FIG_LJ_BEVEL: {
          fputs(f2lsvgst_c8_kw[143], job->of1);
	} break;
	case DK3_FIG_LJ_ROUND: {
          fputs(f2lsvgst_c8_kw[144], job->of1);
	} break;
	default: {
#if 0
	  /*	2013-01-27: This is the default.
	  */
          fputs(f2lsvgst_c8_kw[145], job->of1);
#endif
	  if(job->miterlim) {
	    fputs(f2lsvgst_c8_kw[185], job->of1);
	  }
	} break;
    }
  }
  /*	End
  */
  fputs(f2lsvgst_c8_kw[114], job->of1);
}



/**	Write attributes for one style to SVG output file.
	@param	job	Job structure.
	@param	drw	Drawing structure.
	@param	psvg	SVG style collection.
	@param	pst	Style definition to write.
*/
static
void
f2lsvgst_write_attributes_for_one_style(
  f2l_job_t		*job,
  dk3_fig_drawing_t	*drw,
  f2l_svg_t		*psvg,
  f2l_svg_style_t	*pst
)
{
  char const * const	*rffn;	/* Replacement font family names. */
  int			 ff;	/* Font family and flags. */
  double		 ts;	/* Font size. */
  double		 gw;	/* Gap width in line styles. */

  if((pst->flags) & DK3_SVG_FLAGS_FONT) {
    ff = dk3font_get_svg_features(pst->tf);
    ts = pst->ts;
    if(0.0 < job->nts) {
      ts = ts * job->nts;
    }
    /*	Font family, font style, font weight, text size.
    */
    if((pst->flags) & DK3_SVG_FLAGS_PS_FONT) {
      fputs(f2lsvgst_c8_kw[153], job->of1);
      fputs(dk3font_get_svg_family(pst->tf), job->of1);
      if(job->otherfonts) {
        /*	PS family name.
	*/
	fputs(f2lsvgst_c8_kw[188], job->of1);
	fputs(dk3font_get_ps_family(pst->tf), job->of1);
	/*	Replacement family names.
	*/
	rffn = dk3font_get_replacement_families(pst->tf);
	while(*rffn) {
	  fputs(f2lsvgst_c8_kw[188], job->of1);
	  fputs(*rffn, job->of1);
	  rffn++;
	}
      }
      switch(ff & DK3_FONT_FAMILY) {
        case DK3_FONT_TYPEWRITER: {
	  fputs(f2lsvgst_c8_kw[156], job->of1);
	} break;
	case DK3_FONT_SANS_SERIF: {
	  fputs(f2lsvgst_c8_kw[155], job->of1);
	} break;
	default: {
	  fputs(f2lsvgst_c8_kw[154], job->of1);
	} break;
      }
      if(ff & DK3_FONT_OBLIQUE) {
        fputs(f2lsvgst_c8_kw[157], job->of1);
      } else {
        if(ff & DK3_FONT_ITALIC) {
	  fputs(f2lsvgst_c8_kw[158], job->of1);
	}
      }
      fprintf(
        job->of1, f2lsvgst_c8_kw[159], dk3font_get_svg_font_weight(pst->tf)
      );
    } else {
      switch(pst->tf) {
        case 5: {	/* typewriter */
          fputs(f2lsvgst_c8_kw[163], job->of1);
	} break;
	case 4: {	/* sans-serif */
          fputs(f2lsvgst_c8_kw[162], job->of1);
	} break;
	case 3: {	/* serif italic */
          fputs(f2lsvgst_c8_kw[161], job->of1);
          fputs(f2lsvgst_c8_kw[158], job->of1);
	} break;
	case 2: {	/* serif bold */
          fputs(f2lsvgst_c8_kw[161], job->of1);
          fputs(f2lsvgst_c8_kw[164], job->of1);
	} break;
	default: {	/* serif */
          fputs(f2lsvgst_c8_kw[161], job->of1);
	} break;
      }
    }
    fprintf(job->of1, f2lsvgst_c8_kw[160], ts);
    /*	Text align.
    */
    if((pst->flags) & DK3_SVG_FLAGS_TEXT_ALIGN) {
      switch(pst->al) {
        case 2: {
          fputs(f2lsvgst_c8_kw[166], job->of1);
	} break;
	case 1: {
          fputs(f2lsvgst_c8_kw[165], job->of1);
	} break;
      }
    }
  }
  /*	Fill pattern or color.
  */
  if(pst->fp) {
    fputs(f2lsvgst_c8_kw[167], job->of1);
    f2lsvgst_write_pattern_id(job, drw, psvg, pst->fp);
    fputs(f2lsvgst_c8_kw[168], job->of1);
  } else {
    if((pst->flags) & DK3_SVG_FLAGS_COLOR_FILL) {
      if((pst->flags) & DK3_SVG_FLAGS_FONT) {
        fprintf(job->of1, f2lsvgst_c8_kw[169], pst->fr, pst->fg, pst->fb);
      } else {
	fprintf(job->of1, f2lsvgst_c8_kw[184], pst->fr, pst->fg, pst->fb);
      }
    } else {
      fputs(f2lsvgst_c8_kw[170], job->of1);
    }
  }
  /*	Stroke color
  */
  if((pst->flags) & DK3_SVG_FLAGS_COLOR_STROKE) {
    fprintf(job->of1, f2lsvgst_c8_kw[171], pst->sr, pst->sg, pst->sb);
  }
  /*	Stroke linewidth.
  */
  if((pst->flags) & DK3_SVG_FLAGS_LINEWIDTH) {
    fprintf(job->of1, f2lsvgst_c8_kw[172], pst->lw);
  }
  /*	Stroke linestyle.
  */
  if((pst->flags) & DK3_SVG_FLAGS_LINESTYLE) {
    if((pst->flags) & DK3_SVG_FLAGS_LINEWIDTH) {
      gw = f2lto_find_gap_length(job, pst->lw, pst->lsv);
      switch(pst->ls) {
        case DK3_FIG_LS_DASH_TRIPLE_DOTTED: {
          fprintf(
            job->of1, f2lsvgst_c8_kw[176],
            pst->lsv, gw, pst->lw, gw, pst->lw, gw,
            pst->lw, gw
          );
        } break;
        case DK3_FIG_LS_DASH_DOUBLE_DOTTED: {
          fprintf(
            job->of1, f2lsvgst_c8_kw[175],
            pst->lsv, gw, pst->lw, gw, pst->lw, gw
          );
        } break;
        case DK3_FIG_LS_DASH_DOTTED: {
          fprintf(
            job->of1, f2lsvgst_c8_kw[174],
            pst->lsv, gw, pst->lw, gw
          );
        } break;
        case DK3_FIG_LS_DOTTED: {
          fprintf(
            job->of1, f2lsvgst_c8_kw[173],
            pst->lw, gw
          );
        } break;
        case DK3_FIG_LS_DASHED: {
          fprintf(
            job->of1, f2lsvgst_c8_kw[173],
            pst->lsv, gw
          );
        } break;
      }
    }
  }
  /*	Linecap.
  */
  if((pst->flags) & DK3_SVG_FLAGS_LINE_CAP) {
    switch(pst->lc) {
      case DK3_FIG_LC_PROJECTING: {
        fputs(f2lsvgst_c8_kw[178], job->of1);
      } break;
      case DK3_FIG_LC_ROUND: {
        fputs(f2lsvgst_c8_kw[177], job->of1);
      } break;
    }
  }
  /*	Linejoin.
  */
  if((pst->flags) & DK3_SVG_FLAGS_LINE_JOIN) {
    switch(pst->lj) {
      case DK3_FIG_LJ_BEVEL: {
        fputs(f2lsvgst_c8_kw[180], job->of1);
      } break;
      case DK3_FIG_LJ_ROUND: {
        fputs(f2lsvgst_c8_kw[179], job->of1);
      } break;
      default: {
        if(job->miterlim) {
          fputs(f2lsvgst_c8_kw[186], job->of1);
	}
      } break;
    }
  }
}



void
f2lsvgst_write_style_for_object(
  f2l_job_t		*job,
  dk3_fig_drawing_t	*drw,
  f2l_svg_t		*psvg,
  dk3_fig_obj_t		*pobj
)
{
  f2l_svg_style_t	*pst;
  

#line 3430 "f2lsvgst.ctr"
  if((job) && (drw) && (psvg) && (pobj)) {
    pst = (f2l_svg_style_t *)(pobj->dsd);
    if(pst) {				

#line 3433 "f2lsvgst.ctr"
      if(job->css) {			

#line 3434 "f2lsvgst.ctr"
        fputs(f2lsvgst_c8_kw[181], job->of1);
	f2lsvgst_write_style_id(job, drw, psvg, pst);
        fputs(f2lsvgst_c8_kw[182], job->of1);
      } else {				

#line 3438 "f2lsvgst.ctr"
        f2lsvgst_write_attributes_for_one_style(job, drw, psvg, pst);
      }
    } else {				

#line 3441 "f2lsvgst.ctr"
    }
  } else {				

#line 3443 "f2lsvgst.ctr"
  } 

#line 3444 "f2lsvgst.ctr"
}



void
f2lsvgst_write_styles(
  f2l_job_t		*job,
  dk3_fig_drawing_t	*drw,
  f2l_svg_t		*psvg
)
{
  f2l_svg_style_t *pst;
  if((psvg->sStyles) && (psvg->iStyles)) {
    dk3sto_it_reset(psvg->iStyles);
    do {
      pst = (f2l_svg_style_t *)dk3sto_it_next(psvg->iStyles);
      if(pst) {
        f2lsvgst_write_one_style(job, drw, psvg, pst);
      }
    } while(pst);
  }
}



