20 #include "allheaders.h"
34 image_width_(0), image_height_(0),
35 image_bytespp_(0), image_bytespl_(0),
36 scale_(1), yres_(300), estimated_res_(300) {
71 int width,
int height,
72 int bytes_per_pixel,
int bytes_per_line) {
100 int* width,
int* height,
101 int* imagewidth,
int* imageheight) {
116 Pix* src =
const_cast<Pix*
>(pix);
121 if (depth > 1 && depth < 8) {
122 pix_ = pixConvertTo8(src,
false);
123 }
else if (pixGetColormap(src)) {
124 pix_ = pixRemoveColormap(src, REMOVE_CMAP_BASED_ON_SRC);
126 pix_ = pixClone(src);
128 depth = pixGetDepth(
pix_);
186 return pixClone(
pix_);
190 Pix* cropped = pixClipRectangle(
pix_, box,
NULL);
208 int depth = pixGetDepth(pix);
210 Pix* result = depth < 8 ? pixConvertTo8(pix,
false)
211 : pixConvertRGBToLuminance(pix);
228 &thresholds, &hi_values);
232 thresholds, hi_values, pix);
233 delete [] thresholds;
242 const int* thresholds,
243 const int* hi_values,
246 uinT32* pixdata = pixGetData(*pix);
247 int wpl = pixGetWpl(*pix);
248 const unsigned char* srcdata = imagedata +
rect_top_* bytes_per_line +
251 const uinT8* linedata = srcdata;
252 uinT32* pixline = pixdata + y * wpl;
253 for (
int x = 0; x <
rect_width_; ++x, linedata += bytes_per_pixel) {
254 bool white_result =
true;
255 for (
int ch = 0; ch < bytes_per_pixel; ++ch) {
256 if (hi_values[ch] >= 0 &&
257 (linedata[ch] > thresholds[ch]) == (hi_values[ch] == 0)) {
258 white_result =
false;
263 CLEAR_DATA_BIT(pixline, x);
265 SET_DATA_BIT(pixline, x);
267 srcdata += bytes_per_line;
283 *pix = image.
ToPix();
296 uinT32* data = pixGetData(*pix);
297 int wpl = pixGetWpl(*pix);
301 const uinT8* linedata = imagedata;
302 uinT32* line = data + y * wpl;
304 line[x] = (linedata[0] << 24) | (linedata[1] << 16) |
305 (linedata[2] << 8) | linedata[3];