keiron      02/02/20 01:30:40

  Modified:    src/org/apache/fop/svg SVGElement.java
  Log:
  made svg context independant so that the svg document does not
  hold onto the fo tree
  
  Revision  Changes    Path
  1.20      +56 -43    xml-fop/src/org/apache/fop/svg/SVGElement.java
  
  Index: SVGElement.java
  ===================================================================
  RCS file: /home/cvs/xml-fop/src/org/apache/fop/svg/SVGElement.java,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- SVGElement.java   15 Nov 2001 08:12:37 -0000      1.19
  +++ SVGElement.java   20 Feb 2002 09:30:40 -0000      1.20
  @@ -1,5 +1,5 @@
   /*
  - * $Id: SVGElement.java,v 1.19 2001/11/15 08:12:37 keiron Exp $
  + * $Id: SVGElement.java,v 1.20 2002/02/20 09:30:40 keiron 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.
  @@ -84,39 +84,17 @@
   
               this.fs = area.getFontState();
   
  -        final Element svgRoot = element;
  +        // TODO - change so doesn't hold onto fo,area tree
  +        Element svgRoot = element;
           /* create an SVG area */
           /* if width and height are zero, get the bounds of the content. */
  -        DefaultSVGContext dc = new DefaultSVGContext() {
  -            public float getPixelToMM() {
  -                // 72 dpi
  -                return 0.35277777777777777778f;
  -            }
  -
  -            public float getViewportWidth(Element e) throws IllegalStateException {
  -                if(e == svgRoot) {
  -                    ForeignObjectArea foa = (ForeignObjectArea)area;
  -                    if(!foa.isContentWidthAuto()) {
  -                        return foa.getContentWidth();
  -                    }
  -                }
  -                return super.getViewportWidth(e);
  -            }
  -
  -            public float getViewportHeight(Element e) throws IllegalStateException {
  -                if(e == svgRoot) {
  -                    ForeignObjectArea foa = (ForeignObjectArea)area;
  -                    if(!foa.isContentHeightAuto()) {
  -                        return foa.getContentHeight();
  -                    }
  -                }
  -                return super.getViewportHeight(e);
  -            }
  -
  -            public List getDefaultFontFamilyValue() {
  -                return FONT_FAMILY;
  -            }
  -        };
  +        FOPSVGContext dc = new FOPSVGContext();
  +        dc.svgRoot = element;
  +        ForeignObjectArea foa = (ForeignObjectArea)area;
  +        dc.cwauto = foa.isContentWidthAuto();
  +        dc.chauto = foa.isContentHeightAuto();
  +        dc.cwidth = foa.getContentWidth();
  +        dc.cheight = foa.getContentHeight();
           ((SVGOMDocument)doc).setSVGContext(dc);
   
           try {
  @@ -145,7 +123,6 @@
           svg.end();
   
           /* add the SVG area to the containing area */
  -        ForeignObjectArea foa = (ForeignObjectArea)area;
           foa.setObject(svg);
           foa.setIntrinsicWidth(svg.getWidth());
           foa.setIntrinsicHeight(svg.getHeight());
  @@ -164,16 +141,6 @@
           buildTopLevel(doc, element);
       }
   
  -    public final static List FONT_FAMILY;
  -    static {
  -        FONT_FAMILY = new ArrayList();
  -        FONT_FAMILY.add("Helvetica");
  -        FONT_FAMILY.add("Times");
  -        FONT_FAMILY.add("Courier");
  -        FONT_FAMILY.add("sans-serif");
  -        FONT_FAMILY.add("serif");
  -    }
  -
       public static Point2D getSize(FontState fs, Element svgRoot) {
           String str;
           UnitProcessor.Context ctx;
  @@ -267,3 +234,49 @@
           }
       }
   }
  +
  +class FOPSVGContext extends DefaultSVGContext {
  +        public boolean cwauto;
  +        public boolean chauto;
  +        public float cwidth;
  +        public float cheight;
  +        public Element svgRoot;
  +
  +            public float getPixelToMM() {
  +                // 72 dpi
  +                return 0.35277777777777777778f;
  +            }
  +
  +            public float getViewportWidth(Element e) throws IllegalStateException {
  +            if(e == svgRoot) {
  +                if(!cwauto) {
  +                   return cwidth;
  +                }
  +            }
  +                return super.getViewportWidth(e);
  +            }
  +
  +            public float getViewportHeight(Element e) throws IllegalStateException {
  +            if(e == svgRoot) {
  +                if(!chauto) {
  +                    return cheight;
  +                }
  +            }
  +                return super.getViewportHeight(e);
  +            }
  +
  +            public List getDefaultFontFamilyValue() {
  +                return FONT_FAMILY;
  +    }
  +
  +    public final static List FONT_FAMILY;
  +    static {
  +        FONT_FAMILY = new ArrayList();
  +        FONT_FAMILY.add("Helvetica");
  +        FONT_FAMILY.add("Times");
  +        FONT_FAMILY.add("Courier");
  +        FONT_FAMILY.add("sans-serif");
  +        FONT_FAMILY.add("serif");
  +    }
  +}
  +
  
  
  

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

Reply via email to