You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by ki...@apache.org on 2020/12/12 23:15:21 UTC

svn commit: r1884368 [1/3] - in /poi: site/src/documentation/content/xdocs/ trunk/ trunk/src/java/org/apache/poi/util/ trunk/src/multimodule/ooxml-lite/java9/ trunk/src/ooxml/java/org/apache/poi/ooxml/util/ trunk/src/ooxml/java/org/apache/poi/poifs/cry...

Author: kiwiwings
Date: Sat Dec 12 23:15:20 2020
New Revision: 1884368

URL: http://svn.apache.org/viewvc?rev=1884368&view=rev
Log:
Bug 56205 - Upgrade OOXML schema to 3rd edition (transitional)

Added:
    poi/trunk/src/ooxml/java/org/apache/poi/ooxml/util/POIXMLUnits.java   (with props)
    poi/trunk/src/ooxml/resources/org/apache/poi/schemas/OfficeOpenXML-XMLSchema-Transitional.zip
      - copied, changed from r1884367, poi/trunk/src/ooxml/resources/org/apache/poi/schemas/OfficeOpenXML-XMLSchema.zip
    poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/charts/TestXSSF3DChartData.java
      - copied, changed from r1884337, poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/charts/TestXSSFLineChartData.java
Removed:
    poi/trunk/src/ooxml/java/org/apache/poi/xwpf/model/WMLHelper.java
    poi/trunk/src/ooxml/resources/org/apache/poi/schemas/OfficeOpenXML-XMLSchema.zip
Modified:
    poi/site/src/documentation/content/xdocs/changes.xml
    poi/trunk/build.xml
    poi/trunk/src/java/org/apache/poi/util/Units.java
    poi/trunk/src/multimodule/ooxml-lite/java9/module-info.class
    poi/trunk/src/multimodule/ooxml-lite/java9/module-info.java
    poi/trunk/src/ooxml/java/org/apache/poi/poifs/crypt/dsig/SignatureLine.java
    poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/XDDFColorHsl.java
    poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/XDDFColorPreset.java
    poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/XDDFColorRgbPercent.java
    poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/XDDFDashStop.java
    poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/XDDFGradientStop.java
    poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/XDDFLineJoinMiterProperties.java
    poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/XDDFPoint2D.java
    poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/XDDFRelativeRectangle.java
    poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/XDDFTileInfoProperties.java
    poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFArea3DChartData.java
    poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFBar3DChartData.java
    poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFBarChartData.java
    poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFLine3DChartData.java
    poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFView3D.java
    poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/text/XDDFBodyProperties.java
    poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/text/XDDFBulletSizePercent.java
    poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/text/XDDFFont.java
    poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/text/XDDFNormalAutoFit.java
    poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/text/XDDFSpacingPercent.java
    poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/text/XDDFTabStop.java
    poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/text/XDDFTextParagraph.java
    poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/text/XDDFTextRun.java
    poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFColor.java
    poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFComment.java
    poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFFreeformShape.java
    poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFGradientPaint.java
    poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFGraphicFrame.java
    poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFGroupShape.java
    poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFPictureShape.java
    poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFSimpleShape.java
    poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTabStop.java
    poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTable.java
    poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTableRow.java
    poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTextParagraph.java
    poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTextRun.java
    poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTextShape.java
    poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTexturePaint.java
    poi/trunk/src/ooxml/java/org/apache/poi/xssf/extractor/XSSFImportFromXML.java
    poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFClientAnchor.java
    poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFFont.java
    poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFFontFormatting.java
    poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFRichTextString.java
    poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSignatureLine.java
    poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFTextParagraph.java
    poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFTextRun.java
    poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFVMLDrawing.java
    poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/helpers/XSSFSingleXmlCell.java
    poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/helpers/XSSFXmlColumnPr.java
    poi/trunk/src/ooxml/java/org/apache/poi/xwpf/model/XWPFHeaderFooterPolicy.java
    poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/ParagraphAlignment.java
    poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/TOC.java
    poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDefaultParagraphStyle.java
    poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDefaultRunStyle.java
    poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDocument.java
    poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFParagraph.java
    poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFRun.java
    poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFSettings.java
    poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFTable.java
    poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFTableCell.java
    poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFTableRow.java
    poi/trunk/src/ooxml/resources/org/apache/poi/schemas/OpenPackagingConventions-XMLSchema.zip
    poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/internal/TestContentTypeManager.java
    poi/trunk/src/ooxml/testcases/org/apache/poi/xddf/usermodel/TestXDDFColor.java
    poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFFont.java
    poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFRichTextString.java
    poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFVMLDrawing.java
    poi/trunk/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFParagraph.java
    poi/trunk/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFRun.java
    poi/trunk/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFTable.java

Modified: poi/site/src/documentation/content/xdocs/changes.xml
URL: http://svn.apache.org/viewvc/poi/site/src/documentation/content/xdocs/changes.xml?rev=1884368&r1=1884367&r2=1884368&view=diff
==============================================================================
--- poi/site/src/documentation/content/xdocs/changes.xml (original)
+++ poi/site/src/documentation/content/xdocs/changes.xml Sat Dec 12 23:15:20 2020
@@ -119,6 +119,7 @@
             <action type="fix" fixes-bug="60397" context="XSSF">Improve performance of cell merge</action>
             <action type="fix" fixes-bug="github-206" context="SXSSF">Improve performance of SXSSF cell evaluation</action>
             <action type="fix" fixes-bug="64976" context="SS_Common">Change some methods to return ints instead of shorts (Font and CellStyle)</action>
+            <action type="fix" fixes-bug="56205" context="OOXML">Upgrade OOXML schema to 3rd edition (transitional)</action>
         </actions>
     </release>
 

Modified: poi/trunk/build.xml
URL: http://svn.apache.org/viewvc/poi/trunk/build.xml?rev=1884368&r1=1884367&r2=1884368&view=diff
==============================================================================
--- poi/trunk/build.xml (original)
+++ poi/trunk/build.xml Sat Dec 12 23:15:20 2020
@@ -326,13 +326,13 @@ under the License.
 
     <!-- See https://www.ecma-international.org/publications/standards/Ecma-376.htm -->
     <!-- "Copy these file(s), free of charge" -->
-    <property name="ooxml.xsds.izip.1" value="${basedir}/src/ooxml/resources/org/apache/poi/schemas/OfficeOpenXML-XMLSchema.zip"/>
+    <property name="ooxml.xsds.izip.1" value="${basedir}/src/ooxml/resources/org/apache/poi/schemas/OfficeOpenXML-XMLSchema-Transitional.zip"/>
     <property name="ooxml.xsds.src.dir" location="build/ooxml-xsds-src"/>
     <property name="ooxml.xsds.src.jar" location="build/dist/maven/ooxml-schemas/ooxml-schemas-${maven.ooxml.xsds.version.id}-sources.jar"/>
     <property name="ooxml.xsds.jar" location="build/dist/maven/ooxml-schemas/ooxml-schemas-${maven.ooxml.xsds.version.id}.jar"/>
 
     <!-- additional schemas are packed into the poi schemas jar, -->
-    <!-- so we don't have to care about a seperate versioning of the original ooxml schemas -->
+    <!-- so we don't have to care about a separate versioning of the original ooxml schemas -->
     <property name="ooxml.xsds.izip.2" value="${basedir}/src/ooxml/resources/org/apache/poi/schemas/OpenPackagingConventions-XMLSchema.zip"/>
     <property name="ooxml.security.src.dir" location="build/ooxml-security-src"/>
     <property name="ooxml.security.xsd.dir" location="src/ooxml/resources/org/apache/poi/poifs/crypt"/>

Modified: poi/trunk/src/java/org/apache/poi/util/Units.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/util/Units.java?rev=1884368&r1=1884367&r2=1884368&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/util/Units.java (original)
+++ poi/trunk/src/java/org/apache/poi/util/Units.java Sat Dec 12 23:15:20 2020
@@ -29,11 +29,17 @@ public class Units {
     public static final int EMU_PER_POINT = 12700;
     public static final int EMU_PER_CENTIMETER = 360000;
 
+    /** 72 points per inch (dpi) */
+    public static final int EMU_PER_INCH = 12700*72;
+
+    /** EMU_PER_POINT/20 */
+    public static final int EMU_PER_DXA = 635;
+
     /**
      * Master DPI (576 pixels per inch).
      * Used by the reference coordinate system in PowerPoint (HSLF)
      */
-    public static final int MASTER_DPI = 576;    
+    public static final int MASTER_DPI = 576;
 
     /**
      * Pixels DPI (96 pixels per inch)
@@ -43,7 +49,7 @@ public class Units {
     /**
      * Points DPI (72 pixels per inch)
      */
-    public static final int POINT_DPI = 72;    
+    public static final int POINT_DPI = 72;
 
 
     /**
@@ -59,7 +65,7 @@ public class Units {
 
     /**
      * Column widths are in fractional characters, this is the EMU equivalent.
-     * One character is defined as the widest value for the integers 0-9 in the 
+     * One character is defined as the widest value for the integers 0-9 in the
      * default font.
      */
     public static final int EMU_PER_CHARACTER = (int) (EMU_PER_PIXEL * DEFAULT_CHARACTER_WIDTH);
@@ -72,7 +78,7 @@ public class Units {
     public static int toEMU(double points){
         return (int)Math.rint(EMU_PER_POINT*points);
     }
-    
+
     /**
      * Converts pixels to EMUs
      * @param pixels pixels
@@ -88,15 +94,15 @@ public class Units {
      * @return points
      */
     public static double toPoints(long emu){
-        return (double)emu/EMU_PER_POINT;
+        return (emu == -1) ? -1.d : (double)emu/EMU_PER_POINT;
     }
-    
+
     /**
      * Converts a value of type FixedPoint to a floating point
      *
      * @param fixedPoint value in fixed point notation
      * @return floating point (double)
-     * 
+     *
      * @see <a href="http://msdn.microsoft.com/en-us/library/dd910765(v=office.12).aspx">[MS-OSHARED] - 2.2.1.6 FixedPoint</a>
      */
     public static double fixedPointToDouble(int fixedPoint) {
@@ -104,13 +110,13 @@ public class Units {
         int f = fixedPoint & 0xFFFF;
         return (i + f/65536d);
     }
-    
+
     /**
      * Converts a value of type floating point to a FixedPoint
      *
      * @param floatPoint value in floating point notation
      * @return fixedPoint value in fixed points notation
-     * 
+     *
      * @see <a href="http://msdn.microsoft.com/en-us/library/dd910765(v=office.12).aspx">[MS-OSHARED] - 2.2.1.6 FixedPoint</a>
      */
     public static int doubleToFixedPoint(double floatPoint) {
@@ -133,7 +139,7 @@ public class Units {
         points /= POINT_DPI;
         return (int)Math.rint(points);
     }
-    
+
     public static int pointsToPixel(double points) {
         points *= PIXEL_DPI;
         points /= POINT_DPI;
@@ -178,7 +184,7 @@ public class Units {
     public static int charactersToEMU(double characters) {
         return (int) characters * EMU_PER_CHARACTER;
     }
-    
+
     /**
      * @param columnWidth specified in 256ths of a standard character
      * @return equivalent EMUs
@@ -186,12 +192,8 @@ public class Units {
     public static int columnWidthToEMU(int columnWidth) {
         return charactersToEMU(columnWidth / 256d);
     }
-    
-    /**
-     * @param twips (1/20th of a point) typically used for row heights
-     * @return equivalent EMUs
-     */
-    public static int TwipsToEMU(short twips) {
-        return (int) (twips / 20d * EMU_PER_POINT);
+
+    public static double toDXA(long emu) {
+        return (emu == -1) ? -1.d : (double)emu/EMU_PER_DXA;
     }
 }

Modified: poi/trunk/src/multimodule/ooxml-lite/java9/module-info.class
URL: http://svn.apache.org/viewvc/poi/trunk/src/multimodule/ooxml-lite/java9/module-info.class?rev=1884368&r1=1884367&r2=1884368&view=diff
==============================================================================
Binary files - no diff available.

Modified: poi/trunk/src/multimodule/ooxml-lite/java9/module-info.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/multimodule/ooxml-lite/java9/module-info.java?rev=1884368&r1=1884367&r2=1884368&view=diff
==============================================================================
--- poi/trunk/src/multimodule/ooxml-lite/java9/module-info.java (original)
+++ poi/trunk/src/multimodule/ooxml-lite/java9/module-info.java Sat Dec 12 23:15:20 2020
@@ -41,6 +41,7 @@ open module org.apache.poi.ooxml.schemas
     exports org.openxmlformats.schemas.officeDocument.x2006.docPropsVTypes;
     exports org.openxmlformats.schemas.officeDocument.x2006.extendedProperties;
     exports org.openxmlformats.schemas.officeDocument.x2006.relationships;
+    exports org.openxmlformats.schemas.officeDocument.x2006.sharedTypes;
     exports org.openxmlformats.schemas.presentationml.x2006.main;
     exports org.openxmlformats.schemas.spreadsheetml.x2006.main;
     exports org.openxmlformats.schemas.wordprocessingml.x2006.main;

Added: poi/trunk/src/ooxml/java/org/apache/poi/ooxml/util/POIXMLUnits.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/ooxml/util/POIXMLUnits.java?rev=1884368&view=auto
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/ooxml/util/POIXMLUnits.java (added)
+++ poi/trunk/src/ooxml/java/org/apache/poi/ooxml/util/POIXMLUnits.java Sat Dec 12 23:15:20 2020
@@ -0,0 +1,265 @@
+/* ====================================================================
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+==================================================================== */
+
+package org.apache.poi.ooxml.util;
+
+import static org.apache.poi.util.Units.EMU_PER_DXA;
+import static org.apache.poi.util.Units.EMU_PER_INCH;
+import static org.apache.poi.util.Units.EMU_PER_POINT;
+
+import java.util.Locale;
+
+public class POIXMLUnits {
+
+    /**
+     * Office will read percentages formatted with a trailing percent sign or formatted
+     * as 1000th of a percent without a trailing percent sign
+     *
+     * @return the percent scaled by 1000, so 100% = 100000
+     */
+    public static int parsePercent(org.openxmlformats.schemas.drawingml.x2006.main.STPositivePercentage pctUnion) {
+        return parsePercentInner(pctUnion, 1);
+    }
+
+    /**
+     * Office will read percentages formatted with a trailing percent sign or formatted
+     * as 1000th of a percent without a trailing percent sign
+     *
+     * @return the percent scaled by 1000, so 100% = 100000
+     */
+    public static int parsePercent(org.openxmlformats.schemas.drawingml.x2006.main.STPositiveFixedPercentage pctUnion) {
+        return parsePercentInner(pctUnion, 1);
+    }
+
+    /**
+     * Office will read percentages formatted with a trailing percent sign or formatted
+     * as 1000th of a percent without a trailing percent sign
+     *
+     * @return the percent scaled by 1000, so 100% = 100000
+     */
+    public static int parsePercent(org.openxmlformats.schemas.drawingml.x2006.main.STPercentage pctUnion) {
+        return parsePercentInner(pctUnion, 1);
+    }
+
+    /**
+     * Specifies the percentage of the text size that this bullet should be. It is specified here in terms of
+     * 100% being equal to 100000 and 1% being specified in increments of 1000. This attribute should not be
+     * lower than 25%, or 25000, and not be higher than 400%, or 400000.
+     *
+     * @return the percent scaled by 1000, so 100% = 100000
+     */
+    public static int parsePercent(org.openxmlformats.schemas.drawingml.x2006.main.STTextBulletSizePercent pctUnion) {
+        return parsePercentInner(pctUnion, 1);
+    }
+
+    /**
+     * Office will read percentages formatted with a trailing percent sign or formatted
+     * as 1000th of a percent without a trailing percent sign
+     *
+     * @return the percent scaled by 1000, so 100% = 100000
+     */
+    public static int parsePercent(org.openxmlformats.schemas.drawingml.x2006.main.STTextSpacingPercentOrPercentString pctUnion) {
+        return parsePercentInner(pctUnion, 1);
+    }
+
+    /**
+     * Office will read percentages formatted with a trailing percent sign or formatted
+     * as 1000th of a percent without a trailing percent sign
+     *
+     * @return the percent scaled by 1000, so 100% = 100000
+     */
+    public static int parsePercent(org.openxmlformats.schemas.drawingml.x2006.main.STTextFontScalePercentOrPercentString pctUnion) {
+        return parsePercentInner(pctUnion, 1);
+    }
+
+    /**
+     * This type seems to be interpreted as percent value when the trailing percent sign is missing.<br/>
+     * sample snippet from settings.xml
+     * <pre>
+     *    &lt;w:zoom w:percent="50" /&gt;
+     * <pre>
+     *
+     * @return the percent scaled by 1000, so 100% = 100000
+     */
+    public static int parsePercent(org.openxmlformats.schemas.wordprocessingml.x2006.main.STDecimalNumberOrPercent pctUnion) {
+        return parsePercentInner(pctUnion, 1000);
+    }
+
+    /**
+     * This type seems to be interpreted as percent value when the trailing percent sign is missing.<br/>
+     * sample snippet from settings.xml
+     * <pre>
+     *    &lt;w:textscale w:w="50" /&gt;
+     * <pre>
+     *
+     * @return the percent scaled by 1000, so 100% = 100000
+     */
+    public static int parsePercent(org.openxmlformats.schemas.wordprocessingml.x2006.main.STTextScale pctUnion) {
+        return parsePercentInner(pctUnion, 1000);
+    }
+
+
+    public static int parsePercent(org.openxmlformats.schemas.drawingml.x2006.chart.STGapAmount pctUnion) {
+        return parsePercentInner(pctUnion, 1000);
+    }
+
+
+    public static int parsePercent(org.openxmlformats.schemas.drawingml.x2006.chart.STOverlap  pctUnion) {
+        return parsePercentInner(pctUnion, 1000);
+    }
+
+
+    public static int parsePercent(org.openxmlformats.schemas.drawingml.x2006.chart.STDepthPercent pctUnion) {
+        return parsePercentInner(pctUnion, 1000);
+    }
+
+
+    public static int parsePercent(org.openxmlformats.schemas.drawingml.x2006.chart.STHPercent pctUnion) {
+        return parsePercentInner(pctUnion, 1000);
+    }
+
+
+    private static int parsePercentInner(org.apache.xmlbeans.XmlAnySimpleType pctUnion, int noUnitScale) {
+        String strVal = pctUnion.getStringValue();
+        if (strVal.endsWith("%")) {
+            return Integer.parseInt(strVal.substring(0, strVal.length()-1)) * 1000;
+        } else {
+            return Integer.parseInt(strVal) * noUnitScale;
+        }
+    }
+
+    /**
+     * The standard states that ST_Coordinate32 is read and written as either a length
+     * followed by a unit, or EMUs with no unit present.
+     *
+     * @return length in EMUs
+     */
+    public static long parseLength(org.openxmlformats.schemas.drawingml.x2006.main.STCoordinate32 coordUnion) {
+        return parseLengthInner(coordUnion, 1d);
+    }
+
+    /**
+     * The standard states that ST_Coordinate is read and written as either a length
+     * followed by a unit, or EMUs with no unit present.
+     *
+     * @return length in EMUs
+     */
+    public static long parseLength(org.openxmlformats.schemas.drawingml.x2006.main.STCoordinate coordUnion) {
+        return parseLengthInner(coordUnion, 1d);
+    }
+
+    /**
+     * The standard states that ST_TextPoint is read and written as a length followed by a unit
+     * or as hundredths of a point with no unit present.
+     *
+     * @return length in EMUs
+     */
+    public static long parseLength(org.openxmlformats.schemas.drawingml.x2006.main.STTextPoint coordUnion) {
+        return parseLengthInner(coordUnion, EMU_PER_POINT/100d);
+    }
+
+    /**
+     * If no unit is specified, a twips-measure is a twentieth of a point
+     *
+     * @return length in EMUs
+     */
+    public static long parseLength(org.openxmlformats.schemas.officeDocument.x2006.sharedTypes.STTwipsMeasure coordUnion) {
+        return parseLengthInner(coordUnion, EMU_PER_DXA);
+    }
+
+    /**
+     * If no unit is specified, a twips-measure is a twentieth of a point
+     *
+     * @return length in EMUs
+     */
+    public static long parseLength(org.openxmlformats.schemas.wordprocessingml.x2006.main.STSignedTwipsMeasure coordUnion) {
+        return parseLengthInner(coordUnion, EMU_PER_DXA);
+    }
+
+    /**
+     * If no unit is specified, a hps-measure is a half of a point
+     *
+     * @return length in EMUs
+     */
+    public static long parseLength(org.openxmlformats.schemas.wordprocessingml.x2006.main.STHpsMeasure coordUnion) {
+        return parseLengthInner(coordUnion, EMU_PER_POINT*2d);
+    }
+
+
+    /**
+     * If no unit is specified, a hps-measure is a half of a point
+     *
+     * @return length in EMUs
+     */
+    public static long parseLength(org.openxmlformats.schemas.wordprocessingml.x2006.main.STSignedHpsMeasure coordUnion) {
+        return parseLengthInner(coordUnion, EMU_PER_POINT*2d);
+    }
+
+
+    /**
+     * If not unit is specified, DXA (twentieth of a point) is assumed
+     *
+     * @return length in EMUs
+     */
+    public static long parseLength(org.openxmlformats.schemas.wordprocessingml.x2006.main.STMeasurementOrPercent coordUnion) {
+        if (coordUnion.getStringValue().endsWith("%")) return -1;
+        return parseLengthInner(coordUnion, EMU_PER_DXA);
+    }
+
+
+    /**
+     * Returns the EMUs for the given measurment (mm|cm|in|pt|pc|pi, defaults to EMUs*noUnitEmuFactor if not specified)
+     *
+     * @param coordUnion the raw type
+     * @return the EMUs for the given attribute
+     */
+    private static long parseLengthInner(org.apache.xmlbeans.XmlAnySimpleType coordUnion, double noUnitEmuFactor) {
+        String strVal = coordUnion.getStringValue().toLowerCase(Locale.ROOT);
+        double digVal = Double.parseDouble(strVal.replaceAll("(mm|cm|in|pt|pc|pi)", ""));
+        long emu = 0;
+        // http://startbigthinksmall.wordpress.com/2010/01/04/points-inches-and-emus-measuring-units-in-office-open-xml/
+        if (strVal.endsWith("mm")) {
+            emu = (long)(((digVal/10f)/2.54f)*EMU_PER_INCH);
+        } else if (strVal.endsWith("cm")) {
+            emu = (long)((digVal/2.54f)*EMU_PER_INCH);
+        } else if (strVal.endsWith("in")) {
+            emu = (long)(digVal*EMU_PER_INCH);
+        } else if (strVal.endsWith("pc") || strVal.endsWith("pi")) {
+            emu = (long)(digVal*0.166f*EMU_PER_INCH);
+        } else if (strVal.endsWith("pt")) {
+            emu = (long)(digVal*EMU_PER_POINT);
+        } else {
+            emu = (long)(digVal*noUnitEmuFactor);
+        }
+        return emu;
+    }
+
+
+
+    public static boolean parseOnOff(org.openxmlformats.schemas.wordprocessingml.x2006.main.CTOnOff onOff) {
+        if(onOff == null) return false;
+        if(!onOff.isSetVal()) return true;
+        return parseOnOff(onOff.xgetVal());
+    }
+
+    public static boolean parseOnOff(org.openxmlformats.schemas.officeDocument.x2006.sharedTypes.STOnOff onOff) {
+        if (onOff == null) return false;
+        String str = onOff.getStringValue();
+        return ("true".equalsIgnoreCase(str) || "on".equalsIgnoreCase(str) || "x".equalsIgnoreCase(str) || "1".equals(str));
+    }
+
+}

Propchange: poi/trunk/src/ooxml/java/org/apache/poi/ooxml/util/POIXMLUnits.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: poi/trunk/src/ooxml/java/org/apache/poi/poifs/crypt/dsig/SignatureLine.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/poifs/crypt/dsig/SignatureLine.java?rev=1884368&r1=1884367&r2=1884368&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/poifs/crypt/dsig/SignatureLine.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/poifs/crypt/dsig/SignatureLine.java Sat Dec 12 23:15:20 2020
@@ -42,7 +42,6 @@ import javax.imageio.ImageIO;
 import javax.xml.namespace.QName;
 
 import com.microsoft.schemas.office.office.CTSignatureLine;
-import com.microsoft.schemas.office.office.STTrueFalse;
 import com.microsoft.schemas.vml.CTGroup;
 import com.microsoft.schemas.vml.CTImageData;
 import com.microsoft.schemas.vml.CTShape;
@@ -56,6 +55,7 @@ import org.apache.poi.sl.draw.DrawPictur
 import org.apache.poi.sl.draw.ImageRenderer;
 import org.apache.xmlbeans.XmlCursor;
 import org.apache.xmlbeans.XmlObject;
+import org.openxmlformats.schemas.officeDocument.x2006.sharedTypes.STTrueFalse;
 
 /**
  * Base class for SignatureLines (XSSF,XWPF only)

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/XDDFColorHsl.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/XDDFColorHsl.java?rev=1884368&r1=1884367&r2=1884368&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/XDDFColorHsl.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/XDDFColorHsl.java Sat Dec 12 23:15:20 2020
@@ -17,6 +17,7 @@
 
 package org.apache.poi.xddf.usermodel;
 
+import org.apache.poi.ooxml.util.POIXMLUnits;
 import org.apache.poi.util.Beta;
 import org.apache.poi.util.Internal;
 import org.apache.xmlbeans.XmlObject;
@@ -60,7 +61,7 @@ public class XDDFColorHsl extends XDDFCo
     }
 
     public int getSaturation() {
-        return color.getSat2();
+        return POIXMLUnits.parsePercent(color.xgetSat2()) / 1000;
     }
 
     public void setSaturation(int saturation) {
@@ -68,7 +69,7 @@ public class XDDFColorHsl extends XDDFCo
     }
 
     public int getLuminance() {
-        return color.getLum2();
+        return POIXMLUnits.parsePercent(color.xgetLum2()) / 1000;
     }
 
     public void setLuminance(int lightness) {

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/XDDFColorPreset.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/XDDFColorPreset.java?rev=1884368&r1=1884367&r2=1884368&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/XDDFColorPreset.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/XDDFColorPreset.java Sat Dec 12 23:15:20 2020
@@ -50,7 +50,7 @@ public class XDDFColorPreset extends XDD
     }
 
     public PresetColor getValue() {
-        if (color.isSetVal()) {
+        if (color.xgetVal() != null) {
             return PresetColor.valueOf(color.getVal());
         } else {
             return null;
@@ -59,8 +59,9 @@ public class XDDFColorPreset extends XDD
 
     public void setValue(PresetColor value) {
         if (value == null) {
-            if (color.isSetVal()) {
-                color.unsetVal();
+            if (color.xgetVal() != null) {
+                // TODO: val is a requires attribute - removing a preset must be done in the parent container
+                color.setVal(PresetColor.WHITE.underlying);
             }
         } else {
             color.setVal(value.underlying);

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/XDDFColorRgbPercent.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/XDDFColorRgbPercent.java?rev=1884368&r1=1884367&r2=1884368&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/XDDFColorRgbPercent.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/XDDFColorRgbPercent.java Sat Dec 12 23:15:20 2020
@@ -19,15 +19,17 @@ package org.apache.poi.xddf.usermodel;
 
 import java.util.Locale;
 
+import org.apache.poi.ooxml.util.POIXMLUnits;
 import org.apache.poi.util.Beta;
 import org.apache.poi.util.Internal;
 import org.apache.xmlbeans.XmlObject;
 import org.openxmlformats.schemas.drawingml.x2006.main.CTColor;
 import org.openxmlformats.schemas.drawingml.x2006.main.CTScRgbColor;
+import org.openxmlformats.schemas.drawingml.x2006.main.STPercentage;
 
 @Beta
 public class XDDFColorRgbPercent extends XDDFColor {
-    private CTScRgbColor color;
+    private final CTScRgbColor color;
 
     public XDDFColorRgbPercent(int red, int green, int blue) {
         this(CTScRgbColor.Factory.newInstance(), CTColor.Factory.newInstance());
@@ -54,7 +56,7 @@ public class XDDFColorRgbPercent extends
     }
 
     public int getRed() {
-        return color.getR();
+        return POIXMLUnits.parsePercent(color.xgetR());
     }
 
     public void setRed(int red) {
@@ -62,7 +64,7 @@ public class XDDFColorRgbPercent extends
     }
 
     public int getGreen() {
-        return color.getG();
+        return POIXMLUnits.parsePercent(color.xgetG());
     }
 
     public void setGreen(int green) {
@@ -70,7 +72,7 @@ public class XDDFColorRgbPercent extends
     }
 
     public int getBlue() {
-        return color.getB();
+        return POIXMLUnits.parsePercent(color.xgetB());
     }
 
     public void setBlue(int blue) {
@@ -78,25 +80,14 @@ public class XDDFColorRgbPercent extends
     }
 
     private int normalize(int value) {
-        if (value < 0) {
-            return 0;
-        }
-        if (100_000 < value) {
-            return 100_000;
-        }
-        return value;
+        return value < 0 ? 0 : Math.min(100_000, value);
     }
 
     public String toRGBHex() {
-        StringBuilder sb = new StringBuilder(6);
-        appendHex(sb, color.getR());
-        appendHex(sb, color.getG());
-        appendHex(sb, color.getB());
-        return sb.toString().toUpperCase(Locale.ROOT);
-    }
-
-    private void appendHex(StringBuilder sb, int value) {
-        int b = value * 255 / 100_000;
-        sb.append(String.format(Locale.ROOT, "%02X", b));
+        int c = 0;
+        for (STPercentage pct : new STPercentage[] { color.xgetR(), color.xgetG(), color.xgetB() }) {
+            c = c << 8 | ((POIXMLUnits.parsePercent(pct) * 255 / 100_000) & 0xFF);
+        }
+        return String.format(Locale.ROOT, "%06X", c);
     }
 }

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/XDDFDashStop.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/XDDFDashStop.java?rev=1884368&r1=1884367&r2=1884368&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/XDDFDashStop.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/XDDFDashStop.java Sat Dec 12 23:15:20 2020
@@ -17,6 +17,7 @@
 
 package org.apache.poi.xddf.usermodel;
 
+import org.apache.poi.ooxml.util.POIXMLUnits;
 import org.apache.poi.util.Beta;
 import org.apache.poi.util.Internal;
 import org.openxmlformats.schemas.drawingml.x2006.main.CTDashStop;
@@ -36,7 +37,7 @@ public class XDDFDashStop {
     }
 
     public int getDashLength() {
-        return stop.getD();
+        return POIXMLUnits.parsePercent(stop.xgetD());
     }
 
     public void setDashLength(int length) {
@@ -44,7 +45,7 @@ public class XDDFDashStop {
     }
 
     public int getSpaceLength() {
-        return stop.getSp();
+        return POIXMLUnits.parsePercent(stop.xgetSp());
     }
 
     public void setSpaceLength(int length) {

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/XDDFGradientStop.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/XDDFGradientStop.java?rev=1884368&r1=1884367&r2=1884368&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/XDDFGradientStop.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/XDDFGradientStop.java Sat Dec 12 23:15:20 2020
@@ -17,6 +17,7 @@
 
 package org.apache.poi.xddf.usermodel;
 
+import org.apache.poi.ooxml.util.POIXMLUnits;
 import org.apache.poi.util.Beta;
 import org.apache.poi.util.Internal;
 import org.openxmlformats.schemas.drawingml.x2006.main.CTGradientStop;
@@ -42,7 +43,7 @@ public class XDDFGradientStop {
     }
 
     public int getPosition() {
-        return stop.getPos();
+        return POIXMLUnits.parsePercent(stop.xgetPos());
     }
 
     public void setPosition(int position) {

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/XDDFLineJoinMiterProperties.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/XDDFLineJoinMiterProperties.java?rev=1884368&r1=1884367&r2=1884368&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/XDDFLineJoinMiterProperties.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/XDDFLineJoinMiterProperties.java Sat Dec 12 23:15:20 2020
@@ -17,6 +17,7 @@
 
 package org.apache.poi.xddf.usermodel;
 
+import org.apache.poi.ooxml.util.POIXMLUnits;
 import org.apache.poi.util.Beta;
 import org.apache.poi.util.Internal;
 import org.openxmlformats.schemas.drawingml.x2006.main.CTLineJoinMiterProperties;
@@ -40,7 +41,7 @@ public class XDDFLineJoinMiterProperties
 
     public Integer getLimit() {
         if (join.isSetLim()) {
-            return join.getLim();
+            return POIXMLUnits.parsePercent(join.xgetLim());
         } else {
             return null;
         }

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/XDDFPoint2D.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/XDDFPoint2D.java?rev=1884368&r1=1884367&r2=1884368&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/XDDFPoint2D.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/XDDFPoint2D.java Sat Dec 12 23:15:20 2020
@@ -17,6 +17,7 @@
 
 package org.apache.poi.xddf.usermodel;
 
+import org.apache.poi.ooxml.util.POIXMLUnits;
 import org.apache.poi.util.Beta;
 import org.openxmlformats.schemas.drawingml.x2006.main.CTPoint2D;
 
@@ -39,7 +40,7 @@ public class XDDFPoint2D {
         if (point == null) {
             return x;
         } else  {
-            return point.getX();
+            return POIXMLUnits.parseLength(point.xgetX());
         }
     }
 
@@ -47,7 +48,7 @@ public class XDDFPoint2D {
         if (point == null) {
             return y;
         } else  {
-            return point.getY();
+            return POIXMLUnits.parseLength(point.xgetY());
         }
     }
 }

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/XDDFRelativeRectangle.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/XDDFRelativeRectangle.java?rev=1884368&r1=1884367&r2=1884368&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/XDDFRelativeRectangle.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/XDDFRelativeRectangle.java Sat Dec 12 23:15:20 2020
@@ -17,13 +17,14 @@
 
 package org.apache.poi.xddf.usermodel;
 
+import org.apache.poi.ooxml.util.POIXMLUnits;
 import org.apache.poi.util.Beta;
 import org.apache.poi.util.Internal;
 import org.openxmlformats.schemas.drawingml.x2006.main.CTRelativeRect;
 
 @Beta
 public class XDDFRelativeRectangle {
-    private CTRelativeRect rect;
+    private final CTRelativeRect rect;
 
     public XDDFRelativeRectangle() {
         this(CTRelativeRect.Factory.newInstance());
@@ -40,7 +41,7 @@ public class XDDFRelativeRectangle {
 
     public Integer getBottom() {
         if (rect.isSetB()) {
-            return rect.getB();
+            return POIXMLUnits.parsePercent(rect.xgetB());
         } else {
             return null;
         }
@@ -58,7 +59,7 @@ public class XDDFRelativeRectangle {
 
     public Integer getLeft() {
         if (rect.isSetL()) {
-            return rect.getL();
+            return POIXMLUnits.parsePercent(rect.xgetL());
         } else {
             return null;
         }
@@ -76,7 +77,7 @@ public class XDDFRelativeRectangle {
 
     public Integer getRight() {
         if (rect.isSetR()) {
-            return rect.getR();
+            return POIXMLUnits.parsePercent(rect.xgetR());
         } else {
             return null;
         }
@@ -94,7 +95,7 @@ public class XDDFRelativeRectangle {
 
     public Integer getTop() {
         if (rect.isSetT()) {
-            return rect.getT();
+            return POIXMLUnits.parsePercent(rect.xgetT());
         } else {
             return null;
         }

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/XDDFTileInfoProperties.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/XDDFTileInfoProperties.java?rev=1884368&r1=1884367&r2=1884368&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/XDDFTileInfoProperties.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/XDDFTileInfoProperties.java Sat Dec 12 23:15:20 2020
@@ -17,6 +17,7 @@
 
 package org.apache.poi.xddf.usermodel;
 
+import org.apache.poi.ooxml.util.POIXMLUnits;
 import org.apache.poi.util.Beta;
 import org.apache.poi.util.Internal;
 import org.openxmlformats.schemas.drawingml.x2006.main.CTTileInfoProperties;
@@ -64,7 +65,7 @@ public class XDDFTileInfoProperties {
 
     public Integer getSx() {
         if (props.isSetSx()) {
-            return props.getSx();
+            return POIXMLUnits.parsePercent(props.xgetSx());
         } else {
             return null;
         }
@@ -82,7 +83,7 @@ public class XDDFTileInfoProperties {
 
     public Integer getSy() {
         if (props.isSetSy()) {
-            return props.getSy();
+            return POIXMLUnits.parsePercent(props.xgetSy());
         } else {
             return null;
         }
@@ -100,7 +101,7 @@ public class XDDFTileInfoProperties {
 
     public Long getTx() {
         if (props.isSetTx()) {
-            return props.getTx();
+            return POIXMLUnits.parseLength(props.xgetTx());
         } else {
             return null;
         }
@@ -118,7 +119,7 @@ public class XDDFTileInfoProperties {
 
     public Long getTy() {
         if (props.isSetTy()) {
-            return props.getTy();
+            return POIXMLUnits.parseLength(props.xgetTy());
         } else {
             return null;
         }

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFArea3DChartData.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFArea3DChartData.java?rev=1884368&r1=1884367&r2=1884368&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFArea3DChartData.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFArea3DChartData.java Sat Dec 12 23:15:20 2020
@@ -19,6 +19,7 @@ package org.apache.poi.xddf.usermodel.ch
 
 import java.util.Map;
 
+import org.apache.poi.ooxml.util.POIXMLUnits;
 import org.apache.poi.util.Beta;
 import org.apache.poi.util.Internal;
 import org.apache.poi.xddf.usermodel.XDDFShapeProperties;
@@ -102,11 +103,7 @@ public class XDDFArea3DChartData extends
     }
 
     public Integer getGapDepth() {
-        if (chart.isSetGapDepth()) {
-            return chart.getGapDepth().getVal();
-        } else {
-            return null;
-        }
+        return chart.isSetGapDepth() ? POIXMLUnits.parsePercent(chart.getGapDepth().xgetVal()) / 1000 : null;
     }
 
     public void setGapDepth(Integer depth) {

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFBar3DChartData.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFBar3DChartData.java?rev=1884368&r1=1884367&r2=1884368&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFBar3DChartData.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFBar3DChartData.java Sat Dec 12 23:15:20 2020
@@ -19,6 +19,7 @@ package org.apache.poi.xddf.usermodel.ch
 
 import java.util.Map;
 
+import org.apache.poi.ooxml.util.POIXMLUnits;
 import org.apache.poi.util.Beta;
 import org.apache.poi.util.Internal;
 import org.apache.poi.xddf.usermodel.XDDFShapeProperties;
@@ -113,11 +114,7 @@ public class XDDFBar3DChartData extends
     }
 
     public Integer getGapDepth() {
-        if (chart.isSetGapDepth()) {
-            return chart.getGapDepth().getVal();
-        } else {
-            return null;
-        }
+        return (chart.isSetGapDepth()) ? POIXMLUnits.parsePercent(chart.getGapDepth().xgetVal()) / 1000 : null;
     }
 
     public void setGapDepth(Integer depth) {
@@ -135,11 +132,7 @@ public class XDDFBar3DChartData extends
     }
 
     public Integer getGapWidth() {
-        if (chart.isSetGapWidth()) {
-            return chart.getGapWidth().getVal();
-        } else {
-            return null;
-        }
+        return (chart.isSetGapWidth()) ? POIXMLUnits.parsePercent(chart.getGapWidth().xgetVal()) / 1000 : null;
     }
 
     public void setGapWidth(Integer width) {

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFBarChartData.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFBarChartData.java?rev=1884368&r1=1884367&r2=1884368&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFBarChartData.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFBarChartData.java Sat Dec 12 23:15:20 2020
@@ -19,6 +19,7 @@ package org.apache.poi.xddf.usermodel.ch
 
 import java.util.Map;
 
+import org.apache.poi.ooxml.util.POIXMLUnits;
 import org.apache.poi.util.Beta;
 import org.apache.poi.util.Internal;
 import org.apache.poi.xddf.usermodel.XDDFShapeProperties;
@@ -113,11 +114,7 @@ public class XDDFBarChartData extends XD
     }
 
     public Integer getGapWidth() {
-        if (chart.isSetGapWidth()) {
-            return chart.getGapWidth().getVal();
-        } else {
-            return null;
-        }
+        return (chart.isSetGapWidth()) ? (int)(POIXMLUnits.parsePercent(chart.getGapWidth().xgetVal()) / 1000.) : null;
     }
 
     public void setGapWidth(Integer width) {
@@ -135,11 +132,7 @@ public class XDDFBarChartData extends XD
     }
 
     public Byte getOverlap() {
-        if (chart.isSetOverlap()) {
-            return chart.getOverlap().getVal();
-        } else {
-            return null;
-        }
+        return chart.isSetOverlap() ? (byte)(POIXMLUnits.parsePercent(chart.getOverlap().xgetVal())/1000) : null;
     }
 
     /**

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFLine3DChartData.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFLine3DChartData.java?rev=1884368&r1=1884367&r2=1884368&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFLine3DChartData.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFLine3DChartData.java Sat Dec 12 23:15:20 2020
@@ -19,6 +19,7 @@ package org.apache.poi.xddf.usermodel.ch
 
 import java.util.Map;
 
+import org.apache.poi.ooxml.util.POIXMLUnits;
 import org.apache.poi.util.Beta;
 import org.apache.poi.util.Internal;
 import org.apache.poi.xddf.usermodel.XDDFShapeProperties;
@@ -93,11 +94,7 @@ public class XDDFLine3DChartData extends
    }
 
    public Integer getGapDepth() {
-       if (chart.isSetGapDepth()) {
-           return chart.getGapDepth().getVal();
-       } else {
-           return null;
-       }
+       return (chart.isSetGapDepth()) ? POIXMLUnits.parsePercent(chart.getGapDepth().xgetVal()) / 1000 : null;
    }
 
    public void setGapDepth(Integer depth) {

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFView3D.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFView3D.java?rev=1884368&r1=1884367&r2=1884368&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFView3D.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFView3D.java Sat Dec 12 23:15:20 2020
@@ -19,6 +19,7 @@
 
 package org.apache.poi.xddf.usermodel.chart;
 
+import org.apache.poi.ooxml.util.POIXMLUnits;
 import org.apache.poi.util.Internal;
 import org.openxmlformats.schemas.drawingml.x2006.chart.CTView3D;
 
@@ -128,11 +129,7 @@ public class XDDFView3D {
     }
 
     public Integer getDepthPercent() {
-        if (view3D.isSetDepthPercent()) {
-            return view3D.getDepthPercent().getVal();
-        } else {
-            return null;
-        }
+        return (view3D.isSetDepthPercent()) ? POIXMLUnits.parsePercent(view3D.getDepthPercent().xgetVal()) : null;
     }
 
     public void setDepthPercent(Integer percent) {
@@ -153,11 +150,7 @@ public class XDDFView3D {
     }
 
     public Integer getHPercent() {
-        if (view3D.isSetHPercent()) {
-            return view3D.getHPercent().getVal();
-        } else {
-            return null;
-        }
+        return (view3D.isSetHPercent()) ? POIXMLUnits.parsePercent(view3D.getHPercent().xgetVal()) : null;
     }
 
     public void setHPercent(Integer percent) {

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/text/XDDFBodyProperties.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/text/XDDFBodyProperties.java?rev=1884368&r1=1884367&r2=1884368&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/text/XDDFBodyProperties.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/text/XDDFBodyProperties.java Sat Dec 12 23:15:20 2020
@@ -17,6 +17,7 @@
 
 package org.apache.poi.xddf.usermodel.text;
 
+import org.apache.poi.ooxml.util.POIXMLUnits;
 import org.apache.poi.util.Beta;
 import org.apache.poi.util.Internal;
 import org.apache.poi.util.Units;
@@ -123,7 +124,7 @@ public class XDDFBodyProperties {
 
     public Double getBottomInset() {
         if (props.isSetBIns()) {
-            return Units.toPoints(props.getBIns());
+            return Units.toPoints(POIXMLUnits.parseLength(props.xgetBIns()));
         } else {
             return null;
         }
@@ -141,7 +142,7 @@ public class XDDFBodyProperties {
 
     public Double getLeftInset() {
         if (props.isSetLIns()) {
-            return Units.toPoints(props.getLIns());
+            return Units.toPoints(POIXMLUnits.parseLength(props.xgetLIns()));
         } else {
             return null;
         }
@@ -159,7 +160,7 @@ public class XDDFBodyProperties {
 
     public Double getRightInset() {
         if (props.isSetRIns()) {
-            return Units.toPoints(props.getRIns());
+            return Units.toPoints(POIXMLUnits.parseLength(props.xgetRIns()));
         } else {
             return null;
         }
@@ -177,7 +178,7 @@ public class XDDFBodyProperties {
 
     public Double getTopInset() {
         if (props.isSetTIns()) {
-            return Units.toPoints(props.getTIns());
+            return Units.toPoints(POIXMLUnits.parseLength(props.xgetTIns()));
         } else {
             return null;
         }

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/text/XDDFBulletSizePercent.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/text/XDDFBulletSizePercent.java?rev=1884368&r1=1884367&r2=1884368&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/text/XDDFBulletSizePercent.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/text/XDDFBulletSizePercent.java Sat Dec 12 23:15:20 2020
@@ -17,6 +17,7 @@
 
 package org.apache.poi.xddf.usermodel.text;
 
+import org.apache.poi.ooxml.util.POIXMLUnits;
 import org.apache.poi.util.Beta;
 import org.apache.poi.util.Internal;
 import org.openxmlformats.schemas.drawingml.x2006.main.CTTextBulletSizePercent;
@@ -43,10 +44,10 @@ public class XDDFBulletSizePercent imple
     }
 
     public double getPercent() {
-        return percent.getVal() * scale;
+        return POIXMLUnits.parsePercent(percent.xgetVal()) * scale;
     }
 
     public void setPercent(double value) {
-        percent.setVal(Math.toIntExact(Math.round(1000 * value)));
+        percent.setVal(Long.toString(Math.round(1000 * value)));
     }
 }

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/text/XDDFFont.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/text/XDDFFont.java?rev=1884368&r1=1884367&r2=1884368&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/text/XDDFFont.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/text/XDDFFont.java Sat Dec 12 23:15:20 2020
@@ -34,8 +34,8 @@ public class XDDFFont {
     public XDDFFont(FontGroup group, String typeface, Byte charset, Byte pitch, byte[] panose) {
         this(group, CTTextFont.Factory.newInstance());
         if (typeface == null) {
-            if (font.isSetTypeface()) {
-                font.unsetTypeface();
+            if (font.getTypeface() != null && !font.getTypeface().equals("")) {
+                font.setTypeface("");
             }
         } else {
             font.setTypeface(typeface);
@@ -79,11 +79,7 @@ public class XDDFFont {
     }
 
     public String getTypeface() {
-        if (font.isSetTypeface()) {
-            return font.getTypeface();
-        } else {
-            return null;
-        }
+        return font.getTypeface();
     }
 
     public Byte getCharset() {

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/text/XDDFNormalAutoFit.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/text/XDDFNormalAutoFit.java?rev=1884368&r1=1884367&r2=1884368&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/text/XDDFNormalAutoFit.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/text/XDDFNormalAutoFit.java Sat Dec 12 23:15:20 2020
@@ -17,6 +17,7 @@
 
 package org.apache.poi.xddf.usermodel.text;
 
+import org.apache.poi.ooxml.util.POIXMLUnits;
 import org.apache.poi.util.Beta;
 import org.apache.poi.util.Internal;
 import org.openxmlformats.schemas.drawingml.x2006.main.CTTextNormalAutofit;
@@ -42,7 +43,7 @@ public class XDDFNormalAutoFit implement
     @Override
     public int getFontScale() {
         if (autofit.isSetFontScale()) {
-            return autofit.getFontScale();
+            return POIXMLUnits.parsePercent(autofit.xgetFontScale());
         } else {
             return 100_000;
         }
@@ -61,7 +62,7 @@ public class XDDFNormalAutoFit implement
     @Override
     public int getLineSpaceReduction() {
         if (autofit.isSetLnSpcReduction()) {
-            return autofit.getLnSpcReduction();
+            return POIXMLUnits.parsePercent(autofit.xgetLnSpcReduction());
         } else {
             return 0;
         }

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/text/XDDFSpacingPercent.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/text/XDDFSpacingPercent.java?rev=1884368&r1=1884367&r2=1884368&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/text/XDDFSpacingPercent.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/text/XDDFSpacingPercent.java Sat Dec 12 23:15:20 2020
@@ -17,6 +17,7 @@
 
 package org.apache.poi.xddf.usermodel.text;
 
+import org.apache.poi.ooxml.util.POIXMLUnits;
 import org.apache.poi.util.Beta;
 import org.apache.poi.util.Internal;
 import org.openxmlformats.schemas.drawingml.x2006.main.CTTextSpacing;
@@ -49,7 +50,7 @@ public class XDDFSpacingPercent extends
     }
 
     public double getPercent() {
-        return percent.getVal() * scale;
+        return POIXMLUnits.parsePercent(percent.xgetVal()) * scale;
     }
 
     public void setPercent(double value) {

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/text/XDDFTabStop.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/text/XDDFTabStop.java?rev=1884368&r1=1884367&r2=1884368&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/text/XDDFTabStop.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/text/XDDFTabStop.java Sat Dec 12 23:15:20 2020
@@ -17,6 +17,7 @@
 
 package org.apache.poi.xddf.usermodel.text;
 
+import org.apache.poi.ooxml.util.POIXMLUnits;
 import org.apache.poi.util.Beta;
 import org.apache.poi.util.Internal;
 import org.apache.poi.util.Units;
@@ -56,7 +57,7 @@ public class XDDFTabStop {
 
     public Double getPosition() {
         if (stop.isSetPos()) {
-            return Units.toPoints(stop.getPos());
+            return Units.toPoints(POIXMLUnits.parseLength(stop.xgetPos()));
         } else {
             return null;
         }

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/text/XDDFTextParagraph.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/text/XDDFTextParagraph.java?rev=1884368&r1=1884367&r2=1884368&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/text/XDDFTextParagraph.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/text/XDDFTextParagraph.java Sat Dec 12 23:15:20 2020
@@ -27,6 +27,7 @@ import java.util.function.Predicate;
 
 import org.apache.commons.collections4.iterators.IteratorIterable;
 import org.apache.commons.collections4.iterators.ReverseListIterator;
+import org.apache.poi.ooxml.util.POIXMLUnits;
 import org.apache.poi.util.Beta;
 import org.apache.poi.util.Internal;
 import org.apache.poi.util.LocaleUtil;
@@ -361,8 +362,8 @@ public class XDDFTextParagraph {
     public Double getDefaultTabSize() {
         return findDefinedParagraphProperty(
                 CTTextParagraphProperties::isSetDefTabSz,
-                CTTextParagraphProperties::getDefTabSz)
-            .map(Units::toPoints).orElse(null);
+                CTTextParagraphProperties::xgetDefTabSz)
+            .map(POIXMLUnits::parseLength).map(Units::toPoints).orElse(null);
     }
 
     /**

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/text/XDDFTextRun.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/text/XDDFTextRun.java?rev=1884368&r1=1884367&r2=1884368&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/text/XDDFTextRun.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/text/XDDFTextRun.java Sat Dec 12 23:15:20 2020
@@ -25,12 +25,14 @@ import java.util.function.Predicate;
 
 import org.apache.poi.common.usermodel.fonts.FontGroup;
 import org.apache.poi.ooxml.POIXMLRelation;
+import org.apache.poi.ooxml.util.POIXMLUnits;
 import org.apache.poi.openxml4j.opc.PackagePart;
 import org.apache.poi.openxml4j.opc.PackagePartName;
 import org.apache.poi.openxml4j.opc.PackageRelationship;
 import org.apache.poi.openxml4j.opc.TargetMode;
 import org.apache.poi.util.Beta;
 import org.apache.poi.util.Internal;
+import org.apache.poi.util.Units;
 import org.apache.poi.xddf.usermodel.XDDFColor;
 import org.apache.poi.xddf.usermodel.XDDFFillProperties;
 import org.apache.poi.xddf.usermodel.XDDFLineProperties;
@@ -294,7 +296,8 @@ public class XDDFTextRun {
     public boolean isSubscript() {
         return findDefinedProperty(
                 CTTextCharacterProperties::isSetBaseline,
-                CTTextCharacterProperties::getBaseline)
+                CTTextCharacterProperties::xgetBaseline)
+            .map(POIXMLUnits::parsePercent)
             .map(baseline -> baseline < 0)
             .orElse(false);
     }
@@ -306,7 +309,8 @@ public class XDDFTextRun {
     public boolean isSuperscript() {
         return findDefinedProperty(
                 CTTextCharacterProperties::isSetBaseline,
-                CTTextCharacterProperties::getBaseline)
+                CTTextCharacterProperties::xgetBaseline)
+            .map(POIXMLUnits::parsePercent)
             .map(baseline -> baseline > 0)
             .orElse(false);
     }
@@ -488,8 +492,9 @@ public class XDDFTextRun {
     public Double getCharacterSpacing() {
         return findDefinedProperty(
                 CTTextCharacterProperties::isSetSpc,
-                CTTextCharacterProperties::getSpc)
-            .map(spacing -> 0.01 * spacing)
+                CTTextCharacterProperties::xgetSpc)
+            .map(POIXMLUnits::parseLength)
+            .map(Units::toPoints)
             .orElse(null);
     }
 

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFColor.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFColor.java?rev=1884368&r1=1884367&r2=1884368&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFColor.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFColor.java Sat Dec 12 23:15:20 2020
@@ -22,6 +22,7 @@ import java.awt.Color;
 
 import javax.xml.namespace.QName;
 
+import org.apache.poi.ooxml.util.POIXMLUnits;
 import org.apache.poi.sl.draw.DrawPaint;
 import org.apache.poi.sl.usermodel.AbstractColorStyle;
 import org.apache.poi.sl.usermodel.ColorStyle;
@@ -52,10 +53,10 @@ public class XSLFColor {
     private static final POILogger LOGGER = POILogFactory.getLogger(XSLFColor.class);
     private static final QName VAL_ATTR = new QName("val");
 
-    private XmlObject _xmlObject;
-    private Color _color;
-    private CTSchemeColor _phClr;
-    private XSLFSheet _sheet;
+    private final XmlObject _xmlObject;
+    private final Color _color;
+    private final CTSchemeColor _phClr;
+    private final XSLFSheet _sheet;
 
     @SuppressWarnings("WeakerAccess")
     public XSLFColor(XmlObject obj, XSLFTheme theme, CTSchemeColor phClr, XSLFSheet sheet) {
@@ -88,8 +89,8 @@ public class XSLFColor {
     private Color toColor(CTHslColor hsl) {
         return DrawPaint.HSL2RGB(
             hsl.getHue2() / 60000d,
-            hsl.getSat2() / 1000d,
-            hsl.getLum2() / 1000d,
+            POIXMLUnits.parsePercent(hsl.xgetSat2()) / 1000d,
+            POIXMLUnits.parsePercent(hsl.xgetLum2()) / 1000d,
             1d);
     }
 
@@ -112,7 +113,10 @@ public class XSLFColor {
 
     private Color toColor(CTScRgbColor scrgb) {
         // percental [0..100000] scRGB color space  needs to be gamma corrected for AWT/sRGB colorspace
-        return DrawPaint.SCRGB2RGB(scrgb.getR()/100_000d,scrgb.getG()/100_000d,scrgb.getB()/100_000d);
+        return DrawPaint.SCRGB2RGB(
+            POIXMLUnits.parsePercent(scrgb.xgetR())/100_000d,
+            POIXMLUnits.parsePercent(scrgb.xgetG())/100_000d,
+            POIXMLUnits.parsePercent(scrgb.xgetB())/100_000d);
     }
 
     private Color toColor(CTSRgbColor srgb) {
@@ -487,9 +491,9 @@ public class XSLFColor {
     }
 
     private static class XSLFColorStyle extends AbstractColorStyle {
-        private XmlObject xmlObject;
-        private Color color;
-        private CTSchemeColor phClr;
+        private final XmlObject xmlObject;
+        private final Color color;
+        private final CTSchemeColor phClr;
 
         XSLFColorStyle(XmlObject xmlObject, Color color, CTSchemeColor phClr) {
             this.xmlObject = xmlObject;

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFComment.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFComment.java?rev=1884368&r1=1884367&r2=1884368&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFComment.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFComment.java Sat Dec 12 23:15:20 2020
@@ -21,6 +21,7 @@ import java.awt.geom.Point2D;
 import java.util.Calendar;
 import java.util.Date;
 
+import org.apache.poi.ooxml.util.POIXMLUnits;
 import org.apache.poi.sl.usermodel.Comment;
 import org.apache.poi.util.LocaleUtil;
 import org.apache.poi.util.Units;
@@ -111,7 +112,9 @@ public class XSLFComment implements Comm
     @Override
     public Point2D getOffset() {
         final CTPoint2D pos = comment.getPos();
-        return new Point2D.Double(Units.toPoints(pos.getX()), Units.toPoints(pos.getY()));
+        return new Point2D.Double(
+            Units.toPoints(POIXMLUnits.parseLength(pos.xgetX())),
+            Units.toPoints(POIXMLUnits.parseLength(pos.xgetY())));
     }
 
     @Override

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFFreeformShape.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFFreeformShape.java?rev=1884368&r1=1884367&r2=1884368&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFFreeformShape.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFFreeformShape.java Sat Dec 12 23:15:20 2020
@@ -28,6 +28,7 @@ import javax.xml.stream.XMLStreamExcepti
 import javax.xml.stream.XMLStreamReader;
 
 import org.apache.poi.ooxml.POIXMLTypeLoader;
+import org.apache.poi.ooxml.util.POIXMLUnits;
 import org.apache.poi.sl.draw.geom.CustomGeometry;
 import org.apache.poi.sl.draw.geom.PresetGeometries;
 import org.apache.poi.sl.usermodel.FreeformShape;
@@ -113,7 +114,7 @@ public class XSLFFreeformShape extends X
             numPoints += Math.max(points.length, 1);
             it.next();
         }
-        
+
         XmlObject xo = getShapeProperties();
         if (!(xo instanceof CTShapeProperties)) {
             return -1;
@@ -157,9 +158,8 @@ public class XSLFFreeformShape extends X
         if (!(xo instanceof CTShapeProperties)) {
             return null;
         }
-        
+
         final CTCustomGeometry2D geom = ((CTShapeProperties)xo).getCustGeom();
-        //noinspection deprecation
         for(CTPath2D spPath : geom.getPathLst().getPathArray()){
             XmlCursor cursor = spPath.newCursor();
             try {
@@ -193,7 +193,7 @@ public class XSLFFreeformShape extends X
 
         final CTTransform2D xfrm = getXfrm(false);
         final Rectangle2D xfrm2d = new Rectangle2D.Double
-                (xfrm.getOff().getX(), xfrm.getOff().getY(), xfrm.getExt().getCx(), xfrm.getExt().getCy());
+                (POIXMLUnits.parseLength(xfrm.getOff().xgetX()), POIXMLUnits.parseLength(xfrm.getOff().xgetY()), xfrm.getExt().getCx(), xfrm.getExt().getCy());
 
         final Rectangle2D bounds = getAnchor();
         at.translate(bounds.getX()+bounds.getCenterX(), bounds.getY()+bounds.getCenterY());

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFGradientPaint.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFGradientPaint.java?rev=1884368&r1=1884367&r2=1884368&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFGradientPaint.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFGradientPaint.java Sat Dec 12 23:15:20 2020
@@ -19,6 +19,7 @@ package org.apache.poi.xslf.usermodel;
 
 import java.util.Arrays;
 
+import org.apache.poi.ooxml.util.POIXMLUnits;
 import org.apache.poi.sl.usermodel.ColorStyle;
 import org.apache.poi.sl.usermodel.Insets2D;
 import org.apache.poi.sl.usermodel.PaintStyle;
@@ -43,8 +44,8 @@ public class XSLFGradientPaint implement
                 new CTGradientStop[0] : gradFill.getGsLst().getGsArray();
 
         Arrays.sort(gs, (o1, o2) -> {
-            int pos1 = o1.getPos();
-            int pos2 = o2.getPos();
+            int pos1 = POIXMLUnits.parsePercent(o1.xgetPos());
+            int pos2 = POIXMLUnits.parsePercent(o2.xgetPos());
             return Integer.compare(pos1, pos2);
         });
 
@@ -58,7 +59,7 @@ public class XSLFGradientPaint implement
                 phClrCgs = cgs.getSchemeClr();
             }
             cs[i] = new XSLFColor(cgs, theme, phClrCgs, sheet).getColorStyle();
-            fractions[i] = cgs.getPos() / 100000.f;
+            fractions[i] = POIXMLUnits.parsePercent(cgs.xgetPos()) / 100000.f;
             i++;
         }
 
@@ -113,7 +114,12 @@ public class XSLFGradientPaint implement
         if (gradFill.isSetPath() && gradFill.getPath().isSetFillToRect()) {
             final double base = 100_000;
             CTRelativeRect rect = gradFill.getPath().getFillToRect();
-            return new Insets2D(rect.getT()/base, rect.getL()/base, rect.getB()/base, rect.getR()/base);
+            return new Insets2D(
+                POIXMLUnits.parsePercent(rect.xgetT())/base,
+                POIXMLUnits.parsePercent(rect.xgetL())/base,
+                POIXMLUnits.parsePercent(rect.xgetB())/base,
+                POIXMLUnits.parsePercent(rect.xgetR())/base
+            );
         }
         return null;
     }

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFGraphicFrame.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFGraphicFrame.java?rev=1884368&r1=1884367&r2=1884368&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFGraphicFrame.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFGraphicFrame.java Sat Dec 12 23:15:20 2020
@@ -27,6 +27,7 @@ import java.io.IOException;
 import javax.xml.namespace.QName;
 
 import org.apache.poi.ooxml.POIXMLException;
+import org.apache.poi.ooxml.util.POIXMLUnits;
 import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
 import org.apache.poi.openxml4j.opc.PackagePart;
 import org.apache.poi.openxml4j.opc.PackageRelationship;
@@ -64,8 +65,8 @@ public class XSLFGraphicFrame extends XS
     public Rectangle2D getAnchor(){
         CTTransform2D xfrm = ((CTGraphicalObjectFrame)getXmlObject()).getXfrm();
         CTPoint2D off = xfrm.getOff();
-        double x = Units.toPoints(off.getX());
-        double y = Units.toPoints(off.getY());
+        double x = Units.toPoints(POIXMLUnits.parseLength(off.xgetX()));
+        double y = Units.toPoints(POIXMLUnits.parseLength(off.xgetY()));
         CTPositiveSize2D ext = xfrm.getExt();
         double cx = Units.toPoints(ext.getCx());
         double cy = Units.toPoints(ext.getCy());

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFGroupShape.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFGroupShape.java?rev=1884368&r1=1884367&r2=1884368&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFGroupShape.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFGroupShape.java Sat Dec 12 23:15:20 2020
@@ -26,6 +26,7 @@ import java.util.Iterator;
 import java.util.List;
 
 import org.apache.poi.ooxml.POIXMLDocumentPart.RelationPart;
+import org.apache.poi.ooxml.util.POIXMLUnits;
 import org.apache.poi.sl.draw.DrawPictureShape;
 import org.apache.poi.sl.usermodel.GroupShape;
 import org.apache.poi.sl.usermodel.PictureData;
@@ -49,14 +50,14 @@ import org.openxmlformats.schemas.presen
 
 /**
  * Represents a group shape that consists of many shapes grouped together.
- * 
+ *
  * @author Yegor Kozlov
  */
 @Beta
 public class XSLFGroupShape extends XSLFShape
 implements XSLFShapeContainer, GroupShape<XSLFShape,XSLFTextParagraph> {
     private final static POILogger _logger = POILogFactory.getLogger(XSLFGroupShape.class);
-    
+
     private final List<XSLFShape> _shapes;
     private final CTGroupShapeProperties _grpSpPr;
     private XSLFDrawing _drawing;
@@ -71,12 +72,12 @@ implements XSLFShapeContainer, GroupShap
     protected CTGroupShapeProperties getGrpSpPr() {
         return _grpSpPr;
     }
-    
+
     private CTGroupTransform2D getSafeXfrm() {
         CTGroupTransform2D xfrm = getXfrm();
         return (xfrm == null ? getGrpSpPr().addNewXfrm() : xfrm);
     }
-    
+
     protected CTGroupTransform2D getXfrm() {
         return getGrpSpPr().getXfrm();
     }
@@ -85,8 +86,8 @@ implements XSLFShapeContainer, GroupShap
     public Rectangle2D getAnchor(){
         CTGroupTransform2D xfrm = getXfrm();
         CTPoint2D off = xfrm.getOff();
-        double x = Units.toPoints(off.getX());
-        double y = Units.toPoints(off.getY());
+        double x = Units.toPoints(POIXMLUnits.parseLength(off.xgetX()));
+        double y = Units.toPoints(POIXMLUnits.parseLength(off.xgetY()));
         CTPositiveSize2D ext = xfrm.getExt();
         double cx = Units.toPoints(ext.getCx());
         double cy = Units.toPoints(ext.getCy());
@@ -118,8 +119,8 @@ implements XSLFShapeContainer, GroupShap
     public Rectangle2D getInteriorAnchor(){
         CTGroupTransform2D xfrm = getXfrm();
         CTPoint2D off = xfrm.getChOff();
-        double x = Units.toPoints(off.getX());
-        double y = Units.toPoints(off.getY());
+        double x = Units.toPoints(POIXMLUnits.parseLength(off.xgetX()));
+        double y = Units.toPoints(POIXMLUnits.parseLength(off.xgetY()));
         CTPositiveSize2D ext = xfrm.getChExt();
         double cx = Units.toPoints(ext.getCx());
         double cy = Units.toPoints(ext.getCy());
@@ -287,20 +288,20 @@ implements XSLFShapeContainer, GroupShap
         Dimension dim = pictureData.getImageDimension();
         oleObj.setImgW(Units.toEMU(dim.getWidth()));
         oleObj.setImgH(Units.toEMU(dim.getHeight()));
-        
-        
+
+
         getShapes().add(sh);
         sh.setParent(this);
         return sh;
     }
-    
+
     public XSLFTable createTable(){
         XSLFTable sh = getDrawing().createTable();
         _shapes.add(sh);
         sh.setParent(this);
         return sh;
     }
-    
+
     @Override
     public XSLFTable createTable(int numRows, int numCols){
         if (numRows < 1 || numCols < 1) {
@@ -318,7 +319,7 @@ implements XSLFShapeContainer, GroupShap
         return sh;
     }
 
-    
+
     @Override
     public void setFlipHorizontal(boolean flip){
         getSafeXfrm().setFlipH(flip);
@@ -359,7 +360,7 @@ implements XSLFShapeContainer, GroupShap
         // recursively update each shape
         List<XSLFShape> tgtShapes = getShapes();
         List<XSLFShape> srcShapes = gr.getShapes();
-        
+
         // workaround for a call by XSLFSheet.importContent:
         // if we have already the same amount of child shapes
         // then assume, that we've been called by import content and only need to update the children
@@ -367,13 +368,13 @@ implements XSLFShapeContainer, GroupShap
             for(int i = 0; i < tgtShapes.size(); i++){
                 XSLFShape s1 = srcShapes.get(i);
                 XSLFShape s2 = tgtShapes.get(i);
-    
+
                 s2.copy(s1);
             }
         } else {
             // otherwise recreate the shapes from scratch
             clear();
-            
+
             // recursively update each shape
             for(XSLFShape shape : srcShapes) {
                 XSLFShape newShape;
@@ -398,7 +399,7 @@ implements XSLFShapeContainer, GroupShap
                     _logger.log(POILogger.WARN, "copying of class "+shape.getClass()+" not supported.");
                     continue;
                 }
-    
+
                 newShape.copy(shape);
             }
         }

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFPictureShape.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFPictureShape.java?rev=1884368&r1=1884367&r2=1884368&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFPictureShape.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFPictureShape.java Sat Dec 12 23:15:20 2020
@@ -35,6 +35,7 @@ import javax.imageio.ImageIO;
 import javax.xml.namespace.QName;
 import javax.xml.stream.XMLStreamReader;
 
+import org.apache.poi.ooxml.util.POIXMLUnits;
 import org.apache.poi.ooxml.util.XPathHelper;
 import org.apache.poi.openxml4j.opc.PackagePart;
 import org.apache.poi.openxml4j.opc.PackageRelationship;
@@ -216,7 +217,12 @@ public class XSLFPictureShape extends XS
     @Override
     public Insets getClipping(){
         CTRelativeRect r = getBlipFill().getSrcRect();
-        return (r == null) ? null : new Insets(r.getT(), r.getL(), r.getB(), r.getR());
+
+        return (r == null) ? null : new Insets(
+            POIXMLUnits.parsePercent(r.xgetT()),
+            POIXMLUnits.parsePercent(r.xgetL()),
+            POIXMLUnits.parsePercent(r.xgetB()),
+            POIXMLUnits.parsePercent(r.xgetR()));
     }
 
     /**

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFSimpleShape.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFSimpleShape.java?rev=1884368&r1=1884367&r2=1884368&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFSimpleShape.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFSimpleShape.java Sat Dec 12 23:15:20 2020
@@ -25,6 +25,7 @@ import java.awt.geom.Rectangle2D;
 import javax.xml.stream.XMLStreamException;
 import javax.xml.stream.XMLStreamReader;
 
+import org.apache.poi.ooxml.util.POIXMLUnits;
 import org.apache.poi.openxml4j.opc.PackagePart;
 import org.apache.poi.sl.draw.DrawPaint;
 import org.apache.poi.sl.draw.geom.CustomGeometry;
@@ -129,8 +130,8 @@ public abstract class XSLFSimpleShape ex
         }
 
         CTPoint2D off = xfrm.getOff();
-        double x = Units.toPoints(off.getX());
-        double y = Units.toPoints(off.getY());
+        double x = Units.toPoints(POIXMLUnits.parseLength(off.xgetX()));
+        double y = Units.toPoints(POIXMLUnits.parseLength(off.xgetY()));
         CTPositiveSize2D ext = xfrm.getExt();
         double cx = Units.toPoints(ext.getCx());
         double cy = Units.toPoints(ext.getCy());
@@ -978,7 +979,6 @@ public abstract class XSLFSimpleShape ex
         XSLFGeometryProperties gp = XSLFPropertiesDelegate.getGeometryDelegate(getShapeProperties());
 
         if (gp != null && gp.isSetPrstGeom() && gp.getPrstGeom().isSetAvLst()) {
-            //noinspection deprecation
             for (CTGeomGuide g : gp.getPrstGeom().getAvLst().getGdArray()) {
                 if (g.getName().equals(name)) {
                     Guide gd = new Guide();

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTabStop.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTabStop.java?rev=1884368&r1=1884367&r2=1884368&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTabStop.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTabStop.java Sat Dec 12 23:15:20 2020
@@ -17,6 +17,7 @@
 
 package org.apache.poi.xslf.usermodel;
 
+import org.apache.poi.ooxml.util.POIXMLUnits;
 import org.apache.poi.sl.usermodel.TabStop;
 import org.apache.poi.util.Units;
 import org.openxmlformats.schemas.drawingml.x2006.main.CTTextTabStop;
@@ -25,14 +26,14 @@ import org.openxmlformats.schemas.drawin
 public class XSLFTabStop implements TabStop {
 
     final CTTextTabStop tabStop;
-    
+
     XSLFTabStop(CTTextTabStop tabStop) {
         this.tabStop = tabStop;
     }
-    
+
     /** position in EMUs */
     public int getPosition() {
-        return tabStop.getPos();
+        return (int)POIXMLUnits.parseLength(tabStop.xgetPos());
     }
 
     /** position in EMUs */
@@ -49,7 +50,7 @@ public class XSLFTabStop implements TabS
     public void setPositionInPoints(final double points) {
         setPosition(Units.toEMU(points));
     }
-    
+
     public TabStopType getType() {
         return TabStopType.fromOoxmlId(tabStop.getAlgn().intValue());
     }

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTable.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTable.java?rev=1884368&r1=1884367&r2=1884368&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTable.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTable.java Sat Dec 12 23:15:20 2020
@@ -27,6 +27,7 @@ import java.util.List;
 
 import javax.xml.namespace.QName;
 
+import org.apache.poi.ooxml.util.POIXMLUnits;
 import org.apache.poi.sl.draw.DrawFactory;
 import org.apache.poi.sl.draw.DrawTableShape;
 import org.apache.poi.sl.draw.DrawTextShape;
@@ -52,8 +53,8 @@ public class XSLFTable extends XSLFGraph
     TableShape<XSLFShape,XSLFTextParagraph> {
     /* package */ static final String TABLE_URI = "http://schemas.openxmlformats.org/drawingml/2006/table";
 
-    private CTTable _table;
-    private List<XSLFTableRow> _rows;
+    private final CTTable _table;
+    private final List<XSLFTableRow> _rows;
 
     /*package*/ XSLFTable(CTGraphicalObjectFrame shape, XSLFSheet sheet){
         super(shape, sheet);
@@ -123,8 +124,8 @@ public class XSLFTable extends XSLFGraph
 
     @Override
     public double getColumnWidth(int idx){
-        return Units.toPoints(
-                _table.getTblGrid().getGridColArray(idx).getW());
+        return Units.toPoints(POIXMLUnits.parseLength(
+                _table.getTblGrid().getGridColArray(idx).xgetW()));
     }
 
     @Override
@@ -134,7 +135,7 @@ public class XSLFTable extends XSLFGraph
 
     @Override
     public double getRowHeight(int row) {
-        return Units.toPoints(_table.getTrArray(row).getH());
+        return Units.toPoints(POIXMLUnits.parseLength(_table.getTrArray(row).xgetH()));
     }
 
     @Override
@@ -201,7 +202,7 @@ public class XSLFTable extends XSLFGraph
      * @since POI 4.1.2
      */
     public void addColumn() {
-        long width = _table.getTblGrid().getGridColArray(getNumberOfColumns() - 1).getW();
+        long width = POIXMLUnits.parseLength(_table.getTblGrid().getGridColArray(getNumberOfColumns() - 1).xgetW());
         CTTableCol col = _table.getTblGrid().addNewGridCol();
         col.setW(width);
         for (XSLFTableRow row : _rows) {
@@ -219,7 +220,7 @@ public class XSLFTable extends XSLFGraph
         if (getNumberOfColumns() < colIdx) {
             throw new IndexOutOfBoundsException("Cannot insert column at " + colIdx + "; table has only " + getNumberOfColumns() + "columns.");
         }
-        long width = _table.getTblGrid().getGridColArray(colIdx).getW();
+        long width = POIXMLUnits.parseLength(_table.getTblGrid().getGridColArray(colIdx).xgetW());
         CTTableCol col = _table.getTblGrid().insertNewGridCol(colIdx);
         col.setW(width);
         for (XSLFTableRow row : _rows) {

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTableRow.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTableRow.java?rev=1884368&r1=1884367&r2=1884368&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTableRow.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTableRow.java Sat Dec 12 23:15:20 2020
@@ -24,6 +24,7 @@ import java.util.Collections;
 import java.util.Iterator;
 import java.util.List;
 
+import org.apache.poi.ooxml.util.POIXMLUnits;
 import org.apache.poi.util.Units;
 import org.openxmlformats.schemas.drawingml.x2006.main.CTTableCell;
 import org.openxmlformats.schemas.drawingml.x2006.main.CTTableRow;
@@ -39,7 +40,6 @@ public class XSLFTableRow implements Ite
     /*package*/ XSLFTableRow(CTTableRow row, XSLFTable table){
         _row = row;
         _table = table;
-        @SuppressWarnings("deprecation")
         CTTableCell[] tcArray = _row.getTcArray();
         _cells = new ArrayList<>(tcArray.length);
         for(CTTableCell cell : tcArray) {
@@ -61,7 +61,7 @@ public class XSLFTableRow implements Ite
     }
 
     public double getHeight(){
-        return Units.toPoints(_row.getH());
+        return Units.toPoints(POIXMLUnits.parseLength(_row.xgetH()));
     }
 
     public void setHeight(double height){

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTextParagraph.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTextParagraph.java?rev=1884368&r1=1884367&r2=1884368&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTextParagraph.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTextParagraph.java Sat Dec 12 23:15:20 2020
@@ -25,6 +25,7 @@ import java.util.function.Consumer;
 import java.util.function.Function;
 import java.util.function.Supplier;
 
+import org.apache.poi.ooxml.util.POIXMLUnits;
 import org.apache.poi.sl.draw.DrawPaint;
 import org.apache.poi.sl.usermodel.AutoNumberingScheme;
 import org.apache.poi.sl.usermodel.PaintStyle;
@@ -302,7 +303,7 @@ public class XSLFTextParagraph implement
 
     private static void fetchBulletFontSize(CTTextParagraphProperties props, Consumer<Double> val) {
         if(props.isSetBuSzPct()){
-            val.accept(props.getBuSzPct().getVal() * 0.001);
+            val.accept(POIXMLUnits.parsePercent(props.getBuSzPct().xgetVal()) * 0.001);
         }
         if(props.isSetBuSzPts()){
             val.accept( - props.getBuSzPts().getVal() * 0.01);
@@ -324,7 +325,7 @@ public class XSLFTextParagraph implement
 
         if(bulletSize >= 0) {
             CTTextBulletSizePercent pt = pr.isSetBuSzPct() ? pr.getBuSzPct() : pr.addNewBuSzPct();
-            pt.setVal((int)(bulletSize*1000));
+            pt.setVal(Integer.toString((int)(bulletSize*1000)));
             if(pr.isSetBuSzPts()) {
                 pr.unsetBuSzPts();
             }
@@ -452,7 +453,7 @@ public class XSLFTextParagraph implement
     public Double getDefaultTabSize(){
         return fetchParagraphProperty((props, val) -> {
             if (props.isSetDefTabSz()) {
-                val.accept(Units.toPoints(props.getDefTabSz()));
+                val.accept(Units.toPoints(POIXMLUnits.parseLength(props.xgetDefTabSz())));
             }
         });
     }
@@ -468,7 +469,7 @@ public class XSLFTextParagraph implement
             CTTextTabStopList tabStops = props.getTabLst();
             if(idx < tabStops.sizeOfTabArray() ) {
                 CTTextTabStop ts = tabStops.getTabArray(idx);
-                val.accept(Units.toPoints(ts.getPos()));
+                val.accept(Units.toPoints(POIXMLUnits.parseLength(ts.xgetPos())));
             }
         }
     }
@@ -493,7 +494,7 @@ public class XSLFTextParagraph implement
             // check if the percentage value is scaled
             final CTTextNormalAutofit normAutofit = getParentShape().getTextBodyPr().getNormAutofit();
             if (normAutofit != null) {
-                final double scale = 1 - (double)normAutofit.getLnSpcReduction() / 100000;
+                final double scale = 1 - POIXMLUnits.parsePercent(normAutofit.xgetLnSpcReduction()) / 100_000.;
                 return lnSpc * scale;
             }
         }
@@ -569,7 +570,7 @@ public class XSLFTextParagraph implement
         final CTTextSpacing spc = getSpc.apply(props).get();
         if (spc != null) {
             if (spc.isSetSpcPct()) {
-                val.accept( spc.getSpcPct().getVal()*0.001 );
+                val.accept( POIXMLUnits.parsePercent(spc.getSpcPct().xgetVal())*0.001 );
             } else if (spc.isSetSpcPts()) {
                 val.accept( -spc.getSpcPts().getVal()*0.01 );
             }



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