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