tesseract v5.3.3.20231005
debugpixa.h
Go to the documentation of this file.
1#ifndef TESSERACT_CCSTRUCT_DEBUGPIXA_H_
2#define TESSERACT_CCSTRUCT_DEBUGPIXA_H_
3
4#include "image.h"
5
6#include <allheaders.h>
7
8namespace tesseract {
9
10// Class to hold a Pixa collection of debug images with captions and save them
11// to a PDF file.
12class DebugPixa {
13public:
14 // TODO(rays) add another constructor with size control.
16 pixa_ = pixaCreate(0);
17#ifdef TESSERACT_DISABLE_DEBUG_FONTS
18 fonts_ = NULL;
19#else
20 fonts_ = bmfCreate(nullptr, 14);
21#endif
22 }
23 // If the filename_ has been set and there are any debug images, they are
24 // written to the set filename_.
26 pixaDestroy(&pixa_);
27 bmfDestroy(&fonts_);
28 }
29
30 // Adds the given pix to the set of pages in the PDF file, with the given
31 // caption added to the top.
32 void AddPix(const Image pix, const char *caption) {
33 int depth = pixGetDepth(pix);
34 int color = depth < 8 ? 1 : (depth > 8 ? 0x00ff0000 : 0x80);
35 Image pix_debug =
36 pixAddSingleTextblock(pix, fonts_, caption, color, L_ADD_BELOW, nullptr);
37 pixaAddPix(pixa_, pix_debug, L_INSERT);
38 }
39
40 // Sets the destination filename and enables images to be written to a PDF
41 // on destruction.
42 void WritePDF(const char *filename) {
43 if (pixaGetCount(pixa_) > 0) {
44 pixaConvertToPdf(pixa_, 300, 1.0f, 0, 0, "AllDebugImages", filename);
45 pixaClear(pixa_);
46 }
47 }
48
49private:
50 // The collection of images to put in the PDF.
51 Pixa *pixa_;
52 // The fonts used to draw text captions.
53 L_Bmf *fonts_;
54};
55
56} // namespace tesseract
57
58#endif // TESSERACT_CCSTRUCT_DEBUGPIXA_H_
void WritePDF(const char *filename)
Definition: debugpixa.h:42
void AddPix(const Image pix, const char *caption)
Definition: debugpixa.h:32