123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163 |
- /*
- * Copyright 2006 Sony Computer Entertainment Inc.
- *
- * Licensed under the MIT Open Source License, for details please see license.txt or the website
- * http://www.opensource.org/licenses/mit-license.php
- *
- */
- #ifndef __DAE_DOCUMENT__
- #define __DAE_DOCUMENT__
- #include <dae/daeTypes.h>
- #include <dae/daeElement.h>
- #include <dae/daeURI.h>
- #include <dae/daeStringRef.h>
- class DAE;
- class daeDatabase;
- /**
- * The @c daeDocument class implements a COLLADA runtime database entry.
- */
- class DLLSPEC daeDocument
- {
- public:
- /**
- * Constructor
- * @param dae The dae that owns this document.
- * @param zaeRootDocument Indicates if the new document is the root document of a ZAE archive.
- * @param extractedFileURI URI to extracted dae file.
- */
- daeDocument(DAE& dae, bool zaeRootDocument = false, const std::string& extractedFileURI = "");
- /**
- * Destructor
- */
- ~daeDocument();
- /**
- * Accessor to get the @c domCollada associated with this document.
- * @return A @c daeElementRef for the @c domCollada that is the root of this document.
- * @note This function should really return a domColladaRef,
- * but we're trying to avoid having @c dae classes depend on generated dom classes.
- */
- daeElement* getDomRoot() const {return(dom);}
- /**
- * Accessor to set the domCollada associated with this document
- * @param domRoot the domCollada that is the root of this document
- * @remarks Should really require a domColladaRef but we're trying to avoid having dae classes depend on generated dom classes.
- */
- void setDomRoot(daeElement* domRoot) {dom = domRoot; domRoot->setDocument(this); }
- /**
- * Accessor to get the URI associated with the document in this document;
- * this is currently set to the URI from which the document was loaded, but
- * is blank if the document was created with @c insertDocument().
- * @return Returns a pointer to the URI for this document.
- * @note This is the full URI of the document and not the document base URI.
- */
- daeURI* getDocumentURI() {return (&uri);}
- /**
- * Const accessor to get the URI associated with the document in this collection;
- * this is currently set to the URI from which the collection was loaded, but
- * is blank if the collection was created with @c insertCollection().
- * @return Returns a pointer to the URI for this collection.
- * @note This is the full URI of the document and not the document base URI.
- */
- const daeURI* getDocumentURI() const {return (&uri);}
- /**
- * Accessor to get the DAE that owns this document.
- * @return Returns the DAE that owns this document.
- */
- DAE* getDAE();
- /**
- * Accessor to get the database associated with this document.
- * @return Returns the database associated with this document.
- */
- daeDatabase* getDatabase();
- /**
- * This function is used to track how a document gets modified. It gets called internally.
- * @param element The element that was added to this document.
- * @note This function is called internally and not meant to be called by the client application.
- * Calling this function from the client application may result in unexpected behavior.
- */
- void insertElement( daeElementRef element );
- /**
- * This function is used to track how a document gets modified. It gets called internally.
- * @param element The element that was removed from this document.
- * @note This function is called internally and not meant to be called by the client application.
- * Calling this function from the client application may result in unexpected behavior.
- */
- void removeElement( daeElementRef element );
- /**
- * This function is used to track how a document gets modified. It gets called internally.
- * @param element The element whose ID is about to be changed.
- * @param newID The ID that is going to be assigned to the element.
- * @note This function is called internally and not meant to be called by the client application.
- * Calling this function from the client application may result in unexpected behavior.
- */
- void changeElementID( daeElementRef element, daeString newID );
- /**
- * This function is just like changeElementID, except it keeps track of sids instead of IDs.
- * @param element The element whose sid is about to be changed.
- * @param newSID The sid that is going to be assigned to the element.
- * @note This function is called internally and not meant to be called by the client application.
- * Calling this function from the client application may result in unexpected behavior.
- */
- void changeElementSID( daeElementRef element, daeString newSID );
- /**
- * Returns true if this document is the root of a ZAE archive.
- * In that case getExtractedFileURI() can be used to parse
- * this document and for URI resolving.
- * @note This function is called internally and not meant to be called by the client application.
- */
- bool isZAERootDocument() {return mZAERootDocument;}
- /**
- * If this document is the root of a ZAE archive, this method can be used
- * to get the extracted file. Return value is only valid if isZAERootDocument()
- * returns true.
- * @note This function is called internally and not meant to be called by the client application.
- */
- const daeURI& getExtractedFileURI() {return mExtractedFileURI;}
- private:
- /**
- * The DAE that owns this document. The DAE's database is notified by the document when
- * elements are inserted, removed, or have their ID changed.
- */
- DAE* dae;
- /**
- * Top Level element for of the document, always a domCollada
- * @remarks This member will eventually be taken private, use getDomRoot() to access it.
- */
- daeElementRef dom;
-
- /**
- * The URI of the document, may be blank if the document wasn't loaded from a URI
- * @remarks This member will eventually be taken private, use getDocumentURI() to access it.
- */
- daeURI uri;
- /**
- * Indicates if this document is the root of a ZAE archive.
- */
- bool mZAERootDocument;
- /**
- * URI pointing to the extracted root DAE if mZAERootDocument is true.
- * Otherwise it is not valid.
- */
- daeURI mExtractedFileURI;
- };
- typedef daeDocument daeCollection;
- #endif
|