svapp
1.9
|
SVFileReader loads Sonic Visualiser XML files. More...
#include <SVFileReader.h>
Public Types | |
enum | FileType { SVSessionFile, SVLayerFile, UnknownFileType } |
Signals | |
void | modelRegenerationFailed (QString layerName, QString transformName, QString message) |
void | modelRegenerationWarning (QString layerName, QString transformName, QString message) |
Public Member Functions | |
SVFileReader (Document *document, SVFileReaderPaneCallback &callback, QString location="") | |
virtual | ~SVFileReader () |
void | parse (const QString &xmlData) |
void | parse (QXmlInputSource &source) |
bool | isOK () |
QString | getErrorString () const |
void | setCurrentPane (Pane *pane) |
virtual bool | startElement (const QString &namespaceURI, const QString &localName, const QString &qName, const QXmlAttributes &atts) |
virtual bool | characters (const QString &) |
virtual bool | endElement (const QString &namespaceURI, const QString &localName, const QString &qName) |
bool | error (const QXmlParseException &exception) |
bool | fatalError (const QXmlParseException &exception) |
Static Public Member Functions | |
static FileType | identifyXmlFile (QString path) |
Protected Member Functions | |
bool | readWindow (const QXmlAttributes &) |
bool | readModel (const QXmlAttributes &) |
bool | readView (const QXmlAttributes &) |
bool | readLayer (const QXmlAttributes &) |
bool | readDatasetStart (const QXmlAttributes &) |
bool | addBinToDataset (const QXmlAttributes &) |
bool | addPointToDataset (const QXmlAttributes &) |
bool | addRowToDataset (const QXmlAttributes &) |
bool | readRowData (const QString &) |
bool | readDerivation (const QXmlAttributes &) |
bool | readPlayParameters (const QXmlAttributes &) |
bool | readPlugin (const QXmlAttributes &) |
bool | readPluginForTransform (const QXmlAttributes &) |
bool | readPluginForPlayback (const QXmlAttributes &) |
bool | readTransform (const QXmlAttributes &) |
bool | readParameter (const QXmlAttributes &) |
bool | readSelection (const QXmlAttributes &) |
bool | readMeasurement (const QXmlAttributes &) |
void | addUnaddedModels () |
bool | haveModel (int id) |
Protected Attributes | |
Document * | m_document |
SVFileReaderPaneCallback & | m_paneCallback |
QString | m_location |
Pane * | m_currentPane |
std::map< int, Layer * > | m_layers |
std::map< int, Model * > | m_models |
std::set< Model * > | m_addedModels |
std::map< int, int > | m_awaitingDatasets |
Layer * | m_currentLayer |
Model * | m_currentDataset |
Model * | m_currentDerivedModel |
int | m_currentDerivedModelId |
PlayParameters * | m_currentPlayParameters |
Transform | m_currentTransform |
Model * | m_currentTransformSource |
int | m_currentTransformChannel |
bool | m_currentTransformIsNewStyle |
QString | m_datasetSeparator |
bool | m_inRow |
bool | m_inLayer |
bool | m_inView |
bool | m_inData |
bool | m_inSelections |
int | m_rowNumber |
QString | m_errorString |
bool | m_ok |
SVFileReader loads Sonic Visualiser XML files.
(The SV file format is bzipped XML.)
Some notes about the SV XML format follow. We're very lazy with our XML: there's no schema or DTD, and we depend heavily on elements being in a particular order.
<sv> <data> <!-- The data section contains definitions of both models and visual layers. Layers are considered data in the document; the structure of views that displays the layers is not. --> <!-- id numbers are unique within the data type (i.e. no two models can have the same id, but a model can have the same id as a layer, etc). SV generates its id numbers just for the purpose of cross-referencing within the current file; they don't necessarily have any meaning once the file has been loaded. --> <model id="0" name="..." type="..." ... /> <model id="1" name="..." type="..." ... /> <!-- Models that have data associated with them store it in a neighbouring dataset element. The dataset must follow the model and precede any derivation or layer elements that refer to the model. --> <model id="2" name="..." type="..." dataset="0" ... /> <dataset id="0" type="..."> <point frame="..." value="..." ... /> </dataset> <!-- Where one model is derived from another via a transform, it has an associated derivation element. This must follow both the source and target model elements. The source and model attributes give the source model id and target model id respectively. A model can have both dataset and derivation elements; if it does, dataset must appear first. If the model's data are not stored, but instead the model is to be regenerated completely from the transform when the session is reloaded, then the model should have _only_ a derivation element, and no model element should appear for it at all. --> <derivation type="transform" source="0" model="2" channel="-1"> <transform id="vamp:soname:pluginid:output" ... /> </derivation> <!-- Note that the derivation element just described replaces this earlier formulation, which had more attributes in the derivation element and a plugin element describing plugin parameters and properties. What we actually read and write these days is a horrid composite of the two formats, for backward compatibility reasons. --> <derivation source="0" model="2" transform="vamp:soname:pluginid:output" ...> <plugin id="pluginid" ... /> </derivation> <!-- The playparameters element lists playback settings for a model. --> <playparameters mute="false" pan="0" gain="1" model="1" ... /> <!-- Layer elements. The models must have already been defined. The same model may appear in more than one layer (of more than one type). --> <layer id="1" type="..." name="..." model="0" ... /> <layer id="2" type="..." name="..." model="1" ... /> </data> <display> <!-- The display element contains visual structure for the layers. It's simpler than the data section. --> <!-- Overall preferred window size for this session. --> <window width="..." height="..."/> <!-- List of view elements to stack up. Each one contains a list of layers in stacking order, back to front. --> <view type="pane" ...> <layer id="1"/> <layer id="2"/> </view> <!-- The layer elements just refer to layers defined in the data section, so they don't have to have any attributes other than the id. For sort-of-historical reasons SV actually does repeat the other attributes here, but it doesn't need to. --> <view type="pane" ...> <layer id="2"/> <view> </display> <!-- List of selected regions by audio frame extents. --> <selections> <selection start="..." end="..."/> </selections> </sv>
Definition at line 164 of file SVFileReader.h.
Definition at line 197 of file SVFileReader.h.
SVFileReader::SVFileReader | ( | Document * | document, |
SVFileReaderPaneCallback & | callback, | ||
QString | location = "" |
||
) |
Definition at line 54 of file SVFileReader.cpp.
SVFileReader::~SVFileReader | ( | ) | [virtual] |
Definition at line 103 of file SVFileReader.cpp.
References m_addedModels, m_awaitingDatasets, and m_models.
void SVFileReader::parse | ( | const QString & | xmlData | ) |
Definition at line 81 of file SVFileReader.cpp.
void SVFileReader::parse | ( | QXmlInputSource & | source | ) |
Definition at line 89 of file SVFileReader.cpp.
References m_ok.
bool SVFileReader::isOK | ( | ) |
Definition at line 98 of file SVFileReader.cpp.
References m_ok.
QString SVFileReader::getErrorString | ( | ) | const [inline] |
Definition at line 178 of file SVFileReader.h.
References m_errorString.
void SVFileReader::setCurrentPane | ( | Pane * | pane | ) | [inline] |
Definition at line 181 of file SVFileReader.h.
References m_currentPane.
bool SVFileReader::startElement | ( | const QString & | namespaceURI, |
const QString & | localName, | ||
const QString & | qName, | ||
const QXmlAttributes & | atts | ||
) | [virtual] |
Definition at line 132 of file SVFileReader.cpp.
References addBinToDataset(), addPointToDataset(), addRowToDataset(), addUnaddedModels(), m_inData, m_inSelections, m_inView, readDatasetStart(), readDerivation(), readLayer(), readMeasurement(), readModel(), readParameter(), readPlayParameters(), readPlugin(), readSelection(), readTransform(), readView(), and readWindow().
bool SVFileReader::characters | ( | const QString & | text | ) | [virtual] |
Definition at line 257 of file SVFileReader.cpp.
References m_inRow, m_rowNumber, and readRowData().
bool SVFileReader::endElement | ( | const QString & | namespaceURI, |
const QString & | localName, | ||
const QString & | qName | ||
) | [virtual] |
Definition at line 272 of file SVFileReader.cpp.
References Document::addAlreadyDerivedModel(), Document::addDerivedModel(), addUnaddedModels(), haveModel(), m_addedModels, m_awaitingDatasets, m_currentDataset, m_currentDerivedModel, m_currentDerivedModelId, m_currentPlayParameters, m_currentTransform, m_currentTransformChannel, m_currentTransformSource, m_document, m_inData, m_inLayer, m_inRow, m_inSelections, m_inView, m_models, modelRegenerationFailed(), and modelRegenerationWarning().
bool SVFileReader::error | ( | const QXmlParseException & | exception | ) |
Definition at line 364 of file SVFileReader.cpp.
References m_errorString.
bool SVFileReader::fatalError | ( | const QXmlParseException & | exception | ) |
Definition at line 376 of file SVFileReader.cpp.
References m_errorString.
SVFileReader::FileType SVFileReader::identifyXmlFile | ( | QString | path | ) | [static] |
Definition at line 1537 of file SVFileReader.cpp.
References SVFileIdentifier::getType(), and SVFileIdentifier::parse().
Referenced by MainWindowBase::openLayer(), and MainWindowBase::openSession().
void SVFileReader::modelRegenerationFailed | ( | QString | layerName, |
QString | transformName, | ||
QString | message | ||
) | [signal] |
Referenced by endElement().
void SVFileReader::modelRegenerationWarning | ( | QString | layerName, |
QString | transformName, | ||
QString | message | ||
) | [signal] |
Referenced by endElement().
bool SVFileReader::readWindow | ( | const QXmlAttributes & | attributes | ) | [protected] |
Definition at line 396 of file SVFileReader.cpp.
References m_paneCallback, READ_MANDATORY, and SVFileReaderPaneCallback::setWindowSize().
Referenced by startElement().
bool SVFileReader::readModel | ( | const QXmlAttributes & | attributes | ) | [protected] |
Definition at line 437 of file SVFileReader.cpp.
References Document::getMainModel(), haveModel(), m_addedModels, m_awaitingDatasets, m_document, m_location, m_models, READ_MANDATORY, and Document::setMainModel().
Referenced by startElement().
bool SVFileReader::readView | ( | const QXmlAttributes & | attributes | ) | [protected] |
Definition at line 738 of file SVFileReader.cpp.
References SVFileReaderPaneCallback::addPane(), m_currentPane, m_paneCallback, and READ_MANDATORY.
Referenced by startElement().
bool SVFileReader::readLayer | ( | const QXmlAttributes & | attributes | ) | [protected] |
Definition at line 796 of file SVFileReader.cpp.
References Document::addLayerToView(), Document::createLayer(), haveModel(), m_currentLayer, m_currentPane, m_document, m_inData, m_inLayer, m_layers, m_models, and Document::setModel().
Referenced by startElement().
bool SVFileReader::readDatasetStart | ( | const QXmlAttributes & | attributes | ) | [protected] |
Definition at line 921 of file SVFileReader.cpp.
References haveModel(), m_awaitingDatasets, m_currentDataset, m_datasetSeparator, m_models, and READ_MANDATORY.
Referenced by startElement().
bool SVFileReader::addBinToDataset | ( | const QXmlAttributes & | attributes | ) | [protected] |
Definition at line 1098 of file SVFileReader.cpp.
References m_currentDataset.
Referenced by startElement().
bool SVFileReader::addPointToDataset | ( | const QXmlAttributes & | attributes | ) | [protected] |
Definition at line 980 of file SVFileReader.cpp.
References m_currentDataset, and READ_MANDATORY.
Referenced by startElement().
bool SVFileReader::addRowToDataset | ( | const QXmlAttributes & | attributes | ) | [protected] |
Definition at line 1127 of file SVFileReader.cpp.
References m_inRow, and m_rowNumber.
Referenced by startElement().
bool SVFileReader::readRowData | ( | const QString & | text | ) | [protected] |
Definition at line 1147 of file SVFileReader.cpp.
References m_currentDataset, m_datasetSeparator, and m_rowNumber.
Referenced by characters().
bool SVFileReader::readDerivation | ( | const QXmlAttributes & | attributes | ) | [protected] |
Definition at line 1191 of file SVFileReader.cpp.
References Document::getMainModel(), haveModel(), m_currentDerivedModel, m_currentDerivedModelId, m_currentTransform, m_currentTransformChannel, m_currentTransformIsNewStyle, m_currentTransformSource, m_document, and m_models.
Referenced by startElement().
bool SVFileReader::readPlayParameters | ( | const QXmlAttributes & | attributes | ) | [protected] |
Definition at line 1281 of file SVFileReader.cpp.
References haveModel(), m_currentPlayParameters, and m_models.
Referenced by startElement().
bool SVFileReader::readPlugin | ( | const QXmlAttributes & | attributes | ) | [protected] |
Definition at line 1336 of file SVFileReader.cpp.
References m_currentDerivedModelId, m_currentPlayParameters, readPluginForPlayback(), and readPluginForTransform().
Referenced by startElement().
bool SVFileReader::readPluginForTransform | ( | const QXmlAttributes & | attributes | ) | [protected] |
Definition at line 1349 of file SVFileReader.cpp.
References m_currentTransform, and m_currentTransformIsNewStyle.
Referenced by readPlugin().
bool SVFileReader::readPluginForPlayback | ( | const QXmlAttributes & | attributes | ) | [protected] |
Definition at line 1373 of file SVFileReader.cpp.
References m_currentPlayParameters.
Referenced by readPlugin().
bool SVFileReader::readTransform | ( | const QXmlAttributes & | attributes | ) | [protected] |
Definition at line 1387 of file SVFileReader.cpp.
References m_currentDerivedModelId, and m_currentTransform.
Referenced by startElement().
bool SVFileReader::readParameter | ( | const QXmlAttributes & | attributes | ) | [protected] |
Definition at line 1400 of file SVFileReader.cpp.
References m_currentDerivedModelId, and m_currentTransform.
Referenced by startElement().
bool SVFileReader::readSelection | ( | const QXmlAttributes & | attributes | ) | [protected] |
Definition at line 1421 of file SVFileReader.cpp.
References SVFileReaderPaneCallback::addSelection(), m_paneCallback, and READ_MANDATORY.
Referenced by startElement().
bool SVFileReader::readMeasurement | ( | const QXmlAttributes & | attributes | ) | [protected] |
Definition at line 1434 of file SVFileReader.cpp.
References m_currentLayer, and m_inLayer.
Referenced by startElement().
void SVFileReader::addUnaddedModels | ( | ) | [protected] |
Definition at line 408 of file SVFileReader.cpp.
References Document::addImportedModel(), m_addedModels, m_document, and m_models.
Referenced by endElement(), and startElement().
bool SVFileReader::haveModel | ( | int | id | ) | [inline, protected] |
Definition at line 233 of file SVFileReader.h.
References m_models.
Referenced by endElement(), readDatasetStart(), readDerivation(), readLayer(), readModel(), and readPlayParameters().
Document* SVFileReader::m_document [protected] |
Definition at line 237 of file SVFileReader.h.
Referenced by addUnaddedModels(), endElement(), readDerivation(), readLayer(), and readModel().
SVFileReaderPaneCallback& SVFileReader::m_paneCallback [protected] |
Definition at line 238 of file SVFileReader.h.
Referenced by readSelection(), readView(), and readWindow().
QString SVFileReader::m_location [protected] |
Definition at line 239 of file SVFileReader.h.
Referenced by readModel().
Pane* SVFileReader::m_currentPane [protected] |
Definition at line 240 of file SVFileReader.h.
Referenced by readLayer(), readView(), and setCurrentPane().
std::map<int, Layer *> SVFileReader::m_layers [protected] |
Definition at line 241 of file SVFileReader.h.
Referenced by readLayer().
std::map<int, Model *> SVFileReader::m_models [protected] |
Definition at line 242 of file SVFileReader.h.
Referenced by addUnaddedModels(), endElement(), haveModel(), readDatasetStart(), readDerivation(), readLayer(), readModel(), readPlayParameters(), and ~SVFileReader().
std::set<Model *> SVFileReader::m_addedModels [protected] |
Definition at line 243 of file SVFileReader.h.
Referenced by addUnaddedModels(), endElement(), readModel(), and ~SVFileReader().
std::map<int, int> SVFileReader::m_awaitingDatasets [protected] |
Definition at line 244 of file SVFileReader.h.
Referenced by endElement(), readDatasetStart(), readModel(), and ~SVFileReader().
Layer* SVFileReader::m_currentLayer [protected] |
Definition at line 245 of file SVFileReader.h.
Referenced by readLayer(), and readMeasurement().
Model* SVFileReader::m_currentDataset [protected] |
Definition at line 246 of file SVFileReader.h.
Referenced by addBinToDataset(), addPointToDataset(), endElement(), readDatasetStart(), and readRowData().
Model* SVFileReader::m_currentDerivedModel [protected] |
Definition at line 247 of file SVFileReader.h.
Referenced by endElement(), and readDerivation().
int SVFileReader::m_currentDerivedModelId [protected] |
Definition at line 248 of file SVFileReader.h.
Referenced by endElement(), readDerivation(), readParameter(), readPlugin(), and readTransform().
PlayParameters* SVFileReader::m_currentPlayParameters [protected] |
Definition at line 249 of file SVFileReader.h.
Referenced by endElement(), readPlayParameters(), readPlugin(), and readPluginForPlayback().
Transform SVFileReader::m_currentTransform [protected] |
Definition at line 250 of file SVFileReader.h.
Referenced by endElement(), readDerivation(), readParameter(), readPluginForTransform(), and readTransform().
Model* SVFileReader::m_currentTransformSource [protected] |
Definition at line 251 of file SVFileReader.h.
Referenced by endElement(), and readDerivation().
int SVFileReader::m_currentTransformChannel [protected] |
Definition at line 252 of file SVFileReader.h.
Referenced by endElement(), and readDerivation().
bool SVFileReader::m_currentTransformIsNewStyle [protected] |
Definition at line 253 of file SVFileReader.h.
Referenced by readDerivation(), and readPluginForTransform().
QString SVFileReader::m_datasetSeparator [protected] |
Definition at line 254 of file SVFileReader.h.
Referenced by readDatasetStart(), and readRowData().
bool SVFileReader::m_inRow [protected] |
Definition at line 255 of file SVFileReader.h.
Referenced by addRowToDataset(), characters(), and endElement().
bool SVFileReader::m_inLayer [protected] |
Definition at line 256 of file SVFileReader.h.
Referenced by endElement(), readLayer(), and readMeasurement().
bool SVFileReader::m_inView [protected] |
Definition at line 257 of file SVFileReader.h.
Referenced by endElement(), and startElement().
bool SVFileReader::m_inData [protected] |
Definition at line 258 of file SVFileReader.h.
Referenced by endElement(), readLayer(), and startElement().
bool SVFileReader::m_inSelections [protected] |
Definition at line 259 of file SVFileReader.h.
Referenced by endElement(), and startElement().
int SVFileReader::m_rowNumber [protected] |
Definition at line 260 of file SVFileReader.h.
Referenced by addRowToDataset(), characters(), and readRowData().
QString SVFileReader::m_errorString [protected] |
Definition at line 261 of file SVFileReader.h.
Referenced by error(), fatalError(), and getErrorString().
bool SVFileReader::m_ok [protected] |
Definition at line 262 of file SVFileReader.h.