diff options
author | Yegor Kozlov <yegor@apache.org> | 2012-02-08 12:54:02 +0000 |
---|---|---|
committer | Yegor Kozlov <yegor@apache.org> | 2012-02-08 12:54:02 +0000 |
commit | 9ed06b7351748ae791e2ad91993531b12e489ee5 (patch) | |
tree | daa25ab7b71b5af5920d30724594475158e7d1ec /src | |
parent | 8840f717da8af3218c94d0d99f409ed1c77f8fe7 (diff) | |
download | poi-9ed06b7351748ae791e2ad91993531b12e489ee5.tar.gz poi-9ed06b7351748ae791e2ad91993531b12e489ee5.zip |
added methods to get/set preset shape geometry in XSLF
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1241885 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src')
5 files changed, 268 insertions, 28 deletions
diff --git a/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFAutoShape.java b/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFAutoShape.java index b880e5988d..1ee8f6f55f 100644 --- a/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFAutoShape.java +++ b/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFAutoShape.java @@ -85,4 +85,5 @@ public class XSLFAutoShape extends XSLFTextShape { public String toString(){
return "[" + getClass().getSimpleName() + "] " + getShapeName();
}
+
}
diff --git a/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFShapeType.java b/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFShapeType.java new file mode 100644 index 0000000000..57163ff742 --- /dev/null +++ b/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFShapeType.java @@ -0,0 +1,236 @@ +/* + * ==================================================================== + * 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.xslf.usermodel; + +/** + * known preset shape geometries in PresentationML + * + * @author Yegor Kozlov + */ +public enum XSLFShapeType { + LINE(1), + LINE_INV(2), + TRIANGLE(3), + RT_TRIANGLE(4), + RECT(5), + DIAMOND(6), + PARALLELOGRAM(7), + TRAPEZOID(8), + NON_ISOSCELES_TRAPEZOID(9), + PENTAGON(10), + HEXAGON(11), + HEPTAGON(12), + OCTAGON(13), + DECAGON(14), + DODECAGON(15), + STAR_4(16), + STAR_5(17), + STAR_6(18), + STAR_7(19), + STAR_8(20), + STAR_10(21), + STAR_12(22), + STAR_16(23), + STAR_24(24), + STAR_32(25), + ROUND_RECT(26), + ROUND_1_RECT(27), + ROUND_2_SAME_RECT(28), + ROUND_2_DIAG_RECT(29), + SNIP_ROUND_RECT(30), + SNIP_1_RECT(31), + SNIP_2_SAME_RECT(32), + SNIP_2_DIAG_RECT(33), + PLAQUE(34), + ELLIPSE(35), + TEARDROP(36), + HOME_PLATE(37), + CHEVRON(38), + PIE_WEDGE(39), + PIE(40), + BLOCK_ARC(41), + DONUT(42), + NO_SMOKING(43), + RIGHT_ARROW(44), + LEFT_ARROW(45), + UP_ARROW(46), + DOWN_ARROW(47), + STRIPED_RIGHT_ARROW(48), + NOTCHED_RIGHT_ARROW(49), + BENT_UP_ARROW(50), + LEFT_RIGHT_ARROW(51), + UP_DOWN_ARROW(52), + LEFT_UP_ARROW(53), + LEFT_RIGHT_UP_ARROW(54), + QUAD_ARROW(55), + LEFT_ARROW_CALLOUT(56), + RIGHT_ARROW_CALLOUT(57), + UP_ARROW_CALLOUT(58), + DOWN_ARROW_CALLOUT(59), + LEFT_RIGHT_ARROW_CALLOUT(60), + UP_DOWN_ARROW_CALLOUT(61), + QUAD_ARROW_CALLOUT(62), + BENT_ARROW(63), + UTURN_ARROW(64), + CIRCULAR_ARROW(65), + LEFT_CIRCULAR_ARROW(66), + LEFT_RIGHT_CIRCULAR_ARROW(67), + CURVED_RIGHT_ARROW(68), + CURVED_LEFT_ARROW(69), + CURVED_UP_ARROW(70), + CURVED_DOWN_ARROW(71), + SWOOSH_ARROW(72), + CUBE(73), + CAN(74), + LIGHTNING_BOLT(75), + HEART(76), + SUN(77), + MOON(78), + SMILEY_FACE(79), + IRREGULAR_SEAL_1(80), + IRREGULAR_SEAL_2(81), + FOLDED_CORNER(82), + BEVEL(83), + FRAME(84), + HALF_FRAME(85), + CORNER(86), + DIAG_STRIPE(87), + CHORD(88), + ARC(89), + LEFT_BRACKET(90), + RIGHT_BRACKET(91), + LEFT_BRACE(92), + RIGHT_BRACE(93), + BRACKET_PAIR(94), + BRACE_PAIR(95), + STRAIGHT_CONNECTOR_1(96), + BENT_CONNECTOR_2(97), + BENT_CONNECTOR_3(98), + BENT_CONNECTOR_4(99), + BENT_CONNECTOR_5(100), + CURVED_CONNECTOR_2(101), + CURVED_CONNECTOR_3(102), + CURVED_CONNECTOR_4(103), + CURVED_CONNECTOR_5(104), + CALLOUT_1(105), + CALLOUT_2(106), + CALLOUT_3(107), + ACCENT_CALLOUT_1(108), + ACCENT_CALLOUT_2(109), + ACCENT_CALLOUT_3(110), + BORDER_CALLOUT_1(111), + BORDER_CALLOUT_2(112), + BORDER_CALLOUT_3(113), + ACCENT_BORDER_CALLOUT_1(114), + ACCENT_BORDER_CALLOUT_2(115), + ACCENT_BORDER_CALLOUT_3(116), + WEDGE_RECT_CALLOUT(117), + WEDGE_ROUND_RECT_CALLOUT(118), + WEDGE_ELLIPSE_CALLOUT(119), + CLOUD_CALLOUT(120), + CLOUD(121), + RIBBON(122), + RIBBON_2(123), + ELLIPSE_RIBBON(124), + ELLIPSE_RIBBON_2(125), + LEFT_RIGHT_RIBBON(126), + VERTICAL_SCROLL(127), + HORIZONTAL_SCROLL(128), + WAVE(129), + DOUBLE_WAVE(130), + PLUS(131), + FLOW_CHART_PROCESS(132), + FLOW_CHART_DECISION(133), + FLOW_CHART_INPUT_OUTPUT(134), + FLOW_CHART_PREDEFINED_PROCESS(135), + FLOW_CHART_INTERNAL_STORAGE(136), + FLOW_CHART_DOCUMENT(137), + FLOW_CHART_MULTIDOCUMENT(138), + FLOW_CHART_TERMINATOR(139), + FLOW_CHART_PREPARATION(140), + FLOW_CHART_MANUAL_INPUT(141), + FLOW_CHART_MANUAL_OPERATION(142), + FLOW_CHART_CONNECTOR(143), + FLOW_CHART_PUNCHED_CARD(144), + FLOW_CHART_PUNCHED_TAPE(145), + FLOW_CHART_SUMMING_JUNCTION(146), + FLOW_CHART_OR(147), + FLOW_CHART_COLLATE(148), + FLOW_CHART_SORT(149), + FLOW_CHART_EXTRACT(150), + FLOW_CHART_MERGE(151), + FLOW_CHART_OFFLINE_STORAGE(152), + FLOW_CHART_ONLINE_STORAGE(153), + FLOW_CHART_MAGNETIC_TAPE(154), + FLOW_CHART_MAGNETIC_DISK(155), + FLOW_CHART_MAGNETIC_DRUM(156), + FLOW_CHART_DISPLAY(157), + FLOW_CHART_DELAY(158), + FLOW_CHART_ALTERNATE_PROCESS(159), + FLOW_CHART_OFFPAGE_CONNECTOR(160), + ACTION_BUTTON_BLANK(161), + ACTION_BUTTON_HOME(162), + ACTION_BUTTON_HELP(163), + ACTION_BUTTON_INFORMATION(164), + ACTION_BUTTON_FORWARD_NEXT(165), + ACTION_BUTTON_BACK_PREVIOUS(166), + ACTION_BUTTON_END(167), + ACTION_BUTTON_BEGINNING(168), + ACTION_BUTTON_RETURN(169), + ACTION_BUTTON_DOCUMENT(170), + ACTION_BUTTON_SOUND(171), + ACTION_BUTTON_MOVIE(172), + GEAR_6(173), + GEAR_9(174), + FUNNEL(175), + MATH_PLUS(176), + MATH_MINUS(177), + MATH_MULTIPLY(178), + MATH_DIVIDE(179), + MATH_EQUAL(180), + MATH_NOT_EQUAL(181), + CORNER_TABS(182), + SQUARE_TABS(183), + PLAQUE_TABS(184), + CHART_X(185), + CHART_STAR(186), + CHART_PLUS(187); + + private int _idx; + + XSLFShapeType(int idx){ + _idx = idx; + } + + /** + * + * @return index in the STShapeType enum + */ + int getIndex(){ + return _idx; + } + + static XSLFShapeType forInt(int idx){ + for(XSLFShapeType t : values()){ + if(t._idx == idx) return t; + } + throw new IllegalArgumentException("Unknown shape type: " + idx); + } +} diff --git a/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFSimpleShape.java b/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFSimpleShape.java index 19150d0839..6e4768399b 100644 --- a/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFSimpleShape.java +++ b/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFSimpleShape.java @@ -22,35 +22,22 @@ package org.apache.poi.xslf.usermodel; import org.apache.poi.util.Beta;
import org.apache.poi.util.Units;
import org.apache.poi.xslf.model.PropertyFetcher;
-import org.apache.poi.xslf.model.geom.Context;
import org.apache.poi.xslf.model.geom.CustomGeometry;
-import org.apache.poi.xslf.model.geom.Guide;
-import org.apache.poi.xslf.model.geom.IAdjustableShape;
import org.apache.poi.xslf.model.geom.Outline;
import org.apache.poi.xslf.model.geom.Path;
import org.apache.poi.xslf.model.geom.PresetGeometries;
-import org.apache.poi.openxml4j.opc.PackageRelationship;
-import org.apache.poi.openxml4j.opc.PackagePart;
-import org.apache.poi.openxml4j.opc.TargetMode;
-import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
-import org.apache.poi.POIXMLException;
import org.apache.xmlbeans.XmlObject;
import org.openxmlformats.schemas.drawingml.x2006.main.*;
import org.openxmlformats.schemas.presentationml.x2006.main.CTPlaceholder;
+import org.openxmlformats.schemas.presentationml.x2006.main.CTShape;
import org.openxmlformats.schemas.presentationml.x2006.main.STPlaceholderType;
-import org.openxmlformats.schemas.presentationml.x2006.main.CTPicture;
-import java.awt.Color;
-import java.awt.Graphics2D;
-import java.awt.Paint;
-import java.awt.Shape;
+import java.awt.*;
import java.awt.geom.AffineTransform;
import java.awt.geom.Ellipse2D;
import java.awt.geom.GeneralPath;
import java.awt.geom.Rectangle2D;
import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
import java.util.List;
/**
@@ -88,13 +75,19 @@ public abstract class XSLFSimpleShape extends XSLFShape { }
/**
- * TODO match STShapeType with
- * {@link org.apache.poi.sl.usermodel.ShapeTypes}
+ *
+ * @param type
*/
- public int getShapeType() {
- CTPresetGeometry2D prst = getSpPr().getPrstGeom();
- STShapeType.Enum stEnum = prst == null ? null : prst.getPrst();
- return stEnum == null ? 0 : stEnum.intValue();
+ public void setShapeType(XSLFShapeType type){
+ CTShape shape = (CTShape) getXmlObject();
+ STShapeType.Enum geom = STShapeType.Enum.forInt(type.getIndex());
+ shape.getSpPr().getPrstGeom().setPrst(geom);
+ }
+
+ public XSLFShapeType getShapeType(){
+ CTShape shape = (CTShape) getXmlObject();
+ STShapeType.Enum geom = shape.getSpPr().getPrstGeom().getPrst();
+ return XSLFShapeType.forInt(geom.intValue());
}
@Override
diff --git a/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTextBox.java b/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTextBox.java index ef523b4fc8..e27bedbb53 100644 --- a/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTextBox.java +++ b/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTextBox.java @@ -20,15 +20,9 @@ package org.apache.poi.xslf.usermodel;
import org.apache.poi.util.Beta;
-import org.openxmlformats.schemas.drawingml.x2006.main.CTNonVisualDrawingProps;
-import org.openxmlformats.schemas.drawingml.x2006.main.CTPresetGeometry2D;
-import org.openxmlformats.schemas.drawingml.x2006.main.CTShapeProperties;
-import org.openxmlformats.schemas.drawingml.x2006.main.CTTextBody;
-import org.openxmlformats.schemas.drawingml.x2006.main.STShapeType;
-import org.openxmlformats.schemas.presentationml.x2006.main.CTApplicationNonVisualDrawingProps;
+import org.openxmlformats.schemas.drawingml.x2006.main.*;
import org.openxmlformats.schemas.presentationml.x2006.main.CTShape;
import org.openxmlformats.schemas.presentationml.x2006.main.CTShapeNonVisual;
-import org.openxmlformats.schemas.presentationml.x2006.main.STPlaceholderType;
/**
diff --git a/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFAutoShape.java b/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFAutoShape.java index 0ca30a3b94..922d25f83d 100644 --- a/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFAutoShape.java +++ b/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFAutoShape.java @@ -264,4 +264,20 @@ public class TestXSLFAutoShape extends TestCase { r.setText(null);
assertNull(r.getText());
}
+
+ public void testShapeType() {
+ XMLSlideShow ppt = new XMLSlideShow();
+ XSLFSlide slide = ppt.createSlide();
+
+ XSLFAutoShape shape = slide.createAutoShape();
+ assertEquals(XSLFShapeType.RECT, shape.getShapeType());
+
+ shape.setShapeType(XSLFShapeType.TRIANGLE);
+ assertEquals(XSLFShapeType.TRIANGLE, shape.getShapeType());
+
+ for(XSLFShapeType tp : XSLFShapeType.values()) {
+ shape.setShapeType(tp);
+ assertEquals(tp, shape.getShapeType());
+ }
+ }
}
\ No newline at end of file |