Author: fanningpj
Date: Thu Jul 16 12:50:40 2020
New Revision: 1879950

URL: http://svn.apache.org/viewvc?rev=1879950&view=rev
Log:
[bug-64605] add support for non-integer font sizes on character runs (use 
double instead of float)

Modified:
    poi/trunk/src/java/org/apache/poi/wp/usermodel/CharacterRun.java
    
poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDefaultRunStyle.java
    poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFRun.java
    poi/trunk/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFRun.java
    
poi/trunk/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFStyles.java
    poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/usermodel/CharacterRun.java

Modified: poi/trunk/src/java/org/apache/poi/wp/usermodel/CharacterRun.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/wp/usermodel/CharacterRun.java?rev=1879950&r1=1879949&r2=1879950&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/wp/usermodel/CharacterRun.java (original)
+++ poi/trunk/src/java/org/apache/poi/wp/usermodel/CharacterRun.java Thu Jul 16 
12:50:40 2020
@@ -48,9 +48,9 @@ public interface CharacterRun {
     void setImprinted(boolean imprint);
 
     int getFontSize();
-    float getFontSizeAsFloat();
+    Double getFontSizeAsDouble();
     void setFontSize(int halfPoints);
-    void setFontSize(float halfPoints);
+    void setFontSize(double halfPoints);
 
     int getCharacterSpacing();
     void setCharacterSpacing(int twips);

Modified: 
poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDefaultRunStyle.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDefaultRunStyle.java?rev=1879950&r1=1879949&r2=1879950&view=diff
==============================================================================
--- 
poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDefaultRunStyle.java 
(original)
+++ 
poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDefaultRunStyle.java 
Thu Jul 16 12:50:40 2020
@@ -19,6 +19,9 @@ package org.apache.poi.xwpf.usermodel;
 
 import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTRPr;
 
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+
 /**
  * Default Character Run style, from which other styles will override
  * TODO Share logic with {@link XWPFRun} which also uses CTRPr
@@ -35,8 +38,18 @@ public class XWPFDefaultRunStyle {
     }
 
     public int getFontSize() {
-        if (rpr.isSetSz())
-            return rpr.getSz().getVal().intValue() / 2;
-        return -1;
+        BigDecimal bd = getFontSizeAsBigDecimal(0);
+        return bd == null ? -1 : bd.intValue();
+    }
+
+    public Double getFontSizeAsDouble() {
+        BigDecimal bd = getFontSizeAsBigDecimal(1);
+        return bd == null ? null : bd.doubleValue();
+    }
+
+    private BigDecimal getFontSizeAsBigDecimal(int scale) {
+        return (rpr != null && rpr.isSetSz()) ?
+                new 
BigDecimal(rpr.getSz().getVal()).divide(BigDecimal.valueOf(2)).setScale(scale, 
RoundingMode.HALF_UP) :
+                null;
     }
 }

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFRun.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFRun.java?rev=1879950&r1=1879949&r2=1879950&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFRun.java 
(original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFRun.java Thu Jul 
16 12:50:40 2020
@@ -868,13 +868,14 @@ public class XWPFRun implements ISDTCont
      * characters in the contents of this run when displayed.
      *
      * @return value representing the font size (non-integer size will be 
rounded with half rounding up)
-     * @deprecated use {@link #getFontSizeAsFloat()}
+     * @deprecated use {@link #getFontSizeAsDouble()}
      */
     @Deprecated
     @Removal(version = "6.0.0")
     @Override
     public int getFontSize() {
-        return getFontSizeAsBigDecimal(0).intValue();
+        BigDecimal bd = getFontSizeAsBigDecimal(0);
+        return bd == null ? -1 : bd.intValue();
     }
 
     /**
@@ -885,15 +886,16 @@ public class XWPFRun implements ISDTCont
      * @since POI 5.0.0
      */
     @Override
-    public float getFontSizeAsFloat() {
-        return getFontSizeAsBigDecimal(1).floatValue();
+    public Double getFontSizeAsDouble() {
+        BigDecimal bd = getFontSizeAsBigDecimal(1);
+        return bd == null ? null : bd.doubleValue();
     }
 
     private BigDecimal getFontSizeAsBigDecimal(int scale) {
         CTRPr pr = getRunProperties(false);
         return (pr != null && pr.isSetSz()) ?
                 new 
BigDecimal(pr.getSz().getVal()).divide(BigDecimal.valueOf(2)).setScale(scale, 
RoundingMode.HALF_UP) :
-                BigDecimal.valueOf(-1);
+                null;
     }
 
     /**
@@ -930,7 +932,7 @@ public class XWPFRun implements ISDTCont
      * @since POI 5.0.0
      */
     @Override
-    public void setFontSize(float size) {
+    public void setFontSize(double size) {
         BigDecimal bd = BigDecimal.valueOf(size);
         CTRPr pr = getRunProperties(true);
         CTHpsMeasure ctSize = pr.isSetSz() ? pr.getSz() : pr.addNewSz();

Modified: 
poi/trunk/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFRun.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFRun.java?rev=1879950&r1=1879949&r2=1879950&view=diff
==============================================================================
--- 
poi/trunk/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFRun.java 
(original)
+++ 
poi/trunk/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFRun.java 
Thu Jul 16 12:50:40 2020
@@ -183,7 +183,7 @@ public class TestXWPFRun {
 
         XWPFRun run = new XWPFRun(ctRun, irb);
         assertEquals(7, run.getFontSize());
-        assertEquals(7.0f, run.getFontSizeAsFloat(), 0.01);
+        assertEquals(7.0, run.getFontSizeAsDouble(), 0.01);
 
         run.setFontSize(24);
         assertEquals(48, rpr.getSz().getVal().longValue());
@@ -191,7 +191,7 @@ public class TestXWPFRun {
         run.setFontSize(24.5f);
         assertEquals(49, rpr.getSz().getVal().longValue());
         assertEquals(25, run.getFontSize());
-        assertEquals(24.5f, run.getFontSizeAsFloat(), 0.01);
+        assertEquals(24.5, run.getFontSizeAsDouble(), 0.01);
     }
 
     @Test

Modified: 
poi/trunk/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFStyles.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFStyles.java?rev=1879950&r1=1879949&r2=1879950&view=diff
==============================================================================
--- 
poi/trunk/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFStyles.java 
(original)
+++ 
poi/trunk/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFStyles.java 
Thu Jul 16 12:50:40 2020
@@ -202,6 +202,7 @@ public final class TestXWPFStyles {
             assertNotNull(styles.getDefaultParagraphStyle());
 
             assertEquals(11, styles.getDefaultRunStyle().getFontSize());
+            assertEquals(11.0, 
styles.getDefaultRunStyle().getFontSizeAsDouble(), 0.01);
             assertEquals(200, 
styles.getDefaultParagraphStyle().getSpacingAfter());
         }
     }

Modified: 
poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/usermodel/CharacterRun.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/usermodel/CharacterRun.java?rev=1879950&r1=1879949&r2=1879950&view=diff
==============================================================================
--- 
poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/usermodel/CharacterRun.java 
(original)
+++ 
poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/usermodel/CharacterRun.java 
Thu Jul 16 12:50:40 2020
@@ -352,9 +352,9 @@ public final class CharacterRun extends
     return _props.getHps();
   }
 
-  public float getFontSizeAsFloat()
+  public Double getFontSizeAsDouble()
   {
-    return (float)getFontSize();
+    return (double)getFontSize();
   }
 
   public void setFontSize(int halfPoints)
@@ -365,7 +365,7 @@ public final class CharacterRun extends
 
   }
 
-  public void setFontSize(float halfPoints)
+  public void setFontSize(double halfPoints)
   {
     setFontSize(BigDecimal.valueOf(halfPoints).setScale(0, 
RoundingMode.HALF_UP).intValue());
   }



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

Reply via email to