Mercurial > hg > sonic-visualiser
diff document/SVFileReader.cpp @ 186:7b943924b8d3
* Phase 1 of an image layer.
author | Chris Cannam |
---|---|
date | Thu, 04 Oct 2007 16:34:11 +0000 |
parents | ebd906049fb6 |
children | c08c312b2399 |
line wrap: on
line diff
--- a/document/SVFileReader.cpp Thu Oct 04 11:52:38 2007 +0000 +++ b/document/SVFileReader.cpp Thu Oct 04 16:34:11 2007 +0000 @@ -30,6 +30,7 @@ #include "data/model/SparseTimeValueModel.h" #include "data/model/NoteModel.h" #include "data/model/TextModel.h" +#include "data/model/ImageModel.h" #include "view/Pane.h" @@ -493,10 +494,21 @@ READ_MANDATORY(int, resolution, toInt); - SparseOneDimensionalModel *model = new SparseOneDimensionalModel - (sampleRate, resolution); - model->setObjectName(name); - m_models[id] = model; + if (attributes.value("subtype") == "image") { + + bool notifyOnAdd = (attributes.value("notifyOnAdd") == "true"); + ImageModel *model = new ImageModel(sampleRate, resolution, + notifyOnAdd); + model->setObjectName(name); + m_models[id] = model; + + } else { + + SparseOneDimensionalModel *model = new SparseOneDimensionalModel + (sampleRate, resolution); + model->setObjectName(name); + m_models[id] = model; + } int dataset = attributes.value("dataset").trimmed().toInt(&ok); if (ok) m_awaitingDatasets[dataset] = id; @@ -779,6 +791,7 @@ switch (dimensions) { case 1: if (dynamic_cast<SparseOneDimensionalModel *>(model)) good = true; + else if (dynamic_cast<ImageModel *>(model)) good = true; break; case 2: @@ -796,7 +809,7 @@ } if (!good) { - std::cerr << "WARNING: SV-XML: Model id " << modelId << " has wrong number of dimensions for " << dimensions << "-D dataset " << id << std::endl; + std::cerr << "WARNING: SV-XML: Model id " << modelId << " has wrong number of dimensions or inappropriate type for " << dimensions << "-D dataset " << id << std::endl; m_currentDataset = 0; return false; } @@ -861,6 +874,17 @@ return ok; } + ImageModel *im = dynamic_cast<ImageModel *>(m_currentDataset); + + if (im) { +// std::cerr << "Current dataset is an image model" << std::endl; + QString image = attributes.value("image"); + QString label = attributes.value("label"); +// std::cerr << "SVFileReader::addPointToDataset: ImageModel: frame = " << frame << ", image = " << image.toStdString() << ", label = " << label.toStdString() << ", ok = " << ok << std::endl; + im->addPoint(ImageModel::Point(frame, image, label)); + return ok; + } + std::cerr << "WARNING: SV-XML: Point element found in non-point dataset" << std::endl; return false;