1 /**********
2 *
3 * Copyright (c) 2003, Division of Imaging Science and Biomedical Engineering,
4 * University of Manchester, UK. All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without modification,
7 * are permitted provided that the following conditions are met:
8 *
9 * . Redistributions of source code must retain the above copyright notice,
10 * this list of conditions and the following disclaimer.
11 *
12 * . Redistributions in binary form must reproduce the above copyright notice,
13 * this list of conditions and the following disclaimer in the documentation
14 * and/or other materials provided with the distribution.
15 *
16 * . Neither the name of the University of Manchester nor the names of its
17 * contributors may be used to endorse or promote products derived from this
18 * software without specific prior written permission.
19 *
20 *
21 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
22 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
25 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
26 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
27 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
28 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
29 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
30 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
31 * POSSIBILITY OF SUCH DAMAGE.
32 *
33 **********
34 *
35 * Program : TINA
36 * File : $Source: /home/tina/cvs/tina-libs/tina/file/fileGeom_ffg_new_read.c,v $
37 * Date : $Date: 2005/01/23 19:10:21 $
38 * Version : $Revision: 1.3 $
39 * CVS Id : $Id: fileGeom_ffg_new_read.c,v 1.3 2005/01/23 19:10:21 paul Exp $
40 *
41 * Author : Legacy TINA
42 *
43 * Notes :
44 *
45 *
46 *********
47 */
48
49 #include "fileGeom_ffg_new_read.h"
50
51 #if HAVE_CONFIG_H
52 #include <config.h>
53 #endif
54
55 #include <stdio.h>
56 #include <tina/sys/sysPro.h>
57 #include <tina/sys/sysDef.h>
58 #include <tina/math/mathPro.h>
59 #include <tina/math/mathDef.h>
60 #include <tina/vision/visDef.h>
61 #include <tina/vision/visPro.h>
62 #include <tina/file/filePro.h>
63
64 Match_cliche *match_cliche_new_read(List * list, FILE * stream, const char
65 *pathname)
66 {
67 int label;
68 void *geom_getbylabel();
69 List *focus = NULL;
70 List *group = NULL;
71 int i, fthres, gthres, count;
72
73 if (fscanf(stream, "%d %d", &count, &fthres) == EOF)
74 {
75 errorf(non_fatal, "unexpected end of file: %s\n", pathname);
76 return (NULL);
77 }
78 for (i = 0; i < count; ++i)
79 {
80 void *feature;
81 int type;
82
83 if (fscanf(stream, "%d", &label) == EOF)
84 {
85 errorf(non_fatal, "unexpected end of file: %s\n", pathname);
86 return (NULL);
87 }
88 feature = geom_getbylabel(list, label, &type);
89 focus = ref_addtostart(focus, feature, type);
90 }
91
92 if (fscanf(stream, "%d %d", &count, >hres) == EOF)
93 {
94 error("unexpected end of file", non_fatal);
95 return (NULL);
96 }
97 for (i = 0; i < count; ++i)
98 {
99 void *feature;
100 int type;
101
102 if (fscanf(stream, "%d", &label) == EOF)
103 {
104 errorf(non_fatal, "unexpected end of file: %s\n", pathname);
105 return (NULL);
106 }
107 feature = geom_getbylabel(list, label, &type);
108 group = ref_addtostart(group, feature, type);
109 }
110
111 return (match_cliche_make(focus, fthres, group, gthres));
112 }
113
114 List *ffg_new_read_file_stream(List * list, FILE * stream, const char *pathname)
115 {
116 List *cliche_list = NULL;
117 int i, count;
118
119 if (fscanf(stream, "%d", &count) == EOF)
120 {
121 errorf(non_fatal, "unexpected end of file: %s\n", pathname);
122 return (NULL);
123 }
124 for (i = 0; i < count; ++i)
125 {
126 Match_cliche *cliche = match_cliche_new_read(list, stream, pathname);
127
128 if (cliche == NULL)
129 {
130 errorf(non_fatal, "problem reading ffg file: %s\n", pathname);
131 list_rm(cliche_list, match_cliche_free);
132 return (NULL);
133 }
134 cliche_list = ref_addtostart(cliche_list, (void *) cliche, MATCH_CLICHE);
135 }
136 return (list_reverse(cliche_list));
137 }
138
139 List *ffg_new_read_file(char *pathname, List * list)
140 {
141 List *cliche_list=NULL;
142 FILE *stream = fopen(pathname, "r");
143
144 if (stream)
145 {
146 cliche_list = ffg_new_read_file_stream(list, stream, pathname);
147 (void) fclose_2(stream, pathname);
148 }
149 return (cliche_list);
150 }
151
This page was automatically generated by the
LXR engine.
Visit the LXR main site for more
information.