Mercurial > hgrepos > Python2 > PyMuPDF
diff mupdf-source/thirdparty/tesseract/src/textord/pithsync.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/pithsync.h Mon Sep 15 11:43:07 2025 +0200 @@ -0,0 +1,133 @@ +/********************************************************************** + * File: pithsync.h (Formerly pitsync2.h) + * Description: Code to find the optimum fixed pitch segmentation of some blobs. + * Author: Ray Smith + * + * (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 PITHSYNC_H +#define PITHSYNC_H + +#include "blobbox.h" +#include "params.h" +#include "statistc.h" + +namespace tesseract { + +class FPSEGPT_LIST; + +class FPCUTPT { +public: + FPCUTPT() = default; + void setup( // start of cut + FPCUTPT cutpts[], // predecessors + int16_t array_origin, // start coord + STATS *projection, // occupation + int16_t zero_count, // official zero + int16_t pitch, // proposed pitch + int16_t x, // position + int16_t offset); // dist to gap + + void assign( // evaluate cut + FPCUTPT cutpts[], // predecessors + int16_t array_origin, // start coord + int16_t x, // position + bool faking, // faking this one + bool mid_cut, // doing free cut + int16_t offset, // extra cost dist + STATS *projection, // occupation + float projection_scale, // scaling + int16_t zero_count, // official zero + int16_t pitch, // proposed pitch + int16_t pitch_error); // allowed tolerance + + void assign_cheap( // evaluate cut + FPCUTPT cutpts[], // predecessors + int16_t array_origin, // start coord + int16_t x, // position + bool faking, // faking this one + bool mid_cut, // doing free cut + int16_t offset, // extra cost dist + STATS *projection, // occupation + float projection_scale, // scaling + int16_t zero_count, // official zero + int16_t pitch, // proposed pitch + int16_t pitch_error); // allowed tolerance + + int32_t position() { // access func + return xpos; + } + double cost_function() { + return cost; + } + double squares() { + return sq_sum; + } + double sum() { + return mean_sum; + } + FPCUTPT *previous() { + return pred; + } + int16_t cheap_cuts() const { // no of mi cuts + return mid_cuts; + } + int16_t index() const { + return region_index; + } + + bool faked; // faked split point + bool terminal; // successful end + int16_t fake_count; // total fakes to here + +private: + int16_t region_index; // cut serial number + int16_t mid_cuts; // no of cheap cuts + int32_t xpos; // location + uint32_t back_balance; // proj backwards + uint32_t fwd_balance; // proj forwards + FPCUTPT *pred; // optimal previous + double mean_sum; // mean so far + double sq_sum; // summed distsances + double cost; // cost function +}; +double check_pitch_sync2( // 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 + int16_t projection_left, // edges //scale factor + int16_t projection_right, float projection_scale, + int16_t &occupation_count, // no of occupied cells + FPSEGPT_LIST *seg_list, // output list + int16_t start, // start of good range + int16_t end // end of good range +); +double check_pitch_sync3( // find segmentation + int16_t projection_left, // edges //to be considered 0 + int16_t projection_right, int16_t zero_count, + int16_t pitch, // pitch estimate + int16_t pitch_error, // tolerance + STATS *projection, // vertical + float projection_scale, // scale factor + int16_t &occupation_count, // no of occupied cells + FPSEGPT_LIST *seg_list, // output list + int16_t start, // start of good range + int16_t end // end of good range +); + +} // namespace tesseract + +#endif
