Index: trunk/src_plugins/export_svg/svg.c
===================================================================
--- trunk/src_plugins/export_svg/svg.c (revision 11095)
+++ trunk/src_plugins/export_svg/svg.c (revision 11096)
@@ -66,7 +66,7 @@
pcb_cap_style_t cap;
int width;
char *color;
- int erase, drill;
+ int drill;
unsigned warned_elliptical:1;
} hid_gc_s;
@@ -87,16 +87,17 @@
static FILE *f = NULL;
static int group_open = 0;
static int opacity = 100, drawing_mask, drawing_hole, photo_mode, flip;
-static pcb_mask_op_t mask_mode = HID_MASK_OFF;
-gds_t sbright, sdark, snormal;
+static gds_t sbright, sdark, snormal, sclip;
+static pcb_composite_op_t drawing_mode;
+static int comp_cnt;
/* Photo mode colors and hacks */
-const char *board_color = "#464646";
-const char *mask_color = "#00ff00";
-float mask_opacity_factor = 0.5;
+static const char *board_color = "#464646";
+static const char *mask_color = "#00ff00";
+static float mask_opacity_factor = 0.5;
-enum {
+static enum {
PHOTO_MASK,
PHOTO_SILK,
PHOTO_COPPER,
@@ -103,7 +104,7 @@
PHOTO_INNER
} photo_color;
-struct {
+static struct {
const char *bright;
const char *normal;
const char *dark;
@@ -274,6 +275,8 @@
int i;
pcb_coord_t w, h, x1, y1, x2, y2;
+ comp_cnt = 0;
+
if (!options) {
svg_get_export_options(0);
for (i = 0; i < NUM_OPTIONS; i++)
@@ -408,20 +411,33 @@
static void svg_use_mask(pcb_mask_op_t use_it)
{
- mask_mode = use_it;
- switch(mask_mode) {
- case HID_MASK_INIT:
- pcb_append_printf(&snormal, "\n");
+}
+
+static void svg_set_drawing_mode(pcb_composite_op_t op, pcb_bool direct, const pcb_box_t *screen)
+{
+ drawing_mode = op;
+ switch(op) {
+ case PCB_HID_COMP_RESET:
+ comp_cnt++;
+ gds_init(&sclip);
+ pcb_append_printf(&snormal, "\n");
pcb_append_printf(&snormal, "\n");
- pcb_append_printf(&snormal, "\n", PCB->MaxWidth, PCB->MaxHeight);
- pcb_append_printf(&snormal, "\n", PCB->MaxWidth, PCB->MaxHeight);
+ pcb_append_printf(&snormal, "\n", comp_cnt);
+ pcb_append_printf(&sclip, "\n", comp_cnt, PCB->MaxWidth, PCB->MaxHeight);
break;
- case HID_MASK_OFF:
- pcb_append_printf(&snormal, "\n");
- pcb_append_printf(&snormal, "\n");
+ case PCB_HID_COMP_POSITIVE:
+ case PCB_HID_COMP_NEGATIVE:
+ break;
+
+ case PCB_HID_COMP_FLUSH:
+ pcb_append_printf(&snormal, "\n");
+ pcb_append_printf(&sclip, "\n");
+ gds_append_str(&snormal, sclip.array);
pcb_append_printf(&snormal, "\n");
- pcb_append_printf(&snormal, "