Mercurial > hgrepos > Python2 > PyMuPDF
diff mupdf-source/thirdparty/tesseract/src/textord/pitsync1.h @ 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/textord/pitsync1.h Mon Sep 15 11:43:07 2025 +0200 @@ -0,0 +1,118 @@ +/********************************************************************** + * File: pitsync1.h (Formerly pitsync.h) + * Description: Code to find the optimum fixed pitch segmentation of some blobs. + * Author: Ray Smith + * Created: Thu Nov 19 11:48:05 GMT 1992 + * + * (C) Copyright 1992, Hewlett-Packard Ltd. + ** 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. + * + **********************************************************************/ + +#ifndef PITSYNC1_H +#define PITSYNC1_H + +#include "blobbox.h" +#include "clst.h" +#include "elst.h" +#include "params.h" +#include "pithsync.h" +#include "statistc.h" + +namespace tesseract { + +class FPSEGPT_LIST; + +class FPSEGPT : public ELIST_LINK { +public: + FPSEGPT() = default; + FPSEGPT( // constructor + int16_t x); // position + FPSEGPT( // constructor + int16_t x, // position + bool faking, // faking this one + int16_t offset, // extra cost dist + int16_t region_index, // segment number + int16_t pitch, // proposed pitch + int16_t pitch_error, // allowed tolerance + FPSEGPT_LIST *prev_list); // previous segment + FPSEGPT(FPCUTPT *cutpt); // build from new type + + int32_t position() { // access func + return xpos; + } + double cost_function() { + return cost; + } + double squares() { + return sq_sum; + } + double sum() { + return mean_sum; + } + FPSEGPT *previous() { + return pred; + } + int16_t cheap_cuts() const { // no of cheap cuts + return mid_cuts; + } + + bool faked; // faked split point + bool terminal; // successful end + int16_t fake_count; // total fakes to here + +private: + int16_t mid_cuts; // no of cheap cuts + int32_t xpos; // location + FPSEGPT *pred; // optimal previous + double mean_sum; // mean so far + double sq_sum; // summed distsances + double cost; // cost function +}; + +ELISTIZEH(FPSEGPT) +CLISTIZEH(FPSEGPT_LIST) +extern INT_VAR_H(pitsync_linear_version); +extern double_VAR_H(pitsync_joined_edge); +extern double_VAR_H(pitsync_offset_freecut_fraction); +double check_pitch_sync( // find segmentation + BLOBNBOX_IT *blob_it, // blobs to do + int16_t blob_count, // no of blobs + int16_t pitch, // pitch estimate + int16_t pitch_error, // tolerance + STATS *projection, // vertical + FPSEGPT_LIST *seg_list // output list +); +void make_illegal_segment( // find segmentation + FPSEGPT_LIST *prev_list, // previous segments + TBOX blob_box, // bounding box + BLOBNBOX_IT blob_it, // iterator + int16_t region_index, // number of segment + int16_t pitch, // pitch estimate + int16_t pitch_error, // tolerance + FPSEGPT_LIST *seg_list // output list +); +int16_t vertical_torow_projection( // project whole row + TO_ROW *row, // row to do + STATS *projection // output +); +void vertical_cblob_projection( // project outlines + C_BLOB *blob, // blob to project + STATS *stats // output +); +void vertical_coutline_projection( // project outlines + C_OUTLINE *outline, // outline to project + STATS *stats // output +); + +} // namespace tesseract + +#endif
