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

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

Inheritance diagram for Slic3r::GUI::AMSHumidity:
Collaboration diagram for Slic3r::GUI::AMSHumidity:

Public Member Functions

 AMSHumidity ()
 AMSHumidity (wxWindow *parent, wxWindowID id, AMSinfo info, 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)
void paintEvent (wxPaintEvent &evt)
void render (wxDC &dc)
void doRender (wxDC &dc)
void msw_rescale ()

Public Attributes

AMSinfo m_amsinfo
int m_canindex = { 0 }
bool m_selected = { false }
double m_radius = { 12 }
std::vector< ScalableBitmap > ams_humidity_imgs
std::vector< ScalableBitmap > ams_humidity_dark_imgs
std::vector< ScalableBitmap > ams_humidity_no_num_imgs
std::vector< ScalableBitmap > ams_humidity_no_num_dark_imgs
ScalableBitmap ams_sun_img
ScalableBitmap ams_drying_img
bool m_vams_loading { false }
AMSModel m_ams_model

Private Member Functions

void update_size ()

Detailed Description

Constructor & Destructor Documentation

◆ AMSHumidity() [1/2]

Slic3r::GUI::AMSHumidity::AMSHumidity ( )
2965{}

Referenced by AMSHumidity().

Here is the caller graph for this function:

◆ AMSHumidity() [2/2]

Slic3r::GUI::AMSHumidity::AMSHumidity ( wxWindow * parent,
wxWindowID id,
AMSinfo info,
const wxPoint & pos = wxDefaultPosition,
const wxSize & size = wxDefaultSize )
2967 : AMSHumidity()
2968{
2969 create(parent, id, pos, wxDefaultSize);
2970
2971 for (int i = 1; i <= 5; i++) { ams_humidity_imgs.push_back(ScalableBitmap(this, "hum_level" + std::to_string(i) + "_light", 20));}
2972 for (int i = 1; i <= 5; i++) { ams_humidity_dark_imgs.push_back(ScalableBitmap(this, "hum_level" + std::to_string(i) + "_dark", 20));}
2973 for (int i = 1; i <= 5; i++) { ams_humidity_no_num_imgs.push_back(ScalableBitmap(this, "hum_level" + std::to_string(i) + "_no_num_light", 16)); }
2974 for (int i = 1; i <= 5; i++) { ams_humidity_no_num_dark_imgs.push_back(ScalableBitmap(this, "hum_level" + std::to_string(i) + "_no_num_dark", 16)); }
2975
2976 ams_sun_img = ScalableBitmap(this, "ams_drying", 20);
2977 ams_drying_img = ScalableBitmap(this, "ams_is_drying", 20);
2978
2979 Bind(wxEVT_PAINT, &AMSHumidity::paintEvent, this);
2980 //wxWindow::SetBackgroundColour(AMS_CONTROL_DEF_HUMIDITY_BK_COLOUR);
2981
2982 Bind(wxEVT_LEFT_UP, [this](wxMouseEvent& e) {
2983
2984 int humidity_display_idx = m_amsinfo.get_humidity_display_idx();
2985 if (1 <= humidity_display_idx && humidity_display_idx <= 5) {
2986 auto mouse_pos = ClientToScreen(e.GetPosition());
2987 auto rect = ClientToScreen(wxPoint(0, 0));
2988
2989 if (mouse_pos.x > rect.x &&
2990 mouse_pos.y > rect.y) {
2991 wxCommandEvent show_event(EVT_AMS_SHOW_HUMIDITY_TIPS);
2992
2993 uiAmsHumidityInfo *info = new uiAmsHumidityInfo;
2994 info->ams_id = m_amsinfo.ams_id;
2995 info->ams_type = m_amsinfo.ams_type;
2996 info->humidity_display_idx = m_amsinfo.get_humidity_display_idx();
2997 info->humidity_percent = m_amsinfo.humidity_raw;
2998 info->left_dry_time = m_amsinfo.left_dray_time;
2999 info->current_temperature = m_amsinfo.current_temperature;
3000 show_event.SetClientData(info);
3001 wxPostEvent(GetParent()->GetParent(), show_event);
3002 }
3003 }
3004 });
3005
3006 UpdateInfo(info);
3007}
void create(wxWindow *parent, wxWindowID id=wxID_ANY, const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxDefaultSize)
Definition AMSItem.cpp:3009
void UpdateInfo(AMSinfo amsinfo)
Definition AMSItem.cpp:3015
ScalableBitmap ams_drying_img
Definition AMSItem.hpp:785
ScalableBitmap ams_sun_img
Definition AMSItem.hpp:784
std::vector< ScalableBitmap > ams_humidity_dark_imgs
Definition AMSItem.hpp:779
std::vector< ScalableBitmap > ams_humidity_no_num_imgs
Definition AMSItem.hpp:781
AMSinfo m_amsinfo
Definition AMSItem.hpp:772
AMSHumidity()
Definition AMSItem.cpp:2965
std::vector< ScalableBitmap > ams_humidity_imgs
Definition AMSItem.hpp:778
void paintEvent(wxPaintEvent &evt)
Definition AMSItem.cpp:3042
std::vector< ScalableBitmap > ams_humidity_no_num_dark_imgs
Definition AMSItem.hpp:782
wxMouseEvent
Definition CameraPopup.cpp:47

References AMSHumidity(), ams_drying_img, ams_humidity_dark_imgs, ams_humidity_imgs, ams_humidity_no_num_dark_imgs, ams_humidity_no_num_imgs, Slic3r::GUI::uiAmsHumidityInfo::ams_id, ams_sun_img, Slic3r::GUI::uiAmsHumidityInfo::ams_type, create(), Slic3r::GUI::uiAmsHumidityInfo::current_temperature, Slic3r::GUI::uiAmsHumidityInfo::humidity_display_idx, Slic3r::GUI::uiAmsHumidityInfo::humidity_percent, Slic3r::GUI::uiAmsHumidityInfo::left_dry_time, m_amsinfo, paintEvent(), UpdateInfo(), and Slic3r::GUI::wxMouseEvent.

Here is the call graph for this function:

Member Function Documentation

◆ create()

void Slic3r::GUI::AMSHumidity::create ( wxWindow * parent,
wxWindowID id = wxID_ANY,
const wxPoint & pos = wxDefaultPosition,
const wxSize & size = wxDefaultSize )
3009 {
3010 wxWindow::Create(parent, id, pos, size);
3012}
#define AMS_CONTROL_DEF_LIB_BK_COLOUR
Definition AMSItem.hpp:45
static wxColour darkModeColorFor(wxColour const &color)
Definition StateColor.cpp:219

References AMS_CONTROL_DEF_LIB_BK_COLOUR, and StateColor::darkModeColorFor().

Referenced by AMSHumidity().

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

◆ doRender()

void Slic3r::GUI::AMSHumidity::doRender ( wxDC & dc)
3070{
3071 wxSize size = GetSize();
3072
3073 dc.SetPen(wxPen(*wxTRANSPARENT_PEN));
3075
3076 // left mode
3077 int humidity_display_idx = m_amsinfo.get_humidity_display_idx();
3078 if (1 <= humidity_display_idx && humidity_display_idx <= 5) {
3079 //background
3080 dc.SetPen(wxPen(*wxTRANSPARENT_PEN));
3082 dc.DrawRoundedRectangle(0, 0, (size.x), (size.y), (size.y / 2));
3083
3084 wxPoint pot;
3085 if (m_amsinfo.ams_type == AMSModel::GENERIC_AMS) /*image with stage*/
3086 {
3087 ScalableBitmap hum_img;
3088 if (!wxGetApp().dark_mode()) {
3089 hum_img = ams_humidity_imgs[humidity_display_idx - 1];
3090 } else {
3091 hum_img = ams_humidity_dark_imgs[humidity_display_idx - 1];
3092 }
3093
3094 pot = wxPoint((size.x - hum_img.GetBmpWidth()) / 2, ((size.y - hum_img.GetBmpSize().y) / 2));
3095 dc.DrawBitmap(hum_img.bmp(), pot);
3096 pot.x = pot.x + hum_img.GetBmpSize().x;
3097 }
3098 else if (m_amsinfo.humidity_raw != -1) /*image with no number + percentage*/
3099 {
3100 // hum image
3101 ScalableBitmap hum_img;
3102 if (!wxGetApp().dark_mode()) {
3103 hum_img = ams_humidity_no_num_imgs[humidity_display_idx - 1];
3104 } else {
3105 hum_img = ams_humidity_no_num_dark_imgs[humidity_display_idx - 1];
3106 }
3107
3108 pot = wxPoint(FromDIP(5), ((size.y - hum_img.GetBmpSize().y) / 2));
3109 dc.DrawBitmap(hum_img.bmp(), pot);
3110 pot.x += hum_img.GetBmpSize().x + FromDIP(3);
3111
3112 // percentage
3113 wxString hum_percentage(std::to_string(m_amsinfo.humidity_raw));
3114 dc.SetPen(wxPen(*wxTRANSPARENT_PEN));
3115 dc.SetFont(Label::Body_14);
3117
3118 WxFontUtils::get_suitable_font_size(0.7 * size.GetHeight(), dc);
3119 auto tsize1 = dc.GetMultiLineTextExtent(hum_percentage);
3120 pot.y = (size.y - tsize1.y) / 2;
3121 dc.DrawText(hum_percentage, pot);
3122 pot.x += (tsize1.x + FromDIP(3));
3123
3124 // percentage sign
3125 dc.SetFont(Label::Body_12);
3126 WxFontUtils::get_suitable_font_size(0.5 * size.GetHeight(), dc);
3127 auto tsize2 = dc.GetMultiLineTextExtent(_L("%"));
3128 pot.y = pot.y + ((tsize1.y - tsize2.y) / 2) + FromDIP(2);
3129 dc.DrawText(_L("%"), pot);
3130
3131 pot.x += tsize2.x;
3132 }
3133
3134 if (m_amsinfo.support_drying())
3135 {
3136 pot.x += FromDIP(2);// spacing
3137
3138 // vertical line
3139 dc.SetPen(wxPen(wxColour(194, 194, 194)));
3140 dc.SetBrush(wxBrush(wxColour(194, 194, 194)));
3141 dc.DrawLine(pot.x, GetSize().y / 2 - FromDIP(10), pot.x, GetSize().y / 2 + FromDIP(10));
3142
3143 // sun image
3144 dc.SetPen(wxPen(*wxTRANSPARENT_PEN));
3145 pot.x += ((size.GetWidth() - pot.x) - ams_drying_img.GetBmpWidth()) / 2;// spacing
3146 if (m_amsinfo.left_dray_time > 0) {
3147 pot.y = (size.y - ams_drying_img.GetBmpHeight()) / 2;
3148 dc.DrawBitmap(ams_drying_img.bmp(), pot);
3149 } else {
3150 pot.y = (size.y - ams_sun_img.GetBmpHeight()) / 2;
3151 dc.DrawBitmap(ams_sun_img.bmp(), pot);
3152 }
3153 }
3154 }
3155 else {
3156 //to do ...
3157 }
3158}
#define AMS_CONTROL_BLACK_COLOUR
Definition AMSItem.hpp:43
#define AMS_CONTROL_DEF_BLOCK_BK_COLOUR
Definition AMSItem.hpp:44
#define _L(s)
Definition OBJ.cpp:34
static wxFont Body_12
Definition Label.hpp:55
static wxFont Body_14
Definition Label.hpp:53
wxSize GetBmpSize() const
Definition wxExtensions.cpp:959
int GetBmpWidth() const
Definition wxExtensions.cpp:977
const wxBitmap & bmp() const
Definition wxExtensions.hpp:189
static void get_suitable_font_size(int max_height, wxDC &dc)
Definition WxFontUtils.cpp:309
@ GENERIC_AMS
Definition AMSItem.hpp:59

References _L, AMS_CONTROL_BLACK_COLOUR, AMS_CONTROL_DEF_BLOCK_BK_COLOUR, ams_drying_img, ams_humidity_dark_imgs, ams_humidity_imgs, ams_humidity_no_num_dark_imgs, ams_humidity_no_num_imgs, ams_sun_img, ScalableBitmap::bmp(), Label::Body_12, Label::Body_14, StateColor::darkModeColorFor(), Slic3r::GUI::GENERIC_AMS, Slic3r::GUI::WxFontUtils::get_suitable_font_size(), ScalableBitmap::GetBmpSize(), ScalableBitmap::GetBmpWidth(), and m_amsinfo.

Referenced by render().

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

◆ msw_rescale()

void Slic3r::GUI::AMSHumidity::msw_rescale ( )
3160 {
3161 for (auto& img : ams_humidity_imgs) { img.msw_rescale();}
3162 for (auto& img : ams_humidity_dark_imgs) { img.msw_rescale(); }
3163 for (auto &img : ams_humidity_no_num_imgs) { img.msw_rescale(); }
3164 for (auto &img : ams_humidity_no_num_dark_imgs) { img.msw_rescale(); }
3165 ams_sun_img.msw_rescale();
3166 ams_drying_img.msw_rescale();
3167
3168 Layout();
3169 Refresh();
3170}

References ams_drying_img, ams_humidity_dark_imgs, ams_humidity_imgs, ams_humidity_no_num_dark_imgs, ams_humidity_no_num_imgs, and ams_sun_img.

◆ paintEvent()

void Slic3r::GUI::AMSHumidity::paintEvent ( wxPaintEvent & evt)
3043{
3044 wxPaintDC dc(this);
3045 render(dc);
3046}
void render(wxDC &dc)
Definition AMSItem.cpp:3048

References render().

Referenced by AMSHumidity().

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

◆ render()

void Slic3r::GUI::AMSHumidity::render ( wxDC & dc)
3049{
3050#ifdef __WXMSW__
3051 wxSize size = GetSize();
3052 wxMemoryDC memdc;
3053 wxBitmap bmp(size.x, size.y);
3054 memdc.SelectObject(bmp);
3055 memdc.Blit({ 0, 0 }, size, &dc, { 0, 0 });
3056
3057 {
3058 wxGCDC dc2(memdc);
3059 doRender(dc2);
3060 }
3061
3062 memdc.SelectObject(wxNullBitmap);
3063 dc.DrawBitmap(bmp, 0, 0);
3064#else
3065 doRender(dc);
3066#endif
3067}
void doRender(wxDC &dc)
Definition AMSItem.cpp:3069

References doRender().

Referenced by paintEvent().

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

◆ update_size()

void Slic3r::GUI::AMSHumidity::update_size ( )
private
3026{
3027 wxSize size;
3028 if (m_amsinfo.ams_type == AMSModel::GENERIC_AMS) {
3030 } else {
3031 size = AMS_HUMIDITY_SIZE;
3032 }
3033
3034 if (!m_amsinfo.support_drying()) { size.x -= AMS_HUMIDITY_DRY_WIDTH; }
3035
3036 SetMaxSize(size);
3037 SetMinSize(size);
3038 SetSize(size);
3039}
#define AMS_HUMIDITY_SIZE
Definition AMSItem.hpp:188
#define AMS_HUMIDITY_DRY_WIDTH
Definition AMSItem.hpp:190
#define AMS_HUMIDITY_NO_PERCENT_SIZE
Definition AMSItem.hpp:189

References AMS_HUMIDITY_DRY_WIDTH, AMS_HUMIDITY_NO_PERCENT_SIZE, AMS_HUMIDITY_SIZE, Slic3r::GUI::GENERIC_AMS, and m_amsinfo.

Referenced by UpdateInfo().

Here is the caller graph for this function:

◆ UpdateInfo()

void Slic3r::GUI::AMSHumidity::UpdateInfo ( AMSinfo amsinfo)
3016{
3017 if (m_amsinfo != amsinfo)
3018 {
3019 m_amsinfo = amsinfo;
3020 update_size();
3021 Refresh();
3022 }
3023}
void update_size()
Definition AMSItem.cpp:3025

References m_amsinfo, and update_size().

Referenced by AMSHumidity().

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

Member Data Documentation

◆ ams_drying_img

ScalableBitmap Slic3r::GUI::AMSHumidity::ams_drying_img

Referenced by AMSHumidity(), doRender(), and msw_rescale().

◆ ams_humidity_dark_imgs

std::vector<ScalableBitmap> Slic3r::GUI::AMSHumidity::ams_humidity_dark_imgs

Referenced by AMSHumidity(), doRender(), and msw_rescale().

◆ ams_humidity_imgs

std::vector<ScalableBitmap> Slic3r::GUI::AMSHumidity::ams_humidity_imgs

Referenced by AMSHumidity(), doRender(), and msw_rescale().

◆ ams_humidity_no_num_dark_imgs

std::vector<ScalableBitmap> Slic3r::GUI::AMSHumidity::ams_humidity_no_num_dark_imgs

Referenced by AMSHumidity(), doRender(), and msw_rescale().

◆ ams_humidity_no_num_imgs

std::vector<ScalableBitmap> Slic3r::GUI::AMSHumidity::ams_humidity_no_num_imgs

Referenced by AMSHumidity(), doRender(), and msw_rescale().

◆ ams_sun_img

ScalableBitmap Slic3r::GUI::AMSHumidity::ams_sun_img

Referenced by AMSHumidity(), doRender(), and msw_rescale().

◆ m_ams_model

AMSModel Slic3r::GUI::AMSHumidity::m_ams_model

◆ m_amsinfo

AMSinfo Slic3r::GUI::AMSHumidity::m_amsinfo

◆ m_canindex

int Slic3r::GUI::AMSHumidity::m_canindex = { 0 }
773{ 0 };

◆ m_radius

double Slic3r::GUI::AMSHumidity::m_radius = { 12 }
775{ 12 };

◆ m_selected

bool Slic3r::GUI::AMSHumidity::m_selected = { false }
774{ false };

◆ m_vams_loading

bool Slic3r::GUI::AMSHumidity::m_vams_loading { false }
787{ false };

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