]> ruin.nu Git - moosique.git/commitdiff
*** empty log message ***
authorRoland Andersson <rolaande@itstud.chalmers.se>
Wed, 14 May 2003 11:21:02 +0000 (11:21 +0000)
committerRoland Andersson <rolaande@itstud.chalmers.se>
Wed, 14 May 2003 11:21:02 +0000 (11:21 +0000)
MooTrackView.java
report.txt

index c058cc5e01ec881e0922a5b67c951dcc47967683..96b55f0967c9996bc59f3cb14c3a15f7958fcb22 100644 (file)
@@ -15,6 +15,13 @@ public class MooTrackView extends JPanel {
 
        private Track track;
        private Rectangle box;
+<<<<<<< MooTrackView.java
+       //private Rectangle box2;
+       /** 
+        * Creates 
+        */
+       public MooTrackView () {
+=======
        private JPopupMenu popup;
        private JMenuItem menuItem;
        private ArrayList rects;
@@ -24,6 +31,33 @@ public class MooTrackView extends JPanel {
        public MooTrackView (Track track) {
                super(true);
                this.track = track;
+<<<<<<< MooTrackView.java
+>>>>>>> 1.45
+               setLayout(new BorderLayout());
+<<<<<<< MooTrackView.java
+               this.setBorder(BorderFactory.createLineBorder(Color.black));
+               add(trackTitle(), BorderLayout.NORTH);
+               add(noteView(), BorderLayout.CENTER);
+               }
+       
+       private JPanel trackTitle () {
+               title = new MooTrackTitle();
+               title.setPreferredSize(new Dimension(PANEL_WIDTH, TITLE_HEIGHT));
+               title.setBorder(BorderFactory.createLineBorder(Color.black));
+               return title;
+       }
+
+       private JPanel noteView () {
+               notes = new NoteArea(); 
+               notes.setBackground(Color.white);
+               notes.setBorder(BorderFactory.createLineBorder(Color.black));   
+               return notes;           
+=======
+
+               notes = new NoteArea(track);    
+               notes.setBackground(Color.white);
+               notes.setBorder(BorderFactory.createLineBorder(Color.black));
+=======
 
                // Configures panel
                setBackground(Color.white);
@@ -63,6 +97,7 @@ public class MooTrackView extends JPanel {
                        setPreferredSize(new Dimension(VIEW_WIDTH, viewLength + extraHeight));
                }
                validate();
+>>>>>>> 1.46
 
                // Creates pop-up menu.
                popup = new JPopupMenu();
@@ -77,6 +112,82 @@ public class MooTrackView extends JPanel {
                return track;
        }
 
+
+       /** 
+        * Updates the track view.
+        */
+       public void update(long tickPosition) {
+               repaint();
+>>>>>>> 1.45
+       }
+
+<<<<<<< MooTrackView.java
+       class NoteArea extends JPanel {
+               public static final int NOTE_HEIGHT = 10, NOTE_WIDTH = 40, VIEW_WIDTH = 200;
+               private ArrayList rects;
+
+               public NoteArea(Track track) {
+                       // Configuring panel
+                       super(true);
+                       setLayout(null);
+                       setPreferredSize(new Dimension(VIEW_WIDTH, 140 * NOTE_HEIGHT));
+
+                       // Creating temporary variables
+                       MidiEvent note;
+                       MooNoteElement elem;
+                       int x, y, height;
+                       int beatsPerSixteenth = Moosique.getSequence().getResolution() / 4;
+                       rects = new ArrayList(track.size() / 2);
+
+                       // Placing note elements
+                       Insets insets = getInsets();
+                       for (int i = 0; i < track.size(); i++) {
+                               note = track.get(i);
+                               if (note instanceof MooNote) {
+                                       // Adds the note element to the note area.
+                                       MooNote mn = (MooNote)note;
+                                       elem = new MooNoteElement(mn);
+                                       add(elem);
+
+                                       // Moves the note element to the appropriate place.
+                                       x = insets.left;
+                                       y = insets.top + (int)(mn.getTick() / beatsPerSixteenth) * NOTE_HEIGHT;
+                                       height = (mn.getDuration() / beatsPerSixteenth) * NOTE_HEIGHT;
+                                       if (height == 0) height = NOTE_HEIGHT;
+                                       Rectangle r = new Rectangle(x, y, NOTE_WIDTH, height);
+                                       while(isOccupied(r)) r.translate(NOTE_WIDTH, 0);
+                                       elem.setBounds(r);
+                                       rects.add(r);
+                                       if (viewLength < (y + height)) viewLength = y + height;
+                               }
+                               setPreferredSize(new Dimension(VIEW_WIDTH, viewLength));
+                       }
+                       validate();
+               }
+               
+               private boolean isOccupied(Rectangle r) {
+                       Iterator it = rects.iterator();
+                       while (it.hasNext()) {
+                               if(r.intersects((Rectangle)it.next())) return true;
+                       }
+                       return false;
+               }
+
+               public void paintComponent(Graphics g) {
+                       super.paintComponent(g);
+                       Graphics2D g2 = (Graphics2D)g;
+<<<<<<< MooTrackView.java
+                       for (int c=0;c<1000;c=c+20) {
+                               int r=0;
+                               for (r=0;r<200;r=r+20) {
+                                       box = new Rectangle(r,c,20,20);
+                                       g2.setColor(Color.gray);
+                                       g2.draw(box);
+                               }
+                       }
+               }
+       }
+=======
        private boolean isOccupied(Rectangle r) {
                Iterator it = rects.iterator();
                while (it.hasNext()) {
@@ -101,12 +212,21 @@ public class MooTrackView extends JPanel {
                        }
                }
        }
+>>>>>>> 1.46
 
-       /** 
-        * Updates the track view.
-        */
-       public void update(long tickPosition) {
-               repaint();
+       private static final int PANEL_WIDTH = 65;
+       private static final int TITLE_HEIGHT = 40;
+       private static final int NOTEVIEW_HEIGHT = 200;
+}
+=======
+                       for (int c = 0; c < viewLength || c < getHeight(); c += NOTE_HEIGHT) {
+                               for (int r = 0; r < (10 * NOTE_WIDTH); r += NOTE_WIDTH) {
+                                       box = new Rectangle(r, c, NOTE_WIDTH, NOTE_HEIGHT);
+                                       g2.setColor(Color.gray);
+                                       g2.draw(box);
+                               }
+                       }
+               }
        }
 
        class PopupListener extends MouseAdapter {
@@ -116,4 +236,8 @@ public class MooTrackView extends JPanel {
                        }
                }
        }
-}
\ No newline at end of file
+<<<<<<< MooTrackView.java
+}
+>>>>>>> 1.45
+=======
+}>>>>>>> 1.46
index b1d76bcae68ca5f13b8450013a1e829cc6d1cf9d..ad11cc36e2673fc30dc781753d464290aefd2354 100644 (file)
@@ -1,18 +1,48 @@
 Foreword (optional)\r
 \r
+OBS! [...] = Hjälp till om ni kan och lägg in text\r
 \r
 Introduction\r
 \r
 The main goal with our project was to design and construct a midi-software developing program.\r
 Both for arranging and playing already existing midi-files, and for composing and saving midi-files from scratch.\r
-We chose this project for mainly two reasons. First, noone of us had previous experience of working with music in the Java language, so this would be a great challange. Second, we are all quite interested in music.\r
-\r
-\r
-\r
-Main section\r
-\r
-\r
+We chose this project for mainly two reasons. First, noone of us had previous experience of working with music in the Java language, so this would be a great challenge. Second, we are all quite interested in music.\r
+\r
+Analysis\r
+-----------------------------\r
+< Java Soundpackage >\r
+Our first step was to look at the Java Soundpackage, and to try to find out what limits the package had. Noone of us was familiar with the package and wanted to get an overview before we started working with the design document. We also had to look at some software that supported midi to get an idea what features our application might have.\r
+-----------------------------\r
+< Design Document >\r
+We realeased were quickly that most of the classes we had to construct was associated with the interface. We divided the program into two major parts. The main part, the actual program, included four functional classes. Our starting point was to make one class including the 'main method', we gave this class the name Moosique (an combination of moose and music). \r
+\r
+Under the Moosique class we designed three classes that modifies different parts of an midi-file. \r
+MooSequence [...], MooTrack [...] and MooNote [...]. \r
+\r
+The second part of the program includes the graphical classes. The top-class of the interface is a class called MooGUI that [...]. Under the interface top-class MooGUI we designed some graphics classes that constructs a menu, a statusbar and a toolbar. All these classes [...]. \r
+\r
+Beside the strictly graphical classes we decided to make graphical representation of the functional classes, this to get an better overview of our work [...]. MooView (an graphical representation of MooSequence), MooTrackView (MooTrack) and MooNoteElement (MooNote). To support these files some other graphical had to be designed. MooViewCounter represents an ruler that shows the [einar], MooTrackTitle handles the properties of one track and MooNoteElement the properties of one note.\r
+\r
+We constructed this design document very quickly, maybe to quickly. We werent really clear how some of the functions in the Java Soundpackage worked. Later in the project we were forced to change what we earlier had planned, se section [Major Decissions]. \r
+------------------------------\r
+< Time Schedule >\r
+Before we started to implement the code we made an time-schedule for each class, and divided the classes between us. Later we realeased that for a few classes this time-schedule were very optimistic. The consequences of a misleading time-schedule were that some classes was not implemented before a very long time in the project [mer?].\r
+------------------------------\r
+< Implemention >\r
+       Functional classes [...]\r
+       Strictly graphical classes [...]\r
+------------------------------\r
+< Major Decissions >\r
+[...]\r
+------------------------------\r
+< Problems >\r
+[...]\r
+------------------------------\r
 Conclusions\r
 \r
 \r
-References
\ No newline at end of file
+References\r
+[einar skriv in de musikprogram som du hade]\r
+Jia\r
+Code complete\r
+och den första java boken
\ No newline at end of file