keiron      2002/07/23 04:00:26

  Modified:    src/org/apache/fop/pdf PDFState.java
  Log:
  handles clip better
  added method to restore to a level
  
  Revision  Changes    Path
  1.6       +24 -3     xml-fop/src/org/apache/fop/pdf/PDFState.java
  
  Index: PDFState.java
  ===================================================================
  RCS file: /home/cvs/xml-fop/src/org/apache/fop/pdf/PDFState.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- PDFState.java     4 Jul 2002 14:08:19 -0000       1.5
  +++ PDFState.java     23 Jul 2002 11:00:26 -0000      1.6
  @@ -11,6 +11,8 @@
   import java.util.ArrayList;
   import java.util.HashMap;
   import java.util.Iterator;
  +import java.awt.geom.GeneralPath;
  +import java.awt.geom.Area;
   
   import java.awt.Color;
   import java.awt.Paint;
  @@ -125,6 +127,16 @@
           return stateStack.size();
       }
   
  +    public void restoreLevel(int stack) {
  +        int pos = stack;
  +        while(stateStack.size() > pos + 1) {
  +            stateStack.remove(stateStack.size() - 1);
  +        }
  +        if(stateStack.size() > pos) {
  +            pop();
  +        }
  +    }
  +
       public boolean setLineDash(int[] array, int offset) {
           return false;
       }
  @@ -158,19 +170,28 @@
           return false;
       }
   
  +    /**
  +     * For clips it can start a new state
  +     */
       public boolean checkClip(Shape cl) {
           if(clip == null) {
               if(cl != null) {
                   return true;
               }
  -        } else if(!clip.equals(cl)) {
  +        } else if(!new Area(clip).equals(new Area(cl))) {
               return true;
           }
           return false;
       }
   
       public void setClip(Shape cl) {
  -        clip = cl;
  +        if (clip != null) {
  +            Area newClip = new Area(clip);
  +            newClip.intersect(new Area(cl));
  +            clip = new GeneralPath(newClip);
  +        } else {
  +            clip = cl;
  +        }
       }
   
       public boolean checkTransform(AffineTransform tf) {
  
  
  

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

Reply via email to