- clip (dc, gc, LEFT_WIDTH, 0, GRID_SPACING * _output_channels.size(), GRID_SPACING * (2 + _input_channels.size()));
- translate (dc, gc, hs, 0);
- paint_column_labels (dc, gc);
- restore (dc, gc);
-
- clip (dc, gc, 0, TOP_HEIGHT, GRID_SPACING * (3 + _output_channels.size()), GRID_SPACING * _input_channels.size());
- translate (dc, gc, 0, vs);
- paint_row_labels (dc, gc);
- restore (dc, gc);
-
- clip (dc, gc, GRID_SPACING * 2, TOP_HEIGHT, GRID_SPACING * (1 + _output_channels.size()), GRID_SPACING * _input_channels.size());
- translate (dc, gc, hs, vs);
- paint_row_lines (gc);
- restore (dc, gc);
-
- clip (dc, gc, LEFT_WIDTH, GRID_SPACING, GRID_SPACING * (1 + _output_channels.size()), GRID_SPACING * _input_channels.size());
- translate (dc, gc, hs, vs);
- paint_column_lines (gc);
- restore (dc, gc);
-
- clip (dc, gc, LEFT_WIDTH, TOP_HEIGHT, GRID_SPACING * _output_channels.size(), GRID_SPACING * _input_channels.size());
- translate (dc, gc, hs, vs);
+ dc.SetClippingRegion (
+ LEFT_WIDTH,
+ 0,
+ _column_widths_total,
+ ROW_HEIGHT * (2 + _input_channels.size())
+ );
+ dc.SetLogicalOrigin (hs, 0);
+ paint_column_labels (dc);
+ restore (dc);
+
+ dc.SetClippingRegion(
+ 0,
+ TOP_HEIGHT,
+ LEFT_WIDTH,
+ min(int(ROW_HEIGHT * _input_channels.size()), GetSize().GetHeight() - TOP_HEIGHT) + 1
+ );
+ dc.SetLogicalOrigin (0, vs);
+ paint_row_labels (dc);
+ restore (dc);
+
+ dc.SetClippingRegion(
+ MINIMUM_COLUMN_WIDTH * 2,
+ TOP_HEIGHT,
+ MINIMUM_COLUMN_WIDTH + _column_widths_total,
+ min(int(ROW_HEIGHT * (2 + _input_channels.size())), GetSize().GetHeight() - TOP_HEIGHT)
+ );
+ dc.SetLogicalOrigin (hs, vs);
+ paint_row_lines (dc);
+ restore (dc);
+
+ dc.SetClippingRegion(
+ LEFT_WIDTH,
+ MINIMUM_COLUMN_WIDTH,
+ MINIMUM_COLUMN_WIDTH + _column_widths_total,
+ min(int(ROW_HEIGHT * (1 + _input_channels.size())), GetSize().GetHeight() - ROW_HEIGHT)
+ );
+ dc.SetLogicalOrigin(hs, vs);
+ paint_column_lines (dc);
+ restore (dc);
+
+ dc.SetClippingRegion (
+ LEFT_WIDTH,
+ TOP_HEIGHT,
+ _column_widths_total,
+ min(int(ROW_HEIGHT * _input_channels.size()), GetSize().GetHeight() - TOP_HEIGHT)
+ );
+ dc.SetLogicalOrigin(hs, vs);