Index: gtkhid-cairo.c =================================================================== --- gtkhid-cairo.c (revision 25363) +++ gtkhid-cairo.c (revision 25364) @@ -254,7 +254,7 @@ // } //} -static inline void ghid_cairo_draw_grid_global(cairo_t *cr) +static inline void ghid_cairo_draw_grid_global(pcb_hidlib_t *hidlib, cairo_t *cr) { //render_priv_t *priv = gport->render_priv; pcb_coord_t x, y, x1, y1, x2, y2, grd; @@ -262,12 +262,12 @@ static GdkPoint *points = NULL; static int npoints = 0; - x1 = pcb_grid_fit(MAX(0, SIDE_X(&gport->view, gport->view.x0)), PCB->hidlib.grid, PCB->hidlib.grid_ox); - y1 = pcb_grid_fit(MAX(0, SIDE_Y(&gport->view, gport->view.y0)), PCB->hidlib.grid, PCB->hidlib.grid_oy); - x2 = pcb_grid_fit(MIN(PCB->hidlib.size_x, SIDE_X(&gport->view, gport->view.x0 + gport->view.width - 1)), PCB->hidlib.grid, PCB->hidlib.grid_ox); - y2 = pcb_grid_fit(MIN(PCB->hidlib.size_y, SIDE_Y(&gport->view, gport->view.y0 + gport->view.height - 1)), PCB->hidlib.grid, PCB->hidlib.grid_oy); + x1 = pcb_grid_fit(MAX(0, SIDE_X(&gport->view, gport->view.x0)), hidlib->grid, hidlib->grid_ox); + y1 = pcb_grid_fit(MAX(0, SIDE_Y(&gport->view, gport->view.y0)), hidlib->grid, hidlib->grid_oy); + x2 = pcb_grid_fit(MIN(hidlib->size_x, SIDE_X(&gport->view, gport->view.x0 + gport->view.width - 1)), hidlib->grid, hidlib->grid_ox); + y2 = pcb_grid_fit(MIN(hidlib->size_y, SIDE_Y(&gport->view, gport->view.y0 + gport->view.height - 1)), hidlib->grid, hidlib->grid_oy); - grd = PCB->hidlib.grid; + grd = 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) @@ -333,7 +333,7 @@ } } -static void ghid_cairo_draw_grid_local_(pcb_coord_t cx, pcb_coord_t cy, int radius) +static void ghid_cairo_draw_grid_local_(pcb_hidlib_t *hidlib, pcb_coord_t cx, pcb_coord_t cy, int radius) { render_priv_t *priv = gport->render_priv; cairo_t *cr = priv->cr_target; @@ -358,8 +358,8 @@ recalc = 1; } - if (last_grid != PCB->hidlib.grid) { - last_grid = PCB->hidlib.grid; + if (last_grid != hidlib->grid) { + last_grid = hidlib->grid; recalc = 1; } @@ -371,8 +371,8 @@ int y2 = y * y; for (x = -radius; x <= radius; x++) { if (x * x + y2 < r2) { - points_base[npoints].x = x * PCB->hidlib.grid; - points_base[npoints].y = y * PCB->hidlib.grid; + points_base[npoints].x = x * hidlib->grid; + points_base[npoints].y = y * hidlib->grid; npoints++; } } @@ -396,7 +396,7 @@ static void ghid_cairo_draw_grid_local(pcb_hidlib_t *hidlib, pcb_coord_t cx, pcb_coord_t cy) { if (grid_local_have_old) { - ghid_cairo_draw_grid_local_(grid_local_old_x, grid_local_old_y, grid_local_old_r); + ghid_cairo_draw_grid_local_(hidlib, grid_local_old_x, grid_local_old_y, grid_local_old_r); grid_local_have_old = 0; } @@ -403,15 +403,15 @@ if (!conf_hid_gtk.plugins.hid_gtk.local_grid.enable) return; - if ((Vz(PCB->hidlib.grid) < PCB_MIN_GRID_DISTANCE) || (!pcbhl_conf.editor.draw_grid)) + if ((Vz(hidlib->grid) < PCB_MIN_GRID_DISTANCE) || (!pcbhl_conf.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->hidlib.grid) * PCB->hidlib.grid + PCB->hidlib.grid_ox; - cy = (cy / PCB->hidlib.grid) * PCB->hidlib.grid + PCB->hidlib.grid_oy; + cx = (cx / hidlib->grid) * hidlib->grid + hidlib->grid_ox; + cy = (cy / hidlib->grid) * hidlib->grid + hidlib->grid_oy; grid_local_have_old = 1; - ghid_cairo_draw_grid_local_(cx, cy, conf_hid_gtk.plugins.hid_gtk.local_grid.radius); + ghid_cairo_draw_grid_local_(hidlib, cx, cy, conf_hid_gtk.plugins.hid_gtk.local_grid.radius); grid_local_old_x = cx; grid_local_old_y = cy; grid_local_old_r = conf_hid_gtk.plugins.hid_gtk.local_grid.radius; @@ -455,12 +455,12 @@ return; } - ghid_cairo_draw_grid_global(cr); + ghid_cairo_draw_grid_global(hidlib, cr); cairo_restore(cr); } /* ------------------------------------------------------------ */ -static void ghid_cairo_draw_bg_image(void) +static void ghid_cairo_draw_bg_image(pcb_hidlib_t *hidlib) { static GdkPixbuf *pixbuf; GdkInterpType interp_type; @@ -485,8 +485,8 @@ src_y = 0; } - w = PCB->hidlib.size_x / gport->view.coord_per_px; - h = PCB->hidlib.size_y / gport->view.coord_per_px; + w = hidlib->size_x / gport->view.coord_per_px; + h = hidlib->size_y / gport->view.coord_per_px; src_x = src_x / gport->view.coord_per_px; src_y = src_y / gport->view.coord_per_px; dst_x = dst_x / gport->view.coord_per_px; @@ -1037,15 +1037,15 @@ ctx.view.X2 = MAX(Px(priv->clip_rect.x), Px(priv->clip_rect.x + priv->clip_rect.width + 1)); ctx.view.Y2 = MAX(Py(priv->clip_rect.y), Py(priv->clip_rect.y + priv->clip_rect.height + 1)); - ctx.view.X1 = MAX(0, MIN(PCB->hidlib.size_x, ctx.view.X1)); - ctx.view.X2 = MAX(0, MIN(PCB->hidlib.size_x, ctx.view.X2)); - ctx.view.Y1 = MAX(0, MIN(PCB->hidlib.size_y, ctx.view.Y1)); - ctx.view.Y2 = MAX(0, MIN(PCB->hidlib.size_y, ctx.view.Y2)); + ctx.view.X1 = MAX(0, MIN(hidlib->size_x, ctx.view.X1)); + ctx.view.X2 = MAX(0, MIN(hidlib->size_x, ctx.view.X2)); + ctx.view.Y1 = MAX(0, MIN(hidlib->size_y, ctx.view.Y1)); + ctx.view.Y2 = MAX(0, MIN(hidlib->size_y, ctx.view.Y2)); eleft = Vx(0); - eright = Vx(PCB->hidlib.size_x); + eright = Vx(hidlib->size_x); etop = Vy(0); - ebottom = Vy(PCB->hidlib.size_y); + ebottom = Vy(hidlib->size_y); if (eleft > eright) { int tmp = eleft; eleft = eright; @@ -1088,7 +1088,7 @@ cairo_fill(priv->cr); //gdk_draw_rectangle(gport->drawable, priv->bg_gc, 1, eleft, etop, eright - eleft + 1, ebottom - etop + 1); - ghid_cairo_draw_bg_image(); + ghid_cairo_draw_bg_image(hidlib); pcb_hid_expose_all(pcb_gui, &ctx, NULL); ghid_cairo_draw_grid(hidlib);