90 lines
2.9 KiB
C++
90 lines
2.9 KiB
C++
/*
|
|
* 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_LIBXMLPLUGIN__
|
|
#define __DAE_LIBXMLPLUGIN__
|
|
|
|
#include <vector>
|
|
#include <dae/daeElement.h>
|
|
#include <dae/daeURI.h>
|
|
#include <dae/daeIOPluginCommon.h>
|
|
|
|
struct _xmlTextReader;
|
|
struct _xmlTextWriter;
|
|
class DAE;
|
|
|
|
/**
|
|
* The @c daeLIBXMLPlugin class derives from @c daeIOPluginCommon and implements an XML
|
|
* input/output backend using libxml2 as a parser. When using this plugin, DAE::load() expects
|
|
* an rfc 2396 compliant URI, any URI supported by libxml2 should be properly
|
|
* handled including ones with network schemes and authority. If the URI contains a fragment it will be ignored
|
|
* and the entire referenced document will be loaded. DAE::saveAs will only
|
|
* handle a filename path at present (ie: no scheme or authority).
|
|
*/
|
|
class DLLSPEC daeLIBXMLPlugin : public daeIOPluginCommon
|
|
{
|
|
public:
|
|
// Constructor / destructor
|
|
/**
|
|
* Constructor.
|
|
*/
|
|
daeLIBXMLPlugin(DAE& dae);
|
|
/**
|
|
* Destructor.
|
|
*/
|
|
virtual ~daeLIBXMLPlugin();
|
|
|
|
// Operations
|
|
virtual daeInt write(const daeURI& name, daeDocument *document, daeBool replace);
|
|
|
|
/**
|
|
* setOption allows you to set options for this IOPlugin. Which options a plugin supports is
|
|
* dependent on the plugin itself. There is currently no list of options that plugins are
|
|
* suggested to implement. daeLibXML2Plugin supports only one option, "saveRawBinary". Set to
|
|
* "true" to save float_array data as a .raw binary file. The daeRawResolver will convert the
|
|
* data back into COLLADA domFloat_array elements upon load.
|
|
* @param option The option to set.
|
|
* @param value The value to set the option.
|
|
* @return Returns DAE_OK upon success.
|
|
*/
|
|
virtual daeInt setOption( daeString option, daeString value );
|
|
|
|
/**
|
|
* getOption retrieves the value of an option from this IOPlugin. Which options a plugin supports is
|
|
* dependent on the plugin itself.
|
|
* @param option The option to get.
|
|
* @return Returns the string value of the option or NULL if option is not valid.
|
|
*/
|
|
virtual daeString getOption( daeString option );
|
|
|
|
private:
|
|
DAE& dae;
|
|
|
|
_xmlTextWriter *writer;
|
|
|
|
FILE *rawFile;
|
|
unsigned long rawByteCount;
|
|
daeURI rawRelPath;
|
|
bool saveRawFile;
|
|
|
|
virtual daeElementRef readFromFile(const daeURI& uri);
|
|
virtual daeElementRef readFromMemory(daeString buffer, const daeURI& baseUri);
|
|
daeElementRef read(_xmlTextReader* reader);
|
|
daeElementRef readElement(_xmlTextReader* reader,
|
|
daeElement* parentElement,
|
|
/* out */ int& readRetVal);
|
|
|
|
void writeElement( daeElement* element );
|
|
void writeAttribute( daeMetaAttribute* attr, daeElement* element);
|
|
void writeValue(daeElement* element);
|
|
|
|
void writeRawSource( daeElement* src );
|
|
};
|
|
|
|
#endif //__DAE_LIBXMLPLUGIN__
|