klease      02/02/18 14:49:22

  Modified:    src/org/apache/fop/area CTM.java
               src/org/apache/fop/fo PropertyManager.java
               src/org/apache/fop/fo/pagination RegionBody.java
                        SimplePageMaster.java
  Log:
  Fix some bugs in the CTM logic
  
  Revision  Changes    Path
  1.2       +50 -11    xml-fop/src/org/apache/fop/area/CTM.java
  
  Index: CTM.java
  ===================================================================
  RCS file: /home/cvs/xml-fop/src/org/apache/fop/area/CTM.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- CTM.java  17 Feb 2002 21:59:29 -0000      1.1
  +++ CTM.java  18 Feb 2002 22:49:22 -0000      1.2
  @@ -1,5 +1,5 @@
   /*
  - * $Id: CTM.java,v 1.1 2002/02/17 21:59:29 klease Exp $
  + * $Id: CTM.java,v 1.2 2002/02/18 22:49:22 klease Exp $
    * Copyright (C) 2001 The Apache Software Foundation. All rights reserved.
    * For details on use and redistribution please refer to the
    * LICENSE file included with these sources.
  @@ -21,9 +21,9 @@
   public class CTM implements Serializable {
       private double a,b,c,d,e,f;
   
  -    private static CTM s_CTM_lrtb = new CTM(1,0,0,-1,0,0);
  -    private static CTM s_CTM_rltb = new CTM(-1,0,0,-1,0,0);
  -    private static CTM s_CTM_tbrl = new CTM(0,-1,-1,0,0,0);
  +    private static CTM s_CTM_lrtb = new CTM(1,0,0,1,0,0);
  +    private static CTM s_CTM_rltb = new CTM(-1,0,0,1,0,0);
  +    private static CTM s_CTM_tbrl = new CTM(0,1,-1,0,0,0);
   /**
    * Create the identity matrix
    */
  @@ -61,6 +61,15 @@
           this.f = y;
       }
   
  +    protected CTM(CTM ctm) {
  +     this.a = ctm.a;
  +     this.b = ctm.b;
  +     this.c = ctm.c;
  +     this.d = ctm.d;
  +     this.e = ctm.e;
  +     this.f = ctm.f;
  +    }
  +
       /**
        * Return a CTM which will transform coordinates for a particular writing-mode
        * into normalized first quandrant coordinates.
  @@ -72,13 +81,24 @@
        * CTM is being set.
        */
       static public CTM getWMctm(int wm, int ipd, int bpd) {
  +     CTM wmctm;
           switch (wm) {
               case WritingMode.LR_TB:
  -                return s_CTM_lrtb.translate(0,bpd);
  +                return new CTM(s_CTM_lrtb);
               case WritingMode.RL_TB:
  -                return  s_CTM_rltb.translate(ipd, bpd);
  +             {
  +             wmctm = new CTM(s_CTM_rltb);
  +             wmctm.e = ipd;
  +             return wmctm;
  +             }
  +                //return  s_CTM_rltb.translate(ipd, 0);
               case WritingMode.TB_RL: // CJK
  -                return s_CTM_tbrl.translate(bpd, ipd);
  +             {
  +             wmctm = new CTM(s_CTM_tbrl);
  +             wmctm.e = bpd;
  +             return wmctm;
  +             }
  +                //return s_CTM_tbrl.translate(0, ipd);
            default:
                return null;
           }
  @@ -110,10 +130,25 @@
        * @return CTM The result of rotating this CTM.
        */
       public CTM rotate(double angle) {
  -     double rad = Math.toRadians(angle);
  -     double cos = Math.cos(rad);
  -     double sin = Math.sin(rad);
  -        CTM rotate= new CTM(cos, sin, -sin, cos, 0, 0);
  +     double cos, sin;
  +     if (angle == 90.0) {
  +         cos = 0.0;
  +         sin = 1.0;
  +     }
  +     else if (angle == 270.0) {
  +         cos = 0.0;
  +         sin = -1.0;
  +     }
  +     else if (angle == 180.0) {
  +         cos = -1.0;
  +         sin = 0.0;
  +     }
  +     else {
  +         double rad = Math.toRadians(angle);
  +         cos = Math.cos(rad);
  +         sin = Math.sin(rad);
  +     }
  +        CTM rotate= new CTM(cos,-sin, sin, cos, 0, 0);
           return multiply(rotate);
       }
   
  @@ -166,5 +201,9 @@
               y1t = tmp;
           }
           return new Rectangle(x1t, y1t, x2t-x1t, y2t-y1t);
  +    }
  +
  +    public String toString() {
  +     return "[" + a + " " + b + " " + c + " " + d + " " + e + " " + f + "]";
       }
   }
  
  
  
  1.9       +4 -3      xml-fop/src/org/apache/fop/fo/PropertyManager.java
  
  Index: PropertyManager.java
  ===================================================================
  RCS file: /home/cvs/xml-fop/src/org/apache/fop/fo/PropertyManager.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- PropertyManager.java      17 Feb 2002 21:59:30 -0000      1.8
  +++ PropertyManager.java      18 Feb 2002 22:49:22 -0000      1.9
  @@ -1,5 +1,5 @@
   /*
  - * $Id: PropertyManager.java,v 1.8 2002/02/17 21:59:30 klease Exp $
  + * $Id: PropertyManager.java,v 1.9 2002/02/18 22:49:22 klease Exp $
    * Copyright (C) 2001 The Apache Software Foundation. All rights reserved.
    * For details on use and redistribution please refer to the
    * LICENSE file included with these sources.
  @@ -278,19 +278,20 @@
            * (Note: scrolling between region vp and ref area when doing online 
content!)
            */
            CTM ctm = new CTM(absVPrect.getX(), absVPrect.getY());
  +
            // First transform for rotation
            if (absRefOrient != 0) {
               // Rotation implies translation to keep the drawing area in the
               // first quadrant. Note: rotation is counter-clockwise
                switch (absRefOrient) {
                  case 90:
  -                ctm = ctm.translate(height, 0); // height = absVPrect.width
  +                ctm = ctm.translate(0, width); // width = absVPrect.height
                   break;
               case 180:
                   ctm = ctm.translate(width, height);
                   break;
               case 270:
  -                ctm = ctm.translate(0, width); // width = absVPrect.height
  +                ctm = ctm.translate(height,0); // height = absVPrect.width
                   break;
              }
              ctm = ctm.rotate(absRefOrient);
  
  
  
  1.16      +11 -1     xml-fop/src/org/apache/fop/fo/pagination/RegionBody.java
  
  Index: RegionBody.java
  ===================================================================
  RCS file: /home/cvs/xml-fop/src/org/apache/fop/fo/pagination/RegionBody.java,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- RegionBody.java   17 Feb 2002 21:59:30 -0000      1.15
  +++ RegionBody.java   18 Feb 2002 22:49:22 -0000      1.16
  @@ -1,5 +1,5 @@
   /*
  - * $Id: RegionBody.java,v 1.15 2002/02/17 21:59:30 klease Exp $
  + * $Id: RegionBody.java,v 1.16 2002/02/18 22:49:22 klease Exp $
    * Copyright (C) 2001 The Apache Software Foundation. All rights reserved.
    * For details on use and redistribution please refer to the
    * LICENSE file included with these sources.
  @@ -36,9 +36,18 @@
        // Need these in writing-mode relative coordinates
        // Or shall we get absolute and transform to relative using writing mode?
           MarginProps mProps = propMgr.getMarginProps();
  +     /**
  +     System.err.println("BodyRegion margin props=" + mProps.startIndent + ","
  +                        + mProps.spaceBefore + "," + mProps.endIndent + ","
  +                        + mProps.spaceAfter);
  +
           return new Rectangle( mProps.startIndent, mProps.spaceBefore,
                              reldims.ipd - mProps.startIndent - mProps.endIndent,
                              reldims.bpd - mProps.spaceBefore - mProps.spaceAfter);
  +     **/
  +     return new Rectangle( mProps.marginLeft, mProps.marginTop,
  +                           reldims.ipd - mProps.marginLeft - mProps.marginRight,
  +                           reldims.bpd - mProps.marginTop - mProps.marginBottom);
       }
   
       protected void setRegionTraits(RegionReference r, Rectangle2D absRegVPRect) {
  @@ -66,6 +75,7 @@
       public RegionReference makeRegionReferenceArea(Rectangle2D absRegVPRect) {
        // Should set some column stuff here I think, or put it elsewhere
        BodyRegion body = new BodyRegion();
  +     setRegionTraits(body, absRegVPRect);
           int columnCount=
               this.properties.get("column-count").getNumber().intValue();
           if ((columnCount > 1) && (overflow == Overflow.SCROLL)) {
  
  
  
  1.23      +2 -2      xml-fop/src/org/apache/fop/fo/pagination/SimplePageMaster.java
  
  Index: SimplePageMaster.java
  ===================================================================
  RCS file: /home/cvs/xml-fop/src/org/apache/fop/fo/pagination/SimplePageMaster.java,v
  retrieving revision 1.22
  retrieving revision 1.23
  diff -u -r1.22 -r1.23
  --- SimplePageMaster.java     17 Feb 2002 21:59:30 -0000      1.22
  +++ SimplePageMaster.java     18 Feb 2002 22:49:22 -0000      1.23
  @@ -1,5 +1,5 @@
   /*
  - * $Id: SimplePageMaster.java,v 1.22 2002/02/17 21:59:30 klease Exp $
  + * $Id: SimplePageMaster.java,v 1.23 2002/02/18 22:49:22 klease Exp $
    * Copyright (C) 2001 The Apache Software Foundation. All rights reserved.
    * For details on use and redistribution please refer to the
    * LICENSE file included with these sources.
  @@ -85,7 +85,7 @@
         * The media rectangle itself is (0,0,pageWidth,pageHeight).
         */
        Rectangle pageRefRect =
  -         new Rectangle(mProps.marginLeft, mProps.marginBottom,
  +         new Rectangle(mProps.marginLeft, mProps.marginTop,
                          pageWidth - mProps.marginLeft - mProps.marginRight,
                          pageHeight - mProps.marginTop - mProps.marginBottom);
   
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to