// uniCenta oPOS - Touch Friendly Point Of Sale
// Copyright (C) 2009 Openbravo, S.L.
// http://www.unicenta.net/unicentaopos
//
// This file is part of uniCenta oPOS
//
// uniCenta oPOS is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// uniCenta oPOS is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with uniCenta oPOS. If not, see <http://www.gnu.org/licenses/>.
package com.openbravo.pos.printer.printer;
import com.openbravo.pos.printer.ticket.BasicTicket;
import com.openbravo.pos.printer.ticket.PrintItem;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.print.PageFormat;
import java.awt.print.Printable;
import java.awt.print.PrinterException;
/**
*
* @author adrianromero
*/
public class PrintableBasicTicket implements Printable {
private int imageable_width;
private int imageable_height;
private int imageable_x;
private int imageable_y;
private BasicTicket ticket;
public PrintableBasicTicket(BasicTicket ticket, int imageable_x, int imageable_y, int imageable_width, int imageable_height) {
this.ticket = ticket;
this.imageable_x = imageable_x;
this.imageable_y = imageable_y;
this.imageable_width = imageable_width;
this.imageable_height = imageable_height;
}
@Override
public int print(Graphics graphics, PageFormat pageFormat, int pageIndex) throws PrinterException {
Graphics2D g2d = (Graphics2D) graphics;
int line = 0;
int currentpage = 0;
int currentpagey = 0;
boolean printed = false;
// System.out.println(pageFormat.getImageableX());
// System.out.println(pageFormat.getImageableY());
// System.out.println(pageFormat.getImageableWidth());
// System.out.println(pageFormat.getImageableHeight());
g2d.translate(imageable_x, imageable_y);
java.util.List<PrintItem> commands = ticket.getCommands();
while (line < commands.size()) {
int itemheight = commands.get(line).getHeight();
if (currentpagey + itemheight <= imageable_height) {
currentpagey += itemheight;
} else {
currentpage ++;
currentpagey = itemheight;
}
if (currentpage < pageIndex) {
line ++;
} else if (currentpage == pageIndex) {
printed = true;
commands.get(line).draw(g2d, 0, currentpagey - itemheight, imageable_width);
line ++;
} else if (currentpage > pageIndex) {
line ++;
}
}
return printed
? Printable.PAGE_EXISTS
: Printable.NO_SUCH_PAGE;
}
}