[jmsl] ScorePainter problem
jmsl at music.columbia.edu
jmsl at music.columbia.edu
Mon Sep 8 17:44:14 EDT 2008
Hi all,
I'm trying to test a new ScorePainter, and I can't get it to install.
When I run it I get:
ScorePainter: class com.softsynth.jmsl.score.ScorePainter
Here's a demonstration of the problem. Am I missing something in the
rendering sequence for a score?
thanks,
Peter McCulloch
package com.petermcculloch.megalo.graphics;
import java.awt.Graphics;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JFrame;
import com.didkovsky.portview.swing.ViewFactorySwing;
import com.softsynth.jmsl.JMSL;
import com.softsynth.jmsl.score.Score;
import com.softsynth.jmsl.score.ScoreCanvasSwing;
import com.softsynth.jmsl.score.ScorePainter;
public class ScorePainterMegalo extends ScorePainter {
Score score;
public ScorePainterMegalo(Score score) {
super(score);
this.score = score;
}
@Override
public void render(Graphics g, double playTime, boolean b) {
super.render(g, playTime, b);
System.out.println("Called render...");
}
public static void main(String args[]) {
JFrame frame = new JFrame();
JMSL.setViewFactory(new ViewFactorySwing());
// Score.useSharedCanvas(false);
Score score = new Score(2, 700, 700);
score.addMeasures(10, 3, 4);
score.setCurrentMeasureNumber(0);
score.setCurrentStaffNumber(0);
score.setCurrentTrackNumber(0);
score.addNote(1., 60., 1., 1.);
ScorePainterMegalo painter = new ScorePainterMegalo(score);
ScoreCanvasSwing canvas = null;
// if true, blank canvas, but same scorepainter. If false, score
canvas and same scorepainter
boolean createNew = false;
if (createNew) {
canvas = new ScoreCanvasSwing(500, 500);
score.setScoreCanvas(canvas);
canvas.setScorePainter(painter);
score.getScoreCanvas().setScorePainter(painter);
} else {
score.getScoreCanvas().setScorePainter(painter);
canvas = (ScoreCanvasSwing) score.getScoreCanvas();
}
frame.add(((ScoreCanvasSwing) canvas).getComponent());
frame.addWindowStateListener(new WindowAdapter() {
@Override
public void windowClosed(WindowEvent e) {
JMSL.closeMusicDevices();
System.exit(0);
}
});
frame.pack();
score.ownCanvas();
frame.setVisible(true);
System.out.println("ScorePainter:\t" +
score.getScorePainter().getClass().toString());
}
}
More information about the jmsl
mailing list