Class ArcToCommand

java.lang.Object
org.apache.poi.sl.draw.geom.ArcToCommand
All Implemented Interfaces:
ArcToCommandIf, PathCommand

public class ArcToCommand extends Object implements ArcToCommandIf
ArcTo command within a shape path in DrawingML: <arcTo wR="wr" hR="hr" stAng="stAng" swAng="swAng"/>

Where wr and wh are the height and width radii of the supposed circle being used to draw the arc. This gives the circle a total height of (2 * hR) and a total width of (2 * wR)

stAng is the start angle and swAng is the swing angle

Java class for CT_Path2DArcTo complex type.

The following schema fragment specifies the expected content contained within this class.

 <complexType name="CT_Path2DArcTo">
   <complexContent>
     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
       <attribute name="wR" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_AdjCoordinate" />
       <attribute name="hR" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_AdjCoordinate" />
       <attribute name="stAng" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_AdjAngle" />
       <attribute name="swAng" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_AdjAngle" />
     </restriction>
   </complexContent>
 </complexType>
 
  • Constructor Details

    • ArcToCommand

      public ArcToCommand()
  • Method Details

    • setHR

      public void setHR(String hr)
      Specified by:
      setHR in interface ArcToCommandIf
    • getHR

      public String getHR()
      Specified by:
      getHR in interface ArcToCommandIf
    • getStAng

      public String getStAng()
      Specified by:
      getStAng in interface ArcToCommandIf
    • getWR

      public String getWR()
      Specified by:
      getWR in interface ArcToCommandIf
    • setWR

      public void setWR(String wr)
      Specified by:
      setWR in interface ArcToCommandIf
    • setStAng

      public void setStAng(String stAng)
      Specified by:
      setStAng in interface ArcToCommandIf
    • getSwAng

      public String getSwAng()
      Specified by:
      getSwAng in interface ArcToCommandIf
    • setSwAng

      public void setSwAng(String swAng)
      Specified by:
      setSwAng in interface ArcToCommandIf
    • convertOoxml2AwtAngle

      @Internal public static double convertOoxml2AwtAngle(double ooAngle, double width, double height)
      Arc2D angles are skewed, OOXML aren't ... so we need to unskew them

      Furthermore, ooxml angle starts at the X-axis and increases clock-wise, whereas Arc2D api states "45 degrees always falls on the line from the center of the ellipse to the upper right corner of the framing rectangle" so we need to reverse it

       AWT:                      OOXML:
                  |90/-270                     |270/-90 (16200000)
                  |                            |
       +/-180-----------0           +/-180-----------0
                  |               (10800000)   |
                  |270/-90                     |90/-270 (5400000)
       
      Parameters:
      ooAngle - the angle in OOXML units divided by 60000
      width - the width of the bounding box
      height - the height of the bounding box
      Returns:
      the angle in degrees
      See Also:
    • equals

      public boolean equals(Object o)
      Overrides:
      equals in class Object
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object