Skip to content

Commit

Permalink
Format code with clang-format
Browse files Browse the repository at this point in the history
Signed-off-by: Stefan Weil <sw@weilnetz.de>
  • Loading branch information
stweil committed Mar 31, 2019
1 parent 95ea778 commit 51a2c2e
Show file tree
Hide file tree
Showing 2 changed files with 166 additions and 157 deletions.
237 changes: 123 additions & 114 deletions src/api/renderer.h
Expand Up @@ -21,7 +21,7 @@
// To avoid collision with other typenames include the ABSOLUTE MINIMUM
// complexity of includes here. Use forward declarations wherever possible
// and hide includes of complex types in baseapi.cpp.
#include <string> // for std::string
#include <string> // for std::string
#include "genericvector.h"
#include "platform.h"

Expand All @@ -45,107 +45,116 @@ class TessBaseAPI;
* in addition to the heuristics for producing it.
*/
class TESS_API TessResultRenderer {
public:
virtual ~TessResultRenderer();

// Takes ownership of pointer so must be new'd instance.
// Renderers aren't ordered, but appends the sequences of next parameter
// and existing next(). The renderers should be unique across both lists.
void insert(TessResultRenderer* next);

// Returns the next renderer or nullptr.
TessResultRenderer* next() { return next_; }

/**
* Starts a new document with the given title.
* This clears the contents of the output data.
* Title should use UTF-8 encoding.
*/
bool BeginDocument(const char* title);

/**
* Adds the recognized text from the source image to the current document.
* Invalid if BeginDocument not yet called.
*
* Note that this API is a bit weird but is designed to fit into the
* current TessBaseAPI implementation where the api has lots of state
* information that we might want to add in.
*/
bool AddImage(TessBaseAPI* api);

/**
* Finishes the document and finalizes the output data
* Invalid if BeginDocument not yet called.
*/
bool EndDocument();

const char* file_extension() const { return file_extension_; }
const char* title() const { return title_.c_str(); }

// Is everything fine? Otherwise something went wrong.
bool happy() { return happy_; }

/**
* Returns the index of the last image given to AddImage
* (i.e. images are incremented whether the image succeeded or not)
*
* This is always defined. It means either the number of the
* current image, the last image ended, or in the completed document
* depending on when in the document lifecycle you are looking at it.
* Will return -1 if a document was never started.
*/
int imagenum() const { return imagenum_; }

protected:
/**
* Called by concrete classes.
*
* outputbase is the name of the output file excluding
* extension. For example, "/path/to/chocolate-chip-cookie-recipe"
*
* extension indicates the file extension to be used for output
* files. For example "pdf" will produce a .pdf file, and "hocr"
* will produce .hocr files.
*/
TessResultRenderer(const char *outputbase,
const char* extension);

// Hook for specialized handling in BeginDocument()
virtual bool BeginDocumentHandler();

// This must be overridden to render the OCR'd results
virtual bool AddImageHandler(TessBaseAPI* api) = 0;

// Hook for specialized handling in EndDocument()
virtual bool EndDocumentHandler();

// Renderers can call this to append '\0' terminated strings into
// the output string returned by GetOutput.
// This method will grow the output buffer if needed.
void AppendString(const char* s);

// Renderers can call this to append binary byte sequences into
// the output string returned by GetOutput. Note that s is not necessarily
// '\0' terminated (and can contain '\0' within it).
// This method will grow the output buffer if needed.
void AppendData(const char* s, int len);

private:
const char* file_extension_; // standard extension for generated output
STRING title_; // title of document being renderered
int imagenum_; // index of last image added

FILE* fout_; // output file pointer
TessResultRenderer* next_; // Can link multiple renderers together
bool happy_; // I get grumpy when the disk fills up, etc.
public:
virtual ~TessResultRenderer();

// Takes ownership of pointer so must be new'd instance.
// Renderers aren't ordered, but appends the sequences of next parameter
// and existing next(). The renderers should be unique across both lists.
void insert(TessResultRenderer* next);

// Returns the next renderer or nullptr.
TessResultRenderer* next() {
return next_;
}

/**
* Starts a new document with the given title.
* This clears the contents of the output data.
* Title should use UTF-8 encoding.
*/
bool BeginDocument(const char* title);

/**
* Adds the recognized text from the source image to the current document.
* Invalid if BeginDocument not yet called.
*
* Note that this API is a bit weird but is designed to fit into the
* current TessBaseAPI implementation where the api has lots of state
* information that we might want to add in.
*/
bool AddImage(TessBaseAPI* api);

/**
* Finishes the document and finalizes the output data
* Invalid if BeginDocument not yet called.
*/
bool EndDocument();

const char* file_extension() const {
return file_extension_;
}
const char* title() const {
return title_.c_str();
}

// Is everything fine? Otherwise something went wrong.
bool happy() {
return happy_;
}

/**
* Returns the index of the last image given to AddImage
* (i.e. images are incremented whether the image succeeded or not)
*
* This is always defined. It means either the number of the
* current image, the last image ended, or in the completed document
* depending on when in the document lifecycle you are looking at it.
* Will return -1 if a document was never started.
*/
int imagenum() const {
return imagenum_;
}

protected:
/**
* Called by concrete classes.
*
* outputbase is the name of the output file excluding
* extension. For example, "/path/to/chocolate-chip-cookie-recipe"
*
* extension indicates the file extension to be used for output
* files. For example "pdf" will produce a .pdf file, and "hocr"
* will produce .hocr files.
*/
TessResultRenderer(const char* outputbase, const char* extension);

// Hook for specialized handling in BeginDocument()
virtual bool BeginDocumentHandler();

// This must be overridden to render the OCR'd results
virtual bool AddImageHandler(TessBaseAPI* api) = 0;

// Hook for specialized handling in EndDocument()
virtual bool EndDocumentHandler();

// Renderers can call this to append '\0' terminated strings into
// the output string returned by GetOutput.
// This method will grow the output buffer if needed.
void AppendString(const char* s);

// Renderers can call this to append binary byte sequences into
// the output string returned by GetOutput. Note that s is not necessarily
// '\0' terminated (and can contain '\0' within it).
// This method will grow the output buffer if needed.
void AppendData(const char* s, int len);

private:
const char* file_extension_; // standard extension for generated output
STRING title_; // title of document being renderered
int imagenum_; // index of last image added

FILE* fout_; // output file pointer
TessResultRenderer* next_; // Can link multiple renderers together
bool happy_; // I get grumpy when the disk fills up, etc.
};

/**
* Renders tesseract output into a plain UTF-8 text string
*/
class TESS_API TessTextRenderer : public TessResultRenderer {
public:
explicit TessTextRenderer(const char *outputbase);
explicit TessTextRenderer(const char* outputbase);

protected:
bool AddImageHandler(TessBaseAPI* api) override;
Expand All @@ -156,8 +165,8 @@ class TESS_API TessTextRenderer : public TessResultRenderer {
*/
class TESS_API TessHOcrRenderer : public TessResultRenderer {
public:
explicit TessHOcrRenderer(const char *outputbase, bool font_info);
explicit TessHOcrRenderer(const char *outputbase);
explicit TessHOcrRenderer(const char* outputbase, bool font_info);
explicit TessHOcrRenderer(const char* outputbase);

protected:
bool BeginDocumentHandler() override;
Expand All @@ -171,16 +180,15 @@ class TESS_API TessHOcrRenderer : public TessResultRenderer {
/**
* Renders tesseract output into an alto text string
*/
class TESS_API TessAltoRenderer : public TessResultRenderer {
public:
explicit TessAltoRenderer(const char *outputbase);

protected:
bool BeginDocumentHandler() override;
bool AddImageHandler(TessBaseAPI* api) override;
bool EndDocumentHandler() override;
class TESS_API TessAltoRenderer : public TessResultRenderer {
public:
explicit TessAltoRenderer(const char* outputbase);

};
protected:
bool BeginDocumentHandler() override;
bool AddImageHandler(TessBaseAPI* api) override;
bool EndDocumentHandler() override;
};

/**
* Renders Tesseract output into a TSV string
Expand All @@ -196,7 +204,7 @@ class TESS_API TessTsvRenderer : public TessResultRenderer {
bool EndDocumentHandler() override;

private:
bool font_info_; // whether to print font information
bool font_info_; // whether to print font information
};

/**
Expand All @@ -206,7 +214,8 @@ class TESS_API TessPDFRenderer : public TessResultRenderer {
public:
// datadir is the location of the TESSDATA. We need it because
// we load a custom PDF font from this location.
TessPDFRenderer(const char* outputbase, const char* datadir, bool textonly = false);
TessPDFRenderer(const char* outputbase, const char* datadir,
bool textonly = false);

protected:
bool BeginDocumentHandler() override;
Expand All @@ -227,21 +236,21 @@ class TESS_API TessPDFRenderer : public TessResultRenderer {
// Bookkeeping only. DIY = Do It Yourself.
void AppendPDFObjectDIY(size_t objectsize);
// Bookkeeping + emit data.
void AppendPDFObject(const char *data);
void AppendPDFObject(const char* data);
// Create the /Contents object for an entire page.
char* GetPDFTextObjects(TessBaseAPI* api, double width, double height);
// Turn an image into a PDF object. Only transcode if we have to.
static bool imageToPDFObj(Pix* pix, const char* filename, long int objnum,
char** pdf_object, long int* pdf_object_size, const int jpg_quality);
char** pdf_object, long int* pdf_object_size,
int jpg_quality);
};


/**
* Renders tesseract output into a plain UTF-8 text string
*/
class TESS_API TessUnlvRenderer : public TessResultRenderer {
public:
explicit TessUnlvRenderer(const char *outputbase);
explicit TessUnlvRenderer(const char* outputbase);

protected:
bool AddImageHandler(TessBaseAPI* api) override;
Expand All @@ -263,7 +272,7 @@ class TESS_API TessLSTMBoxRenderer : public TessResultRenderer {
*/
class TESS_API TessBoxTextRenderer : public TessResultRenderer {
public:
explicit TessBoxTextRenderer(const char *outputbase);
explicit TessBoxTextRenderer(const char* outputbase);

protected:
bool AddImageHandler(TessBaseAPI* api) override;
Expand Down Expand Up @@ -293,7 +302,7 @@ class TESS_API TessOsdRenderer : public TessResultRenderer {
bool AddImageHandler(TessBaseAPI* api) override;
};

#endif // ndef DISABLED_LEGACY_ENGINE
#endif // ndef DISABLED_LEGACY_ENGINE

} // namespace tesseract.

Expand Down

0 comments on commit 51a2c2e

Please sign in to comment.