📄 seam.h
字号:
/* -*-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 "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; inT16 location; SPLIT *split1; SPLIT *split2; SPLIT *split3;} SEAM;typedef ARRAY SEAMS; /* SEAMS */extern SEAM *newseam();/*---------------------------------------------------------------------- M a c r o s----------------------------------------------------------------------*//********************************************************************** * 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);SEAMS add_seam(SEAMS seam_list, SEAM *seam);void combine_seams(SEAM *dest_seam, SEAM *source_seam);void delete_seam(void *arg); //SEAM *seam);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);bool find_split_in_blob(SPLIT *split, TBLOB *blob);SEAM *join_two_seams(SEAM *seam1, SEAM *seam2);SEAM *new_seam(PRIORITY priority, int x_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);#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -