esthetic change in the plot lines and text when scaling - gsl-shell.git - gsl-shell

index : gsl-shell.git
gsl-shell
summary refs log tree commit diff
path: root/agg-plot
diff options
context:
space:
mode:
authorFrancesco Abbate <francesco.bbt@gmail.com>2010年09月18日 02:02:06 +0200
committerFrancesco Abbate <francesco.bbt@gmail.com>2010年09月18日 02:02:06 +0200
commit0aef60f69b2ea17f9c8f3581d4ebca62df4e75a5 (patch)
treeacda7fc5d00e52662cd25abdfb4e04892039823d /agg-plot
parent1f0276895e4ff9df327e317e44a1ca745a684dcb (diff)
downloadgsl-shell-0aef60f69b2ea17f9c8f3581d4ebca62df4e75a5.tar.gz
esthetic change in the plot lines and text when scaling
Diffstat (limited to 'agg-plot')
-rw-r--r--agg-plot/plot.h 38
1 files changed, 25 insertions, 13 deletions
diff --git a/agg-plot/plot.h b/agg-plot/plot.h
index 6bd54480..9d6afb25 100644
--- a/agg-plot/plot.h
+++ b/agg-plot/plot.h
@@ -165,6 +165,18 @@ compute_scale(agg::trans_affine& m) {
return min(m.sy, m.sx) / 480.0;
}
+static double
+std_line_width(double scale, double w = 1.0)
+{
+#if 0
+ const double dsf = M_LN10;
+ double ls = log(scale) / dsf;
+ return exp(round(ls) * dsf) * w * 1.5;
+#else
+ return w * 1.5;
+#endif
+}
+
template <class VS, class RM>
void plot<VS,RM>::commit_pending_draw()
{
@@ -240,7 +252,7 @@ void plot<VS,RM>::draw_title(canvas &canvas, agg::trans_affine& canvas_mtx)
title.size(12.0 * scale);
title.text(m_title);
- titlestroke.width(1.5 * scale);
+ titlestroke.width(std_line_width(scale));
titlestroke.line_cap(agg::round_cap);
titlestroke.line_join(agg::round_join);
@@ -375,21 +387,21 @@ void plot<VS,RM>::draw_axis(canvas &canvas, agg::trans_affine& canvas_mtx)
char lab_text[32];
double xlab = 0, ylab = y;
- lab.size(10.0 * scale);
+ lab.size(12.0 * scale);
m_uy.mark_label(lab_text, 32, j);
lab.text(lab_text);
- labs.width(1.5 * scale);
+ labs.width(std_line_width(scale));
m.transform(&xlab, &ylab);
- xlab += -lab.text_width() - 8.0 * scale;
+ xlab += -lab.text_width() - 10.0 * scale;
ylab += -5.0 * scale;
lab.start_point(xlab, ylab);
canvas.draw(labs, agg::rgba(0, 0, 0));
mark.move_to(0.0, y);
- mark.line_to(-0.01 * scale, y);
+ mark.line_to(-0.01, y);
if (j > jinf && j < jsup)
{
@@ -409,21 +421,21 @@ void plot<VS,RM>::draw_axis(canvas &canvas, agg::trans_affine& canvas_mtx)
char lab_text[32];
double xlab = x, ylab = 0;
- lab.size(10.0 * scale);
+ lab.size(12.0 * scale);
m_ux.mark_label(lab_text, 32, j);
lab.text(lab_text);
- labs.width(1.5 * scale);
+ labs.width(std_line_width(scale));
m.transform(&xlab, &ylab);
xlab += -lab.text_width()/2.0;
- ylab += -20.0 * scale;
+ ylab += -24.0 * scale;
lab.start_point(xlab, ylab);
canvas.draw(labs, agg::rgba(0, 0, 0));
mark.move_to(x, 0.0);
- mark.line_to(x, -0.01 * scale);
+ mark.line_to(x, -0.01);
if (j > jinf && j < jsup)
{
@@ -433,12 +445,12 @@ void plot<VS,RM>::draw_axis(canvas &canvas, agg::trans_affine& canvas_mtx)
}
}
- lndash.add_dash(8.0 * scale, 4.0 * scale);
+ lndash.add_dash(7.0, 3.0);
- lns.width(0.25 * scale);
+ lns.width(std_line_width(scale, 0.25));
canvas.draw(lns, colors::black);
- mark_stroke.width(1.0 * scale);
+ mark_stroke.width(std_line_width(scale, 0.75));
canvas.draw(mark_stroke, colors::black);
agg::path_storage box;
@@ -451,7 +463,7 @@ void plot<VS,RM>::draw_axis(canvas &canvas, agg::trans_affine& canvas_mtx)
box.line_to(1.0, 0.0);
box.close_polygon();
- boxs.width(1.0 * scale);
+ boxs.width(std_line_width(scale));
canvas.draw(boxs, colors::black);
generated by cgit v1.2.3 (git 2.46.0) at 2025年10月02日 21:50:45 +0000

AltStyle によって変換されたページ (->オリジナル) /