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/01 03:28:51 UTC

cvs commit: xml-fop/src/java/org/apache/fop/rtf/renderer RTFHandler.java

gmazza      2003/08/31 18:28:51

  Modified:    src/java/org/apache/fop/area CachedRenderPagesModel.java
               src/java/org/apache/fop/datatypes ColorType.java
               src/java/org/apache/fop/fo PropertyManager.java
               src/java/org/apache/fop/render AbstractRenderer.java
               src/java/org/apache/fop/render/awt AWTRenderer.java
               src/java/org/apache/fop/render/pdf PDFRenderer.java
               src/java/org/apache/fop/render/ps PSRenderer.java
               src/java/org/apache/fop/rtf/renderer RTFHandler.java
  Log:
  1.  Partial implementation of fo:region-xxx and background-color property
  in AWTRenderer.
  
  2.  ColorType has a new getAWTColor() method, also alpha() function renamed
  to getAlpha(). Definition of Alpha values switched to make consistent with
  java.awt.Color (i.e., 0 is transparent and 1 is opaque).
  
  3.  AbstractRenderer's handleViewportTraits() renamed to handleRegionTraits()
  to lesson confusion (FOP has three types of viewports--
  Page, Region, and Block--handleViewportTraits() was only good for Region.)
  
  Revision  Changes    Path
  1.2       +1 -1      xml-fop/src/java/org/apache/fop/area/CachedRenderPagesModel.java
  
  Index: CachedRenderPagesModel.java
  ===================================================================
  RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/area/CachedRenderPagesModel.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- CachedRenderPagesModel.java	11 Mar 2003 13:05:27 -0000	1.1
  +++ CachedRenderPagesModel.java	1 Sep 2003 01:28:51 -0000	1.2
  @@ -68,7 +68,7 @@
    * A simple cached render pages model.
    * If the page is prepared for later rendering then this saves
    * the page contents to a file and once the page is resolved
  - * the contents a reloaded.
  + * the contents are reloaded.
    */
   public class CachedRenderPagesModel extends RenderPagesModel {
       private Map pageMap = new HashMap();
  
  
  
  1.3       +20 -9     xml-fop/src/java/org/apache/fop/datatypes/ColorType.java
  
  Index: ColorType.java
  ===================================================================
  RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/datatypes/ColorType.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- ColorType.java	5 Jul 2003 03:23:23 -0000	1.2
  +++ ColorType.java	1 Sep 2003 01:28:51 -0000	1.3
  @@ -50,6 +50,7 @@
    */
   package org.apache.fop.datatypes;
   
  +import java.awt.Color;
   import java.io.Serializable;
   import java.util.StringTokenizer;
   
  @@ -61,22 +62,24 @@
       /**
        * the red component
        */
  -    protected float red;
  +    protected float red = 0f;
   
       /**
        * the green component
        */
  -    protected float green;
  +    protected float green = 0f;
   
       /**
        * the blue component
        */
  -    protected float blue;
  +    protected float blue = 0f;
   
       /**
  -     * the alpha component
  +     * the alpha component (indicator of opaque-ness)
  +     * 0.0 - 1.0; 0.0 is completely transparent; 1.0 is completely opaque
  +     * see definition at http://java.sun.com/j2se/1.3/docs/api/java/awt/Color.html
        */
  -    protected float alpha = 0;
  +    protected float alpha = 1f;
   
       /**
        * Main constructor
  @@ -177,7 +180,7 @@
                   this.red = 0;
                   this.green = 0;
                   this.blue = 0;
  -                this.alpha = 1;
  +                this.alpha = 0;
               } else {
                   boolean found = false;
                   for (int count = 0; count < NAMES.length; count++) {
  @@ -225,11 +228,19 @@
       }
   
       /**
  -     * Returns the alpha (transparency) component of the color.
  -     * @return float a value between 0.0 and 1.0
  +     * Returns the alpha (degree of opaque-ness) component of the color.
  +     * @return float a value between 0.0 (fully transparent) and 1.0 (fully opaque)
        */
  -    public float alpha() {
  +    public float getAlpha() {
           return this.alpha;
  +    }
  +
  +    /**
  +     * Returns an AWT instance of this color
  +     * @return float the AWT color represented by this ColorType instance
  +     */
  +    public Color getAWTColor() {
  +        return new Color(this.red, this.green, this.blue, this.alpha);
       }
   
       /**
  
  
  
  1.12      +1 -1      xml-fop/src/java/org/apache/fop/fo/PropertyManager.java
  
  Index: PropertyManager.java
  ===================================================================
  RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/fo/PropertyManager.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- PropertyManager.java	24 Aug 2003 17:46:10 -0000	1.11
  +++ PropertyManager.java	1 Sep 2003 01:28:51 -0000	1.12
  @@ -337,7 +337,7 @@
           CommonBackground bp = new CommonBackground();
           bp.backAttachment = properties.get("background-attachment").getEnum();
           bp.backColor = properties.get("background-color").getColorType();
  -        if (bp.backColor.alpha() == 1) {
  +        if (bp.backColor.getAlpha() == 0) {
               bp.backColor = null;
           }
   
  
  
  
  1.11      +6 -7      xml-fop/src/java/org/apache/fop/render/AbstractRenderer.java
  
  Index: AbstractRenderer.java
  ===================================================================
  RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/render/AbstractRenderer.java,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- AbstractRenderer.java	28 Aug 2003 17:27:42 -0000	1.10
  +++ AbstractRenderer.java	1 Sep 2003 01:28:51 -0000	1.11
  @@ -311,7 +311,7 @@
               startVParea(region.getCTM());
   
               // do after starting viewport area
  -            handleViewportTraits(port);
  +            handleRegionTraits(port);
               if (region.getRegionClass() == Region.BODY_CODE) {
                   renderBodyRegion((BodyRegion) region);
               } else {
  @@ -329,13 +329,12 @@
       protected void startVParea(CTM ctm) { }
   
       /**
  -     * Handle viewport traits.
  -     * This should be overridden to draw border and background
  -     * traits for the viewport area.
  -     *
  -     * @param rv the region viewport area
  +     * Handle the traits for a region
  +     * This is used to draw the traits for the given page region
  +     * (see Sect. 6.4.1.2 of XSL-FO spec.)
  +     * @param rv the RegionViewport whose region is to be drawn
        */
  -    protected void handleViewportTraits(RegionViewport rv) {
  +    protected void handleRegionTraits(RegionViewport rv) {
           // draw border and background
       }
   
  
  
  
  1.10      +129 -8    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.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- AWTRenderer.java	30 Aug 2003 21:14:52 -0000	1.9
  +++ AWTRenderer.java	1 Sep 2003 01:28:51 -0000	1.10
  @@ -86,9 +86,15 @@
   import org.apache.fop.area.Page;
   import org.apache.fop.area.PageViewport;
   import org.apache.fop.area.RegionViewport;
  +import org.apache.fop.area.Trait;
  +import org.apache.fop.datatypes.ColorType;
   import org.apache.fop.fo.FOTreeControl;
  +import org.apache.fop.fo.properties.BackgroundRepeat;
   import org.apache.fop.fonts.Font;
  +import org.apache.fop.image.FopImage;
  +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;
   
  @@ -100,6 +106,8 @@
       protected double scaleFactor = 100.0;
       protected int pageNumber = 0;
       protected Vector pageViewportList = new java.util.Vector();
  +    protected Vector pageList = new java.util.Vector(); 
  +    protected BufferedImage currentPageImage = null;
   
       /** Font configuration */
       protected Document fontInfo;
  @@ -186,6 +194,7 @@
       throws IOException {
           // empty pageViewportList, in case of a reload from PreviewDialog
           pageViewportList.removeAllElements();
  +        pageList.removeAllElements();
       }
   
       public void stopRenderer()
  @@ -242,6 +251,7 @@
       */
       public void renderPage(PageViewport pageViewport)  throws IOException, FOPException {
           pageViewportList.add(pageViewport);
  +        pageList.add(pageViewport.getPage().clone());        
       }
   
       /** Generates a desired page from the renderer's page viewport vector.
  @@ -256,18 +266,23 @@
                   + " page(s) available.");
           }
           PageViewport pageViewport = (PageViewport) pageViewportList.get(pageNum);
  -        Page page = pageViewport.getPage();
  +        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);
  -
  -        BufferedImage pageImage =
  +/*
  +        System.out.println("(Page) X, Y, Width, Height: " + bounds.getX()
  +            + " " + bounds.getY()
  +            + " " + bounds.getWidth()
  +            + " " + bounds.getHeight());
  +*/      
  +        currentPageImage =
               new BufferedImage((int)((pageWidth * (int)scaleFactor) / 100),
                                 (int)((pageHeight * (int)scaleFactor) / 100),
                                 BufferedImage.TYPE_INT_RGB);
   
  -        Graphics2D graphics = pageImage.createGraphics();
  +        Graphics2D graphics = currentPageImage.createGraphics();
           graphics.setRenderingHint (RenderingHints.KEY_FRACTIONALMETRICS,
                                      RenderingHints.VALUE_FRACTIONALMETRICS_ON);
   
  @@ -286,10 +301,116 @@
           graphics.drawLine(0, pageHeight + 2, pageWidth + 2, pageHeight + 2);
           graphics.drawLine(1, pageHeight + 3, pageWidth + 3, pageHeight + 3);
   
  -        this.currentFontName = "";
  -        this.currentFontSize = 0;
  -//      renderPageAreas(page);
  -        return pageImage;
  +        currentFontName = "";
  +        currentFontSize = 0;
  +        renderPageAreas(page);
  +        return currentPageImage;
       }
   
  +    /**
  +     * Handle the traits for a region
  +     * This is used to draw the traits for the given page region
  +     * (see Sect. 6.4.1.2 of XSL-FO spec.)
  +     * @param region the RegionViewport whose region is to be drawn
  +     */
  +    protected void handleRegionTraits(RegionViewport region) {
  +        currentFontName = "";
  +        currentFontSize = 0;
  +        Rectangle2D viewArea = region.getViewArea();
  +/*
  +        if (region.getRegion() != null) {
  +            System.out.print("Region type = " + region.getRegion().getRegionClass());
  +        }
  +        System.out.println("  X, Y, Width, Height: " + viewArea.getX()
  +            + " " + viewArea.getY()
  +            + " " + viewArea.getWidth()
  +            + " " + viewArea.getHeight());
  +*/      
  +        int startX = (int)(((float) viewArea.getX() / 1000f + .5) 
  +            * (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)
  +            * (scaleFactor / 100f));
  +         
  +        drawBackAndBorders(region, startX, startY, width, height);
  +    }
  +    
  +    /**
  +     * Draw the background and borders.
  +     * This draws the background and border traits for an area given
  +     * the position.
  +     *
  +     * @param block the area to get the traits from
  +     * @param startx the start x position
  +     * @param starty the start y position
  +     * @param width the width of the area
  +     * @param height the height of the area
  +     */
  +    protected void drawBackAndBorders(Area block,
  +                    int startx, int starty,
  +                    int width, int height) {
  +
  +        // draw background then border
  +        Graphics2D graphics = currentPageImage.createGraphics();
  +        Trait.Background back;
  +        back = (Trait.Background) block.getTrait(Trait.BACKGROUND);
  +        if (back != null) {
  +
  +            if (back.getColor() != null) {
  +                graphics.setColor(back.getColor().getAWTColor());
  +                graphics.fillRect(startx, starty, width, height);
  +            }
  +            if (back.getURL() != null) {  // TODO: implement
  +                ImageFactory fact = ImageFactory.getInstance();
  +                FopImage fopimage = fact.getImage(back.getURL(), userAgent);
  +                if (fopimage != null && fopimage.load(FopImage.DIMENSIONS, userAgent)) {
  +                    if (back.getRepeat() == BackgroundRepeat.REPEAT) {
  +                        // create a pattern for the image
  +                    } else {
  +                        // place once
  +                        Rectangle2D pos;
  +                        pos = new Rectangle2D.Float((startx + back.getHoriz()) * 1000,
  +                                                    (starty + back.getVertical()) * 1000,
  +                                                    fopimage.getWidth() * 1000,
  +                                                    fopimage.getHeight() * 1000);
  +//                      putImage(back.getURL(), pos);
  +                    }
  +                }
  +            }
  +        }
  +
  +        BorderProps bps = (BorderProps) block.getTrait(Trait.BORDER_BEFORE);
  +        if (bps != null) {
  +            int endx = startx + width;
  +            int bwidth = bps.width;
  +            graphics.setColor(bps.color.getAWTColor());
  +            graphics.drawLine(startx, starty + bwidth / 2, endx, starty + bwidth / 2);
  +        }
  +        bps = (BorderProps) block.getTrait(Trait.BORDER_START);
  +        if (bps != null) {
  +            int endy = starty + height;
  +            int bwidth = bps.width;
  +            graphics.setColor(bps.color.getAWTColor());
  +            graphics.drawLine(startx + bwidth / 2, starty, startx + bwidth / 2, endy);
  +        }
  +        bps = (BorderProps) block.getTrait(Trait.BORDER_AFTER);
  +        if (bps != null) {
  +            int sy = starty + height;
  +            int endx = startx + width;
  +            int bwidth = bps.width;
  +            graphics.setColor(bps.color.getAWTColor());
  +            graphics.drawLine(startx, sy - bwidth / 2, endx, sy - bwidth / 2);
  +        }
  +        bps = (BorderProps) block.getTrait(Trait.BORDER_END);
  +        if (bps != null) {
  +            int sx = startx + width;
  +            int endy = starty + height;
  +            int bwidth = bps.width;
  +            graphics.setColor(bps.color.getAWTColor());
  +            graphics.drawLine(sx - bwidth / 2, starty, sx - bwidth / 2, endy);
  +        }
  +    }
   }
  
  
  
  1.15      +40 -41    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.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- PDFRenderer.java	28 Aug 2003 17:27:42 -0000	1.14
  +++ PDFRenderer.java	1 Sep 2003 01:28:51 -0000	1.15
  @@ -67,46 +67,21 @@
   import org.apache.avalon.framework.configuration.ConfigurationException;
   
   // FOP
  -import org.apache.fop.render.PrintRenderer;
  -import org.apache.fop.render.RendererContext;
  -import org.apache.fop.apps.FOUserAgent;
  -import org.apache.fop.image.FopImage;
  -import org.apache.fop.image.XMLImage;
  -import org.apache.fop.image.ImageFactory;
   import org.apache.fop.apps.FOPException;
  +import org.apache.fop.apps.FOUserAgent;
   import org.apache.fop.apps.Version;
  -import org.apache.fop.fo.properties.RuleStyle;
  -import org.apache.fop.fo.properties.BackgroundRepeat;
  -import org.apache.fop.fonts.Typeface;
  -import org.apache.fop.fonts.FontMetrics;
  -import org.apache.fop.pdf.PDFEncryptionManager;
  -import org.apache.fop.pdf.PDFFilterList;
  -import org.apache.fop.pdf.PDFStream;
  -import org.apache.fop.pdf.PDFDocument;
  -import org.apache.fop.pdf.PDFInfo;
  -import org.apache.fop.pdf.PDFResources;
  -import org.apache.fop.pdf.PDFResourceContext;
  -import org.apache.fop.pdf.PDFText;
  -import org.apache.fop.pdf.PDFXObject;
  -import org.apache.fop.pdf.PDFPage;
  -import org.apache.fop.pdf.PDFState;
  -import org.apache.fop.pdf.PDFLink;
  -import org.apache.fop.pdf.PDFOutline;
  -import org.apache.fop.pdf.PDFAnnotList;
  -import org.apache.fop.pdf.PDFColor;
  -import org.apache.fop.area.extensions.BookmarkData;
  -
  -import org.apache.fop.area.Trait;
  -import org.apache.fop.area.TreeExt;
  -import org.apache.fop.area.CTM;
  -import org.apache.fop.area.Title;
  -import org.apache.fop.area.PageViewport;
  -import org.apache.fop.area.Page;
  -import org.apache.fop.area.RegionViewport;
   import org.apache.fop.area.Area;
   import org.apache.fop.area.Block;
   import org.apache.fop.area.BlockViewport;
  +import org.apache.fop.area.CTM;
   import org.apache.fop.area.LineArea;
  +import org.apache.fop.area.Page;
  +import org.apache.fop.area.PageViewport;
  +import org.apache.fop.area.RegionViewport;
  +import org.apache.fop.area.Title;
  +import org.apache.fop.area.Trait;
  +import org.apache.fop.area.TreeExt;
  +import org.apache.fop.area.extensions.BookmarkData;
   import org.apache.fop.area.inline.Character;
   import org.apache.fop.area.inline.Word;
   import org.apache.fop.area.inline.Viewport;
  @@ -114,10 +89,34 @@
   import org.apache.fop.area.inline.Image;
   import org.apache.fop.area.inline.Leader;
   import org.apache.fop.area.inline.InlineParent;
  +import org.apache.fop.datatypes.ColorType;
  +import org.apache.fop.fo.properties.BackgroundRepeat;
  +import org.apache.fop.fo.properties.RuleStyle;
  +import org.apache.fop.fonts.Typeface;
   import org.apache.fop.fonts.Font;
  +import org.apache.fop.fonts.FontMetrics;
  +import org.apache.fop.image.FopImage;
  +import org.apache.fop.image.ImageFactory;
  +import org.apache.fop.image.XMLImage;
  +import org.apache.fop.pdf.PDFAnnotList;
  +import org.apache.fop.pdf.PDFColor;
  +import org.apache.fop.pdf.PDFDocument;
  +import org.apache.fop.pdf.PDFEncryptionManager;
  +import org.apache.fop.pdf.PDFFilterList;
  +import org.apache.fop.pdf.PDFInfo;
  +import org.apache.fop.pdf.PDFLink;
  +import org.apache.fop.pdf.PDFOutline;
  +import org.apache.fop.pdf.PDFPage;
  +import org.apache.fop.pdf.PDFResourceContext;
  +import org.apache.fop.pdf.PDFResources;
  +import org.apache.fop.pdf.PDFState;
  +import org.apache.fop.pdf.PDFStream;
  +import org.apache.fop.pdf.PDFText;
  +import org.apache.fop.pdf.PDFXObject;
  +import org.apache.fop.render.PrintRenderer;
  +import org.apache.fop.render.RendererContext;
   import org.apache.fop.traits.BorderProps;
  -import org.apache.fop.datatypes.ColorType;
  -import org.apache.fop.apps.*;
  +
   
   /*
   todo:
  @@ -494,12 +493,12 @@
       }
   
       /**
  -     * Handle the viewport traits.
  -     * This is used to draw the traits for a viewport.
  -     *
  -     * @param region the viewport region to handle
  +     * Handle the traits for a region
  +     * This is used to draw the traits for the given page region
  +     * (see Sect. 6.4.1.2 of XSL-FO spec.)
  +     * @param region the RegionViewport whose region is to be drawn
        */
  -    protected void handleViewportTraits(RegionViewport region) {
  +    protected void handleRegionTraits(RegionViewport region) {
           currentFontName = "";
           float startx = 0;
           float starty = 0;
  
  
  
  1.14      +5 -5      xml-fop/src/java/org/apache/fop/render/ps/PSRenderer.java
  
  Index: PSRenderer.java
  ===================================================================
  RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/render/ps/PSRenderer.java,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- PSRenderer.java	28 Aug 2003 17:27:42 -0000	1.13
  +++ PSRenderer.java	1 Sep 2003 01:28:51 -0000	1.14
  @@ -652,12 +652,12 @@
       }
   
       /**
  -     * Handle the viewport traits.
  -     * This is used to draw the traits for a viewport.
  -     *
  -     * @param region the viewport region to handle
  +     * Handle the traits for a region
  +     * This is used to draw the traits for the given page region
  +     * (see Sect. 6.4.1.2 of XSL-FO spec.)
  +     * @param region the RegionViewport whose region is to be drawn
        */
  -    protected void handleViewportTraits(RegionViewport region) {
  +    protected void handleRegionTraits(RegionViewport region) {
           currentFontName = "";
           float startx = 0;
           float starty = 0;
  
  
  
  1.16      +1 -1      xml-fop/src/java/org/apache/fop/rtf/renderer/RTFHandler.java
  
  Index: RTFHandler.java
  ===================================================================
  RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/rtf/renderer/RTFHandler.java,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- RTFHandler.java	20 Aug 2003 18:09:46 -0000	1.15
  +++ RTFHandler.java	1 Sep 2003 01:28:51 -0000	1.16
  @@ -433,7 +433,7 @@
              PDF output, so we will look for the default here & change it to
              white. */
           if ((fopValue.getRed() == 0) && (fopValue.getGreen() == 0)
  -                && (fopValue.getBlue() == 0) && (fopValue.alpha() == 1)) {
  +                && (fopValue.getBlue() == 0) && (fopValue.getAlpha() == 0)) {
               rtfColor = RtfColorTable.getInstance().getColorNumber("white");
           } else {
               rtfColor = convertFOPColorToRTF(fopValue);
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: fop-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: fop-cvs-help@xml.apache.org