You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

79 lines
2.1 KiB
Java

package main;
import java.awt.*;
import javax.swing.*;
import java.awt.print.*;
public class PrintUtilities extends JPanel implements Printable {
Score score;
int xPage;
int yPage;
PrinterJob pj = PrinterJob.getPrinterJob();
public PrintUtilities() {
}
public void init(Score score, int xPage, int yPage){
this.score = score;
this.xPage = xPage;
this.yPage = yPage;
pageSetup();
//this.setName("yo");
}
public void pageSetup() {
PageFormat pf = new PageFormat();
//figure out how to get this to return user page format
pf = pj.pageDialog(pj.defaultPage());
Paper paper = new Paper();
double margin = 0;
paper.setSize(pf.getPaper().getWidth(), pf.getPaper().getHeight());
paper.setImageableArea(margin, margin, paper.getWidth(), paper.getHeight());
pf.setPaper(paper);
pj.setPrintable(this, pf);
if (pj.printDialog()) {
try { pj.print(); }
catch (PrinterException e) {
System.out.println(e);
}
}
}
public int print(Graphics g, PageFormat pageFormat, int pageIndex) {
if (pageIndex >= Rise.X_DIV * Rise.Y_DIV){
Rise.CURRENT_X_PAGE = xPage;
Rise.CURRENT_Y_PAGE = yPage;
return(NO_SUCH_PAGE);
}
else {
Rise.CURRENT_X_PAGE = pageIndex % Rise.X_DIV;
Rise.CURRENT_Y_PAGE = pageIndex / Rise.X_DIV;
score.removeAll();
score.setNotes();
score.setNoteChoices();
Graphics2D g2 = (Graphics2D)g;
disableDoubleBuffering(this);
g2.translate(pageFormat.getImageableX(), pageFormat.getImageableY());
Dimension d = score.getSize();
double scaleX = pageFormat.getImageableWidth()/d.width;
double scaleY = pageFormat.getImageableHeight() / d.height;
g2.scale(scaleX, scaleY);
score.paint(g2);
enableDoubleBuffering(this);
return(PAGE_EXISTS);
}
}
public static void disableDoubleBuffering(Component c) {
RepaintManager currentManager = RepaintManager.currentManager(c);
currentManager.setDoubleBufferingEnabled(false);
}
public static void enableDoubleBuffering(Component c) {
RepaintManager currentManager = RepaintManager.currentManager(c);
currentManager.setDoubleBufferingEnabled(true);
}
}