Compare commits

...

2 Commits

6 changed files with 26 additions and 10 deletions

View File

@ -5224,6 +5224,7 @@ void svg_embedded_graph(FILE *fd, int i, double rx1, double ry1, double rx2, dou
rwi = (int) (rw * scale + 1.0);
rhi = (int) (rh * scale + 1.0);
save_restore_zoom(1, &zi);
xctx->lw *= scale;
set_viewport_size(rwi, rhi, xctx->lw);
/* zoom_box(rx1 - xctx->lw, ry1 - xctx->lw, rx2 + xctx->lw, ry2 + xctx->lw, 1.0); */
@ -5273,7 +5274,7 @@ void svg_embedded_graph(FILE *fd, int i, double rx1, double ry1, double rx2, dou
xctx->do_copy_area=save;
tclsetboolvar("draw_grid", save_draw_grid);
save_restore_zoom(0, &zi);
resetwin(1, 1, 1, 0, 0);
resetwin(1, 1, 1, xctx->xrect[0].width, xctx->xrect[0].height);
h = fabs(y2 - y1);
w = fabs(x2 - x1);

View File

@ -84,6 +84,8 @@ symrec *tptr; /* For returning symbol-table pointers */
%token <val> NUM /* Simple double precision number */
%token <tptr> FNCT /* Variable and Function */
%type <val> exp
%right ':'
%right '?'
%right '='
%left '-' '+'
%left '*' '/' '%'
@ -113,6 +115,7 @@ exp: NUM {$$ = $1;}
| exp '/' exp {$$ = $1 / $3;}
| '-' exp %prec NEG {$$ = -$2;}
| exp '^' exp {$$ = pow ($1, $3);}
| exp '?' exp ':' exp {$$ = $1 ? $3 : $5;}
| '(' exp ')' {$$ = $2;}
;
/* End of grammar */

View File

@ -303,6 +303,7 @@ static int ps_embedded_graph(int i, double rx1, double ry1, double rx2, double r
rhi = (int)(rh * scale + 1.0);
dbg(1, "graph size, saving zoom : %dx%d\n", rwi, rhi);
save_restore_zoom(1, &zi);
xctx->lw *= scale;
set_viewport_size(rwi, rhi, xctx->lw);
/* zoom_box(rx1 - xctx->lw, ry1 - xctx->lw, rx2 + xctx->lw, ry2 + xctx->lw, 1.0); */
@ -1651,7 +1652,7 @@ void create_ps(char **psfile, int what, int fullzoom, int eps)
/* restore original size and zoom factor */
if(fullzoom == 1) {
save_restore_zoom(0, &zi);
resetwin(1, 1, 1, 0, 0);
resetwin(1, 1, 1, xctx->xrect[0].width, xctx->xrect[0].height);
change_linewidth(xctx->lw);
zoom_full(1, 0, 0 + 2 * tclgetboolvar("zoom_full_center"), 0.97);
}

View File

@ -4009,7 +4009,7 @@ int xschem(ClientData clientdata, Tcl_Interp *interp, int argc, const char * arg
resetwin(1, 1, 1, w, h);
ps_draw(7, fullzoom, eps);
save_restore_zoom(0, &zi);
resetwin(1, 1, 1, 0, 0);
resetwin(1, 1, 1, xctx->xrect[0].width, xctx->xrect[0].height);
change_linewidth(save_lw);
} else if(argc == 10 || xctx->lastsel) {
if(xctx->lastsel) {
@ -4039,7 +4039,7 @@ int xschem(ClientData clientdata, Tcl_Interp *interp, int argc, const char * arg
resetwin(1, 1, 1, w, h);
ps_draw(7, fullzoom, eps);
save_restore_zoom(0, &zi);
resetwin(1, 1, 1, 0, 0);
resetwin(1, 1, 1, xctx->xrect[0].width, xctx->xrect[0].height);
change_linewidth(save_lw);
} else {
fullzoom = 0;
@ -4077,7 +4077,7 @@ int xschem(ClientData clientdata, Tcl_Interp *interp, int argc, const char * arg
resetwin(1, 1, 1, w, h);
print_image();
save_restore_zoom(0, &zi);
resetwin(1, 1, 1, 0, 0);
resetwin(1, 1, 1, xctx->xrect[0].width, xctx->xrect[0].height);
change_linewidth(save_lw);
} else if(argc == 10 || xctx->lastsel) {
if(xctx->lastsel) {
@ -4107,7 +4107,7 @@ int xschem(ClientData clientdata, Tcl_Interp *interp, int argc, const char * arg
resetwin(1, 1, 1, w, h);
print_image();
save_restore_zoom(0, &zi);
resetwin(1, 1, 1, 0, 0);
resetwin(1, 1, 1, xctx->xrect[0].width, xctx->xrect[0].height);
change_linewidth(save_lw);
} else {
print_image();
@ -4137,8 +4137,11 @@ int xschem(ClientData clientdata, Tcl_Interp *interp, int argc, const char * arg
unselect_all(0);
}
else zoom_full(0, 0, 2 * tclgetboolvar("zoom_full_center"), 0.97);
resetwin(1, 1, 1, w, h);
svg_draw();
save_restore_zoom(0, &zi);
resetwin(1, 1, 1, xctx->xrect[0].width, xctx->xrect[0].height);
change_linewidth(save_lw);
} else if(argc == 10 || xctx->lastsel) {
if(xctx->lastsel) {
xRect boundbox;
@ -4164,13 +4167,14 @@ int xschem(ClientData clientdata, Tcl_Interp *interp, int argc, const char * arg
save_restore_zoom(1, &zi);
set_viewport_size(w, h, xctx->lw);
zoom_box(x1, y1, x2, y2, 1.0);
resetwin(1, 1, 1, w, h);
svg_draw();
save_restore_zoom(0, &zi);
resetwin(1, 1, 1, xctx->xrect[0].width, xctx->xrect[0].height);
change_linewidth(save_lw);
} else {
svg_draw();
}
resetwin(1, 1, 1, 0, 0);
change_linewidth(save_lw);
}
draw();
Tcl_ResetResult(interp);

View File

@ -4567,6 +4567,12 @@ const char *translate(int inst, const char* s)
STR_ALLOC(&result, tmp + result_pos, &size);
memcpy(result+result_pos,tmp_sym_name, tmp+1);
result_pos+=tmp;
} else if(inst >= 0 && strcmp(token,"@lvs_ignore")==0) {
char *lvs = tclgetboolvar("lvs_ignore") ? "1" : "0";
tmp = strlen(lvs);
STR_ALLOC(&result, tmp + result_pos, &size);
memcpy(result+result_pos, lvs, tmp+1);
result_pos+=tmp;
} else if(inst >= 0 && strcmp(token,"@symname")==0) {
tmp_sym_name = get_sym_name(inst, 0, 0, 0);
tmp_sym_name=tmp_sym_name ? tmp_sym_name : "";

View File

@ -1,4 +1,4 @@
v {xschem version=3.4.6 file_version=1.2
v {xschem version=3.4.8RC file_version=1.3
*
* This file is part of XSCHEM,
* a schematic capture and Spice/Vhdl/Verilog netlisting tool for circuit
@ -23,6 +23,7 @@ G {}
K {}
V {}
S {}
F {}
E {}
B 2 1690 -960 2250 -630 {flags=graph,unlocked
@ -183,7 +184,7 @@ autoload=1}
T {CMOS DIFFERENTIAL AMPLIFIER
EXAMPLE. DC simulation} 30 -680 0 0 0.4 0.4 {}
T {tcleval([xschem raw info])} 20 -960 0 0 0.4 0.4 {floater=true layer=16}
T {AC Analysis} 1060 -1010 0 0 0.6 0.6 { layer=6}
T {AC Analysis} 1060 -1000 0 0 0.6 0.6 { layer=6}
T {Transient Analysis} 1060 -510 0 0 0.6 0.6 { layer=6}
T {DC Analysis} 1690 -1000 0 0 0.6 0.6 { layer=6}
T {Loaded Raw files:} 20 -1010 0 0 0.6 0.6 {}