From 8cc6315e09e163fcbf9162b012a3bd7e8e389aea Mon Sep 17 00:00:00 2001 From: Stefan Frederik Date: Wed, 29 Dec 2021 06:21:51 +0100 Subject: [PATCH] graphical improvements for better graph scaling --- src/draw.c | 28 +++++++++++++----------- xschem_library/rom8k/rom8k.sch | 40 ++++++++++++++++------------------ 2 files changed, 34 insertions(+), 34 deletions(-) diff --git a/src/draw.c b/src/draw.c index 1bca92ab..2c3abc82 100644 --- a/src/draw.c +++ b/src/draw.c @@ -1820,7 +1820,8 @@ static void draw_graph_bus_points(const char *ntok, int first, int last, double charwidth = labsize * 38.0; char str[100]; int hex_digits = (n_bits - 1) / 4 + 1; - + double x_size = 1 * xctx->zoom; + idx_arr = my_malloc(1454, (n_bits) * sizeof(int)); p = 0; dbg(1, "n_bits = %d\n", n_bits); @@ -1854,10 +1855,10 @@ static void draw_graph_bus_points(const char *ntok, int first, int last, } if(p > first && busval != old_busval) { /* draw transition ('X') */ - drawline(BACKLAYER, NOW, xval-1, yhigh, xval+1, yhigh, 0); - drawline(BACKLAYER, NOW, xval-1, ylow, xval+1, ylow, 0); - drawline(wave_col, NOW, xval-1, ylow, xval+1, yhigh, 0); - drawline(wave_col, NOW, xval-1, yhigh, xval+1, ylow, 0); + drawline(BACKLAYER, NOW, xval-x_size, yhigh, xval+x_size, yhigh, 0); + drawline(BACKLAYER, NOW, xval-x_size, ylow, xval+x_size, ylow, 0); + drawline(wave_col, NOW, xval-x_size, ylow, xval+x_size, yhigh, 0); + drawline(wave_col, NOW, xval-x_size, yhigh, xval+x_size, ylow, 0); /* build hex string for bus value */ sprintf(str, "%0*lX", hex_digits, old_busval); /* draw hex bus value if there is enough room */ @@ -1921,6 +1922,7 @@ static void draw_graph_grid( int j, k; char lab[30]; double tmp, txtsizex, txtsizey; + double mark_size = marginx/20.0; w = (x2 - x1); h = (y2 - y1); @@ -1963,10 +1965,10 @@ static void draw_graph_grid( if(axis_end(wx, deltax, wx2)) break; /* swap order of wy1 and wy2 since grap y orientation is opposite to xorg orientation */ drawline(GRIDLAYER, ADD, W_X(wx), W_Y(wy2), W_X(wx), W_Y(wy1), dash_sizey); - drawline(GRIDLAYER, ADD, W_X(wx), W_Y(wy1), W_X(wx), W_Y(wy1) + 4, 0); /* axis marks */ + drawline(GRIDLAYER, ADD, W_X(wx), W_Y(wy1), W_X(wx), W_Y(wy1) + mark_size, 0); /* axis marks */ /* X-axis labels */ my_snprintf(lab, S(lab), "%g", wx * unitx); - draw_string(3, NOW, lab, 0, 0, 1, 0, W_X(wx), y2 + 30 * txtsizex, txtsizex, txtsizex); + draw_string(3, NOW, lab, 0, 0, 1, 0, W_X(wx), y2 + mark_size + 20 * txtsizex, txtsizex, txtsizex); } /* first and last vertical box delimiters */ drawline(GRIDLAYER, ADD, W_X(wx1), W_Y(wy2), W_X(wx1), W_Y(wy1), 0); @@ -1986,10 +1988,10 @@ static void draw_graph_grid( if(!axis_within_range(wy, wy1, wy2)) continue; if(axis_end(wy, deltay, wy2)) break; drawline(GRIDLAYER, ADD, W_X(wx1), W_Y(wy), W_X(wx2), W_Y(wy), dash_sizex); - drawline(GRIDLAYER, ADD, W_X(wx1)-4, W_Y(wy), W_X(wx1), W_Y(wy), 0); /* axis marks */ + drawline(GRIDLAYER, ADD, W_X(wx1) - mark_size, W_Y(wy), W_X(wx1), W_Y(wy), 0); /* axis marks */ /* Y-axis labels */ my_snprintf(lab, S(lab), "%g", wy * unity); - draw_string(3, NOW, lab, 0, 1, 0, 1, x1 - 4 - 30 * txtsizey, W_Y(wy), txtsizey, txtsizey); + draw_string(3, NOW, lab, 0, 1, 0, 1, x1 - mark_size - 20 * txtsizey, W_Y(wy), txtsizey, txtsizey); } } /* first and last horizontal box delimiters */ @@ -2085,10 +2087,10 @@ void draw_graph(int c, int i, int flags) /* set margins */ calc_graph_area(c, i, digital, &x1, &y1, &x2, &y2, &marginx, &marginy); - txtsizelab = marginy * 0.011; - tmp = (x2 - x1) / divx * 0.0033; + txtsizelab = marginy * 0.014; + tmp = (x2 - x1) * 0.00036; if(tmp < txtsizelab) txtsizelab = tmp; - digtxtsizelab = txtsizelab * 0.7; + digtxtsizelab = txtsizelab * 0.73; /* cache coefficients for faster graph coord transformations */ cx = (x2 - x1) / (wx2 - wx1); dx = x1 - wx1 * cx; @@ -2147,7 +2149,7 @@ void draw_graph(int c, int i, int flags) if(digital) { /* int n = n_nodes > dig_max_waves ? dig_max_waves : n_nodes; */ int n = dig_max_waves; - double xt = x1 - 4 - 30 * txtsizelab; + double xt = x1 - 10 * txtsizelab; double delta_div_n = (wy2 - wy1) / n; double yt = delta_div_n * (double)wcnt; diff --git a/xschem_library/rom8k/rom8k.sch b/xschem_library/rom8k/rom8k.sch index 0969f5bd..53912021 100644 --- a/xschem_library/rom8k/rom8k.sch +++ b/xschem_library/rom8k/rom8k.sch @@ -27,13 +27,13 @@ L 8 1150 -160 1180 -160 {} L 8 1180 -160 1180 -120 {} L 8 1180 -120 1300 -120 {} L 8 820 -120 950 -120 {} -B 2 1840 -400 2890 -280 {flags=1 +B 2 1840 -420 2890 -280 {flags=1 y1 = 0 -y2 = 0.9 -divy = 1 -subdivy=2 -x1=1.30572e-07 -x2=1.82007e-07 divx=10 +y2 = 1 +divy = 3 +subdivy=1 +x1=1.22237e-07 +x2=1.80069e-07 divx=10 node=" v(ldbl[0]) v(ldbl[16]) v(ldbl[32]) v(ldbl[1]) v(ldbl[17]) v(ldbl[33]) @@ -46,8 +46,8 @@ y1 = -0.0120424 y2 = 1.50796 subdivy=1 divy = 4 -x1=1.30572e-07 -x2=1.82007e-07 +x1=1.22237e-07 +x2=1.80069e-07 divx=10 subdivx=4 node="v(ldcp) v(ldyms[4]) v(ldyms[5]) v(ldyms[6]) v(ldyms[7])" @@ -59,33 +59,31 @@ y2 = 1.6 divy = 3 subdivy=0 subdivx = 1 -x1=1.30572e-07 -x2=1.82007e-07 divx=10 +x1=1.22237e-07 +x2=1.80069e-07 divx=10 node=" -v(ldcp) v(ldwl[0]) v(ldwl[1]) v(ldwl[2]) v(ldwl[3]) v(ldwl[4]) v(ldwl[5]) v(ldwl[6]) v(ldwl[16]) v(ldwl[7]) v(ldwl[8]) v(ldwl[9])" -xcolor="12 15 16 17 18 19 20 21 11 7 4 8 9" -color="4 5" +color="4 5 4 5 4 5 4 5 4 5 4 5" unitx=n } -B 2 1840 -120 2890 -40 {flags=1 +B 2 1840 -120 2890 -20 {flags=1 y1 = 0 y2 = 0.9 divy = 1 -x1=1.30572e-07 -x2=1.82007e-07 divx=10 +x1=1.22237e-07 +x2=1.80069e-07 divx=10 node="v(ldymsref)" color=3 unitx=n subdivy=4} -B 2 1840 -880 2890 -400 {flags=1 +B 2 1840 -880 2890 -420 {flags=1 digital=1 dig_max_waves=12 y1 = -0.0811982 y2 = 1.4188 divy = 1 -x1=1.30572e-07 -x2=1.82007e-07 +x1=1.22237e-07 +x2=1.80069e-07 divx=10 subdivx=4 node=" @@ -108,8 +106,8 @@ B 2 1840 -1270 2890 -1090 {flags=1 y1 = -0.0479717 y2 = 1.55203 divy = 4 -x1=1.30572e-07 -x2=1.82007e-07 +x1=1.22237e-07 +x2=1.80069e-07 divx=8 node="v(xsa[0].ldqi) v(xsa[0].ldqib) v(xsa[0].ldsali)" color="16 8 15"}