27 #ifndef SCRIBO_IO_IMG_SAVE_HH
28 # define SCRIBO_IO_IMG_SAVE_HH
40 # include <mln/core/image/image2d.hh>
41 # include <mln/value/rgb8.hh>
42 # include <mln/io/magick/save.hh>
43 # include <mln/data/transform.hh>
44 # include <mln/subsampling/antialiased.hh>
46 # include <scribo/core/document.hh>
48 # include <scribo/io/img/internal/text_img_visitor.hh>
49 # include <scribo/io/img/internal/non_text_img_visitor.hh>
50 # include <scribo/io/img/internal/full_img_visitor.hh>
51 # include <scribo/io/img/internal/debug_img_visitor.hh>
93 save(
const document<L>& doc,
const std::string& output_name,
97 # ifndef MLN_INCLUDE_ONLY
105 unsigned reduction_factor = 1;
107 struct highlight_mask
110 typedef value::rgb8 result;
112 highlight_mask(
float ratio)
117 result operator()(
const result& v)
const
120 out.red() =
std::min(out.red() * ratio, 255.f);
121 out.green() =
std::min(out.green() * ratio, 255.f);
122 out.blue() =
std::min(out.blue() * ratio, 255.f);
130 template <
typename L>
132 save_text(
const document<L>& doc)
134 mln_precondition(doc.is_valid());
141 template <
typename L>
143 save_non_text(
const document<L>& doc)
145 mln_precondition(doc.is_valid());
152 template <
typename L>
154 save_full(
const document<L>& doc)
156 mln_precondition(doc.is_valid());
163 template <
typename L>
165 save_debug_without_image(
const document<L>& doc)
167 mln_precondition(doc.is_valid());
169 const box2d& ima_domain = doc.image().domain();
171 ima_domain.pmax() / reduction_factor);
181 template <
typename L>
183 save_debug_with_image(
const document<L>& doc)
185 mln_precondition(doc.is_valid());
186 internal::highlight_mask highlight(0.5f);
189 if (reduction_factor > 1)
204 template <
typename L>
206 save(
const document<L>& doc,
207 const std::string& output_name,
210 mln_trace(
"scribo::io::img::save");
212 mln_precondition(doc.is_open());
220 output = internal::save_text(doc);
224 output = internal::save_non_text(doc);
228 output = internal::save_full(doc);
232 output = internal::save_debug_without_image(doc);
236 output = internal::save_debug_with_image(doc);
240 mln_trace_warning(
"scribo::io::img::save - "
241 "Invalid image format! Skip saving...");
250 # endif // ! MLN_INCLUDE_ONLY
259 #endif // ! SCRIBO_IO_IMG_SAVE_HH