This file is indexed.

/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