@@ -150,37 +150,33 @@ void FontSetDeleteCallback(FontSet fs) {
150
150
/* ---------------------------------------------------------------------------*/
151
151
// Callbacks used by UnicityTable to read/write FontInfo/FontSet structures.
152
152
bool read_info (TFile* f, FontInfo* fi) {
153
- int32_t size;
154
- if (f->FReadEndian (&size, sizeof (size), 1 ) != 1 ) return false ;
153
+ uint32_t size;
154
+ if (! f->DeSerialize (&size) ) return false ;
155
155
char * font_name = new char [size + 1 ];
156
156
fi->name = font_name;
157
- if (f->FRead (font_name, sizeof (*font_name), size) != size ) return false ;
157
+ if (! f->DeSerialize (font_name, size)) return false ;
158
158
font_name[size] = ' \0 ' ;
159
- if (f->FReadEndian (&fi->properties , sizeof (fi->properties ), 1 ) != 1 )
160
- return false ;
161
- return true ;
159
+ return f->DeSerialize (&fi->properties );
162
160
}
163
161
164
162
bool write_info (FILE* f, const FontInfo& fi) {
165
163
int32_t size = strlen (fi.name );
166
- if (fwrite (&size, sizeof (size), 1 , f) != 1 ) return false ;
167
- if (static_cast <int >(fwrite (fi.name , sizeof (*fi.name ), size, f)) != size)
168
- return false ;
169
- if (fwrite (&fi.properties , sizeof (fi.properties ), 1 , f) != 1 ) return false ;
170
- return true ;
164
+ return tesseract::Serialize (f, &size) &&
165
+ tesseract::Serialize (f, &fi.name [0 ], size) &&
166
+ tesseract::Serialize (f, &fi.properties );
171
167
}
172
168
173
169
bool read_spacing_info (TFile* f, FontInfo* fi) {
174
170
int32_t vec_size, kern_size;
175
- if (f->FReadEndian (&vec_size, sizeof (vec_size), 1 ) != 1 ) return false ;
171
+ if (! f->DeSerialize (&vec_size) ) return false ;
176
172
ASSERT_HOST (vec_size >= 0 );
177
173
if (vec_size == 0 ) return true ;
178
174
fi->init_spacing (vec_size);
179
175
for (int i = 0 ; i < vec_size; ++i) {
180
176
FontSpacingInfo *fs = new FontSpacingInfo ();
181
- if (f->FReadEndian (&fs->x_gap_before , sizeof (fs-> x_gap_before ), 1 ) != 1 ||
182
- f->FReadEndian (&fs->x_gap_after , sizeof (fs-> x_gap_after ), 1 ) != 1 ||
183
- f->FReadEndian (&kern_size, sizeof (kern_size), 1 ) != 1 ) {
177
+ if (! f->DeSerialize (&fs->x_gap_before ) ||
178
+ ! f->DeSerialize (&fs->x_gap_after ) ||
179
+ ! f->DeSerialize (&kern_size) ) {
184
180
delete fs;
185
181
return false ;
186
182
}
@@ -200,22 +196,21 @@ bool read_spacing_info(TFile* f, FontInfo* fi) {
200
196
201
197
bool write_spacing_info (FILE* f, const FontInfo& fi) {
202
198
int32_t vec_size = (fi.spacing_vec == nullptr ) ? 0 : fi.spacing_vec ->size ();
203
- if (fwrite (&vec_size, sizeof ( vec_size), 1 , f) != 1 ) return false ;
199
+ if (! tesseract::Serialize (f, & vec_size)) return false ;
204
200
int16_t x_gap_invalid = -1 ;
205
201
for (int i = 0 ; i < vec_size; ++i) {
206
202
FontSpacingInfo *fs = fi.spacing_vec ->get (i);
207
203
int32_t kern_size = (fs == nullptr ) ? -1 : fs->kerned_x_gaps .size ();
208
204
if (fs == nullptr ) {
209
- // Valid to have the identical fwrites. Writing invalid x-gaps.
210
- if (fwrite (&(x_gap_invalid), sizeof (x_gap_invalid), 1 , f) != 1 ||
211
- fwrite (&(x_gap_invalid), sizeof (x_gap_invalid), 1 , f) != 1 ||
212
- fwrite (&kern_size, sizeof (kern_size), 1 , f) != 1 ) {
205
+ // Writing two invalid x-gaps.
206
+ if (!tesseract::Serialize (f, &x_gap_invalid, 2 ) ||
207
+ !tesseract::Serialize (f, &kern_size)) {
213
208
return false ;
214
209
}
215
210
} else {
216
- if (fwrite (&(fs-> x_gap_before ), sizeof ( fs->x_gap_before ), 1 , f) != 1 ||
217
- fwrite (&(fs-> x_gap_after ), sizeof ( fs->x_gap_after ), 1 , f) != 1 ||
218
- fwrite (&kern_size, sizeof ( kern_size), 1 , f) != 1 ) {
211
+ if (! tesseract::Serialize (f, & fs->x_gap_before ) ||
212
+ ! tesseract::Serialize (f, & fs->x_gap_after ) ||
213
+ ! tesseract::Serialize (f, & kern_size)) {
219
214
return false ;
220
215
}
221
216
}
@@ -228,19 +223,14 @@ bool write_spacing_info(FILE* f, const FontInfo& fi) {
228
223
}
229
224
230
225
bool read_set (TFile* f, FontSet* fs) {
231
- if (f->FReadEndian (&fs->size , sizeof (fs-> size ), 1 ) != 1 ) return false ;
226
+ if (! f->DeSerialize (&fs->size ) ) return false ;
232
227
fs->configs = new int [fs->size ];
233
- if (f->FReadEndian (fs->configs , sizeof (fs->configs [0 ]), fs->size ) != fs->size )
234
- return false ;
235
- return true ;
228
+ return f->DeSerialize (&fs->configs [0 ], fs->size );
236
229
}
237
230
238
231
bool write_set (FILE* f, const FontSet& fs) {
239
- if (fwrite (&fs.size , sizeof (fs.size ), 1 , f) != 1 ) return false ;
240
- for (int i = 0 ; i < fs.size ; ++i) {
241
- if (fwrite (&fs.configs [i], sizeof (fs.configs [i]), 1 , f) != 1 ) return false ;
242
- }
243
- return true ;
232
+ return tesseract::Serialize (f, &fs.size ) &&
233
+ tesseract::Serialize (f, &fs.configs [0 ], fs.size );
244
234
}
245
235
246
236
} // namespace tesseract.
0 commit comments