summaryrefslogtreecommitdiff
path: root/support/dktools/f2lpgf.ctr
diff options
context:
space:
mode:
Diffstat (limited to 'support/dktools/f2lpgf.ctr')
-rw-r--r--support/dktools/f2lpgf.ctr2283
1 files changed, 0 insertions, 2283 deletions
diff --git a/support/dktools/f2lpgf.ctr b/support/dktools/f2lpgf.ctr
deleted file mode 100644
index b85632857a..0000000000
--- a/support/dktools/f2lpgf.ctr
+++ /dev/null
@@ -1,2283 +0,0 @@
-%% options
-
-copyright owner = Dirk Krause
-copyright year = 2012-xxxx
-SPDX-License-Identifier: BSD-3-Clause
-
-
-
-%% header
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/** Driver initialization for tex output.
- @param job Job structure.
- @param drw Drawing structure.
- @return 1 on success, 0 on error.
-*/
-int
-f2lpgf_tex_initialize(f2l_job_t *job, dk3_fig_drawing_t *drw);
-
-/** Driver cleanup for tex driver.
- @param job Job structure.
- @param drw Drawing structure.
-*/
-void
-f2lpgf_tex_end(f2l_job_t *job, dk3_fig_drawing_t *drw);
-
-/** Open output files for tex driver.
- @param job Job structure.
- @return 1 on success, 0 on error.
-*/
-int
-f2lpgf_tex_open_output_files(f2l_job_t *job);
-
-/** Close output files for tex driver.
- @param job Job structure.
-*/
-void
-f2lpgf_tex_close_output_files(f2l_job_t *job);
-
-/** Write start of output for tex driver.
- @param job Job structure.
- @param drw Drawing structure.
- @return 1 on success, 0 on error.
-*/
-int
-f2lpgf_tex_start_processing(f2l_job_t *job, dk3_fig_drawing_t *drw);
-
-/** Write end of output for tex driver.
- @param job Job structure.
- @param drw Drawing structure.
-*/
-void
-f2lpgf_tex_end_processing(f2l_job_t *job, dk3_fig_drawing_t *drw);
-
-/** Process one text object.
- @param job Job structure.
- @param drw Drawing structure.
- @param obj Current object to process.
- @param x Point x.
- @param y Point y.
-*/
-void
-f2lpgf_tex_text_object(
- f2l_job_t *job,
- dk3_fig_drawing_t *drw,
- dk3_fig_obj_t *obj,
- double x,
- double y
-);
-
-/** Process one image object.
- @param job Job structure.
- @param drw Drawing structure.
- @param obj Current object to process.
- @param outbb Bounding box for image.
- @param drawdir Drawing direction.
- @param ec Pointer to error code variable, may be NULL.
-*/
-void
-f2lpgf_tex_image_object(
- f2l_job_t *job,
- dk3_fig_drawing_t *drw,
- dk3_fig_obj_t *obj,
- dk3_bb_t *outbb,
- int drawdir,
- int *ec
-);
-
-/** Start new path.
- @param job Job structure.
- @param drw Drawing structure.
- @param obj Current object to process.
-*/
-void
-f2lpgf_tex_newpath(
- f2l_job_t *job,
- dk3_fig_drawing_t *drw,
- dk3_fig_obj_t *obj
-);
-
-/** Move to point.
- @param job Job structure.
- @param drw Drawing structure.
- @param obj Current object to process.
- @param x Point x.
- @param y Point y.
-*/
-void
-f2lpgf_tex_moveto(
- f2l_job_t *job,
- dk3_fig_drawing_t *drw,
- dk3_fig_obj_t *obj,
- double x,
- double y
-);
-
-/** Draw line to point.
- @param job Job structure.
- @param drw Drawing structure.
- @param obj Current object to process.
- @param x Point x.
- @param y Point y.
-*/
-void
-f2lpgf_tex_lineto(
- f2l_job_t *job,
- dk3_fig_drawing_t *drw,
- dk3_fig_obj_t *obj,
- double x,
- double y
-);
-
-/** Draw curve to point.
- @param job Job structure.
- @param drw Drawing structure.
- @param obj Current object to process.
- @param xcs Start control point y.
- @param ycs Start control point y.
- @param xce End control point x.
- @param yce End control point y.
- @param xe End point x.
- @param ye End point y.
-*/
-void
-f2lpgf_tex_curveto(
- f2l_job_t *job,
- dk3_fig_drawing_t *drw,
- dk3_fig_obj_t *obj,
- double xcs,
- double ycs,
- double xce,
- double yce,
- double xe,
- double ye
-);
-
-/** Close path.
- @param job Job structure.
- @param drw Drawing structure.
- @param obj Current object to process.
-*/
-void
-f2lpgf_tex_closepath(
- f2l_job_t *job,
- dk3_fig_drawing_t *drw,
- dk3_fig_obj_t *obj
-);
-
-/** Fill path.
- @param job Job structure.
- @param drw Drawing structure.
- @param obj Current object to process.
-*/
-void
-f2lpgf_tex_fill(
- f2l_job_t *job,
- dk3_fig_drawing_t *drw,
- dk3_fig_obj_t *obj
-);
-
-/** Fill and stroke path.
- @param job Job structure.
- @param drw Drawing structure.
- @param obj Current object to process.
-*/
-void
-f2lpgf_tex_fill_stroke(
- f2l_job_t *job,
- dk3_fig_drawing_t *drw,
- dk3_fig_obj_t *obj
-);
-
-/** Fill and clip path.
- @param job Job structure.
- @param drw Drawing structure.
- @param obj Current object to process.
-*/
-void
-f2lpgf_tex_fill_clip(
- f2l_job_t *job,
- dk3_fig_drawing_t *drw,
- dk3_fig_obj_t *obj
-);
-
-/** Fill, stroke and clip path.
- @param job Job structure.
- @param drw Drawing structure.
- @param obj Current object to process.
-*/
-void
-f2lpgf_tex_fill_stroke_clip(
- f2l_job_t *job,
- dk3_fig_drawing_t *drw,
- dk3_fig_obj_t *obj
-);
-
-/** Clip drawing operations to path.
- @param job Job structure.
- @param drw Drawing structure.
- @param obj Current object to process.
-*/
-void
-f2lpgf_tex_clip(
- f2l_job_t *job,
- dk3_fig_drawing_t *drw,
- dk3_fig_obj_t *obj
-);
-
-/** Stroke path.
- @param job Job structure.
- @param drw Drawing structure.
- @param obj Current object to process.
-*/
-void
-f2lpgf_tex_stroke(
- f2l_job_t *job,
- dk3_fig_drawing_t *drw,
- dk3_fig_obj_t *obj
-);
-
-/** Save graphics state.
- @param job Job structure.
- @param drw Drawing structure.
- @param obj Current object to process.
-*/
-void
-f2lpgf_tex_gsave(
- f2l_job_t *job,
- dk3_fig_drawing_t *drw,
- dk3_fig_obj_t *obj
-);
-
-/** Restore graphics state.
- @param job Job structure.
- @param drw Drawing structure.
- @param obj Current object to process.
-*/
-void
-f2lpgf_tex_grestore(
- f2l_job_t *job,
- dk3_fig_drawing_t *drw,
- dk3_fig_obj_t *obj
-);
-
-/** Set color.
- @param job Job structure.
- @param drw Drawing structure.
- @param obj Current object to process.
- @param r Red.
- @param g Green.
- @param b Blue.
-*/
-void
-f2lpgf_tex_setcolor(
- f2l_job_t *job,
- dk3_fig_drawing_t *drw,
- dk3_fig_obj_t *obj,
- double r,
- double g,
- double b
-);
-
-/** Set line width.
- The line width is not set again if we already
- have a current line width equal to the new line width.
- @param job Job structure.
- @param drw Drawing structure.
- @param obj Fig object.
- @param lw New line width in output coordinates.
-*/
-void
-f2lpgf_tex_set_line_width(
- f2l_job_t *job,
- dk3_fig_drawing_t *drw,
- dk3_fig_obj_t *obj,
- double lw
-);
-
-/** Set line style.
- @param job Job structure.
- @param drw Drawing structure.
- @param obj Object to set up.
- @param ls Line style, see @ref dk3figlinestyles.
- @param sv Style value in output coordinates.
- @param lw Dot length in output coordinates.
-*/
-void
-f2lpgf_tex_set_line_style(
- f2l_job_t *job,
- dk3_fig_drawing_t *drw,
- dk3_fig_obj_t *obj,
- int ls,
- double sv,
- double lw
-);
-
-/** Set line end.
- @param job Job structure.
- @param drw Drawing structure.
- @param obj Fig object.
- @param le Line end, see @ref dk3figlinecap.
-*/
-void
-f2lpgf_tex_set_line_end(
- f2l_job_t *job,
- dk3_fig_drawing_t *drw,
- dk3_fig_obj_t *obj,
- int le
-);
-
-/** Set line join.
- @param job Job structure.
- @param drw Drawing structure.
- @param obj Fig object.
- @param lj Line join style, see @ref dk3figlinejoin.
-*/
-void
-f2lpgf_tex_set_line_join(
- f2l_job_t *job,
- dk3_fig_drawing_t *drw,
- dk3_fig_obj_t *obj,
- int lj
-);
-
-/** Set current color or stroking color (PGF, PDF).
- @param job Job structure.
- @param drw Drawing structure.
- @param rgb New color value.
-*/
-void
-f2lpgf_tex_set_color_1(
- f2l_job_t *job,
- dk3_fig_drawing_t *drw,
- dk3_rgb_color_t *rgb
-);
-
-/** Set non-stroking color (PGF, PDF).
- @param job Job structure.
- @param drw Drawing structure.
- @param rgb New color value.
-*/
-void
-f2lpgf_tex_set_color_2(
- f2l_job_t *job,
- dk3_fig_drawing_t *drw,
- dk3_rgb_color_t *rgb
-);
-
-/** Write debugging line to output file.
- @param job Job structure.
- @param msg Message to write to output file.
-*/
-void
-f2lpgf_tex_debug(
- f2l_job_t *job,
- char const *msg
-);
-
-/** Driver initialization for pgf output.
- @param job Job structure.
- @param drw Drawing structure.
- @return 1 on success, 0 on error.
-*/
-int
-f2lpgf_pgf_initialize(f2l_job_t *job, dk3_fig_drawing_t *drw);
-
-/** Driver cleanup for pgf driver.
- @param job Job structure.
- @param drw Drawing structure.
-*/
-void
-f2lpgf_pgf_end(f2l_job_t *job, dk3_fig_drawing_t *drw);
-
-/** Open output files for pgf driver.
- @param job Job structure.
- @return 1 on success, 0 on error.
-*/
-int
-f2lpgf_pgf_open_output_files(f2l_job_t *job);
-
-/** Close output files for tex driver.
- @param job Job structure.
-*/
-void
-f2lpgf_pgf_close_output_files(f2l_job_t *job);
-
-/** Write start of output for pgf driver.
- @param job Job structure.
- @param drw Drawing structure.
- @return 1 on success, 0 on error.
-*/
-int
-f2lpgf_pgf_start_processing(f2l_job_t *job, dk3_fig_drawing_t *drw);
-
-/** Write end of output for pgf driver.
- @param job Job structure.
- @param drw Drawing structure.
-*/
-void
-f2lpgf_pgf_end_processing(f2l_job_t *job, dk3_fig_drawing_t *drw);
-
-/** Process one text object.
- @param job Job structure.
- @param drw Drawing structure.
- @param obj Current object to process.
- @param x Point x.
- @param y Point y.
-*/
-void
-f2lpgf_pgf_text_object(
- f2l_job_t *job,
- dk3_fig_drawing_t *drw,
- dk3_fig_obj_t *obj,
- double x,
- double y
-);
-
-/** Process one image object.
- @param job Job structure.
- @param drw Drawing structure.
- @param obj Current object to process.
- @param outbb Bounding box for image.
- @param drawdir Drawing direction.
- @param ec Pointer to error code variable, may be NULL.
-*/
-void
-f2lpgf_pgf_image_object(
- f2l_job_t *job,
- dk3_fig_drawing_t *drw,
- dk3_fig_obj_t *obj,
- dk3_bb_t *outbb,
- int drawdir,
- int *ec
-);
-
-/** Start new path.
- @param job Job structure.
- @param drw Drawing structure.
- @param obj Current object to process.
-*/
-void
-f2lpgf_pgf_newpath(
- f2l_job_t *job,
- dk3_fig_drawing_t *drw,
- dk3_fig_obj_t *obj
-);
-
-/** Move to point.
- @param job Job structure.
- @param drw Drawing structure.
- @param obj Current object to process.
- @param x Point x.
- @param y Point y.
-*/
-void
-f2lpgf_pgf_moveto(
- f2l_job_t *job,
- dk3_fig_drawing_t *drw,
- dk3_fig_obj_t *obj,
- double x,
- double y
-);
-
-/** Draw line to point.
- @param job Job structure.
- @param drw Drawing structure.
- @param obj Current object to process.
- @param x Point x.
- @param y Point y.
-*/
-void
-f2lpgf_pgf_lineto(
- f2l_job_t *job,
- dk3_fig_drawing_t *drw,
- dk3_fig_obj_t *obj,
- double x,
- double y
-);
-
-/** Draw curve to point.
- @param job Job structure.
- @param drw Drawing structure.
- @param obj Current object to process.
- @param xcs Start control point y.
- @param ycs Start control point y.
- @param xce End control point x.
- @param yce End control point y.
- @param xe End point x.
- @param ye End point y.
-*/
-void
-f2lpgf_pgf_curveto(
- f2l_job_t *job,
- dk3_fig_drawing_t *drw,
- dk3_fig_obj_t *obj,
- double xcs,
- double ycs,
- double xce,
- double yce,
- double xe,
- double ye
-);
-
-/** Close path.
- @param job Job structure.
- @param drw Drawing structure.
- @param obj Current object to process.
-*/
-void
-f2lpgf_pgf_closepath(
- f2l_job_t *job,
- dk3_fig_drawing_t *drw,
- dk3_fig_obj_t *obj
-);
-
-/** Fill path.
- @param job Job structure.
- @param drw Drawing structure.
- @param obj Current object to process.
-*/
-void
-f2lpgf_pgf_fill(
- f2l_job_t *job,
- dk3_fig_drawing_t *drw,
- dk3_fig_obj_t *obj
-);
-
-/** Fill and stroke path.
- @param job Job structure.
- @param drw Drawing structure.
- @param obj Current object to process.
-*/
-void
-f2lpgf_pgf_fill_stroke(
- f2l_job_t *job,
- dk3_fig_drawing_t *drw,
- dk3_fig_obj_t *obj
-);
-
-/** Fill and clip path.
- @param job Job structure.
- @param drw Drawing structure.
- @param obj Current object to process.
-*/
-void
-f2lpgf_pgf_fill_clip(
- f2l_job_t *job,
- dk3_fig_drawing_t *drw,
- dk3_fig_obj_t *obj
-);
-
-/** Fill,stroke and clip path.
- @param job Job structure.
- @param drw Drawing structure.
- @param obj Current object to process.
-*/
-void
-f2lpgf_pgf_fill_stroke_clip(
- f2l_job_t *job,
- dk3_fig_drawing_t *drw,
- dk3_fig_obj_t *obj
-);
-
-/** Clip drawing operations to path.
- @param job Job structure.
- @param drw Drawing structure.
- @param obj Current object to process.
-*/
-void
-f2lpgf_pgf_clip(
- f2l_job_t *job,
- dk3_fig_drawing_t *drw,
- dk3_fig_obj_t *obj
-);
-
-/** Stroke path.
- @param job Job structure.
- @param drw Drawing structure.
- @param obj Current object to process.
-*/
-void
-f2lpgf_pgf_stroke(
- f2l_job_t *job,
- dk3_fig_drawing_t *drw,
- dk3_fig_obj_t *obj
-);
-
-/** Save graphics state.
- @param job Job structure.
- @param drw Drawing structure.
- @param obj Current object to process.
-*/
-void
-f2lpgf_pgf_gsave(
- f2l_job_t *job,
- dk3_fig_drawing_t *drw,
- dk3_fig_obj_t *obj
-);
-
-/** Restore graphics state.
- @param job Job structure.
- @param drw Drawing structure.
- @param obj Current object to process.
-*/
-void
-f2lpgf_pgf_grestore(
- f2l_job_t *job,
- dk3_fig_drawing_t *drw,
- dk3_fig_obj_t *obj
-);
-
-/** Set color.
- @param job Job structure.
- @param drw Drawing structure.
- @param obj Current object to process.
- @param r Red.
- @param g Green.
- @param b Blue.
-*/
-void
-f2lpgf_pgf_setcolor(
- f2l_job_t *job,
- dk3_fig_drawing_t *drw,
- dk3_fig_obj_t *obj,
- double r,
- double g,
- double b
-);
-
-/** Set line width.
- The line width is not set again if we already
- have a current line width equal to the new line width.
- @param job Job structure.
- @param drw Drawing structure.
- @param obj Fig object.
- @param lw New line width in output coordinates.
-*/
-void
-f2lpgf_pgf_set_line_width(
- f2l_job_t *job,
- dk3_fig_drawing_t *drw,
- dk3_fig_obj_t *obj,
- double lw
-);
-
-/** Set line style.
- @param job Job structure.
- @param drw Drawing structure.
- @param obj Object to set up.
- @param ls Line style, see @ref dk3figlinestyles.
- @param sv Style value in output coordinates.
- @param lw Dot length in output coordinates.
-*/
-void
-f2lpgf_pgf_set_line_style(
- f2l_job_t *job,
- dk3_fig_drawing_t *drw,
- dk3_fig_obj_t *obj,
- int ls,
- double sv,
- double lw
-);
-
-/** Set line end.
- @param job Job structure.
- @param drw Drawing structure.
- @param obj Fig object.
- @param le Line end, see @ref dk3figlinecap.
-*/
-void
-f2lpgf_pgf_set_line_end(
- f2l_job_t *job,
- dk3_fig_drawing_t *drw,
- dk3_fig_obj_t *obj,
- int le
-);
-
-/** Set line join.
- @param job Job structure.
- @param drw Drawing structure.
- @param obj Fig object.
- @param lj Line join style, see @ref dk3figlinejoin.
-*/
-void
-f2lpgf_pgf_set_line_join(
- f2l_job_t *job,
- dk3_fig_drawing_t *drw,
- dk3_fig_obj_t *obj,
- int lj
-);
-
-/** Set current color or stroking color (PGF, PDF).
- @param job Job structure.
- @param drw Drawing structure.
- @param rgb New color value.
-*/
-void
-f2lpgf_pgf_set_color_1(
- f2l_job_t *job,
- dk3_fig_drawing_t *drw,
- dk3_rgb_color_t *rgb
-);
-
-/** Set non-stroking color (PGF, PDF).
- @param job Job structure.
- @param drw Drawing structure.
- @param rgb New color value.
-*/
-void
-f2lpgf_pgf_set_color_2(
- f2l_job_t *job,
- dk3_fig_drawing_t *drw,
- dk3_rgb_color_t *rgb
-);
-
-/** Write debugging line to output file.
- @param job Job structure.
- @param msg Message to write to output file.
-*/
-void
-f2lpgf_pgf_debug(
- f2l_job_t *job,
- char const *msg
-);
-
-#ifdef __cplusplus
-}
-#endif
-
-
-
-%% module
-
-#include "dk3all.h"
-#include "dk3bezcu.h"
-#include "fig2lat.h"
-#include "f2lud.h"
-#include "f2lsvg.h"
-#include "f2lpgf.h"
-#include "dk3figto.h"
-#if 0
-#include "dkt-version.h"
-#endif
-#include "dk4vers.h"
-#include "dk3bif.h"
-#include "dk3bm.h"
-#include "dk3figto.h"
-#include "dk3unused.h"
-
-
-
-$!trace-include
-
-
-
-/** Driver specific details for entire drawing.
-*/
-typedef struct {
- dk3_sto_t *sFonts; /**< Storage for fonts. */
- dk3_sto_it_t *iFonts; /**< Iterator for font storage. */
- unsigned long nFonts; /**< Number of fonts in sFonts. */
-} f2l_pgf_drawing_info_t;
-
-
-
-/** Keywords used by the module.
-*/
-static char const * const f2lpgf_c8_kw[] = {
-$!string-table
-#
-# 0: Newline
-#
-\n
-#
-# 1: Space
-#
-
-#
-# 2: Begin of PGF picture
-#
-\\begin{pgfpicture}\n
-#
-# 3: End of PGF picture
-#
-\\end{pgfpicture}%\n
-#
-# 4: Begin PGF scope
-#
-\\begin{pgfscope}\n
-#
-# 5: End PGF scope
-#
-\\end{pgfscope}\n
-#
-# 6: Begin of rectangle path
-#
-\\pgfpathrectangle{\\pgfpointorigin}{
-#
-# 7: End of rectangle path
-#
-}\n
-#
-# 8: Start of pgfpoint command
-#
-\\pgfpoint{
-#
-# 9: Middle of pgfpoint command
-#
-,
-#
-# 10: End of command
-#
-}
-#
-# 11: pgfpoint command for long values
-#
-\\pgfpoint{%ldbp}{%ldbp}
-#
-# 12: Unit bp
-#
-bp
-#
-# 13: Use path as bounding box
-#
-\\pgfusepath{use as bounding box}\n
-#
-# 14: Clip to path
-#
-\\pgfusepath{clip}\n
-#
-# 15: Set even/odd winding rule
-#
-\\pgfseteorule\n
-#
-# 16: moveto command
-#
-\\pgfpathmoveto{
-#
-# 17: lineto command
-#
-\\pgfpathlineto{
-#
-# 18: curveto command
-#
-\\pgfpathcurveto{
-#
-# 19: next argument
-#
-}{
-#
-# 20: closepath command
-#
-\\pgfpathclose\n
-#
-# 21: fill command
-#
-\\pgfusepath{fill}\n
-#
-# 22: fill and stroke command
-#
-\\pgfusepath{fill,stroke}\n
-#
-# 23: fill and clip command
-#
-\\pgfusepath{fill,clip}\n
-#
-# 24: fill, stroke and clip command
-#
-\\pgfusepath{fill,stroke,clip}\n
-#
-# 25: stroke command
-#
-\\pgfusepath{stroke}\n
-#
-# 26: setlinewidth command
-#
-\\pgfsetlinewidth{
-#
-# 27: Dash style: solid line
-#
-\\pgfsetdash{
-#
-# 28: Opening curly bracket
-#
-{
-#
-# 29: projecting line cap
-#
-\\pgfsetrectcap\n
-#
-# 30: round line cap
-#
-\\pgfsetroundcap\n
-#
-# 31: Butted line cap
-#
-\\pgfsetbuttcap\n
-#
-# 32: Bevel line join
-#
-\\pgfsetbeveljoin\n
-#
-# 33: Round line join
-#
-\\pgfsetroundjoin\n
-#
-# 34: Miter line join
-#
-\\pgfsetmiterjoin\n
-#
-# 35: Define stroke color command
-#
-\\definecolor{FigToLatColorS}{rgb}{
-#
-# 36: Define non-stroke color command
-#
-\\definecolor{FigToLatColorN}{rgb}{
-#
-# 37: Set stroke color
-#
-\\pgfsetstrokecolor{FigToLatColorS}\n
-#
-# 38: Set non-stroke color
-#
-\\pgfsetfillcolor{FigToLatColorN}\n
-#
-# 39: Start of comment
-#
-%
-#
-# 40: Translate
-#
-\\pgftransformshift{
-#
-# 41: Rotate
-#
-\\pgftransformrotate{%d}\n
-#
-# 42: X scale
-#
-\\pgftransformxscale{
-#
-# 43: Y scale
-#
-\\pgftransformyscale{
-#
-# 44: Text start for image inclusion
-#
-\\pgftext[left,base,at={\\pgfpointorigin}]{\\pgfimage[interpolate=true,width=1bp,height=1bp]{
-#
-# 45: Image end
-#
-}}\n
-#
-# 46: Start pgftext command
-#
-\\pgftext[
-#
-# 47: Center of pgftext command
-#
-]{
-#
-# 48: Left aligned text
-#
-base,left
-#
-# 49: Centered text
-#
-base
-#
-# 50: Right aligned text
-#
-base,right
-#
-# 51: at option for text
-#
-,at={
-#
-# 52: rotation option for text
-#
-,rotate=
-$!end
-};
-
-
-$*
- Tool functions
-$*
-
-
-
-/** Delete driver-specific details.
- @param ptr Details structure to delete.
-*/
-static
-void
-f2lpgf_pdi_delete(f2l_pgf_drawing_info_t *ptr)
-{
- void *vptr; /* Current text handling structure to delete. */
-
- if(ptr) {
- if(ptr->sFonts) {
- if(ptr->iFonts) {
- dk3sto_it_reset(ptr->iFonts);
- while(NULL != (vptr = dk3sto_it_next(ptr->iFonts))) {
- dk3_delete(vptr);
- }
- dk3sto_it_close(ptr->iFonts);
- }
- dk3sto_close(ptr->sFonts);
- } ptr->sFonts = NULL; ptr->iFonts = NULL; ptr->nFonts = 0UL;
- dk3_delete(ptr);
- }
-}
-
-
-
-/** Create structure for driver-specific details.
- @param job Job structure.
- @param drw Drawing structure.
- @return Pointer to new structure on success, NULL on error.
-*/
-static
-f2l_pgf_drawing_info_t *
-f2lpgf_pdi_new(
- f2l_job_t *job,
- dk3_fig_drawing_t * DK3_SILENCE_ARG_UNUSED(drw)
-)
-{
- f2l_pgf_drawing_info_t *back = NULL;
- int ok = 0;
-
- DK3_UNUSED_ARG(drw)
- back = dk3_new_app(f2l_pgf_drawing_info_t,1,job->app);
- if(back) {
- back->sFonts = NULL; back->iFonts = NULL; back->nFonts = 0UL;
- back->sFonts = dk3sto_open_app(job->app);
- if(back->sFonts) {
- dk3sto_set_comp(back->sFonts, dk3fig_tool_text_handling_compare, 0);
- back->iFonts = dk3sto_it_open(back->sFonts);
- if(back->iFonts) {
- ok = 1;
- }
- }
- if(!(ok)) {
- f2lpgf_pdi_delete(back);
- back = NULL;
- }
- } else {
- }
- return back;
-}
-
-
-
-/** Write point (long coordinates).
- @param of Output file.
- @param x X position.
- @param y X position.
-*/
-static
-void
-f2lpgf_write_point_long(FILE *of, long x, long y)
-{
- fprintf(of, f2lpgf_c8_kw[11], x, y);
-}
-
-
-
-/** Write point (double coordinates).
- @param of Output file.
- @param x X position.
- @param y Y position.
-*/
-static
-void
-f2lpgf_write_point_double(FILE *of, double x, double y)
-{
- fputs(f2lpgf_c8_kw[8], of);
- dk3ma_print_double_c8_no_sci(of, x);
- fputs(f2lpgf_c8_kw[12], of);
- fputs(f2lpgf_c8_kw[19], of);
- dk3ma_print_double_c8_no_sci(of, y);
- fputs(f2lpgf_c8_kw[12], of);
- fputs(f2lpgf_c8_kw[10], of);
-}
-
-
-
-/** Set line dash.
- @param of Output file.
- @param xsv Stroke and gap lengths.
- @param nsv Number of elements in xsv.
- @param ph Phase (Used length at start of line).
-*/
-static
-void
-f2lpgf_set_line_dash(FILE *of, double *xsv, size_t nsv, double ph)
-{
- size_t i; /* Index to traverse xsv. */
-
- fputs(f2lpgf_c8_kw[27], of);
- for(i = 0; i < nsv; i++) {
- fputs(f2lpgf_c8_kw[28], of);
- dk3ma_print_double_c8_no_sci(of, xsv[i]);
- fputs(f2lpgf_c8_kw[12], of);
- fputs(f2lpgf_c8_kw[10], of);
- }
- fputs(f2lpgf_c8_kw[19], of);
- dk3ma_print_double_c8_no_sci(of, ph);
- fputs(f2lpgf_c8_kw[12], of);
- fputs(f2lpgf_c8_kw[7], of);
-}
-
-
-
-/** Define current color.
- @param of Output file.
- @param tp Color type.
- @param rgb RGB color structure.
-*/
-static
-void
-f2lpgf_define_color(FILE *of, int tp, dk3_rgb_color_t *rgb)
-{
- fputs(f2lpgf_c8_kw[((tp) ? 36 : 35)], of);
- dk3ma_print_double_c8_no_sci(of, rgb->r);
- fputs(f2lpgf_c8_kw[9], of);
- dk3ma_print_double_c8_no_sci(of, rgb->g);
- fputs(f2lpgf_c8_kw[9], of);
- dk3ma_print_double_c8_no_sci(of, rgb->b);
- fputs(f2lpgf_c8_kw[10], of);
-}
-
-
-
-/** Write image file name to output file.
- @param of Output file.
- @param fn File name.
-*/
-static
-void
-fl2pgf_image_file_name(FILE *of, char const *fn)
-{
- char const *ptr; /* Current character to process. */
-
- ptr = fn;
- while(*ptr) {
- switch(*ptr) {
- case '\\': {
- fputc('/', of);
- } break;
- default: {
- fputc(*ptr, of);
- } break;
- }
- ptr++;
- }
-}
-
-
-
-/** Write text rotation angle.
- @param of Output file.
- @param rot Rotation in radians.
- @param job Job structure.
-*/
-static
-void
-f2lpgf_write_text_rotation(FILE *of, double rot, f2l_job_t *job)
-{
- int ec = 0; /* Mathematical error code. */
- double an; /* Rotation in degree. */
- double ri; /* Integer value of an. */
-
- if(1.0e-6 < fabs(rot)) {
- an = dk3ma_d_mul_ok(rot, 180.0, &ec) / M_PI;
- ri = dk3ma_d_rint(an);
-#if 0
- if(1.0e-3 > fabs(dk3ma_d_rint(dk3ma_d_sub_ok(an, ri, &ec)))) {
- an = ri;
- }
-#else
- /* 2013-01-27: The rint result in the code above is always 0.
- */
- if(1.0e-3 > fabs(dk3ma_d_sub_ok(an, ri, &ec))) {
- an = ri;
- }
-#endif
- fputs(f2lpgf_c8_kw[52], of);
- dk3ma_print_double_c8_no_sci(of, an);
- if(ec) {
- /* ERROR: Math error */
- dk3app_log_1(job->app, DK3_LL_ERROR, job->msg, 35);
- f2l_tool_set_exit_status(job, FIG2LAT_EXIT_ERROR_MATH); $? ". exitcode"
- }
- }
-}
-
-
-
-$*
- PGF output driver functions
-$*
-
-int
-f2lpgf_pgf_initialize(f2l_job_t *job, dk3_fig_drawing_t *drw)
-{
-
- f2l_pgf_drawing_info_t *pdi = NULL; /* Driver spec det. */
- dkChar const *oldsourcefile = NULL; /* Source file name. */
- dk3_fig_obj_t *pobj; /* Current object. */
- unsigned long oldsourceline = 0UL; /* Source file line. */
- int ff = 0; /* Font flags. */
- int back = 0;
- $? "+ f2lpgf_pgf_initialize"
- if((job) && (drw)) {
- pdi = f2lpgf_pdi_new(job, drw);
- if(pdi) {
- drw->dsd = (void *)pdi;
- back = 1;
- oldsourcefile = dk3app_get_source_file(job->app);
- oldsourceline = dk3app_get_source_line(job->app);
- dk3sto_it_reset(drw->iobj);
- while(NULL != (pobj = (dk3_fig_obj_t *)dk3sto_it_next(drw->iobj))) {
- dk3app_set_source_line(job->app, pobj->li);
- switch(pobj->ot) {
- case DK3_FIG_OBJ_TEXT: { $? ". text"
- ff = (pobj->dt).txt.ff;
- if(!(ff & DK3_FIG_FONT_FLAG_HIDDEN)) { $? ". not hidden"
- if(!(ff & DK3_FIG_FONT_FLAG_SPECIAL)) { $? ". not special"
- if(ff & DK3_FIG_FONT_FLAG_PS) { $? ". PS font"
- if(job->ntf) { $? ". ntf"
- pobj->dsd = (void *)f2l_tool_register_font(
- pdi->sFonts, pdi->iFonts, &(pdi->nFonts),
- (pobj->dt).txt.fo, (pobj->dt).txt.fs, job->app
- );
- if(!(pobj->dsd)) {
- back = 0;
- f2l_tool_set_exit_status(job, FIG2LAT_EXIT_ERROR_SYSTEM); $? ". exitcode"
- }
- } else { $? ". no ntf"
- }
- }
- }
- }
- }
- }
- }
- dk3app_set_source_file(job->app, oldsourcefile);
- dk3app_set_source_line(job->app, oldsourceline);
- } else {
- f2l_tool_set_exit_status(job, FIG2LAT_EXIT_ERROR_SYSTEM); $? ". exitcode"
- }
- } $? "- f2lpgf_pgf_initialize %d", back
- return back;
-}
-
-
-
-void
-f2lpgf_pgf_end(f2l_job_t *job, dk3_fig_drawing_t *drw)
-{
- $? "+ f2lpgf_pgf_end"
- if((job) && (drw)) {
- if(drw->dsd) {
- f2lpgf_pdi_delete((f2l_pgf_drawing_info_t *)(drw->dsd));
- }
- } $? "- f2lpgf_pgf_end"
-}
-
-
-
-int
-f2lpgf_pgf_open_output_files(f2l_job_t *job)
-{
- int back = 0;
- $? "+ f2lpgf_pgf_open_output_files"
- job->of1 = dk3sf_fopen_app(job->on1, dkT("w"), job->app);
- if(job->of1) {
- back = 1;
- } else {
- f2l_tool_set_exit_status(job, FIG2LAT_EXIT_ERROR_SYSTEM); $? ". exitcode"
- }
- $? "- f2lpgf_pgf_open_output_files %d", back
- return back;
-}
-
-
-
-void
-f2lpgf_pgf_close_output_files(f2l_job_t *job)
-{
- $? "+ f2lpgf_pgf_close_output_files"
- if(job->of1) {
- dk3sf_fclose_app(job->of1, job->app);
- }
- $? "- f2lpgf_pgf_close_output_files"
-}
-
-
-
-int
-f2lpgf_pgf_start_processing(f2l_job_t *job, dk3_fig_drawing_t *drw)
-{
- f2l_pgf_drawing_info_t *pdi; /* Driver specific details. */
- int back = 0;
- $? "+ f2lpgf_pgf_start_processing"
- pdi = (f2l_pgf_drawing_info_t *)(drw->dsd);
- if(pdi) { $? ". have pdi"
- back = 1;
- /* Font definitions */
- f2l_tool_start_tex_part_with_picture(
- job->of1, job, NULL, pdi->iFonts, pdi->nFonts, 0
- );
- } else { $? "! no pdi"
- }
- fputs(f2lpgf_c8_kw[2], job->of1);
- /* Bounding box */
- fputs(f2lpgf_c8_kw[6], job->of1);
- f2lpgf_write_point_long(job->of1, job->lwidth, job->lheight);
- fputs(f2lpgf_c8_kw[7], job->of1);
- fputs(f2lpgf_c8_kw[13], job->of1);
- fputs(f2lpgf_c8_kw[15], job->of1);
- /* Begin PGF scope */
- fputs(f2lpgf_c8_kw[4], job->of1);
- /* Clip path */
- fputs(f2lpgf_c8_kw[6], job->of1);
- f2lpgf_write_point_long(job->of1, job->lwidth, job->lheight);
- fputs(f2lpgf_c8_kw[7], job->of1);
- fputs(f2lpgf_c8_kw[14], job->of1);
- $? "- f2lpgf_pgf_start_processing %d", back
- return back;
-}
-
-
-
-void
-f2lpgf_pgf_end_processing(
- f2l_job_t *job,
- dk3_fig_drawing_t * DK3_SILENCE_ARG_UNUSED(drw)
-)
-{
- $? "+ f2lpgf_pgf_end_processing"
- DK3_UNUSED_ARG(drw)
- /* End PGF scope */
- fputs(f2lpgf_c8_kw[5], job->of1);
- /* End PGF picture */
- fputs(f2lpgf_c8_kw[3], job->of1);
- $? "- f2lpgf_pgf_end_processing"
-}
-
-
-
-void
-f2lpgf_pgf_text_object(
- f2l_job_t *job,
- dk3_fig_drawing_t *drw,
- dk3_fig_obj_t *obj,
- double x,
- double y
-)
-{
- f2l_pgf_drawing_info_t *pdi = NULL; /* Driver specific details. */
- unsigned long nFonts = 0UL; /* Number of text handlings. */
- $? "+ f2lpgf_pgf_text_object"
- pdi = (f2l_pgf_drawing_info_t *)(drw->dsd);
- if(pdi) { nFonts = pdi->nFonts; }
- fputs(f2lpgf_c8_kw[46], job->of1);
- /* align */
- switch(obj->st) {
- case 2: {
- fputs(f2lpgf_c8_kw[50], job->of1);
- } break;
- case 1: {
- fputs(f2lpgf_c8_kw[49], job->of1);
- } break;
- default: {
- fputs(f2lpgf_c8_kw[48], job->of1);
- } break;
- }
- /* position */
- fputs(f2lpgf_c8_kw[51], job->of1);
- f2lpgf_write_point_double(job->of1, x, y);
- fputs(f2lpgf_c8_kw[10], job->of1);
- /* rotation */
- f2lpgf_write_text_rotation(job->of1, (obj->dt).txt.an, job);
- fputs(f2lpgf_c8_kw[47], job->of1);
- /* text */
- f2l_tool_inner_text_object(job->of1, job, drw, obj, nFonts);
- fputs(f2lpgf_c8_kw[7], job->of1);
- (job->gs).hc1 = 0; (job->gs).hc2 = 0;
- $? "- f2lpgf_pgf_text_object"
-}
-
-
-
-void
-f2lpgf_pgf_image_object(
- f2l_job_t *job,
- dk3_fig_drawing_t * DK3_SILENCE_ARG_UNUSED(drw),
- dk3_fig_obj_t *obj,
- dk3_bb_t *outbb,
- int drawdir,
- int *ec
-)
-{
- dk3_coordinates_transformation_t trans; /* Graphics state tr. */
- dk3_bif_t *bif; /* Bitmap image file. */
- double w = 0.0; /* Image width. */
- double h = 0.0; /* Image height. */
- double xres = -1.0; /* X resolution, none by default. */
- double yres = -1.0; /* Y resolution, none by default. */
- int res = 0; /* Result from transformation search. */
- $? "+ f2lpgf_pgf_image_object"
- DK3_UNUSED_ARG(drw)
- if((obj->dt).pol.fn) {
- bif = dk3bif_open_c8_filename_app(
- (obj->dt).pol.fn, DK3_BIF_IMAGE_TYPE_UNKNOWN, job->app
- );
- if(bif) {
- w = (double)dk3bif_get_width(bif);
- h = (double)dk3bif_get_height(bif);
- xres = dk3bif_get_xres(bif);
- yres = dk3bif_get_yres(bif);
- dk3bif_close(bif);
- res = dk3bm_find_transformation(
- &trans, outbb, drawdir, w, h, xres, yres, ec
- );
- if(res) {
- /* gsave */
- fputs(f2lpgf_c8_kw[4], job->of1);
- /* translate */
- fputs(f2lpgf_c8_kw[40], job->of1);
- f2lpgf_write_point_double(
- job->of1, trans.x_translate, trans.y_translate
- );
- fputs(f2lpgf_c8_kw[7], job->of1);
- /* rotate */
- if(trans.rot) {
- fprintf(job->of1, f2lpgf_c8_kw[41], 90 * trans.rot);
- }
- /* scale */
- fputs(f2lpgf_c8_kw[42], job->of1);
- dk3ma_print_double_c8_no_sci(job->of1, trans.x_scale);
- fputs(f2lpgf_c8_kw[7], job->of1);
- fputs(f2lpgf_c8_kw[43], job->of1);
- dk3ma_print_double_c8_no_sci(job->of1, trans.y_scale);
- fputs(f2lpgf_c8_kw[7], job->of1);
- /* image */
- fputs(f2lpgf_c8_kw[44], job->of1);
- fl2pgf_image_file_name(job->of1, (obj->dt).pol.fn);
- fputs(f2lpgf_c8_kw[45], job->of1);
- /* grestore */
- fputs(f2lpgf_c8_kw[5], job->of1);
- } else {
- /* ERROR: Failed to calculate graphics state transformation */
- dk3app_log_1(job->app, DK3_LL_ERROR, job->msg, 40);
- f2l_tool_set_exit_status(job, FIG2LAT_EXIT_ERROR_MATH); $? ". exitcode"
- }
- } else {
- /* ERROR: Failed to open bitmap image! */
- f2l_tool_set_exit_status(job, FIG2LAT_EXIT_ERROR_SYSTEM); $? ". exitcode"
- }
- }
- $? "- f2lpgf_pgf_image_object"
-}
-
-
-
-void
-f2lpgf_pgf_newpath(
- f2l_job_t * DK3_SILENCE_ARG_UNUSED(job),
- dk3_fig_drawing_t * DK3_SILENCE_ARG_UNUSED(drw),
- dk3_fig_obj_t * DK3_SILENCE_ARG_UNUSED(obj)
-)
-{
- $? "+ f2lpgf_pgf_newpath"
- DK3_UNUSED_ARG(drw)
- DK3_UNUSED_ARG(obj)
- DK3_UNUSED_ARG(job)
- /* Nothing to do here, new paths are automatically started by moveto. */
- $? "- f2lpgf_pgf_newpath"
-}
-
-
-
-void
-f2lpgf_pgf_moveto(
- f2l_job_t *job,
- dk3_fig_drawing_t * DK3_SILENCE_ARG_UNUSED(drw),
- dk3_fig_obj_t * DK3_SILENCE_ARG_UNUSED(obj),
- double x,
- double y
-)
-{
- $? "+ f2lpgf_pgf_moveto"
- DK3_UNUSED_ARG(drw)
- DK3_UNUSED_ARG(obj)
- fputs(f2lpgf_c8_kw[16], job->of1);
- f2lpgf_write_point_double(job->of1, x, y);
- fputs(f2lpgf_c8_kw[7], job->of1);
- $? "- f2lpgf_pgf_moveto"
-}
-
-
-
-void
-f2lpgf_pgf_lineto(
- f2l_job_t *job,
- dk3_fig_drawing_t * DK3_SILENCE_ARG_UNUSED(drw),
- dk3_fig_obj_t * DK3_SILENCE_ARG_UNUSED(obj),
- double x,
- double y
-)
-{
- $? "+ f2lpgf_pgf_lineto"
- DK3_UNUSED_ARG(drw)
- DK3_UNUSED_ARG(obj)
- fputs(f2lpgf_c8_kw[17], job->of1);
- f2lpgf_write_point_double(job->of1, x, y);
- fputs(f2lpgf_c8_kw[7], job->of1);
- $? "- f2lpgf_pgf_lineto"
-}
-
-
-
-void
-f2lpgf_pgf_curveto(
- f2l_job_t *job,
- dk3_fig_drawing_t * DK3_SILENCE_ARG_UNUSED(drw),
- dk3_fig_obj_t * DK3_SILENCE_ARG_UNUSED(obj),
- double xcs,
- double ycs,
- double xce,
- double yce,
- double xe,
- double ye
-)
-{
- $? "+ f2lpgf_pgf_curveto"
- DK3_UNUSED_ARG(drw)
- DK3_UNUSED_ARG(obj)
- fputs(f2lpgf_c8_kw[18], job->of1);
- f2lpgf_write_point_double(job->of1, xcs, ycs);
- fputs(f2lpgf_c8_kw[19], job->of1);
- f2lpgf_write_point_double(job->of1, xce, yce);
- fputs(f2lpgf_c8_kw[19], job->of1);
- f2lpgf_write_point_double(job->of1, xe, ye);
- fputs(f2lpgf_c8_kw[7], job->of1);
- $? "- f2lpgf_pgf_curveto"
-}
-
-
-
-void
-f2lpgf_pgf_closepath(
- f2l_job_t *job,
- dk3_fig_drawing_t * DK3_SILENCE_ARG_UNUSED(drw),
- dk3_fig_obj_t * DK3_SILENCE_ARG_UNUSED(obj)
-)
-{
- $? "+ f2lpgf_pgf_closepath"
- DK3_UNUSED_ARG(drw)
- DK3_UNUSED_ARG(obj)
- fputs(f2lpgf_c8_kw[20], job->of1);
- $? "- f2lpgf_pgf_closepath"
-}
-
-
-
-void
-f2lpgf_pgf_fill(
- f2l_job_t *job,
- dk3_fig_drawing_t * DK3_SILENCE_ARG_UNUSED(drw),
- dk3_fig_obj_t * DK3_SILENCE_ARG_UNUSED(obj)
-)
-{
- $? "+ f2lpgf_pgf_fill"
- DK3_UNUSED_ARG(drw)
- DK3_UNUSED_ARG(obj)
- fputs(f2lpgf_c8_kw[21], job->of1);
- $? "- f2lpgf_pgf_fill"
-}
-
-
-
-void
-f2lpgf_pgf_fill_stroke(
- f2l_job_t *job,
- dk3_fig_drawing_t * DK3_SILENCE_ARG_UNUSED(drw),
- dk3_fig_obj_t * DK3_SILENCE_ARG_UNUSED(obj)
-)
-{
- $? "+ f2lpgf_pgf_fill_stroke"
- DK3_UNUSED_ARG(drw)
- DK3_UNUSED_ARG(obj)
- fputs(f2lpgf_c8_kw[22], job->of1);
- $? "- f2lpgf_pgf_fill_stroke"
-}
-
-
-
-void
-f2lpgf_pgf_fill_clip(
- f2l_job_t *job,
- dk3_fig_drawing_t * DK3_SILENCE_ARG_UNUSED(drw),
- dk3_fig_obj_t * DK3_SILENCE_ARG_UNUSED(obj)
-)
-{
- $? "+ f2lpgf_pgf_fill_clip"
- DK3_UNUSED_ARG(drw)
- DK3_UNUSED_ARG(obj)
- fputs(f2lpgf_c8_kw[23], job->of1);
- $? "- f2lpgf_pgf_fill_clip"
-}
-
-
-
-void
-f2lpgf_pgf_fill_stroke_clip(
- f2l_job_t *job,
- dk3_fig_drawing_t * DK3_SILENCE_ARG_UNUSED(drw),
- dk3_fig_obj_t * DK3_SILENCE_ARG_UNUSED(obj)
-)
-{
- $? "+ f2lpgf_pgf_fill_stroke_clip"
- DK3_UNUSED_ARG(drw)
- DK3_UNUSED_ARG(obj)
- fputs(f2lpgf_c8_kw[24], job->of1);
- $? "- f2lpgf_pgf_fill_stroke_clip"
-}
-
-
-
-void
-f2lpgf_pgf_clip(
- f2l_job_t *job,
- dk3_fig_drawing_t * DK3_SILENCE_ARG_UNUSED(drw),
- dk3_fig_obj_t * DK3_SILENCE_ARG_UNUSED(obj)
-)
-{
- $? "+ f2lpgf_pgf_clip"
- DK3_UNUSED_ARG(drw)
- DK3_UNUSED_ARG(obj)
- fputs(f2lpgf_c8_kw[14], job->of1);
- $? "- f2lpgf_pgf_clip"
-}
-
-
-
-void
-f2lpgf_pgf_stroke(
- f2l_job_t *job,
- dk3_fig_drawing_t * DK3_SILENCE_ARG_UNUSED(drw),
- dk3_fig_obj_t * DK3_SILENCE_ARG_UNUSED(obj)
-)
-{
- $? "+ f2lpgf_pgf_stroke"
- DK3_UNUSED_ARG(drw)
- DK3_UNUSED_ARG(obj)
- fputs(f2lpgf_c8_kw[25], job->of1);
- $? "- f2lpgf_pgf_stroke"
-}
-
-
-
-void
-f2lpgf_pgf_gsave(
- f2l_job_t *job,
- dk3_fig_drawing_t * DK3_SILENCE_ARG_UNUSED(drw),
- dk3_fig_obj_t * DK3_SILENCE_ARG_UNUSED(obj)
-)
-{
- $? "+ f2lpgf_pgf_gsave"
- DK3_UNUSED_ARG(drw)
- DK3_UNUSED_ARG(obj)
- fputs(f2lpgf_c8_kw[4], job->of1);
- $? "- f2lpgf_pgf_gsave"
-}
-
-
-
-void
-f2lpgf_pgf_grestore(
- f2l_job_t *job,
- dk3_fig_drawing_t * DK3_SILENCE_ARG_UNUSED(drw),
- dk3_fig_obj_t * DK3_SILENCE_ARG_UNUSED(obj)
-)
-{
- $? "+ f2lpgf_pgf_grestore"
- DK3_UNUSED_ARG(drw)
- DK3_UNUSED_ARG(obj)
- fputs(f2lpgf_c8_kw[5], job->of1);
- $? "- f2lpgf_pgf_grestore"
-}
-
-
-
-void
-f2lpgf_pgf_set_line_width(
- f2l_job_t *job,
- dk3_fig_drawing_t * DK3_SILENCE_ARG_UNUSED(drw),
- dk3_fig_obj_t * DK3_SILENCE_ARG_UNUSED(obj),
- double lw
-)
-{
- $? "+ f2lpgf_pgf_set_line_width"
- DK3_UNUSED_ARG(drw)
- DK3_UNUSED_ARG(obj)
- fputs(f2lpgf_c8_kw[26], job->of1);
- dk3ma_print_double_c8_no_sci(job->of1, lw);
- fputs(f2lpgf_c8_kw[12], job->of1);
- fputs(f2lpgf_c8_kw[7], job->of1);
- $? "- f2lpgf_pgf_set_line_width"
-}
-
-
-
-void
-f2lpgf_pgf_set_line_style(
- f2l_job_t *job,
- dk3_fig_drawing_t * DK3_SILENCE_ARG_UNUSED(drw),
- dk3_fig_obj_t * DK3_SILENCE_ARG_UNUSED(obj),
- int ls,
- double sv,
- double lw
-)
-{
- double xsv[32]; /* Lengths of strokes and gaps. */
- double ph; /* Phase (used length at start). */
- double gw; /* Gap width. */
- size_t nsv; /* Number of elements in xsv. */
- $? "+ f2lpgf_pgf_set_line_style"
- DK3_UNUSED_ARG(drw)
- DK3_UNUSED_ARG(obj)
- ph = 0.0; nsv = 0; xsv[0] = 0.0;
- gw = f2lto_find_gap_length(job, lw, sv);
- switch(ls) {
- case DK3_FIG_LS_DASH_TRIPLE_DOTTED: {
- xsv[0] = sv;
- xsv[1] = gw;
- xsv[2] = lw;
- xsv[3] = gw;
- xsv[4] = lw;
- xsv[5] = gw;
- xsv[6] = lw;
- xsv[7] = gw;
- nsv = 8;
- } break;
- case DK3_FIG_LS_DASH_DOUBLE_DOTTED: {
- xsv[0] = sv;
- xsv[1] = gw;
- xsv[2] = lw;
- xsv[3] = gw;
- xsv[4] = lw;
- xsv[5] = gw;
- nsv = 6;
- } break;
- case DK3_FIG_LS_DASH_DOTTED: {
- xsv[0] = sv;
- xsv[1] = gw;
- xsv[2] = lw;
- xsv[3] = gw;
- nsv = 4;
- } break;
- case DK3_FIG_LS_DOTTED: {
- xsv[0] = lw; xsv[1] = gw;
- nsv = 2;
- } break;
- case DK3_FIG_LS_DASHED: {
- xsv[0] = sv; xsv[1] = gw;
- nsv = 2;
- } break;
- }
- f2lpgf_set_line_dash(job->of1, xsv, nsv, ph);
- $? "- f2lpgf_pgf_set_line_style"
-}
-
-
-
-void
-f2lpgf_pgf_set_line_end(
- f2l_job_t *job,
- dk3_fig_drawing_t * DK3_SILENCE_ARG_UNUSED(drw),
- dk3_fig_obj_t * DK3_SILENCE_ARG_UNUSED(obj),
- int le
-)
-{
- $? "+ f2lpgf_pgf_set_line_end"
- DK3_UNUSED_ARG(drw)
- DK3_UNUSED_ARG(obj)
- switch(le) {
- case DK3_FIG_LC_PROJECTING: {
- fputs(f2lpgf_c8_kw[29], job->of1);
- } break;
- case DK3_FIG_LC_ROUND: {
- fputs(f2lpgf_c8_kw[30], job->of1);
- } break;
- default: {
- fputs(f2lpgf_c8_kw[31], job->of1);
- } break;
- }
- $? "- f2lpgf_pgf_set_line_end"
-}
-
-
-
-void
-f2lpgf_pgf_set_line_join(
- f2l_job_t *job,
- dk3_fig_drawing_t * DK3_SILENCE_ARG_UNUSED(drw),
- dk3_fig_obj_t * DK3_SILENCE_ARG_UNUSED(obj),
- int lj
-)
-{
- $? "+ f2lpgf_pgf_set_line_join"
- DK3_UNUSED_ARG(drw)
- DK3_UNUSED_ARG(obj)
- switch(lj) {
- case DK3_FIG_LJ_BEVEL: {
- fputs(f2lpgf_c8_kw[32], job->of1);
- } break;
- case DK3_FIG_LJ_ROUND: {
- fputs(f2lpgf_c8_kw[33], job->of1);
- } break;
- default: {
- fputs(f2lpgf_c8_kw[34], job->of1);
- } break;
- }
- $? "- f2lpgf_pgf_set_line_join"
-}
-
-
-
-void
-f2lpgf_pgf_set_color_1(
- f2l_job_t *job,
- dk3_fig_drawing_t * DK3_SILENCE_ARG_UNUSED(drw),
- dk3_rgb_color_t *rgb
-)
-{
- $? "+ f2lpgf_pgf_set_color_1"
- DK3_UNUSED_ARG(drw)
- f2lpgf_define_color(job->of1, 0, rgb);
- fputs(f2lpgf_c8_kw[37], job->of1);
- $? "- f2lpgf_pgf_set_color_1"
-}
-
-
-
-void
-f2lpgf_pgf_set_color_2(
- f2l_job_t *job,
- dk3_fig_drawing_t * DK3_SILENCE_ARG_UNUSED(drw),
- dk3_rgb_color_t *rgb
-)
-{
- $? "+ f2lpgf_pgf_set_color_2"
- DK3_UNUSED_ARG(drw)
- f2lpgf_define_color(job->of1, 1, rgb);
- fputs(f2lpgf_c8_kw[38], job->of1);
- $? "- f2lpgf_pgf_set_color_2"
-}
-
-
-
-void
-f2lpgf_pgf_setcolor(
- f2l_job_t *job,
- dk3_fig_drawing_t *drw,
- dk3_fig_obj_t * DK3_SILENCE_ARG_UNUSED(obj),
- double r,
- double g,
- double b
-)
-{
- dk3_rgb_color_t rgb; /* Color cell. */
- $? "+ f2lpgf_pgf_setcolor"
- DK3_UNUSED_ARG(obj)
- rgb.r = r; rgb.g = g; rgb.b = b;
- f2lpgf_pgf_set_color_1(job, drw, &rgb);
- rgb.r = r; rgb.g = g; rgb.b = b;
- f2lpgf_pgf_set_color_2(job, drw, &rgb);
- $? "- f2lpgf_pgf_setcolor"
-}
-
-
-void
-f2lpgf_pgf_debug(
- f2l_job_t *job,
- char const *msg
-)
-{
- $? "+ f2lpgf_pgf_debug"
- fputs(f2lpgf_c8_kw[39], job->of1);
- fputs(msg, job->of1);
- fputc('\n', job->of1);
- $? "- f2lpgf_pgf_debug"
-}
-
-
-
-$*
- TeX output driver functions.
-$*
-
-int
-f2lpgf_tex_initialize(f2l_job_t *job, dk3_fig_drawing_t *drw)
-{
- int back = 0;
- back = f2lpgf_pgf_initialize(job, drw);
- return back;
-}
-
-
-
-void
-f2lpgf_tex_end(f2l_job_t *job, dk3_fig_drawing_t *drw)
-{
- f2lpgf_pgf_end(job, drw);
-}
-
-
-
-int
-f2lpgf_tex_open_output_files(f2l_job_t *job)
-{
- int back = 0;
- back = f2lpgf_pgf_open_output_files(job);
- return back;
-}
-
-
-
-void
-f2lpgf_tex_close_output_files(f2l_job_t *job)
-{
- f2lpgf_pgf_close_output_files(job);
-}
-
-
-
-int
-f2lpgf_tex_start_processing(f2l_job_t *job, dk3_fig_drawing_t *drw)
-{
- int back = 0;
- f2l_tool_begin_latex_document(job->of1, job);
- back = f2lpgf_pgf_start_processing(job, drw);
- return back;
-}
-
-
-
-void
-f2lpgf_tex_end_processing(f2l_job_t *job, dk3_fig_drawing_t *drw)
-{
- f2lpgf_pgf_end_processing(job, drw);
- f2l_tool_end_latex_document(job->of1);
-}
-
-
-
-void
-f2lpgf_tex_text_object(
- f2l_job_t *job,
- dk3_fig_drawing_t *drw,
- dk3_fig_obj_t *obj,
- double x,
- double y
-)
-{
- f2lpgf_pgf_text_object(job, drw, obj, x, y);
-}
-
-
-
-void
-f2lpgf_tex_image_object(
- f2l_job_t *job,
- dk3_fig_drawing_t *drw,
- dk3_fig_obj_t *obj,
- dk3_bb_t *outbb,
- int drawdir,
- int *ec
-)
-{
- f2lpgf_pgf_image_object(job, drw, obj, outbb, drawdir, ec);
-}
-
-
-
-void
-f2lpgf_tex_newpath(
- f2l_job_t *job,
- dk3_fig_drawing_t *drw,
- dk3_fig_obj_t *obj
-)
-{
- f2lpgf_pgf_newpath(job, drw, obj);
-}
-
-
-
-void
-f2lpgf_tex_moveto(
- f2l_job_t *job,
- dk3_fig_drawing_t *drw,
- dk3_fig_obj_t *obj,
- double x,
- double y
-)
-{
- f2lpgf_pgf_moveto(job, drw, obj, x, y);
-}
-
-
-
-void
-f2lpgf_tex_lineto(
- f2l_job_t *job,
- dk3_fig_drawing_t *drw,
- dk3_fig_obj_t *obj,
- double x,
- double y
-)
-{
- f2lpgf_pgf_lineto(job, drw, obj, x, y);
-}
-
-
-
-void
-f2lpgf_tex_curveto(
- f2l_job_t *job,
- dk3_fig_drawing_t *drw,
- dk3_fig_obj_t *obj,
- double xcs,
- double ycs,
- double xce,
- double yce,
- double xe,
- double ye
-)
-{
- f2lpgf_pgf_curveto(job, drw, obj, xcs, ycs, xce, yce, xe, ye);
-}
-
-
-
-void
-f2lpgf_tex_closepath(
- f2l_job_t *job,
- dk3_fig_drawing_t *drw,
- dk3_fig_obj_t *obj
-)
-{
- f2lpgf_pgf_closepath(job, drw, obj);
-}
-
-
-
-void
-f2lpgf_tex_fill(
- f2l_job_t *job,
- dk3_fig_drawing_t *drw,
- dk3_fig_obj_t *obj
-)
-{
- f2lpgf_pgf_fill(job, drw, obj);
-}
-
-
-
-void
-f2lpgf_tex_fill_stroke(
- f2l_job_t *job,
- dk3_fig_drawing_t *drw,
- dk3_fig_obj_t *obj
-)
-{
- f2lpgf_pgf_fill_stroke(job, drw, obj);
-}
-
-
-
-void
-f2lpgf_tex_fill_clip(
- f2l_job_t *job,
- dk3_fig_drawing_t *drw,
- dk3_fig_obj_t *obj
-)
-{
- f2lpgf_pgf_fill_clip(job, drw, obj);
-}
-
-
-
-void
-f2lpgf_tex_fill_stroke_clip(
- f2l_job_t *job,
- dk3_fig_drawing_t *drw,
- dk3_fig_obj_t *obj
-)
-{
- f2lpgf_pgf_fill_stroke_clip(job, drw, obj);
-}
-
-
-
-void
-f2lpgf_tex_clip(
- f2l_job_t *job,
- dk3_fig_drawing_t *drw,
- dk3_fig_obj_t *obj
-)
-{
- f2lpgf_pgf_clip(job, drw, obj);
-}
-
-
-
-void
-f2lpgf_tex_stroke(
- f2l_job_t *job,
- dk3_fig_drawing_t *drw,
- dk3_fig_obj_t *obj
-)
-{
- f2lpgf_pgf_stroke(job, drw, obj);
-}
-
-
-
-void
-f2lpgf_tex_gsave(
- f2l_job_t *job,
- dk3_fig_drawing_t *drw,
- dk3_fig_obj_t *obj
-)
-{
- f2lpgf_pgf_gsave(job, drw, obj);
-}
-
-
-
-void
-f2lpgf_tex_grestore(
- f2l_job_t *job,
- dk3_fig_drawing_t *drw,
- dk3_fig_obj_t *obj
-)
-{
- f2lpgf_pgf_grestore(job, drw, obj);
-}
-
-
-
-void
-f2lpgf_tex_setcolor(
- f2l_job_t *job,
- dk3_fig_drawing_t *drw,
- dk3_fig_obj_t *obj,
- double r,
- double g,
- double b
-)
-{
- f2lpgf_pgf_setcolor(job, drw, obj, r, g, b);
-}
-
-
-
-void
-f2lpgf_tex_set_line_width(
- f2l_job_t *job,
- dk3_fig_drawing_t *drw,
- dk3_fig_obj_t *obj,
- double lw
-)
-{
- f2lpgf_pgf_set_line_width(job, drw, obj, lw);
-}
-
-
-
-void
-f2lpgf_tex_set_line_style(
- f2l_job_t *job,
- dk3_fig_drawing_t *drw,
- dk3_fig_obj_t *obj,
- int ls,
- double sv,
- double lw
-)
-{
- f2lpgf_pgf_set_line_style(job, drw, obj, ls, sv, lw);
-}
-
-
-
-void
-f2lpgf_tex_set_line_end(
- f2l_job_t *job,
- dk3_fig_drawing_t *drw,
- dk3_fig_obj_t *obj,
- int le
-)
-{
- f2lpgf_pgf_set_line_end(job, drw, obj, le);
-}
-
-
-
-void
-f2lpgf_tex_set_line_join(
- f2l_job_t *job,
- dk3_fig_drawing_t *drw,
- dk3_fig_obj_t *obj,
- int lj
-)
-{
- f2lpgf_pgf_set_line_join(job, drw, obj, lj);
-}
-
-
-
-void
-f2lpgf_tex_set_color_1(
- f2l_job_t *job,
- dk3_fig_drawing_t *drw,
- dk3_rgb_color_t *rgb
-)
-{
- f2lpgf_pgf_set_color_1(job, drw, rgb);
-}
-
-
-
-void
-f2lpgf_tex_set_color_2(
- f2l_job_t *job,
- dk3_fig_drawing_t *drw,
- dk3_rgb_color_t *rgb
-)
-{
- f2lpgf_pgf_set_color_2(job, drw, rgb);
-}
-
-
-
-void
-f2lpgf_tex_debug(
- f2l_job_t *job,
- char const *msg
-)
-{
- f2lpgf_pgf_debug(job, msg);
-}
-