HistogramH and HistogramV graph modes
This commit is contained in:
parent
2a7ee749ba
commit
8bb69b65e9
39
src/draw.c
39
src/draw.c
|
|
@ -2733,6 +2733,7 @@ static void draw_graph_points(int idx, int first, int last,
|
||||||
poly_npoints++;
|
poly_npoints++;
|
||||||
}
|
}
|
||||||
set_thick_waves(1, wcnt, wave_col, gr);
|
set_thick_waves(1, wcnt, wave_col, gr);
|
||||||
|
if(digital || gr->mode == 0) { /* Line */
|
||||||
for(x = 0; x < 2; x++) {
|
for(x = 0; x < 2; x++) {
|
||||||
Drawable w;
|
Drawable w;
|
||||||
int offset = 0, size;
|
int offset = 0, size;
|
||||||
|
|
@ -2749,8 +2750,38 @@ static void draw_graph_points(int idx, int first, int last,
|
||||||
if(offset + size >= poly_npoints) break;
|
if(offset + size >= poly_npoints) break;
|
||||||
offset += MAX_POLY_POINTS -1; /* repeat last point on next iteration */
|
offset += MAX_POLY_POINTS -1; /* repeat last point on next iteration */
|
||||||
}
|
}
|
||||||
/*XDrawLines(display, xctx->window, xctx->gc[wave_col], point, poly_npoints, CoordModeOrigin);*/
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
else if(gr->mode == 1) { /* HistoV */
|
||||||
|
int y2 = (int)Y_TO_SCREEN(gr->y2);
|
||||||
|
for(x = 0; x < 2; x++) {
|
||||||
|
Drawable w;
|
||||||
|
if(x == 0 && xctx->draw_window) w = xctx->window;
|
||||||
|
else if(x == 1 && xctx->draw_pixmap) w = xctx->save_pixmap;
|
||||||
|
else continue;
|
||||||
|
for(p = 0; p < poly_npoints; p++) {
|
||||||
|
if(point[p].y != y2) {
|
||||||
|
XDrawLine(display, w, xctx->gc[wave_col], point[p].x, point[p].y, point[p].x, y2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
else if(gr->mode == 2) { /* HistoH */
|
||||||
|
int x1 = (int)X_TO_SCREEN(gr->x1);
|
||||||
|
for(x = 0; x < 2; x++) {
|
||||||
|
Drawable w;
|
||||||
|
if(x == 0 && xctx->draw_window) w = xctx->window;
|
||||||
|
else if(x == 1 && xctx->draw_pixmap) w = xctx->save_pixmap;
|
||||||
|
else continue;
|
||||||
|
for(p = 0; p < poly_npoints; p++) {
|
||||||
|
if(point[p].x != x1) {
|
||||||
|
XDrawLine(display, w, xctx->gc[wave_col], 0, point[p].y, point[p].x, point[p].y);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
set_thick_waves(0, wcnt, wave_col, gr);
|
set_thick_waves(0, wcnt, wave_col, gr);
|
||||||
/* } else dbg(1, "skipping wave: %s\n", raw->names[idx]); */
|
/* } else dbg(1, "skipping wave: %s\n", raw->names[idx]); */
|
||||||
for(p=0;p<cadlayers; ++p) {
|
for(p=0;p<cadlayers; ++p) {
|
||||||
|
|
@ -2916,6 +2947,12 @@ void setup_graph_data(int i, int skip, Graph_ctx *gr)
|
||||||
val = get_tok_value(r->prop_ptr,"legend", 0);
|
val = get_tok_value(r->prop_ptr,"legend", 0);
|
||||||
if(val[0]) gr->legend = atoi(val);
|
if(val[0]) gr->legend = atoi(val);
|
||||||
|
|
||||||
|
/* draw mode (0: Line, 1: Histo. Default: Line) */
|
||||||
|
val = get_tok_value(r->prop_ptr,"mode", 0);
|
||||||
|
if(!strcmp(val, "HistoV")) gr->mode = 1;
|
||||||
|
else if(!strcmp(val, "HistoH")) gr->mode = 2;
|
||||||
|
else gr->mode = 0;
|
||||||
|
|
||||||
/* get x/y range, grid info etc */
|
/* get x/y range, grid info etc */
|
||||||
val = get_tok_value(r->prop_ptr,"unitx", 0);
|
val = get_tok_value(r->prop_ptr,"unitx", 0);
|
||||||
gr->unitx_suffix = val[0];
|
gr->unitx_suffix = val[0];
|
||||||
|
|
|
||||||
|
|
@ -857,11 +857,11 @@ typedef struct
|
||||||
typedef struct {
|
typedef struct {
|
||||||
int digital;
|
int digital;
|
||||||
int legend; /* display graph legend */
|
int legend; /* display graph legend */
|
||||||
double rx1, ry1, rx2, ry2, rw, rh; /* container rectangle */
|
double rx1, ry1, rx2, ry2, rw, rh; /* container rectangle, xschem coordinates */
|
||||||
double sx1, sy1, sx2, sy2; /* screen coordinates of above */
|
double sx1, sy1, sx2, sy2; /* screen coordinates of above */
|
||||||
/* graph box (smaller than rect container due to margins) */
|
/* graph box (smaller than rect container due to margins) in xschem coordinates*/
|
||||||
double x1, y1, x2, y2, w, h;
|
double x1, y1, x2, y2, w, h;
|
||||||
/* the following are the x1,x2, y1, y2 rectangle attributes */
|
/* the following are the x1, x2, y1, y2 rectangle attributes */
|
||||||
double gx1, gy1, gx2, gy2, gw, gh;
|
double gx1, gy1, gx2, gy2, gw, gh;
|
||||||
double master_gx1, master_gx2, master_gw, master_cx;
|
double master_gx1, master_gx2, master_gw, master_cx;
|
||||||
/* y area range for digital graphs */
|
/* y area range for digital graphs */
|
||||||
|
|
@ -881,6 +881,7 @@ typedef struct {
|
||||||
double unitx, unity;
|
double unitx, unity;
|
||||||
int unitx_suffix; /* 'n' or 'u' or 'M' or 'k' ... */
|
int unitx_suffix; /* 'n' or 'u' or 'M' or 'k' ... */
|
||||||
int unity_suffix;
|
int unity_suffix;
|
||||||
|
int mode; /* default:0 0:Line, 1:HistoV, 2:HistoH */
|
||||||
double txtsizelab, digtxtsizelab, txtsizey, txtsizex;
|
double txtsizelab, digtxtsizelab, txtsizey, txtsizex;
|
||||||
int dataset;
|
int dataset;
|
||||||
int hilight_wave; /* wave index */
|
int hilight_wave; /* wave index */
|
||||||
|
|
|
||||||
|
|
@ -2972,6 +2972,15 @@ proc graph_edit_properties {n} {
|
||||||
entry .graphdialog.top2.sweep -width 10
|
entry .graphdialog.top2.sweep -width 10
|
||||||
entry_replace_selection .graphdialog.top2.sweep
|
entry_replace_selection .graphdialog.top2.sweep
|
||||||
|
|
||||||
|
label .graphdialog.top2.labmode -text {Mode}
|
||||||
|
spinbox .graphdialog.top2.mode -values {Line HistoV HistoH} -width 6 \
|
||||||
|
-command {
|
||||||
|
graph_push_undo
|
||||||
|
xschem setprop rect 2 $graph_selected mode [.graphdialog.top2.mode get]
|
||||||
|
xschem draw_graph $graph_selected
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
# bind .graphdialog.top2.sweep <KeyRelease> {
|
# bind .graphdialog.top2.sweep <KeyRelease> {
|
||||||
# graph_push_undo
|
# graph_push_undo
|
||||||
# xschem setprop rect 2 $graph_selected sweep [.graphdialog.top2.sweep get]
|
# xschem setprop rect 2 $graph_selected sweep [.graphdialog.top2.sweep get]
|
||||||
|
|
@ -2989,29 +2998,39 @@ proc graph_edit_properties {n} {
|
||||||
set graph_divx [xschem getprop rect 2 $graph_selected divx]
|
set graph_divx [xschem getprop rect 2 $graph_selected divx]
|
||||||
if {$graph_divx eq {}} { set graph_divx 5}
|
if {$graph_divx eq {}} { set graph_divx 5}
|
||||||
.graphdialog.top2.divx insert 0 $graph_divx
|
.graphdialog.top2.divx insert 0 $graph_divx
|
||||||
|
|
||||||
set graph_divy [xschem getprop rect 2 $graph_selected divy]
|
set graph_divy [xschem getprop rect 2 $graph_selected divy]
|
||||||
if {$graph_divy eq {}} { set graph_divy 5}
|
if {$graph_divy eq {}} { set graph_divy 5}
|
||||||
.graphdialog.top2.divy insert 0 $graph_divy
|
.graphdialog.top2.divy insert 0 $graph_divy
|
||||||
|
|
||||||
set graph_subdivx [xschem getprop rect 2 $graph_selected subdivx]
|
set graph_subdivx [xschem getprop rect 2 $graph_selected subdivx]
|
||||||
if {$graph_subdivx eq {}} { set graph_subdivx 1}
|
if {$graph_subdivx eq {}} { set graph_subdivx 1}
|
||||||
.graphdialog.top2.subdivx insert 0 $graph_subdivx
|
.graphdialog.top2.subdivx insert 0 $graph_subdivx
|
||||||
|
|
||||||
set graph_subdivy [xschem getprop rect 2 $graph_selected subdivy]
|
set graph_subdivy [xschem getprop rect 2 $graph_selected subdivy]
|
||||||
if {$graph_subdivy eq {}} { set graph_subdivy 1}
|
if {$graph_subdivy eq {}} { set graph_subdivy 1}
|
||||||
.graphdialog.top2.subdivy insert 0 $graph_subdivy
|
.graphdialog.top2.subdivy insert 0 $graph_subdivy
|
||||||
|
|
||||||
set graph_unitx [xschem getprop rect 2 $graph_selected unitx]
|
set graph_unitx [xschem getprop rect 2 $graph_selected unitx]
|
||||||
if {$graph_unitx eq {}} { set graph_unitx 1}
|
if {$graph_unitx eq {}} { set graph_unitx 1}
|
||||||
.graphdialog.top2.unitx set $graph_unitx
|
.graphdialog.top2.unitx set $graph_unitx
|
||||||
|
|
||||||
set graph_unity [xschem getprop rect 2 $graph_selected unity]
|
set graph_unity [xschem getprop rect 2 $graph_selected unity]
|
||||||
if {$graph_unity eq {}} { set graph_unity 1}
|
if {$graph_unity eq {}} { set graph_unity 1}
|
||||||
.graphdialog.top2.unity set $graph_unity
|
.graphdialog.top2.unity set $graph_unity
|
||||||
|
|
||||||
|
set graph_mode [xschem getprop rect 2 $graph_selected mode]
|
||||||
|
if {$graph_mode eq {}} { set graph_mode Line}
|
||||||
|
.graphdialog.top2.mode set $graph_mode
|
||||||
|
|
||||||
pack .graphdialog.top2.labunitx .graphdialog.top2.unitx \
|
pack .graphdialog.top2.labunitx .graphdialog.top2.unitx \
|
||||||
.graphdialog.top2.labunity .graphdialog.top2.unity -side left
|
.graphdialog.top2.labunity .graphdialog.top2.unity -side left
|
||||||
|
|
||||||
pack .graphdialog.top2.labdivx .graphdialog.top2.divx \
|
pack .graphdialog.top2.labdivx .graphdialog.top2.divx \
|
||||||
.graphdialog.top2.labdivy .graphdialog.top2.divy \
|
.graphdialog.top2.labdivy .graphdialog.top2.divy \
|
||||||
.graphdialog.top2.labsubdivx .graphdialog.top2.subdivx \
|
.graphdialog.top2.labsubdivx .graphdialog.top2.subdivx \
|
||||||
.graphdialog.top2.labsubdivy .graphdialog.top2.subdivy \
|
.graphdialog.top2.labsubdivy .graphdialog.top2.subdivy -side left
|
||||||
.graphdialog.top2.labsweep -side left
|
pack .graphdialog.top2.labmode .graphdialog.top2.mode .graphdialog.top2.labsweep -side left
|
||||||
pack .graphdialog.top2.sweep -side left -fill x -expand yes
|
pack .graphdialog.top2.sweep -side left -fill x -expand yes
|
||||||
|
|
||||||
# top frame
|
# top frame
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue