OrcaSlicer latest
OrcaSlicer
Loading...
Searching...
No Matches
Slic3r::GUI::AMSRoad Class Reference

#include </home/runner/work/OrcaSlicer/OrcaSlicer/src/slic3r/GUI/Widgets/AMSItem.hpp>

Inheritance diagram for Slic3r::GUI::AMSRoad:
Collaboration diagram for Slic3r::GUI::AMSRoad:

Public Member Functions

 AMSRoad ()
 AMSRoad (wxWindow *parent, wxWindowID id, Caninfo info, int canindex, int maxcan, const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxDefaultSize)
void create (wxWindow *parent, wxWindowID id=wxID_ANY, const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxDefaultSize)
void UpdateInfo (AMSinfo amsinfo, Caninfo info, int canindex, int maxcan)
void OnVamsLoading (bool load, wxColour col=AMS_CONTROL_GRAY500)
void SetPassRoadColour (wxColour col)
void SetMode (AMSRoadMode mode)
void OnPassRoad (std::vector< AMSPassRoadMode > prord_list)
void UpdatePassRoad (int tag_index, AMSPassRoadType type, AMSPassRoadSTEP step)
void paintEvent (wxPaintEvent &evt)
void render (wxDC &dc)
void doRender (wxDC &dc)

Public Attributes

AMSinfo m_amsinfo
Caninfo m_info
int m_canindex = {0}
AMSRoadMode m_rode_mode = {AMSRoadMode::AMS_ROAD_MODE_LEFT_RIGHT}
std::vector< AMSPassRoadMode > m_pass_rode_mode = {AMSPassRoadMode::AMS_ROAD_MODE_NONE}
bool m_selected = {false}
int m_passroad_width = {6}
double m_radius = {4}
wxColour m_road_def_color
wxColour m_road_color
std::vector< ScalableBitmap > ams_humidity_img
int m_humidity = { 0 }
bool m_show_humidity = { false }
bool m_vams_loading {false}
AMSModel m_ams_model

Detailed Description

Constructor & Destructor Documentation

◆ AMSRoad() [1/2]

Slic3r::GUI::AMSRoad::AMSRoad ( )
#define AMS_CONTROL_GRAY500
Definition AMSItem.hpp:39
wxColour m_road_color
Definition AMSItem.hpp:600
wxColour m_road_def_color
Definition AMSItem.hpp:599

References AMS_CONTROL_GRAY500, m_road_color, and m_road_def_color.

Referenced by AMSRoad().

Here is the caller graph for this function:

◆ AMSRoad() [2/2]

Slic3r::GUI::AMSRoad::AMSRoad ( wxWindow * parent,
wxWindowID id,
Caninfo info,
int canindex,
int maxcan,
const wxPoint & pos = wxDefaultPosition,
const wxSize & size = wxDefaultSize )
1859 : AMSRoad()
1860{
1861 m_info = info;
1862 m_canindex = canindex;
1863 // road type
1865 if (m_canindex == 0 && maxcan == 1) {
1867 } else if (m_canindex == 0 && maxcan > 1) {
1869 } else if (m_canindex < (maxcan - 1)) {
1871 } else if (m_canindex == (maxcan - 1)) {
1873 } else if (m_canindex == -1 && maxcan == -1) {
1875 }
1876 else {
1878 }
1879
1880 for (int i = 1; i <= 5; i++) {
1881 ams_humidity_img.push_back(ScalableBitmap(this, "hum_level" + std::to_string(i) + "_light", 32));
1882 }
1883
1884 for (int i = 1; i <= 5; i++) {
1885 ams_humidity_img.push_back(ScalableBitmap(this, "hum_level" + std::to_string(i) + "_dark", 32));
1886 }
1888 create(parent, id, pos, size);
1889 }
1890 else {
1891 wxSize virtual_size(size.x - 1, size.y + 2);
1892 create(parent, id, pos, virtual_size);
1893
1894 }
1895
1896 Bind(wxEVT_PAINT, &AMSRoad::paintEvent, this);
1897 wxWindow::SetBackgroundColour(AMS_CONTROL_DEF_BLOCK_BK_COLOUR);
1898
1899 Bind(wxEVT_LEFT_UP, [this](wxMouseEvent& e) {
1900 if (m_canindex == 3 && m_show_humidity) {
1901 auto mouse_pos = ClientToScreen(e.GetPosition());
1902 auto rect = ClientToScreen(wxPoint(0, 0));
1903
1904 if (mouse_pos.x > rect.x + GetSize().x - FromDIP(40) &&
1905 mouse_pos.y > rect.y + GetSize().y - FromDIP(40)) {
1906 wxCommandEvent show_event(EVT_AMS_SHOW_HUMIDITY_TIPS);
1907 wxPostEvent(GetParent()->GetParent(), show_event);
1908 }
1909 }
1910 });
1911}
#define AMS_CONTROL_DEF_BLOCK_BK_COLOUR
Definition AMSItem.hpp:44
int m_canindex
Definition AMSItem.hpp:593
std::vector< ScalableBitmap > ams_humidity_img
Definition AMSItem.hpp:603
AMSRoad()
Definition AMSItem.cpp:1857
void create(wxWindow *parent, wxWindowID id=wxID_ANY, const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxDefaultSize)
Definition AMSItem.cpp:1913
Caninfo m_info
Definition AMSItem.hpp:592
bool m_show_humidity
Definition AMSItem.hpp:607
void paintEvent(wxPaintEvent &evt)
Definition AMSItem.cpp:1948
AMSRoadMode m_rode_mode
Definition AMSItem.hpp:594
wxMouseEvent
Definition CameraPopup.cpp:47
@ AMS_ROAD_MODE_VIRTUAL_TRAY
Definition AMSItem.hpp:84
@ AMS_ROAD_MODE_LEFT_RIGHT
Definition AMSItem.hpp:79
@ AMS_ROAD_MODE_NONE_ANY_ROAD
Definition AMSItem.hpp:83
@ AMS_ROAD_MODE_END
Definition AMSItem.hpp:80
@ AMS_ROAD_MODE_NONE
Definition AMSItem.hpp:82
@ AMS_ROAD_MODE_LEFT
Definition AMSItem.hpp:78

References AMSRoad(), AMS_CONTROL_DEF_BLOCK_BK_COLOUR, ams_humidity_img, Slic3r::GUI::AMS_ROAD_MODE_END, Slic3r::GUI::AMS_ROAD_MODE_LEFT, Slic3r::GUI::AMS_ROAD_MODE_LEFT_RIGHT, Slic3r::GUI::AMS_ROAD_MODE_NONE, Slic3r::GUI::AMS_ROAD_MODE_NONE_ANY_ROAD, Slic3r::GUI::AMS_ROAD_MODE_VIRTUAL_TRAY, create(), m_canindex, m_info, m_rode_mode, m_show_humidity, paintEvent(), and Slic3r::GUI::wxMouseEvent.

Here is the call graph for this function:

Member Function Documentation

◆ create()

void Slic3r::GUI::AMSRoad::create ( wxWindow * parent,
wxWindowID id = wxID_ANY,
const wxPoint & pos = wxDefaultPosition,
const wxSize & size = wxDefaultSize )
1913{ wxWindow::Create(parent, id, pos, size); }

Referenced by AMSRoad().

Here is the caller graph for this function:

◆ doRender()

void Slic3r::GUI::AMSRoad::doRender ( wxDC & dc)
1976{
1977 wxSize size = GetSize();
1978
1979 dc.SetPen(wxPen(m_road_def_color, 2, wxPENSTYLE_SOLID));
1980 dc.SetBrush(wxBrush(*wxTRANSPARENT_BRUSH));
1981 // left mode
1982 if (m_rode_mode == AMSRoadMode::AMS_ROAD_MODE_LEFT) { dc.DrawRoundedRectangle(-10, -10, size.x / 2 + 10, size.y * 0.6 + 10, 4); }
1983
1984 // left right mode
1986 dc.DrawLine(size.x / 2, 0, size.x / 2, size.y * 0.6 - FromDIP(1));
1987 dc.DrawLine(0, size.y * 0.6 - 1, size.x, size.y * 0.6 - FromDIP(1));
1988 }
1989
1990 // end mode
1992 dc.SetBrush(wxBrush(m_road_def_color));
1993 dc.DrawLine(size.x / 2, -1, size.x / 2, size.y * 0.6 - 1);
1994 dc.DrawLine(size.x / 2, size.y * 0.6, size.x / 2, size.y);
1995 dc.DrawLine(size.x / 2, size.y * 0.6 - 1, size.x, size.y * 0.6 - 1);
1996 }
1997
1998 // end mode only
2000 dc.SetBrush(wxBrush(m_road_def_color));
2001 dc.DrawLine(size.x / 2, -1, size.x / 2, size.y * 0.6 - 1);
2002 dc.DrawLine(size.x / 2, size.y * 0.6, size.x / 2, size.y);
2003 }
2004
2005 // end none
2007 dc.SetBrush(wxBrush(m_road_def_color));
2008 dc.DrawLine(size.x / 2, -1, size.x / 2, size.y * 0.6 - 1);
2009 dc.DrawLine(size.x / 2, size.y * 0.6, size.x / 2, size.y);
2010 // dc.DrawLine(size.x / 2, size.y * 0.6 - 1, size.x, size.y * 0.6 - 1);
2011 }
2012
2013 //virtual road
2015 dc.SetBrush(wxBrush(m_road_def_color));
2016 dc.DrawLine(size.x / 2, -1, size.x / 2, size.y - 1);
2017 }
2018
2019 // mode none
2020 // if (m_pass_rode_mode.size() == 1 && m_pass_rode_mode[0] == AMSPassRoadMode::AMS_ROAD_MODE_NONE) return;
2021
2022 if (m_road_color.Alpha() == 0) {dc.SetPen(wxPen(*wxWHITE, m_passroad_width, wxPENSTYLE_SOLID));}
2023 else {dc.SetPen(wxPen(m_road_color, m_passroad_width, wxPENSTYLE_SOLID));}
2024
2025 dc.SetBrush(wxBrush(*wxTRANSPARENT_BRUSH));
2026
2027 // left pass mode
2028 for (auto pass_mode : m_pass_rode_mode) {
2029 switch (pass_mode) {
2030 case AMSPassRoadMode::AMS_ROAD_MODE_LEFT: dc.DrawRoundedRectangle(-10, -10, size.x / 2 + 10, size.y * 0.6 + 10, 4); break;
2031
2032 case AMSPassRoadMode::AMS_ROAD_MODE_LEFT_RIGHT: dc.DrawLine(0, size.y * 0.6 - 1, size.x, size.y * 0.6 - 1); break;
2033
2034 case AMSPassRoadMode::AMS_ROAD_MODE_END_TOP: dc.DrawLine(size.x / 2, -1, size.x / 2, size.y * 0.6 - 1); break;
2035
2036 case AMSPassRoadMode::AMS_ROAD_MODE_END_BOTTOM: dc.DrawLine(size.x / 2, size.y * 0.6, size.x / 2, size.y); break;
2037
2038 case AMSPassRoadMode::AMS_ROAD_MODE_END_RIGHT: dc.DrawLine(size.x / 2, size.y * 0.6 - 1, size.x, size.y * 0.6 - 1); break;
2039
2040 default: break;
2041 }
2042 }
2043
2045 dc.DrawLine(size.x / 2, -1, size.x / 2, size.y - 1);
2046 }
2047
2048 // end mode
2050 dc.SetPen(wxPen(m_road_def_color, 2, wxPENSTYLE_SOLID));
2051 dc.SetBrush(wxBrush(m_road_def_color));
2052 dc.DrawRoundedRectangle(size.x * 0.37 / 2, size.y * 0.6 - size.y / 6, size.x * 0.63, size.y / 3, m_radius);
2053 }
2054
2055 if (m_canindex == 3) /*To check, tao.wang*/{
2056
2057 if (m_amsinfo.ams_humidity >= 1 && m_amsinfo.ams_humidity <= 5) {m_show_humidity = true;}
2058 else {m_show_humidity = false;}
2059
2060 if (m_amsinfo.ams_humidity >= 1 && m_amsinfo.ams_humidity <= 5) {
2061
2062 int hum_index = m_amsinfo.ams_humidity - 1;
2063 if (wxGetApp().dark_mode()) {
2064 hum_index += 5;
2065 }
2066
2067 if (hum_index >= 0) {
2068 dc.DrawBitmap(ams_humidity_img[hum_index].bmp(), wxPoint(size.x - FromDIP(33), size.y - FromDIP(33)));
2069 }
2070 }
2071 else {
2072 //to do ...
2073 }
2074 }
2075}
bool m_vams_loading
Definition AMSItem.hpp:608
int m_passroad_width
Definition AMSItem.hpp:597
AMSinfo m_amsinfo
Definition AMSItem.hpp:591
double m_radius
Definition AMSItem.hpp:598
std::vector< AMSPassRoadMode > m_pass_rode_mode
Definition AMSItem.hpp:595
@ AMS_ROAD_MODE_END_TOP
Definition AMSItem.hpp:106
@ AMS_ROAD_MODE_END_BOTTOM
Definition AMSItem.hpp:108
@ AMS_ROAD_MODE_LEFT_RIGHT
Definition AMSItem.hpp:105
@ AMS_ROAD_MODE_LEFT
Definition AMSItem.hpp:104
@ AMS_ROAD_MODE_END_RIGHT
Definition AMSItem.hpp:107
@ AMS_ROAD_MODE_END_ONLY
Definition AMSItem.hpp:81

References ams_humidity_img, Slic3r::GUI::AMS_ROAD_MODE_END, Slic3r::GUI::AMS_ROAD_MODE_END_BOTTOM, Slic3r::GUI::AMS_ROAD_MODE_END_ONLY, Slic3r::GUI::AMS_ROAD_MODE_END_RIGHT, Slic3r::GUI::AMS_ROAD_MODE_END_TOP, Slic3r::GUI::AMS_ROAD_MODE_LEFT, Slic3r::GUI::AMS_ROAD_MODE_LEFT_RIGHT, Slic3r::GUI::AMS_ROAD_MODE_NONE, Slic3r::GUI::AMS_ROAD_MODE_VIRTUAL_TRAY, m_amsinfo, m_canindex, m_pass_rode_mode, m_passroad_width, m_radius, m_road_color, m_road_def_color, m_rode_mode, m_show_humidity, and m_vams_loading.

Referenced by render().

Here is the caller graph for this function:

◆ OnPassRoad()

void Slic3r::GUI::AMSRoad::OnPassRoad ( std::vector< AMSPassRoadMode > prord_list)
2080{
2081 // AMS_ROAD_MODE_NONE, AMS_ROAD_MODE_LEFT, AMS_ROAD_MODE_LEFT_RIGHT, AMS_ROAD_MODE_END_TOP, AMS_ROAD_MODE_END_BOTTOM, AMS_ROAD_MODE_END_RIGHT,
2082 // AMS_ROAD_MODE_LEFT, AMS_ROAD_MODE_LEFT_RIGHT, AMS_ROAD_MODE_END,
2083
2084 m_pass_rode_mode.clear();
2085 auto left_types = std::vector<AMSPassRoadMode>{AMSPassRoadMode::AMS_ROAD_MODE_NONE, AMSPassRoadMode::AMS_ROAD_MODE_LEFT};
2089
2090 // left
2092 for (auto i = 0; i < prord_list.size(); i++) {
2093 std::vector<AMSPassRoadMode>::iterator iter = std::find(left_types.begin(), left_types.end(), prord_list[i]);
2094 if (iter != left_types.end()) m_pass_rode_mode.push_back(prord_list[i]);
2095
2096 if (prord_list[i] == AMSPassRoadMode::AMS_ROAD_MODE_NONE) {
2097 m_pass_rode_mode = std::vector<AMSPassRoadMode>{AMSPassRoadMode::AMS_ROAD_MODE_NONE};
2098 break;
2099 }
2100 }
2101 }
2102
2103 // left right
2105 for (auto i = 0; i < prord_list.size(); i++) {
2106 std::vector<AMSPassRoadMode>::iterator iter = std::find(left_right_types.begin(), left_right_types.end(), prord_list[i]);
2107 if (iter != left_right_types.end()) m_pass_rode_mode.push_back(prord_list[i]);
2108
2109 if (prord_list[i] == AMSPassRoadMode::AMS_ROAD_MODE_NONE) {
2110 m_pass_rode_mode = std::vector<AMSPassRoadMode>{AMSPassRoadMode::AMS_ROAD_MODE_NONE};
2111 break;
2112 }
2113 }
2114 }
2115
2116 // left end
2118 for (auto i = 0; i < prord_list.size(); i++) {
2119 std::vector<AMSPassRoadMode>::iterator iter = std::find(end_types.begin(), end_types.end(), prord_list[i]);
2120 if (iter != end_types.end()) m_pass_rode_mode.push_back(prord_list[i]);
2121
2122 if (prord_list[i] == AMSPassRoadMode::AMS_ROAD_MODE_NONE) {
2123 m_pass_rode_mode = std::vector<AMSPassRoadMode>{AMSPassRoadMode::AMS_ROAD_MODE_NONE};
2124 break;
2125 }
2126 }
2127 }
2128}
@ AMS_ROAD_MODE_NONE
Definition AMSItem.hpp:103

References Slic3r::GUI::AMS_ROAD_MODE_END, Slic3r::GUI::AMS_ROAD_MODE_END_BOTTOM, Slic3r::GUI::AMS_ROAD_MODE_END_ONLY, Slic3r::GUI::AMS_ROAD_MODE_END_RIGHT, Slic3r::GUI::AMS_ROAD_MODE_END_TOP, Slic3r::GUI::AMS_ROAD_MODE_LEFT, Slic3r::GUI::AMS_ROAD_MODE_LEFT_RIGHT, Slic3r::GUI::AMS_ROAD_MODE_NONE, m_pass_rode_mode, and m_rode_mode.

◆ OnVamsLoading()

void Slic3r::GUI::AMSRoad::OnVamsLoading ( bool load,
wxColour col = AMS_CONTROL_GRAY500 )
1934{
1935 /*m_vams_loading = load;
1936 if(load)m_road_color = col;
1937 Refresh();*/
1938}

References load().

Here is the call graph for this function:

◆ paintEvent()

void Slic3r::GUI::AMSRoad::paintEvent ( wxPaintEvent & evt)
1949{
1950 wxPaintDC dc(this);
1951 render(dc);
1952}
void render(wxDC &dc)
Definition AMSItem.cpp:1954

References render().

Referenced by AMSRoad().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ render()

void Slic3r::GUI::AMSRoad::render ( wxDC & dc)
1955{
1956#ifdef __WXMSW__
1957 wxSize size = GetSize();
1958 wxMemoryDC memdc;
1959 wxBitmap bmp(size.x, size.y);
1960 memdc.SelectObject(bmp);
1961 memdc.Blit({0, 0}, size, &dc, {0, 0});
1962
1963 {
1964 wxGCDC dc2(memdc);
1965 doRender(dc2);
1966 }
1967
1968 memdc.SelectObject(wxNullBitmap);
1969 dc.DrawBitmap(bmp, 0, 0);
1970#else
1971 doRender(dc);
1972#endif
1973}
void doRender(wxDC &dc)
Definition AMSItem.cpp:1975

References doRender().

Referenced by paintEvent().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ SetMode()

void Slic3r::GUI::AMSRoad::SetMode ( AMSRoadMode mode)
1943{
1944 m_rode_mode = mode;
1945 Refresh();
1946}

References m_rode_mode.

◆ SetPassRoadColour()

void Slic3r::GUI::AMSRoad::SetPassRoadColour ( wxColour col)
1940{ m_road_color = col; }

References m_road_color.

◆ UpdateInfo()

void Slic3r::GUI::AMSRoad::UpdateInfo ( AMSinfo amsinfo,
Caninfo info,
int canindex,
int maxcan )

◆ UpdatePassRoad()

void Slic3r::GUI::AMSRoad::UpdatePassRoad ( int tag_index,
AMSPassRoadType type,
AMSPassRoadSTEP step )
2077{}

Member Data Documentation

◆ ams_humidity_img

std::vector<ScalableBitmap> Slic3r::GUI::AMSRoad::ams_humidity_img

Referenced by AMSRoad(), and doRender().

◆ m_ams_model

AMSModel Slic3r::GUI::AMSRoad::m_ams_model

◆ m_amsinfo

AMSinfo Slic3r::GUI::AMSRoad::m_amsinfo

Referenced by doRender(), and UpdateInfo().

◆ m_canindex

int Slic3r::GUI::AMSRoad::m_canindex = {0}
593{0};

Referenced by AMSRoad(), doRender(), and UpdateInfo().

◆ m_humidity

int Slic3r::GUI::AMSRoad::m_humidity = { 0 }
606{ 0 };

◆ m_info

Caninfo Slic3r::GUI::AMSRoad::m_info

Referenced by AMSRoad(), and UpdateInfo().

◆ m_pass_rode_mode

std::vector<AMSPassRoadMode> Slic3r::GUI::AMSRoad::m_pass_rode_mode = {AMSPassRoadMode::AMS_ROAD_MODE_NONE}

◆ m_passroad_width

int Slic3r::GUI::AMSRoad::m_passroad_width = {6}
597{6};

Referenced by doRender().

◆ m_radius

double Slic3r::GUI::AMSRoad::m_radius = {4}
598{4};

Referenced by doRender().

◆ m_road_color

wxColour Slic3r::GUI::AMSRoad::m_road_color

◆ m_road_def_color

wxColour Slic3r::GUI::AMSRoad::m_road_def_color

Referenced by AMSRoad(), and doRender().

◆ m_rode_mode

◆ m_selected

bool Slic3r::GUI::AMSRoad::m_selected = {false}
596{false};

◆ m_show_humidity

bool Slic3r::GUI::AMSRoad::m_show_humidity = { false }
607{ false };

Referenced by AMSRoad(), and doRender().

◆ m_vams_loading

bool Slic3r::GUI::AMSRoad::m_vams_loading {false}
608{false};

Referenced by doRender().


The documentation for this class was generated from the following files:
  • /home/runner/work/OrcaSlicer/OrcaSlicer/src/slic3r/GUI/Widgets/AMSItem.hpp
  • /home/runner/work/OrcaSlicer/OrcaSlicer/src/slic3r/GUI/Widgets/AMSItem.cpp