Index: trunk/src/board.c =================================================================== --- trunk/src/board.c (revision 24881) +++ trunk/src/board.c (revision 24882) @@ -88,7 +88,7 @@ ptr->RatDraw = pcb_false; /* NOTE: we used to set all the pcb flags on ptr here, but we don't need to do that anymore due to the new conf system */ - ptr->Grid = conf_core.editor.grid; + ptr->hidlib.grid = conf_core.editor.grid; ptr->MaxHeight = ptr->MaxWidth = PCB_MM_TO_COORD(20); /* should be overriden by the default design */ ptr->ID = pcb_create_ID_get(); @@ -289,10 +289,10 @@ { if (Grid >= 1 && Grid <= PCB_MAX_GRID) { if (align) { - PCB->GridOffsetX = ox % Grid; - PCB->GridOffsetY = oy % Grid; + PCB->hidlib.grid_ox = ox % Grid; + PCB->hidlib.grid_oy = oy % Grid; } - PCB->Grid = Grid; + PCB->hidlib.grid = Grid; conf_set_design("editor/grid", "%$mS", Grid); if (conf_core.editor.draw_grid) pcb_redraw(); Index: trunk/src/board.h =================================================================== --- trunk/src/board.h (revision 24881) +++ trunk/src/board.h (revision 24882) @@ -54,6 +54,7 @@ #include "attrib.h" #include "rats_patch.h" #include "font.h" +#include "hidlib.h" typedef htsp_t pcb_netlist_t; @@ -64,6 +65,8 @@ | This struct is also used for the remove list and for buffer handling */ struct pcb_board_s { + pcb_hidlib_t hidlib; + long ID; char *Name; /* name of board */ char *Filename; /* name of file (from load) */ @@ -78,7 +81,6 @@ pcb_bool RatDraw; /* we're drawing rats */ pcb_bool loose_subc; /* when set, subc parts are not locked into the subc */ - pcb_coord_t Grid, GridOffsetX, GridOffsetY; /* as saved with layout */ pcb_coord_t MaxWidth, MaxHeight; /* board dimensions (drawing area extents) */ double ThermScale; /* scale factor used with thermals */ Index: trunk/src/change_act.c =================================================================== --- trunk/src/change_act.c (revision 24881) +++ trunk/src/change_act.c (revision 24882) @@ -769,9 +769,9 @@ } pcb_grid_inval(); if (val[0] == '*') - pcb_board_set_grid(pcb_round(PCB->Grid * d), pcb_false, 0, 0); + pcb_board_set_grid(pcb_round(PCB->hidlib.grid * d), pcb_false, 0, 0); else - pcb_board_set_grid(pcb_round(PCB->Grid / d), pcb_false, 0, 0); + pcb_board_set_grid(pcb_round(PCB->hidlib.grid / d), pcb_false, 0, 0); } value = pcb_get_value(val, units, &absolute, NULL); @@ -784,12 +784,12 @@ else { /* On the way down, short against the minimum * PCB drawing unit */ - if ((value + PCB->Grid) < 1) + if ((value + PCB->hidlib.grid) < 1) pcb_board_set_grid(1, pcb_false, 0, 0); - else if (PCB->Grid == 1) + else if (PCB->hidlib.grid == 1) pcb_board_set_grid(value, pcb_false, 0, 0); else - pcb_board_set_grid(value + PCB->Grid, pcb_false, 0, 0); + pcb_board_set_grid(value + PCB->hidlib.grid, pcb_false, 0, 0); } break; Index: trunk/src/conf_act.c =================================================================== --- trunk/src/conf_act.c (revision 24881) +++ trunk/src/conf_act.c (revision 24882) @@ -271,11 +271,11 @@ PCB_ACT_CONVARG(1, FGW_STR, ChkGridSize, dst = argv[1].val.str); if (strcmp(dst, "none") == 0) { - PCB_ACT_IRES(PCB->Grid <= 300); + PCB_ACT_IRES(PCB->hidlib.grid <= 300); return 0; } - PCB_ACT_IRES(PCB->Grid == pcb_get_value_ex(dst, NULL, NULL, NULL, NULL, NULL)); + PCB_ACT_IRES(PCB->hidlib.grid == pcb_get_value_ex(dst, NULL, NULL, NULL, NULL, NULL)); return 0; } Index: trunk/src/crosshair.c =================================================================== --- trunk/src/crosshair.c (revision 24881) +++ trunk/src/crosshair.c (revision 24882) @@ -862,8 +862,8 @@ nearest_grid_y = -PCB_MIL_TO_COORD(6); } else { - nearest_grid_x = pcb_grid_fit(pcb_crosshair.X, PCB->Grid, PCB->GridOffsetX); - nearest_grid_y = pcb_grid_fit(pcb_crosshair.Y, PCB->Grid, PCB->GridOffsetY); + nearest_grid_x = pcb_grid_fit(pcb_crosshair.X, PCB->hidlib.grid, PCB->hidlib.grid_ox); + nearest_grid_y = pcb_grid_fit(pcb_crosshair.Y, PCB->hidlib.grid, PCB->hidlib.grid_oy); if (pcb_marked.status && conf_core.editor.orthogonal_moves) { pcb_coord_t dx = pcb_crosshair.X - pcb_marked.X; @@ -1034,12 +1034,12 @@ */ void pcb_center_display(pcb_coord_t X, pcb_coord_t Y) { - pcb_coord_t save_grid = PCB->Grid; - PCB->Grid = 1; + pcb_coord_t save_grid = PCB->hidlib.grid; + PCB->hidlib.grid = 1; if (pcb_crosshair_move_absolute(X, Y)) pcb_notify_crosshair_change(pcb_true); pcb_gui->set_crosshair(pcb_crosshair.X, pcb_crosshair.Y, HID_SC_WARP_POINTER); - PCB->Grid = save_grid; + PCB->hidlib.grid = save_grid; } /* --------------------------------------------------------------------------- Index: trunk/src/global_typedefs.h =================================================================== --- trunk/src/global_typedefs.h (revision 24881) +++ trunk/src/global_typedefs.h (revision 24882) @@ -29,6 +29,7 @@ #define GLOBAL_TYPEDEFS_H #include "config.h" +typedef struct pcb_hidlib_s pcb_hidlib_t; typedef struct pcb_board_s pcb_board_t; typedef struct pcb_data_s pcb_data_t; typedef struct pcb_layer_stack_s pcb_layer_stack_t; Index: trunk/src/gui_act.c =================================================================== --- trunk/src/gui_act.c (revision 24881) +++ trunk/src/gui_act.c (revision 24882) @@ -286,9 +286,9 @@ /* shift grid alignment */ case F_ToggleGrid: { - pcb_coord_t oldGrid = PCB->Grid; + pcb_coord_t oldGrid = PCB->hidlib.grid; - PCB->Grid = 1; + PCB->hidlib.grid = 1; if (pcb_crosshair_move_absolute(pcb_crosshair.X, pcb_crosshair.Y)) pcb_notify_crosshair_change(pcb_true); /* first notify was in MoveCrosshairAbs */ pcb_board_set_grid(oldGrid, pcb_true, pcb_crosshair.X, pcb_crosshair.Y); @@ -360,8 +360,8 @@ PCB_ACT_FAIL(Display); return FGW_ERR_ARG_CONV; } - PCB->GridOffsetX = pcb_get_value(argv[2].val.str, NULL, NULL, NULL); - PCB->GridOffsetY = pcb_get_value(argv[3].val.str, NULL, NULL, NULL); + PCB->hidlib.grid_ox = pcb_get_value(argv[2].val.str, NULL, NULL, NULL); + PCB->hidlib.grid_oy = pcb_get_value(argv[3].val.str, NULL, NULL, NULL); if (conf_core.editor.draw_grid) pcb_redraw(); } @@ -975,10 +975,10 @@ pcb_coord_t view_width, view_height; const char *a1, *a2, *a3; - extra_units_x[0].scale = PCB->Grid; + extra_units_x[0].scale = PCB->hidlib.grid; extra_units_x[2].scale = PCB->MaxWidth; - extra_units_y[0].scale = PCB->Grid; + extra_units_y[0].scale = PCB->hidlib.grid; extra_units_y[2].scale = PCB->MaxHeight; pcb_gui->get_view_size(&view_width, &view_height); Index: trunk/src/hidlib.h =================================================================== --- trunk/src/hidlib.h (revision 24881) +++ trunk/src/hidlib.h (revision 24882) @@ -26,6 +26,11 @@ #include "config.h" +struct pcb_hidlib_s { + pcb_coord_t grid; /* grid resolution */ + pcb_coord_t grid_ox, grid_oy; /* grid offset */ +}; + /* optional: if non-NULL, called back to determine the file name or project name of the current design */ const char *(*pcb_hidlib_get_filename)(void); Index: trunk/src/object_act.c =================================================================== --- trunk/src/object_act.c (revision 24881) +++ trunk/src/object_act.c (revision 24882) @@ -170,10 +170,10 @@ *dx = *minx - obj->BoundingBox.X1; /* snap to the grid */ - *dx -= (ox + *dx) % pcb->Grid; + *dx -= (ox + *dx) % pcb->hidlib.grid; /* and add one grid size so we make sure we always space by GAP or more */ - *dx += pcb->Grid; + *dx += pcb->hidlib.grid; /* Figure out if this row has room. If not, start a new row */ if (GAP + obj->BoundingBox.X2 + *dx > pcb->MaxWidth) { @@ -186,10 +186,10 @@ *dy = *miny - obj->BoundingBox.Y1; /* snap to the grid */ - *dx -= (ox + *dx) % pcb->Grid; - *dx += pcb->Grid; - *dy -= (oy + *dy) % pcb->Grid; - *dy += pcb->Grid; + *dx -= (ox + *dx) % pcb->hidlib.grid; + *dx += pcb->hidlib.grid; + *dy -= (oy + *dy) % pcb->hidlib.grid; + *dy += pcb->hidlib.grid; /* new X2 and Y2 coords with snapping considered */ newx2 = obj->BoundingBox.X2 + *dx; Index: trunk/src/search.c =================================================================== --- trunk/src/search.c (revision 24881) +++ trunk/src/search.c (revision 24882) @@ -1493,7 +1493,7 @@ { int ans; - ans = pcb_search_obj_by_location(Type, Result1, Result2, Result3, X, Y, PCB->Grid / 2); + ans = pcb_search_obj_by_location(Type, Result1, Result2, Result3, X, Y, PCB->hidlib.grid / 2); return ans; } Index: trunk/src/select_act.c =================================================================== --- trunk/src/select_act.c (revision 24881) +++ trunk/src/select_act.c (revision 24882) @@ -134,8 +134,8 @@ pcb_buffer_set_number(PCB_MAX_BUFFER - 1); pcb_buffer_clear(PCB, PCB_PASTEBUFFER); pcb_hid_get_coords("Select the Subcircuit's Origin (mark) Location", &x, &y, 0); - x = pcb_grid_fit(x, PCB->Grid, PCB->GridOffsetX); - y = pcb_grid_fit(y, PCB->Grid, PCB->GridOffsetY); + x = pcb_grid_fit(x, PCB->hidlib.grid, PCB->hidlib.grid_ox); + y = pcb_grid_fit(y, PCB->hidlib.grid, PCB->hidlib.grid_oy); pcb_buffer_add_selected(PCB, PCB_PASTEBUFFER, x, y, pcb_true); pcb_undo_save_serial(); pcb_remove_selected(pcb_false); Index: trunk/src/tool.c =================================================================== --- trunk/src/tool.c (revision 24881) +++ trunk/src/tool.c (revision 24882) @@ -287,8 +287,8 @@ get_grid_lock_coordinates(pcb_crosshair.AttachedObject.Type, pcb_crosshair.AttachedObject.Ptr1, pcb_crosshair.AttachedObject.Ptr2, pcb_crosshair.AttachedObject.Ptr3, &mx, &my); - mx = pcb_grid_fit(mx, PCB->Grid, PCB->GridOffsetX) - mx; - my = pcb_grid_fit(my, PCB->Grid, PCB->GridOffsetY) - my; + mx = pcb_grid_fit(mx, PCB->hidlib.grid, PCB->hidlib.grid_ox) - mx; + my = pcb_grid_fit(my, PCB->hidlib.grid, PCB->hidlib.grid_oy) - my; } pcb_crosshair.AttachedObject.X = PlaceX - mx; pcb_crosshair.AttachedObject.Y = PlaceY - my; Index: trunk/src_plugins/autocrop/autocrop.c =================================================================== --- trunk/src_plugins/autocrop/autocrop.c (revision 24881) +++ trunk/src_plugins/autocrop/autocrop.c (revision 24882) @@ -49,10 +49,10 @@ return 0; pcb_data_bbox(&box, PCB->Data, 0); - dx = -((box.X1 / PCB->Grid - 1) * PCB->Grid); - dy = -((box.Y1 / PCB->Grid - 1) * PCB->Grid); - w = ((box.X2 + dx) / PCB->Grid + 2) * PCB->Grid; - h = ((box.Y2 + dy) / PCB->Grid + 2) * PCB->Grid; + dx = -((box.X1 / PCB->hidlib.grid - 1) * PCB->hidlib.grid); + dy = -((box.Y1 / PCB->hidlib.grid - 1) * PCB->hidlib.grid); + w = ((box.X2 + dx) / PCB->hidlib.grid + 2) * PCB->hidlib.grid; + h = ((box.Y2 + dy) / PCB->hidlib.grid + 2) * PCB->hidlib.grid; if ((dx == 0) && (dy == 0) && (w == PCB->MaxWidth) && (h == PCB->MaxHeight)) return 0; Index: trunk/src_plugins/distalign/distalign.c =================================================================== --- trunk/src_plugins/distalign/distalign.c (revision 24881) +++ trunk/src_plugins/distalign/distalign.c (revision 24882) @@ -324,7 +324,7 @@ dp = q - p; /* ...but if we're gridful, keep the mark on the grid */ if (!gridless) { - dp -= (coord(subc, dir, K_Marks) + dp) % (long) (PCB->Grid); + dp -= (coord(subc, dir, K_Marks) + dp) % (long) (PCB->hidlib.grid); } if (dp) { /* move from generic to X or Y */ @@ -486,7 +486,7 @@ dp = q - p; /* ...but if we're gridful, keep the mark on the grid */ if (!gridless) { - dp -= (coord(subc, dir, K_Marks) + dp) % (long) (PCB->Grid); + dp -= (coord(subc, dir, K_Marks) + dp) % (long) (PCB->hidlib.grid); } if (dp) { /* move from generic to X or Y */ Index: trunk/src_plugins/distaligntext/distaligntext.c =================================================================== --- trunk/src_plugins/distaligntext/distaligntext.c (revision 24881) +++ trunk/src_plugins/distaligntext/distaligntext.c (revision 24882) @@ -350,7 +350,7 @@ /* TODO re-enable for text, need textcoord() if (!gridless) { - dp -= (coord (text, dir, K_Marks) + dp) % (long) (PCB->Grid); + dp -= (coord (text, dir, K_Marks) + dp) % (long) (PCB->hidlib.grid); } */ if (dp) { @@ -378,7 +378,7 @@ /* TODO re-enable for text, need textcoord() if (!gridless) { - dp -= (coord (text, dir, K_Marks) + dp) % (long) (PCB->Grid); + dp -= (coord (text, dir, K_Marks) + dp) % (long) (PCB->hidlib.grid); } */ if (dp) { @@ -550,7 +550,7 @@ /* TODO re-enable grid if (! gridless) { - dp -= (coord (text, dir, K_Marks) + dp) % (long) (PCB->Grid); + dp -= (coord (text, dir, K_Marks) + dp) % (long) (PCB->hidlib.grid); } */ if (dp) { Index: trunk/src_plugins/fontmode/fontmode.c =================================================================== --- trunk/src_plugins/fontmode/fontmode.c (revision 24881) +++ trunk/src_plugins/fontmode/fontmode.c (revision 24882) @@ -123,7 +123,7 @@ PCB->MaxWidth = CELL_SIZE * 18; PCB->MaxHeight = CELL_SIZE * ((PCB_MAX_FONTPOSITION + 15) / 16 + 2); - PCB->Grid = PCB_MIL_TO_COORD(5); + PCB->hidlib.grid = PCB_MIL_TO_COORD(5); /* create the layer stack and logical layers */ pcb_layergrp_inhibit_inc(); Index: trunk/src_plugins/hid_gtk2_gdk/gtkhid-gdk.c =================================================================== --- trunk/src_plugins/hid_gtk2_gdk/gtkhid-gdk.c (revision 24881) +++ trunk/src_plugins/hid_gtk2_gdk/gtkhid-gdk.c (revision 24882) @@ -183,12 +183,12 @@ static GdkPoint *points = NULL; static int npoints = 0; - x1 = pcb_grid_fit(MAX(0, SIDE_X(gport->view.x0)), PCB->Grid, PCB->GridOffsetX); - y1 = pcb_grid_fit(MAX(0, SIDE_Y(gport->view.y0)), PCB->Grid, PCB->GridOffsetY); - x2 = pcb_grid_fit(MIN(PCB->MaxWidth, SIDE_X(gport->view.x0 + gport->view.width - 1)), PCB->Grid, PCB->GridOffsetX); - y2 = pcb_grid_fit(MIN(PCB->MaxHeight, SIDE_Y(gport->view.y0 + gport->view.height - 1)), PCB->Grid, PCB->GridOffsetY); + x1 = pcb_grid_fit(MAX(0, SIDE_X(gport->view.x0)), PCB->hidlib.grid, PCB->hidlib.grid_ox); + y1 = pcb_grid_fit(MAX(0, SIDE_Y(gport->view.y0)), PCB->hidlib.grid, PCB->hidlib.grid_oy); + x2 = pcb_grid_fit(MIN(PCB->MaxWidth, SIDE_X(gport->view.x0 + gport->view.width - 1)), PCB->hidlib.grid, PCB->hidlib.grid_ox); + y2 = pcb_grid_fit(MIN(PCB->MaxHeight, SIDE_Y(gport->view.y0 + gport->view.height - 1)), PCB->hidlib.grid, PCB->hidlib.grid_oy); - grd = PCB->Grid; + grd = PCB->hidlib.grid; if (Vz(grd) < conf_hid_gtk.plugins.hid_gtk.global_grid.min_dist_px) { if (!conf_hid_gtk.plugins.hid_gtk.global_grid.sparse) @@ -260,8 +260,8 @@ recalc = 1; } - if (last_grid != PCB->Grid) { - last_grid = PCB->Grid; + if (last_grid != PCB->hidlib.grid) { + last_grid = PCB->hidlib.grid; recalc = 1; } @@ -273,8 +273,8 @@ int y2 = y*y; for(x = -radius; x <= radius; x++) { if (x*x + y2 < r2) { - points_base[npoints].x = x*PCB->Grid; - points_base[npoints].y = y*PCB->Grid; + points_base[npoints].x = x*PCB->hidlib.grid; + points_base[npoints].y = y*PCB->hidlib.grid; npoints++; } } @@ -304,12 +304,12 @@ if (!conf_hid_gtk.plugins.hid_gtk.local_grid.enable) return; - if ((Vz(PCB->Grid) < PCB_MIN_GRID_DISTANCE) || (!conf_core.editor.draw_grid)) + if ((Vz(PCB->hidlib.grid) < PCB_MIN_GRID_DISTANCE) || (!conf_core.editor.draw_grid)) return; /* cx and cy are the actual cursor snapped to wherever - round them to the nearest real grid point */ - cx = (cx / PCB->Grid) * PCB->Grid + PCB->GridOffsetX; - cy = (cy / PCB->Grid) * PCB->Grid + PCB->GridOffsetY; + cx = (cx / PCB->hidlib.grid) * PCB->hidlib.grid + PCB->hidlib.grid_ox; + cy = (cy / PCB->hidlib.grid) * PCB->hidlib.grid + PCB->hidlib.grid_oy; grid_local_have_old = 1; ghid_gdk_draw_grid_local_(cx, cy, conf_hid_gtk.plugins.hid_gtk.local_grid.radius); Index: trunk/src_plugins/hid_gtk2_gl/gtkhid-gl.c =================================================================== --- trunk/src_plugins/hid_gtk2_gl/gtkhid-gl.c (revision 24881) +++ trunk/src_plugins/hid_gtk2_gl/gtkhid-gl.c (revision 24882) @@ -244,8 +244,8 @@ void ghid_gl_draw_grid_local(pcb_coord_t cx, pcb_coord_t cy) { /* cx and cy are the actual cursor snapped to wherever - round them to the nearest real grid point */ - grid_local_x = (cx / PCB->Grid) * PCB->Grid + PCB->GridOffsetX; - grid_local_y = (cy / PCB->Grid) * PCB->Grid + PCB->GridOffsetY; + grid_local_x = (cx / PCB->hidlib.grid) * PCB->hidlib.grid + PCB->hidlib.grid_ox; + grid_local_y = (cy / PCB->hidlib.grid) * PCB->hidlib.grid + PCB->hidlib.grid_oy; grid_local_radius = conf_hid_gtk.plugins.hid_gtk.local_grid.radius; } @@ -253,7 +253,7 @@ { render_priv_t *priv = gport->render_priv; - if ((Vz(PCB->Grid) < PCB_MIN_GRID_DISTANCE) || (!conf_core.editor.draw_grid)) + if ((Vz(PCB->hidlib.grid) < PCB_MIN_GRID_DISTANCE) || (!conf_core.editor.draw_grid)) return; glEnable(GL_COLOR_LOGIC_OP); Index: trunk/src_plugins/hid_gtk3_cairo/gtkhid-cairo.c =================================================================== --- trunk/src_plugins/hid_gtk3_cairo/gtkhid-cairo.c (revision 24881) +++ trunk/src_plugins/hid_gtk3_cairo/gtkhid-cairo.c (revision 24882) @@ -307,12 +307,12 @@ static GdkPoint *points = NULL; static int npoints = 0; - x1 = pcb_grid_fit(MAX(0, SIDE_X(gport->view.x0)), PCB->Grid, PCB->GridOffsetX); - y1 = pcb_grid_fit(MAX(0, SIDE_Y(gport->view.y0)), PCB->Grid, PCB->GridOffsetY); - x2 = pcb_grid_fit(MIN(PCB->MaxWidth, SIDE_X(gport->view.x0 + gport->view.width - 1)), PCB->Grid, PCB->GridOffsetX); - y2 = pcb_grid_fit(MIN(PCB->MaxHeight, SIDE_Y(gport->view.y0 + gport->view.height - 1)), PCB->Grid, PCB->GridOffsetY); + x1 = pcb_grid_fit(MAX(0, SIDE_X(gport->view.x0)), PCB->hidlib.grid, PCB->hidlib.grid_ox); + y1 = pcb_grid_fit(MAX(0, SIDE_Y(gport->view.y0)), PCB->hidlib.grid, PCB->hidlib.grid_oy); + x2 = pcb_grid_fit(MIN(PCB->MaxWidth, SIDE_X(gport->view.x0 + gport->view.width - 1)), PCB->hidlib.grid, PCB->hidlib.grid_ox); + y2 = pcb_grid_fit(MIN(PCB->MaxHeight, SIDE_Y(gport->view.y0 + gport->view.height - 1)), PCB->hidlib.grid, PCB->hidlib.grid_oy); - grd = PCB->Grid; + grd = PCB->hidlib.grid; if (Vz(grd) < conf_hid_gtk.plugins.hid_gtk.global_grid.min_dist_px) { if (!conf_hid_gtk.plugins.hid_gtk.global_grid.sparse) @@ -403,8 +403,8 @@ recalc = 1; } - if (last_grid != PCB->Grid) { - last_grid = PCB->Grid; + if (last_grid != PCB->hidlib.grid) { + last_grid = PCB->hidlib.grid; recalc = 1; } @@ -416,8 +416,8 @@ int y2 = y * y; for (x = -radius; x <= radius; x++) { if (x * x + y2 < r2) { - points_base[npoints].x = x * PCB->Grid; - points_base[npoints].y = y * PCB->Grid; + points_base[npoints].x = x * PCB->hidlib.grid; + points_base[npoints].y = y * PCB->hidlib.grid; npoints++; } } @@ -448,12 +448,12 @@ if (!conf_hid_gtk.plugins.hid_gtk.local_grid.enable) return; - if ((Vz(PCB->Grid) < PCB_MIN_GRID_DISTANCE) || (!conf_core.editor.draw_grid)) + if ((Vz(PCB->hidlib.grid) < PCB_MIN_GRID_DISTANCE) || (!conf_core.editor.draw_grid)) return; /* cx and cy are the actual cursor snapped to wherever - round them to the nearest real grid point */ - cx = (cx / PCB->Grid) * PCB->Grid + PCB->GridOffsetX; - cy = (cy / PCB->Grid) * PCB->Grid + PCB->GridOffsetY; + cx = (cx / PCB->hidlib.grid) * PCB->hidlib.grid + PCB->hidlib.grid_ox; + cy = (cy / PCB->hidlib.grid) * PCB->hidlib.grid + PCB->hidlib.grid_oy; grid_local_have_old = 1; ghid_cairo_draw_grid_local_(cx, cy, conf_hid_gtk.plugins.hid_gtk.local_grid.radius); Index: trunk/src_plugins/hid_lesstif/main.c =================================================================== --- trunk/src_plugins/hid_lesstif/main.c (revision 24881) +++ trunk/src_plugins/hid_lesstif/main.c (revision 24882) @@ -809,8 +809,8 @@ pcb_hid_get_coords("Click on a location to center", &x, &y, 0); - x = pcb_grid_fit(x, PCB->Grid, PCB->GridOffsetX); - y = pcb_grid_fit(y, PCB->Grid, PCB->GridOffsetY); + x = pcb_grid_fit(x, PCB->hidlib.grid, PCB->hidlib.grid_ox); + y = pcb_grid_fit(y, PCB->hidlib.grid, PCB->hidlib.grid_oy); view_left_x = x - (view_width * view_zoom) / 2; view_top_y = y - (view_height * view_zoom) / 2; lesstif_pan_fixup(); @@ -2130,7 +2130,7 @@ if (!conf_core.editor.draw_grid) return; - if (Vz(PCB->Grid) < PCB_MIN_GRID_DISTANCE) + if (Vz(PCB->hidlib.grid) < PCB_MIN_GRID_DISTANCE) return; if (!grid_gc) { grid_gc = XCreateGC(display, window, 0, 0); @@ -2138,38 +2138,38 @@ XSetForeground(display, grid_gc, grid_color); } if (conf_core.editor.view.flip_x) { - x2 = pcb_grid_fit(Px(0), PCB->Grid, PCB->GridOffsetX); - x1 = pcb_grid_fit(Px(view_width), PCB->Grid, PCB->GridOffsetX); + x2 = pcb_grid_fit(Px(0), PCB->hidlib.grid, PCB->hidlib.grid_ox); + x1 = pcb_grid_fit(Px(view_width), PCB->hidlib.grid, PCB->hidlib.grid_ox); if (Vx(x2) < 0) - x2 -= PCB->Grid; + x2 -= PCB->hidlib.grid; if (Vx(x1) >= view_width) - x1 += PCB->Grid; + x1 += PCB->hidlib.grid; } else { - x1 = pcb_grid_fit(Px(0), PCB->Grid, PCB->GridOffsetX); - x2 = pcb_grid_fit(Px(view_width), PCB->Grid, PCB->GridOffsetX); + x1 = pcb_grid_fit(Px(0), PCB->hidlib.grid, PCB->hidlib.grid_ox); + x2 = pcb_grid_fit(Px(view_width), PCB->hidlib.grid, PCB->hidlib.grid_ox); if (Vx(x1) < 0) - x1 += PCB->Grid; + x1 += PCB->hidlib.grid; if (Vx(x2) >= view_width) - x2 -= PCB->Grid; + x2 -= PCB->hidlib.grid; } if (conf_core.editor.view.flip_y) { - y2 = pcb_grid_fit(Py(0), PCB->Grid, PCB->GridOffsetY); - y1 = pcb_grid_fit(Py(view_height), PCB->Grid, PCB->GridOffsetY); + y2 = pcb_grid_fit(Py(0), PCB->hidlib.grid, PCB->hidlib.grid_oy); + y1 = pcb_grid_fit(Py(view_height), PCB->hidlib.grid, PCB->hidlib.grid_oy); if (Vy(y2) < 0) - y2 -= PCB->Grid; + y2 -= PCB->hidlib.grid; if (Vy(y1) >= view_height) - y1 += PCB->Grid; + y1 += PCB->hidlib.grid; } else { - y1 = pcb_grid_fit(Py(0), PCB->Grid, PCB->GridOffsetY); - y2 = pcb_grid_fit(Py(view_height), PCB->Grid, PCB->GridOffsetY); + y1 = pcb_grid_fit(Py(0), PCB->hidlib.grid, PCB->hidlib.grid_oy); + y2 = pcb_grid_fit(Py(view_height), PCB->hidlib.grid, PCB->hidlib.grid_oy); if (Vy(y1) < 0) - y1 += PCB->Grid; + y1 += PCB->hidlib.grid; if (Vy(y2) >= view_height) - y2 -= PCB->Grid; + y2 -= PCB->hidlib.grid; } - n = (x2 - x1) / PCB->Grid + 1; + n = (x2 - x1) / PCB->hidlib.grid + 1; if (n > npoints) { npoints = n + 10; points = (XPoint *) realloc(points, npoints * sizeof(XPoint)); @@ -2176,7 +2176,7 @@ } n = 0; prevx = 0; - for (x = x1; x <= x2; x += PCB->Grid) { + for (x = x1; x <= x2; x += PCB->hidlib.grid) { int temp = Vx(x); points[n].x = temp; if (n) { @@ -2186,7 +2186,7 @@ prevx = temp; n++; } - for (y = y1; y <= y2; y += PCB->Grid) { + for (y = y1; y <= y2; y += PCB->hidlib.grid) { int vy = Vy(y); points[0].y = vy; XDrawPoints(display, pixmap, grid_gc, points, n, CoordModePrevious); @@ -2196,7 +2196,7 @@ static void mark_delta_to_widget(pcb_coord_t dx, pcb_coord_t dy, Widget w) { char *buf; - double g = pcb_coord_to_unit(conf_core.editor.grid_unit, PCB->Grid); + double g = pcb_coord_to_unit(conf_core.editor.grid_unit, PCB->hidlib.grid); int prec; XmString ms; @@ -2227,7 +2227,7 @@ int this_state = prev_state; char *buf = NULL; const char *msg = ""; - double g = pcb_coord_to_unit(conf_core.editor.grid_unit, PCB->Grid); + double g = pcb_coord_to_unit(conf_core.editor.grid_unit, PCB->hidlib.grid); XmString ms; int prec; @@ -2467,12 +2467,12 @@ static pcb_coord_t old_gx, old_gy; static const pcb_unit_t *old_unit; XmString ms; - if (PCB->Grid != old_grid || PCB->GridOffsetX != old_gx || PCB->GridOffsetY != old_gy || conf_core.editor.grid_unit != old_unit) { + if (PCB->hidlib.grid != old_grid || PCB->hidlib.grid_ox != old_gx || PCB->hidlib.grid_oy != old_gy || conf_core.editor.grid_unit != old_unit) { static char buf[100]; - old_grid = PCB->Grid; + old_grid = PCB->hidlib.grid; old_unit = conf_core.editor.grid_unit; - old_gx = PCB->GridOffsetX; - old_gy = PCB->GridOffsetY; + old_gx = PCB->hidlib.grid_ox; + old_gy = PCB->hidlib.grid_oy; if (old_grid == 1) { strcpy(buf, "No Grid"); } Index: trunk/src_plugins/io_lihata/read.c =================================================================== --- trunk/src_plugins/io_lihata/read.c (revision 24881) +++ trunk/src_plugins/io_lihata/read.c (revision 24882) @@ -410,9 +410,9 @@ grp = lht_dom_hash_get(nd, "grid"); if ((grp != NULL) && (grp->type == LHT_HASH)) { - err |= parse_coord(&pcb->GridOffsetX, hash_get(grp, "offs_x", 1)); - err |= parse_coord(&pcb->GridOffsetY, hash_get(grp, "offs_y", 1)); - err |= parse_coord(&pcb->Grid, hash_get(grp, "spacing", 1)); + err |= parse_coord(&pcb->hidlib.grid_ox, hash_get(grp, "offs_x", 1)); + err |= parse_coord(&pcb->hidlib.grid_oy, hash_get(grp, "offs_y", 1)); + err |= parse_coord(&pcb->hidlib.grid, hash_get(grp, "spacing", 1)); if (err != 0) return -1; } Index: trunk/src_plugins/io_lihata/write.c =================================================================== --- trunk/src_plugins/io_lihata/write.c (revision 24881) +++ trunk/src_plugins/io_lihata/write.c (revision 24882) @@ -139,9 +139,9 @@ grp = lht_dom_node_alloc(LHT_HASH, "grid"); lht_dom_hash_put(meta, grp); - lht_dom_hash_put(grp, build_textf("offs_x", CFMT, pcb->GridOffsetX)); - lht_dom_hash_put(grp, build_textf("offs_y", CFMT, pcb->GridOffsetY)); - lht_dom_hash_put(grp, build_textf("spacing", CFMT, pcb->Grid)); + lht_dom_hash_put(grp, build_textf("offs_x", CFMT, pcb->hidlib.grid_ox)); + lht_dom_hash_put(grp, build_textf("offs_y", CFMT, pcb->hidlib.grid_oy)); + lht_dom_hash_put(grp, build_textf("spacing", CFMT, pcb->hidlib.grid)); grp = lht_dom_node_alloc(LHT_HASH, "size"); lht_dom_hash_put(meta, grp); Index: trunk/src_plugins/io_pcb/file.c =================================================================== --- trunk/src_plugins/io_pcb/file.c (revision 24881) +++ trunk/src_plugins/io_pcb/file.c (revision 24882) @@ -290,7 +290,7 @@ fputs("\nPCB[", FP); pcb_print_quoted_string(FP, (char *) PCB_EMPTY(PCB->Name)); pcb_fprintf(FP, " %[0] %[0]]\n\n", PCB->MaxWidth, PCB->MaxHeight); - pcb_fprintf(FP, "Grid[%[0] %[0] %[0] %d]\n", PCB->Grid, PCB->GridOffsetX, PCB->GridOffsetY, conf_core.editor.draw_grid); + pcb_fprintf(FP, "Grid[%[0] %[0] %[0] %d]\n", PCB->hidlib.grid, PCB->hidlib.grid_ox, PCB->hidlib.grid_oy, conf_core.editor.draw_grid); pcb_fprintf(FP, "Cursor[%[0] %[0] 1000]\n", pcb_crosshair.X, pcb_crosshair.Y); /* PolyArea should be output in square cmils, no suffix */ fprintf(FP, "PolyArea[%s]\n", c_dtostr(PCB_COORD_TO_MIL(PCB_COORD_TO_MIL(conf_core.design.poly_isle_area) * 100) * 100)); Index: trunk/src_plugins/io_pcb/parse_y.c =================================================================== --- trunk/src_plugins/io_pcb/parse_y.c (revision 24881) +++ trunk/src_plugins/io_pcb/parse_y.c (revision 24882) @@ -1,8 +1,9 @@ -/* A Bison parser, made by GNU Bison 3.0.2. */ +/* A Bison parser, made by GNU Bison 3.3.2. */ /* Bison implementation for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc. + Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2019 Free Software Foundation, + Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -40,11 +41,14 @@ define necessary library symbols; they are noted "INFRINGES ON USER NAME SPACE" below. */ +/* Undocumented macros, especially those whose name start with YY_, + are private implementation details. Do not rely on them. */ + /* Identify Bison output. */ #define YYBISON 1 /* Bison version. */ -#define YYBISON_VERSION "3.0.2" +#define YYBISON_VERSION "3.3.2" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -69,8 +73,8 @@ #define yylval pcb_lval #define yychar pcb_char -/* Copy the first part of user declarations. */ -#line 1 "parse_y.y" /* yacc.c:339 */ +/* First part of user prologue. */ +#line 1 "parse_y.y" /* yacc.c:337 */ /* * COPYRIGHT @@ -182,13 +186,16 @@ #include "parse_y.h" -#line 186 "parse_y.c" /* yacc.c:339 */ - +#line 190 "parse_y.c" /* yacc.c:337 */ # ifndef YY_NULLPTR -# if defined __cplusplus && 201103L <= __cplusplus -# define YY_NULLPTR nullptr +# if defined __cplusplus +# if 201103L <= __cplusplus +# define YY_NULLPTR nullptr +# else +# define YY_NULLPTR 0 +# endif # else -# define YY_NULLPTR 0 +# define YY_NULLPTR ((void*)0) # endif # endif @@ -270,10 +277,10 @@ /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED -typedef union YYSTYPE YYSTYPE; + union YYSTYPE { -#line 118 "parse_y.y" /* yacc.c:355 */ +#line 118 "parse_y.y" /* yacc.c:352 */ int integer; double number; @@ -281,8 +288,10 @@ pcb_flag_t flagtype; PLMeasure measure; -#line 285 "parse_y.c" /* yacc.c:355 */ +#line 292 "parse_y.c" /* yacc.c:352 */ }; + +typedef union YYSTYPE YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define YYSTYPE_IS_DECLARED 1 #endif @@ -294,9 +303,7 @@ #endif /* !YY_PCB_PARSE_Y_H_INCLUDED */ -/* Copy the second part of user declarations. */ -#line 300 "parse_y.c" /* yacc.c:358 */ #ifdef short # undef short @@ -317,13 +324,13 @@ #ifdef YYTYPE_UINT16 typedef YYTYPE_UINT16 yytype_uint16; #else -typedef unsigned short int yytype_uint16; +typedef unsigned short yytype_uint16; #endif #ifdef YYTYPE_INT16 typedef YYTYPE_INT16 yytype_int16; #else -typedef short int yytype_int16; +typedef short yytype_int16; #endif #ifndef YYSIZE_T @@ -335,7 +342,7 @@ # include /* INFRINGES ON USER NAME SPACE */ # define YYSIZE_T size_t # else -# define YYSIZE_T unsigned int +# define YYSIZE_T unsigned # endif #endif @@ -371,15 +378,6 @@ # define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__)) #endif -#if !defined _Noreturn \ - && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112) -# if defined _MSC_VER && 1200 <= _MSC_VER -# define _Noreturn __declspec (noreturn) -# else -# define _Noreturn YY_ATTRIBUTE ((__noreturn__)) -# endif -#endif - /* Suppress unused-variable warnings by "using" E. */ #if ! defined lint || defined __GNUC__ # define YYUSE(E) ((void) (E)) @@ -387,7 +385,7 @@ # define YYUSE(E) /* empty */ #endif -#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ +#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ /* Suppress an incorrect diagnostic about yylval being uninitialized. */ # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ _Pragma ("GCC diagnostic push") \ @@ -549,16 +547,16 @@ /* YYNSTATES -- Number of states. */ #define YYNSTATES 643 -/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned - by yylex, with out-of-bounds checking. */ #define YYUNDEFTOK 2 #define YYMAXUTOK 305 +/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM + as returned by yylex, with out-of-bounds checking. */ #define YYTRANSLATE(YYX) \ - ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) + ((unsigned) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM - as returned by yylex, without out-of-bounds checking. */ + as returned by yylex. */ static const yytype_uint8 yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -1135,22 +1133,22 @@ #define YYRECOVERING() (!!yyerrstatus) -#define YYBACKUP(Token, Value) \ -do \ - if (yychar == YYEMPTY) \ - { \ - yychar = (Token); \ - yylval = (Value); \ - YYPOPSTACK (yylen); \ - yystate = *yyssp; \ - goto yybackup; \ - } \ - else \ - { \ - yyerror (YY_("syntax error: cannot back up")); \ - YYERROR; \ - } \ -while (0) +#define YYBACKUP(Token, Value) \ + do \ + if (yychar == YYEMPTY) \ + { \ + yychar = (Token); \ + yylval = (Value); \ + YYPOPSTACK (yylen); \ + yystate = *yyssp; \ + goto yybackup; \ + } \ + else \ + { \ + yyerror (YY_("syntax error: cannot back up")); \ + YYERROR; \ + } \ + while (0) /* Error token number */ #define YYTERROR 1 @@ -1190,37 +1188,37 @@ } while (0) -/*----------------------------------------. -| Print this symbol's value on YYOUTPUT. | -`----------------------------------------*/ +/*-----------------------------------. +| Print this symbol's value on YYO. | +`-----------------------------------*/ static void -yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +yy_symbol_value_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep) { - FILE *yyo = yyoutput; - YYUSE (yyo); + FILE *yyoutput = yyo; + YYUSE (yyoutput); if (!yyvaluep) return; # ifdef YYPRINT if (yytype < YYNTOKENS) - YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); + YYPRINT (yyo, yytoknum[yytype], *yyvaluep); # endif YYUSE (yytype); } -/*--------------------------------. -| Print this symbol on YYOUTPUT. | -`--------------------------------*/ +/*---------------------------. +| Print this symbol on YYO. | +`---------------------------*/ static void -yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +yy_symbol_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep) { - YYFPRINTF (yyoutput, "%s %s (", + YYFPRINTF (yyo, "%s %s (", yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]); - yy_symbol_value_print (yyoutput, yytype, yyvaluep); - YYFPRINTF (yyoutput, ")"); + yy_symbol_value_print (yyo, yytype, yyvaluep); + YYFPRINTF (yyo, ")"); } /*------------------------------------------------------------------. @@ -1254,7 +1252,7 @@ static void yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule) { - unsigned long int yylno = yyrline[yyrule]; + unsigned long yylno = yyrline[yyrule]; int yynrhs = yyr2[yyrule]; int yyi; YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", @@ -1265,7 +1263,7 @@ YYFPRINTF (stderr, " $%d = ", yyi + 1); yy_symbol_print (stderr, yystos[yyssp[yyi + 1 - yynrhs]], - &(yyvsp[(yyi + 1) - (yynrhs)]) + &yyvsp[(yyi + 1) - (yynrhs)] ); YYFPRINTF (stderr, "\n"); } @@ -1369,7 +1367,10 @@ case '\\': if (*++yyp != '\\') goto do_not_strip_quotes; - /* Fall through. */ + else + goto append; + + append: default: if (yyres) yyres[yyn] = *yyp; @@ -1387,7 +1388,7 @@ if (! yyres) return yystrlen (yystr); - return yystpcpy (yyres, yystr) - yyres; + return (YYSIZE_T) (yystpcpy (yyres, yystr) - yyres); } # endif @@ -1465,10 +1466,10 @@ yyarg[yycount++] = yytname[yyx]; { YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]); - if (! (yysize <= yysize1 - && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) + if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM) + yysize = yysize1; + else return 2; - yysize = yysize1; } } } @@ -1480,6 +1481,7 @@ case N: \ yyformat = S; \ break + default: /* Avoid compiler warnings. */ YYCASE_(0, YY_("syntax error")); YYCASE_(1, YY_("syntax error, unexpected %s")); YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); @@ -1491,9 +1493,10 @@ { YYSIZE_T yysize1 = yysize + yystrlen (yyformat); - if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) + if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM) + yysize = yysize1; + else return 2; - yysize = yysize1; } if (*yymsg_alloc < yysize) @@ -1619,23 +1622,31 @@ yychar = YYEMPTY; /* Cause a token to be read. */ goto yysetstate; + /*------------------------------------------------------------. -| yynewstate -- Push a new state, which is found in yystate. | +| yynewstate -- push a new state, which is found in yystate. | `------------------------------------------------------------*/ - yynewstate: +yynewstate: /* In all cases, when you get here, the value and location stacks have just been pushed. So pushing a state here evens the stacks. */ yyssp++; - yysetstate: - *yyssp = yystate; +/*--------------------------------------------------------------------. +| yynewstate -- set current state (the top of the stack) to yystate. | +`--------------------------------------------------------------------*/ +yysetstate: + *yyssp = (yytype_int16) yystate; + if (yyss + yystacksize - 1 <= yyssp) +#if !defined yyoverflow && !defined YYSTACK_RELOCATE + goto yyexhaustedlab; +#else { /* Get the current used size of the three stacks, in elements. */ - YYSIZE_T yysize = yyssp - yyss + 1; + YYSIZE_T yysize = (YYSIZE_T) (yyssp - yyss + 1); -#ifdef yyoverflow +# if defined yyoverflow { /* Give user a chance to reallocate the stack. Use copies of these so that the &'s don't force the real ones into @@ -1651,14 +1662,10 @@ &yyss1, yysize * sizeof (*yyssp), &yyvs1, yysize * sizeof (*yyvsp), &yystacksize); - yyss = yyss1; yyvs = yyvs1; } -#else /* no yyoverflow */ -# ifndef YYSTACK_RELOCATE - goto yyexhaustedlab; -# else +# else /* defined YYSTACK_RELOCATE */ /* Extend the stack our own way. */ if (YYMAXDEPTH <= yystacksize) goto yyexhaustedlab; @@ -1674,22 +1681,22 @@ goto yyexhaustedlab; YYSTACK_RELOCATE (yyss_alloc, yyss); YYSTACK_RELOCATE (yyvs_alloc, yyvs); -# undef YYSTACK_RELOCATE +# undef YYSTACK_RELOCATE if (yyss1 != yyssa) YYSTACK_FREE (yyss1); } # endif -#endif /* no yyoverflow */ yyssp = yyss + yysize - 1; yyvsp = yyvs + yysize - 1; YYDPRINTF ((stderr, "Stack size increased to %lu\n", - (unsigned long int) yystacksize)); + (unsigned long) yystacksize)); if (yyss + yystacksize - 1 <= yyssp) YYABORT; } +#endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */ YYDPRINTF ((stderr, "Entering state %d\n", yystate)); @@ -1698,11 +1705,11 @@ goto yybackup; + /*-----------. | yybackup. | `-----------*/ yybackup: - /* Do appropriate processing given the current state. Read a lookahead token if we need one and don't already have one. */ @@ -1775,7 +1782,7 @@ /*-----------------------------. -| yyreduce -- Do a reduction. | +| yyreduce -- do a reduction. | `-----------------------------*/ yyreduce: /* yyn is the number of a rule to reduce with. */ @@ -1796,13 +1803,13 @@ switch (yyn) { case 5: -#line 148 "parse_y.y" /* yacc.c:1646 */ +#line 148 "parse_y.y" /* yacc.c:1652 */ { YYABORT; } -#line 1802 "parse_y.c" /* yacc.c:1646 */ +#line 1809 "parse_y.c" /* yacc.c:1652 */ break; case 6: -#line 152 "parse_y.y" /* yacc.c:1646 */ +#line 152 "parse_y.y" /* yacc.c:1652 */ { /* reset flags for 'used layers'; * init font and data pointers @@ -1825,11 +1832,11 @@ layer_group_string = NULL; old_fmt = 0; } -#line 1829 "parse_y.c" /* yacc.c:1646 */ +#line 1836 "parse_y.c" /* yacc.c:1652 */ break; case 7: -#line 188 "parse_y.y" /* yacc.c:1646 */ +#line 188 "parse_y.y" /* yacc.c:1652 */ { pcb_board_t *pcb_save = PCB; if ((yy_settings_dest != CFR_invalid) && (layer_group_string != NULL)) @@ -1867,18 +1874,18 @@ PCB_ENDALL_LOOP; PCB = pcb_save; } -#line 1871 "parse_y.c" /* yacc.c:1646 */ +#line 1878 "parse_y.c" /* yacc.c:1652 */ break; case 8: -#line 226 "parse_y.y" /* yacc.c:1646 */ +#line 226 "parse_y.y" /* yacc.c:1652 */ { PreLoadElementPCB (); layer_group_string = NULL; } -#line 1878 "parse_y.c" /* yacc.c:1646 */ +#line 1885 "parse_y.c" /* yacc.c:1652 */ break; case 9: -#line 229 "parse_y.y" /* yacc.c:1646 */ +#line 229 "parse_y.y" /* yacc.c:1652 */ { LayerFlag[0] = pcb_true; LayerFlag[1] = pcb_true; if (yyElemFixLayers) { @@ -1894,11 +1901,11 @@ } PostLoadElementPCB (); } -#line 1898 "parse_y.c" /* yacc.c:1646 */ +#line 1905 "parse_y.c" /* yacc.c:1652 */ break; case 10: -#line 247 "parse_y.y" /* yacc.c:1646 */ +#line 247 "parse_y.y" /* yacc.c:1652 */ { /* reset flags for 'used layers'; * init font and data pointers @@ -1914,11 +1921,11 @@ LayerFlag[i] = pcb_false; yyData->LayerN = 0; } -#line 1918 "parse_y.c" /* yacc.c:1646 */ +#line 1925 "parse_y.c" /* yacc.c:1652 */ break; case 14: -#line 272 "parse_y.y" /* yacc.c:1646 */ +#line 272 "parse_y.y" /* yacc.c:1652 */ { /* mark all symbols invalid */ if (!yyFont) @@ -1932,20 +1939,20 @@ } *yyFontkitValid = pcb_false; } -#line 1936 "parse_y.c" /* yacc.c:1646 */ +#line 1943 "parse_y.c" /* yacc.c:1652 */ break; case 15: -#line 286 "parse_y.y" /* yacc.c:1646 */ +#line 286 "parse_y.y" /* yacc.c:1652 */ { *yyFontkitValid = pcb_true; pcb_font_set_info(yyFont); } -#line 1945 "parse_y.c" /* yacc.c:1646 */ +#line 1952 "parse_y.c" /* yacc.c:1652 */ break; case 17: -#line 295 "parse_y.y" /* yacc.c:1646 */ +#line 295 "parse_y.y" /* yacc.c:1652 */ { if (check_file_version ((yyvsp[-1].integer)) != 0) { @@ -1952,11 +1959,11 @@ YYABORT; } } -#line 1956 "parse_y.c" /* yacc.c:1646 */ +#line 1963 "parse_y.c" /* yacc.c:1652 */ break; case 18: -#line 305 "parse_y.y" /* yacc.c:1646 */ +#line 305 "parse_y.y" /* yacc.c:1652 */ { yyPCB->Name = (yyvsp[-1].string); yyPCB->MaxWidth = PCB_MAX_COORD; @@ -1963,11 +1970,11 @@ yyPCB->MaxHeight = PCB_MAX_COORD; old_fmt = 1; } -#line 1967 "parse_y.c" /* yacc.c:1646 */ +#line 1974 "parse_y.c" /* yacc.c:1652 */ break; case 19: -#line 312 "parse_y.y" /* yacc.c:1646 */ +#line 312 "parse_y.y" /* yacc.c:1652 */ { yyPCB->Name = (yyvsp[-3].string); yyPCB->MaxWidth = OU ((yyvsp[-2].measure)); @@ -1974,11 +1981,11 @@ yyPCB->MaxHeight = OU ((yyvsp[-1].measure)); old_fmt = 1; } -#line 1978 "parse_y.c" /* yacc.c:1646 */ +#line 1985 "parse_y.c" /* yacc.c:1652 */ break; case 20: -#line 319 "parse_y.y" /* yacc.c:1646 */ +#line 319 "parse_y.y" /* yacc.c:1652 */ { yyPCB->Name = (yyvsp[-3].string); yyPCB->MaxWidth = NU ((yyvsp[-2].measure)); @@ -1985,25 +1992,25 @@ yyPCB->MaxHeight = NU ((yyvsp[-1].measure)); old_fmt = 0; } -#line 1989 "parse_y.c" /* yacc.c:1646 */ +#line 1996 "parse_y.c" /* yacc.c:1652 */ break; case 24: -#line 334 "parse_y.y" /* yacc.c:1646 */ +#line 334 "parse_y.y" /* yacc.c:1652 */ { - yyPCB->Grid = OU ((yyvsp[-3].measure)); - yyPCB->GridOffsetX = OU ((yyvsp[-2].measure)); - yyPCB->GridOffsetY = OU ((yyvsp[-1].measure)); + yyPCB->hidlib.grid = OU ((yyvsp[-3].measure)); + yyPCB->hidlib.grid_ox = OU ((yyvsp[-2].measure)); + yyPCB->hidlib.grid_oy = OU ((yyvsp[-1].measure)); } -#line 1999 "parse_y.c" /* yacc.c:1646 */ +#line 2006 "parse_y.c" /* yacc.c:1652 */ break; case 25: -#line 342 "parse_y.y" /* yacc.c:1646 */ +#line 342 "parse_y.y" /* yacc.c:1652 */ { - yyPCB->Grid = OU ((yyvsp[-4].measure)); - yyPCB->GridOffsetX = OU ((yyvsp[-3].measure)); - yyPCB->GridOffsetY = OU ((yyvsp[-2].measure)); + yyPCB->hidlib.grid = OU ((yyvsp[-4].measure)); + yyPCB->hidlib.grid_ox = OU ((yyvsp[-3].measure)); + yyPCB->hidlib.grid_oy = OU ((yyvsp[-2].measure)); if (yy_settings_dest != CFR_invalid) { if ((yyvsp[-1].integer)) conf_set(yy_settings_dest, "editor/draw_grid", -1, "true", POL_OVERWRITE); @@ -2011,15 +2018,15 @@ conf_set(yy_settings_dest, "editor/draw_grid", -1, "false", POL_OVERWRITE); } } -#line 2015 "parse_y.c" /* yacc.c:1646 */ +#line 2022 "parse_y.c" /* yacc.c:1652 */ break; case 26: -#line 357 "parse_y.y" /* yacc.c:1646 */ +#line 357 "parse_y.y" /* yacc.c:1652 */ { - yyPCB->Grid = NU ((yyvsp[-4].measure)); - yyPCB->GridOffsetX = NU ((yyvsp[-3].measure)); - yyPCB->GridOffsetY = NU ((yyvsp[-2].measure)); + yyPCB->hidlib.grid = NU ((yyvsp[-4].measure)); + yyPCB->hidlib.grid_ox = NU ((yyvsp[-3].measure)); + yyPCB->hidlib.grid_oy = NU ((yyvsp[-2].measure)); if (yy_settings_dest != CFR_invalid) { if ((yyvsp[-1].integer)) conf_set(yy_settings_dest, "editor/draw_grid", -1, "true", POL_OVERWRITE); @@ -2027,44 +2034,44 @@ conf_set(yy_settings_dest, "editor/draw_grid", -1, "false", POL_OVERWRITE); } } -#line 2031 "parse_y.c" /* yacc.c:1646 */ +#line 2038 "parse_y.c" /* yacc.c:1652 */ break; case 27: -#line 372 "parse_y.y" /* yacc.c:1646 */ +#line 372 "parse_y.y" /* yacc.c:1652 */ { /* Not loading cursor position and zoom anymore */ } -#line 2039 "parse_y.c" /* yacc.c:1646 */ +#line 2046 "parse_y.c" /* yacc.c:1652 */ break; case 28: -#line 376 "parse_y.y" /* yacc.c:1646 */ +#line 376 "parse_y.y" /* yacc.c:1652 */ { /* Not loading cursor position and zoom anymore */ } -#line 2047 "parse_y.c" /* yacc.c:1646 */ +#line 2054 "parse_y.c" /* yacc.c:1652 */ break; case 31: -#line 385 "parse_y.y" /* yacc.c:1646 */ +#line 385 "parse_y.y" /* yacc.c:1652 */ { /* Read in cmil^2 for now; in future this should be a noop. */ load_meta_float("design/poly_isle_area", PCB_MIL_TO_COORD(PCB_MIL_TO_COORD ((yyvsp[-1].number)) / 100.0) / 100.0); } -#line 2056 "parse_y.c" /* yacc.c:1646 */ +#line 2063 "parse_y.c" /* yacc.c:1652 */ break; case 33: -#line 394 "parse_y.y" /* yacc.c:1646 */ +#line 394 "parse_y.y" /* yacc.c:1652 */ { yyPCB->ThermScale = (yyvsp[-1].number); } -#line 2064 "parse_y.c" /* yacc.c:1646 */ +#line 2071 "parse_y.c" /* yacc.c:1652 */ break; case 38: -#line 408 "parse_y.y" /* yacc.c:1646 */ +#line 408 "parse_y.y" /* yacc.c:1652 */ { load_meta_coord("design/bloat", NU((yyvsp[-3].measure))); load_meta_coord("design/shrink", NU((yyvsp[-2].measure))); @@ -2071,11 +2078,11 @@ load_meta_coord("design/min_wid", NU((yyvsp[-1].measure))); load_meta_coord("design/min_ring", NU((yyvsp[-1].measure))); } -#line 2075 "parse_y.c" /* yacc.c:1646 */ +#line 2082 "parse_y.c" /* yacc.c:1652 */ break; case 39: -#line 418 "parse_y.y" /* yacc.c:1646 */ +#line 418 "parse_y.y" /* yacc.c:1652 */ { load_meta_coord("design/bloat", NU((yyvsp[-4].measure))); load_meta_coord("design/shrink", NU((yyvsp[-3].measure))); @@ -2083,11 +2090,11 @@ load_meta_coord("design/min_slk", NU((yyvsp[-1].measure))); load_meta_coord("design/min_ring", NU((yyvsp[-2].measure))); } -#line 2087 "parse_y.c" /* yacc.c:1646 */ +#line 2094 "parse_y.c" /* yacc.c:1652 */ break; case 40: -#line 429 "parse_y.y" /* yacc.c:1646 */ +#line 429 "parse_y.y" /* yacc.c:1652 */ { load_meta_coord("design/bloat", NU((yyvsp[-6].measure))); load_meta_coord("design/shrink", NU((yyvsp[-5].measure))); @@ -2096,36 +2103,36 @@ load_meta_coord("design/min_drill", NU((yyvsp[-2].measure))); load_meta_coord("design/min_ring", NU((yyvsp[-1].measure))); } -#line 2100 "parse_y.c" /* yacc.c:1646 */ +#line 2107 "parse_y.c" /* yacc.c:1652 */ break; case 41: -#line 441 "parse_y.y" /* yacc.c:1646 */ +#line 441 "parse_y.y" /* yacc.c:1652 */ { yy_pcb_flags = pcb_flag_make((yyvsp[-1].integer) & PCB_FLAGS); } -#line 2108 "parse_y.c" /* yacc.c:1646 */ +#line 2115 "parse_y.c" /* yacc.c:1652 */ break; case 42: -#line 445 "parse_y.y" /* yacc.c:1646 */ +#line 445 "parse_y.y" /* yacc.c:1652 */ { yy_pcb_flags = pcb_strflg_board_s2f((yyvsp[-1].string), yyerror); free((yyvsp[-1].string)); } -#line 2117 "parse_y.c" /* yacc.c:1646 */ +#line 2124 "parse_y.c" /* yacc.c:1652 */ break; case 44: -#line 454 "parse_y.y" /* yacc.c:1646 */ +#line 454 "parse_y.y" /* yacc.c:1652 */ { layer_group_string = (yyvsp[-1].string); } -#line 2125 "parse_y.c" /* yacc.c:1646 */ +#line 2132 "parse_y.c" /* yacc.c:1652 */ break; case 46: -#line 462 "parse_y.y" /* yacc.c:1646 */ +#line 462 "parse_y.y" /* yacc.c:1652 */ { if (pcb_route_string_parse((yyvsp[-1].string), &yyPCB->RouteStyle, "mil")) { @@ -2134,11 +2141,11 @@ } free((yyvsp[-1].string)); } -#line 2138 "parse_y.c" /* yacc.c:1646 */ +#line 2145 "parse_y.c" /* yacc.c:1652 */ break; case 47: -#line 471 "parse_y.y" /* yacc.c:1646 */ +#line 471 "parse_y.y" /* yacc.c:1652 */ { if (pcb_route_string_parse(((yyvsp[-1].string) == NULL ? "" : (yyvsp[-1].string)), &yyPCB->RouteStyle, "cmil")) { @@ -2147,17 +2154,17 @@ } free((yyvsp[-1].string)); } -#line 2151 "parse_y.c" /* yacc.c:1646 */ +#line 2158 "parse_y.c" /* yacc.c:1652 */ break; case 54: -#line 494 "parse_y.y" /* yacc.c:1646 */ +#line 494 "parse_y.y" /* yacc.c:1652 */ { attr_list = & yyPCB->Attributes; } -#line 2157 "parse_y.c" /* yacc.c:1646 */ +#line 2164 "parse_y.c" /* yacc.c:1652 */ break; case 58: -#line 498 "parse_y.y" /* yacc.c:1646 */ +#line 498 "parse_y.y" /* yacc.c:1652 */ { /* clear pointer to force memory allocation by * the appropriate subroutine @@ -2164,57 +2171,57 @@ */ yysubc = NULL; } -#line 2168 "parse_y.c" /* yacc.c:1646 */ +#line 2175 "parse_y.c" /* yacc.c:1652 */ break; case 60: -#line 505 "parse_y.y" /* yacc.c:1646 */ +#line 505 "parse_y.y" /* yacc.c:1652 */ { YYABORT; } -#line 2174 "parse_y.c" /* yacc.c:1646 */ +#line 2181 "parse_y.c" /* yacc.c:1652 */ break; case 66: -#line 519 "parse_y.y" /* yacc.c:1646 */ +#line 519 "parse_y.y" /* yacc.c:1652 */ { pcb_old_via_new(yyData, -1, NU ((yyvsp[-8].measure)), NU ((yyvsp[-7].measure)), NU ((yyvsp[-6].measure)), NU ((yyvsp[-5].measure)), NU ((yyvsp[-4].measure)), NU ((yyvsp[-3].measure)), (yyvsp[-2].string), (yyvsp[-1].flagtype)); free ((yyvsp[-2].string)); } -#line 2184 "parse_y.c" /* yacc.c:1646 */ +#line 2191 "parse_y.c" /* yacc.c:1652 */ break; case 67: -#line 529 "parse_y.y" /* yacc.c:1646 */ +#line 529 "parse_y.y" /* yacc.c:1652 */ { pcb_old_via_new(yyData, -1, OU ((yyvsp[-8].measure)), OU ((yyvsp[-7].measure)), OU ((yyvsp[-6].measure)), OU ((yyvsp[-5].measure)), OU ((yyvsp[-4].measure)), OU ((yyvsp[-3].measure)), (yyvsp[-2].string), pcb_flag_old((yyvsp[-1].integer))); free ((yyvsp[-2].string)); } -#line 2194 "parse_y.c" /* yacc.c:1646 */ +#line 2201 "parse_y.c" /* yacc.c:1652 */ break; case 68: -#line 540 "parse_y.y" /* yacc.c:1646 */ +#line 540 "parse_y.y" /* yacc.c:1652 */ { pcb_old_via_new(yyData, -1, OU ((yyvsp[-7].measure)), OU ((yyvsp[-6].measure)), OU ((yyvsp[-5].measure)), OU ((yyvsp[-4].measure)), OU ((yyvsp[-5].measure)) + OU((yyvsp[-4].measure)), OU ((yyvsp[-3].measure)), (yyvsp[-2].string), pcb_flag_old((yyvsp[-1].integer))); free ((yyvsp[-2].string)); } -#line 2204 "parse_y.c" /* yacc.c:1646 */ +#line 2211 "parse_y.c" /* yacc.c:1652 */ break; case 69: -#line 550 "parse_y.y" /* yacc.c:1646 */ +#line 550 "parse_y.y" /* yacc.c:1652 */ { pcb_old_via_new(yyData, -1, OU ((yyvsp[-6].measure)), OU ((yyvsp[-5].measure)), OU ((yyvsp[-4].measure)), 2*PCB_GROUNDPLANEFRAME, OU((yyvsp[-4].measure)) + 2*PCB_MASKFRAME, OU ((yyvsp[-3].measure)), (yyvsp[-2].string), pcb_flag_old((yyvsp[-1].integer))); free ((yyvsp[-2].string)); } -#line 2214 "parse_y.c" /* yacc.c:1646 */ +#line 2221 "parse_y.c" /* yacc.c:1652 */ break; case 70: -#line 560 "parse_y.y" /* yacc.c:1646 */ +#line 560 "parse_y.y" /* yacc.c:1652 */ { pcb_coord_t hole = (OU((yyvsp[-3].measure)) * PCB_DEFAULT_DRILLINGHOLE); @@ -2227,29 +2234,29 @@ OU((yyvsp[-3].measure)) + 2*PCB_MASKFRAME, hole, (yyvsp[-2].string), pcb_flag_old((yyvsp[-1].integer))); free ((yyvsp[-2].string)); } -#line 2231 "parse_y.c" /* yacc.c:1646 */ +#line 2238 "parse_y.c" /* yacc.c:1652 */ break; case 71: -#line 576 "parse_y.y" /* yacc.c:1646 */ +#line 576 "parse_y.y" /* yacc.c:1652 */ { pcb_rat_new(yyData, -1, NU ((yyvsp[-7].measure)), NU ((yyvsp[-6].measure)), NU ((yyvsp[-4].measure)), NU ((yyvsp[-3].measure)), (yyvsp[-5].integer), (yyvsp[-2].integer), conf_core.appearance.rat_thickness, (yyvsp[-1].flagtype), NULL, NULL); } -#line 2240 "parse_y.c" /* yacc.c:1646 */ +#line 2247 "parse_y.c" /* yacc.c:1652 */ break; case 72: -#line 581 "parse_y.y" /* yacc.c:1646 */ +#line 581 "parse_y.y" /* yacc.c:1652 */ { pcb_rat_new(yyData, -1, OU ((yyvsp[-7].measure)), OU ((yyvsp[-6].measure)), OU ((yyvsp[-4].measure)), OU ((yyvsp[-3].measure)), (yyvsp[-5].integer), (yyvsp[-2].integer), conf_core.appearance.rat_thickness, pcb_flag_old((yyvsp[-1].integer)), NULL, NULL); } -#line 2249 "parse_y.c" /* yacc.c:1646 */ +#line 2256 "parse_y.c" /* yacc.c:1652 */ break; case 73: -#line 590 "parse_y.y" /* yacc.c:1646 */ +#line 590 "parse_y.y" /* yacc.c:1652 */ { if ((yyvsp[-4].integer) <= 0 || (yyvsp[-4].integer) > PCB_MAX_LAYER) { @@ -2276,44 +2283,44 @@ if ((yyvsp[-2].string) != NULL) free((yyvsp[-2].string)); } -#line 2280 "parse_y.c" /* yacc.c:1646 */ +#line 2287 "parse_y.c" /* yacc.c:1652 */ break; case 85: -#line 638 "parse_y.y" /* yacc.c:1646 */ +#line 638 "parse_y.y" /* yacc.c:1652 */ { pcb_poly_new_from_rectangle(Layer, OU ((yyvsp[-5].measure)), OU ((yyvsp[-4].measure)), OU ((yyvsp[-5].measure)) + OU ((yyvsp[-3].measure)), OU ((yyvsp[-4].measure)) + OU ((yyvsp[-2].measure)), 0, pcb_flag_old((yyvsp[-1].integer))); } -#line 2289 "parse_y.c" /* yacc.c:1646 */ +#line 2296 "parse_y.c" /* yacc.c:1652 */ break; case 89: -#line 645 "parse_y.y" /* yacc.c:1646 */ +#line 645 "parse_y.y" /* yacc.c:1652 */ { attr_list = & Layer->Attributes; } -#line 2295 "parse_y.c" /* yacc.c:1646 */ +#line 2302 "parse_y.c" /* yacc.c:1652 */ break; case 92: -#line 651 "parse_y.y" /* yacc.c:1646 */ +#line 651 "parse_y.y" /* yacc.c:1652 */ { pcb_line_new(Layer, NU ((yyvsp[-7].measure)), NU ((yyvsp[-6].measure)), NU ((yyvsp[-5].measure)), NU ((yyvsp[-4].measure)), NU ((yyvsp[-3].measure)), NU ((yyvsp[-2].measure)), (yyvsp[-1].flagtype)); } -#line 2304 "parse_y.c" /* yacc.c:1646 */ +#line 2311 "parse_y.c" /* yacc.c:1652 */ break; case 93: -#line 660 "parse_y.y" /* yacc.c:1646 */ +#line 660 "parse_y.y" /* yacc.c:1652 */ { pcb_line_new(Layer, OU ((yyvsp[-7].measure)), OU ((yyvsp[-6].measure)), OU ((yyvsp[-5].measure)), OU ((yyvsp[-4].measure)), OU ((yyvsp[-3].measure)), OU ((yyvsp[-2].measure)), pcb_flag_old((yyvsp[-1].integer))); } -#line 2313 "parse_y.c" /* yacc.c:1646 */ +#line 2320 "parse_y.c" /* yacc.c:1652 */ break; case 94: -#line 669 "parse_y.y" /* yacc.c:1646 */ +#line 669 "parse_y.y" /* yacc.c:1652 */ { /* eliminate old-style rat-lines */ if ((IV ((yyvsp[-1].measure)) & PCB_FLAG_RAT) == 0) @@ -2320,48 +2327,48 @@ pcb_line_new(Layer, OU ((yyvsp[-6].measure)), OU ((yyvsp[-5].measure)), OU ((yyvsp[-4].measure)), OU ((yyvsp[-3].measure)), OU ((yyvsp[-2].measure)), 200*PCB_GROUNDPLANEFRAME, pcb_flag_old(IV ((yyvsp[-1].measure)))); } -#line 2324 "parse_y.c" /* yacc.c:1646 */ +#line 2331 "parse_y.c" /* yacc.c:1652 */ break; case 95: -#line 680 "parse_y.y" /* yacc.c:1646 */ +#line 680 "parse_y.y" /* yacc.c:1652 */ { pcb_arc_new(Layer, NU ((yyvsp[-9].measure)), NU ((yyvsp[-8].measure)), NU ((yyvsp[-7].measure)), NU ((yyvsp[-6].measure)), (yyvsp[-3].number), (yyvsp[-2].number), NU ((yyvsp[-5].measure)), NU ((yyvsp[-4].measure)), (yyvsp[-1].flagtype), pcb_true); } -#line 2333 "parse_y.c" /* yacc.c:1646 */ +#line 2340 "parse_y.c" /* yacc.c:1652 */ break; case 96: -#line 689 "parse_y.y" /* yacc.c:1646 */ +#line 689 "parse_y.y" /* yacc.c:1652 */ { pcb_arc_new(Layer, OU ((yyvsp[-9].measure)), OU ((yyvsp[-8].measure)), OU ((yyvsp[-7].measure)), OU ((yyvsp[-6].measure)), (yyvsp[-3].number), (yyvsp[-2].number), OU ((yyvsp[-5].measure)), OU ((yyvsp[-4].measure)), pcb_flag_old((yyvsp[-1].integer)), pcb_true); } -#line 2342 "parse_y.c" /* yacc.c:1646 */ +#line 2349 "parse_y.c" /* yacc.c:1652 */ break; case 97: -#line 698 "parse_y.y" /* yacc.c:1646 */ +#line 698 "parse_y.y" /* yacc.c:1652 */ { pcb_arc_new(Layer, OU ((yyvsp[-8].measure)), OU ((yyvsp[-7].measure)), OU ((yyvsp[-6].measure)), OU ((yyvsp[-6].measure)), IV ((yyvsp[-3].measure)), (yyvsp[-2].number), OU ((yyvsp[-4].measure)), 200*PCB_GROUNDPLANEFRAME, pcb_flag_old((yyvsp[-1].integer)), pcb_true); } -#line 2351 "parse_y.c" /* yacc.c:1646 */ +#line 2358 "parse_y.c" /* yacc.c:1652 */ break; case 98: -#line 707 "parse_y.y" /* yacc.c:1646 */ +#line 707 "parse_y.y" /* yacc.c:1652 */ { /* use a default scale of 100% */ pcb_text_new(Layer,yyFont,OU ((yyvsp[-5].measure)), OU ((yyvsp[-4].measure)), (yyvsp[-3].number) * 90.0, 100, 0, (yyvsp[-2].string), pcb_flag_old((yyvsp[-1].integer))); free ((yyvsp[-2].string)); } -#line 2361 "parse_y.c" /* yacc.c:1646 */ +#line 2368 "parse_y.c" /* yacc.c:1652 */ break; case 99: -#line 717 "parse_y.y" /* yacc.c:1646 */ +#line 717 "parse_y.y" /* yacc.c:1652 */ { if ((yyvsp[-1].integer) & PCB_FLAG_ONSILK) { @@ -2376,11 +2383,11 @@ pcb_flag_old((yyvsp[-1].integer))); free ((yyvsp[-2].string)); } -#line 2380 "parse_y.c" /* yacc.c:1646 */ +#line 2387 "parse_y.c" /* yacc.c:1652 */ break; case 100: -#line 735 "parse_y.y" /* yacc.c:1646 */ +#line 735 "parse_y.y" /* yacc.c:1652 */ { /* FIXME: shouldn't know about .f */ /* I don't think this matters because anything with hi_format @@ -2400,19 +2407,19 @@ pcb_text_new(Layer, yyFont, NU ((yyvsp[-6].measure)), NU ((yyvsp[-5].measure)), (yyvsp[-4].number) * 90.0, (yyvsp[-3].number), 0, (yyvsp[-2].string), (yyvsp[-1].flagtype)); free ((yyvsp[-2].string)); } -#line 2404 "parse_y.c" /* yacc.c:1646 */ +#line 2411 "parse_y.c" /* yacc.c:1652 */ break; case 101: -#line 759 "parse_y.y" /* yacc.c:1646 */ +#line 759 "parse_y.y" /* yacc.c:1652 */ { Polygon = pcb_poly_new(Layer, 0, (yyvsp[-2].flagtype)); } -#line 2412 "parse_y.c" /* yacc.c:1646 */ +#line 2419 "parse_y.c" /* yacc.c:1652 */ break; case 102: -#line 764 "parse_y.y" /* yacc.c:1646 */ +#line 764 "parse_y.y" /* yacc.c:1652 */ { pcb_cardinal_t contour, contour_start, contour_end; pcb_bool bad_contour_found = pcb_false; @@ -2444,35 +2451,35 @@ pcb_r_insert_entry(Layer->polygon_tree, (pcb_box_t *) Polygon); } } -#line 2448 "parse_y.c" /* yacc.c:1646 */ +#line 2455 "parse_y.c" /* yacc.c:1652 */ break; case 105: -#line 804 "parse_y.y" /* yacc.c:1646 */ +#line 804 "parse_y.y" /* yacc.c:1652 */ { pcb_poly_hole_new(Polygon); } -#line 2456 "parse_y.c" /* yacc.c:1646 */ +#line 2463 "parse_y.c" /* yacc.c:1652 */ break; case 109: -#line 818 "parse_y.y" /* yacc.c:1646 */ +#line 818 "parse_y.y" /* yacc.c:1652 */ { pcb_poly_point_new(Polygon, OU ((yyvsp[-2].measure)), OU ((yyvsp[-1].measure))); } -#line 2464 "parse_y.c" /* yacc.c:1646 */ +#line 2471 "parse_y.c" /* yacc.c:1652 */ break; case 110: -#line 822 "parse_y.y" /* yacc.c:1646 */ +#line 822 "parse_y.y" /* yacc.c:1652 */ { pcb_poly_point_new(Polygon, NU ((yyvsp[-2].measure)), NU ((yyvsp[-1].measure))); } -#line 2472 "parse_y.c" /* yacc.c:1646 */ +#line 2479 "parse_y.c" /* yacc.c:1652 */ break; case 116: -#line 840 "parse_y.y" /* yacc.c:1646 */ +#line 840 "parse_y.y" /* yacc.c:1652 */ { yysubc = io_pcb_element_new(yyData, yysubc, yyFont, pcb_no_flags(), (yyvsp[-6].string), (yyvsp[-5].string), NULL, OU ((yyvsp[-4].measure)), OU ((yyvsp[-3].measure)), (yyvsp[-2].integer), 100, pcb_no_flags(), pcb_false); @@ -2480,19 +2487,19 @@ free ((yyvsp[-5].string)); pin_num = 1; } -#line 2484 "parse_y.c" /* yacc.c:1646 */ +#line 2491 "parse_y.c" /* yacc.c:1652 */ break; case 117: -#line 848 "parse_y.y" /* yacc.c:1646 */ +#line 848 "parse_y.y" /* yacc.c:1652 */ { io_pcb_element_fin(yyData); } -#line 2492 "parse_y.c" /* yacc.c:1646 */ +#line 2499 "parse_y.c" /* yacc.c:1652 */ break; case 118: -#line 858 "parse_y.y" /* yacc.c:1646 */ +#line 858 "parse_y.y" /* yacc.c:1652 */ { yysubc = io_pcb_element_new(yyData, yysubc, yyFont, pcb_flag_old((yyvsp[-9].integer)), (yyvsp[-8].string), (yyvsp[-7].string), NULL, OU ((yyvsp[-6].measure)), OU ((yyvsp[-5].measure)), IV ((yyvsp[-4].measure)), IV ((yyvsp[-3].measure)), pcb_flag_old((yyvsp[-2].integer)), pcb_false); @@ -2500,19 +2507,19 @@ free ((yyvsp[-7].string)); pin_num = 1; } -#line 2504 "parse_y.c" /* yacc.c:1646 */ +#line 2511 "parse_y.c" /* yacc.c:1652 */ break; case 119: -#line 866 "parse_y.y" /* yacc.c:1646 */ +#line 866 "parse_y.y" /* yacc.c:1652 */ { io_pcb_element_fin(yyData); } -#line 2512 "parse_y.c" /* yacc.c:1646 */ +#line 2519 "parse_y.c" /* yacc.c:1652 */ break; case 120: -#line 876 "parse_y.y" /* yacc.c:1646 */ +#line 876 "parse_y.y" /* yacc.c:1652 */ { yysubc = io_pcb_element_new(yyData, yysubc, yyFont, pcb_flag_old((yyvsp[-10].integer)), (yyvsp[-9].string), (yyvsp[-8].string), (yyvsp[-7].string), OU ((yyvsp[-6].measure)), OU ((yyvsp[-5].measure)), IV ((yyvsp[-4].measure)), IV ((yyvsp[-3].measure)), pcb_flag_old((yyvsp[-2].integer)), pcb_false); @@ -2521,19 +2528,19 @@ free ((yyvsp[-7].string)); pin_num = 1; } -#line 2525 "parse_y.c" /* yacc.c:1646 */ +#line 2532 "parse_y.c" /* yacc.c:1652 */ break; case 121: -#line 885 "parse_y.y" /* yacc.c:1646 */ +#line 885 "parse_y.y" /* yacc.c:1652 */ { io_pcb_element_fin(yyData); } -#line 2533 "parse_y.c" /* yacc.c:1646 */ +#line 2540 "parse_y.c" /* yacc.c:1652 */ break; case 122: -#line 896 "parse_y.y" /* yacc.c:1646 */ +#line 896 "parse_y.y" /* yacc.c:1652 */ { yysubc = io_pcb_element_new(yyData, yysubc, yyFont, pcb_flag_old((yyvsp[-12].integer)), (yyvsp[-11].string), (yyvsp[-10].string), (yyvsp[-9].string), OU ((yyvsp[-8].measure)) + OU ((yyvsp[-6].measure)), OU ((yyvsp[-7].measure)) + OU ((yyvsp[-5].measure)), @@ -2544,19 +2551,19 @@ free ((yyvsp[-10].string)); free ((yyvsp[-9].string)); } -#line 2548 "parse_y.c" /* yacc.c:1646 */ +#line 2555 "parse_y.c" /* yacc.c:1652 */ break; case 123: -#line 907 "parse_y.y" /* yacc.c:1646 */ +#line 907 "parse_y.y" /* yacc.c:1652 */ { io_pcb_element_fin(yyData); } -#line 2556 "parse_y.c" /* yacc.c:1646 */ +#line 2563 "parse_y.c" /* yacc.c:1652 */ break; case 124: -#line 918 "parse_y.y" /* yacc.c:1646 */ +#line 918 "parse_y.y" /* yacc.c:1652 */ { yysubc = io_pcb_element_new(yyData, yysubc, yyFont, (yyvsp[-12].flagtype), (yyvsp[-11].string), (yyvsp[-10].string), (yyvsp[-9].string), NU ((yyvsp[-8].measure)) + NU ((yyvsp[-6].measure)), NU ((yyvsp[-7].measure)) + NU ((yyvsp[-5].measure)), @@ -2567,11 +2574,11 @@ free ((yyvsp[-10].string)); free ((yyvsp[-9].string)); } -#line 2571 "parse_y.c" /* yacc.c:1646 */ +#line 2578 "parse_y.c" /* yacc.c:1652 */ break; case 125: -#line 929 "parse_y.y" /* yacc.c:1646 */ +#line 929 "parse_y.y" /* yacc.c:1652 */ { if (pcb_subc_is_empty(yysubc)) { pcb_subc_free(yysubc); @@ -2581,111 +2588,111 @@ io_pcb_element_fin(yyData); } } -#line 2585 "parse_y.c" /* yacc.c:1646 */ +#line 2592 "parse_y.c" /* yacc.c:1652 */ break; case 133: -#line 953 "parse_y.y" /* yacc.c:1646 */ +#line 953 "parse_y.y" /* yacc.c:1652 */ { io_pcb_element_line_new(yysubc, NU ((yyvsp[-5].measure)), NU ((yyvsp[-4].measure)), NU ((yyvsp[-3].measure)), NU ((yyvsp[-2].measure)), NU ((yyvsp[-1].measure))); } -#line 2593 "parse_y.c" /* yacc.c:1646 */ +#line 2600 "parse_y.c" /* yacc.c:1652 */ break; case 134: -#line 958 "parse_y.y" /* yacc.c:1646 */ +#line 958 "parse_y.y" /* yacc.c:1652 */ { io_pcb_element_line_new(yysubc, OU ((yyvsp[-5].measure)), OU ((yyvsp[-4].measure)), OU ((yyvsp[-3].measure)), OU ((yyvsp[-2].measure)), OU ((yyvsp[-1].measure))); } -#line 2601 "parse_y.c" /* yacc.c:1646 */ +#line 2608 "parse_y.c" /* yacc.c:1652 */ break; case 135: -#line 963 "parse_y.y" /* yacc.c:1646 */ +#line 963 "parse_y.y" /* yacc.c:1652 */ { io_pcb_element_arc_new(yysubc, NU ((yyvsp[-7].measure)), NU ((yyvsp[-6].measure)), NU ((yyvsp[-5].measure)), NU ((yyvsp[-4].measure)), (yyvsp[-3].number), (yyvsp[-2].number), NU ((yyvsp[-1].measure))); } -#line 2609 "parse_y.c" /* yacc.c:1646 */ +#line 2616 "parse_y.c" /* yacc.c:1652 */ break; case 136: -#line 968 "parse_y.y" /* yacc.c:1646 */ +#line 968 "parse_y.y" /* yacc.c:1652 */ { io_pcb_element_arc_new(yysubc, OU ((yyvsp[-7].measure)), OU ((yyvsp[-6].measure)), OU ((yyvsp[-5].measure)), OU ((yyvsp[-4].measure)), (yyvsp[-3].number), (yyvsp[-2].number), OU ((yyvsp[-1].measure))); } -#line 2617 "parse_y.c" /* yacc.c:1646 */ +#line 2624 "parse_y.c" /* yacc.c:1652 */ break; case 137: -#line 973 "parse_y.y" /* yacc.c:1646 */ +#line 973 "parse_y.y" /* yacc.c:1652 */ { yysubc_ox = NU ((yyvsp[-2].measure)); yysubc_oy = NU ((yyvsp[-1].measure)); } -#line 2626 "parse_y.c" /* yacc.c:1646 */ +#line 2633 "parse_y.c" /* yacc.c:1652 */ break; case 138: -#line 978 "parse_y.y" /* yacc.c:1646 */ +#line 978 "parse_y.y" /* yacc.c:1652 */ { yysubc_ox = OU ((yyvsp[-2].measure)); yysubc_oy = OU ((yyvsp[-1].measure)); } -#line 2635 "parse_y.c" /* yacc.c:1646 */ +#line 2642 "parse_y.c" /* yacc.c:1652 */ break; case 139: -#line 982 "parse_y.y" /* yacc.c:1646 */ +#line 982 "parse_y.y" /* yacc.c:1652 */ { attr_list = & yysubc->Attributes; } -#line 2641 "parse_y.c" /* yacc.c:1646 */ +#line 2648 "parse_y.c" /* yacc.c:1652 */ break; case 147: -#line 997 "parse_y.y" /* yacc.c:1646 */ +#line 997 "parse_y.y" /* yacc.c:1652 */ { io_pcb_element_line_new(yysubc, NU ((yyvsp[-5].measure)) + yysubc_ox, NU ((yyvsp[-4].measure)) + yysubc_oy, NU ((yyvsp[-3].measure)) + yysubc_ox, NU ((yyvsp[-2].measure)) + yysubc_oy, NU ((yyvsp[-1].measure))); } -#line 2651 "parse_y.c" /* yacc.c:1646 */ +#line 2658 "parse_y.c" /* yacc.c:1652 */ break; case 148: -#line 1003 "parse_y.y" /* yacc.c:1646 */ +#line 1003 "parse_y.y" /* yacc.c:1652 */ { io_pcb_element_line_new(yysubc, OU ((yyvsp[-5].measure)) + yysubc_ox, OU ((yyvsp[-4].measure)) + yysubc_oy, OU ((yyvsp[-3].measure)) + yysubc_ox, OU ((yyvsp[-2].measure)) + yysubc_oy, OU ((yyvsp[-1].measure))); } -#line 2661 "parse_y.c" /* yacc.c:1646 */ +#line 2668 "parse_y.c" /* yacc.c:1652 */ break; case 149: -#line 1010 "parse_y.y" /* yacc.c:1646 */ +#line 1010 "parse_y.y" /* yacc.c:1652 */ { io_pcb_element_arc_new(yysubc, NU ((yyvsp[-7].measure)) + yysubc_ox, NU ((yyvsp[-6].measure)) + yysubc_oy, NU ((yyvsp[-5].measure)), NU ((yyvsp[-4].measure)), (yyvsp[-3].number), (yyvsp[-2].number), NU ((yyvsp[-1].measure))); } -#line 2670 "parse_y.c" /* yacc.c:1646 */ +#line 2677 "parse_y.c" /* yacc.c:1652 */ break; case 150: -#line 1015 "parse_y.y" /* yacc.c:1646 */ +#line 1015 "parse_y.y" /* yacc.c:1652 */ { io_pcb_element_arc_new(yysubc, OU ((yyvsp[-7].measure)) + yysubc_ox, OU ((yyvsp[-6].measure)) + yysubc_oy, OU ((yyvsp[-5].measure)), OU ((yyvsp[-4].measure)), (yyvsp[-3].number), (yyvsp[-2].number), OU ((yyvsp[-1].measure))); } -#line 2679 "parse_y.c" /* yacc.c:1646 */ +#line 2686 "parse_y.c" /* yacc.c:1652 */ break; case 151: -#line 1019 "parse_y.y" /* yacc.c:1646 */ +#line 1019 "parse_y.y" /* yacc.c:1652 */ { attr_list = & yysubc->Attributes; } -#line 2685 "parse_y.c" /* yacc.c:1646 */ +#line 2692 "parse_y.c" /* yacc.c:1652 */ break; case 153: -#line 1026 "parse_y.y" /* yacc.c:1646 */ +#line 1026 "parse_y.y" /* yacc.c:1652 */ { pcb_pstk_t *pin = io_pcb_element_pin_new(yysubc, NU ((yyvsp[-9].measure)) + yysubc_ox, NU ((yyvsp[-8].measure)) + yysubc_oy, NU ((yyvsp[-7].measure)), NU ((yyvsp[-6].measure)), NU ((yyvsp[-5].measure)), NU ((yyvsp[-4].measure)), (yyvsp[-3].string), @@ -2694,11 +2701,11 @@ free ((yyvsp[-3].string)); free ((yyvsp[-2].string)); } -#line 2698 "parse_y.c" /* yacc.c:1646 */ +#line 2705 "parse_y.c" /* yacc.c:1652 */ break; case 154: -#line 1039 "parse_y.y" /* yacc.c:1646 */ +#line 1039 "parse_y.y" /* yacc.c:1652 */ { io_pcb_element_pin_new(yysubc, OU ((yyvsp[-9].measure)) + yysubc_ox, OU ((yyvsp[-8].measure)) + yysubc_oy, OU ((yyvsp[-7].measure)), OU ((yyvsp[-6].measure)), OU ((yyvsp[-5].measure)), OU ((yyvsp[-4].measure)), (yyvsp[-3].string), @@ -2706,11 +2713,11 @@ free ((yyvsp[-3].string)); free ((yyvsp[-2].string)); } -#line 2710 "parse_y.c" /* yacc.c:1646 */ +#line 2717 "parse_y.c" /* yacc.c:1652 */ break; case 155: -#line 1051 "parse_y.y" /* yacc.c:1646 */ +#line 1051 "parse_y.y" /* yacc.c:1652 */ { io_pcb_element_pin_new(yysubc, OU ((yyvsp[-7].measure)), OU ((yyvsp[-6].measure)), OU ((yyvsp[-5].measure)), 2*PCB_GROUNDPLANEFRAME, OU ((yyvsp[-5].measure)) + 2*PCB_MASKFRAME, OU ((yyvsp[-4].measure)), (yyvsp[-3].string), (yyvsp[-2].string), pcb_flag_old((yyvsp[-1].integer))); @@ -2717,11 +2724,11 @@ free ((yyvsp[-3].string)); free ((yyvsp[-2].string)); } -#line 2721 "parse_y.c" /* yacc.c:1646 */ +#line 2728 "parse_y.c" /* yacc.c:1652 */ break; case 156: -#line 1062 "parse_y.y" /* yacc.c:1646 */ +#line 1062 "parse_y.y" /* yacc.c:1652 */ { char p_number[8]; @@ -2731,11 +2738,11 @@ free ((yyvsp[-2].string)); } -#line 2735 "parse_y.c" /* yacc.c:1646 */ +#line 2742 "parse_y.c" /* yacc.c:1652 */ break; case 157: -#line 1078 "parse_y.y" /* yacc.c:1646 */ +#line 1078 "parse_y.y" /* yacc.c:1652 */ { pcb_coord_t hole = OU ((yyvsp[-3].measure)) * PCB_DEFAULT_DRILLINGHOLE; char p_number[8]; @@ -2750,11 +2757,11 @@ OU ((yyvsp[-3].measure)) + 2*PCB_MASKFRAME, hole, (yyvsp[-2].string), p_number, pcb_flag_old((yyvsp[-1].integer))); free ((yyvsp[-2].string)); } -#line 2754 "parse_y.c" /* yacc.c:1646 */ +#line 2761 "parse_y.c" /* yacc.c:1652 */ break; case 158: -#line 1097 "parse_y.y" /* yacc.c:1646 */ +#line 1097 "parse_y.y" /* yacc.c:1652 */ { pcb_pstk_t *pad = io_pcb_element_pad_new(yysubc, NU ((yyvsp[-10].measure)) + yysubc_ox, NU ((yyvsp[-9].measure)) + yysubc_oy, @@ -2765,11 +2772,11 @@ free ((yyvsp[-3].string)); free ((yyvsp[-2].string)); } -#line 2769 "parse_y.c" /* yacc.c:1646 */ +#line 2776 "parse_y.c" /* yacc.c:1652 */ break; case 159: -#line 1112 "parse_y.y" /* yacc.c:1646 */ +#line 1112 "parse_y.y" /* yacc.c:1652 */ { io_pcb_element_pad_new(yysubc,OU ((yyvsp[-10].measure)) + yysubc_ox, OU ((yyvsp[-9].measure)) + yysubc_oy, OU ((yyvsp[-8].measure)) + yysubc_ox, @@ -2778,11 +2785,11 @@ free ((yyvsp[-3].string)); free ((yyvsp[-2].string)); } -#line 2782 "parse_y.c" /* yacc.c:1646 */ +#line 2789 "parse_y.c" /* yacc.c:1652 */ break; case 160: -#line 1125 "parse_y.y" /* yacc.c:1646 */ +#line 1125 "parse_y.y" /* yacc.c:1652 */ { io_pcb_element_pad_new(yysubc,OU ((yyvsp[-8].measure)),OU ((yyvsp[-7].measure)),OU ((yyvsp[-6].measure)),OU ((yyvsp[-5].measure)),OU ((yyvsp[-4].measure)), 2*PCB_GROUNDPLANEFRAME, OU ((yyvsp[-4].measure)) + 2*PCB_MASKFRAME, (yyvsp[-3].string), (yyvsp[-2].string), pcb_flag_old((yyvsp[-1].integer))); @@ -2789,11 +2796,11 @@ free ((yyvsp[-3].string)); free ((yyvsp[-2].string)); } -#line 2793 "parse_y.c" /* yacc.c:1646 */ +#line 2800 "parse_y.c" /* yacc.c:1652 */ break; case 161: -#line 1136 "parse_y.y" /* yacc.c:1646 */ +#line 1136 "parse_y.y" /* yacc.c:1652 */ { char p_number[8]; @@ -2802,23 +2809,23 @@ OU ((yyvsp[-3].measure)) + 2*PCB_MASKFRAME, (yyvsp[-2].string),p_number, pcb_flag_old((yyvsp[-1].integer))); free ((yyvsp[-2].string)); } -#line 2806 "parse_y.c" /* yacc.c:1646 */ +#line 2813 "parse_y.c" /* yacc.c:1652 */ break; case 162: -#line 1146 "parse_y.y" /* yacc.c:1646 */ +#line 1146 "parse_y.y" /* yacc.c:1652 */ { (yyval.flagtype) = pcb_flag_old((yyvsp[0].integer)); } -#line 2812 "parse_y.c" /* yacc.c:1646 */ +#line 2819 "parse_y.c" /* yacc.c:1652 */ break; case 163: -#line 1147 "parse_y.y" /* yacc.c:1646 */ +#line 1147 "parse_y.y" /* yacc.c:1652 */ { (yyval.flagtype) = pcb_strflg_s2f((yyvsp[0].string), yyerror, &yy_intconn, 1); free((yyvsp[0].string)); } -#line 2818 "parse_y.c" /* yacc.c:1646 */ +#line 2825 "parse_y.c" /* yacc.c:1652 */ break; case 167: -#line 1158 "parse_y.y" /* yacc.c:1646 */ +#line 1158 "parse_y.y" /* yacc.c:1652 */ { if ((yyvsp[-3].integer) <= 0 || (yyvsp[-3].integer) > PCB_MAX_FONTPOSITION) { @@ -2834,11 +2841,11 @@ Symbol->Valid = pcb_true; Symbol->Delta = NU ((yyvsp[-2].measure)); } -#line 2838 "parse_y.c" /* yacc.c:1646 */ +#line 2845 "parse_y.c" /* yacc.c:1652 */ break; case 168: -#line 1174 "parse_y.y" /* yacc.c:1646 */ +#line 1174 "parse_y.y" /* yacc.c:1652 */ { if ((yyvsp[-3].integer) <= 0 || (yyvsp[-3].integer) > PCB_MAX_FONTPOSITION) { @@ -2854,27 +2861,27 @@ Symbol->Valid = pcb_true; Symbol->Delta = OU ((yyvsp[-2].measure)); } -#line 2858 "parse_y.c" /* yacc.c:1646 */ +#line 2865 "parse_y.c" /* yacc.c:1652 */ break; case 174: -#line 1205 "parse_y.y" /* yacc.c:1646 */ +#line 1205 "parse_y.y" /* yacc.c:1652 */ { pcb_font_new_line_in_sym(Symbol, OU ((yyvsp[-5].measure)), OU ((yyvsp[-4].measure)), OU ((yyvsp[-3].measure)), OU ((yyvsp[-2].measure)), OU ((yyvsp[-1].measure))); } -#line 2866 "parse_y.c" /* yacc.c:1646 */ +#line 2873 "parse_y.c" /* yacc.c:1652 */ break; case 175: -#line 1212 "parse_y.y" /* yacc.c:1646 */ +#line 1212 "parse_y.y" /* yacc.c:1652 */ { pcb_font_new_line_in_sym(Symbol, NU ((yyvsp[-5].measure)), NU ((yyvsp[-4].measure)), NU ((yyvsp[-3].measure)), NU ((yyvsp[-2].measure)), NU ((yyvsp[-1].measure))); } -#line 2874 "parse_y.c" /* yacc.c:1646 */ +#line 2881 "parse_y.c" /* yacc.c:1652 */ break; case 183: -#line 1239 "parse_y.y" /* yacc.c:1646 */ +#line 1239 "parse_y.y" /* yacc.c:1652 */ { currnet = pcb_net_get(yyPCB, &yyPCB->netlist[PCB_NETLIST_INPUT], (yyvsp[-3].string), 1); if (((yyvsp[-2].string) != NULL) && (*(yyvsp[-2].string) != '\0')) @@ -2882,38 +2889,38 @@ free ((yyvsp[-3].string)); free ((yyvsp[-2].string)); } -#line 2886 "parse_y.c" /* yacc.c:1646 */ +#line 2893 "parse_y.c" /* yacc.c:1652 */ break; case 189: -#line 1261 "parse_y.y" /* yacc.c:1646 */ +#line 1261 "parse_y.y" /* yacc.c:1652 */ { pcb_net_term_get_by_pinname(currnet, (yyvsp[-1].string), 1); free ((yyvsp[-1].string)); } -#line 2895 "parse_y.c" /* yacc.c:1646 */ +#line 2902 "parse_y.c" /* yacc.c:1652 */ break; case 197: -#line 1308 "parse_y.y" /* yacc.c:1646 */ +#line 1308 "parse_y.y" /* yacc.c:1652 */ { pcb_ratspatch_append(yyPCB, RATP_ADD_CONN, (yyvsp[-2].string), (yyvsp[-1].string), NULL); free((yyvsp[-2].string)); free((yyvsp[-1].string)); } -#line 2901 "parse_y.c" /* yacc.c:1646 */ +#line 2908 "parse_y.c" /* yacc.c:1652 */ break; case 198: -#line 1309 "parse_y.y" /* yacc.c:1646 */ +#line 1309 "parse_y.y" /* yacc.c:1652 */ { pcb_ratspatch_append(yyPCB, RATP_DEL_CONN, (yyvsp[-2].string), (yyvsp[-1].string), NULL); free((yyvsp[-2].string)); free((yyvsp[-1].string)); } -#line 2907 "parse_y.c" /* yacc.c:1646 */ +#line 2914 "parse_y.c" /* yacc.c:1652 */ break; case 199: -#line 1310 "parse_y.y" /* yacc.c:1646 */ +#line 1310 "parse_y.y" /* yacc.c:1652 */ { pcb_ratspatch_append(yyPCB, RATP_CHANGE_ATTRIB, (yyvsp[-3].string), (yyvsp[-2].string), (yyvsp[-1].string)); free((yyvsp[-3].string)); free((yyvsp[-2].string)); free((yyvsp[-1].string)); } -#line 2913 "parse_y.c" /* yacc.c:1646 */ +#line 2920 "parse_y.c" /* yacc.c:1652 */ break; case 200: -#line 1315 "parse_y.y" /* yacc.c:1646 */ +#line 1315 "parse_y.y" /* yacc.c:1652 */ { char *old_val, *key = (yyvsp[-2].string), *val = (yyvsp[-1].string) ? (yyvsp[-1].string) : (char *)""; old_val = pcb_attribute_get(attr_list, key); @@ -2924,95 +2931,95 @@ free(key); free(val); } -#line 2928 "parse_y.c" /* yacc.c:1646 */ +#line 2935 "parse_y.c" /* yacc.c:1652 */ break; case 201: -#line 1327 "parse_y.y" /* yacc.c:1646 */ +#line 1327 "parse_y.y" /* yacc.c:1652 */ { (yyval.string) = (yyvsp[0].string); } -#line 2934 "parse_y.c" /* yacc.c:1646 */ +#line 2941 "parse_y.c" /* yacc.c:1652 */ break; case 202: -#line 1328 "parse_y.y" /* yacc.c:1646 */ +#line 1328 "parse_y.y" /* yacc.c:1652 */ { (yyval.string) = 0; } -#line 2940 "parse_y.c" /* yacc.c:1646 */ +#line 2947 "parse_y.c" /* yacc.c:1652 */ break; case 203: -#line 1332 "parse_y.y" /* yacc.c:1646 */ +#line 1332 "parse_y.y" /* yacc.c:1652 */ { (yyval.number) = (yyvsp[0].number); } -#line 2946 "parse_y.c" /* yacc.c:1646 */ +#line 2953 "parse_y.c" /* yacc.c:1652 */ break; case 204: -#line 1333 "parse_y.y" /* yacc.c:1646 */ +#line 1333 "parse_y.y" /* yacc.c:1652 */ { (yyval.number) = (yyvsp[0].integer); } -#line 2952 "parse_y.c" /* yacc.c:1646 */ +#line 2959 "parse_y.c" /* yacc.c:1652 */ break; case 205: -#line 1338 "parse_y.y" /* yacc.c:1646 */ +#line 1338 "parse_y.y" /* yacc.c:1652 */ { do_measure(&(yyval.measure), (yyvsp[0].number), PCB_MIL_TO_COORD ((yyvsp[0].number)) / 100.0, 0); } -#line 2958 "parse_y.c" /* yacc.c:1646 */ +#line 2965 "parse_y.c" /* yacc.c:1652 */ break; case 206: -#line 1339 "parse_y.y" /* yacc.c:1646 */ +#line 1339 "parse_y.y" /* yacc.c:1652 */ { M ((yyval.measure), (yyvsp[-1].number), PCB_MIL_TO_COORD ((yyvsp[-1].number)) / 100000.0); pcb_io_pcb_usty_seen |= PCB_USTY_UNITS; } -#line 2964 "parse_y.c" /* yacc.c:1646 */ +#line 2971 "parse_y.c" /* yacc.c:1652 */ break; case 207: -#line 1340 "parse_y.y" /* yacc.c:1646 */ +#line 1340 "parse_y.y" /* yacc.c:1652 */ { M ((yyval.measure), (yyvsp[-1].number), PCB_MIL_TO_COORD ((yyvsp[-1].number)) / 100.0); pcb_io_pcb_usty_seen |= PCB_USTY_UNITS; } -#line 2970 "parse_y.c" /* yacc.c:1646 */ +#line 2977 "parse_y.c" /* yacc.c:1652 */ break; case 208: -#line 1341 "parse_y.y" /* yacc.c:1646 */ +#line 1341 "parse_y.y" /* yacc.c:1652 */ { M ((yyval.measure), (yyvsp[-1].number), PCB_MIL_TO_COORD ((yyvsp[-1].number))); pcb_io_pcb_usty_seen |= PCB_USTY_UNITS; } -#line 2976 "parse_y.c" /* yacc.c:1646 */ +#line 2983 "parse_y.c" /* yacc.c:1652 */ break; case 209: -#line 1342 "parse_y.y" /* yacc.c:1646 */ +#line 1342 "parse_y.y" /* yacc.c:1652 */ { M ((yyval.measure), (yyvsp[-1].number), PCB_INCH_TO_COORD ((yyvsp[-1].number))); pcb_io_pcb_usty_seen |= PCB_USTY_UNITS; } -#line 2982 "parse_y.c" /* yacc.c:1646 */ +#line 2989 "parse_y.c" /* yacc.c:1652 */ break; case 210: -#line 1343 "parse_y.y" /* yacc.c:1646 */ +#line 1343 "parse_y.y" /* yacc.c:1652 */ { M ((yyval.measure), (yyvsp[-1].number), PCB_MM_TO_COORD ((yyvsp[-1].number)) / 1000000.0); pcb_io_pcb_usty_seen |= PCB_USTY_NANOMETER; } -#line 2988 "parse_y.c" /* yacc.c:1646 */ +#line 2995 "parse_y.c" /* yacc.c:1652 */ break; case 211: -#line 1344 "parse_y.y" /* yacc.c:1646 */ +#line 1344 "parse_y.y" /* yacc.c:1652 */ { M ((yyval.measure), (yyvsp[-1].number), PCB_MM_TO_COORD ((yyvsp[-1].number)) / 1000.0); pcb_io_pcb_usty_seen |= PCB_USTY_UNITS; } -#line 2994 "parse_y.c" /* yacc.c:1646 */ +#line 3001 "parse_y.c" /* yacc.c:1652 */ break; case 212: -#line 1345 "parse_y.y" /* yacc.c:1646 */ +#line 1345 "parse_y.y" /* yacc.c:1652 */ { M ((yyval.measure), (yyvsp[-1].number), PCB_MM_TO_COORD ((yyvsp[-1].number))); pcb_io_pcb_usty_seen |= PCB_USTY_UNITS; } -#line 3000 "parse_y.c" /* yacc.c:1646 */ +#line 3007 "parse_y.c" /* yacc.c:1652 */ break; case 213: -#line 1346 "parse_y.y" /* yacc.c:1646 */ +#line 1346 "parse_y.y" /* yacc.c:1652 */ { M ((yyval.measure), (yyvsp[-1].number), PCB_MM_TO_COORD ((yyvsp[-1].number)) * 1000.0); pcb_io_pcb_usty_seen |= PCB_USTY_UNITS; } -#line 3006 "parse_y.c" /* yacc.c:1646 */ +#line 3013 "parse_y.c" /* yacc.c:1652 */ break; case 214: -#line 1347 "parse_y.y" /* yacc.c:1646 */ +#line 1347 "parse_y.y" /* yacc.c:1652 */ { M ((yyval.measure), (yyvsp[-1].number), PCB_MM_TO_COORD ((yyvsp[-1].number)) * 1000000.0); pcb_io_pcb_usty_seen |= PCB_USTY_UNITS; } -#line 3012 "parse_y.c" /* yacc.c:1646 */ +#line 3019 "parse_y.c" /* yacc.c:1652 */ break; -#line 3016 "parse_y.c" /* yacc.c:1646 */ +#line 3023 "parse_y.c" /* yacc.c:1652 */ default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -3037,15 +3044,14 @@ /* Now 'shift' the result of the reduction. Determine what state that goes to, based on the state we popped back to and the rule number reduced by. */ + { + const int yylhs = yyr1[yyn] - YYNTOKENS; + const int yyi = yypgoto[yylhs] + *yyssp; + yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp + ? yytable[yyi] + : yydefgoto[yylhs]); + } - yyn = yyr1[yyn]; - - yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; - if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) - yystate = yytable[yystate]; - else - yystate = yydefgoto[yyn - YYNTOKENS]; - goto yynewstate; @@ -3127,13 +3133,11 @@ | yyerrorlab -- error raised explicitly by YYERROR. | `---------------------------------------------------*/ yyerrorlab: + /* Pacify compilers when the user code never invokes YYERROR and the + label yyerrorlab therefore never appears in user code. */ + if (0) + YYERROR; - /* Pacify compilers like GCC when the user code never invokes - YYERROR and the label yyerrorlab therefore never appears in user - code. */ - if (/*CONSTCOND*/ 0) - goto yyerrorlab; - /* Do not reclaim the symbols of the rule whose action triggered this YYERROR. */ YYPOPSTACK (yylen); @@ -3194,6 +3198,7 @@ yyresult = 0; goto yyreturn; + /*-----------------------------------. | yyabortlab -- YYABORT comes here. | `-----------------------------------*/ @@ -3201,6 +3206,7 @@ yyresult = 1; goto yyreturn; + #if !defined yyoverflow || YYERROR_VERBOSE /*-------------------------------------------------. | yyexhaustedlab -- memory exhaustion comes here. | @@ -3211,6 +3217,10 @@ /* Fall through. */ #endif + +/*-----------------------------------------------------. +| yyreturn -- parsing is finished, return the result. | +`-----------------------------------------------------*/ yyreturn: if (yychar != YYEMPTY) { @@ -3240,7 +3250,7 @@ #endif return yyresult; } -#line 1350 "parse_y.y" /* yacc.c:1906 */ +#line 1350 "parse_y.y" /* yacc.c:1918 */ /* --------------------------------------------------------------------------- Index: trunk/src_plugins/io_pcb/parse_y.h =================================================================== --- trunk/src_plugins/io_pcb/parse_y.h (revision 24881) +++ trunk/src_plugins/io_pcb/parse_y.h (revision 24882) @@ -1,8 +1,9 @@ -/* A Bison parser, made by GNU Bison 3.0.2. */ +/* A Bison parser, made by GNU Bison 3.3.2. */ /* Bison interface for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc. + Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2019 Free Software Foundation, + Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -30,6 +31,9 @@ This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ +/* Undocumented macros, especially those whose name start with YY_, + are private implementation details. Do not rely on them. */ + #ifndef YY_PCB_PARSE_Y_H_INCLUDED # define YY_PCB_PARSE_Y_H_INCLUDED /* Debug traces. */ @@ -98,10 +102,10 @@ /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED -typedef union YYSTYPE YYSTYPE; + union YYSTYPE { -#line 118 "parse_y.y" /* yacc.c:1909 */ +#line 118 "parse_y.y" /* yacc.c:1921 */ int integer; double number; @@ -109,8 +113,10 @@ pcb_flag_t flagtype; PLMeasure measure; -#line 113 "parse_y.h" /* yacc.c:1909 */ +#line 117 "parse_y.h" /* yacc.c:1921 */ }; + +typedef union YYSTYPE YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define YYSTYPE_IS_DECLARED 1 #endif Index: trunk/src_plugins/io_pcb/parse_y.y =================================================================== --- trunk/src_plugins/io_pcb/parse_y.y (revision 24881) +++ trunk/src_plugins/io_pcb/parse_y.y (revision 24882) @@ -332,17 +332,17 @@ pcbgridold : T_GRID '(' measure measure measure ')' { - yyPCB->Grid = OU ($3); - yyPCB->GridOffsetX = OU ($4); - yyPCB->GridOffsetY = OU ($5); + yyPCB->hidlib.grid = OU ($3); + yyPCB->hidlib.grid_ox = OU ($4); + yyPCB->hidlib.grid_oy = OU ($5); } ; pcbgridnew : T_GRID '(' measure measure measure INTEGER ')' { - yyPCB->Grid = OU ($3); - yyPCB->GridOffsetX = OU ($4); - yyPCB->GridOffsetY = OU ($5); + yyPCB->hidlib.grid = OU ($3); + yyPCB->hidlib.grid_ox = OU ($4); + yyPCB->hidlib.grid_oy = OU ($5); if (yy_settings_dest != CFR_invalid) { if ($6) conf_set(yy_settings_dest, "editor/draw_grid", -1, "true", POL_OVERWRITE); @@ -355,9 +355,9 @@ pcbhigrid : T_GRID '[' measure measure measure INTEGER ']' { - yyPCB->Grid = NU ($3); - yyPCB->GridOffsetX = NU ($4); - yyPCB->GridOffsetY = NU ($5); + yyPCB->hidlib.grid = NU ($3); + yyPCB->hidlib.grid_ox = NU ($4); + yyPCB->hidlib.grid_oy = NU ($5); if (yy_settings_dest != CFR_invalid) { if ($6) conf_set(yy_settings_dest, "editor/draw_grid", -1, "true", POL_OVERWRITE); Index: trunk/src_plugins/lib_gtk_common/bu_status_line.c =================================================================== --- trunk/src_plugins/lib_gtk_common/bu_status_line.c (revision 24881) +++ trunk/src_plugins/lib_gtk_common/bu_status_line.c (revision 24882) @@ -73,7 +73,7 @@ "text=%i%% %$mS " "buff=#%i", unit->allow, conf_core.editor.show_solder_side ? "bottom" : "top", - PCB->Grid, + PCB->hidlib.grid, conf_core.design.line_thickness, flag, conf_core.editor.rubber_band_mode ? ",R" : "", kbd, compat_horiz ? "\n" : "", /* line break */ @@ -93,7 +93,7 @@ "via=%mS (%mS) " "clearance=%mS", unit->allow, - PCB->Grid, + PCB->hidlib.grid, conf_core.design.line_thickness, conf_core.design.via_thickness, conf_core.design.via_drilling_hole, conf_core.design.clearance); Index: trunk/src_plugins/lib_hid_gl/hidgl.c =================================================================== --- trunk/src_plugins/lib_hid_gl/hidgl.c (revision 24881) +++ trunk/src_plugins/lib_hid_gl/hidgl.c (revision 24882) @@ -207,8 +207,8 @@ int y2 = y * y; for(x = -radius; x <= radius; x++) { if (x * x + y2 < r2) { - grid_points[npoints * 2] = x * PCB->Grid + cx; - grid_points[npoints * 2 + 1] = y * PCB->Grid + cy; + grid_points[npoints * 2] = x * PCB->hidlib.grid + cx; + grid_points[npoints * 2 + 1] = y * PCB->hidlib.grid + cy; npoints++; } } @@ -226,10 +226,10 @@ pcb_coord_t x1, y1, x2, y2, n, i; double x, y; - x1 = pcb_grid_fit(MAX(0, drawn_area->X1), PCB->Grid, PCB->GridOffsetX); - y1 = pcb_grid_fit(MAX(0, drawn_area->Y1), PCB->Grid, PCB->GridOffsetY); - x2 = pcb_grid_fit(MIN(PCB->MaxWidth, drawn_area->X2), PCB->Grid, PCB->GridOffsetX); - y2 = pcb_grid_fit(MIN(PCB->MaxHeight, drawn_area->Y2), PCB->Grid, PCB->GridOffsetY); + x1 = pcb_grid_fit(MAX(0, drawn_area->X1), PCB->hidlib.grid, PCB->hidlib.grid_ox); + y1 = pcb_grid_fit(MAX(0, drawn_area->Y1), PCB->hidlib.grid, PCB->hidlib.grid_oy); + x2 = pcb_grid_fit(MIN(PCB->MaxWidth, drawn_area->X2), PCB->hidlib.grid, PCB->hidlib.grid_ox); + y2 = pcb_grid_fit(MIN(PCB->MaxHeight, drawn_area->Y2), PCB->hidlib.grid, PCB->hidlib.grid_oy); if (x1 > x2) { pcb_coord_t tmp = x1; @@ -243,7 +243,7 @@ y2 = tmp; } - n = (int)((x2 - x1) / PCB->Grid + 0.5) + 1; + n = (int)((x2 - x1) / PCB->hidlib.grid + 0.5) + 1; reserve_grid_points(n); glEnableClientState(GL_VERTEX_ARRAY); @@ -250,10 +250,10 @@ glVertexPointer(2, GL_FLOAT, 0, grid_points); n = 0; - for(x = x1; x <= x2; x += PCB->Grid, ++n) + for(x = x1; x <= x2; x += PCB->hidlib.grid, ++n) grid_points[2 * n + 0] = x; - for(y = y1; y <= y2; y += PCB->Grid) { + for(y = y1; y <= y2; y += PCB->hidlib.grid) { for(i = 0; i < n; i++) grid_points[2 * i + 1] = y; glDrawArrays(GL_POINTS, 0, n); Index: trunk/src_plugins/smartdisperse/smartdisperse.c =================================================================== --- trunk/src_plugins/smartdisperse/smartdisperse.c (revision 24881) +++ trunk/src_plugins/smartdisperse/smartdisperse.c (revision 24882) @@ -56,13 +56,13 @@ dy = miny - sc->BoundingBox.Y1; /* snap to the grid */ - dx -= (ox + dx) % PCB->Grid; - dx += PCB->Grid; - dy -= (oy + dy) % PCB->Grid; - dy += PCB->Grid; + dx -= (ox + dx) % PCB->hidlib.grid; + dx += PCB->hidlib.grid; + dy -= (oy + dy) % PCB->hidlib.grid; + dy += PCB->hidlib.grid; /* and add one grid size so we make sure we always space by GAP or more */ - dx += PCB->Grid; + dx += PCB->hidlib.grid; /* Figure out if this row has room. If not, start a new row */ if (minx != GAP && GAP + sc->BoundingBox.X2 + dx > PCB->MaxWidth) {