[med-svn] [SCM] aghermann branch, master, updated. c0bd21ca8eb529ade7e0c7aad22951a308a8dc8f
Andrei Zavada
johnhommer at gmail.com
Wed May 1 00:09:37 UTC 2013
The following commit has been merged in the master branch:
commit eceb9941250fe2c1deb436e874bd3b93d587bc1e
Author: Andrei Zavada <johnhommer at gmail.com>
Date: Fri Apr 26 01:49:49 2013 +0300
better, but still not optimal, stacking of ann. labels on montage
diff --git a/src/ui/sf/montage.cc b/src/ui/sf/montage.cc
index 71fb38d..67af5e7 100644
--- a/src/ui/sf/montage.cc
+++ b/src/ui/sf/montage.cc
@@ -761,44 +761,53 @@ draw_montage( cairo_t* cr)
}
}
// recording-wide annotations
- for ( auto &SA : common_annotations ) {
- auto &S = *SA.first;
- auto &A = *SA.second;
+ if ( not common_annotations.empty() ) {
+ cairo_select_font_face( cr, "serif", CAIRO_FONT_SLANT_ITALIC, CAIRO_FONT_WEIGHT_NORMAL);
+ cairo_set_font_size( cr, 10);
+ cairo_text_extents_t extents;
+
+ double last_label_end = 0.;
+ int overlap_count = 0;
+
double cvpa = cur_xvpage_start(),
cvpe = cur_xvpage_end(),
evpz = cvpe - cvpa;
- double last_z = 0;
- int overlap_count = 0;
- if ( agh::alg::overlap( A.span.a, A.span.z, cvpa, cvpe) ) {
- double aa = A.span.a - cvpa,
- ae = A.span.z - cvpa;
- agh::alg::ensure_within( aa, -half_pad, -half_pad + evpz);
- agh::alg::ensure_within( ae, -half_pad, -half_pad + evpz);
-
- auto wa = fmod(aa, evpz) / evpz * da_wd,
- ww = (ae - aa) / evpz * da_wd;
-
- int disp = 0 +
- ((last_z > A.span.a)
- ? ++overlap_count * 5
- : (overlap_count = 0));
- last_z = A.span.z;
-
- _p.CwB[SExpDesignUI::TColour::sf_embedded_annotations].set_source_rgba( cr, .9);
- cairo_set_line_width( cr, 2.5);
- cairo_rectangle( cr, wa, 0, ww, da_ht);
- cairo_stroke( cr);
- _p.CwB[SExpDesignUI::TColour::sf_embedded_annotations].set_source_rgba( cr);
- cairo_rectangle( cr, wa, 0, ww, da_ht);
- cairo_fill( cr);
- cairo_stroke( cr);
+ for ( auto &SA : common_annotations ) {
+ auto &S = *SA.first;
+ auto &A = *SA.second;
+ if ( agh::alg::overlap( A.span.a, A.span.z, cvpa, cvpe) ) {
+ double aa = A.span.a - cvpa,
+ ae = A.span.z - cvpa;
+ agh::alg::ensure_within( aa, -half_pad, -half_pad + evpz);
+ agh::alg::ensure_within( ae, -half_pad, -half_pad + evpz);
- cairo_select_font_face( cr, "serif", CAIRO_FONT_SLANT_ITALIC, CAIRO_FONT_WEIGHT_NORMAL);
- cairo_set_font_size( cr, 11);
- cairo_set_source_rgb( cr, 0., 0., 0.);
- cairo_move_to( cr, fmod(aa, evpz) / evpz * da_wd, da_ht - 12 - disp);
- cairo_show_text( cr, A.label.c_str());
+ auto wa = fmod(aa, evpz) / evpz * da_wd,
+ ww = (ae - aa) / evpz * da_wd;
+
+ cairo_text_extents( cr, A.label.c_str(), &extents);
+
+ int disp = 0 +
+ (last_label_end > wa)
+ ? ++overlap_count * 12
+ : (overlap_count = 0);
+ last_label_end = wa + extents.width + 3;
+
+ _p.CwB[SExpDesignUI::TColour::sf_embedded_annotations].set_source_rgba( cr, .9);
+ cairo_set_line_width( cr, 2.5);
+ cairo_rectangle( cr, wa, 0, ww, da_ht);
+ cairo_stroke( cr);
+
+ _p.CwB[SExpDesignUI::TColour::sf_embedded_annotations].set_source_rgba( cr);
+ cairo_rectangle( cr, wa, 0, ww, da_ht);
+ cairo_fill( cr);
+ cairo_stroke( cr);
+
+ cairo_set_source_rgb( cr, 0., 0., 0.);
+ cairo_move_to( cr, wa, da_ht - 12 - disp);
+ cairo_show_text( cr, A.label.c_str());
+ cairo_stroke( cr);
+ }
}
}
case TMode::showing_remixed:
--
Sleep experiment manager
More information about the debian-med-commit
mailing list