/* Copyright (C) 2017-2020, Dirk Krause SPDX-License-Identifier: BSD-3-Clause */ /* WARNING: This file was generated by the dkct program (see http://dktools.sourceforge.net/ for details). 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: dk4gra.ctr */ #ifndef DK4GRA_H_INCLUDED /** Avoid multiple inclusions. */ #define DK4GRA_H_INCLUDED 1 #line 9 "dk4gra.ctr" /** @file dk4gra.h Graphics output (PS/EPS/PDF/PGF). This module contains functions to create PS/EPS/PDF/PGF graphics. Coordinates are specified in PS points, called bp in LaTeX. 72 PS points are one inch. The origin is in the lower left corner, x values grow to the right, y values grow to top. Colors specified as double values are in the range from 0.0 to 1.0. For each object to draw follow an algorithm like @code dk4_bb_t bb; dk4gra_set_line_width(...); dk4gra_set_line_style(...); dk4gra_set_line_cap(...); dk4gra_set_line_join(...); dk4gra_set_stroke_...(...); dk4gra_set_fill_...(...); if (want_a_pattern_filled_object) { dk4bb_init(&bb); dk4gra_prepare_fill(...); construct_path(...); dk4gra_fill(...); dk4gra_set_gs_for_pattern_only(gra, 1, ...); dk4gra_gsave(...); construct_path(..., &bb, ...); dk4gra_clip(...); dk4gra_pattern(..., bb.xmin, bb.xmax, bb.ymin, bb.ymax, ...); dk4gra_grestore(...); dk4gra_set_gs_for_pattern_only(gra, 0, ...); if (want_a_stroked_object) { dk4gra_prepare_stroke(...); construct_path(...); dk4gra_stroke(...); } } else { if (want_a_filled_object) { if (want_a_stroked_object) { if (0 != dk4gra_can_fill_and_stroke(...)) { dk4gra_prepare_fill_and_stroke(...); construct_path(...); dk4gra_fill_and_stroke(...); } else { dk4gra_prepare_fill(...); construct_path(...); dk4gra_fill(...); dk4gra_prepare_stroke(...); construct_path(...); dk4gra_stroke(...); } } else { dk4gra_prepare_fill(...); construct_path(...); dk4gra_fill(...); } } else { if (want_a_stroked_object) { dk4gra_prepare_stroke(...); construct_path(...); dk4gra_stroke(...); } } } @endcode The dk4gra_set_fill_...() and dk4gra_set_stroke_...() functions set color space and color values. You must use the same color space for both fill and stroke color. */ #ifndef DK4CONF_H_INCLUDED #if DK4_BUILDING_DKTOOLS4 #include "dk4conf.h" #else #include #endif #endif #ifndef DK4MEM_H_INCLUDED #if DK4_BUILDING_DKTOOLS4 #include "dk4mem.h" #else #include #endif #endif #ifndef DK4FONT_H_INCLUDED #if DK4_BUILDING_DKTOOLS4 #include "dk4font.h" #else #include #endif #endif #ifndef DK4ALIGN_H_INCLUDED #if DK4_BUILDING_DKTOOLS4 #include "dk4align.h" #else #include #endif #endif #ifndef DK4ERROR_H_INCLUDED #if DK4_BUILDING_DKTOOLS4 #include "dk4error.h" #else #include #endif #endif #ifndef DK4BB_H_INCLUDED #if DK4_BUILDING_DKTOOLS4 #include "dk4bb.h" #else #include #endif #endif #ifndef DK4BIFTY_H_INCLUDED #if DK4_BUILDING_DKTOOLS4 #include "dk4bifty.h" #else #include #endif #endif #ifndef DK4CS_H_INCLUDED #if DK4_BUILDING_DKTOOLS4 #include "dk4cs.h" #else #include #endif #endif #ifndef DK4MEMBF_H_INCLUDED #if DK4_BUILDING_DKTOOLS4 #include "dk4membuf.h" #else #include #endif #endif #ifndef DK4MBSTRM_H_INCLUDED #if DK4_BUILDING_DKTOOLS4 #include "dk4mbstrm.h" #else #include #endif #endif #ifndef DK4FONTC_H_INCLUDED #if DK4_BUILDING_DKTOOLS4 #include "dk4fontc.h" #else #include #endif #endif #ifndef DK4UC2L_H_INCLUDED #if DK4_BUILDING_DKTOOLS4 #include "dk4uc2l.h" #else #include #endif #endif /** Epsilon value for coordinates. All values smaller than this are treated as 0.0. */ #define DK4_GRA_EPSILON_COORDINATES 1.0e-5 /** Epsilon value for line widths. Line width differing less are treated as equal. */ #define DK4_GRA_EPSILON_LINEWIDTH 1.0e-3 /** Epsilon value for miter limits. Miter limits differing less are treated as equal. */ #define DK4_GRA_EPSILON_MITERLIMIT 1.0e-3 /** Flags for adding images to a page. */ enum { /** The image is the only page contents. For PS output the gsave operator, clipping and white filling at start of page are removed, the grestore at end of page too. */ DK4_GRA_IMG_FLAG_ONLY_PAGE_CONTENTS = 0x0001 , /** Fill image background with color from background chunk before applying image data. Only in effect when producing PDF output in DK4_CS_RGB_ALPHA or DK4_CS_GRAY_ALPHA color space. */ DK4_GRA_IMG_FLAG_FILL_BACKGROUND = 0x0002 , /** Allow colored output. Otherwise grayscaled output is enforced. */ DK4_GRA_IMG_FLAG_COLOR = 0x0004 , /** Allow LZW compression in PS language level 2 output. */ DK4_GRA_IMG_FLAG_LZW = 0x0008 , /** Allow to use DCT encoded data from JPEG files directly. */ DK4_GRA_IMG_FLAG_DCT = 0x0010 , /** Set image interpolation flag to allow PS/PDF renderers to optimize representation. */ DK4_GRA_IMG_FLAG_INTERPOLATION = 0x0020 , /** Set image interpolation flag when directly using DCT encoded data from JPEG files. */ DK4_GRA_IMG_FLAG_DCT_INTERPOLATION = 0x0040 , /** Analyze number of bits per component, reduce if possible without quality loss. */ DK4_GRA_IMG_FLAG_ANALYZE_BPC = 0x0080 , /** Analyze use of colors, switch to grayscale if possible without quality loss. */ DK4_GRA_IMG_FLAG_ANALYZE_COLOR = 0x0100 , /** Analyze use of alpha channel data, ignore alpha data if all pixels have full opacity. */ DK4_GRA_IMG_FLAG_ANALYZE_ALPHA = 0x0200 , /** Allow to rotate the image to fit paper size. */ DK4_GRA_IMG_FLAG_ALLOW_ROTATION = 0x0400 , /** Ignore image resolution saved in file. */ DK4_GRA_IMG_FLAG_IGNORE_RESOLUTION = 0x0800 , /** Ignore aspect ratio, allow distorsion while filling the specified image range completely. */ DK4_GRA_IMG_FLAG_IGNORE_ASPECT_RATIO = 0x1000 , }; /** Text flags for use with dk4gra_pgf_simple_text(), dk4gra_pgf_special_text(), dk4gra_app_pgf_simple_text(), dk4gra_app_pgf_special_text(), dk4pppt_simple_text(), and dk4pppt_special_text(), can be or-combined. */ enum { /** Draw oval box around text. */ DK4_GRA_TEXT_FLAG_OVAL_BOX = 0x0001 , /** Put white box around text and oval box. */ DK4_GRA_TEXT_FLAG_WHITE_BOX = 0x0002 }; /** Output driver to choose. */ typedef enum { DK4_GRA_DRIVER_PDF = 0, /**< Produce PDF file. */ DK4_GRA_DRIVER_EPS , /**< Produce EPS file. */ DK4_GRA_DRIVER_PS , /**< Produce PS file. */ DK4_GRA_DRIVER_PGF , /**< Produce PGF file. */ DK4_GRA_DRIVER_BB /**< Produce bounding box file. */ } dk4_gra_driver_t; /** Intended purpose for output. */ typedef enum { DK4_GRA_PURPOSE_OBJECT = 0 , /**< Object to include in a document. */ DK4_GRA_PURPOSE_IMAGE , /**< Standalone image. */ DK4_GRA_PURPOSE_DOCUMENT /**< Document for viewing or printing. */ } dk4_gra_purpose_t; /** Line styles. */ typedef enum { DK4_GRA_LS_SOLID = 0 , /**< Solid line. */ DK4_GRA_LS_DASH , /**< Dashed line. */ DK4_GRA_LS_DOT , /**< Dotted line. */ DK4_GRA_LS_DASH_DOT , /**< Dash dot line. */ DK4_GRA_LS_DASH_DOT_DOT , /**< Dash dot dot line. */ DK4_GRA_LS_DASH_DOT_DOT_DOT /**< Dash dot dot dot line. */ } dk4_gra_ls_t; /** Line cap styles. */ typedef enum { DK4_GRA_LC_BUTTED = 0, /**< Line finished exactly at point. */ DK4_GRA_LC_ROUNDED , /**< Half circle added at each line end. */ DK4_GRA_LC_PROJECTING /**< Half square added at each line end. */ } dk4_gra_lc_t; /** Line join styles. */ typedef enum { DK4_GRA_LJ_MITERED = 0, /**< Pointed. */ DK4_GRA_LJ_ROUNDED , /**< Rounded. */ DK4_GRA_LJ_BEVELED /**< Cutted point. */ } dk4_gra_lj_t; /** Flags for new pages. Or-combinations allowed. */ enum { /** Do not set clip path. */ DK4_GRA_PAGE_FLAG_NO_CLIP = 0x0001 , /** Do not fill background in white. */ DK4_GRA_PAGE_FLAG_NO_BG = 0x0002 , /** Use uncompressed PDF page stream. Intended for debugging purposes only. */ DK4_GRA_PAGE_FLAG_NOT_COMPRESSED = 0x0004 , /** Use front side and back side of paper. */ DK4_GRA_DOC_FLAG_DUPLEX = 0x0200 , /** Use front side and back side of paper, binding like a calendar. */ DK4_GRA_DOC_FLAG_TUMBLE = 0x0400 , /** Force use of grayscaled output instead of colors. */ DK4_GRA_DOC_FLAG_FORCE_GRAY = 0x0800 , /** Use PS level 2 instead of level 3. */ DK4_GRA_DOC_FLAG_PS2 = 0x1000 , /** Produce document structuring comments. */ DK4_GRA_DOC_FLAG_PS_DSC = 0x2000 , /** Produce EPS instead of normal PS. */ DK4_GRA_DOC_FLAG_EPS = 0x4000 }; /** Fill patterns. */ typedef enum { /** Diagonal lines 30 degrees to the left. */ DK4_GRA_PATTERN_30_DEGREE_LEFT = 0, /** Diagonal lines 30 degrees to the right. */ DK4_GRA_PATTERN_30_DEGREE_RIGHT , /** Crosshatch of lines 30 degrees to the left and right. */ DK4_GRA_PATTERN_30_DEGREE_SIEVE , /** Diagonal lines 45 degrees to the left. */ DK4_GRA_PATTERN_45_DEGREE_LEFT , /** Diagonal lines 45 degrees to the left. */ DK4_GRA_PATTERN_45_DEGREE_RIGHT , /** Crosshatch of lines 45 degrees to the left and right. */ DK4_GRA_PATTERN_45_DEGREE_SIEVE , /** Horizontal bricks. */ DK4_GRA_PATTERN_HORIZONTAL_BRICKS , /** Vertical bricks. */ DK4_GRA_PATTERN_VERTICAL_BRICKS , /** Horizontal lines. */ DK4_GRA_PATTERN_HORIZONTAL_LINES , /** Vertical lines. */ DK4_GRA_PATTERN_VERTICAL_LINES , /** Crosshatch of horizontal and vertical lines. */ DK4_GRA_PATTERN_HORIZONTAL_VERTICAL_SIEVE , /** Horizontal shingles skewed to the left. */ DK4_GRA_PATTERN_HORIZONTAL_SHINGLES_LEFT , /** Horizontal shingles skewed to the right. */ DK4_GRA_PATTERN_HORIZONTAL_SHINGLES_RIGHT , /** Vertical shingles skewed to one side. */ DK4_GRA_PATTERN_VERTICAL_SHINGLES_1 , /** Vertical shingles skewed to the other side. */ DK4_GRA_PATTERN_VERTICAL_SHINGLES_2 , /** Large fish scales. */ DK4_GRA_PATTERN_LARGE_FISH_SCALES , /** Small fish scales. */ DK4_GRA_PATTERN_SMALL_FISH_SCALES , /** Circles. */ DK4_GRA_PATTERN_CIRCLES , /** Hexagons. */ DK4_GRA_PATTERN_HEXAGONS , /** Octagons. */ DK4_GRA_PATTERN_OCTAGONS , /** Horizontal tire treads. */ DK4_GRA_PATTERN_HORIZONTAL_TIRES , /** Vertical tire treads. */ DK4_GRA_PATTERN_VERTICAL_TIRES } dk4_gra_pattern_t; /** Maximum pattern number. */ enum { /** Maximum pattern number. */ DK4_GRA_PATTERN_MAX = DK4_GRA_PATTERN_VERTICAL_TIRES }; /** Type of preamble line to add. */ enum { DK4_GRA_PREAMBLE_FONT = 0 , /**< Line to load font package. */ DK4_GRA_PREAMBLE_PACKAGE , /**< Line to load other packages. */ DK4_GRA_PREAMBLE_OTHER /**< Any other configuration line. */ }; /** Output structure to produce a PS or EPS file. */ typedef struct { int llev; /**< PS language level. */ int dsc; /**< Flag: Write DSC comments. */ int fspd; /**< Flag: Use setpagedevice for paper size. */ int fdu; /**< Flag: Duplex. */ int ftu; /**< Flag: Duplex and tumble. */ } dk4_gra_ps_output_t; /** Output structure to produce a PDF file. */ typedef struct { dk4_sto_t *s_imagno; /**< Images container by object number. */ dk4_sto_it_t *i_imagno; /**< Images iterator. */ dk4_sto_t *s_images; /**< Images container by data source. */ dk4_sto_it_t *i_images; /**< Images iterator. */ dk4_sto_t *s_objpos; /**< Object positions container. */ dk4_sto_it_t *i_objpos; /**< Object positions iterator. */ size_t nextobj; /**< Object number of next XObject. */ size_t unxo; /**< Number of XObjects without file name. */ } dk4_gra_pdf_output_t; /** Output structure to produce a PGF file. */ typedef struct { dk4_font_collector_t *fc; /**< Font collector. */ dk4_sto_t *s_imagno; /**< Images container by number. */ dk4_sto_it_t *i_imagno; /**< Images iterator. */ dk4_sto_t *s_images; /**< Images container by data source. */ dk4_sto_it_t *i_images; /**< Images iterator. */ dk4_sto_t *s_prelfo; /**< Containter for font setup. */ dk4_sto_it_t *i_prelfo; /**< Font setup iterator. */ dk4_sto_t *s_prelpa; /**< Container for packages. */ dk4_sto_it_t *i_prelpa; /**< Packages iterator. */ dk4_sto_t *s_prelot; /**< Container for other setup. */ dk4_sto_it_t *i_prelot; /**< Other setup iterator. */ double dfs; /**< Document font size. */ size_t n_images; /**< Next image number. */ size_t n_prelfo; /**< Number of font setup lines. */ size_t n_prelpa; /**< Number of package setup lines. */ size_t n_prelot; /**< Number of other setup lines. */ int sa; /**< Flag: Produce standalone doc. */ } dk4_gra_pgf_output_t; /** Union of output structure types. */ typedef union { dk4_gra_ps_output_t ps; /**< Produce PS/EPS output. */ dk4_gra_pdf_output_t pdf; /**< Produce PDF output. */ dk4_gra_pgf_output_t pgf; /**< Produce PGF output. */ } dk4_gra_all_output_t; /** Output structure to produce a graphics file. */ typedef struct { dk4_gra_all_output_t out; /**< Output structure. */ dk4_cs_conv_ctx_t cscctx; /**< Color space conversion context. */ dk4_sto_t *s_pages; /**< Pages container. */ dk4_sto_it_t *i_pages; /**< Iterator through container. */ dkChar *fn; /**< Output file name. */ void *curpg; /**< Current page. */ double cur_x; /**< Current x position. */ double cur_y; /**< Current y position. */ double patlw; /**< Pattern line width. */ size_t pages; /**< Number of pages. */ size_t w; /**< Image width. */ size_t h; /**< Image height. */ int dr; /**< Output driver. */ int gscp; /**< Flag: Graphics state pattern clip. */ int eor; /**< Flag: Use even-odd-rule fill clip. */ int le; /**< Previous error. */ int lec; /**< Previous error code. */ int len; /**< Number how often previous error. */ int docfl; /**< Document flag set. */ } dk4_gra_t; /** Point coordinates in a graphics. */ typedef struct { double x; /**< X value. */ double y; /**< Y value. */ } dk4_gra_point_t; #ifdef __cplusplus extern "C" { #endif /** Open output structure to create a PDF file. @param fn File name for output file, NULL for standard output. @param w Image width in bp. @param h Image height in bp. @param docfl Document flags. The flags can contain both document and page flags, page flags here are applied as default page flags for pages added by the dk4gra_page() function. The following document flags are available: - DK4_GRA_DOC_FLAG_PS2
to produce PS level 2 instead of level 3, - DK4_GRA_DOC_FLAG_EPS
to produce EPS instead of PS, - DK4_GRA_DOC_FLAG_PS_DSC
to write document structuring comments, - DK4_GRA_DOC_FLAG_FORCE_GRAY
to enforce grayscaled output. The following page flags are available: - DK4_GRA_PAGE_FLAG_NO_CLIP
to skip setting the clip path to page size, - DK4_GRA_PAGE_FLAG_NO_BG
to skip filling the page with a white background, - DK4_GRA_PAGE_FLAG_NOT_COMPRESSED
to create an uncompressed page contents stream in PDF output (intended for debugging only). @param erp Error report, may be NULL. @return Valid pointer to new structure on success, NULL on error. Error codes: - DK4_E_INVALID_ARGUMENTS
if fn is NULL, w or h is 0, - DK4_E_MATH_OVERFLOW
on numeric overflow in memory size calculation, - DK4_E_MEMORY_ALLOCATION_FAILED
if there is not enough memory available. */ dk4_gra_t * dk4gra_open_pdf( const dkChar *fn, size_t w, size_t h, int docfl, dk4_er_t *erp ); /** Open output structure to create a PS or EPS file. @param fn File name for output file, NULL for standard output. @param w Image width in bp. @param h Image height in bp. @param docfl Document flags. The flags can contain both document and page flags, page flags here are applied as default page flags for pages added by the dk4gra_page() function. @param erp Error report, may be NULL. @return Valid pointer to new structure on success, NULL on error. Error codes: - DK4_E_INVALID_ARGUMENTS
if fn is NULL, w or h is 0 or ll is neither 2 nor 3. - DK4_E_MATH_OVERFLOW
on numeric overflow in memory size calculation, - DK4_E_MEMORY_ALLOCATION_FAILED
if there is not enough memory available. */ dk4_gra_t * dk4gra_open_ps( const dkChar *fn, size_t w, size_t h, int docfl, dk4_er_t *erp ); /** Open output structure to create a PGF file. @param fn File name for output file, NULL for standard output. @param w Image width in bp. @param h Image height in bp. @param docfl Document flags. The flags can contain both document and page flags, page flags here are applied as default page flags for pages added by the dk4gra_page() function. @param sa Flag: Produce standalone TeX file. @param erp Error report, may be NULL. @return Valid pointer to new structure on success, NULL on error. Error codes: - DK4_E_INVALID_ARGUMENTS
if fn is NULL, w or h is 0, - DK4_E_MATH_OVERFLOW
on numeric overflow in memory size calculation, - DK4_E_MEMORY_ALLOCATION_FAILED
if there is not enough memory available. */ dk4_gra_t * dk4gra_open_pgf( const dkChar *fn, size_t w, size_t h, int docfl, int sa, dk4_er_t *erp ); /** Set color space conversion context. @param gra Output structure. @param ctx Color space conversion context to copy. @param backptr Address of success variable to reset on error. @param erp Error report, may be NULL. Error codes: - DK4_E_INVALID_ARGUMENTS
if gra or ctx is NULL. */ void dk4gra_set_color_conversion( dk4_gra_t *gra, dk4_cs_conv_ctx_t const *ctx, int *backptr, dk4_er_t *erp ); /** Write output file and close output structure. @param gra Output structure. @param erp Error report, may be NULL. @param backptr Address of success variable to reset on errors. Error codes: - DK4_E_INVALID_ARGUMENTS
if gra is NULL or in a state allowing this operation, - DK4_E_WRITE_FAILED
if writing one ore multiple bytes to the stream failed, - DK4_E_FLUSH_FAILED
if flushing data downwards failed. */ void dk4gra_write_and_close( dk4_gra_t *gra, int *backptr, dk4_er_t *erp ); /** Write output file and close output structure. @param fout Output file already opened. @param gra Output structure. @param erp Error report, may be NULL. @param backptr Address of success variable to reset on errors. Error codes: - DK4_E_INVALID_ARGUMENTS
if gra is NULL, - DK4_E_INVALID_ARGUMENTS
if gra is not in a state allowing this operation, - DK4_E_WRITE_FAILED
if writing one ore multiple bytes to the stream failed, - DK4_E_FLUSH_FAILED
if flushing data downwards failed. */ void dk4gra_write_file_and_close( FILE *fout, dk4_gra_t *gra, int *backptr, dk4_er_t *erp ); /** Close output structure (without writing output file). You might want to use this function instead of dk4gra_write_and_close() if the drawing functions indicated an error. @param gra Output structure. */ void dk4gra_close( dk4_gra_t *gra ); /** Start new page. Default flags are used for the page: - The clip path is set to the image dimensions. - Background is filled white. - For PDF the contents stream is compressed. To start a new page with different setup, use dk4gra_page_with_flags() instead and specify flags. @param gra Output structure. @param erp Error report, may be NULL. @param backptr Address of success variable to reset on errors. Error codes: - DK4_E_INVALID_ARGUMENTS
if gra is NULL, or in a state allowing this operation, - DK4_E_MATH_OVERFLOW
on numeric overflow in memory size calculation, - DK4_E_MEMORY_ALLOCATION_FAILED
if there is not enough memory available, - DK4_E_WRITE_FAILED
if writing one ore multiple bytes to the stream failed, - DK4_E_FLUSH_FAILED
if flushing data downwards failed. */ void dk4gra_page( dk4_gra_t *gra, int *backptr, dk4_er_t *erp ); /** Start new page with non-default setup. @param gra Output structure. @param flags Or-combined flags: - DK4_GRA_PAGE_FLAG_NO_CLIP
to avoid setting the clip path at start of page, - DK4_GRA_PAGE_FLAG_NO_BG
to avoid white background filling, - DK4_GRA_PAGE_FLAG_NOT_COMPRESSED
to avoid compression of page content stream in PDF. @param backptr Address of success variable to reset on errors. @param erp Error report, may be NULL. Error codes: - DK4_E_INVALID_ARGUMENTS
if gra is NULL or not in a state allowing this operation, - DK4_E_MATH_OVERFLOW
on numeric overflow in memory size calculation, - DK4_E_MEMORY_ALLOCATION_FAILED
if there is not enough memory available, - DK4_E_WRITE_FAILED
if writing one ore multiple bytes to the stream failed, - DK4_E_FLUSH_FAILED
if flushing data downwards failed. */ void dk4gra_page_with_flags( dk4_gra_t *gra, int flags, int *backptr, dk4_er_t *erp ); /** Set flag for simplified gsave/grestore handling. Set this flag, if you use gsave and grestore only when dealing with clip path for pattern filling. @param gra Output structure. @param val New flag value. @param erp Error report, may be NULL. Error codes: - DK4_E_INVALID_ARGUMENTS
if gra is NULL. */ void dk4gra_set_gs_for_pattern_only( dk4_gra_t *gra, int val, dk4_er_t *erp ); /** Save current graphics state (especially clip path). @param gra Output structure. @param erp Error report, may be NULL. @param backptr Address of success variable to reset on errors. Error codes: - DK4_E_INVALID_ARGUMENTS
if gra is NULL or not in a state allowing this operation, - DK4_E_MATH_OVERFLOW
on numeric overflow in memory size calculation, - DK4_E_MEMORY_ALLOCATION_FAILED
if there is not enough memory available, - DK4_E_WRITE_FAILED
if writing one ore multiple bytes to the stream failed, - DK4_E_FLUSH_FAILED
if flushing data downwards failed. */ void dk4gra_gsave( dk4_gra_t *gra, int *backptr, dk4_er_t *erp ); /** Restore graphics state (especially clip path). @param gra Output structure. @param backptr Address of success variable to reset on errors. @param erp Error report, may be NULL. Error codes: - DK4_E_INVALID_ARGUMENTS
if gra is NULL or not in a state allowing this operation, - DK4_E_MATH_OVERFLOW
on numeric overflow in memory size calculation, - DK4_E_MEMORY_ALLOCATION_FAILED
if there is not enough memory available, - DK4_E_WRITE_FAILED
if writing one ore multiple bytes to the stream failed, - DK4_E_FLUSH_FAILED
if flushing data downwards failed. */ void dk4gra_grestore( dk4_gra_t *gra, int *backptr, dk4_er_t *erp ); /** Set line width. @param gra Output structure. @param lw Line width in bp. @param backptr Address of success variable to reset on errors. @param erp Error report, may be NULL. Error codes: - DK4_E_INVALID_ARGUMENTS
if gra is NULL or not in a state allowing this operation. */ void dk4gra_set_line_width( dk4_gra_t *gra, double lw, int *backptr, dk4_er_t *erp ); /** Set line style. @param gra Output structure. @param ls Line style. @param sv Style value (dash length in bp). @param backptr Address of success variable to reset on errors. @param erp Error report, may be NULL. Error codes: - DK4_E_INVALID_ARGUMENTS
if gra is NULL or not in a state allowing this operation. */ void dk4gra_set_line_style( dk4_gra_t *gra, dk4_gra_ls_t ls, double sv, int *backptr, dk4_er_t *erp ); /** Set line cap. @param gra Output structure. @param lc Line cap type. @param backptr Address of success variable to reset on errors. @param erp Error report, may be NULL. Error codes: - DK4_E_INVALID_ARGUMENTS
if gra is NULL or not in a state allowing this operation. */ void dk4gra_set_line_cap( dk4_gra_t *gra, dk4_gra_lc_t lc, int *backptr, dk4_er_t *erp ); /** Set line join. @param gra Output structure. @param lj Line join type. @param ml Miter limit, only used if lj is DK4_GRA_LJ_MITERED. @param backptr Address of success variable to reset on errors. @param erp Error report, may be NULL. Error codes: - DK4_E_INVALID_ARGUMENTS
if gra is NULL or not in a state allowing this operation. */ void dk4gra_set_line_join( dk4_gra_t *gra, dk4_gra_lj_t lj, double ml, int *backptr, dk4_er_t *erp ); /** Set fill color to gray. @param gra Output structure. @param g Gray value in interval 0 to 1. @param backptr Address of success variable to reset on errors. @param erp Error report, may be NULL. Error codes: - DK4_E_INVALID_ARGUMENTS
if gra is NULL or not in a state allowing this operation. */ void dk4gra_set_fill_gray( dk4_gra_t *gra, double g, int *backptr, dk4_er_t *erp ); /** Set fill color to RGB. @param gra Output structure. @param r Red value in interval 0 to 1. @param g Green value in interval 0 to 1. @param b Blue value in interval 0 to 1. @param backptr Address of success variable to reset on errors. @param erp Error report, may be NULL. Error codes: - DK4_E_INVALID_ARGUMENTS
if gra is NULL or not in a state allowing this operation. */ void dk4gra_set_fill_rgb( dk4_gra_t *gra, double r, double g, double b, int *backptr, dk4_er_t *erp ); /** Set fill color to CMYK. @param gra Output structure. @param c Cyan value in interval 0 to 1. @param m Magenta value in interval 0 to 1. @param y Yellow value in interval 0 to 1. @param k Black value in interval 0 to 1. @param backptr Address of success variable to reset on errors. @param erp Error report, may be NULL. Error codes: - DK4_E_INVALID_ARGUMENTS
if gra is NULL or not in a state allowing this operation. */ void dk4gra_set_fill_cmyk( dk4_gra_t *gra, double c, double m, double y, double k, int *backptr, dk4_er_t *erp ); /** Set stroke color to gray. @param gra Output structure. @param g Gray value in interval 0 to 1. @param backptr Address of success variable to reset on errors. @param erp Error report, may be NULL. Error codes: - DK4_E_INVALID_ARGUMENTS
if gra is NULL or not in a state allowing this operation. */ void dk4gra_set_stroke_gray( dk4_gra_t *gra, double g, int *backptr, dk4_er_t *erp ); /** Set stroke color to RGB. @param gra Output structure. @param r Red value in interval 0 to 1. @param g Green value in interval 0 to 1. @param b Blue value in interval 0 to 1. @param backptr Address of success variable to reset on errors. @param erp Error report, may be NULL. Error codes: - DK4_E_INVALID_ARGUMENTS
if gra is NULL or not in a state allowing this operation. */ void dk4gra_set_stroke_rgb( dk4_gra_t *gra, double r, double g, double b, int *backptr, dk4_er_t *erp ); /** Set stroke color to CMYK. @param gra Output structure. @param c Cyan value in interval 0 to 1. @param m Magenta value in interval 0 to 1. @param y Yellow value in interval 0 to 1. @param k Black value in interval 0 to 1. @param backptr Address of success variable to reset on errors. @param erp Error report, may be NULL. Error codes: - DK4_E_INVALID_ARGUMENTS
if gra is NULL or not in a state allowing this operation. */ void dk4gra_set_stroke_cmyk( dk4_gra_t *gra, double c, double m, double y, double k, int *backptr, dk4_er_t *erp ); /** Prepare output structure for a fill operation. Use this function before you start to construct a path you plan to fill. @param gra Output structure. @param backptr Address of success variable to reset on errors. @param erp Error report, may be NULL. Error codes: - DK4_E_INVALID_ARGUMENTS
if gra is NULL or not in a state allowing this operation, - DK4_E_MATH_OVERFLOW
on numeric overflow in memory size calculation, - DK4_E_MEMORY_ALLOCATION_FAILED
if there is not enough memory available, - DK4_E_WRITE_FAILED
if writing one ore multiple bytes to the stream failed, - DK4_E_FLUSH_FAILED
if flushing data downwards failed. */ void dk4gra_prepare_fill( dk4_gra_t *gra, int *backptr, dk4_er_t *erp ); /** Prepare output structure for a stroke operation. Use this function before you start to construct a path you plan to stroke. @param gra Output structure. @param backptr Address of success variable to reset on errors. @param erp Error report, may be NULL. Error codes: - DK4_E_INVALID_ARGUMENTS
if gra is NULL or not in a state allowing this operation, - DK4_E_MATH_OVERFLOW
on numeric overflow in memory size calculation, - DK4_E_MEMORY_ALLOCATION_FAILED
if there is not enough memory available, - DK4_E_WRITE_FAILED
if writing one ore multiple bytes to the stream failed, - DK4_E_FLUSH_FAILED
if flushing data downwards failed. */ void dk4gra_prepare_stroke( dk4_gra_t *gra, int *backptr, dk4_er_t *erp ); /** Prepare output structure for a combined fill and stroke operation. Use this function before you start to construct a path you plan to fill and stroke. @param gra Output structure. @param backptr Address of success variable to reset on errors. @param erp Error report, may be NULL. Error codes: - DK4_E_INVALID_ARGUMENTS
if gra is NULL or not in a state allowing this operation, - DK4_E_MATH_OVERFLOW
on numeric overflow in memory size calculation, - DK4_E_MEMORY_ALLOCATION_FAILED
if there is not enough memory available, - DK4_E_WRITE_FAILED
if writing one ore multiple bytes to the stream failed, - DK4_E_FLUSH_FAILED
if flushing data downwards failed. */ void dk4gra_prepare_fill_and_stroke( dk4_gra_t *gra, int *backptr, dk4_er_t *erp ); /** Check whether a combined fill and close operation is available for an output structure. @param gra Output structure to test. @return 1 if a fill-and-close operation is available, 0 otherwise. */ int dk4gra_can_fill_and_stroke( const dk4_gra_t *gra ); /** Fill current path. Note: Use dk4gra_prepare_fill() before you start to construct a path you plan to fill. The value of the even-odd-rule flag is used to choose either even-odd-rule or nonzero-winding-rule, the dk4gra_set_eorule() function can be used to set the flag. @param gra Output structure. @param backptr Address of success variable to reset on errors. @param erp Error report, may be NULL. Error codes: - DK4_E_INVALID_ARGUMENTS
if gra is NULL or not in a state allowing this operation, - DK4_E_MATH_OVERFLOW
on numeric overflow in memory size calculation, - DK4_E_MEMORY_ALLOCATION_FAILED
if there is not enough memory available, - DK4_E_WRITE_FAILED
if writing one ore multiple bytes to the stream failed, - DK4_E_FLUSH_FAILED
if flushing data downwards failed. */ void dk4gra_fill( dk4_gra_t *gra, int *backptr, dk4_er_t *erp ); /** Stroke current path. Note: Use dk4gra_prepare_stroke() before you start to construct a path you plan to stroke. @param gra Output structure. @param backptr Address of success variable to reset on errors. @param erp Error report, may be NULL. Error codes: - DK4_E_INVALID_ARGUMENTS
if gra is NULL or not in a state allowing this operation, - DK4_E_MATH_OVERFLOW
on numeric overflow in memory size calculation, - DK4_E_MEMORY_ALLOCATION_FAILED
if there is not enough memory available, - DK4_E_WRITE_FAILED
if writing one ore multiple bytes to the stream failed, - DK4_E_FLUSH_FAILED
if flushing data downwards failed. */ void dk4gra_stroke( dk4_gra_t *gra, int *backptr, dk4_er_t *erp ); /** Fill and stroke current path. Note: Use dk4gra_prepare_fill_and_stroke() before you start to construct a path you plan to fill and stroke. The value of the even-odd-rule flag is used to choose either even-odd-rule or nonzero-winding-rule, the dk4gra_set_eorule() function can be used to set the flag. @param gra Output structure. @param backptr Address of success variable to reset on errors. @param erp Error report, may be NULL. Error codes: - DK4_E_INVALID_ARGUMENTS
if gra is NULL or not in a state allowing this operation, - DK4_E_MATH_OVERFLOW
on numeric overflow in memory size calculation, - DK4_E_MEMORY_ALLOCATION_FAILED
if there is not enough memory available, - DK4_E_WRITE_FAILED
if writing one ore multiple bytes to the stream failed, - DK4_E_FLUSH_FAILED
if flushing data downwards failed. */ void dk4gra_fill_and_stroke( dk4_gra_t *gra, int *backptr, dk4_er_t *erp ); /** Use current path for clipping. The value of the even-odd-rule flag is used to choose either even-odd-rule or nonzero-winding-rule, the dk4gra_set_eorule() function can be used to set the flag. @param gra Output structure. @param backptr Address of success variable to reset on errors. @param erp Error report, may be NULL. Error codes: - DK4_E_INVALID_ARGUMENTS
if gra is NULL or not in a state allowing this operation, - DK4_E_MATH_OVERFLOW
on numeric overflow in memory size calculation, - DK4_E_MEMORY_ALLOCATION_FAILED
if there is not enough memory available, - DK4_E_WRITE_FAILED
if writing one ore multiple bytes to the stream failed, - DK4_E_FLUSH_FAILED
if flushing data downwards failed. */ void dk4gra_clip( dk4_gra_t *gra, int *backptr, dk4_er_t *erp ); /** Set line width for pattern drawing. The pattern line width should be in range 0.0 to 2.0. @param gra Output structure. @param plw New pattern line width in bp. */ void dk4gra_set_pattern_line_width( dk4_gra_t *gra, double plw ); /** Pattern a region (clipping should be set to the path). @param gra Output structure. @param xl Left y coordinate. @param xr Right x coordinate. @param yb Bottom y coordinate. @param yt Top y coordinate. @param pn Pattern number. @param backptr Address of success variable to reset on errors. @param erp Error report, may be NULL. Error codes: - DK4_E_INVALID_ARGUMENTS
if gra is NULL or not in a state allowing this operation, - DK4_E_MATH_OVERFLOW
on numeric overflow in memory size calculation, - DK4_E_MEMORY_ALLOCATION_FAILED
if there is not enough memory available, - DK4_E_WRITE_FAILED
if writing one ore multiple bytes to the stream failed, - DK4_E_FLUSH_FAILED
if flushing data downwards failed. */ void dk4gra_pattern( dk4_gra_t *gra, double xl, double xr, double yb, double yt, dk4_gra_pattern_t pn, int *backptr, dk4_er_t *erp ); /** Set flag for even-odd-rule. If this flag is on, the even-odd-rule is used for filling and clipping. Otherwise the nonzero-winding rule is used. By default this flag is turned on when creating a dk4_gra_t structure. @param gra Output structure. @param val New flag value. */ void dk4gra_set_eorule( dk4_gra_t *gra, int val ); /** Start a new path and move to first point. @param gra Output structure. @param x X coordinate of start point. @param y Y coordinate of start point. @param bbptr Bounding box, may be NULL. @param backptr Address of success variable to reset on errors. @param erp Error report, may be NULL. Error codes: - DK4_E_INVALID_ARGUMENTS
if gra is NULL or not in a state allowing this operation, - DK4_E_MATH_OVERFLOW
on numeric overflow in memory size calculation, - DK4_E_MEMORY_ALLOCATION_FAILED
if there is not enough memory available, - DK4_E_WRITE_FAILED
if writing one ore multiple bytes to the stream failed, - DK4_E_FLUSH_FAILED
if flushing data downwards failed. */ void dk4gra_newpath_moveto( dk4_gra_t *gra, double x, double y, dk4_bb_t *bbptr, int *backptr, dk4_er_t *erp ); /** Add line from current point to new point to path. @param gra Output structure. @param x X coordinate of new point. @param y Y coordinate of new point. @param bbptr Bounding box, may be NULL. @param backptr Address of success variable to reset on errors. @param erp Error report, may be NULL. Error codes: - DK4_E_INVALID_ARGUMENTS
if gra is NULL or not in a state allowing this operation, - DK4_E_MATH_OVERFLOW
on numeric overflow in memory size calculation, - DK4_E_MEMORY_ALLOCATION_FAILED
if there is not enough memory available, - DK4_E_WRITE_FAILED
if writing one ore multiple bytes to the stream failed, - DK4_E_FLUSH_FAILED
if flushing data downwards failed. */ void dk4gra_lineto( dk4_gra_t *gra, double x, double y, dk4_bb_t *bbptr, int *backptr, dk4_er_t *erp ); /** Add Bezier curve segment from current point to new point in path. @param gra Output structure. @param xc1 X coordinate of first control point. @param yc1 Y coordinate of first control point. @param xc2 X coordinate of second control point. @param yc2 Y coordinate of second control point. @param x X coordinate of new point. @param y Y coordinate of new point. @param bbptr Bounding box, may be NULL. @param backptr Address of success variable to reset on errors. @param erp Error report, may be NULL. Error codes: - DK4_E_INVALID_ARGUMENTS
if gra is NULL or not in a state allowing this operation, - DK4_E_MATH_OVERFLOW
on numeric overflow in memory size calculation, - DK4_E_MEMORY_ALLOCATION_FAILED
if there is not enough memory available, - DK4_E_WRITE_FAILED
if writing one ore multiple bytes to the stream failed, - DK4_E_FLUSH_FAILED
if flushing data downwards failed. */ void dk4gra_curveto( dk4_gra_t *gra, double xc1, double yc1, double xc2, double yc2, double x, double y, dk4_bb_t *bbptr, int *backptr, dk4_er_t *erp ); /** Close current path. @param gra Output structure. @param backptr Address of success variable to reset on errors. @param erp Error report, may be NULL. Error codes: - DK4_E_INVALID_ARGUMENTS
if gra is NULL or not in a state allowing this operation, - DK4_E_MATH_OVERFLOW
on numeric overflow in memory size calculation, - DK4_E_MEMORY_ALLOCATION_FAILED
if there is not enough memory available, - DK4_E_WRITE_FAILED
if writing one ore multiple bytes to the stream failed, - DK4_E_FLUSH_FAILED
if flushing data downwards failed. */ void dk4gra_closepath( dk4_gra_t *gra, int *backptr, dk4_er_t *erp ); /** Create path for a circle. @param gra Output structure. @param xc Center point x coordinate. @param yc Center point y coordinate. @param r Radius. @param bbptr Bounding box, may be NULL. @param backptr Address of success variable to reset on errors. @param erp Error report, may be NULL. Error codes: - DK4_E_INVALID_ARGUMENTS
if gra is NULL or not in a state allowing this operation, - DK4_E_MATH_OVERFLOW
on numeric overflow in memory size calculation, - DK4_E_MEMORY_ALLOCATION_FAILED
if there is not enough memory available, - DK4_E_WRITE_FAILED
if writing one ore multiple bytes to the stream failed, - DK4_E_FLUSH_FAILED
if flushing data downwards failed. */ void dk4gra_circle( dk4_gra_t *gra, double xc, double yc, double r, dk4_bb_t *bbptr, int *backptr, dk4_er_t *erp ); /** Create path for rectangle parallel to axes, optionally with rounded corners. @param gra Output structure. @param xl Left x coordinate. @param xr Right x coordinate. @param yb Bottom y coordinate. @param yt Top y coordinate. @param r Corner radius, maximum is a half of the smaller side length. Use negative values to avoid rounded corners. @param bbptr Bounding box, may be NULL. @param backptr Address of success variable to reset on errors. @param erp Error report, may be NULL. Error codes: - DK4_E_INVALID_ARGUMENTS
if gra is NULL or not in a state allowing this operation, - DK4_E_MATH_OVERFLOW
on numeric overflow in memory size calculation, - DK4_E_MEMORY_ALLOCATION_FAILED
if there is not enough memory available, - DK4_E_WRITE_FAILED
if writing one ore multiple bytes to the stream failed, - DK4_E_FLUSH_FAILED
if flushing data downwards failed. */ void dk4gra_rectangle( dk4_gra_t *gra, double xl, double xr, double yb, double yt, double r, dk4_bb_t *bbptr, int *backptr, dk4_er_t *erp ); /** Add path for an arc. @param gra Output structure. @param xc Center point x coordinate. @param yc Center point y coordinate. @param ra Radius. @param start Start angle in degree. @param end End angle in degree. @param cl Flag: Draw closed arc (piece of cake) instead of simple arc. @param bbptr Bounding box, may be NULL. @param backptr Address of success variable to reset on errors. @param erp Error report, may be NULL. Error codes: - DK4_E_INVALID_ARGUMENTS
if gra is NULL or not in a state allowing this operation, - DK4_E_MATH_OVERFLOW
on numeric overflow in memory size calculation, - DK4_E_MEMORY_ALLOCATION_FAILED
if there is not enough memory available, - DK4_E_WRITE_FAILED
if writing one ore multiple bytes to the stream failed, - DK4_E_FLUSH_FAILED
if flushing data downwards failed. */ void dk4gra_arc( dk4_gra_t *gra, double xc, double yc, double ra, double start, double end, int cl, dk4_bb_t *bbptr, int *backptr, dk4_er_t *erp ); /** Create path for an ellipse. @param gra Output structure. @param xc Center point x coordinate. @param yc Center point y coordinate. @param rx Radius in x direction. @param ry Radius in y direction. @param rot Rotation counterclockwise in degree. @param bbptr Bounding box, may be NULL. @param backptr Address of success variable to reset on errors. @param erp Error report, may be NULL. Error codes: - DK4_E_INVALID_ARGUMENTS
if gra is NULL or not in a state allowing this operation, - DK4_E_MATH_OVERFLOW
on numeric overflow in memory size calculation, - DK4_E_MEMORY_ALLOCATION_FAILED
if there is not enough memory available, - DK4_E_WRITE_FAILED
if writing one ore multiple bytes to the stream failed, - DK4_E_FLUSH_FAILED
if flushing data downwards failed. */ void dk4gra_ellipse( dk4_gra_t *gra, double xc, double yc, double rx, double ry, double rot, dk4_bb_t *bbptr, int *backptr, dk4_er_t *erp ); /** Add simple (non-special) text to PGF graphics. The text is shown in the current fill color (non-stroking color) unless a color is specified in colspec. @param gra Output structure, must be initialized for PGF. @param x X coordinate. @param y Y coordinate. @param rot Rotation counterclockwise in degree. @param txt Text to show. @param colspec Color specification, may be NULL to use fill color. @param ie Text encoding, only used for char text. @param ha Horizontal alignment. @param va Vertical alignment. @param fno Font number. @param fsz Font size in pt. @param fex Flag: Use exact font (1) or similar font (0). @param uc2l UC to LaTeX conversion structure. @param flags Text flags DK4_GRA_TEXT_FLAG_xxx, can be or-combined. @param backptr Address of success variable to reset on errors. @param erp Error report, may be NULL. Error codes: - DK4_E_INVALID_ARGUMENTS
if gra is NULL or not in a state allowing this operation, - DK4_E_MATH_OVERFLOW
on numeric overflow in memory size calculation, - DK4_E_MEMORY_ALLOCATION_FAILED
if there is not enough memory available, - DK4_E_WRITE_FAILED
if writing one ore multiple bytes to the stream failed, - DK4_E_FLUSH_FAILED
if flushing data downwards failed. */ void dk4gra_pgf_simple_text( dk4_gra_t *gra, double x, double y, double rot, const dkChar *txt, const char *colspec, int ie, dk4_text_align_h_t ha, dk4_text_align_v_t va, int fno, double fsz, dk4_gra_tf_t fex, dk4_uc2l_t *uc2l, int flags, int *backptr, dk4_er_t *erp ); /** Add simple (non-special) text to PGF graphics. The text is shown in the current fill color (non-stroking color) unless a color is specified in colspec. @param gra Output structure, must be initialized for PGF. @param x X coordinate. @param y Y coordinate. @param rot Rotation counterclockwise in degree. @param txt Text to show. @param colspec Color specification, may be NULL to use fill color. @param ha Horizontal alignment. @param va Vertical alignment. @param fno Font number. @param fsz Font size in pt. @param fex Flag: Use exact font (1) or similar font (0). @param uc2l UC to LaTeX conversion structure. @param flags Text flags DK4_GRA_TEXT_FLAG_xxx, can be or-combined. @param backptr Address of success variable to reset on errors. @param erp Error report, may be NULL. Error codes: - DK4_E_INVALID_ARGUMENTS
if gra is NULL or not in a state allowing this operation, - DK4_E_MATH_OVERFLOW
on numeric overflow in memory size calculation, - DK4_E_MEMORY_ALLOCATION_FAILED
if there is not enough memory available, - DK4_E_WRITE_FAILED
if writing one ore multiple bytes to the stream failed, - DK4_E_FLUSH_FAILED
if flushing data downwards failed. */ void dk4gra_pgf_simple_utf8_text( dk4_gra_t *gra, double x, double y, double rot, const char *txt, const char *colspec, dk4_text_align_h_t ha, dk4_text_align_v_t va, int fno, double fsz, dk4_gra_tf_t fex, dk4_uc2l_t *uc2l, int flags, int *backptr, dk4_er_t *erp ); /** Add special text to PGF graphics. The text is shown in the current fill color (non-stroking color) unless a color is specified in colspec. @param gra Output structure, must be initialized for PGF. @param x X coordinate. @param y Y coordinate. @param rot Rotation counterclockwise in degree. @param txt Text to show. @param colspec Color specification, may be NULL to use fill color. @param ha Horizontal alignment. @param va Vertical alignment. @param fno Font number. @param fsz Font size. @param fex Flag: Use exact font. @param flags Text flags DK4_GRA_TEXT_FLAG_xxx, can be or-combined. @param backptr Address of success variable to reset on errors. @param erp Error report, may be NULL. Error codes: - DK4_E_INVALID_ARGUMENTS
if gra is NULL or not in a state allowing this operation, - DK4_E_MATH_OVERFLOW
on numeric overflow in memory size calculation, - DK4_E_MEMORY_ALLOCATION_FAILED
if there is not enough memory available, - DK4_E_WRITE_FAILED
if writing one ore multiple bytes to the stream failed, - DK4_E_FLUSH_FAILED
if flushing data downwards failed. */ void dk4gra_pgf_special_text( dk4_gra_t *gra, double x, double y, double rot, const char *txt, const char *colspec, dk4_text_align_h_t ha, dk4_text_align_v_t va, int fno, double fsz, dk4_gra_tf_t fex, int flags, int *backptr, dk4_er_t *erp ); /** Set the font size for the documentclass line. @param gra Output structure, must be initialized for PGF. @param fs Font size in pt. @param backptr Address of success variable to reset on error. @param erp Error report, may be NULL. */ void dk4gra_pgf_doc_font_size( dk4_gra_t *gra, double fs, int *backptr, dk4_er_t *erp ); /** Add a preamble line. For font setup and package setup the lines added by this function replace the default contents. For other setup the lines added by this function are appended after the default contents. @param gra Output structure, must be initialized for PGF. @param line Line text without trailing newline. @param tp Line type: DK4_GRA_PREAMBLE_FONT, DK4_GRA_PREAMBLE_PACKAGE, or DK4_GRA_PREAMBLE_OTHER. @param backptr Address of success variable to reset on error. @param erp Error report, may be NULL. */ void dk4gra_pgf_doc_preamble_line( dk4_gra_t *gra, const char *line, int tp, int *backptr, dk4_er_t *erp ); /** Add bitmap image with coordinates transformations already calculated. @param gra Output structure. @param cotra Array containing 5 elements for coordinates transformations. @param bif Bitmap image file. @param fn Image file name. @param fno Frame number. The frame number given here is used by the PDF output driver only. You must call dk4bif_set_current_frame() on the bitmap image file before calling this function. @param ifl Image flags. @param backptr Address of success variable to reset on errors. @param erp Error report, may be NULL. Error codes: - DK4_E_INVALID_ARGUMENTS
if gra is NULL or bif is NULL or a frame number other than 0 was specified for PGF output or gra is not in a state allowing this operation, - DK4_E_MATH_OVERFLOW
on numeric overflow in memory size calculation, - DK4_E_MEMORY_ALLOCATION_FAILED
if there is not enough memory available, - DK4_E_WRITE_FAILED
if writing one ore multiple bytes to the stream failed, - DK4_E_FLUSH_FAILED
if flushing data downwards failed. */ void dk4gra_bif_cotra_image( dk4_gra_t *gra, double *cotra, dk4_bif_t *bif, const dkChar *fn, size_t fno, int ifl, int *backptr, dk4_er_t *erp ); /** Add bitmap image XFig style from opened bitmap image file. @param gra Output structure. @param xl Left x coordinate. @param xr Right x coordinate. @param yb Bottom y coordinate. @param yt Top y coordinate. @param bif Bitmap image file. @param fn Image file name. @param fno Frame number (0 for first frame). @param pos Image positioning: - 0 not rotated, not flipped, - 1 rotated 90 degree counterclockwise, not flipped, - 2 rotated 180 degree counterclockwise, not flipped, - 3 rotated 270 degree counterclockwise, not flipped, - 4 not rotated, flipped, - 5 rotated 90 degree counterclockwise, flipped, - 6 rotated 180 degree counterclockwise, flipped, - 7 rotated 270 degree counterclockwise, flipped. @param ifl Image flags. @param bbptr Bounding box, may be NULL. @param backptr Address of success variable to reset on errors. @param erp Error report, may be NULL. Error codes: - DK4_E_INVALID_ARGUMENTS
if gra is NULL or bif is NULL or a frame number other than 0 was specified for PGF output or gra is not in a state allowing this operation, - DK4_E_MATH_OVERFLOW
on numeric overflow in memory size calculation, - DK4_E_MEMORY_ALLOCATION_FAILED
if there is not enough memory available, - DK4_E_WRITE_FAILED
if writing one ore multiple bytes to the stream failed, - DK4_E_FLUSH_FAILED
if flushing data downwards failed. */ void dk4gra_bif_fig_image( dk4_gra_t *gra, double xl, double xr, double yb, double yt, dk4_bif_t *bif, const dkChar *fn, size_t fno, int pos, int ifl, dk4_bb_t *bbptr, int *backptr, dk4_er_t *erp ); /** Add bitmap image from opened bitmap image file. @param gra Output structure. @param xl Left x coordinate. @param xr Right x coordinate. @param yb Bottom y coordinate. @param yt Top y coordinate. @param bif Bitmap image file data. @param fn Image file name. @param fno Frame number (0 for first frame). @param ifl Image flags. @param bbptr Bounding box, may be NULL. @param backptr Address of success variable to reset on errors. @param erp Error report, may be NULL. Error codes: - DK4_E_INVALID_ARGUMENTS
if gra is NULL or bif is NULL or gra is not in a state allowing this operation, - DK4_E_MATH_OVERFLOW
on numeric overflow in memory size calculation, - DK4_E_MEMORY_ALLOCATION_FAILED
if there is not enough memory available, - DK4_E_WRITE_FAILED
if writing one ore multiple bytes to the stream failed, - DK4_E_FLUSH_FAILED
if flushing data downwards failed. */ void dk4gra_bif_image( dk4_gra_t *gra, double xl, double xr, double yb, double yt, dk4_bif_t *bif, const dkChar *fn, size_t fno, int ifl, dk4_bb_t *bbptr, int *backptr, dk4_er_t *erp ); /** Add bitmap image specified by file name. @param gra Output structure. @param xl Left x coordinate. @param xr Right x coordinate. @param yb Bottom y coordinate. @param yt Top y coordinate. @param fn Image file name. @param fno Frame number (0 for first frame). @param ctx Bitmap image conversion context, may be NULL. @param ifl Image flags. @param bbptr Bounding box, may be NULL. @param backptr Address of success variable to reset on errors. @param erp Error report, may be NULL. Error codes: - DK4_E_INVALID_ARGUMENTS
if gra is NULL or bif is NULL or gra is not in a state allowing this operation, - DK4_E_MATH_OVERFLOW
on numeric overflow in memory size calculation, - DK4_E_MEMORY_ALLOCATION_FAILED
if there is not enough memory available, - DK4_E_WRITE_FAILED
if writing one ore multiple bytes to the stream failed, - DK4_E_FLUSH_FAILED
if flushing data downwards failed. */ void dk4gra_image( dk4_gra_t *gra, double xl, double xr, double yb, double yt, const dkChar *fn, size_t fno, dk4_cs_conv_ctx_t *ctx, int ifl, dk4_bb_t *bbptr, int *backptr, dk4_er_t *erp ); /** Add bitmap image XFig style specified by file name. @param gra Output structure. @param xl Left x coordinate. @param xr Right x coordinate. @param yb Bottom y coordinate. @param yt Top y coordinate. @param fn Image file name. @param fno Frame number (0 for first frame). @param ctx Bitmap image conversion context, may be NULL. @param pos Image positioning: - 0 not rotated, not flipped, - 1 rotated 90 degree counterclockwise, not flipped, - 2 rotated 180 degree counterclockwise, not flipped, - 3 rotated 270 degree counterclockwise, not flipped, - 4 not rotated, flipped, - 5 rotated 90 degree counterclockwise, flipped, - 6 rotated 180 degree counterclockwise, flipped, - 7 rotated 270 degree counterclockwise, flipped. @param ifl Image flags. @param bbptr Bounding box, may be NULL. @param backptr Address of success variable to reset on errors. @param erp Error report, may be NULL. Error codes: - DK4_E_INVALID_ARGUMENTS
if gra is NULL or bif is NULL or gra is not in a state allowing this operation, - DK4_E_MATH_OVERFLOW
on numeric overflow in memory size calculation, - DK4_E_MEMORY_ALLOCATION_FAILED
if there is not enough memory available, - DK4_E_WRITE_FAILED
if writing one ore multiple bytes to the stream failed, - DK4_E_FLUSH_FAILED
if flushing data downwards failed. */ void dk4gra_fig_image( dk4_gra_t *gra, double xl, double xr, double yb, double yt, const dkChar *fn, size_t fno, dk4_cs_conv_ctx_t *ctx, int pos, int ifl, dk4_bb_t *bbptr, int *backptr, dk4_er_t *erp ); #ifdef __cplusplus } #endif /** Number of points to calculate for a circle or ellipse. */ enum { /** Number of points to calculate for a circle or ellipse. */ DK4_GRA_CIRCLE_POINTS = 24 }; /* vim: set ai sw=4 ts=4 : */ #endif