Make the plot legends scale proportionally with the plot - gsl-shell.git - gsl-shell

index : gsl-shell.git
gsl-shell
summary refs log tree commit diff
path: root/agg-plot/plot.h
diff options
context:
space:
mode:
authorFrancesco Abbate <francesco.bbt@gmail.com>2012年07月21日 10:41:07 +0200
committerFrancesco Abbate <francesco.bbt@gmail.com>2012年07月21日 10:41:07 +0200
commit92e12ee84e5db62e8d33a1a32d9a5d6289c9fffc (patch)
treee17345558401732eb58cd85229b1e4c58a1553c9 /agg-plot/plot.h
parent6a5aa48d30b5ba557361d8b85a32fe3085cf04e2 (diff)
downloadgsl-shell-92e12ee84e5db62e8d33a1a32d9a5d6289c9fffc.tar.gz
Make the plot legends scale proportionally with the plot
Diffstat (limited to 'agg-plot/plot.h')
-rw-r--r--agg-plot/plot.h 14
1 files changed, 12 insertions, 2 deletions
diff --git a/agg-plot/plot.h b/agg-plot/plot.h
index db6c5285..4956b359 100644
--- a/agg-plot/plot.h
+++ b/agg-plot/plot.h
@@ -589,11 +589,12 @@ static inline double approx_text_height(double text_size)
template <class RM>
agg::trans_affine plot<RM>::draw_legends(canvas_type& canvas,
- agg::trans_affine& canvas_mtx)
+ agg::trans_affine& canvas_mtx)
{
const double sx = canvas_mtx.sx, sy = canvas_mtx.sy;
const double ppad = double(canvas_margin_prop_space) / 1000.0;
const double fpad = double(canvas_margin_fixed_space);
+ const double size_frac_x = 0.125, size_frac_y = 0.05;
double dxl, dxr, dyb, dyt;
@@ -629,26 +630,35 @@ agg::trans_affine plot<RM>::draw_legends(canvas_type& canvas,
agg::rect_base<double> bb;
mp->get_bounding_rect(bb);
- double dx = bb.x2 - bb.x1, dy = bb.y2 - bb.y1;
+ double bb_dx = bb.x2 - bb.x1, bb_dy = bb.y2 - bb.y1;
+ double dx, dy;
double px, py;
switch (k)
{
case right:
+ dx = sx * size_frac_x;
+ dy = dx * bb_dy / bb_dx;
px = sx - dx - ppad * sx - dxr;
py = (sy - dy) / 2;
dxr += dx + 2 * ppad * sx;
break;
case left:
+ dx = sx * size_frac_x;
+ dy = dx * bb_dy / bb_dx;
px = ppad * sx + dxr;
py = (sy - dy) / 2;
dxl += dx + 2 * ppad * sx;
break;
case bottom:
+ dy = sy * size_frac_y;
+ dx = dy * bb_dx / bb_dy;
py = ppad * sy + dyb;
px = (sx - dx) / 2;
dyb += dy + 2 * ppad * sy;
break;
case top:
+ dy = sy * size_frac_y;
+ dx = dy * bb_dx / bb_dy;
py = sy - dy - ppad * sy - dyt;
px = (sx - dx) / 2;
dyt += dy + 2 * ppad * sy;
generated by cgit v1.2.3 (git 2.39.1) at 2025年09月13日 00:08:47 +0000

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