Chris@35: /* -*- c-basic-offset: 4 -*- vi:set ts=8 sts=4 sw=4: */ Chris@35: Chris@35: /* Chris@35: A waveform viewer and audio annotation editor. Chris@35: Chris Cannam, Queen Mary University of London, 2005-2006 Chris@35: Chris@35: This is experimental software. Not for distribution. Chris@35: */ Chris@35: Chris@35: #ifndef _TEXT_LAYER_H_ Chris@35: #define _TEXT_LAYER_H_ Chris@35: Chris@35: #include "base/Layer.h" Chris@35: #include "model/TextModel.h" Chris@35: Chris@35: #include Chris@35: #include Chris@35: Chris@35: class View; Chris@35: class QPainter; Chris@35: Chris@35: class TextLayer : public Layer Chris@35: { Chris@35: Q_OBJECT Chris@35: Chris@35: public: Chris@35: TextLayer(View *w); Chris@35: Chris@35: virtual void paint(QPainter &paint, QRect rect) const; Chris@35: Chris@35: virtual QString getFeatureDescription(QPoint &) const; Chris@35: Chris@35: virtual bool snapToFeatureFrame(int &frame, Chris@35: size_t &resolution, Chris@35: SnapType snap) const; Chris@35: Chris@35: virtual void drawStart(QMouseEvent *); Chris@35: virtual void drawDrag(QMouseEvent *); Chris@35: virtual void drawEnd(QMouseEvent *); Chris@35: Chris@35: virtual void editStart(QMouseEvent *); Chris@35: virtual void editDrag(QMouseEvent *); Chris@35: virtual void editEnd(QMouseEvent *); Chris@35: Chris@43: virtual void moveSelection(Selection s, size_t newStartFrame); Chris@43: virtual void resizeSelection(Selection s, Selection newSize); Chris@43: Chris@36: virtual void editOpen(QMouseEvent *); // on double-click Chris@36: Chris@35: virtual const Model *getModel() const { return m_model; } Chris@35: void setModel(TextModel *model); Chris@35: Chris@35: virtual PropertyList getProperties() const; Chris@35: virtual PropertyType getPropertyType(const PropertyName &) const; Chris@35: virtual int getPropertyRangeAndValue(const PropertyName &, Chris@35: int *min, int *max) const; Chris@35: virtual QString getPropertyValueLabel(const PropertyName &, Chris@35: int value) const; Chris@35: virtual void setProperty(const PropertyName &, int value); Chris@35: Chris@35: void setBaseColour(QColor); Chris@35: QColor getBaseColour() const { return m_colour; } Chris@35: Chris@35: virtual bool isLayerScrollable() const; Chris@35: Chris@35: virtual bool isLayerEditable() const { return true; } Chris@35: Chris@35: virtual int getCompletion() const { return m_model->getCompletion(); } Chris@35: Chris@35: virtual QString toXmlString(QString indent = "", Chris@35: QString extraAttributes = "") const; Chris@35: Chris@35: void setProperties(const QXmlAttributes &attributes); Chris@35: Chris@35: protected: Chris@35: int getYForHeight(float height) const; Chris@35: float getHeightForY(int y) const; Chris@35: Chris@35: TextModel::PointList getLocalPoints(int x, int y) const; Chris@35: Chris@35: TextModel *m_model; Chris@35: bool m_editing; Chris@36: QPoint m_editOrigin; Chris@35: TextModel::Point m_originalPoint; Chris@35: TextModel::Point m_editingPoint; Chris@35: TextModel::EditCommand *m_editingCommand; Chris@35: QColor m_colour; Chris@35: }; Chris@35: Chris@35: #endif Chris@35: