1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116
|
/*
* Copyright (C) 1993-2006 Robert & Jeremy Laine
* See AUTHORS file for a full list of contributors.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#ifndef SAILWRITER_XML_H
#define SAILWRITER_XML_H
#include "filewriter.h"
/** This class allows you to write sailcut objects to
* an XML file.
*
* @see CSailXmlWriter
* @see CSailDefXmlWriter
*/
template <class objtype>
class XmlWriterTempl : public CFileWriter
{
protected :
/** the object's name */
QString _name;
/** the object to write */
objtype _obj;
public:
/** The constructor.
*
* @param obj the object to write
* @param name the object's name
* @param ext the file extension to show (defaults to ".xml")
* @param desc a description of the file type (defaults to "XML files")
*/
XmlWriterTempl(const objtype &obj, const QString &name,
const QString ext = ".xml", const QString desc = "XML files")
: CFileWriter(ext, desc), _name(name), _obj(obj)
{}
;
/** Write object to XML format.
*
* @param filename the file to write to
*/
virtual void write(const QString &filename)
{
CSailDoc doc;
doc.put(doc.top, _obj, _name);
doc.toFile(filename);
};
};
/** A class used to output a CSail to an XML file. */
class CSailXmlWriter : public XmlWriterTempl<CSail>
{
public:
/** The constructor.
*
* @param sail the sail to write
* @param name the sail's name
*/
CSailXmlWriter(const CSail &sail, const QString &name)
: XmlWriterTempl<CSail>(sail, name, ".sail3d", "3D sails")
{}
;
};
/** A class used to output a CSailDef to an XML file. */
class CSailDefXmlWriter : public XmlWriterTempl<CSailDef>
{
public:
/** The constructor.
*
* @param saildef the CSailDef to write
* @param name the CSailDef's name
*/
CSailDefXmlWriter(const CSailDef &saildef, const QString &name)
: XmlWriterTempl<CSailDef>(saildef, name, ".saildef", "Sail definitions")
{}
;
};
/** A class used to output a CRigDef to an XML file. */
class CRigDefXmlWriter : public XmlWriterTempl<CRigDef>
{
public:
/** The constructor.
*
* @param rigdef the CRigDef to write
* @param name the CRigDef's name
*/
CRigDefXmlWriter(const CRigDef &rigdef, const QString &name)
: XmlWriterTempl<CRigDef>(rigdef, name, ".sailrig", "Rig definitions")
{}
;
};
/** A class used to output a CPrefs to an XML file. */
typedef XmlWriterTempl<CPrefs> CPrefsXmlWriter;
#endif
|