From 86883ceb9298ccd7f082d77e01a39e360ce26953 Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Tue, 14 May 2019 22:54:17 +0100 Subject: [PATCH] Truncate audio mapping view channel group names (part of #1557). Backported from faa42e385ec2e36e75347ba5da1e4e0f69b6d6f3 in v2.15.x. --- src/wx/audio_mapping_view.cc | 55 ++++++++++++++++++++---------------- 1 file changed, 30 insertions(+), 25 deletions(-) diff --git a/src/wx/audio_mapping_view.cc b/src/wx/audio_mapping_view.cc index 959975a00..9d776b63d 100644 --- a/src/wx/audio_mapping_view.cc +++ b/src/wx/audio_mapping_view.cc @@ -207,6 +207,30 @@ AudioMappingView::paint_column_lines (wxGraphicsContext* gc) gc->StrokePath (lines); } +static +void clip (wxDC& dc, wxGraphicsContext* gc, int x, int y, int w, int h) +{ + dc.SetClippingRegion (x, y, w, h); + gc->Clip (x, y, w, h); +} + +static +void translate (wxDC& dc, wxGraphicsContext* gc, int x, int y) +{ + gc->PushState (); + gc->Translate (-x, -y); + dc.SetLogicalOrigin (x, y); +} + +static +void restore (wxDC& dc, wxGraphicsContext* gc) +{ + dc.SetLogicalOrigin (0, 0); + gc->PopState (); + dc.DestroyClippingRegion (); + gc->ResetClip (); +} + void AudioMappingView::paint_row_labels (wxDC& dc, wxGraphicsContext* gc) { @@ -234,14 +258,19 @@ AudioMappingView::paint_row_labels (wxDC& dc, wxGraphicsContext* gc) int y = TOP_HEIGHT; BOOST_FOREACH (Group i, _input_groups) { - dc.GetTextExtent (std_to_wx(i.name), &label_width, &label_height); int const height = (i.to - i.from + 1) * GRID_SPACING; + dc.GetTextExtent (std_to_wx(i.name), &label_width, &label_height); + if (label_width > height) { + label_width = height - 8; + } + clip (dc, gc, GRID_SPACING, y + 4, GRID_SPACING, height - 4); dc.DrawRotatedText ( std_to_wx(i.name), GRID_SPACING + (GRID_SPACING - label_height) / 2, y + (height + label_width) / 2, 90 ); + restore (dc, gc); lines.MoveToPoint (GRID_SPACING, y); lines.AddLineToPoint (GRID_SPACING * 2, y); y += height; @@ -303,30 +332,6 @@ AudioMappingView::paint_indicators (wxDC& dc) } } -static -void clip (wxDC& dc, wxGraphicsContext* gc, int x, int y, int w, int h) -{ - dc.SetClippingRegion (x, y, w, h); - gc->Clip (x, y, w, h); -} - -static -void translate (wxDC& dc, wxGraphicsContext* gc, int x, int y) -{ - gc->PushState (); - gc->Translate (-x, -y); - dc.SetLogicalOrigin (x, y); -} - -static -void restore (wxDC& dc, wxGraphicsContext* gc) -{ - dc.SetLogicalOrigin (0, 0); - gc->PopState (); - dc.DestroyClippingRegion (); - gc->ResetClip (); -} - void AudioMappingView::paint () { -- 2.30.2