1 /* 2 * This file is a part of Poly2Tri-C 3 * (c) Barak Itkin <lightningismyname@gmail.com> 4 * http://code.google.com/p/poly2tri-c/ 5 * 6 * All rights reserved. 7 * 8 * Redistribution and use in source and binary forms, with or without modification, 9 * are permitted provided that the following conditions are met: 10 * 11 * * Redistributions of source code must retain the above copyright notice, 12 * this list of conditions and the following disclaimer. 13 * * Redistributions in binary form must reproduce the above copyright notice, 14 * this list of conditions and the following disclaimer in the documentation 15 * and/or other materials provided with the distribution. 16 * * Neither the name of Poly2Tri nor the names of its contributors may be 17 * used to endorse or promote products derived from this software without specific 18 * prior written permission. 19 * 20 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 21 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 22 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 23 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 24 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 25 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 26 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 27 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 28 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 29 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 30 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31 */ 32 33 #ifndef __P2TC_RENDER_SVG_PLOT_H__ 34 #define __P2TC_RENDER_SVG_PLOT_H__ 35 36 #include <poly2tri-c/refine/refine.h> 37 38 typedef guint8 P2trSVGColor[4]; 39 40 typedef struct 41 { 42 gboolean stroke; 43 gdouble stroke_width; 44 P2trSVGColor stroke_color; 45 gboolean fill; 46 P2trSVGColor fill_color; 47 gdouble opacity; 48 } P2trSVGContext; 49 50 void p2tr_render_svg_init (FILE *out, 51 const P2trVector2 *bottom_left, 52 const P2trVector2 *top_right); 53 54 void p2tr_render_svg_draw_line (FILE *out, 55 P2trSVGContext *context, 56 const P2trVector2 *start, 57 const P2trVector2 *end); 58 59 void p2tr_render_svg_draw_triangle (FILE *out, 60 P2trSVGContext *context, 61 const P2trVector2 *p1, 62 const P2trVector2 *p2, 63 const P2trVector2 *p3); 64 65 void p2tr_render_svg_draw_circle (FILE *out, 66 P2trSVGContext *context, 67 const P2trVector2 *center, 68 gdouble radius); 69 70 void p2tr_render_svg_finish (FILE *out); 71 72 void p2tr_render_svg (P2trMesh *mesh, 73 FILE *out); 74 75 #endif 76