Mercurial > hgrepos > Python2 > PyMuPDF
diff mupdf-source/thirdparty/tesseract/src/wordrec/render.cpp @ 2:b50eed0cc0ef upstream
ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
The directory name has changed: no version number in the expanded directory now.
| author | Franz Glasner <fzglas.hg@dom66.de> |
|---|---|
| date | Mon, 15 Sep 2025 11:43:07 +0200 |
| parents | |
| children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mupdf-source/thirdparty/tesseract/src/wordrec/render.cpp Mon Sep 15 11:43:07 2025 +0200 @@ -0,0 +1,126 @@ +/****************************************************************************** + * + * File: render.cpp (Formerly render.c) + * Description: Convert the various data type into line lists + * Author: Mark Seaman, OCR Technology + * + * (c) Copyright 1989, Hewlett-Packard Company. + ** Licensed under the Apache License, Version 2.0 (the "License"); + ** you may not use this file except in compliance with the License. + ** You may obtain a copy of the License at + ** http://www.apache.org/licenses/LICENSE-2.0 + ** Unless required by applicable law or agreed to in writing, software + ** distributed under the License is distributed on an "AS IS" BASIS, + ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + ** See the License for the specific language governing permissions and + ** limitations under the License. + * + *****************************************************************************/ + +// Include automatically generated configuration file if running autoconf. +#ifdef HAVE_CONFIG_H +# include "config_auto.h" +#endif + +#include "render.h" + +#include "blobs.h" + +#include <cmath> + +namespace tesseract { + +/*---------------------------------------------------------------------- + V a r i a b l e s +----------------------------------------------------------------------*/ +ScrollView *blob_window = nullptr; + +ScrollView::Color color_list[] = {ScrollView::RED, ScrollView::CYAN, ScrollView::YELLOW, + ScrollView::BLUE, ScrollView::GREEN, ScrollView::WHITE}; + +BOOL_VAR(wordrec_display_all_blobs, 0, "Display Blobs"); + +BOOL_VAR(wordrec_blob_pause, 0, "Blob pause"); + +/*---------------------------------------------------------------------- + F u n c t i o n s +----------------------------------------------------------------------*/ +#ifndef GRAPHICS_DISABLED +/********************************************************************** + * display_blob + * + * Macro to display blob in a window. + **********************************************************************/ +void display_blob(TBLOB *blob, ScrollView::Color color) { + /* Size of drawable */ + if (blob_window == nullptr) { + blob_window = new ScrollView("Blobs", 520, 10, 500, 256, 2000, 256, true); + } else { + blob_window->Clear(); + } + + render_blob(blob_window, blob, color); +} + +/********************************************************************** + * render_blob + * + * Create a list of line segments that represent the expanded outline + * that was supplied as input. + **********************************************************************/ +void render_blob(ScrollView *window, TBLOB *blob, ScrollView::Color color) { + /* No outline */ + if (!blob) { + return; + } + + render_outline(window, blob->outlines, color); +} + +/********************************************************************** + * render_edgepts + * + * Create a list of line segments that represent the expanded outline + * that was supplied as input. + **********************************************************************/ +void render_edgepts(ScrollView *window, EDGEPT *edgept, ScrollView::Color color) { + if (!edgept) { + return; + } + + float x = edgept->pos.x; + float y = edgept->pos.y; + EDGEPT *this_edge = edgept; + + window->Pen(color); + window->SetCursor(x, y); + do { + this_edge = this_edge->next; + x = this_edge->pos.x; + y = this_edge->pos.y; + window->DrawTo(x, y); + } while (edgept != this_edge); +} + +/********************************************************************** + * render_outline + * + * Create a list of line segments that represent the expanded outline + * that was supplied as input. + **********************************************************************/ +void render_outline(ScrollView *window, TESSLINE *outline, ScrollView::Color color) { + /* No outline */ + if (!outline) { + return; + } + /* Draw Compact outline */ + if (outline->loop) { + render_edgepts(window, outline->loop, color); + } + /* Add on next outlines */ + render_outline(window, outline->next, color); +} + +#endif // !GRAPHICS_DISABLED + +} // namespace tesseract
