00001
00004
00005
00006
00007 #ifndef _djv_document_h_
00008 #define _djv_document_h_
00009
00010 #include "cel_storage.h"
00011 #include "djv_chunks.h"
00012 #include "djv_common.h"
00013 #include "djv_annotation.h"
00014 #include "djv_bookmark.h"
00015 #include "djv_storagelocator.h"
00016 #include "djv_serialize.h"
00017
00018 namespace Celartem
00019 {
00020 class CredentialProvider;
00021
00022 namespace DjVu
00023 {
00024 class Page;
00025 class SecurityProvider;
00026 class SecurityProviderBroker;
00027
00033 class Document : public Referable
00034 {
00035 public:
00036 typedef SimpleArray<AutoPtr<Page> > PageArray;
00037
00043 static AutoPtr<Document> create();
00044
00058 static AutoPtr<Document> create(
00059 Chunk* inChunk,
00060 IFF::Layout* inLayout = NULL);
00061
00088 static AutoPtr<Document> create(
00089 Storage* inStorage,
00090 CredentialProvider* inCredProv = NULL,
00091 SecurityProviderBroker* inSecProvBroker = NULL,
00092 bool inRecoverErrors = false);
00093
00120 static AutoPtr<Document> create(
00121 const String& inUrlOrFileName,
00122 CredentialProvider* inCredProv = NULL,
00123 SecurityProviderBroker* inSecProvBroker = NULL,
00124 bool inRecoverErrors = false);
00125
00131 virtual PageArray& getPages() = 0;
00132
00138 virtual const PageArray& getPages() const = 0;
00139
00150 virtual Bookmark* getBookmark() = 0;
00151
00157 virtual const Bookmark* getBookmark() const = 0;
00158
00167 virtual const SecurityProvider* getSecurityProvider() const = 0;
00168
00188 virtual void save(
00189 const String& inFileName,
00190 const SecurityProvider* inSecProv = NULL,
00191 IFF::SerializationCallback inCallback = NULL,
00192 void* inContext = NULL,
00193 bool inForceReflectChanges = true) const = 0;
00194
00214 virtual void save(
00215 Storage* inStorage,
00216 const SecurityProvider* inSecProv = NULL,
00217 IFF::SerializationCallback inCallback = NULL,
00218 void* inContext = NULL,
00219 bool inForceReflectChanges = true) const = 0;
00220
00241 virtual void saveAsIndirect(
00242 const String& inOutputIndexFileName,
00243 const SecurityProvider* inSecProv = NULL,
00244 IFF::SerializationCallback inCallback = NULL,
00245 void* inContext = NULL,
00246 bool inForceReflectChanges = true) const = 0;
00247
00272 virtual void saveAsIndirect(
00273 Storage* inStorage,
00274 StorageLocator* inStorageLocator = NULL,
00275 const SecurityProvider* inSecProv = NULL,
00276 IFF::SerializationCallback inCallback = NULL,
00277 void* inContext = NULL,
00278 bool inForceReflectChanges = true) const = 0;
00279
00289 virtual const Chunk* getChunk() const = 0;
00290
00300 virtual Chunk* getChunk() = 0;
00301
00305 virtual void updateChunks() = 0;
00306
00312 virtual void syncToChunks() = 0;
00313 };
00314 }
00315 }
00316
00317 #endif // _djv_document_h_