diff options
Diffstat (limited to 'support/dktools/f2lpgf.ctr')
-rw-r--r-- | support/dktools/f2lpgf.ctr | 2283 |
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); -} - |