Mercurial > hgrepos > Python2 > PyMuPDF
diff mupdf-source/thirdparty/tesseract/src/ccstruct/mod128.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/ccstruct/mod128.h Mon Sep 15 11:43:07 2025 +0200 @@ -0,0 +1,88 @@ +/********************************************************************** + * File: mod128.h (Formerly dir128.h) + * Description: Header for class which implements modulo arithmetic. + * Author: Ray Smith + * + * (C) Copyright 1991, 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 MOD128_H +#define MOD128_H + +#include "points.h" + +namespace tesseract { + +#define MODULUS 128 /*range of directions */ +#define DIRBITS 7 // no of bits used +#define DIRSCALE 1000 // length of vector + +class DIR128 { +public: + DIR128() = default; + + DIR128( // constructor + int16_t value) { // value to assign + value %= MODULUS; // modulo arithmetic + if (value < 0) { + value += MODULUS; // done properly + } + dir = static_cast<int8_t>(value); + } + DIR128(const FCOORD fc); // quantize vector + + DIR128 &operator=( // assign of int16_t + int16_t value) { // value to assign + value %= MODULUS; // modulo arithmetic + if (value < 0) { + value += MODULUS; // done properly + } + dir = static_cast<int8_t>(value); + return *this; + } + int8_t operator-( // subtraction + const DIR128 &minus) const // for signed result + { + // result + int16_t result = dir - minus.dir; + + if (result > MODULUS / 2) { + result -= MODULUS; // get in range + } else if (result < -MODULUS / 2) { + result += MODULUS; + } + return static_cast<int8_t>(result); + } + DIR128 operator+( // addition + const DIR128 &add) const // of itself + { + DIR128 result; // sum + + result = dir + add.dir; // let = do the work + return result; + } + DIR128 &operator+=( // same as + + const DIR128 &add) { + *this = dir + add.dir; // let = do the work + return *this; + } + int8_t get_dir() const { // access function + return dir; + } + + int8_t dir; // a direction +}; + +} // namespace tesseract + +#endif
