better line width calculation / restore in export images
This commit is contained in:
parent
7e820d05b0
commit
b95289ca5e
|
|
@ -3932,7 +3932,7 @@ void svg_embedded_graph(FILE *fd, xRect *r, double rx1, double ry1, double rx2,
|
||||||
cairo_surface_t *png_sfc;
|
cairo_surface_t *png_sfc;
|
||||||
int save, save_draw_window, save_draw_grid, rwi, rhi;
|
int save, save_draw_window, save_draw_grid, rwi, rhi;
|
||||||
size_t olength;
|
size_t olength;
|
||||||
const double max_size = 5000.0;
|
const double max_size = 3000.0;
|
||||||
|
|
||||||
if(!has_x) return;
|
if(!has_x) return;
|
||||||
rw = fabs(rx2 -rx1);
|
rw = fabs(rx2 -rx1);
|
||||||
|
|
|
||||||
|
|
@ -236,7 +236,7 @@ void ps_embedded_graph(xRect* r, double rx1, double ry1, double rx2, double ry2)
|
||||||
double rw, rh, scale;
|
double rw, rh, scale;
|
||||||
cairo_surface_t* png_sfc;
|
cairo_surface_t* png_sfc;
|
||||||
int save, save_draw_window, save_draw_grid, rwi, rhi;
|
int save, save_draw_window, save_draw_grid, rwi, rhi;
|
||||||
const double max_size = 5000.0;
|
const double max_size = 3000.0;
|
||||||
int d_c;
|
int d_c;
|
||||||
unsigned char* jpgData = NULL;
|
unsigned char* jpgData = NULL;
|
||||||
size_t fileSize = 0;
|
size_t fileSize = 0;
|
||||||
|
|
@ -990,7 +990,6 @@ void create_ps(char **psfile, int what, int fullzoom)
|
||||||
int c,i, textlayer;
|
int c,i, textlayer;
|
||||||
int old_grid;
|
int old_grid;
|
||||||
const char *textfont;
|
const char *textfont;
|
||||||
int save_change_lw;
|
|
||||||
static Zoom_info zi;
|
static Zoom_info zi;
|
||||||
|
|
||||||
dbg(1, "create_ps(): what = %d, fullzoom=%d\n", what, fullzoom);
|
dbg(1, "create_ps(): what = %d, fullzoom=%d\n", what, fullzoom);
|
||||||
|
|
@ -1209,8 +1208,6 @@ void create_ps(char **psfile, int what, int fullzoom)
|
||||||
xctx->text[i].xscale, xctx->text[i].yscale);
|
xctx->text[i].xscale, xctx->text[i].yscale);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
save_change_lw = tclgetintvar("change_lw");
|
|
||||||
tclsetintvar("change_lw", 0);
|
|
||||||
for(c=0;c<cadlayers; ++c)
|
for(c=0;c<cadlayers; ++c)
|
||||||
{
|
{
|
||||||
set_ps_colors(c);
|
set_ps_colors(c);
|
||||||
|
|
@ -1247,7 +1244,6 @@ void create_ps(char **psfile, int what, int fullzoom)
|
||||||
}
|
}
|
||||||
dbg(1, "create_ps(): starting drawing symbols on layer %d\n", c);
|
dbg(1, "create_ps(): starting drawing symbols on layer %d\n", c);
|
||||||
} /* for(c=0;c<cadlayers; ++c) */
|
} /* for(c=0;c<cadlayers; ++c) */
|
||||||
tclsetintvar("change_lw", save_change_lw);
|
|
||||||
|
|
||||||
/* bring outside previous for(c=0...) loop since ps_embedded_graph() calls ps_draw_symbol() */
|
/* bring outside previous for(c=0...) loop since ps_embedded_graph() calls ps_draw_symbol() */
|
||||||
for(c=0;c<cadlayers; ++c) {
|
for(c=0;c<cadlayers; ++c) {
|
||||||
|
|
|
||||||
|
|
@ -3067,6 +3067,7 @@ int xschem(ClientData clientdata, Tcl_Interp *interp, int argc, const char * arg
|
||||||
my_strncpy(xctx->plotfile, Tcl_GetStringResult(interp), S(xctx->plotfile));
|
my_strncpy(xctx->plotfile, Tcl_GetStringResult(interp), S(xctx->plotfile));
|
||||||
}
|
}
|
||||||
if(!strcmp(argv[2], "pdf") || !strcmp(argv[2],"ps")) {
|
if(!strcmp(argv[2], "pdf") || !strcmp(argv[2],"ps")) {
|
||||||
|
double save_lw = xctx->lw;
|
||||||
int fullzoom = 0;
|
int fullzoom = 0;
|
||||||
int w = 0, h = 0;
|
int w = 0, h = 0;
|
||||||
double x1, y1, x2, y2;
|
double x1, y1, x2, y2;
|
||||||
|
|
@ -3113,7 +3114,7 @@ int xschem(ClientData clientdata, Tcl_Interp *interp, int argc, const char * arg
|
||||||
ps_draw(7, fullzoom);
|
ps_draw(7, fullzoom);
|
||||||
save_restore_zoom(0, &zi);
|
save_restore_zoom(0, &zi);
|
||||||
resetwin(1, 1, 1, 0, 0);
|
resetwin(1, 1, 1, 0, 0);
|
||||||
change_linewidth(-1.);
|
change_linewidth(save_lw);
|
||||||
} else {
|
} else {
|
||||||
fullzoom = 0;
|
fullzoom = 0;
|
||||||
ps_draw(7, fullzoom);
|
ps_draw(7, fullzoom);
|
||||||
|
|
@ -3124,6 +3125,7 @@ int xschem(ClientData clientdata, Tcl_Interp *interp, int argc, const char * arg
|
||||||
ps_draw(7, fullzoom);
|
ps_draw(7, fullzoom);
|
||||||
}
|
}
|
||||||
else if(!strcmp(argv[2], "png")) {
|
else if(!strcmp(argv[2], "png")) {
|
||||||
|
double save_lw = xctx->lw;
|
||||||
int w = 0, h = 0;
|
int w = 0, h = 0;
|
||||||
double x1, y1, x2, y2;
|
double x1, y1, x2, y2;
|
||||||
if(argc == 6 && xctx->lastsel == 0) {
|
if(argc == 6 && xctx->lastsel == 0) {
|
||||||
|
|
@ -3167,13 +3169,14 @@ int xschem(ClientData clientdata, Tcl_Interp *interp, int argc, const char * arg
|
||||||
print_image();
|
print_image();
|
||||||
save_restore_zoom(0, &zi);
|
save_restore_zoom(0, &zi);
|
||||||
resetwin(1, 1, 1, 0, 0);
|
resetwin(1, 1, 1, 0, 0);
|
||||||
change_linewidth(-1.);
|
change_linewidth(save_lw);
|
||||||
} else {
|
} else {
|
||||||
print_image();
|
print_image();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(!strcmp(argv[2], "svg")) {
|
else if(!strcmp(argv[2], "svg")) {
|
||||||
int w = 0, h = 0, save_change_lw;
|
double save_lw = xctx->lw;
|
||||||
|
int w = 0, h = 0;
|
||||||
double x1, y1, x2, y2;
|
double x1, y1, x2, y2;
|
||||||
if(argc == 6 && xctx->lastsel == 0) {
|
if(argc == 6 && xctx->lastsel == 0) {
|
||||||
w = atoi(argv[4]);
|
w = atoi(argv[4]);
|
||||||
|
|
@ -3183,10 +3186,7 @@ int xschem(ClientData clientdata, Tcl_Interp *interp, int argc, const char * arg
|
||||||
save_restore_zoom(1, &zi);
|
save_restore_zoom(1, &zi);
|
||||||
set_viewport_size(w, h, xctx->lw);
|
set_viewport_size(w, h, xctx->lw);
|
||||||
zoom_full(0, 0, 2 * tclgetboolvar("zoom_full_center"), 0.97);
|
zoom_full(0, 0, 2 * tclgetboolvar("zoom_full_center"), 0.97);
|
||||||
save_change_lw = tclgetintvar("change_lw");
|
|
||||||
tclsetintvar("change_lw", 0);
|
|
||||||
svg_draw();
|
svg_draw();
|
||||||
tclsetintvar("change_lw", save_change_lw);
|
|
||||||
save_restore_zoom(0, &zi);
|
save_restore_zoom(0, &zi);
|
||||||
} else if(argc == 10 || xctx->lastsel) {
|
} else if(argc == 10 || xctx->lastsel) {
|
||||||
if(xctx->lastsel) {
|
if(xctx->lastsel) {
|
||||||
|
|
@ -3213,16 +3213,13 @@ int xschem(ClientData clientdata, Tcl_Interp *interp, int argc, const char * arg
|
||||||
save_restore_zoom(1, &zi);
|
save_restore_zoom(1, &zi);
|
||||||
set_viewport_size(w, h, xctx->lw);
|
set_viewport_size(w, h, xctx->lw);
|
||||||
zoom_box(x1, y1, x2, y2, 1.0);
|
zoom_box(x1, y1, x2, y2, 1.0);
|
||||||
save_change_lw = tclgetintvar("change_lw");
|
|
||||||
tclsetintvar("change_lw", 0);
|
|
||||||
svg_draw();
|
svg_draw();
|
||||||
tclsetintvar("change_lw", save_change_lw);
|
|
||||||
save_restore_zoom(0, &zi);
|
save_restore_zoom(0, &zi);
|
||||||
} else {
|
} else {
|
||||||
svg_draw();
|
svg_draw();
|
||||||
}
|
}
|
||||||
resetwin(1, 1, 1, 0, 0);
|
resetwin(1, 1, 1, 0, 0);
|
||||||
change_linewidth(-1.);
|
change_linewidth(save_lw);
|
||||||
}
|
}
|
||||||
draw();
|
draw();
|
||||||
Tcl_ResetResult(interp);
|
Tcl_ResetResult(interp);
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue