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@44: TextLayer(); Chris@35: Chris@44: virtual void paint(View *v, QPainter &paint, QRect rect) const; Chris@35: Chris@44: virtual QString getFeatureDescription(View *v, QPoint &) const; Chris@35: Chris@44: virtual bool snapToFeatureFrame(View *v, int &frame, Chris@35: size_t &resolution, Chris@35: SnapType snap) const; Chris@35: Chris@44: virtual void drawStart(View *v, QMouseEvent *); Chris@44: virtual void drawDrag(View *v, QMouseEvent *); Chris@44: virtual void drawEnd(View *v, QMouseEvent *); Chris@35: Chris@44: virtual void editStart(View *v, QMouseEvent *); Chris@44: virtual void editDrag(View *v, QMouseEvent *); Chris@44: virtual void editEnd(View *v, 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@44: virtual void editOpen(View *, 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@44: virtual bool isLayerScrollable(const View *v) 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@44: int getYForHeight(View *v, float height) const; Chris@44: float getHeightForY(View *v, int y) const; Chris@35: Chris@44: TextModel::PointList getLocalPoints(View *v, 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: