@@ -166,6 +166,7 @@ bool ImageData::Serialize(TFile* fp) const {
166
166
if (!imagefilename_.Serialize (fp)) return false ;
167
167
if (fp->FWrite (&page_number_, sizeof (page_number_), 1 ) != 1 ) return false ;
168
168
if (!image_data_.Serialize (fp)) return false ;
169
+ if (!language_.Serialize (fp)) return false ;
169
170
if (!transcription_.Serialize (fp)) return false ;
170
171
// WARNING: Will not work across different endian machines.
171
172
if (!boxes_.Serialize (fp)) return false ;
@@ -177,30 +178,32 @@ bool ImageData::Serialize(TFile* fp) const {
177
178
178
179
// Reads from the given file. Returns false in case of error.
179
180
// If swap is true, assumes a big/little-endian swap is needed.
180
- bool ImageData::DeSerialize (bool swap, TFile* fp) {
181
- if (!imagefilename_.DeSerialize (swap, fp)) return false ;
182
- if (fp->FRead (&page_number_, sizeof (page_number_), 1 ) != 1 ) return false ;
183
- if (swap) ReverseN (&page_number_, sizeof (page_number_));
184
- if (!image_data_.DeSerialize (swap, fp)) return false ;
185
- if (!transcription_.DeSerialize (swap, fp)) return false ;
181
+ bool ImageData::DeSerialize (TFile* fp) {
182
+ if (!imagefilename_.DeSerialize (fp)) return false ;
183
+ if (fp->FReadEndian (&page_number_, sizeof (page_number_), 1 ) != 1 )
184
+ return false ;
185
+ if (!image_data_.DeSerialize (fp)) return false ;
186
+ if (!language_.DeSerialize (fp)) return false ;
187
+ if (!transcription_.DeSerialize (fp)) return false ;
186
188
// WARNING: Will not work across different endian machines.
187
- if (!boxes_.DeSerialize (swap, fp)) return false ;
188
- if (!box_texts_.DeSerializeClasses (swap, fp)) return false ;
189
+ if (!boxes_.DeSerialize (fp)) return false ;
190
+ if (!box_texts_.DeSerializeClasses (fp)) return false ;
189
191
inT8 vertical = 0 ;
190
192
if (fp->FRead (&vertical, sizeof (vertical), 1 ) != 1 ) return false ;
191
193
vertical_text_ = vertical != 0 ;
192
194
return true ;
193
195
}
194
196
195
197
// As DeSerialize, but only seeks past the data - hence a static method.
196
- bool ImageData::SkipDeSerialize (bool swap, TFile* fp) {
197
- if (!STRING::SkipDeSerialize (swap, fp)) return false ;
198
+ bool ImageData::SkipDeSerialize (TFile* fp) {
199
+ if (!STRING::SkipDeSerialize (fp)) return false ;
198
200
inT32 page_number;
199
201
if (fp->FRead (&page_number, sizeof (page_number), 1 ) != 1 ) return false ;
200
- if (!GenericVector<char >::SkipDeSerialize (swap, fp)) return false ;
201
- if (!STRING::SkipDeSerialize (swap, fp)) return false ;
202
- if (!GenericVector<TBOX>::SkipDeSerialize (swap, fp)) return false ;
203
- if (!GenericVector<STRING>::SkipDeSerializeClasses (swap, fp)) return false ;
202
+ if (!GenericVector<char >::SkipDeSerialize (fp)) return false ;
203
+ if (!STRING::SkipDeSerialize (fp)) return false ;
204
+ if (!STRING::SkipDeSerialize (fp)) return false ;
205
+ if (!GenericVector<TBOX>::SkipDeSerialize (fp)) return false ;
206
+ if (!GenericVector<STRING>::SkipDeSerializeClasses (fp)) return false ;
204
207
inT8 vertical = 0 ;
205
208
return fp->FRead (&vertical, sizeof (vertical), 1 ) == 1 ;
206
209
}
@@ -384,21 +387,19 @@ DocumentData::~DocumentData() {
384
387
385
388
// Reads all the pages in the given lstmf filename to the cache. The reader
386
389
// is used to read the file.
387
- bool DocumentData::LoadDocument (const char * filename, const char * lang,
388
- int start_page, inT64 max_memory,
389
- FileReader reader) {
390
- SetDocument (filename, lang, max_memory, reader);
390
+ bool DocumentData::LoadDocument (const char * filename, int start_page,
391
+ inT64 max_memory, FileReader reader) {
392
+ SetDocument (filename, max_memory, reader);
391
393
pages_offset_ = start_page;
392
394
return ReCachePages ();
393
395
}
394
396
395
397
// Sets up the document, without actually loading it.
396
- void DocumentData::SetDocument (const char * filename, const char * lang ,
397
- inT64 max_memory, FileReader reader) {
398
+ void DocumentData::SetDocument (const char * filename, inT64 max_memory ,
399
+ FileReader reader) {
398
400
SVAutoLock lock_p (&pages_mutex_);
399
401
SVAutoLock lock (&general_mutex_);
400
402
document_name_ = filename;
401
- lang_ = lang;
402
403
pages_offset_ = -1 ;
403
404
max_memory_ = max_memory;
404
405
reader_ = reader;
@@ -522,7 +523,7 @@ bool DocumentData::ReCachePages() {
522
523
pages_.truncate (0 );
523
524
TFile fp;
524
525
if (!fp.Open (document_name_, reader_) ||
525
- !PointerVector<ImageData>::DeSerializeSize (false , &fp, &loaded_pages) ||
526
+ !PointerVector<ImageData>::DeSerializeSize (&fp, &loaded_pages) ||
526
527
loaded_pages <= 0 ) {
527
528
tprintf (" Deserialize header failed: %s\n " , document_name_.string ());
528
529
return false ;
@@ -534,15 +535,17 @@ bool DocumentData::ReCachePages() {
534
535
for (page = 0 ; page < loaded_pages; ++page) {
535
536
if (page < pages_offset_ ||
536
537
(max_memory_ > 0 && memory_used () > max_memory_)) {
537
- if (!PointerVector<ImageData>::DeSerializeSkip (false , &fp)) break ;
538
+ if (!PointerVector<ImageData>::DeSerializeSkip (&fp)) {
539
+ tprintf (" Deserializeskip failed\n " );
540
+ break ;
541
+ }
538
542
} else {
539
- if (!pages_.DeSerializeElement (false , &fp)) break ;
543
+ if (!pages_.DeSerializeElement (&fp)) break ;
540
544
ImageData* image_data = pages_.back ();
541
545
if (image_data->imagefilename ().length () == 0 ) {
542
546
image_data->set_imagefilename (document_name_);
543
547
image_data->set_page_number (page);
544
548
}
545
- image_data->set_language (lang_);
546
549
set_memory_used (memory_used () + image_data->MemoryUsed ());
547
550
}
548
551
}
@@ -567,7 +570,6 @@ DocumentCache::~DocumentCache() {}
567
570
// Adds all the documents in the list of filenames, counting memory.
568
571
// The reader is used to read the files.
569
572
bool DocumentCache::LoadDocuments (const GenericVector<STRING>& filenames,
570
- const char * lang,
571
573
CachingStrategy cache_strategy,
572
574
FileReader reader) {
573
575
cache_strategy_ = cache_strategy;
@@ -580,7 +582,7 @@ bool DocumentCache::LoadDocuments(const GenericVector<STRING>& filenames,
580
582
for (int arg = 0 ; arg < filenames.size (); ++arg) {
581
583
STRING filename = filenames[arg];
582
584
DocumentData* document = new DocumentData (filename);
583
- document->SetDocument (filename.string (), lang, fair_share_memory, reader);
585
+ document->SetDocument (filename.string (), fair_share_memory, reader);
584
586
AddToCache (document);
585
587
}
586
588
if (!documents_.empty ()) {
0 commit comments