annotate base/Layer.cpp @ 36:935a2419a77c

* Refactor Layer classes so as no longer to store a single View pointer; instead they need to be able to draw themselves on any View on demand. Layers with caches (e.g. spectrogram) will need to be further refactored so as to maintain a per-View cache * Begin refactoring MainWindow by pulling out the document stuff (set of layers, models etc) into a Document class. Not yet in use. This revision is fairly unstable.
author Chris Cannam
date Thu, 02 Mar 2006 16:58:49 +0000
parents 5e28cbb431d0
children e1a0cf2dcc79
rev   line source
Chris@0 1 /* -*- c-basic-offset: 4 -*- vi:set ts=8 sts=4 sw=4: */
Chris@0 2
Chris@0 3 /*
Chris@0 4 A waveform viewer and audio annotation editor.
Chris@2 5 Chris Cannam, Queen Mary University of London, 2005-2006
Chris@0 6
Chris@0 7 This is experimental software. Not for distribution.
Chris@0 8 */
Chris@0 9
Chris@0 10 #include "Layer.h"
Chris@0 11 #include "View.h"
Chris@0 12
Chris@0 13 #include <iostream>
Chris@0 14
Chris@3 15 #include "layer/LayerFactory.h" //!!! shouldn't be including this here -- does that suggest we need to move this into layer/ ?
Chris@28 16 #include "PlayParameterRepository.h"
Chris@3 17
Chris@36 18 Layer::Layer() :
Chris@29 19 m_dormant(false)
Chris@0 20 {
Chris@36 21 // m_view = w;
Chris@0 22
Chris@0 23 // Subclass must call this:
Chris@0 24 // w->addLayer(this);
Chris@0 25 }
Chris@0 26
Chris@0 27 Layer::~Layer()
Chris@0 28 {
Chris@36 29 // m_view->removeLayer(this);
Chris@0 30 }
Chris@0 31
Chris@12 32 QString
Chris@12 33 Layer::getPropertyContainerIconName() const
Chris@12 34 {
Chris@12 35 return LayerFactory::instance()->getLayerIconName
Chris@12 36 (LayerFactory::instance()->getLayerType(this));
Chris@12 37 }
Chris@12 38
Chris@0 39 void
Chris@0 40 Layer::setObjectName(const QString &name)
Chris@0 41 {
Chris@0 42 QObject::setObjectName(name);
Chris@0 43 emit layerNameChanged();
Chris@0 44 }
Chris@36 45 /*
Chris@15 46 int
Chris@15 47 Layer::getXForFrame(long frame) const
Chris@15 48 {
Chris@15 49 if (m_view) return m_view->getXForFrame(frame);
Chris@15 50 else return 0;
Chris@15 51 }
Chris@15 52
Chris@15 53 long
Chris@15 54 Layer::getFrameForX(int x) const
Chris@15 55 {
Chris@15 56 if (m_view) return m_view->getFrameForX(x);
Chris@15 57 else return 0;
Chris@15 58 }
Chris@36 59 */
Chris@3 60 QString
Chris@3 61 Layer::toXmlString(QString indent, QString extraAttributes) const
Chris@3 62 {
Chris@3 63 QString s;
Chris@3 64
Chris@3 65 s += indent;
Chris@3 66
Chris@6 67 s += QString("<layer id=\"%2\" type=\"%1\" name=\"%3\" model=\"%4\" %5/>\n")
Chris@3 68 .arg(LayerFactory::instance()->getLayerTypeName
Chris@3 69 (LayerFactory::instance()->getLayerType(this)))
Chris@4 70 .arg(getObjectExportId(this))
Chris@3 71 .arg(objectName())
Chris@4 72 .arg(getObjectExportId(getModel()))
Chris@3 73 .arg(extraAttributes);
Chris@3 74
Chris@3 75 return s;
Chris@3 76 }
Chris@0 77
Chris@28 78 PlayParameters *
Chris@29 79 Layer::getPlayParameters()
Chris@28 80 {
Chris@32 81 // std::cerr << "Layer (" << this << ", " << objectName().toStdString() << ")::getPlayParameters: model is "<< getModel() << std::endl;
Chris@28 82 const Model *model = getModel();
Chris@28 83 if (model) {
Chris@28 84 return PlayParameterRepository::instance()->getPlayParameters(model);
Chris@28 85 }
Chris@28 86 return 0;
Chris@28 87 }
Chris@28 88
Chris@29 89 void
Chris@36 90 Layer::showLayer(View *view, bool show)
Chris@29 91 {
Chris@36 92 setLayerDormant(view, !show);
Chris@29 93 emit layerParametersChanged();
Chris@29 94 }
Chris@28 95
Chris@28 96
Chris@0 97 #ifdef INCLUDE_MOCFILES
Chris@0 98 #include "Layer.moc.cpp"
Chris@0 99 #endif
Chris@0 100