diff --git a/resources/images/splash_logo.svg b/resources/images/splash_logo.svg index b2c46d628d..45a5b3be25 100644 --- a/resources/images/splash_logo.svg +++ b/resources/images/splash_logo.svg @@ -1,136 +1 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + \ No newline at end of file diff --git a/resources/images/splash_logo_dark.svg b/resources/images/splash_logo_dark.svg new file mode 100644 index 0000000000..5ea2bebcbd --- /dev/null +++ b/resources/images/splash_logo_dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index 52bfa21508..e06433883f 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -275,8 +275,11 @@ public: // init constant texts and scale fonts m_constant_text.init(Label::Body_16); - scale_font(m_constant_text.title_font, 2.0f); - scale_font(m_constant_text.version_font, 1.2f); + + // ORCA scale all fonts with monitor scale + scale_font(m_constant_text.version_font, m_scale * 2); + scale_font(m_constant_text.based_on_font, m_scale * 1.5f); + scale_font(m_constant_text.credits_font, m_scale * 2); // this font will be used for the action string m_action_font = m_constant_text.credits_font; @@ -316,51 +319,41 @@ public: if (!bmp.IsOk()) return; + bool is_dark = wxGetApp().app_config->get("dark_color_mode") == "1"; + // use a memory DC to draw directly onto the bitmap wxMemoryDC memDc(bmp); - - int top_margin = FromDIP(75 * m_scale); + int width = bmp.GetWidth(); + int height = bmp.GetHeight(); - // draw title and version - int text_padding = FromDIP(3 * m_scale); - memDc.SetFont(m_constant_text.title_font); - int title_height = memDc.GetTextExtent(m_constant_text.title).GetHeight(); - int title_width = memDc.GetTextExtent(m_constant_text.title).GetWidth(); - memDc.SetFont(m_constant_text.version_font); - int version_height = memDc.GetTextExtent(m_constant_text.version).GetHeight(); - int version_width = memDc.GetTextExtent(m_constant_text.version).GetWidth(); - int split_width = (width + title_width - version_width) / 2; - wxRect title_rect(wxPoint(0, top_margin), wxPoint(split_width - text_padding, top_margin + title_height)); - memDc.SetTextForeground(StateColor::darkModeColorFor(wxColour(38, 46, 48))); - memDc.SetFont(m_constant_text.title_font); - memDc.DrawLabel(m_constant_text.title, title_rect, wxALIGN_RIGHT | wxALIGN_BOTTOM); - //BBS align bottom of title and version text - wxRect version_rect(wxPoint(split_width + text_padding, top_margin), wxPoint(width, top_margin + title_height - text_padding)); + // Logo + BitmapCache bmp_cache; + wxBitmap logo_bmp = *bmp_cache.load_svg(is_dark ? "splash_logo_dark" : "splash_logo", width, height); // use with full width & height + memDc.DrawBitmap(logo_bmp, 0, 0, true); + + // Version memDc.SetFont(m_constant_text.version_font); memDc.SetTextForeground(StateColor::darkModeColorFor(wxColor(134, 134, 134))); - memDc.DrawLabel(m_constant_text.version, version_rect, wxALIGN_LEFT | wxALIGN_BOTTOM); + wxSize version_ext = memDc.GetTextExtent(m_constant_text.version); + wxRect version_rect( + wxPoint(0, int(height * 0.70)), + wxPoint(width, int(height * 0.70) + version_ext.GetHeight()) + ); + memDc.DrawLabel(m_constant_text.version, version_rect, wxALIGN_CENTER); + // Dynamic Text + m_action_line_y_position = int(height * 0.83); + + // Based on Text + memDc.SetFont(m_constant_text.based_on_font); auto bs_version = wxString::Format("Based on PrusaSlicer and BambuStudio").ToStdString(); - memDc.SetFont(Label::Body_12); - wxSize text_rect = memDc.GetTextExtent(bs_version); - int start_x = (title_rect.GetLeft() + version_rect.GetRight()) / 2 - text_rect.GetWidth()/2; - int start_y = version_rect.GetBottom() + 10; - wxRect internal_sign_rect(wxPoint(start_x, start_y), wxSize(text_rect)); - memDc.DrawLabel(bs_version, internal_sign_rect, wxALIGN_RIGHT); - - // load bitmap for logo - BitmapCache bmp_cache; - int logo_margin = FromDIP(72 * m_scale); - int logo_size = FromDIP(122 * m_scale); - int logo_width = FromDIP(94 * m_scale); - wxBitmap logo_bmp = *bmp_cache.load_svg("splash_logo", logo_size, logo_size); - int logo_y = top_margin + title_rect.GetHeight() + logo_margin; - memDc.DrawBitmap(logo_bmp, (width - logo_width) / 2, logo_y, true); - - // calculate position for the dynamic text - int text_margin = FromDIP(80 * m_scale); - m_action_line_y_position = logo_y + logo_size + text_margin; + wxSize based_on_ext = memDc.GetTextExtent(bs_version); + wxRect based_on_rect( + wxPoint(0, height - based_on_ext.GetHeight() * 2), + wxPoint(width, height - based_on_ext.GetHeight()) + ); + memDc.DrawLabel(bs_version, based_on_rect, wxALIGN_CENTER); } static wxBitmap MakeBitmap() @@ -440,21 +433,23 @@ private: wxFont title_font; wxFont version_font; wxFont credits_font; + wxFont based_on_font; void init(wxFont init_font) { // title - title = wxGetApp().is_editor() ? SLIC3R_APP_FULL_NAME : GCODEVIEWER_APP_NAME; + //title = wxGetApp().is_editor() ? SLIC3R_APP_FULL_NAME : GCODEVIEWER_APP_NAME; // dynamically get the version to display - version = _L("V") + " " + GUI_App::format_display_version(); + version = GUI_App::format_display_version(); // credits infornation credits = ""; - title_font = Label::Head_16; - version_font = Label::Body_16; - credits_font = init_font; + //title_font = Label::Head_16; + version_font = Label::Body_13; + based_on_font = Label::Body_8; + credits_font = Label::Body_8; } } m_constant_text;