1 /* Libart_LGPL - library of basic graphic primitives 2 * Copyright (C) 2001 Raph Levien 3 * 4 * This library is free software; you can redistribute it and/or 5 * modify it under the terms of the GNU Library General Public 6 * License as published by the Free Software Foundation; either 7 * version 2 of the License, or (at your option) any later version. 8 * 9 * This library is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 * Library General Public License for more details. 13 * 14 * You should have received a copy of the GNU Library General Public 15 * License along with this library; if not, write to the 16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, 17 * Boston, MA 02111-1307, USA. 18 */ 19 20 #ifndef __ART_SVP_INTERSECT_H__ 21 #define __ART_SVP_INTERSECT_H__ 22 23 /* The funky new SVP intersector. */ 24 25 #ifdef LIBART_COMPILATION 26 #include "art_svp.h" 27 #else 28 #include <libart_lgpl/art_svp.h> 29 #endif 30 31 #ifdef __cplusplus 32 extern "C" { 33 #endif /* __cplusplus */ 34 35 #ifndef ART_WIND_RULE_DEFINED 36 #define ART_WIND_RULE_DEFINED 37 typedef enum { 38 ART_WIND_RULE_NONZERO, 39 ART_WIND_RULE_INTERSECT, 40 ART_WIND_RULE_ODDEVEN, 41 ART_WIND_RULE_POSITIVE 42 } ArtWindRule; 43 #endif 44 45 typedef struct _ArtSvpWriter ArtSvpWriter; 46 47 struct _ArtSvpWriter { 48 int (*add_segment) (ArtSvpWriter *self, int wind_left, int delta_wind, 49 double x, double y); 50 void (*add_point) (ArtSvpWriter *self, int seg_id, double x, double y); 51 void (*close_segment) (ArtSvpWriter *self, int seg_id); 52 }; 53 54 ArtSvpWriter * 55 art_svp_writer_rewind_new (ArtWindRule rule); 56 57 ArtSVP * 58 art_svp_writer_rewind_reap (ArtSvpWriter *self); 59 60 int 61 art_svp_seg_compare (const void *s1, const void *s2); 62 63 void 64 art_svp_intersector (const ArtSVP *in, ArtSvpWriter *out); 65 66 #ifdef __cplusplus 67 } 68 #endif /* __cplusplus */ 69 70 #endif /* __ART_SVP_INTERSECT_H__ */ 71