OrcaSlicer latest
OrcaSlicer
Loading...
Searching...
No Matches
FilamentBitmapUtils.cpp File Reference
#include <wx/colour.h>
#include <vector>
#include <cstddef>
#include "libslic3r/Config.hpp"
#include "libslic3r/LocalesUtils.hpp"
#include <cstdio>
#include <wx/chartype.h>
#include <array>
#include <wx/dcmemory.h>
#include <wx/dcgraph.h>
#include <wx/gdicmn.h>
#include <wx/geometry.h>
#include <wx/font.h>
#include <wx/graphics.h>
#include <wx/peninfobase.h>
#include <wx/settings.h>
#include <wx/string.h>
#include <wx/window.h>
#include <algorithm>
#include <cmath>
#include <map>
#include <numeric>
#include <string>
#include <tuple>
#include "FilamentBitmapUtils.hpp"
#include "GUI_App.hpp"
#include "GuiColor.hpp"
#include "I18N.hpp"
#include "Widgets/Label.hpp"
#include "Widgets/StateColor.hpp"
#include "libslic3r/FilamentMixer.hpp"
#include "libslic3r/PrintConfig.hpp"
Include dependency graph for FilamentBitmapUtils.cpp:

Go to the source code of this file.

Classes

struct  Slic3r::GUI::BitmapDC
struct  Slic3r::GUI::anonymous_namespace{FilamentBitmapUtils.cpp}::TriCacheKey

Namespaces

namespace  Slic3r
 |/ Copyright (c) Prusa Research 2020 - 2023 Enrico Turri @enricoturri1966 |/ |/ PrusaSlicer is released under the terms of the AGPLv3 or higher |/
namespace  Slic3r::GUI
namespace  Slic3r::GUI::anonymous_namespace{FilamentBitmapUtils.cpp}

Functions

double Slic3r::GUI::tri_signed_area2 (TriPoint a, TriPoint b, TriPoint c)
bool Slic3r::GUI::tri_contains (TriPoint p, TriPoint v0, TriPoint v1, TriPoint v2)
void Slic3r::GUI::tri_barycentric (TriPoint p, TriPoint v0, TriPoint v1, TriPoint v2, double &w0, double &w1, double &w2)
TriPoint Slic3r::GUI::tri_clamp (TriPoint p, TriPoint v0, TriPoint v1, TriPoint v2)
void Slic3r::GUI::fill_gradient_rect_east (wxDC &dc, const wxRect &rect, const wxColour &from, const wxColour &to)
static std::string Slic3r::GUI::to_hex (const wxColour &c)
wxColour Slic3r::GUI::blend_n_colors (const std::vector< wxColour > &cols, const std::vector< double > &weights)
std::vector< wxColour > Slic3r::GUI::sample_gradient_ramp (const wxColour &first, const wxColour &second, const Slic3r::GradientCurve &curve, int steps)
Slic3r::GradientCurve Slic3r::GUI::mixed_gradient_curve (const Slic3r::DynamicPrintConfig &cfg, size_t slot)
std::vector< wxColour > Slic3r::GUI::mixed_gradient_ramp (const Slic3r::DynamicPrintConfig &cfg, size_t slot, int steps)
void Slic3r::GUI::fill_gradient_ramp_rect (wxDC &dc, const wxRect &rect, const std::vector< wxColour > &ramp)
static BitmapDC Slic3r::GUI::init_bitmap_dc (const wxSize &size)
wxBitmap Slic3r::GUI::create_gradient_ramp_bitmap (const std::vector< wxColour > &ramp, const wxSize &size)
static bool Slic3r::GUI::is_transparent_color (const wxColour &color)
static wxBitmap Slic3r::GUI::create_transparent_bitmap (const wxSize &size)
static wxBitmap Slic3r::GUI::create_single_filament_bitmap (const wxColour &color, const wxSize &size)
static wxBitmap Slic3r::GUI::create_dual_filament_bitmap (const wxColour &color1, const wxColour &color2, const wxSize &size)
static wxBitmap Slic3r::GUI::create_triple_filament_bitmap (const std::vector< wxColour > &colors, const wxSize &size)
static wxBitmap Slic3r::GUI::create_quadruple_filament_bitmap (const std::vector< wxColour > &colors, const wxSize &size)
static wxBitmap Slic3r::GUI::create_gradient_filament_bitmap (const std::vector< wxColour > &colors, const wxSize &size)
wxBitmap Slic3r::GUI::create_filament_bitmap (const std::vector< wxColour > &colors, const wxSize &size, bool force_gradient)
void Slic3r::GUI::recompute_mixed_slot_colors (std::vector< wxColour > &colors, const Slic3r::DynamicPrintConfig &cfg)
wxColour Slic3r::GUI::anonymous_namespace{FilamentBitmapUtils.cpp}::lerp_blend (const wxColour &a, const wxColour &b, double ratio_a)
int Slic3r::GUI::anonymous_namespace{FilamentBitmapUtils.cpp}::dip_px (int v)
wxRect Slic3r::GUI::mixed_gradient_plot_rect (const wxSize &sz)
void Slic3r::GUI::draw_mixed_gradient_plot (wxDC &raw_dc, const wxSize &canvas, const std::vector< MixedGradientCurve > &curves, const std::vector< wxPoint2DDouble > &anchors, const MixedGradientTheme &theme)
void Slic3r::GUI::draw_mixed_ratio_blend_bar (wxDC &dc, const wxRect &rect, const wxColour &first, const wxColour &second, double second_fraction)
void Slic3r::GUI::draw_mixed_ratio_segments (wxDC &dc, const wxRect &rect, const std::vector< wxColour > &colours, const std::vector< double > &shares)
std::map< TriCacheKey, wxBitmap > & Slic3r::GUI::anonymous_namespace{FilamentBitmapUtils.cpp}::tri_cache ()
std::array< TriPoint, 3 > Slic3r::GUI::mixed_triangle_vertices (const wxSize &size, double margin_dip)
void Slic3r::GUI::draw_mixed_triangle_picker (wxDC &dc, const wxSize &size, const std::array< wxColour, 3 > &colours, const std::array< double, 3 > &weights, const MixedTriangleTheme &theme)
void Slic3r::GUI::draw_mixed_triangle_labels (wxDC &dc, const wxSize &size, const std::array< double, 3 > &weights, const MixedTriangleTheme &theme)

Variables

constexpr double Slic3r::GUI::anonymous_namespace{FilamentBitmapUtils.cpp}::kPlotLeftRatio = 0.0316
constexpr double Slic3r::GUI::anonymous_namespace{FilamentBitmapUtils.cpp}::kPlotRightRatio = 0.6766
constexpr double Slic3r::GUI::anonymous_namespace{FilamentBitmapUtils.cpp}::kPlotTopRatio = 0.1529
constexpr double Slic3r::GUI::anonymous_namespace{FilamentBitmapUtils.cpp}::kPlotBottomRatio = 0.8474
constexpr int Slic3r::GUI::anonymous_namespace{FilamentBitmapUtils.cpp}::kGridDivisions = 9
constexpr int Slic3r::GUI::anonymous_namespace{FilamentBitmapUtils.cpp}::kStrokeAxis = 2
constexpr int Slic3r::GUI::anonymous_namespace{FilamentBitmapUtils.cpp}::kAxisArrowHalf = 5
constexpr int Slic3r::GUI::anonymous_namespace{FilamentBitmapUtils.cpp}::kAxisArrowLen = 10
constexpr int Slic3r::GUI::anonymous_namespace{FilamentBitmapUtils.cpp}::kPointRadius = 4
constexpr float Slic3r::GUI::anonymous_namespace{FilamentBitmapUtils.cpp}::kBgSimilarThreshold = 15.0f
constexpr int Slic3r::GUI::anonymous_namespace{FilamentBitmapUtils.cpp}::kOutlineExtraDip = 2
constexpr double Slic3r::GUI::anonymous_namespace{FilamentBitmapUtils.cpp}::kTriangleMarginDip = 20.0