/usr/include/tesseract/seam.h is in libtesseract-dev 3.02.01-6.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 | /* -*-C-*-
********************************************************************************
*
* File: seam.h (Formerly seam.h)
* Description:
* Author: Mark Seaman, SW Productivity
* Created: Fri Oct 16 14:37:00 1987
* Modified: Thu May 16 17:05:52 1991 (Mark Seaman) marks@hpgrlt
* Language: C
* Package: N/A
* Status: Reusable Software Component
*
* (c) Copyright 1987, 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.
*
*********************************************************************************/
#ifndef SEAM_H
#define SEAM_H
/*----------------------------------------------------------------------
I n c l u d e s
----------------------------------------------------------------------*/
#include "blobs.h"
#include "split.h"
#include "tessarray.h"
/*----------------------------------------------------------------------
T y p e s
----------------------------------------------------------------------*/
typedef float PRIORITY; /* PRIORITY */
typedef struct seam_record
{ /* SEAM */
PRIORITY priority;
inT8 widthp;
inT8 widthn;
TPOINT location;
SPLIT *split1;
SPLIT *split2;
SPLIT *split3;
} SEAM;
typedef ARRAY SEAMS; /* SEAMS */
extern SEAM *newseam();
/*----------------------------------------------------------------------
M a c r o s
----------------------------------------------------------------------*/
/**
* @name clone_seam
*
* Create a new seam record and copy the contents of this seam into it.
*/
#define clone_seam(dest,source) \
if (source) { \
(dest) = newseam (); \
(dest)->location = (source)->location; \
(dest)->widthp = (source)->widthp; \
(dest)->widthn = (source)->widthn; \
(dest)->priority = (source)->priority; \
clone_split ((dest)->split1, (source)->split1); \
clone_split ((dest)->split2, (source)->split2); \
clone_split ((dest)->split3, (source)->split3); \
} \
else { \
(dest) = (SEAM*) NULL; \
} \
/**
* exact_point
*
* Return TRUE if the point positions are the exactly the same. The
* parameters must be of type (EDGEPT*).
*/
#define exact_point(p1,p2) \
(! ((p1->pos.x - p2->pos.x) || (p1->pos.y - p2->pos.y)))
/*----------------------------------------------------------------------
F u n c t i o n s
----------------------------------------------------------------------*/
bool point_in_split(SPLIT *split, EDGEPT *point1, EDGEPT *point2);
bool point_in_seam(SEAM *seam, SPLIT *split);
bool point_used_by_split(SPLIT *split, EDGEPT *point);
bool point_used_by_seam(SEAM *seam, EDGEPT *point);
SEAMS add_seam(SEAMS seam_list, SEAM *seam);
void combine_seams(SEAM *dest_seam, SEAM *source_seam);
void delete_seam(void *arg); //SEAM *seam);
SEAMS start_seam_list(TBLOB *blobs);
void free_seam_list(SEAMS seam_list);
bool test_insert_seam(SEAMS seam_list,
int index,
TBLOB *left_blob,
TBLOB *first_blob);
SEAMS insert_seam(SEAMS seam_list,
int index,
SEAM *seam,
TBLOB *left_blob,
TBLOB *first_blob);
int account_splits_right(SEAM *seam, TBLOB *blob);
int account_splits_left(SEAM *seam, TBLOB *blob, TBLOB *end_blob);
void account_splits_left_helper(SEAM *seam, TBLOB *blob, TBLOB *end_blob,
inT32 *depth, inT8 *width, inT8 *found_em);
bool find_split_in_blob(SPLIT *split, TBLOB *blob);
SEAM *join_two_seams(SEAM *seam1, SEAM *seam2);
SEAM *new_seam(PRIORITY priority,
const TPOINT& location,
SPLIT *split1,
SPLIT *split2,
SPLIT *split3);
SEAMS new_seam_list();
void print_seam(const char *label, SEAM *seam);
void print_seams(const char *label, SEAMS seams);
int shared_split_points(SEAM *seam1, SEAM *seam2);
void break_pieces(TBLOB *blobs, SEAMS seams, inT16 start, inT16 end);
void join_pieces(TBLOB *piece_blobs, SEAMS seams, inT16 start, inT16 end);
void hide_seam(SEAM *seam);
void hide_edge_pair(EDGEPT *pt1, EDGEPT *pt2);
void reveal_seam(SEAM *seam);
void reveal_edge_pair(EDGEPT *pt1, EDGEPT *pt2);
#endif
|