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

@ -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