Added a colored band for DoubleSlider
This commit is contained in:
parent
40e7346696
commit
2a896e6ba1
@ -12,6 +12,7 @@
|
||||
#include "GUI.hpp"
|
||||
#include "GUI_App.hpp"
|
||||
#include "GUI_ObjectList.hpp"
|
||||
#include "libslic3r/GCode/PreviewData.hpp"
|
||||
|
||||
using Slic3r::GUI::from_u8;
|
||||
|
||||
@ -1665,6 +1666,10 @@ void PrusaDoubleSlider::render()
|
||||
const wxCoord lower_pos = get_position_from_value(m_lower_value);
|
||||
const wxCoord higher_pos = get_position_from_value(m_higher_value);
|
||||
|
||||
// draw colored band on the background of a scroll line
|
||||
// and only in a case of no-empty m_values
|
||||
draw_colored_band(dc);
|
||||
|
||||
// draw line
|
||||
draw_scroll_line(dc, lower_pos, higher_pos);
|
||||
|
||||
@ -1837,6 +1842,56 @@ void PrusaDoubleSlider::draw_ticks(wxDC& dc)
|
||||
}
|
||||
}
|
||||
|
||||
void PrusaDoubleSlider::draw_colored_band(wxDC& dc)
|
||||
{
|
||||
int height, width;
|
||||
get_size(&width, &height);
|
||||
|
||||
wxRect main_band = m_rect_lower_thumb;
|
||||
if (is_horizontal()) {
|
||||
main_band.SetLeft(SLIDER_MARGIN);
|
||||
main_band.SetRight(width - SLIDER_MARGIN + 1);
|
||||
}
|
||||
else {
|
||||
const int cut = 2;
|
||||
main_band.x += cut;
|
||||
main_band.width -= 2*cut;
|
||||
main_band.SetTop(SLIDER_MARGIN);
|
||||
main_band.SetBottom(height - SLIDER_MARGIN + 1);
|
||||
}
|
||||
|
||||
if (m_ticks.empty()) {
|
||||
dc.SetPen(GetParent()->GetBackgroundColour());
|
||||
dc.SetBrush(GetParent()->GetBackgroundColour());
|
||||
dc.DrawRectangle(main_band);
|
||||
return;
|
||||
}
|
||||
|
||||
const std::vector<unsigned char>& clr_bytes = Slic3r::GCodePreviewData::Range::Default_Colors[0].as_bytes();
|
||||
wxColour clr = wxColour(clr_bytes[0], clr_bytes[1], clr_bytes[2], clr_bytes[3]);
|
||||
dc.SetPen(clr);
|
||||
dc.SetBrush(clr);
|
||||
dc.DrawRectangle(main_band);
|
||||
|
||||
int i = 1;
|
||||
for (auto tick : m_ticks)
|
||||
{
|
||||
if (i == Slic3r::GCodePreviewData::Range::Colors_Count)
|
||||
i = 0;
|
||||
const wxCoord pos = get_position_from_value(tick);
|
||||
is_horizontal() ? main_band.SetLeft(SLIDER_MARGIN + pos) :
|
||||
main_band.SetBottom(pos-1);
|
||||
|
||||
const std::vector<unsigned char>& clr_b = Slic3r::GCodePreviewData::Range::Default_Colors[i].as_bytes();
|
||||
|
||||
clr = wxColour(clr_b[0], clr_b[1], clr_b[2], clr_b[3]);
|
||||
dc.SetPen(clr);
|
||||
dc.SetBrush(clr);
|
||||
dc.DrawRectangle(main_band);
|
||||
i++;
|
||||
}
|
||||
}
|
||||
|
||||
void PrusaDoubleSlider::draw_one_layer_icon(wxDC& dc)
|
||||
{
|
||||
wxBitmap* icon = m_is_one_layer ?
|
||||
|
@ -756,6 +756,7 @@ protected:
|
||||
void draw_thumb(wxDC& dc, const wxCoord& pos_coord, const SelectedSlider& selection);
|
||||
void draw_thumbs(wxDC& dc, const wxCoord& lower_pos, const wxCoord& higher_pos);
|
||||
void draw_ticks(wxDC& dc);
|
||||
void draw_colored_band(wxDC& dc);
|
||||
void draw_one_layer_icon(wxDC& dc);
|
||||
void draw_thumb_item(wxDC& dc, const wxPoint& pos, const SelectedSlider& selection);
|
||||
void draw_info_line_with_icon(wxDC& dc, const wxPoint& pos, SelectedSlider selection);
|
||||
|
Loading…
Reference in New Issue
Block a user