You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by vi...@apache.org on 2015/10/19 07:59:38 UTC

svn commit: r1709355 [2/4] - in /poi/trunk/src/ooxml: java/org/apache/poi/xdgf/exceptions/ java/org/apache/poi/xdgf/geom/ java/org/apache/poi/xdgf/usermodel/ java/org/apache/poi/xdgf/usermodel/section/ java/org/apache/poi/xdgf/usermodel/section/geometr...

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xdgf/usermodel/XDGFShape.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xdgf/usermodel/XDGFShape.java?rev=1709355&r1=1709354&r2=1709355&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xdgf/usermodel/XDGFShape.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xdgf/usermodel/XDGFShape.java Mon Oct 19 05:59:37 2015
@@ -41,903 +41,906 @@ import com.microsoft.schemas.office.visi
 import com.microsoft.schemas.office.visio.x2012.main.TextType;
 
 /**
- * A shape is a collection of Geometry Visualization, Format, Text, Images,
- * and Shape Data in a Drawing Page.
+ * A shape is a collection of Geometry Visualization, Format, Text, Images, and
+ * Shape Data in a Drawing Page.
  */
 public class XDGFShape extends XDGFSheet {
 
-	XDGFBaseContents _parentPage;
-	XDGFShape _parent;			// only non-null if a subshape
-	
-	XDGFMaster _master = null;
-	XDGFShape _masterShape = null;
-	
-	XDGFText _text = null;
-	
-	// subshapes if they exist
-	List<XDGFShape> _shapes = null;
-	
-	// properties specific to shapes
-	
-	// center of rotation relative to origin of parent
-	Double _pinX = null;
-	Double _pinY = null;
-	
-	Double _width = null;
-	Double _height = null;
-	
-	// center of rotation relative to self
-	Double _locPinX = null;
-	Double _locPinY = null;
-	
-	// start x coordinate, relative to parent
-	// -> one dimensional shapes only
-	Double _beginX = null;
-	Double _beginY = null;
-	
-	// end x coordinate, relative to parent
-	// -> one dimensional shapes only
-	Double _endX = null;
-	Double _endY = null;
-	
-	Double _angle = null;
-	Double _rotationXAngle = null;
-	Double _rotationYAngle = null;
-	Double _rotationZAngle = null;
-	
-	// end x coordinate, relative to parent
-	Boolean _flipX = null;
-	Boolean _flipY = null;
-	
-	// center of text relative to this shape
-	Double _txtPinX = null;
-	Double _txtPinY = null;
-	
-	// center of text relative to text block
-	Double _txtLocPinX = null;
-	Double _txtLocPinY = null;
-	
-	Double _txtAngle = null;
-	
-	Double _txtWidth = null;
-	Double _txtHeight = null;
-	
-	public XDGFShape(ShapeSheetType shapeSheet, XDGFBaseContents parentPage, XDGFDocument document) {
-		this(null, shapeSheet, parentPage, document);
-	}
-	
-	public XDGFShape(XDGFShape parent, ShapeSheetType shapeSheet, XDGFBaseContents parentPage, XDGFDocument document) {
-		
-		super(shapeSheet, document);
-		
-		_parent = parent;
-		_parentPage = parentPage;
-		
-		TextType text = shapeSheet.getText();
-		if (text != null)
-			_text = new XDGFText(text, this);
-		
-		if (shapeSheet.isSetShapes()) {
-			_shapes = new ArrayList<XDGFShape>();
-			for (ShapeSheetType shape: shapeSheet.getShapes().getShapeArray())
-				_shapes.add(new XDGFShape(this, shape, parentPage, document));
-		}
-		
-		readProperties();
-	}
-
-	@Override
-	public String toString() {
-		if (_parentPage instanceof XDGFMasterContents)
-			return _parentPage + ": <Shape ID=\"" + getID() + "\">";
-		else
-			return "<Shape ID=\"" + getID() + "\">";
-	}
-	
-	protected void readProperties() {
-		
-		_pinX = XDGFCell.maybeGetDouble(_cells, "PinX");
-		_pinY = XDGFCell.maybeGetDouble(_cells, "PinY");
-		_width = XDGFCell.maybeGetDouble(_cells, "Width");
-		_height = XDGFCell.maybeGetDouble(_cells, "Height");
-		_locPinX = XDGFCell.maybeGetDouble(_cells, "LocPinX");
-		_locPinY = XDGFCell.maybeGetDouble(_cells, "LocPinY");
-		_beginX = XDGFCell.maybeGetDouble(_cells, "BeginX");
-		_beginY = XDGFCell.maybeGetDouble(_cells, "BeginY");
-		_endX = XDGFCell.maybeGetDouble(_cells, "EndX");
-		_endY = XDGFCell.maybeGetDouble(_cells, "EndY");
-		
-		_angle = XDGFCell.maybeGetDouble(_cells, "Angle");
-		_rotationXAngle = XDGFCell.maybeGetDouble(_cells, "RotationXAngle");
-		_rotationYAngle = XDGFCell.maybeGetDouble(_cells, "RotationYAngle");
-		_rotationZAngle = XDGFCell.maybeGetDouble(_cells, "RotationZAngle");
-		
-		_flipX = XDGFCell.maybeGetBoolean(_cells, "FlipX");
-		_flipY = XDGFCell.maybeGetBoolean(_cells, "FlipY");
-		
-		_txtPinX = XDGFCell.maybeGetDouble(_cells, "TxtPinX");
-		_txtPinY = XDGFCell.maybeGetDouble(_cells, "TxtPinY");
-		_txtLocPinX = XDGFCell.maybeGetDouble(_cells, "TxtLocPinX");
-		_txtLocPinY = XDGFCell.maybeGetDouble(_cells, "TxtLocPinY");
-		_txtWidth = XDGFCell.maybeGetDouble(_cells, "TxtWidth");
-		_txtHeight = XDGFCell.maybeGetDouble(_cells, "TxtHeight");
-		
-		_txtAngle = XDGFCell.maybeGetDouble(_cells, "TxtAngle");
-	}
-	
-	/**
-	 * Setup top level shapes
-	 * 
-	 * Shapes that have a 'Master' attribute refer to a specific master in 
-	 * the page, whereas shapes with a 'MasterShape' attribute refer to a 
-	 * subshape of a Master.
-	 * 
-	 * 
-	 */
-	protected void setupMaster(XDGFPageContents pageContents, XDGFMasterContents master) {
-		
-		ShapeSheetType obj = getXmlObject();
-		
-		if (obj.isSetMaster()) {
-			_master = pageContents.getMasterById(obj.getMaster());
-			if (_master == null)
-				throw XDGFException.error("refers to non-existant master " + obj.getMaster(),
-										  this);
-			
-			/*
-			 * If a master has one top-level shape, a shape that inherits from
-			 * that master inherits the descendant elements of that master
-			 * shape. If a master has more than one master shape, a shape that
-			 * inherits from that master inherits those master shapes as
-			 * subshapes.
-			 */
-			
-			Collection<XDGFShape> masterShapes = _master.getContent().getTopLevelShapes();
-			
-			switch (masterShapes.size()) {
-			case 0:
-				throw XDGFException.error("Could not retrieve master shape from " + _master, this);
-			case 1:
-				_masterShape = masterShapes.iterator().next();
-				break;
-			default:
-				break;
-			}
-			
-		} else if (obj.isSetMasterShape()) {
-			_masterShape = master.getShapeById(obj.getMasterShape());
-			if (_masterShape == null)
-				throw XDGFException.error("refers to non-existant master shape " + obj.getMasterShape(),
-						  				  this);
-			
-		}
-		
-		setupSectionMasters();
-		
-		if (_shapes != null) {
-			for (XDGFShape shape: _shapes) {
-				shape.setupMaster(pageContents,
-								  _master == null ? master : _master.getContent());
-			}
-		}
-	}
-	
-	protected void setupSectionMasters() {
-		
-		if (_masterShape == null)
-			return;
-		
-		try {
-			for (Entry<String, XDGFSection> section: _sections.entrySet()) {
-				XDGFSection master = _masterShape.getSection(section.getKey());
-				if (master != null)
-					section.getValue().setupMaster(master);
-			}
-			
-			for (Entry<Long, GeometrySection> section: _geometry.entrySet()) {
-				GeometrySection master = _masterShape.getGeometryByIdx(section.getKey());
-				if (master != null)
-					section.getValue().setupMaster(master);
-			}
-		} catch (POIXMLException e) {
-			throw XDGFException.wrap(this.toString(), e);
-		}
-	}
-	
-	@Internal
-	public ShapeSheetType getXmlObject() {
-		return (ShapeSheetType)_sheet;
-	}
-	
-	public long getID() {
-		return getXmlObject().getID();
-	}
-	
-	public String getType() {
-		return getXmlObject().getType();
-	}
-	
-	public String getTextAsString() {
-		XDGFText text = getText();
-		if (text == null)
-			return "";
-		
-		return text.getTextContent();
-	}
-	
-	public boolean hasText() {
-		return _text != null || (_masterShape != null && _masterShape._text != null);
-	}
-
-	@Override
-	public XDGFCell getCell(String cellName) {
-		XDGFCell _cell = super.getCell(cellName);
-		
-		// if not found, ask the master
-		if (_cell == null && _masterShape != null) {
-			_cell = _masterShape.getCell(cellName);
-		}
-		
-		return _cell;
-	}
-
-	public GeometrySection getGeometryByIdx(long idx) {
-		return _geometry.get(idx);
-	}
-	
-	// only available if this is a shape group
-	// -> May be null
-	public List<XDGFShape> getShapes() {
-		return _shapes;
-	}
-
-	// unique to this shape on the page?
-	public String getName() {
-		String name = getXmlObject().getName();
-		if (name == null)
-			return "";
-		return name;
-	}
-	
-	// unique to this shape on the page?
-	public String getShapeType() {
-		String type = getXmlObject().getType();
-		if (type == null)
-			return "";
-		return type;
-	}
-	
-	// name of the symbol that this was derived from
-	public String getSymbolName() {
-		
-		if (_master == null)
-			return "";
-		
-		String name = _master.getName();
-		if (name == null)
-			return "";
-		
-		return name;
-	}
-	
-	public XDGFShape getMasterShape() {
-		return _masterShape;
-	}
-	
-	// returns the parent shape of this shape, if its in a subshape
-	public XDGFShape getParentShape() {
-		return _parent;
-	}
-	
-	public XDGFShape getTopmostParentShape() {
-		XDGFShape top = null;
-		if (_parent != null) {
-			top = _parent.getTopmostParentShape();
-			if (top == null)
-				top = _parent;	
-		}
-					
-		return top;
-	}
-	
-	public boolean hasMaster() {
-		return _master != null;
-	}
-	
-	public boolean hasMasterShape() {
-		return _masterShape != null;
-	}
-	
-	public boolean hasParent() {
-		return _parent != null;
-	}
-	
-	public boolean hasShapes() {
-		return _shapes != null;
-	}
-	
-	public boolean isTopmost() {
-		return _parent == null;
-	}
-
-	public boolean isShape1D() {
-		return getBeginX() != null;
-	}
-	
-	public boolean isDeleted() {
-		return getXmlObject().isSetDel() ? getXmlObject().getDel() : false;
-	}
-	
-	public XDGFText getText() {
-		if (_text == null && _masterShape != null)
-			return _masterShape.getText();
-		
-		return _text;
-	}
-
-	public Double getPinX() {
-		if (_pinX == null && _masterShape != null)
-			return _masterShape.getPinX();
-		
-		if (_pinX == null)
-			throw XDGFException.error("PinX not set!", this);
-		
-		return _pinX;
-	}
-	
-	public Double getPinY() {
-		if (_pinY == null && _masterShape != null)
-			return _masterShape.getPinY();
-		
-		if (_pinY == null)
-			throw XDGFException.error("PinY not specified!", this);
-			
-		return _pinY;
-	}
-	
-	public Double getWidth() {
-		if (_width == null && _masterShape != null)
-			return _masterShape.getWidth();
-		
-		if (_width == null)
-			throw XDGFException.error("Width not specified!", this);
-		
-		return _width;
-	}
-	
-	public Double getHeight() {
-		if (_height == null && _masterShape != null)
-			return _masterShape.getHeight();
-		
-		if (_height == null)
-			throw XDGFException.error("Height not specified!", this);
-		
-		return _height;
-	}
-	
-	public Double getLocPinX() {
-		if (_locPinX == null && _masterShape != null)
-			return _masterShape.getLocPinX();
-		
-		if (_locPinX == null)
-			throw XDGFException.error("LocPinX not specified!", this);
-		
-		return _locPinX;
-	}
-	
-	public Double getLocPinY() {
-		if (_locPinY == null && _masterShape != null)
-			return _masterShape.getLocPinY();
-		
-		if (_locPinY == null)
-			throw XDGFException.error("LocPinY not specified!", this);
-		
-		return _locPinY;
-	}
-	
-	public Double getBeginX() {
-		if (_beginX == null && _masterShape != null)
-			return _masterShape.getBeginX();
-		
-		return _beginX;
-	}
-	
-	public Double getBeginY() {
-		if (_beginY == null && _masterShape != null)
-			return _masterShape.getBeginY();
-		
-		return _beginY;
-	}
-	
-	public Double getEndX() {
-		if (_endX == null && _masterShape != null)
-			return _masterShape.getEndX();
-		
-		return _endX;
-	}
-	
-	public Double getEndY() {
-		if (_endY == null && _masterShape != null)
-			return _masterShape.getEndY();
-		
-		return _endY;
-	}
-	
-	public Double getAngle() {
-		if (_angle == null && _masterShape != null)
-			return _masterShape.getAngle();
-		
-		return _angle;
-	}
-	
-	public Boolean getFlipX() {
-		if (_flipX == null && _masterShape != null)
-			return _masterShape.getFlipX();
-		
-		return _flipX;
-	}
-	
-	public Boolean getFlipY() {
-		if (_flipY == null && _masterShape != null)
-			return _masterShape.getFlipY();
-		
-		return _flipY;
-	}
-	
+    XDGFBaseContents _parentPage;
+    XDGFShape _parent; // only non-null if a subshape
+
+    XDGFMaster _master = null;
+    XDGFShape _masterShape = null;
+
+    XDGFText _text = null;
+
+    // subshapes if they exist
+    List<XDGFShape> _shapes = null;
+
+    // properties specific to shapes
+
+    // center of rotation relative to origin of parent
+    Double _pinX = null;
+    Double _pinY = null;
+
+    Double _width = null;
+    Double _height = null;
+
+    // center of rotation relative to self
+    Double _locPinX = null;
+    Double _locPinY = null;
+
+    // start x coordinate, relative to parent
+    // -> one dimensional shapes only
+    Double _beginX = null;
+    Double _beginY = null;
+
+    // end x coordinate, relative to parent
+    // -> one dimensional shapes only
+    Double _endX = null;
+    Double _endY = null;
+
+    Double _angle = null;
+    Double _rotationXAngle = null;
+    Double _rotationYAngle = null;
+    Double _rotationZAngle = null;
+
+    // end x coordinate, relative to parent
+    Boolean _flipX = null;
+    Boolean _flipY = null;
+
+    // center of text relative to this shape
+    Double _txtPinX = null;
+    Double _txtPinY = null;
+
+    // center of text relative to text block
+    Double _txtLocPinX = null;
+    Double _txtLocPinY = null;
+
+    Double _txtAngle = null;
+
+    Double _txtWidth = null;
+    Double _txtHeight = null;
+
+    public XDGFShape(ShapeSheetType shapeSheet, XDGFBaseContents parentPage,
+            XDGFDocument document) {
+        this(null, shapeSheet, parentPage, document);
+    }
+
+    public XDGFShape(XDGFShape parent, ShapeSheetType shapeSheet,
+            XDGFBaseContents parentPage, XDGFDocument document) {
+
+        super(shapeSheet, document);
+
+        _parent = parent;
+        _parentPage = parentPage;
+
+        TextType text = shapeSheet.getText();
+        if (text != null)
+            _text = new XDGFText(text, this);
+
+        if (shapeSheet.isSetShapes()) {
+            _shapes = new ArrayList<XDGFShape>();
+            for (ShapeSheetType shape : shapeSheet.getShapes().getShapeArray())
+                _shapes.add(new XDGFShape(this, shape, parentPage, document));
+        }
+
+        readProperties();
+    }
+
+    @Override
+    public String toString() {
+        if (_parentPage instanceof XDGFMasterContents)
+            return _parentPage + ": <Shape ID=\"" + getID() + "\">";
+        else
+            return "<Shape ID=\"" + getID() + "\">";
+    }
+
+    protected void readProperties() {
+
+        _pinX = XDGFCell.maybeGetDouble(_cells, "PinX");
+        _pinY = XDGFCell.maybeGetDouble(_cells, "PinY");
+        _width = XDGFCell.maybeGetDouble(_cells, "Width");
+        _height = XDGFCell.maybeGetDouble(_cells, "Height");
+        _locPinX = XDGFCell.maybeGetDouble(_cells, "LocPinX");
+        _locPinY = XDGFCell.maybeGetDouble(_cells, "LocPinY");
+        _beginX = XDGFCell.maybeGetDouble(_cells, "BeginX");
+        _beginY = XDGFCell.maybeGetDouble(_cells, "BeginY");
+        _endX = XDGFCell.maybeGetDouble(_cells, "EndX");
+        _endY = XDGFCell.maybeGetDouble(_cells, "EndY");
+
+        _angle = XDGFCell.maybeGetDouble(_cells, "Angle");
+        _rotationXAngle = XDGFCell.maybeGetDouble(_cells, "RotationXAngle");
+        _rotationYAngle = XDGFCell.maybeGetDouble(_cells, "RotationYAngle");
+        _rotationZAngle = XDGFCell.maybeGetDouble(_cells, "RotationZAngle");
+
+        _flipX = XDGFCell.maybeGetBoolean(_cells, "FlipX");
+        _flipY = XDGFCell.maybeGetBoolean(_cells, "FlipY");
+
+        _txtPinX = XDGFCell.maybeGetDouble(_cells, "TxtPinX");
+        _txtPinY = XDGFCell.maybeGetDouble(_cells, "TxtPinY");
+        _txtLocPinX = XDGFCell.maybeGetDouble(_cells, "TxtLocPinX");
+        _txtLocPinY = XDGFCell.maybeGetDouble(_cells, "TxtLocPinY");
+        _txtWidth = XDGFCell.maybeGetDouble(_cells, "TxtWidth");
+        _txtHeight = XDGFCell.maybeGetDouble(_cells, "TxtHeight");
+
+        _txtAngle = XDGFCell.maybeGetDouble(_cells, "TxtAngle");
+    }
+
+    /**
+     * Setup top level shapes
+     *
+     * Shapes that have a 'Master' attribute refer to a specific master in the
+     * page, whereas shapes with a 'MasterShape' attribute refer to a subshape
+     * of a Master.
+     *
+     *
+     */
+    protected void setupMaster(XDGFPageContents pageContents,
+            XDGFMasterContents master) {
+
+        ShapeSheetType obj = getXmlObject();
+
+        if (obj.isSetMaster()) {
+            _master = pageContents.getMasterById(obj.getMaster());
+            if (_master == null)
+                throw XDGFException.error("refers to non-existant master "
+                        + obj.getMaster(), this);
+
+            /*
+             * If a master has one top-level shape, a shape that inherits from
+             * that master inherits the descendant elements of that master
+             * shape. If a master has more than one master shape, a shape that
+             * inherits from that master inherits those master shapes as
+             * subshapes.
+             */
+
+            Collection<XDGFShape> masterShapes = _master.getContent()
+                    .getTopLevelShapes();
+
+            switch (masterShapes.size()) {
+            case 0:
+                throw XDGFException
+                .error("Could not retrieve master shape from "
+                        + _master, this);
+            case 1:
+                _masterShape = masterShapes.iterator().next();
+                break;
+            default:
+                break;
+            }
+
+        } else if (obj.isSetMasterShape()) {
+            _masterShape = master.getShapeById(obj.getMasterShape());
+            if (_masterShape == null)
+                throw XDGFException.error(
+                        "refers to non-existant master shape "
+                                + obj.getMasterShape(), this);
+
+        }
+
+        setupSectionMasters();
+
+        if (_shapes != null) {
+            for (XDGFShape shape : _shapes) {
+                shape.setupMaster(pageContents, _master == null ? master
+                        : _master.getContent());
+            }
+        }
+    }
+
+    protected void setupSectionMasters() {
+
+        if (_masterShape == null)
+            return;
+
+        try {
+            for (Entry<String, XDGFSection> section : _sections.entrySet()) {
+                XDGFSection master = _masterShape.getSection(section.getKey());
+                if (master != null)
+                    section.getValue().setupMaster(master);
+            }
+
+            for (Entry<Long, GeometrySection> section : _geometry.entrySet()) {
+                GeometrySection master = _masterShape.getGeometryByIdx(section
+                        .getKey());
+                if (master != null)
+                    section.getValue().setupMaster(master);
+            }
+        } catch (POIXMLException e) {
+            throw XDGFException.wrap(this.toString(), e);
+        }
+    }
+
+    @Override
+    @Internal
+    public ShapeSheetType getXmlObject() {
+        return (ShapeSheetType) _sheet;
+    }
+
+    public long getID() {
+        return getXmlObject().getID();
+    }
+
+    public String getType() {
+        return getXmlObject().getType();
+    }
+
+    public String getTextAsString() {
+        XDGFText text = getText();
+        if (text == null)
+            return "";
+
+        return text.getTextContent();
+    }
+
+    public boolean hasText() {
+        return _text != null
+                || (_masterShape != null && _masterShape._text != null);
+    }
+
+    @Override
+    public XDGFCell getCell(String cellName) {
+        XDGFCell _cell = super.getCell(cellName);
+
+        // if not found, ask the master
+        if (_cell == null && _masterShape != null) {
+            _cell = _masterShape.getCell(cellName);
+        }
+
+        return _cell;
+    }
+
+    public GeometrySection getGeometryByIdx(long idx) {
+        return _geometry.get(idx);
+    }
+
+    // only available if this is a shape group
+    // -> May be null
+    public List<XDGFShape> getShapes() {
+        return _shapes;
+    }
+
+    // unique to this shape on the page?
+    public String getName() {
+        String name = getXmlObject().getName();
+        if (name == null)
+            return "";
+        return name;
+    }
+
+    // unique to this shape on the page?
+    public String getShapeType() {
+        String type = getXmlObject().getType();
+        if (type == null)
+            return "";
+        return type;
+    }
+
+    // name of the symbol that this was derived from
+    public String getSymbolName() {
+
+        if (_master == null)
+            return "";
+
+        String name = _master.getName();
+        if (name == null)
+            return "";
+
+        return name;
+    }
+
+    public XDGFShape getMasterShape() {
+        return _masterShape;
+    }
+
+    // returns the parent shape of this shape, if its in a subshape
+    public XDGFShape getParentShape() {
+        return _parent;
+    }
+
+    public XDGFShape getTopmostParentShape() {
+        XDGFShape top = null;
+        if (_parent != null) {
+            top = _parent.getTopmostParentShape();
+            if (top == null)
+                top = _parent;
+        }
+
+        return top;
+    }
+
+    public boolean hasMaster() {
+        return _master != null;
+    }
+
+    public boolean hasMasterShape() {
+        return _masterShape != null;
+    }
+
+    public boolean hasParent() {
+        return _parent != null;
+    }
+
+    public boolean hasShapes() {
+        return _shapes != null;
+    }
+
+    public boolean isTopmost() {
+        return _parent == null;
+    }
+
+    public boolean isShape1D() {
+        return getBeginX() != null;
+    }
+
+    public boolean isDeleted() {
+        return getXmlObject().isSetDel() ? getXmlObject().getDel() : false;
+    }
+
+    public XDGFText getText() {
+        if (_text == null && _masterShape != null)
+            return _masterShape.getText();
+
+        return _text;
+    }
+
+    public Double getPinX() {
+        if (_pinX == null && _masterShape != null)
+            return _masterShape.getPinX();
+
+        if (_pinX == null)
+            throw XDGFException.error("PinX not set!", this);
+
+        return _pinX;
+    }
+
+    public Double getPinY() {
+        if (_pinY == null && _masterShape != null)
+            return _masterShape.getPinY();
+
+        if (_pinY == null)
+            throw XDGFException.error("PinY not specified!", this);
+
+        return _pinY;
+    }
+
+    public Double getWidth() {
+        if (_width == null && _masterShape != null)
+            return _masterShape.getWidth();
+
+        if (_width == null)
+            throw XDGFException.error("Width not specified!", this);
+
+        return _width;
+    }
+
+    public Double getHeight() {
+        if (_height == null && _masterShape != null)
+            return _masterShape.getHeight();
+
+        if (_height == null)
+            throw XDGFException.error("Height not specified!", this);
+
+        return _height;
+    }
+
+    public Double getLocPinX() {
+        if (_locPinX == null && _masterShape != null)
+            return _masterShape.getLocPinX();
+
+        if (_locPinX == null)
+            throw XDGFException.error("LocPinX not specified!", this);
+
+        return _locPinX;
+    }
+
+    public Double getLocPinY() {
+        if (_locPinY == null && _masterShape != null)
+            return _masterShape.getLocPinY();
+
+        if (_locPinY == null)
+            throw XDGFException.error("LocPinY not specified!", this);
+
+        return _locPinY;
+    }
+
+    public Double getBeginX() {
+        if (_beginX == null && _masterShape != null)
+            return _masterShape.getBeginX();
+
+        return _beginX;
+    }
+
+    public Double getBeginY() {
+        if (_beginY == null && _masterShape != null)
+            return _masterShape.getBeginY();
+
+        return _beginY;
+    }
+
+    public Double getEndX() {
+        if (_endX == null && _masterShape != null)
+            return _masterShape.getEndX();
+
+        return _endX;
+    }
+
+    public Double getEndY() {
+        if (_endY == null && _masterShape != null)
+            return _masterShape.getEndY();
+
+        return _endY;
+    }
+
+    public Double getAngle() {
+        if (_angle == null && _masterShape != null)
+            return _masterShape.getAngle();
+
+        return _angle;
+    }
+
+    public Boolean getFlipX() {
+        if (_flipX == null && _masterShape != null)
+            return _masterShape.getFlipX();
+
+        return _flipX;
+    }
+
+    public Boolean getFlipY() {
+        if (_flipY == null && _masterShape != null)
+            return _masterShape.getFlipY();
+
+        return _flipY;
+    }
+
     public Double getTxtPinX() {
-    	if (_txtPinX == null &&
-        	_masterShape != null && _masterShape._txtPinX != null)
+        if (_txtPinX == null && _masterShape != null
+                && _masterShape._txtPinX != null)
             return _masterShape._txtPinX;
-        
+
         if (_txtPinX == null)
-        	return getWidth()*0.5;
-        
+            return getWidth() * 0.5;
+
         return _txtPinX;
     }
 
-
     public Double getTxtPinY() {
-    	if (_txtLocPinY == null &&
-        	_masterShape != null && _masterShape._txtLocPinY != null)
+        if (_txtLocPinY == null && _masterShape != null
+                && _masterShape._txtLocPinY != null)
             return _masterShape._txtLocPinY;
-        
+
         if (_txtPinY == null)
-        	return getHeight()*0.5;
-        
+            return getHeight() * 0.5;
+
         return _txtPinY;
     }
 
-
     public Double getTxtLocPinX() {
-        if (_txtLocPinX == null &&
-        	_masterShape != null && _masterShape._txtLocPinX != null)
+        if (_txtLocPinX == null && _masterShape != null
+                && _masterShape._txtLocPinX != null)
             return _masterShape._txtLocPinX;
-        
+
         if (_txtLocPinX == null)
-        	return getTxtWidth()*0.5;
-        
+            return getTxtWidth() * 0.5;
+
         return _txtLocPinX;
     }
 
-
     public Double getTxtLocPinY() {
-        if (_txtLocPinY == null &&
-        	_masterShape != null && _masterShape._txtLocPinY != null)
+        if (_txtLocPinY == null && _masterShape != null
+                && _masterShape._txtLocPinY != null)
             return _masterShape._txtLocPinY;
-        
+
         if (_txtLocPinY == null)
-        	return getTxtHeight()*0.5;
-        
+            return getTxtHeight() * 0.5;
+
         return _txtLocPinY;
     }
-    
+
     public Double getTxtAngle() {
-		if (_txtAngle == null && _masterShape != null)
-			return _masterShape.getTxtAngle();
-		
-		return _txtAngle;
-	}
-    
+        if (_txtAngle == null && _masterShape != null)
+            return _masterShape.getTxtAngle();
+
+        return _txtAngle;
+    }
+
     public Double getTxtWidth() {
-    	if (_txtWidth == null &&
-        	_masterShape != null && _masterShape._txtWidth != null)
+        if (_txtWidth == null && _masterShape != null
+                && _masterShape._txtWidth != null)
             return _masterShape._txtWidth;
-        
+
         if (_txtWidth == null)
             return getWidth();
-        
+
         return _txtWidth;
     }
 
-
     public Double getTxtHeight() {
-        if (_txtHeight == null &&
-        	_masterShape != null && _masterShape._txtHeight != null)
+        if (_txtHeight == null && _masterShape != null
+                && _masterShape._txtHeight != null)
             return _masterShape._txtHeight;
-        
+
         if (_txtHeight == null)
             return getHeight();
-        
+
         return _txtHeight;
     }
-    
+
+    @Override
+    public Integer getLineCap() {
+
+        Integer lineCap = super.getLineCap();
+        if (lineCap != null)
+            return lineCap;
+
+        // get from master
+        if (_masterShape != null) {
+            return _masterShape.getLineCap();
+        }
+
+        // get default
+        XDGFStyleSheet style = _document.getDefaultLineStyle();
+        if (style != null)
+            return style.getLineCap();
+
+        return null;
+    }
+
     @Override
-  	public Integer getLineCap() {
-  		
-      	Integer lineCap = super.getLineCap();
-  		if (lineCap != null)
-  			return lineCap;
-  		
-  		// get from master
-  		if (_masterShape != null) {
-  			return _masterShape.getLineCap();
-  		}
-  		
-  		// get default
-  		XDGFStyleSheet style = _document.getDefaultLineStyle();
-  		if (style != null)
-  			return style.getLineCap();
-  					
-  		return null;
-  	}
-    
+    public Color getLineColor() {
+
+        Color lineColor = super.getLineColor();
+        if (lineColor != null)
+            return lineColor;
+
+        // get from master
+        if (_masterShape != null) {
+            return _masterShape.getLineColor();
+        }
+
+        // get default
+        XDGFStyleSheet style = _document.getDefaultLineStyle();
+        if (style != null)
+            return style.getLineColor();
+
+        return null;
+    }
+
     @Override
-	public Color getLineColor() {
-		
-    	Color lineColor = super.getLineColor();
-		if (lineColor != null)
-			return lineColor;
-		
-		// get from master
-		if (_masterShape != null) {
-			return _masterShape.getLineColor();
-		}
-		
-		// get default
-		XDGFStyleSheet style = _document.getDefaultLineStyle();
-		if (style != null)
-			return style.getLineColor();
-					
-		return null;
-	}
-      
+    public Integer getLinePattern() {
+
+        Integer linePattern = super.getLinePattern();
+        if (linePattern != null)
+            return linePattern;
+
+        // get from master
+        if (_masterShape != null) {
+            return _masterShape.getLinePattern();
+        }
+
+        // get default
+        XDGFStyleSheet style = _document.getDefaultLineStyle();
+        if (style != null)
+            return style.getLinePattern();
+
+        return null;
+    }
+
     @Override
-	public Integer getLinePattern() {
-		
-    	Integer linePattern = super.getLinePattern();
-		if (linePattern != null)
-			return linePattern;
-		
-		// get from master
-		if (_masterShape != null) {
-			return _masterShape.getLinePattern();
-		}
-		
-		// get default
-		XDGFStyleSheet style = _document.getDefaultLineStyle();
-		if (style != null)
-			return style.getLinePattern();
-					
-		return null;
-	}
-    
+    public Double getLineWeight() {
+
+        Double lineWeight = super.getLineWeight();
+        if (lineWeight != null)
+            return lineWeight;
+
+        // get from master
+        if (_masterShape != null) {
+            return _masterShape.getLineWeight();
+        }
+
+        // get default
+        XDGFStyleSheet style = _document.getDefaultLineStyle();
+        if (style != null)
+            return style.getLineWeight();
+
+        return null;
+    }
+
     @Override
-	public Double getLineWeight() {
-		
-    	Double lineWeight = super.getLineWeight();
-		if (lineWeight != null)
-			return lineWeight;
-		
-		// get from master
-		if (_masterShape != null) {
-			return _masterShape.getLineWeight();
-		}
-		
-		// get default
-		XDGFStyleSheet style = _document.getDefaultLineStyle();
-		if (style != null)
-			return style.getLineWeight();
-					
-		return null;
-	}
-    
     public Color getFontColor() {
-		
-    	Color fontColor = super.getFontColor();
-		if (fontColor != null)
-			return fontColor;
-		
-		// get from master
-		if (_masterShape != null) {
-			return _masterShape.getFontColor();
-		}
-		
-		// get default
-		XDGFStyleSheet style = _document.getDefaultTextStyle();
-		if (style != null)
-			return style.getFontColor();
-					
-		return null;
-	}
-    
-	public Double getFontSize() {
-		
-		Double fontSize = super.getFontSize();
-		if (fontSize != null)
-			return fontSize;
-		
-		// get from master
-		if (_masterShape != null) {
-			return _masterShape.getFontSize();
-		}
-		
-		// get default
-		XDGFStyleSheet style = _document.getDefaultTextStyle();
-		if (style != null)
-			return style.getFontSize();
-					
-		return null;
-	}
-	
-	public Stroke getStroke() {
-		
-		float lineWeight = getLineWeight().floatValue();
-		int cap;
-		int join = BasicStroke.JOIN_MITER;
-		float miterlimit = 10.0f;
-		
-		switch (getLineCap()) {
-		case 0:
-			cap = BasicStroke.CAP_ROUND;
-			break;
-		case 1:
-			cap = BasicStroke.CAP_SQUARE;
-			break;
-		case 2:
-			cap = BasicStroke.CAP_BUTT; // TODO: what does extended mean?
-			break;
-		default:
-			throw new POIXMLException("Invalid line cap specified");
-		}
-		
-		float[] dash = null;
-		
-		// these line patterns are just approximations
-		switch (getLinePattern()) {
-		case 0: // transparent
-			break;
-		case 1: // solid
-			break;
-		case 2:
-			dash = new float[]{5,3};
-			break;
-		case 3:
-			dash = new float[]{1,4};
-			break;
-		case 4:
-			dash = new float[]{6,3,1,3};
-			break;
-		case 5:
-			dash = new float[]{6,3,1,3,1,3};
-			break;
-		case 6:
-			dash = new float[]{1,3,6,3,6,3};
-			break;
-		case 7:
-			dash = new float[]{15,3,6,3};
-			break;
-		case 8:
-			dash = new float[]{6,3,6,3};
-			break;
-		case 9:
-			dash = new float[]{3,2};
-			break;
-		case 10:
-			dash = new float[]{1,2};
-			break;
-		case 11:
-			dash = new float[]{3,2,1,2};
-			break;
-		case 12:
-			dash = new float[]{3,2,1,2,1};
-			break;
-		case 13:
-			dash = new float[]{1,2,3,2,3,2};
-			break;
-		case 14:
-			dash = new float[]{3,2,7,2};
-			break;
-		case 15:
-			dash = new float[]{7,2,3,2,3,2};
-			break;
-		case 16:
-			dash = new float[]{12,6};
-			break;
-		case 17:
-			dash = new float[]{1,6};
-			break;
-		case 18:
-			dash = new float[]{1,6,12,6};
-			break;
-		case 19:
-			dash = new float[]{1,6,1,6,12,6};
-			break;
-		case 20:
-			dash = new float[]{1,6,12,6,12,6};
-			break;
-		case 21:
-			dash = new float[]{30,6,12,6};
-			break;
-		case 22:
-			dash = new float[]{30,6,12,6,12,6};
-			break;
-		case 23:
-			dash = new float[]{1};
-			break;
-		case 254:
-			throw new POIXMLException("Unsupported line pattern value");
-		default:
-			throw new POIXMLException("Invalid line pattern value");
-		}
-		
-		// dashes are in units of line width
-		if (dash != null) {
-			for (int i = 0; i < dash.length; i++) {
-				dash[i] *= lineWeight;
-			}
-		}
-		
-		return new BasicStroke(lineWeight, cap, join, miterlimit, dash, 0);
-	}
-	
-	
-	//
-	// Geometry
-	//
-	
-	public Iterable<GeometrySection> getGeometrySections() {
-		return new CombinedIterable<>(_geometry,
-									  _masterShape != null ? _masterShape._geometry : null);
-	}
-	
-
-	// returns a rectangle in local coordinates
-	public Rectangle2D.Double getBounds() {
-		return new Rectangle2D.Double(0, 0, getWidth(),
-											getHeight());
-	}
-	
-	// returns bounds as a path in local coordinates
-	// -> useful if you need to transform to global coordinates
-	// -> Don't use for 1d objects, fails for infinite line objects
-	public Path2D.Double getBoundsAsPath() {
-		
-		Double w = getWidth();
-		Double h = getHeight();
-		
-		Path2D.Double bounds = new Path2D.Double();
-		bounds.moveTo(0, 0);
-		bounds.lineTo(w, 0);
-		bounds.lineTo(w, h);
-		bounds.lineTo(0, h);
-		bounds.lineTo(0, 0);
-		
-		return bounds;
-	}
-	
-	// returns the path in local coordinates
-	public Path2D.Double getPath() {
-		for (GeometrySection geoSection: getGeometrySections()) {
-			if (geoSection.getNoShow() == true)
-				continue;
-			
-			return geoSection.getPath(this);
-		}
-		
-		return null;
-	}
-	
-	/*
-	 * Returns true if the shape has a drawable geometry associated with it
-	 */
-	public boolean hasGeometry() {
-		for (GeometrySection geoSection: getGeometrySections()) {
-			if (geoSection.getNoShow() == false)
-				return true;
-		}
-		return false;
-	}
-	
-	/**
-	 * Returns a transform that can translate shape-local coordinates
-	 * to the coordinates of its parent shape
-	 */
-	protected AffineTransform getParentTransform() {
-		// TODO: There's probably a better way to do this
-		AffineTransform tr = new AffineTransform();
-		
-		Double locX = getLocPinX();
-		Double locY = getLocPinY();
-		Boolean flipX = getFlipX();
-		Boolean flipY = getFlipY();
-		Double angle = getAngle();
-		
-		tr.translate(-locX, -locY);
-				
-		tr.translate(getPinX(), getPinY());
-
-		// rotate about the origin
-		if (angle != null && Math.abs(angle) > 0.001) {
-			tr.rotate(angle, locX, locY);
-		}
-		
-		// flip if necessary
-		
-		if (flipX != null && flipX) {
-			tr.scale(-1, 1);
-			tr.translate(-getWidth(), 0);
-		}
-		
-		if (flipY != null && flipY) {
-			tr.scale(1, -1);
-			tr.translate(0, -getHeight());
-		}
-		
-		return tr;
-	}
 
-	
+        Color fontColor = super.getFontColor();
+        if (fontColor != null)
+            return fontColor;
+
+        // get from master
+        if (_masterShape != null) {
+            return _masterShape.getFontColor();
+        }
+
+        // get default
+        XDGFStyleSheet style = _document.getDefaultTextStyle();
+        if (style != null)
+            return style.getFontColor();
+
+        return null;
+    }
+
+    @Override
+    public Double getFontSize() {
+
+        Double fontSize = super.getFontSize();
+        if (fontSize != null)
+            return fontSize;
+
+        // get from master
+        if (_masterShape != null) {
+            return _masterShape.getFontSize();
+        }
+
+        // get default
+        XDGFStyleSheet style = _document.getDefaultTextStyle();
+        if (style != null)
+            return style.getFontSize();
+
+        return null;
+    }
+
+    public Stroke getStroke() {
+
+        float lineWeight = getLineWeight().floatValue();
+        int cap;
+        int join = BasicStroke.JOIN_MITER;
+        float miterlimit = 10.0f;
+
+        switch (getLineCap()) {
+        case 0:
+            cap = BasicStroke.CAP_ROUND;
+            break;
+        case 1:
+            cap = BasicStroke.CAP_SQUARE;
+            break;
+        case 2:
+            cap = BasicStroke.CAP_BUTT; // TODO: what does extended mean?
+            break;
+        default:
+            throw new POIXMLException("Invalid line cap specified");
+        }
+
+        float[] dash = null;
+
+        // these line patterns are just approximations
+        switch (getLinePattern()) {
+        case 0: // transparent
+            break;
+        case 1: // solid
+            break;
+        case 2:
+            dash = new float[] { 5, 3 };
+            break;
+        case 3:
+            dash = new float[] { 1, 4 };
+            break;
+        case 4:
+            dash = new float[] { 6, 3, 1, 3 };
+            break;
+        case 5:
+            dash = new float[] { 6, 3, 1, 3, 1, 3 };
+            break;
+        case 6:
+            dash = new float[] { 1, 3, 6, 3, 6, 3 };
+            break;
+        case 7:
+            dash = new float[] { 15, 3, 6, 3 };
+            break;
+        case 8:
+            dash = new float[] { 6, 3, 6, 3 };
+            break;
+        case 9:
+            dash = new float[] { 3, 2 };
+            break;
+        case 10:
+            dash = new float[] { 1, 2 };
+            break;
+        case 11:
+            dash = new float[] { 3, 2, 1, 2 };
+            break;
+        case 12:
+            dash = new float[] { 3, 2, 1, 2, 1 };
+            break;
+        case 13:
+            dash = new float[] { 1, 2, 3, 2, 3, 2 };
+            break;
+        case 14:
+            dash = new float[] { 3, 2, 7, 2 };
+            break;
+        case 15:
+            dash = new float[] { 7, 2, 3, 2, 3, 2 };
+            break;
+        case 16:
+            dash = new float[] { 12, 6 };
+            break;
+        case 17:
+            dash = new float[] { 1, 6 };
+            break;
+        case 18:
+            dash = new float[] { 1, 6, 12, 6 };
+            break;
+        case 19:
+            dash = new float[] { 1, 6, 1, 6, 12, 6 };
+            break;
+        case 20:
+            dash = new float[] { 1, 6, 12, 6, 12, 6 };
+            break;
+        case 21:
+            dash = new float[] { 30, 6, 12, 6 };
+            break;
+        case 22:
+            dash = new float[] { 30, 6, 12, 6, 12, 6 };
+            break;
+        case 23:
+            dash = new float[] { 1 };
+            break;
+        case 254:
+            throw new POIXMLException("Unsupported line pattern value");
+        default:
+            throw new POIXMLException("Invalid line pattern value");
+        }
+
+        // dashes are in units of line width
+        if (dash != null) {
+            for (int i = 0; i < dash.length; i++) {
+                dash[i] *= lineWeight;
+            }
+        }
+
+        return new BasicStroke(lineWeight, cap, join, miterlimit, dash, 0);
+    }
+
+    //
+    // Geometry
+    //
+
+    public Iterable<GeometrySection> getGeometrySections() {
+        return new CombinedIterable<GeometrySection>(_geometry,
+                _masterShape != null ? _masterShape._geometry : null);
+    }
+
+    // returns a rectangle in local coordinates
+    public Rectangle2D.Double getBounds() {
+        return new Rectangle2D.Double(0, 0, getWidth(), getHeight());
+    }
+
+    // returns bounds as a path in local coordinates
+    // -> useful if you need to transform to global coordinates
+    // -> Don't use for 1d objects, fails for infinite line objects
+    public Path2D.Double getBoundsAsPath() {
+
+        Double w = getWidth();
+        Double h = getHeight();
+
+        Path2D.Double bounds = new Path2D.Double();
+        bounds.moveTo(0, 0);
+        bounds.lineTo(w, 0);
+        bounds.lineTo(w, h);
+        bounds.lineTo(0, h);
+        bounds.lineTo(0, 0);
+
+        return bounds;
+    }
+
+    // returns the path in local coordinates
+    public Path2D.Double getPath() {
+        for (GeometrySection geoSection : getGeometrySections()) {
+            if (geoSection.getNoShow() == true)
+                continue;
+
+            return geoSection.getPath(this);
+        }
+
+        return null;
+    }
+
+    /*
+     * Returns true if the shape has a drawable geometry associated with it
+     */
+    public boolean hasGeometry() {
+        for (GeometrySection geoSection : getGeometrySections()) {
+            if (geoSection.getNoShow() == false)
+                return true;
+        }
+        return false;
+    }
+
+    /**
+     * Returns a transform that can translate shape-local coordinates to the
+     * coordinates of its parent shape
+     */
+    protected AffineTransform getParentTransform() {
+        // TODO: There's probably a better way to do this
+        AffineTransform tr = new AffineTransform();
+
+        Double locX = getLocPinX();
+        Double locY = getLocPinY();
+        Boolean flipX = getFlipX();
+        Boolean flipY = getFlipY();
+        Double angle = getAngle();
+
+        tr.translate(-locX, -locY);
+
+        tr.translate(getPinX(), getPinY());
+
+        // rotate about the origin
+        if (angle != null && Math.abs(angle) > 0.001) {
+            tr.rotate(angle, locX, locY);
+        }
+
+        // flip if necessary
+
+        if (flipX != null && flipX) {
+            tr.scale(-1, 1);
+            tr.translate(-getWidth(), 0);
+        }
+
+        if (flipY != null && flipY) {
+            tr.scale(1, -1);
+            tr.translate(0, -getHeight());
+        }
+
+        return tr;
+    }
 
     /**
      * The visitor will first visit this shape, then it's children
-     * 
+     *
      * This is useful because exceptions will be marked with the shapes as it
      * propagates up the shape hierarchy.
      */
-	public void visitShapes(ShapeVisitor visitor, AffineTransform tr, int level) {
-	
-		tr = (AffineTransform)tr.clone();
-		tr.concatenate(getParentTransform());
-		
-		try {
-			if (visitor.accept(this))
-				visitor.visit(this, tr, level);
-			
-			if (_shapes != null) {
-				for (XDGFShape shape: _shapes) {
-					shape.visitShapes(visitor, tr, level + 1);
-				}
-			}
-		} catch (StopVisitingThisBranch e) {
-			// intentionally empty
-		} catch (POIXMLException e) {
-			throw XDGFException.wrap(this.toString(), e);
-		}
-	}
-	
-	/**
-     * The visitor will first visit this shape, then it's children. No transform 
+    public void visitShapes(ShapeVisitor visitor, AffineTransform tr, int level) {
+
+        tr = (AffineTransform) tr.clone();
+        tr.concatenate(getParentTransform());
+
+        try {
+            if (visitor.accept(this))
+                visitor.visit(this, tr, level);
+
+            if (_shapes != null) {
+                for (XDGFShape shape : _shapes) {
+                    shape.visitShapes(visitor, tr, level + 1);
+                }
+            }
+        } catch (StopVisitingThisBranch e) {
+            // intentionally empty
+        } catch (POIXMLException e) {
+            throw XDGFException.wrap(this.toString(), e);
+        }
+    }
+
+    /**
+     * The visitor will first visit this shape, then it's children. No transform
      * is calculated for this visit
-     * 
+     *
      * This is useful because exceptions will be marked with the shapes as it
      * propagates up the shape hierarchy.
      */
-	public void visitShapes(ShapeVisitor visitor, int level) {
-	
-		try {
-			if (visitor.accept(this))
-				visitor.visit(this, null, level);
-			
-			if (_shapes != null) {
-				for (XDGFShape shape: _shapes) {
-					shape.visitShapes(visitor, level + 1);
-				}
-			}
-		} catch (StopVisitingThisBranch e) {
-			// intentionally empty
-		} catch (POIXMLException e) {
-			throw XDGFException.wrap(this.toString(), e);
-		}
-	}
-	
+    public void visitShapes(ShapeVisitor visitor, int level) {
+
+        try {
+            if (visitor.accept(this))
+                visitor.visit(this, null, level);
+
+            if (_shapes != null) {
+                for (XDGFShape shape : _shapes) {
+                    shape.visitShapes(visitor, level + 1);
+                }
+            }
+        } catch (StopVisitingThisBranch e) {
+            // intentionally empty
+        } catch (POIXMLException e) {
+            throw XDGFException.wrap(this.toString(), e);
+        }
+    }
+
 }

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xdgf/usermodel/XDGFSheet.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xdgf/usermodel/XDGFSheet.java?rev=1709355&r1=1709354&r2=1709355&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xdgf/usermodel/XDGFSheet.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xdgf/usermodel/XDGFSheet.java Mon Oct 19 05:59:37 2015
@@ -39,166 +39,166 @@ import com.microsoft.schemas.office.visi
  */
 public abstract class XDGFSheet {
 
-	protected XDGFDocument _document;
-	protected SheetType _sheet;
+    protected XDGFDocument _document;
+    protected SheetType _sheet;
 
-	// cells
-	protected Map<String, XDGFCell> _cells = new HashMap<>();
-	
-	// sections
-	protected Map<String, XDGFSection> _sections = new HashMap<>();
-	
-	// special: geometry sections (key: index, value: section)
-	protected SortedMap<Long, GeometrySection> _geometry = new TreeMap<>();
-	
-	// special: character section
-	protected CharacterSection _character = null;
-	
-	public XDGFSheet(SheetType sheet, XDGFDocument document) {
-		try {
-			_sheet = sheet;
-			_document = document;
-			
-			for (CellType cell: sheet.getCellArray()) {
-				if (_cells.containsKey(cell.getN()))
-					throw new POIXMLException("Unexpected duplicate cell " + cell.getN()); // this shouldn't happen
-				
-				_cells.put(cell.getN(), new XDGFCell(cell));
-			}
-			
-			// only geometry sections can have duplicate names
-			// sections can be found in the master too, if there are no attributes here!
-			
-			// no idea if I have a master in this space. go figure.
-			
-			for (SectionType section: sheet.getSectionArray()) {
-				String name = section.getN();
-				if (name.equals("Geometry")) {
-					_geometry.put(section.getIX(), new GeometrySection(section, this));
-				} else if (name.equals("Character")) {
-					_character = new CharacterSection(section, this);
-				} else {
-					_sections.put(name, XDGFSection.load(section, this));
-				}
-			}
-		} catch (POIXMLException e) {
-			throw XDGFException.wrap(this.toString(), e);
-		}
-	}
-	
-	abstract SheetType getXmlObject();
-	
-	public XDGFDocument getDocument() {
-		return _document;
-	}
-	
-	// A cell is really just a setting
-	public XDGFCell getCell(String cellName) {
-		return _cells.get(cellName);
-	}
-	
-	public XDGFSection getSection(String sectionName) {
-		return _sections.get(sectionName);
-	}
-	
-	public XDGFStyleSheet getLineStyle() {
-		if (!_sheet.isSetLineStyle())
-			return null;
-		
-		return _document.getStyleById(_sheet.getLineStyle());
-	}
-	
-	public XDGFStyleSheet getFillStyle() {
-		if (!_sheet.isSetFillStyle())
-			return null;
-		
-		return _document.getStyleById(_sheet.getFillStyle());
-	}
-	
-	public XDGFStyleSheet getTextStyle() {
-		if (!_sheet.isSetTextStyle())
-			return null;
-		
-		return _document.getStyleById(_sheet.getTextStyle());
-	}
-	
-	public Color getFontColor() {
-		Color fontColor = null;
-		
-		if (_character != null) {
-			fontColor = _character.getFontColor();
-			if (fontColor != null)
-				return fontColor;
-		}
-		
-		XDGFStyleSheet style = getTextStyle();
-		if (style != null)
-			return style.getFontColor();
-		
-		return null;
-	}
-	
-	public Double getFontSize() {
-		Double fontSize = null;
-		
-		if (_character != null) {
-			fontSize = _character.getFontSize();
-			if (fontSize != null)
-				return fontSize;
-		}
-		
-		XDGFStyleSheet style = getTextStyle();
-		if (style != null)
-			return style.getFontSize();
-		
-		return null;
-	}
-	
-	public Integer getLineCap() {
-		Integer lineCap = XDGFCell.maybeGetInteger(_cells, "LineCap");
-		if (lineCap != null)
-			return lineCap;
-		
-		XDGFStyleSheet style = getLineStyle();
-		if (style != null)
-			return style.getLineCap();
-		
-		return null;
-	}
-	
-	public Color getLineColor() {
-		String lineColor = XDGFCell.maybeGetString(_cells, "LineColor");
-		if (lineColor != null)
-			return Color.decode(lineColor);
-		
-		XDGFStyleSheet style = getLineStyle();
-		if (style != null)
-			return style.getLineColor();
-		
-		return null;
-	}
-
-	public Integer getLinePattern() {
-		Integer linePattern = XDGFCell.maybeGetInteger(_cells, "LinePattern");
-		if (linePattern != null)
-			return linePattern;
-		
-		XDGFStyleSheet style = getLineStyle();
-		if (style != null)
-			return style.getLinePattern();
-		
-		return null;
-	}
-	
-	public Double getLineWeight() {
-		Double lineWeight = XDGFCell.maybeGetDouble(_cells, "LineWeight");
-		if (lineWeight != null)
-			return lineWeight;
-		
-		XDGFStyleSheet style = getLineStyle();
-		if (style != null)
-			return style.getLineWeight();
-		
-		return null;
-	}	
+    // cells
+    protected Map<String, XDGFCell> _cells = new HashMap<String, XDGFCell>();
+
+    // sections
+    protected Map<String, XDGFSection> _sections = new HashMap<String, XDGFSection>();
+
+    // special: geometry sections (key: index, value: section)
+    protected SortedMap<Long, GeometrySection> _geometry = new TreeMap<Long, GeometrySection>();
+
+    // special: character section
+    protected CharacterSection _character = null;
+
+    public XDGFSheet(SheetType sheet, XDGFDocument document) {
+        try {
+            _sheet = sheet;
+            _document = document;
+
+            for (CellType cell: sheet.getCellArray()) {
+                if (_cells.containsKey(cell.getN()))
+                    throw new POIXMLException("Unexpected duplicate cell " + cell.getN()); // this shouldn't happen
+
+                _cells.put(cell.getN(), new XDGFCell(cell));
+            }
+
+            // only geometry sections can have duplicate names
+            // sections can be found in the master too, if there are no attributes here!
+
+            // no idea if I have a master in this space. go figure.
+
+            for (SectionType section: sheet.getSectionArray()) {
+                String name = section.getN();
+                if (name.equals("Geometry")) {
+                    _geometry.put(section.getIX(), new GeometrySection(section, this));
+                } else if (name.equals("Character")) {
+                    _character = new CharacterSection(section, this);
+                } else {
+                    _sections.put(name, XDGFSection.load(section, this));
+                }
+            }
+        } catch (POIXMLException e) {
+            throw XDGFException.wrap(this.toString(), e);
+        }
+    }
+
+    abstract SheetType getXmlObject();
+
+    public XDGFDocument getDocument() {
+        return _document;
+    }
+
+    // A cell is really just a setting
+    public XDGFCell getCell(String cellName) {
+        return _cells.get(cellName);
+    }
+
+    public XDGFSection getSection(String sectionName) {
+        return _sections.get(sectionName);
+    }
+
+    public XDGFStyleSheet getLineStyle() {
+        if (!_sheet.isSetLineStyle())
+            return null;
+
+        return _document.getStyleById(_sheet.getLineStyle());
+    }
+
+    public XDGFStyleSheet getFillStyle() {
+        if (!_sheet.isSetFillStyle())
+            return null;
+
+        return _document.getStyleById(_sheet.getFillStyle());
+    }
+
+    public XDGFStyleSheet getTextStyle() {
+        if (!_sheet.isSetTextStyle())
+            return null;
+
+        return _document.getStyleById(_sheet.getTextStyle());
+    }
+
+    public Color getFontColor() {
+        Color fontColor = null;
+
+        if (_character != null) {
+            fontColor = _character.getFontColor();
+            if (fontColor != null)
+                return fontColor;
+        }
+
+        XDGFStyleSheet style = getTextStyle();
+        if (style != null)
+            return style.getFontColor();
+
+        return null;
+    }
+
+    public Double getFontSize() {
+        Double fontSize = null;
+
+        if (_character != null) {
+            fontSize = _character.getFontSize();
+            if (fontSize != null)
+                return fontSize;
+        }
+
+        XDGFStyleSheet style = getTextStyle();
+        if (style != null)
+            return style.getFontSize();
+
+        return null;
+    }
+
+    public Integer getLineCap() {
+        Integer lineCap = XDGFCell.maybeGetInteger(_cells, "LineCap");
+        if (lineCap != null)
+            return lineCap;
+
+        XDGFStyleSheet style = getLineStyle();
+        if (style != null)
+            return style.getLineCap();
+
+        return null;
+    }
+
+    public Color getLineColor() {
+        String lineColor = XDGFCell.maybeGetString(_cells, "LineColor");
+        if (lineColor != null)
+            return Color.decode(lineColor);
+
+        XDGFStyleSheet style = getLineStyle();
+        if (style != null)
+            return style.getLineColor();
+
+        return null;
+    }
+
+    public Integer getLinePattern() {
+        Integer linePattern = XDGFCell.maybeGetInteger(_cells, "LinePattern");
+        if (linePattern != null)
+            return linePattern;
+
+        XDGFStyleSheet style = getLineStyle();
+        if (style != null)
+            return style.getLinePattern();
+
+        return null;
+    }
+
+    public Double getLineWeight() {
+        Double lineWeight = XDGFCell.maybeGetDouble(_cells, "LineWeight");
+        if (lineWeight != null)
+            return lineWeight;
+
+        XDGFStyleSheet style = getLineStyle();
+        if (style != null)
+            return style.getLineWeight();
+
+        return null;
+    }
 }

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xdgf/usermodel/XDGFStyleSheet.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xdgf/usermodel/XDGFStyleSheet.java?rev=1709355&r1=1709354&r2=1709355&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xdgf/usermodel/XDGFStyleSheet.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xdgf/usermodel/XDGFStyleSheet.java Mon Oct 19 05:59:37 2015
@@ -22,15 +22,15 @@ import org.apache.poi.util.Internal;
 import com.microsoft.schemas.office.visio.x2012.main.StyleSheetType;
 
 public class XDGFStyleSheet extends XDGFSheet {
-	
-	public XDGFStyleSheet(StyleSheetType styleSheet, XDGFDocument document) {
-		super(styleSheet, document);
-	}
-	
-	@Internal
-	public StyleSheetType getXmlObject() {
-		return (StyleSheetType)_sheet;
-	}
-	
-	
+
+    public XDGFStyleSheet(StyleSheetType styleSheet, XDGFDocument document) {
+        super(styleSheet, document);
+    }
+
+    @Override
+    @Internal
+    public StyleSheetType getXmlObject() {
+        return (StyleSheetType) _sheet;
+    }
+
 }

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xdgf/usermodel/XDGFText.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xdgf/usermodel/XDGFText.java?rev=1709355&r1=1709354&r2=1709355&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xdgf/usermodel/XDGFText.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xdgf/usermodel/XDGFText.java Mon Oct 19 05:59:37 2015
@@ -33,118 +33,125 @@ import com.microsoft.schemas.office.visi
 
 public class XDGFText {
 
-	TextType _text;
-	XDGFShape _parent;
-	
-	public XDGFText(TextType text, XDGFShape parent) {
-		_text = text;
-		_parent = parent;
-	}
-	
-	@Internal
-	TextType getXmlObject() {
-		return _text;
-	}
-	
-	public String getTextContent() {
-		// casting here is wrong, but there's no other way of getting the value,
-		// as it doesn't seem to be exposed by complex types (even though this
-		// is a mixed type)
-		return ((TextTypeImpl)_text).getStringValue();
-	}
-	
-	// these are in the shape coordinate system
-	// -> See https://msdn.microsoft.com/en-us/library/hh644132(v=office.12).aspx
-	public Rectangle2D.Double getTextBounds() {
-		
-		double txtPinX = _parent.getTxtPinX();
-		double txtPinY = _parent.getTxtPinY();
-		
-		double txtLocPinX = _parent.getTxtLocPinX();
-		double txtLocPinY = _parent.getTxtLocPinY();
-		
-		double txtWidth = _parent.getTxtWidth();
-		double txtHeight = _parent.getTxtHeight();
-		
-		double x = txtPinX - txtLocPinX;
-		double y = txtPinY - txtLocPinY;
-		
-		return new Rectangle2D.Double(x, y, txtWidth, txtHeight);
-	}
-	
-	// returns bounds as a path in local coordinates
-	// -> useful if you need to transform to global coordinates
-	public Path2D.Double getBoundsAsPath() {
-		
-		Rectangle2D.Double rect = getTextBounds();
-		Double w = rect.getWidth();
-		Double h = rect.getHeight();
-		
-		Path2D.Double bounds = new Path2D.Double();
-		bounds.moveTo(0, 0);
-		bounds.lineTo(w, 0);
-		bounds.lineTo(w, h);
-		bounds.lineTo(0, h);
-		bounds.lineTo(0, 0);
-		
-		return bounds;
-	}
-	
-	// center of text in local coordinates
-	public Point2D.Double getTextCenter() {
-		return new Point2D.Double(_parent.getTxtLocPinX(), _parent.getTxtLocPinY());
-	}
-	
-	// assumes graphics is set properly to draw in the right style
-	public void draw(Graphics2D graphics) {
-
-		String textContent = getTextContent();
-		if (textContent.length() == 0)
-			return;
-		
-		Rectangle2D.Double bounds = getTextBounds();
-		
-		String[] lines = textContent.trim().split("\n");
-		FontRenderContext frc = graphics.getFontRenderContext();
-		Font font = graphics.getFont();
-		
-		AffineTransform oldTr = graphics.getTransform();
-		
-		// visio is in flipped coordinates, so translate the text to be in the right place
-		Boolean flipX = _parent.getFlipX();
-		Boolean flipY = _parent.getFlipY();
-		
-		if (flipY == null || !_parent.getFlipY()) {
-			graphics.translate(bounds.x, bounds.y);
-			graphics.scale(1, -1);
-			graphics.translate(0, -bounds.height + graphics.getFontMetrics().getMaxCharBounds(graphics).getHeight());
-		}
-		
-		if (flipX != null && _parent.getFlipX()) {
-			graphics.scale(-1, 1);
-			graphics.translate(-bounds.width, 0);
-		}
-		
-		Double txtAngle = _parent.getTxtAngle();
-		if (txtAngle != null && Math.abs(txtAngle) > 0.01)
-			graphics.rotate(txtAngle);
-			
-		float nextY = 0;
-		for (String line: lines) {
-			
-			if (line.length() == 0)
-				continue;
-			
-			TextLayout layout = new TextLayout(line, font, frc);
-			
-			if (layout.isLeftToRight())
-				layout.draw(graphics, 0, nextY);
-			else
-				layout.draw(graphics, (float)(bounds.width - layout.getAdvance()), nextY);
-			
-			nextY += layout.getAscent() + layout.getDescent() + layout.getLeading();
-		}
-		
-		graphics.setTransform(oldTr);
-	}
+    TextType _text;
+    XDGFShape _parent;
+
+    public XDGFText(TextType text, XDGFShape parent) {
+        _text = text;
+        _parent = parent;
+    }
+
+    @Internal
+    TextType getXmlObject() {
+        return _text;
+    }
+
+    public String getTextContent() {
+        // casting here is wrong, but there's no other way of getting the value,
+        // as it doesn't seem to be exposed by complex types (even though this
+        // is a mixed type)
+        return ((TextTypeImpl) _text).getStringValue();
+    }
+
+    // these are in the shape coordinate system
+    // -> See
+    // https://msdn.microsoft.com/en-us/library/hh644132(v=office.12).aspx
+    public Rectangle2D.Double getTextBounds() {
+
+        double txtPinX = _parent.getTxtPinX();
+        double txtPinY = _parent.getTxtPinY();
+
+        double txtLocPinX = _parent.getTxtLocPinX();
+        double txtLocPinY = _parent.getTxtLocPinY();
+
+        double txtWidth = _parent.getTxtWidth();
+        double txtHeight = _parent.getTxtHeight();
+
+        double x = txtPinX - txtLocPinX;
+        double y = txtPinY - txtLocPinY;
+
+        return new Rectangle2D.Double(x, y, txtWidth, txtHeight);
+    }
+
+    // returns bounds as a path in local coordinates
+    // -> useful if you need to transform to global coordinates
+    public Path2D.Double getBoundsAsPath() {
+
+        Rectangle2D.Double rect = getTextBounds();
+        Double w = rect.getWidth();
+        Double h = rect.getHeight();
+
+        Path2D.Double bounds = new Path2D.Double();
+        bounds.moveTo(0, 0);
+        bounds.lineTo(w, 0);
+        bounds.lineTo(w, h);
+        bounds.lineTo(0, h);
+        bounds.lineTo(0, 0);
+
+        return bounds;
+    }
+
+    // center of text in local coordinates
+    public Point2D.Double getTextCenter() {
+        return new Point2D.Double(_parent.getTxtLocPinX(),
+                _parent.getTxtLocPinY());
+    }
+
+    // assumes graphics is set properly to draw in the right style
+    public void draw(Graphics2D graphics) {
+
+        String textContent = getTextContent();
+        if (textContent.length() == 0)
+            return;
+
+        Rectangle2D.Double bounds = getTextBounds();
+
+        String[] lines = textContent.trim().split("\n");
+        FontRenderContext frc = graphics.getFontRenderContext();
+        Font font = graphics.getFont();
+
+        AffineTransform oldTr = graphics.getTransform();
+
+        // visio is in flipped coordinates, so translate the text to be in the
+        // right place
+        Boolean flipX = _parent.getFlipX();
+        Boolean flipY = _parent.getFlipY();
+
+        if (flipY == null || !_parent.getFlipY()) {
+            graphics.translate(bounds.x, bounds.y);
+            graphics.scale(1, -1);
+            graphics.translate(0, -bounds.height
+                    + graphics.getFontMetrics().getMaxCharBounds(graphics)
+                    .getHeight());
+        }
+
+        if (flipX != null && _parent.getFlipX()) {
+            graphics.scale(-1, 1);
+            graphics.translate(-bounds.width, 0);
+        }
+
+        Double txtAngle = _parent.getTxtAngle();
+        if (txtAngle != null && Math.abs(txtAngle) > 0.01)
+            graphics.rotate(txtAngle);
+
+        float nextY = 0;
+        for (String line : lines) {
+
+            if (line.length() == 0)
+                continue;
+
+            TextLayout layout = new TextLayout(line, font, frc);
+
+            if (layout.isLeftToRight())
+                layout.draw(graphics, 0, nextY);
+            else
+                layout.draw(graphics,
+                        (float) (bounds.width - layout.getAdvance()), nextY);
+
+            nextY += layout.getAscent() + layout.getDescent()
+                    + layout.getLeading();
+        }
+
+        graphics.setTransform(oldTr);
+    }
 }

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xdgf/usermodel/XmlVisioDocument.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xdgf/usermodel/XmlVisioDocument.java?rev=1709355&r1=1709354&r2=1709355&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xdgf/usermodel/XmlVisioDocument.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xdgf/usermodel/XmlVisioDocument.java Mon Oct 19 05:59:37 2015
@@ -36,78 +36,75 @@ import com.microsoft.schemas.office.visi
 
 public class XmlVisioDocument extends POIXMLDocument {
 
-	public static String CORE_DOCUMENT = "http://schemas.microsoft.com/visio/2010/relationships/document";
-	
-	XDGFPages _pages;
-	XDGFMasters _masters;
-	XDGFDocument _document;
-	
-	
-	public XmlVisioDocument(OPCPackage pkg) throws IOException {
-		super(pkg, CORE_DOCUMENT);
-		
-		VisioDocumentType document;
-		
-		try {
-			document = VisioDocumentDocument1.Factory.parse(getPackagePart().getInputStream()).getVisioDocument();	
-		} catch (XmlException | IOException e) {
-			throw new POIXMLException(e);
-		}
-		
-		_document = new XDGFDocument(document);
-		
-		//build a tree of POIXMLDocumentParts, this document being the root
+    public static String CORE_DOCUMENT = "http://schemas.microsoft.com/visio/2010/relationships/document";
+
+    XDGFPages _pages;
+    XDGFMasters _masters;
+    XDGFDocument _document;
+
+    public XmlVisioDocument(OPCPackage pkg) throws IOException {
+        super(pkg, CORE_DOCUMENT);
+
+        VisioDocumentType document;
+
+        try {
+            document = VisioDocumentDocument1.Factory.parse(getPackagePart().getInputStream()).getVisioDocument();
+        } catch (XmlException e) {
+            throw new POIXMLException(e);
+        } catch (IOException e) {
+            throw new POIXMLException(e);
+        }
+
+        _document = new XDGFDocument(document);
+
+        //build a tree of POIXMLDocumentParts, this document being the root
         load(new XDGFFactory(_document));
-	}
-	
-	public XmlVisioDocument(InputStream is) throws IOException {
-		this(PackageHelper.open(is));
-	}
-	
-	
-	@Override
+    }
+
+    public XmlVisioDocument(InputStream is) throws IOException {
+        this(PackageHelper.open(is));
+    }
+
+    @Override
     protected void onDocumentRead() throws IOException {
-		
-		// by the time this gets called, all other document parts should
-		// have been loaded, so it's safe to build the document structure
-		
-		// note that in other onDocumentRead(), relations/etc may not have
-		// loaded yet, so it's not quite safe
-		
-		for (POIXMLDocumentPart part: getRelations()) {
-			
-			// organize the document pieces
-			if (part instanceof XDGFPages)
-				_pages = (XDGFPages)part;
-			
-			else if (part instanceof XDGFMasters)
-				_masters = (XDGFMasters)part;
-		}
-		
-		if (_masters != null)
-			_masters.onDocumentRead();
-		
-		_pages.onDocumentRead();
-	}
-
-	
-
-	@Override
-	public List<PackagePart> getAllEmbedds() throws OpenXML4JException {
-		throw new UnsupportedOperationException("Not implemented");
-	}
-	
-	//
-	// Useful public API goes here
-	//
-
-	public Collection<XDGFPage> getPages() {
-		return _pages.getPageList();
-	}
-	
-
-	public XDGFStyleSheet getStyleById(long id) {
-		return _document.getStyleById(id);
-	}
-	
+
+        // by the time this gets called, all other document parts should
+        // have been loaded, so it's safe to build the document structure
+
+        // note that in other onDocumentRead(), relations/etc may not have
+        // loaded yet, so it's not quite safe
+
+        for (POIXMLDocumentPart part : getRelations()) {
+
+            // organize the document pieces
+            if (part instanceof XDGFPages)
+                _pages = (XDGFPages) part;
+
+            else if (part instanceof XDGFMasters)
+                _masters = (XDGFMasters) part;
+        }
+
+        if (_masters != null)
+            _masters.onDocumentRead();
+
+        _pages.onDocumentRead();
+    }
+
+    @Override
+    public List<PackagePart> getAllEmbedds() throws OpenXML4JException {
+        throw new UnsupportedOperationException("Not implemented");
+    }
+
+    //
+    // Useful public API goes here
+    //
+
+    public Collection<XDGFPage> getPages() {
+        return _pages.getPageList();
+    }
+
+    public XDGFStyleSheet getStyleById(long id) {
+        return _document.getStyleById(id);
+    }
+
 }

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xdgf/usermodel/section/CharacterSection.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xdgf/usermodel/section/CharacterSection.java?rev=1709355&r1=1709354&r2=1709355&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xdgf/usermodel/section/CharacterSection.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xdgf/usermodel/section/CharacterSection.java Mon Oct 19 05:59:37 2015
@@ -29,43 +29,43 @@ import com.microsoft.schemas.office.visi
 import com.microsoft.schemas.office.visio.x2012.main.SectionType;
 
 public class CharacterSection extends XDGFSection {
-	
-	Double _fontSize = null;
-	Color _fontColor = null;
-	
-	Map<String, XDGFCell> _characterCells = new HashMap<>();
-	
-	public CharacterSection(SectionType section, XDGFSheet containingSheet) {
-		super(section, containingSheet);
-		
-		// there aren't cells for this, just a single row
-		RowType row = section.getRowArray(0);
-		
-		for (CellType cell: row.getCellArray()) {
-			_characterCells.put(cell.getN(), new XDGFCell(cell));
-		}
-		
-		if (row != null) {
-			_fontSize = XDGFCell.maybeGetDouble(_characterCells, "Size");
-			
-			String tmpColor = XDGFCell.maybeGetString(_characterCells, "Color");
-			if (tmpColor != null)
-				_fontColor = Color.decode(tmpColor);
-		}
-	}
-	
-	public Double getFontSize() {
-		return _fontSize;
-	}
-	
-	public Color getFontColor() {
-		return _fontColor;
-	}
-
-	@Override
-	public void setupMaster(XDGFSection section) {
-		
-	}
-	
+
+    Double _fontSize = null;
+    Color _fontColor = null;
+
+    Map<String, XDGFCell> _characterCells = new HashMap<String, XDGFCell>();
+
+    public CharacterSection(SectionType section, XDGFSheet containingSheet) {
+        super(section, containingSheet);
+
+        // there aren't cells for this, just a single row
+        RowType row = section.getRowArray(0);
+
+        for (CellType cell: row.getCellArray()) {
+            _characterCells.put(cell.getN(), new XDGFCell(cell));
+        }
+
+        if (row != null) {
+            _fontSize = XDGFCell.maybeGetDouble(_characterCells, "Size");
+
+            String tmpColor = XDGFCell.maybeGetString(_characterCells, "Color");
+            if (tmpColor != null)
+                _fontColor = Color.decode(tmpColor);
+        }
+    }
+
+    public Double getFontSize() {
+        return _fontSize;
+    }
+
+    public Color getFontColor() {
+        return _fontColor;
+    }
+
+    @Override
+    public void setupMaster(XDGFSection section) {
+
+    }
+
 }
 

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xdgf/usermodel/section/CombinedIterable.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xdgf/usermodel/section/CombinedIterable.java?rev=1709355&r1=1709354&r2=1709355&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xdgf/usermodel/section/CombinedIterable.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xdgf/usermodel/section/CombinedIterable.java Mon Oct 19 05:59:37 2015
@@ -19,118 +19,119 @@ package org.apache.poi.xdgf.usermodel.se
 
 import java.util.Collections;
 import java.util.Iterator;
+import java.util.Map.Entry;
 import java.util.NoSuchElementException;
 import java.util.SortedMap;
-import java.util.Map.Entry;
 
 // iterates over the base and master
 public class CombinedIterable<T> implements Iterable<T> {
 
-	final SortedMap<Long, T> _baseItems;
-	final SortedMap<Long, T> _masterItems;
-	
-	public CombinedIterable(SortedMap<Long, T> baseItems, 
-							SortedMap<Long, T> masterItems) {
-		_baseItems = baseItems;
-		_masterItems = masterItems;
-	}
-	
-	@Override
-	public Iterator<T> iterator() {
-		
-		final Iterator<Entry<Long, T>> vmasterI;
-		
-		if (_masterItems != null)
-			vmasterI = _masterItems.entrySet().iterator();
-		else
-			vmasterI = Collections.emptyIterator();
-		
-		return new Iterator<T>() {
-
-			Long lastI = Long.MIN_VALUE;
-			
-			Entry<Long, T> currentBase = null;
-			Entry<Long, T> currentMaster = null;
-			
-			// grab the iterator for both
-			Iterator<Entry<Long, T>> baseI = _baseItems.entrySet().iterator();
-			Iterator<Entry<Long, T>> masterI = vmasterI;
-			
-			@Override
-			public boolean hasNext() {
-				return currentBase != null || currentMaster != null || baseI.hasNext() || masterI.hasNext();
-			}
-
-			@Override
-			public T next() {
-				
-				// TODO: This seems far more complex than it needs to be
-				
-				long baseIdx = Long.MAX_VALUE;
-				long masterIdx = Long.MAX_VALUE;
-				
-				if (currentBase == null) {
-					while (baseI.hasNext()) {
-						currentBase = baseI.next();
-						if (currentBase.getKey() > lastI) {
-							baseIdx = currentBase.getKey();
-							break;
-						}
-					}
-				} else {
-					baseIdx = currentBase.getKey();
-				}
-				
-				if (currentMaster == null) {
-					while (masterI.hasNext()) {
-						currentMaster = masterI.next();
-						if (currentMaster.getKey() > lastI) {
-							masterIdx = currentMaster.getKey();
-							break;
-						}
-					}
-				} else {
-					masterIdx = currentMaster.getKey();
-				}
-				
-				T val;
-				
-				if (currentBase != null) {
-					
-					if (baseIdx <= masterIdx) {
-						lastI = baseIdx;
-						val = currentBase.getValue();
-						
-						// discard master if same as base
-						if (masterIdx == baseIdx) {
-							currentMaster = null;
-						}
-						
-						currentBase = null;
-						
-					} else {
-						lastI = masterIdx;
-						val = currentMaster.getValue();
-						currentMaster = null;
-					}
-					
-				} else if (currentMaster != null) {
-					lastI = currentMaster.getKey();
-					val = currentMaster.getValue();
-					
-					currentMaster = null;
-				} else {
-					throw new NoSuchElementException();
-				}
-				
-				return val;
-			}
-
-			@Override
-			public void remove() {
-				throw new UnsupportedOperationException();
-			}
-		};
-	}
+    final SortedMap<Long, T> _baseItems;
+    final SortedMap<Long, T> _masterItems;
+
+    public CombinedIterable(SortedMap<Long, T> baseItems,
+            SortedMap<Long, T> masterItems) {
+        _baseItems = baseItems;
+        _masterItems = masterItems;
+    }
+
+    @Override
+    public Iterator<T> iterator() {
+
+        final Iterator<Entry<Long, T>> vmasterI;
+
+        if (_masterItems != null)
+            vmasterI = _masterItems.entrySet().iterator();
+        else
+            vmasterI = Collections.emptyIterator();
+
+        return new Iterator<T>() {
+
+            Long lastI = Long.MIN_VALUE;
+
+            Entry<Long, T> currentBase = null;
+            Entry<Long, T> currentMaster = null;
+
+            // grab the iterator for both
+            Iterator<Entry<Long, T>> baseI = _baseItems.entrySet().iterator();
+            Iterator<Entry<Long, T>> masterI = vmasterI;
+
+            @Override
+            public boolean hasNext() {
+                return currentBase != null || currentMaster != null
+                        || baseI.hasNext() || masterI.hasNext();
+            }
+
+            @Override
+            public T next() {
+
+                // TODO: This seems far more complex than it needs to be
+
+                long baseIdx = Long.MAX_VALUE;
+                long masterIdx = Long.MAX_VALUE;
+
+                if (currentBase == null) {
+                    while (baseI.hasNext()) {
+                        currentBase = baseI.next();
+                        if (currentBase.getKey() > lastI) {
+                            baseIdx = currentBase.getKey();
+                            break;
+                        }
+                    }
+                } else {
+                    baseIdx = currentBase.getKey();
+                }
+
+                if (currentMaster == null) {
+                    while (masterI.hasNext()) {
+                        currentMaster = masterI.next();
+                        if (currentMaster.getKey() > lastI) {
+                            masterIdx = currentMaster.getKey();
+                            break;
+                        }
+                    }
+                } else {
+                    masterIdx = currentMaster.getKey();
+                }
+
+                T val;
+
+                if (currentBase != null) {
+
+                    if (baseIdx <= masterIdx) {
+                        lastI = baseIdx;
+                        val = currentBase.getValue();
+
+                        // discard master if same as base
+                        if (masterIdx == baseIdx) {
+                            currentMaster = null;
+                        }
+
+                        currentBase = null;
+
+                    } else {
+                        lastI = masterIdx;
+                        val = currentMaster.getValue();
+                        currentMaster = null;
+                    }
+
+                } else if (currentMaster != null) {
+                    lastI = currentMaster.getKey();
+                    val = currentMaster.getValue();
+
+                    currentMaster = null;
+                } else {
+                    throw new NoSuchElementException();
+                }
+
+                return val;
+            }
+
+            @Override
+            public void remove() {
+                throw new UnsupportedOperationException();
+            }
+        };
+    }
 
 }

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xdgf/usermodel/section/GenericSection.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xdgf/usermodel/section/GenericSection.java?rev=1709355&r1=1709354&r2=1709355&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xdgf/usermodel/section/GenericSection.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xdgf/usermodel/section/GenericSection.java Mon Oct 19 05:59:37 2015
@@ -23,11 +23,11 @@ import com.microsoft.schemas.office.visi
 
 public class GenericSection extends XDGFSection {
 
-	public GenericSection(SectionType section, XDGFSheet containingSheet) {
-		super(section, containingSheet);
-	}
+    public GenericSection(SectionType section, XDGFSheet containingSheet) {
+        super(section, containingSheet);
+    }
 
-	@Override
-	public void setupMaster(XDGFSection section) {
-	}
+    @Override
+    public void setupMaster(XDGFSection section) {
+    }
 }

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xdgf/usermodel/section/GeometrySection.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xdgf/usermodel/section/GeometrySection.java?rev=1709355&r1=1709354&r2=1709355&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xdgf/usermodel/section/GeometrySection.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xdgf/usermodel/section/GeometrySection.java Mon Oct 19 05:59:37 2015
@@ -29,9 +29,9 @@ import org.apache.poi.xdgf.usermodel.XDG
 import org.apache.poi.xdgf.usermodel.XDGFShape;
 import org.apache.poi.xdgf.usermodel.XDGFSheet;
 import org.apache.poi.xdgf.usermodel.section.geometry.Ellipse;
+import org.apache.poi.xdgf.usermodel.section.geometry.GeometryRow;
 import org.apache.poi.xdgf.usermodel.section.geometry.GeometryRowFactory;
 import org.apache.poi.xdgf.usermodel.section.geometry.InfiniteLine;
-import org.apache.poi.xdgf.usermodel.section.geometry.GeometryRow;
 import org.apache.poi.xdgf.usermodel.section.geometry.SplineKnot;
 import org.apache.poi.xdgf.usermodel.section.geometry.SplineStart;
 
@@ -40,116 +40,116 @@ import com.microsoft.schemas.office.visi
 
 public class GeometrySection extends XDGFSection {
 
-	GeometrySection _master = null;
-	
-	// rows
-	SortedMap<Long, GeometryRow> _rows = new TreeMap<>();
-	
-	public GeometrySection(SectionType section, XDGFSheet containingSheet) {
-		super(section, containingSheet);
-		
-		for (RowType row: section.getRowArray()) {
-			if (_rows.containsKey(row.getIX()))
-				throw new POIXMLException("Index element '" + row.getIX() + "' already exists");
-			
-			_rows.put(row.getIX(), GeometryRowFactory.load(row));
-		}
-	}
-	
-	@Override
-	public void setupMaster(XDGFSection master) {
-		
-		_master = (GeometrySection)master;
-		
-		for (Entry<Long, GeometryRow> entry : _rows.entrySet()) {
-			GeometryRow masterRow = _master._rows.get(entry.getKey());
-			if (masterRow != null) {
-				try {
-					entry.getValue().setupMaster(masterRow);
-				} catch (ClassCastException e) {
-					// this can happen when a dynamic connector overrides its master's geometry
-					// .. probably can happen elsewhere too, I imagine.
-					//throw XDGFException.error("Mismatched geometry section '" + entry.getKey() + "' in master", this, e);
-				}
-			} 
-		}
-	}
-	
-	// returns True if this row shouldn't be displayed
-	public Boolean getNoShow() {
-		Boolean noShow = XDGFCell.maybeGetBoolean(_cells, "NoShow");
-		if (noShow == null) {
-			if (_master != null)
-				return _master.getNoShow();
-			
-			return false;
-		}
-		
-		return noShow;
-	}
-	
-	public Iterable<GeometryRow> getCombinedRows() {
-		return new CombinedIterable<>(_rows,
-									  _master == null ? null : _master._rows);
-	}
-
-	public Path2D.Double getPath(XDGFShape parent) {
-		
-		Iterator<GeometryRow> rows = getCombinedRows().iterator();
-		
-		// special cases
-		GeometryRow first = rows.next();
-		
-		if (first instanceof Ellipse) {
-			return ((Ellipse)first).getPath();
-		} else if (first instanceof InfiniteLine) {
-			return ((InfiniteLine)first).getPath();
-		} else if (first instanceof SplineStart) {
-			throw new POIXMLException("SplineStart must be preceded by another type");
-		} else {
-		
-			// everything else is a path
-			Path2D.Double path = new Path2D.Double();
-			
-			// dealing with splines makes this more complex
-			SplineCollector renderer = null;
-			GeometryRow row;
-			
-			while (true) {
-				
-				if (first != null) {
-					row = first;
-					first = null;
-				} else {
-					if (!rows.hasNext())
-						break;
-					row = rows.next();
-				}
-				
-				if (row instanceof SplineStart) {
-					if (renderer != null)
-						throw new POIXMLException("SplineStart found multiple times!");
-					renderer = new SplineCollector((SplineStart) row);
-				} else if (row instanceof SplineKnot) {
-					if (renderer == null)
-						throw new POIXMLException("SplineKnot found without SplineStart!");
-					renderer.addKnot((SplineKnot) row);
-				} else {
-					if (renderer != null) {
-						renderer.addToPath(path, parent);
-						renderer = null;
-					}
-					
-					row.addToPath(path, parent);
-				}
-			}
-			
-			// just in case we end iteration
-			if (renderer != null)
-				renderer.addToPath(path, parent);
-			
-			return path;
-		}
-	}
-	
+    GeometrySection _master = null;
+
+    // rows
+    SortedMap<Long, GeometryRow> _rows = new TreeMap<Long, GeometryRow>();
+
+    public GeometrySection(SectionType section, XDGFSheet containingSheet) {
+        super(section, containingSheet);
+
+        for (RowType row: section.getRowArray()) {
+            if (_rows.containsKey(row.getIX()))
+                throw new POIXMLException("Index element '" + row.getIX() + "' already exists");
+
+            _rows.put(row.getIX(), GeometryRowFactory.load(row));
+        }
+    }
+
+    @Override
+    public void setupMaster(XDGFSection master) {
+
+        _master = (GeometrySection)master;
+
+        for (Entry<Long, GeometryRow> entry : _rows.entrySet()) {
+            GeometryRow masterRow = _master._rows.get(entry.getKey());
+            if (masterRow != null) {
+                try {
+                    entry.getValue().setupMaster(masterRow);
+                } catch (ClassCastException e) {
+                    // this can happen when a dynamic connector overrides its master's geometry
+                    // .. probably can happen elsewhere too, I imagine.
+                    //throw XDGFException.error("Mismatched geometry section '" + entry.getKey() + "' in master", this, e);
+                }
+            }
+        }
+    }
+
+    // returns True if this row shouldn't be displayed
+    public Boolean getNoShow() {
+        Boolean noShow = XDGFCell.maybeGetBoolean(_cells, "NoShow");
+        if (noShow == null) {
+            if (_master != null)
+                return _master.getNoShow();
+
+            return false;
+        }
+
+        return noShow;
+    }
+
+    public Iterable<GeometryRow> getCombinedRows() {
+        return new CombinedIterable<GeometryRow>(_rows,
+                _master == null ? null : _master._rows);
+    }
+
+    public Path2D.Double getPath(XDGFShape parent) {
+
+        Iterator<GeometryRow> rows = getCombinedRows().iterator();
+
+        // special cases
+        GeometryRow first = rows.next();
+
+        if (first instanceof Ellipse) {
+            return ((Ellipse)first).getPath();
+        } else if (first instanceof InfiniteLine) {
+            return ((InfiniteLine)first).getPath();
+        } else if (first instanceof SplineStart) {
+            throw new POIXMLException("SplineStart must be preceded by another type");
+        } else {
+
+            // everything else is a path
+            Path2D.Double path = new Path2D.Double();
+
+            // dealing with splines makes this more complex
+            SplineCollector renderer = null;
+            GeometryRow row;
+
+            while (true) {
+
+                if (first != null) {
+                    row = first;
+                    first = null;
+                } else {
+                    if (!rows.hasNext())
+                        break;
+                    row = rows.next();
+                }
+
+                if (row instanceof SplineStart) {
+                    if (renderer != null)
+                        throw new POIXMLException("SplineStart found multiple times!");
+                    renderer = new SplineCollector((SplineStart) row);
+                } else if (row instanceof SplineKnot) {
+                    if (renderer == null)
+                        throw new POIXMLException("SplineKnot found without SplineStart!");
+                    renderer.addKnot((SplineKnot) row);
+                } else {
+                    if (renderer != null) {
+                        renderer.addToPath(path, parent);
+                        renderer = null;
+                    }
+
+                    row.addToPath(path, parent);
+                }
+            }
+
+            // just in case we end iteration
+            if (renderer != null)
+                renderer.addToPath(path, parent);
+
+            return path;
+        }
+    }
+
 }




---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org