1 //============================================================================= 2 // MuseScore 3 // Music Composition & Notation 4 // 5 // Copyright (C) 2011 Werner Schweer and others 6 // 7 // This program is free software; you can redistribute it and/or modify 8 // it under the terms of the GNU General Public License version 2 9 // as published by the Free Software Foundation and appearing in 10 // the file LICENSE.GPL 11 //============================================================================= 12 13 #ifndef __MSCOREVIEW_H__ 14 #define __MSCOREVIEW_H__ 15 16 namespace Ms { 17 18 class Element; 19 class Score; 20 class Slur; 21 class Note; 22 class Page; 23 class ChordRest; 24 25 enum class Grip : int; 26 enum class HairpinType : signed char; 27 28 //--------------------------------------------------------- 29 // MuseScoreView 30 //--------------------------------------------------------- 31 32 class MuseScoreView { 33 34 protected: 35 Score* _score; 36 37 public: MuseScoreView()38 MuseScoreView() {} 39 Page* point2page(const QPointF&); 40 Element* elementAt(const QPointF& p); 41 const QList<Element*> elementsAt(const QPointF&); elementNear(QPointF)42 virtual Element* elementNear(QPointF) { return 0; } 43 layoutChanged()44 virtual void layoutChanged() {} 45 virtual void dataChanged(const QRectF&) = 0; 46 virtual void updateAll() = 0; 47 moveCursor()48 virtual void moveCursor() {} showLoopCursors(bool)49 virtual void showLoopCursors(bool) {} 50 51 virtual void adjustCanvasPosition(const Element*, bool /*playBack*/, int /*staffIdx*/ = -1) {} setScore(Score * s)52 virtual void setScore(Score* s) { _score = s; } score()53 Score* score() const { return _score; } removeScore()54 virtual void removeScore() {} 55 changeEditElement(Element *)56 virtual void changeEditElement(Element*) {} cursor()57 virtual QCursor cursor() const { return QCursor(); } setCursor(const QCursor &)58 virtual void setCursor(const QCursor&) {} setDropRectangle(const QRectF &)59 virtual void setDropRectangle(const QRectF&) {} addSlur(ChordRest *,ChordRest *,const Slur *)60 virtual void addSlur(ChordRest*, ChordRest*, const Slur* /* slurTemplate */) {} startEdit(Element *,Grip)61 virtual void startEdit(Element*, Grip /*startGrip*/) {} startNoteEntryMode()62 virtual void startNoteEntryMode() {} 63 virtual void drawBackground(QPainter*, const QRectF&) const = 0; setDropTarget(const Element *)64 virtual void setDropTarget(const Element*) {} 65 textTab(bool)66 virtual void textTab(bool /*back*/) {} lyricsTab(bool,bool,bool)67 virtual void lyricsTab(bool /*back*/, bool /*end*/, bool /*moveOnly*/) {} lyricsReturn()68 virtual void lyricsReturn() {} lyricsEndEdit()69 virtual void lyricsEndEdit() {} lyricsUpDown(bool,bool)70 virtual void lyricsUpDown(bool /*up*/, bool /*end*/) {} lyricsMinus()71 virtual void lyricsMinus() {} lyricsUnderscore()72 virtual void lyricsUnderscore() {} 73 onElementDestruction(Element *)74 virtual void onElementDestruction(Element*) {} 75 76 virtual const QRect geometry() const = 0; 77 }; 78 79 80 } // namespace Ms 81 82 #endif 83 84