Mirror checkboxes added to the UI.

Everything seems to work fine.
This commit is contained in:
tamasmeszaros 2019-05-18 23:21:59 +02:00
parent bb73b59aa6
commit 38d54d779a
6 changed files with 48 additions and 10 deletions

View file

@ -2259,15 +2259,17 @@ void PrintConfigDef::init_sla_params()
def->set_default_value(new ConfigOptionInt(1440));
def = this->add("display_mirror_x", coBool);
def->full_label = L("Display mirroring in X axis");
def->label = L("Mirror X");
def->tooltip = L("Enable mirroring of output images in the X axis");
def->full_label = L("Display horizontal mirroring");
def->label = L("Mirror horizontally");
def->tooltip = L("Enable horizontal mirroring of output images");
def->mode = comExpert;
def->set_default_value(new ConfigOptionBool(true));
def = this->add("display_mirror_y", coBool);
def->full_label = L("Display mirroring in Y axis");
def->label = L("Mirror Y");
def->tooltip = L("Enable mirroring of output images in the Y axis");
def->full_label = L("Display vertical mirroring");
def->label = L("Mirror vertically");
def->tooltip = L("Enable vertical mirroring of output images");
def->mode = comExpert;
def->set_default_value(new ConfigOptionBool(false));
def = this->add("display_orientation", coEnum);

View file

@ -58,6 +58,7 @@ private:
std::function<double(double)> m_gammafn;
std::array<bool, 2> m_mirror;
Format m_fmt = Format::PNG;
inline void flipy(agg::path_storage& path) const {
path.flip_y(0, m_resolution.height_px);
@ -101,6 +102,7 @@ public:
case Format::PNG: m_mirror = {false, true}; break;
case Format::RAW: m_mirror = {false, false}; break;
}
m_fmt = fmt;
}
template<class P> void draw(const P &poly) {
@ -131,6 +133,8 @@ public:
}
inline TBuffer& buffer() { return m_buf; }
inline Format format() const { return m_fmt; }
inline const Raster::Resolution resolution() { return m_resolution; }
@ -258,6 +262,11 @@ void Raster::save(std::ostream& stream, Format fmt)
}
}
void Raster::save(std::ostream &stream)
{
save(stream, m_impl->format());
}
RawBytes Raster::save(Format fmt)
{
assert(m_impl);
@ -300,6 +309,11 @@ RawBytes Raster::save(Format fmt)
return {std::move(data)};
}
RawBytes Raster::save()
{
return save(m_impl->format());
}
}
}

View file

@ -100,8 +100,17 @@ public:
~Raster();
/// Reallocated everything for the given resolution and pixel dimension.
void reset(const Resolution&, const PixelDim&, const std::array<bool, 2>& mirror, double gamma = 1.0);
void reset(const Resolution& r, const PixelDim& pd, Format o, double gamma = 1.0);
/// The third parameter is either the X, Y mirroring or a supported format
/// for which the correct mirroring will be configured.
void reset(const Resolution&,
const PixelDim&,
const std::array<bool, 2>& mirror,
double gamma = 1.0);
void reset(const Resolution& r,
const PixelDim& pd,
Format o,
double gamma = 1.0);
/**
* Release the allocated resources. Drawing in this state ends in
@ -119,11 +128,17 @@ public:
void draw(const ExPolygon& poly);
void draw(const ClipperLib::Polygon& poly);
// Saving the raster:
// It is possible to override the format given in the constructor but
// be aware that the mirroring will not be modified.
/// Save the raster on the specified stream.
void save(std::ostream& stream, Format = Format::PNG);
void save(std::ostream& stream, Format);
void save(std::ostream& stream);
/// Save into a continuous byte stream which is returned.
RawBytes save(Format fmt = Format::PNG);
RawBytes save(Format fmt);
RawBytes save();
};
} // sla

View file

@ -1461,6 +1461,8 @@ bool SLAPrint::invalidate_state_by_config_options(const std::vector<t_config_opt
"display_height",
"display_pixels_x",
"display_pixels_y",
"display_mirror_x",
"display_mirror_y",
"display_orientation"
};

View file

@ -509,6 +509,7 @@ const std::vector<std::string>& Preset::sla_printer_options()
"printer_technology",
"bed_shape", "max_print_height",
"display_width", "display_height", "display_pixels_x", "display_pixels_y",
"display_mirror_x", "display_mirror_y",
"display_orientation",
"fast_tilt_time", "slow_tilt_time", "area_fill",
"relative_correction",

View file

@ -2056,6 +2056,10 @@ void TabPrinter::build_sla()
line.append_option(optgroup->get_option("display_pixels_y"));
optgroup->append_line(line);
optgroup->append_single_option_line("display_orientation");
// FIXME: This should be on one line in the UI
optgroup->append_single_option_line("display_mirror_x");
optgroup->append_single_option_line("display_mirror_y");
optgroup = page->new_optgroup(_(L("Tilt")));
line = { _(L("Tilt time")), "" };