You are viewing a plain text version of this content. The canonical link for it is here.
Posted to fop-commits@xmlgraphics.apache.org by gm...@apache.org on 2003/09/21 22:56:24 UTC
cvs commit: xml-fop/src/java/org/apache/fop/viewer/resources Viewer.properties Viewer_cs.properties Viewer_de.properties Viewer_fi.properties Viewer_fr.properties Viewer_it.properties Viewer_ja.properties Viewer_pl.properties Viewer_ru.properties Viewer_tr.properties
gmazza 2003/09/21 13:56:24
Modified: . build.xml
src/java/org/apache/fop/render/awt AWTRenderer.java
src/java/org/apache/fop/render/pdf PDFRenderer.java
Added: src/java/org/apache/fop/render/awt/viewer Command.java
GoToPageDialog.java PreviewDialog.java
PreviewDialogAboutBox.java Translator.java
src/java/org/apache/fop/render/awt/viewer/images Print.gif
firstpg.gif fop.gif lastpg.gif nextpg.gif
prevpg.gif reload.gif
src/java/org/apache/fop/render/awt/viewer/resources
Viewer.properties Viewer_cs.properties
Viewer_de.properties Viewer_fi.properties
Viewer_fr.properties Viewer_it.properties
Viewer_ja.properties Viewer_pl.properties
Viewer_ru.properties Viewer_tr.properties
Removed: src/java/org/apache/fop/viewer Command.java
GoToPageDialog.java PreviewDialog.java
PreviewDialogAboutBox.java Translator.java
src/java/org/apache/fop/viewer/images Print.gif firstpg.gif
fop.gif lastpg.gif nextpg.gif prevpg.gif reload.gif
src/java/org/apache/fop/viewer/resources Viewer.properties
Viewer_cs.properties Viewer_de.properties
Viewer_fi.properties Viewer_fr.properties
Viewer_it.properties Viewer_ja.properties
Viewer_pl.properties Viewer_ru.properties
Viewer_tr.properties
Log:
1.) Moved AWT Viewer classes from org.fop.viewer to org.fop.render.awt.viewer
2.) Updated AWT and PDF renderers to draw region borders more accurately.
3.) Rounding errors for determining region sizes in AWT Renderer fixed.
Revision Changes Path
1.89 +4 -4 xml-fop/build.xml
Index: build.xml
===================================================================
RCS file: /home/cvs/xml-fop/build.xml,v
retrieving revision 1.88
retrieving revision 1.89
diff -u -r1.88 -r1.89
--- build.xml 7 Jul 2003 02:09:24 -0000 1.88
+++ build.xml 21 Sep 2003 20:56:23 -0000 1.89
@@ -174,8 +174,8 @@
<property name="conf.dir" value="${basedir}/conf"/>
<property name="packages" value="org.apache.fop.*"/>
- <property name="viewer.resources.src.dir" value="${src.java}/org/apache/fop/viewer/resources"/>
- <property name="viewer.images.src.dir" value="${src.java}/org/apache/fop/viewer/images"/>
+ <property name="viewer.resources.src.dir" value="${src.java}/org/apache/fop/render/awt/viewer/resources"/>
+ <property name="viewer.images.src.dir" value="${src.java}/org/apache/fop/render/awt/viewer/images"/>
<property name="build.dir" value="${basedir}/build"/>
<property name="build.src" value="${build.dir}/src"/>
@@ -187,8 +187,8 @@
<property name="build.javadocs" value="${build.dir}/javadocs"/>
<property name="build.examples.dir" value="${build.dir}/examples"/>
- <property name="viewer.resources.dest.dir" value="${build.dest}/org/apache/fop/viewer/resources"/>
- <property name="viewer.images.dest.dir" value="${build.dest}/org/apache/fop/viewer/Images"/>
+ <property name="viewer.resources.dest.dir" value="${build.dest}/org/apache/fop/render/awt/viewer/resources"/>
+ <property name="viewer.images.dest.dir" value="${build.dest}/org/apache/fop/render/awt/viewer/Images"/>
<property name="dist.bin.dir" value="${basedir}/dist-bin"/>
<property name="dist.src.dir" value="${basedir}/dist-src"/>
1.14 +32 -38 xml-fop/src/java/org/apache/fop/render/awt/AWTRenderer.java
Index: AWTRenderer.java
===================================================================
RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/render/awt/AWTRenderer.java,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- AWTRenderer.java 19 Sep 2003 14:33:15 -0000 1.13
+++ AWTRenderer.java 21 Sep 2003 20:56:23 -0000 1.14
@@ -91,8 +91,8 @@
import org.apache.fop.image.ImageFactory;
import org.apache.fop.render.AbstractRenderer;
import org.apache.fop.traits.BorderProps;
-import org.apache.fop.viewer.PreviewDialog;
-import org.apache.fop.viewer.Translator;
+import org.apache.fop.render.awt.viewer.PreviewDialog;
+import org.apache.fop.render.awt.viewer.Translator;
/**
* This is FOP's AWT renderer.
@@ -266,8 +266,8 @@
Page page = (Page) pageList.get(pageNum);
Rectangle2D bounds = pageViewport.getViewArea();
- int pageWidth = (int)((float) bounds.getWidth() / 1000f + .5);
- int pageHeight = (int)((float) bounds.getHeight() / 1000f + .5);
+ int pageWidth = (int) Math.round(bounds.getWidth() / 1000f );
+ int pageHeight = (int) Math.round(bounds.getHeight() / 1000f );
/*
System.out.println("(Page) X, Y, Width, Height: " + bounds.getX()
+ " " + bounds.getY()
@@ -315,18 +315,25 @@
currentFontSize = 0;
Rectangle2D viewArea = region.getViewArea();
- int startX = (int)(((float) viewArea.getX() / 1000f + .5)
+ int startX = (int) Math.round((viewArea.getX() / 1000f)
* (scaleFactor / 100f));
- int startY = (int)(((float) viewArea.getY() / 1000f + .5)
- * (scaleFactor / 100f));
- int width = (int)(((float) viewArea.getWidth() / 1000f + .5)
- * (scaleFactor / 100f));
- int height = (int)(((float) viewArea.getHeight() / 1000f + .5)
+ int startY = (int) Math.round((viewArea.getY() / 1000f)
* (scaleFactor / 100f));
+ // for rounding to work correctly, need to take into account
+ // fractional portion of X and Y.
+ int width = (int) Math.round(((viewArea.getX() + viewArea.getWidth()) / 1000f)
+ * (scaleFactor / 100f)) - startX;
+ int height = (int) Math.round(((viewArea.getY() + viewArea.getHeight()) / 1000f)
+ * (scaleFactor / 100f)) - startY;
if (region.getRegion() != null) {
System.out.print("\nRegion type = " + region.getRegion().getRegionClass());
}
+/* System.out.println("\nView X, Width, Y, Height: " + viewArea.getX()
+ + " " + viewArea.getWidth()
+ + " " + viewArea.getY()
+ + " " + viewArea.getHeight()
+ ); */
System.out.println(" X, Width, Y, Height: " + startX
+ " " + width
+ " " + startY
@@ -382,46 +389,33 @@
BorderProps bps = (BorderProps) block.getTrait(Trait.BORDER_BEFORE);
if (bps != null) {
- int borderWidth = (int) ((bps.width / 1000f) * (scaleFactor / 100f));
- System.out.println("Before (color/width) " + bps.color.getAWTColor().toString() + " " + bps.width);
+ int borderWidth = (int) Math.round((bps.width / 1000f) * (scaleFactor / 100f));
graphics.setColor(bps.color.getAWTColor());
- // drawLine(x1, y1, x2, y2);
- System.out.println("Draw from (" + startx + "," + (starty + borderWidth/2) +
- ") to (" + (startx+width) + "," + (starty + borderWidth/ 2) + ")");
- graphics.drawLine(startx, starty + borderWidth / 2, startx + width,
- starty + borderWidth / 2);
+// System.out.println("Border at (" + startx + "," + (starty + height - borderWidth) +
+// ") width, height: (" + (width) + "," + (borderWidth) + ")");
+ graphics.fillRect(startx, starty, width, borderWidth);
}
- bps = (BorderProps) block.getTrait(Trait.BORDER_START);
+ bps = (BorderProps) block.getTrait(Trait.BORDER_AFTER);
if (bps != null) {
- int borderWidth = (int) ((bps.width / 1000f) * (scaleFactor / 100f));
- System.out.println("Start (color/width) " + bps.color.getAWTColor().toString() + " " + bps.width);
+ int borderWidth = (int) Math.round((bps.width / 1000f) * (scaleFactor / 100f));
+ int sy = starty + height;
graphics.setColor(bps.color.getAWTColor());
- System.out.println("Draw from (" + (startx + borderWidth / 2) + "," + starty +
- ") to (" + (startx + borderWidth / 2) + "," + (starty + height) + ")");
- graphics.drawLine(startx + borderWidth / 2, starty, startx + borderWidth / 2,
- starty + height);
+ graphics.fillRect(startx, starty + height - borderWidth,
+ width, borderWidth);
}
- bps = (BorderProps) block.getTrait(Trait.BORDER_AFTER);
+ bps = (BorderProps) block.getTrait(Trait.BORDER_START);
if (bps != null) {
- int borderWidth = (int) ((bps.width / 1000f) * (scaleFactor / 100f));
- System.out.println("After (color/width) " + bps.color.getAWTColor().toString() + " " + bps.width);
- int sy = starty + height;
+ int borderWidth = (int) Math.round((bps.width / 1000f) * (scaleFactor / 100f));
graphics.setColor(bps.color.getAWTColor());
- System.out.println("Draw from (" + startx + "," + (sy - borderWidth / 2) +
- ") to (" + (startx+width) + "," + (sy - borderWidth / 2) + ")");
- graphics.drawLine(startx, sy - borderWidth / 2, startx + width,
- sy - borderWidth / 2);
+ graphics.fillRect(startx, starty, borderWidth, height);
}
bps = (BorderProps) block.getTrait(Trait.BORDER_END);
if (bps != null) {
- int borderWidth = (int) ((bps.width / 1000f) * (scaleFactor / 100f));
- System.out.println("End (color/width) " + bps.color.getAWTColor().toString() + " " + bps.width);
+ int borderWidth = (int) Math.round((bps.width / 1000f) * (scaleFactor / 100f));
int sx = startx + width;
graphics.setColor(bps.color.getAWTColor());
- System.out.println("Draw from (" + (sx - borderWidth / 2) + "," + starty +
- ") to (" + (sx - borderWidth / 2) + "," + (starty + height) + ")");
- graphics.drawLine(sx - borderWidth / 2, starty, sx - borderWidth / 2,
- starty + height);
+ graphics.fillRect(startx + width - borderWidth, starty,
+ borderWidth, height);
}
}
}
1.1 xml-fop/src/java/org/apache/fop/render/awt/viewer/Command.java
Index: Command.java
===================================================================
/*
* $Id: Command.java,v 1.1 2003/09/21 20:56:23 gmazza Exp $
* ============================================================================
* The Apache Software License, Version 1.1
* ============================================================================
*
* Copyright (C) 1999-2003 The Apache Software Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modifica-
* tion, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* 3. The end-user documentation included with the redistribution, if any, must
* include the following acknowledgment: "This product includes software
* developed by the Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowledgment may appear in the software itself, if
* and wherever such third-party acknowledgments normally appear.
*
* 4. The names "FOP" and "Apache Software Foundation" must not be used to
* endorse or promote products derived from this software without prior
* written permission. For written permission, please contact
* apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache", nor may
* "Apache" appear in their name, without prior written permission of the
* Apache Software Foundation.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
* DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
* ============================================================================
*
* This software consists of voluntary contributions made by many individuals
* on behalf of the Apache Software Foundation and was originally created by
* James Tauber <jt...@jtauber.com>. For more information on the Apache
* Software Foundation, please see <http://www.apache.org/>.
*/
package org.apache.fop.render.awt.viewer;
//Java
import java.awt.event.ActionEvent;
import javax.swing.AbstractAction;
import javax.swing.ImageIcon;
import java.net.URL;
/**
* This class represents UI-commands, which can be used as menu or toolbar
* items<br>.
* When the <code>Command</code> object receives action event, that object's
* <code>doit</code> method is invoked. <code>doit</code> method by default
* does nothing and the class customer have to override it to implement
* any action handling logic.
* Originally contributed by:
* Juergen Verwohlt: Juergen.Verwohlt@jcatalog.com,
* Rainer Steinkuhle: Rainer.Steinkuhle@jcatalog.com,
* Stanislav Gorkhover: Stanislav.Gorkhover@jcatalog.com
*/
public class Command extends AbstractAction {
private static final String IMAGE_DIR = "images/";
/**
* Creates <code>Command</code> object with a given name and
* sets the name as a tooltip text. No associated icon image.
* @param name of the command
*/
public Command(String name) {
super(name);
putValue(SHORT_DESCRIPTION, name);
}
/**
* Creates <code>Command</code> object with a given name, the same
* tooltip text and icon image if appropriate image file is found.
* @param name name of the command
* @param iconName name of the icon
*/
public Command(String name, String iconName) {
super(name);
putValue(SHORT_DESCRIPTION, name);
URL url = getClass().getResource(IMAGE_DIR + iconName + ".gif");
if (url != null) {
putValue(SMALL_ICON, new ImageIcon(url));
}
}
/**
* @see java.awt.event.ActionListener#actionPerformed(ActionEvent)
*/
public void actionPerformed(ActionEvent e) {
doit();
}
/**
* Action handler, have to be overrided by subclasses.
*/
public void doit() {
//Do nothing
}
}
1.1 xml-fop/src/java/org/apache/fop/render/awt/viewer/GoToPageDialog.java
Index: GoToPageDialog.java
===================================================================
/*
* $Id: GoToPageDialog.java,v 1.1 2003/09/21 20:56:23 gmazza Exp $
* ============================================================================
* The Apache Software License, Version 1.1
* ============================================================================
*
* Copyright (C) 1999-2003 The Apache Software Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modifica-
* tion, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* 3. The end-user documentation included with the redistribution, if any, must
* include the following acknowledgment: "This product includes software
* developed by the Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowledgment may appear in the software itself, if
* and wherever such third-party acknowledgments normally appear.
*
* 4. The names "FOP" and "Apache Software Foundation" must not be used to
* endorse or promote products derived from this software without prior
* written permission. For written permission, please contact
* apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache", nor may
* "Apache" appear in their name, without prior written permission of the
* Apache Software Foundation.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
* DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
* ============================================================================
*
* This software consists of voluntary contributions made by many individuals
* on behalf of the Apache Software Foundation and was originally created by
* James Tauber <jt...@jtauber.com>. For more information on the Apache
* Software Foundation, please see <http://www.apache.org/>.
*/
package org.apache.fop.render.awt.viewer;
import java.awt.Dimension;
import java.awt.Frame;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
/**
* Go to Page Dialog.
* Originally contributed by:
* Juergen Verwohlt: Juergen.Verwohlt@jCatalog.com,
* Rainer Steinkuhle: Rainer.Steinkuhle@jCatalog.com,
* Stanislav Gorkhover: Stanislav.Gorkhover@jCatalog.com
*/
public class GoToPageDialog extends JDialog {
private JTextField pgNbField;
private int pageNumber = -1;
/**
* Creates modal dialog with a given title, attached to a given frame.
* @param frame Frame to attach to
* @param title dialog title
* @param translator translator for localization
*/
public GoToPageDialog(Frame frame, String title, Translator translator) {
super(frame, title, true);
jbInit(translator);
pack();
}
private void jbInit(Translator translator) {
JPanel panel1 = new JPanel();
GridBagLayout gridBagLayout1 = new GridBagLayout();
JLabel pgNbLabel = new JLabel();
pgNbField = new JTextField();
JButton okButton = new JButton();
JButton cancelButton = new JButton();
panel1.setLayout(gridBagLayout1);
pgNbLabel.setText(translator.getString("Label.Page.number"));
okButton.setText(translator.getString("Button.Ok"));
okButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
okButtonActionPerformed(e);
}
});
cancelButton.setText(translator.getString("Button.Cancel"));
cancelButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
cancelButtonActionPerformed(e);
}
});
panel1.setMinimumSize(new Dimension(250, 78));
getContentPane().add(panel1);
panel1.add(pgNbLabel,
new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0,
GridBagConstraints.WEST,
GridBagConstraints.NONE,
new Insets(10, 10, 10, 5), 0, 0));
panel1.add(pgNbField,
new GridBagConstraints(1, 0, 1, 1, 1.0, 0.0,
GridBagConstraints.WEST,
GridBagConstraints.BOTH,
new Insets(10, 5, 10, 10), 0, 0));
panel1.add(okButton,
new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0,
GridBagConstraints.EAST,
GridBagConstraints.NONE,
new Insets(0, 0, 10, 5), 0, 0));
panel1.add(cancelButton,
new GridBagConstraints(1, 1, 1, 1, 0.0, 0.0,
GridBagConstraints.WEST,
GridBagConstraints.NONE,
new Insets(0, 10, 10, 10), 0, 0));
}
private void okButtonActionPerformed(ActionEvent e) {
try {
pageNumber = Integer.parseInt(pgNbField.getText());
dispose();
} catch (NumberFormatException nfe) {
pgNbField.setText("???");
}
}
private void cancelButtonActionPerformed(ActionEvent e) {
pageNumber = -1;
dispose();
}
/**
* Returns page number, entered by user.
* @return the page number
*/
public int getPageNumber() {
return pageNumber;
}
}
1.1 xml-fop/src/java/org/apache/fop/render/awt/viewer/PreviewDialog.java
Index: PreviewDialog.java
===================================================================
/*
* $Id: PreviewDialog.java,v 1.1 2003/09/21 20:56:23 gmazza Exp $
* ============================================================================
* The Apache Software License, Version 1.1
* ============================================================================
*
* Copyright (C) 1999-2003 The Apache Software Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modifica-
* tion, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* 3. The end-user documentation included with the redistribution, if any, must
* include the following acknowledgment: "This product includes software
* developed by the Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowledgment may appear in the software itself, if
* and wherever such third-party acknowledgments normally appear.
*
* 4. The names "FOP" and "Apache Software Foundation" must not be used to
* endorse or promote products derived from this software without prior
* written permission. For written permission, please contact
* apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache", nor may
* "Apache" appear in their name, without prior written permission of the
* Apache Software Foundation.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
* DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
* ============================================================================
*
* This software consists of voluntary contributions made by many individuals
* on behalf of the Apache Software Foundation and was originally created by
* James Tauber <jt...@jtauber.com>. For more information on the Apache
* Software Foundation, please see <http://www.apache.org/>.
*/
package org.apache.fop.render.awt.viewer;
//Java
import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JToolBar;
import javax.swing.SwingUtilities;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.Point;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.awt.print.PrinterJob;
import java.awt.print.PrinterException;
//FOP
import org.apache.fop.apps.Driver;
import org.apache.fop.apps.InputHandler;
import org.apache.fop.apps.FOPException;
import org.apache.fop.render.awt.AWTRenderer;
/**
* AWT Viewer main window.
* Originally contributed by:
* Juergen Verwohlt: Juergen.Verwohlt@jCatalog.com,
* Rainer Steinkuhle: Rainer.Steinkuhle@jCatalog.com,
* Stanislav Gorkhover: Stanislav.Gorkhover@jCatalog.com
*/
public class PreviewDialog extends JFrame {
/** The Translator for localization */
protected Translator translator;
/** The AWT renderer */
protected AWTRenderer renderer;
/** The InputHandler associated with this window */
protected InputHandler inputHandler;
/** The Driver used for refreshing/reloading the view */
protected Driver driver;
private int currentPage = 0;
private int pageCount = 0;
private Reloader reloader;
private JComboBox scale;
private JLabel processStatus;
private JLabel pageLabel;
private JLabel infoStatus;
/**
* Creates a new PreviewDialog that uses the given renderer.
* @param aRenderer the to use renderer
*/
public PreviewDialog(AWTRenderer aRenderer, InputHandler handler) {
renderer = aRenderer;
inputHandler = handler;
translator = renderer.getTranslator();
//Commands aka Actions
Command printAction = new Command(translator.getString("Menu.Print"), "Print") {
public void doit() {
print();
}
};
Command firstPageAction = new Command(translator.getString("Menu.First.page"),
"firstpg") {
public void doit() {
goToFirstPage();
}
};
Command previousPageAction = new Command(translator.getString("Menu.Prev.page"),
"prevpg") {
public void doit() {
goToPreviousPage();
}
};
Command nextPageAction = new Command(translator.getString("Menu.Next.page"), "nextpg") {
public void doit() {
goToNextPage();
}
};
Command lastPageAction = new Command(translator.getString("Menu.Last.page"), "lastpg") {
public void doit() {
goToLastPage();
}
};
Command reloadAction = new Command(translator.getString("Menu.Reload"), "reload") {
public void doit() {
reload();
}
};
setTitle("FOP: AWT-" + translator.getString("Title.Preview"));
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
//Sets size to be 61%x90% of the screen size
Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
//Rather frivolous size - fits A4 page width in 1024x768 screen on my desktop
setSize(screen.width * 61 / 100, screen.height * 9 / 10);
//Page view stuff
pageLabel = new JLabel();
JScrollPane previewArea = new JScrollPane(pageLabel);
previewArea.getViewport().setBackground(Color.gray);
previewArea.setMinimumSize(new Dimension(50, 50));
getContentPane().add(previewArea, BorderLayout.CENTER);
//Scaling combobox
scale = new JComboBox();
scale.addItem("25%");
scale.addItem("50%");
scale.addItem("75%");
scale.addItem("100%");
scale.addItem("150%");
scale.addItem("200%");
scale.setMaximumSize(new Dimension(80, 24));
scale.setPreferredSize(new Dimension(80, 24));
scale.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
scaleActionPerformed(e);
}
});
scale.setSelectedItem("100%");
renderer.setScaleFactor(100.0);
//Menu
setJMenuBar(setupMenu());
//Toolbar
JToolBar toolBar = new JToolBar();
toolBar.add(printAction);
toolBar.add(reloadAction);
toolBar.addSeparator();
toolBar.add(firstPageAction);
toolBar.add(previousPageAction);
toolBar.add(nextPageAction);
toolBar.add(lastPageAction);
toolBar.addSeparator();
toolBar.add(new JLabel(translator.getString("Menu.Zoom")));
toolBar.addSeparator();
toolBar.add(scale);
getContentPane().add(toolBar, BorderLayout.NORTH);
//Status bar
JPanel statusBar = new JPanel();
processStatus = new JLabel();
processStatus.setBorder(BorderFactory.createCompoundBorder(
BorderFactory.createEtchedBorder(),
BorderFactory.createEmptyBorder(0, 3, 0, 0)));
infoStatus = new JLabel();
infoStatus.setBorder(BorderFactory.createCompoundBorder(
BorderFactory.createEtchedBorder(),
BorderFactory.createEmptyBorder(0, 3, 0, 0)));
statusBar.setLayout(new GridBagLayout());
processStatus.setPreferredSize(new Dimension(200, 21));
processStatus.setMinimumSize(new Dimension(200, 21));
infoStatus.setPreferredSize(new Dimension(100, 21));
infoStatus.setMinimumSize(new Dimension(100, 21));
statusBar.add(processStatus,
new GridBagConstraints(0, 0, 1, 0, 2.0, 0.0,
GridBagConstraints.CENTER,
GridBagConstraints.HORIZONTAL,
new Insets(0, 0, 0, 3), 0, 0));
statusBar.add(infoStatus,
new GridBagConstraints(1, 0, 1, 0, 1.0, 0.0,
GridBagConstraints.CENTER,
GridBagConstraints.HORIZONTAL,
new Insets(0, 0, 0, 0), 0, 0));
getContentPane().add(statusBar, BorderLayout.SOUTH);
}
/**
* Creates a new menubar to be shown in this window.
* @return the newly created menubar
*/
private JMenuBar setupMenu() {
JMenuBar menuBar = new JMenuBar();
JMenu menu = new JMenu(translator.getString("Menu.File"));
//Adds mostly the same actions, but without icons
menu.add(new Command(translator.getString("Menu.Print")) {
public void doit() {
print();
}
});
// inputHandler must be set to allow reloading
if (inputHandler != null) {
menu.add(new Command(translator.getString("Menu.Reload")) {
public void doit() {
reload();
}
});
}
menu.addSeparator();
menu.add(new Command(translator.getString("Menu.Exit")) {
public void doit() {
dispose();
}
});
menuBar.add(menu);
menu = new JMenu(translator.getString("Menu.View"));
menu.add(new Command(translator.getString("Menu.First.page")) {
public void doit() {
goToFirstPage();
}
});
menu.add(new Command(translator.getString("Menu.Prev.page")) {
public void doit() {
goToPreviousPage();
}
});
menu.add(new Command(translator.getString("Menu.Next.page")) {
public void doit() {
goToNextPage();
}
});
menu.add(new Command(translator.getString("Menu.Last.page")) {
public void doit() {
goToLastPage();
}
});
menu.add(new Command(translator.getString("Menu.Go.to.Page") + " ...") {
public void doit() {
showGoToPageDialog();
}
});
menu.addSeparator();
JMenu subMenu = new JMenu(translator.getString("Menu.Zoom"));
subMenu.add(new Command("25%") {
public void doit() {
setScale(25.0);
}
});
subMenu.add(new Command("50%") {
public void doit() {
setScale(50.0);
}
});
subMenu.add(new Command("75%") {
public void doit() {
setScale(75.0);
}
});
subMenu.add(new Command("100%") {
public void doit() {
setScale(100.0);
}
});
subMenu.add(new Command("150%") {
public void doit() {
setScale(150.0);
}
});
subMenu.add(new Command("200%") {
public void doit() {
setScale(200.0);
}
});
menu.add(subMenu);
menu.addSeparator();
menu.add(new Command(translator.getString("Menu.Default.zoom")) {
public void doit() {
setScale(100.0);
}
});
menuBar.add(menu);
menu = new JMenu(translator.getString("Menu.Help"));
menu.add(new Command(translator.getString("Menu.About")) {
public void doit() {
startHelpAbout();
}
});
menuBar.add(menu);
return menuBar;
}
/**
* Shows the About box
*/
private void startHelpAbout() {
PreviewDialogAboutBox dlg = new PreviewDialogAboutBox(this, translator);
//Centers the box
Dimension dlgSize = dlg.getPreferredSize();
Dimension frmSize = getSize();
Point loc = getLocation();
dlg.setLocation((frmSize.width - dlgSize.width) / 2 + loc.x,
(frmSize.height - dlgSize.height) / 2 + loc.y);
dlg.setVisible(true);
}
/**
* Changes the current visible page
* @param number the page number to go to
*/
private void goToPage(int number) {
currentPage = number;
renderer.setPageNumber(number);
showPage();
}
/**
* Shows the previous page.
*/
private void goToPreviousPage() {
if (currentPage <= 0) {
return;
}
currentPage--;
goToPage(currentPage);
}
/**
* Shows the next page.
*/
private void goToNextPage() {
if (currentPage >= pageCount - 1) {
return;
}
currentPage++;
goToPage(currentPage);
}
/**
* Shows the last page.
*/
private void goToLastPage() {
if (currentPage == pageCount - 1) {
return;
}
currentPage = pageCount - 1;
goToPage(currentPage);
}
/**
* Reloads and reformats document.
*/
private synchronized void reload() {
if (reloader == null || !reloader.isAlive()) {
reloader = new Reloader();
reloader.start();
}
}
/**
* This class is used to reload document in
* a thread safe way.
*/
private class Reloader extends Thread {
public void run() {
if (driver == null) {
driver = new Driver();
driver.setRenderer(renderer);
} else {
driver.reset();
}
pageLabel.setIcon(null);
infoStatus.setText("");
currentPage = 0;
try {
setStatus(translator.getString("Status.Build.FO.tree"));
driver.render(inputHandler);
setStatus(translator.getString("Status.Show"));
} catch (FOPException e) {
reportException(e);
}
}
}
/**
* Shows "go to page" dialog and then goes to the selected page
*/
private void showGoToPageDialog() {
GoToPageDialog d = new GoToPageDialog(this,
translator.getString("Menu.Go.to.Page"), translator);
d.setLocation((int)getLocation().getX() + 50,
(int)getLocation().getY() + 50);
d.setVisible(true);
currentPage = d.getPageNumber();
if (currentPage < 1 || currentPage > pageCount) {
return;
}
currentPage--;
goToPage(currentPage);
}
/**
* Shows the first page.
*/
private void goToFirstPage() {
if (currentPage == 0) {
return;
}
currentPage = 0;
goToPage(currentPage);
}
/**
* Prints the document
*/
private void print() {
PrinterJob pj = PrinterJob.getPrinterJob();
pj.setPageable(renderer);
if (pj.printDialog()) {
try {
pj.print();
} catch (PrinterException pe) {
pe.printStackTrace();
}
}
}
/**
* Scales page image
*/
private void setScale(double scaleFactor) {
if (scaleFactor == 25.0) {
scale.setSelectedIndex(0);
} else if (scaleFactor == 50.0) {
scale.setSelectedIndex(1);
} else if (scaleFactor == 75.0) {
scale.setSelectedIndex(2);
} else if (scaleFactor == 100.0) {
scale.setSelectedIndex(3);
} else if (scaleFactor == 150.0) {
scale.setSelectedIndex(4);
} else if (scaleFactor == 200.0) {
scale.setSelectedIndex(5);
}
renderer.setScaleFactor(scaleFactor);
if (renderer.getNumberOfPages() != 0) {
showPage();
}
}
private void scaleActionPerformed(ActionEvent e) {
String item = (String)scale.getSelectedItem();
setScale(Double.parseDouble(item.substring(0, item.indexOf('%'))));
}
/**
* Sets message to be shown in the status bar in a thread safe way.
* @param message the message
*/
public void setStatus(String message) {
SwingUtilities.invokeLater(new ShowStatus(message));
}
/**
* This class is used to show status in a thread safe way.
*/
private class ShowStatus implements Runnable {
/**
* The message to display
*/
private String message;
/**
* Constructs ShowStatus thread
* @param message message to display
*/
public ShowStatus(String message) {
this.message = message;
}
public void run() {
processStatus.setText(message.toString());
}
}
/**
* Starts rendering process and shows the current page.
*/
public void showPage() {
ShowPageImage viewer = new ShowPageImage();
if (SwingUtilities.isEventDispatchThread()) {
viewer.run();
} else {
SwingUtilities.invokeLater(viewer);
}
}
/**
* This class is used to update the page image
* in a thread safe way.
*/
private class ShowPageImage implements Runnable {
/**
* The run method that does the actual updating
*/
public void run() {
try {
BufferedImage pageImage = null;
Graphics graphics = null;
pageImage = renderer.getPageImage(currentPage);
if (pageImage == null)
return;
graphics = pageImage.getGraphics();
graphics.setColor(Color.black);
graphics.drawRect(0, 0, pageImage.getWidth() - 1,
pageImage.getHeight() - 1);
pageLabel.setIcon(new ImageIcon(pageImage));
pageCount = renderer.getNumberOfPages();
// Update status bar
infoStatus.setText(translator.getString("Status.Page") + " "
+ (currentPage + 1) + " "
+ translator.getString("Status.of") + " " + pageCount);
} catch (FOPException e) {
reportException(e);
}
}
}
/**
* Opens standard Swing error dialog box and reports given exception details.
* @param e the Exception
*/
public void reportException(Exception e) {
String msg = translator.getString("Exception.Occured");
setStatus(msg);
JOptionPane.showMessageDialog(
getContentPane(),
"<html><b>" + msg + ":</b><br>"
+ e.getClass().getName() + "<br>"
+ e.getMessage() + "</html>",
translator.getString("Exception.Error"),
JOptionPane.ERROR_MESSAGE
);
}
}
1.1 xml-fop/src/java/org/apache/fop/render/awt/viewer/PreviewDialogAboutBox.java
Index: PreviewDialogAboutBox.java
===================================================================
/*
* $Id: PreviewDialogAboutBox.java,v 1.1 2003/09/21 20:56:23 gmazza Exp $
* ============================================================================
* The Apache Software License, Version 1.1
* ============================================================================
*
* Copyright (C) 1999-2003 The Apache Software Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modifica-
* tion, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* 3. The end-user documentation included with the redistribution, if any, must
* include the following acknowledgment: "This product includes software
* developed by the Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowledgment may appear in the software itself, if
* and wherever such third-party acknowledgments normally appear.
*
* 4. The names "FOP" and "Apache Software Foundation" must not be used to
* endorse or promote products derived from this software without prior
* written permission. For written permission, please contact
* apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache", nor may
* "Apache" appear in their name, without prior written permission of the
* Apache Software Foundation.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
* DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
* ============================================================================
*
* This software consists of voluntary contributions made by many individuals
* on behalf of the Apache Software Foundation and was originally created by
* James Tauber <jt...@jtauber.com>. For more information on the Apache
* Software Foundation, please see <http://www.apache.org/>.
*/
package org.apache.fop.render.awt.viewer;
//Java
import java.awt.AWTEvent;
import java.awt.BorderLayout;
import java.awt.Dialog;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.GridLayout;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;
import java.awt.event.ActionEvent;
//FOP
import org.apache.fop.apps.Version;
/**
* AWT Viewer's "About" dialog.
* Originally contributed by:
* Juergen Verwohlt: Juergen.Verwohlt@jCatalog.com,
* Rainer Steinkuhle: Rainer.Steinkuhle@jCatalog.com,
* Stanislav Gorkhover: Stanislav.Gorkhover@jCatalog.com
*/
public class PreviewDialogAboutBox extends Dialog implements ActionListener {
private JButton okButton;
/**
* Creates modal "About" dialog, attached to a given parent frame.
* @param parent parent frame
* @param translator Translator for localization
*/
public PreviewDialogAboutBox(Frame parent, Translator translator) {
super(parent, true);
enableEvents(AWTEvent.WINDOW_EVENT_MASK);
setTitle(translator.getString("About.Title"));
setResizable(false);
JPanel panel1 = new JPanel();
JPanel panel2 = new JPanel();
JPanel insetsPanel1 = new JPanel();
JPanel insetsPanel2 = new JPanel();
JPanel insetsPanel3 = new JPanel();
okButton = new JButton();
JLabel imageControl1 = new JLabel();
imageControl1.setIcon(new ImageIcon(getClass().getResource("images/fop.gif")));
JLabel label1 = new JLabel(translator.getString("About.Product"));
JLabel label2 = new JLabel(translator.getString("About.Version")
+ " " + Version.getVersion());
JLabel label3 = new JLabel(translator.getString("About.Copyright"));
panel1.setLayout(new BorderLayout());
panel2.setLayout(new BorderLayout());
insetsPanel1.setLayout(new FlowLayout());
insetsPanel2.setLayout(new FlowLayout());
insetsPanel2.setBorder(new EmptyBorder(10, 10, 10, 10));
insetsPanel3.setLayout(new GridLayout(3, 1));
insetsPanel3.setBorder(new EmptyBorder(10, 10, 10, 10));
okButton.setText(translator.getString("Button.Ok"));
okButton.addActionListener(this);
insetsPanel2.add(imageControl1, null);
panel2.add(insetsPanel2, BorderLayout.WEST);
insetsPanel3.add(label1);
insetsPanel3.add(label2);
insetsPanel3.add(label3);
panel2.add(insetsPanel3, BorderLayout.CENTER);
insetsPanel1.add(okButton);
panel1.add(insetsPanel1, BorderLayout.SOUTH);
panel1.add(panel2, BorderLayout.NORTH);
add(panel1);
pack();
}
/**
* @see java.awt.Window#processWindowEvent(WindowEvent)
*/
protected void processWindowEvent(WindowEvent e) {
if (e.getID() == WindowEvent.WINDOW_CLOSING) {
cancel();
}
super.processWindowEvent(e);
}
private void cancel() {
dispose();
}
/**
* @see java.awt.event.ActionListener#actionPerformed(ActionEvent)
*/
public void actionPerformed(ActionEvent e) {
if (e.getSource() == okButton) {
cancel();
}
}
}
1.1 xml-fop/src/java/org/apache/fop/render/awt/viewer/Translator.java
Index: Translator.java
===================================================================
/*
* $Id: Translator.java,v 1.1 2003/09/21 20:56:23 gmazza Exp $
* ============================================================================
* The Apache Software License, Version 1.1
* ============================================================================
*
* Copyright (C) 1999-2003 The Apache Software Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modifica-
* tion, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* 3. The end-user documentation included with the redistribution, if any, must
* include the following acknowledgment: "This product includes software
* developed by the Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowledgment may appear in the software itself, if
* and wherever such third-party acknowledgments normally appear.
*
* 4. The names "FOP" and "Apache Software Foundation" must not be used to
* endorse or promote products derived from this software without prior
* written permission. For written permission, please contact
* apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache", nor may
* "Apache" appear in their name, without prior written permission of the
* Apache Software Foundation.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
* DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
* ============================================================================
*
* This software consists of voluntary contributions made by many individuals
* on behalf of the Apache Software Foundation and was originally created by
* James Tauber <jt...@jtauber.com>. For more information on the Apache
* Software Foundation, please see <http://www.apache.org/>.
*/
package org.apache.fop.render.awt.viewer;
//Java
import java.util.ResourceBundle;
import java.util.Locale;
/**
* AWT Viewer's localization class, backed up by <code>java.util.ResourceBundle</code>.
* Originally contributed by:
* Stanislav.Gorkhover@jCatalog.com
*/
public class Translator {
private ResourceBundle bundle;
private static String bundleBaseName = "org/apache/fop/render/awt/viewer/resources/Viewer";
/**
* Default constructor, default <code>Locale</code> is used.
*/
public Translator() {
this(Locale.getDefault());
}
/**
* Constructor for a given <code>Locale</code>.
* @param locale Locale to use
*/
public Translator(Locale locale) {
bundle = ResourceBundle.getBundle(bundleBaseName, locale);
}
/**
* Returns localized <code>String</code> for a given key.
* @param key the key
* @return the localized String
*/
public String getString(String key) {
return bundle.getString(key);
}
}
1.1 xml-fop/src/java/org/apache/fop/render/awt/viewer/images/Print.gif
<<Binary file>>
1.1 xml-fop/src/java/org/apache/fop/render/awt/viewer/images/firstpg.gif
<<Binary file>>
1.1 xml-fop/src/java/org/apache/fop/render/awt/viewer/images/fop.gif
<<Binary file>>
1.1 xml-fop/src/java/org/apache/fop/render/awt/viewer/images/lastpg.gif
<<Binary file>>
1.1 xml-fop/src/java/org/apache/fop/render/awt/viewer/images/nextpg.gif
<<Binary file>>
1.1 xml-fop/src/java/org/apache/fop/render/awt/viewer/images/prevpg.gif
<<Binary file>>
1.1 xml-fop/src/java/org/apache/fop/render/awt/viewer/images/reload.gif
<<Binary file>>
1.1 xml-fop/src/java/org/apache/fop/render/awt/viewer/resources/Viewer.properties
Index: Viewer.properties
===================================================================
#############################################################################
# Copyright (C) The Apache Software Foundation. All rights reserved. #
# ------------------------------------------------------------------------- #
# This software is published under the terms of the Apache Software License #
# version 1.1, a copy of which has been included with this distribution in #
# the LICENSE file. #
#############################################################################
#
# AWT viewer's GUI resources. Default bundle.
#
Menu.File=File
Menu.Exit=Exit
Menu.View=View
Menu.First.page=First page
Menu.Prev.page=Previous page
Menu.Next.page=Next page
Menu.Last.page=Last page
Menu.Go.to.Page=Go to Page
Menu.Help=Help
Menu.Default.zoom=Default zoom
Menu.About=About
Menu.Print=Print
Menu.Zoom=Zoom
Menu.Reload=Reload
Title.Preview=Preview
Status.Show=Show
Status.Page=Page
Status.of=of
Status.Build.FO.tree=Generating document...
Exception.Occured=An exception has occured
Exception.Error=Fatal error
Label.Page.number=Page number
Button.Ok=Ok
Button.Cancel=Cancel
About.Product=FOP AWT Viewer
About.Version=Version:
About.Copyright=See http://xml.apache.org/fop
About.Title=About
1.1 xml-fop/src/java/org/apache/fop/render/awt/viewer/resources/Viewer_cs.properties
Index: Viewer_cs.properties
===================================================================
#############################################################################
# Copyright (C) The Apache Software Foundation. All rights reserved. #
# ------------------------------------------------------------------------- #
# This software is published under the terms of the Apache Software License #
# version 1.1, a copy of which has been included with this distribution in #
# the LICENSE file. #
#############################################################################
#
# AWT viewer's GUI resources. Czech bundle.
#
Menu.File=Soubor
Menu.Print=Tisk
Menu.Exit=Konec
Menu.View=Zobrazit
Menu.First.page=Prvn\u00ed strana
Menu.Prev.page=P\u0159edchoz\u00ed strana
Menu.Next.page=Dal\u0161\u00ed strana
Menu.Last.page=Posledn\u00ed strana
Menu.Zoom=Lupa
Menu.Default.zoom=Standardn\u00ed lupa
Menu.Help=N\u00e1pov\u011bda
Menu.About=O aplikaci
Menu.Reload=Obnovit
Menu.Go.to.Page=Jdi na stranu
Title.Preview=N\u00e1hled
Status.Show=Zobrazen\u00ed
Status.Page=Strana
Status.of=z
Status.Build.FO.tree=Vytv\u00e1\u0159\u00edm strom FO...
Label.Page.number=Strana \u010d\u00edslo
Button.Cancel=Zru\u0161it
1.1 xml-fop/src/java/org/apache/fop/render/awt/viewer/resources/Viewer_de.properties
Index: Viewer_de.properties
===================================================================
#############################################################################
# Copyright (C) The Apache Software Foundation. All rights reserved. #
# ------------------------------------------------------------------------- #
# This software is published under the terms of the Apache Software License #
# version 1.1, a copy of which has been included with this distribution in #
# the LICENSE file. #
#############################################################################
#
# AWT viewer's GUI resources. German bundle.
#
Menu.File=Datei
Menu.Exit=Beenden
Menu.View=Anzeige
Menu.First.page=Erste Seite
Menu.Prev.page=Vorherige Seite
Menu.Next.page=N\u00e4chste Seite
Menu.Last.page=Letzte Seite
Menu.Help=Hilfe
Menu.Default.zoom=Standardzoom
Menu.About=\u00dcber
Menu.Print=Drucken
Menu.Go.to.Page=Gehe zur Seite
Title.Preview=Vorschau
Status.Show=Anzeigen
Status.Page=Seite
Status.of=von
Status.Build.FO.tree=Baue FO-Baum
Button.Cancel=Abbrechen
Label.Page.number=Seitennummer
1.1 xml-fop/src/java/org/apache/fop/render/awt/viewer/resources/Viewer_fi.properties
Index: Viewer_fi.properties
===================================================================
#############################################################################
# Copyright (C) The Apache Software Foundation. All rights reserved. #
# ------------------------------------------------------------------------- #
# This software is published under the terms of the Apache Software License #
# version 1.1, a copy of which has been included with this distribution in #
# the LICENSE file. #
#############################################################################
#
# AWT viewer's GUI resources. Finnish bundle.
#
Menu.File=Tiedosto
Menu.Print=Tulosta
Menu.Exit=Poistu
Menu.View=N\u00e4yt\u00e4
Menu.First.page=Ensimm\u00e4inen sivu
Menu.Prev.page=Edellinen sivu
Menu.Next.page=Seuraava sivu
Menu.Last.page=Viimeinen sivu
Menu.Default.zoom=Normaali zoom
Menu.Help=Ohje
Menu.About=Tietoja
Status.Page=Sivu
1.1 xml-fop/src/java/org/apache/fop/render/awt/viewer/resources/Viewer_fr.properties
Index: Viewer_fr.properties
===================================================================
#############################################################################
# Copyright (C) The Apache Software Foundation. All rights reserved. #
# ------------------------------------------------------------------------- #
# This software is published under the terms of the Apache Software License #
# version 1.1, a copy of which has been included with this distribution in #
# the LICENSE file. #
#############################################################################
#
# AWT viewer's GUI resources. French bundle.
#
Menu.File=Fichier
Menu.Print=Imprimer
Menu.Exit=Quitter
Menu.View=Affichage
Menu.First.page=Premi\u00e8re page
Menu.Prev.page=Page pr\u00e9c\u00e9dente
Menu.Next.page=Page suivante
Menu.Last.page=Derni\u00e8re page
Menu.Help=Aide
Menu.Default.zoom=Zoom par d\u00e9faut
Menu.About=A propos
1.1 xml-fop/src/java/org/apache/fop/render/awt/viewer/resources/Viewer_it.properties
Index: Viewer_it.properties
===================================================================
#############################################################################
# Copyright (C) The Apache Software Foundation. All rights reserved. #
# ------------------------------------------------------------------------- #
# This software is published under the terms of the Apache Software License #
# version 1.1, a copy of which has been included with this distribution in #
# the LICENSE file. #
#############################################################################
#
# AWT viewer's GUI resources. Italian bundle.
#
Menu.File=File
Menu.Exit=Esci
Menu.View=Vista
Menu.First.page=Prima pagina
Menu.Prev.page=Pagina precedente
Menu.Next.page=Pagina seguente
Menu.Last.page=Ultima pagina
Menu.Help=Aiuto
Menu.Default.zoom=Zoom di default
Menu.About=Riguardo a...
Menu.Print=Stampa
1.1 xml-fop/src/java/org/apache/fop/render/awt/viewer/resources/Viewer_ja.properties
Index: Viewer_ja.properties
===================================================================
#############################################################################
# Copyright (C) The Apache Software Foundation. All rights reserved. #
# ------------------------------------------------------------------------- #
# This software is published under the terms of the Apache Software License #
# version 1.1, a copy of which has been included with this distribution in #
# the LICENSE file. #
#############################################################################
#
# AWT viewer's GUI resources. Japanese bundle.
#
Menu.File=\u30d5\u30a1\u30a4\u30eb
Menu.Print=\u5370\u5237
Menu.Exit=\u7d42\u4e86
Menu.View=\u8868\u793a
Menu.First.page=\u958b\u59cb\u30da\u30fc\u30b8
Menu.Prev.page=\u524d\u30da\u30fc\u30b8
Menu.Next.page=\u6b21\u30da\u30fc\u30b8
Menu.Last.page=\u6700\u7d42\u30da\u30fc\u30b8
Menu.Go.to.Page=\u30da\u30fc\u30b8\u6307\u5b9a
Menu.Zoom=\u30ba\u30fc\u30e0
Menu.Default.zoom=\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u30ba\u30fc\u30e0
Menu.Help=\u30d8\u30eb\u30d7
Menu.About=\u30d0\u30fc\u30b8\u30e7\u30f3\u60c5\u5831
Status.Page=\u30da\u30fc\u30b8
Status.of=/
Status.Build.FO.tree=FO\u30c4\u30ea\u30fc\u69cb\u7bc9\u4e2d
Status.Show=\u5b8c\u4e86
1.1 xml-fop/src/java/org/apache/fop/render/awt/viewer/resources/Viewer_pl.properties
Index: Viewer_pl.properties
===================================================================
#############################################################################
# Copyright (C) The Apache Software Foundation. All rights reserved. #
# ------------------------------------------------------------------------- #
# This software is published under the terms of the Apache Software License #
# version 1.1, a copy of which has been included with this distribution in #
# the LICENSE file. #
#############################################################################
#
# AWT viewer's GUI resources. Polish bundle.
#
Menu.File=Plik
Menu.Print=Drukuj
Menu.Exit=Zako\u00f1cz
Menu.View=Widok
Menu.First.page=Pierwsza strona
Menu.Prev.page=Poprzednia strona
Menu.Next.page=Nast\u00eapna strona
Menu.Last.page=Ostatnia strona
Menu.Zoom=Powi\u00eakszenie
Menu.Default.zoom=Domy\u00b6lne powiekszenie
Menu.Help=Pomoc
Menu.About=O programie
Status.Page=Strona
1.1 xml-fop/src/java/org/apache/fop/render/awt/viewer/resources/Viewer_ru.properties
Index: Viewer_ru.properties
===================================================================
#############################################################################
# Copyright (C) The Apache Software Foundation. All rights reserved. #
# ------------------------------------------------------------------------- #
# This software is published under the terms of the Apache Software License #
# version 1.1, a copy of which has been included with this distribution in #
# the LICENSE file. #
#############################################################################
#
# AWT viewer's GUI resources. Russain bundle.
#
Menu.File=\u0424\u0430\u0439\u043b
Menu.Exit=\u0412\u044b\u0445\u043e\u0434
Menu.View=\u0412\u0438\u0434
Menu.First.page=\u041f\u0435\u0440\u0432\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430
Menu.Prev.page=\u041f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430
Menu.Next.page=\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430
Menu.Last.page=\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430
Menu.Go.to.Page=\u041f\u0435\u0440\u0435\u0439\u0442\u0438 \u043a \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435
Menu.Help=\u041f\u043e\u043c\u043e\u0449\u044c
Menu.Default.zoom=\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0440
Menu.About=\u041e \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0435
Menu.Print=\u041f\u0435\u0447\u0430\u0442\u044c
Menu.Zoom=\u0420\u0430\u0437\u043c\u0435\u0440
Menu.Reload=\u041e\u0431\u043d\u043e\u0432\u0438\u0442\u044c
Title.Preview=\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440
Status.Show=\u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435
Status.Page=\u0421\u0442\u0440\u0430\u043d\u0438\u0446\u0430
Status.of=\u0438\u0437
Status.Build.FO.tree=\u041f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0435 FO \u0434\u0435\u0440\u0435\u0432\u0430...
Exception.Occured=\u041f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 \u043e\u0448\u0438\u0431\u043a\u0430
Exception.Error=\u041a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430
Label.Page.number=\u041d\u043e\u043c\u0435\u0440 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b
Button.Ok=Ok
Button.Cancel=\u041e\u0442\u043c\u0435\u043d\u0438\u0442\u044c
About.Product=FOP AWT Viewer
About.Version=\u0412\u0435\u0440\u0441\u0438\u044f:
About.Copyright=\u0421\u043c\u043e\u0442\u0440\u0438 http://xml.apache.org/fop
About.Title=\u041e \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0435
1.1 xml-fop/src/java/org/apache/fop/render/awt/viewer/resources/Viewer_tr.properties
Index: Viewer_tr.properties
===================================================================
#############################################################################
# Copyright (C) The Apache Software Foundation. All rights reserved. #
# ------------------------------------------------------------------------- #
# This software is published under the terms of the Apache Software License #
# version 1.1, a copy of which has been included with this distribution in #
# the LICENSE file. #
#############################################################################
#
# AWT viewer's GUI resources. Turkish bundle.
#
Menu.File=Dosya
Menu.Exit=\u00c7\u0131k\u0131\u015f
Menu.View=\u0130zle
Menu.First.page=\u0130lk Sayfa
Menu.Prev.page=\u00d6nceki Sayfa
Menu.Next.page=Sonraki Sayfa
Menu.Last.page=Son Sayfa
Menu.Go.to.Page=Sayfaya Git
Menu.Help=Yard\u0131m
Menu.Default.zoom=Standart zum
Menu.About=Hakk\u0131nda
Menu.Print=Yazd\u0131r
Title.Preview=\u00d6nizleme
Status.Show=G\u00f6ster
Status.Page=Sayfa
Status.of=
Status.Build.FO.tree=FO a\u011fac\u0131n\u0131 yarat
Label.Page.number=Sayfa numaras\u0131
Button.Cancel=Vazge\u00e7
1.18 +18 -25 xml-fop/src/java/org/apache/fop/render/pdf/PDFRenderer.java
Index: PDFRenderer.java
===================================================================
RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/render/pdf/PDFRenderer.java,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -r1.17 -r1.18
--- PDFRenderer.java 19 Sep 2003 16:46:43 -0000 1.17
+++ PDFRenderer.java 21 Sep 2003 20:56:24 -0000 1.18
@@ -590,15 +590,13 @@
}
float bwidth = bps.width / 1000f;
- updateColor(bps.color, false, null);
- currentStream.add(bwidth + " w\n");
-
- drawLine(startx, starty + bwidth / 2, endx, starty + bwidth / 2);
+ updateColor(bps.color, true, null);
+ currentStream.add(startx + " " + starty + " "
+ + width + " " + bwidth + " re\n");
+ currentStream.add("f\n");
}
- bps = (BorderProps)block.getTrait(Trait.BORDER_START);
+ bps = (BorderProps)block.getTrait(Trait.BORDER_AFTER);
if (bps != null) {
- float endy = starty + height;
-
if (!started) {
started = true;
closeText();
@@ -607,16 +605,13 @@
}
float bwidth = bps.width / 1000f;
- updateColor(bps.color, false, null);
- currentStream.add(bwidth + " w\n");
-
- drawLine(startx + bwidth / 2, starty, startx + bwidth / 2, endy);
+ updateColor(bps.color, true, null);
+ currentStream.add(startx + " " + (starty + height - bwidth) + " "
+ + width + " " + bwidth + " re\n");
+ currentStream.add("f\n");
}
- bps = (BorderProps)block.getTrait(Trait.BORDER_AFTER);
+ bps = (BorderProps)block.getTrait(Trait.BORDER_START);
if (bps != null) {
- float sy = starty + height;
- float endx = startx + width;
-
if (!started) {
started = true;
closeText();
@@ -625,16 +620,13 @@
}
float bwidth = bps.width / 1000f;
- updateColor(bps.color, false, null);
- currentStream.add(bwidth + " w\n");
-
- drawLine(startx, sy - bwidth / 2, endx, sy - bwidth / 2);
+ updateColor(bps.color, true, null);
+ currentStream.add(startx + " " + starty + " "
+ + bwidth + " " + height + " re\n");
+ currentStream.add("f\n");
}
bps = (BorderProps)block.getTrait(Trait.BORDER_END);
if (bps != null) {
- float sx = startx + width;
- float endy = starty + height;
-
if (!started) {
started = true;
closeText();
@@ -643,9 +635,10 @@
}
float bwidth = bps.width / 1000f;
- updateColor(bps.color, false, null);
- currentStream.add(bwidth + " w\n");
- drawLine(sx - bwidth / 2, starty, sx - bwidth / 2, endy);
+ updateColor(bps.color, true, null);
+ currentStream.add((startx + width - bwidth) + " " + starty + " "
+ + bwidth + " " + height + " re\n");
+ currentStream.add("f\n");
}
if (started) {
//restoreGraphicsState();
---------------------------------------------------------------------
To unsubscribe, e-mail: fop-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: fop-cvs-help@xml.apache.org