</copy>
</target>
- <target name="compile-scratchpad" depends="compile-main">
+ <target name="generate-geometry" depends="fetch-ooxml-xsds">
+ <delete dir="${geometry.output.tmpdir}"/>
+ <!-- taskdef xjc -->
+ <!-- "D:\Program Files\Java\jdk1.6.0_45\bin\xjc" -p org.apache.poi.sl.model.geom.binding -readOnly -Xlocator -mark-generated ooxml-schemas\dml-shapeGeometry.xsd -->
+ <unzip src="${ooxml.lib}/${ooxml.xsds.izip.1}" dest="${geometry.output.tmpdir}"/>
+ <exec executable="${env.JAVA_HOME}/bin/xjc">
+ <arg value="-p"/>
+ <arg value="${geometry.pkg}"/>
+ <arg value="-b"/>
+ <arg file="src/types/definitions/dml-shapeGeometry.xjb"/>
+ <arg value="-readOnly"/>
+ <arg value="-npa"/>
+ <arg value="-no-header"/>
+ <!--arg value="-mark-generated"/ -->
+ <!--arg value="-Xlocator"/ -->
+ <arg file="${geometry.output.tmpdir}/dml-shapeGeometry.xsd"/>
+ <arg value="-d"/>
+ <arg file="${geometry.output.tmpdir}"/>
+ </exec>
+ <copy file="src/java/org/apache/poi/POIDocument.java" tofile="${geometry.output.tmpdir}/apache-license.txt">
+ <filterchain>
+ <headfilter lines="16"/>
+ </filterchain>
+ </copy>
- <copy todir="${scratchpad.src}">
++ <copy todir="${main.src}">
+ <fileset dir="${geometry.output.tmpdir}" includes="**/*.java"/>
+ <filterchain>
+ <concatfilter prepend="${geometry.output.tmpdir}/apache-license.txt"/>
+ </filterchain>
+ </copy>
+ </target>
+
+ <target name="compile-scratchpad" depends="compile-main,generate-geometry">
<javac target="${jdk.version.class}"
source="${jdk.version.source}"
destdir="${scratchpad.output.dir}"
import java.io.InputStream;
import org.apache.poi.openxml4j.opc.OPCPackage;
++import org.apache.poi.sl.draw.DrawFactory;
++import org.apache.poi.sl.draw.Drawable;
import org.apache.poi.xslf.XSLFSlideShow;
+ import org.apache.poi.xslf.usermodel.XMLSlideShow;
+ import org.apache.poi.xslf.usermodel.XSLFNotes;
+ import org.apache.poi.xslf.usermodel.XSLFShape;
+ import org.apache.poi.xslf.usermodel.XSLFSlide;
+ import org.apache.poi.xslf.usermodel.XSLFTextParagraph;
+ import org.apache.poi.xslf.usermodel.XSLFTextShape;
import org.junit.Test;
- public class XSLFFileHandler implements FileHandler {
+ public class XSLFFileHandler extends AbstractFileHandler {
@Override
public void handleFile(InputStream stream) throws Exception {
- // ignore password protected files
- if (POIXMLDocumentHandler.isEncrypted(stream)) return;
-
XSLFSlideShow slide = new XSLFSlideShow(OPCPackage.open(stream));
assertNotNull(slide.getPresentation());
assertNotNull(slide.getSlideMasterReferences());
assertNotNull(slide.getSlideReferences());
new POIXMLDocumentHandler().handlePOIXMLDocument(slide);
+
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ try {
+ slide.write(out);
+ } finally {
+ out.close();
+ }
+
+ createBitmaps(out);
}
- XSLFSlide[] xmlSlide = ppt.getSlides();
- int slideSize = xmlSlide.length;
- for (int i = 0; i < slideSize; i++) {
+ private void createBitmaps(ByteArrayOutputStream out) throws IOException {
+ XMLSlideShow ppt = new XMLSlideShow(new ByteArrayInputStream(out.toByteArray()));
+ Dimension pgsize = ppt.getPageSize();
- xmlSlide[i].draw(graphics);
++ for (XSLFSlide xmlSlide : ppt.getSlides()) {
+ // System.out.println("slide-" + (i + 1));
+ // System.out.println("" + xmlSlide[i].getTitle());
+
+ BufferedImage img = new BufferedImage(pgsize.width, pgsize.height, BufferedImage.TYPE_INT_RGB);
+ Graphics2D graphics = img.createGraphics();
+
+ // draw stuff
- XSLFNotes notes = xmlSlide[i].getNotes();
++ xmlSlide.draw(graphics);
+
+ // Also try to read notes
- note.draw(graphics);
++ XSLFNotes notes = xmlSlide.getNotes();
+ if(notes != null) {
+ for (XSLFShape note : notes) {
++ DrawFactory df = DrawFactory.getInstance(graphics);
++ Drawable d = df.getDrawable(note);
++ d.draw(graphics);
+
+ if (note instanceof XSLFTextShape) {
+ XSLFTextShape txShape = (XSLFTextShape) note;
+ for (XSLFTextParagraph xslfParagraph : txShape.getTextParagraphs()) {
+ xslfParagraph.getText();
+ }
+ }
+ }
+ }
+ }
+
+ ppt.close();
+ }
+
// a test-case to test this locally without executing the full TestAllFiles
@Test
public void test() throws Exception {
--- /dev/null
--- /dev/null
++/* ====================================================================\r
++ Licensed to the Apache Software Foundation (ASF) under one or more\r
++ contributor license agreements. See the NOTICE file distributed with\r
++ this work for additional information regarding copyright ownership.\r
++ The ASF licenses this file to You under the Apache License, Version 2.0\r
++ (the "License"); you may not use this file except in compliance with\r
++ the License. You may obtain a copy of the License at\r
++\r
++ http://www.apache.org/licenses/LICENSE-2.0\r
++\r
++ Unless required by applicable law or agreed to in writing, software\r
++ distributed under the License is distributed on an "AS IS" BASIS,\r
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ See the License for the specific language governing permissions and\r
++ limitations under the License.\r
++==================================================================== */\r
++\r
++package org.apache.poi.sl.draw;\r
++\r
++import org.apache.poi.sl.usermodel.*;\r
++\r
++\r
++public class DrawAutoShape<T extends AutoShape<? extends TextParagraph<? extends TextRun>>> extends DrawTextShape<T> {\r
++ public DrawAutoShape(T shape) {\r
++ super(shape);\r
++ }\r
++}\r
--- /dev/null
--- /dev/null
++/* ====================================================================\r
++ Licensed to the Apache Software Foundation (ASF) under one or more\r
++ contributor license agreements. See the NOTICE file distributed with\r
++ this work for additional information regarding copyright ownership.\r
++ The ASF licenses this file to You under the Apache License, Version 2.0\r
++ (the "License"); you may not use this file except in compliance with\r
++ the License. You may obtain a copy of the License at\r
++\r
++ http://www.apache.org/licenses/LICENSE-2.0\r
++\r
++ Unless required by applicable law or agreed to in writing, software\r
++ distributed under the License is distributed on an "AS IS" BASIS,\r
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ See the License for the specific language governing permissions and\r
++ limitations under the License.\r
++==================================================================== */\r
++\r
++package org.apache.poi.sl.draw;\r
++\r
++import java.awt.*;\r
++import java.awt.geom.Rectangle2D;\r
++\r
++import org.apache.poi.sl.usermodel.*;\r
++import org.apache.poi.sl.usermodel.Shape;\r
++\r
++\r
++public class DrawBackground<T extends Background> extends DrawShape<T> {\r
++ public DrawBackground(T shape) {\r
++ super(shape);\r
++ }\r
++\r
++ public void draw(Graphics2D graphics) {\r
++ Dimension pg = shape.getSheet().getSlideShow().getPageSize();\r
++ final Rectangle2D anchor = new Rectangle2D.Double(0, 0, pg.getWidth(), pg.getHeight());\r
++\r
++ PlaceableShape ps = new PlaceableShape(){\r
++ public ShapeContainer<? extends Shape> getParent() { return null; }\r
++ public Rectangle2D getAnchor() { return anchor; }\r
++ public void setAnchor(Rectangle2D anchor) {}\r
++ public double getRotation() { return 0; }\r
++ public void setRotation(double theta) {}\r
++ public void setFlipHorizontal(boolean flip) {}\r
++ public void setFlipVertical(boolean flip) {}\r
++ public boolean getFlipHorizontal() { return false; }\r
++ public boolean getFlipVertical() { return false; }\r
++ };\r
++ \r
++ DrawFactory drawFact = DrawFactory.getInstance(graphics);\r
++ DrawPaint dp = drawFact.getPaint(ps);\r
++ Paint fill = dp.getPaint(graphics, shape.getFillStyle().getPaint());\r
++ Rectangle2D anchor2 = getAnchor(graphics, anchor);\r
++ \r
++ if(fill != null) {\r
++ graphics.setPaint(fill);\r
++ graphics.fill(anchor2);\r
++ }\r
++ }\r
++ \r
++ \r
++}\r
--- /dev/null
--- /dev/null
++/* ====================================================================\r
++ Licensed to the Apache Software Foundation (ASF) under one or more\r
++ contributor license agreements. See the NOTICE file distributed with\r
++ this work for additional information regarding copyright ownership.\r
++ The ASF licenses this file to You under the Apache License, Version 2.0\r
++ (the "License"); you may not use this file except in compliance with\r
++ the License. You may obtain a copy of the License at\r
++\r
++ http://www.apache.org/licenses/LICENSE-2.0\r
++\r
++ Unless required by applicable law or agreed to in writing, software\r
++ distributed under the License is distributed on an "AS IS" BASIS,\r
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ See the License for the specific language governing permissions and\r
++ limitations under the License.\r
++==================================================================== */\r
++\r
++package org.apache.poi.sl.draw;\r
++\r
++import org.apache.poi.sl.usermodel.*;\r
++\r
++public class DrawConnectorShape<T extends ConnectorShape> extends DrawSimpleShape<T> {\r
++ public DrawConnectorShape(T shape) {\r
++ super(shape);\r
++ }\r
++}\r
--- /dev/null
--- /dev/null
++/* ====================================================================\r
++ Licensed to the Apache Software Foundation (ASF) under one or more\r
++ contributor license agreements. See the NOTICE file distributed with\r
++ this work for additional information regarding copyright ownership.\r
++ The ASF licenses this file to You under the Apache License, Version 2.0\r
++ (the "License"); you may not use this file except in compliance with\r
++ the License. You may obtain a copy of the License at\r
++\r
++ http://www.apache.org/licenses/LICENSE-2.0\r
++\r
++ Unless required by applicable law or agreed to in writing, software\r
++ distributed under the License is distributed on an "AS IS" BASIS,\r
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ See the License for the specific language governing permissions and\r
++ limitations under the License.\r
++==================================================================== */\r
++\r
++package org.apache.poi.sl.draw;\r
++\r
++import static org.apache.poi.sl.draw.Drawable.DRAW_FACTORY;\r
++\r
++import java.awt.Graphics2D;\r
++import java.awt.font.TextLayout;\r
++import java.text.AttributedString;\r
++\r
++import org.apache.poi.sl.usermodel.*;\r
++\r
++public class DrawFactory {\r
++ protected static ThreadLocal<DrawFactory> defaultFactory = new ThreadLocal<DrawFactory>();\r
++\r
++ /**\r
++ * Set a custom draw factory for the current thread.\r
++ * This is a fallback, for operations where usercode can't set a graphics context.\r
++ * Preferably use the rendering hint {@link Drawable#DRAW_FACTORY} to set the factory.\r
++ *\r
++ * @param factory\r
++ */\r
++ public static void setDefaultFactory(DrawFactory factory) {\r
++ defaultFactory.set(factory);\r
++ }\r
++\r
++ public static DrawFactory getInstance(Graphics2D graphics) {\r
++ // first try to find the factory over the rendering hint\r
++ DrawFactory factory = null;\r
++ boolean isHint = false;\r
++ if (graphics != null) {\r
++ factory = (DrawFactory)graphics.getRenderingHint(DRAW_FACTORY);\r
++ isHint = (factory != null);\r
++ }\r
++ // secondly try the thread local default\r
++ if (factory == null) {\r
++ factory = defaultFactory.get();\r
++ }\r
++ // and at last, use the default factory\r
++ if (factory == null) {\r
++ factory = new DrawFactory();\r
++ }\r
++ if (graphics != null && !isHint) {\r
++ graphics.setRenderingHint(DRAW_FACTORY, factory);\r
++ }\r
++ return factory;\r
++ }\r
++\r
++ @SuppressWarnings("unchecked")\r
++ public Drawable getDrawable(Shape shape) {\r
++ if (shape instanceof TextBox) {\r
++ return getDrawable((TextBox<? extends TextParagraph<? extends TextRun>>)shape);\r
++ } else if (shape instanceof FreeformShape) {\r
++ return getDrawable((FreeformShape<? extends TextParagraph<? extends TextRun>>)shape);\r
++ } else if (shape instanceof TextShape) {\r
++ return getDrawable((TextShape<? extends TextParagraph<? extends TextRun>>)shape);\r
++ } else if (shape instanceof GroupShape) {\r
++ return getDrawable((GroupShape<? extends Shape>)shape);\r
++ } else if (shape instanceof PictureShape) {\r
++ return getDrawable((PictureShape)shape);\r
++ } else if (shape instanceof Background) {\r
++ return getDrawable((Background)shape);\r
++ } else if (shape instanceof ConnectorShape) {\r
++ return getDrawable((ConnectorShape)shape);\r
++ } else if (shape instanceof TableShape) {\r
++ return getDrawable((TableShape)shape);\r
++ } else if (shape instanceof Slide) {\r
++ return getDrawable((Slide<? extends Shape, ? extends SlideShow, ? extends Notes<?,?>>)shape);\r
++ } else if (shape instanceof MasterSheet) {\r
++ return getDrawable((MasterSheet<? extends Shape, ? extends SlideShow>)shape);\r
++ } else if (shape instanceof Sheet) {\r
++ return getDrawable((Sheet<? extends Shape, ? extends SlideShow>)shape);\r
++ }\r
++\r
++ throw new IllegalArgumentException("Unsupported shape type: "+shape.getClass());\r
++ }\r
++\r
++ public <T extends Slide<? extends Shape, ? extends SlideShow, ? extends Notes<?,?>>> DrawSlide<T> getDrawable(T sheet) {\r
++ return new DrawSlide<T>(sheet);\r
++ }\r
++\r
++ public <T extends Sheet<? extends Shape, ? extends SlideShow>> DrawSheet<T> getDrawable(T sheet) {\r
++ return new DrawSheet<T>(sheet);\r
++ }\r
++\r
++ public <T extends MasterSheet<? extends Shape, ? extends SlideShow>> DrawMasterSheet<T> getDrawable(T sheet) {\r
++ return new DrawMasterSheet<T>(sheet);\r
++ }\r
++\r
++ public <T extends TextBox<? extends TextParagraph<?>>> DrawTextBox<T> getDrawable(T shape) {\r
++ return new DrawTextBox<T>(shape);\r
++ }\r
++\r
++ public <T extends FreeformShape<? extends TextParagraph<? extends TextRun>>> DrawFreeformShape<T> getDrawable(T shape) {\r
++ return new DrawFreeformShape<T>(shape);\r
++ }\r
++\r
++ public <T extends ConnectorShape> DrawConnectorShape<T> getDrawable(T shape) {\r
++ return new DrawConnectorShape<T>(shape);\r
++ }\r
++ \r
++ public <T extends TableShape> DrawTableShape<T> getDrawable(T shape) {\r
++ return new DrawTableShape<T>(shape);\r
++ }\r
++ \r
++ public <T extends TextShape<? extends TextParagraph<? extends TextRun>>> DrawTextShape<T> getDrawable(T shape) {\r
++ return new DrawTextShape<T>(shape);\r
++ }\r
++\r
++ public <T extends GroupShape<? extends Shape>> DrawGroupShape<T> getDrawable(T shape) {\r
++ return new DrawGroupShape<T>(shape);\r
++ }\r
++ \r
++ public <T extends PictureShape> DrawPictureShape<T> getDrawable(T shape) {\r
++ return new DrawPictureShape<T>(shape);\r
++ }\r
++ \r
++ public <T extends TextRun> DrawTextParagraph<T> getDrawable(TextParagraph<T> paragraph) {\r
++ return new DrawTextParagraph<T>(paragraph);\r
++ }\r
++\r
++ public <T extends Background> DrawBackground<T> getDrawable(T shape) {\r
++ return new DrawBackground<T>(shape);\r
++ }\r
++ \r
++ public DrawTextFragment getTextFragment(TextLayout layout, AttributedString str) {\r
++ return new DrawTextFragment(layout, str);\r
++ }\r
++ \r
++ public DrawPaint getPaint(PlaceableShape shape) {\r
++ return new DrawPaint(shape);\r
++ }\r
++}\r
--- /dev/null
--- /dev/null
++/*\r
++ * ====================================================================\r
++ * Licensed to the Apache Software Foundation (ASF) under one or more\r
++ * contributor license agreements. See the NOTICE file distributed with\r
++ * this work for additional information regarding copyright ownership.\r
++ * The ASF licenses this file to You under the Apache License, Version 2.0\r
++ * (the "License"); you may not use this file except in compliance with\r
++ * the License. You may obtain a copy of the License at\r
++ *\r
++ * http://www.apache.org/licenses/LICENSE-2.0\r
++ *\r
++ * Unless required by applicable law or agreed to in writing, software\r
++ * distributed under the License is distributed on an "AS IS" BASIS,\r
++ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ * See the License for the specific language governing permissions and\r
++ * limitations under the License.\r
++ * ====================================================================\r
++ */\r
++\r
++package org.apache.poi.sl.draw;\r
++\r
++/**\r
++ * Manages fonts when rendering slides.\r
++ *\r
++ * Use this class to handle unknown / missing fonts or to substitute fonts\r
++ */\r
++public interface DrawFontManager {\r
++\r
++ /**\r
++ * select a font to be used to paint text\r
++ *\r
++ * @param typeface the font family as defined in the .pptx file.\r
++ * This can be unknown or missing in the graphic environment.\r
++ *\r
++ * @return the font to be used to paint text\r
++ */\r
++ String getRendererableFont(String typeface, int pitchFamily);\r
++}\r
--- /dev/null
--- /dev/null
++/* ====================================================================\r
++ Licensed to the Apache Software Foundation (ASF) under one or more\r
++ contributor license agreements. See the NOTICE file distributed with\r
++ this work for additional information regarding copyright ownership.\r
++ The ASF licenses this file to You under the Apache License, Version 2.0\r
++ (the "License"); you may not use this file except in compliance with\r
++ the License. You may obtain a copy of the License at\r
++\r
++ http://www.apache.org/licenses/LICENSE-2.0\r
++\r
++ Unless required by applicable law or agreed to in writing, software\r
++ distributed under the License is distributed on an "AS IS" BASIS,\r
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ See the License for the specific language governing permissions and\r
++ limitations under the License.\r
++==================================================================== */\r
++\r
++package org.apache.poi.sl.draw;\r
++\r
++import org.apache.poi.sl.usermodel.*;\r
++\r
++public class DrawFreeformShape<T extends FreeformShape<? extends TextParagraph<? extends TextRun>>> extends DrawAutoShape<T> {\r
++ public DrawFreeformShape(T shape) {\r
++ super(shape);\r
++ }\r
++}\r
--- /dev/null
--- /dev/null
++/* ====================================================================\r
++ Licensed to the Apache Software Foundation (ASF) under one or more\r
++ contributor license agreements. See the NOTICE file distributed with\r
++ this work for additional information regarding copyright ownership.\r
++ The ASF licenses this file to You under the Apache License, Version 2.0\r
++ (the "License"); you may not use this file except in compliance with\r
++ the License. You may obtain a copy of the License at\r
++\r
++ http://www.apache.org/licenses/LICENSE-2.0\r
++\r
++ Unless required by applicable law or agreed to in writing, software\r
++ distributed under the License is distributed on an "AS IS" BASIS,\r
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ See the License for the specific language governing permissions and\r
++ limitations under the License.\r
++==================================================================== */\r
++\r
++package org.apache.poi.sl.draw;\r
++\r
++import java.awt.Graphics2D;\r
++import java.awt.geom.AffineTransform;\r
++import java.awt.geom.Rectangle2D;\r
++\r
++import org.apache.poi.sl.usermodel.*;\r
++\r
++\r
++public class DrawGroupShape<T extends GroupShape<? extends Shape>> extends DrawShape<T> implements Drawable {\r
++\r
++ public DrawGroupShape(T shape) {\r
++ super(shape);\r
++ }\r
++ \r
++ public void draw(Graphics2D graphics) {\r
++\r
++ // the coordinate system of this group of shape\r
++ Rectangle2D interior = shape.getInteriorAnchor();\r
++ // anchor of this group relative to the parent shape\r
++ Rectangle2D exterior = shape.getAnchor();\r
++\r
++ AffineTransform tx = (AffineTransform)graphics.getRenderingHint(Drawable.GROUP_TRANSFORM);\r
++ AffineTransform tx0 = new AffineTransform(tx);\r
++\r
++ double scaleX = interior.getWidth() == 0. ? 1.0 : exterior.getWidth() / interior.getWidth();\r
++ double scaleY = interior.getHeight() == 0. ? 1.0 : exterior.getHeight() / interior.getHeight();\r
++\r
++ tx.translate(exterior.getX(), exterior.getY());\r
++ tx.scale(scaleX, scaleY);\r
++ tx.translate(-interior.getX(), -interior.getY());\r
++\r
++ DrawFactory drawFact = DrawFactory.getInstance(graphics);\r
++ AffineTransform at2 = graphics.getTransform();\r
++ \r
++ for (Shape child : shape) {\r
++ // remember the initial transform and restore it after we are done with the drawing\r
++ AffineTransform at = graphics.getTransform();\r
++ graphics.setRenderingHint(Drawable.GSAVE, true);\r
++\r
++ Drawable draw = drawFact.getDrawable(child);\r
++ draw.applyTransform(graphics);\r
++ draw.draw(graphics);\r
++\r
++ // restore the coordinate system\r
++ graphics.setTransform(at);\r
++ graphics.setRenderingHint(Drawable.GRESTORE, true);\r
++ }\r
++\r
++ graphics.setTransform(at2);\r
++ graphics.setRenderingHint(Drawable.GROUP_TRANSFORM, tx0);\r
++ }\r
++}\r
--- /dev/null
--- /dev/null
++/* ====================================================================\r
++ Licensed to the Apache Software Foundation (ASF) under one or more\r
++ contributor license agreements. See the NOTICE file distributed with\r
++ this work for additional information regarding copyright ownership.\r
++ The ASF licenses this file to You under the Apache License, Version 2.0\r
++ (the "License"); you may not use this file except in compliance with\r
++ the License. You may obtain a copy of the License at\r
++\r
++ http://www.apache.org/licenses/LICENSE-2.0\r
++\r
++ Unless required by applicable law or agreed to in writing, software\r
++ distributed under the License is distributed on an "AS IS" BASIS,\r
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ See the License for the specific language governing permissions and\r
++ limitations under the License.\r
++==================================================================== */\r
++\r
++package org.apache.poi.sl.draw;\r
++\r
++import org.apache.poi.sl.usermodel.*;\r
++\r
++\r
++public class DrawMasterSheet<T extends MasterSheet<? extends Shape, ? extends SlideShow>> extends DrawSheet<T> {\r
++\r
++ public DrawMasterSheet(T sheet) {\r
++ super(sheet);\r
++ }\r
++\r
++ /**\r
++ * Checks if this <code>sheet</code> displays the specified shape.\r
++ *\r
++ * Subclasses can override it and skip certain shapes from drawings,\r
++ * for instance, slide masters and layouts don't display placeholders\r
++ */\r
++ protected boolean canDraw(Shape shape){\r
++ return !(shape instanceof SimpleShape) || !((SimpleShape)shape).isPlaceholder();\r
++ }\r
++}\r
--- /dev/null
--- /dev/null
++/* ====================================================================\r
++ Licensed to the Apache Software Foundation (ASF) under one or more\r
++ contributor license agreements. See the NOTICE file distributed with\r
++ this work for additional information regarding copyright ownership.\r
++ The ASF licenses this file to You under the Apache License, Version 2.0\r
++ (the "License"); you may not use this file except in compliance with\r
++ the License. You may obtain a copy of the License at\r
++\r
++ http://www.apache.org/licenses/LICENSE-2.0\r
++\r
++ Unless required by applicable law or agreed to in writing, software\r
++ distributed under the License is distributed on an "AS IS" BASIS,\r
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ See the License for the specific language governing permissions and\r
++ limitations under the License.\r
++==================================================================== */\r
++\r
++package org.apache.poi.sl.draw;\r
++\r
++import static org.apache.poi.sl.usermodel.PaintStyle.TRANSPARENT_PAINT;\r
++\r
++import java.awt.*;\r
++import java.awt.MultipleGradientPaint.ColorSpaceType;\r
++import java.awt.MultipleGradientPaint.CycleMethod;\r
++import java.awt.geom.*;\r
++import java.io.IOException;\r
++import java.io.InputStream;\r
++\r
++import org.apache.poi.sl.usermodel.*;\r
++import org.apache.poi.sl.usermodel.PaintStyle.GradientPaint;\r
++import org.apache.poi.sl.usermodel.PaintStyle.SolidPaint;\r
++import org.apache.poi.sl.usermodel.PaintStyle.TexturePaint;\r
++import org.apache.poi.util.POILogFactory;\r
++import org.apache.poi.util.POILogger;\r
++\r
++\r
++/**\r
++ * This class handles color transformations\r
++ * \r
++ * @see HSL code taken from <a href="https://tips4java.wordpress.com/2009/07/05/hsl-color/">Java Tips Weblog</a>\r
++ */\r
++public class DrawPaint {\r
++ // HSL code is public domain - see https://tips4java.wordpress.com/contact-us/\r
++ \r
++ private final static POILogger LOG = POILogFactory.getLogger(DrawPaint.class);\r
++\r
++ protected PlaceableShape shape;\r
++ \r
++ public DrawPaint(PlaceableShape shape) {\r
++ this.shape = shape;\r
++ }\r
++\r
++ public static SolidPaint createSolidPaint(final Color color) {\r
++ return new SolidPaint() {\r
++ public ColorStyle getSolidColor() {\r
++ return new ColorStyle(){\r
++ public Color getColor() { return color; }\r
++ public int getAlpha() { return -1; }\r
++ public int getLumOff() { return -1; }\r
++ public int getLumMod() { return -1; }\r
++ public int getShade() { return -1; }\r
++ public int getTint() { return -1; }\r
++ };\r
++ }\r
++ };\r
++ }\r
++ \r
++ public Paint getPaint(Graphics2D graphics, PaintStyle paint) {\r
++ if (paint instanceof SolidPaint) {\r
++ return getSolidPaint((SolidPaint)paint, graphics);\r
++ } else if (paint instanceof GradientPaint) {\r
++ return getGradientPaint((GradientPaint)paint, graphics);\r
++ } else if (paint instanceof TexturePaint) {\r
++ return getTexturePaint((TexturePaint)paint, graphics);\r
++ }\r
++ return null;\r
++ }\r
++ \r
++ protected Paint getSolidPaint(SolidPaint fill, Graphics2D graphics) {\r
++ return applyColorTransform(fill.getSolidColor());\r
++ }\r
++\r
++ protected Paint getGradientPaint(GradientPaint fill, Graphics2D graphics) {\r
++ switch (fill.getGradientType()) {\r
++ case linear:\r
++ return createLinearGradientPaint(fill, graphics);\r
++ case circular:\r
++ return createRadialGradientPaint(fill, graphics);\r
++ case shape:\r
++ return createPathGradientPaint(fill, graphics);\r
++ default:\r
++ throw new UnsupportedOperationException("gradient fill of type "+fill+" not supported.");\r
++ }\r
++ }\r
++\r
++ protected Paint getTexturePaint(TexturePaint fill, Graphics2D graphics) {\r
++ InputStream is = fill.getImageData();\r
++ if (is == null) return TRANSPARENT_PAINT.getSolidColor().getColor();\r
++ assert(graphics != null);\r
++ \r
++ ImageRenderer renderer = (ImageRenderer)graphics.getRenderingHint(Drawable.IMAGE_RENDERER);\r
++ if (renderer == null) renderer = new ImageRenderer();\r
++\r
++ try {\r
++ renderer.loadImage(fill.getImageData(), fill.getContentType());\r
++ } catch (IOException e) {\r
++ LOG.log(POILogger.ERROR, "Can't load image data - using transparent color", e);\r
++ return TRANSPARENT_PAINT.getSolidColor().getColor();\r
++ }\r
++\r
++ int alpha = fill.getAlpha();\r
++ if (alpha != -1) {\r
++ renderer.setAlpha(alpha/100000.f);\r
++ }\r
++ \r
++ Dimension dim = renderer.getDimension();\r
++ Rectangle2D textAnchor = new Rectangle2D.Double(0, 0, dim.getWidth(), dim.getHeight());\r
++ Paint paint = new java.awt.TexturePaint(renderer.getImage(), textAnchor);\r
++\r
++ return paint;\r
++ }\r
++ \r
++ /**\r
++ * Convert color transformations in {@link ColorStyle} to a {@link Color} instance\r
++ */\r
++ public static Color applyColorTransform(ColorStyle color){\r
++ Color result = color.getColor();\r
++\r
++ if (result == null || color.getAlpha() == 100) {\r
++ return TRANSPARENT_PAINT.getSolidColor().getColor();\r
++ }\r
++ \r
++ result = applyAlpha(result, color);\r
++ result = applyLuminance(result, color);\r
++ result = applyShade(result, color);\r
++ result = applyTint(result, color);\r
++\r
++ return result;\r
++ }\r
++\r
++ protected static Color applyAlpha(Color c, ColorStyle fc) {\r
++ int alpha = c.getAlpha();\r
++ return (alpha == 255) ? c : new Color(c.getRed(), c.getGreen(), c.getBlue(), alpha); \r
++ }\r
++ \r
++ /**\r
++ * Apply lumMod / lumOff adjustments\r
++ *\r
++ * @param c the color to modify\r
++ * @param lumMod luminance modulation in the range [0..100000]\r
++ * @param lumOff luminance offset in the range [0..100000]\r
++ * @return modified color\r
++ * \r
++ * @see <a href="https://msdn.microsoft.com/en-us/library/dd560821%28v=office.12%29.aspx">Using Office Open XML to Customize Document Formatting in the 2007 Office System</a>\r
++ */\r
++ protected static Color applyLuminance(Color c, ColorStyle fc) {\r
++ int lumMod = fc.getLumMod();\r
++ if (lumMod == -1) lumMod = 100000;\r
++\r
++ int lumOff = fc.getLumOff();\r
++ if (lumOff == -1) lumOff = 0;\r
++ \r
++ if (lumMod == 100000 && lumOff == 0) return c;\r
++\r
++ // The lumMod value is the percent luminance. A lumMod value of "60000",\r
++ // is 60% of the luminance of the original color.\r
++ // When the color is a shade of the original theme color, the lumMod\r
++ // attribute is the only one of the tags shown here that appears.\r
++ // The <a:lumOff> tag appears after the <a:lumMod> tag when the color is a\r
++ // tint of the original. The lumOff value always equals 1-lumMod, which is used in the tint calculation\r
++ //\r
++ // Despite having different ways to display the tint and shade percentages,\r
++ // all of the programs use the same method to calculate the resulting color.\r
++ // Convert the original RGB value to HSL ... and then adjust the luminance (L)\r
++ // with one of the following equations before converting the HSL value back to RGB.\r
++ // (The % tint in the following equations refers to the tint, themetint, themeshade,\r
++ // or lumMod values, as applicable.)\r
++ //\r
++ // For a shade, the equation is luminance * %tint.\r
++ //\r
++ // For a tint, the equation is luminance * %tint + (1-%tint).\r
++ // (Note that 1-%tint is equal to the lumOff value in DrawingML.)\r
++ \r
++ double fLumOff = lumOff / 100000d;\r
++ double fLumMod = lumMod / 100000d;\r
++ \r
++ double hsl[] = RGB2HSL(c);\r
++ hsl[2] = hsl[2]*fLumMod+fLumOff;\r
++\r
++ Color c2 = HSL2RGB(hsl[0], hsl[1], hsl[2], c.getAlpha()/255d);\r
++ return c2;\r
++ }\r
++ \r
++ /**\r
++ * This algorithm returns result different from PowerPoint.\r
++ * TODO: revisit and improve\r
++ */\r
++ protected static Color applyShade(Color c, ColorStyle fc) {\r
++ int shade = fc.getShade();\r
++ if (shade == -1) return c;\r
++ \r
++ float fshade = shade / 100000.f;\r
++\r
++ float red = c.getRed() * fshade;\r
++ float green = c.getGreen() * fshade;\r
++ float blue = c.getGreen() * fshade;\r
++ \r
++ return new Color(Math.round(red), Math.round(green), Math.round(blue), c.getAlpha());\r
++ }\r
++\r
++ /**\r
++ * This algorithm returns result different from PowerPoint.\r
++ * TODO: revisit and improve\r
++ */\r
++ protected static Color applyTint(Color c, ColorStyle fc) {\r
++ int tint = fc.getTint();\r
++ if (tint == -1) return c;\r
++ \r
++ float ftint = tint / 100000.f;\r
++\r
++ float red = ftint * c.getRed() + (1.f - ftint) * 255.f;\r
++ float green = ftint * c.getGreen() + (1.f - ftint) * 255.f;\r
++ float blue = ftint * c.getBlue() + (1.f - ftint) * 255.f;\r
++\r
++ return new Color(Math.round(red), Math.round(green), Math.round(blue), c.getAlpha());\r
++ }\r
++ \r
++\r
++ protected Paint createLinearGradientPaint(GradientPaint fill, Graphics2D graphics) {\r
++ double angle = fill.getGradientAngle();\r
++ Rectangle2D anchor = DrawShape.getAnchor(graphics, shape);\r
++\r
++ AffineTransform at = AffineTransform.getRotateInstance(\r
++ Math.toRadians(angle),\r
++ anchor.getX() + anchor.getWidth() / 2,\r
++ anchor.getY() + anchor.getHeight() / 2);\r
++\r
++ double diagonal = Math.sqrt(anchor.getHeight() * anchor.getHeight() + anchor.getWidth() * anchor.getWidth());\r
++ Point2D p1 = new Point2D.Double(anchor.getX() + anchor.getWidth() / 2 - diagonal / 2,\r
++ anchor.getY() + anchor.getHeight() / 2);\r
++ p1 = at.transform(p1, null);\r
++\r
++ Point2D p2 = new Point2D.Double(anchor.getX() + anchor.getWidth(), anchor.getY() + anchor.getHeight() / 2);\r
++ p2 = at.transform(p2, null);\r
++\r
++ snapToAnchor(p1, anchor);\r
++ snapToAnchor(p2, anchor);\r
++\r
++ float[] fractions = fill.getGradientFractions();\r
++ Color[] colors = new Color[fractions.length];\r
++ \r
++ int i = 0;\r
++ for (ColorStyle fc : fill.getGradientColors()) {\r
++ colors[i++] = applyColorTransform(fc);\r
++ }\r
++\r
++ AffineTransform grAt = new AffineTransform();\r
++ if(fill.isRotatedWithShape()) {\r
++ double rotation = shape.getRotation();\r
++ if (rotation != 0.) {\r
++ double centerX = anchor.getX() + anchor.getWidth() / 2;\r
++ double centerY = anchor.getY() + anchor.getHeight() / 2;\r
++\r
++ grAt.translate(centerX, centerY);\r
++ grAt.rotate(Math.toRadians(-rotation));\r
++ grAt.translate(-centerX, -centerY);\r
++ }\r
++ }\r
++\r
++ return new LinearGradientPaint\r
++ (p1, p2, fractions, colors, CycleMethod.NO_CYCLE, ColorSpaceType.SRGB, grAt);\r
++ }\r
++\r
++ protected Paint createRadialGradientPaint(GradientPaint fill, Graphics2D graphics) {\r
++ Rectangle2D anchor = DrawShape.getAnchor(graphics, shape);\r
++\r
++ Point2D pCenter = new Point2D.Double(anchor.getX() + anchor.getWidth()/2,\r
++ anchor.getY() + anchor.getHeight()/2);\r
++\r
++ float radius = (float)Math.max(anchor.getWidth(), anchor.getHeight());\r
++\r
++ float[] fractions = fill.getGradientFractions();\r
++ Color[] colors = new Color[fractions.length];\r
++\r
++ int i=0;\r
++ for (ColorStyle fc : fill.getGradientColors()) {\r
++ colors[i++] = applyColorTransform(fc);\r
++ }\r
++\r
++ return new RadialGradientPaint(pCenter, radius, fractions, colors);\r
++ }\r
++\r
++ protected Paint createPathGradientPaint(GradientPaint fill, Graphics2D graphics) {\r
++ // currently we ignore an eventually center setting\r
++ \r
++ float[] fractions = fill.getGradientFractions();\r
++ Color[] colors = new Color[fractions.length];\r
++\r
++ int i=0;\r
++ for (ColorStyle fc : fill.getGradientColors()) {\r
++ colors[i++] = applyColorTransform(fc);\r
++ }\r
++\r
++ return new PathGradientPaint(colors, fractions);\r
++ }\r
++ \r
++ protected void snapToAnchor(Point2D p, Rectangle2D anchor) {\r
++ if (p.getX() < anchor.getX()) {\r
++ p.setLocation(anchor.getX(), p.getY());\r
++ } else if (p.getX() > (anchor.getX() + anchor.getWidth())) {\r
++ p.setLocation(anchor.getX() + anchor.getWidth(), p.getY());\r
++ }\r
++\r
++ if (p.getY() < anchor.getY()) {\r
++ p.setLocation(p.getX(), anchor.getY());\r
++ } else if (p.getY() > (anchor.getY() + anchor.getHeight())) {\r
++ p.setLocation(p.getX(), anchor.getY() + anchor.getHeight());\r
++ }\r
++ }\r
++\r
++ /**\r
++ * Convert HSL values to a RGB Color.\r
++ *\r
++ * @param h Hue is specified as degrees in the range 0 - 360.\r
++ * @param s Saturation is specified as a percentage in the range 1 - 100.\r
++ * @param l Luminance is specified as a percentage in the range 1 - 100.\r
++ * @param alpha the alpha value between 0 - 1\r
++ *\r
++ * @returns the RGB Color object\r
++ */\r
++ private static Color HSL2RGB(double h, double s, double l, double alpha) {\r
++ if (s <0.0f || s > 100.0f) {\r
++ String message = "Color parameter outside of expected range - Saturation";\r
++ throw new IllegalArgumentException( message );\r
++ }\r
++\r
++ if (l <0.0f || l > 100.0f) {\r
++ String message = "Color parameter outside of expected range - Luminance";\r
++ throw new IllegalArgumentException( message );\r
++ }\r
++\r
++ if (alpha <0.0f || alpha > 1.0f) {\r
++ String message = "Color parameter outside of expected range - Alpha";\r
++ throw new IllegalArgumentException( message );\r
++ }\r
++\r
++ // Formula needs all values between 0 - 1.\r
++\r
++ h = h % 360.0f;\r
++ h /= 360f;\r
++ s /= 100f;\r
++ l /= 100f;\r
++\r
++ double q = (l < 0.5d)\r
++ ? l * (1d + s)\r
++ : (l + s) - (s * l);\r
++\r
++ double p = 2d * l - q;\r
++\r
++ double r = Math.max(0, HUE2RGB(p, q, h + (1.0d / 3.0d)));\r
++ double g = Math.max(0, HUE2RGB(p, q, h));\r
++ double b = Math.max(0, HUE2RGB(p, q, h - (1.0d / 3.0d)));\r
++\r
++ r = Math.min(r, 1.0d);\r
++ g = Math.min(g, 1.0d);\r
++ b = Math.min(b, 1.0d);\r
++\r
++ return new Color((float)r, (float)g, (float)b, (float)alpha);\r
++ }\r
++\r
++ private static double HUE2RGB(double p, double q, double h) {\r
++ if (h < 0d) h += 1d;\r
++\r
++ if (h > 1d) h -= 1d;\r
++\r
++ if (6d * h < 1d) {\r
++ return p + ((q - p) * 6d * h);\r
++ }\r
++\r
++ if (2d * h < 1d) {\r
++ return q;\r
++ }\r
++\r
++ if (3d * h < 2d) {\r
++ return p + ( (q - p) * 6d * ((2.0d / 3.0d) - h) );\r
++ }\r
++\r
++ return p;\r
++ }\r
++\r
++\r
++ /**\r
++ * Convert a RGB Color to it corresponding HSL values.\r
++ *\r
++ * @return an array containing the 3 HSL values.\r
++ */\r
++ private static double[] RGB2HSL(Color color)\r
++ {\r
++ // Get RGB values in the range 0 - 1\r
++\r
++ float[] rgb = color.getRGBColorComponents( null );\r
++ double r = rgb[0];\r
++ double g = rgb[1];\r
++ double b = rgb[2];\r
++\r
++ // Minimum and Maximum RGB values are used in the HSL calculations\r
++\r
++ double min = Math.min(r, Math.min(g, b));\r
++ double max = Math.max(r, Math.max(g, b));\r
++\r
++ // Calculate the Hue\r
++\r
++ double h = 0;\r
++\r
++ if (max == min) {\r
++ h = 0;\r
++ } else if (max == r) {\r
++ h = ((60d * (g - b) / (max - min)) + 360d) % 360d;\r
++ } else if (max == g) {\r
++ h = (60d * (b - r) / (max - min)) + 120d;\r
++ } else if (max == b) {\r
++ h = (60d * (r - g) / (max - min)) + 240d;\r
++ }\r
++\r
++ // Calculate the Luminance\r
++\r
++ double l = (max + min) / 2d;\r
++\r
++ // Calculate the Saturation\r
++\r
++ double s = 0;\r
++\r
++ if (max == min) {\r
++ s = 0;\r
++ } else if (l <= .5d) {\r
++ s = (max - min) / (max + min);\r
++ } else {\r
++ s = (max - min) / (2d - max - min);\r
++ }\r
++\r
++ return new double[] {h, s * 100, l * 100};\r
++ }\r
++\r
++}
--- /dev/null
--- /dev/null
++/* ====================================================================\r
++ Licensed to the Apache Software Foundation (ASF) under one or more\r
++ contributor license agreements. See the NOTICE file distributed with\r
++ this work for additional information regarding copyright ownership.\r
++ The ASF licenses this file to You under the Apache License, Version 2.0\r
++ (the "License"); you may not use this file except in compliance with\r
++ the License. You may obtain a copy of the License at\r
++\r
++ http://www.apache.org/licenses/LICENSE-2.0\r
++\r
++ Unless required by applicable law or agreed to in writing, software\r
++ distributed under the License is distributed on an "AS IS" BASIS,\r
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ See the License for the specific language governing permissions and\r
++ limitations under the License.\r
++==================================================================== */\r
++\r
++package org.apache.poi.sl.draw;\r
++\r
++import java.awt.Graphics2D;\r
++import java.awt.Insets;\r
++import java.awt.geom.Rectangle2D;\r
++import java.io.IOException;\r
++\r
++import org.apache.poi.sl.usermodel.PictureData;\r
++import org.apache.poi.sl.usermodel.PictureShape;\r
++\r
++\r
++public class DrawPictureShape<T extends PictureShape> extends DrawSimpleShape<T> {\r
++ public DrawPictureShape(T shape) {\r
++ super(shape);\r
++ }\r
++ \r
++ @Override\r
++ public void drawContent(Graphics2D graphics) {\r
++ PictureData data = shape.getPictureData();\r
++ if(data == null) return;\r
++\r
++ ImageRenderer renderer = (ImageRenderer)graphics.getRenderingHint(Drawable.IMAGE_RENDERER);\r
++ if (renderer == null) renderer = new ImageRenderer();\r
++ \r
++ Rectangle2D anchor = getAnchor(graphics, shape);\r
++\r
++ Insets insets = shape.getClipping();\r
++\r
++ try {\r
++ renderer.loadImage(data.getData(), data.getContentType());\r
++ renderer.drawImage(graphics, anchor, insets);\r
++ } catch (IOException e) {\r
++ // TODO: draw specific runtime exception?\r
++ throw new RuntimeException(e);\r
++ }\r
++ } \r
++}\r
--- /dev/null
--- /dev/null
++/* ====================================================================\r
++ Licensed to the Apache Software Foundation (ASF) under one or more\r
++ contributor license agreements. See the NOTICE file distributed with\r
++ this work for additional information regarding copyright ownership.\r
++ The ASF licenses this file to You under the Apache License, Version 2.0\r
++ (the "License"); you may not use this file except in compliance with\r
++ the License. You may obtain a copy of the License at\r
++\r
++ http://www.apache.org/licenses/LICENSE-2.0\r
++\r
++ Unless required by applicable law or agreed to in writing, software\r
++ distributed under the License is distributed on an "AS IS" BASIS,\r
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ See the License for the specific language governing permissions and\r
++ limitations under the License.\r
++==================================================================== */\r
++\r
++package org.apache.poi.sl.draw;\r
++\r
++import java.awt.Graphics2D;\r
++import java.awt.geom.AffineTransform;\r
++import java.awt.geom.Rectangle2D;\r
++\r
++import org.apache.poi.sl.usermodel.PlaceableShape;\r
++import org.apache.poi.sl.usermodel.Shape;\r
++\r
++\r
++public class DrawShape<T extends Shape> implements Drawable {\r
++\r
++ protected final T shape;\r
++ \r
++ public DrawShape(T shape) {\r
++ this.shape = shape;\r
++ }\r
++ \r
++ /**\r
++ * Apply 2-D transforms before drawing this shape. This includes rotation and flipping.\r
++ *\r
++ * @param graphics the graphics whos transform matrix will be modified\r
++ */\r
++ public void applyTransform(Graphics2D graphics) {\r
++ if (!(shape instanceof PlaceableShape)) return;\r
++ \r
++ PlaceableShape ps = (PlaceableShape)shape;\r
++ AffineTransform tx = (AffineTransform)graphics.getRenderingHint(Drawable.GROUP_TRANSFORM);\r
++ if (tx == null) tx = new AffineTransform();\r
++ final Rectangle2D anchor = tx.createTransformedShape(ps.getAnchor()).getBounds2D();\r
++\r
++ // rotation\r
++ double rotation = ps.getRotation();\r
++ if (rotation != 0.) {\r
++ // PowerPoint rotates shapes relative to the geometric center\r
++ double centerX = anchor.getCenterX();\r
++ double centerY = anchor.getCenterY();\r
++\r
++ // normalize rotation\r
++ rotation %= 360.;\r
++ if (rotation < 0) rotation += 360.;\r
++\r
++ int quadrant = (((int)rotation+45)/90)%4;\r
++ double scaleX = 1.0, scaleY = 1.0;\r
++ \r
++ // scale to bounding box (bug #53176)\r
++ if (quadrant == 1 || quadrant == 3) {\r
++ // In quadrant 1 and 3, which is basically a shape in a more or less portrait orientation \r
++ // (45-135 degrees and 225-315 degrees), we need to first rotate the shape by a multiple \r
++ // of 90 degrees and then resize the bounding box to its original bbox. After that we can \r
++ // rotate the shape to the exact rotation amount.\r
++ // It's strange that you'll need to rotate the shape back and forth again, but you can\r
++ // think of it, as if you paint the shape on a canvas. First you rotate the canvas, which might\r
++ // be already (differently) scaled, so you can paint the shape in its default orientation\r
++ // and later on, turn it around again to compare it with its original size ...\r
++\r
++ AffineTransform txs;\r
++ if (ps.getClass().getCanonicalName().toLowerCase().contains("hslf")) {\r
++ txs = new AffineTransform(tx);\r
++ } else {\r
++ // this handling is only based on try and error ... not sure why xslf is handled differently.\r
++ txs = new AffineTransform();\r
++ txs.translate(centerX, centerY);\r
++ txs.rotate(Math.PI/2.); // actually doesn't matter if +/- 90 degrees\r
++ txs.translate(-centerX, -centerY);\r
++ txs.concatenate(tx);\r
++ }\r
++ \r
++ txs.translate(centerX, centerY);\r
++ txs.rotate(Math.PI/2.);\r
++ txs.translate(-centerX, -centerY);\r
++ \r
++ Rectangle2D anchor2 = txs.createTransformedShape(ps.getAnchor()).getBounds2D();\r
++ \r
++ scaleX = anchor.getWidth() == 0. ? 1.0 : anchor.getWidth() / anchor2.getWidth();\r
++ scaleY = anchor.getHeight() == 0. ? 1.0 : anchor.getHeight() / anchor2.getHeight();\r
++ } else {\r
++ quadrant = 0;\r
++ }\r
++ \r
++ // transformation is applied reversed ...\r
++ graphics.translate(centerX, centerY);\r
++ graphics.rotate(Math.toRadians(rotation-quadrant*90.));\r
++ graphics.scale(scaleX, scaleY);\r
++ graphics.rotate(Math.toRadians(quadrant*90));\r
++ graphics.translate(-centerX, -centerY);\r
++ }\r
++\r
++ //flip horizontal\r
++ if (ps.getFlipHorizontal()) {\r
++ graphics.translate(anchor.getX() + anchor.getWidth(), anchor.getY());\r
++ graphics.scale(-1, 1);\r
++ graphics.translate(-anchor.getX(), -anchor.getY());\r
++ }\r
++\r
++ //flip vertical\r
++ if (ps.getFlipVertical()) {\r
++ graphics.translate(anchor.getX(), anchor.getY() + anchor.getHeight());\r
++ graphics.scale(1, -1);\r
++ graphics.translate(-anchor.getX(), -anchor.getY());\r
++ }\r
++ }\r
++\r
++\r
++ public void draw(Graphics2D graphics) {\r
++ }\r
++\r
++ public void drawContent(Graphics2D context) {\r
++ }\r
++\r
++ public static Rectangle2D getAnchor(Graphics2D graphics, PlaceableShape shape) {\r
++ return getAnchor(graphics, shape.getAnchor());\r
++ }\r
++ \r
++ public static Rectangle2D getAnchor(Graphics2D graphics, Rectangle2D anchor) {\r
++ if(graphics == null) {\r
++ return anchor;\r
++ }\r
++\r
++ AffineTransform tx = (AffineTransform)graphics.getRenderingHint(Drawable.GROUP_TRANSFORM);\r
++ if(tx != null) {\r
++ anchor = tx.createTransformedShape(anchor).getBounds2D();\r
++ }\r
++ return anchor;\r
++ } \r
++}\r
--- /dev/null
--- /dev/null
++/* ====================================================================\r
++ Licensed to the Apache Software Foundation (ASF) under one or more\r
++ contributor license agreements. See the NOTICE file distributed with\r
++ this work for additional information regarding copyright ownership.\r
++ The ASF licenses this file to You under the Apache License, Version 2.0\r
++ (the "License"); you may not use this file except in compliance with\r
++ the License. You may obtain a copy of the License at\r
++\r
++ http://www.apache.org/licenses/LICENSE-2.0\r
++\r
++ Unless required by applicable law or agreed to in writing, software\r
++ distributed under the License is distributed on an "AS IS" BASIS,\r
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ See the License for the specific language governing permissions and\r
++ limitations under the License.\r
++==================================================================== */\r
++\r
++package org.apache.poi.sl.draw;\r
++\r
++import java.awt.Dimension;\r
++import java.awt.Color;\r
++import java.awt.Graphics2D;\r
++\r
++import java.awt.geom.AffineTransform;\r
++\r
++import org.apache.poi.sl.usermodel.*;\r
++\r
++\r
++public class DrawSheet<T extends Sheet<? extends Shape, ? extends SlideShow>> implements Drawable {\r
++\r
++ protected final T sheet;\r
++ \r
++ public DrawSheet(T sheet) {\r
++ this.sheet = sheet;\r
++ }\r
++ \r
++ public void draw(Graphics2D graphics) {\r
++ Dimension dim = sheet.getSlideShow().getPageSize();\r
++ Color whiteTrans = new Color(1f,1f,1f,0f);\r
++ graphics.setColor(whiteTrans);\r
++ graphics.fillRect(0, 0, (int)dim.getWidth(), (int)dim.getHeight());\r
++ \r
++ DrawFactory drawFact = DrawFactory.getInstance(graphics);\r
++ MasterSheet<? extends Shape, ? extends SlideShow> master = sheet.getMasterSheet();\r
++ \r
++ if(sheet.getFollowMasterGraphics() && master != null) {\r
++ Drawable drawer = drawFact.getDrawable(master);\r
++ drawer.draw(graphics);\r
++ }\r
++ \r
++ graphics.setRenderingHint(Drawable.GROUP_TRANSFORM, new AffineTransform());\r
++\r
++ for (Shape shape : sheet.getShapes()) {\r
++ if(!canDraw(shape)) continue;\r
++ \r
++ // remember the initial transform and restore it after we are done with drawing\r
++ AffineTransform at = graphics.getTransform();\r
++\r
++ // concrete implementations can make sense of this hint,\r
++ // for example PSGraphics2D or PDFGraphics2D would call gsave() / grestore\r
++ graphics.setRenderingHint(Drawable.GSAVE, true);\r
++\r
++ // apply rotation and flipping\r
++ Drawable drawer = drawFact.getDrawable(shape);\r
++ drawer.applyTransform(graphics);\r
++ // draw stuff\r
++ drawer.draw(graphics);\r
++\r
++ // restore the coordinate system\r
++ graphics.setTransform(at);\r
++\r
++ graphics.setRenderingHint(Drawable.GRESTORE, true);\r
++ }\r
++ }\r
++\r
++ public void applyTransform(Graphics2D context) {\r
++ }\r
++\r
++ public void drawContent(Graphics2D context) {\r
++ }\r
++\r
++ /**\r
++ * Checks if this <code>sheet</code> displays the specified shape.\r
++ *\r
++ * Subclasses can override it and skip certain shapes from drawings,\r
++ * for instance, slide masters and layouts don't display placeholders\r
++ */\r
++ protected boolean canDraw(Shape shape){\r
++ return true;\r
++ }\r
++}\r
--- /dev/null
--- /dev/null
++/* ====================================================================\r
++ Licensed to the Apache Software Foundation (ASF) under one or more\r
++ contributor license agreements. See the NOTICE file distributed with\r
++ this work for additional information regarding copyright ownership.\r
++ The ASF licenses this file to You under the Apache License, Version 2.0\r
++ (the "License"); you may not use this file except in compliance with\r
++ the License. You may obtain a copy of the License at\r
++\r
++ http://www.apache.org/licenses/LICENSE-2.0\r
++\r
++ Unless required by applicable law or agreed to in writing, software\r
++ distributed under the License is distributed on an "AS IS" BASIS,\r
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ See the License for the specific language governing permissions and\r
++ limitations under the License.\r
++==================================================================== */\r
++\r
++package org.apache.poi.sl.draw;\r
++\r
++import java.awt.*;\r
++import java.awt.geom.*;\r
++import java.io.*;\r
++import java.nio.charset.Charset;\r
++import java.util.*;\r
++import java.util.List;\r
++\r
++import javax.xml.bind.*;\r
++import javax.xml.stream.*;\r
++import javax.xml.stream.EventFilter;\r
++import javax.xml.stream.events.StartElement;\r
++import javax.xml.stream.events.XMLEvent;\r
++\r
++import org.apache.poi.sl.draw.binding.CTCustomGeometry2D;\r
++import org.apache.poi.sl.draw.geom.*;\r
++import org.apache.poi.sl.usermodel.*;\r
++import org.apache.poi.sl.usermodel.LineDecoration.DecorationSize;\r
++import org.apache.poi.sl.usermodel.PaintStyle.SolidPaint;\r
++import org.apache.poi.sl.usermodel.StrokeStyle.*;\r
++import org.apache.poi.util.Units;\r
++\r
++\r
++public class DrawSimpleShape<T extends SimpleShape> extends DrawShape<T> {\r
++\r
++ public DrawSimpleShape(T shape) {\r
++ super(shape);\r
++ }\r
++\r
++ @Override\r
++ public void draw(Graphics2D graphics) {\r
++// RenderableShape rShape = new RenderableShape(this);\r
++// rShape.render(graphics);\r
++\r
++ DrawPaint drawPaint = DrawFactory.getInstance(graphics).getPaint(shape);\r
++ Paint fill = drawPaint.getPaint(graphics, shape.getFillStyle().getPaint());\r
++ Paint line = drawPaint.getPaint(graphics, shape.getStrokeStyle().getPaint());\r
++ BasicStroke stroke = getStroke(); // the stroke applies both to the shadow and the shape\r
++ graphics.setStroke(stroke);\r
++\r
++ Collection<Outline> elems = computeOutlines(graphics);\r
++ \r
++ // first paint the shadow\r
++ drawShadow(graphics, elems, fill, line);\r
++ \r
++ // then fill the shape interior\r
++ if (fill != null) {\r
++ graphics.setPaint(fill);\r
++ for (Outline o : elems) {\r
++ if (o.getPath().isFilled()){\r
++ java.awt.Shape s = o.getOutline();\r
++ graphics.setRenderingHint(Drawable.GRADIENT_SHAPE, s);\r
++ graphics.fill(s);\r
++ } \r
++ }\r
++ }\r
++ \r
++ // then draw any content within this shape (text, image, etc.)\r
++ drawContent(graphics);\r
++\r
++ // then stroke the shape outline\r
++ if(line != null) {\r
++ graphics.setPaint(line);\r
++ for(Outline o : elems){\r
++ if(o.getPath().isStroked()){\r
++ java.awt.Shape s = o.getOutline();\r
++ graphics.setRenderingHint(Drawable.GRADIENT_SHAPE, s);\r
++ graphics.draw(s);\r
++ }\r
++ }\r
++ }\r
++ \r
++ // draw line decorations\r
++ drawDecoration(graphics, line, stroke);\r
++ }\r
++\r
++ protected void drawDecoration(Graphics2D graphics, Paint line, BasicStroke stroke) {\r
++ if(line == null) return;\r
++ graphics.setPaint(line);\r
++ \r
++ List<Outline> lst = new ArrayList<Outline>();\r
++ LineDecoration deco = shape.getLineDecoration();\r
++ Outline head = getHeadDecoration(graphics, deco, stroke);\r
++ if (head != null) lst.add(head);\r
++ Outline tail = getTailDecoration(graphics, deco, stroke);\r
++ if (tail != null) lst.add(tail);\r
++ \r
++ \r
++ for(Outline o : lst){\r
++ java.awt.Shape s = o.getOutline();\r
++ Path p = o.getPath();\r
++ graphics.setRenderingHint(Drawable.GRADIENT_SHAPE, s);\r
++ \r
++ if(p.isFilled()) graphics.fill(s);\r
++ if(p.isStroked()) graphics.draw(s);\r
++ }\r
++ }\r
++\r
++ protected Outline getTailDecoration(Graphics2D graphics, LineDecoration deco, BasicStroke stroke) {\r
++ DecorationSize tailLength = deco.getTailLength();\r
++ DecorationSize tailWidth = deco.getTailWidth();\r
++ \r
++ double lineWidth = Math.max(2.5, stroke.getLineWidth());\r
++ \r
++ Rectangle2D anchor = getAnchor(graphics, shape);\r
++ double x2 = anchor.getX() + anchor.getWidth(),\r
++ y2 = anchor.getY() + anchor.getHeight();\r
++ \r
++ double alpha = Math.atan(anchor.getHeight() / anchor.getWidth());\r
++ \r
++ AffineTransform at = new AffineTransform();\r
++ java.awt.Shape shape = null;\r
++ Path p = null;\r
++ Rectangle2D bounds;\r
++ double scaleY = Math.pow(2, tailWidth.ordinal());\r
++ double scaleX = Math.pow(2, tailLength.ordinal());\r
++ switch (deco.getTailShape()) {\r
++ case OVAL:\r
++ p = new Path();\r
++ shape = new Ellipse2D.Double(0, 0, lineWidth * scaleX, lineWidth * scaleY);\r
++ bounds = shape.getBounds2D();\r
++ at.translate(x2 - bounds.getWidth() / 2, y2 - bounds.getHeight() / 2);\r
++ at.rotate(alpha, bounds.getX() + bounds.getWidth() / 2, bounds.getY() + bounds.getHeight() / 2);\r
++ break;\r
++ case ARROW:\r
++ p = new Path();\r
++ GeneralPath arrow = new GeneralPath();\r
++ arrow.moveTo((float) (-lineWidth * 3), (float) (-lineWidth * 2));\r
++ arrow.lineTo(0, 0);\r
++ arrow.lineTo((float) (-lineWidth * 3), (float) (lineWidth * 2));\r
++ shape = arrow;\r
++ at.translate(x2, y2);\r
++ at.rotate(alpha);\r
++ break;\r
++ case TRIANGLE:\r
++ p = new Path();\r
++ scaleY = tailWidth.ordinal() + 1;\r
++ scaleX = tailLength.ordinal() + 1;\r
++ GeneralPath triangle = new GeneralPath();\r
++ triangle.moveTo((float) (-lineWidth * scaleX), (float) (-lineWidth * scaleY / 2));\r
++ triangle.lineTo(0, 0);\r
++ triangle.lineTo((float) (-lineWidth * scaleX), (float) (lineWidth * scaleY / 2));\r
++ triangle.closePath();\r
++ shape = triangle;\r
++ at.translate(x2, y2);\r
++ at.rotate(alpha);\r
++ break;\r
++ default:\r
++ break;\r
++ }\r
++ \r
++ if (shape != null) {\r
++ shape = at.createTransformedShape(shape);\r
++ }\r
++ return shape == null ? null : new Outline(shape, p);\r
++ }\r
++ \r
++ Outline getHeadDecoration(Graphics2D graphics, LineDecoration deco, BasicStroke stroke) {\r
++ DecorationSize headLength = deco.getHeadLength();\r
++ DecorationSize headWidth = deco.getHeadWidth();\r
++ \r
++ double lineWidth = Math.max(2.5, stroke.getLineWidth());\r
++ \r
++ Rectangle2D anchor = getAnchor(graphics, shape);\r
++ double x1 = anchor.getX(),\r
++ y1 = anchor.getY();\r
++ \r
++ double alpha = Math.atan(anchor.getHeight() / anchor.getWidth());\r
++ \r
++ AffineTransform at = new AffineTransform();\r
++ java.awt.Shape shape = null;\r
++ Path p = null;\r
++ Rectangle2D bounds;\r
++ double scaleY = 1;\r
++ double scaleX = 1;\r
++ switch (deco.getHeadShape()) {\r
++ case OVAL:\r
++ p = new Path();\r
++ shape = new Ellipse2D.Double(0, 0, lineWidth * scaleX, lineWidth * scaleY);\r
++ bounds = shape.getBounds2D();\r
++ at.translate(x1 - bounds.getWidth() / 2, y1 - bounds.getHeight() / 2);\r
++ at.rotate(alpha, bounds.getX() + bounds.getWidth() / 2, bounds.getY() + bounds.getHeight() / 2);\r
++ break;\r
++ case STEALTH:\r
++ case ARROW:\r
++ p = new Path(false, true);\r
++ GeneralPath arrow = new GeneralPath();\r
++ arrow.moveTo((float) (lineWidth * 3 * scaleX), (float) (-lineWidth * scaleY * 2));\r
++ arrow.lineTo(0, 0);\r
++ arrow.lineTo((float) (lineWidth * 3 * scaleX), (float) (lineWidth * scaleY * 2));\r
++ shape = arrow;\r
++ at.translate(x1, y1);\r
++ at.rotate(alpha);\r
++ break;\r
++ case TRIANGLE:\r
++ p = new Path();\r
++ scaleY = headWidth.ordinal() + 1;\r
++ scaleX = headLength.ordinal() + 1;\r
++ GeneralPath triangle = new GeneralPath();\r
++ triangle.moveTo((float) (lineWidth * scaleX), (float) (-lineWidth * scaleY / 2));\r
++ triangle.lineTo(0, 0);\r
++ triangle.lineTo((float) (lineWidth * scaleX), (float) (lineWidth * scaleY / 2));\r
++ triangle.closePath();\r
++ shape = triangle;\r
++ at.translate(x1, y1);\r
++ at.rotate(alpha);\r
++ break;\r
++ default:\r
++ break;\r
++ }\r
++ \r
++ if (shape != null) {\r
++ shape = at.createTransformedShape(shape);\r
++ }\r
++ return shape == null ? null : new Outline(shape, p);\r
++ }\r
++ \r
++ public BasicStroke getStroke() {\r
++ StrokeStyle strokeStyle = shape.getStrokeStyle();\r
++ \r
++ float lineWidth = (float) strokeStyle.getLineWidth();\r
++ if (lineWidth == 0.0f) lineWidth = 0.25f; // Both PowerPoint and OOo draw zero-length lines as 0.25pt\r
++\r
++ LineDash lineDash = strokeStyle.getLineDash();\r
++ if (lineDash == null) {\r
++ lineDash = LineDash.SOLID;\r
++ }\r
++\r
++ int dashPatI[] = lineDash.pattern;\r
++ final float dash_phase = 0;\r
++ float[] dashPatF = null;\r
++ if (dashPatI != null) {\r
++ dashPatF = new float[dashPatI.length];\r
++ for (int i=0; i<dashPatI.length; i++) {\r
++ dashPatF[i] = dashPatI[i]*Math.max(1, lineWidth);\r
++ }\r
++ }\r
++\r
++ LineCap lineCapE = strokeStyle.getLineCap();\r
++ if (lineCapE == null) lineCapE = LineCap.FLAT;\r
++ int lineCap;\r
++ switch (lineCapE) {\r
++ case ROUND:\r
++ lineCap = BasicStroke.CAP_ROUND;\r
++ break;\r
++ case SQUARE:\r
++ lineCap = BasicStroke.CAP_SQUARE;\r
++ break;\r
++ default:\r
++ case FLAT:\r
++ lineCap = BasicStroke.CAP_BUTT;\r
++ break;\r
++ }\r
++\r
++ int lineJoin = BasicStroke.JOIN_ROUND;\r
++\r
++ return new BasicStroke(lineWidth, lineCap, lineJoin, lineWidth, dashPatF, dash_phase);\r
++ }\r
++\r
++ protected void drawShadow(\r
++ Graphics2D graphics\r
++ , Collection<Outline> outlines\r
++ , Paint fill\r
++ , Paint line\r
++ ) {\r
++ Shadow shadow = shape.getShadow();\r
++ if (shadow == null || (fill == null && line == null)) return;\r
++\r
++ SolidPaint shadowPaint = shadow.getFillStyle();\r
++ Color shadowColor = DrawPaint.applyColorTransform(shadowPaint.getSolidColor());\r
++ \r
++ double shapeRotation = shape.getRotation();\r
++ if(shape.getFlipVertical()) {\r
++ shapeRotation += 180;\r
++ }\r
++ double angle = shadow.getAngle() - shapeRotation;\r
++ double dist = shadow.getDistance();\r
++ double dx = dist * Math.cos(Math.toRadians(angle));\r
++ double dy = dist * Math.sin(Math.toRadians(angle));\r
++ \r
++ graphics.translate(dx, dy);\r
++ \r
++ for(Outline o : outlines){\r
++ java.awt.Shape s = o.getOutline();\r
++ Path p = o.getPath();\r
++ graphics.setRenderingHint(Drawable.GRADIENT_SHAPE, s);\r
++ graphics.setPaint(shadowColor);\r
++ \r
++ if(fill != null && p.isFilled()){\r
++ graphics.fill(s);\r
++ } else if (line != null && p.isStroked()) {\r
++ graphics.draw(s);\r
++ }\r
++ }\r
++\r
++ graphics.translate(-dx, -dy);\r
++ }\r
++ \r
++ protected static CustomGeometry getCustomGeometry(String name) {\r
++ return getCustomGeometry(name, null);\r
++ }\r
++ \r
++ protected static CustomGeometry getCustomGeometry(String name, Graphics2D graphics) {\r
++ @SuppressWarnings("unchecked")\r
++ Map<String, CustomGeometry> presets = (graphics == null)\r
++ ? null\r
++ : (Map<String, CustomGeometry>)graphics.getRenderingHint(Drawable.PRESET_GEOMETRY_CACHE);\r
++ \r
++ if (presets == null) {\r
++ presets = new HashMap<String,CustomGeometry>();\r
++ if (graphics != null) {\r
++ graphics.setRenderingHint(Drawable.PRESET_GEOMETRY_CACHE, presets);\r
++ }\r
++ \r
++ String packageName = "org.apache.poi.sl.draw.binding";\r
++ InputStream presetIS = Drawable.class.getResourceAsStream("presetShapeDefinitions.xml");\r
++ Reader xml = new InputStreamReader( presetIS, Charset.forName("UTF-8") );\r
++ \r
++ // StAX:\r
++ EventFilter startElementFilter = new EventFilter() {\r
++ @Override\r
++ public boolean accept(XMLEvent event) {\r
++ return event.isStartElement();\r
++ }\r
++ };\r
++ \r
++ try {\r
++ XMLInputFactory staxFactory = XMLInputFactory.newInstance();\r
++ XMLEventReader staxReader = staxFactory.createXMLEventReader(xml);\r
++ XMLEventReader staxFiltRd = staxFactory.createFilteredReader(staxReader, startElementFilter);\r
++ // Ignore StartElement:\r
++ staxFiltRd.nextEvent();\r
++ // JAXB:\r
++ JAXBContext jaxbContext = JAXBContext.newInstance(packageName);\r
++ Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();\r
++ \r
++ while (staxFiltRd.peek() != null) {\r
++ StartElement evRoot = (StartElement)staxFiltRd.peek();\r
++ String cusName = evRoot.getName().getLocalPart();\r
++ // XMLEvent ev = staxReader.nextEvent();\r
++ JAXBElement<org.apache.poi.sl.draw.binding.CTCustomGeometry2D> el = unmarshaller.unmarshal(staxReader, CTCustomGeometry2D.class);\r
++ CTCustomGeometry2D cusGeom = el.getValue();\r
++ \r
++ presets.put(cusName, new CustomGeometry(cusGeom));\r
++ }\r
++ } catch (Exception e) {\r
++ throw new RuntimeException("Unable to load preset geometries.", e);\r
++ }\r
++ }\r
++ \r
++ return presets.get(name);\r
++ }\r
++ \r
++ protected Collection<Outline> computeOutlines(Graphics2D graphics) {\r
++\r
++ List<Outline> lst = new ArrayList<Outline>();\r
++ CustomGeometry geom = shape.getGeometry();\r
++ if(geom == null) {\r
++ return lst;\r
++ }\r
++\r
++ Rectangle2D anchor = getAnchor(graphics, shape);\r
++ for (Path p : geom) {\r
++\r
++ double w = p.getW() == -1 ? anchor.getWidth() * Units.EMU_PER_POINT : p.getW();\r
++ double h = p.getH() == -1 ? anchor.getHeight() * Units.EMU_PER_POINT : p.getH();\r
++\r
++ // the guides in the shape definitions are all defined relative to each other,\r
++ // so we build the path starting from (0,0).\r
++ final Rectangle2D pathAnchor = new Rectangle2D.Double(0,0,w,h);\r
++\r
++ Context ctx = new Context(geom, pathAnchor, shape);\r
++\r
++ java.awt.Shape gp = p.getPath(ctx);\r
++\r
++ // translate the result to the canvas coordinates in points\r
++ AffineTransform at = new AffineTransform();\r
++ at.translate(anchor.getX(), anchor.getY());\r
++\r
++ double scaleX, scaleY;\r
++ if (p.getW() != -1) {\r
++ scaleX = anchor.getWidth() / p.getW();\r
++ } else {\r
++ scaleX = 1.0 / Units.EMU_PER_POINT;\r
++ }\r
++ if (p.getH() != -1) {\r
++ scaleY = anchor.getHeight() / p.getH();\r
++ } else {\r
++ scaleY = 1.0 / Units.EMU_PER_POINT;\r
++ }\r
++\r
++ at.scale(scaleX, scaleY);\r
++\r
++ java.awt.Shape canvasShape = at.createTransformedShape(gp);\r
++\r
++ lst.add(new Outline(canvasShape, p));\r
++ }\r
++\r
++ return lst;\r
++ }\r
++\r
++}\r
--- /dev/null
--- /dev/null
++/* ====================================================================\r
++ Licensed to the Apache Software Foundation (ASF) under one or more\r
++ contributor license agreements. See the NOTICE file distributed with\r
++ this work for additional information regarding copyright ownership.\r
++ The ASF licenses this file to You under the Apache License, Version 2.0\r
++ (the "License"); you may not use this file except in compliance with\r
++ the License. You may obtain a copy of the License at\r
++\r
++ http://www.apache.org/licenses/LICENSE-2.0\r
++\r
++ Unless required by applicable law or agreed to in writing, software\r
++ distributed under the License is distributed on an "AS IS" BASIS,\r
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ See the License for the specific language governing permissions and\r
++ limitations under the License.\r
++==================================================================== */\r
++\r
++package org.apache.poi.sl.draw;\r
++\r
++import java.awt.Graphics2D;\r
++\r
++import org.apache.poi.sl.usermodel.*;\r
++\r
++\r
++public class DrawSlide<T extends Slide<? extends Shape, ? extends SlideShow, ? extends Notes<?,?>>> extends DrawSheet<T> {\r
++\r
++ public DrawSlide(T slide) {\r
++ super(slide);\r
++ }\r
++ \r
++ public void draw(Graphics2D graphics) {\r
++ Background bg = sheet.getBackground();\r
++ if(bg != null) {\r
++ DrawFactory drawFact = DrawFactory.getInstance(graphics);\r
++ Drawable db = drawFact.getDrawable(bg);\r
++ db.draw(graphics);\r
++ }\r
++\r
++ super.draw(graphics);\r
++ }\r
++}\r
--- /dev/null
--- /dev/null
++/* ====================================================================\r
++ Licensed to the Apache Software Foundation (ASF) under one or more\r
++ contributor license agreements. See the NOTICE file distributed with\r
++ this work for additional information regarding copyright ownership.\r
++ The ASF licenses this file to You under the Apache License, Version 2.0\r
++ (the "License"); you may not use this file except in compliance with\r
++ the License. You may obtain a copy of the License at\r
++\r
++ http://www.apache.org/licenses/LICENSE-2.0\r
++\r
++ Unless required by applicable law or agreed to in writing, software\r
++ distributed under the License is distributed on an "AS IS" BASIS,\r
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ See the License for the specific language governing permissions and\r
++ limitations under the License.\r
++==================================================================== */\r
++\r
++package org.apache.poi.sl.draw;\r
++\r
++import org.apache.poi.sl.usermodel.*;\r
++\r
++public class DrawTableShape<T extends TableShape> extends DrawShape<T> {\r
++ // to be implemented ...\r
++ public DrawTableShape(T shape) {\r
++ super(shape);\r
++ }\r
++}\r
--- /dev/null
--- /dev/null
++/* ====================================================================\r
++ Licensed to the Apache Software Foundation (ASF) under one or more\r
++ contributor license agreements. See the NOTICE file distributed with\r
++ this work for additional information regarding copyright ownership.\r
++ The ASF licenses this file to You under the Apache License, Version 2.0\r
++ (the "License"); you may not use this file except in compliance with\r
++ the License. You may obtain a copy of the License at\r
++\r
++ http://www.apache.org/licenses/LICENSE-2.0\r
++\r
++ Unless required by applicable law or agreed to in writing, software\r
++ distributed under the License is distributed on an "AS IS" BASIS,\r
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ See the License for the specific language governing permissions and\r
++ limitations under the License.\r
++==================================================================== */\r
++\r
++package org.apache.poi.sl.draw;\r
++\r
++import org.apache.poi.sl.usermodel.*;\r
++\r
++public class DrawTextBox<T extends TextBox<? extends TextParagraph<? extends TextRun>>> extends DrawAutoShape<T> {\r
++ public DrawTextBox(T shape) {\r
++ super(shape);\r
++ }\r
++}\r
--- /dev/null
--- /dev/null
++/* ====================================================================\r
++ Licensed to the Apache Software Foundation (ASF) under one or more\r
++ contributor license agreements. See the NOTICE file distributed with\r
++ this work for additional information regarding copyright ownership.\r
++ The ASF licenses this file to You under the Apache License, Version 2.0\r
++ (the "License"); you may not use this file except in compliance with\r
++ the License. You may obtain a copy of the License at\r
++\r
++ http://www.apache.org/licenses/LICENSE-2.0\r
++\r
++ Unless required by applicable law or agreed to in writing, software\r
++ distributed under the License is distributed on an "AS IS" BASIS,\r
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ See the License for the specific language governing permissions and\r
++ limitations under the License.\r
++==================================================================== */\r
++\r
++package org.apache.poi.sl.draw;\r
++\r
++import java.awt.Graphics2D;\r
++import java.awt.font.TextLayout;\r
++import java.text.*;\r
++\r
++public class DrawTextFragment implements Drawable {\r
++ final TextLayout layout;\r
++ final AttributedString str;\r
++ double x, y;\r
++ \r
++ public DrawTextFragment(TextLayout layout, AttributedString str) {\r
++ this.layout = layout;\r
++ this.str = str;\r
++ }\r
++\r
++ public void setPosition(double x, double y) {\r
++ // TODO: replace it, by applyTransform????\r
++ this.x = x;\r
++ this.y = y;\r
++ }\r
++\r
++ public void draw(Graphics2D graphics){\r
++ if(str == null) {\r
++ return;\r
++ }\r
++\r
++ double yBaseline = y + layout.getAscent();\r
++\r
++ Integer textMode = (Integer)graphics.getRenderingHint(Drawable.TEXT_RENDERING_MODE);\r
++ if(textMode != null && textMode == Drawable.TEXT_AS_SHAPES){\r
++ layout.draw(graphics, (float)x, (float)yBaseline);\r
++ } else {\r
++ graphics.drawString(str.getIterator(), (float)x, (float)yBaseline );\r
++ }\r
++ }\r
++\r
++ public void applyTransform(Graphics2D graphics) {\r
++ }\r
++\r
++ public void drawContent(Graphics2D graphics) {\r
++ }\r
++ \r
++ public TextLayout getLayout() {\r
++ return layout;\r
++ }\r
++\r
++ public AttributedString getAttributedString() {\r
++ return str;\r
++ }\r
++ \r
++ /**\r
++ * @return full height of this text run which is sum of ascent, descent and leading\r
++ */\r
++ public float getHeight(){\r
++ double h = Math.ceil(layout.getAscent()) + Math.ceil(layout.getDescent()) + layout.getLeading();\r
++ return (float)h;\r
++ }\r
++\r
++ /**\r
++ *\r
++ * @return width if this text run\r
++ */\r
++ public float getWidth(){\r
++ return layout.getAdvance();\r
++ }\r
++\r
++ /**\r
++ *\r
++ * @return the string to be painted\r
++ */\r
++ public String getString(){\r
++ if (str == null) return "";\r
++\r
++ AttributedCharacterIterator it = str.getIterator();\r
++ StringBuilder buf = new StringBuilder();\r
++ for (char c = it.first(); c != CharacterIterator.DONE; c = it.next()) {\r
++ buf.append(c);\r
++ }\r
++ return buf.toString();\r
++ }\r
++\r
++ @Override\r
++ public String toString(){\r
++ return "[" + getClass().getSimpleName() + "] " + getString();\r
++ }\r
++ \r
++}\r
--- /dev/null
--- /dev/null
++/* ====================================================================\r
++ Licensed to the Apache Software Foundation (ASF) under one or more\r
++ contributor license agreements. See the NOTICE file distributed with\r
++ this work for additional information regarding copyright ownership.\r
++ The ASF licenses this file to You under the Apache License, Version 2.0\r
++ (the "License"); you may not use this file except in compliance with\r
++ the License. You may obtain a copy of the License at\r
++\r
++ http://www.apache.org/licenses/LICENSE-2.0\r
++\r
++ Unless required by applicable law or agreed to in writing, software\r
++ distributed under the License is distributed on an "AS IS" BASIS,\r
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ See the License for the specific language governing permissions and\r
++ limitations under the License.\r
++==================================================================== */\r
++\r
++package org.apache.poi.sl.draw;\r
++\r
++import java.awt.Color;\r
++import java.awt.Graphics2D;\r
++import java.awt.font.*;\r
++import java.awt.geom.Rectangle2D;\r
++import java.text.*;\r
++import java.text.AttributedCharacterIterator.Attribute;\r
++import java.util.*;\r
++\r
++import org.apache.poi.sl.usermodel.*;\r
++import org.apache.poi.sl.usermodel.TextParagraph.BulletStyle;\r
++import org.apache.poi.sl.usermodel.TextParagraph.TextAlign;\r
++import org.apache.poi.sl.usermodel.TextRun.TextCap;\r
++import org.apache.poi.util.Units;\r
++\r
++public class DrawTextParagraph<T extends TextRun> implements Drawable {\r
++ protected TextParagraph<T> paragraph;\r
++ double x, y;\r
++ protected List<DrawTextFragment> lines = new ArrayList<DrawTextFragment>();\r
++ protected String rawText;\r
++ protected DrawTextFragment bullet;\r
++ protected int autoNbrIdx = 0;\r
++\r
++ /**\r
++ * the highest line in this paragraph. Used for line spacing.\r
++ */\r
++ protected double maxLineHeight;\r
++\r
++ public DrawTextParagraph(TextParagraph<T> paragraph) {\r
++ this.paragraph = paragraph;\r
++ }\r
++\r
++ public void setPosition(double x, double y) {\r
++ // TODO: replace it, by applyTransform????\r
++ this.x = x;\r
++ this.y = y;\r
++ }\r
++\r
++ public double getY() {\r
++ return y;\r
++ }\r
++\r
++ /**\r
++ * Sets the auto numbering index of the handled paragraph\r
++ * @param index the auto numbering index\r
++ */\r
++ public void setAutoNumberingIdx(int index) {\r
++ autoNbrIdx = index;\r
++ }\r
++ \r
++ public void draw(Graphics2D graphics){\r
++ if (lines.isEmpty()) return;\r
++ \r
++ Insets2D insets = paragraph.getParentShape().getInsets();\r
++ double leftInset = insets.left;\r
++ double rightInset = insets.right;\r
++ double penY = y;\r
++\r
++ boolean firstLine = true;\r
++ int indentLevel = paragraph.getIndentLevel();\r
++ Double leftMargin = paragraph.getLeftMargin();\r
++ if (leftMargin == null) {\r
++ // if the marL attribute is omitted, then a value of 347663 is implied\r
++ leftMargin = Units.toPoints(347663*(indentLevel+1));\r
++ }\r
++ Double indent = paragraph.getIndent();\r
++ if (indent == null) {\r
++ indent = Units.toPoints(347663*indentLevel);\r
++ }\r
++ Double rightMargin = paragraph.getRightMargin();\r
++ if (rightMargin == null) {\r
++ rightMargin = 0d;\r
++ }\r
++\r
++ //The vertical line spacing\r
++ Double spacing = paragraph.getLineSpacing();\r
++ if (spacing == null) spacing = 100d;\r
++ \r
++ for(DrawTextFragment line : lines){\r
++ double penX;\r
++\r
++ if(firstLine) {\r
++ if (!isEmptyParagraph()) {\r
++ // TODO: find out character style for empty, but bulleted/numbered lines\r
++ bullet = getBullet(graphics, line.getAttributedString().getIterator());\r
++ }\r
++ \r
++ if (bullet != null){\r
++ bullet.setPosition(x + indent, penY);\r
++ bullet.draw(graphics);\r
++ // don't let text overlay the bullet and advance by the bullet width\r
++ double bulletWidth = bullet.getLayout().getAdvance() + 1;\r
++ penX = x + Math.max(leftMargin, indent+bulletWidth);\r
++ } else {\r
++ penX = x + indent;\r
++ }\r
++ } else {\r
++ penX = x + leftMargin;\r
++ }\r
++\r
++ Rectangle2D anchor = DrawShape.getAnchor(graphics, paragraph.getParentShape());\r
++\r
++ TextAlign ta = paragraph.getTextAlign();\r
++ if (ta == null) ta = TextAlign.LEFT;\r
++ switch (ta) {\r
++ case CENTER:\r
++ penX += (anchor.getWidth() - leftMargin - line.getWidth() - leftInset - rightInset) / 2;\r
++ break;\r
++ case RIGHT:\r
++ penX += (anchor.getWidth() - line.getWidth() - leftInset - rightInset);\r
++ break;\r
++ default:\r
++ break;\r
++ }\r
++\r
++ line.setPosition(penX, penY);\r
++ line.draw(graphics);\r
++\r
++ if(spacing > 0) {\r
++ // If linespacing >= 0, then linespacing is a percentage of normal line height.\r
++ penY += spacing*0.01* line.getHeight();\r
++ } else {\r
++ // negative value means absolute spacing in points\r
++ penY += -spacing;\r
++ }\r
++\r
++ firstLine = false;\r
++ }\r
++\r
++ y = penY - y;\r
++ }\r
++ \r
++ public float getFirstLineHeight() {\r
++ return (lines.isEmpty()) ? 0 : lines.get(0).getHeight();\r
++ }\r
++\r
++ public float getLastLineHeight() {\r
++ return (lines.isEmpty()) ? 0 : lines.get(lines.size()-1).getHeight();\r
++ }\r
++\r
++ public boolean isEmptyParagraph() {\r
++ return (lines.isEmpty() || rawText.trim().isEmpty());\r
++ }\r
++ \r
++ public void applyTransform(Graphics2D graphics) {\r
++ }\r
++\r
++ public void drawContent(Graphics2D graphics) {\r
++ }\r
++\r
++ /**\r
++ * break text into lines, each representing a line of text that fits in the wrapping width\r
++ *\r
++ * @param graphics\r
++ */\r
++ protected void breakText(Graphics2D graphics){\r
++ lines.clear();\r
++\r
++ DrawFactory fact = DrawFactory.getInstance(graphics);\r
++ StringBuilder text = new StringBuilder();\r
++ AttributedString at = getAttributedString(graphics, text);\r
++ boolean emptyParagraph = ("".equals(text.toString().trim()));\r
++\r
++ AttributedCharacterIterator it = at.getIterator();\r
++ LineBreakMeasurer measurer = new LineBreakMeasurer(it, graphics.getFontRenderContext());\r
++ for (;;) {\r
++ int startIndex = measurer.getPosition();\r
++\r
++ double wrappingWidth = getWrappingWidth(lines.size() == 0, graphics) + 1; // add a pixel to compensate rounding errors\r
++ // shape width can be smaller that the sum of insets (this was proved by a test file)\r
++ if(wrappingWidth < 0) wrappingWidth = 1;\r
++\r
++ int nextBreak = text.indexOf("\n", startIndex + 1);\r
++ if(nextBreak == -1) nextBreak = it.getEndIndex();\r
++\r
++ TextLayout layout = measurer.nextLayout((float)wrappingWidth, nextBreak, true);\r
++ if (layout == null) {\r
++ // layout can be null if the entire word at the current position\r
++ // does not fit within the wrapping width. Try with requireNextWord=false.\r
++ layout = measurer.nextLayout((float)wrappingWidth, nextBreak, false);\r
++ }\r
++\r
++ if(layout == null) {\r
++ // exit if can't break any more\r
++ break;\r
++ }\r
++\r
++ int endIndex = measurer.getPosition();\r
++ // skip over new line breaks (we paint 'clear' text runs not starting or ending with \n)\r
++ if(endIndex < it.getEndIndex() && text.charAt(endIndex) == '\n'){\r
++ measurer.setPosition(endIndex + 1);\r
++ }\r
++\r
++ TextAlign hAlign = paragraph.getTextAlign();\r
++ if(hAlign == TextAlign.JUSTIFY || hAlign == TextAlign.JUSTIFY_LOW) {\r
++ layout = layout.getJustifiedLayout((float)wrappingWidth);\r
++ }\r
++\r
++ AttributedString str = (emptyParagraph)\r
++ ? null // we will not paint empty paragraphs\r
++ : new AttributedString(it, startIndex, endIndex);\r
++ DrawTextFragment line = fact.getTextFragment(layout, str);\r
++ lines.add(line);\r
++\r
++ maxLineHeight = Math.max(maxLineHeight, line.getHeight());\r
++\r
++ if(endIndex == it.getEndIndex()) break;\r
++ }\r
++\r
++ rawText = text.toString();\r
++ }\r
++\r
++ protected DrawTextFragment getBullet(Graphics2D graphics, AttributedCharacterIterator firstLineAttr) {\r
++ BulletStyle bulletStyle = paragraph.getBulletStyle();\r
++ if (bulletStyle == null) return null;\r
++\r
++ String buCharacter;\r
++ AutoNumberingScheme ans = bulletStyle.getAutoNumberingScheme();\r
++ if (ans != null) {\r
++ buCharacter = ans.format(autoNbrIdx);\r
++ } else {\r
++ buCharacter = bulletStyle.getBulletCharacter();\r
++ }\r
++ if (buCharacter == null) return null;\r
++\r
++ String buFont = bulletStyle.getBulletFont();\r
++ if (buFont == null) buFont = paragraph.getDefaultFontFamily();\r
++ assert(buFont != null);\r
++\r
++ Color buColor = bulletStyle.getBulletFontColor();\r
++ if (buColor == null) buColor = (Color)firstLineAttr.getAttribute(TextAttribute.FOREGROUND);\r
++\r
++ float fontSize = (Float)firstLineAttr.getAttribute(TextAttribute.SIZE);\r
++ Double buSz = bulletStyle.getBulletFontSize();\r
++ if (buSz == null) buSz = 100d; \r
++ if (buSz > 0) fontSize *= buSz* 0.01;\r
++ else fontSize = (float)-buSz;\r
++\r
++ \r
++ AttributedString str = new AttributedString(buCharacter);\r
++ str.addAttribute(TextAttribute.FOREGROUND, buColor);\r
++ str.addAttribute(TextAttribute.FAMILY, buFont);\r
++ str.addAttribute(TextAttribute.SIZE, fontSize);\r
++\r
++ TextLayout layout = new TextLayout(str.getIterator(), graphics.getFontRenderContext());\r
++ DrawFactory fact = DrawFactory.getInstance(graphics);\r
++ return fact.getTextFragment(layout, str);\r
++ }\r
++\r
++ protected String getRenderableText(TextRun tr) {\r
++ StringBuilder buf = new StringBuilder();\r
++ TextCap cap = tr.getTextCap();\r
++ String tabs = null;\r
++ for (char c : tr.getRawText().toCharArray()) {\r
++ if(c == '\t') {\r
++ if (tabs == null) {\r
++ tabs = tab2space(tr);\r
++ }\r
++ buf.append(tabs);\r
++ continue;\r
++ }\r
++\r
++ switch (cap) {\r
++ case ALL: c = Character.toUpperCase(c); break;\r
++ case SMALL: c = Character.toLowerCase(c); break;\r
++ case NONE: break;\r
++ }\r
++\r
++ buf.append(c);\r
++ }\r
++\r
++ return buf.toString();\r
++ }\r
++ \r
++ /**\r
++ * Replace a tab with the effective number of white spaces.\r
++ */\r
++ private String tab2space(TextRun tr) {\r
++ AttributedString string = new AttributedString(" ");\r
++ String typeFace = tr.getFontFamily();\r
++ if (typeFace == null) typeFace = "Lucida Sans";\r
++ string.addAttribute(TextAttribute.FAMILY, typeFace);\r
++\r
++ Double fs = tr.getFontSize();\r
++ if (fs == null) fs = 12d;\r
++ string.addAttribute(TextAttribute.SIZE, fs.floatValue());\r
++ \r
++ TextLayout l = new TextLayout(string.getIterator(), new FontRenderContext(null, true, true));\r
++ double wspace = l.getAdvance();\r
++\r
++ Double tabSz = paragraph.getDefaultTabSize();\r
++ if (tabSz == null) tabSz = wspace*4;\r
++\r
++ int numSpaces = (int)Math.ceil(tabSz / wspace);\r
++ StringBuilder buf = new StringBuilder();\r
++ for(int i = 0; i < numSpaces; i++) {\r
++ buf.append(' ');\r
++ }\r
++ return buf.toString();\r
++ }\r
++ \r
++\r
++ /**\r
++ * Returns wrapping width to break lines in this paragraph\r
++ *\r
++ * @param firstLine whether the first line is breaking\r
++ *\r
++ * @return wrapping width in points\r
++ */\r
++ protected double getWrappingWidth(boolean firstLine, Graphics2D graphics){\r
++ // internal margins for the text box\r
++\r
++ Insets2D insets = paragraph.getParentShape().getInsets();\r
++ double leftInset = insets.left;\r
++ double rightInset = insets.right;\r
++\r
++ Rectangle2D anchor = DrawShape.getAnchor(graphics, paragraph.getParentShape());\r
++\r
++ int indentLevel = paragraph.getIndentLevel();\r
++ Double leftMargin = paragraph.getLeftMargin();\r
++ if (leftMargin == null) {\r
++ // if the marL attribute is omitted, then a value of 347663 is implied\r
++ leftMargin = Units.toPoints(347663*(indentLevel+1));\r
++ }\r
++ Double indent = paragraph.getIndent();\r
++ if (indent == null) {\r
++ indent = Units.toPoints(347663*indentLevel);\r
++ }\r
++ Double rightMargin = paragraph.getRightMargin();\r
++ if (rightMargin == null) {\r
++ rightMargin = 0d;\r
++ }\r
++\r
++ double width;\r
++ TextShape<? extends TextParagraph<T>> ts = paragraph.getParentShape();\r
++ if (!ts.getWordWrap()) {\r
++ // if wordWrap == false then we return the advance to the right border of the sheet\r
++ width = ts.getSheet().getSlideShow().getPageSize().getWidth() - anchor.getX();\r
++ } else {\r
++ width = anchor.getWidth() - leftInset - rightInset - leftMargin - rightMargin;\r
++ if (firstLine) {\r
++ if (bullet != null){\r
++ if (indent > 0) width -= indent;\r
++ } else {\r
++ if (indent > 0) width -= indent; // first line indentation\r
++ else if (indent < 0) { // hanging indentation: the first line start at the left margin\r
++ width += leftMargin;\r
++ }\r
++ }\r
++ }\r
++ }\r
++\r
++ return width;\r
++ }\r
++\r
++ private static class AttributedStringData {\r
++ Attribute attribute;\r
++ Object value;\r
++ int beginIndex, endIndex;\r
++ AttributedStringData(Attribute attribute, Object value, int beginIndex, int endIndex) {\r
++ this.attribute = attribute;\r
++ this.value = value;\r
++ this.beginIndex = beginIndex;\r
++ this.endIndex = endIndex;\r
++ }\r
++ }\r
++\r
++ protected AttributedString getAttributedString(Graphics2D graphics, StringBuilder text){\r
++ List<AttributedStringData> attList = new ArrayList<AttributedStringData>();\r
++ if (text == null) text = new StringBuilder();\r
++\r
++ DrawFontManager fontHandler = (DrawFontManager)graphics.getRenderingHint(Drawable.FONT_HANDLER);\r
++\r
++ for (TextRun run : paragraph){\r
++ String runText = getRenderableText(run);\r
++ // skip empty runs\r
++ if (runText.isEmpty()) continue;\r
++\r
++ int beginIndex = text.length();\r
++ text.append(runText);\r
++ int endIndex = text.length();\r
++\r
++ Color fgColor = run.getFontColor();\r
++ if (fgColor == null) fgColor = Color.BLACK;\r
++ attList.add(new AttributedStringData(TextAttribute.FOREGROUND, fgColor, beginIndex, endIndex));\r
++\r
++ // user can pass an custom object to convert fonts\r
++ String fontFamily = run.getFontFamily();\r
++ @SuppressWarnings("unchecked")\r
++ Map<String,String> fontMap = (Map<String,String>)graphics.getRenderingHint(Drawable.FONT_MAP);\r
++ if (fontMap != null && fontMap.containsKey(fontFamily)) {\r
++ fontFamily = fontMap.get(fontFamily);\r
++ }\r
++ if(fontHandler != null) {\r
++ fontFamily = fontHandler.getRendererableFont(fontFamily, run.getPitchAndFamily());\r
++ }\r
++ if (fontFamily == null) {\r
++ fontFamily = paragraph.getDefaultFontFamily();\r
++ }\r
++ attList.add(new AttributedStringData(TextAttribute.FAMILY, fontFamily, beginIndex, endIndex));\r
++\r
++ Double fontSz = run.getFontSize();\r
++ if (fontSz == null) fontSz = paragraph.getDefaultFontSize();\r
++ attList.add(new AttributedStringData(TextAttribute.SIZE, fontSz.floatValue(), beginIndex, endIndex));\r
++\r
++ if(run.isBold()) {\r
++ attList.add(new AttributedStringData(TextAttribute.WEIGHT, TextAttribute.WEIGHT_BOLD, beginIndex, endIndex));\r
++ }\r
++ if(run.isItalic()) {\r
++ attList.add(new AttributedStringData(TextAttribute.POSTURE, TextAttribute.POSTURE_OBLIQUE, beginIndex, endIndex));\r
++ }\r
++ if(run.isUnderlined()) {\r
++ attList.add(new AttributedStringData(TextAttribute.UNDERLINE, TextAttribute.UNDERLINE_ON, beginIndex, endIndex));\r
++ attList.add(new AttributedStringData(TextAttribute.INPUT_METHOD_UNDERLINE, TextAttribute.UNDERLINE_LOW_TWO_PIXEL, beginIndex, endIndex));\r
++ }\r
++ if(run.isStrikethrough()) {\r
++ attList.add(new AttributedStringData(TextAttribute.STRIKETHROUGH, TextAttribute.STRIKETHROUGH_ON, beginIndex, endIndex));\r
++ }\r
++ if(run.isSubscript()) {\r
++ attList.add(new AttributedStringData(TextAttribute.SUPERSCRIPT, TextAttribute.SUPERSCRIPT_SUB, beginIndex, endIndex));\r
++ }\r
++ if(run.isSuperscript()) {\r
++ attList.add(new AttributedStringData(TextAttribute.SUPERSCRIPT, TextAttribute.SUPERSCRIPT_SUPER, beginIndex, endIndex));\r
++ }\r
++ }\r
++\r
++ // ensure that the paragraph contains at least one character\r
++ // We need this trick to correctly measure text\r
++ if (text.length() == 0) {\r
++ Double fontSz = paragraph.getDefaultFontSize();\r
++ text.append(" ");\r
++ attList.add(new AttributedStringData(TextAttribute.SIZE, fontSz.floatValue(), 0, 1));\r
++ }\r
++\r
++ AttributedString string = new AttributedString(text.toString());\r
++ for (AttributedStringData asd : attList) {\r
++ string.addAttribute(asd.attribute, asd.value, asd.beginIndex, asd.endIndex);\r
++ }\r
++\r
++ return string;\r
++ }\r
++\r
++\r
++}\r
--- /dev/null
--- /dev/null
++/* ====================================================================\r
++ Licensed to the Apache Software Foundation (ASF) under one or more\r
++ contributor license agreements. See the NOTICE file distributed with\r
++ this work for additional information regarding copyright ownership.\r
++ The ASF licenses this file to You under the Apache License, Version 2.0\r
++ (the "License"); you may not use this file except in compliance with\r
++ the License. You may obtain a copy of the License at\r
++\r
++ http://www.apache.org/licenses/LICENSE-2.0\r
++\r
++ Unless required by applicable law or agreed to in writing, software\r
++ distributed under the License is distributed on an "AS IS" BASIS,\r
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ See the License for the specific language governing permissions and\r
++ limitations under the License.\r
++==================================================================== */\r
++\r
++package org.apache.poi.sl.draw;\r
++\r
++import java.awt.Graphics2D;\r
++import java.awt.geom.AffineTransform;\r
++import java.awt.geom.Rectangle2D;\r
++import java.awt.image.BufferedImage;\r
++import java.util.*;\r
++\r
++import org.apache.poi.sl.usermodel.*;\r
++import org.apache.poi.sl.usermodel.TextParagraph.BulletStyle;\r
++import org.apache.poi.util.JvmBugs;\r
++\r
++public class DrawTextShape<T extends TextShape<? extends TextParagraph<? extends TextRun>>> extends DrawSimpleShape<T> {\r
++\r
++ public DrawTextShape(T shape) {\r
++ super(shape);\r
++ }\r
++\r
++ @Override\r
++ public void drawContent(Graphics2D graphics) {\r
++ Rectangle2D anchor = DrawShape.getAnchor(graphics, shape);\r
++ Insets2D insets = shape.getInsets();\r
++ double x = anchor.getX() + insets.left;\r
++ double y = anchor.getY();\r
++\r
++ // remember the initial transform\r
++ AffineTransform tx = graphics.getTransform();\r
++\r
++ // Transform of text in flipped shapes is special.\r
++ // At this point the flip and rotation transform is already applied\r
++ // (see DrawShape#applyTransform ), but we need to restore it to avoid painting "upside down".\r
++ // See Bugzilla 54210.\r
++\r
++ if(shape.getFlipVertical()){\r
++ graphics.translate(anchor.getX(), anchor.getY() + anchor.getHeight());\r
++ graphics.scale(1, -1);\r
++ graphics.translate(-anchor.getX(), -anchor.getY());\r
++\r
++ // text in vertically flipped shapes is rotated by 180 degrees\r
++ double centerX = anchor.getX() + anchor.getWidth()/2;\r
++ double centerY = anchor.getY() + anchor.getHeight()/2;\r
++ graphics.translate(centerX, centerY);\r
++ graphics.rotate(Math.toRadians(180));\r
++ graphics.translate(-centerX, -centerY);\r
++ }\r
++\r
++ // Horizontal flipping applies only to shape outline and not to the text in the shape.\r
++ // Applying flip second time restores the original not-flipped transform\r
++ if(shape.getFlipHorizontal()){\r
++ graphics.translate(anchor.getX() + anchor.getWidth(), anchor.getY());\r
++ graphics.scale(-1, 1);\r
++ graphics.translate(-anchor.getX() , -anchor.getY());\r
++ }\r
++\r
++\r
++ // first dry-run to calculate the total height of the text\r
++ double textHeight = shape.getTextHeight();\r
++\r
++ switch (shape.getVerticalAlignment()){\r
++ case TOP:\r
++ y += insets.top;\r
++ break;\r
++ case BOTTOM:\r
++ y += anchor.getHeight() - textHeight - insets.bottom;\r
++ break;\r
++ default:\r
++ case MIDDLE:\r
++ double delta = anchor.getHeight() - textHeight - insets.top - insets.bottom;\r
++ y += insets.top + delta/2;\r
++ break;\r
++ }\r
++\r
++ drawParagraphs(graphics, x, y);\r
++\r
++ // restore the transform\r
++ graphics.setTransform(tx);\r
++ }\r
++\r
++ /**\r
++ * paint the paragraphs starting from top left (x,y)\r
++ *\r
++ * @return the vertical advance, i.e. the cumulative space occupied by the text\r
++ */\r
++ public double drawParagraphs(Graphics2D graphics, double x, double y) {\r
++ DrawFactory fact = DrawFactory.getInstance(graphics);\r
++ Insets2D shapePadding = shape.getInsets();\r
++\r
++ double y0 = y;\r
++ Iterator<? extends TextParagraph<? extends TextRun>> paragraphs = shape.iterator();\r
++ \r
++ boolean isFirstLine = true;\r
++ for (int autoNbrIdx=0; paragraphs.hasNext(); autoNbrIdx++){\r
++ TextParagraph<? extends TextRun> p = paragraphs.next();\r
++ DrawTextParagraph<? extends TextRun> dp = fact.getDrawable(p);\r
++ BulletStyle bs = p.getBulletStyle();\r
++ if (bs == null || bs.getAutoNumberingScheme() == null) {\r
++ autoNbrIdx = -1;\r
++ } else {\r
++ Integer startAt = bs.getAutoNumberingStartAt();\r
++ if (startAt == null) startAt = 1;\r
++ // TODO: handle reset auto number indexes\r
++ if (startAt > autoNbrIdx) autoNbrIdx = startAt;\r
++ }\r
++ dp.setAutoNumberingIdx(autoNbrIdx);\r
++ dp.breakText(graphics);\r
++\r
++ if (!isFirstLine) {\r
++ // the amount of vertical white space before the paragraph\r
++ Double spaceBefore = p.getSpaceBefore();\r
++ if (spaceBefore == null) spaceBefore = 0d;\r
++ if(spaceBefore > 0) {\r
++ // positive value means percentage spacing of the height of the first line, e.g.\r
++ // the higher the first line, the bigger the space before the paragraph\r
++ y += spaceBefore*0.01*dp.getFirstLineHeight();\r
++ } else {\r
++ // negative value means the absolute spacing in points\r
++ y += -spaceBefore;\r
++ }\r
++ }\r
++ isFirstLine = false;\r
++ \r
++ dp.setPosition(x, y);\r
++ dp.draw(graphics);\r
++ y += dp.getY();\r
++\r
++ if (paragraphs.hasNext()) {\r
++ Double spaceAfter = p.getSpaceAfter();\r
++ if (spaceAfter == null) spaceAfter = 0d;\r
++ if(spaceAfter > 0) {\r
++ // positive value means percentage spacing of the height of the last line, e.g.\r
++ // the higher the last line, the bigger the space after the paragraph\r
++ y += spaceAfter*0.01*dp.getLastLineHeight();\r
++ } else {\r
++ // negative value means the absolute spacing in points\r
++ y += -spaceAfter;\r
++ }\r
++ }\r
++ }\r
++ return y - y0;\r
++ }\r
++\r
++ /**\r
++ * Compute the cumulative height occupied by the text\r
++ */\r
++ public double getTextHeight(){\r
++ // dry-run in a 1x1 image and return the vertical advance\r
++ BufferedImage img = new BufferedImage(1, 1, BufferedImage.TYPE_INT_RGB);\r
++ Graphics2D graphics = img.createGraphics();\r
++ fixFonts(graphics);\r
++ return drawParagraphs(graphics, 0, 0);\r
++ }\r
++ \r
++ @SuppressWarnings("unchecked")\r
++ private static void fixFonts(Graphics2D graphics) {\r
++ if (!JvmBugs.hasLineBreakMeasurerBug()) return;\r
++ Map<String,String> fontMap = (Map<String,String>)graphics.getRenderingHint(Drawable.FONT_MAP);\r
++ if (fontMap == null) fontMap = new HashMap<String,String>();\r
++ fontMap.put("Calibri", "Lucida Sans");\r
++ fontMap.put("Cambria", "Lucida Bright");\r
++ graphics.setRenderingHint(Drawable.FONT_MAP, fontMap); \r
++ }\r
++}\r
--- /dev/null
--- /dev/null
++/* ====================================================================\r
++ Licensed to the Apache Software Foundation (ASF) under one or more\r
++ contributor license agreements. See the NOTICE file distributed with\r
++ this work for additional information regarding copyright ownership.\r
++ The ASF licenses this file to You under the Apache License, Version 2.0\r
++ (the "License"); you may not use this file except in compliance with\r
++ the License. You may obtain a copy of the License at\r
++\r
++ http://www.apache.org/licenses/LICENSE-2.0\r
++\r
++ Unless required by applicable law or agreed to in writing, software\r
++ distributed under the License is distributed on an "AS IS" BASIS,\r
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ See the License for the specific language governing permissions and\r
++ limitations under the License.\r
++==================================================================== */\r
++\r
++package org.apache.poi.sl.draw;\r
++\r
++import java.awt.Graphics2D;\r
++import java.awt.RenderingHints;\r
++\r
++import org.apache.poi.util.Internal;\r
++\r
++\r
++public interface Drawable {\r
++ class DrawableHint extends RenderingHints.Key {\r
++ protected DrawableHint(int id) {\r
++ super(id);\r
++ }\r
++ \r
++ public boolean isCompatibleValue(Object val) {\r
++ return true;\r
++ }\r
++ \r
++ public String toString() {\r
++ switch (intKey()) {\r
++ case 1: return "DRAW_FACTORY";\r
++ case 2: return "GROUP_TRANSFORM";\r
++ case 3: return "IMAGE_RENDERER";\r
++ case 4: return "TEXT_RENDERING_MODE";\r
++ case 5: return "GRADIENT_SHAPE";\r
++ case 6: return "PRESET_GEOMETRY_CACHE";\r
++ case 7: return "FONT_HANDLER";\r
++ case 8: return "FONT_FALLBACK";\r
++ case 9: return "FONT_MAP";\r
++ case 10: return "GSAVE";\r
++ case 11: return "GRESTORE";\r
++ default: return "UNKNOWN_ID "+intKey();\r
++ }\r
++ }\r
++ }\r
++ \r
++ /**\r
++ * {@link DrawFactory} which will be used to draw objects into this graphics context\r
++ */\r
++ DrawableHint DRAW_FACTORY = new DrawableHint(1);\r
++\r
++ /**\r
++ * Key will be internally used to store affine transformation temporarily within group shapes\r
++ */\r
++ @Internal\r
++ DrawableHint GROUP_TRANSFORM = new DrawableHint(2);\r
++\r
++ /**\r
++ * Use a custom image renderer of an instance of {@link ImageRenderer}\r
++ */\r
++ DrawableHint IMAGE_RENDERER = new DrawableHint(3);\r
++\r
++ /**\r
++ * how to render text:\r
++ *\r
++ * {@link #TEXT_AS_CHARACTERS} (default) means to draw via\r
++ * {@link java.awt.Graphics2D#drawString(java.text.AttributedCharacterIterator, float, float)}.\r
++ * This mode draws text as characters. Use it if the target graphics writes the actual\r
++ * character codes instead of glyph outlines (PDFGraphics2D, SVGGraphics2D, etc.)\r
++ *\r
++ * {@link #TEXT_AS_SHAPES} means to render via\r
++ * {@link java.awt.font.TextLayout#draw(java.awt.Graphics2D, float, float)}.\r
++ * This mode draws glyphs as shapes and provides some advanced capabilities such as\r
++ * justification and font substitution. Use it if the target graphics is an image.\r
++ *\r
++ */\r
++ DrawableHint TEXT_RENDERING_MODE = new DrawableHint(4);\r
++\r
++ /**\r
++ * PathGradientPaint needs the shape to be set.\r
++ * It will be achieved through setting it in the rendering hints\r
++ */\r
++ DrawableHint GRADIENT_SHAPE = new DrawableHint(5);\r
++\r
++\r
++ /**\r
++ * Internal key for caching the preset geometries\r
++ */\r
++ DrawableHint PRESET_GEOMETRY_CACHE = new DrawableHint(6);\r
++ \r
++ /**\r
++ * draw text via {@link java.awt.Graphics2D#drawString(java.text.AttributedCharacterIterator, float, float)}\r
++ */\r
++ int TEXT_AS_CHARACTERS = 1;\r
++\r
++ /**\r
++ * draw text via {@link java.awt.font.TextLayout#draw(java.awt.Graphics2D, float, float)}\r
++ */\r
++ int TEXT_AS_SHAPES = 2;\r
++\r
++ /**\r
++ * Use this object to resolve unknown / missing fonts when rendering slides\r
++ */\r
++ DrawableHint FONT_HANDLER = new DrawableHint(7);\r
++ DrawableHint FONT_FALLBACK = new DrawableHint(8);\r
++ DrawableHint FONT_MAP = new DrawableHint(9);\r
++ \r
++ DrawableHint GSAVE = new DrawableHint(10);\r
++ DrawableHint GRESTORE = new DrawableHint(11);\r
++ \r
++ \r
++ \r
++ /**\r
++ * Apply 2-D transforms before drawing this shape. This includes rotation and flipping.\r
++ *\r
++ * @param graphics the graphics whos transform matrix will be modified\r
++ */\r
++ void applyTransform(Graphics2D graphics);\r
++ \r
++ /**\r
++ * Draw this shape into the supplied canvas\r
++ *\r
++ * @param graphics the graphics to draw into\r
++ */\r
++ void draw(Graphics2D graphics);\r
++ \r
++ /**\r
++ * draw any content within this shape (image, text, etc.).\r
++ *\r
++ * @param graphics the graphics to draw into\r
++ */\r
++ void drawContent(Graphics2D graphics); \r
++}\r
--- /dev/null
--- /dev/null
++/*\r
++ * ====================================================================\r
++ * Licensed to the Apache Software Foundation (ASF) under one or more\r
++ * contributor license agreements. See the NOTICE file distributed with\r
++ * this work for additional information regarding copyright ownership.\r
++ * The ASF licenses this file to You under the Apache License, Version 2.0\r
++ * (the "License"); you may not use this file except in compliance with\r
++ * the License. You may obtain a copy of the License at\r
++ *\r
++ * http://www.apache.org/licenses/LICENSE-2.0\r
++ *\r
++ * Unless required by applicable law or agreed to in writing, software\r
++ * distributed under the License is distributed on an "AS IS" BASIS,\r
++ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ * See the License for the specific language governing permissions and\r
++ * limitations under the License.\r
++ * ====================================================================\r
++ */\r
++package org.apache.poi.sl.draw;\r
++\r
++import java.awt.*;\r
++import java.awt.geom.AffineTransform;\r
++import java.awt.geom.Rectangle2D;\r
++import java.awt.image.BufferedImage;\r
++import java.awt.image.RescaleOp;\r
++import java.io.*;\r
++\r
++import javax.imageio.ImageIO;\r
++\r
++/**\r
++ * For now this class renders only images supported by the javax.imageio.ImageIO\r
++ * framework. Subclasses can override this class to support other formats, for\r
++ * example, use Apache Batik to render WMF, PICT can be rendered using Apple QuickTime API for Java:\r
++ *\r
++ * <pre>\r
++ * <code>\r
++ * public class MyImageRendener extends ImageRendener {\r
++ * InputStream data;\r
++ *\r
++ * public boolean drawImage(Graphics2D graphics,Rectangle2D anchor,Insets clip) {\r
++ * // draw image\r
++ * DataInputStream is = new DataInputStream(data);\r
++ * org.apache.batik.transcoder.wmf.tosvg.WMFRecordStore wmfStore =\r
++ * new org.apache.batik.transcoder.wmf.tosvg.WMFRecordStore();\r
++ * try {\r
++ * wmfStore.read(is);\r
++ * } catch (IOException e){\r
++ * return;\r
++ * }\r
++ *\r
++ * float scale = (float)anchor.width/wmfStore.getWidthPixels();\r
++ *\r
++ * org.apache.batik.transcoder.wmf.tosvg.WMFPainter painter =\r
++ * new org.apache.batik.transcoder.wmf.tosvg.WMFPainter(wmfStore, 0, 0, scale);\r
++ * graphics.translate(anchor.x, anchor.y);\r
++ * painter.paint(graphics);\r
++ * }\r
++ *\r
++ * public void loadImage(InputStream data, String contentType) throws IOException {\r
++ * if ("image/wmf".equals(contentType)) {\r
++ * this.data = data;\r
++ * // use Apache Batik to handle WMF\r
++ * } else {\r
++ * super.loadImage(data,contentType);\r
++ * }\r
++ * }\r
++ * }\r
++ * </code>\r
++ * </pre>\r
++ *\r
++ * and then pass this class to your instance of java.awt.Graphics2D:\r
++ *\r
++ * <pre>\r
++ * <code>\r
++ * graphics.setRenderingHint(Drawable.IMAGE_RENDERER, new MyImageRendener());\r
++ * </code>\r
++ * </pre>\r
++ */\r
++public class ImageRenderer {\r
++ protected BufferedImage img;\r
++\r
++ /**\r
++ * Load and buffer the image\r
++ *\r
++ * @param data the raw image stream\r
++ * @param contentType the content type\r
++ */\r
++ public void loadImage(InputStream data, String contentType) throws IOException {\r
++ img = convertBufferedImage(ImageIO.read(data));\r
++ }\r
++\r
++ /**\r
++ * Load and buffer the image\r
++ *\r
++ * @param data the raw image stream\r
++ * @param contentType the content type\r
++ */\r
++ public void loadImage(byte data[], String contentType) throws IOException {\r
++ img = convertBufferedImage(ImageIO.read(new ByteArrayInputStream(data)));\r
++ }\r
++\r
++ protected static BufferedImage convertBufferedImage(BufferedImage img) {\r
++ BufferedImage bi = new BufferedImage(img.getWidth(), img.getHeight(), BufferedImage.TYPE_INT_ARGB);\r
++ Graphics g = bi.getGraphics();\r
++ g.drawImage(img, 0, 0, null);\r
++ g.dispose();\r
++ return bi;\r
++ }\r
++ \r
++ \r
++ /**\r
++ * @return the buffered image\r
++ */\r
++ public BufferedImage getImage() {\r
++ return img;\r
++ }\r
++\r
++ /**\r
++ * @return the dimension of the buffered image\r
++ */\r
++ public Dimension getDimension() {\r
++ return (img == null)\r
++ ? new Dimension(0,0)\r
++ : new Dimension(img.getWidth(),img.getHeight());\r
++ }\r
++\r
++ /**\r
++ * @param alpha the alpha [0..1] to be added to the image (possibly already containing an alpha channel)\r
++ */\r
++ public void setAlpha(double alpha) {\r
++ if (img == null) return;\r
++\r
++ Dimension dim = getDimension();\r
++ BufferedImage newImg = new BufferedImage((int)dim.getWidth(), (int)dim.getHeight(), BufferedImage.TYPE_INT_ARGB);\r
++ Graphics2D g = newImg.createGraphics();\r
++ RescaleOp op = new RescaleOp(new float[]{1.0f, 1.0f, 1.0f, (float)alpha}, new float[]{0,0,0,0}, null);\r
++ g.drawImage(img, op, 0, 0);\r
++ g.dispose();\r
++ \r
++ img = newImg;\r
++ }\r
++\r
++\r
++ /**\r
++ * Render picture data into the supplied graphics\r
++ *\r
++ * @return true if the picture data was successfully rendered\r
++ */\r
++ public boolean drawImage(\r
++ Graphics2D graphics,\r
++ Rectangle2D anchor) {\r
++ return drawImage(graphics, anchor, null);\r
++ }\r
++\r
++ /**\r
++ * Render picture data into the supplied graphics\r
++ *\r
++ * @return true if the picture data was successfully rendered\r
++ */\r
++ public boolean drawImage(\r
++ Graphics2D graphics,\r
++ Rectangle2D anchor,\r
++ Insets clip) {\r
++ if (img == null) return false;\r
++\r
++ boolean isClipped = true;\r
++ if (clip == null) {\r
++ isClipped = false;\r
++ clip = new Insets(0,0,0,0);\r
++ }\r
++\r
++ int iw = img.getWidth();\r
++ int ih = img.getHeight();\r
++\r
++ \r
++ double cw = (100000-clip.left-clip.right) / 100000.0;\r
++ double ch = (100000-clip.top-clip.bottom) / 100000.0;\r
++ double sx = anchor.getWidth()/(iw*cw);\r
++ double sy = anchor.getHeight()/(ih*ch);\r
++ double tx = anchor.getX()-(iw*sx*clip.left/100000.0);\r
++ double ty = anchor.getY()-(ih*sy*clip.top/100000.0);\r
++\r
++ AffineTransform at = new AffineTransform(sx, 0, 0, sy, tx, ty) ;\r
++\r
++ Shape clipOld = graphics.getClip();\r
++ if (isClipped) graphics.clip(anchor.getBounds2D());\r
++ graphics.drawRenderedImage(img, at);\r
++ graphics.setClip(clipOld);\r
++\r
++ return true;\r
++ }\r
++}\r
--- /dev/null
--- /dev/null
++/* ====================================================================\r
++ Licensed to the Apache Software Foundation (ASF) under one or more\r
++ contributor license agreements. See the NOTICE file distributed with\r
++ this work for additional information regarding copyright ownership.\r
++ The ASF licenses this file to You under the Apache License, Version 2.0\r
++ (the "License"); you may not use this file except in compliance with\r
++ the License. You may obtain a copy of the License at\r
++\r
++ http://www.apache.org/licenses/LICENSE-2.0\r
++\r
++ Unless required by applicable law or agreed to in writing, software\r
++ distributed under the License is distributed on an "AS IS" BASIS,\r
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ See the License for the specific language governing permissions and\r
++ limitations under the License.\r
++==================================================================== */\r
++\r
++package org.apache.poi.sl.draw;\r
++\r
++import java.awt.*;\r
++import java.awt.MultipleGradientPaint.ColorSpaceType;\r
++import java.awt.MultipleGradientPaint.CycleMethod;\r
++import java.awt.geom.*;\r
++import java.awt.image.*;\r
++\r
++class PathGradientPaint implements Paint {\r
++\r
++ // http://asserttrue.blogspot.de/2010/01/how-to-iimplement-custom-paint-in-50.html\r
++ protected final Color colors[];\r
++ protected final float fractions[];\r
++ protected final int capStyle;\r
++ protected final int joinStyle;\r
++ protected final int transparency;\r
++\r
++ \r
++ public PathGradientPaint(Color colors[], float fractions[]) {\r
++ this(colors,fractions,BasicStroke.CAP_ROUND,BasicStroke.JOIN_ROUND);\r
++ }\r
++ \r
++ public PathGradientPaint(Color colors[], float fractions[], int capStyle, int joinStyle) {\r
++ this.colors = colors;\r
++ this.fractions = fractions;\r
++ this.capStyle = capStyle;\r
++ this.joinStyle = joinStyle;\r
++\r
++ // determine transparency\r
++ boolean opaque = true;\r
++ for (int i = 0; i < colors.length; i++){\r
++ opaque = opaque && (colors[i].getAlpha() == 0xff);\r
++ }\r
++ this.transparency = opaque ? OPAQUE : TRANSLUCENT;\r
++ }\r
++ \r
++ public PaintContext createContext(ColorModel cm,\r
++ Rectangle deviceBounds,\r
++ Rectangle2D userBounds,\r
++ AffineTransform transform,\r
++ RenderingHints hints) {\r
++ return new PathGradientContext(cm, deviceBounds, userBounds, transform, hints);\r
++ }\r
++ \r
++ public int getTransparency() {\r
++ return transparency;\r
++ }\r
++\r
++ class PathGradientContext implements PaintContext {\r
++ protected final Rectangle deviceBounds;\r
++ protected final Rectangle2D userBounds;\r
++ protected final AffineTransform xform;\r
++ protected final RenderingHints hints;\r
++\r
++ /**\r
++ * for POI: the shape will be only known when the subclasses determines the concrete implementation \r
++ * in the draw/-content method, so we need to postpone the setting/creation as long as possible\r
++ **/\r
++ protected final Shape shape;\r
++ protected final PaintContext pCtx;\r
++ protected final int gradientSteps;\r
++ WritableRaster raster;\r
++\r
++ public PathGradientContext(\r
++ ColorModel cm\r
++ , Rectangle deviceBounds\r
++ , Rectangle2D userBounds\r
++ , AffineTransform xform\r
++ , RenderingHints hints\r
++ ) {\r
++ shape = (Shape)hints.get(Drawable.GRADIENT_SHAPE);\r
++ if (shape == null) {\r
++ throw new IllegalPathStateException("PathGradientPaint needs a shape to be set via the rendering hint PathGradientPaint.GRADIANT_SHAPE.");\r
++ }\r
++\r
++ this.deviceBounds = deviceBounds;\r
++ this.userBounds = userBounds;\r
++ this.xform = xform;\r
++ this.hints = hints;\r
++\r
++ gradientSteps = getGradientSteps(shape);\r
++\r
++ Point2D start = new Point2D.Double(0, 0);\r
++ Point2D end = new Point2D.Double(gradientSteps, 0);\r
++ LinearGradientPaint gradientPaint = new LinearGradientPaint(start, end, fractions, colors, CycleMethod.NO_CYCLE, ColorSpaceType.SRGB, new AffineTransform());\r
++ \r
++ Rectangle bounds = new Rectangle(0, 0, gradientSteps, 1);\r
++ pCtx = gradientPaint.createContext(cm, bounds, bounds, new AffineTransform(), hints);\r
++ }\r
++\r
++ public void dispose() {}\r
++\r
++ public ColorModel getColorModel() {\r
++ return pCtx.getColorModel();\r
++ }\r
++\r
++ public Raster getRaster(int xOffset, int yOffset, int w, int h) {\r
++ ColorModel cm = getColorModel();\r
++ if (raster == null) createRaster();\r
++\r
++ // TODO: eventually use caching here\r
++ WritableRaster childRaster = cm.createCompatibleWritableRaster(w, h);\r
++ Rectangle2D childRect = new Rectangle2D.Double(xOffset, yOffset, w, h);\r
++ if (!childRect.intersects(deviceBounds)) {\r
++ // usually doesn't happen ...\r
++ return childRaster;\r
++ }\r
++ \r
++ Rectangle2D destRect = new Rectangle2D.Double();\r
++ Rectangle2D.intersect(childRect, deviceBounds, destRect);\r
++ int dx = (int)(destRect.getX()-deviceBounds.getX());\r
++ int dy = (int)(destRect.getY()-deviceBounds.getY());\r
++ int dw = (int)destRect.getWidth();\r
++ int dh = (int)destRect.getHeight();\r
++ Object data = raster.getDataElements(dx, dy, dw, dh, null);\r
++ dx = (int)(destRect.getX()-childRect.getX());\r
++ dy = (int)(destRect.getY()-childRect.getY());\r
++ childRaster.setDataElements(dx, dy, dw, dh, data);\r
++ \r
++ return childRaster;\r
++ }\r
++\r
++ protected int getGradientSteps(Shape shape) {\r
++ Rectangle rect = shape.getBounds();\r
++ int lower = 1;\r
++ int upper = (int)(Math.max(rect.getWidth(),rect.getHeight())/2.0);\r
++ while (lower < upper-1) {\r
++ int mid = lower + (upper - lower) / 2;\r
++ BasicStroke bs = new BasicStroke(mid, capStyle, joinStyle);\r
++ Area area = new Area(bs.createStrokedShape(shape));\r
++ if (area.isSingular()) {\r
++ upper = mid;\r
++ } else {\r
++ lower = mid;\r
++ }\r
++ }\r
++ return upper;\r
++ }\r
++ \r
++ \r
++ \r
++ protected void createRaster() {\r
++ ColorModel cm = getColorModel();\r
++ raster = cm.createCompatibleWritableRaster((int)deviceBounds.getWidth(), (int)deviceBounds.getHeight());\r
++ BufferedImage img = new BufferedImage(cm, raster, false, null);\r
++ Graphics2D graphics = img.createGraphics();\r
++ graphics.setRenderingHints(hints);\r
++ graphics.translate(-deviceBounds.getX(), -deviceBounds.getY());\r
++ graphics.transform(xform);\r
++\r
++ Raster img2 = pCtx.getRaster(0, 0, gradientSteps, 1);\r
++ int rgb[] = new int[cm.getNumComponents()];\r
++\r
++ for (int i = gradientSteps-1; i>=0; i--) {\r
++ img2.getPixel(i, 0, rgb);\r
++ Color c = new Color(rgb[0],rgb[1],rgb[2]);\r
++ if (rgb.length == 4) {\r
++ // it doesn't work to use just a color with transparency ...\r
++ graphics.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC, rgb[3]/255.0f)); \r
++ }\r
++ graphics.setStroke(new BasicStroke(i+1, capStyle, joinStyle));\r
++ graphics.setColor(c);\r
++ graphics.draw(shape);\r
++ }\r
++ \r
++ graphics.dispose();\r
++ }\r
++ }\r
++}\r
--- /dev/null
--- /dev/null
++/* ====================================================================\r
++ Licensed to the Apache Software Foundation (ASF) under one or more\r
++ contributor license agreements. See the NOTICE file distributed with\r
++ this work for additional information regarding copyright ownership.\r
++ The ASF licenses this file to You under the Apache License, Version 2.0\r
++ (the "License"); you may not use this file except in compliance with\r
++ the License. You may obtain a copy of the License at\r
++\r
++ http://www.apache.org/licenses/LICENSE-2.0\r
++\r
++ Unless required by applicable law or agreed to in writing, software\r
++ distributed under the License is distributed on an "AS IS" BASIS,\r
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ See the License for the specific language governing permissions and\r
++ limitations under the License.\r
++==================================================================== */\r
++\r
++package org.apache.poi.sl.draw.binding;\r
++\r
++import javax.xml.bind.annotation.XmlAccessType;\r
++import javax.xml.bind.annotation.XmlAccessorType;\r
++import javax.xml.bind.annotation.XmlAttribute;\r
++import javax.xml.bind.annotation.XmlType;\r
++\r
++\r
++/**\r
++ * <p>Java class for CT_AdjPoint2D complex type.\r
++ * \r
++ * <p>The following schema fragment specifies the expected content contained within this class.\r
++ * \r
++ * <pre>\r
++ * <complexType name="CT_AdjPoint2D">\r
++ * <complexContent>\r
++ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ * <attribute name="x" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_AdjCoordinate" />\r
++ * <attribute name="y" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_AdjCoordinate" />\r
++ * </restriction>\r
++ * </complexContent>\r
++ * </complexType>\r
++ * </pre>\r
++ * \r
++ * \r
++ */\r
++@XmlAccessorType(XmlAccessType.FIELD)\r
++@XmlType(name = "CT_AdjPoint2D", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")\r
++public class CTAdjPoint2D {\r
++\r
++ @XmlAttribute(name = "x", required = true)\r
++ protected String x;\r
++ @XmlAttribute(name = "y", required = true)\r
++ protected String y;\r
++\r
++ /**\r
++ * Gets the value of the x property.\r
++ * \r
++ * @return\r
++ * possible object is\r
++ * {@link String }\r
++ * \r
++ */\r
++ public String getX() {\r
++ return x;\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the x property.\r
++ * \r
++ * @param value\r
++ * allowed object is\r
++ * {@link String }\r
++ * \r
++ */\r
++ public void setX(String value) {\r
++ this.x = value;\r
++ }\r
++\r
++ public boolean isSetX() {\r
++ return (this.x!= null);\r
++ }\r
++\r
++ /**\r
++ * Gets the value of the y property.\r
++ * \r
++ * @return\r
++ * possible object is\r
++ * {@link String }\r
++ * \r
++ */\r
++ public String getY() {\r
++ return y;\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the y property.\r
++ * \r
++ * @param value\r
++ * allowed object is\r
++ * {@link String }\r
++ * \r
++ */\r
++ public void setY(String value) {\r
++ this.y = value;\r
++ }\r
++\r
++ public boolean isSetY() {\r
++ return (this.y!= null);\r
++ }\r
++\r
++}\r
--- /dev/null
--- /dev/null
++/* ====================================================================\r
++ Licensed to the Apache Software Foundation (ASF) under one or more\r
++ contributor license agreements. See the NOTICE file distributed with\r
++ this work for additional information regarding copyright ownership.\r
++ The ASF licenses this file to You under the Apache License, Version 2.0\r
++ (the "License"); you may not use this file except in compliance with\r
++ the License. You may obtain a copy of the License at\r
++\r
++ http://www.apache.org/licenses/LICENSE-2.0\r
++\r
++ Unless required by applicable law or agreed to in writing, software\r
++ distributed under the License is distributed on an "AS IS" BASIS,\r
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ See the License for the specific language governing permissions and\r
++ limitations under the License.\r
++==================================================================== */\r
++\r
++package org.apache.poi.sl.draw.binding;\r
++\r
++import java.util.ArrayList;\r
++import java.util.List;\r
++import javax.xml.bind.annotation.XmlAccessType;\r
++import javax.xml.bind.annotation.XmlAccessorType;\r
++import javax.xml.bind.annotation.XmlElement;\r
++import javax.xml.bind.annotation.XmlElements;\r
++import javax.xml.bind.annotation.XmlType;\r
++\r
++\r
++/**\r
++ * <p>Java class for CT_AdjustHandleList complex type.\r
++ * \r
++ * <p>The following schema fragment specifies the expected content contained within this class.\r
++ * \r
++ * <pre>\r
++ * <complexType name="CT_AdjustHandleList">\r
++ * <complexContent>\r
++ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ * <choice maxOccurs="unbounded" minOccurs="0">\r
++ * <element name="ahXY" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_XYAdjustHandle"/>\r
++ * <element name="ahPolar" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_PolarAdjustHandle"/>\r
++ * </choice>\r
++ * </restriction>\r
++ * </complexContent>\r
++ * </complexType>\r
++ * </pre>\r
++ * \r
++ * \r
++ */\r
++@XmlAccessorType(XmlAccessType.FIELD)\r
++@XmlType(name = "CT_AdjustHandleList", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", propOrder = {\r
++ "ahXYOrAhPolar"\r
++})\r
++public class CTAdjustHandleList {\r
++\r
++ @XmlElements({\r
++ @XmlElement(name = "ahXY", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = CTXYAdjustHandle.class),\r
++ @XmlElement(name = "ahPolar", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = CTPolarAdjustHandle.class)\r
++ })\r
++ protected List<Object> ahXYOrAhPolar;\r
++\r
++ /**\r
++ * Gets the value of the ahXYOrAhPolar property.\r
++ * \r
++ * <p>\r
++ * This accessor method returns a reference to the live list,\r
++ * not a snapshot. Therefore any modification you make to the\r
++ * returned list will be present inside the JAXB object.\r
++ * This is why there is not a <CODE>set</CODE> method for the ahXYOrAhPolar property.\r
++ * \r
++ * <p>\r
++ * For example, to add a new item, do as follows:\r
++ * <pre>\r
++ * getAhXYOrAhPolar().add(newItem);\r
++ * </pre>\r
++ * \r
++ * \r
++ * <p>\r
++ * Objects of the following type(s) are allowed in the list\r
++ * {@link CTXYAdjustHandle }\r
++ * {@link CTPolarAdjustHandle }\r
++ * \r
++ * \r
++ */\r
++ public List<Object> getAhXYOrAhPolar() {\r
++ if (ahXYOrAhPolar == null) {\r
++ ahXYOrAhPolar = new ArrayList<Object>();\r
++ }\r
++ return this.ahXYOrAhPolar;\r
++ }\r
++\r
++ public boolean isSetAhXYOrAhPolar() {\r
++ return ((this.ahXYOrAhPolar!= null)&&(!this.ahXYOrAhPolar.isEmpty()));\r
++ }\r
++\r
++ public void unsetAhXYOrAhPolar() {\r
++ this.ahXYOrAhPolar = null;\r
++ }\r
++\r
++}\r
--- /dev/null
--- /dev/null
++/* ====================================================================\r
++ Licensed to the Apache Software Foundation (ASF) under one or more\r
++ contributor license agreements. See the NOTICE file distributed with\r
++ this work for additional information regarding copyright ownership.\r
++ The ASF licenses this file to You under the Apache License, Version 2.0\r
++ (the "License"); you may not use this file except in compliance with\r
++ the License. You may obtain a copy of the License at\r
++\r
++ http://www.apache.org/licenses/LICENSE-2.0\r
++\r
++ Unless required by applicable law or agreed to in writing, software\r
++ distributed under the License is distributed on an "AS IS" BASIS,\r
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ See the License for the specific language governing permissions and\r
++ limitations under the License.\r
++==================================================================== */\r
++\r
++package org.apache.poi.sl.draw.binding;\r
++\r
++import javax.xml.bind.annotation.XmlAccessType;\r
++import javax.xml.bind.annotation.XmlAccessorType;\r
++import javax.xml.bind.annotation.XmlAttribute;\r
++import javax.xml.bind.annotation.XmlType;\r
++\r
++\r
++/**\r
++ * <p>Java class for CT_Angle complex type.\r
++ * \r
++ * <p>The following schema fragment specifies the expected content contained within this class.\r
++ * \r
++ * <pre>\r
++ * <complexType name="CT_Angle">\r
++ * <complexContent>\r
++ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ * <attribute name="val" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_Angle" />\r
++ * </restriction>\r
++ * </complexContent>\r
++ * </complexType>\r
++ * </pre>\r
++ * \r
++ * \r
++ */\r
++@XmlAccessorType(XmlAccessType.FIELD)\r
++@XmlType(name = "CT_Angle", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")\r
++public class CTAngle {\r
++\r
++ @XmlAttribute(name = "val", required = true)\r
++ protected int val;\r
++\r
++ /**\r
++ * Gets the value of the val property.\r
++ * \r
++ */\r
++ public int getVal() {\r
++ return val;\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the val property.\r
++ * \r
++ */\r
++ public void setVal(int value) {\r
++ this.val = value;\r
++ }\r
++\r
++ public boolean isSetVal() {\r
++ return true;\r
++ }\r
++\r
++}\r
--- /dev/null
--- /dev/null
++/* ====================================================================\r
++ Licensed to the Apache Software Foundation (ASF) under one or more\r
++ contributor license agreements. See the NOTICE file distributed with\r
++ this work for additional information regarding copyright ownership.\r
++ The ASF licenses this file to You under the Apache License, Version 2.0\r
++ (the "License"); you may not use this file except in compliance with\r
++ the License. You may obtain a copy of the License at\r
++\r
++ http://www.apache.org/licenses/LICENSE-2.0\r
++\r
++ Unless required by applicable law or agreed to in writing, software\r
++ distributed under the License is distributed on an "AS IS" BASIS,\r
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ See the License for the specific language governing permissions and\r
++ limitations under the License.\r
++==================================================================== */\r
++\r
++package org.apache.poi.sl.draw.binding;\r
++\r
++import javax.xml.bind.annotation.XmlAccessType;\r
++import javax.xml.bind.annotation.XmlAccessorType;\r
++import javax.xml.bind.annotation.XmlElement;\r
++import javax.xml.bind.annotation.XmlType;\r
++\r
++\r
++/**\r
++ * <p>Java class for CT_Color complex type.\r
++ * \r
++ * <p>The following schema fragment specifies the expected content contained within this class.\r
++ * \r
++ * <pre>\r
++ * <complexType name="CT_Color">\r
++ * <complexContent>\r
++ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ * <sequence>\r
++ * <group ref="{http://schemas.openxmlformats.org/drawingml/2006/main}EG_ColorChoice"/>\r
++ * </sequence>\r
++ * </restriction>\r
++ * </complexContent>\r
++ * </complexType>\r
++ * </pre>\r
++ * \r
++ * \r
++ */\r
++@XmlAccessorType(XmlAccessType.FIELD)\r
++@XmlType(name = "CT_Color", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", propOrder = {\r
++ "scrgbClr",\r
++ "srgbClr",\r
++ "hslClr",\r
++ "sysClr",\r
++ "schemeClr",\r
++ "prstClr"\r
++})\r
++public class CTColor {\r
++\r
++ @XmlElement(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")\r
++ protected CTScRgbColor scrgbClr;\r
++ @XmlElement(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")\r
++ protected CTSRgbColor srgbClr;\r
++ @XmlElement(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")\r
++ protected CTHslColor hslClr;\r
++ @XmlElement(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")\r
++ protected CTSystemColor sysClr;\r
++ @XmlElement(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")\r
++ protected CTSchemeColor schemeClr;\r
++ @XmlElement(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")\r
++ protected CTPresetColor prstClr;\r
++\r
++ /**\r
++ * Gets the value of the scrgbClr property.\r
++ * \r
++ * @return\r
++ * possible object is\r
++ * {@link CTScRgbColor }\r
++ * \r
++ */\r
++ public CTScRgbColor getScrgbClr() {\r
++ return scrgbClr;\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the scrgbClr property.\r
++ * \r
++ * @param value\r
++ * allowed object is\r
++ * {@link CTScRgbColor }\r
++ * \r
++ */\r
++ public void setScrgbClr(CTScRgbColor value) {\r
++ this.scrgbClr = value;\r
++ }\r
++\r
++ public boolean isSetScrgbClr() {\r
++ return (this.scrgbClr!= null);\r
++ }\r
++\r
++ /**\r
++ * Gets the value of the srgbClr property.\r
++ * \r
++ * @return\r
++ * possible object is\r
++ * {@link CTSRgbColor }\r
++ * \r
++ */\r
++ public CTSRgbColor getSrgbClr() {\r
++ return srgbClr;\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the srgbClr property.\r
++ * \r
++ * @param value\r
++ * allowed object is\r
++ * {@link CTSRgbColor }\r
++ * \r
++ */\r
++ public void setSrgbClr(CTSRgbColor value) {\r
++ this.srgbClr = value;\r
++ }\r
++\r
++ public boolean isSetSrgbClr() {\r
++ return (this.srgbClr!= null);\r
++ }\r
++\r
++ /**\r
++ * Gets the value of the hslClr property.\r
++ * \r
++ * @return\r
++ * possible object is\r
++ * {@link CTHslColor }\r
++ * \r
++ */\r
++ public CTHslColor getHslClr() {\r
++ return hslClr;\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the hslClr property.\r
++ * \r
++ * @param value\r
++ * allowed object is\r
++ * {@link CTHslColor }\r
++ * \r
++ */\r
++ public void setHslClr(CTHslColor value) {\r
++ this.hslClr = value;\r
++ }\r
++\r
++ public boolean isSetHslClr() {\r
++ return (this.hslClr!= null);\r
++ }\r
++\r
++ /**\r
++ * Gets the value of the sysClr property.\r
++ * \r
++ * @return\r
++ * possible object is\r
++ * {@link CTSystemColor }\r
++ * \r
++ */\r
++ public CTSystemColor getSysClr() {\r
++ return sysClr;\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the sysClr property.\r
++ * \r
++ * @param value\r
++ * allowed object is\r
++ * {@link CTSystemColor }\r
++ * \r
++ */\r
++ public void setSysClr(CTSystemColor value) {\r
++ this.sysClr = value;\r
++ }\r
++\r
++ public boolean isSetSysClr() {\r
++ return (this.sysClr!= null);\r
++ }\r
++\r
++ /**\r
++ * Gets the value of the schemeClr property.\r
++ * \r
++ * @return\r
++ * possible object is\r
++ * {@link CTSchemeColor }\r
++ * \r
++ */\r
++ public CTSchemeColor getSchemeClr() {\r
++ return schemeClr;\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the schemeClr property.\r
++ * \r
++ * @param value\r
++ * allowed object is\r
++ * {@link CTSchemeColor }\r
++ * \r
++ */\r
++ public void setSchemeClr(CTSchemeColor value) {\r
++ this.schemeClr = value;\r
++ }\r
++\r
++ public boolean isSetSchemeClr() {\r
++ return (this.schemeClr!= null);\r
++ }\r
++\r
++ /**\r
++ * Gets the value of the prstClr property.\r
++ * \r
++ * @return\r
++ * possible object is\r
++ * {@link CTPresetColor }\r
++ * \r
++ */\r
++ public CTPresetColor getPrstClr() {\r
++ return prstClr;\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the prstClr property.\r
++ * \r
++ * @param value\r
++ * allowed object is\r
++ * {@link CTPresetColor }\r
++ * \r
++ */\r
++ public void setPrstClr(CTPresetColor value) {\r
++ this.prstClr = value;\r
++ }\r
++\r
++ public boolean isSetPrstClr() {\r
++ return (this.prstClr!= null);\r
++ }\r
++\r
++}\r
--- /dev/null
--- /dev/null
++/* ====================================================================\r
++ Licensed to the Apache Software Foundation (ASF) under one or more\r
++ contributor license agreements. See the NOTICE file distributed with\r
++ this work for additional information regarding copyright ownership.\r
++ The ASF licenses this file to You under the Apache License, Version 2.0\r
++ (the "License"); you may not use this file except in compliance with\r
++ the License. You may obtain a copy of the License at\r
++\r
++ http://www.apache.org/licenses/LICENSE-2.0\r
++\r
++ Unless required by applicable law or agreed to in writing, software\r
++ distributed under the License is distributed on an "AS IS" BASIS,\r
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ See the License for the specific language governing permissions and\r
++ limitations under the License.\r
++==================================================================== */\r
++\r
++package org.apache.poi.sl.draw.binding;\r
++\r
++import java.util.ArrayList;\r
++import java.util.List;\r
++import javax.xml.bind.annotation.XmlAccessType;\r
++import javax.xml.bind.annotation.XmlAccessorType;\r
++import javax.xml.bind.annotation.XmlElement;\r
++import javax.xml.bind.annotation.XmlElements;\r
++import javax.xml.bind.annotation.XmlType;\r
++\r
++\r
++/**\r
++ * <p>Java class for CT_ColorMRU complex type.\r
++ * \r
++ * <p>The following schema fragment specifies the expected content contained within this class.\r
++ * \r
++ * <pre>\r
++ * <complexType name="CT_ColorMRU">\r
++ * <complexContent>\r
++ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ * <sequence>\r
++ * <group ref="{http://schemas.openxmlformats.org/drawingml/2006/main}EG_ColorChoice" maxOccurs="10" minOccurs="0"/>\r
++ * </sequence>\r
++ * </restriction>\r
++ * </complexContent>\r
++ * </complexType>\r
++ * </pre>\r
++ * \r
++ * \r
++ */\r
++@XmlAccessorType(XmlAccessType.FIELD)\r
++@XmlType(name = "CT_ColorMRU", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", propOrder = {\r
++ "egColorChoice"\r
++})\r
++public class CTColorMRU {\r
++\r
++ @XmlElements({\r
++ @XmlElement(name = "scrgbClr", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = CTScRgbColor.class),\r
++ @XmlElement(name = "srgbClr", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = CTSRgbColor.class),\r
++ @XmlElement(name = "hslClr", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = CTHslColor.class),\r
++ @XmlElement(name = "sysClr", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = CTSystemColor.class),\r
++ @XmlElement(name = "schemeClr", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = CTSchemeColor.class),\r
++ @XmlElement(name = "prstClr", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = CTPresetColor.class)\r
++ })\r
++ protected List<Object> egColorChoice;\r
++\r
++ /**\r
++ * Gets the value of the egColorChoice property.\r
++ * \r
++ * <p>\r
++ * This accessor method returns a reference to the live list,\r
++ * not a snapshot. Therefore any modification you make to the\r
++ * returned list will be present inside the JAXB object.\r
++ * This is why there is not a <CODE>set</CODE> method for the egColorChoice property.\r
++ * \r
++ * <p>\r
++ * For example, to add a new item, do as follows:\r
++ * <pre>\r
++ * getEGColorChoice().add(newItem);\r
++ * </pre>\r
++ * \r
++ * \r
++ * <p>\r
++ * Objects of the following type(s) are allowed in the list\r
++ * {@link CTScRgbColor }\r
++ * {@link CTSRgbColor }\r
++ * {@link CTHslColor }\r
++ * {@link CTSystemColor }\r
++ * {@link CTSchemeColor }\r
++ * {@link CTPresetColor }\r
++ * \r
++ * \r
++ */\r
++ public List<Object> getEGColorChoice() {\r
++ if (egColorChoice == null) {\r
++ egColorChoice = new ArrayList<Object>();\r
++ }\r
++ return this.egColorChoice;\r
++ }\r
++\r
++ public boolean isSetEGColorChoice() {\r
++ return ((this.egColorChoice!= null)&&(!this.egColorChoice.isEmpty()));\r
++ }\r
++\r
++ public void unsetEGColorChoice() {\r
++ this.egColorChoice = null;\r
++ }\r
++\r
++}\r
--- /dev/null
--- /dev/null
++/* ====================================================================\r
++ Licensed to the Apache Software Foundation (ASF) under one or more\r
++ contributor license agreements. See the NOTICE file distributed with\r
++ this work for additional information regarding copyright ownership.\r
++ The ASF licenses this file to You under the Apache License, Version 2.0\r
++ (the "License"); you may not use this file except in compliance with\r
++ the License. You may obtain a copy of the License at\r
++\r
++ http://www.apache.org/licenses/LICENSE-2.0\r
++\r
++ Unless required by applicable law or agreed to in writing, software\r
++ distributed under the License is distributed on an "AS IS" BASIS,\r
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ See the License for the specific language governing permissions and\r
++ limitations under the License.\r
++==================================================================== */\r
++\r
++package org.apache.poi.sl.draw.binding;\r
++\r
++import javax.xml.bind.annotation.XmlAccessType;\r
++import javax.xml.bind.annotation.XmlAccessorType;\r
++import javax.xml.bind.annotation.XmlType;\r
++\r
++\r
++/**\r
++ * <p>Java class for CT_ComplementTransform complex type.\r
++ * \r
++ * <p>The following schema fragment specifies the expected content contained within this class.\r
++ * \r
++ * <pre>\r
++ * <complexType name="CT_ComplementTransform">\r
++ * <complexContent>\r
++ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ * </restriction>\r
++ * </complexContent>\r
++ * </complexType>\r
++ * </pre>\r
++ * \r
++ * \r
++ */\r
++@XmlAccessorType(XmlAccessType.FIELD)\r
++@XmlType(name = "CT_ComplementTransform", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")\r
++public class CTComplementTransform {\r
++\r
++\r
++}\r
--- /dev/null
--- /dev/null
++/* ====================================================================\r
++ Licensed to the Apache Software Foundation (ASF) under one or more\r
++ contributor license agreements. See the NOTICE file distributed with\r
++ this work for additional information regarding copyright ownership.\r
++ The ASF licenses this file to You under the Apache License, Version 2.0\r
++ (the "License"); you may not use this file except in compliance with\r
++ the License. You may obtain a copy of the License at\r
++\r
++ http://www.apache.org/licenses/LICENSE-2.0\r
++\r
++ Unless required by applicable law or agreed to in writing, software\r
++ distributed under the License is distributed on an "AS IS" BASIS,\r
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ See the License for the specific language governing permissions and\r
++ limitations under the License.\r
++==================================================================== */\r
++\r
++package org.apache.poi.sl.draw.binding;\r
++\r
++import javax.xml.bind.annotation.XmlAccessType;\r
++import javax.xml.bind.annotation.XmlAccessorType;\r
++import javax.xml.bind.annotation.XmlAttribute;\r
++import javax.xml.bind.annotation.XmlSchemaType;\r
++import javax.xml.bind.annotation.XmlType;\r
++\r
++\r
++/**\r
++ * <p>Java class for CT_Connection complex type.\r
++ * \r
++ * <p>The following schema fragment specifies the expected content contained within this class.\r
++ * \r
++ * <pre>\r
++ * <complexType name="CT_Connection">\r
++ * <complexContent>\r
++ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ * <attribute name="id" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_DrawingElementId" />\r
++ * <attribute name="idx" use="required" type="{http://www.w3.org/2001/XMLSchema}unsignedInt" />\r
++ * </restriction>\r
++ * </complexContent>\r
++ * </complexType>\r
++ * </pre>\r
++ * \r
++ * \r
++ */\r
++@XmlAccessorType(XmlAccessType.FIELD)\r
++@XmlType(name = "CT_Connection", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")\r
++public class CTConnection {\r
++\r
++ @XmlAttribute(name = "id", required = true)\r
++ protected long id;\r
++ @XmlAttribute(name = "idx", required = true)\r
++ @XmlSchemaType(name = "unsignedInt")\r
++ protected long idx;\r
++\r
++ /**\r
++ * Gets the value of the id property.\r
++ * \r
++ */\r
++ public long getId() {\r
++ return id;\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the id property.\r
++ * \r
++ */\r
++ public void setId(long value) {\r
++ this.id = value;\r
++ }\r
++\r
++ public boolean isSetId() {\r
++ return true;\r
++ }\r
++\r
++ /**\r
++ * Gets the value of the idx property.\r
++ * \r
++ */\r
++ public long getIdx() {\r
++ return idx;\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the idx property.\r
++ * \r
++ */\r
++ public void setIdx(long value) {\r
++ this.idx = value;\r
++ }\r
++\r
++ public boolean isSetIdx() {\r
++ return true;\r
++ }\r
++\r
++}\r
--- /dev/null
--- /dev/null
++/* ====================================================================\r
++ Licensed to the Apache Software Foundation (ASF) under one or more\r
++ contributor license agreements. See the NOTICE file distributed with\r
++ this work for additional information regarding copyright ownership.\r
++ The ASF licenses this file to You under the Apache License, Version 2.0\r
++ (the "License"); you may not use this file except in compliance with\r
++ the License. You may obtain a copy of the License at\r
++\r
++ http://www.apache.org/licenses/LICENSE-2.0\r
++\r
++ Unless required by applicable law or agreed to in writing, software\r
++ distributed under the License is distributed on an "AS IS" BASIS,\r
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ See the License for the specific language governing permissions and\r
++ limitations under the License.\r
++==================================================================== */\r
++\r
++package org.apache.poi.sl.draw.binding;\r
++\r
++import javax.xml.bind.annotation.XmlAccessType;\r
++import javax.xml.bind.annotation.XmlAccessorType;\r
++import javax.xml.bind.annotation.XmlAttribute;\r
++import javax.xml.bind.annotation.XmlElement;\r
++import javax.xml.bind.annotation.XmlType;\r
++\r
++\r
++/**\r
++ * <p>Java class for CT_ConnectionSite complex type.\r
++ * \r
++ * <p>The following schema fragment specifies the expected content contained within this class.\r
++ * \r
++ * <pre>\r
++ * <complexType name="CT_ConnectionSite">\r
++ * <complexContent>\r
++ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ * <sequence>\r
++ * <element name="pos" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_AdjPoint2D"/>\r
++ * </sequence>\r
++ * <attribute name="ang" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_AdjAngle" />\r
++ * </restriction>\r
++ * </complexContent>\r
++ * </complexType>\r
++ * </pre>\r
++ * \r
++ * \r
++ */\r
++@XmlAccessorType(XmlAccessType.FIELD)\r
++@XmlType(name = "CT_ConnectionSite", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", propOrder = {\r
++ "pos"\r
++})\r
++public class CTConnectionSite {\r
++\r
++ @XmlElement(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", required = true)\r
++ protected CTAdjPoint2D pos;\r
++ @XmlAttribute(name = "ang", required = true)\r
++ protected String ang;\r
++\r
++ /**\r
++ * Gets the value of the pos property.\r
++ * \r
++ * @return\r
++ * possible object is\r
++ * {@link CTAdjPoint2D }\r
++ * \r
++ */\r
++ public CTAdjPoint2D getPos() {\r
++ return pos;\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the pos property.\r
++ * \r
++ * @param value\r
++ * allowed object is\r
++ * {@link CTAdjPoint2D }\r
++ * \r
++ */\r
++ public void setPos(CTAdjPoint2D value) {\r
++ this.pos = value;\r
++ }\r
++\r
++ public boolean isSetPos() {\r
++ return (this.pos!= null);\r
++ }\r
++\r
++ /**\r
++ * Gets the value of the ang property.\r
++ * \r
++ * @return\r
++ * possible object is\r
++ * {@link String }\r
++ * \r
++ */\r
++ public String getAng() {\r
++ return ang;\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the ang property.\r
++ * \r
++ * @param value\r
++ * allowed object is\r
++ * {@link String }\r
++ * \r
++ */\r
++ public void setAng(String value) {\r
++ this.ang = value;\r
++ }\r
++\r
++ public boolean isSetAng() {\r
++ return (this.ang!= null);\r
++ }\r
++\r
++}\r
--- /dev/null
--- /dev/null
++/* ====================================================================\r
++ Licensed to the Apache Software Foundation (ASF) under one or more\r
++ contributor license agreements. See the NOTICE file distributed with\r
++ this work for additional information regarding copyright ownership.\r
++ The ASF licenses this file to You under the Apache License, Version 2.0\r
++ (the "License"); you may not use this file except in compliance with\r
++ the License. You may obtain a copy of the License at\r
++\r
++ http://www.apache.org/licenses/LICENSE-2.0\r
++\r
++ Unless required by applicable law or agreed to in writing, software\r
++ distributed under the License is distributed on an "AS IS" BASIS,\r
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ See the License for the specific language governing permissions and\r
++ limitations under the License.\r
++==================================================================== */\r
++\r
++package org.apache.poi.sl.draw.binding;\r
++\r
++import java.util.ArrayList;\r
++import java.util.List;\r
++import javax.xml.bind.annotation.XmlAccessType;\r
++import javax.xml.bind.annotation.XmlAccessorType;\r
++import javax.xml.bind.annotation.XmlElement;\r
++import javax.xml.bind.annotation.XmlType;\r
++\r
++\r
++/**\r
++ * <p>Java class for CT_ConnectionSiteList complex type.\r
++ * \r
++ * <p>The following schema fragment specifies the expected content contained within this class.\r
++ * \r
++ * <pre>\r
++ * <complexType name="CT_ConnectionSiteList">\r
++ * <complexContent>\r
++ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ * <sequence>\r
++ * <element name="cxn" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_ConnectionSite" maxOccurs="unbounded" minOccurs="0"/>\r
++ * </sequence>\r
++ * </restriction>\r
++ * </complexContent>\r
++ * </complexType>\r
++ * </pre>\r
++ * \r
++ * \r
++ */\r
++@XmlAccessorType(XmlAccessType.FIELD)\r
++@XmlType(name = "CT_ConnectionSiteList", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", propOrder = {\r
++ "cxn"\r
++})\r
++public class CTConnectionSiteList {\r
++\r
++ @XmlElement(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")\r
++ protected List<CTConnectionSite> cxn;\r
++\r
++ /**\r
++ * Gets the value of the cxn property.\r
++ * \r
++ * <p>\r
++ * This accessor method returns a reference to the live list,\r
++ * not a snapshot. Therefore any modification you make to the\r
++ * returned list will be present inside the JAXB object.\r
++ * This is why there is not a <CODE>set</CODE> method for the cxn property.\r
++ * \r
++ * <p>\r
++ * For example, to add a new item, do as follows:\r
++ * <pre>\r
++ * getCxn().add(newItem);\r
++ * </pre>\r
++ * \r
++ * \r
++ * <p>\r
++ * Objects of the following type(s) are allowed in the list\r
++ * {@link CTConnectionSite }\r
++ * \r
++ * \r
++ */\r
++ public List<CTConnectionSite> getCxn() {\r
++ if (cxn == null) {\r
++ cxn = new ArrayList<CTConnectionSite>();\r
++ }\r
++ return this.cxn;\r
++ }\r
++\r
++ public boolean isSetCxn() {\r
++ return ((this.cxn!= null)&&(!this.cxn.isEmpty()));\r
++ }\r
++\r
++ public void unsetCxn() {\r
++ this.cxn = null;\r
++ }\r
++\r
++}\r
--- /dev/null
--- /dev/null
++/* ====================================================================\r
++ Licensed to the Apache Software Foundation (ASF) under one or more\r
++ contributor license agreements. See the NOTICE file distributed with\r
++ this work for additional information regarding copyright ownership.\r
++ The ASF licenses this file to You under the Apache License, Version 2.0\r
++ (the "License"); you may not use this file except in compliance with\r
++ the License. You may obtain a copy of the License at\r
++\r
++ http://www.apache.org/licenses/LICENSE-2.0\r
++\r
++ Unless required by applicable law or agreed to in writing, software\r
++ distributed under the License is distributed on an "AS IS" BASIS,\r
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ See the License for the specific language governing permissions and\r
++ limitations under the License.\r
++==================================================================== */\r
++\r
++package org.apache.poi.sl.draw.binding;\r
++\r
++import javax.xml.bind.annotation.XmlAccessType;\r
++import javax.xml.bind.annotation.XmlAccessorType;\r
++import javax.xml.bind.annotation.XmlElement;\r
++import javax.xml.bind.annotation.XmlType;\r
++\r
++\r
++/**\r
++ * <p>Java class for CT_CustomGeometry2D complex type.\r
++ * \r
++ * <p>The following schema fragment specifies the expected content contained within this class.\r
++ * \r
++ * <pre>\r
++ * <complexType name="CT_CustomGeometry2D">\r
++ * <complexContent>\r
++ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ * <sequence>\r
++ * <element name="avLst" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_GeomGuideList" minOccurs="0"/>\r
++ * <element name="gdLst" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_GeomGuideList" minOccurs="0"/>\r
++ * <element name="ahLst" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_AdjustHandleList" minOccurs="0"/>\r
++ * <element name="cxnLst" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_ConnectionSiteList" minOccurs="0"/>\r
++ * <element name="rect" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_GeomRect" minOccurs="0"/>\r
++ * <element name="pathLst" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_Path2DList"/>\r
++ * </sequence>\r
++ * </restriction>\r
++ * </complexContent>\r
++ * </complexType>\r
++ * </pre>\r
++ * \r
++ * \r
++ */\r
++@XmlAccessorType(XmlAccessType.FIELD)\r
++@XmlType(name = "CT_CustomGeometry2D", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", propOrder = {\r
++ "avLst",\r
++ "gdLst",\r
++ "ahLst",\r
++ "cxnLst",\r
++ "rect",\r
++ "pathLst"\r
++})\r
++public class CTCustomGeometry2D {\r
++\r
++ @XmlElement(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")\r
++ protected CTGeomGuideList avLst;\r
++ @XmlElement(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")\r
++ protected CTGeomGuideList gdLst;\r
++ @XmlElement(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")\r
++ protected CTAdjustHandleList ahLst;\r
++ @XmlElement(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")\r
++ protected CTConnectionSiteList cxnLst;\r
++ @XmlElement(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")\r
++ protected CTGeomRect rect;\r
++ @XmlElement(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", required = true)\r
++ protected CTPath2DList pathLst;\r
++\r
++ /**\r
++ * Gets the value of the avLst property.\r
++ * \r
++ * @return\r
++ * possible object is\r
++ * {@link CTGeomGuideList }\r
++ * \r
++ */\r
++ public CTGeomGuideList getAvLst() {\r
++ return avLst;\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the avLst property.\r
++ * \r
++ * @param value\r
++ * allowed object is\r
++ * {@link CTGeomGuideList }\r
++ * \r
++ */\r
++ public void setAvLst(CTGeomGuideList value) {\r
++ this.avLst = value;\r
++ }\r
++\r
++ public boolean isSetAvLst() {\r
++ return (this.avLst!= null);\r
++ }\r
++\r
++ /**\r
++ * Gets the value of the gdLst property.\r
++ * \r
++ * @return\r
++ * possible object is\r
++ * {@link CTGeomGuideList }\r
++ * \r
++ */\r
++ public CTGeomGuideList getGdLst() {\r
++ return gdLst;\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the gdLst property.\r
++ * \r
++ * @param value\r
++ * allowed object is\r
++ * {@link CTGeomGuideList }\r
++ * \r
++ */\r
++ public void setGdLst(CTGeomGuideList value) {\r
++ this.gdLst = value;\r
++ }\r
++\r
++ public boolean isSetGdLst() {\r
++ return (this.gdLst!= null);\r
++ }\r
++\r
++ /**\r
++ * Gets the value of the ahLst property.\r
++ * \r
++ * @return\r
++ * possible object is\r
++ * {@link CTAdjustHandleList }\r
++ * \r
++ */\r
++ public CTAdjustHandleList getAhLst() {\r
++ return ahLst;\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the ahLst property.\r
++ * \r
++ * @param value\r
++ * allowed object is\r
++ * {@link CTAdjustHandleList }\r
++ * \r
++ */\r
++ public void setAhLst(CTAdjustHandleList value) {\r
++ this.ahLst = value;\r
++ }\r
++\r
++ public boolean isSetAhLst() {\r
++ return (this.ahLst!= null);\r
++ }\r
++\r
++ /**\r
++ * Gets the value of the cxnLst property.\r
++ * \r
++ * @return\r
++ * possible object is\r
++ * {@link CTConnectionSiteList }\r
++ * \r
++ */\r
++ public CTConnectionSiteList getCxnLst() {\r
++ return cxnLst;\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the cxnLst property.\r
++ * \r
++ * @param value\r
++ * allowed object is\r
++ * {@link CTConnectionSiteList }\r
++ * \r
++ */\r
++ public void setCxnLst(CTConnectionSiteList value) {\r
++ this.cxnLst = value;\r
++ }\r
++\r
++ public boolean isSetCxnLst() {\r
++ return (this.cxnLst!= null);\r
++ }\r
++\r
++ /**\r
++ * Gets the value of the rect property.\r
++ * \r
++ * @return\r
++ * possible object is\r
++ * {@link CTGeomRect }\r
++ * \r
++ */\r
++ public CTGeomRect getRect() {\r
++ return rect;\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the rect property.\r
++ * \r
++ * @param value\r
++ * allowed object is\r
++ * {@link CTGeomRect }\r
++ * \r
++ */\r
++ public void setRect(CTGeomRect value) {\r
++ this.rect = value;\r
++ }\r
++\r
++ public boolean isSetRect() {\r
++ return (this.rect!= null);\r
++ }\r
++\r
++ /**\r
++ * Gets the value of the pathLst property.\r
++ * \r
++ * @return\r
++ * possible object is\r
++ * {@link CTPath2DList }\r
++ * \r
++ */\r
++ public CTPath2DList getPathLst() {\r
++ return pathLst;\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the pathLst property.\r
++ * \r
++ * @param value\r
++ * allowed object is\r
++ * {@link CTPath2DList }\r
++ * \r
++ */\r
++ public void setPathLst(CTPath2DList value) {\r
++ this.pathLst = value;\r
++ }\r
++\r
++ public boolean isSetPathLst() {\r
++ return (this.pathLst!= null);\r
++ }\r
++\r
++}\r
--- /dev/null
--- /dev/null
++/* ====================================================================\r
++ Licensed to the Apache Software Foundation (ASF) under one or more\r
++ contributor license agreements. See the NOTICE file distributed with\r
++ this work for additional information regarding copyright ownership.\r
++ The ASF licenses this file to You under the Apache License, Version 2.0\r
++ (the "License"); you may not use this file except in compliance with\r
++ the License. You may obtain a copy of the License at\r
++\r
++ http://www.apache.org/licenses/LICENSE-2.0\r
++\r
++ Unless required by applicable law or agreed to in writing, software\r
++ distributed under the License is distributed on an "AS IS" BASIS,\r
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ See the License for the specific language governing permissions and\r
++ limitations under the License.\r
++==================================================================== */\r
++\r
++package org.apache.poi.sl.draw.binding;\r
++\r
++import javax.xml.bind.annotation.XmlAccessType;\r
++import javax.xml.bind.annotation.XmlAccessorType;\r
++import javax.xml.bind.annotation.XmlAttribute;\r
++import javax.xml.bind.annotation.XmlType;\r
++\r
++\r
++/**\r
++ * <p>Java class for CT_EmbeddedWAVAudioFile complex type.\r
++ * \r
++ * <p>The following schema fragment specifies the expected content contained within this class.\r
++ * \r
++ * <pre>\r
++ * <complexType name="CT_EmbeddedWAVAudioFile">\r
++ * <complexContent>\r
++ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ * <attribute ref="{http://schemas.openxmlformats.org/officeDocument/2006/relationships}embed use="required""/>\r
++ * <attribute name="name" type="{http://www.w3.org/2001/XMLSchema}string" default="" />\r
++ * <attribute name="builtIn" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />\r
++ * </restriction>\r
++ * </complexContent>\r
++ * </complexType>\r
++ * </pre>\r
++ * \r
++ * \r
++ */\r
++@XmlAccessorType(XmlAccessType.FIELD)\r
++@XmlType(name = "CT_EmbeddedWAVAudioFile", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")\r
++public class CTEmbeddedWAVAudioFile {\r
++\r
++ @XmlAttribute(name = "embed", namespace = "http://schemas.openxmlformats.org/officeDocument/2006/relationships", required = true)\r
++ protected String embed;\r
++ @XmlAttribute(name = "name")\r
++ protected String name;\r
++ @XmlAttribute(name = "builtIn")\r
++ protected Boolean builtIn;\r
++\r
++ /**\r
++ * Embedded Audio File Relationship ID\r
++ * \r
++ * @return\r
++ * possible object is\r
++ * {@link String }\r
++ * \r
++ */\r
++ public String getEmbed() {\r
++ return embed;\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the embed property.\r
++ * \r
++ * @param value\r
++ * allowed object is\r
++ * {@link String }\r
++ * \r
++ */\r
++ public void setEmbed(String value) {\r
++ this.embed = value;\r
++ }\r
++\r
++ public boolean isSetEmbed() {\r
++ return (this.embed!= null);\r
++ }\r
++\r
++ /**\r
++ * Gets the value of the name property.\r
++ * \r
++ * @return\r
++ * possible object is\r
++ * {@link String }\r
++ * \r
++ */\r
++ public String getName() {\r
++ if (name == null) {\r
++ return "";\r
++ } else {\r
++ return name;\r
++ }\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the name property.\r
++ * \r
++ * @param value\r
++ * allowed object is\r
++ * {@link String }\r
++ * \r
++ */\r
++ public void setName(String value) {\r
++ this.name = value;\r
++ }\r
++\r
++ public boolean isSetName() {\r
++ return (this.name!= null);\r
++ }\r
++\r
++ /**\r
++ * Gets the value of the builtIn property.\r
++ * \r
++ * @return\r
++ * possible object is\r
++ * {@link Boolean }\r
++ * \r
++ */\r
++ public boolean isBuiltIn() {\r
++ if (builtIn == null) {\r
++ return false;\r
++ } else {\r
++ return builtIn;\r
++ }\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the builtIn property.\r
++ * \r
++ * @param value\r
++ * allowed object is\r
++ * {@link Boolean }\r
++ * \r
++ */\r
++ public void setBuiltIn(boolean value) {\r
++ this.builtIn = value;\r
++ }\r
++\r
++ public boolean isSetBuiltIn() {\r
++ return (this.builtIn!= null);\r
++ }\r
++\r
++ public void unsetBuiltIn() {\r
++ this.builtIn = null;\r
++ }\r
++\r
++}\r
--- /dev/null
--- /dev/null
++/* ====================================================================\r
++ Licensed to the Apache Software Foundation (ASF) under one or more\r
++ contributor license agreements. See the NOTICE file distributed with\r
++ this work for additional information regarding copyright ownership.\r
++ The ASF licenses this file to You under the Apache License, Version 2.0\r
++ (the "License"); you may not use this file except in compliance with\r
++ the License. You may obtain a copy of the License at\r
++\r
++ http://www.apache.org/licenses/LICENSE-2.0\r
++\r
++ Unless required by applicable law or agreed to in writing, software\r
++ distributed under the License is distributed on an "AS IS" BASIS,\r
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ See the License for the specific language governing permissions and\r
++ limitations under the License.\r
++==================================================================== */\r
++\r
++package org.apache.poi.sl.draw.binding;\r
++\r
++import javax.xml.bind.annotation.XmlAccessType;\r
++import javax.xml.bind.annotation.XmlAccessorType;\r
++import javax.xml.bind.annotation.XmlAttribute;\r
++import javax.xml.bind.annotation.XmlType;\r
++\r
++\r
++/**\r
++ * <p>Java class for CT_FixedPercentage complex type.\r
++ * \r
++ * <p>The following schema fragment specifies the expected content contained within this class.\r
++ * \r
++ * <pre>\r
++ * <complexType name="CT_FixedPercentage">\r
++ * <complexContent>\r
++ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ * <attribute name="val" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_FixedPercentage" />\r
++ * </restriction>\r
++ * </complexContent>\r
++ * </complexType>\r
++ * </pre>\r
++ * \r
++ * \r
++ */\r
++@XmlAccessorType(XmlAccessType.FIELD)\r
++@XmlType(name = "CT_FixedPercentage", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")\r
++public class CTFixedPercentage {\r
++\r
++ @XmlAttribute(name = "val", required = true)\r
++ protected int val;\r
++\r
++ /**\r
++ * Gets the value of the val property.\r
++ * \r
++ */\r
++ public int getVal() {\r
++ return val;\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the val property.\r
++ * \r
++ */\r
++ public void setVal(int value) {\r
++ this.val = value;\r
++ }\r
++\r
++ public boolean isSetVal() {\r
++ return true;\r
++ }\r
++\r
++}\r
--- /dev/null
--- /dev/null
++/* ====================================================================\r
++ Licensed to the Apache Software Foundation (ASF) under one or more\r
++ contributor license agreements. See the NOTICE file distributed with\r
++ this work for additional information regarding copyright ownership.\r
++ The ASF licenses this file to You under the Apache License, Version 2.0\r
++ (the "License"); you may not use this file except in compliance with\r
++ the License. You may obtain a copy of the License at\r
++\r
++ http://www.apache.org/licenses/LICENSE-2.0\r
++\r
++ Unless required by applicable law or agreed to in writing, software\r
++ distributed under the License is distributed on an "AS IS" BASIS,\r
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ See the License for the specific language governing permissions and\r
++ limitations under the License.\r
++==================================================================== */\r
++\r
++package org.apache.poi.sl.draw.binding;\r
++\r
++import javax.xml.bind.annotation.XmlAccessType;\r
++import javax.xml.bind.annotation.XmlAccessorType;\r
++import javax.xml.bind.annotation.XmlType;\r
++\r
++\r
++/**\r
++ * <p>Java class for CT_GammaTransform complex type.\r
++ * \r
++ * <p>The following schema fragment specifies the expected content contained within this class.\r
++ * \r
++ * <pre>\r
++ * <complexType name="CT_GammaTransform">\r
++ * <complexContent>\r
++ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ * </restriction>\r
++ * </complexContent>\r
++ * </complexType>\r
++ * </pre>\r
++ * \r
++ * \r
++ */\r
++@XmlAccessorType(XmlAccessType.FIELD)\r
++@XmlType(name = "CT_GammaTransform", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")\r
++public class CTGammaTransform {\r
++\r
++\r
++}\r
--- /dev/null
--- /dev/null
++/* ====================================================================\r
++ Licensed to the Apache Software Foundation (ASF) under one or more\r
++ contributor license agreements. See the NOTICE file distributed with\r
++ this work for additional information regarding copyright ownership.\r
++ The ASF licenses this file to You under the Apache License, Version 2.0\r
++ (the "License"); you may not use this file except in compliance with\r
++ the License. You may obtain a copy of the License at\r
++\r
++ http://www.apache.org/licenses/LICENSE-2.0\r
++\r
++ Unless required by applicable law or agreed to in writing, software\r
++ distributed under the License is distributed on an "AS IS" BASIS,\r
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ See the License for the specific language governing permissions and\r
++ limitations under the License.\r
++==================================================================== */\r
++\r
++package org.apache.poi.sl.draw.binding;\r
++\r
++import javax.xml.bind.annotation.XmlAccessType;\r
++import javax.xml.bind.annotation.XmlAccessorType;\r
++import javax.xml.bind.annotation.XmlAttribute;\r
++import javax.xml.bind.annotation.XmlType;\r
++import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;\r
++import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;\r
++\r
++\r
++/**\r
++ * <p>Java class for CT_GeomGuide complex type.\r
++ * \r
++ * <p>The following schema fragment specifies the expected content contained within this class.\r
++ * \r
++ * <pre>\r
++ * <complexType name="CT_GeomGuide">\r
++ * <complexContent>\r
++ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ * <attribute name="name" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_GeomGuideName" />\r
++ * <attribute name="fmla" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_GeomGuideFormula" />\r
++ * </restriction>\r
++ * </complexContent>\r
++ * </complexType>\r
++ * </pre>\r
++ * \r
++ * \r
++ */\r
++@XmlAccessorType(XmlAccessType.FIELD)\r
++@XmlType(name = "CT_GeomGuide", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")\r
++public class CTGeomGuide {\r
++\r
++ @XmlAttribute(name = "name", required = true)\r
++ @XmlJavaTypeAdapter(CollapsedStringAdapter.class)\r
++ protected String name;\r
++ @XmlAttribute(name = "fmla", required = true)\r
++ protected String fmla;\r
++\r
++ /**\r
++ * Gets the value of the name property.\r
++ * \r
++ * @return\r
++ * possible object is\r
++ * {@link String }\r
++ * \r
++ */\r
++ public String getName() {\r
++ return name;\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the name property.\r
++ * \r
++ * @param value\r
++ * allowed object is\r
++ * {@link String }\r
++ * \r
++ */\r
++ public void setName(String value) {\r
++ this.name = value;\r
++ }\r
++\r
++ public boolean isSetName() {\r
++ return (this.name!= null);\r
++ }\r
++\r
++ /**\r
++ * Gets the value of the fmla property.\r
++ * \r
++ * @return\r
++ * possible object is\r
++ * {@link String }\r
++ * \r
++ */\r
++ public String getFmla() {\r
++ return fmla;\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the fmla property.\r
++ * \r
++ * @param value\r
++ * allowed object is\r
++ * {@link String }\r
++ * \r
++ */\r
++ public void setFmla(String value) {\r
++ this.fmla = value;\r
++ }\r
++\r
++ public boolean isSetFmla() {\r
++ return (this.fmla!= null);\r
++ }\r
++\r
++}\r
--- /dev/null
--- /dev/null
++/* ====================================================================\r
++ Licensed to the Apache Software Foundation (ASF) under one or more\r
++ contributor license agreements. See the NOTICE file distributed with\r
++ this work for additional information regarding copyright ownership.\r
++ The ASF licenses this file to You under the Apache License, Version 2.0\r
++ (the "License"); you may not use this file except in compliance with\r
++ the License. You may obtain a copy of the License at\r
++\r
++ http://www.apache.org/licenses/LICENSE-2.0\r
++\r
++ Unless required by applicable law or agreed to in writing, software\r
++ distributed under the License is distributed on an "AS IS" BASIS,\r
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ See the License for the specific language governing permissions and\r
++ limitations under the License.\r
++==================================================================== */\r
++\r
++package org.apache.poi.sl.draw.binding;\r
++\r
++import java.util.ArrayList;\r
++import java.util.List;\r
++import javax.xml.bind.annotation.XmlAccessType;\r
++import javax.xml.bind.annotation.XmlAccessorType;\r
++import javax.xml.bind.annotation.XmlElement;\r
++import javax.xml.bind.annotation.XmlType;\r
++\r
++\r
++/**\r
++ * <p>Java class for CT_GeomGuideList complex type.\r
++ * \r
++ * <p>The following schema fragment specifies the expected content contained within this class.\r
++ * \r
++ * <pre>\r
++ * <complexType name="CT_GeomGuideList">\r
++ * <complexContent>\r
++ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ * <sequence>\r
++ * <element name="gd" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_GeomGuide" maxOccurs="unbounded" minOccurs="0"/>\r
++ * </sequence>\r
++ * </restriction>\r
++ * </complexContent>\r
++ * </complexType>\r
++ * </pre>\r
++ * \r
++ * \r
++ */\r
++@XmlAccessorType(XmlAccessType.FIELD)\r
++@XmlType(name = "CT_GeomGuideList", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", propOrder = {\r
++ "gd"\r
++})\r
++public class CTGeomGuideList {\r
++\r
++ @XmlElement(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")\r
++ protected List<CTGeomGuide> gd;\r
++\r
++ /**\r
++ * Gets the value of the gd property.\r
++ * \r
++ * <p>\r
++ * This accessor method returns a reference to the live list,\r
++ * not a snapshot. Therefore any modification you make to the\r
++ * returned list will be present inside the JAXB object.\r
++ * This is why there is not a <CODE>set</CODE> method for the gd property.\r
++ * \r
++ * <p>\r
++ * For example, to add a new item, do as follows:\r
++ * <pre>\r
++ * getGd().add(newItem);\r
++ * </pre>\r
++ * \r
++ * \r
++ * <p>\r
++ * Objects of the following type(s) are allowed in the list\r
++ * {@link CTGeomGuide }\r
++ * \r
++ * \r
++ */\r
++ public List<CTGeomGuide> getGd() {\r
++ if (gd == null) {\r
++ gd = new ArrayList<CTGeomGuide>();\r
++ }\r
++ return this.gd;\r
++ }\r
++\r
++ public boolean isSetGd() {\r
++ return ((this.gd!= null)&&(!this.gd.isEmpty()));\r
++ }\r
++\r
++ public void unsetGd() {\r
++ this.gd = null;\r
++ }\r
++\r
++}\r
--- /dev/null
--- /dev/null
++/* ====================================================================\r
++ Licensed to the Apache Software Foundation (ASF) under one or more\r
++ contributor license agreements. See the NOTICE file distributed with\r
++ this work for additional information regarding copyright ownership.\r
++ The ASF licenses this file to You under the Apache License, Version 2.0\r
++ (the "License"); you may not use this file except in compliance with\r
++ the License. You may obtain a copy of the License at\r
++\r
++ http://www.apache.org/licenses/LICENSE-2.0\r
++\r
++ Unless required by applicable law or agreed to in writing, software\r
++ distributed under the License is distributed on an "AS IS" BASIS,\r
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ See the License for the specific language governing permissions and\r
++ limitations under the License.\r
++==================================================================== */\r
++\r
++package org.apache.poi.sl.draw.binding;\r
++\r
++import javax.xml.bind.annotation.XmlAccessType;\r
++import javax.xml.bind.annotation.XmlAccessorType;\r
++import javax.xml.bind.annotation.XmlAttribute;\r
++import javax.xml.bind.annotation.XmlType;\r
++\r
++\r
++/**\r
++ * <p>Java class for CT_GeomRect complex type.\r
++ * \r
++ * <p>The following schema fragment specifies the expected content contained within this class.\r
++ * \r
++ * <pre>\r
++ * <complexType name="CT_GeomRect">\r
++ * <complexContent>\r
++ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ * <attribute name="l" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_AdjCoordinate" />\r
++ * <attribute name="t" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_AdjCoordinate" />\r
++ * <attribute name="r" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_AdjCoordinate" />\r
++ * <attribute name="b" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_AdjCoordinate" />\r
++ * </restriction>\r
++ * </complexContent>\r
++ * </complexType>\r
++ * </pre>\r
++ * \r
++ * \r
++ */\r
++@XmlAccessorType(XmlAccessType.FIELD)\r
++@XmlType(name = "CT_GeomRect", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")\r
++public class CTGeomRect {\r
++\r
++ @XmlAttribute(name = "l", required = true)\r
++ protected String l;\r
++ @XmlAttribute(name = "t", required = true)\r
++ protected String t;\r
++ @XmlAttribute(name = "r", required = true)\r
++ protected String r;\r
++ @XmlAttribute(name = "b", required = true)\r
++ protected String b;\r
++\r
++ /**\r
++ * Gets the value of the l property.\r
++ * \r
++ * @return\r
++ * possible object is\r
++ * {@link String }\r
++ * \r
++ */\r
++ public String getL() {\r
++ return l;\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the l property.\r
++ * \r
++ * @param value\r
++ * allowed object is\r
++ * {@link String }\r
++ * \r
++ */\r
++ public void setL(String value) {\r
++ this.l = value;\r
++ }\r
++\r
++ public boolean isSetL() {\r
++ return (this.l!= null);\r
++ }\r
++\r
++ /**\r
++ * Gets the value of the t property.\r
++ * \r
++ * @return\r
++ * possible object is\r
++ * {@link String }\r
++ * \r
++ */\r
++ public String getT() {\r
++ return t;\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the t property.\r
++ * \r
++ * @param value\r
++ * allowed object is\r
++ * {@link String }\r
++ * \r
++ */\r
++ public void setT(String value) {\r
++ this.t = value;\r
++ }\r
++\r
++ public boolean isSetT() {\r
++ return (this.t!= null);\r
++ }\r
++\r
++ /**\r
++ * Gets the value of the r property.\r
++ * \r
++ * @return\r
++ * possible object is\r
++ * {@link String }\r
++ * \r
++ */\r
++ public String getR() {\r
++ return r;\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the r property.\r
++ * \r
++ * @param value\r
++ * allowed object is\r
++ * {@link String }\r
++ * \r
++ */\r
++ public void setR(String value) {\r
++ this.r = value;\r
++ }\r
++\r
++ public boolean isSetR() {\r
++ return (this.r!= null);\r
++ }\r
++\r
++ /**\r
++ * Gets the value of the b property.\r
++ * \r
++ * @return\r
++ * possible object is\r
++ * {@link String }\r
++ * \r
++ */\r
++ public String getB() {\r
++ return b;\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the b property.\r
++ * \r
++ * @param value\r
++ * allowed object is\r
++ * {@link String }\r
++ * \r
++ */\r
++ public void setB(String value) {\r
++ this.b = value;\r
++ }\r
++\r
++ public boolean isSetB() {\r
++ return (this.b!= null);\r
++ }\r
++\r
++}\r
--- /dev/null
--- /dev/null
++/* ====================================================================\r
++ Licensed to the Apache Software Foundation (ASF) under one or more\r
++ contributor license agreements. See the NOTICE file distributed with\r
++ this work for additional information regarding copyright ownership.\r
++ The ASF licenses this file to You under the Apache License, Version 2.0\r
++ (the "License"); you may not use this file except in compliance with\r
++ the License. You may obtain a copy of the License at\r
++\r
++ http://www.apache.org/licenses/LICENSE-2.0\r
++\r
++ Unless required by applicable law or agreed to in writing, software\r
++ distributed under the License is distributed on an "AS IS" BASIS,\r
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ See the License for the specific language governing permissions and\r
++ limitations under the License.\r
++==================================================================== */\r
++\r
++package org.apache.poi.sl.draw.binding;\r
++\r
++import javax.xml.bind.annotation.XmlAccessType;\r
++import javax.xml.bind.annotation.XmlAccessorType;\r
++import javax.xml.bind.annotation.XmlType;\r
++\r
++\r
++/**\r
++ * <p>Java class for CT_GrayscaleTransform complex type.\r
++ * \r
++ * <p>The following schema fragment specifies the expected content contained within this class.\r
++ * \r
++ * <pre>\r
++ * <complexType name="CT_GrayscaleTransform">\r
++ * <complexContent>\r
++ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ * </restriction>\r
++ * </complexContent>\r
++ * </complexType>\r
++ * </pre>\r
++ * \r
++ * \r
++ */\r
++@XmlAccessorType(XmlAccessType.FIELD)\r
++@XmlType(name = "CT_GrayscaleTransform", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")\r
++public class CTGrayscaleTransform {\r
++\r
++\r
++}\r
--- /dev/null
--- /dev/null
++/* ====================================================================\r
++ Licensed to the Apache Software Foundation (ASF) under one or more\r
++ contributor license agreements. See the NOTICE file distributed with\r
++ this work for additional information regarding copyright ownership.\r
++ The ASF licenses this file to You under the Apache License, Version 2.0\r
++ (the "License"); you may not use this file except in compliance with\r
++ the License. You may obtain a copy of the License at\r
++\r
++ http://www.apache.org/licenses/LICENSE-2.0\r
++\r
++ Unless required by applicable law or agreed to in writing, software\r
++ distributed under the License is distributed on an "AS IS" BASIS,\r
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ See the License for the specific language governing permissions and\r
++ limitations under the License.\r
++==================================================================== */\r
++\r
++package org.apache.poi.sl.draw.binding;\r
++\r
++import javax.xml.bind.annotation.XmlAccessType;\r
++import javax.xml.bind.annotation.XmlAccessorType;\r
++import javax.xml.bind.annotation.XmlAttribute;\r
++import javax.xml.bind.annotation.XmlElement;\r
++import javax.xml.bind.annotation.XmlType;\r
++\r
++\r
++/**\r
++ * <p>Java class for CT_GroupTransform2D complex type.\r
++ * \r
++ * <p>The following schema fragment specifies the expected content contained within this class.\r
++ * \r
++ * <pre>\r
++ * <complexType name="CT_GroupTransform2D">\r
++ * <complexContent>\r
++ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ * <sequence>\r
++ * <element name="off" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_Point2D" minOccurs="0"/>\r
++ * <element name="ext" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_PositiveSize2D" minOccurs="0"/>\r
++ * <element name="chOff" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_Point2D" minOccurs="0"/>\r
++ * <element name="chExt" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_PositiveSize2D" minOccurs="0"/>\r
++ * </sequence>\r
++ * <attribute name="rot" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_Angle" default="0" />\r
++ * <attribute name="flipH" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />\r
++ * <attribute name="flipV" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />\r
++ * </restriction>\r
++ * </complexContent>\r
++ * </complexType>\r
++ * </pre>\r
++ * \r
++ * \r
++ */\r
++@XmlAccessorType(XmlAccessType.FIELD)\r
++@XmlType(name = "CT_GroupTransform2D", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", propOrder = {\r
++ "off",\r
++ "ext",\r
++ "chOff",\r
++ "chExt"\r
++})\r
++public class CTGroupTransform2D {\r
++\r
++ @XmlElement(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")\r
++ protected CTPoint2D off;\r
++ @XmlElement(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")\r
++ protected CTPositiveSize2D ext;\r
++ @XmlElement(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")\r
++ protected CTPoint2D chOff;\r
++ @XmlElement(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")\r
++ protected CTPositiveSize2D chExt;\r
++ @XmlAttribute(name = "rot")\r
++ protected Integer rot;\r
++ @XmlAttribute(name = "flipH")\r
++ protected Boolean flipH;\r
++ @XmlAttribute(name = "flipV")\r
++ protected Boolean flipV;\r
++\r
++ /**\r
++ * Gets the value of the off property.\r
++ * \r
++ * @return\r
++ * possible object is\r
++ * {@link CTPoint2D }\r
++ * \r
++ */\r
++ public CTPoint2D getOff() {\r
++ return off;\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the off property.\r
++ * \r
++ * @param value\r
++ * allowed object is\r
++ * {@link CTPoint2D }\r
++ * \r
++ */\r
++ public void setOff(CTPoint2D value) {\r
++ this.off = value;\r
++ }\r
++\r
++ public boolean isSetOff() {\r
++ return (this.off!= null);\r
++ }\r
++\r
++ /**\r
++ * Gets the value of the ext property.\r
++ * \r
++ * @return\r
++ * possible object is\r
++ * {@link CTPositiveSize2D }\r
++ * \r
++ */\r
++ public CTPositiveSize2D getExt() {\r
++ return ext;\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the ext property.\r
++ * \r
++ * @param value\r
++ * allowed object is\r
++ * {@link CTPositiveSize2D }\r
++ * \r
++ */\r
++ public void setExt(CTPositiveSize2D value) {\r
++ this.ext = value;\r
++ }\r
++\r
++ public boolean isSetExt() {\r
++ return (this.ext!= null);\r
++ }\r
++\r
++ /**\r
++ * Gets the value of the chOff property.\r
++ * \r
++ * @return\r
++ * possible object is\r
++ * {@link CTPoint2D }\r
++ * \r
++ */\r
++ public CTPoint2D getChOff() {\r
++ return chOff;\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the chOff property.\r
++ * \r
++ * @param value\r
++ * allowed object is\r
++ * {@link CTPoint2D }\r
++ * \r
++ */\r
++ public void setChOff(CTPoint2D value) {\r
++ this.chOff = value;\r
++ }\r
++\r
++ public boolean isSetChOff() {\r
++ return (this.chOff!= null);\r
++ }\r
++\r
++ /**\r
++ * Gets the value of the chExt property.\r
++ * \r
++ * @return\r
++ * possible object is\r
++ * {@link CTPositiveSize2D }\r
++ * \r
++ */\r
++ public CTPositiveSize2D getChExt() {\r
++ return chExt;\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the chExt property.\r
++ * \r
++ * @param value\r
++ * allowed object is\r
++ * {@link CTPositiveSize2D }\r
++ * \r
++ */\r
++ public void setChExt(CTPositiveSize2D value) {\r
++ this.chExt = value;\r
++ }\r
++\r
++ public boolean isSetChExt() {\r
++ return (this.chExt!= null);\r
++ }\r
++\r
++ /**\r
++ * Gets the value of the rot property.\r
++ * \r
++ * @return\r
++ * possible object is\r
++ * {@link Integer }\r
++ * \r
++ */\r
++ public int getRot() {\r
++ if (rot == null) {\r
++ return 0;\r
++ } else {\r
++ return rot;\r
++ }\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the rot property.\r
++ * \r
++ * @param value\r
++ * allowed object is\r
++ * {@link Integer }\r
++ * \r
++ */\r
++ public void setRot(int value) {\r
++ this.rot = value;\r
++ }\r
++\r
++ public boolean isSetRot() {\r
++ return (this.rot!= null);\r
++ }\r
++\r
++ public void unsetRot() {\r
++ this.rot = null;\r
++ }\r
++\r
++ /**\r
++ * Gets the value of the flipH property.\r
++ * \r
++ * @return\r
++ * possible object is\r
++ * {@link Boolean }\r
++ * \r
++ */\r
++ public boolean isFlipH() {\r
++ if (flipH == null) {\r
++ return false;\r
++ } else {\r
++ return flipH;\r
++ }\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the flipH property.\r
++ * \r
++ * @param value\r
++ * allowed object is\r
++ * {@link Boolean }\r
++ * \r
++ */\r
++ public void setFlipH(boolean value) {\r
++ this.flipH = value;\r
++ }\r
++\r
++ public boolean isSetFlipH() {\r
++ return (this.flipH!= null);\r
++ }\r
++\r
++ public void unsetFlipH() {\r
++ this.flipH = null;\r
++ }\r
++\r
++ /**\r
++ * Gets the value of the flipV property.\r
++ * \r
++ * @return\r
++ * possible object is\r
++ * {@link Boolean }\r
++ * \r
++ */\r
++ public boolean isFlipV() {\r
++ if (flipV == null) {\r
++ return false;\r
++ } else {\r
++ return flipV;\r
++ }\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the flipV property.\r
++ * \r
++ * @param value\r
++ * allowed object is\r
++ * {@link Boolean }\r
++ * \r
++ */\r
++ public void setFlipV(boolean value) {\r
++ this.flipV = value;\r
++ }\r
++\r
++ public boolean isSetFlipV() {\r
++ return (this.flipV!= null);\r
++ }\r
++\r
++ public void unsetFlipV() {\r
++ this.flipV = null;\r
++ }\r
++\r
++}\r
--- /dev/null
--- /dev/null
++/* ====================================================================\r
++ Licensed to the Apache Software Foundation (ASF) under one or more\r
++ contributor license agreements. See the NOTICE file distributed with\r
++ this work for additional information regarding copyright ownership.\r
++ The ASF licenses this file to You under the Apache License, Version 2.0\r
++ (the "License"); you may not use this file except in compliance with\r
++ the License. You may obtain a copy of the License at\r
++\r
++ http://www.apache.org/licenses/LICENSE-2.0\r
++\r
++ Unless required by applicable law or agreed to in writing, software\r
++ distributed under the License is distributed on an "AS IS" BASIS,\r
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ See the License for the specific language governing permissions and\r
++ limitations under the License.\r
++==================================================================== */\r
++\r
++package org.apache.poi.sl.draw.binding;\r
++\r
++import java.util.ArrayList;\r
++import java.util.List;\r
++import javax.xml.bind.JAXBElement;\r
++import javax.xml.bind.annotation.XmlAccessType;\r
++import javax.xml.bind.annotation.XmlAccessorType;\r
++import javax.xml.bind.annotation.XmlAttribute;\r
++import javax.xml.bind.annotation.XmlElementRef;\r
++import javax.xml.bind.annotation.XmlElementRefs;\r
++import javax.xml.bind.annotation.XmlType;\r
++\r
++\r
++/**\r
++ * <p>Java class for CT_HslColor complex type.\r
++ * \r
++ * <p>The following schema fragment specifies the expected content contained within this class.\r
++ * \r
++ * <pre>\r
++ * <complexType name="CT_HslColor">\r
++ * <complexContent>\r
++ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ * <sequence>\r
++ * <group ref="{http://schemas.openxmlformats.org/drawingml/2006/main}EG_ColorTransform" maxOccurs="unbounded" minOccurs="0"/>\r
++ * </sequence>\r
++ * <attribute name="hue" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_PositiveFixedAngle" />\r
++ * <attribute name="sat" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_Percentage" />\r
++ * <attribute name="lum" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_Percentage" />\r
++ * </restriction>\r
++ * </complexContent>\r
++ * </complexType>\r
++ * </pre>\r
++ * \r
++ * \r
++ */\r
++@XmlAccessorType(XmlAccessType.FIELD)\r
++@XmlType(name = "CT_HslColor", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", propOrder = {\r
++ "egColorTransform"\r
++})\r
++public class CTHslColor {\r
++\r
++ @XmlElementRefs({\r
++ @XmlElementRef(name = "red", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "greenMod", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "gamma", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "hueMod", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "hueOff", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "invGamma", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "gray", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "comp", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "lumMod", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "green", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "inv", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "satMod", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "sat", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "alphaOff", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "greenOff", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "redOff", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "blueOff", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "alphaMod", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "lumOff", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "blueMod", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "satOff", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "lum", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "alpha", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "tint", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "blue", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "redMod", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "hue", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "shade", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false)\r
++ })\r
++ protected List<JAXBElement<?>> egColorTransform;\r
++ @XmlAttribute(name = "hue", required = true)\r
++ protected int hue;\r
++ @XmlAttribute(name = "sat", required = true)\r
++ protected int sat;\r
++ @XmlAttribute(name = "lum", required = true)\r
++ protected int lum;\r
++\r
++ /**\r
++ * Gets the value of the egColorTransform property.\r
++ * \r
++ * <p>\r
++ * This accessor method returns a reference to the live list,\r
++ * not a snapshot. Therefore any modification you make to the\r
++ * returned list will be present inside the JAXB object.\r
++ * This is why there is not a <CODE>set</CODE> method for the egColorTransform property.\r
++ * \r
++ * <p>\r
++ * For example, to add a new item, do as follows:\r
++ * <pre>\r
++ * getEGColorTransform().add(newItem);\r
++ * </pre>\r
++ * \r
++ * \r
++ * <p>\r
++ * Objects of the following type(s) are allowed in the list\r
++ * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTGammaTransform }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPositivePercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTAngle }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTInverseGammaTransform }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTGrayscaleTransform }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTComplementTransform }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTInverseTransform }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTFixedPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPositivePercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPositiveFixedPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPositiveFixedPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPositiveFixedAngle }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPositiveFixedPercentage }{@code >}\r
++ * \r
++ * \r
++ */\r
++ public List<JAXBElement<?>> getEGColorTransform() {\r
++ if (egColorTransform == null) {\r
++ egColorTransform = new ArrayList<JAXBElement<?>>();\r
++ }\r
++ return this.egColorTransform;\r
++ }\r
++\r
++ public boolean isSetEGColorTransform() {\r
++ return ((this.egColorTransform!= null)&&(!this.egColorTransform.isEmpty()));\r
++ }\r
++\r
++ public void unsetEGColorTransform() {\r
++ this.egColorTransform = null;\r
++ }\r
++\r
++ /**\r
++ * Gets the value of the hue property.\r
++ * \r
++ */\r
++ public int getHue() {\r
++ return hue;\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the hue property.\r
++ * \r
++ */\r
++ public void setHue(int value) {\r
++ this.hue = value;\r
++ }\r
++\r
++ public boolean isSetHue() {\r
++ return true;\r
++ }\r
++\r
++ /**\r
++ * Gets the value of the sat property.\r
++ * \r
++ */\r
++ public int getSat() {\r
++ return sat;\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the sat property.\r
++ * \r
++ */\r
++ public void setSat(int value) {\r
++ this.sat = value;\r
++ }\r
++\r
++ public boolean isSetSat() {\r
++ return true;\r
++ }\r
++\r
++ /**\r
++ * Gets the value of the lum property.\r
++ * \r
++ */\r
++ public int getLum() {\r
++ return lum;\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the lum property.\r
++ * \r
++ */\r
++ public void setLum(int value) {\r
++ this.lum = value;\r
++ }\r
++\r
++ public boolean isSetLum() {\r
++ return true;\r
++ }\r
++\r
++}\r
--- /dev/null
--- /dev/null
++/* ====================================================================\r
++ Licensed to the Apache Software Foundation (ASF) under one or more\r
++ contributor license agreements. See the NOTICE file distributed with\r
++ this work for additional information regarding copyright ownership.\r
++ The ASF licenses this file to You under the Apache License, Version 2.0\r
++ (the "License"); you may not use this file except in compliance with\r
++ the License. You may obtain a copy of the License at\r
++\r
++ http://www.apache.org/licenses/LICENSE-2.0\r
++\r
++ Unless required by applicable law or agreed to in writing, software\r
++ distributed under the License is distributed on an "AS IS" BASIS,\r
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ See the License for the specific language governing permissions and\r
++ limitations under the License.\r
++==================================================================== */\r
++\r
++package org.apache.poi.sl.draw.binding;\r
++\r
++import javax.xml.bind.annotation.XmlAccessType;\r
++import javax.xml.bind.annotation.XmlAccessorType;\r
++import javax.xml.bind.annotation.XmlAttribute;\r
++import javax.xml.bind.annotation.XmlElement;\r
++import javax.xml.bind.annotation.XmlType;\r
++\r
++\r
++/**\r
++ * <p>Java class for CT_Hyperlink complex type.\r
++ * \r
++ * <p>The following schema fragment specifies the expected content contained within this class.\r
++ * \r
++ * <pre>\r
++ * <complexType name="CT_Hyperlink">\r
++ * <complexContent>\r
++ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ * <sequence>\r
++ * <element name="snd" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_EmbeddedWAVAudioFile" minOccurs="0"/>\r
++ * <element name="extLst" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_OfficeArtExtensionList" minOccurs="0"/>\r
++ * </sequence>\r
++ * <attribute ref="{http://schemas.openxmlformats.org/officeDocument/2006/relationships}id"/>\r
++ * <attribute name="invalidUrl" type="{http://www.w3.org/2001/XMLSchema}string" default="" />\r
++ * <attribute name="action" type="{http://www.w3.org/2001/XMLSchema}string" default="" />\r
++ * <attribute name="tgtFrame" type="{http://www.w3.org/2001/XMLSchema}string" default="" />\r
++ * <attribute name="tooltip" type="{http://www.w3.org/2001/XMLSchema}string" default="" />\r
++ * <attribute name="history" type="{http://www.w3.org/2001/XMLSchema}boolean" default="true" />\r
++ * <attribute name="highlightClick" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />\r
++ * <attribute name="endSnd" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />\r
++ * </restriction>\r
++ * </complexContent>\r
++ * </complexType>\r
++ * </pre>\r
++ * \r
++ * \r
++ */\r
++@XmlAccessorType(XmlAccessType.FIELD)\r
++@XmlType(name = "CT_Hyperlink", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", propOrder = {\r
++ "snd",\r
++ "extLst"\r
++})\r
++public class CTHyperlink {\r
++\r
++ @XmlElement(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")\r
++ protected CTEmbeddedWAVAudioFile snd;\r
++ @XmlElement(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")\r
++ protected CTOfficeArtExtensionList extLst;\r
++ @XmlAttribute(name = "id", namespace = "http://schemas.openxmlformats.org/officeDocument/2006/relationships")\r
++ protected String id;\r
++ @XmlAttribute(name = "invalidUrl")\r
++ protected String invalidUrl;\r
++ @XmlAttribute(name = "action")\r
++ protected String action;\r
++ @XmlAttribute(name = "tgtFrame")\r
++ protected String tgtFrame;\r
++ @XmlAttribute(name = "tooltip")\r
++ protected String tooltip;\r
++ @XmlAttribute(name = "history")\r
++ protected Boolean history;\r
++ @XmlAttribute(name = "highlightClick")\r
++ protected Boolean highlightClick;\r
++ @XmlAttribute(name = "endSnd")\r
++ protected Boolean endSnd;\r
++\r
++ /**\r
++ * Gets the value of the snd property.\r
++ * \r
++ * @return\r
++ * possible object is\r
++ * {@link CTEmbeddedWAVAudioFile }\r
++ * \r
++ */\r
++ public CTEmbeddedWAVAudioFile getSnd() {\r
++ return snd;\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the snd property.\r
++ * \r
++ * @param value\r
++ * allowed object is\r
++ * {@link CTEmbeddedWAVAudioFile }\r
++ * \r
++ */\r
++ public void setSnd(CTEmbeddedWAVAudioFile value) {\r
++ this.snd = value;\r
++ }\r
++\r
++ public boolean isSetSnd() {\r
++ return (this.snd!= null);\r
++ }\r
++\r
++ /**\r
++ * Gets the value of the extLst property.\r
++ * \r
++ * @return\r
++ * possible object is\r
++ * {@link CTOfficeArtExtensionList }\r
++ * \r
++ */\r
++ public CTOfficeArtExtensionList getExtLst() {\r
++ return extLst;\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the extLst property.\r
++ * \r
++ * @param value\r
++ * allowed object is\r
++ * {@link CTOfficeArtExtensionList }\r
++ * \r
++ */\r
++ public void setExtLst(CTOfficeArtExtensionList value) {\r
++ this.extLst = value;\r
++ }\r
++\r
++ public boolean isSetExtLst() {\r
++ return (this.extLst!= null);\r
++ }\r
++\r
++ /**\r
++ * Drawing Object Hyperlink Target\r
++ * \r
++ * @return\r
++ * possible object is\r
++ * {@link String }\r
++ * \r
++ */\r
++ public String getId() {\r
++ return id;\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the id property.\r
++ * \r
++ * @param value\r
++ * allowed object is\r
++ * {@link String }\r
++ * \r
++ */\r
++ public void setId(String value) {\r
++ this.id = value;\r
++ }\r
++\r
++ public boolean isSetId() {\r
++ return (this.id!= null);\r
++ }\r
++\r
++ /**\r
++ * Gets the value of the invalidUrl property.\r
++ * \r
++ * @return\r
++ * possible object is\r
++ * {@link String }\r
++ * \r
++ */\r
++ public String getInvalidUrl() {\r
++ if (invalidUrl == null) {\r
++ return "";\r
++ } else {\r
++ return invalidUrl;\r
++ }\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the invalidUrl property.\r
++ * \r
++ * @param value\r
++ * allowed object is\r
++ * {@link String }\r
++ * \r
++ */\r
++ public void setInvalidUrl(String value) {\r
++ this.invalidUrl = value;\r
++ }\r
++\r
++ public boolean isSetInvalidUrl() {\r
++ return (this.invalidUrl!= null);\r
++ }\r
++\r
++ /**\r
++ * Gets the value of the action property.\r
++ * \r
++ * @return\r
++ * possible object is\r
++ * {@link String }\r
++ * \r
++ */\r
++ public String getAction() {\r
++ if (action == null) {\r
++ return "";\r
++ } else {\r
++ return action;\r
++ }\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the action property.\r
++ * \r
++ * @param value\r
++ * allowed object is\r
++ * {@link String }\r
++ * \r
++ */\r
++ public void setAction(String value) {\r
++ this.action = value;\r
++ }\r
++\r
++ public boolean isSetAction() {\r
++ return (this.action!= null);\r
++ }\r
++\r
++ /**\r
++ * Gets the value of the tgtFrame property.\r
++ * \r
++ * @return\r
++ * possible object is\r
++ * {@link String }\r
++ * \r
++ */\r
++ public String getTgtFrame() {\r
++ if (tgtFrame == null) {\r
++ return "";\r
++ } else {\r
++ return tgtFrame;\r
++ }\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the tgtFrame property.\r
++ * \r
++ * @param value\r
++ * allowed object is\r
++ * {@link String }\r
++ * \r
++ */\r
++ public void setTgtFrame(String value) {\r
++ this.tgtFrame = value;\r
++ }\r
++\r
++ public boolean isSetTgtFrame() {\r
++ return (this.tgtFrame!= null);\r
++ }\r
++\r
++ /**\r
++ * Gets the value of the tooltip property.\r
++ * \r
++ * @return\r
++ * possible object is\r
++ * {@link String }\r
++ * \r
++ */\r
++ public String getTooltip() {\r
++ if (tooltip == null) {\r
++ return "";\r
++ } else {\r
++ return tooltip;\r
++ }\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the tooltip property.\r
++ * \r
++ * @param value\r
++ * allowed object is\r
++ * {@link String }\r
++ * \r
++ */\r
++ public void setTooltip(String value) {\r
++ this.tooltip = value;\r
++ }\r
++\r
++ public boolean isSetTooltip() {\r
++ return (this.tooltip!= null);\r
++ }\r
++\r
++ /**\r
++ * Gets the value of the history property.\r
++ * \r
++ * @return\r
++ * possible object is\r
++ * {@link Boolean }\r
++ * \r
++ */\r
++ public boolean isHistory() {\r
++ if (history == null) {\r
++ return true;\r
++ } else {\r
++ return history;\r
++ }\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the history property.\r
++ * \r
++ * @param value\r
++ * allowed object is\r
++ * {@link Boolean }\r
++ * \r
++ */\r
++ public void setHistory(boolean value) {\r
++ this.history = value;\r
++ }\r
++\r
++ public boolean isSetHistory() {\r
++ return (this.history!= null);\r
++ }\r
++\r
++ public void unsetHistory() {\r
++ this.history = null;\r
++ }\r
++\r
++ /**\r
++ * Gets the value of the highlightClick property.\r
++ * \r
++ * @return\r
++ * possible object is\r
++ * {@link Boolean }\r
++ * \r
++ */\r
++ public boolean isHighlightClick() {\r
++ if (highlightClick == null) {\r
++ return false;\r
++ } else {\r
++ return highlightClick;\r
++ }\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the highlightClick property.\r
++ * \r
++ * @param value\r
++ * allowed object is\r
++ * {@link Boolean }\r
++ * \r
++ */\r
++ public void setHighlightClick(boolean value) {\r
++ this.highlightClick = value;\r
++ }\r
++\r
++ public boolean isSetHighlightClick() {\r
++ return (this.highlightClick!= null);\r
++ }\r
++\r
++ public void unsetHighlightClick() {\r
++ this.highlightClick = null;\r
++ }\r
++\r
++ /**\r
++ * Gets the value of the endSnd property.\r
++ * \r
++ * @return\r
++ * possible object is\r
++ * {@link Boolean }\r
++ * \r
++ */\r
++ public boolean isEndSnd() {\r
++ if (endSnd == null) {\r
++ return false;\r
++ } else {\r
++ return endSnd;\r
++ }\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the endSnd property.\r
++ * \r
++ * @param value\r
++ * allowed object is\r
++ * {@link Boolean }\r
++ * \r
++ */\r
++ public void setEndSnd(boolean value) {\r
++ this.endSnd = value;\r
++ }\r
++\r
++ public boolean isSetEndSnd() {\r
++ return (this.endSnd!= null);\r
++ }\r
++\r
++ public void unsetEndSnd() {\r
++ this.endSnd = null;\r
++ }\r
++\r
++}\r
--- /dev/null
--- /dev/null
++/* ====================================================================\r
++ Licensed to the Apache Software Foundation (ASF) under one or more\r
++ contributor license agreements. See the NOTICE file distributed with\r
++ this work for additional information regarding copyright ownership.\r
++ The ASF licenses this file to You under the Apache License, Version 2.0\r
++ (the "License"); you may not use this file except in compliance with\r
++ the License. You may obtain a copy of the License at\r
++\r
++ http://www.apache.org/licenses/LICENSE-2.0\r
++\r
++ Unless required by applicable law or agreed to in writing, software\r
++ distributed under the License is distributed on an "AS IS" BASIS,\r
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ See the License for the specific language governing permissions and\r
++ limitations under the License.\r
++==================================================================== */\r
++\r
++package org.apache.poi.sl.draw.binding;\r
++\r
++import javax.xml.bind.annotation.XmlAccessType;\r
++import javax.xml.bind.annotation.XmlAccessorType;\r
++import javax.xml.bind.annotation.XmlType;\r
++\r
++\r
++/**\r
++ * <p>Java class for CT_InverseGammaTransform complex type.\r
++ * \r
++ * <p>The following schema fragment specifies the expected content contained within this class.\r
++ * \r
++ * <pre>\r
++ * <complexType name="CT_InverseGammaTransform">\r
++ * <complexContent>\r
++ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ * </restriction>\r
++ * </complexContent>\r
++ * </complexType>\r
++ * </pre>\r
++ * \r
++ * \r
++ */\r
++@XmlAccessorType(XmlAccessType.FIELD)\r
++@XmlType(name = "CT_InverseGammaTransform", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")\r
++public class CTInverseGammaTransform {\r
++\r
++\r
++}\r
--- /dev/null
--- /dev/null
++/* ====================================================================\r
++ Licensed to the Apache Software Foundation (ASF) under one or more\r
++ contributor license agreements. See the NOTICE file distributed with\r
++ this work for additional information regarding copyright ownership.\r
++ The ASF licenses this file to You under the Apache License, Version 2.0\r
++ (the "License"); you may not use this file except in compliance with\r
++ the License. You may obtain a copy of the License at\r
++\r
++ http://www.apache.org/licenses/LICENSE-2.0\r
++\r
++ Unless required by applicable law or agreed to in writing, software\r
++ distributed under the License is distributed on an "AS IS" BASIS,\r
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ See the License for the specific language governing permissions and\r
++ limitations under the License.\r
++==================================================================== */\r
++\r
++package org.apache.poi.sl.draw.binding;\r
++\r
++import javax.xml.bind.annotation.XmlAccessType;\r
++import javax.xml.bind.annotation.XmlAccessorType;\r
++import javax.xml.bind.annotation.XmlType;\r
++\r
++\r
++/**\r
++ * <p>Java class for CT_InverseTransform complex type.\r
++ * \r
++ * <p>The following schema fragment specifies the expected content contained within this class.\r
++ * \r
++ * <pre>\r
++ * <complexType name="CT_InverseTransform">\r
++ * <complexContent>\r
++ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ * </restriction>\r
++ * </complexContent>\r
++ * </complexType>\r
++ * </pre>\r
++ * \r
++ * \r
++ */\r
++@XmlAccessorType(XmlAccessType.FIELD)\r
++@XmlType(name = "CT_InverseTransform", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")\r
++public class CTInverseTransform {\r
++\r
++\r
++}\r
--- /dev/null
--- /dev/null
++/* ====================================================================\r
++ Licensed to the Apache Software Foundation (ASF) under one or more\r
++ contributor license agreements. See the NOTICE file distributed with\r
++ this work for additional information regarding copyright ownership.\r
++ The ASF licenses this file to You under the Apache License, Version 2.0\r
++ (the "License"); you may not use this file except in compliance with\r
++ the License. You may obtain a copy of the License at\r
++\r
++ http://www.apache.org/licenses/LICENSE-2.0\r
++\r
++ Unless required by applicable law or agreed to in writing, software\r
++ distributed under the License is distributed on an "AS IS" BASIS,\r
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ See the License for the specific language governing permissions and\r
++ limitations under the License.\r
++==================================================================== */\r
++\r
++package org.apache.poi.sl.draw.binding;\r
++\r
++import javax.xml.bind.annotation.XmlAccessType;\r
++import javax.xml.bind.annotation.XmlAccessorType;\r
++import javax.xml.bind.annotation.XmlAnyElement;\r
++import javax.xml.bind.annotation.XmlAttribute;\r
++import javax.xml.bind.annotation.XmlSchemaType;\r
++import javax.xml.bind.annotation.XmlType;\r
++import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;\r
++import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;\r
++import org.w3c.dom.Element;\r
++\r
++\r
++/**\r
++ * <p>Java class for CT_OfficeArtExtension complex type.\r
++ * \r
++ * <p>The following schema fragment specifies the expected content contained within this class.\r
++ * \r
++ * <pre>\r
++ * <complexType name="CT_OfficeArtExtension">\r
++ * <complexContent>\r
++ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ * <sequence>\r
++ * <any processContents='lax'/>\r
++ * </sequence>\r
++ * <attribute name="uri" type="{http://www.w3.org/2001/XMLSchema}token" />\r
++ * </restriction>\r
++ * </complexContent>\r
++ * </complexType>\r
++ * </pre>\r
++ * \r
++ * \r
++ */\r
++@XmlAccessorType(XmlAccessType.FIELD)\r
++@XmlType(name = "CT_OfficeArtExtension", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", propOrder = {\r
++ "any"\r
++})\r
++public class CTOfficeArtExtension {\r
++\r
++ @XmlAnyElement(lax = true)\r
++ protected Object any;\r
++ @XmlAttribute(name = "uri")\r
++ @XmlJavaTypeAdapter(CollapsedStringAdapter.class)\r
++ @XmlSchemaType(name = "token")\r
++ protected String uri;\r
++\r
++ /**\r
++ * Gets the value of the any property.\r
++ * \r
++ * @return\r
++ * possible object is\r
++ * {@link Object }\r
++ * {@link Element }\r
++ * \r
++ */\r
++ public Object getAny() {\r
++ return any;\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the any property.\r
++ * \r
++ * @param value\r
++ * allowed object is\r
++ * {@link Object }\r
++ * {@link Element }\r
++ * \r
++ */\r
++ public void setAny(Object value) {\r
++ this.any = value;\r
++ }\r
++\r
++ public boolean isSetAny() {\r
++ return (this.any!= null);\r
++ }\r
++\r
++ /**\r
++ * Gets the value of the uri property.\r
++ * \r
++ * @return\r
++ * possible object is\r
++ * {@link String }\r
++ * \r
++ */\r
++ public String getUri() {\r
++ return uri;\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the uri property.\r
++ * \r
++ * @param value\r
++ * allowed object is\r
++ * {@link String }\r
++ * \r
++ */\r
++ public void setUri(String value) {\r
++ this.uri = value;\r
++ }\r
++\r
++ public boolean isSetUri() {\r
++ return (this.uri!= null);\r
++ }\r
++\r
++}\r
--- /dev/null
--- /dev/null
++/* ====================================================================\r
++ Licensed to the Apache Software Foundation (ASF) under one or more\r
++ contributor license agreements. See the NOTICE file distributed with\r
++ this work for additional information regarding copyright ownership.\r
++ The ASF licenses this file to You under the Apache License, Version 2.0\r
++ (the "License"); you may not use this file except in compliance with\r
++ the License. You may obtain a copy of the License at\r
++\r
++ http://www.apache.org/licenses/LICENSE-2.0\r
++\r
++ Unless required by applicable law or agreed to in writing, software\r
++ distributed under the License is distributed on an "AS IS" BASIS,\r
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ See the License for the specific language governing permissions and\r
++ limitations under the License.\r
++==================================================================== */\r
++\r
++package org.apache.poi.sl.draw.binding;\r
++\r
++import java.util.ArrayList;\r
++import java.util.List;\r
++import javax.xml.bind.annotation.XmlAccessType;\r
++import javax.xml.bind.annotation.XmlAccessorType;\r
++import javax.xml.bind.annotation.XmlElement;\r
++import javax.xml.bind.annotation.XmlType;\r
++\r
++\r
++/**\r
++ * <p>Java class for CT_OfficeArtExtensionList complex type.\r
++ * \r
++ * <p>The following schema fragment specifies the expected content contained within this class.\r
++ * \r
++ * <pre>\r
++ * <complexType name="CT_OfficeArtExtensionList">\r
++ * <complexContent>\r
++ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ * <sequence>\r
++ * <group ref="{http://schemas.openxmlformats.org/drawingml/2006/main}EG_OfficeArtExtensionList"/>\r
++ * </sequence>\r
++ * </restriction>\r
++ * </complexContent>\r
++ * </complexType>\r
++ * </pre>\r
++ * \r
++ * \r
++ */\r
++@XmlAccessorType(XmlAccessType.FIELD)\r
++@XmlType(name = "CT_OfficeArtExtensionList", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", propOrder = {\r
++ "ext"\r
++})\r
++public class CTOfficeArtExtensionList {\r
++\r
++ @XmlElement(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")\r
++ protected List<CTOfficeArtExtension> ext;\r
++\r
++ /**\r
++ * Gets the value of the ext property.\r
++ * \r
++ * <p>\r
++ * This accessor method returns a reference to the live list,\r
++ * not a snapshot. Therefore any modification you make to the\r
++ * returned list will be present inside the JAXB object.\r
++ * This is why there is not a <CODE>set</CODE> method for the ext property.\r
++ * \r
++ * <p>\r
++ * For example, to add a new item, do as follows:\r
++ * <pre>\r
++ * getExt().add(newItem);\r
++ * </pre>\r
++ * \r
++ * \r
++ * <p>\r
++ * Objects of the following type(s) are allowed in the list\r
++ * {@link CTOfficeArtExtension }\r
++ * \r
++ * \r
++ */\r
++ public List<CTOfficeArtExtension> getExt() {\r
++ if (ext == null) {\r
++ ext = new ArrayList<CTOfficeArtExtension>();\r
++ }\r
++ return this.ext;\r
++ }\r
++\r
++ public boolean isSetExt() {\r
++ return ((this.ext!= null)&&(!this.ext.isEmpty()));\r
++ }\r
++\r
++ public void unsetExt() {\r
++ this.ext = null;\r
++ }\r
++\r
++}\r
--- /dev/null
--- /dev/null
++/* ====================================================================\r
++ Licensed to the Apache Software Foundation (ASF) under one or more\r
++ contributor license agreements. See the NOTICE file distributed with\r
++ this work for additional information regarding copyright ownership.\r
++ The ASF licenses this file to You under the Apache License, Version 2.0\r
++ (the "License"); you may not use this file except in compliance with\r
++ the License. You may obtain a copy of the License at\r
++\r
++ http://www.apache.org/licenses/LICENSE-2.0\r
++\r
++ Unless required by applicable law or agreed to in writing, software\r
++ distributed under the License is distributed on an "AS IS" BASIS,\r
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ See the License for the specific language governing permissions and\r
++ limitations under the License.\r
++==================================================================== */\r
++\r
++package org.apache.poi.sl.draw.binding;\r
++\r
++import java.util.ArrayList;\r
++import java.util.List;\r
++import javax.xml.bind.annotation.XmlAccessType;\r
++import javax.xml.bind.annotation.XmlAccessorType;\r
++import javax.xml.bind.annotation.XmlAttribute;\r
++import javax.xml.bind.annotation.XmlElement;\r
++import javax.xml.bind.annotation.XmlElements;\r
++import javax.xml.bind.annotation.XmlType;\r
++\r
++\r
++/**\r
++ * <p>Java class for CT_Path2D complex type.\r
++ * \r
++ * <p>The following schema fragment specifies the expected content contained within this class.\r
++ * \r
++ * <pre>\r
++ * <complexType name="CT_Path2D">\r
++ * <complexContent>\r
++ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ * <choice maxOccurs="unbounded" minOccurs="0">\r
++ * <element name="close" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_Path2DClose"/>\r
++ * <element name="moveTo" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_Path2DMoveTo"/>\r
++ * <element name="lnTo" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_Path2DLineTo"/>\r
++ * <element name="arcTo" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_Path2DArcTo"/>\r
++ * <element name="quadBezTo" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_Path2DQuadBezierTo"/>\r
++ * <element name="cubicBezTo" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_Path2DCubicBezierTo"/>\r
++ * </choice>\r
++ * <attribute name="w" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_PositiveCoordinate" default="0" />\r
++ * <attribute name="h" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_PositiveCoordinate" default="0" />\r
++ * <attribute name="fill" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_PathFillMode" default="norm" />\r
++ * <attribute name="stroke" type="{http://www.w3.org/2001/XMLSchema}boolean" default="true" />\r
++ * <attribute name="extrusionOk" type="{http://www.w3.org/2001/XMLSchema}boolean" default="true" />\r
++ * </restriction>\r
++ * </complexContent>\r
++ * </complexType>\r
++ * </pre>\r
++ * \r
++ * \r
++ */\r
++@XmlAccessorType(XmlAccessType.FIELD)\r
++@XmlType(name = "CT_Path2D", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", propOrder = {\r
++ "closeOrMoveToOrLnTo"\r
++})\r
++public class CTPath2D {\r
++\r
++ @XmlElements({\r
++ @XmlElement(name = "close", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = CTPath2DClose.class),\r
++ @XmlElement(name = "moveTo", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = CTPath2DMoveTo.class),\r
++ @XmlElement(name = "lnTo", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = CTPath2DLineTo.class),\r
++ @XmlElement(name = "arcTo", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = CTPath2DArcTo.class),\r
++ @XmlElement(name = "quadBezTo", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = CTPath2DQuadBezierTo.class),\r
++ @XmlElement(name = "cubicBezTo", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = CTPath2DCubicBezierTo.class)\r
++ })\r
++ protected List<Object> closeOrMoveToOrLnTo;\r
++ @XmlAttribute(name = "w")\r
++ protected Long w;\r
++ @XmlAttribute(name = "h")\r
++ protected Long h;\r
++ @XmlAttribute(name = "fill")\r
++ protected STPathFillMode fill;\r
++ @XmlAttribute(name = "stroke")\r
++ protected Boolean stroke;\r
++ @XmlAttribute(name = "extrusionOk")\r
++ protected Boolean extrusionOk;\r
++\r
++ /**\r
++ * Gets the value of the closeOrMoveToOrLnTo property.\r
++ * \r
++ * <p>\r
++ * This accessor method returns a reference to the live list,\r
++ * not a snapshot. Therefore any modification you make to the\r
++ * returned list will be present inside the JAXB object.\r
++ * This is why there is not a <CODE>set</CODE> method for the closeOrMoveToOrLnTo property.\r
++ * \r
++ * <p>\r
++ * For example, to add a new item, do as follows:\r
++ * <pre>\r
++ * getCloseOrMoveToOrLnTo().add(newItem);\r
++ * </pre>\r
++ * \r
++ * \r
++ * <p>\r
++ * Objects of the following type(s) are allowed in the list\r
++ * {@link CTPath2DClose }\r
++ * {@link CTPath2DMoveTo }\r
++ * {@link CTPath2DLineTo }\r
++ * {@link CTPath2DArcTo }\r
++ * {@link CTPath2DQuadBezierTo }\r
++ * {@link CTPath2DCubicBezierTo }\r
++ * \r
++ * \r
++ */\r
++ public List<Object> getCloseOrMoveToOrLnTo() {\r
++ if (closeOrMoveToOrLnTo == null) {\r
++ closeOrMoveToOrLnTo = new ArrayList<Object>();\r
++ }\r
++ return this.closeOrMoveToOrLnTo;\r
++ }\r
++\r
++ public boolean isSetCloseOrMoveToOrLnTo() {\r
++ return ((this.closeOrMoveToOrLnTo!= null)&&(!this.closeOrMoveToOrLnTo.isEmpty()));\r
++ }\r
++\r
++ public void unsetCloseOrMoveToOrLnTo() {\r
++ this.closeOrMoveToOrLnTo = null;\r
++ }\r
++\r
++ /**\r
++ * Gets the value of the w property.\r
++ * \r
++ * @return\r
++ * possible object is\r
++ * {@link Long }\r
++ * \r
++ */\r
++ public long getW() {\r
++ if (w == null) {\r
++ return 0L;\r
++ } else {\r
++ return w;\r
++ }\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the w property.\r
++ * \r
++ * @param value\r
++ * allowed object is\r
++ * {@link Long }\r
++ * \r
++ */\r
++ public void setW(long value) {\r
++ this.w = value;\r
++ }\r
++\r
++ public boolean isSetW() {\r
++ return (this.w!= null);\r
++ }\r
++\r
++ public void unsetW() {\r
++ this.w = null;\r
++ }\r
++\r
++ /**\r
++ * Gets the value of the h property.\r
++ * \r
++ * @return\r
++ * possible object is\r
++ * {@link Long }\r
++ * \r
++ */\r
++ public long getH() {\r
++ if (h == null) {\r
++ return 0L;\r
++ } else {\r
++ return h;\r
++ }\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the h property.\r
++ * \r
++ * @param value\r
++ * allowed object is\r
++ * {@link Long }\r
++ * \r
++ */\r
++ public void setH(long value) {\r
++ this.h = value;\r
++ }\r
++\r
++ public boolean isSetH() {\r
++ return (this.h!= null);\r
++ }\r
++\r
++ public void unsetH() {\r
++ this.h = null;\r
++ }\r
++\r
++ /**\r
++ * Gets the value of the fill property.\r
++ * \r
++ * @return\r
++ * possible object is\r
++ * {@link STPathFillMode }\r
++ * \r
++ */\r
++ public STPathFillMode getFill() {\r
++ if (fill == null) {\r
++ return STPathFillMode.NORM;\r
++ } else {\r
++ return fill;\r
++ }\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the fill property.\r
++ * \r
++ * @param value\r
++ * allowed object is\r
++ * {@link STPathFillMode }\r
++ * \r
++ */\r
++ public void setFill(STPathFillMode value) {\r
++ this.fill = value;\r
++ }\r
++\r
++ public boolean isSetFill() {\r
++ return (this.fill!= null);\r
++ }\r
++\r
++ /**\r
++ * Gets the value of the stroke property.\r
++ * \r
++ * @return\r
++ * possible object is\r
++ * {@link Boolean }\r
++ * \r
++ */\r
++ public boolean isStroke() {\r
++ if (stroke == null) {\r
++ return true;\r
++ } else {\r
++ return stroke;\r
++ }\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the stroke property.\r
++ * \r
++ * @param value\r
++ * allowed object is\r
++ * {@link Boolean }\r
++ * \r
++ */\r
++ public void setStroke(boolean value) {\r
++ this.stroke = value;\r
++ }\r
++\r
++ public boolean isSetStroke() {\r
++ return (this.stroke!= null);\r
++ }\r
++\r
++ public void unsetStroke() {\r
++ this.stroke = null;\r
++ }\r
++\r
++ /**\r
++ * Gets the value of the extrusionOk property.\r
++ * \r
++ * @return\r
++ * possible object is\r
++ * {@link Boolean }\r
++ * \r
++ */\r
++ public boolean isExtrusionOk() {\r
++ if (extrusionOk == null) {\r
++ return true;\r
++ } else {\r
++ return extrusionOk;\r
++ }\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the extrusionOk property.\r
++ * \r
++ * @param value\r
++ * allowed object is\r
++ * {@link Boolean }\r
++ * \r
++ */\r
++ public void setExtrusionOk(boolean value) {\r
++ this.extrusionOk = value;\r
++ }\r
++\r
++ public boolean isSetExtrusionOk() {\r
++ return (this.extrusionOk!= null);\r
++ }\r
++\r
++ public void unsetExtrusionOk() {\r
++ this.extrusionOk = null;\r
++ }\r
++\r
++}\r
--- /dev/null
--- /dev/null
++/* ====================================================================\r
++ Licensed to the Apache Software Foundation (ASF) under one or more\r
++ contributor license agreements. See the NOTICE file distributed with\r
++ this work for additional information regarding copyright ownership.\r
++ The ASF licenses this file to You under the Apache License, Version 2.0\r
++ (the "License"); you may not use this file except in compliance with\r
++ the License. You may obtain a copy of the License at\r
++\r
++ http://www.apache.org/licenses/LICENSE-2.0\r
++\r
++ Unless required by applicable law or agreed to in writing, software\r
++ distributed under the License is distributed on an "AS IS" BASIS,\r
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ See the License for the specific language governing permissions and\r
++ limitations under the License.\r
++==================================================================== */\r
++\r
++package org.apache.poi.sl.draw.binding;\r
++\r
++import javax.xml.bind.annotation.XmlAccessType;\r
++import javax.xml.bind.annotation.XmlAccessorType;\r
++import javax.xml.bind.annotation.XmlAttribute;\r
++import javax.xml.bind.annotation.XmlType;\r
++\r
++\r
++/**\r
++ * <p>Java class for CT_Path2DArcTo complex type.\r
++ * \r
++ * <p>The following schema fragment specifies the expected content contained within this class.\r
++ * \r
++ * <pre>\r
++ * <complexType name="CT_Path2DArcTo">\r
++ * <complexContent>\r
++ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ * <attribute name="wR" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_AdjCoordinate" />\r
++ * <attribute name="hR" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_AdjCoordinate" />\r
++ * <attribute name="stAng" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_AdjAngle" />\r
++ * <attribute name="swAng" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_AdjAngle" />\r
++ * </restriction>\r
++ * </complexContent>\r
++ * </complexType>\r
++ * </pre>\r
++ * \r
++ * \r
++ */\r
++@XmlAccessorType(XmlAccessType.FIELD)\r
++@XmlType(name = "CT_Path2DArcTo", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")\r
++public class CTPath2DArcTo {\r
++\r
++ @XmlAttribute(name = "wR", required = true)\r
++ protected String wr;\r
++ @XmlAttribute(name = "hR", required = true)\r
++ protected String hr;\r
++ @XmlAttribute(name = "stAng", required = true)\r
++ protected String stAng;\r
++ @XmlAttribute(name = "swAng", required = true)\r
++ protected String swAng;\r
++\r
++ /**\r
++ * Gets the value of the wr property.\r
++ * \r
++ * @return\r
++ * possible object is\r
++ * {@link String }\r
++ * \r
++ */\r
++ public String getWR() {\r
++ return wr;\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the wr property.\r
++ * \r
++ * @param value\r
++ * allowed object is\r
++ * {@link String }\r
++ * \r
++ */\r
++ public void setWR(String value) {\r
++ this.wr = value;\r
++ }\r
++\r
++ public boolean isSetWR() {\r
++ return (this.wr!= null);\r
++ }\r
++\r
++ /**\r
++ * Gets the value of the hr property.\r
++ * \r
++ * @return\r
++ * possible object is\r
++ * {@link String }\r
++ * \r
++ */\r
++ public String getHR() {\r
++ return hr;\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the hr property.\r
++ * \r
++ * @param value\r
++ * allowed object is\r
++ * {@link String }\r
++ * \r
++ */\r
++ public void setHR(String value) {\r
++ this.hr = value;\r
++ }\r
++\r
++ public boolean isSetHR() {\r
++ return (this.hr!= null);\r
++ }\r
++\r
++ /**\r
++ * Gets the value of the stAng property.\r
++ * \r
++ * @return\r
++ * possible object is\r
++ * {@link String }\r
++ * \r
++ */\r
++ public String getStAng() {\r
++ return stAng;\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the stAng property.\r
++ * \r
++ * @param value\r
++ * allowed object is\r
++ * {@link String }\r
++ * \r
++ */\r
++ public void setStAng(String value) {\r
++ this.stAng = value;\r
++ }\r
++\r
++ public boolean isSetStAng() {\r
++ return (this.stAng!= null);\r
++ }\r
++\r
++ /**\r
++ * Gets the value of the swAng property.\r
++ * \r
++ * @return\r
++ * possible object is\r
++ * {@link String }\r
++ * \r
++ */\r
++ public String getSwAng() {\r
++ return swAng;\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the swAng property.\r
++ * \r
++ * @param value\r
++ * allowed object is\r
++ * {@link String }\r
++ * \r
++ */\r
++ public void setSwAng(String value) {\r
++ this.swAng = value;\r
++ }\r
++\r
++ public boolean isSetSwAng() {\r
++ return (this.swAng!= null);\r
++ }\r
++\r
++}\r
--- /dev/null
--- /dev/null
++/* ====================================================================\r
++ Licensed to the Apache Software Foundation (ASF) under one or more\r
++ contributor license agreements. See the NOTICE file distributed with\r
++ this work for additional information regarding copyright ownership.\r
++ The ASF licenses this file to You under the Apache License, Version 2.0\r
++ (the "License"); you may not use this file except in compliance with\r
++ the License. You may obtain a copy of the License at\r
++\r
++ http://www.apache.org/licenses/LICENSE-2.0\r
++\r
++ Unless required by applicable law or agreed to in writing, software\r
++ distributed under the License is distributed on an "AS IS" BASIS,\r
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ See the License for the specific language governing permissions and\r
++ limitations under the License.\r
++==================================================================== */\r
++\r
++package org.apache.poi.sl.draw.binding;\r
++\r
++import javax.xml.bind.annotation.XmlAccessType;\r
++import javax.xml.bind.annotation.XmlAccessorType;\r
++import javax.xml.bind.annotation.XmlType;\r
++\r
++\r
++/**\r
++ * <p>Java class for CT_Path2DClose complex type.\r
++ * \r
++ * <p>The following schema fragment specifies the expected content contained within this class.\r
++ * \r
++ * <pre>\r
++ * <complexType name="CT_Path2DClose">\r
++ * <complexContent>\r
++ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ * </restriction>\r
++ * </complexContent>\r
++ * </complexType>\r
++ * </pre>\r
++ * \r
++ * \r
++ */\r
++@XmlAccessorType(XmlAccessType.FIELD)\r
++@XmlType(name = "CT_Path2DClose", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")\r
++public class CTPath2DClose {\r
++\r
++\r
++}\r
--- /dev/null
--- /dev/null
++/* ====================================================================\r
++ Licensed to the Apache Software Foundation (ASF) under one or more\r
++ contributor license agreements. See the NOTICE file distributed with\r
++ this work for additional information regarding copyright ownership.\r
++ The ASF licenses this file to You under the Apache License, Version 2.0\r
++ (the "License"); you may not use this file except in compliance with\r
++ the License. You may obtain a copy of the License at\r
++\r
++ http://www.apache.org/licenses/LICENSE-2.0\r
++\r
++ Unless required by applicable law or agreed to in writing, software\r
++ distributed under the License is distributed on an "AS IS" BASIS,\r
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ See the License for the specific language governing permissions and\r
++ limitations under the License.\r
++==================================================================== */\r
++\r
++package org.apache.poi.sl.draw.binding;\r
++\r
++import java.util.ArrayList;\r
++import java.util.List;\r
++import javax.xml.bind.annotation.XmlAccessType;\r
++import javax.xml.bind.annotation.XmlAccessorType;\r
++import javax.xml.bind.annotation.XmlElement;\r
++import javax.xml.bind.annotation.XmlType;\r
++\r
++\r
++/**\r
++ * <p>Java class for CT_Path2DCubicBezierTo complex type.\r
++ * \r
++ * <p>The following schema fragment specifies the expected content contained within this class.\r
++ * \r
++ * <pre>\r
++ * <complexType name="CT_Path2DCubicBezierTo">\r
++ * <complexContent>\r
++ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ * <sequence>\r
++ * <element name="pt" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_AdjPoint2D" maxOccurs="3" minOccurs="3"/>\r
++ * </sequence>\r
++ * </restriction>\r
++ * </complexContent>\r
++ * </complexType>\r
++ * </pre>\r
++ * \r
++ * \r
++ */\r
++@XmlAccessorType(XmlAccessType.FIELD)\r
++@XmlType(name = "CT_Path2DCubicBezierTo", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", propOrder = {\r
++ "pt"\r
++})\r
++public class CTPath2DCubicBezierTo {\r
++\r
++ @XmlElement(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", required = true)\r
++ protected List<CTAdjPoint2D> pt;\r
++\r
++ /**\r
++ * Gets the value of the pt property.\r
++ * \r
++ * <p>\r
++ * This accessor method returns a reference to the live list,\r
++ * not a snapshot. Therefore any modification you make to the\r
++ * returned list will be present inside the JAXB object.\r
++ * This is why there is not a <CODE>set</CODE> method for the pt property.\r
++ * \r
++ * <p>\r
++ * For example, to add a new item, do as follows:\r
++ * <pre>\r
++ * getPt().add(newItem);\r
++ * </pre>\r
++ * \r
++ * \r
++ * <p>\r
++ * Objects of the following type(s) are allowed in the list\r
++ * {@link CTAdjPoint2D }\r
++ * \r
++ * \r
++ */\r
++ public List<CTAdjPoint2D> getPt() {\r
++ if (pt == null) {\r
++ pt = new ArrayList<CTAdjPoint2D>();\r
++ }\r
++ return this.pt;\r
++ }\r
++\r
++ public boolean isSetPt() {\r
++ return ((this.pt!= null)&&(!this.pt.isEmpty()));\r
++ }\r
++\r
++ public void unsetPt() {\r
++ this.pt = null;\r
++ }\r
++\r
++}\r
--- /dev/null
--- /dev/null
++/* ====================================================================\r
++ Licensed to the Apache Software Foundation (ASF) under one or more\r
++ contributor license agreements. See the NOTICE file distributed with\r
++ this work for additional information regarding copyright ownership.\r
++ The ASF licenses this file to You under the Apache License, Version 2.0\r
++ (the "License"); you may not use this file except in compliance with\r
++ the License. You may obtain a copy of the License at\r
++\r
++ http://www.apache.org/licenses/LICENSE-2.0\r
++\r
++ Unless required by applicable law or agreed to in writing, software\r
++ distributed under the License is distributed on an "AS IS" BASIS,\r
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ See the License for the specific language governing permissions and\r
++ limitations under the License.\r
++==================================================================== */\r
++\r
++package org.apache.poi.sl.draw.binding;\r
++\r
++import javax.xml.bind.annotation.XmlAccessType;\r
++import javax.xml.bind.annotation.XmlAccessorType;\r
++import javax.xml.bind.annotation.XmlElement;\r
++import javax.xml.bind.annotation.XmlType;\r
++\r
++\r
++/**\r
++ * <p>Java class for CT_Path2DLineTo complex type.\r
++ * \r
++ * <p>The following schema fragment specifies the expected content contained within this class.\r
++ * \r
++ * <pre>\r
++ * <complexType name="CT_Path2DLineTo">\r
++ * <complexContent>\r
++ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ * <sequence>\r
++ * <element name="pt" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_AdjPoint2D"/>\r
++ * </sequence>\r
++ * </restriction>\r
++ * </complexContent>\r
++ * </complexType>\r
++ * </pre>\r
++ * \r
++ * \r
++ */\r
++@XmlAccessorType(XmlAccessType.FIELD)\r
++@XmlType(name = "CT_Path2DLineTo", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", propOrder = {\r
++ "pt"\r
++})\r
++public class CTPath2DLineTo {\r
++\r
++ @XmlElement(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", required = true)\r
++ protected CTAdjPoint2D pt;\r
++\r
++ /**\r
++ * Gets the value of the pt property.\r
++ * \r
++ * @return\r
++ * possible object is\r
++ * {@link CTAdjPoint2D }\r
++ * \r
++ */\r
++ public CTAdjPoint2D getPt() {\r
++ return pt;\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the pt property.\r
++ * \r
++ * @param value\r
++ * allowed object is\r
++ * {@link CTAdjPoint2D }\r
++ * \r
++ */\r
++ public void setPt(CTAdjPoint2D value) {\r
++ this.pt = value;\r
++ }\r
++\r
++ public boolean isSetPt() {\r
++ return (this.pt!= null);\r
++ }\r
++\r
++}\r
--- /dev/null
--- /dev/null
++/* ====================================================================\r
++ Licensed to the Apache Software Foundation (ASF) under one or more\r
++ contributor license agreements. See the NOTICE file distributed with\r
++ this work for additional information regarding copyright ownership.\r
++ The ASF licenses this file to You under the Apache License, Version 2.0\r
++ (the "License"); you may not use this file except in compliance with\r
++ the License. You may obtain a copy of the License at\r
++\r
++ http://www.apache.org/licenses/LICENSE-2.0\r
++\r
++ Unless required by applicable law or agreed to in writing, software\r
++ distributed under the License is distributed on an "AS IS" BASIS,\r
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ See the License for the specific language governing permissions and\r
++ limitations under the License.\r
++==================================================================== */\r
++\r
++package org.apache.poi.sl.draw.binding;\r
++\r
++import java.util.ArrayList;\r
++import java.util.List;\r
++import javax.xml.bind.annotation.XmlAccessType;\r
++import javax.xml.bind.annotation.XmlAccessorType;\r
++import javax.xml.bind.annotation.XmlElement;\r
++import javax.xml.bind.annotation.XmlType;\r
++\r
++\r
++/**\r
++ * <p>Java class for CT_Path2DList complex type.\r
++ * \r
++ * <p>The following schema fragment specifies the expected content contained within this class.\r
++ * \r
++ * <pre>\r
++ * <complexType name="CT_Path2DList">\r
++ * <complexContent>\r
++ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ * <sequence>\r
++ * <element name="path" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_Path2D" maxOccurs="unbounded" minOccurs="0"/>\r
++ * </sequence>\r
++ * </restriction>\r
++ * </complexContent>\r
++ * </complexType>\r
++ * </pre>\r
++ * \r
++ * \r
++ */\r
++@XmlAccessorType(XmlAccessType.FIELD)\r
++@XmlType(name = "CT_Path2DList", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", propOrder = {\r
++ "path"\r
++})\r
++public class CTPath2DList {\r
++\r
++ @XmlElement(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")\r
++ protected List<CTPath2D> path;\r
++\r
++ /**\r
++ * Gets the value of the path property.\r
++ * \r
++ * <p>\r
++ * This accessor method returns a reference to the live list,\r
++ * not a snapshot. Therefore any modification you make to the\r
++ * returned list will be present inside the JAXB object.\r
++ * This is why there is not a <CODE>set</CODE> method for the path property.\r
++ * \r
++ * <p>\r
++ * For example, to add a new item, do as follows:\r
++ * <pre>\r
++ * getPath().add(newItem);\r
++ * </pre>\r
++ * \r
++ * \r
++ * <p>\r
++ * Objects of the following type(s) are allowed in the list\r
++ * {@link CTPath2D }\r
++ * \r
++ * \r
++ */\r
++ public List<CTPath2D> getPath() {\r
++ if (path == null) {\r
++ path = new ArrayList<CTPath2D>();\r
++ }\r
++ return this.path;\r
++ }\r
++\r
++ public boolean isSetPath() {\r
++ return ((this.path!= null)&&(!this.path.isEmpty()));\r
++ }\r
++\r
++ public void unsetPath() {\r
++ this.path = null;\r
++ }\r
++\r
++}\r
--- /dev/null
--- /dev/null
++/* ====================================================================\r
++ Licensed to the Apache Software Foundation (ASF) under one or more\r
++ contributor license agreements. See the NOTICE file distributed with\r
++ this work for additional information regarding copyright ownership.\r
++ The ASF licenses this file to You under the Apache License, Version 2.0\r
++ (the "License"); you may not use this file except in compliance with\r
++ the License. You may obtain a copy of the License at\r
++\r
++ http://www.apache.org/licenses/LICENSE-2.0\r
++\r
++ Unless required by applicable law or agreed to in writing, software\r
++ distributed under the License is distributed on an "AS IS" BASIS,\r
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ See the License for the specific language governing permissions and\r
++ limitations under the License.\r
++==================================================================== */\r
++\r
++package org.apache.poi.sl.draw.binding;\r
++\r
++import javax.xml.bind.annotation.XmlAccessType;\r
++import javax.xml.bind.annotation.XmlAccessorType;\r
++import javax.xml.bind.annotation.XmlElement;\r
++import javax.xml.bind.annotation.XmlType;\r
++\r
++\r
++/**\r
++ * <p>Java class for CT_Path2DMoveTo complex type.\r
++ * \r
++ * <p>The following schema fragment specifies the expected content contained within this class.\r
++ * \r
++ * <pre>\r
++ * <complexType name="CT_Path2DMoveTo">\r
++ * <complexContent>\r
++ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ * <sequence>\r
++ * <element name="pt" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_AdjPoint2D"/>\r
++ * </sequence>\r
++ * </restriction>\r
++ * </complexContent>\r
++ * </complexType>\r
++ * </pre>\r
++ * \r
++ * \r
++ */\r
++@XmlAccessorType(XmlAccessType.FIELD)\r
++@XmlType(name = "CT_Path2DMoveTo", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", propOrder = {\r
++ "pt"\r
++})\r
++public class CTPath2DMoveTo {\r
++\r
++ @XmlElement(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", required = true)\r
++ protected CTAdjPoint2D pt;\r
++\r
++ /**\r
++ * Gets the value of the pt property.\r
++ * \r
++ * @return\r
++ * possible object is\r
++ * {@link CTAdjPoint2D }\r
++ * \r
++ */\r
++ public CTAdjPoint2D getPt() {\r
++ return pt;\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the pt property.\r
++ * \r
++ * @param value\r
++ * allowed object is\r
++ * {@link CTAdjPoint2D }\r
++ * \r
++ */\r
++ public void setPt(CTAdjPoint2D value) {\r
++ this.pt = value;\r
++ }\r
++\r
++ public boolean isSetPt() {\r
++ return (this.pt!= null);\r
++ }\r
++\r
++}\r
--- /dev/null
--- /dev/null
++/* ====================================================================\r
++ Licensed to the Apache Software Foundation (ASF) under one or more\r
++ contributor license agreements. See the NOTICE file distributed with\r
++ this work for additional information regarding copyright ownership.\r
++ The ASF licenses this file to You under the Apache License, Version 2.0\r
++ (the "License"); you may not use this file except in compliance with\r
++ the License. You may obtain a copy of the License at\r
++\r
++ http://www.apache.org/licenses/LICENSE-2.0\r
++\r
++ Unless required by applicable law or agreed to in writing, software\r
++ distributed under the License is distributed on an "AS IS" BASIS,\r
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ See the License for the specific language governing permissions and\r
++ limitations under the License.\r
++==================================================================== */\r
++\r
++package org.apache.poi.sl.draw.binding;\r
++\r
++import java.util.ArrayList;\r
++import java.util.List;\r
++import javax.xml.bind.annotation.XmlAccessType;\r
++import javax.xml.bind.annotation.XmlAccessorType;\r
++import javax.xml.bind.annotation.XmlElement;\r
++import javax.xml.bind.annotation.XmlType;\r
++\r
++\r
++/**\r
++ * <p>Java class for CT_Path2DQuadBezierTo complex type.\r
++ * \r
++ * <p>The following schema fragment specifies the expected content contained within this class.\r
++ * \r
++ * <pre>\r
++ * <complexType name="CT_Path2DQuadBezierTo">\r
++ * <complexContent>\r
++ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ * <sequence>\r
++ * <element name="pt" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_AdjPoint2D" maxOccurs="2" minOccurs="2"/>\r
++ * </sequence>\r
++ * </restriction>\r
++ * </complexContent>\r
++ * </complexType>\r
++ * </pre>\r
++ * \r
++ * \r
++ */\r
++@XmlAccessorType(XmlAccessType.FIELD)\r
++@XmlType(name = "CT_Path2DQuadBezierTo", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", propOrder = {\r
++ "pt"\r
++})\r
++public class CTPath2DQuadBezierTo {\r
++\r
++ @XmlElement(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", required = true)\r
++ protected List<CTAdjPoint2D> pt;\r
++\r
++ /**\r
++ * Gets the value of the pt property.\r
++ * \r
++ * <p>\r
++ * This accessor method returns a reference to the live list,\r
++ * not a snapshot. Therefore any modification you make to the\r
++ * returned list will be present inside the JAXB object.\r
++ * This is why there is not a <CODE>set</CODE> method for the pt property.\r
++ * \r
++ * <p>\r
++ * For example, to add a new item, do as follows:\r
++ * <pre>\r
++ * getPt().add(newItem);\r
++ * </pre>\r
++ * \r
++ * \r
++ * <p>\r
++ * Objects of the following type(s) are allowed in the list\r
++ * {@link CTAdjPoint2D }\r
++ * \r
++ * \r
++ */\r
++ public List<CTAdjPoint2D> getPt() {\r
++ if (pt == null) {\r
++ pt = new ArrayList<CTAdjPoint2D>();\r
++ }\r
++ return this.pt;\r
++ }\r
++\r
++ public boolean isSetPt() {\r
++ return ((this.pt!= null)&&(!this.pt.isEmpty()));\r
++ }\r
++\r
++ public void unsetPt() {\r
++ this.pt = null;\r
++ }\r
++\r
++}\r
--- /dev/null
--- /dev/null
++/* ====================================================================\r
++ Licensed to the Apache Software Foundation (ASF) under one or more\r
++ contributor license agreements. See the NOTICE file distributed with\r
++ this work for additional information regarding copyright ownership.\r
++ The ASF licenses this file to You under the Apache License, Version 2.0\r
++ (the "License"); you may not use this file except in compliance with\r
++ the License. You may obtain a copy of the License at\r
++\r
++ http://www.apache.org/licenses/LICENSE-2.0\r
++\r
++ Unless required by applicable law or agreed to in writing, software\r
++ distributed under the License is distributed on an "AS IS" BASIS,\r
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ See the License for the specific language governing permissions and\r
++ limitations under the License.\r
++==================================================================== */\r
++\r
++package org.apache.poi.sl.draw.binding;\r
++\r
++import javax.xml.bind.annotation.XmlAccessType;\r
++import javax.xml.bind.annotation.XmlAccessorType;\r
++import javax.xml.bind.annotation.XmlAttribute;\r
++import javax.xml.bind.annotation.XmlType;\r
++\r
++\r
++/**\r
++ * <p>Java class for CT_Percentage complex type.\r
++ * \r
++ * <p>The following schema fragment specifies the expected content contained within this class.\r
++ * \r
++ * <pre>\r
++ * <complexType name="CT_Percentage">\r
++ * <complexContent>\r
++ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ * <attribute name="val" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_Percentage" />\r
++ * </restriction>\r
++ * </complexContent>\r
++ * </complexType>\r
++ * </pre>\r
++ * \r
++ * \r
++ */\r
++@XmlAccessorType(XmlAccessType.FIELD)\r
++@XmlType(name = "CT_Percentage", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")\r
++public class CTPercentage {\r
++\r
++ @XmlAttribute(name = "val", required = true)\r
++ protected int val;\r
++\r
++ /**\r
++ * Gets the value of the val property.\r
++ * \r
++ */\r
++ public int getVal() {\r
++ return val;\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the val property.\r
++ * \r
++ */\r
++ public void setVal(int value) {\r
++ this.val = value;\r
++ }\r
++\r
++ public boolean isSetVal() {\r
++ return true;\r
++ }\r
++\r
++}\r
--- /dev/null
--- /dev/null
++/* ====================================================================\r
++ Licensed to the Apache Software Foundation (ASF) under one or more\r
++ contributor license agreements. See the NOTICE file distributed with\r
++ this work for additional information regarding copyright ownership.\r
++ The ASF licenses this file to You under the Apache License, Version 2.0\r
++ (the "License"); you may not use this file except in compliance with\r
++ the License. You may obtain a copy of the License at\r
++\r
++ http://www.apache.org/licenses/LICENSE-2.0\r
++\r
++ Unless required by applicable law or agreed to in writing, software\r
++ distributed under the License is distributed on an "AS IS" BASIS,\r
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ See the License for the specific language governing permissions and\r
++ limitations under the License.\r
++==================================================================== */\r
++\r
++package org.apache.poi.sl.draw.binding;\r
++\r
++import javax.xml.bind.annotation.XmlAccessType;\r
++import javax.xml.bind.annotation.XmlAccessorType;\r
++import javax.xml.bind.annotation.XmlAttribute;\r
++import javax.xml.bind.annotation.XmlType;\r
++\r
++\r
++/**\r
++ * <p>Java class for CT_Point2D complex type.\r
++ * \r
++ * <p>The following schema fragment specifies the expected content contained within this class.\r
++ * \r
++ * <pre>\r
++ * <complexType name="CT_Point2D">\r
++ * <complexContent>\r
++ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ * <attribute name="x" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_Coordinate" />\r
++ * <attribute name="y" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_Coordinate" />\r
++ * </restriction>\r
++ * </complexContent>\r
++ * </complexType>\r
++ * </pre>\r
++ * \r
++ * \r
++ */\r
++@XmlAccessorType(XmlAccessType.FIELD)\r
++@XmlType(name = "CT_Point2D", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")\r
++public class CTPoint2D {\r
++\r
++ @XmlAttribute(name = "x", required = true)\r
++ protected long x;\r
++ @XmlAttribute(name = "y", required = true)\r
++ protected long y;\r
++\r
++ /**\r
++ * Gets the value of the x property.\r
++ * \r
++ */\r
++ public long getX() {\r
++ return x;\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the x property.\r
++ * \r
++ */\r
++ public void setX(long value) {\r
++ this.x = value;\r
++ }\r
++\r
++ public boolean isSetX() {\r
++ return true;\r
++ }\r
++\r
++ /**\r
++ * Gets the value of the y property.\r
++ * \r
++ */\r
++ public long getY() {\r
++ return y;\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the y property.\r
++ * \r
++ */\r
++ public void setY(long value) {\r
++ this.y = value;\r
++ }\r
++\r
++ public boolean isSetY() {\r
++ return true;\r
++ }\r
++\r
++}\r
--- /dev/null
--- /dev/null
++/* ====================================================================\r
++ Licensed to the Apache Software Foundation (ASF) under one or more\r
++ contributor license agreements. See the NOTICE file distributed with\r
++ this work for additional information regarding copyright ownership.\r
++ The ASF licenses this file to You under the Apache License, Version 2.0\r
++ (the "License"); you may not use this file except in compliance with\r
++ the License. You may obtain a copy of the License at\r
++\r
++ http://www.apache.org/licenses/LICENSE-2.0\r
++\r
++ Unless required by applicable law or agreed to in writing, software\r
++ distributed under the License is distributed on an "AS IS" BASIS,\r
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ See the License for the specific language governing permissions and\r
++ limitations under the License.\r
++==================================================================== */\r
++\r
++package org.apache.poi.sl.draw.binding;\r
++\r
++import javax.xml.bind.annotation.XmlAccessType;\r
++import javax.xml.bind.annotation.XmlAccessorType;\r
++import javax.xml.bind.annotation.XmlAttribute;\r
++import javax.xml.bind.annotation.XmlType;\r
++\r
++\r
++/**\r
++ * <p>Java class for CT_Point3D complex type.\r
++ * \r
++ * <p>The following schema fragment specifies the expected content contained within this class.\r
++ * \r
++ * <pre>\r
++ * <complexType name="CT_Point3D">\r
++ * <complexContent>\r
++ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ * <attribute name="x" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_Coordinate" />\r
++ * <attribute name="y" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_Coordinate" />\r
++ * <attribute name="z" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_Coordinate" />\r
++ * </restriction>\r
++ * </complexContent>\r
++ * </complexType>\r
++ * </pre>\r
++ * \r
++ * \r
++ */\r
++@XmlAccessorType(XmlAccessType.FIELD)\r
++@XmlType(name = "CT_Point3D", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")\r
++public class CTPoint3D {\r
++\r
++ @XmlAttribute(name = "x", required = true)\r
++ protected long x;\r
++ @XmlAttribute(name = "y", required = true)\r
++ protected long y;\r
++ @XmlAttribute(name = "z", required = true)\r
++ protected long z;\r
++\r
++ /**\r
++ * Gets the value of the x property.\r
++ * \r
++ */\r
++ public long getX() {\r
++ return x;\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the x property.\r
++ * \r
++ */\r
++ public void setX(long value) {\r
++ this.x = value;\r
++ }\r
++\r
++ public boolean isSetX() {\r
++ return true;\r
++ }\r
++\r
++ /**\r
++ * Gets the value of the y property.\r
++ * \r
++ */\r
++ public long getY() {\r
++ return y;\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the y property.\r
++ * \r
++ */\r
++ public void setY(long value) {\r
++ this.y = value;\r
++ }\r
++\r
++ public boolean isSetY() {\r
++ return true;\r
++ }\r
++\r
++ /**\r
++ * Gets the value of the z property.\r
++ * \r
++ */\r
++ public long getZ() {\r
++ return z;\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the z property.\r
++ * \r
++ */\r
++ public void setZ(long value) {\r
++ this.z = value;\r
++ }\r
++\r
++ public boolean isSetZ() {\r
++ return true;\r
++ }\r
++\r
++}\r
--- /dev/null
--- /dev/null
++/* ====================================================================\r
++ Licensed to the Apache Software Foundation (ASF) under one or more\r
++ contributor license agreements. See the NOTICE file distributed with\r
++ this work for additional information regarding copyright ownership.\r
++ The ASF licenses this file to You under the Apache License, Version 2.0\r
++ (the "License"); you may not use this file except in compliance with\r
++ the License. You may obtain a copy of the License at\r
++\r
++ http://www.apache.org/licenses/LICENSE-2.0\r
++\r
++ Unless required by applicable law or agreed to in writing, software\r
++ distributed under the License is distributed on an "AS IS" BASIS,\r
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ See the License for the specific language governing permissions and\r
++ limitations under the License.\r
++==================================================================== */\r
++\r
++package org.apache.poi.sl.draw.binding;\r
++\r
++import javax.xml.bind.annotation.XmlAccessType;\r
++import javax.xml.bind.annotation.XmlAccessorType;\r
++import javax.xml.bind.annotation.XmlAttribute;\r
++import javax.xml.bind.annotation.XmlElement;\r
++import javax.xml.bind.annotation.XmlType;\r
++import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;\r
++import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;\r
++\r
++\r
++/**\r
++ * <p>Java class for CT_PolarAdjustHandle complex type.\r
++ * \r
++ * <p>The following schema fragment specifies the expected content contained within this class.\r
++ * \r
++ * <pre>\r
++ * <complexType name="CT_PolarAdjustHandle">\r
++ * <complexContent>\r
++ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ * <sequence>\r
++ * <element name="pos" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_AdjPoint2D"/>\r
++ * </sequence>\r
++ * <attribute name="gdRefR" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_GeomGuideName" />\r
++ * <attribute name="minR" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_AdjCoordinate" />\r
++ * <attribute name="maxR" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_AdjCoordinate" />\r
++ * <attribute name="gdRefAng" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_GeomGuideName" />\r
++ * <attribute name="minAng" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_AdjAngle" />\r
++ * <attribute name="maxAng" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_AdjAngle" />\r
++ * </restriction>\r
++ * </complexContent>\r
++ * </complexType>\r
++ * </pre>\r
++ * \r
++ * \r
++ */\r
++@XmlAccessorType(XmlAccessType.FIELD)\r
++@XmlType(name = "CT_PolarAdjustHandle", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", propOrder = {\r
++ "pos"\r
++})\r
++public class CTPolarAdjustHandle {\r
++\r
++ @XmlElement(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", required = true)\r
++ protected CTAdjPoint2D pos;\r
++ @XmlAttribute(name = "gdRefR")\r
++ @XmlJavaTypeAdapter(CollapsedStringAdapter.class)\r
++ protected String gdRefR;\r
++ @XmlAttribute(name = "minR")\r
++ protected String minR;\r
++ @XmlAttribute(name = "maxR")\r
++ protected String maxR;\r
++ @XmlAttribute(name = "gdRefAng")\r
++ @XmlJavaTypeAdapter(CollapsedStringAdapter.class)\r
++ protected String gdRefAng;\r
++ @XmlAttribute(name = "minAng")\r
++ protected String minAng;\r
++ @XmlAttribute(name = "maxAng")\r
++ protected String maxAng;\r
++\r
++ /**\r
++ * Gets the value of the pos property.\r
++ * \r
++ * @return\r
++ * possible object is\r
++ * {@link CTAdjPoint2D }\r
++ * \r
++ */\r
++ public CTAdjPoint2D getPos() {\r
++ return pos;\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the pos property.\r
++ * \r
++ * @param value\r
++ * allowed object is\r
++ * {@link CTAdjPoint2D }\r
++ * \r
++ */\r
++ public void setPos(CTAdjPoint2D value) {\r
++ this.pos = value;\r
++ }\r
++\r
++ public boolean isSetPos() {\r
++ return (this.pos!= null);\r
++ }\r
++\r
++ /**\r
++ * Gets the value of the gdRefR property.\r
++ * \r
++ * @return\r
++ * possible object is\r
++ * {@link String }\r
++ * \r
++ */\r
++ public String getGdRefR() {\r
++ return gdRefR;\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the gdRefR property.\r
++ * \r
++ * @param value\r
++ * allowed object is\r
++ * {@link String }\r
++ * \r
++ */\r
++ public void setGdRefR(String value) {\r
++ this.gdRefR = value;\r
++ }\r
++\r
++ public boolean isSetGdRefR() {\r
++ return (this.gdRefR!= null);\r
++ }\r
++\r
++ /**\r
++ * Gets the value of the minR property.\r
++ * \r
++ * @return\r
++ * possible object is\r
++ * {@link String }\r
++ * \r
++ */\r
++ public String getMinR() {\r
++ return minR;\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the minR property.\r
++ * \r
++ * @param value\r
++ * allowed object is\r
++ * {@link String }\r
++ * \r
++ */\r
++ public void setMinR(String value) {\r
++ this.minR = value;\r
++ }\r
++\r
++ public boolean isSetMinR() {\r
++ return (this.minR!= null);\r
++ }\r
++\r
++ /**\r
++ * Gets the value of the maxR property.\r
++ * \r
++ * @return\r
++ * possible object is\r
++ * {@link String }\r
++ * \r
++ */\r
++ public String getMaxR() {\r
++ return maxR;\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the maxR property.\r
++ * \r
++ * @param value\r
++ * allowed object is\r
++ * {@link String }\r
++ * \r
++ */\r
++ public void setMaxR(String value) {\r
++ this.maxR = value;\r
++ }\r
++\r
++ public boolean isSetMaxR() {\r
++ return (this.maxR!= null);\r
++ }\r
++\r
++ /**\r
++ * Gets the value of the gdRefAng property.\r
++ * \r
++ * @return\r
++ * possible object is\r
++ * {@link String }\r
++ * \r
++ */\r
++ public String getGdRefAng() {\r
++ return gdRefAng;\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the gdRefAng property.\r
++ * \r
++ * @param value\r
++ * allowed object is\r
++ * {@link String }\r
++ * \r
++ */\r
++ public void setGdRefAng(String value) {\r
++ this.gdRefAng = value;\r
++ }\r
++\r
++ public boolean isSetGdRefAng() {\r
++ return (this.gdRefAng!= null);\r
++ }\r
++\r
++ /**\r
++ * Gets the value of the minAng property.\r
++ * \r
++ * @return\r
++ * possible object is\r
++ * {@link String }\r
++ * \r
++ */\r
++ public String getMinAng() {\r
++ return minAng;\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the minAng property.\r
++ * \r
++ * @param value\r
++ * allowed object is\r
++ * {@link String }\r
++ * \r
++ */\r
++ public void setMinAng(String value) {\r
++ this.minAng = value;\r
++ }\r
++\r
++ public boolean isSetMinAng() {\r
++ return (this.minAng!= null);\r
++ }\r
++\r
++ /**\r
++ * Gets the value of the maxAng property.\r
++ * \r
++ * @return\r
++ * possible object is\r
++ * {@link String }\r
++ * \r
++ */\r
++ public String getMaxAng() {\r
++ return maxAng;\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the maxAng property.\r
++ * \r
++ * @param value\r
++ * allowed object is\r
++ * {@link String }\r
++ * \r
++ */\r
++ public void setMaxAng(String value) {\r
++ this.maxAng = value;\r
++ }\r
++\r
++ public boolean isSetMaxAng() {\r
++ return (this.maxAng!= null);\r
++ }\r
++\r
++}\r
--- /dev/null
--- /dev/null
++/* ====================================================================\r
++ Licensed to the Apache Software Foundation (ASF) under one or more\r
++ contributor license agreements. See the NOTICE file distributed with\r
++ this work for additional information regarding copyright ownership.\r
++ The ASF licenses this file to You under the Apache License, Version 2.0\r
++ (the "License"); you may not use this file except in compliance with\r
++ the License. You may obtain a copy of the License at\r
++\r
++ http://www.apache.org/licenses/LICENSE-2.0\r
++\r
++ Unless required by applicable law or agreed to in writing, software\r
++ distributed under the License is distributed on an "AS IS" BASIS,\r
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ See the License for the specific language governing permissions and\r
++ limitations under the License.\r
++==================================================================== */\r
++\r
++package org.apache.poi.sl.draw.binding;\r
++\r
++import javax.xml.bind.annotation.XmlAccessType;\r
++import javax.xml.bind.annotation.XmlAccessorType;\r
++import javax.xml.bind.annotation.XmlAttribute;\r
++import javax.xml.bind.annotation.XmlType;\r
++\r
++\r
++/**\r
++ * <p>Java class for CT_PositiveFixedAngle complex type.\r
++ * \r
++ * <p>The following schema fragment specifies the expected content contained within this class.\r
++ * \r
++ * <pre>\r
++ * <complexType name="CT_PositiveFixedAngle">\r
++ * <complexContent>\r
++ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ * <attribute name="val" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_PositiveFixedAngle" />\r
++ * </restriction>\r
++ * </complexContent>\r
++ * </complexType>\r
++ * </pre>\r
++ * \r
++ * \r
++ */\r
++@XmlAccessorType(XmlAccessType.FIELD)\r
++@XmlType(name = "CT_PositiveFixedAngle", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")\r
++public class CTPositiveFixedAngle {\r
++\r
++ @XmlAttribute(name = "val", required = true)\r
++ protected int val;\r
++\r
++ /**\r
++ * Gets the value of the val property.\r
++ * \r
++ */\r
++ public int getVal() {\r
++ return val;\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the val property.\r
++ * \r
++ */\r
++ public void setVal(int value) {\r
++ this.val = value;\r
++ }\r
++\r
++ public boolean isSetVal() {\r
++ return true;\r
++ }\r
++\r
++}\r
--- /dev/null
--- /dev/null
++/* ====================================================================\r
++ Licensed to the Apache Software Foundation (ASF) under one or more\r
++ contributor license agreements. See the NOTICE file distributed with\r
++ this work for additional information regarding copyright ownership.\r
++ The ASF licenses this file to You under the Apache License, Version 2.0\r
++ (the "License"); you may not use this file except in compliance with\r
++ the License. You may obtain a copy of the License at\r
++\r
++ http://www.apache.org/licenses/LICENSE-2.0\r
++\r
++ Unless required by applicable law or agreed to in writing, software\r
++ distributed under the License is distributed on an "AS IS" BASIS,\r
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ See the License for the specific language governing permissions and\r
++ limitations under the License.\r
++==================================================================== */\r
++\r
++package org.apache.poi.sl.draw.binding;\r
++\r
++import javax.xml.bind.annotation.XmlAccessType;\r
++import javax.xml.bind.annotation.XmlAccessorType;\r
++import javax.xml.bind.annotation.XmlAttribute;\r
++import javax.xml.bind.annotation.XmlType;\r
++\r
++\r
++/**\r
++ * <p>Java class for CT_PositiveFixedPercentage complex type.\r
++ * \r
++ * <p>The following schema fragment specifies the expected content contained within this class.\r
++ * \r
++ * <pre>\r
++ * <complexType name="CT_PositiveFixedPercentage">\r
++ * <complexContent>\r
++ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ * <attribute name="val" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_PositiveFixedPercentage" />\r
++ * </restriction>\r
++ * </complexContent>\r
++ * </complexType>\r
++ * </pre>\r
++ * \r
++ * \r
++ */\r
++@XmlAccessorType(XmlAccessType.FIELD)\r
++@XmlType(name = "CT_PositiveFixedPercentage", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")\r
++public class CTPositiveFixedPercentage {\r
++\r
++ @XmlAttribute(name = "val", required = true)\r
++ protected int val;\r
++\r
++ /**\r
++ * Gets the value of the val property.\r
++ * \r
++ */\r
++ public int getVal() {\r
++ return val;\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the val property.\r
++ * \r
++ */\r
++ public void setVal(int value) {\r
++ this.val = value;\r
++ }\r
++\r
++ public boolean isSetVal() {\r
++ return true;\r
++ }\r
++\r
++}\r
--- /dev/null
--- /dev/null
++/* ====================================================================\r
++ Licensed to the Apache Software Foundation (ASF) under one or more\r
++ contributor license agreements. See the NOTICE file distributed with\r
++ this work for additional information regarding copyright ownership.\r
++ The ASF licenses this file to You under the Apache License, Version 2.0\r
++ (the "License"); you may not use this file except in compliance with\r
++ the License. You may obtain a copy of the License at\r
++\r
++ http://www.apache.org/licenses/LICENSE-2.0\r
++\r
++ Unless required by applicable law or agreed to in writing, software\r
++ distributed under the License is distributed on an "AS IS" BASIS,\r
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ See the License for the specific language governing permissions and\r
++ limitations under the License.\r
++==================================================================== */\r
++\r
++package org.apache.poi.sl.draw.binding;\r
++\r
++import javax.xml.bind.annotation.XmlAccessType;\r
++import javax.xml.bind.annotation.XmlAccessorType;\r
++import javax.xml.bind.annotation.XmlAttribute;\r
++import javax.xml.bind.annotation.XmlType;\r
++\r
++\r
++/**\r
++ * <p>Java class for CT_PositivePercentage complex type.\r
++ * \r
++ * <p>The following schema fragment specifies the expected content contained within this class.\r
++ * \r
++ * <pre>\r
++ * <complexType name="CT_PositivePercentage">\r
++ * <complexContent>\r
++ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ * <attribute name="val" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_PositivePercentage" />\r
++ * </restriction>\r
++ * </complexContent>\r
++ * </complexType>\r
++ * </pre>\r
++ * \r
++ * \r
++ */\r
++@XmlAccessorType(XmlAccessType.FIELD)\r
++@XmlType(name = "CT_PositivePercentage", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")\r
++public class CTPositivePercentage {\r
++\r
++ @XmlAttribute(name = "val", required = true)\r
++ protected int val;\r
++\r
++ /**\r
++ * Gets the value of the val property.\r
++ * \r
++ */\r
++ public int getVal() {\r
++ return val;\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the val property.\r
++ * \r
++ */\r
++ public void setVal(int value) {\r
++ this.val = value;\r
++ }\r
++\r
++ public boolean isSetVal() {\r
++ return true;\r
++ }\r
++\r
++}\r
--- /dev/null
--- /dev/null
++/* ====================================================================\r
++ Licensed to the Apache Software Foundation (ASF) under one or more\r
++ contributor license agreements. See the NOTICE file distributed with\r
++ this work for additional information regarding copyright ownership.\r
++ The ASF licenses this file to You under the Apache License, Version 2.0\r
++ (the "License"); you may not use this file except in compliance with\r
++ the License. You may obtain a copy of the License at\r
++\r
++ http://www.apache.org/licenses/LICENSE-2.0\r
++\r
++ Unless required by applicable law or agreed to in writing, software\r
++ distributed under the License is distributed on an "AS IS" BASIS,\r
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ See the License for the specific language governing permissions and\r
++ limitations under the License.\r
++==================================================================== */\r
++\r
++package org.apache.poi.sl.draw.binding;\r
++\r
++import javax.xml.bind.annotation.XmlAccessType;\r
++import javax.xml.bind.annotation.XmlAccessorType;\r
++import javax.xml.bind.annotation.XmlAttribute;\r
++import javax.xml.bind.annotation.XmlType;\r
++\r
++\r
++/**\r
++ * <p>Java class for CT_PositiveSize2D complex type.\r
++ * \r
++ * <p>The following schema fragment specifies the expected content contained within this class.\r
++ * \r
++ * <pre>\r
++ * <complexType name="CT_PositiveSize2D">\r
++ * <complexContent>\r
++ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ * <attribute name="cx" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_PositiveCoordinate" />\r
++ * <attribute name="cy" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_PositiveCoordinate" />\r
++ * </restriction>\r
++ * </complexContent>\r
++ * </complexType>\r
++ * </pre>\r
++ * \r
++ * \r
++ */\r
++@XmlAccessorType(XmlAccessType.FIELD)\r
++@XmlType(name = "CT_PositiveSize2D", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")\r
++public class CTPositiveSize2D {\r
++\r
++ @XmlAttribute(name = "cx", required = true)\r
++ protected long cx;\r
++ @XmlAttribute(name = "cy", required = true)\r
++ protected long cy;\r
++\r
++ /**\r
++ * Gets the value of the cx property.\r
++ * \r
++ */\r
++ public long getCx() {\r
++ return cx;\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the cx property.\r
++ * \r
++ */\r
++ public void setCx(long value) {\r
++ this.cx = value;\r
++ }\r
++\r
++ public boolean isSetCx() {\r
++ return true;\r
++ }\r
++\r
++ /**\r
++ * Gets the value of the cy property.\r
++ * \r
++ */\r
++ public long getCy() {\r
++ return cy;\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the cy property.\r
++ * \r
++ */\r
++ public void setCy(long value) {\r
++ this.cy = value;\r
++ }\r
++\r
++ public boolean isSetCy() {\r
++ return true;\r
++ }\r
++\r
++}\r
--- /dev/null
--- /dev/null
++/* ====================================================================\r
++ Licensed to the Apache Software Foundation (ASF) under one or more\r
++ contributor license agreements. See the NOTICE file distributed with\r
++ this work for additional information regarding copyright ownership.\r
++ The ASF licenses this file to You under the Apache License, Version 2.0\r
++ (the "License"); you may not use this file except in compliance with\r
++ the License. You may obtain a copy of the License at\r
++\r
++ http://www.apache.org/licenses/LICENSE-2.0\r
++\r
++ Unless required by applicable law or agreed to in writing, software\r
++ distributed under the License is distributed on an "AS IS" BASIS,\r
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ See the License for the specific language governing permissions and\r
++ limitations under the License.\r
++==================================================================== */\r
++\r
++package org.apache.poi.sl.draw.binding;\r
++\r
++import java.util.ArrayList;\r
++import java.util.List;\r
++import javax.xml.bind.JAXBElement;\r
++import javax.xml.bind.annotation.XmlAccessType;\r
++import javax.xml.bind.annotation.XmlAccessorType;\r
++import javax.xml.bind.annotation.XmlAttribute;\r
++import javax.xml.bind.annotation.XmlElementRef;\r
++import javax.xml.bind.annotation.XmlElementRefs;\r
++import javax.xml.bind.annotation.XmlType;\r
++\r
++\r
++/**\r
++ * <p>Java class for CT_PresetColor complex type.\r
++ * \r
++ * <p>The following schema fragment specifies the expected content contained within this class.\r
++ * \r
++ * <pre>\r
++ * <complexType name="CT_PresetColor">\r
++ * <complexContent>\r
++ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ * <sequence>\r
++ * <group ref="{http://schemas.openxmlformats.org/drawingml/2006/main}EG_ColorTransform" maxOccurs="unbounded" minOccurs="0"/>\r
++ * </sequence>\r
++ * <attribute name="val" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_PresetColorVal" />\r
++ * </restriction>\r
++ * </complexContent>\r
++ * </complexType>\r
++ * </pre>\r
++ * \r
++ * \r
++ */\r
++@XmlAccessorType(XmlAccessType.FIELD)\r
++@XmlType(name = "CT_PresetColor", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", propOrder = {\r
++ "egColorTransform"\r
++})\r
++public class CTPresetColor {\r
++\r
++ @XmlElementRefs({\r
++ @XmlElementRef(name = "redOff", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "invGamma", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "blueOff", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "greenOff", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "green", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "alphaMod", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "inv", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "gray", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "blueMod", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "alpha", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "shade", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "lumOff", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "hueMod", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "blue", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "comp", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "alphaOff", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "hueOff", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "satOff", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "hue", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "sat", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "red", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "redMod", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "tint", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "greenMod", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "gamma", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "satMod", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "lumMod", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "lum", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false)\r
++ })\r
++ protected List<JAXBElement<?>> egColorTransform;\r
++ @XmlAttribute(name = "val")\r
++ protected STPresetColorVal val;\r
++\r
++ /**\r
++ * Gets the value of the egColorTransform property.\r
++ * \r
++ * <p>\r
++ * This accessor method returns a reference to the live list,\r
++ * not a snapshot. Therefore any modification you make to the\r
++ * returned list will be present inside the JAXB object.\r
++ * This is why there is not a <CODE>set</CODE> method for the egColorTransform property.\r
++ * \r
++ * <p>\r
++ * For example, to add a new item, do as follows:\r
++ * <pre>\r
++ * getEGColorTransform().add(newItem);\r
++ * </pre>\r
++ * \r
++ * \r
++ * <p>\r
++ * Objects of the following type(s) are allowed in the list\r
++ * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTInverseGammaTransform }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPositivePercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTInverseTransform }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTGrayscaleTransform }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPositiveFixedPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPositiveFixedPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPositivePercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTComplementTransform }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTFixedPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTAngle }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPositiveFixedAngle }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPositiveFixedPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTGammaTransform }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}\r
++ * \r
++ * \r
++ */\r
++ public List<JAXBElement<?>> getEGColorTransform() {\r
++ if (egColorTransform == null) {\r
++ egColorTransform = new ArrayList<JAXBElement<?>>();\r
++ }\r
++ return this.egColorTransform;\r
++ }\r
++\r
++ public boolean isSetEGColorTransform() {\r
++ return ((this.egColorTransform!= null)&&(!this.egColorTransform.isEmpty()));\r
++ }\r
++\r
++ public void unsetEGColorTransform() {\r
++ this.egColorTransform = null;\r
++ }\r
++\r
++ /**\r
++ * Gets the value of the val property.\r
++ * \r
++ * @return\r
++ * possible object is\r
++ * {@link STPresetColorVal }\r
++ * \r
++ */\r
++ public STPresetColorVal getVal() {\r
++ return val;\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the val property.\r
++ * \r
++ * @param value\r
++ * allowed object is\r
++ * {@link STPresetColorVal }\r
++ * \r
++ */\r
++ public void setVal(STPresetColorVal value) {\r
++ this.val = value;\r
++ }\r
++\r
++ public boolean isSetVal() {\r
++ return (this.val!= null);\r
++ }\r
++\r
++}\r
--- /dev/null
--- /dev/null
++/* ====================================================================\r
++ Licensed to the Apache Software Foundation (ASF) under one or more\r
++ contributor license agreements. See the NOTICE file distributed with\r
++ this work for additional information regarding copyright ownership.\r
++ The ASF licenses this file to You under the Apache License, Version 2.0\r
++ (the "License"); you may not use this file except in compliance with\r
++ the License. You may obtain a copy of the License at\r
++\r
++ http://www.apache.org/licenses/LICENSE-2.0\r
++\r
++ Unless required by applicable law or agreed to in writing, software\r
++ distributed under the License is distributed on an "AS IS" BASIS,\r
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ See the License for the specific language governing permissions and\r
++ limitations under the License.\r
++==================================================================== */\r
++\r
++package org.apache.poi.sl.draw.binding;\r
++\r
++import javax.xml.bind.annotation.XmlAccessType;\r
++import javax.xml.bind.annotation.XmlAccessorType;\r
++import javax.xml.bind.annotation.XmlAttribute;\r
++import javax.xml.bind.annotation.XmlElement;\r
++import javax.xml.bind.annotation.XmlType;\r
++\r
++\r
++/**\r
++ * <p>Java class for CT_PresetGeometry2D complex type.\r
++ * \r
++ * <p>The following schema fragment specifies the expected content contained within this class.\r
++ * \r
++ * <pre>\r
++ * <complexType name="CT_PresetGeometry2D">\r
++ * <complexContent>\r
++ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ * <sequence>\r
++ * <element name="avLst" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_GeomGuideList" minOccurs="0"/>\r
++ * </sequence>\r
++ * <attribute name="prst" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_ShapeType" />\r
++ * </restriction>\r
++ * </complexContent>\r
++ * </complexType>\r
++ * </pre>\r
++ * \r
++ * \r
++ */\r
++@XmlAccessorType(XmlAccessType.FIELD)\r
++@XmlType(name = "CT_PresetGeometry2D", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", propOrder = {\r
++ "avLst"\r
++})\r
++public class CTPresetGeometry2D {\r
++\r
++ @XmlElement(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")\r
++ protected CTGeomGuideList avLst;\r
++ @XmlAttribute(name = "prst", required = true)\r
++ protected STShapeType prst;\r
++\r
++ /**\r
++ * Gets the value of the avLst property.\r
++ * \r
++ * @return\r
++ * possible object is\r
++ * {@link CTGeomGuideList }\r
++ * \r
++ */\r
++ public CTGeomGuideList getAvLst() {\r
++ return avLst;\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the avLst property.\r
++ * \r
++ * @param value\r
++ * allowed object is\r
++ * {@link CTGeomGuideList }\r
++ * \r
++ */\r
++ public void setAvLst(CTGeomGuideList value) {\r
++ this.avLst = value;\r
++ }\r
++\r
++ public boolean isSetAvLst() {\r
++ return (this.avLst!= null);\r
++ }\r
++\r
++ /**\r
++ * Gets the value of the prst property.\r
++ * \r
++ * @return\r
++ * possible object is\r
++ * {@link STShapeType }\r
++ * \r
++ */\r
++ public STShapeType getPrst() {\r
++ return prst;\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the prst property.\r
++ * \r
++ * @param value\r
++ * allowed object is\r
++ * {@link STShapeType }\r
++ * \r
++ */\r
++ public void setPrst(STShapeType value) {\r
++ this.prst = value;\r
++ }\r
++\r
++ public boolean isSetPrst() {\r
++ return (this.prst!= null);\r
++ }\r
++\r
++}\r
--- /dev/null
--- /dev/null
++/* ====================================================================\r
++ Licensed to the Apache Software Foundation (ASF) under one or more\r
++ contributor license agreements. See the NOTICE file distributed with\r
++ this work for additional information regarding copyright ownership.\r
++ The ASF licenses this file to You under the Apache License, Version 2.0\r
++ (the "License"); you may not use this file except in compliance with\r
++ the License. You may obtain a copy of the License at\r
++\r
++ http://www.apache.org/licenses/LICENSE-2.0\r
++\r
++ Unless required by applicable law or agreed to in writing, software\r
++ distributed under the License is distributed on an "AS IS" BASIS,\r
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ See the License for the specific language governing permissions and\r
++ limitations under the License.\r
++==================================================================== */\r
++\r
++package org.apache.poi.sl.draw.binding;\r
++\r
++import javax.xml.bind.annotation.XmlAccessType;\r
++import javax.xml.bind.annotation.XmlAccessorType;\r
++import javax.xml.bind.annotation.XmlAttribute;\r
++import javax.xml.bind.annotation.XmlElement;\r
++import javax.xml.bind.annotation.XmlType;\r
++\r
++\r
++/**\r
++ * <p>Java class for CT_PresetTextShape complex type.\r
++ * \r
++ * <p>The following schema fragment specifies the expected content contained within this class.\r
++ * \r
++ * <pre>\r
++ * <complexType name="CT_PresetTextShape">\r
++ * <complexContent>\r
++ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ * <sequence>\r
++ * <element name="avLst" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_GeomGuideList" minOccurs="0"/>\r
++ * </sequence>\r
++ * <attribute name="prst" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_TextShapeType" />\r
++ * </restriction>\r
++ * </complexContent>\r
++ * </complexType>\r
++ * </pre>\r
++ * \r
++ * \r
++ */\r
++@XmlAccessorType(XmlAccessType.FIELD)\r
++@XmlType(name = "CT_PresetTextShape", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", propOrder = {\r
++ "avLst"\r
++})\r
++public class CTPresetTextShape {\r
++\r
++ @XmlElement(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")\r
++ protected CTGeomGuideList avLst;\r
++ @XmlAttribute(name = "prst", required = true)\r
++ protected STTextShapeType prst;\r
++\r
++ /**\r
++ * Gets the value of the avLst property.\r
++ * \r
++ * @return\r
++ * possible object is\r
++ * {@link CTGeomGuideList }\r
++ * \r
++ */\r
++ public CTGeomGuideList getAvLst() {\r
++ return avLst;\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the avLst property.\r
++ * \r
++ * @param value\r
++ * allowed object is\r
++ * {@link CTGeomGuideList }\r
++ * \r
++ */\r
++ public void setAvLst(CTGeomGuideList value) {\r
++ this.avLst = value;\r
++ }\r
++\r
++ public boolean isSetAvLst() {\r
++ return (this.avLst!= null);\r
++ }\r
++\r
++ /**\r
++ * Gets the value of the prst property.\r
++ * \r
++ * @return\r
++ * possible object is\r
++ * {@link STTextShapeType }\r
++ * \r
++ */\r
++ public STTextShapeType getPrst() {\r
++ return prst;\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the prst property.\r
++ * \r
++ * @param value\r
++ * allowed object is\r
++ * {@link STTextShapeType }\r
++ * \r
++ */\r
++ public void setPrst(STTextShapeType value) {\r
++ this.prst = value;\r
++ }\r
++\r
++ public boolean isSetPrst() {\r
++ return (this.prst!= null);\r
++ }\r
++\r
++}\r
--- /dev/null
--- /dev/null
++/* ====================================================================\r
++ Licensed to the Apache Software Foundation (ASF) under one or more\r
++ contributor license agreements. See the NOTICE file distributed with\r
++ this work for additional information regarding copyright ownership.\r
++ The ASF licenses this file to You under the Apache License, Version 2.0\r
++ (the "License"); you may not use this file except in compliance with\r
++ the License. You may obtain a copy of the License at\r
++\r
++ http://www.apache.org/licenses/LICENSE-2.0\r
++\r
++ Unless required by applicable law or agreed to in writing, software\r
++ distributed under the License is distributed on an "AS IS" BASIS,\r
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ See the License for the specific language governing permissions and\r
++ limitations under the License.\r
++==================================================================== */\r
++\r
++package org.apache.poi.sl.draw.binding;\r
++\r
++import javax.xml.bind.annotation.XmlAccessType;\r
++import javax.xml.bind.annotation.XmlAccessorType;\r
++import javax.xml.bind.annotation.XmlAttribute;\r
++import javax.xml.bind.annotation.XmlType;\r
++\r
++\r
++/**\r
++ * <p>Java class for CT_Ratio complex type.\r
++ * \r
++ * <p>The following schema fragment specifies the expected content contained within this class.\r
++ * \r
++ * <pre>\r
++ * <complexType name="CT_Ratio">\r
++ * <complexContent>\r
++ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ * <attribute name="n" use="required" type="{http://www.w3.org/2001/XMLSchema}long" />\r
++ * <attribute name="d" use="required" type="{http://www.w3.org/2001/XMLSchema}long" />\r
++ * </restriction>\r
++ * </complexContent>\r
++ * </complexType>\r
++ * </pre>\r
++ * \r
++ * \r
++ */\r
++@XmlAccessorType(XmlAccessType.FIELD)\r
++@XmlType(name = "CT_Ratio", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")\r
++public class CTRatio {\r
++\r
++ @XmlAttribute(name = "n", required = true)\r
++ protected long n;\r
++ @XmlAttribute(name = "d", required = true)\r
++ protected long d;\r
++\r
++ /**\r
++ * Gets the value of the n property.\r
++ * \r
++ */\r
++ public long getN() {\r
++ return n;\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the n property.\r
++ * \r
++ */\r
++ public void setN(long value) {\r
++ this.n = value;\r
++ }\r
++\r
++ public boolean isSetN() {\r
++ return true;\r
++ }\r
++\r
++ /**\r
++ * Gets the value of the d property.\r
++ * \r
++ */\r
++ public long getD() {\r
++ return d;\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the d property.\r
++ * \r
++ */\r
++ public void setD(long value) {\r
++ this.d = value;\r
++ }\r
++\r
++ public boolean isSetD() {\r
++ return true;\r
++ }\r
++\r
++}\r
--- /dev/null
--- /dev/null
++/* ====================================================================\r
++ Licensed to the Apache Software Foundation (ASF) under one or more\r
++ contributor license agreements. See the NOTICE file distributed with\r
++ this work for additional information regarding copyright ownership.\r
++ The ASF licenses this file to You under the Apache License, Version 2.0\r
++ (the "License"); you may not use this file except in compliance with\r
++ the License. You may obtain a copy of the License at\r
++\r
++ http://www.apache.org/licenses/LICENSE-2.0\r
++\r
++ Unless required by applicable law or agreed to in writing, software\r
++ distributed under the License is distributed on an "AS IS" BASIS,\r
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ See the License for the specific language governing permissions and\r
++ limitations under the License.\r
++==================================================================== */\r
++\r
++package org.apache.poi.sl.draw.binding;\r
++\r
++import javax.xml.bind.annotation.XmlAccessType;\r
++import javax.xml.bind.annotation.XmlAccessorType;\r
++import javax.xml.bind.annotation.XmlAttribute;\r
++import javax.xml.bind.annotation.XmlType;\r
++\r
++\r
++/**\r
++ * <p>Java class for CT_RelativeRect complex type.\r
++ * \r
++ * <p>The following schema fragment specifies the expected content contained within this class.\r
++ * \r
++ * <pre>\r
++ * <complexType name="CT_RelativeRect">\r
++ * <complexContent>\r
++ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ * <attribute name="l" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_Percentage" default="0" />\r
++ * <attribute name="t" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_Percentage" default="0" />\r
++ * <attribute name="r" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_Percentage" default="0" />\r
++ * <attribute name="b" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_Percentage" default="0" />\r
++ * </restriction>\r
++ * </complexContent>\r
++ * </complexType>\r
++ * </pre>\r
++ * \r
++ * \r
++ */\r
++@XmlAccessorType(XmlAccessType.FIELD)\r
++@XmlType(name = "CT_RelativeRect", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")\r
++public class CTRelativeRect {\r
++\r
++ @XmlAttribute(name = "l")\r
++ protected Integer l;\r
++ @XmlAttribute(name = "t")\r
++ protected Integer t;\r
++ @XmlAttribute(name = "r")\r
++ protected Integer r;\r
++ @XmlAttribute(name = "b")\r
++ protected Integer b;\r
++\r
++ /**\r
++ * Gets the value of the l property.\r
++ * \r
++ * @return\r
++ * possible object is\r
++ * {@link Integer }\r
++ * \r
++ */\r
++ public int getL() {\r
++ if (l == null) {\r
++ return 0;\r
++ } else {\r
++ return l;\r
++ }\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the l property.\r
++ * \r
++ * @param value\r
++ * allowed object is\r
++ * {@link Integer }\r
++ * \r
++ */\r
++ public void setL(int value) {\r
++ this.l = value;\r
++ }\r
++\r
++ public boolean isSetL() {\r
++ return (this.l!= null);\r
++ }\r
++\r
++ public void unsetL() {\r
++ this.l = null;\r
++ }\r
++\r
++ /**\r
++ * Gets the value of the t property.\r
++ * \r
++ * @return\r
++ * possible object is\r
++ * {@link Integer }\r
++ * \r
++ */\r
++ public int getT() {\r
++ if (t == null) {\r
++ return 0;\r
++ } else {\r
++ return t;\r
++ }\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the t property.\r
++ * \r
++ * @param value\r
++ * allowed object is\r
++ * {@link Integer }\r
++ * \r
++ */\r
++ public void setT(int value) {\r
++ this.t = value;\r
++ }\r
++\r
++ public boolean isSetT() {\r
++ return (this.t!= null);\r
++ }\r
++\r
++ public void unsetT() {\r
++ this.t = null;\r
++ }\r
++\r
++ /**\r
++ * Gets the value of the r property.\r
++ * \r
++ * @return\r
++ * possible object is\r
++ * {@link Integer }\r
++ * \r
++ */\r
++ public int getR() {\r
++ if (r == null) {\r
++ return 0;\r
++ } else {\r
++ return r;\r
++ }\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the r property.\r
++ * \r
++ * @param value\r
++ * allowed object is\r
++ * {@link Integer }\r
++ * \r
++ */\r
++ public void setR(int value) {\r
++ this.r = value;\r
++ }\r
++\r
++ public boolean isSetR() {\r
++ return (this.r!= null);\r
++ }\r
++\r
++ public void unsetR() {\r
++ this.r = null;\r
++ }\r
++\r
++ /**\r
++ * Gets the value of the b property.\r
++ * \r
++ * @return\r
++ * possible object is\r
++ * {@link Integer }\r
++ * \r
++ */\r
++ public int getB() {\r
++ if (b == null) {\r
++ return 0;\r
++ } else {\r
++ return b;\r
++ }\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the b property.\r
++ * \r
++ * @param value\r
++ * allowed object is\r
++ * {@link Integer }\r
++ * \r
++ */\r
++ public void setB(int value) {\r
++ this.b = value;\r
++ }\r
++\r
++ public boolean isSetB() {\r
++ return (this.b!= null);\r
++ }\r
++\r
++ public void unsetB() {\r
++ this.b = null;\r
++ }\r
++\r
++}\r
--- /dev/null
--- /dev/null
++/* ====================================================================\r
++ Licensed to the Apache Software Foundation (ASF) under one or more\r
++ contributor license agreements. See the NOTICE file distributed with\r
++ this work for additional information regarding copyright ownership.\r
++ The ASF licenses this file to You under the Apache License, Version 2.0\r
++ (the "License"); you may not use this file except in compliance with\r
++ the License. You may obtain a copy of the License at\r
++\r
++ http://www.apache.org/licenses/LICENSE-2.0\r
++\r
++ Unless required by applicable law or agreed to in writing, software\r
++ distributed under the License is distributed on an "AS IS" BASIS,\r
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ See the License for the specific language governing permissions and\r
++ limitations under the License.\r
++==================================================================== */\r
++\r
++package org.apache.poi.sl.draw.binding;\r
++\r
++import java.util.ArrayList;\r
++import java.util.List;\r
++import javax.xml.bind.JAXBElement;\r
++import javax.xml.bind.annotation.XmlAccessType;\r
++import javax.xml.bind.annotation.XmlAccessorType;\r
++import javax.xml.bind.annotation.XmlAttribute;\r
++import javax.xml.bind.annotation.XmlElementRef;\r
++import javax.xml.bind.annotation.XmlElementRefs;\r
++import javax.xml.bind.annotation.XmlType;\r
++import javax.xml.bind.annotation.adapters.HexBinaryAdapter;\r
++import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;\r
++\r
++\r
++/**\r
++ * <p>Java class for CT_SRgbColor complex type.\r
++ * \r
++ * <p>The following schema fragment specifies the expected content contained within this class.\r
++ * \r
++ * <pre>\r
++ * <complexType name="CT_SRgbColor">\r
++ * <complexContent>\r
++ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ * <sequence>\r
++ * <group ref="{http://schemas.openxmlformats.org/drawingml/2006/main}EG_ColorTransform" maxOccurs="unbounded" minOccurs="0"/>\r
++ * </sequence>\r
++ * <attribute name="val" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_HexBinary3" />\r
++ * </restriction>\r
++ * </complexContent>\r
++ * </complexType>\r
++ * </pre>\r
++ * \r
++ * \r
++ */\r
++@XmlAccessorType(XmlAccessType.FIELD)\r
++@XmlType(name = "CT_SRgbColor", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", propOrder = {\r
++ "egColorTransform"\r
++})\r
++public class CTSRgbColor {\r
++\r
++ @XmlElementRefs({\r
++ @XmlElementRef(name = "comp", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "lumOff", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "gray", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "blueMod", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "greenMod", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "satMod", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "redMod", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "alphaMod", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "hue", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "inv", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "tint", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "lumMod", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "invGamma", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "shade", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "alphaOff", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "satOff", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "gamma", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "blueOff", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "lum", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "alpha", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "hueMod", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "red", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "greenOff", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "sat", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "green", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "redOff", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "hueOff", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "blue", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false)\r
++ })\r
++ protected List<JAXBElement<?>> egColorTransform;\r
++ @XmlAttribute(name = "val", required = true)\r
++ @XmlJavaTypeAdapter(HexBinaryAdapter.class)\r
++ protected byte[] val;\r
++\r
++ /**\r
++ * Gets the value of the egColorTransform property.\r
++ * \r
++ * <p>\r
++ * This accessor method returns a reference to the live list,\r
++ * not a snapshot. Therefore any modification you make to the\r
++ * returned list will be present inside the JAXB object.\r
++ * This is why there is not a <CODE>set</CODE> method for the egColorTransform property.\r
++ * \r
++ * <p>\r
++ * For example, to add a new item, do as follows:\r
++ * <pre>\r
++ * getEGColorTransform().add(newItem);\r
++ * </pre>\r
++ * \r
++ * \r
++ * <p>\r
++ * Objects of the following type(s) are allowed in the list\r
++ * {@link JAXBElement }{@code <}{@link CTComplementTransform }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTGrayscaleTransform }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPositivePercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPositiveFixedAngle }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTInverseTransform }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPositiveFixedPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTInverseGammaTransform }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPositiveFixedPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTFixedPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTGammaTransform }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPositiveFixedPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPositivePercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTAngle }{@code >}\r
++ * \r
++ * \r
++ */\r
++ public List<JAXBElement<?>> getEGColorTransform() {\r
++ if (egColorTransform == null) {\r
++ egColorTransform = new ArrayList<JAXBElement<?>>();\r
++ }\r
++ return this.egColorTransform;\r
++ }\r
++\r
++ public boolean isSetEGColorTransform() {\r
++ return ((this.egColorTransform!= null)&&(!this.egColorTransform.isEmpty()));\r
++ }\r
++\r
++ public void unsetEGColorTransform() {\r
++ this.egColorTransform = null;\r
++ }\r
++\r
++ /**\r
++ * Gets the value of the val property.\r
++ * \r
++ * @return\r
++ * possible object is\r
++ * {@link String }\r
++ * \r
++ */\r
++ public byte[] getVal() {\r
++ return val;\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the val property.\r
++ * \r
++ * @param value\r
++ * allowed object is\r
++ * {@link String }\r
++ * \r
++ */\r
++ public void setVal(byte[] value) {\r
++ this.val = value;\r
++ }\r
++\r
++ public boolean isSetVal() {\r
++ return (this.val!= null);\r
++ }\r
++\r
++}\r
--- /dev/null
--- /dev/null
++/* ====================================================================\r
++ Licensed to the Apache Software Foundation (ASF) under one or more\r
++ contributor license agreements. See the NOTICE file distributed with\r
++ this work for additional information regarding copyright ownership.\r
++ The ASF licenses this file to You under the Apache License, Version 2.0\r
++ (the "License"); you may not use this file except in compliance with\r
++ the License. You may obtain a copy of the License at\r
++\r
++ http://www.apache.org/licenses/LICENSE-2.0\r
++\r
++ Unless required by applicable law or agreed to in writing, software\r
++ distributed under the License is distributed on an "AS IS" BASIS,\r
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ See the License for the specific language governing permissions and\r
++ limitations under the License.\r
++==================================================================== */\r
++\r
++package org.apache.poi.sl.draw.binding;\r
++\r
++import java.util.ArrayList;\r
++import java.util.List;\r
++import javax.xml.bind.JAXBElement;\r
++import javax.xml.bind.annotation.XmlAccessType;\r
++import javax.xml.bind.annotation.XmlAccessorType;\r
++import javax.xml.bind.annotation.XmlAttribute;\r
++import javax.xml.bind.annotation.XmlElementRef;\r
++import javax.xml.bind.annotation.XmlElementRefs;\r
++import javax.xml.bind.annotation.XmlType;\r
++\r
++\r
++/**\r
++ * <p>Java class for CT_ScRgbColor complex type.\r
++ * \r
++ * <p>The following schema fragment specifies the expected content contained within this class.\r
++ * \r
++ * <pre>\r
++ * <complexType name="CT_ScRgbColor">\r
++ * <complexContent>\r
++ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ * <sequence>\r
++ * <group ref="{http://schemas.openxmlformats.org/drawingml/2006/main}EG_ColorTransform" maxOccurs="unbounded" minOccurs="0"/>\r
++ * </sequence>\r
++ * <attribute name="r" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_Percentage" />\r
++ * <attribute name="g" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_Percentage" />\r
++ * <attribute name="b" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_Percentage" />\r
++ * </restriction>\r
++ * </complexContent>\r
++ * </complexType>\r
++ * </pre>\r
++ * \r
++ * \r
++ */\r
++@XmlAccessorType(XmlAccessType.FIELD)\r
++@XmlType(name = "CT_ScRgbColor", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", propOrder = {\r
++ "egColorTransform"\r
++})\r
++public class CTScRgbColor {\r
++\r
++ @XmlElementRefs({\r
++ @XmlElementRef(name = "redMod", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "gray", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "satMod", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "green", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "blue", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "hueOff", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "sat", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "tint", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "gamma", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "inv", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "comp", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "satOff", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "hueMod", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "red", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "greenOff", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "hue", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "lumMod", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "alphaMod", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "lumOff", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "blueOff", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "blueMod", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "lum", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "redOff", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "greenMod", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "shade", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "invGamma", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "alphaOff", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "alpha", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false)\r
++ })\r
++ protected List<JAXBElement<?>> egColorTransform;\r
++ @XmlAttribute(name = "r", required = true)\r
++ protected int r;\r
++ @XmlAttribute(name = "g", required = true)\r
++ protected int g;\r
++ @XmlAttribute(name = "b", required = true)\r
++ protected int b;\r
++\r
++ /**\r
++ * Gets the value of the egColorTransform property.\r
++ * \r
++ * <p>\r
++ * This accessor method returns a reference to the live list,\r
++ * not a snapshot. Therefore any modification you make to the\r
++ * returned list will be present inside the JAXB object.\r
++ * This is why there is not a <CODE>set</CODE> method for the egColorTransform property.\r
++ * \r
++ * <p>\r
++ * For example, to add a new item, do as follows:\r
++ * <pre>\r
++ * getEGColorTransform().add(newItem);\r
++ * </pre>\r
++ * \r
++ * \r
++ * <p>\r
++ * Objects of the following type(s) are allowed in the list\r
++ * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTGrayscaleTransform }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTAngle }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPositiveFixedPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTGammaTransform }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTInverseTransform }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTComplementTransform }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPositivePercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPositiveFixedAngle }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPositivePercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPositiveFixedPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTInverseGammaTransform }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPositiveFixedPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTFixedPercentage }{@code >}\r
++ * \r
++ * \r
++ */\r
++ public List<JAXBElement<?>> getEGColorTransform() {\r
++ if (egColorTransform == null) {\r
++ egColorTransform = new ArrayList<JAXBElement<?>>();\r
++ }\r
++ return this.egColorTransform;\r
++ }\r
++\r
++ public boolean isSetEGColorTransform() {\r
++ return ((this.egColorTransform!= null)&&(!this.egColorTransform.isEmpty()));\r
++ }\r
++\r
++ public void unsetEGColorTransform() {\r
++ this.egColorTransform = null;\r
++ }\r
++\r
++ /**\r
++ * Gets the value of the r property.\r
++ * \r
++ */\r
++ public int getR() {\r
++ return r;\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the r property.\r
++ * \r
++ */\r
++ public void setR(int value) {\r
++ this.r = value;\r
++ }\r
++\r
++ public boolean isSetR() {\r
++ return true;\r
++ }\r
++\r
++ /**\r
++ * Gets the value of the g property.\r
++ * \r
++ */\r
++ public int getG() {\r
++ return g;\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the g property.\r
++ * \r
++ */\r
++ public void setG(int value) {\r
++ this.g = value;\r
++ }\r
++\r
++ public boolean isSetG() {\r
++ return true;\r
++ }\r
++\r
++ /**\r
++ * Gets the value of the b property.\r
++ * \r
++ */\r
++ public int getB() {\r
++ return b;\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the b property.\r
++ * \r
++ */\r
++ public void setB(int value) {\r
++ this.b = value;\r
++ }\r
++\r
++ public boolean isSetB() {\r
++ return true;\r
++ }\r
++\r
++}\r
--- /dev/null
--- /dev/null
++/* ====================================================================\r
++ Licensed to the Apache Software Foundation (ASF) under one or more\r
++ contributor license agreements. See the NOTICE file distributed with\r
++ this work for additional information regarding copyright ownership.\r
++ The ASF licenses this file to You under the Apache License, Version 2.0\r
++ (the "License"); you may not use this file except in compliance with\r
++ the License. You may obtain a copy of the License at\r
++\r
++ http://www.apache.org/licenses/LICENSE-2.0\r
++\r
++ Unless required by applicable law or agreed to in writing, software\r
++ distributed under the License is distributed on an "AS IS" BASIS,\r
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ See the License for the specific language governing permissions and\r
++ limitations under the License.\r
++==================================================================== */\r
++\r
++package org.apache.poi.sl.draw.binding;\r
++\r
++import javax.xml.bind.annotation.XmlAccessType;\r
++import javax.xml.bind.annotation.XmlAccessorType;\r
++import javax.xml.bind.annotation.XmlElement;\r
++import javax.xml.bind.annotation.XmlType;\r
++\r
++\r
++/**\r
++ * <p>Java class for CT_Scale2D complex type.\r
++ * \r
++ * <p>The following schema fragment specifies the expected content contained within this class.\r
++ * \r
++ * <pre>\r
++ * <complexType name="CT_Scale2D">\r
++ * <complexContent>\r
++ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ * <sequence>\r
++ * <element name="sx" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_Ratio"/>\r
++ * <element name="sy" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_Ratio"/>\r
++ * </sequence>\r
++ * </restriction>\r
++ * </complexContent>\r
++ * </complexType>\r
++ * </pre>\r
++ * \r
++ * \r
++ */\r
++@XmlAccessorType(XmlAccessType.FIELD)\r
++@XmlType(name = "CT_Scale2D", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", propOrder = {\r
++ "sx",\r
++ "sy"\r
++})\r
++public class CTScale2D {\r
++\r
++ @XmlElement(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", required = true)\r
++ protected CTRatio sx;\r
++ @XmlElement(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", required = true)\r
++ protected CTRatio sy;\r
++\r
++ /**\r
++ * Gets the value of the sx property.\r
++ * \r
++ * @return\r
++ * possible object is\r
++ * {@link CTRatio }\r
++ * \r
++ */\r
++ public CTRatio getSx() {\r
++ return sx;\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the sx property.\r
++ * \r
++ * @param value\r
++ * allowed object is\r
++ * {@link CTRatio }\r
++ * \r
++ */\r
++ public void setSx(CTRatio value) {\r
++ this.sx = value;\r
++ }\r
++\r
++ public boolean isSetSx() {\r
++ return (this.sx!= null);\r
++ }\r
++\r
++ /**\r
++ * Gets the value of the sy property.\r
++ * \r
++ * @return\r
++ * possible object is\r
++ * {@link CTRatio }\r
++ * \r
++ */\r
++ public CTRatio getSy() {\r
++ return sy;\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the sy property.\r
++ * \r
++ * @param value\r
++ * allowed object is\r
++ * {@link CTRatio }\r
++ * \r
++ */\r
++ public void setSy(CTRatio value) {\r
++ this.sy = value;\r
++ }\r
++\r
++ public boolean isSetSy() {\r
++ return (this.sy!= null);\r
++ }\r
++\r
++}\r
--- /dev/null
--- /dev/null
++/* ====================================================================\r
++ Licensed to the Apache Software Foundation (ASF) under one or more\r
++ contributor license agreements. See the NOTICE file distributed with\r
++ this work for additional information regarding copyright ownership.\r
++ The ASF licenses this file to You under the Apache License, Version 2.0\r
++ (the "License"); you may not use this file except in compliance with\r
++ the License. You may obtain a copy of the License at\r
++\r
++ http://www.apache.org/licenses/LICENSE-2.0\r
++\r
++ Unless required by applicable law or agreed to in writing, software\r
++ distributed under the License is distributed on an "AS IS" BASIS,\r
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ See the License for the specific language governing permissions and\r
++ limitations under the License.\r
++==================================================================== */\r
++\r
++package org.apache.poi.sl.draw.binding;\r
++\r
++import java.util.ArrayList;\r
++import java.util.List;\r
++import javax.xml.bind.JAXBElement;\r
++import javax.xml.bind.annotation.XmlAccessType;\r
++import javax.xml.bind.annotation.XmlAccessorType;\r
++import javax.xml.bind.annotation.XmlAttribute;\r
++import javax.xml.bind.annotation.XmlElementRef;\r
++import javax.xml.bind.annotation.XmlElementRefs;\r
++import javax.xml.bind.annotation.XmlType;\r
++\r
++\r
++/**\r
++ * <p>Java class for CT_SchemeColor complex type.\r
++ * \r
++ * <p>The following schema fragment specifies the expected content contained within this class.\r
++ * \r
++ * <pre>\r
++ * <complexType name="CT_SchemeColor">\r
++ * <complexContent>\r
++ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ * <sequence>\r
++ * <group ref="{http://schemas.openxmlformats.org/drawingml/2006/main}EG_ColorTransform" maxOccurs="unbounded" minOccurs="0"/>\r
++ * </sequence>\r
++ * <attribute name="val" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_SchemeColorVal" />\r
++ * </restriction>\r
++ * </complexContent>\r
++ * </complexType>\r
++ * </pre>\r
++ * \r
++ * \r
++ */\r
++@XmlAccessorType(XmlAccessType.FIELD)\r
++@XmlType(name = "CT_SchemeColor", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", propOrder = {\r
++ "egColorTransform"\r
++})\r
++public class CTSchemeColor {\r
++\r
++ @XmlElementRefs({\r
++ @XmlElementRef(name = "lumMod", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "inv", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "satMod", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "blue", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "blueOff", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "shade", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "gray", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "satOff", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "sat", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "alphaOff", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "blueMod", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "red", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "hueMod", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "tint", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "green", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "greenOff", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "redMod", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "hueOff", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "alpha", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "alphaMod", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "lum", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "lumOff", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "redOff", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "gamma", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "greenMod", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "comp", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "hue", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "invGamma", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false)\r
++ })\r
++ protected List<JAXBElement<?>> egColorTransform;\r
++ @XmlAttribute(name = "val", required = true)\r
++ protected STSchemeColorVal val;\r
++\r
++ /**\r
++ * Gets the value of the egColorTransform property.\r
++ * \r
++ * <p>\r
++ * This accessor method returns a reference to the live list,\r
++ * not a snapshot. Therefore any modification you make to the\r
++ * returned list will be present inside the JAXB object.\r
++ * This is why there is not a <CODE>set</CODE> method for the egColorTransform property.\r
++ * \r
++ * <p>\r
++ * For example, to add a new item, do as follows:\r
++ * <pre>\r
++ * getEGColorTransform().add(newItem);\r
++ * </pre>\r
++ * \r
++ * \r
++ * <p>\r
++ * Objects of the following type(s) are allowed in the list\r
++ * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTInverseTransform }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPositiveFixedPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTGrayscaleTransform }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTFixedPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPositivePercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPositiveFixedPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTAngle }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPositiveFixedPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPositivePercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTGammaTransform }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTComplementTransform }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPositiveFixedAngle }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTInverseGammaTransform }{@code >}\r
++ * \r
++ * \r
++ */\r
++ public List<JAXBElement<?>> getEGColorTransform() {\r
++ if (egColorTransform == null) {\r
++ egColorTransform = new ArrayList<JAXBElement<?>>();\r
++ }\r
++ return this.egColorTransform;\r
++ }\r
++\r
++ public boolean isSetEGColorTransform() {\r
++ return ((this.egColorTransform!= null)&&(!this.egColorTransform.isEmpty()));\r
++ }\r
++\r
++ public void unsetEGColorTransform() {\r
++ this.egColorTransform = null;\r
++ }\r
++\r
++ /**\r
++ * Gets the value of the val property.\r
++ * \r
++ * @return\r
++ * possible object is\r
++ * {@link STSchemeColorVal }\r
++ * \r
++ */\r
++ public STSchemeColorVal getVal() {\r
++ return val;\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the val property.\r
++ * \r
++ * @param value\r
++ * allowed object is\r
++ * {@link STSchemeColorVal }\r
++ * \r
++ */\r
++ public void setVal(STSchemeColorVal value) {\r
++ this.val = value;\r
++ }\r
++\r
++ public boolean isSetVal() {\r
++ return (this.val!= null);\r
++ }\r
++\r
++}\r
--- /dev/null
--- /dev/null
++/* ====================================================================\r
++ Licensed to the Apache Software Foundation (ASF) under one or more\r
++ contributor license agreements. See the NOTICE file distributed with\r
++ this work for additional information regarding copyright ownership.\r
++ The ASF licenses this file to You under the Apache License, Version 2.0\r
++ (the "License"); you may not use this file except in compliance with\r
++ the License. You may obtain a copy of the License at\r
++\r
++ http://www.apache.org/licenses/LICENSE-2.0\r
++\r
++ Unless required by applicable law or agreed to in writing, software\r
++ distributed under the License is distributed on an "AS IS" BASIS,\r
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ See the License for the specific language governing permissions and\r
++ limitations under the License.\r
++==================================================================== */\r
++\r
++package org.apache.poi.sl.draw.binding;\r
++\r
++import javax.xml.bind.annotation.XmlAccessType;\r
++import javax.xml.bind.annotation.XmlAccessorType;\r
++import javax.xml.bind.annotation.XmlAttribute;\r
++import javax.xml.bind.annotation.XmlType;\r
++\r
++\r
++/**\r
++ * <p>Java class for CT_SphereCoords complex type.\r
++ * \r
++ * <p>The following schema fragment specifies the expected content contained within this class.\r
++ * \r
++ * <pre>\r
++ * <complexType name="CT_SphereCoords">\r
++ * <complexContent>\r
++ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ * <attribute name="lat" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_PositiveFixedAngle" />\r
++ * <attribute name="lon" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_PositiveFixedAngle" />\r
++ * <attribute name="rev" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_PositiveFixedAngle" />\r
++ * </restriction>\r
++ * </complexContent>\r
++ * </complexType>\r
++ * </pre>\r
++ * \r
++ * \r
++ */\r
++@XmlAccessorType(XmlAccessType.FIELD)\r
++@XmlType(name = "CT_SphereCoords", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")\r
++public class CTSphereCoords {\r
++\r
++ @XmlAttribute(name = "lat", required = true)\r
++ protected int lat;\r
++ @XmlAttribute(name = "lon", required = true)\r
++ protected int lon;\r
++ @XmlAttribute(name = "rev", required = true)\r
++ protected int rev;\r
++\r
++ /**\r
++ * Gets the value of the lat property.\r
++ * \r
++ */\r
++ public int getLat() {\r
++ return lat;\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the lat property.\r
++ * \r
++ */\r
++ public void setLat(int value) {\r
++ this.lat = value;\r
++ }\r
++\r
++ public boolean isSetLat() {\r
++ return true;\r
++ }\r
++\r
++ /**\r
++ * Gets the value of the lon property.\r
++ * \r
++ */\r
++ public int getLon() {\r
++ return lon;\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the lon property.\r
++ * \r
++ */\r
++ public void setLon(int value) {\r
++ this.lon = value;\r
++ }\r
++\r
++ public boolean isSetLon() {\r
++ return true;\r
++ }\r
++\r
++ /**\r
++ * Gets the value of the rev property.\r
++ * \r
++ */\r
++ public int getRev() {\r
++ return rev;\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the rev property.\r
++ * \r
++ */\r
++ public void setRev(int value) {\r
++ this.rev = value;\r
++ }\r
++\r
++ public boolean isSetRev() {\r
++ return true;\r
++ }\r
++\r
++}\r
--- /dev/null
--- /dev/null
++/* ====================================================================\r
++ Licensed to the Apache Software Foundation (ASF) under one or more\r
++ contributor license agreements. See the NOTICE file distributed with\r
++ this work for additional information regarding copyright ownership.\r
++ The ASF licenses this file to You under the Apache License, Version 2.0\r
++ (the "License"); you may not use this file except in compliance with\r
++ the License. You may obtain a copy of the License at\r
++\r
++ http://www.apache.org/licenses/LICENSE-2.0\r
++\r
++ Unless required by applicable law or agreed to in writing, software\r
++ distributed under the License is distributed on an "AS IS" BASIS,\r
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ See the License for the specific language governing permissions and\r
++ limitations under the License.\r
++==================================================================== */\r
++\r
++package org.apache.poi.sl.draw.binding;\r
++\r
++import java.util.ArrayList;\r
++import java.util.List;\r
++import javax.xml.bind.JAXBElement;\r
++import javax.xml.bind.annotation.XmlAccessType;\r
++import javax.xml.bind.annotation.XmlAccessorType;\r
++import javax.xml.bind.annotation.XmlAttribute;\r
++import javax.xml.bind.annotation.XmlElementRef;\r
++import javax.xml.bind.annotation.XmlElementRefs;\r
++import javax.xml.bind.annotation.XmlType;\r
++import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;\r
++import javax.xml.bind.annotation.adapters.HexBinaryAdapter;\r
++import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;\r
++\r
++\r
++/**\r
++ * <p>Java class for CT_SystemColor complex type.\r
++ * \r
++ * <p>The following schema fragment specifies the expected content contained within this class.\r
++ * \r
++ * <pre>\r
++ * <complexType name="CT_SystemColor">\r
++ * <complexContent>\r
++ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ * <sequence>\r
++ * <group ref="{http://schemas.openxmlformats.org/drawingml/2006/main}EG_ColorTransform" maxOccurs="unbounded" minOccurs="0"/>\r
++ * </sequence>\r
++ * <attribute name="val" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_SystemColorVal" />\r
++ * <attribute name="lastClr" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_HexBinary3" />\r
++ * </restriction>\r
++ * </complexContent>\r
++ * </complexType>\r
++ * </pre>\r
++ * \r
++ * \r
++ */\r
++@XmlAccessorType(XmlAccessType.FIELD)\r
++@XmlType(name = "CT_SystemColor", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", propOrder = {\r
++ "egColorTransform"\r
++})\r
++public class CTSystemColor {\r
++\r
++ @XmlElementRefs({\r
++ @XmlElementRef(name = "alphaMod", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "satMod", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "lumMod", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "lum", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "sat", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "red", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "invGamma", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "greenMod", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "blueOff", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "hue", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "comp", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "lumOff", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "blueMod", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "greenOff", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "alphaOff", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "green", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "inv", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "alpha", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "shade", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "redOff", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "blue", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "hueMod", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "redMod", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "hueOff", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "gray", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "gamma", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "tint", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),\r
++ @XmlElementRef(name = "satOff", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false)\r
++ })\r
++ protected List<JAXBElement<?>> egColorTransform;\r
++ @XmlAttribute(name = "val", required = true)\r
++ @XmlJavaTypeAdapter(CollapsedStringAdapter.class)\r
++ protected String val;\r
++ @XmlAttribute(name = "lastClr")\r
++ @XmlJavaTypeAdapter(HexBinaryAdapter.class)\r
++ protected byte[] lastClr;\r
++\r
++ /**\r
++ * Gets the value of the egColorTransform property.\r
++ * \r
++ * <p>\r
++ * This accessor method returns a reference to the live list,\r
++ * not a snapshot. Therefore any modification you make to the\r
++ * returned list will be present inside the JAXB object.\r
++ * This is why there is not a <CODE>set</CODE> method for the egColorTransform property.\r
++ * \r
++ * <p>\r
++ * For example, to add a new item, do as follows:\r
++ * <pre>\r
++ * getEGColorTransform().add(newItem);\r
++ * </pre>\r
++ * \r
++ * \r
++ * <p>\r
++ * Objects of the following type(s) are allowed in the list\r
++ * {@link JAXBElement }{@code <}{@link CTPositivePercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTInverseGammaTransform }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPositiveFixedAngle }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTComplementTransform }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTFixedPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTInverseTransform }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPositiveFixedPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPositiveFixedPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPositivePercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTAngle }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTGrayscaleTransform }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTGammaTransform }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}\r
++ * {@link JAXBElement }{@code <}{@link CTPositiveFixedPercentage }{@code >}\r
++ * \r
++ * \r
++ */\r
++ public List<JAXBElement<?>> getEGColorTransform() {\r
++ if (egColorTransform == null) {\r
++ egColorTransform = new ArrayList<JAXBElement<?>>();\r
++ }\r
++ return this.egColorTransform;\r
++ }\r
++\r
++ public boolean isSetEGColorTransform() {\r
++ return ((this.egColorTransform!= null)&&(!this.egColorTransform.isEmpty()));\r
++ }\r
++\r
++ public void unsetEGColorTransform() {\r
++ this.egColorTransform = null;\r
++ }\r
++\r
++ /**\r
++ * Gets the value of the val property.\r
++ * \r
++ * @return\r
++ * possible object is\r
++ * {@link String }\r
++ * \r
++ */\r
++ public String getVal() {\r
++ return val;\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the val property.\r
++ * \r
++ * @param value\r
++ * allowed object is\r
++ * {@link String }\r
++ * \r
++ */\r
++ public void setVal(String value) {\r
++ this.val = value;\r
++ }\r
++\r
++ public boolean isSetVal() {\r
++ return (this.val!= null);\r
++ }\r
++\r
++ /**\r
++ * Gets the value of the lastClr property.\r
++ * \r
++ * @return\r
++ * possible object is\r
++ * {@link String }\r
++ * \r
++ */\r
++ public byte[] getLastClr() {\r
++ return lastClr;\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the lastClr property.\r
++ * \r
++ * @param value\r
++ * allowed object is\r
++ * {@link String }\r
++ * \r
++ */\r
++ public void setLastClr(byte[] value) {\r
++ this.lastClr = value;\r
++ }\r
++\r
++ public boolean isSetLastClr() {\r
++ return (this.lastClr!= null);\r
++ }\r
++\r
++}\r
--- /dev/null
--- /dev/null
++/* ====================================================================\r
++ Licensed to the Apache Software Foundation (ASF) under one or more\r
++ contributor license agreements. See the NOTICE file distributed with\r
++ this work for additional information regarding copyright ownership.\r
++ The ASF licenses this file to You under the Apache License, Version 2.0\r
++ (the "License"); you may not use this file except in compliance with\r
++ the License. You may obtain a copy of the License at\r
++\r
++ http://www.apache.org/licenses/LICENSE-2.0\r
++\r
++ Unless required by applicable law or agreed to in writing, software\r
++ distributed under the License is distributed on an "AS IS" BASIS,\r
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ See the License for the specific language governing permissions and\r
++ limitations under the License.\r
++==================================================================== */\r
++\r
++package org.apache.poi.sl.draw.binding;\r
++\r
++import javax.xml.bind.annotation.XmlAccessType;\r
++import javax.xml.bind.annotation.XmlAccessorType;\r
++import javax.xml.bind.annotation.XmlAttribute;\r
++import javax.xml.bind.annotation.XmlElement;\r
++import javax.xml.bind.annotation.XmlType;\r
++\r
++\r
++/**\r
++ * <p>Java class for CT_Transform2D complex type.\r
++ * \r
++ * <p>The following schema fragment specifies the expected content contained within this class.\r
++ * \r
++ * <pre>\r
++ * <complexType name="CT_Transform2D">\r
++ * <complexContent>\r
++ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ * <sequence>\r
++ * <element name="off" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_Point2D" minOccurs="0"/>\r
++ * <element name="ext" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_PositiveSize2D" minOccurs="0"/>\r
++ * </sequence>\r
++ * <attribute name="rot" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_Angle" default="0" />\r
++ * <attribute name="flipH" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />\r
++ * <attribute name="flipV" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />\r
++ * </restriction>\r
++ * </complexContent>\r
++ * </complexType>\r
++ * </pre>\r
++ * \r
++ * \r
++ */\r
++@XmlAccessorType(XmlAccessType.FIELD)\r
++@XmlType(name = "CT_Transform2D", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", propOrder = {\r
++ "off",\r
++ "ext"\r
++})\r
++public class CTTransform2D {\r
++\r
++ @XmlElement(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")\r
++ protected CTPoint2D off;\r
++ @XmlElement(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")\r
++ protected CTPositiveSize2D ext;\r
++ @XmlAttribute(name = "rot")\r
++ protected Integer rot;\r
++ @XmlAttribute(name = "flipH")\r
++ protected Boolean flipH;\r
++ @XmlAttribute(name = "flipV")\r
++ protected Boolean flipV;\r
++\r
++ /**\r
++ * Gets the value of the off property.\r
++ * \r
++ * @return\r
++ * possible object is\r
++ * {@link CTPoint2D }\r
++ * \r
++ */\r
++ public CTPoint2D getOff() {\r
++ return off;\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the off property.\r
++ * \r
++ * @param value\r
++ * allowed object is\r
++ * {@link CTPoint2D }\r
++ * \r
++ */\r
++ public void setOff(CTPoint2D value) {\r
++ this.off = value;\r
++ }\r
++\r
++ public boolean isSetOff() {\r
++ return (this.off!= null);\r
++ }\r
++\r
++ /**\r
++ * Gets the value of the ext property.\r
++ * \r
++ * @return\r
++ * possible object is\r
++ * {@link CTPositiveSize2D }\r
++ * \r
++ */\r
++ public CTPositiveSize2D getExt() {\r
++ return ext;\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the ext property.\r
++ * \r
++ * @param value\r
++ * allowed object is\r
++ * {@link CTPositiveSize2D }\r
++ * \r
++ */\r
++ public void setExt(CTPositiveSize2D value) {\r
++ this.ext = value;\r
++ }\r
++\r
++ public boolean isSetExt() {\r
++ return (this.ext!= null);\r
++ }\r
++\r
++ /**\r
++ * Gets the value of the rot property.\r
++ * \r
++ * @return\r
++ * possible object is\r
++ * {@link Integer }\r
++ * \r
++ */\r
++ public int getRot() {\r
++ if (rot == null) {\r
++ return 0;\r
++ } else {\r
++ return rot;\r
++ }\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the rot property.\r
++ * \r
++ * @param value\r
++ * allowed object is\r
++ * {@link Integer }\r
++ * \r
++ */\r
++ public void setRot(int value) {\r
++ this.rot = value;\r
++ }\r
++\r
++ public boolean isSetRot() {\r
++ return (this.rot!= null);\r
++ }\r
++\r
++ public void unsetRot() {\r
++ this.rot = null;\r
++ }\r
++\r
++ /**\r
++ * Gets the value of the flipH property.\r
++ * \r
++ * @return\r
++ * possible object is\r
++ * {@link Boolean }\r
++ * \r
++ */\r
++ public boolean isFlipH() {\r
++ if (flipH == null) {\r
++ return false;\r
++ } else {\r
++ return flipH;\r
++ }\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the flipH property.\r
++ * \r
++ * @param value\r
++ * allowed object is\r
++ * {@link Boolean }\r
++ * \r
++ */\r
++ public void setFlipH(boolean value) {\r
++ this.flipH = value;\r
++ }\r
++\r
++ public boolean isSetFlipH() {\r
++ return (this.flipH!= null);\r
++ }\r
++\r
++ public void unsetFlipH() {\r
++ this.flipH = null;\r
++ }\r
++\r
++ /**\r
++ * Gets the value of the flipV property.\r
++ * \r
++ * @return\r
++ * possible object is\r
++ * {@link Boolean }\r
++ * \r
++ */\r
++ public boolean isFlipV() {\r
++ if (flipV == null) {\r
++ return false;\r
++ } else {\r
++ return flipV;\r
++ }\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the flipV property.\r
++ * \r
++ * @param value\r
++ * allowed object is\r
++ * {@link Boolean }\r
++ * \r
++ */\r
++ public void setFlipV(boolean value) {\r
++ this.flipV = value;\r
++ }\r
++\r
++ public boolean isSetFlipV() {\r
++ return (this.flipV!= null);\r
++ }\r
++\r
++ public void unsetFlipV() {\r
++ this.flipV = null;\r
++ }\r
++\r
++}\r
--- /dev/null
--- /dev/null
++/* ====================================================================\r
++ Licensed to the Apache Software Foundation (ASF) under one or more\r
++ contributor license agreements. See the NOTICE file distributed with\r
++ this work for additional information regarding copyright ownership.\r
++ The ASF licenses this file to You under the Apache License, Version 2.0\r
++ (the "License"); you may not use this file except in compliance with\r
++ the License. You may obtain a copy of the License at\r
++\r
++ http://www.apache.org/licenses/LICENSE-2.0\r
++\r
++ Unless required by applicable law or agreed to in writing, software\r
++ distributed under the License is distributed on an "AS IS" BASIS,\r
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ See the License for the specific language governing permissions and\r
++ limitations under the License.\r
++==================================================================== */\r
++\r
++package org.apache.poi.sl.draw.binding;\r
++\r
++import javax.xml.bind.annotation.XmlAccessType;\r
++import javax.xml.bind.annotation.XmlAccessorType;\r
++import javax.xml.bind.annotation.XmlAttribute;\r
++import javax.xml.bind.annotation.XmlType;\r
++\r
++\r
++/**\r
++ * <p>Java class for CT_Vector3D complex type.\r
++ * \r
++ * <p>The following schema fragment specifies the expected content contained within this class.\r
++ * \r
++ * <pre>\r
++ * <complexType name="CT_Vector3D">\r
++ * <complexContent>\r
++ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ * <attribute name="dx" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_Coordinate" />\r
++ * <attribute name="dy" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_Coordinate" />\r
++ * <attribute name="dz" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_Coordinate" />\r
++ * </restriction>\r
++ * </complexContent>\r
++ * </complexType>\r
++ * </pre>\r
++ * \r
++ * \r
++ */\r
++@XmlAccessorType(XmlAccessType.FIELD)\r
++@XmlType(name = "CT_Vector3D", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")\r
++public class CTVector3D {\r
++\r
++ @XmlAttribute(name = "dx", required = true)\r
++ protected long dx;\r
++ @XmlAttribute(name = "dy", required = true)\r
++ protected long dy;\r
++ @XmlAttribute(name = "dz", required = true)\r
++ protected long dz;\r
++\r
++ /**\r
++ * Gets the value of the dx property.\r
++ * \r
++ */\r
++ public long getDx() {\r
++ return dx;\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the dx property.\r
++ * \r
++ */\r
++ public void setDx(long value) {\r
++ this.dx = value;\r
++ }\r
++\r
++ public boolean isSetDx() {\r
++ return true;\r
++ }\r
++\r
++ /**\r
++ * Gets the value of the dy property.\r
++ * \r
++ */\r
++ public long getDy() {\r
++ return dy;\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the dy property.\r
++ * \r
++ */\r
++ public void setDy(long value) {\r
++ this.dy = value;\r
++ }\r
++\r
++ public boolean isSetDy() {\r
++ return true;\r
++ }\r
++\r
++ /**\r
++ * Gets the value of the dz property.\r
++ * \r
++ */\r
++ public long getDz() {\r
++ return dz;\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the dz property.\r
++ * \r
++ */\r
++ public void setDz(long value) {\r
++ this.dz = value;\r
++ }\r
++\r
++ public boolean isSetDz() {\r
++ return true;\r
++ }\r
++\r
++}\r
--- /dev/null
--- /dev/null
++/* ====================================================================\r
++ Licensed to the Apache Software Foundation (ASF) under one or more\r
++ contributor license agreements. See the NOTICE file distributed with\r
++ this work for additional information regarding copyright ownership.\r
++ The ASF licenses this file to You under the Apache License, Version 2.0\r
++ (the "License"); you may not use this file except in compliance with\r
++ the License. You may obtain a copy of the License at\r
++\r
++ http://www.apache.org/licenses/LICENSE-2.0\r
++\r
++ Unless required by applicable law or agreed to in writing, software\r
++ distributed under the License is distributed on an "AS IS" BASIS,\r
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ See the License for the specific language governing permissions and\r
++ limitations under the License.\r
++==================================================================== */\r
++\r
++package org.apache.poi.sl.draw.binding;\r
++\r
++import javax.xml.bind.annotation.XmlAccessType;\r
++import javax.xml.bind.annotation.XmlAccessorType;\r
++import javax.xml.bind.annotation.XmlAttribute;\r
++import javax.xml.bind.annotation.XmlElement;\r
++import javax.xml.bind.annotation.XmlType;\r
++import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;\r
++import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;\r
++\r
++\r
++/**\r
++ * <p>Java class for CT_XYAdjustHandle complex type.\r
++ * \r
++ * <p>The following schema fragment specifies the expected content contained within this class.\r
++ * \r
++ * <pre>\r
++ * <complexType name="CT_XYAdjustHandle">\r
++ * <complexContent>\r
++ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ * <sequence>\r
++ * <element name="pos" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_AdjPoint2D"/>\r
++ * </sequence>\r
++ * <attribute name="gdRefX" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_GeomGuideName" />\r
++ * <attribute name="minX" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_AdjCoordinate" />\r
++ * <attribute name="maxX" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_AdjCoordinate" />\r
++ * <attribute name="gdRefY" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_GeomGuideName" />\r
++ * <attribute name="minY" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_AdjCoordinate" />\r
++ * <attribute name="maxY" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_AdjCoordinate" />\r
++ * </restriction>\r
++ * </complexContent>\r
++ * </complexType>\r
++ * </pre>\r
++ * \r
++ * \r
++ */\r
++@XmlAccessorType(XmlAccessType.FIELD)\r
++@XmlType(name = "CT_XYAdjustHandle", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", propOrder = {\r
++ "pos"\r
++})\r
++public class CTXYAdjustHandle {\r
++\r
++ @XmlElement(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", required = true)\r
++ protected CTAdjPoint2D pos;\r
++ @XmlAttribute(name = "gdRefX")\r
++ @XmlJavaTypeAdapter(CollapsedStringAdapter.class)\r
++ protected String gdRefX;\r
++ @XmlAttribute(name = "minX")\r
++ protected String minX;\r
++ @XmlAttribute(name = "maxX")\r
++ protected String maxX;\r
++ @XmlAttribute(name = "gdRefY")\r
++ @XmlJavaTypeAdapter(CollapsedStringAdapter.class)\r
++ protected String gdRefY;\r
++ @XmlAttribute(name = "minY")\r
++ protected String minY;\r
++ @XmlAttribute(name = "maxY")\r
++ protected String maxY;\r
++\r
++ /**\r
++ * Gets the value of the pos property.\r
++ * \r
++ * @return\r
++ * possible object is\r
++ * {@link CTAdjPoint2D }\r
++ * \r
++ */\r
++ public CTAdjPoint2D getPos() {\r
++ return pos;\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the pos property.\r
++ * \r
++ * @param value\r
++ * allowed object is\r
++ * {@link CTAdjPoint2D }\r
++ * \r
++ */\r
++ public void setPos(CTAdjPoint2D value) {\r
++ this.pos = value;\r
++ }\r
++\r
++ public boolean isSetPos() {\r
++ return (this.pos!= null);\r
++ }\r
++\r
++ /**\r
++ * Gets the value of the gdRefX property.\r
++ * \r
++ * @return\r
++ * possible object is\r
++ * {@link String }\r
++ * \r
++ */\r
++ public String getGdRefX() {\r
++ return gdRefX;\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the gdRefX property.\r
++ * \r
++ * @param value\r
++ * allowed object is\r
++ * {@link String }\r
++ * \r
++ */\r
++ public void setGdRefX(String value) {\r
++ this.gdRefX = value;\r
++ }\r
++\r
++ public boolean isSetGdRefX() {\r
++ return (this.gdRefX!= null);\r
++ }\r
++\r
++ /**\r
++ * Gets the value of the minX property.\r
++ * \r
++ * @return\r
++ * possible object is\r
++ * {@link String }\r
++ * \r
++ */\r
++ public String getMinX() {\r
++ return minX;\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the minX property.\r
++ * \r
++ * @param value\r
++ * allowed object is\r
++ * {@link String }\r
++ * \r
++ */\r
++ public void setMinX(String value) {\r
++ this.minX = value;\r
++ }\r
++\r
++ public boolean isSetMinX() {\r
++ return (this.minX!= null);\r
++ }\r
++\r
++ /**\r
++ * Gets the value of the maxX property.\r
++ * \r
++ * @return\r
++ * possible object is\r
++ * {@link String }\r
++ * \r
++ */\r
++ public String getMaxX() {\r
++ return maxX;\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the maxX property.\r
++ * \r
++ * @param value\r
++ * allowed object is\r
++ * {@link String }\r
++ * \r
++ */\r
++ public void setMaxX(String value) {\r
++ this.maxX = value;\r
++ }\r
++\r
++ public boolean isSetMaxX() {\r
++ return (this.maxX!= null);\r
++ }\r
++\r
++ /**\r
++ * Gets the value of the gdRefY property.\r
++ * \r
++ * @return\r
++ * possible object is\r
++ * {@link String }\r
++ * \r
++ */\r
++ public String getGdRefY() {\r
++ return gdRefY;\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the gdRefY property.\r
++ * \r
++ * @param value\r
++ * allowed object is\r
++ * {@link String }\r
++ * \r
++ */\r
++ public void setGdRefY(String value) {\r
++ this.gdRefY = value;\r
++ }\r
++\r
++ public boolean isSetGdRefY() {\r
++ return (this.gdRefY!= null);\r
++ }\r
++\r
++ /**\r
++ * Gets the value of the minY property.\r
++ * \r
++ * @return\r
++ * possible object is\r
++ * {@link String }\r
++ * \r
++ */\r
++ public String getMinY() {\r
++ return minY;\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the minY property.\r
++ * \r
++ * @param value\r
++ * allowed object is\r
++ * {@link String }\r
++ * \r
++ */\r
++ public void setMinY(String value) {\r
++ this.minY = value;\r
++ }\r
++\r
++ public boolean isSetMinY() {\r
++ return (this.minY!= null);\r
++ }\r
++\r
++ /**\r
++ * Gets the value of the maxY property.\r
++ * \r
++ * @return\r
++ * possible object is\r
++ * {@link String }\r
++ * \r
++ */\r
++ public String getMaxY() {\r
++ return maxY;\r
++ }\r
++\r
++ /**\r
++ * Sets the value of the maxY property.\r
++ * \r
++ * @param value\r
++ * allowed object is\r
++ * {@link String }\r
++ * \r
++ */\r
++ public void setMaxY(String value) {\r
++ this.maxY = value;\r
++ }\r
++\r
++ public boolean isSetMaxY() {\r
++ return (this.maxY!= null);\r
++ }\r
++\r
++}\r
--- /dev/null
--- /dev/null
++/* ====================================================================\r
++ Licensed to the Apache Software Foundation (ASF) under one or more\r
++ contributor license agreements. See the NOTICE file distributed with\r
++ this work for additional information regarding copyright ownership.\r
++ The ASF licenses this file to You under the Apache License, Version 2.0\r
++ (the "License"); you may not use this file except in compliance with\r
++ the License. You may obtain a copy of the License at\r
++\r
++ http://www.apache.org/licenses/LICENSE-2.0\r
++\r
++ Unless required by applicable law or agreed to in writing, software\r
++ distributed under the License is distributed on an "AS IS" BASIS,\r
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ See the License for the specific language governing permissions and\r
++ limitations under the License.\r
++==================================================================== */\r
++\r
++package org.apache.poi.sl.draw.binding;\r
++\r
++import javax.xml.bind.JAXBElement;\r
++import javax.xml.bind.annotation.XmlElementDecl;\r
++import javax.xml.bind.annotation.XmlRegistry;\r
++import javax.xml.namespace.QName;\r
++\r
++\r
++/**\r
++ * This object contains factory methods for each \r
++ * Java content interface and Java element interface \r
++ * generated in the org.apache.poi.sl.draw.binding package. \r
++ * <p>An ObjectFactory allows you to programatically \r
++ * construct new instances of the Java representation \r
++ * for XML content. The Java representation of XML \r
++ * content can consist of schema derived interfaces \r
++ * and classes representing the binding of schema \r
++ * type definitions, element declarations and model \r
++ * groups. Factory methods for each of these are \r
++ * provided in this class.\r
++ * \r
++ */\r
++@XmlRegistry\r
++public class ObjectFactory {\r
++\r
++ private final static QName _CTSRgbColorAlpha_QNAME = new QName("http://schemas.openxmlformats.org/drawingml/2006/main", "alpha");\r
++ private final static QName _CTSRgbColorLum_QNAME = new QName("http://schemas.openxmlformats.org/drawingml/2006/main", "lum");\r
++ private final static QName _CTSRgbColorGamma_QNAME = new QName("http://schemas.openxmlformats.org/drawingml/2006/main", "gamma");\r
++ private final static QName _CTSRgbColorInvGamma_QNAME = new QName("http://schemas.openxmlformats.org/drawingml/2006/main", "invGamma");\r
++ private final static QName _CTSRgbColorAlphaMod_QNAME = new QName("http://schemas.openxmlformats.org/drawingml/2006/main", "alphaMod");\r
++ private final static QName _CTSRgbColorRedOff_QNAME = new QName("http://schemas.openxmlformats.org/drawingml/2006/main", "redOff");\r
++ private final static QName _CTSRgbColorAlphaOff_QNAME = new QName("http://schemas.openxmlformats.org/drawingml/2006/main", "alphaOff");\r
++ private final static QName _CTSRgbColorGreenOff_QNAME = new QName("http://schemas.openxmlformats.org/drawingml/2006/main", "greenOff");\r
++ private final static QName _CTSRgbColorHue_QNAME = new QName("http://schemas.openxmlformats.org/drawingml/2006/main", "hue");\r
++ private final static QName _CTSRgbColorRedMod_QNAME = new QName("http://schemas.openxmlformats.org/drawingml/2006/main", "redMod");\r
++ private final static QName _CTSRgbColorSatOff_QNAME = new QName("http://schemas.openxmlformats.org/drawingml/2006/main", "satOff");\r
++ private final static QName _CTSRgbColorGreenMod_QNAME = new QName("http://schemas.openxmlformats.org/drawingml/2006/main", "greenMod");\r
++ private final static QName _CTSRgbColorSat_QNAME = new QName("http://schemas.openxmlformats.org/drawingml/2006/main", "sat");\r
++ private final static QName _CTSRgbColorBlue_QNAME = new QName("http://schemas.openxmlformats.org/drawingml/2006/main", "blue");\r
++ private final static QName _CTSRgbColorRed_QNAME = new QName("http://schemas.openxmlformats.org/drawingml/2006/main", "red");\r
++ private final static QName _CTSRgbColorSatMod_QNAME = new QName("http://schemas.openxmlformats.org/drawingml/2006/main", "satMod");\r
++ private final static QName _CTSRgbColorBlueMod_QNAME = new QName("http://schemas.openxmlformats.org/drawingml/2006/main", "blueMod");\r
++ private final static QName _CTSRgbColorHueOff_QNAME = new QName("http://schemas.openxmlformats.org/drawingml/2006/main", "hueOff");\r
++ private final static QName _CTSRgbColorShade_QNAME = new QName("http://schemas.openxmlformats.org/drawingml/2006/main", "shade");\r
++ private final static QName _CTSRgbColorLumMod_QNAME = new QName("http://schemas.openxmlformats.org/drawingml/2006/main", "lumMod");\r
++ private final static QName _CTSRgbColorInv_QNAME = new QName("http://schemas.openxmlformats.org/drawingml/2006/main", "inv");\r
++ private final static QName _CTSRgbColorLumOff_QNAME = new QName("http://schemas.openxmlformats.org/drawingml/2006/main", "lumOff");\r
++ private final static QName _CTSRgbColorTint_QNAME = new QName("http://schemas.openxmlformats.org/drawingml/2006/main", "tint");\r
++ private final static QName _CTSRgbColorGreen_QNAME = new QName("http://schemas.openxmlformats.org/drawingml/2006/main", "green");\r
++ private final static QName _CTSRgbColorComp_QNAME = new QName("http://schemas.openxmlformats.org/drawingml/2006/main", "comp");\r
++ private final static QName _CTSRgbColorBlueOff_QNAME = new QName("http://schemas.openxmlformats.org/drawingml/2006/main", "blueOff");\r
++ private final static QName _CTSRgbColorHueMod_QNAME = new QName("http://schemas.openxmlformats.org/drawingml/2006/main", "hueMod");\r
++ private final static QName _CTSRgbColorGray_QNAME = new QName("http://schemas.openxmlformats.org/drawingml/2006/main", "gray");\r
++\r
++ /**\r
++ * Create a new ObjectFactory that can be used to create new instances of schema derived classes for package: org.apache.poi.sl.draw.binding\r
++ * \r
++ */\r
++ public ObjectFactory() {\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link CTPath2DQuadBezierTo }\r
++ * \r
++ */\r
++ public CTPath2DQuadBezierTo createCTPath2DQuadBezierTo() {\r
++ return new CTPath2DQuadBezierTo();\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link CTCustomGeometry2D }\r
++ * \r
++ */\r
++ public CTCustomGeometry2D createCTCustomGeometry2D() {\r
++ return new CTCustomGeometry2D();\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link CTPolarAdjustHandle }\r
++ * \r
++ */\r
++ public CTPolarAdjustHandle createCTPolarAdjustHandle() {\r
++ return new CTPolarAdjustHandle();\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link CTPath2DClose }\r
++ * \r
++ */\r
++ public CTPath2DClose createCTPath2DClose() {\r
++ return new CTPath2DClose();\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link CTPoint2D }\r
++ * \r
++ */\r
++ public CTPoint2D createCTPoint2D() {\r
++ return new CTPoint2D();\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link CTInverseTransform }\r
++ * \r
++ */\r
++ public CTInverseTransform createCTInverseTransform() {\r
++ return new CTInverseTransform();\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link CTPercentage }\r
++ * \r
++ */\r
++ public CTPercentage createCTPercentage() {\r
++ return new CTPercentage();\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link CTSystemColor }\r
++ * \r
++ */\r
++ public CTSystemColor createCTSystemColor() {\r
++ return new CTSystemColor();\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link CTConnectionSite }\r
++ * \r
++ */\r
++ public CTConnectionSite createCTConnectionSite() {\r
++ return new CTConnectionSite();\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link CTColor }\r
++ * \r
++ */\r
++ public CTColor createCTColor() {\r
++ return new CTColor();\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link CTPositiveFixedAngle }\r
++ * \r
++ */\r
++ public CTPositiveFixedAngle createCTPositiveFixedAngle() {\r
++ return new CTPositiveFixedAngle();\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link CTFixedPercentage }\r
++ * \r
++ */\r
++ public CTFixedPercentage createCTFixedPercentage() {\r
++ return new CTFixedPercentage();\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link CTHslColor }\r
++ * \r
++ */\r
++ public CTHslColor createCTHslColor() {\r
++ return new CTHslColor();\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link CTConnection }\r
++ * \r
++ */\r
++ public CTConnection createCTConnection() {\r
++ return new CTConnection();\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link CTPath2DLineTo }\r
++ * \r
++ */\r
++ public CTPath2DLineTo createCTPath2DLineTo() {\r
++ return new CTPath2DLineTo();\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link CTTransform2D }\r
++ * \r
++ */\r
++ public CTTransform2D createCTTransform2D() {\r
++ return new CTTransform2D();\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link CTPositivePercentage }\r
++ * \r
++ */\r
++ public CTPositivePercentage createCTPositivePercentage() {\r
++ return new CTPositivePercentage();\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link CTVector3D }\r
++ * \r
++ */\r
++ public CTVector3D createCTVector3D() {\r
++ return new CTVector3D();\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link CTSphereCoords }\r
++ * \r
++ */\r
++ public CTSphereCoords createCTSphereCoords() {\r
++ return new CTSphereCoords();\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link CTPath2D }\r
++ * \r
++ */\r
++ public CTPath2D createCTPath2D() {\r
++ return new CTPath2D();\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link CTGroupTransform2D }\r
++ * \r
++ */\r
++ public CTGroupTransform2D createCTGroupTransform2D() {\r
++ return new CTGroupTransform2D();\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link CTGrayscaleTransform }\r
++ * \r
++ */\r
++ public CTGrayscaleTransform createCTGrayscaleTransform() {\r
++ return new CTGrayscaleTransform();\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link CTRatio }\r
++ * \r
++ */\r
++ public CTRatio createCTRatio() {\r
++ return new CTRatio();\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link CTSRgbColor }\r
++ * \r
++ */\r
++ public CTSRgbColor createCTSRgbColor() {\r
++ return new CTSRgbColor();\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link CTGeomGuideList }\r
++ * \r
++ */\r
++ public CTGeomGuideList createCTGeomGuideList() {\r
++ return new CTGeomGuideList();\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link CTComplementTransform }\r
++ * \r
++ */\r
++ public CTComplementTransform createCTComplementTransform() {\r
++ return new CTComplementTransform();\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link CTPath2DCubicBezierTo }\r
++ * \r
++ */\r
++ public CTPath2DCubicBezierTo createCTPath2DCubicBezierTo() {\r
++ return new CTPath2DCubicBezierTo();\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link CTXYAdjustHandle }\r
++ * \r
++ */\r
++ public CTXYAdjustHandle createCTXYAdjustHandle() {\r
++ return new CTXYAdjustHandle();\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link CTPresetColor }\r
++ * \r
++ */\r
++ public CTPresetColor createCTPresetColor() {\r
++ return new CTPresetColor();\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link CTOfficeArtExtension }\r
++ * \r
++ */\r
++ public CTOfficeArtExtension createCTOfficeArtExtension() {\r
++ return new CTOfficeArtExtension();\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link CTSchemeColor }\r
++ * \r
++ */\r
++ public CTSchemeColor createCTSchemeColor() {\r
++ return new CTSchemeColor();\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link CTConnectionSiteList }\r
++ * \r
++ */\r
++ public CTConnectionSiteList createCTConnectionSiteList() {\r
++ return new CTConnectionSiteList();\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link CTPath2DArcTo }\r
++ * \r
++ */\r
++ public CTPath2DArcTo createCTPath2DArcTo() {\r
++ return new CTPath2DArcTo();\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link CTPath2DList }\r
++ * \r
++ */\r
++ public CTPath2DList createCTPath2DList() {\r
++ return new CTPath2DList();\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link CTAngle }\r
++ * \r
++ */\r
++ public CTAngle createCTAngle() {\r
++ return new CTAngle();\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link CTScale2D }\r
++ * \r
++ */\r
++ public CTScale2D createCTScale2D() {\r
++ return new CTScale2D();\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link CTPositiveSize2D }\r
++ * \r
++ */\r
++ public CTPositiveSize2D createCTPositiveSize2D() {\r
++ return new CTPositiveSize2D();\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link CTOfficeArtExtensionList }\r
++ * \r
++ */\r
++ public CTOfficeArtExtensionList createCTOfficeArtExtensionList() {\r
++ return new CTOfficeArtExtensionList();\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link CTHyperlink }\r
++ * \r
++ */\r
++ public CTHyperlink createCTHyperlink() {\r
++ return new CTHyperlink();\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link CTPoint3D }\r
++ * \r
++ */\r
++ public CTPoint3D createCTPoint3D() {\r
++ return new CTPoint3D();\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link CTInverseGammaTransform }\r
++ * \r
++ */\r
++ public CTInverseGammaTransform createCTInverseGammaTransform() {\r
++ return new CTInverseGammaTransform();\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link CTPositiveFixedPercentage }\r
++ * \r
++ */\r
++ public CTPositiveFixedPercentage createCTPositiveFixedPercentage() {\r
++ return new CTPositiveFixedPercentage();\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link CTGeomRect }\r
++ * \r
++ */\r
++ public CTGeomRect createCTGeomRect() {\r
++ return new CTGeomRect();\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link CTPresetTextShape }\r
++ * \r
++ */\r
++ public CTPresetTextShape createCTPresetTextShape() {\r
++ return new CTPresetTextShape();\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link CTColorMRU }\r
++ * \r
++ */\r
++ public CTColorMRU createCTColorMRU() {\r
++ return new CTColorMRU();\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link CTPath2DMoveTo }\r
++ * \r
++ */\r
++ public CTPath2DMoveTo createCTPath2DMoveTo() {\r
++ return new CTPath2DMoveTo();\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link CTEmbeddedWAVAudioFile }\r
++ * \r
++ */\r
++ public CTEmbeddedWAVAudioFile createCTEmbeddedWAVAudioFile() {\r
++ return new CTEmbeddedWAVAudioFile();\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link CTScRgbColor }\r
++ * \r
++ */\r
++ public CTScRgbColor createCTScRgbColor() {\r
++ return new CTScRgbColor();\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link CTPresetGeometry2D }\r
++ * \r
++ */\r
++ public CTPresetGeometry2D createCTPresetGeometry2D() {\r
++ return new CTPresetGeometry2D();\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link CTGeomGuide }\r
++ * \r
++ */\r
++ public CTGeomGuide createCTGeomGuide() {\r
++ return new CTGeomGuide();\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link CTRelativeRect }\r
++ * \r
++ */\r
++ public CTRelativeRect createCTRelativeRect() {\r
++ return new CTRelativeRect();\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link CTAdjustHandleList }\r
++ * \r
++ */\r
++ public CTAdjustHandleList createCTAdjustHandleList() {\r
++ return new CTAdjustHandleList();\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link CTAdjPoint2D }\r
++ * \r
++ */\r
++ public CTAdjPoint2D createCTAdjPoint2D() {\r
++ return new CTAdjPoint2D();\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link CTGammaTransform }\r
++ * \r
++ */\r
++ public CTGammaTransform createCTGammaTransform() {\r
++ return new CTGammaTransform();\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPositiveFixedPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "alpha", scope = CTSRgbColor.class)\r
++ public JAXBElement<CTPositiveFixedPercentage> createCTSRgbColorAlpha(CTPositiveFixedPercentage value) {\r
++ return new JAXBElement<CTPositiveFixedPercentage>(_CTSRgbColorAlpha_QNAME, CTPositiveFixedPercentage.class, CTSRgbColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "lum", scope = CTSRgbColor.class)\r
++ public JAXBElement<CTPercentage> createCTSRgbColorLum(CTPercentage value) {\r
++ return new JAXBElement<CTPercentage>(_CTSRgbColorLum_QNAME, CTPercentage.class, CTSRgbColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTGammaTransform }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "gamma", scope = CTSRgbColor.class)\r
++ public JAXBElement<CTGammaTransform> createCTSRgbColorGamma(CTGammaTransform value) {\r
++ return new JAXBElement<CTGammaTransform>(_CTSRgbColorGamma_QNAME, CTGammaTransform.class, CTSRgbColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTInverseGammaTransform }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "invGamma", scope = CTSRgbColor.class)\r
++ public JAXBElement<CTInverseGammaTransform> createCTSRgbColorInvGamma(CTInverseGammaTransform value) {\r
++ return new JAXBElement<CTInverseGammaTransform>(_CTSRgbColorInvGamma_QNAME, CTInverseGammaTransform.class, CTSRgbColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPositivePercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "alphaMod", scope = CTSRgbColor.class)\r
++ public JAXBElement<CTPositivePercentage> createCTSRgbColorAlphaMod(CTPositivePercentage value) {\r
++ return new JAXBElement<CTPositivePercentage>(_CTSRgbColorAlphaMod_QNAME, CTPositivePercentage.class, CTSRgbColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "redOff", scope = CTSRgbColor.class)\r
++ public JAXBElement<CTPercentage> createCTSRgbColorRedOff(CTPercentage value) {\r
++ return new JAXBElement<CTPercentage>(_CTSRgbColorRedOff_QNAME, CTPercentage.class, CTSRgbColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTFixedPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "alphaOff", scope = CTSRgbColor.class)\r
++ public JAXBElement<CTFixedPercentage> createCTSRgbColorAlphaOff(CTFixedPercentage value) {\r
++ return new JAXBElement<CTFixedPercentage>(_CTSRgbColorAlphaOff_QNAME, CTFixedPercentage.class, CTSRgbColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "greenOff", scope = CTSRgbColor.class)\r
++ public JAXBElement<CTPercentage> createCTSRgbColorGreenOff(CTPercentage value) {\r
++ return new JAXBElement<CTPercentage>(_CTSRgbColorGreenOff_QNAME, CTPercentage.class, CTSRgbColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPositiveFixedAngle }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "hue", scope = CTSRgbColor.class)\r
++ public JAXBElement<CTPositiveFixedAngle> createCTSRgbColorHue(CTPositiveFixedAngle value) {\r
++ return new JAXBElement<CTPositiveFixedAngle>(_CTSRgbColorHue_QNAME, CTPositiveFixedAngle.class, CTSRgbColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "redMod", scope = CTSRgbColor.class)\r
++ public JAXBElement<CTPercentage> createCTSRgbColorRedMod(CTPercentage value) {\r
++ return new JAXBElement<CTPercentage>(_CTSRgbColorRedMod_QNAME, CTPercentage.class, CTSRgbColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "satOff", scope = CTSRgbColor.class)\r
++ public JAXBElement<CTPercentage> createCTSRgbColorSatOff(CTPercentage value) {\r
++ return new JAXBElement<CTPercentage>(_CTSRgbColorSatOff_QNAME, CTPercentage.class, CTSRgbColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "greenMod", scope = CTSRgbColor.class)\r
++ public JAXBElement<CTPercentage> createCTSRgbColorGreenMod(CTPercentage value) {\r
++ return new JAXBElement<CTPercentage>(_CTSRgbColorGreenMod_QNAME, CTPercentage.class, CTSRgbColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "sat", scope = CTSRgbColor.class)\r
++ public JAXBElement<CTPercentage> createCTSRgbColorSat(CTPercentage value) {\r
++ return new JAXBElement<CTPercentage>(_CTSRgbColorSat_QNAME, CTPercentage.class, CTSRgbColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "blue", scope = CTSRgbColor.class)\r
++ public JAXBElement<CTPercentage> createCTSRgbColorBlue(CTPercentage value) {\r
++ return new JAXBElement<CTPercentage>(_CTSRgbColorBlue_QNAME, CTPercentage.class, CTSRgbColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "red", scope = CTSRgbColor.class)\r
++ public JAXBElement<CTPercentage> createCTSRgbColorRed(CTPercentage value) {\r
++ return new JAXBElement<CTPercentage>(_CTSRgbColorRed_QNAME, CTPercentage.class, CTSRgbColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "satMod", scope = CTSRgbColor.class)\r
++ public JAXBElement<CTPercentage> createCTSRgbColorSatMod(CTPercentage value) {\r
++ return new JAXBElement<CTPercentage>(_CTSRgbColorSatMod_QNAME, CTPercentage.class, CTSRgbColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "blueMod", scope = CTSRgbColor.class)\r
++ public JAXBElement<CTPercentage> createCTSRgbColorBlueMod(CTPercentage value) {\r
++ return new JAXBElement<CTPercentage>(_CTSRgbColorBlueMod_QNAME, CTPercentage.class, CTSRgbColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTAngle }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "hueOff", scope = CTSRgbColor.class)\r
++ public JAXBElement<CTAngle> createCTSRgbColorHueOff(CTAngle value) {\r
++ return new JAXBElement<CTAngle>(_CTSRgbColorHueOff_QNAME, CTAngle.class, CTSRgbColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPositiveFixedPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "shade", scope = CTSRgbColor.class)\r
++ public JAXBElement<CTPositiveFixedPercentage> createCTSRgbColorShade(CTPositiveFixedPercentage value) {\r
++ return new JAXBElement<CTPositiveFixedPercentage>(_CTSRgbColorShade_QNAME, CTPositiveFixedPercentage.class, CTSRgbColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "lumMod", scope = CTSRgbColor.class)\r
++ public JAXBElement<CTPercentage> createCTSRgbColorLumMod(CTPercentage value) {\r
++ return new JAXBElement<CTPercentage>(_CTSRgbColorLumMod_QNAME, CTPercentage.class, CTSRgbColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTInverseTransform }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "inv", scope = CTSRgbColor.class)\r
++ public JAXBElement<CTInverseTransform> createCTSRgbColorInv(CTInverseTransform value) {\r
++ return new JAXBElement<CTInverseTransform>(_CTSRgbColorInv_QNAME, CTInverseTransform.class, CTSRgbColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "lumOff", scope = CTSRgbColor.class)\r
++ public JAXBElement<CTPercentage> createCTSRgbColorLumOff(CTPercentage value) {\r
++ return new JAXBElement<CTPercentage>(_CTSRgbColorLumOff_QNAME, CTPercentage.class, CTSRgbColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPositiveFixedPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "tint", scope = CTSRgbColor.class)\r
++ public JAXBElement<CTPositiveFixedPercentage> createCTSRgbColorTint(CTPositiveFixedPercentage value) {\r
++ return new JAXBElement<CTPositiveFixedPercentage>(_CTSRgbColorTint_QNAME, CTPositiveFixedPercentage.class, CTSRgbColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "green", scope = CTSRgbColor.class)\r
++ public JAXBElement<CTPercentage> createCTSRgbColorGreen(CTPercentage value) {\r
++ return new JAXBElement<CTPercentage>(_CTSRgbColorGreen_QNAME, CTPercentage.class, CTSRgbColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTComplementTransform }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "comp", scope = CTSRgbColor.class)\r
++ public JAXBElement<CTComplementTransform> createCTSRgbColorComp(CTComplementTransform value) {\r
++ return new JAXBElement<CTComplementTransform>(_CTSRgbColorComp_QNAME, CTComplementTransform.class, CTSRgbColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "blueOff", scope = CTSRgbColor.class)\r
++ public JAXBElement<CTPercentage> createCTSRgbColorBlueOff(CTPercentage value) {\r
++ return new JAXBElement<CTPercentage>(_CTSRgbColorBlueOff_QNAME, CTPercentage.class, CTSRgbColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPositivePercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "hueMod", scope = CTSRgbColor.class)\r
++ public JAXBElement<CTPositivePercentage> createCTSRgbColorHueMod(CTPositivePercentage value) {\r
++ return new JAXBElement<CTPositivePercentage>(_CTSRgbColorHueMod_QNAME, CTPositivePercentage.class, CTSRgbColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTGrayscaleTransform }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "gray", scope = CTSRgbColor.class)\r
++ public JAXBElement<CTGrayscaleTransform> createCTSRgbColorGray(CTGrayscaleTransform value) {\r
++ return new JAXBElement<CTGrayscaleTransform>(_CTSRgbColorGray_QNAME, CTGrayscaleTransform.class, CTSRgbColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPositiveFixedPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "alpha", scope = CTSchemeColor.class)\r
++ public JAXBElement<CTPositiveFixedPercentage> createCTSchemeColorAlpha(CTPositiveFixedPercentage value) {\r
++ return new JAXBElement<CTPositiveFixedPercentage>(_CTSRgbColorAlpha_QNAME, CTPositiveFixedPercentage.class, CTSchemeColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "lum", scope = CTSchemeColor.class)\r
++ public JAXBElement<CTPercentage> createCTSchemeColorLum(CTPercentage value) {\r
++ return new JAXBElement<CTPercentage>(_CTSRgbColorLum_QNAME, CTPercentage.class, CTSchemeColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTGammaTransform }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "gamma", scope = CTSchemeColor.class)\r
++ public JAXBElement<CTGammaTransform> createCTSchemeColorGamma(CTGammaTransform value) {\r
++ return new JAXBElement<CTGammaTransform>(_CTSRgbColorGamma_QNAME, CTGammaTransform.class, CTSchemeColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTInverseGammaTransform }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "invGamma", scope = CTSchemeColor.class)\r
++ public JAXBElement<CTInverseGammaTransform> createCTSchemeColorInvGamma(CTInverseGammaTransform value) {\r
++ return new JAXBElement<CTInverseGammaTransform>(_CTSRgbColorInvGamma_QNAME, CTInverseGammaTransform.class, CTSchemeColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPositivePercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "alphaMod", scope = CTSchemeColor.class)\r
++ public JAXBElement<CTPositivePercentage> createCTSchemeColorAlphaMod(CTPositivePercentage value) {\r
++ return new JAXBElement<CTPositivePercentage>(_CTSRgbColorAlphaMod_QNAME, CTPositivePercentage.class, CTSchemeColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "redOff", scope = CTSchemeColor.class)\r
++ public JAXBElement<CTPercentage> createCTSchemeColorRedOff(CTPercentage value) {\r
++ return new JAXBElement<CTPercentage>(_CTSRgbColorRedOff_QNAME, CTPercentage.class, CTSchemeColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTFixedPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "alphaOff", scope = CTSchemeColor.class)\r
++ public JAXBElement<CTFixedPercentage> createCTSchemeColorAlphaOff(CTFixedPercentage value) {\r
++ return new JAXBElement<CTFixedPercentage>(_CTSRgbColorAlphaOff_QNAME, CTFixedPercentage.class, CTSchemeColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "greenOff", scope = CTSchemeColor.class)\r
++ public JAXBElement<CTPercentage> createCTSchemeColorGreenOff(CTPercentage value) {\r
++ return new JAXBElement<CTPercentage>(_CTSRgbColorGreenOff_QNAME, CTPercentage.class, CTSchemeColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPositiveFixedAngle }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "hue", scope = CTSchemeColor.class)\r
++ public JAXBElement<CTPositiveFixedAngle> createCTSchemeColorHue(CTPositiveFixedAngle value) {\r
++ return new JAXBElement<CTPositiveFixedAngle>(_CTSRgbColorHue_QNAME, CTPositiveFixedAngle.class, CTSchemeColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "redMod", scope = CTSchemeColor.class)\r
++ public JAXBElement<CTPercentage> createCTSchemeColorRedMod(CTPercentage value) {\r
++ return new JAXBElement<CTPercentage>(_CTSRgbColorRedMod_QNAME, CTPercentage.class, CTSchemeColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "satOff", scope = CTSchemeColor.class)\r
++ public JAXBElement<CTPercentage> createCTSchemeColorSatOff(CTPercentage value) {\r
++ return new JAXBElement<CTPercentage>(_CTSRgbColorSatOff_QNAME, CTPercentage.class, CTSchemeColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "greenMod", scope = CTSchemeColor.class)\r
++ public JAXBElement<CTPercentage> createCTSchemeColorGreenMod(CTPercentage value) {\r
++ return new JAXBElement<CTPercentage>(_CTSRgbColorGreenMod_QNAME, CTPercentage.class, CTSchemeColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "sat", scope = CTSchemeColor.class)\r
++ public JAXBElement<CTPercentage> createCTSchemeColorSat(CTPercentage value) {\r
++ return new JAXBElement<CTPercentage>(_CTSRgbColorSat_QNAME, CTPercentage.class, CTSchemeColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "blue", scope = CTSchemeColor.class)\r
++ public JAXBElement<CTPercentage> createCTSchemeColorBlue(CTPercentage value) {\r
++ return new JAXBElement<CTPercentage>(_CTSRgbColorBlue_QNAME, CTPercentage.class, CTSchemeColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "red", scope = CTSchemeColor.class)\r
++ public JAXBElement<CTPercentage> createCTSchemeColorRed(CTPercentage value) {\r
++ return new JAXBElement<CTPercentage>(_CTSRgbColorRed_QNAME, CTPercentage.class, CTSchemeColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "satMod", scope = CTSchemeColor.class)\r
++ public JAXBElement<CTPercentage> createCTSchemeColorSatMod(CTPercentage value) {\r
++ return new JAXBElement<CTPercentage>(_CTSRgbColorSatMod_QNAME, CTPercentage.class, CTSchemeColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "blueMod", scope = CTSchemeColor.class)\r
++ public JAXBElement<CTPercentage> createCTSchemeColorBlueMod(CTPercentage value) {\r
++ return new JAXBElement<CTPercentage>(_CTSRgbColorBlueMod_QNAME, CTPercentage.class, CTSchemeColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTAngle }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "hueOff", scope = CTSchemeColor.class)\r
++ public JAXBElement<CTAngle> createCTSchemeColorHueOff(CTAngle value) {\r
++ return new JAXBElement<CTAngle>(_CTSRgbColorHueOff_QNAME, CTAngle.class, CTSchemeColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPositiveFixedPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "shade", scope = CTSchemeColor.class)\r
++ public JAXBElement<CTPositiveFixedPercentage> createCTSchemeColorShade(CTPositiveFixedPercentage value) {\r
++ return new JAXBElement<CTPositiveFixedPercentage>(_CTSRgbColorShade_QNAME, CTPositiveFixedPercentage.class, CTSchemeColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "lumMod", scope = CTSchemeColor.class)\r
++ public JAXBElement<CTPercentage> createCTSchemeColorLumMod(CTPercentage value) {\r
++ return new JAXBElement<CTPercentage>(_CTSRgbColorLumMod_QNAME, CTPercentage.class, CTSchemeColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTInverseTransform }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "inv", scope = CTSchemeColor.class)\r
++ public JAXBElement<CTInverseTransform> createCTSchemeColorInv(CTInverseTransform value) {\r
++ return new JAXBElement<CTInverseTransform>(_CTSRgbColorInv_QNAME, CTInverseTransform.class, CTSchemeColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "lumOff", scope = CTSchemeColor.class)\r
++ public JAXBElement<CTPercentage> createCTSchemeColorLumOff(CTPercentage value) {\r
++ return new JAXBElement<CTPercentage>(_CTSRgbColorLumOff_QNAME, CTPercentage.class, CTSchemeColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPositiveFixedPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "tint", scope = CTSchemeColor.class)\r
++ public JAXBElement<CTPositiveFixedPercentage> createCTSchemeColorTint(CTPositiveFixedPercentage value) {\r
++ return new JAXBElement<CTPositiveFixedPercentage>(_CTSRgbColorTint_QNAME, CTPositiveFixedPercentage.class, CTSchemeColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "green", scope = CTSchemeColor.class)\r
++ public JAXBElement<CTPercentage> createCTSchemeColorGreen(CTPercentage value) {\r
++ return new JAXBElement<CTPercentage>(_CTSRgbColorGreen_QNAME, CTPercentage.class, CTSchemeColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTComplementTransform }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "comp", scope = CTSchemeColor.class)\r
++ public JAXBElement<CTComplementTransform> createCTSchemeColorComp(CTComplementTransform value) {\r
++ return new JAXBElement<CTComplementTransform>(_CTSRgbColorComp_QNAME, CTComplementTransform.class, CTSchemeColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "blueOff", scope = CTSchemeColor.class)\r
++ public JAXBElement<CTPercentage> createCTSchemeColorBlueOff(CTPercentage value) {\r
++ return new JAXBElement<CTPercentage>(_CTSRgbColorBlueOff_QNAME, CTPercentage.class, CTSchemeColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPositivePercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "hueMod", scope = CTSchemeColor.class)\r
++ public JAXBElement<CTPositivePercentage> createCTSchemeColorHueMod(CTPositivePercentage value) {\r
++ return new JAXBElement<CTPositivePercentage>(_CTSRgbColorHueMod_QNAME, CTPositivePercentage.class, CTSchemeColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTGrayscaleTransform }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "gray", scope = CTSchemeColor.class)\r
++ public JAXBElement<CTGrayscaleTransform> createCTSchemeColorGray(CTGrayscaleTransform value) {\r
++ return new JAXBElement<CTGrayscaleTransform>(_CTSRgbColorGray_QNAME, CTGrayscaleTransform.class, CTSchemeColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPositiveFixedPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "alpha", scope = CTScRgbColor.class)\r
++ public JAXBElement<CTPositiveFixedPercentage> createCTScRgbColorAlpha(CTPositiveFixedPercentage value) {\r
++ return new JAXBElement<CTPositiveFixedPercentage>(_CTSRgbColorAlpha_QNAME, CTPositiveFixedPercentage.class, CTScRgbColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "lum", scope = CTScRgbColor.class)\r
++ public JAXBElement<CTPercentage> createCTScRgbColorLum(CTPercentage value) {\r
++ return new JAXBElement<CTPercentage>(_CTSRgbColorLum_QNAME, CTPercentage.class, CTScRgbColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTGammaTransform }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "gamma", scope = CTScRgbColor.class)\r
++ public JAXBElement<CTGammaTransform> createCTScRgbColorGamma(CTGammaTransform value) {\r
++ return new JAXBElement<CTGammaTransform>(_CTSRgbColorGamma_QNAME, CTGammaTransform.class, CTScRgbColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTInverseGammaTransform }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "invGamma", scope = CTScRgbColor.class)\r
++ public JAXBElement<CTInverseGammaTransform> createCTScRgbColorInvGamma(CTInverseGammaTransform value) {\r
++ return new JAXBElement<CTInverseGammaTransform>(_CTSRgbColorInvGamma_QNAME, CTInverseGammaTransform.class, CTScRgbColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPositivePercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "alphaMod", scope = CTScRgbColor.class)\r
++ public JAXBElement<CTPositivePercentage> createCTScRgbColorAlphaMod(CTPositivePercentage value) {\r
++ return new JAXBElement<CTPositivePercentage>(_CTSRgbColorAlphaMod_QNAME, CTPositivePercentage.class, CTScRgbColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "redOff", scope = CTScRgbColor.class)\r
++ public JAXBElement<CTPercentage> createCTScRgbColorRedOff(CTPercentage value) {\r
++ return new JAXBElement<CTPercentage>(_CTSRgbColorRedOff_QNAME, CTPercentage.class, CTScRgbColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTFixedPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "alphaOff", scope = CTScRgbColor.class)\r
++ public JAXBElement<CTFixedPercentage> createCTScRgbColorAlphaOff(CTFixedPercentage value) {\r
++ return new JAXBElement<CTFixedPercentage>(_CTSRgbColorAlphaOff_QNAME, CTFixedPercentage.class, CTScRgbColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "greenOff", scope = CTScRgbColor.class)\r
++ public JAXBElement<CTPercentage> createCTScRgbColorGreenOff(CTPercentage value) {\r
++ return new JAXBElement<CTPercentage>(_CTSRgbColorGreenOff_QNAME, CTPercentage.class, CTScRgbColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPositiveFixedAngle }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "hue", scope = CTScRgbColor.class)\r
++ public JAXBElement<CTPositiveFixedAngle> createCTScRgbColorHue(CTPositiveFixedAngle value) {\r
++ return new JAXBElement<CTPositiveFixedAngle>(_CTSRgbColorHue_QNAME, CTPositiveFixedAngle.class, CTScRgbColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "redMod", scope = CTScRgbColor.class)\r
++ public JAXBElement<CTPercentage> createCTScRgbColorRedMod(CTPercentage value) {\r
++ return new JAXBElement<CTPercentage>(_CTSRgbColorRedMod_QNAME, CTPercentage.class, CTScRgbColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "satOff", scope = CTScRgbColor.class)\r
++ public JAXBElement<CTPercentage> createCTScRgbColorSatOff(CTPercentage value) {\r
++ return new JAXBElement<CTPercentage>(_CTSRgbColorSatOff_QNAME, CTPercentage.class, CTScRgbColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "greenMod", scope = CTScRgbColor.class)\r
++ public JAXBElement<CTPercentage> createCTScRgbColorGreenMod(CTPercentage value) {\r
++ return new JAXBElement<CTPercentage>(_CTSRgbColorGreenMod_QNAME, CTPercentage.class, CTScRgbColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "sat", scope = CTScRgbColor.class)\r
++ public JAXBElement<CTPercentage> createCTScRgbColorSat(CTPercentage value) {\r
++ return new JAXBElement<CTPercentage>(_CTSRgbColorSat_QNAME, CTPercentage.class, CTScRgbColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "blue", scope = CTScRgbColor.class)\r
++ public JAXBElement<CTPercentage> createCTScRgbColorBlue(CTPercentage value) {\r
++ return new JAXBElement<CTPercentage>(_CTSRgbColorBlue_QNAME, CTPercentage.class, CTScRgbColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "red", scope = CTScRgbColor.class)\r
++ public JAXBElement<CTPercentage> createCTScRgbColorRed(CTPercentage value) {\r
++ return new JAXBElement<CTPercentage>(_CTSRgbColorRed_QNAME, CTPercentage.class, CTScRgbColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "satMod", scope = CTScRgbColor.class)\r
++ public JAXBElement<CTPercentage> createCTScRgbColorSatMod(CTPercentage value) {\r
++ return new JAXBElement<CTPercentage>(_CTSRgbColorSatMod_QNAME, CTPercentage.class, CTScRgbColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "blueMod", scope = CTScRgbColor.class)\r
++ public JAXBElement<CTPercentage> createCTScRgbColorBlueMod(CTPercentage value) {\r
++ return new JAXBElement<CTPercentage>(_CTSRgbColorBlueMod_QNAME, CTPercentage.class, CTScRgbColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTAngle }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "hueOff", scope = CTScRgbColor.class)\r
++ public JAXBElement<CTAngle> createCTScRgbColorHueOff(CTAngle value) {\r
++ return new JAXBElement<CTAngle>(_CTSRgbColorHueOff_QNAME, CTAngle.class, CTScRgbColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPositiveFixedPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "shade", scope = CTScRgbColor.class)\r
++ public JAXBElement<CTPositiveFixedPercentage> createCTScRgbColorShade(CTPositiveFixedPercentage value) {\r
++ return new JAXBElement<CTPositiveFixedPercentage>(_CTSRgbColorShade_QNAME, CTPositiveFixedPercentage.class, CTScRgbColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "lumMod", scope = CTScRgbColor.class)\r
++ public JAXBElement<CTPercentage> createCTScRgbColorLumMod(CTPercentage value) {\r
++ return new JAXBElement<CTPercentage>(_CTSRgbColorLumMod_QNAME, CTPercentage.class, CTScRgbColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTInverseTransform }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "inv", scope = CTScRgbColor.class)\r
++ public JAXBElement<CTInverseTransform> createCTScRgbColorInv(CTInverseTransform value) {\r
++ return new JAXBElement<CTInverseTransform>(_CTSRgbColorInv_QNAME, CTInverseTransform.class, CTScRgbColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "lumOff", scope = CTScRgbColor.class)\r
++ public JAXBElement<CTPercentage> createCTScRgbColorLumOff(CTPercentage value) {\r
++ return new JAXBElement<CTPercentage>(_CTSRgbColorLumOff_QNAME, CTPercentage.class, CTScRgbColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPositiveFixedPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "tint", scope = CTScRgbColor.class)\r
++ public JAXBElement<CTPositiveFixedPercentage> createCTScRgbColorTint(CTPositiveFixedPercentage value) {\r
++ return new JAXBElement<CTPositiveFixedPercentage>(_CTSRgbColorTint_QNAME, CTPositiveFixedPercentage.class, CTScRgbColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "green", scope = CTScRgbColor.class)\r
++ public JAXBElement<CTPercentage> createCTScRgbColorGreen(CTPercentage value) {\r
++ return new JAXBElement<CTPercentage>(_CTSRgbColorGreen_QNAME, CTPercentage.class, CTScRgbColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTComplementTransform }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "comp", scope = CTScRgbColor.class)\r
++ public JAXBElement<CTComplementTransform> createCTScRgbColorComp(CTComplementTransform value) {\r
++ return new JAXBElement<CTComplementTransform>(_CTSRgbColorComp_QNAME, CTComplementTransform.class, CTScRgbColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "blueOff", scope = CTScRgbColor.class)\r
++ public JAXBElement<CTPercentage> createCTScRgbColorBlueOff(CTPercentage value) {\r
++ return new JAXBElement<CTPercentage>(_CTSRgbColorBlueOff_QNAME, CTPercentage.class, CTScRgbColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPositivePercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "hueMod", scope = CTScRgbColor.class)\r
++ public JAXBElement<CTPositivePercentage> createCTScRgbColorHueMod(CTPositivePercentage value) {\r
++ return new JAXBElement<CTPositivePercentage>(_CTSRgbColorHueMod_QNAME, CTPositivePercentage.class, CTScRgbColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTGrayscaleTransform }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "gray", scope = CTScRgbColor.class)\r
++ public JAXBElement<CTGrayscaleTransform> createCTScRgbColorGray(CTGrayscaleTransform value) {\r
++ return new JAXBElement<CTGrayscaleTransform>(_CTSRgbColorGray_QNAME, CTGrayscaleTransform.class, CTScRgbColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPositiveFixedPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "alpha", scope = CTSystemColor.class)\r
++ public JAXBElement<CTPositiveFixedPercentage> createCTSystemColorAlpha(CTPositiveFixedPercentage value) {\r
++ return new JAXBElement<CTPositiveFixedPercentage>(_CTSRgbColorAlpha_QNAME, CTPositiveFixedPercentage.class, CTSystemColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "lum", scope = CTSystemColor.class)\r
++ public JAXBElement<CTPercentage> createCTSystemColorLum(CTPercentage value) {\r
++ return new JAXBElement<CTPercentage>(_CTSRgbColorLum_QNAME, CTPercentage.class, CTSystemColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTGammaTransform }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "gamma", scope = CTSystemColor.class)\r
++ public JAXBElement<CTGammaTransform> createCTSystemColorGamma(CTGammaTransform value) {\r
++ return new JAXBElement<CTGammaTransform>(_CTSRgbColorGamma_QNAME, CTGammaTransform.class, CTSystemColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTInverseGammaTransform }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "invGamma", scope = CTSystemColor.class)\r
++ public JAXBElement<CTInverseGammaTransform> createCTSystemColorInvGamma(CTInverseGammaTransform value) {\r
++ return new JAXBElement<CTInverseGammaTransform>(_CTSRgbColorInvGamma_QNAME, CTInverseGammaTransform.class, CTSystemColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPositivePercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "alphaMod", scope = CTSystemColor.class)\r
++ public JAXBElement<CTPositivePercentage> createCTSystemColorAlphaMod(CTPositivePercentage value) {\r
++ return new JAXBElement<CTPositivePercentage>(_CTSRgbColorAlphaMod_QNAME, CTPositivePercentage.class, CTSystemColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "redOff", scope = CTSystemColor.class)\r
++ public JAXBElement<CTPercentage> createCTSystemColorRedOff(CTPercentage value) {\r
++ return new JAXBElement<CTPercentage>(_CTSRgbColorRedOff_QNAME, CTPercentage.class, CTSystemColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTFixedPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "alphaOff", scope = CTSystemColor.class)\r
++ public JAXBElement<CTFixedPercentage> createCTSystemColorAlphaOff(CTFixedPercentage value) {\r
++ return new JAXBElement<CTFixedPercentage>(_CTSRgbColorAlphaOff_QNAME, CTFixedPercentage.class, CTSystemColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "greenOff", scope = CTSystemColor.class)\r
++ public JAXBElement<CTPercentage> createCTSystemColorGreenOff(CTPercentage value) {\r
++ return new JAXBElement<CTPercentage>(_CTSRgbColorGreenOff_QNAME, CTPercentage.class, CTSystemColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPositiveFixedAngle }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "hue", scope = CTSystemColor.class)\r
++ public JAXBElement<CTPositiveFixedAngle> createCTSystemColorHue(CTPositiveFixedAngle value) {\r
++ return new JAXBElement<CTPositiveFixedAngle>(_CTSRgbColorHue_QNAME, CTPositiveFixedAngle.class, CTSystemColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "redMod", scope = CTSystemColor.class)\r
++ public JAXBElement<CTPercentage> createCTSystemColorRedMod(CTPercentage value) {\r
++ return new JAXBElement<CTPercentage>(_CTSRgbColorRedMod_QNAME, CTPercentage.class, CTSystemColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "satOff", scope = CTSystemColor.class)\r
++ public JAXBElement<CTPercentage> createCTSystemColorSatOff(CTPercentage value) {\r
++ return new JAXBElement<CTPercentage>(_CTSRgbColorSatOff_QNAME, CTPercentage.class, CTSystemColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "greenMod", scope = CTSystemColor.class)\r
++ public JAXBElement<CTPercentage> createCTSystemColorGreenMod(CTPercentage value) {\r
++ return new JAXBElement<CTPercentage>(_CTSRgbColorGreenMod_QNAME, CTPercentage.class, CTSystemColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "sat", scope = CTSystemColor.class)\r
++ public JAXBElement<CTPercentage> createCTSystemColorSat(CTPercentage value) {\r
++ return new JAXBElement<CTPercentage>(_CTSRgbColorSat_QNAME, CTPercentage.class, CTSystemColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "blue", scope = CTSystemColor.class)\r
++ public JAXBElement<CTPercentage> createCTSystemColorBlue(CTPercentage value) {\r
++ return new JAXBElement<CTPercentage>(_CTSRgbColorBlue_QNAME, CTPercentage.class, CTSystemColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "red", scope = CTSystemColor.class)\r
++ public JAXBElement<CTPercentage> createCTSystemColorRed(CTPercentage value) {\r
++ return new JAXBElement<CTPercentage>(_CTSRgbColorRed_QNAME, CTPercentage.class, CTSystemColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "satMod", scope = CTSystemColor.class)\r
++ public JAXBElement<CTPercentage> createCTSystemColorSatMod(CTPercentage value) {\r
++ return new JAXBElement<CTPercentage>(_CTSRgbColorSatMod_QNAME, CTPercentage.class, CTSystemColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "blueMod", scope = CTSystemColor.class)\r
++ public JAXBElement<CTPercentage> createCTSystemColorBlueMod(CTPercentage value) {\r
++ return new JAXBElement<CTPercentage>(_CTSRgbColorBlueMod_QNAME, CTPercentage.class, CTSystemColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTAngle }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "hueOff", scope = CTSystemColor.class)\r
++ public JAXBElement<CTAngle> createCTSystemColorHueOff(CTAngle value) {\r
++ return new JAXBElement<CTAngle>(_CTSRgbColorHueOff_QNAME, CTAngle.class, CTSystemColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPositiveFixedPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "shade", scope = CTSystemColor.class)\r
++ public JAXBElement<CTPositiveFixedPercentage> createCTSystemColorShade(CTPositiveFixedPercentage value) {\r
++ return new JAXBElement<CTPositiveFixedPercentage>(_CTSRgbColorShade_QNAME, CTPositiveFixedPercentage.class, CTSystemColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "lumMod", scope = CTSystemColor.class)\r
++ public JAXBElement<CTPercentage> createCTSystemColorLumMod(CTPercentage value) {\r
++ return new JAXBElement<CTPercentage>(_CTSRgbColorLumMod_QNAME, CTPercentage.class, CTSystemColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTInverseTransform }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "inv", scope = CTSystemColor.class)\r
++ public JAXBElement<CTInverseTransform> createCTSystemColorInv(CTInverseTransform value) {\r
++ return new JAXBElement<CTInverseTransform>(_CTSRgbColorInv_QNAME, CTInverseTransform.class, CTSystemColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "lumOff", scope = CTSystemColor.class)\r
++ public JAXBElement<CTPercentage> createCTSystemColorLumOff(CTPercentage value) {\r
++ return new JAXBElement<CTPercentage>(_CTSRgbColorLumOff_QNAME, CTPercentage.class, CTSystemColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPositiveFixedPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "tint", scope = CTSystemColor.class)\r
++ public JAXBElement<CTPositiveFixedPercentage> createCTSystemColorTint(CTPositiveFixedPercentage value) {\r
++ return new JAXBElement<CTPositiveFixedPercentage>(_CTSRgbColorTint_QNAME, CTPositiveFixedPercentage.class, CTSystemColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "green", scope = CTSystemColor.class)\r
++ public JAXBElement<CTPercentage> createCTSystemColorGreen(CTPercentage value) {\r
++ return new JAXBElement<CTPercentage>(_CTSRgbColorGreen_QNAME, CTPercentage.class, CTSystemColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTComplementTransform }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "comp", scope = CTSystemColor.class)\r
++ public JAXBElement<CTComplementTransform> createCTSystemColorComp(CTComplementTransform value) {\r
++ return new JAXBElement<CTComplementTransform>(_CTSRgbColorComp_QNAME, CTComplementTransform.class, CTSystemColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "blueOff", scope = CTSystemColor.class)\r
++ public JAXBElement<CTPercentage> createCTSystemColorBlueOff(CTPercentage value) {\r
++ return new JAXBElement<CTPercentage>(_CTSRgbColorBlueOff_QNAME, CTPercentage.class, CTSystemColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPositivePercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "hueMod", scope = CTSystemColor.class)\r
++ public JAXBElement<CTPositivePercentage> createCTSystemColorHueMod(CTPositivePercentage value) {\r
++ return new JAXBElement<CTPositivePercentage>(_CTSRgbColorHueMod_QNAME, CTPositivePercentage.class, CTSystemColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTGrayscaleTransform }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "gray", scope = CTSystemColor.class)\r
++ public JAXBElement<CTGrayscaleTransform> createCTSystemColorGray(CTGrayscaleTransform value) {\r
++ return new JAXBElement<CTGrayscaleTransform>(_CTSRgbColorGray_QNAME, CTGrayscaleTransform.class, CTSystemColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPositiveFixedPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "alpha", scope = CTHslColor.class)\r
++ public JAXBElement<CTPositiveFixedPercentage> createCTHslColorAlpha(CTPositiveFixedPercentage value) {\r
++ return new JAXBElement<CTPositiveFixedPercentage>(_CTSRgbColorAlpha_QNAME, CTPositiveFixedPercentage.class, CTHslColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "lum", scope = CTHslColor.class)\r
++ public JAXBElement<CTPercentage> createCTHslColorLum(CTPercentage value) {\r
++ return new JAXBElement<CTPercentage>(_CTSRgbColorLum_QNAME, CTPercentage.class, CTHslColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTGammaTransform }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "gamma", scope = CTHslColor.class)\r
++ public JAXBElement<CTGammaTransform> createCTHslColorGamma(CTGammaTransform value) {\r
++ return new JAXBElement<CTGammaTransform>(_CTSRgbColorGamma_QNAME, CTGammaTransform.class, CTHslColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTInverseGammaTransform }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "invGamma", scope = CTHslColor.class)\r
++ public JAXBElement<CTInverseGammaTransform> createCTHslColorInvGamma(CTInverseGammaTransform value) {\r
++ return new JAXBElement<CTInverseGammaTransform>(_CTSRgbColorInvGamma_QNAME, CTInverseGammaTransform.class, CTHslColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPositivePercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "alphaMod", scope = CTHslColor.class)\r
++ public JAXBElement<CTPositivePercentage> createCTHslColorAlphaMod(CTPositivePercentage value) {\r
++ return new JAXBElement<CTPositivePercentage>(_CTSRgbColorAlphaMod_QNAME, CTPositivePercentage.class, CTHslColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "redOff", scope = CTHslColor.class)\r
++ public JAXBElement<CTPercentage> createCTHslColorRedOff(CTPercentage value) {\r
++ return new JAXBElement<CTPercentage>(_CTSRgbColorRedOff_QNAME, CTPercentage.class, CTHslColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTFixedPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "alphaOff", scope = CTHslColor.class)\r
++ public JAXBElement<CTFixedPercentage> createCTHslColorAlphaOff(CTFixedPercentage value) {\r
++ return new JAXBElement<CTFixedPercentage>(_CTSRgbColorAlphaOff_QNAME, CTFixedPercentage.class, CTHslColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "greenOff", scope = CTHslColor.class)\r
++ public JAXBElement<CTPercentage> createCTHslColorGreenOff(CTPercentage value) {\r
++ return new JAXBElement<CTPercentage>(_CTSRgbColorGreenOff_QNAME, CTPercentage.class, CTHslColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPositiveFixedAngle }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "hue", scope = CTHslColor.class)\r
++ public JAXBElement<CTPositiveFixedAngle> createCTHslColorHue(CTPositiveFixedAngle value) {\r
++ return new JAXBElement<CTPositiveFixedAngle>(_CTSRgbColorHue_QNAME, CTPositiveFixedAngle.class, CTHslColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "redMod", scope = CTHslColor.class)\r
++ public JAXBElement<CTPercentage> createCTHslColorRedMod(CTPercentage value) {\r
++ return new JAXBElement<CTPercentage>(_CTSRgbColorRedMod_QNAME, CTPercentage.class, CTHslColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "satOff", scope = CTHslColor.class)\r
++ public JAXBElement<CTPercentage> createCTHslColorSatOff(CTPercentage value) {\r
++ return new JAXBElement<CTPercentage>(_CTSRgbColorSatOff_QNAME, CTPercentage.class, CTHslColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "greenMod", scope = CTHslColor.class)\r
++ public JAXBElement<CTPercentage> createCTHslColorGreenMod(CTPercentage value) {\r
++ return new JAXBElement<CTPercentage>(_CTSRgbColorGreenMod_QNAME, CTPercentage.class, CTHslColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "sat", scope = CTHslColor.class)\r
++ public JAXBElement<CTPercentage> createCTHslColorSat(CTPercentage value) {\r
++ return new JAXBElement<CTPercentage>(_CTSRgbColorSat_QNAME, CTPercentage.class, CTHslColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "blue", scope = CTHslColor.class)\r
++ public JAXBElement<CTPercentage> createCTHslColorBlue(CTPercentage value) {\r
++ return new JAXBElement<CTPercentage>(_CTSRgbColorBlue_QNAME, CTPercentage.class, CTHslColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "red", scope = CTHslColor.class)\r
++ public JAXBElement<CTPercentage> createCTHslColorRed(CTPercentage value) {\r
++ return new JAXBElement<CTPercentage>(_CTSRgbColorRed_QNAME, CTPercentage.class, CTHslColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "satMod", scope = CTHslColor.class)\r
++ public JAXBElement<CTPercentage> createCTHslColorSatMod(CTPercentage value) {\r
++ return new JAXBElement<CTPercentage>(_CTSRgbColorSatMod_QNAME, CTPercentage.class, CTHslColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "blueMod", scope = CTHslColor.class)\r
++ public JAXBElement<CTPercentage> createCTHslColorBlueMod(CTPercentage value) {\r
++ return new JAXBElement<CTPercentage>(_CTSRgbColorBlueMod_QNAME, CTPercentage.class, CTHslColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTAngle }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "hueOff", scope = CTHslColor.class)\r
++ public JAXBElement<CTAngle> createCTHslColorHueOff(CTAngle value) {\r
++ return new JAXBElement<CTAngle>(_CTSRgbColorHueOff_QNAME, CTAngle.class, CTHslColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPositiveFixedPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "shade", scope = CTHslColor.class)\r
++ public JAXBElement<CTPositiveFixedPercentage> createCTHslColorShade(CTPositiveFixedPercentage value) {\r
++ return new JAXBElement<CTPositiveFixedPercentage>(_CTSRgbColorShade_QNAME, CTPositiveFixedPercentage.class, CTHslColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "lumMod", scope = CTHslColor.class)\r
++ public JAXBElement<CTPercentage> createCTHslColorLumMod(CTPercentage value) {\r
++ return new JAXBElement<CTPercentage>(_CTSRgbColorLumMod_QNAME, CTPercentage.class, CTHslColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTInverseTransform }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "inv", scope = CTHslColor.class)\r
++ public JAXBElement<CTInverseTransform> createCTHslColorInv(CTInverseTransform value) {\r
++ return new JAXBElement<CTInverseTransform>(_CTSRgbColorInv_QNAME, CTInverseTransform.class, CTHslColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "lumOff", scope = CTHslColor.class)\r
++ public JAXBElement<CTPercentage> createCTHslColorLumOff(CTPercentage value) {\r
++ return new JAXBElement<CTPercentage>(_CTSRgbColorLumOff_QNAME, CTPercentage.class, CTHslColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPositiveFixedPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "tint", scope = CTHslColor.class)\r
++ public JAXBElement<CTPositiveFixedPercentage> createCTHslColorTint(CTPositiveFixedPercentage value) {\r
++ return new JAXBElement<CTPositiveFixedPercentage>(_CTSRgbColorTint_QNAME, CTPositiveFixedPercentage.class, CTHslColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "green", scope = CTHslColor.class)\r
++ public JAXBElement<CTPercentage> createCTHslColorGreen(CTPercentage value) {\r
++ return new JAXBElement<CTPercentage>(_CTSRgbColorGreen_QNAME, CTPercentage.class, CTHslColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTComplementTransform }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "comp", scope = CTHslColor.class)\r
++ public JAXBElement<CTComplementTransform> createCTHslColorComp(CTComplementTransform value) {\r
++ return new JAXBElement<CTComplementTransform>(_CTSRgbColorComp_QNAME, CTComplementTransform.class, CTHslColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "blueOff", scope = CTHslColor.class)\r
++ public JAXBElement<CTPercentage> createCTHslColorBlueOff(CTPercentage value) {\r
++ return new JAXBElement<CTPercentage>(_CTSRgbColorBlueOff_QNAME, CTPercentage.class, CTHslColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPositivePercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "hueMod", scope = CTHslColor.class)\r
++ public JAXBElement<CTPositivePercentage> createCTHslColorHueMod(CTPositivePercentage value) {\r
++ return new JAXBElement<CTPositivePercentage>(_CTSRgbColorHueMod_QNAME, CTPositivePercentage.class, CTHslColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTGrayscaleTransform }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "gray", scope = CTHslColor.class)\r
++ public JAXBElement<CTGrayscaleTransform> createCTHslColorGray(CTGrayscaleTransform value) {\r
++ return new JAXBElement<CTGrayscaleTransform>(_CTSRgbColorGray_QNAME, CTGrayscaleTransform.class, CTHslColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPositiveFixedPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "alpha", scope = CTPresetColor.class)\r
++ public JAXBElement<CTPositiveFixedPercentage> createCTPresetColorAlpha(CTPositiveFixedPercentage value) {\r
++ return new JAXBElement<CTPositiveFixedPercentage>(_CTSRgbColorAlpha_QNAME, CTPositiveFixedPercentage.class, CTPresetColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "lum", scope = CTPresetColor.class)\r
++ public JAXBElement<CTPercentage> createCTPresetColorLum(CTPercentage value) {\r
++ return new JAXBElement<CTPercentage>(_CTSRgbColorLum_QNAME, CTPercentage.class, CTPresetColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTGammaTransform }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "gamma", scope = CTPresetColor.class)\r
++ public JAXBElement<CTGammaTransform> createCTPresetColorGamma(CTGammaTransform value) {\r
++ return new JAXBElement<CTGammaTransform>(_CTSRgbColorGamma_QNAME, CTGammaTransform.class, CTPresetColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTInverseGammaTransform }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "invGamma", scope = CTPresetColor.class)\r
++ public JAXBElement<CTInverseGammaTransform> createCTPresetColorInvGamma(CTInverseGammaTransform value) {\r
++ return new JAXBElement<CTInverseGammaTransform>(_CTSRgbColorInvGamma_QNAME, CTInverseGammaTransform.class, CTPresetColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPositivePercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "alphaMod", scope = CTPresetColor.class)\r
++ public JAXBElement<CTPositivePercentage> createCTPresetColorAlphaMod(CTPositivePercentage value) {\r
++ return new JAXBElement<CTPositivePercentage>(_CTSRgbColorAlphaMod_QNAME, CTPositivePercentage.class, CTPresetColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "redOff", scope = CTPresetColor.class)\r
++ public JAXBElement<CTPercentage> createCTPresetColorRedOff(CTPercentage value) {\r
++ return new JAXBElement<CTPercentage>(_CTSRgbColorRedOff_QNAME, CTPercentage.class, CTPresetColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTFixedPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "alphaOff", scope = CTPresetColor.class)\r
++ public JAXBElement<CTFixedPercentage> createCTPresetColorAlphaOff(CTFixedPercentage value) {\r
++ return new JAXBElement<CTFixedPercentage>(_CTSRgbColorAlphaOff_QNAME, CTFixedPercentage.class, CTPresetColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "greenOff", scope = CTPresetColor.class)\r
++ public JAXBElement<CTPercentage> createCTPresetColorGreenOff(CTPercentage value) {\r
++ return new JAXBElement<CTPercentage>(_CTSRgbColorGreenOff_QNAME, CTPercentage.class, CTPresetColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPositiveFixedAngle }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "hue", scope = CTPresetColor.class)\r
++ public JAXBElement<CTPositiveFixedAngle> createCTPresetColorHue(CTPositiveFixedAngle value) {\r
++ return new JAXBElement<CTPositiveFixedAngle>(_CTSRgbColorHue_QNAME, CTPositiveFixedAngle.class, CTPresetColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "redMod", scope = CTPresetColor.class)\r
++ public JAXBElement<CTPercentage> createCTPresetColorRedMod(CTPercentage value) {\r
++ return new JAXBElement<CTPercentage>(_CTSRgbColorRedMod_QNAME, CTPercentage.class, CTPresetColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "satOff", scope = CTPresetColor.class)\r
++ public JAXBElement<CTPercentage> createCTPresetColorSatOff(CTPercentage value) {\r
++ return new JAXBElement<CTPercentage>(_CTSRgbColorSatOff_QNAME, CTPercentage.class, CTPresetColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "greenMod", scope = CTPresetColor.class)\r
++ public JAXBElement<CTPercentage> createCTPresetColorGreenMod(CTPercentage value) {\r
++ return new JAXBElement<CTPercentage>(_CTSRgbColorGreenMod_QNAME, CTPercentage.class, CTPresetColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "sat", scope = CTPresetColor.class)\r
++ public JAXBElement<CTPercentage> createCTPresetColorSat(CTPercentage value) {\r
++ return new JAXBElement<CTPercentage>(_CTSRgbColorSat_QNAME, CTPercentage.class, CTPresetColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "blue", scope = CTPresetColor.class)\r
++ public JAXBElement<CTPercentage> createCTPresetColorBlue(CTPercentage value) {\r
++ return new JAXBElement<CTPercentage>(_CTSRgbColorBlue_QNAME, CTPercentage.class, CTPresetColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "red", scope = CTPresetColor.class)\r
++ public JAXBElement<CTPercentage> createCTPresetColorRed(CTPercentage value) {\r
++ return new JAXBElement<CTPercentage>(_CTSRgbColorRed_QNAME, CTPercentage.class, CTPresetColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "satMod", scope = CTPresetColor.class)\r
++ public JAXBElement<CTPercentage> createCTPresetColorSatMod(CTPercentage value) {\r
++ return new JAXBElement<CTPercentage>(_CTSRgbColorSatMod_QNAME, CTPercentage.class, CTPresetColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "blueMod", scope = CTPresetColor.class)\r
++ public JAXBElement<CTPercentage> createCTPresetColorBlueMod(CTPercentage value) {\r
++ return new JAXBElement<CTPercentage>(_CTSRgbColorBlueMod_QNAME, CTPercentage.class, CTPresetColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTAngle }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "hueOff", scope = CTPresetColor.class)\r
++ public JAXBElement<CTAngle> createCTPresetColorHueOff(CTAngle value) {\r
++ return new JAXBElement<CTAngle>(_CTSRgbColorHueOff_QNAME, CTAngle.class, CTPresetColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPositiveFixedPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "shade", scope = CTPresetColor.class)\r
++ public JAXBElement<CTPositiveFixedPercentage> createCTPresetColorShade(CTPositiveFixedPercentage value) {\r
++ return new JAXBElement<CTPositiveFixedPercentage>(_CTSRgbColorShade_QNAME, CTPositiveFixedPercentage.class, CTPresetColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "lumMod", scope = CTPresetColor.class)\r
++ public JAXBElement<CTPercentage> createCTPresetColorLumMod(CTPercentage value) {\r
++ return new JAXBElement<CTPercentage>(_CTSRgbColorLumMod_QNAME, CTPercentage.class, CTPresetColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTInverseTransform }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "inv", scope = CTPresetColor.class)\r
++ public JAXBElement<CTInverseTransform> createCTPresetColorInv(CTInverseTransform value) {\r
++ return new JAXBElement<CTInverseTransform>(_CTSRgbColorInv_QNAME, CTInverseTransform.class, CTPresetColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "lumOff", scope = CTPresetColor.class)\r
++ public JAXBElement<CTPercentage> createCTPresetColorLumOff(CTPercentage value) {\r
++ return new JAXBElement<CTPercentage>(_CTSRgbColorLumOff_QNAME, CTPercentage.class, CTPresetColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPositiveFixedPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "tint", scope = CTPresetColor.class)\r
++ public JAXBElement<CTPositiveFixedPercentage> createCTPresetColorTint(CTPositiveFixedPercentage value) {\r
++ return new JAXBElement<CTPositiveFixedPercentage>(_CTSRgbColorTint_QNAME, CTPositiveFixedPercentage.class, CTPresetColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "green", scope = CTPresetColor.class)\r
++ public JAXBElement<CTPercentage> createCTPresetColorGreen(CTPercentage value) {\r
++ return new JAXBElement<CTPercentage>(_CTSRgbColorGreen_QNAME, CTPercentage.class, CTPresetColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTComplementTransform }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "comp", scope = CTPresetColor.class)\r
++ public JAXBElement<CTComplementTransform> createCTPresetColorComp(CTComplementTransform value) {\r
++ return new JAXBElement<CTComplementTransform>(_CTSRgbColorComp_QNAME, CTComplementTransform.class, CTPresetColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "blueOff", scope = CTPresetColor.class)\r
++ public JAXBElement<CTPercentage> createCTPresetColorBlueOff(CTPercentage value) {\r
++ return new JAXBElement<CTPercentage>(_CTSRgbColorBlueOff_QNAME, CTPercentage.class, CTPresetColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTPositivePercentage }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "hueMod", scope = CTPresetColor.class)\r
++ public JAXBElement<CTPositivePercentage> createCTPresetColorHueMod(CTPositivePercentage value) {\r
++ return new JAXBElement<CTPositivePercentage>(_CTSRgbColorHueMod_QNAME, CTPositivePercentage.class, CTPresetColor.class, value);\r
++ }\r
++\r
++ /**\r
++ * Create an instance of {@link JAXBElement }{@code <}{@link CTGrayscaleTransform }{@code >}}\r
++ * \r
++ */\r
++ @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "gray", scope = CTPresetColor.class)\r
++ public JAXBElement<CTGrayscaleTransform> createCTPresetColorGray(CTGrayscaleTransform value) {\r
++ return new JAXBElement<CTGrayscaleTransform>(_CTSRgbColorGray_QNAME, CTGrayscaleTransform.class, CTPresetColor.class, value);\r
++ }\r
++\r
++}\r
--- /dev/null
--- /dev/null
++/* ====================================================================\r
++ Licensed to the Apache Software Foundation (ASF) under one or more\r
++ contributor license agreements. See the NOTICE file distributed with\r
++ this work for additional information regarding copyright ownership.\r
++ The ASF licenses this file to You under the Apache License, Version 2.0\r
++ (the "License"); you may not use this file except in compliance with\r
++ the License. You may obtain a copy of the License at\r
++\r
++ http://www.apache.org/licenses/LICENSE-2.0\r
++\r
++ Unless required by applicable law or agreed to in writing, software\r
++ distributed under the License is distributed on an "AS IS" BASIS,\r
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ See the License for the specific language governing permissions and\r
++ limitations under the License.\r
++==================================================================== */\r
++\r
++package org.apache.poi.sl.draw.binding;\r
++\r
++import javax.xml.bind.annotation.XmlEnum;\r
++import javax.xml.bind.annotation.XmlEnumValue;\r
++import javax.xml.bind.annotation.XmlType;\r
++\r
++\r
++/**\r
++ * <p>Java class for ST_BlackWhiteMode.\r
++ * \r
++ * <p>The following schema fragment specifies the expected content contained within this class.\r
++ * <p>\r
++ * <pre>\r
++ * <simpleType name="ST_BlackWhiteMode">\r
++ * <restriction base="{http://www.w3.org/2001/XMLSchema}token">\r
++ * <enumeration value="clr"/>\r
++ * <enumeration value="auto"/>\r
++ * <enumeration value="gray"/>\r
++ * <enumeration value="ltGray"/>\r
++ * <enumeration value="invGray"/>\r
++ * <enumeration value="grayWhite"/>\r
++ * <enumeration value="blackGray"/>\r
++ * <enumeration value="blackWhite"/>\r
++ * <enumeration value="black"/>\r
++ * <enumeration value="white"/>\r
++ * <enumeration value="hidden"/>\r
++ * </restriction>\r
++ * </simpleType>\r
++ * </pre>\r
++ * \r
++ */\r
++@XmlType(name = "ST_BlackWhiteMode", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")\r
++@XmlEnum\r
++public enum STBlackWhiteMode {\r
++\r
++\r
++ /**\r
++ * Color\r
++ * \r
++ */\r
++ @XmlEnumValue("clr")\r
++ CLR("clr"),\r
++\r
++ /**\r
++ * Automatic\r
++ * \r
++ */\r
++ @XmlEnumValue("auto")\r
++ AUTO("auto"),\r
++\r
++ /**\r
++ * Gray\r
++ * \r
++ */\r
++ @XmlEnumValue("gray")\r
++ GRAY("gray"),\r
++\r
++ /**\r
++ * Light Gray\r
++ * \r
++ */\r
++ @XmlEnumValue("ltGray")\r
++ LT_GRAY("ltGray"),\r
++\r
++ /**\r
++ * Inverse Gray\r
++ * \r
++ */\r
++ @XmlEnumValue("invGray")\r
++ INV_GRAY("invGray"),\r
++\r
++ /**\r
++ * Gray and White\r
++ * \r
++ */\r
++ @XmlEnumValue("grayWhite")\r
++ GRAY_WHITE("grayWhite"),\r
++\r
++ /**\r
++ * Black and Gray\r
++ * \r
++ */\r
++ @XmlEnumValue("blackGray")\r
++ BLACK_GRAY("blackGray"),\r
++\r
++ /**\r
++ * Black and White\r
++ * \r
++ */\r
++ @XmlEnumValue("blackWhite")\r
++ BLACK_WHITE("blackWhite"),\r
++\r
++ /**\r
++ * Black\r
++ * \r
++ */\r
++ @XmlEnumValue("black")\r
++ BLACK("black"),\r
++\r
++ /**\r
++ * White\r
++ * \r
++ */\r
++ @XmlEnumValue("white")\r
++ WHITE("white"),\r
++\r
++ /**\r
++ * Hidden\r
++ * \r
++ */\r
++ @XmlEnumValue("hidden")\r
++ HIDDEN("hidden");\r
++ private final String value;\r
++\r
++ STBlackWhiteMode(String v) {\r
++ value = v;\r
++ }\r
++\r
++ public String value() {\r
++ return value;\r
++ }\r
++\r
++ public static STBlackWhiteMode fromValue(String v) {\r
++ for (STBlackWhiteMode c: STBlackWhiteMode.values()) {\r
++ if (c.value.equals(v)) {\r
++ return c;\r
++ }\r
++ }\r
++ throw new IllegalArgumentException(v);\r
++ }\r
++\r
++}\r
--- /dev/null
--- /dev/null
++/* ====================================================================\r
++ Licensed to the Apache Software Foundation (ASF) under one or more\r
++ contributor license agreements. See the NOTICE file distributed with\r
++ this work for additional information regarding copyright ownership.\r
++ The ASF licenses this file to You under the Apache License, Version 2.0\r
++ (the "License"); you may not use this file except in compliance with\r
++ the License. You may obtain a copy of the License at\r
++\r
++ http://www.apache.org/licenses/LICENSE-2.0\r
++\r
++ Unless required by applicable law or agreed to in writing, software\r
++ distributed under the License is distributed on an "AS IS" BASIS,\r
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ See the License for the specific language governing permissions and\r
++ limitations under the License.\r
++==================================================================== */\r
++\r
++package org.apache.poi.sl.draw.binding;\r
++\r
++import javax.xml.bind.annotation.XmlEnum;\r
++import javax.xml.bind.annotation.XmlEnumValue;\r
++import javax.xml.bind.annotation.XmlType;\r
++\r
++\r
++/**\r
++ * <p>Java class for ST_PathFillMode.\r
++ * \r
++ * <p>The following schema fragment specifies the expected content contained within this class.\r
++ * <p>\r
++ * <pre>\r
++ * <simpleType name="ST_PathFillMode">\r
++ * <restriction base="{http://www.w3.org/2001/XMLSchema}token">\r
++ * <enumeration value="none"/>\r
++ * <enumeration value="norm"/>\r
++ * <enumeration value="lighten"/>\r
++ * <enumeration value="lightenLess"/>\r
++ * <enumeration value="darken"/>\r
++ * <enumeration value="darkenLess"/>\r
++ * </restriction>\r
++ * </simpleType>\r
++ * </pre>\r
++ * \r
++ */\r
++@XmlType(name = "ST_PathFillMode", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")\r
++@XmlEnum\r
++public enum STPathFillMode {\r
++\r
++\r
++ /**\r
++ * No Path Fill\r
++ * \r
++ */\r
++ @XmlEnumValue("none")\r
++ NONE("none"),\r
++\r
++ /**\r
++ * Normal Path Fill\r
++ * \r
++ */\r
++ @XmlEnumValue("norm")\r
++ NORM("norm"),\r
++\r
++ /**\r
++ * Lighten Path Fill\r
++ * \r
++ */\r
++ @XmlEnumValue("lighten")\r
++ LIGHTEN("lighten"),\r
++\r
++ /**\r
++ * Lighten Path Fill Less\r
++ * \r
++ */\r
++ @XmlEnumValue("lightenLess")\r
++ LIGHTEN_LESS("lightenLess"),\r
++\r
++ /**\r
++ * Darken Path Fill\r
++ * \r
++ */\r
++ @XmlEnumValue("darken")\r
++ DARKEN("darken"),\r
++\r
++ /**\r
++ * Darken Path Fill Less\r
++ * \r
++ */\r
++ @XmlEnumValue("darkenLess")\r
++ DARKEN_LESS("darkenLess");\r
++ private final String value;\r
++\r
++ STPathFillMode(String v) {\r
++ value = v;\r
++ }\r
++\r
++ public String value() {\r
++ return value;\r
++ }\r
++\r
++ public static STPathFillMode fromValue(String v) {\r
++ for (STPathFillMode c: STPathFillMode.values()) {\r
++ if (c.value.equals(v)) {\r
++ return c;\r
++ }\r
++ }\r
++ throw new IllegalArgumentException(v);\r
++ }\r
++\r
++}\r
--- /dev/null
--- /dev/null
++/* ====================================================================\r
++ Licensed to the Apache Software Foundation (ASF) under one or more\r
++ contributor license agreements. See the NOTICE file distributed with\r
++ this work for additional information regarding copyright ownership.\r
++ The ASF licenses this file to You under the Apache License, Version 2.0\r
++ (the "License"); you may not use this file except in compliance with\r
++ the License. You may obtain a copy of the License at\r
++\r
++ http://www.apache.org/licenses/LICENSE-2.0\r
++\r
++ Unless required by applicable law or agreed to in writing, software\r
++ distributed under the License is distributed on an "AS IS" BASIS,\r
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ See the License for the specific language governing permissions and\r
++ limitations under the License.\r
++==================================================================== */\r
++\r
++package org.apache.poi.sl.draw.binding;\r
++\r
++import javax.xml.bind.annotation.XmlEnum;\r
++import javax.xml.bind.annotation.XmlEnumValue;\r
++import javax.xml.bind.annotation.XmlType;\r
++\r
++\r
++/**\r
++ * <p>Java class for ST_PresetColorVal.\r
++ * \r
++ * <p>The following schema fragment specifies the expected content contained within this class.\r
++ * <p>\r
++ * <pre>\r
++ * <simpleType name="ST_PresetColorVal">\r
++ * <restriction base="{http://www.w3.org/2001/XMLSchema}token">\r
++ * <enumeration value="aliceBlue"/>\r
++ * <enumeration value="antiqueWhite"/>\r
++ * <enumeration value="aqua"/>\r
++ * <enumeration value="aquamarine"/>\r
++ * <enumeration value="azure"/>\r
++ * <enumeration value="beige"/>\r
++ * <enumeration value="bisque"/>\r
++ * <enumeration value="black"/>\r
++ * <enumeration value="blanchedAlmond"/>\r
++ * <enumeration value="blue"/>\r
++ * <enumeration value="blueViolet"/>\r
++ * <enumeration value="brown"/>\r
++ * <enumeration value="burlyWood"/>\r
++ * <enumeration value="cadetBlue"/>\r
++ * <enumeration value="chartreuse"/>\r
++ * <enumeration value="chocolate"/>\r
++ * <enumeration value="coral"/>\r
++ * <enumeration value="cornflowerBlue"/>\r
++ * <enumeration value="cornsilk"/>\r
++ * <enumeration value="crimson"/>\r
++ * <enumeration value="cyan"/>\r
++ * <enumeration value="dkBlue"/>\r
++ * <enumeration value="dkCyan"/>\r
++ * <enumeration value="dkGoldenrod"/>\r
++ * <enumeration value="dkGray"/>\r
++ * <enumeration value="dkGreen"/>\r
++ * <enumeration value="dkKhaki"/>\r
++ * <enumeration value="dkMagenta"/>\r
++ * <enumeration value="dkOliveGreen"/>\r
++ * <enumeration value="dkOrange"/>\r
++ * <enumeration value="dkOrchid"/>\r
++ * <enumeration value="dkRed"/>\r
++ * <enumeration value="dkSalmon"/>\r
++ * <enumeration value="dkSeaGreen"/>\r
++ * <enumeration value="dkSlateBlue"/>\r
++ * <enumeration value="dkSlateGray"/>\r
++ * <enumeration value="dkTurquoise"/>\r
++ * <enumeration value="dkViolet"/>\r
++ * <enumeration value="deepPink"/>\r
++ * <enumeration value="deepSkyBlue"/>\r
++ * <enumeration value="dimGray"/>\r
++ * <enumeration value="dodgerBlue"/>\r
++ * <enumeration value="firebrick"/>\r
++ * <enumeration value="floralWhite"/>\r
++ * <enumeration value="forestGreen"/>\r
++ * <enumeration value="fuchsia"/>\r
++ * <enumeration value="gainsboro"/>\r
++ * <enumeration value="ghostWhite"/>\r
++ * <enumeration value="gold"/>\r
++ * <enumeration value="goldenrod"/>\r
++ * <enumeration value="gray"/>\r
++ * <enumeration value="green"/>\r
++ * <enumeration value="greenYellow"/>\r
++ * <enumeration value="honeydew"/>\r
++ * <enumeration value="hotPink"/>\r
++ * <enumeration value="indianRed"/>\r
++ * <enumeration value="indigo"/>\r
++ * <enumeration value="ivory"/>\r
++ * <enumeration value="khaki"/>\r
++ * <enumeration value="lavender"/>\r
++ * <enumeration value="lavenderBlush"/>\r
++ * <enumeration value="lawnGreen"/>\r
++ * <enumeration value="lemonChiffon"/>\r
++ * <enumeration value="ltBlue"/>\r
++ * <enumeration value="ltCoral"/>\r
++ * <enumeration value="ltCyan"/>\r
++ * <enumeration value="ltGoldenrodYellow"/>\r
++ * <enumeration value="ltGray"/>\r
++ * <enumeration value="ltGreen"/>\r
++ * <enumeration value="ltPink"/>\r
++ * <enumeration value="ltSalmon"/>\r
++ * <enumeration value="ltSeaGreen"/>\r
++ * <enumeration value="ltSkyBlue"/>\r
++ * <enumeration value="ltSlateGray"/>\r
++ * <enumeration value="ltSteelBlue"/>\r
++ * <enumeration value="ltYellow"/>\r
++ * <enumeration value="lime"/>\r
++ * <enumeration value="limeGreen"/>\r
++ * <enumeration value="linen"/>\r
++ * <enumeration value="magenta"/>\r
++ * <enumeration value="maroon"/>\r
++ * <enumeration value="medAquamarine"/>\r
++ * <enumeration value="medBlue"/>\r
++ * <enumeration value="medOrchid"/>\r
++ * <enumeration value="medPurple"/>\r
++ * <enumeration value="medSeaGreen"/>\r
++ * <enumeration value="medSlateBlue"/>\r
++ * <enumeration value="medSpringGreen"/>\r
++ * <enumeration value="medTurquoise"/>\r
++ * <enumeration value="medVioletRed"/>\r
++ * <enumeration value="midnightBlue"/>\r
++ * <enumeration value="mintCream"/>\r
++ * <enumeration value="mistyRose"/>\r
++ * <enumeration value="moccasin"/>\r
++ * <enumeration value="navajoWhite"/>\r
++ * <enumeration value="navy"/>\r
++ * <enumeration value="oldLace"/>\r
++ * <enumeration value="olive"/>\r
++ * <enumeration value="oliveDrab"/>\r
++ * <enumeration value="orange"/>\r
++ * <enumeration value="orangeRed"/>\r
++ * <enumeration value="orchid"/>\r
++ * <enumeration value="paleGoldenrod"/>\r
++ * <enumeration value="paleGreen"/>\r
++ * <enumeration value="paleTurquoise"/>\r
++ * <enumeration value="paleVioletRed"/>\r
++ * <enumeration value="papayaWhip"/>\r
++ * <enumeration value="peachPuff"/>\r
++ * <enumeration value="peru"/>\r
++ * <enumeration value="pink"/>\r
++ * <enumeration value="plum"/>\r
++ * <enumeration value="powderBlue"/>\r
++ * <enumeration value="purple"/>\r
++ * <enumeration value="red"/>\r
++ * <enumeration value="rosyBrown"/>\r
++ * <enumeration value="royalBlue"/>\r
++ * <enumeration value="saddleBrown"/>\r
++ * <enumeration value="salmon"/>\r
++ * <enumeration value="sandyBrown"/>\r
++ * <enumeration value="seaGreen"/>\r
++ * <enumeration value="seaShell"/>\r
++ * <enumeration value="sienna"/>\r
++ * <enumeration value="silver"/>\r
++ * <enumeration value="skyBlue"/>\r
++ * <enumeration value="slateBlue"/>\r
++ * <enumeration value="slateGray"/>\r
++ * <enumeration value="snow"/>\r
++ * <enumeration value="springGreen"/>\r
++ * <enumeration value="steelBlue"/>\r
++ * <enumeration value="tan"/>\r
++ * <enumeration value="teal"/>\r
++ * <enumeration value="thistle"/>\r
++ * <enumeration value="tomato"/>\r
++ * <enumeration value="turquoise"/>\r
++ * <enumeration value="violet"/>\r
++ * <enumeration value="wheat"/>\r
++ * <enumeration value="white"/>\r
++ * <enumeration value="whiteSmoke"/>\r
++ * <enumeration value="yellow"/>\r
++ * <enumeration value="yellowGreen"/>\r
++ * </restriction>\r
++ * </simpleType>\r
++ * </pre>\r
++ * \r
++ */\r
++@XmlType(name = "ST_PresetColorVal", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")\r
++@XmlEnum\r
++public enum STPresetColorVal {\r
++\r
++\r
++ /**\r
++ * Alice Blue Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("aliceBlue")\r
++ ALICE_BLUE("aliceBlue"),\r
++\r
++ /**\r
++ * Antique White Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("antiqueWhite")\r
++ ANTIQUE_WHITE("antiqueWhite"),\r
++\r
++ /**\r
++ * Aqua Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("aqua")\r
++ AQUA("aqua"),\r
++\r
++ /**\r
++ * Aquamarine Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("aquamarine")\r
++ AQUAMARINE("aquamarine"),\r
++\r
++ /**\r
++ * Azure Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("azure")\r
++ AZURE("azure"),\r
++\r
++ /**\r
++ * Beige Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("beige")\r
++ BEIGE("beige"),\r
++\r
++ /**\r
++ * Bisque Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("bisque")\r
++ BISQUE("bisque"),\r
++\r
++ /**\r
++ * Black Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("black")\r
++ BLACK("black"),\r
++\r
++ /**\r
++ * Blanched Almond Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("blanchedAlmond")\r
++ BLANCHED_ALMOND("blanchedAlmond"),\r
++\r
++ /**\r
++ * Blue Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("blue")\r
++ BLUE("blue"),\r
++\r
++ /**\r
++ * Blue Violet Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("blueViolet")\r
++ BLUE_VIOLET("blueViolet"),\r
++\r
++ /**\r
++ * Brown Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("brown")\r
++ BROWN("brown"),\r
++\r
++ /**\r
++ * Burly Wood Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("burlyWood")\r
++ BURLY_WOOD("burlyWood"),\r
++\r
++ /**\r
++ * Cadet Blue Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("cadetBlue")\r
++ CADET_BLUE("cadetBlue"),\r
++\r
++ /**\r
++ * Chartreuse Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("chartreuse")\r
++ CHARTREUSE("chartreuse"),\r
++\r
++ /**\r
++ * Chocolate Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("chocolate")\r
++ CHOCOLATE("chocolate"),\r
++\r
++ /**\r
++ * Coral Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("coral")\r
++ CORAL("coral"),\r
++\r
++ /**\r
++ * Cornflower Blue Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("cornflowerBlue")\r
++ CORNFLOWER_BLUE("cornflowerBlue"),\r
++\r
++ /**\r
++ * Cornsilk Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("cornsilk")\r
++ CORNSILK("cornsilk"),\r
++\r
++ /**\r
++ * Crimson Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("crimson")\r
++ CRIMSON("crimson"),\r
++\r
++ /**\r
++ * Cyan Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("cyan")\r
++ CYAN("cyan"),\r
++\r
++ /**\r
++ * Dark Blue Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("dkBlue")\r
++ DK_BLUE("dkBlue"),\r
++\r
++ /**\r
++ * Dark Cyan Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("dkCyan")\r
++ DK_CYAN("dkCyan"),\r
++\r
++ /**\r
++ * Dark Goldenrod Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("dkGoldenrod")\r
++ DK_GOLDENROD("dkGoldenrod"),\r
++\r
++ /**\r
++ * Dark Gray Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("dkGray")\r
++ DK_GRAY("dkGray"),\r
++\r
++ /**\r
++ * Dark Green Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("dkGreen")\r
++ DK_GREEN("dkGreen"),\r
++\r
++ /**\r
++ * Dark Khaki Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("dkKhaki")\r
++ DK_KHAKI("dkKhaki"),\r
++\r
++ /**\r
++ * Dark Magenta Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("dkMagenta")\r
++ DK_MAGENTA("dkMagenta"),\r
++\r
++ /**\r
++ * Dark Olive Green Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("dkOliveGreen")\r
++ DK_OLIVE_GREEN("dkOliveGreen"),\r
++\r
++ /**\r
++ * Dark Orange Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("dkOrange")\r
++ DK_ORANGE("dkOrange"),\r
++\r
++ /**\r
++ * Dark Orchid Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("dkOrchid")\r
++ DK_ORCHID("dkOrchid"),\r
++\r
++ /**\r
++ * Dark Red Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("dkRed")\r
++ DK_RED("dkRed"),\r
++\r
++ /**\r
++ * Dark Salmon Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("dkSalmon")\r
++ DK_SALMON("dkSalmon"),\r
++\r
++ /**\r
++ * Dark Sea Green Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("dkSeaGreen")\r
++ DK_SEA_GREEN("dkSeaGreen"),\r
++\r
++ /**\r
++ * Dark Slate Blue Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("dkSlateBlue")\r
++ DK_SLATE_BLUE("dkSlateBlue"),\r
++\r
++ /**\r
++ * Dark Slate Gray Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("dkSlateGray")\r
++ DK_SLATE_GRAY("dkSlateGray"),\r
++\r
++ /**\r
++ * Dark Turquoise Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("dkTurquoise")\r
++ DK_TURQUOISE("dkTurquoise"),\r
++\r
++ /**\r
++ * Dark Violet Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("dkViolet")\r
++ DK_VIOLET("dkViolet"),\r
++\r
++ /**\r
++ * Deep Pink Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("deepPink")\r
++ DEEP_PINK("deepPink"),\r
++\r
++ /**\r
++ * Deep Sky Blue Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("deepSkyBlue")\r
++ DEEP_SKY_BLUE("deepSkyBlue"),\r
++\r
++ /**\r
++ * Dim Gray Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("dimGray")\r
++ DIM_GRAY("dimGray"),\r
++\r
++ /**\r
++ * Dodger Blue Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("dodgerBlue")\r
++ DODGER_BLUE("dodgerBlue"),\r
++\r
++ /**\r
++ * Firebrick Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("firebrick")\r
++ FIREBRICK("firebrick"),\r
++\r
++ /**\r
++ * Floral White Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("floralWhite")\r
++ FLORAL_WHITE("floralWhite"),\r
++\r
++ /**\r
++ * Forest Green Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("forestGreen")\r
++ FOREST_GREEN("forestGreen"),\r
++\r
++ /**\r
++ * Fuchsia Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("fuchsia")\r
++ FUCHSIA("fuchsia"),\r
++\r
++ /**\r
++ * Gainsboro Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("gainsboro")\r
++ GAINSBORO("gainsboro"),\r
++\r
++ /**\r
++ * Ghost White Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("ghostWhite")\r
++ GHOST_WHITE("ghostWhite"),\r
++\r
++ /**\r
++ * Gold Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("gold")\r
++ GOLD("gold"),\r
++\r
++ /**\r
++ * Goldenrod Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("goldenrod")\r
++ GOLDENROD("goldenrod"),\r
++\r
++ /**\r
++ * Gray Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("gray")\r
++ GRAY("gray"),\r
++\r
++ /**\r
++ * Green Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("green")\r
++ GREEN("green"),\r
++\r
++ /**\r
++ * Green Yellow Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("greenYellow")\r
++ GREEN_YELLOW("greenYellow"),\r
++\r
++ /**\r
++ * Honeydew Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("honeydew")\r
++ HONEYDEW("honeydew"),\r
++\r
++ /**\r
++ * Hot Pink Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("hotPink")\r
++ HOT_PINK("hotPink"),\r
++\r
++ /**\r
++ * Indian Red Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("indianRed")\r
++ INDIAN_RED("indianRed"),\r
++\r
++ /**\r
++ * Indigo Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("indigo")\r
++ INDIGO("indigo"),\r
++\r
++ /**\r
++ * Ivory Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("ivory")\r
++ IVORY("ivory"),\r
++\r
++ /**\r
++ * Khaki Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("khaki")\r
++ KHAKI("khaki"),\r
++\r
++ /**\r
++ * Lavender Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("lavender")\r
++ LAVENDER("lavender"),\r
++\r
++ /**\r
++ * Lavender Blush Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("lavenderBlush")\r
++ LAVENDER_BLUSH("lavenderBlush"),\r
++\r
++ /**\r
++ * Lawn Green Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("lawnGreen")\r
++ LAWN_GREEN("lawnGreen"),\r
++\r
++ /**\r
++ * Lemon Chiffon Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("lemonChiffon")\r
++ LEMON_CHIFFON("lemonChiffon"),\r
++\r
++ /**\r
++ * Light Blue Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("ltBlue")\r
++ LT_BLUE("ltBlue"),\r
++\r
++ /**\r
++ * Light Coral Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("ltCoral")\r
++ LT_CORAL("ltCoral"),\r
++\r
++ /**\r
++ * Light Cyan Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("ltCyan")\r
++ LT_CYAN("ltCyan"),\r
++\r
++ /**\r
++ * Light Goldenrod Yellow Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("ltGoldenrodYellow")\r
++ LT_GOLDENROD_YELLOW("ltGoldenrodYellow"),\r
++\r
++ /**\r
++ * Light Gray Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("ltGray")\r
++ LT_GRAY("ltGray"),\r
++\r
++ /**\r
++ * Light Green Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("ltGreen")\r
++ LT_GREEN("ltGreen"),\r
++\r
++ /**\r
++ * Light Pink Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("ltPink")\r
++ LT_PINK("ltPink"),\r
++\r
++ /**\r
++ * Light Salmon Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("ltSalmon")\r
++ LT_SALMON("ltSalmon"),\r
++\r
++ /**\r
++ * Light Sea Green Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("ltSeaGreen")\r
++ LT_SEA_GREEN("ltSeaGreen"),\r
++\r
++ /**\r
++ * Light Sky Blue Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("ltSkyBlue")\r
++ LT_SKY_BLUE("ltSkyBlue"),\r
++\r
++ /**\r
++ * Light Slate Gray Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("ltSlateGray")\r
++ LT_SLATE_GRAY("ltSlateGray"),\r
++\r
++ /**\r
++ * Light Steel Blue Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("ltSteelBlue")\r
++ LT_STEEL_BLUE("ltSteelBlue"),\r
++\r
++ /**\r
++ * Light Yellow Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("ltYellow")\r
++ LT_YELLOW("ltYellow"),\r
++\r
++ /**\r
++ * Lime Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("lime")\r
++ LIME("lime"),\r
++\r
++ /**\r
++ * Lime Green Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("limeGreen")\r
++ LIME_GREEN("limeGreen"),\r
++\r
++ /**\r
++ * Linen Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("linen")\r
++ LINEN("linen"),\r
++\r
++ /**\r
++ * Magenta Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("magenta")\r
++ MAGENTA("magenta"),\r
++\r
++ /**\r
++ * Maroon Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("maroon")\r
++ MAROON("maroon"),\r
++\r
++ /**\r
++ * Medium Aquamarine Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("medAquamarine")\r
++ MED_AQUAMARINE("medAquamarine"),\r
++\r
++ /**\r
++ * Medium Blue Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("medBlue")\r
++ MED_BLUE("medBlue"),\r
++\r
++ /**\r
++ * Medium Orchid Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("medOrchid")\r
++ MED_ORCHID("medOrchid"),\r
++\r
++ /**\r
++ * Medium Purple Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("medPurple")\r
++ MED_PURPLE("medPurple"),\r
++\r
++ /**\r
++ * Medium Sea Green Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("medSeaGreen")\r
++ MED_SEA_GREEN("medSeaGreen"),\r
++\r
++ /**\r
++ * Medium Slate Blue Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("medSlateBlue")\r
++ MED_SLATE_BLUE("medSlateBlue"),\r
++\r
++ /**\r
++ * Medium Spring Green Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("medSpringGreen")\r
++ MED_SPRING_GREEN("medSpringGreen"),\r
++\r
++ /**\r
++ * Medium Turquoise Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("medTurquoise")\r
++ MED_TURQUOISE("medTurquoise"),\r
++\r
++ /**\r
++ * Medium Violet Red Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("medVioletRed")\r
++ MED_VIOLET_RED("medVioletRed"),\r
++\r
++ /**\r
++ * Midnight Blue Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("midnightBlue")\r
++ MIDNIGHT_BLUE("midnightBlue"),\r
++\r
++ /**\r
++ * Mint Cream Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("mintCream")\r
++ MINT_CREAM("mintCream"),\r
++\r
++ /**\r
++ * Misty Rose Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("mistyRose")\r
++ MISTY_ROSE("mistyRose"),\r
++\r
++ /**\r
++ * Moccasin Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("moccasin")\r
++ MOCCASIN("moccasin"),\r
++\r
++ /**\r
++ * Navajo White Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("navajoWhite")\r
++ NAVAJO_WHITE("navajoWhite"),\r
++\r
++ /**\r
++ * Navy Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("navy")\r
++ NAVY("navy"),\r
++\r
++ /**\r
++ * Old Lace Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("oldLace")\r
++ OLD_LACE("oldLace"),\r
++\r
++ /**\r
++ * Olive Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("olive")\r
++ OLIVE("olive"),\r
++\r
++ /**\r
++ * Olive Drab Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("oliveDrab")\r
++ OLIVE_DRAB("oliveDrab"),\r
++\r
++ /**\r
++ * Orange Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("orange")\r
++ ORANGE("orange"),\r
++\r
++ /**\r
++ * Orange Red Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("orangeRed")\r
++ ORANGE_RED("orangeRed"),\r
++\r
++ /**\r
++ * Orchid Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("orchid")\r
++ ORCHID("orchid"),\r
++\r
++ /**\r
++ * Pale Goldenrod Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("paleGoldenrod")\r
++ PALE_GOLDENROD("paleGoldenrod"),\r
++\r
++ /**\r
++ * Pale Green Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("paleGreen")\r
++ PALE_GREEN("paleGreen"),\r
++\r
++ /**\r
++ * Pale Turquoise Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("paleTurquoise")\r
++ PALE_TURQUOISE("paleTurquoise"),\r
++\r
++ /**\r
++ * Pale Violet Red Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("paleVioletRed")\r
++ PALE_VIOLET_RED("paleVioletRed"),\r
++\r
++ /**\r
++ * Papaya Whip Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("papayaWhip")\r
++ PAPAYA_WHIP("papayaWhip"),\r
++\r
++ /**\r
++ * Peach Puff Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("peachPuff")\r
++ PEACH_PUFF("peachPuff"),\r
++\r
++ /**\r
++ * Peru Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("peru")\r
++ PERU("peru"),\r
++\r
++ /**\r
++ * Pink Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("pink")\r
++ PINK("pink"),\r
++\r
++ /**\r
++ * Plum Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("plum")\r
++ PLUM("plum"),\r
++\r
++ /**\r
++ * Powder Blue Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("powderBlue")\r
++ POWDER_BLUE("powderBlue"),\r
++\r
++ /**\r
++ * Purple Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("purple")\r
++ PURPLE("purple"),\r
++\r
++ /**\r
++ * Red Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("red")\r
++ RED("red"),\r
++\r
++ /**\r
++ * Rosy Brown Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("rosyBrown")\r
++ ROSY_BROWN("rosyBrown"),\r
++\r
++ /**\r
++ * Royal Blue Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("royalBlue")\r
++ ROYAL_BLUE("royalBlue"),\r
++\r
++ /**\r
++ * Saddle Brown Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("saddleBrown")\r
++ SADDLE_BROWN("saddleBrown"),\r
++\r
++ /**\r
++ * Salmon Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("salmon")\r
++ SALMON("salmon"),\r
++\r
++ /**\r
++ * Sandy Brown Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("sandyBrown")\r
++ SANDY_BROWN("sandyBrown"),\r
++\r
++ /**\r
++ * Sea Green Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("seaGreen")\r
++ SEA_GREEN("seaGreen"),\r
++\r
++ /**\r
++ * Sea Shell Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("seaShell")\r
++ SEA_SHELL("seaShell"),\r
++\r
++ /**\r
++ * Sienna Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("sienna")\r
++ SIENNA("sienna"),\r
++\r
++ /**\r
++ * Silver Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("silver")\r
++ SILVER("silver"),\r
++\r
++ /**\r
++ * Sky Blue Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("skyBlue")\r
++ SKY_BLUE("skyBlue"),\r
++\r
++ /**\r
++ * Slate Blue Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("slateBlue")\r
++ SLATE_BLUE("slateBlue"),\r
++\r
++ /**\r
++ * Slate Gray Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("slateGray")\r
++ SLATE_GRAY("slateGray"),\r
++\r
++ /**\r
++ * Snow Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("snow")\r
++ SNOW("snow"),\r
++\r
++ /**\r
++ * Spring Green Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("springGreen")\r
++ SPRING_GREEN("springGreen"),\r
++\r
++ /**\r
++ * Steel Blue Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("steelBlue")\r
++ STEEL_BLUE("steelBlue"),\r
++\r
++ /**\r
++ * Tan Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("tan")\r
++ TAN("tan"),\r
++\r
++ /**\r
++ * Teal Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("teal")\r
++ TEAL("teal"),\r
++\r
++ /**\r
++ * Thistle Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("thistle")\r
++ THISTLE("thistle"),\r
++\r
++ /**\r
++ * Tomato Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("tomato")\r
++ TOMATO("tomato"),\r
++\r
++ /**\r
++ * Turquoise Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("turquoise")\r
++ TURQUOISE("turquoise"),\r
++\r
++ /**\r
++ * Violet Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("violet")\r
++ VIOLET("violet"),\r
++\r
++ /**\r
++ * Wheat Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("wheat")\r
++ WHEAT("wheat"),\r
++\r
++ /**\r
++ * White Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("white")\r
++ WHITE("white"),\r
++\r
++ /**\r
++ * White Smoke Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("whiteSmoke")\r
++ WHITE_SMOKE("whiteSmoke"),\r
++\r
++ /**\r
++ * Yellow Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("yellow")\r
++ YELLOW("yellow"),\r
++\r
++ /**\r
++ * Yellow Green Preset Color\r
++ * \r
++ */\r
++ @XmlEnumValue("yellowGreen")\r
++ YELLOW_GREEN("yellowGreen");\r
++ private final String value;\r
++\r
++ STPresetColorVal(String v) {\r
++ value = v;\r
++ }\r
++\r
++ public String value() {\r
++ return value;\r
++ }\r
++\r
++ public static STPresetColorVal fromValue(String v) {\r
++ for (STPresetColorVal c: STPresetColorVal.values()) {\r
++ if (c.value.equals(v)) {\r
++ return c;\r
++ }\r
++ }\r
++ throw new IllegalArgumentException(v);\r
++ }\r
++\r
++}\r
--- /dev/null
--- /dev/null
++/* ====================================================================\r
++ Licensed to the Apache Software Foundation (ASF) under one or more\r
++ contributor license agreements. See the NOTICE file distributed with\r
++ this work for additional information regarding copyright ownership.\r
++ The ASF licenses this file to You under the Apache License, Version 2.0\r
++ (the "License"); you may not use this file except in compliance with\r
++ the License. You may obtain a copy of the License at\r
++\r
++ http://www.apache.org/licenses/LICENSE-2.0\r
++\r
++ Unless required by applicable law or agreed to in writing, software\r
++ distributed under the License is distributed on an "AS IS" BASIS,\r
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ See the License for the specific language governing permissions and\r
++ limitations under the License.\r
++==================================================================== */\r
++\r
++package org.apache.poi.sl.draw.binding;\r
++\r
++import javax.xml.bind.annotation.XmlEnum;\r
++import javax.xml.bind.annotation.XmlEnumValue;\r
++import javax.xml.bind.annotation.XmlType;\r
++\r
++\r
++/**\r
++ * <p>Java class for ST_RectAlignment.\r
++ * \r
++ * <p>The following schema fragment specifies the expected content contained within this class.\r
++ * <p>\r
++ * <pre>\r
++ * <simpleType name="ST_RectAlignment">\r
++ * <restriction base="{http://www.w3.org/2001/XMLSchema}token">\r
++ * <enumeration value="tl"/>\r
++ * <enumeration value="t"/>\r
++ * <enumeration value="tr"/>\r
++ * <enumeration value="l"/>\r
++ * <enumeration value="ctr"/>\r
++ * <enumeration value="r"/>\r
++ * <enumeration value="bl"/>\r
++ * <enumeration value="b"/>\r
++ * <enumeration value="br"/>\r
++ * </restriction>\r
++ * </simpleType>\r
++ * </pre>\r
++ * \r
++ */\r
++@XmlType(name = "ST_RectAlignment", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")\r
++@XmlEnum\r
++public enum STRectAlignment {\r
++\r
++\r
++ /**\r
++ * Rectangle Alignment Enum ( Top Left )\r
++ * \r
++ */\r
++ @XmlEnumValue("tl")\r
++ TL("tl"),\r
++\r
++ /**\r
++ * Rectangle Alignment Enum ( Top )\r
++ * \r
++ */\r
++ @XmlEnumValue("t")\r
++ T("t"),\r
++\r
++ /**\r
++ * Rectangle Alignment Enum ( Top Right )\r
++ * \r
++ */\r
++ @XmlEnumValue("tr")\r
++ TR("tr"),\r
++\r
++ /**\r
++ * Rectangle Alignment Enum ( Left )\r
++ * \r
++ */\r
++ @XmlEnumValue("l")\r
++ L("l"),\r
++\r
++ /**\r
++ * Rectangle Alignment Enum ( Center )\r
++ * \r
++ */\r
++ @XmlEnumValue("ctr")\r
++ CTR("ctr"),\r
++\r
++ /**\r
++ * Rectangle Alignment Enum ( Right )\r
++ * \r
++ */\r
++ @XmlEnumValue("r")\r
++ R("r"),\r
++\r
++ /**\r
++ * Rectangle Alignment Enum ( Bottom Left )\r
++ * \r
++ */\r
++ @XmlEnumValue("bl")\r
++ BL("bl"),\r
++\r
++ /**\r
++ * Rectangle Alignment Enum ( Bottom )\r
++ * \r
++ */\r
++ @XmlEnumValue("b")\r
++ B("b"),\r
++\r
++ /**\r
++ * Rectangle Alignment Enum ( Bottom Right )\r
++ * \r
++ */\r
++ @XmlEnumValue("br")\r
++ BR("br");\r
++ private final String value;\r
++\r
++ STRectAlignment(String v) {\r
++ value = v;\r
++ }\r
++\r
++ public String value() {\r
++ return value;\r
++ }\r
++\r
++ public static STRectAlignment fromValue(String v) {\r
++ for (STRectAlignment c: STRectAlignment.values()) {\r
++ if (c.value.equals(v)) {\r
++ return c;\r
++ }\r
++ }\r
++ throw new IllegalArgumentException(v);\r
++ }\r
++\r
++}\r
--- /dev/null
--- /dev/null
++/* ====================================================================\r
++ Licensed to the Apache Software Foundation (ASF) under one or more\r
++ contributor license agreements. See the NOTICE file distributed with\r
++ this work for additional information regarding copyright ownership.\r
++ The ASF licenses this file to You under the Apache License, Version 2.0\r
++ (the "License"); you may not use this file except in compliance with\r
++ the License. You may obtain a copy of the License at\r
++\r
++ http://www.apache.org/licenses/LICENSE-2.0\r
++\r
++ Unless required by applicable law or agreed to in writing, software\r
++ distributed under the License is distributed on an "AS IS" BASIS,\r
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ See the License for the specific language governing permissions and\r
++ limitations under the License.\r
++==================================================================== */\r
++\r
++package org.apache.poi.sl.draw.binding;\r
++\r
++import javax.xml.bind.annotation.XmlEnum;\r
++import javax.xml.bind.annotation.XmlEnumValue;\r
++import javax.xml.bind.annotation.XmlType;\r
++\r
++\r
++/**\r
++ * <p>Java class for ST_SchemeColorVal.\r
++ * \r
++ * <p>The following schema fragment specifies the expected content contained within this class.\r
++ * <p>\r
++ * <pre>\r
++ * <simpleType name="ST_SchemeColorVal">\r
++ * <restriction base="{http://www.w3.org/2001/XMLSchema}token">\r
++ * <enumeration value="bg1"/>\r
++ * <enumeration value="tx1"/>\r
++ * <enumeration value="bg2"/>\r
++ * <enumeration value="tx2"/>\r
++ * <enumeration value="accent1"/>\r
++ * <enumeration value="accent2"/>\r
++ * <enumeration value="accent3"/>\r
++ * <enumeration value="accent4"/>\r
++ * <enumeration value="accent5"/>\r
++ * <enumeration value="accent6"/>\r
++ * <enumeration value="hlink"/>\r
++ * <enumeration value="folHlink"/>\r
++ * <enumeration value="phClr"/>\r
++ * <enumeration value="dk1"/>\r
++ * <enumeration value="lt1"/>\r
++ * <enumeration value="dk2"/>\r
++ * <enumeration value="lt2"/>\r
++ * </restriction>\r
++ * </simpleType>\r
++ * </pre>\r
++ * \r
++ */\r
++@XmlType(name = "ST_SchemeColorVal", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")\r
++@XmlEnum\r
++public enum STSchemeColorVal {\r
++\r
++\r
++ /**\r
++ * Background Color 1\r
++ * \r
++ */\r
++ @XmlEnumValue("bg1")\r
++ BG_1("bg1"),\r
++\r
++ /**\r
++ * Text Color 1\r
++ * \r
++ */\r
++ @XmlEnumValue("tx1")\r
++ TX_1("tx1"),\r
++\r
++ /**\r
++ * Background Color 2\r
++ * \r
++ */\r
++ @XmlEnumValue("bg2")\r
++ BG_2("bg2"),\r
++\r
++ /**\r
++ * Text Color 2\r
++ * \r
++ */\r
++ @XmlEnumValue("tx2")\r
++ TX_2("tx2"),\r
++\r
++ /**\r
++ * Accent Color 1\r
++ * \r
++ */\r
++ @XmlEnumValue("accent1")\r
++ ACCENT_1("accent1"),\r
++\r
++ /**\r
++ * Accent Color 2\r
++ * \r
++ */\r
++ @XmlEnumValue("accent2")\r
++ ACCENT_2("accent2"),\r
++\r
++ /**\r
++ * Accent Color 3\r
++ * \r
++ */\r
++ @XmlEnumValue("accent3")\r
++ ACCENT_3("accent3"),\r
++\r
++ /**\r
++ * Accent Color 4\r
++ * \r
++ */\r
++ @XmlEnumValue("accent4")\r
++ ACCENT_4("accent4"),\r
++\r
++ /**\r
++ * Accent Color 5\r
++ * \r
++ */\r
++ @XmlEnumValue("accent5")\r
++ ACCENT_5("accent5"),\r
++\r
++ /**\r
++ * Accent Color 6\r
++ * \r
++ */\r
++ @XmlEnumValue("accent6")\r
++ ACCENT_6("accent6"),\r
++\r
++ /**\r
++ * Hyperlink Color\r
++ * \r
++ */\r
++ @XmlEnumValue("hlink")\r
++ HLINK("hlink"),\r
++\r
++ /**\r
++ * Followed Hyperlink Color\r
++ * \r
++ */\r
++ @XmlEnumValue("folHlink")\r
++ FOL_HLINK("folHlink"),\r
++\r
++ /**\r
++ * Style Color\r
++ * \r
++ */\r
++ @XmlEnumValue("phClr")\r
++ PH_CLR("phClr"),\r
++\r
++ /**\r
++ * Dark Color 1\r
++ * \r
++ */\r
++ @XmlEnumValue("dk1")\r
++ DK_1("dk1"),\r
++\r
++ /**\r
++ * Light Color 1\r
++ * \r
++ */\r
++ @XmlEnumValue("lt1")\r
++ LT_1("lt1"),\r
++\r
++ /**\r
++ * Dark Color 2\r
++ * \r
++ */\r
++ @XmlEnumValue("dk2")\r
++ DK_2("dk2"),\r
++\r
++ /**\r
++ * Light Color 2\r
++ * \r
++ */\r
++ @XmlEnumValue("lt2")\r
++ LT_2("lt2");\r
++ private final String value;\r
++\r
++ STSchemeColorVal(String v) {\r
++ value = v;\r
++ }\r
++\r
++ public String value() {\r
++ return value;\r
++ }\r
++\r
++ public static STSchemeColorVal fromValue(String v) {\r
++ for (STSchemeColorVal c: STSchemeColorVal.values()) {\r
++ if (c.value.equals(v)) {\r
++ return c;\r
++ }\r
++ }\r
++ throw new IllegalArgumentException(v);\r
++ }\r
++\r
++}\r
--- /dev/null
--- /dev/null
++/* ====================================================================\r
++ Licensed to the Apache Software Foundation (ASF) under one or more\r
++ contributor license agreements. See the NOTICE file distributed with\r
++ this work for additional information regarding copyright ownership.\r
++ The ASF licenses this file to You under the Apache License, Version 2.0\r
++ (the "License"); you may not use this file except in compliance with\r
++ the License. You may obtain a copy of the License at\r
++\r
++ http://www.apache.org/licenses/LICENSE-2.0\r
++\r
++ Unless required by applicable law or agreed to in writing, software\r
++ distributed under the License is distributed on an "AS IS" BASIS,\r
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ See the License for the specific language governing permissions and\r
++ limitations under the License.\r
++==================================================================== */\r
++\r
++package org.apache.poi.sl.draw.binding;\r
++\r
++import javax.xml.bind.annotation.XmlEnum;\r
++import javax.xml.bind.annotation.XmlEnumValue;\r
++import javax.xml.bind.annotation.XmlType;\r
++\r
++\r
++/**\r
++ * <p>Java class for ST_ShapeType.\r
++ * \r
++ * <p>The following schema fragment specifies the expected content contained within this class.\r
++ * <p>\r
++ * <pre>\r
++ * <simpleType name="ST_ShapeType">\r
++ * <restriction base="{http://www.w3.org/2001/XMLSchema}token">\r
++ * <enumeration value="line"/>\r
++ * <enumeration value="lineInv"/>\r
++ * <enumeration value="triangle"/>\r
++ * <enumeration value="rtTriangle"/>\r
++ * <enumeration value="rect"/>\r
++ * <enumeration value="diamond"/>\r
++ * <enumeration value="parallelogram"/>\r
++ * <enumeration value="trapezoid"/>\r
++ * <enumeration value="nonIsoscelesTrapezoid"/>\r
++ * <enumeration value="pentagon"/>\r
++ * <enumeration value="hexagon"/>\r
++ * <enumeration value="heptagon"/>\r
++ * <enumeration value="octagon"/>\r
++ * <enumeration value="decagon"/>\r
++ * <enumeration value="dodecagon"/>\r
++ * <enumeration value="star4"/>\r
++ * <enumeration value="star5"/>\r
++ * <enumeration value="star6"/>\r
++ * <enumeration value="star7"/>\r
++ * <enumeration value="star8"/>\r
++ * <enumeration value="star10"/>\r
++ * <enumeration value="star12"/>\r
++ * <enumeration value="star16"/>\r
++ * <enumeration value="star24"/>\r
++ * <enumeration value="star32"/>\r
++ * <enumeration value="roundRect"/>\r
++ * <enumeration value="round1Rect"/>\r
++ * <enumeration value="round2SameRect"/>\r
++ * <enumeration value="round2DiagRect"/>\r
++ * <enumeration value="snipRoundRect"/>\r
++ * <enumeration value="snip1Rect"/>\r
++ * <enumeration value="snip2SameRect"/>\r
++ * <enumeration value="snip2DiagRect"/>\r
++ * <enumeration value="plaque"/>\r
++ * <enumeration value="ellipse"/>\r
++ * <enumeration value="teardrop"/>\r
++ * <enumeration value="homePlate"/>\r
++ * <enumeration value="chevron"/>\r
++ * <enumeration value="pieWedge"/>\r
++ * <enumeration value="pie"/>\r
++ * <enumeration value="blockArc"/>\r
++ * <enumeration value="donut"/>\r
++ * <enumeration value="noSmoking"/>\r
++ * <enumeration value="rightArrow"/>\r
++ * <enumeration value="leftArrow"/>\r
++ * <enumeration value="upArrow"/>\r
++ * <enumeration value="downArrow"/>\r
++ * <enumeration value="stripedRightArrow"/>\r
++ * <enumeration value="notchedRightArrow"/>\r
++ * <enumeration value="bentUpArrow"/>\r
++ * <enumeration value="leftRightArrow"/>\r
++ * <enumeration value="upDownArrow"/>\r
++ * <enumeration value="leftUpArrow"/>\r
++ * <enumeration value="leftRightUpArrow"/>\r
++ * <enumeration value="quadArrow"/>\r
++ * <enumeration value="leftArrowCallout"/>\r
++ * <enumeration value="rightArrowCallout"/>\r
++ * <enumeration value="upArrowCallout"/>\r
++ * <enumeration value="downArrowCallout"/>\r
++ * <enumeration value="leftRightArrowCallout"/>\r
++ * <enumeration value="upDownArrowCallout"/>\r
++ * <enumeration value="quadArrowCallout"/>\r
++ * <enumeration value="bentArrow"/>\r
++ * <enumeration value="uturnArrow"/>\r
++ * <enumeration value="circularArrow"/>\r
++ * <enumeration value="leftCircularArrow"/>\r
++ * <enumeration value="leftRightCircularArrow"/>\r
++ * <enumeration value="curvedRightArrow"/>\r
++ * <enumeration value="curvedLeftArrow"/>\r
++ * <enumeration value="curvedUpArrow"/>\r
++ * <enumeration value="curvedDownArrow"/>\r
++ * <enumeration value="swooshArrow"/>\r
++ * <enumeration value="cube"/>\r
++ * <enumeration value="can"/>\r
++ * <enumeration value="lightningBolt"/>\r
++ * <enumeration value="heart"/>\r
++ * <enumeration value="sun"/>\r
++ * <enumeration value="moon"/>\r
++ * <enumeration value="smileyFace"/>\r
++ * <enumeration value="irregularSeal1"/>\r
++ * <enumeration value="irregularSeal2"/>\r
++ * <enumeration value="foldedCorner"/>\r
++ * <enumeration value="bevel"/>\r
++ * <enumeration value="frame"/>\r
++ * <enumeration value="halfFrame"/>\r
++ * <enumeration value="corner"/>\r
++ * <enumeration value="diagStripe"/>\r
++ * <enumeration value="chord"/>\r
++ * <enumeration value="arc"/>\r
++ * <enumeration value="leftBracket"/>\r
++ * <enumeration value="rightBracket"/>\r
++ * <enumeration value="leftBrace"/>\r
++ * <enumeration value="rightBrace"/>\r
++ * <enumeration value="bracketPair"/>\r
++ * <enumeration value="bracePair"/>\r
++ * <enumeration value="straightConnector1"/>\r
++ * <enumeration value="bentConnector2"/>\r
++ * <enumeration value="bentConnector3"/>\r
++ * <enumeration value="bentConnector4"/>\r
++ * <enumeration value="bentConnector5"/>\r
++ * <enumeration value="curvedConnector2"/>\r
++ * <enumeration value="curvedConnector3"/>\r
++ * <enumeration value="curvedConnector4"/>\r
++ * <enumeration value="curvedConnector5"/>\r
++ * <enumeration value="callout1"/>\r
++ * <enumeration value="callout2"/>\r
++ * <enumeration value="callout3"/>\r
++ * <enumeration value="accentCallout1"/>\r
++ * <enumeration value="accentCallout2"/>\r
++ * <enumeration value="accentCallout3"/>\r
++ * <enumeration value="borderCallout1"/>\r
++ * <enumeration value="borderCallout2"/>\r
++ * <enumeration value="borderCallout3"/>\r
++ * <enumeration value="accentBorderCallout1"/>\r
++ * <enumeration value="accentBorderCallout2"/>\r
++ * <enumeration value="accentBorderCallout3"/>\r
++ * <enumeration value="wedgeRectCallout"/>\r
++ * <enumeration value="wedgeRoundRectCallout"/>\r
++ * <enumeration value="wedgeEllipseCallout"/>\r
++ * <enumeration value="cloudCallout"/>\r
++ * <enumeration value="cloud"/>\r
++ * <enumeration value="ribbon"/>\r
++ * <enumeration value="ribbon2"/>\r
++ * <enumeration value="ellipseRibbon"/>\r
++ * <enumeration value="ellipseRibbon2"/>\r
++ * <enumeration value="leftRightRibbon"/>\r
++ * <enumeration value="verticalScroll"/>\r
++ * <enumeration value="horizontalScroll"/>\r
++ * <enumeration value="wave"/>\r
++ * <enumeration value="doubleWave"/>\r
++ * <enumeration value="plus"/>\r
++ * <enumeration value="flowChartProcess"/>\r
++ * <enumeration value="flowChartDecision"/>\r
++ * <enumeration value="flowChartInputOutput"/>\r
++ * <enumeration value="flowChartPredefinedProcess"/>\r
++ * <enumeration value="flowChartInternalStorage"/>\r
++ * <enumeration value="flowChartDocument"/>\r
++ * <enumeration value="flowChartMultidocument"/>\r
++ * <enumeration value="flowChartTerminator"/>\r
++ * <enumeration value="flowChartPreparation"/>\r
++ * <enumeration value="flowChartManualInput"/>\r
++ * <enumeration value="flowChartManualOperation"/>\r
++ * <enumeration value="flowChartConnector"/>\r
++ * <enumeration value="flowChartPunchedCard"/>\r
++ * <enumeration value="flowChartPunchedTape"/>\r
++ * <enumeration value="flowChartSummingJunction"/>\r
++ * <enumeration value="flowChartOr"/>\r
++ * <enumeration value="flowChartCollate"/>\r
++ * <enumeration value="flowChartSort"/>\r
++ * <enumeration value="flowChartExtract"/>\r
++ * <enumeration value="flowChartMerge"/>\r
++ * <enumeration value="flowChartOfflineStorage"/>\r
++ * <enumeration value="flowChartOnlineStorage"/>\r
++ * <enumeration value="flowChartMagneticTape"/>\r
++ * <enumeration value="flowChartMagneticDisk"/>\r
++ * <enumeration value="flowChartMagneticDrum"/>\r
++ * <enumeration value="flowChartDisplay"/>\r
++ * <enumeration value="flowChartDelay"/>\r
++ * <enumeration value="flowChartAlternateProcess"/>\r
++ * <enumeration value="flowChartOffpageConnector"/>\r
++ * <enumeration value="actionButtonBlank"/>\r
++ * <enumeration value="actionButtonHome"/>\r
++ * <enumeration value="actionButtonHelp"/>\r
++ * <enumeration value="actionButtonInformation"/>\r
++ * <enumeration value="actionButtonForwardNext"/>\r
++ * <enumeration value="actionButtonBackPrevious"/>\r
++ * <enumeration value="actionButtonEnd"/>\r
++ * <enumeration value="actionButtonBeginning"/>\r
++ * <enumeration value="actionButtonReturn"/>\r
++ * <enumeration value="actionButtonDocument"/>\r
++ * <enumeration value="actionButtonSound"/>\r
++ * <enumeration value="actionButtonMovie"/>\r
++ * <enumeration value="gear6"/>\r
++ * <enumeration value="gear9"/>\r
++ * <enumeration value="funnel"/>\r
++ * <enumeration value="mathPlus"/>\r
++ * <enumeration value="mathMinus"/>\r
++ * <enumeration value="mathMultiply"/>\r
++ * <enumeration value="mathDivide"/>\r
++ * <enumeration value="mathEqual"/>\r
++ * <enumeration value="mathNotEqual"/>\r
++ * <enumeration value="cornerTabs"/>\r
++ * <enumeration value="squareTabs"/>\r
++ * <enumeration value="plaqueTabs"/>\r
++ * <enumeration value="chartX"/>\r
++ * <enumeration value="chartStar"/>\r
++ * <enumeration value="chartPlus"/>\r
++ * </restriction>\r
++ * </simpleType>\r
++ * </pre>\r
++ * \r
++ */\r
++@XmlType(name = "ST_ShapeType", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")\r
++@XmlEnum\r
++public enum STShapeType {\r
++\r
++\r
++ /**\r
++ * Line Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("line")\r
++ LINE("line"),\r
++\r
++ /**\r
++ * Line Inverse Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("lineInv")\r
++ LINE_INV("lineInv"),\r
++\r
++ /**\r
++ * Triangle Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("triangle")\r
++ TRIANGLE("triangle"),\r
++\r
++ /**\r
++ * Right Triangle Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("rtTriangle")\r
++ RT_TRIANGLE("rtTriangle"),\r
++\r
++ /**\r
++ * Rectangle Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("rect")\r
++ RECT("rect"),\r
++\r
++ /**\r
++ * Diamond Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("diamond")\r
++ DIAMOND("diamond"),\r
++\r
++ /**\r
++ * Parallelogram Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("parallelogram")\r
++ PARALLELOGRAM("parallelogram"),\r
++\r
++ /**\r
++ * Trapezoid Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("trapezoid")\r
++ TRAPEZOID("trapezoid"),\r
++\r
++ /**\r
++ * Non-Isosceles Trapezoid Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("nonIsoscelesTrapezoid")\r
++ NON_ISOSCELES_TRAPEZOID("nonIsoscelesTrapezoid"),\r
++\r
++ /**\r
++ * Pentagon Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("pentagon")\r
++ PENTAGON("pentagon"),\r
++\r
++ /**\r
++ * Hexagon Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("hexagon")\r
++ HEXAGON("hexagon"),\r
++\r
++ /**\r
++ * Heptagon Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("heptagon")\r
++ HEPTAGON("heptagon"),\r
++\r
++ /**\r
++ * Octagon Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("octagon")\r
++ OCTAGON("octagon"),\r
++\r
++ /**\r
++ * Decagon Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("decagon")\r
++ DECAGON("decagon"),\r
++\r
++ /**\r
++ * Dodecagon Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("dodecagon")\r
++ DODECAGON("dodecagon"),\r
++\r
++ /**\r
++ * Four Pointed Star Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("star4")\r
++ STAR_4("star4"),\r
++\r
++ /**\r
++ * Five Pointed Star Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("star5")\r
++ STAR_5("star5"),\r
++\r
++ /**\r
++ * Six Pointed Star Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("star6")\r
++ STAR_6("star6"),\r
++\r
++ /**\r
++ * Seven Pointed Star Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("star7")\r
++ STAR_7("star7"),\r
++\r
++ /**\r
++ * Eight Pointed Star Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("star8")\r
++ STAR_8("star8"),\r
++\r
++ /**\r
++ * Ten Pointed Star Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("star10")\r
++ STAR_10("star10"),\r
++\r
++ /**\r
++ * Twelve Pointed Star Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("star12")\r
++ STAR_12("star12"),\r
++\r
++ /**\r
++ * Sixteen Pointed Star Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("star16")\r
++ STAR_16("star16"),\r
++\r
++ /**\r
++ * Twenty Four Pointed Star Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("star24")\r
++ STAR_24("star24"),\r
++\r
++ /**\r
++ * Thirty Two Pointed Star Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("star32")\r
++ STAR_32("star32"),\r
++\r
++ /**\r
++ * Round Corner Rectangle Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("roundRect")\r
++ ROUND_RECT("roundRect"),\r
++\r
++ /**\r
++ * One Round Corner Rectangle Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("round1Rect")\r
++ ROUND_1_RECT("round1Rect"),\r
++\r
++ /**\r
++ * Two Same-side Round Corner Rectangle Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("round2SameRect")\r
++ ROUND_2_SAME_RECT("round2SameRect"),\r
++\r
++ /**\r
++ * Two Diagonal Round Corner Rectangle Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("round2DiagRect")\r
++ ROUND_2_DIAG_RECT("round2DiagRect"),\r
++\r
++ /**\r
++ * One Snip One Round Corner Rectangle Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("snipRoundRect")\r
++ SNIP_ROUND_RECT("snipRoundRect"),\r
++\r
++ /**\r
++ * One Snip Corner Rectangle Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("snip1Rect")\r
++ SNIP_1_RECT("snip1Rect"),\r
++\r
++ /**\r
++ * Two Same-side Snip Corner Rectangle Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("snip2SameRect")\r
++ SNIP_2_SAME_RECT("snip2SameRect"),\r
++\r
++ /**\r
++ * Two Diagonal Snip Corner Rectangle Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("snip2DiagRect")\r
++ SNIP_2_DIAG_RECT("snip2DiagRect"),\r
++\r
++ /**\r
++ * Plaque Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("plaque")\r
++ PLAQUE("plaque"),\r
++\r
++ /**\r
++ * Ellipse Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("ellipse")\r
++ ELLIPSE("ellipse"),\r
++\r
++ /**\r
++ * Teardrop Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("teardrop")\r
++ TEARDROP("teardrop"),\r
++\r
++ /**\r
++ * Home Plate Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("homePlate")\r
++ HOME_PLATE("homePlate"),\r
++\r
++ /**\r
++ * Chevron Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("chevron")\r
++ CHEVRON("chevron"),\r
++\r
++ /**\r
++ * Pie Wedge Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("pieWedge")\r
++ PIE_WEDGE("pieWedge"),\r
++\r
++ /**\r
++ * Pie Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("pie")\r
++ PIE("pie"),\r
++\r
++ /**\r
++ * Block Arc Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("blockArc")\r
++ BLOCK_ARC("blockArc"),\r
++\r
++ /**\r
++ * Donut Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("donut")\r
++ DONUT("donut"),\r
++\r
++ /**\r
++ * No Smoking Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("noSmoking")\r
++ NO_SMOKING("noSmoking"),\r
++\r
++ /**\r
++ * Right Arrow Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("rightArrow")\r
++ RIGHT_ARROW("rightArrow"),\r
++\r
++ /**\r
++ * Left Arrow Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("leftArrow")\r
++ LEFT_ARROW("leftArrow"),\r
++\r
++ /**\r
++ * Up Arrow Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("upArrow")\r
++ UP_ARROW("upArrow"),\r
++\r
++ /**\r
++ * Down Arrow Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("downArrow")\r
++ DOWN_ARROW("downArrow"),\r
++\r
++ /**\r
++ * Striped Right Arrow Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("stripedRightArrow")\r
++ STRIPED_RIGHT_ARROW("stripedRightArrow"),\r
++\r
++ /**\r
++ * Notched Right Arrow Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("notchedRightArrow")\r
++ NOTCHED_RIGHT_ARROW("notchedRightArrow"),\r
++\r
++ /**\r
++ * Bent Up Arrow Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("bentUpArrow")\r
++ BENT_UP_ARROW("bentUpArrow"),\r
++\r
++ /**\r
++ * Left Right Arrow Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("leftRightArrow")\r
++ LEFT_RIGHT_ARROW("leftRightArrow"),\r
++\r
++ /**\r
++ * Up Down Arrow Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("upDownArrow")\r
++ UP_DOWN_ARROW("upDownArrow"),\r
++\r
++ /**\r
++ * Left Up Arrow Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("leftUpArrow")\r
++ LEFT_UP_ARROW("leftUpArrow"),\r
++\r
++ /**\r
++ * Left Right Up Arrow Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("leftRightUpArrow")\r
++ LEFT_RIGHT_UP_ARROW("leftRightUpArrow"),\r
++\r
++ /**\r
++ * Quad-Arrow Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("quadArrow")\r
++ QUAD_ARROW("quadArrow"),\r
++\r
++ /**\r
++ * Callout Left Arrow Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("leftArrowCallout")\r
++ LEFT_ARROW_CALLOUT("leftArrowCallout"),\r
++\r
++ /**\r
++ * Callout Right Arrow Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("rightArrowCallout")\r
++ RIGHT_ARROW_CALLOUT("rightArrowCallout"),\r
++\r
++ /**\r
++ * Callout Up Arrow Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("upArrowCallout")\r
++ UP_ARROW_CALLOUT("upArrowCallout"),\r
++\r
++ /**\r
++ * Callout Down Arrow Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("downArrowCallout")\r
++ DOWN_ARROW_CALLOUT("downArrowCallout"),\r
++\r
++ /**\r
++ * Callout Left Right Arrow Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("leftRightArrowCallout")\r
++ LEFT_RIGHT_ARROW_CALLOUT("leftRightArrowCallout"),\r
++\r
++ /**\r
++ * Callout Up Down Arrow Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("upDownArrowCallout")\r
++ UP_DOWN_ARROW_CALLOUT("upDownArrowCallout"),\r
++\r
++ /**\r
++ * Callout Quad-Arrow Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("quadArrowCallout")\r
++ QUAD_ARROW_CALLOUT("quadArrowCallout"),\r
++\r
++ /**\r
++ * Bent Arrow Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("bentArrow")\r
++ BENT_ARROW("bentArrow"),\r
++\r
++ /**\r
++ * U-Turn Arrow Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("uturnArrow")\r
++ UTURN_ARROW("uturnArrow"),\r
++\r
++ /**\r
++ * Circular Arrow Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("circularArrow")\r
++ CIRCULAR_ARROW("circularArrow"),\r
++\r
++ /**\r
++ * Left Circular Arrow Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("leftCircularArrow")\r
++ LEFT_CIRCULAR_ARROW("leftCircularArrow"),\r
++\r
++ /**\r
++ * Left Right Circular Arrow Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("leftRightCircularArrow")\r
++ LEFT_RIGHT_CIRCULAR_ARROW("leftRightCircularArrow"),\r
++\r
++ /**\r
++ * Curved Right Arrow Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("curvedRightArrow")\r
++ CURVED_RIGHT_ARROW("curvedRightArrow"),\r
++\r
++ /**\r
++ * Curved Left Arrow Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("curvedLeftArrow")\r
++ CURVED_LEFT_ARROW("curvedLeftArrow"),\r
++\r
++ /**\r
++ * Curved Up Arrow Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("curvedUpArrow")\r
++ CURVED_UP_ARROW("curvedUpArrow"),\r
++\r
++ /**\r
++ * Curved Down Arrow Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("curvedDownArrow")\r
++ CURVED_DOWN_ARROW("curvedDownArrow"),\r
++\r
++ /**\r
++ * Swoosh Arrow Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("swooshArrow")\r
++ SWOOSH_ARROW("swooshArrow"),\r
++\r
++ /**\r
++ * Cube Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("cube")\r
++ CUBE("cube"),\r
++\r
++ /**\r
++ * Can Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("can")\r
++ CAN("can"),\r
++\r
++ /**\r
++ * Lightning Bolt Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("lightningBolt")\r
++ LIGHTNING_BOLT("lightningBolt"),\r
++\r
++ /**\r
++ * Heart Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("heart")\r
++ HEART("heart"),\r
++\r
++ /**\r
++ * Sun Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("sun")\r
++ SUN("sun"),\r
++\r
++ /**\r
++ * Moon Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("moon")\r
++ MOON("moon"),\r
++\r
++ /**\r
++ * Smiley Face Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("smileyFace")\r
++ SMILEY_FACE("smileyFace"),\r
++\r
++ /**\r
++ * Irregular Seal 1 Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("irregularSeal1")\r
++ IRREGULAR_SEAL_1("irregularSeal1"),\r
++\r
++ /**\r
++ * Irregular Seal 2 Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("irregularSeal2")\r
++ IRREGULAR_SEAL_2("irregularSeal2"),\r
++\r
++ /**\r
++ * Folded Corner Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("foldedCorner")\r
++ FOLDED_CORNER("foldedCorner"),\r
++\r
++ /**\r
++ * Bevel Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("bevel")\r
++ BEVEL("bevel"),\r
++\r
++ /**\r
++ * Frame Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("frame")\r
++ FRAME("frame"),\r
++\r
++ /**\r
++ * Half Frame Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("halfFrame")\r
++ HALF_FRAME("halfFrame"),\r
++\r
++ /**\r
++ * Corner Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("corner")\r
++ CORNER("corner"),\r
++\r
++ /**\r
++ * Diagonal Stripe Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("diagStripe")\r
++ DIAG_STRIPE("diagStripe"),\r
++\r
++ /**\r
++ * Chord Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("chord")\r
++ CHORD("chord"),\r
++\r
++ /**\r
++ * Curved Arc Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("arc")\r
++ ARC("arc"),\r
++\r
++ /**\r
++ * Left Bracket Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("leftBracket")\r
++ LEFT_BRACKET("leftBracket"),\r
++\r
++ /**\r
++ * Right Bracket Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("rightBracket")\r
++ RIGHT_BRACKET("rightBracket"),\r
++\r
++ /**\r
++ * Left Brace Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("leftBrace")\r
++ LEFT_BRACE("leftBrace"),\r
++\r
++ /**\r
++ * Right Brace Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("rightBrace")\r
++ RIGHT_BRACE("rightBrace"),\r
++\r
++ /**\r
++ * Bracket Pair Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("bracketPair")\r
++ BRACKET_PAIR("bracketPair"),\r
++\r
++ /**\r
++ * Brace Pair Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("bracePair")\r
++ BRACE_PAIR("bracePair"),\r
++\r
++ /**\r
++ * Straight Connector 1 Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("straightConnector1")\r
++ STRAIGHT_CONNECTOR_1("straightConnector1"),\r
++\r
++ /**\r
++ * Bent Connector 2 Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("bentConnector2")\r
++ BENT_CONNECTOR_2("bentConnector2"),\r
++\r
++ /**\r
++ * Bent Connector 3 Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("bentConnector3")\r
++ BENT_CONNECTOR_3("bentConnector3"),\r
++\r
++ /**\r
++ * Bent Connector 4 Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("bentConnector4")\r
++ BENT_CONNECTOR_4("bentConnector4"),\r
++\r
++ /**\r
++ * Bent Connector 5 Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("bentConnector5")\r
++ BENT_CONNECTOR_5("bentConnector5"),\r
++\r
++ /**\r
++ * Curved Connector 2 Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("curvedConnector2")\r
++ CURVED_CONNECTOR_2("curvedConnector2"),\r
++\r
++ /**\r
++ * Curved Connector 3 Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("curvedConnector3")\r
++ CURVED_CONNECTOR_3("curvedConnector3"),\r
++\r
++ /**\r
++ * Curved Connector 4 Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("curvedConnector4")\r
++ CURVED_CONNECTOR_4("curvedConnector4"),\r
++\r
++ /**\r
++ * Curved Connector 5 Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("curvedConnector5")\r
++ CURVED_CONNECTOR_5("curvedConnector5"),\r
++\r
++ /**\r
++ * Callout 1 Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("callout1")\r
++ CALLOUT_1("callout1"),\r
++\r
++ /**\r
++ * Callout 2 Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("callout2")\r
++ CALLOUT_2("callout2"),\r
++\r
++ /**\r
++ * Callout 3 Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("callout3")\r
++ CALLOUT_3("callout3"),\r
++\r
++ /**\r
++ * Callout 1 Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("accentCallout1")\r
++ ACCENT_CALLOUT_1("accentCallout1"),\r
++\r
++ /**\r
++ * Callout 2 Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("accentCallout2")\r
++ ACCENT_CALLOUT_2("accentCallout2"),\r
++\r
++ /**\r
++ * Callout 3 Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("accentCallout3")\r
++ ACCENT_CALLOUT_3("accentCallout3"),\r
++\r
++ /**\r
++ * Callout 1 with Border Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("borderCallout1")\r
++ BORDER_CALLOUT_1("borderCallout1"),\r
++\r
++ /**\r
++ * Callout 2 with Border Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("borderCallout2")\r
++ BORDER_CALLOUT_2("borderCallout2"),\r
++\r
++ /**\r
++ * Callout 3 with Border Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("borderCallout3")\r
++ BORDER_CALLOUT_3("borderCallout3"),\r
++\r
++ /**\r
++ * Callout 1 with Border and Accent Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("accentBorderCallout1")\r
++ ACCENT_BORDER_CALLOUT_1("accentBorderCallout1"),\r
++\r
++ /**\r
++ * Callout 2 with Border and Accent Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("accentBorderCallout2")\r
++ ACCENT_BORDER_CALLOUT_2("accentBorderCallout2"),\r
++\r
++ /**\r
++ * Callout 3 with Border and Accent Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("accentBorderCallout3")\r
++ ACCENT_BORDER_CALLOUT_3("accentBorderCallout3"),\r
++\r
++ /**\r
++ * Callout Wedge Rectangle Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("wedgeRectCallout")\r
++ WEDGE_RECT_CALLOUT("wedgeRectCallout"),\r
++\r
++ /**\r
++ * Callout Wedge Round Rectangle Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("wedgeRoundRectCallout")\r
++ WEDGE_ROUND_RECT_CALLOUT("wedgeRoundRectCallout"),\r
++\r
++ /**\r
++ * Callout Wedge Ellipse Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("wedgeEllipseCallout")\r
++ WEDGE_ELLIPSE_CALLOUT("wedgeEllipseCallout"),\r
++\r
++ /**\r
++ * Callout Cloud Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("cloudCallout")\r
++ CLOUD_CALLOUT("cloudCallout"),\r
++\r
++ /**\r
++ * Cloud Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("cloud")\r
++ CLOUD("cloud"),\r
++\r
++ /**\r
++ * Ribbon Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("ribbon")\r
++ RIBBON("ribbon"),\r
++\r
++ /**\r
++ * Ribbon 2 Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("ribbon2")\r
++ RIBBON_2("ribbon2"),\r
++\r
++ /**\r
++ * Ellipse Ribbon Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("ellipseRibbon")\r
++ ELLIPSE_RIBBON("ellipseRibbon"),\r
++\r
++ /**\r
++ * Ellipse Ribbon 2 Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("ellipseRibbon2")\r
++ ELLIPSE_RIBBON_2("ellipseRibbon2"),\r
++\r
++ /**\r
++ * Left Right Ribbon Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("leftRightRibbon")\r
++ LEFT_RIGHT_RIBBON("leftRightRibbon"),\r
++\r
++ /**\r
++ * Vertical Scroll Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("verticalScroll")\r
++ VERTICAL_SCROLL("verticalScroll"),\r
++\r
++ /**\r
++ * Horizontal Scroll Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("horizontalScroll")\r
++ HORIZONTAL_SCROLL("horizontalScroll"),\r
++\r
++ /**\r
++ * Wave Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("wave")\r
++ WAVE("wave"),\r
++\r
++ /**\r
++ * Double Wave Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("doubleWave")\r
++ DOUBLE_WAVE("doubleWave"),\r
++\r
++ /**\r
++ * Plus Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("plus")\r
++ PLUS("plus"),\r
++\r
++ /**\r
++ * Process Flow Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("flowChartProcess")\r
++ FLOW_CHART_PROCESS("flowChartProcess"),\r
++\r
++ /**\r
++ * Decision Flow Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("flowChartDecision")\r
++ FLOW_CHART_DECISION("flowChartDecision"),\r
++\r
++ /**\r
++ * Input Output Flow Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("flowChartInputOutput")\r
++ FLOW_CHART_INPUT_OUTPUT("flowChartInputOutput"),\r
++\r
++ /**\r
++ * Predefined Process Flow Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("flowChartPredefinedProcess")\r
++ FLOW_CHART_PREDEFINED_PROCESS("flowChartPredefinedProcess"),\r
++\r
++ /**\r
++ * Internal Storage Flow Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("flowChartInternalStorage")\r
++ FLOW_CHART_INTERNAL_STORAGE("flowChartInternalStorage"),\r
++\r
++ /**\r
++ * Document Flow Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("flowChartDocument")\r
++ FLOW_CHART_DOCUMENT("flowChartDocument"),\r
++\r
++ /**\r
++ * Multi-Document Flow Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("flowChartMultidocument")\r
++ FLOW_CHART_MULTIDOCUMENT("flowChartMultidocument"),\r
++\r
++ /**\r
++ * Terminator Flow Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("flowChartTerminator")\r
++ FLOW_CHART_TERMINATOR("flowChartTerminator"),\r
++\r
++ /**\r
++ * Preparation Flow Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("flowChartPreparation")\r
++ FLOW_CHART_PREPARATION("flowChartPreparation"),\r
++\r
++ /**\r
++ * Manual Input Flow Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("flowChartManualInput")\r
++ FLOW_CHART_MANUAL_INPUT("flowChartManualInput"),\r
++\r
++ /**\r
++ * Manual Operation Flow Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("flowChartManualOperation")\r
++ FLOW_CHART_MANUAL_OPERATION("flowChartManualOperation"),\r
++\r
++ /**\r
++ * Connector Flow Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("flowChartConnector")\r
++ FLOW_CHART_CONNECTOR("flowChartConnector"),\r
++\r
++ /**\r
++ * Punched Card Flow Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("flowChartPunchedCard")\r
++ FLOW_CHART_PUNCHED_CARD("flowChartPunchedCard"),\r
++\r
++ /**\r
++ * Punched Tape Flow Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("flowChartPunchedTape")\r
++ FLOW_CHART_PUNCHED_TAPE("flowChartPunchedTape"),\r
++\r
++ /**\r
++ * Summing Junction Flow Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("flowChartSummingJunction")\r
++ FLOW_CHART_SUMMING_JUNCTION("flowChartSummingJunction"),\r
++\r
++ /**\r
++ * Or Flow Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("flowChartOr")\r
++ FLOW_CHART_OR("flowChartOr"),\r
++\r
++ /**\r
++ * Collate Flow Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("flowChartCollate")\r
++ FLOW_CHART_COLLATE("flowChartCollate"),\r
++\r
++ /**\r
++ * Sort Flow Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("flowChartSort")\r
++ FLOW_CHART_SORT("flowChartSort"),\r
++\r
++ /**\r
++ * Extract Flow Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("flowChartExtract")\r
++ FLOW_CHART_EXTRACT("flowChartExtract"),\r
++\r
++ /**\r
++ * Merge Flow Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("flowChartMerge")\r
++ FLOW_CHART_MERGE("flowChartMerge"),\r
++\r
++ /**\r
++ * Offline Storage Flow Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("flowChartOfflineStorage")\r
++ FLOW_CHART_OFFLINE_STORAGE("flowChartOfflineStorage"),\r
++\r
++ /**\r
++ * Online Storage Flow Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("flowChartOnlineStorage")\r
++ FLOW_CHART_ONLINE_STORAGE("flowChartOnlineStorage"),\r
++\r
++ /**\r
++ * Magnetic Tape Flow Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("flowChartMagneticTape")\r
++ FLOW_CHART_MAGNETIC_TAPE("flowChartMagneticTape"),\r
++\r
++ /**\r
++ * Magnetic Disk Flow Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("flowChartMagneticDisk")\r
++ FLOW_CHART_MAGNETIC_DISK("flowChartMagneticDisk"),\r
++\r
++ /**\r
++ * Magnetic Drum Flow Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("flowChartMagneticDrum")\r
++ FLOW_CHART_MAGNETIC_DRUM("flowChartMagneticDrum"),\r
++\r
++ /**\r
++ * Display Flow Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("flowChartDisplay")\r
++ FLOW_CHART_DISPLAY("flowChartDisplay"),\r
++\r
++ /**\r
++ * Delay Flow Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("flowChartDelay")\r
++ FLOW_CHART_DELAY("flowChartDelay"),\r
++\r
++ /**\r
++ * Alternate Process Flow Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("flowChartAlternateProcess")\r
++ FLOW_CHART_ALTERNATE_PROCESS("flowChartAlternateProcess"),\r
++\r
++ /**\r
++ * Off-Page Connector Flow Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("flowChartOffpageConnector")\r
++ FLOW_CHART_OFFPAGE_CONNECTOR("flowChartOffpageConnector"),\r
++\r
++ /**\r
++ * Blank Button Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("actionButtonBlank")\r
++ ACTION_BUTTON_BLANK("actionButtonBlank"),\r
++\r
++ /**\r
++ * Home Button Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("actionButtonHome")\r
++ ACTION_BUTTON_HOME("actionButtonHome"),\r
++\r
++ /**\r
++ * Help Button Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("actionButtonHelp")\r
++ ACTION_BUTTON_HELP("actionButtonHelp"),\r
++\r
++ /**\r
++ * Information Button Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("actionButtonInformation")\r
++ ACTION_BUTTON_INFORMATION("actionButtonInformation"),\r
++\r
++ /**\r
++ * Forward or Next Button Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("actionButtonForwardNext")\r
++ ACTION_BUTTON_FORWARD_NEXT("actionButtonForwardNext"),\r
++\r
++ /**\r
++ * Back or Previous Button Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("actionButtonBackPrevious")\r
++ ACTION_BUTTON_BACK_PREVIOUS("actionButtonBackPrevious"),\r
++\r
++ /**\r
++ * End Button Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("actionButtonEnd")\r
++ ACTION_BUTTON_END("actionButtonEnd"),\r
++\r
++ /**\r
++ * Beginning Button Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("actionButtonBeginning")\r
++ ACTION_BUTTON_BEGINNING("actionButtonBeginning"),\r
++\r
++ /**\r
++ * Return Button Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("actionButtonReturn")\r
++ ACTION_BUTTON_RETURN("actionButtonReturn"),\r
++\r
++ /**\r
++ * Document Button Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("actionButtonDocument")\r
++ ACTION_BUTTON_DOCUMENT("actionButtonDocument"),\r
++\r
++ /**\r
++ * Sound Button Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("actionButtonSound")\r
++ ACTION_BUTTON_SOUND("actionButtonSound"),\r
++\r
++ /**\r
++ * Movie Button Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("actionButtonMovie")\r
++ ACTION_BUTTON_MOVIE("actionButtonMovie"),\r
++\r
++ /**\r
++ * Gear 6 Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("gear6")\r
++ GEAR_6("gear6"),\r
++\r
++ /**\r
++ * Gear 9 Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("gear9")\r
++ GEAR_9("gear9"),\r
++\r
++ /**\r
++ * Funnel Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("funnel")\r
++ FUNNEL("funnel"),\r
++\r
++ /**\r
++ * Plus Math Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("mathPlus")\r
++ MATH_PLUS("mathPlus"),\r
++\r
++ /**\r
++ * Minus Math Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("mathMinus")\r
++ MATH_MINUS("mathMinus"),\r
++\r
++ /**\r
++ * Multiply Math Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("mathMultiply")\r
++ MATH_MULTIPLY("mathMultiply"),\r
++\r
++ /**\r
++ * Divide Math Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("mathDivide")\r
++ MATH_DIVIDE("mathDivide"),\r
++\r
++ /**\r
++ * Equal Math Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("mathEqual")\r
++ MATH_EQUAL("mathEqual"),\r
++\r
++ /**\r
++ * Not Equal Math Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("mathNotEqual")\r
++ MATH_NOT_EQUAL("mathNotEqual"),\r
++\r
++ /**\r
++ * Corner Tabs Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("cornerTabs")\r
++ CORNER_TABS("cornerTabs"),\r
++\r
++ /**\r
++ * Square Tabs Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("squareTabs")\r
++ SQUARE_TABS("squareTabs"),\r
++\r
++ /**\r
++ * Plaque Tabs Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("plaqueTabs")\r
++ PLAQUE_TABS("plaqueTabs"),\r
++\r
++ /**\r
++ * Chart X Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("chartX")\r
++ CHART_X("chartX"),\r
++\r
++ /**\r
++ * Chart Star Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("chartStar")\r
++ CHART_STAR("chartStar"),\r
++\r
++ /**\r
++ * Chart Plus Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("chartPlus")\r
++ CHART_PLUS("chartPlus");\r
++ private final String value;\r
++\r
++ STShapeType(String v) {\r
++ value = v;\r
++ }\r
++\r
++ public String value() {\r
++ return value;\r
++ }\r
++\r
++ public static STShapeType fromValue(String v) {\r
++ for (STShapeType c: STShapeType.values()) {\r
++ if (c.value.equals(v)) {\r
++ return c;\r
++ }\r
++ }\r
++ throw new IllegalArgumentException(v);\r
++ }\r
++\r
++}\r
--- /dev/null
--- /dev/null
++/* ====================================================================\r
++ Licensed to the Apache Software Foundation (ASF) under one or more\r
++ contributor license agreements. See the NOTICE file distributed with\r
++ this work for additional information regarding copyright ownership.\r
++ The ASF licenses this file to You under the Apache License, Version 2.0\r
++ (the "License"); you may not use this file except in compliance with\r
++ the License. You may obtain a copy of the License at\r
++\r
++ http://www.apache.org/licenses/LICENSE-2.0\r
++\r
++ Unless required by applicable law or agreed to in writing, software\r
++ distributed under the License is distributed on an "AS IS" BASIS,\r
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ See the License for the specific language governing permissions and\r
++ limitations under the License.\r
++==================================================================== */\r
++\r
++package org.apache.poi.sl.draw.binding;\r
++\r
++import javax.xml.bind.annotation.XmlEnum;\r
++import javax.xml.bind.annotation.XmlEnumValue;\r
++import javax.xml.bind.annotation.XmlType;\r
++\r
++\r
++/**\r
++ * <p>Java class for ST_TextShapeType.\r
++ * \r
++ * <p>The following schema fragment specifies the expected content contained within this class.\r
++ * <p>\r
++ * <pre>\r
++ * <simpleType name="ST_TextShapeType">\r
++ * <restriction base="{http://www.w3.org/2001/XMLSchema}token">\r
++ * <enumeration value="textNoShape"/>\r
++ * <enumeration value="textPlain"/>\r
++ * <enumeration value="textStop"/>\r
++ * <enumeration value="textTriangle"/>\r
++ * <enumeration value="textTriangleInverted"/>\r
++ * <enumeration value="textChevron"/>\r
++ * <enumeration value="textChevronInverted"/>\r
++ * <enumeration value="textRingInside"/>\r
++ * <enumeration value="textRingOutside"/>\r
++ * <enumeration value="textArchUp"/>\r
++ * <enumeration value="textArchDown"/>\r
++ * <enumeration value="textCircle"/>\r
++ * <enumeration value="textButton"/>\r
++ * <enumeration value="textArchUpPour"/>\r
++ * <enumeration value="textArchDownPour"/>\r
++ * <enumeration value="textCirclePour"/>\r
++ * <enumeration value="textButtonPour"/>\r
++ * <enumeration value="textCurveUp"/>\r
++ * <enumeration value="textCurveDown"/>\r
++ * <enumeration value="textCanUp"/>\r
++ * <enumeration value="textCanDown"/>\r
++ * <enumeration value="textWave1"/>\r
++ * <enumeration value="textWave2"/>\r
++ * <enumeration value="textDoubleWave1"/>\r
++ * <enumeration value="textWave4"/>\r
++ * <enumeration value="textInflate"/>\r
++ * <enumeration value="textDeflate"/>\r
++ * <enumeration value="textInflateBottom"/>\r
++ * <enumeration value="textDeflateBottom"/>\r
++ * <enumeration value="textInflateTop"/>\r
++ * <enumeration value="textDeflateTop"/>\r
++ * <enumeration value="textDeflateInflate"/>\r
++ * <enumeration value="textDeflateInflateDeflate"/>\r
++ * <enumeration value="textFadeRight"/>\r
++ * <enumeration value="textFadeLeft"/>\r
++ * <enumeration value="textFadeUp"/>\r
++ * <enumeration value="textFadeDown"/>\r
++ * <enumeration value="textSlantUp"/>\r
++ * <enumeration value="textSlantDown"/>\r
++ * <enumeration value="textCascadeUp"/>\r
++ * <enumeration value="textCascadeDown"/>\r
++ * </restriction>\r
++ * </simpleType>\r
++ * </pre>\r
++ * \r
++ */\r
++@XmlType(name = "ST_TextShapeType", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")\r
++@XmlEnum\r
++public enum STTextShapeType {\r
++\r
++\r
++ /**\r
++ * No Text Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("textNoShape")\r
++ TEXT_NO_SHAPE("textNoShape"),\r
++\r
++ /**\r
++ * Plain Text Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("textPlain")\r
++ TEXT_PLAIN("textPlain"),\r
++\r
++ /**\r
++ * Stop Sign Text Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("textStop")\r
++ TEXT_STOP("textStop"),\r
++\r
++ /**\r
++ * Triangle Text Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("textTriangle")\r
++ TEXT_TRIANGLE("textTriangle"),\r
++\r
++ /**\r
++ * Inverted Triangle Text Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("textTriangleInverted")\r
++ TEXT_TRIANGLE_INVERTED("textTriangleInverted"),\r
++\r
++ /**\r
++ * Chevron Text Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("textChevron")\r
++ TEXT_CHEVRON("textChevron"),\r
++\r
++ /**\r
++ * Inverted Chevron Text Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("textChevronInverted")\r
++ TEXT_CHEVRON_INVERTED("textChevronInverted"),\r
++\r
++ /**\r
++ * Inside Ring Text Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("textRingInside")\r
++ TEXT_RING_INSIDE("textRingInside"),\r
++\r
++ /**\r
++ * Outside Ring Text Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("textRingOutside")\r
++ TEXT_RING_OUTSIDE("textRingOutside"),\r
++\r
++ /**\r
++ * Upward Arch Text Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("textArchUp")\r
++ TEXT_ARCH_UP("textArchUp"),\r
++\r
++ /**\r
++ * Downward Arch Text Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("textArchDown")\r
++ TEXT_ARCH_DOWN("textArchDown"),\r
++\r
++ /**\r
++ * Circle Text Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("textCircle")\r
++ TEXT_CIRCLE("textCircle"),\r
++\r
++ /**\r
++ * Button Text Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("textButton")\r
++ TEXT_BUTTON("textButton"),\r
++\r
++ /**\r
++ * Upward Pour Arch Text Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("textArchUpPour")\r
++ TEXT_ARCH_UP_POUR("textArchUpPour"),\r
++\r
++ /**\r
++ * Downward Pour Arch Text Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("textArchDownPour")\r
++ TEXT_ARCH_DOWN_POUR("textArchDownPour"),\r
++\r
++ /**\r
++ * Circle Pour Text Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("textCirclePour")\r
++ TEXT_CIRCLE_POUR("textCirclePour"),\r
++\r
++ /**\r
++ * Button Pour Text Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("textButtonPour")\r
++ TEXT_BUTTON_POUR("textButtonPour"),\r
++\r
++ /**\r
++ * Upward Curve Text Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("textCurveUp")\r
++ TEXT_CURVE_UP("textCurveUp"),\r
++\r
++ /**\r
++ * Downward Curve Text Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("textCurveDown")\r
++ TEXT_CURVE_DOWN("textCurveDown"),\r
++\r
++ /**\r
++ * Upward Can Text Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("textCanUp")\r
++ TEXT_CAN_UP("textCanUp"),\r
++\r
++ /**\r
++ * Downward Can Text Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("textCanDown")\r
++ TEXT_CAN_DOWN("textCanDown"),\r
++\r
++ /**\r
++ * Wave 1 Text Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("textWave1")\r
++ TEXT_WAVE_1("textWave1"),\r
++\r
++ /**\r
++ * Wave 2 Text Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("textWave2")\r
++ TEXT_WAVE_2("textWave2"),\r
++\r
++ /**\r
++ * Double Wave 1 Text Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("textDoubleWave1")\r
++ TEXT_DOUBLE_WAVE_1("textDoubleWave1"),\r
++\r
++ /**\r
++ * Wave 4 Text Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("textWave4")\r
++ TEXT_WAVE_4("textWave4"),\r
++\r
++ /**\r
++ * Inflate Text Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("textInflate")\r
++ TEXT_INFLATE("textInflate"),\r
++\r
++ /**\r
++ * Deflate Text Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("textDeflate")\r
++ TEXT_DEFLATE("textDeflate"),\r
++\r
++ /**\r
++ * Bottom Inflate Text Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("textInflateBottom")\r
++ TEXT_INFLATE_BOTTOM("textInflateBottom"),\r
++\r
++ /**\r
++ * Bottom Deflate Text Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("textDeflateBottom")\r
++ TEXT_DEFLATE_BOTTOM("textDeflateBottom"),\r
++\r
++ /**\r
++ * Top Inflate Text Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("textInflateTop")\r
++ TEXT_INFLATE_TOP("textInflateTop"),\r
++\r
++ /**\r
++ * Top Deflate Text Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("textDeflateTop")\r
++ TEXT_DEFLATE_TOP("textDeflateTop"),\r
++\r
++ /**\r
++ * Deflate-Inflate Text Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("textDeflateInflate")\r
++ TEXT_DEFLATE_INFLATE("textDeflateInflate"),\r
++\r
++ /**\r
++ * Deflate-Inflate-Deflate Text Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("textDeflateInflateDeflate")\r
++ TEXT_DEFLATE_INFLATE_DEFLATE("textDeflateInflateDeflate"),\r
++\r
++ /**\r
++ * Right Fade Text Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("textFadeRight")\r
++ TEXT_FADE_RIGHT("textFadeRight"),\r
++\r
++ /**\r
++ * Left Fade Text Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("textFadeLeft")\r
++ TEXT_FADE_LEFT("textFadeLeft"),\r
++\r
++ /**\r
++ * Upward Fade Text Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("textFadeUp")\r
++ TEXT_FADE_UP("textFadeUp"),\r
++\r
++ /**\r
++ * Downward Fade Text Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("textFadeDown")\r
++ TEXT_FADE_DOWN("textFadeDown"),\r
++\r
++ /**\r
++ * Upward Slant Text Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("textSlantUp")\r
++ TEXT_SLANT_UP("textSlantUp"),\r
++\r
++ /**\r
++ * Downward Slant Text Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("textSlantDown")\r
++ TEXT_SLANT_DOWN("textSlantDown"),\r
++\r
++ /**\r
++ * Upward Cascade Text Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("textCascadeUp")\r
++ TEXT_CASCADE_UP("textCascadeUp"),\r
++\r
++ /**\r
++ * Downward Cascade Text Shape\r
++ * \r
++ */\r
++ @XmlEnumValue("textCascadeDown")\r
++ TEXT_CASCADE_DOWN("textCascadeDown");\r
++ private final String value;\r
++\r
++ STTextShapeType(String v) {\r
++ value = v;\r
++ }\r
++\r
++ public String value() {\r
++ return value;\r
++ }\r
++\r
++ public static STTextShapeType fromValue(String v) {\r
++ for (STTextShapeType c: STTextShapeType.values()) {\r
++ if (c.value.equals(v)) {\r
++ return c;\r
++ }\r
++ }\r
++ throw new IllegalArgumentException(v);\r
++ }\r
++\r
++}\r
--- /dev/null
--- /dev/null
++/*
++ * ====================================================================
++ * 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.sl.draw.geom;
++
++import java.util.regex.Matcher;
++
++/**
++ * Absolute Value Formula
++ *
++ * @author Yegor Kozlov
++ */
++public class AbsExpression implements Expression {
++ private String arg;
++
++ AbsExpression(Matcher m){
++ arg = m.group(1);
++ }
++
++ public double evaluate(Context ctx){
++ double val = ctx.getValue(arg);
++ return Math.abs(val);
++ }
++
++}
--- /dev/null
--- /dev/null
++/*
++ * ====================================================================
++ * 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.sl.draw.geom;
++
++import java.util.regex.Matcher;
++
++/**
++ * Add Divide Formula
++ *
++ * @author Yegor Kozlov
++ */
++public class AddDivideExpression implements Expression {
++ private String arg1, arg2, arg3;
++
++ AddDivideExpression(Matcher m){
++ arg1 = m.group(1);
++ arg2 = m.group(2);
++ arg3 = m.group(3);
++ }
++
++ public double evaluate(Context ctx){
++ double x = ctx.getValue(arg1);
++ double y = ctx.getValue(arg2);
++ double z = ctx.getValue(arg3);
++ return (x + y ) / z;
++ }
++
++}
--- /dev/null
--- /dev/null
++/*
++ * ====================================================================
++ * 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.sl.draw.geom;
++
++import java.util.regex.Matcher;
++
++/**
++ * Add Subtract Formula
++ *
++ * @author Yegor Kozlov
++ */
++public class AddSubtractExpression implements Expression {
++ private String arg1, arg2, arg3;
++
++ AddSubtractExpression(Matcher m){
++ arg1 = m.group(1);
++ arg2 = m.group(2);
++ arg3 = m.group(3);
++ }
++
++ public double evaluate(Context ctx){
++ double x = ctx.getValue(arg1);
++ double y = ctx.getValue(arg2);
++ double z = ctx.getValue(arg3);
++ return (x + y ) - z;
++ }
++
++}
--- /dev/null
--- /dev/null
++/*
++ * ====================================================================
++ * 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.sl.draw.geom;
++
++import org.apache.poi.sl.draw.binding.CTGeomGuide;
++
++/**
++ * Represents a shape adjust values (see section 20.1.9.5 in the spec)
++ *
++ * @author Yegor Kozlov
++ */
++public class AdjustValue extends Guide {
++
++ public AdjustValue(CTGeomGuide gd) {
++ super(gd.getName(), gd.getFmla());
++ }
++
++ @Override
++ public double evaluate(Context ctx){
++ String name = getName();
++ Guide adj = ctx.getAdjustValue(name);
++ if(adj != null) {
++ return adj.evaluate(ctx);
++ }
++ return super.evaluate(ctx);
++ }
++
++}
--- /dev/null
--- /dev/null
++/*
++ * ====================================================================
++ * 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.sl.draw.geom;
++
++import java.util.regex.Matcher;
++
++/**
++ * Date: 10/24/11
++ *
++ * @author Yegor Kozlov
++ */
++public class ArcTanExpression implements Expression {
++ private String arg1, arg2;
++
++ ArcTanExpression(Matcher m){
++ arg1 = m.group(1);
++ arg2 = m.group(2);
++ }
++
++ public double evaluate(Context ctx){
++ double x = ctx.getValue(arg1);
++ double y = ctx.getValue(arg2);
++ return Math.atan(y / x);
++ }
++
++}
--- /dev/null
--- /dev/null
++/*
++ * ====================================================================
++ * 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.sl.draw.geom;
++
++import org.apache.poi.sl.draw.binding.CTPath2DArcTo;
++
++import java.awt.geom.Arc2D;
++import java.awt.geom.GeneralPath;
++import java.awt.geom.Point2D;
++
++/**
++ * ArcTo command within a shape path in DrawingML:
++ *
++ * <arcTo wR="wr" hR="hr" stAng="stAng" swAng="swAng"/>
++ *
++ * Where <code>wr</code> and <code>wh</code> are the height and width radiuses
++ * 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 <code>start</code> angle and <code></>swAng</code> is the swing angle
++ *
++ * @author Yegor Kozlov
++ */
++public class ArcToCommand implements PathCommand {
++ private String hr, wr, stAng, swAng;
++
++ ArcToCommand(CTPath2DArcTo arc){
++ hr = arc.getHR().toString();
++ wr = arc.getWR().toString();
++ stAng = arc.getStAng().toString();
++ swAng = arc.getSwAng().toString();
++ }
++
++ public void execute(GeneralPath path, Context ctx){
++ double rx = ctx.getValue(wr);
++ double ry = ctx.getValue(hr);
++ double start = ctx.getValue(stAng) / 60000;
++ double extent = ctx.getValue(swAng) / 60000;
++ Point2D pt = path.getCurrentPoint();
++ double x0 = pt.getX() - rx - rx * Math.cos(Math.toRadians(start));
++ double y0 = pt.getY() - ry - ry * Math.sin(Math.toRadians(start));
++
++ Arc2D arc = new Arc2D.Double(
++ x0,
++ y0,
++ 2 * rx, 2 * ry,
++ -start, -extent,
++ Arc2D.OPEN);
++ path.append(arc, true);
++ }
++}
--- /dev/null
--- /dev/null
++/*
++ * ====================================================================
++ * 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.sl.draw.geom;
++
++import java.awt.geom.GeneralPath;
++
++/**
++ * Date: 10/25/11
++ *
++ * @author Yegor Kozlov
++ */
++public class ClosePathCommand implements PathCommand {
++
++ ClosePathCommand(){
++ }
++
++ public void execute(GeneralPath path, Context ctx){
++ path.closePath();
++ }
++}
--- /dev/null
--- /dev/null
++/*
++ * ====================================================================
++ * 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.sl.draw.geom;
++
++import java.awt.geom.Rectangle2D;
++import java.util.HashMap;
++import java.util.Map;
++
++/**
++ * Date: 10/24/11
++ *
++ * @author Yegor Kozlov
++ */
++public class Context {
++ final Map<String, Double> _ctx = new HashMap<String, Double>();
++ final IAdjustableShape _props;
++ final Rectangle2D _anchor;
++
++ public Context(CustomGeometry geom, Rectangle2D anchor, IAdjustableShape props){
++ _props = props;
++ _anchor = anchor;
++ for(Guide gd : geom.adjusts) evaluate(gd);
++ for(Guide gd : geom.guides) evaluate(gd);
++ }
++
++ public Rectangle2D getShapeAnchor(){
++ return _anchor;
++ }
++
++ public Guide getAdjustValue(String name){
++ return _props.getAdjustValue(name);
++ }
++
++ public double getValue(String key){
++ if(key.matches("(\\+|-)?\\d+")){
++ return Double.parseDouble(key);
++ }
++
++ Formula builtIn = Formula.builtInFormulas.get(key);
++ if(builtIn != null){
++ return builtIn.evaluate(this);
++ }
++
++ if(!_ctx.containsKey(key)) {
++ throw new RuntimeException("undefined variable: " + key);
++ }
++
++ return _ctx.get(key);
++ }
++
++ public double evaluate(Formula fmla){
++ double result = fmla.evaluate(this);
++ String key = fmla.getName();
++ if(key != null) _ctx.put(key, result);
++ return result;
++ }
++}
--- /dev/null
--- /dev/null
++/*
++ * ====================================================================
++ * 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.sl.draw.geom;
++
++import java.util.regex.Matcher;
++
++/**
++ * Date: 10/24/11
++ *
++ * @author Yegor Kozlov
++ */
++public class CosExpression implements Expression {
++ private String arg1, arg2;
++
++ CosExpression(Matcher m){
++ arg1 = m.group(1);
++ arg2 = m.group(2);
++ }
++
++ public double evaluate(Context ctx){
++ double x = ctx.getValue(arg1);
++ double y = ctx.getValue(arg2)/ 60000;
++ return x * Math.cos(Math.toRadians(y));
++ }
++
++}
--- /dev/null
--- /dev/null
++/*
++ * ====================================================================
++ * 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.sl.draw.geom;
++
++import java.util.regex.Matcher;
++
++/**
++ * Date: 10/24/11
++ *
++ * @author Yegor Kozlov
++ */
++public class CosineArcTanExpression implements Expression {
++ private String arg1, arg2, arg3;
++
++ CosineArcTanExpression(Matcher m){
++ arg1 = m.group(1);
++ arg2 = m.group(2);
++ arg3 = m.group(3);
++ }
++
++ public double evaluate(Context ctx){
++ double x = ctx.getValue(arg1);
++ double y = ctx.getValue(arg2);
++ double z = ctx.getValue(arg3);
++ return x*Math.cos(Math.atan(z / y));
++ }
++
++}
--- /dev/null
--- /dev/null
++/*
++ * ====================================================================
++ * 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.sl.draw.geom;
++
++import org.apache.poi.sl.draw.binding.CTAdjPoint2D;
++
++import java.awt.geom.GeneralPath;
++
++/**
++ * Date: 10/25/11
++ *
++ * @author Yegor Kozlov
++ */
++public class CurveToCommand implements PathCommand {
++ private String arg1, arg2, arg3, arg4, arg5, arg6;
++
++ CurveToCommand(CTAdjPoint2D pt1, CTAdjPoint2D pt2, CTAdjPoint2D pt3){
++ arg1 = pt1.getX().toString();
++ arg2 = pt1.getY().toString();
++ arg3 = pt2.getX().toString();
++ arg4 = pt2.getY().toString();
++ arg5 = pt3.getX().toString();
++ arg6 = pt3.getY().toString();
++ }
++
++ public void execute(GeneralPath path, Context ctx){
++ double x1 = ctx.getValue(arg1);
++ double y1 = ctx.getValue(arg2);
++ double x2 = ctx.getValue(arg3);
++ double y2 = ctx.getValue(arg4);
++ double x3 = ctx.getValue(arg5);
++ double y3 = ctx.getValue(arg6);
++ path.curveTo((float)x1, (float)y1, (float)x2, (float)y2, (float)x3, (float)y3);
++ }
++}
--- /dev/null
--- /dev/null
++/*
++ * ====================================================================
++ * 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.sl.draw.geom;
++
++import java.util.*;
++
++import org.apache.poi.sl.draw.binding.*;
++
++/**
++ * Definition of a custom geometric shape
++ *
++ * @author Yegor Kozlov
++ */
++public class CustomGeometry implements Iterable<Path>{
++ List<Guide> adjusts = new ArrayList<Guide>();
++ List<Guide> guides = new ArrayList<Guide>();
++ List<Path> paths = new ArrayList<Path>();
++ Path textBounds;
++
++ public CustomGeometry(CTCustomGeometry2D geom) {
++ CTGeomGuideList avLst = geom.getAvLst();
++ if(avLst != null) {
++ for(CTGeomGuide gd : avLst.getGd()){
++ adjusts.add(new AdjustValue(gd));
++ }
++ }
++
++ CTGeomGuideList gdLst = geom.getGdLst();
++ if(gdLst != null) {
++ for(CTGeomGuide gd : gdLst.getGd()){
++ guides.add(new Guide(gd));
++ }
++ }
++
++ CTPath2DList pathLst = geom.getPathLst();
++ if(pathLst != null) {
++ for(CTPath2D spPath : pathLst.getPath()){
++ paths.add(new Path(spPath));
++ }
++ }
++
++ CTGeomRect rect = geom.getRect();
++ if(rect != null) {
++ textBounds = new Path();
++ textBounds.addCommand(
++ new MoveToCommand(rect.getL().toString(), rect.getT().toString()));
++ textBounds.addCommand(
++ new LineToCommand(rect.getR().toString(), rect.getT().toString()));
++ textBounds.addCommand(
++ new LineToCommand(rect.getR().toString(), rect.getB().toString()));
++ textBounds.addCommand(
++ new LineToCommand(rect.getL().toString(), rect.getB().toString()));
++ textBounds.addCommand(
++ new ClosePathCommand());
++ }
++ }
++
++ public Iterator<Path> iterator() {
++ return paths.iterator();
++ }
++
++ public Path getTextBounds(){
++ return textBounds;
++ }
++}
--- /dev/null
--- /dev/null
++/*
++ * ====================================================================
++ * 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.sl.draw.geom;
++
++/**
++ * Date: 10/24/11
++ *
++ * @author Yegor Kozlov
++ */
++public interface Expression {
++
++ double evaluate(Context ctx);
++
++}
--- /dev/null
--- /dev/null
++/*
++ * ====================================================================
++ * 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.sl.draw.geom;
++
++import java.util.HashMap;
++import java.util.regex.Matcher;
++import java.util.regex.Pattern;
++
++/**
++ * A simple regexp-based parser of shape guide formulas in DrawingML
++ *
++ * @author Yegor Kozlov
++ */
++public class ExpressionParser {
++ static final HashMap<String, Class> impls = new HashMap<String, Class>();
++ static {
++ impls.put("\\*/ +([\\-\\w]+) +([\\-\\w]+) +([\\-\\w]+)", MultiplyDivideExpression.class);
++ impls.put("\\+- +([\\-\\w]+) +([\\-\\w]+) +([\\-\\w]+)( 0)?", AddSubtractExpression.class);
++ impls.put("\\+/ +([\\-\\w]+) +([\\-\\w]+) +([\\-\\w]+)", AddDivideExpression.class);
++ impls.put("\\?: +([\\-\\w]+) +([\\-\\w]+) +([\\-\\w]+)", IfElseExpression.class);
++ impls.put("val +([\\-\\w]+)", LiteralValueExpression.class);
++ impls.put("abs +([\\-\\w]+)", AbsExpression.class);
++ impls.put("sqrt +([\\-\\w]+)", SqrtExpression.class);
++ impls.put("max +([\\-\\w]+) +([\\-\\w]+)", MaxExpression.class);
++ impls.put("min +([\\-\\w]+) +([\\-\\w]+)", MinExpression.class);
++ impls.put("at2 +([\\-\\w]+) +([\\-\\w]+)", ArcTanExpression.class);
++ impls.put("sin +([\\-\\w]+) +([\\-\\w]+)", SinExpression.class);
++ impls.put("cos +([\\-\\w]+) +([\\-\\w]+)", CosExpression.class);
++ impls.put("tan +([\\-\\w]+) +([\\-\\w]+)", TanExpression.class);
++ impls.put("cat2 +([\\-\\w]+) +([\\-\\w]+) +([\\-\\w]+)", CosineArcTanExpression.class);
++ impls.put("sat2 +([\\-\\w]+) +([\\-\\w]+) +([\\-\\w]+)", SinArcTanExpression.class);
++ impls.put("pin +([\\-\\w]+) +([\\-\\w]+) +([\\-\\w]+)", PinExpression.class);
++ impls.put("mod +([\\-\\w]+) +([\\-\\w]+) +([\\-\\w]+)", ModExpression.class);
++
++ }
++
++ public static Expression parse(String str){
++ for(String regexp : impls.keySet()) {
++ Pattern ptrn = Pattern.compile(regexp);
++ Matcher m = ptrn.matcher(str);
++ if(m.matches()) {
++ Class c = impls.get(regexp);
++ try {
++ return (Expression)c.getDeclaredConstructor(Matcher.class).newInstance(m);
++ } catch (Exception e){
++ throw new RuntimeException(e);
++ }
++ }
++ }
++ throw new RuntimeException("Unsupported formula: " + str);
++ }
++}
--- /dev/null
--- /dev/null
++/*
++ * ====================================================================
++ * 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.sl.draw.geom;
++
++import java.awt.geom.Rectangle2D;
++import java.util.HashMap;
++import java.util.Map;
++
++/**
++ * A guide formula in DrawingML.
++ * This is a base class for adjust values, geometric guides and bilt-in guides
++ *
++ * @author Yegor Kozlov
++ */
++public abstract class Formula {
++
++ String getName(){
++ return null;
++ }
++
++ abstract double evaluate(Context ctx);
++
++ static Map<String, Formula> builtInFormulas = new HashMap<String, Formula>();
++ static {
++ // 3 x 360 / 4 = 270
++ builtInFormulas.put("3cd4", new Formula(){
++ @Override
++ double evaluate(Context ctx){
++ return 270 * 60000;
++ }
++
++ });
++
++ // 3 x 360 / 8 = 135
++ builtInFormulas.put("3cd8", new Formula(){
++ @Override
++ double evaluate(Context ctx){
++ return 135 * 60000;
++ }
++
++ });
++
++ // 5 x 360 / 8 = 225
++ builtInFormulas.put("5cd8", new Formula(){
++ @Override
++ double evaluate(Context ctx){
++ return 270 * 60000;
++ }
++
++ });
++
++ // 7 x 360 / 8 = 315
++ builtInFormulas.put("7cd8", new Formula(){
++ @Override
++ double evaluate(Context ctx){
++ return 270 * 60000;
++ }
++
++ });
++
++ // bottom
++ builtInFormulas.put("b", new Formula(){
++ @Override
++ double evaluate(Context ctx){
++ Rectangle2D anchor = ctx.getShapeAnchor();
++ return anchor.getY() + anchor.getHeight();
++ }
++
++ });
++
++ // 360 / 2 = 180
++ builtInFormulas.put("cd2", new Formula(){
++ @Override
++ double evaluate(Context ctx){
++ return 180 * 60000;
++ }
++
++ });
++
++ // 360 / 4 = 90
++ builtInFormulas.put("cd4", new Formula(){
++ @Override
++ double evaluate(Context ctx){
++ return 90 * 60000;
++ }
++
++ });
++
++ // 360 / 8 = 45
++ builtInFormulas.put("cd8", new Formula(){
++ @Override
++ double evaluate(Context ctx){
++ return 45 * 60000;
++ }
++
++ });
++
++ // horizontal center
++ builtInFormulas.put("hc", new Formula(){
++ @Override
++ double evaluate(Context ctx){
++ Rectangle2D anchor = ctx.getShapeAnchor();
++ return anchor.getX() + anchor.getWidth()/2;
++ }
++
++ });
++
++ // height
++ builtInFormulas.put("h", new Formula(){
++ @Override
++ double evaluate(Context ctx){
++ Rectangle2D anchor = ctx.getShapeAnchor();
++ return anchor.getHeight();
++ }
++
++ });
++
++ // height / 2
++ builtInFormulas.put("hd2", new Formula(){
++ @Override
++ double evaluate(Context ctx){
++ Rectangle2D anchor = ctx.getShapeAnchor();
++ return anchor.getHeight()/2;
++ }
++
++ });
++
++ // height / 3
++ builtInFormulas.put("hd3", new Formula(){
++ @Override
++ double evaluate(Context ctx){
++ Rectangle2D anchor = ctx.getShapeAnchor();
++ return anchor.getHeight()/3;
++ }
++
++ });
++
++ // height / 4
++ builtInFormulas.put("hd4", new Formula(){
++ @Override
++ double evaluate(Context ctx){
++ Rectangle2D anchor = ctx.getShapeAnchor();
++ return anchor.getHeight()/4;
++ }
++
++ });
++
++ // height / 5
++ builtInFormulas.put("hd5", new Formula(){
++ @Override
++ double evaluate(Context ctx){
++ Rectangle2D anchor = ctx.getShapeAnchor();
++ return anchor.getHeight()/5;
++ }
++
++ });
++
++ // height / 6
++ builtInFormulas.put("hd6", new Formula(){
++ @Override
++ double evaluate(Context ctx){
++ Rectangle2D anchor = ctx.getShapeAnchor();
++ return anchor.getHeight()/6;
++ }
++
++ });
++
++ // height / 8
++ builtInFormulas.put("hd8", new Formula(){
++ @Override
++ double evaluate(Context ctx){
++ Rectangle2D anchor = ctx.getShapeAnchor();
++ return anchor.getHeight()/8;
++ }
++
++ });
++
++ // left
++ builtInFormulas.put("l", new Formula(){
++ @Override
++ double evaluate(Context ctx){
++ Rectangle2D anchor = ctx.getShapeAnchor();
++ return anchor.getX();
++ }
++
++ });
++
++ // long side
++ builtInFormulas.put("ls", new Formula(){
++ @Override
++ double evaluate(Context ctx){
++ Rectangle2D anchor = ctx.getShapeAnchor();
++ return Math.max(anchor.getWidth(), anchor.getHeight());
++ }
++
++ });
++
++ // right
++ builtInFormulas.put("r", new Formula(){
++ @Override
++ double evaluate(Context ctx){
++ Rectangle2D anchor = ctx.getShapeAnchor();
++ return anchor.getX() + anchor.getWidth();
++ }
++
++ });
++
++ // short side
++ builtInFormulas.put("ss", new Formula(){
++ @Override
++ double evaluate(Context ctx){
++ Rectangle2D anchor = ctx.getShapeAnchor();
++ return Math.min(anchor.getWidth(), anchor.getHeight());
++ }
++
++ });
++
++ // short side / 2
++ builtInFormulas.put("ssd2", new Formula(){
++ @Override
++ double evaluate(Context ctx){
++ Rectangle2D anchor = ctx.getShapeAnchor();
++ double ss = Math.min(anchor.getWidth(), anchor.getHeight());
++ return ss / 2;
++ }
++ });
++
++ // short side / 4
++ builtInFormulas.put("ssd4", new Formula(){
++ @Override
++ double evaluate(Context ctx){
++ Rectangle2D anchor = ctx.getShapeAnchor();
++ double ss = Math.min(anchor.getWidth(), anchor.getHeight());
++ return ss / 4;
++ }
++ });
++
++ // short side / 6
++ builtInFormulas.put("ssd6", new Formula(){
++ @Override
++ double evaluate(Context ctx){
++ Rectangle2D anchor = ctx.getShapeAnchor();
++ double ss = Math.min(anchor.getWidth(), anchor.getHeight());
++ return ss / 6;
++ }
++ });
++
++ // short side / 8
++ builtInFormulas.put("ssd8", new Formula(){
++ @Override
++ double evaluate(Context ctx){
++ Rectangle2D anchor = ctx.getShapeAnchor();
++ double ss = Math.min(anchor.getWidth(), anchor.getHeight());
++ return ss / 8;
++ }
++ });
++
++ // short side / 16
++ builtInFormulas.put("ssd16", new Formula(){
++ @Override
++ double evaluate(Context ctx){
++ Rectangle2D anchor = ctx.getShapeAnchor();
++ double ss = Math.min(anchor.getWidth(), anchor.getHeight());
++ return ss / 16;
++ }
++ });
++
++ // short side / 32
++ builtInFormulas.put("ssd32", new Formula(){
++ @Override
++ double evaluate(Context ctx){
++ Rectangle2D anchor = ctx.getShapeAnchor();
++ double ss = Math.min(anchor.getWidth(), anchor.getHeight());
++ return ss / 32;
++ }
++ });
++
++ // top
++ builtInFormulas.put("t", new Formula(){
++ @Override
++ double evaluate(Context ctx){
++ return ctx.getShapeAnchor().getY();
++ }
++ });
++
++ // vertical center
++ builtInFormulas.put("vc", new Formula(){
++ @Override
++ double evaluate(Context ctx){
++ Rectangle2D anchor = ctx.getShapeAnchor();
++ return anchor.getY() + anchor.getHeight()/2;
++ }
++ });
++
++ // width
++ builtInFormulas.put("w", new Formula(){
++ @Override
++ double evaluate(Context ctx){
++ return ctx.getShapeAnchor().getWidth();
++ }
++ });
++
++ // width / 2
++ builtInFormulas.put("wd2", new Formula(){
++ @Override
++ double evaluate(Context ctx){
++ return ctx.getShapeAnchor().getWidth()/2;
++ }
++ });
++
++ // width / 3
++ builtInFormulas.put("wd3", new Formula(){
++ @Override
++ double evaluate(Context ctx){
++ return ctx.getShapeAnchor().getWidth()/3;
++ }
++ });
++
++ // width / 4
++ builtInFormulas.put("wd4", new Formula(){
++ @Override
++ double evaluate(Context ctx){
++ return ctx.getShapeAnchor().getWidth()/4;
++ }
++ });
++
++ // width / 5
++ builtInFormulas.put("wd5", new Formula(){
++ @Override
++ double evaluate(Context ctx){
++ return ctx.getShapeAnchor().getWidth()/5;
++ }
++ });
++
++ // width / 6
++ builtInFormulas.put("wd6", new Formula(){
++ @Override
++ double evaluate(Context ctx){
++ return ctx.getShapeAnchor().getWidth()/6;
++ }
++ });
++
++ // width / 8
++ builtInFormulas.put("wd8", new Formula(){
++ @Override
++ double evaluate(Context ctx){
++ return ctx.getShapeAnchor().getWidth()/8;
++ }
++ });
++
++ // width / 10
++ builtInFormulas.put("wd10", new Formula(){
++ @Override
++ double evaluate(Context ctx){
++ return ctx.getShapeAnchor().getWidth()/10;
++ }
++ });
++
++ // width / 32
++ builtInFormulas.put("wd32", new Formula(){
++ @Override
++ double evaluate(Context ctx){
++ return ctx.getShapeAnchor().getWidth()/32;
++ }
++ });
++ }
++
++}
--- /dev/null
--- /dev/null
++/*
++ * ====================================================================
++ * 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.sl.draw.geom;
++
++import org.apache.poi.sl.draw.binding.CTGeomGuide;
++
++/**
++ * Date: 10/24/11
++ *
++ * @author Yegor Kozlov
++ */
++public class Guide extends Formula {
++ private String name, fmla;
++ private Expression expr;
++
++ public Guide(CTGeomGuide gd) {
++ this(gd.getName(), gd.getFmla());
++ }
++
++ public Guide(String nm, String fm){
++ name = nm;
++ fmla = fm;
++ expr = ExpressionParser.parse(fm);
++ }
++
++
++ String getName(){
++ return name;
++ }
++
++ String getFormula(){
++ return fmla;
++ }
++
++ @Override
++ public double evaluate(Context ctx){
++ return expr.evaluate(ctx);
++ }
++
++
++}
--- /dev/null
--- /dev/null
++/*
++ * ====================================================================
++ * 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.sl.draw.geom;
++
++
++/**
++ * A bridge to the consumer application.
++ *
++ * To get a shape geometry one needs to pass shape bounds and adjust values.
++ *
++ * @author Yegor Kozlov
++ */
++public interface IAdjustableShape {
++ /**
++ *
++ * @param name name of a adjust value, e.g. adj1
++ * @return adjust guide defined in the shape or null
++ */
++ Guide getAdjustValue(String name);
++}
--- /dev/null
--- /dev/null
++/*
++ * ====================================================================
++ * 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.sl.draw.geom;
++
++import java.util.regex.Matcher;
++
++/**
++ * If Else Formula:
++ * <p>
++ * Arguments: 3 (fmla="?: x y z")
++ * Usage: "?: x y z" = if (x > 0), then y = value of this guide,
++ * else z = value of this guide
++ * </p>
++ *
++ * @author Yegor Kozlov
++ */
++public class IfElseExpression implements Expression {
++ private String arg1, arg2, arg3;
++
++ IfElseExpression(Matcher m){
++ arg1 = m.group(1);
++ arg2 = m.group(2);
++ arg3 = m.group(3);
++ }
++
++ public double evaluate(Context ctx){
++ double x = ctx.getValue(arg1);
++ double y = ctx.getValue(arg2);
++ double z = ctx.getValue(arg3);
++ return x > 0 ? y : z;
++ }
++
++}
--- /dev/null
--- /dev/null
++/*
++ * ====================================================================
++ * 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.sl.draw.geom;
++
++import org.apache.poi.sl.draw.binding.CTAdjPoint2D;
++
++import java.awt.geom.GeneralPath;
++
++/**
++ * Date: 10/25/11
++ *
++ * @author Yegor Kozlov
++ */
++public class LineToCommand implements PathCommand {
++ private String arg1, arg2;
++
++ LineToCommand(CTAdjPoint2D pt){
++ arg1 = pt.getX().toString();
++ arg2 = pt.getY().toString();
++ }
++
++ LineToCommand(String s1, String s2){
++ arg1 = s1;
++ arg2 = s2;
++ }
++
++ public void execute(GeneralPath path, Context ctx){
++ double x = ctx.getValue(arg1);
++ double y = ctx.getValue(arg2);
++ path.lineTo((float)x, (float)y);
++ }
++}
--- /dev/null
--- /dev/null
++/*
++ * ====================================================================
++ * 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.sl.draw.geom;
++
++import java.util.regex.Matcher;
++
++/**
++ * Date: 10/24/11
++ *
++ * @author Yegor Kozlov
++ */
++public class LiteralValueExpression implements Expression {
++ private String arg;
++
++ LiteralValueExpression(Matcher m){
++ arg = m.group(1);
++ }
++
++ public double evaluate(Context ctx){
++ return ctx.getValue(arg);
++ }
++
++}
--- /dev/null
--- /dev/null
++/*
++ * ====================================================================
++ * 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.sl.draw.geom;
++
++import java.util.regex.Matcher;
++
++/**
++ * Maximum Value Formula
++ *
++ * @author Yegor Kozlov
++ */
++public class MaxExpression implements Expression {
++ private String arg1, arg2;
++
++ MaxExpression(Matcher m){
++ arg1 = m.group(1);
++ arg2 = m.group(2);
++ }
++
++ public double evaluate(Context ctx){
++ double x = ctx.getValue(arg1);
++ double y = ctx.getValue(arg2);
++ return Math.max(x, y);
++ }
++
++}
--- /dev/null
--- /dev/null
++/*
++ * ====================================================================
++ * 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.sl.draw.geom;
++
++import java.util.regex.Matcher;
++
++/**
++ * Minimum Value Formula
++ *
++ * @author Yegor Kozlov
++ */
++public class MinExpression implements Expression {
++ private String arg1, arg2;
++
++ MinExpression(Matcher m){
++ arg1 = m.group(1);
++ arg2 = m.group(2);
++ }
++
++ public double evaluate(Context ctx){
++ double x = ctx.getValue(arg1);
++ double y = ctx.getValue(arg2);
++ return Math.min(x, y);
++ }
++
++}
--- /dev/null
--- /dev/null
++/*
++ * ====================================================================
++ * 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.sl.draw.geom;
++
++import java.util.regex.Matcher;
++
++/**
++ * Modulo Formula:
++ * <p>
++ * Arguments: 3 (fmla="mod x y z")
++ * Usage: "mod x y z" = sqrt(x^2 + b^2 + c^2) = value of this guide
++ * </p>
++ *
++ * @author Yegor Kozlov
++ */
++public class ModExpression implements Expression {
++ private String arg1, arg2, arg3;
++
++ ModExpression(Matcher m){
++ arg1 = m.group(1);
++ arg2 = m.group(2);
++ arg3 = m.group(3);
++ }
++
++ public double evaluate(Context ctx){
++ double x = ctx.getValue(arg1);
++ double y = ctx.getValue(arg2);
++ double z = ctx.getValue(arg3);
++ return Math.sqrt(x*x + y*y + z*z);
++ }
++
++}
--- /dev/null
--- /dev/null
++/*
++ * ====================================================================
++ * 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.sl.draw.geom;
++
++import org.apache.poi.sl.draw.binding.CTAdjPoint2D;
++
++import java.awt.geom.GeneralPath;
++
++/**
++ * Date: 10/25/11
++ *
++ * @author Yegor Kozlov
++ */
++public class MoveToCommand implements PathCommand {
++ private String arg1, arg2;
++
++ MoveToCommand(CTAdjPoint2D pt){
++ arg1 = pt.getX().toString();
++ arg2 = pt.getY().toString();
++ }
++
++ MoveToCommand(String s1, String s2){
++ arg1 = s1;
++ arg2 = s2;
++ }
++
++ public void execute(GeneralPath path, Context ctx){
++ double x = ctx.getValue(arg1);
++ double y = ctx.getValue(arg2);
++ path.moveTo((float)x, (float)y);
++ }
++}
--- /dev/null
--- /dev/null
++/*
++ * ====================================================================
++ * 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.sl.draw.geom;
++
++import java.util.regex.Matcher;
++
++/**
++ * Multiply Divide Formula
++ *
++ * @author Yegor Kozlov
++ */
++public class MultiplyDivideExpression implements Expression {
++ private String arg1, arg2, arg3;
++
++ MultiplyDivideExpression(Matcher m){
++ arg1 = m.group(1);
++ arg2 = m.group(2);
++ arg3 = m.group(3);
++ }
++
++ public double evaluate(Context ctx){
++ double x = ctx.getValue(arg1);
++ double y = ctx.getValue(arg2);
++ double z = ctx.getValue(arg3);
++ return (x * y ) / z;
++ }
++
++}
--- /dev/null
--- /dev/null
++/*
++ * ====================================================================
++ * 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.sl.draw.geom;
++
++import java.awt.Shape;
++
++/**
++* Date: 11/6/11
++*
++* @author Yegor Kozlov
++*/
++public class Outline {
++ private Shape shape;
++ private Path path;
++
++ public Outline(Shape shape, Path path){
++ this.shape = shape;
++ this.path = path;
++ }
++
++ public Path getPath(){
++ return path;
++ }
++
++ public Shape getOutline(){
++ return shape;
++ }
++}
--- /dev/null
--- /dev/null
++/*
++ * ====================================================================
++ * 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.sl.draw.geom;
++
++import java.awt.geom.GeneralPath;
++import java.util.ArrayList;
++import java.util.List;
++
++import org.apache.poi.sl.draw.binding.*;
++
++/**
++ * Specifies a creation path consisting of a series of moves, lines and curves
++ * that when combined forms a geometric shape
++ *
++ * @author Yegor Kozlov
++ */
++public class Path {
++ private final List<PathCommand> commands;
++ boolean _fill, _stroke;
++ long _w, _h;
++
++ public Path(){
++ this(true, true);
++ }
++
++ public Path(boolean fill, boolean stroke){
++ commands = new ArrayList<PathCommand>();
++ _w = -1;
++ _h = -1;
++ _fill = fill;
++ _stroke = stroke;
++ }
++
++ public Path(CTPath2D spPath){
++ _fill = spPath.getFill() != STPathFillMode.NONE;
++ _stroke = spPath.isStroke();
++ _w = spPath.isSetW() ? spPath.getW() : -1;
++ _h = spPath.isSetH() ? spPath.getH() : -1;
++
++ commands = new ArrayList<PathCommand>();
++
++ for(Object ch : spPath.getCloseOrMoveToOrLnTo()){
++ if(ch instanceof CTPath2DMoveTo){
++ CTAdjPoint2D pt = ((CTPath2DMoveTo)ch).getPt();
++ commands.add(new MoveToCommand(pt));
++ } else if (ch instanceof CTPath2DLineTo){
++ CTAdjPoint2D pt = ((CTPath2DLineTo)ch).getPt();
++ commands.add(new LineToCommand(pt));
++ } else if (ch instanceof CTPath2DArcTo){
++ CTPath2DArcTo arc = (CTPath2DArcTo)ch;
++ commands.add(new ArcToCommand(arc));
++ } else if (ch instanceof CTPath2DQuadBezierTo){
++ CTPath2DQuadBezierTo bez = ((CTPath2DQuadBezierTo)ch);
++ CTAdjPoint2D pt1 = bez.getPt().get(0);
++ CTAdjPoint2D pt2 = bez.getPt().get(1);
++ commands.add(new QuadToCommand(pt1, pt2));
++ } else if (ch instanceof CTPath2DCubicBezierTo){
++ CTPath2DCubicBezierTo bez = ((CTPath2DCubicBezierTo)ch);
++ CTAdjPoint2D pt1 = bez.getPt().get(0);
++ CTAdjPoint2D pt2 = bez.getPt().get(1);
++ CTAdjPoint2D pt3 = bez.getPt().get(2);
++ commands.add(new CurveToCommand(pt1, pt2, pt3));
++ } else if (ch instanceof CTPath2DClose){
++ commands.add(new ClosePathCommand());
++ } else {
++ throw new IllegalStateException("Unsupported path segment: " + ch);
++ }
++ }
++ }
++
++ public void addCommand(PathCommand cmd){
++ commands.add(cmd);
++ }
++
++ /**
++ * Convert the internal represenation to java.awt.GeneralPath
++ */
++ public GeneralPath getPath(Context ctx) {
++ GeneralPath path = new GeneralPath();
++ for(PathCommand cmd : commands)
++ cmd.execute(path, ctx);
++ return path;
++ }
++
++ public boolean isStroked(){
++ return _stroke;
++ }
++
++ public boolean isFilled(){
++ return _fill;
++ }
++
++ public long getW(){
++ return _w;
++ }
++
++ public long getH(){
++ return _h;
++ }
++}
--- /dev/null
--- /dev/null
++/*
++ * ====================================================================
++ * 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.sl.draw.geom;
++
++import java.awt.geom.GeneralPath;
++
++/**
++ * A path command in DrawingML. One of:
++ *
++ * - arcTo
++ * - moveTo
++ * - lineTo
++ * - cubicBezTo
++ * - quadBezTo
++ * - close
++ *
++ *
++ * @author Yegor Kozlov
++ */
++public interface PathCommand {
++ /**
++ * Execute the command an append a segment to the specified path
++ *
++ * @param path the path to append the result to
++ * @param ctx the context to lookup variables
++ */
++ void execute(GeneralPath path, Context ctx);
++}
--- /dev/null
--- /dev/null
++/*
++ * ====================================================================
++ * 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.sl.draw.geom;
++
++import java.util.regex.Matcher;
++
++/**
++ * Pin To Formula:
++ * <gd name="enAng" fmla="pin 0 adj2 21599999"/>
++ *
++ * <p>
++ * Usage: "pin x y z" = if (y < x), then x = value of this guide
++ * else if (y > z), then z = value of this guide
++ * else y = value of this guide
++ * </p>
++ *
++ * @author Yegor Kozlov
++ */
++public class PinExpression implements Expression {
++ private String arg1, arg2, arg3;
++
++ PinExpression(Matcher m){
++ arg1 = m.group(1);
++ arg2 = m.group(2);
++ arg3 = m.group(3);
++ }
++
++ public double evaluate(Context ctx){
++ double x = ctx.getValue(arg1);
++ double y = ctx.getValue(arg2);
++ double z = ctx.getValue(arg3);
++ if(y < x) return x;
++ else if (y > z) return z;
++ else return y;
++ }
++
++}
--- /dev/null
--- /dev/null
++/*
++ * ====================================================================
++ * 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.sl.draw.geom;
++
++import java.io.InputStream;
++import java.util.LinkedHashMap;
++
++import javax.xml.bind.*;
++import javax.xml.stream.*;
++import javax.xml.stream.events.StartElement;
++import javax.xml.stream.events.XMLEvent;
++
++import org.apache.poi.sl.draw.binding.CTCustomGeometry2D;
++import org.apache.poi.util.POILogFactory;
++import org.apache.poi.util.POILogger;
++
++/**
++ *
++ */
++public class PresetGeometries extends LinkedHashMap<String, CustomGeometry> {
++ private final static POILogger LOG = POILogFactory.getLogger(PresetGeometries.class);
++ protected final static String BINDING_PACKAGE = "org.apache.poi.sl.draw.binding";
++
++ protected static PresetGeometries _inst;
++
++ protected PresetGeometries(){}
++
++ @SuppressWarnings("unused")
++ public void init(InputStream is) throws XMLStreamException, JAXBException {
++ // Reader xml = new InputStreamReader( is, Charset.forName("UTF-8") );
++
++
++ // StAX:
++ EventFilter startElementFilter = new EventFilter() {
++ @Override
++ public boolean accept(XMLEvent event) {
++ return event.isStartElement();
++ }
++ };
++
++ long cntElem = 0;
++ XMLInputFactory staxFactory = XMLInputFactory.newInstance();
++ XMLEventReader staxReader = staxFactory.createXMLEventReader(is);
++ XMLEventReader staxFiltRd = staxFactory.createFilteredReader(staxReader, startElementFilter);
++ // ignore StartElement:
++ XMLEvent evDoc = staxFiltRd.nextEvent();
++ // JAXB:
++ JAXBContext jaxbContext = JAXBContext.newInstance(BINDING_PACKAGE);
++ Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
++
++ while (staxFiltRd.peek() != null) {
++ StartElement evRoot = (StartElement)staxFiltRd.peek();
++ String name = evRoot.getName().getLocalPart();
++ JAXBElement<CTCustomGeometry2D> el = unmarshaller.unmarshal(staxReader, CTCustomGeometry2D.class);
++ CTCustomGeometry2D cus = el.getValue();
++ cntElem++;
++
++ if(containsKey(name)) {
++ LOG.log(POILogger.WARN, "Duplicate definoition of " + name);
++ }
++ put(name, new CustomGeometry(cus));
++ }
++ }
++
++ /**
++ * Convert a single CustomGeometry object, i.e. from xmlbeans
++ */
++ public static CustomGeometry convertCustomGeometry(XMLStreamReader staxReader) {
++ try {
++ JAXBContext jaxbContext = JAXBContext.newInstance(BINDING_PACKAGE);
++ Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
++ JAXBElement<CTCustomGeometry2D> el = unmarshaller.unmarshal(staxReader, CTCustomGeometry2D.class);
++ return new CustomGeometry(el.getValue());
++ } catch (JAXBException e) {
++ LOG.log(POILogger.ERROR, "Unable to parse single custom geometry", e);
++ return null;
++ }
++ }
++
++ public static synchronized PresetGeometries getInstance(){
++ if(_inst == null) {
++ _inst = new PresetGeometries();
++ try {
++ InputStream is = PresetGeometries.class.
++ getResourceAsStream("presetShapeDefinitions.xml");
++ _inst.init(is);
++ is.close();
++ } catch (Exception e){
++ throw new RuntimeException(e);
++ }
++ }
++
++ return _inst;
++ }
++
++}
--- /dev/null
--- /dev/null
++/*
++ * ====================================================================
++ * 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.sl.draw.geom;
++
++import org.apache.poi.sl.draw.binding.CTAdjPoint2D;
++
++import java.awt.geom.GeneralPath;
++
++/**
++ * Date: 10/25/11
++ *
++ * @author Yegor Kozlov
++ */
++public class QuadToCommand implements PathCommand {
++ private String arg1, arg2, arg3, arg4;
++
++ QuadToCommand(CTAdjPoint2D pt1, CTAdjPoint2D pt2){
++ arg1 = pt1.getX().toString();
++ arg2 = pt1.getY().toString();
++ arg3 = pt2.getX().toString();
++ arg4 = pt2.getY().toString();
++ }
++
++ public void execute(GeneralPath path, Context ctx){
++ double x1 = ctx.getValue(arg1);
++ double y1 = ctx.getValue(arg2);
++ double x2 = ctx.getValue(arg3);
++ double y2 = ctx.getValue(arg4);
++ path.quadTo((float)x1, (float)y1, (float)x2, (float)y2);
++ }
++}
--- /dev/null
--- /dev/null
++/*
++ * ====================================================================
++ * 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.sl.draw.geom;
++
++import java.util.regex.Matcher;
++
++/**
++ * Sine ArcTan Formula:
++ * <gd name="dy1" fmla="sat2 x y z"/>
++ *
++ * <p>
++ * Arguments: 3 (fmla="sat2 x y z")
++ * Usage: "sat2 x y z" = (x*sin(arctan(z / y))) = value of this guide
++ * </p>
++ *
++ * @author Yegor Kozlov
++ */
++public class SinArcTanExpression implements Expression {
++ private String arg1, arg2, arg3;
++
++ SinArcTanExpression(Matcher m){
++ arg1 = m.group(1);
++ arg2 = m.group(2);
++ arg3 = m.group(3);
++ }
++
++ public double evaluate(Context ctx){
++ double x = ctx.getValue(arg1);
++ double y = ctx.getValue(arg2);
++ double z = ctx.getValue(arg3);
++ return x*Math.sin(Math.atan(z / y));
++ }
++
++}
--- /dev/null
--- /dev/null
++/*
++ * ====================================================================
++ * 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.sl.draw.geom;
++
++import java.util.regex.Matcher;
++
++/**
++ * Sine Formula:
++ * <gd name="z" fmla="sin x y"/>
++ *
++ * <p>
++ * Arguments: 2 (fmla="sin x y")
++ * Usage: "sin x y" = (x * sin( y )) = value of this guide
++ * </p>
++ *
++ * @author Yegor Kozlov
++ */
++public class SinExpression implements Expression {
++ private String arg1, arg2;
++
++ SinExpression(Matcher m){
++ arg1 = m.group(1);
++ arg2 = m.group(2);
++ }
++
++ public double evaluate(Context ctx){
++ double x = ctx.getValue(arg1);
++ double y = ctx.getValue(arg2) / 60000;
++ return x * Math.sin(Math.toRadians(y));
++ }
++
++}
--- /dev/null
--- /dev/null
++/*
++ * ====================================================================
++ * 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.sl.draw.geom;
++
++import java.util.regex.Matcher;
++
++/**
++ * Square Root Formula:
++ * <gd name="x" fmla="sqrt y"/>
++ *
++ * <p>
++ * Arguments: 1 (fmla="sqrt x")
++ * Usage: "sqrt x" = sqrt(x) = value of this guide
++ * </p>
++ * @author Yegor Kozlov
++ */
++public class SqrtExpression implements Expression {
++ private String arg;
++
++ SqrtExpression(Matcher m){
++ arg =m.group(1);
++ }
++
++ public double evaluate(Context ctx){
++ double val = ctx.getValue(arg);
++ return Math.sqrt(val);
++ }
++
++}
--- /dev/null
--- /dev/null
++/*
++ * ====================================================================
++ * 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.sl.draw.geom;
++
++import java.util.regex.Matcher;
++
++/**
++ * Tangent Formula:
++ *
++ * <gd name="z" fmla="tan x y"/>
++ *
++ * <p>
++ * Arguments: 2 (fmla="tan x y")
++ * Usage: "tan x y" = (x * tan( y )) = value of this guide
++ * </p>
++ *
++ * @author Yegor Kozlov
++ */
++public class TanExpression implements Expression {
++ private String arg1, arg2;
++
++ TanExpression(Matcher m){
++ arg1 = m.group(1);
++ arg2 = m.group(2);
++ }
++
++ public double evaluate(Context ctx){
++ double x = ctx.getValue(arg1);
++ double y = ctx.getValue(arg2);
++ return x * Math.tan(Math.toRadians(y / 60000));
++ }
++
++}
--- /dev/null
--- /dev/null
++/* ====================================================================\r
++ Licensed to the Apache Software Foundation (ASF) under one or more\r
++ contributor license agreements. See the NOTICE file distributed with\r
++ this work for additional information regarding copyright ownership.\r
++ The ASF licenses this file to You under the Apache License, Version 2.0\r
++ (the "License"); you may not use this file except in compliance with\r
++ the License. You may obtain a copy of the License at\r
++\r
++ http://www.apache.org/licenses/LICENSE-2.0\r
++\r
++ Unless required by applicable law or agreed to in writing, software\r
++ distributed under the License is distributed on an "AS IS" BASIS,\r
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ See the License for the specific language governing permissions and\r
++ limitations under the License.\r
++==================================================================== */\r
++\r
++package org.apache.poi.sl.usermodel;\r
++\r
++public enum AutoNumberingScheme {\r
++ /** Lowercase alphabetic character enclosed in parentheses. Example: (a), (b), (c), ... */\r
++ alphaLcParenBoth(0x0008, 1),\r
++ /** Uppercase alphabetic character enclosed in parentheses. Example: (A), (B), (C), ... */\r
++ alphaUcParenBoth(0x000A, 2),\r
++ /** Lowercase alphabetic character followed by a closing parenthesis. Example: a), b), c), ... */\r
++ alphaLcParenRight(0x0009, 3),\r
++ /** Uppercase alphabetic character followed by a closing parenthesis. Example: A), B), C), ... */\r
++ alphaUcParenRight(0x000B, 4),\r
++ /** Lowercase Latin character followed by a period. Example: a., b., c., ... */\r
++ alphaLcPeriod(0x0000, 5),\r
++ /** Uppercase Latin character followed by a period. Example: A., B., C., ... */\r
++ alphaUcPeriod(0x0001, 6),\r
++ /** Arabic numeral enclosed in parentheses. Example: (1), (2), (3), ... */\r
++ arabicParenBoth(0x000C, 7),\r
++ /** Arabic numeral followed by a closing parenthesis. Example: 1), 2), 3), ... */\r
++ arabicParenRight(0x0002, 8),\r
++ /** Arabic numeral followed by a period. Example: 1., 2., 3., ... */\r
++ arabicPeriod(0x0003, 9),\r
++ /** Arabic numeral. Example: 1, 2, 3, ... */\r
++ arabicPlain(0x000D, 10),\r
++ /** Lowercase Roman numeral enclosed in parentheses. Example: (i), (ii), (iii), ... */\r
++ romanLcParenBoth(0x0004, 11),\r
++ /** Uppercase Roman numeral enclosed in parentheses. Example: (I), (II), (III), ... */\r
++ romanUcParenBoth(0x000E, 12),\r
++ /** Lowercase Roman numeral followed by a closing parenthesis. Example: i), ii), iii), ... */\r
++ romanLcParenRight(0x0005, 13),\r
++ /** Uppercase Roman numeral followed by a closing parenthesis. Example: I), II), III), .... */\r
++ romanUcParenRight(0x000F, 14),\r
++ /** Lowercase Roman numeral followed by a period. Example: i., ii., iii., ... */\r
++ romanLcPeriod(0x0006, 15),\r
++ /** Uppercase Roman numeral followed by a period. Example: I., II., III., ... */\r
++ romanUcPeriod(0x0007, 16),\r
++ /** Double byte circle numbers. */\r
++ circleNumDbPlain(0x0012, 17),\r
++ /** Wingdings black circle numbers. */\r
++ circleNumWdBlackPlain(0x0014, 18),\r
++ /** Wingdings white circle numbers. */\r
++ circleNumWdWhitePlain(0x0013, 19),\r
++ /** Double-byte Arabic numbers with double-byte period. */\r
++ arabicDbPeriod(0x001D, 20),\r
++ /** Double-byte Arabic numbers. */\r
++ arabicDbPlain(0x001C, 21),\r
++ /** Simplified Chinese with single-byte period. */\r
++ ea1ChsPeriod(0x0011, 22),\r
++ /** Simplified Chinese. */\r
++ ea1ChsPlain(0x0010, 23),\r
++ /** Traditional Chinese with single-byte period. */\r
++ ea1ChtPeriod(0x0015, 24),\r
++ /** Traditional Chinese. */\r
++ ea1ChtPlain(0x0014, 25),\r
++ /** Japanese with double-byte period. */\r
++ ea1JpnChsDbPeriod(0x0026, 26),\r
++ /** Japanese/Korean. */\r
++ ea1JpnKorPlain(0x001A, 27),\r
++ /** Japanese/Korean with single-byte period. */\r
++ ea1JpnKorPeriod(0x001B, 28),\r
++ /** Bidi Arabic 1 (AraAlpha) with ANSI minus symbol. */\r
++ arabic1Minus(0x0017, 29),\r
++ /** Bidi Arabic 2 (AraAbjad) with ANSI minus symbol. */\r
++ arabic2Minus(0x0018, 30),\r
++ /** Bidi Hebrew 2 with ANSI minus symbol. */\r
++ hebrew2Minus(0x0019, 31),\r
++ /** Thai alphabetic character followed by a period. */\r
++ thaiAlphaPeriod(0x001E, 32),\r
++ /** Thai alphabetic character followed by a closing parenthesis. */\r
++ thaiAlphaParenRight(0x001F, 33),\r
++ /** Thai alphabetic character enclosed by parentheses. */\r
++ thaiAlphaParenBoth(0x0020, 34),\r
++ /** Thai numeral followed by a period. */\r
++ thaiNumPeriod(0x0021, 35),\r
++ /** Thai numeral followed by a closing parenthesis. */\r
++ thaiNumParenRight(0x0022, 36),\r
++ /** Thai numeral enclosed in parentheses. */\r
++ thaiNumParenBoth(0x0023, 37),\r
++ /** Hindi alphabetic character followed by a period. */\r
++ hindiAlphaPeriod(0x0024, 38),\r
++ /** Hindi numeric character followed by a period. */\r
++ hindiNumPeriod(0x0025, 39),\r
++ /** Hindi numeric character followed by a closing parenthesis. */\r
++ hindiNumParenRight(0x0027, 40),\r
++ /** Hindi alphabetic character followed by a period. */\r
++ hindiAlpha1Period(0x0027, 41);\r
++\r
++ public final int nativeId, ooxmlId;\r
++\r
++ AutoNumberingScheme(int nativeId, int ooxmlId) {\r
++ this.nativeId = nativeId;\r
++ this.ooxmlId = ooxmlId;\r
++ }\r
++\r
++ public static AutoNumberingScheme forNativeID(int nativeId) {\r
++ for (AutoNumberingScheme ans : values()) {\r
++ if (ans.nativeId == nativeId) return ans;\r
++ }\r
++ return null;\r
++ }\r
++\r
++ public static AutoNumberingScheme forOoxmlID(int ooxmlId) {\r
++ for (AutoNumberingScheme ans : values()) {\r
++ if (ans.ooxmlId == ooxmlId) return ans;\r
++ }\r
++ return null;\r
++ }\r
++\r
++ public String getDescription() {\r
++ switch (this) {\r
++ case alphaLcPeriod : return "Lowercase Latin character followed by a period. Example: a., b., c., ...";\r
++ case alphaUcPeriod : return "Uppercase Latin character followed by a period. Example: A., B., C., ...";\r
++ case arabicParenRight : return "Arabic numeral followed by a closing parenthesis. Example: 1), 2), 3), ...";\r
++ case arabicPeriod : return "Arabic numeral followed by a period. Example: 1., 2., 3., ...";\r
++ case romanLcParenBoth : return "Lowercase Roman numeral enclosed in parentheses. Example: (i), (ii), (iii), ...";\r
++ case romanLcParenRight : return "Lowercase Roman numeral followed by a closing parenthesis. Example: i), ii), iii), ...";\r
++ case romanLcPeriod : return "Lowercase Roman numeral followed by a period. Example: i., ii., iii., ...";\r
++ case romanUcPeriod : return "Uppercase Roman numeral followed by a period. Example: I., II., III., ...";\r
++ case alphaLcParenBoth : return "Lowercase alphabetic character enclosed in parentheses. Example: (a), (b), (c), ...";\r
++ case alphaLcParenRight : return "Lowercase alphabetic character followed by a closing parenthesis. Example: a), b), c), ...";\r
++ case alphaUcParenBoth : return "Uppercase alphabetic character enclosed in parentheses. Example: (A), (B), (C), ...";\r
++ case alphaUcParenRight : return "Uppercase alphabetic character followed by a closing parenthesis. Example: A), B), C), ...";\r
++ case arabicParenBoth : return "Arabic numeral enclosed in parentheses. Example: (1), (2), (3), ...";\r
++ case arabicPlain : return "Arabic numeral. Example: 1, 2, 3, ...";\r
++ case romanUcParenBoth : return "Uppercase Roman numeral enclosed in parentheses. Example: (I), (II), (III), ...";\r
++ case romanUcParenRight : return "Uppercase Roman numeral followed by a closing parenthesis. Example: I), II), III), ...";\r
++ case ea1ChsPlain : return "Simplified Chinese.";\r
++ case ea1ChsPeriod : return "Simplified Chinese with single-byte period.";\r
++ case circleNumDbPlain : return "Double byte circle numbers.";\r
++ case circleNumWdWhitePlain : return "Wingdings white circle numbers.";\r
++ case circleNumWdBlackPlain : return "Wingdings black circle numbers.";\r
++ case ea1ChtPlain : return "Traditional Chinese.";\r
++ case ea1ChtPeriod : return "Traditional Chinese with single-byte period.";\r
++ case arabic1Minus : return "Bidi Arabic 1 (AraAlpha) with ANSI minus symbol.";\r
++ case arabic2Minus : return "Bidi Arabic 2 (AraAbjad) with ANSI minus symbol.";\r
++ case hebrew2Minus : return "Bidi Hebrew 2 with ANSI minus symbol.";\r
++ case ea1JpnKorPlain : return "Japanese/Korean.";\r
++ case ea1JpnKorPeriod : return "Japanese/Korean with single-byte period.";\r
++ case arabicDbPlain : return "Double-byte Arabic numbers.";\r
++ case arabicDbPeriod : return "Double-byte Arabic numbers with double-byte period.";\r
++ case thaiAlphaPeriod : return "Thai alphabetic character followed by a period.";\r
++ case thaiAlphaParenRight : return "Thai alphabetic character followed by a closing parenthesis.";\r
++ case thaiAlphaParenBoth : return "Thai alphabetic character enclosed by parentheses.";\r
++ case thaiNumPeriod : return "Thai numeral followed by a period.";\r
++ case thaiNumParenRight : return "Thai numeral followed by a closing parenthesis.";\r
++ case thaiNumParenBoth : return "Thai numeral enclosed in parentheses.";\r
++ case hindiAlphaPeriod : return "Hindi alphabetic character followed by a period.";\r
++ case hindiNumPeriod : return "Hindi numeric character followed by a period.";\r
++ case ea1JpnChsDbPeriod : return "Japanese with double-byte period.";\r
++ case hindiNumParenRight : return "Hindi numeric character followed by a closing parenthesis.";\r
++ case hindiAlpha1Period : return "Hindi alphabetic character followed by a period.";\r
++ default : return "Unknown Numbered Scheme";\r
++ }\r
++ }\r
++\r
++ public String format(int value) {\r
++ String index = formatIndex(value);\r
++ String cased = formatCase(index);\r
++ String seperated = formatSeperator(cased);\r
++ return seperated;\r
++ }\r
++\r
++ private String formatSeperator(String cased) {\r
++ String name = name().toLowerCase();\r
++ if (name.contains("plain")) return cased;\r
++ if (name.contains("parenright")) return cased+")";\r
++ if (name.contains("parenboth")) return "("+cased+")";\r
++ if (name.contains("period")) return cased+".";\r
++ if (name.contains("minus")) return cased+"-"; // ???\r
++ return cased;\r
++ }\r
++\r
++ private String formatCase(String index) {\r
++ String name = name().toLowerCase();\r
++ if (name.contains("lc")) return index.toLowerCase();\r
++ if (name.contains("uc")) return index.toUpperCase();\r
++ return index;\r
++ }\r
++\r
++ private static final String ARABIC_LIST = "0123456789";\r
++ private static final String ALPHA_LIST = "abcdefghijklmnopqrstuvwxyz";\r
++ private static final String WINGDINGS_WHITE_LIST =\r
++ "\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089";\r
++ private static final String WINGDINGS_BLACK_LIST =\r
++ "\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094";\r
++ private static final String CIRCLE_DB_LIST =\r
++ "\u2776\u2777\u2778\u2779\u277A\u277B\u277C\u277D\u277E";\r
++\r
++ private String formatIndex(int value) {\r
++ String name = name().toLowerCase();\r
++ if (name.startsWith("roman")) {\r
++ return formatRomanIndex(value);\r
++ } else if (name.startsWith("arabic") && !name.contains("db")) {\r
++ return getIndexedList(value, ARABIC_LIST, false);\r
++ } else if (name.startsWith("alpha")) {\r
++ return getIndexedList(value, ALPHA_LIST, true);\r
++ } else if (name.contains("WdWhite")) {\r
++ return (value == 10) ? "\u008A"\r
++ : getIndexedList(value, WINGDINGS_WHITE_LIST, false);\r
++ } else if (name.contains("WdBlack")) {\r
++ return (value == 10) ? "\u0095"\r
++ : getIndexedList(value, WINGDINGS_BLACK_LIST, false);\r
++ } else if (name.contains("NumDb")) {\r
++ return (value == 10) ? "\u277F"\r
++ : getIndexedList(value, CIRCLE_DB_LIST, true);\r
++ } else {\r
++ return "?";\r
++ }\r
++ }\r
++\r
++ private static String getIndexedList(int val, String list, boolean oneBased) {\r
++ StringBuilder sb = new StringBuilder();\r
++ addIndexedChar(val, list, oneBased, sb);\r
++ return sb.toString();\r
++ }\r
++\r
++ private static void addIndexedChar(int val, String list, boolean oneBased, StringBuilder sb) {\r
++ if (oneBased) val -= 1;\r
++ final int len = list.length();\r
++ if (val >= len) {\r
++ addIndexedChar(val/len, list, oneBased, sb);\r
++ }\r
++ sb.append(list.charAt(val%len));\r
++ }\r
++\r
++\r
++ private String formatRomanIndex(int value) {\r
++ //M (1000), CM (900), D (500), CD (400), C (100), XC (90), L (50), XL (40), X (10), IX (9), V (5), IV (4) and I (1).\r
++ final int[] VALUES = new int[]{1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1};\r
++ final String[] ROMAN = new String[]{"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"};\r
++ final String conciseList[][] = {\r
++ {"XLV", "VL"}, //45\r
++ {"XCV", "VC"}, //95\r
++ {"CDL", "LD"}, //450\r
++ {"CML", "LM"}, //950\r
++ {"CMVC", "LMVL"}, //995\r
++ {"CDXC", "LDXL"}, //490\r
++ {"CDVC", "LDVL"}, //495\r
++ {"CMXC", "LMXL"}, //990\r
++ {"XCIX", "VCIV"}, //99\r
++ {"XLIX", "VLIV"}, //49\r
++ {"XLIX", "IL"}, //49\r
++ {"XCIX", "IC"}, //99\r
++ {"CDXC", "XD"}, //490\r
++ {"CDVC", "XDV"}, //495\r
++ {"CDIC", "XDIX"}, //499\r
++ {"LMVL", "XMV"}, //995\r
++ {"CMIC", "XMIX"}, //999\r
++ {"CMXC", "XM"}, // 990\r
++ {"XDV", "VD"}, //495\r
++ {"XDIX", "VDIV"}, //499\r
++ {"XMV", "VM"}, // 995\r
++ {"XMIX", "VMIV"}, //999\r
++ {"VDIV", "ID"}, //499\r
++ {"VMIV", "IM"} //999\r
++ };\r
++\r
++ StringBuilder sb = new StringBuilder();\r
++ for (int i = 0; i < 13; i++) {\r
++ while (value >= VALUES[i]) {\r
++ value -= VALUES[i];\r
++ sb.append(ROMAN[i]);\r
++ }\r
++ }\r
++ String result = sb.toString();\r
++ for (String cc[] : conciseList) {\r
++ result = result.replace(cc[0], cc[1]);\r
++ }\r
++ return result;\r
++ }\r
++}
--- /dev/null
-public interface AutoShape extends SimpleShape {
- public TextRun getTextRun();
+ /* ====================================================================
+ 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.sl.usermodel;
+
++public interface AutoShape<T extends TextParagraph<? extends TextRun>> extends TextShape<T> {
+ }
--- /dev/null
-
+ /* ====================================================================
+ 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.sl.usermodel;
+
+ public interface Background extends Shape {
++ FillStyle getFillStyle();
+ }
--- /dev/null
--- /dev/null
++/* ====================================================================\r
++ Licensed to the Apache Software Foundation (ASF) under one or more\r
++ contributor license agreements. See the NOTICE file distributed with\r
++ this work for additional information regarding copyright ownership.\r
++ The ASF licenses this file to You under the Apache License, Version 2.0\r
++ (the "License"); you may not use this file except in compliance with\r
++ the License. You may obtain a copy of the License at\r
++\r
++ http://www.apache.org/licenses/LICENSE-2.0\r
++\r
++ Unless required by applicable law or agreed to in writing, software\r
++ distributed under the License is distributed on an "AS IS" BASIS,\r
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ See the License for the specific language governing permissions and\r
++ limitations under the License.\r
++==================================================================== */\r
++\r
++package org.apache.poi.sl.usermodel;\r
++\r
++import java.awt.Color;\r
++\r
++\r
++public interface ColorStyle {\r
++ Color getColor();\r
++ \r
++ /**\r
++ * the opacity as expressed by a percentage value\r
++ *\r
++ * @return opacity in percents in the range [0..100000]\r
++ * or -1 if the value is not set\r
++ */\r
++ int getAlpha();\r
++ \r
++ /**\r
++ * the luminance shift as expressed by a percentage relative to the input color\r
++ *\r
++ * @return luminance shift in percents in the range [0..100000]\r
++ * or -1 if the value is not set\r
++ */\r
++ int getLumOff();\r
++ \r
++ /**\r
++ * the luminance as expressed by a percentage relative to the input color\r
++ *\r
++ * @return luminance in percents in the range [0..100000]\r
++ * or -1 if the value is not set\r
++ */\r
++ int getLumMod();\r
++ \r
++ /**\r
++ * specifies a darker version of its input color.\r
++ * A 10% shade is 10% of the input color combined with 90% black.\r
++ * \r
++ * @return the value of the shade specified as percents in the range [0..100000]\r
++ * with 0% indicating minimal shade and 100% indicating maximum\r
++ * or -1 if the value is not set\r
++ */\r
++ int getShade();\r
++\r
++ /**\r
++ * specifies a lighter version of its input color.\r
++ * A 10% tint is 10% of the input color combined with 90% white.\r
++ *\r
++ * @return the value of the tint specified as percents in the range [0..100000]\r
++ * with 0% indicating minimal tint and 100% indicating maximum\r
++ * or -1 if the value is not set\r
++ */\r
++ int getTint();\r
++}\r
--- /dev/null
--- /dev/null
++/* ====================================================================\r
++ Licensed to the Apache Software Foundation (ASF) under one or more\r
++ contributor license agreements. See the NOTICE file distributed with\r
++ this work for additional information regarding copyright ownership.\r
++ The ASF licenses this file to You under the Apache License, Version 2.0\r
++ (the "License"); you may not use this file except in compliance with\r
++ the License. You may obtain a copy of the License at\r
++\r
++ http://www.apache.org/licenses/LICENSE-2.0\r
++\r
++ Unless required by applicable law or agreed to in writing, software\r
++ distributed under the License is distributed on an "AS IS" BASIS,\r
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ See the License for the specific language governing permissions and\r
++ limitations under the License.\r
++==================================================================== */\r
++\r
++package org.apache.poi.sl.usermodel;\r
++\r
++public interface ConnectorShape extends SimpleShape {\r
++\r
++}\r
--- /dev/null
--- /dev/null
++/* ====================================================================\r
++ Licensed to the Apache Software Foundation (ASF) under one or more\r
++ contributor license agreements. See the NOTICE file distributed with\r
++ this work for additional information regarding copyright ownership.\r
++ The ASF licenses this file to You under the Apache License, Version 2.0\r
++ (the "License"); you may not use this file except in compliance with\r
++ the License. You may obtain a copy of the License at\r
++\r
++ http://www.apache.org/licenses/LICENSE-2.0\r
++\r
++ Unless required by applicable law or agreed to in writing, software\r
++ distributed under the License is distributed on an "AS IS" BASIS,\r
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ See the License for the specific language governing permissions and\r
++ limitations under the License.\r
++==================================================================== */\r
++\r
++package org.apache.poi.sl.usermodel;\r
++\r
++public interface FillStyle {\r
++ PaintStyle getPaint();\r
++}\r
--- /dev/null
--- /dev/null
++/* ====================================================================\r
++ Licensed to the Apache Software Foundation (ASF) under one or more\r
++ contributor license agreements. See the NOTICE file distributed with\r
++ this work for additional information regarding copyright ownership.\r
++ The ASF licenses this file to You under the Apache License, Version 2.0\r
++ (the "License"); you may not use this file except in compliance with\r
++ the License. You may obtain a copy of the License at\r
++\r
++ http://www.apache.org/licenses/LICENSE-2.0\r
++\r
++ Unless required by applicable law or agreed to in writing, software\r
++ distributed under the License is distributed on an "AS IS" BASIS,\r
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ See the License for the specific language governing permissions and\r
++ limitations under the License.\r
++==================================================================== */\r
++\r
++package org.apache.poi.sl.usermodel;\r
++\r
++public interface FreeformShape<T extends TextParagraph<? extends TextRun>> extends AutoShape<T> {\r
++\r
++}\r
--- /dev/null
--- /dev/null
++/* ====================================================================
++ 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.sl.usermodel;
++
++import java.awt.geom.Rectangle2D;
++
++public interface GroupShape<T extends Shape> extends Shape, ShapeContainer<T>, PlaceableShape {
++
++ /**
++ * Gets the coordinate space of this group. All children are constrained
++ * to these coordinates.
++ *
++ * @param anchor the coordinate space of this group
++ */
++ Rectangle2D getInteriorAnchor();
++
++ /**
++ * Sets the coordinate space of this group. All children are constrained
++ * to these coordinates.
++ *
++ * @param anchor the coordinate space of this group
++ */
++ void setInteriorAnchor(Rectangle2D anchor);
++}
--- /dev/null
--- /dev/null
++/* ====================================================================\r
++ Licensed to the Apache Software Foundation (ASF) under one or more\r
++ contributor license agreements. See the NOTICE file distributed with\r
++ this work for additional information regarding copyright ownership.\r
++ The ASF licenses this file to You under the Apache License, Version 2.0\r
++ (the "License"); you may not use this file except in compliance with\r
++ the License. You may obtain a copy of the License at\r
++\r
++ http://www.apache.org/licenses/LICENSE-2.0\r
++\r
++ Unless required by applicable law or agreed to in writing, software\r
++ distributed under the License is distributed on an "AS IS" BASIS,\r
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ See the License for the specific language governing permissions and\r
++ limitations under the License.\r
++==================================================================== */\r
++\r
++package org.apache.poi.sl.usermodel;\r
++\r
++import java.awt.Insets;\r
++\r
++/**\r
++ * This is a replacement for {@link java.awt.Insets} which works on doubles\r
++ * instead of ints\r
++ */\r
++public class Insets2D {\r
++\r
++ /**\r
++ * The inset from the top.\r
++ * This value is added to the Top of the rectangle\r
++ * to yield a new location for the Top.\r
++ */\r
++ public double top;\r
++\r
++ /**\r
++ * The inset from the left.\r
++ * This value is added to the Left of the rectangle\r
++ * to yield a new location for the Left edge.\r
++ */\r
++ public double left;\r
++\r
++ /**\r
++ * The inset from the bottom.\r
++ * This value is subtracted from the Bottom of the rectangle\r
++ * to yield a new location for the Bottom.\r
++ */\r
++ public double bottom;\r
++\r
++ /**\r
++ * The inset from the right.\r
++ * This value is subtracted from the Right of the rectangle\r
++ * to yield a new location for the Right edge.\r
++ */\r
++ public double right;\r
++ \r
++ /**\r
++ * Creates and initializes a new <code>Insets</code> object with the \r
++ * specified top, left, bottom, and right insets. \r
++ * @param top the inset from the top.\r
++ * @param left the inset from the left.\r
++ * @param bottom the inset from the bottom.\r
++ * @param right the inset from the right.\r
++ */\r
++ public Insets2D(double top, double left, double bottom, double right) {\r
++ this.top = top;\r
++ this.left = left;\r
++ this.bottom = bottom;\r
++ this.right = right;\r
++ }\r
++\r
++ /**\r
++ * Set top, left, bottom, and right to the specified values\r
++ *\r
++ * @param top the inset from the top.\r
++ * @param left the inset from the left.\r
++ * @param bottom the inset from the bottom.\r
++ * @param right the inset from the right.\r
++ * @since 1.5\r
++ */\r
++ public void set(double top, double left, double bottom, double right) {\r
++ this.top = top;\r
++ this.left = left;\r
++ this.bottom = bottom;\r
++ this.right = right;\r
++ }\r
++\r
++ /**\r
++ * Checks whether two insets objects are equal. Two instances \r
++ * of <code>Insets</code> are equal if the four integer values\r
++ * of the fields <code>top</code>, <code>left</code>, \r
++ * <code>bottom</code>, and <code>right</code> are all equal.\r
++ * @return <code>true</code> if the two insets are equal;\r
++ * otherwise <code>false</code>.\r
++ * @since JDK1.1\r
++ */\r
++ public boolean equals(Object obj) {\r
++ if (obj instanceof Insets) {\r
++ Insets insets = (Insets)obj;\r
++ return ((top == insets.top) && (left == insets.left) &&\r
++ (bottom == insets.bottom) && (right == insets.right));\r
++ }\r
++ return false;\r
++ }\r
++\r
++ /**\r
++ * Returns the hash code for this Insets.\r
++ *\r
++ * @return a hash code for this Insets.\r
++ */\r
++ public int hashCode() {\r
++ double sum1 = left + bottom;\r
++ double sum2 = right + top;\r
++ double val1 = sum1 * (sum1 + 1)/2 + left;\r
++ double val2 = sum2 * (sum2 + 1)/2 + top;\r
++ double sum3 = val1 + val2;\r
++ return (int)(sum3 * (sum3 + 1)/2 + val2);\r
++ }\r
++\r
++ /**\r
++ * Returns a string representation of this <code>Insets</code> object. \r
++ * This method is intended to be used only for debugging purposes, and \r
++ * the content and format of the returned string may vary between \r
++ * implementations. The returned string may be empty but may not be \r
++ * <code>null</code>.\r
++ * \r
++ * @return a string representation of this <code>Insets</code> object.\r
++ */\r
++ public String toString() {\r
++ return getClass().getName() + "[top=" + top + ",left=" + left + ",bottom=" + bottom + ",right=" + right + "]";\r
++ }\r
++\r
++ /**\r
++ * Create a copy of this object.\r
++ * @return a copy of this <code>Insets2D</code> object.\r
++ */\r
++ public Object clone() { \r
++ try { \r
++ return super.clone();\r
++ } catch (CloneNotSupportedException e) { \r
++ // this shouldn't happen, since we are Cloneable\r
++ throw new InternalError();\r
++ }\r
++ }\r
++ \r
++\r
++}\r
--- /dev/null
-public interface Line extends AutoShape {
+ /* ====================================================================
+ 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.sl.usermodel;
+
++public interface Line<T extends TextParagraph<? extends TextRun>> extends AutoShape<T> {
+
+ }
--- /dev/null
--- /dev/null
++/* ====================================================================\r
++ Licensed to the Apache Software Foundation (ASF) under one or more\r
++ contributor license agreements. See the NOTICE file distributed with\r
++ this work for additional information regarding copyright ownership.\r
++ The ASF licenses this file to You under the Apache License, Version 2.0\r
++ (the "License"); you may not use this file except in compliance with\r
++ the License. You may obtain a copy of the License at\r
++\r
++ http://www.apache.org/licenses/LICENSE-2.0\r
++\r
++ Unless required by applicable law or agreed to in writing, software\r
++ distributed under the License is distributed on an "AS IS" BASIS,\r
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ See the License for the specific language governing permissions and\r
++ limitations under the License.\r
++==================================================================== */\r
++\r
++package org.apache.poi.sl.usermodel;\r
++\r
++public interface LineDecoration {\r
++ /**\r
++ * Represents the shape decoration that appears at the ends of lines.\r
++ */\r
++ enum DecorationShape {\r
++ NONE(1),\r
++ TRIANGLE(2),\r
++ STEALTH(3),\r
++ DIAMOND(4),\r
++ OVAL(5),\r
++ ARROW(6);\r
++ \r
++ public final int ooxmlId;\r
++ \r
++ DecorationShape(int ooxmlId) {\r
++ this.ooxmlId = ooxmlId;\r
++ }\r
++ \r
++ public static DecorationShape fromOoxmlId(int ooxmlId) {\r
++ for (DecorationShape ds : values()) {\r
++ if (ds.ooxmlId == ooxmlId) return ds;\r
++ }\r
++ return null;\r
++ }\r
++ }\r
++ \r
++ enum DecorationSize {\r
++ SMALL(1),\r
++ MEDIUM(2),\r
++ LARGE(3);\r
++ \r
++ public final int ooxmlId;\r
++ \r
++ DecorationSize(int ooxmlId) {\r
++ this.ooxmlId = ooxmlId;\r
++ }\r
++ \r
++ public static DecorationSize fromOoxmlId(int ooxmlId) {\r
++ for (DecorationSize ds : values()) {\r
++ if (ds.ooxmlId == ooxmlId) return ds;\r
++ }\r
++ return null;\r
++ }\r
++ }\r
++ \r
++ /**\r
++ * @return the line start shape\r
++ */\r
++ DecorationShape getHeadShape();\r
++ \r
++ /**\r
++ * @return the width of the start shape\r
++ */\r
++ DecorationSize getHeadWidth();\r
++ \r
++ /**\r
++ * @return the length of the start shape\r
++ */\r
++ DecorationSize getHeadLength();\r
++ \r
++ /**\r
++ * @return the line end shape\r
++ */\r
++ DecorationShape getTailShape();\r
++ \r
++ /**\r
++ * @return the width of the end shape\r
++ */\r
++ DecorationSize getTailWidth();\r
++ \r
++ /**\r
++ * @return the length of the end shape\r
++ */\r
++ DecorationSize getTailLength();\r
++\r
++}\r
--- /dev/null
-public interface MasterSheet extends Sheet {
+ /* ====================================================================
+ 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.sl.usermodel;
+
++public interface MasterSheet<T extends Shape, SS extends SlideShow> extends Sheet<T,SS> {
+
+ }
--- /dev/null
-public interface Notes extends Sheet {
- public TextRun getTextRun();
+ /* ====================================================================
+ 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.sl.usermodel;
+
++import java.util.List;
++
++public interface Notes<T extends Shape, SS extends SlideShow> extends Sheet<T,SS> {
++ List<? extends List<? extends TextParagraph<? extends TextRun>>> getTextParagraphs();
+ }
--- /dev/null
--- /dev/null
++/* ====================================================================
++ 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.sl.usermodel;
++
++import java.awt.Color;
++import java.io.InputStream;
++
++import org.apache.poi.sl.draw.DrawPaint;
++
++
++
++public interface PaintStyle {
++ public interface SolidPaint extends PaintStyle {
++ ColorStyle getSolidColor();
++ }
++
++ public interface GradientPaint extends PaintStyle {
++ enum GradientType { linear, circular, shape }
++
++ /**
++ * @return the angle of the gradient
++ */
++ double getGradientAngle();
++ ColorStyle[] getGradientColors();
++ float[] getGradientFractions();
++ boolean isRotatedWithShape();
++ GradientType getGradientType();
++ }
++
++ public interface TexturePaint extends PaintStyle {
++ /**
++ * @return the raw image stream
++ */
++ InputStream getImageData();
++
++ /**
++ * @return the content type of the image data
++ */
++ String getContentType();
++
++ /**
++ * @return the alpha mask in percents [0..100000]
++ */
++ int getAlpha();
++ }
++
++ SolidPaint TRANSPARENT_PAINT = DrawPaint.createSolidPaint(new Color(0xFF, 0xFF, 0xFF, 0));
++}
--- /dev/null
- public int getType();
- public byte[] getUID();
+ /* ====================================================================
+ 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.sl.usermodel;
+
++import java.io.IOException;
++
+ public interface PictureData {
- public void setData(byte[] data);
++ public String getContentType();
+
+ public byte[] getData();
++ public void setData(byte[] data) throws IOException;
+ }
--- /dev/null
--- /dev/null
++/* ====================================================================
++ 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.sl.usermodel;
++
++import java.awt.Insets;
++
++public interface PictureShape extends SimpleShape {
++ /**
++ * Returns the picture data for this picture.
++ *
++ * @return the picture data for this picture.
++ */
++ PictureData getPictureData();
++
++ /**
++ * Returns the clipping values as percent ratio relatively to the image size.
++ * The clipping are returned as insets converted/scaled to 100000 (=100%).
++ *
++ * @return the clipping rectangle, which is given in percent in relation to the image width/height
++ */
++ Insets getClipping();
++}
--- /dev/null
--- /dev/null
++/* ====================================================================\r
++ Licensed to the Apache Software Foundation (ASF) under one or more\r
++ contributor license agreements. See the NOTICE file distributed with\r
++ this work for additional information regarding copyright ownership.\r
++ The ASF licenses this file to You under the Apache License, Version 2.0\r
++ (the "License"); you may not use this file except in compliance with\r
++ the License. You may obtain a copy of the License at\r
++\r
++ http://www.apache.org/licenses/LICENSE-2.0\r
++\r
++ Unless required by applicable law or agreed to in writing, software\r
++ distributed under the License is distributed on an "AS IS" BASIS,\r
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ See the License for the specific language governing permissions and\r
++ limitations under the License.\r
++==================================================================== */\r
++\r
++package org.apache.poi.sl.usermodel;\r
++\r
++import java.awt.geom.Rectangle2D;\r
++\r
++public interface PlaceableShape {\r
++ ShapeContainer<? extends Shape> getParent();\r
++ \r
++ /**\r
++ * @return the position of this shape within the drawing canvas.\r
++ * The coordinates are expressed in points\r
++ */\r
++ Rectangle2D getAnchor();\r
++\r
++ /**\r
++ * @param anchor the position of this shape within the drawing canvas.\r
++ * The coordinates are expressed in points\r
++ */\r
++ void setAnchor(Rectangle2D anchor);\r
++\r
++ /**\r
++ * Rotation angle in degrees\r
++ * <p>\r
++ * Positive angles are clockwise (i.e., towards the positive y axis);\r
++ * negative angles are counter-clockwise (i.e., towards the negative y axis).\r
++ * </p>\r
++ *\r
++ * @return rotation angle in degrees\r
++ */\r
++ double getRotation();\r
++\r
++ /**\r
++ * Rotate this shape.\r
++ * <p>\r
++ * Positive angles are clockwise (i.e., towards the positive y axis);\r
++ * negative angles are counter-clockwise (i.e., towards the negative y axis).\r
++ * </p>\r
++ *\r
++ * @param theta the rotation angle in degrees.\r
++ */\r
++ void setRotation(double theta);\r
++\r
++ /**\r
++ * @param flip whether the shape is horizontally flipped\r
++ */\r
++ void setFlipHorizontal(boolean flip);\r
++\r
++ /**\r
++ * Whether the shape is vertically flipped\r
++ *\r
++ * @param flip whether the shape is vertically flipped\r
++ */\r
++ void setFlipVertical(boolean flip);\r
++\r
++ /**\r
++ * Whether the shape is horizontally flipped\r
++ *\r
++ * @return whether the shape is horizontally flipped\r
++ */\r
++ boolean getFlipHorizontal();\r
++\r
++ /**\r
++ * Whether the shape is vertically flipped\r
++ *\r
++ * @return whether the shape is vertically flipped\r
++ */\r
++ boolean getFlipVertical();\r
++}\r
--- /dev/null
--- /dev/null
++/* ====================================================================\r
++ Licensed to the Apache Software Foundation (ASF) under one or more\r
++ contributor license agreements. See the NOTICE file distributed with\r
++ this work for additional information regarding copyright ownership.\r
++ The ASF licenses this file to You under the Apache License, Version 2.0\r
++ (the "License"); you may not use this file except in compliance with\r
++ the License. You may obtain a copy of the License at\r
++\r
++ http://www.apache.org/licenses/LICENSE-2.0\r
++\r
++ Unless required by applicable law or agreed to in writing, software\r
++ distributed under the License is distributed on an "AS IS" BASIS,\r
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ See the License for the specific language governing permissions and\r
++ limitations under the License.\r
++==================================================================== */\r
++\r
++package org.apache.poi.sl.usermodel;\r
++\r
++import org.apache.poi.sl.usermodel.PaintStyle.SolidPaint;\r
++\r
++\r
++\r
++public interface Shadow {\r
++ SimpleShape getShadowParent();\r
++ \r
++ /**\r
++ * @return the offset of this shadow in points\r
++ */\r
++ double getDistance();\r
++ \r
++ /**\r
++ * \r
++ * @return the direction to offset the shadow in angles\r
++ */\r
++ double getAngle();\r
++\r
++ /**\r
++ * \r
++ * @return the blur radius of the shadow\r
++ * TODO: figure out how to make sense of this property when rendering shadows \r
++ */\r
++ double getBlur();\r
++\r
++ /**\r
++ * @return the color of this shadow. \r
++ * Depending whether the parent shape is filled or stroked, this color is used to fill or stroke this shadow\r
++ */\r
++ SolidPaint getFillStyle(); \r
++}\r
--- /dev/null
-import java.awt.geom.Rectangle2D;
+ /* ====================================================================
+ 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.sl.usermodel;
+
- public int getShapeType();
-
- public Rectangle2D getAnchor();
- public void setAnchor(Rectangle2D anchor);
-
- public void moveTo(float x, float y);
-
- public Shape getParent();
+
+ public interface Shape {
++ ShapeContainer<? extends Shape> getParent();
++
++ /**
++ *
++ * @return the sheet this shape belongs to
++ */
++ Sheet<? extends Shape, ? extends SlideShow> getSheet();
+ }
--- /dev/null
-public interface ShapeContainer {
- public Shape[] getShapes();
- public void addShape(Shape shape);
- public boolean removeShape(Shape shape);
+ /* ====================================================================
+ 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.sl.usermodel;
+
++import java.util.List;
++
++
++public interface ShapeContainer<T extends Shape> extends Iterable<T> {
++ /**
++ * Returns an list containing all of the elements in this container in proper
++ * sequence (from first to last element).
++ *
++ * @return an list containing all of the elements in this container in proper
++ * sequence
++ */
++ List<T> getShapes();
++
++ void addShape(T shape);
++
++ /**
++ * Removes the specified shape from this sheet, if it is present
++ * (optional operation). If this sheet does not contain the element,
++ * it is unchanged.
++ *
++ * @param xShape shape to be removed from this sheet, if present
++ * @return <tt>true</tt> if this sheet contained the specified element
++ * @throws IllegalArgumentException if the type of the specified shape
++ * is incompatible with this sheet (optional)
++ */
++ boolean removeShape(T shape);
+ }
--- /dev/null
--- /dev/null
++/* ====================================================================
++ 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.sl.usermodel;
++
++/**
++ * known preset shape geometries in PresentationML
++ */
++public enum ShapeType {
++ NOT_PRIMITIVE(-1, 0, "NotPrimitive"),
++ LINE(1, 20, "Line"),
++ LINE_INV(2, -1, null),
++ TRIANGLE(3, 5, "IsocelesTriangle"),
++ RT_TRIANGLE(4, 6, "RightTriangle"),
++ RECT(5, 1, "Rectangle"),
++ DIAMOND(6, 4, "Diamond"),
++ PARALLELOGRAM(7, 7, "Parallelogram"),
++ TRAPEZOID(8, 8, "Trapezoid"),
++ NON_ISOSCELES_TRAPEZOID(9, -1, null),
++ PENTAGON(10, 56, "Pentagon"),
++ HEXAGON(11, 9, "Hexagon"),
++ HEPTAGON(12, -1, null),
++ OCTAGON(13, 10, "Octagon"),
++ DECAGON(14, -1, null),
++ DODECAGON(15, -1, null),
++ STAR_4(16, 187, "Star4"),
++ STAR_5(17, 12, "Star"), // aka star in native
++ STAR_6(18, -1, null),
++ STAR_7(19, -1, null),
++ STAR_8(20, 58, "Star8"),
++ STAR_10(21, -1, null),
++ STAR_12(22, -1, null),
++ STAR_16(23, 59, "Star16"),
++ SEAL(23, 18, "Seal"), // same as star_16, but twice in native
++ STAR_24(24, 92, "Star24"),
++ STAR_32(25, 60, "Star32"),
++ ROUND_RECT(26, 2, "RoundRectangle"),
++ ROUND_1_RECT(27, -1, null),
++ ROUND_2_SAME_RECT(28, -1, null),
++ ROUND_2_DIAG_RECT(29, -1, null),
++ SNIP_ROUND_RECT(30, -1, null),
++ SNIP_1_RECT(31, -1, null),
++ SNIP_2_SAME_RECT(32, -1, null),
++ SNIP_2_DIAG_RECT(33, -1, null),
++ PLAQUE(34, 21, "Plaque"),
++ ELLIPSE(35, 3, "Ellipse"),
++ TEARDROP(36, -1, null),
++ HOME_PLATE(37, 15, "HomePlate"),
++ CHEVRON(38, 55, "Chevron"),
++ PIE_WEDGE(39, -1, null),
++ PIE(40, -1, null),
++ BLOCK_ARC(41, 95, "BlockArc"),
++ DONUT(42, 23, "Donut"),
++ NO_SMOKING(43, 57, "NoSmoking"),
++ RIGHT_ARROW(44, 13, "Arrow"), // aka arrow in native
++ LEFT_ARROW(45, 66, "LeftArrow"),
++ UP_ARROW(46, 68, "UpArrow"),
++ DOWN_ARROW(47, 67, "DownArrow"),
++ STRIPED_RIGHT_ARROW(48, 93, "StripedRightArrow"),
++ NOTCHED_RIGHT_ARROW(49, 94, "NotchedRightArrow"),
++ BENT_UP_ARROW(50, 90, "BentUpArrow"),
++ LEFT_RIGHT_ARROW(51, 69, "LeftRightArrow"),
++ UP_DOWN_ARROW(52, 70, "UpDownArrow"),
++ LEFT_UP_ARROW(53, 89, "LeftUpArrow"),
++ LEFT_RIGHT_UP_ARROW(54, 182, "LeftRightUpArrow"),
++ QUAD_ARROW(55, 76, "QuadArrow"),
++ LEFT_ARROW_CALLOUT(56, 77, "LeftArrowCallout"),
++ RIGHT_ARROW_CALLOUT(57, 78, "RightArrowCallout"),
++ UP_ARROW_CALLOUT(58, 79, "UpArrowCallout"),
++ DOWN_ARROW_CALLOUT(59, 80, "DownArrowCallout"),
++ LEFT_RIGHT_ARROW_CALLOUT(60, 81, "LeftRightArrowCallout"),
++ UP_DOWN_ARROW_CALLOUT(61, 82, "UpDownArrowCallout"),
++ QUAD_ARROW_CALLOUT(62, 83, "QuadArrowCallout"),
++ BENT_ARROW(63, 91, "BentArrow"),
++ UTURN_ARROW(64, 101, "UturnArrow"),
++ CIRCULAR_ARROW(65, 99, "CircularArrow"),
++ LEFT_CIRCULAR_ARROW(66, -1, null),
++ LEFT_RIGHT_CIRCULAR_ARROW(67, -1, null),
++ CURVED_RIGHT_ARROW(68, 102, "CurvedRightArrow"),
++ CURVED_LEFT_ARROW(69, 103, "CurvedLeftArrow"),
++ CURVED_UP_ARROW(70, 104, "CurvedUpArrow"),
++ CURVED_DOWN_ARROW(71, 105, "CurvedDownArrow"),
++ SWOOSH_ARROW(72, -1, null),
++ CUBE(73, 16, "Cube"),
++ CAN(74, 22, "Can"),
++ LIGHTNING_BOLT(75, 73, "LightningBolt"),
++ HEART(76, 74, "Heart"),
++ SUN(77, 183, "Sun"),
++ MOON(78, 184, "Moon"),
++ SMILEY_FACE(79, 96, "SmileyFace"),
++ IRREGULAR_SEAL_1(80, 71, "IrregularSeal1"),
++ IRREGULAR_SEAL_2(81, 72, "IrregularSeal2"),
++ FOLDED_CORNER(82, 65, "FoldedCorner"),
++ BEVEL(83, 84, "Bevel"),
++ FRAME(84, 75, "PictureFrame"),
++ HALF_FRAME(85, -1, null),
++ CORNER(86, -1, null),
++ DIAG_STRIPE(87, -1, null),
++ CHORD(88, -1, null),
++ ARC(89, 19, "Arc"),
++ LEFT_BRACKET(90, 85, "LeftBracket"),
++ RIGHT_BRACKET(91, 86, "RightBracket"),
++ LEFT_BRACE(92, 87, "LeftBrace"),
++ RIGHT_BRACE(93, 88, "RightBrace"),
++ BRACKET_PAIR(94, 185, "BracketPair"),
++ BRACE_PAIR(95, 186, "BracePair"),
++ STRAIGHT_CONNECTOR_1(96, 32, "StraightConnector1"),
++ BENT_CONNECTOR_2(97, 33, "BentConnector2"),
++ BENT_CONNECTOR_3(98, 34, "BentConnector3"),
++ BENT_CONNECTOR_4(99, 35, "BentConnector4"),
++ BENT_CONNECTOR_5(100, 36, "BentConnector5"),
++ CURVED_CONNECTOR_2(101, 37, "CurvedConnector2"),
++ CURVED_CONNECTOR_3(102, 38, "CurvedConnector3"),
++ CURVED_CONNECTOR_4(103, 39, "CurvedConnector4"),
++ CURVED_CONNECTOR_5(104, 40, "CurvedConnector5"),
++ CALLOUT_1(105, 41, "Callout1"),
++ CALLOUT_2(106, 42, "Callout2"),
++ CALLOUT_3(107, 43, "Callout3"),
++ ACCENT_CALLOUT_1(108, 44, "AccentCallout1"),
++ ACCENT_CALLOUT_2(109, 45, "AccentCallout2"),
++ ACCENT_CALLOUT_3(110, 46, "AccentCallout3"),
++ BORDER_CALLOUT_1(111, 47, "BorderCallout1"),
++ BORDER_CALLOUT_2(112, 48, "BorderCallout2"),
++ BORDER_CALLOUT_3(113, 49, "BorderCallout3"),
++ ACCENT_BORDER_CALLOUT_1(114, 50, "AccentBorderCallout1"),
++ ACCENT_BORDER_CALLOUT_2(115, 51, "AccentBorderCallout2"),
++ ACCENT_BORDER_CALLOUT_3(116, 52, "AccentBorderCallout3"),
++ WEDGE_RECT_CALLOUT(117, 61, "WedgeRectCallout"),
++ WEDGE_ROUND_RECT_CALLOUT(118, 62, "WedgeRRectCallout"),
++ WEDGE_ELLIPSE_CALLOUT(119, 63, "WedgeEllipseCallout"),
++ CLOUD_CALLOUT(120, 106, "CloudCallout"),
++ CLOUD(121, -1, null),
++ RIBBON(122, 53, "Ribbon"),
++ RIBBON_2(123, 54, "Ribbon2"),
++ ELLIPSE_RIBBON(124, 107, "EllipseRibbon"),
++ ELLIPSE_RIBBON_2(125, 108, "EllipseRibbon2"),
++ LEFT_RIGHT_RIBBON(126, -1, null),
++ VERTICAL_SCROLL(127, 97, "VerticalScroll"),
++ HORIZONTAL_SCROLL(128, 98, "HorizontalScroll"),
++ WAVE(129, 64, "Wave"),
++ DOUBLE_WAVE(130, 188, "DoubleWave"),
++ PLUS(131, 11, "Plus"),
++ FLOW_CHART_PROCESS(132, 109, "FlowChartProcess"),
++ FLOW_CHART_DECISION(133, 110, "FlowChartDecision"),
++ FLOW_CHART_INPUT_OUTPUT(134, 111, "FlowChartInputOutput"),
++ FLOW_CHART_PREDEFINED_PROCESS(135, 112, "FlowChartPredefinedProcess"),
++ FLOW_CHART_INTERNAL_STORAGE(136, 113, "FlowChartInternalStorage"),
++ FLOW_CHART_DOCUMENT(137, 114, "FlowChartDocument"),
++ FLOW_CHART_MULTIDOCUMENT(138, 115, "FlowChartMultidocument"),
++ FLOW_CHART_TERMINATOR(139, 116, "FlowChartTerminator"),
++ FLOW_CHART_PREPARATION(140, 117, "FlowChartPreparation"),
++ FLOW_CHART_MANUAL_INPUT(141, 118, "FlowChartManualInput"),
++ FLOW_CHART_MANUAL_OPERATION(142, 119, "FlowChartManualOperation"),
++ FLOW_CHART_CONNECTOR(143, 120, "FlowChartConnector"),
++ FLOW_CHART_PUNCHED_CARD(144, 121, "FlowChartPunchedCard"),
++ FLOW_CHART_PUNCHED_TAPE(145, 122, "FlowChartPunchedTape"),
++ FLOW_CHART_SUMMING_JUNCTION(146, 123, "FlowChartSummingJunction"),
++ FLOW_CHART_OR(147, 124, "FlowChartOr"),
++ FLOW_CHART_COLLATE(148, 125, "FlowChartCollate"),
++ FLOW_CHART_SORT(149, 126, "FlowChartSort"),
++ FLOW_CHART_EXTRACT(150, 127, "FlowChartExtract"),
++ FLOW_CHART_MERGE(151, 128, "FlowChartMerge"),
++ FLOW_CHART_OFFLINE_STORAGE(152, 129, "FlowChartOfflineStorage"),
++ FLOW_CHART_ONLINE_STORAGE(153, 130, "FlowChartOnlineStorage"),
++ FLOW_CHART_MAGNETIC_TAPE(154, 131, "FlowChartMagneticTape"),
++ FLOW_CHART_MAGNETIC_DISK(155, 132, "FlowChartMagneticDisk"),
++ FLOW_CHART_MAGNETIC_DRUM(156, 133, "FlowChartMagneticDrum"),
++ FLOW_CHART_DISPLAY(157, 134, "FlowChartDisplay"),
++ FLOW_CHART_DELAY(158, 135, "FlowChartDelay"),
++ FLOW_CHART_ALTERNATE_PROCESS(159, 176, "FlowChartAlternateProcess"),
++ FLOW_CHART_OFFPAGE_CONNECTOR(160, 177, "FlowChartOffpageConnector"),
++ ACTION_BUTTON_BLANK(161, 189, "ActionButtonBlank"),
++ ACTION_BUTTON_HOME(162, 190, "ActionButtonHome"),
++ ACTION_BUTTON_HELP(163, 191, "ActionButtonHelp"),
++ ACTION_BUTTON_INFORMATION(164, 192, "ActionButtonInformation"),
++ ACTION_BUTTON_FORWARD_NEXT(165, 193, "ActionButtonForwardNext"),
++ ACTION_BUTTON_BACK_PREVIOUS(166, 194, "ActionButtonBackPrevious"),
++ ACTION_BUTTON_END(167, 195, "ActionButtonEnd"),
++ ACTION_BUTTON_BEGINNING(168, 196, "ActionButtonBeginning"),
++ ACTION_BUTTON_RETURN(169, 197, "ActionButtonReturn"),
++ ACTION_BUTTON_DOCUMENT(170, 198, "ActionButtonDocument"),
++ ACTION_BUTTON_SOUND(171, 199, "ActionButtonSound"),
++ ACTION_BUTTON_MOVIE(172, 200, "ActionButtonMovie"),
++ GEAR_6(173, -1, null),
++ GEAR_9(174, -1, null),
++ FUNNEL(175, -1, null),
++ MATH_PLUS(176, -1, null),
++ MATH_MINUS(177, -1, null),
++ MATH_MULTIPLY(178, -1, null),
++ MATH_DIVIDE(179, -1, null),
++ MATH_EQUAL(180, -1, null),
++ MATH_NOT_EQUAL(181, -1, null),
++ CORNER_TABS(182, -1, null),
++ SQUARE_TABS(183, -1, null),
++ PLAQUE_TABS(184, -1, null),
++ CHART_X(185, -1, null),
++ CHART_STAR(186, -1, null),
++ CHART_PLUS(187, -1, null),
++ // below are shape types only found in native
++ NOTCHED_CIRCULAR_ARROW(-1, 100, "NotchedCircularArrow"),
++ THICK_ARROW(-1, 14, "ThickArrow"),
++ BALLOON(-1, 17, "Balloon"),
++ TEXT_SIMPLE(-1, 24, "TextSimple"),
++ TEXT_OCTAGON(-1, 25, "TextOctagon"),
++ TEXT_HEXAGON(-1, 26, "TextHexagon"),
++ TEXT_CURVE(-1, 27, "TextCurve"),
++ TEXT_WAVE(-1, 28, "TextWave"),
++ TEXT_RING(-1, 29, "TextRing"),
++ TEXT_ON_CURVE(-1, 30, "TextOnCurve"),
++ TEXT_ON_RING(-1, 31, "TextOnRing"),
++ TEXT_PLAIN_TEXT(-1, 136, "TextPlainText"),
++ TEXT_STOP(-1, 137, "TextStop"),
++ TEXT_TRIANGLE(-1, 138, "TextTriangle"),
++ TEXT_TRIANGLE_INVERTED(-1, 139, "TextTriangleInverted"),
++ TEXT_CHEVRON(-1, 140, "TextChevron"),
++ TEXT_CHEVRON_INVERTED(-1, 141, "TextChevronInverted"),
++ TEXT_RING_INSIDE(-1, 142, "TextRingInside"),
++ TEXT_RING_OUTSIDE(-1, 143, "TextRingOutside"),
++ TEXT_ARCH_UP_CURVE(-1, 144, "TextArchUpCurve"),
++ TEXT_ARCH_DOWN_CURVE(-1, 145, "TextArchDownCurve"),
++ TEXT_CIRCLE_CURVE(-1, 146, "TextCircleCurve"),
++ TEXT_BUTTON_CURVE(-1, 147, "TextButtonCurve"),
++ TEXT_ARCH_UP_POUR(-1, 148, "TextArchUpPour"),
++ TEXT_ARCH_DOWN_POUR(-1, 149, "TextArchDownPour"),
++ TEXT_CIRCLE_POUR(-1, 150, "TextCirclePour"),
++ TEXT_BUTTON_POUR(-1, 151, "TextButtonPour"),
++ TEXT_CURVE_UP(-1, 152, "TextCurveUp"),
++ TEXT_CURVE_DOWN(-1, 153, "TextCurveDown"),
++ TEXT_CASCADE_UP(-1, 154, "TextCascadeUp"),
++ TEXT_CASCADE_DOWN(-1, 155, "TextCascadeDown"),
++ TEXT_WAVE_1(-1, 156, "TextWave1"),
++ TEXT_WAVE_2(-1, 157, "TextWave2"),
++ TEXT_WAVE_3(-1, 158, "TextWave3"),
++ TEXT_WAVE_4(-1, 159, "TextWave4"),
++ TEXT_INFLATE(-1, 160, "TextInflate"),
++ TEXT_DEFLATE(-1, 161, "TextDeflate"),
++ TEXT_INFLATE_BOTTOM(-1, 162, "TextInflateBottom"),
++ TEXT_DEFLATE_BOTTOM(-1, 163, "TextDeflateBottom"),
++ TEXT_INFLATE_TOP(-1, 164, "TextInflateTop"),
++ TEXT_DEFLATE_TOP(-1, 165, "TextDeflateTop"),
++ TEXT_DEFLATE_INFLATE(-1, 166, "TextDeflateInflate"),
++ TEXT_DEFLATE_INFLATE_DEFLATE(-1, 167, "TextDeflateInflateDeflate"),
++ TEXT_FADE_RIGHT(-1, 168, "TextFadeRight"),
++ TEXT_FADE_LEFT(-1, 169, "TextFadeLeft"),
++ TEXT_FADE_UP(-1, 170, "TextFadeUp"),
++ TEXT_FADE_DOWN(-1, 171, "TextFadeDown"),
++ TEXT_SLANT_UP(-1, 172, "TextSlantUp"),
++ TEXT_SLANT_DOWN(-1, 173, "TextSlantDown"),
++ TEXT_CAN_UP(-1, 174, "TextCanUp"),
++ TEXT_CAN_DOWN(-1, 175, "TextCanDown"),
++ CALLOUT_90(-1, 178, "Callout90"),
++ ACCENT_CALLOUT_90(-1, 179, "AccentCallout90"),
++ BORDER_CALLOUT_90(-1, 180, "BorderCallout90"),
++ ACCENT_BORDER_CALLOUT_90(-1, 181, "AccentBorderCallout90"),
++ HOST_CONTROL(-1, 201, "HostControl"),
++ TEXT_BOX(-1, 202, "TextBox")
++ ;
++
++ /** Preset-ID for XML-based shapes */
++ public final int ooxmlId;
++
++ /** Preset-ID for binary-based shapes */
++ public final int nativeId;
++
++ /** POI-specific name for the binary-based type */
++ public final String nativeName;
++
++ ShapeType(int ooxmlId, int nativeId, String nativeName){
++ this.ooxmlId = ooxmlId;
++ this.nativeId = nativeId;
++ this.nativeName = nativeName;
++ }
++
++ /** name of the presetShapeDefinit(i)on entry */
++ public String getOoxmlName() {
++ if (this == SEAL) return STAR_16.getOoxmlName();
++ if (ooxmlId == -1) {
++ return (name().startsWith("TEXT")) ? RECT.getOoxmlName() : null;
++ }
++
++ StringBuilder sb = new StringBuilder();
++ boolean toLower = true;
++ for (char ch : name().toCharArray()) {
++ if (ch == '_') {
++ toLower = false;
++ continue;
++ }
++ sb.append(toLower ? Character.toLowerCase(ch) : Character.toUpperCase(ch));
++ toLower = true;
++ }
++
++ return sb.toString();
++ }
++
++ public static ShapeType forId(int id, boolean isOoxmlId){
++ for(ShapeType t : values()){
++ if((isOoxmlId && t.ooxmlId == id) ||
++ (!isOoxmlId && t.nativeId == id)) return t;
++ }
++ throw new IllegalArgumentException("Unknown shape type: " + id);
++ }
++}
--- /dev/null
-public interface Sheet extends ShapeContainer {
- public SlideShow getSlideShow();
+ /* ====================================================================
+ 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.sl.usermodel;
+
++import java.awt.Graphics2D;
++
++
+ /**
+ * Common parent of Slides, Notes and Masters
+ */
- public MasterSheet getMasterSheet();
++public interface Sheet<T extends Shape, SS extends SlideShow> extends ShapeContainer<T> {
++ SS getSlideShow();
+
- public Background getBackground();
++ /**
++ * @return whether shapes on the master sheet should be shown. By default master graphics is turned off.
++ * Sheets that support the notion of master (slide, slideLayout) should override it and
++ * check this setting in the sheet XML
++ */
++ boolean getFollowMasterGraphics();
++
++ MasterSheet<T,SS> getMasterSheet();
+
++ Background getBackground();
++
++ /**
++ * Convenience method to draw a sheet to a graphics context
++ *
++ * @param graphics
++ */
++ void draw(Graphics2D graphics);
+ }
--- /dev/null
-public interface SimpleShape extends Shape {
- public Fill getFill();
- public LineStyle getLineStyle();
+ /* ====================================================================
+ 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.sl.usermodel;
+
- public Hyperlink getHyperlink();
- public void setHyperlink(Hyperlink hyperlink);
++import org.apache.poi.sl.draw.geom.CustomGeometry;
++import org.apache.poi.sl.draw.geom.IAdjustableShape;
+
++
++public interface SimpleShape extends Shape, IAdjustableShape, PlaceableShape {
++ FillStyle getFillStyle();
++ LineDecoration getLineDecoration();
++ StrokeStyle getStrokeStyle();
++
++ CustomGeometry getGeometry();
++
++ ShapeType getShapeType();
++
++ boolean isPlaceholder();
++
++ Shadow getShadow();
+ }
--- /dev/null
-public interface Slide extends Sheet {
- public Notes getNotes();
- public void setNotes(Notes notes);
+ /* ====================================================================
+ 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.sl.usermodel;
+
- public boolean getFollowMasterBackground();
- public void setFollowMasterBackground(boolean follow);
++public interface Slide<T extends Shape, SS extends SlideShow, N extends Notes<T,SS>> extends Sheet<T, SS> {
++ N getNotes();
++ void setNotes(N notes);
+
- public boolean getFollowMasterColourScheme();
- public void setFollowMasterColourScheme(boolean follow);
++ boolean getFollowMasterBackground();
++ void setFollowMasterBackground(boolean follow);
+
- public boolean getFollowMasterObjects();
- public void setFollowMasterObjects(boolean follow);
++ boolean getFollowMasterColourScheme();
++ void setFollowMasterColourScheme(boolean follow);
+
++ boolean getFollowMasterObjects();
++ void setFollowMasterObjects(boolean follow);
++
++ /**
++ * @return the 1-based slide no.
++ */
++ int getSlideNumber();
+ }
--- /dev/null
- public Slide createSlide() throws IOException;
- public MasterSheet createMasterSheet() throws IOException;
+ /* ====================================================================
+ 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.sl.usermodel;
+
++import java.awt.Dimension;
+ import java.io.IOException;
++import java.util.List;
+
+ public interface SlideShow {
- public Slide[] getSlides();
- public MasterSheet[] getMasterSheet();
++ Slide<? extends Shape, ? extends SlideShow, ? extends Notes<?,?>> createSlide() throws IOException;
+
- public Resources getResources();
++ List<? extends Slide<? extends Shape, ? extends SlideShow, ? extends Notes<?,?>>> getSlides();
+
++ MasterSheet<? extends Shape, ? extends SlideShow> createMasterSheet() throws IOException;
++
++ /**
++ * Returns all slide masters.
++ * This doesn't include notes master and other arbitrary masters.
++ */
++ List<? extends MasterSheet<? extends Shape, ? extends SlideShow>> getSlideMasters();
++
++ Resources getResources();
++
++ /**
++ * Returns the current page size
++ *
++ * @return the page size
++ */
++ Dimension getPageSize();
+ }
--- /dev/null
--- /dev/null
++/* ====================================================================
++ 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.sl.usermodel;
++
++public interface StrokeStyle {
++ enum LineCap {
++ /** Rounded ends */
++ ROUND(1),
++ /** Square protrudes by half line width */
++ SQUARE(2),
++ /** Line ends at end point*/
++ FLAT(3);
++
++ public final int ooxmlId;
++
++ LineCap(int ooxmlId) {
++ this.ooxmlId = ooxmlId;
++ }
++
++ public static LineCap fromOoxmlId(int ooxmlId) {
++ for (LineCap lc : values()) {
++ if (lc.ooxmlId == ooxmlId) return lc;
++ }
++ return null;
++ }
++ }
++
++ /**
++ * The line dash with pattern.
++ * The pattern is derived empirically on PowerPoint 2010 and needs to be multiplied
++ * with actual line width
++ */
++ enum LineDash {
++ /** Solid (continuous) pen - native 1 */
++ SOLID(1, 1, null),
++ /** square dot style - native 6 */
++ DOT(6, 2, 1,1),
++ /** dash style - native 7 */
++ DASH(7, 3, 3,4),
++ /** dash short dash - native 9*/
++ DASH_DOT(9, 5, 4,3,1,3),
++ /** long dash style - native 8 */
++ LG_DASH(8, 4, 8,3),
++ /** long dash short dash - native 10 */
++ LG_DASH_DOT(10, 6, 8,3,1,3),
++ /** long dash short dash short dash - native 11 */
++ LG_DASH_DOT_DOT(11, 7, 8,3,1,3,1,3),
++ /** PS_DASH system dash style - native 2 */
++ SYS_DASH(2, 8, 2,2),
++ /** PS_DOT system dash style - native 3 */
++ SYS_DOT(3, 9, 1,1),
++ /** PS_DASHDOT system dash style - native 4 */
++ SYS_DASH_DOT(4, 10, 2,2,1,1),
++ /** PS_DASHDOTDOT system dash style / native 5 */
++ SYS_DASH_DOT_DOT(5, 11, 2,2,1,1,1,1);
++
++ public final int pattern[];
++ public final int nativeId;
++ public final int ooxmlId;
++
++ LineDash(int nativeId, int ooxmlId, int... pattern) {
++ this.nativeId = nativeId;
++ this.ooxmlId = ooxmlId;
++ this.pattern = (pattern == null || pattern.length == 0) ? null : pattern;
++ }
++
++ public static LineDash fromNativeId(int nativeId) {
++ for (LineDash ld : values()) {
++ if (ld.nativeId == nativeId) return ld;
++ }
++ return null;
++ }
++
++ public static LineDash fromOoxmlId(int ooxmlId) {
++ for (LineDash ld : values()) {
++ if (ld.ooxmlId == ooxmlId) return ld;
++ }
++ return null;
++ }
++ }
++
++ enum LineCompound {
++ /** Single line (of width lineWidth) - native 0 / ooxml default */
++ SINGLE(0),
++ /** Double lines of equal width - native 1 / ooxml "dbl" */
++ DOUBLE(1),
++ /** Double lines, one thick, one thin - native 2 / ooxml "thickThin" */
++ THICK_THIN(2),
++ /** Double lines, reverse order - native 3 / ooxml "thinThick" */
++ THIN_THICK(3),
++ /** Three lines, thin, thick, thin - native 4 / ooxml "tri" */
++ TRIPLE(4);
++
++ public final int nativeId;
++
++ LineCompound(int nativeId) {
++ this.nativeId = nativeId;
++ }
++
++ public static LineCompound fromNativeId(int nativeId) {
++ for (LineCompound lc : values()) {
++ if (lc.nativeId == nativeId) return lc;
++ }
++ return null;
++ }
++ }
++
++
++ PaintStyle getPaint();
++ LineCap getLineCap();
++ LineDash getLineDash();
++ LineCompound getLineCompound();
++ double getLineWidth();
++}
--- /dev/null
--- /dev/null
++/* ====================================================================\r
++ Licensed to the Apache Software Foundation (ASF) under one or more\r
++ contributor license agreements. See the NOTICE file distributed with\r
++ this work for additional information regarding copyright ownership.\r
++ The ASF licenses this file to You under the Apache License, Version 2.0\r
++ (the "License"); you may not use this file except in compliance with\r
++ the License. You may obtain a copy of the License at\r
++\r
++ http://www.apache.org/licenses/LICENSE-2.0\r
++\r
++ Unless required by applicable law or agreed to in writing, software\r
++ distributed under the License is distributed on an "AS IS" BASIS,\r
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ See the License for the specific language governing permissions and\r
++ limitations under the License.\r
++==================================================================== */\r
++\r
++package org.apache.poi.sl.usermodel;\r
++\r
++public interface TableShape extends Shape, PlaceableShape {\r
++ // to be defined ...\r
++}\r
--- /dev/null
-public interface TextBox extends AutoShape {
+ /* ====================================================================
+ 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.sl.usermodel;
+
++public interface TextBox<T extends TextParagraph<? extends TextRun>> extends AutoShape<T> {
+ }
--- /dev/null
--- /dev/null
++/* ====================================================================\r
++ Licensed to the Apache Software Foundation (ASF) under one or more\r
++ contributor license agreements. See the NOTICE file distributed with\r
++ this work for additional information regarding copyright ownership.\r
++ The ASF licenses this file to You under the Apache License, Version 2.0\r
++ (the "License"); you may not use this file except in compliance with\r
++ the License. You may obtain a copy of the License at\r
++\r
++ http://www.apache.org/licenses/LICENSE-2.0\r
++\r
++ Unless required by applicable law or agreed to in writing, software\r
++ distributed under the License is distributed on an "AS IS" BASIS,\r
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ See the License for the specific language governing permissions and\r
++ limitations under the License.\r
++==================================================================== */\r
++\r
++package org.apache.poi.sl.usermodel;\r
++\r
++import java.awt.Color;\r
++\r
++\r
++public interface TextParagraph<T extends TextRun> extends Iterable<T> {\r
++\r
++ /**\r
++ * Specifies a list of text alignment types\r
++ */\r
++ public enum TextAlign {\r
++ /**\r
++ * For horizontal text, left aligned.\r
++ * For vertical text, top aligned.\r
++ */\r
++ LEFT,\r
++\r
++ /**\r
++ * For horizontal text, centered.\r
++ * For vertical text, middle aligned.\r
++ */\r
++ CENTER,\r
++\r
++ /**\r
++ * For horizontal text, right aligned.\r
++ * For vertical text, bottom aligned.\r
++ */\r
++ RIGHT,\r
++\r
++ /**\r
++ * Align text so that it is justified across the whole line. It\r
++ * is smart in the sense that it will not justify sentences\r
++ * which are short\r
++ * \r
++ * For horizontal text, flush left and right.\r
++ * For vertical text, flush top and bottom.\r
++ */\r
++ JUSTIFY,\r
++ \r
++ /**\r
++ * Kashida justify low.\r
++ */ \r
++ JUSTIFY_LOW,\r
++\r
++ /**\r
++ * Distribute space between characters.\r
++ */\r
++ DIST,\r
++ \r
++ /**\r
++ * Thai distribution justification.\r
++ */\r
++ THAI_DIST\r
++ }\r
++\r
++ /**\r
++ * \r
++ */\r
++ public enum FontAlign {\r
++ AUTO,\r
++ \r
++ /**\r
++ * Characters hang from top of line height.\r
++ * Also known as "Hanging"\r
++ */\r
++ TOP,\r
++ \r
++ /**\r
++ * Characters centered within line height.\r
++ */\r
++ CENTER,\r
++ \r
++ /**\r
++ * Place characters on font baseline.\r
++ * Also known as "Roman" \r
++ */\r
++ BASELINE,\r
++ \r
++ /**\r
++ * Characters are anchored to the very bottom of a single line.\r
++ * This is different than BASELINE because of letters such as "g", "q", and "y".\r
++ * Also known as "UpholdFixed"\r
++ */\r
++ BOTTOM; \r
++ }\r
++ \r
++ public interface BulletStyle {\r
++ String getBulletCharacter();\r
++ String getBulletFont();\r
++ \r
++ /**\r
++ * The bullet point font size\r
++ * If bulletFontSize >= 0, then space is a percentage of normal line height.\r
++ * If bulletFontSize < 0, the absolute value in points\r
++ *\r
++ * @return the bullet point font size\r
++ */\r
++ Double getBulletFontSize();\r
++ Color getBulletFontColor();\r
++ \r
++ AutoNumberingScheme getAutoNumberingScheme();\r
++ /**\r
++ * Index (1-based) of the first auto number value, or null if auto numbering scheme\r
++ * wasn't assigned.\r
++ */\r
++ Integer getAutoNumberingStartAt();\r
++ }\r
++\r
++ /**\r
++ * The amount of vertical white space before the paragraph\r
++ * This may be specified in two different ways, percentage spacing and font point spacing:\r
++ * <p>\r
++ * If spaceBefore >= 0, then space is a percentage of normal line height.\r
++ * If spaceBefore < 0, the absolute value in points\r
++ * </p>\r
++ *\r
++ * @return the vertical white space before the paragraph, or null if unset\r
++ */\r
++ Double getSpaceBefore();\r
++\r
++ /**\r
++ * Set the amount of vertical white space that will be present before the paragraph.\r
++ * This space is specified in either percentage or points:\r
++ * <p>\r
++ * If spaceBefore >= 0, then space is a percentage of normal line height.\r
++ * If spaceBefore < 0, the absolute value of linespacing is the spacing in points\r
++ * </p>\r
++ * Examples:\r
++ * <pre><code>\r
++ * // The paragraph will be formatted to have a spacing before the paragraph text.\r
++ * // The spacing will be 200% of the size of the largest text on each line\r
++ * paragraph.setSpaceBefore(200);\r
++ *\r
++ * // The spacing will be a size of 48 points\r
++ * paragraph.setSpaceBefore(-48.0);\r
++ * </code></pre>\r
++ *\r
++ * @param spaceBefore the vertical white space before the paragraph, null to unset\r
++ */\r
++ void setSpaceBefore(Double spaceBefore); \r
++ \r
++ /**\r
++ * The amount of vertical white space after the paragraph\r
++ * This may be specified in two different ways, percentage spacing and font point spacing:\r
++ * <p>\r
++ * If spaceBefore >= 0, then space is a percentage of normal line height.\r
++ * If spaceBefore < 0, the absolute value of linespacing is the spacing in points\r
++ * </p>\r
++ *\r
++ * @return the vertical white space after the paragraph or null, if unset\r
++ */\r
++ Double getSpaceAfter(); \r
++\r
++ /**\r
++ * Set the amount of vertical white space that will be present after the paragraph.\r
++ * This space is specified in either percentage or points:\r
++ * <p>\r
++ * If spaceAfter >= 0, then space is a percentage of normal line height.\r
++ * If spaceAfter < 0, the absolute value of linespacing is the spacing in points\r
++ * </p>\r
++ * Examples:\r
++ * <pre><code>\r
++ * // The paragraph will be formatted to have a spacing after the paragraph text.\r
++ * // The spacing will be 200% of the size of the largest text on each line\r
++ * paragraph.setSpaceAfter(200);\r
++ *\r
++ * // The spacing will be a size of 48 points\r
++ * paragraph.setSpaceAfter(-48.0);\r
++ * </code></pre>\r
++ *\r
++ * @param spaceAfter the vertical white space after the paragraph, null to unset\r
++ */\r
++ public void setSpaceAfter(Double spaceAfter);\r
++ \r
++ /**\r
++ * @return the left margin (in points) of the paragraph or null, if unset\r
++ */\r
++ Double getLeftMargin();\r
++\r
++ /**\r
++ * Specifies the left margin of the paragraph. This is specified in addition to the text body\r
++ * inset and applies only to this text paragraph. That is the text body Inset and the LeftMargin\r
++ * attributes are additive with respect to the text position.\r
++ * \r
++ * @param leftMargin the left margin (in points) or null to unset\r
++ */\r
++ void setLeftMargin(Double leftMargin);\r
++ \r
++ \r
++ /**\r
++ * Specifies the right margin of the paragraph. This is specified in addition to the text body\r
++ * inset and applies only to this text paragraph. That is the text body Inset and the RightMargin\r
++ * attributes are additive with respect to the text position.\r
++ * \r
++ * The right margin is not support and therefore ignored by the HSLF implementation.\r
++ * \r
++ * @return the right margin (in points) of the paragraph or null, if unset\r
++ */\r
++ Double getRightMargin();\r
++\r
++ /**\r
++ * @param rightMargin the right margin (in points) of the paragraph\r
++ */\r
++ void setRightMargin(Double rightMargin);\r
++ \r
++ /**\r
++ * @return the indent (in points) applied to the first line of text in the paragraph.\r
++ * or null, if unset\r
++ */\r
++ Double getIndent();\r
++ \r
++ /**\r
++ * Specifies the indent size that will be applied to the first line of text in the paragraph. \r
++ * \r
++ * @param indent the indent (in points) applied to the first line of text in the paragraph\r
++ */\r
++ void setIndent(Double indent);\r
++\r
++\r
++ /**\r
++ * @return the text level of this paragraph (0-based). Default is 0.\r
++ */ \r
++ int getIndentLevel();\r
++\r
++ /**\r
++ * Specifies the particular level text properties that this paragraph will follow.\r
++ * The value for this attribute formats the text according to the corresponding level\r
++ * paragraph properties defined in the SlideMaster.\r
++ *\r
++ * @param level the level (0 ... 4)\r
++ */\r
++ void setIndentLevel(int level);\r
++ \r
++ /**\r
++ * Returns the vertical line spacing that is to be used within a paragraph.\r
++ * This may be specified in two different ways, percentage spacing and font point spacing:\r
++ * <p>\r
++ * If linespacing >= 0, then linespacing is a percentage of normal line height.\r
++ * If linespacing < 0, the absolute value of linespacing is the spacing in points\r
++ * </p>\r
++ *\r
++ * @return the vertical line spacing or null, if unset\r
++ */\r
++ Double getLineSpacing();\r
++ \r
++ /**\r
++ * This element specifies the vertical line spacing that is to be used within a paragraph.\r
++ * This may be specified in two different ways, percentage spacing and font point spacing:\r
++ * <p>\r
++ * If linespacing >= 0, then linespacing is a percentage of normal line height\r
++ * If linespacing < 0, the absolute value of linespacing is the spacing in points\r
++ * </p>\r
++ * Examples:\r
++ * <pre><code>\r
++ * // spacing will be 120% of the size of the largest text on each line\r
++ * paragraph.setLineSpacing(120);\r
++ *\r
++ * // spacing will be 200% of the size of the largest text on each line\r
++ * paragraph.setLineSpacing(200);\r
++ *\r
++ * // spacing will be 48 points\r
++ * paragraph.setLineSpacing(-48.0);\r
++ * </code></pre>\r
++ * \r
++ * @param linespacing the vertical line spacing\r
++ */\r
++ void setLineSpacing(Double lineSpacing);\r
++\r
++ String getDefaultFontFamily();\r
++ \r
++ /**\r
++ * @return the default font size, in case its not set in the textrun or null, if unset\r
++ */\r
++ Double getDefaultFontSize();\r
++ \r
++ /**\r
++ * Returns the alignment that is applied to the paragraph.\r
++ *\r
++ * If this attribute is omitted, then a value of left is implied.\r
++ * @return ??? alignment that is applied to the paragraph\r
++ */\r
++ TextAlign getTextAlign();\r
++ \r
++ \r
++ /**\r
++ * Returns the font alignment that is applied to the paragraph.\r
++ *\r
++ * If this attribute is omitted, then null is return,\r
++ * user code can imply the a value of {@link FontAlign#AUTO}\r
++ * \r
++ * @return alignment that is applied to the paragraph\r
++ */\r
++ FontAlign getFontAlign();\r
++ \r
++ /**\r
++ * @return the bullet style of the paragraph, if {@code null} then no bullets are used \r
++ */\r
++ BulletStyle getBulletStyle();\r
++ \r
++ /**\r
++ * @return the default size for a tab character within this paragraph in points, null if unset\r
++ */\r
++ Double getDefaultTabSize();\r
++\r
++ \r
++ TextShape<? extends TextParagraph<T>> getParentShape();\r
++}\r
--- /dev/null
- *
- * TODO - decide on how we do rich text stuff
+ /* ====================================================================
+ 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.sl.usermodel;
+
++import java.awt.Color;
++
+ /**
+ * Some text.
- public String getText();
- public void setText(String text);
+ */
+ public interface TextRun {
- // TODO - rich text formatting stuff
++ enum TextCap {
++ NONE,
++ SMALL,
++ ALL
++ }
++
++ String getRawText();
++ void setText(String text);
++
++ TextCap getTextCap();
++
++ Color getFontColor();
++ void setFontColor(Color color);
++
++
++ /**
++ * @return font size in points or null if font size is not set.
++ */
++ Double getFontSize();
+
++ /**
++ * @param fontSize font size in points, if null the underlying fontsize will be unset
++ */
++ void setFontSize(Double fontSize);
++ String getFontFamily();
++
++ boolean isBold();
++ boolean isItalic();
++ boolean isUnderlined();
++ boolean isStrikethrough();
++ boolean isSubscript();
++ boolean isSuperscript();
++
++ /**
++ * @return the pitch and family id or -1 if not applicable
++ */
++ byte getPitchAndFamily();
+ }
--- /dev/null
--- /dev/null
++/* ====================================================================\r
++ Licensed to the Apache Software Foundation (ASF) under one or more\r
++ contributor license agreements. See the NOTICE file distributed with\r
++ this work for additional information regarding copyright ownership.\r
++ The ASF licenses this file to You under the Apache License, Version 2.0\r
++ (the "License"); you may not use this file except in compliance with\r
++ the License. You may obtain a copy of the License at\r
++\r
++ http://www.apache.org/licenses/LICENSE-2.0\r
++\r
++ Unless required by applicable law or agreed to in writing, software\r
++ distributed under the License is distributed on an "AS IS" BASIS,\r
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ See the License for the specific language governing permissions and\r
++ limitations under the License.\r
++==================================================================== */\r
++\r
++package org.apache.poi.sl.usermodel;\r
++\r
++import org.apache.poi.ss.usermodel.HorizontalAlignment;\r
++\r
++\r
++\r
++public interface TextShape<T extends TextParagraph<? extends TextRun>> extends SimpleShape, Iterable<T> {\r
++ /**\r
++ * Vertical Text Types\r
++ */\r
++ public enum TextDirection {\r
++ /**\r
++ * Horizontal text. This should be default.\r
++ */\r
++ HORIZONTAL,\r
++ /**\r
++ * Vertical orientation.\r
++ * (each line is 90 degrees rotated clockwise, so it goes\r
++ * from top to bottom; each next line is to the left from\r
++ * the previous one).\r
++ */\r
++ VERTICAL,\r
++ /**\r
++ * Vertical orientation.\r
++ * (each line is 270 degrees rotated clockwise, so it goes\r
++ * from bottom to top; each next line is to the right from\r
++ * the previous one).\r
++ */\r
++ VERTICAL_270,\r
++ /**\r
++ * Determines if all of the text is vertical\r
++ * ("one letter on top of another").\r
++ */\r
++ STACKED;\r
++ }\r
++\r
++ /**\r
++ * Specifies alist of auto-fit types.\r
++ * <p>\r
++ * Autofit specofies that a shape should be auto-fit to fully contain the text described within it.\r
++ * Auto-fitting is when text within a shape is scaled in order to contain all the text inside\r
++ * </p>\r
++ */\r
++ public enum TextAutofit {\r
++ /**\r
++ * Specifies that text within the text body should not be auto-fit to the bounding box.\r
++ * Auto-fitting is when text within a text box is scaled in order to remain inside\r
++ * the text box.\r
++ */\r
++ NONE,\r
++ /**\r
++ * Specifies that text within the text body should be normally auto-fit to the bounding box.\r
++ * Autofitting is when text within a text box is scaled in order to remain inside the text box.\r
++ *\r
++ * <p>\r
++ * <em>Example:</em> Consider the situation where a user is building a diagram and needs\r
++ * to have the text for each shape that they are using stay within the bounds of the shape.\r
++ * An easy way this might be done is by using NORMAL autofit\r
++ * </p>\r
++ */\r
++ NORMAL,\r
++ /**\r
++ * Specifies that a shape should be auto-fit to fully contain the text described within it.\r
++ * Auto-fitting is when text within a shape is scaled in order to contain all the text inside.\r
++ *\r
++ * <p>\r
++ * <em>Example:</em> Consider the situation where a user is building a diagram and needs to have\r
++ * the text for each shape that they are using stay within the bounds of the shape.\r
++ * An easy way this might be done is by using SHAPE autofit\r
++ * </p>\r
++ */\r
++ SHAPE\r
++ } \r
++ \r
++ /**\r
++ * @return text shape margin\r
++ */\r
++ Insets2D getInsets();\r
++ \r
++ /**\r
++ * Compute the cumulative height occupied by the text\r
++ */\r
++ double getTextHeight();\r
++ \r
++ /**\r
++ * Returns the type of vertical alignment for the text.\r
++ *\r
++ * @return the type of vertical alignment\r
++ */\r
++ VerticalAlignment getVerticalAlignment();\r
++ \r
++ /**\r
++ * Returns if the text is centered.\r
++ * If true and if the individual paragraph settings allow it,\r
++ * the whole text block will be displayed centered, i.e. its left and right\r
++ * margin will be maximized while still keeping the alignment of the paragraphs\r
++ *\r
++ * @return true, if the text anchor is horizontal centered \r
++ */\r
++ boolean isHorizontalCentered();\r
++ \r
++ /**\r
++ * @return whether to wrap words within the bounding rectangle\r
++ */\r
++ boolean getWordWrap();\r
++ \r
++ /**\r
++ * @return vertical orientation of the text\r
++ */\r
++ TextDirection getTextDirection();\r
++}\r
--- /dev/null
--- /dev/null
++/*\r
++ * ====================================================================\r
++ * Licensed to the Apache Software Foundation (ASF) under one or more\r
++ * contributor license agreements. See the NOTICE file distributed with\r
++ * this work for additional information regarding copyright ownership.\r
++ * The ASF licenses this file to You under the Apache License, Version 2.0\r
++ * (the "License"); you may not use this file except in compliance with\r
++ * the License. You may obtain a copy of the License at\r
++ *\r
++ * http://www.apache.org/licenses/LICENSE-2.0\r
++ *\r
++ * Unless required by applicable law or agreed to in writing, software\r
++ * distributed under the License is distributed on an "AS IS" BASIS,\r
++ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
++ * See the License for the specific language governing permissions and\r
++ * limitations under the License.\r
++ * ====================================================================\r
++ */\r
++package org.apache.poi.sl.usermodel;\r
++\r
++/**\r
++ * Specifies a list of available anchoring types for text\r
++ * \r
++ * @author Yegor Kozlov\r
++ */\r
++public enum VerticalAlignment {\r
++ /**\r
++ * Anchor the text at the top of the bounding rectangle\r
++ */\r
++ TOP,\r
++\r
++ /**\r
++ * Anchor the text at the middle of the bounding rectangle\r
++ */\r
++ MIDDLE,\r
++\r
++ /**\r
++ * Anchor the text at the bottom of the bounding rectangle.\r
++ */\r
++ BOTTOM,\r
++\r
++ /**\r
++ * Anchor the text so that it is justified vertically.\r
++ * <p>\r
++ * When text is horizontal, this spaces out the actual lines of\r
++ * text and is almost always identical in behavior to\r
++ * {@link #DISTRIBUTED} (special case: if only 1 line, then anchored at top).\r
++ * </p>\r
++ * <p>\r
++ * When text is vertical, then it justifies the letters\r
++ * vertically. This is different than {@link #DISTRIBUTED},\r
++ * because in some cases such as very little text in a line,\r
++ * it will not justify.\r
++ * </p>\r
++ */\r
++ JUSTIFIED,\r
++\r
++ /**\r
++ * Anchor the text so that it is distributed vertically.\r
++ * <p>\r
++ * When text is horizontal, this spaces out the actual lines\r
++ * of text and is almost always identical in behavior to\r
++ * {@link #JUSTIFIED} (special case: if only 1 line, then anchored in middle).\r
++ * </p>\r
++ * <p>\r
++ * When text is vertical, then it distributes the letters vertically.\r
++ * This is different than {@link #JUSTIFIED}, because it always forces distribution\r
++ * of the words, even if there are only one or two words in a line.\r
++ */\r
++ DISTRIBUTED\r
++}\r
ss.setSlideOrder(slide, 2);
validateSlides(ss, true, "Slide1","Slide2","New slide");
}
- XSLFSlide slide = ss.getSlides()[0];
+
+ /**
+ * When working with >9 images, make sure the sorting ensures
+ * that image10.foo isn't between image1.foo and image2.foo
+ */
+ @Test
+ public void test57552() throws Exception {
+ XMLSlideShow ss = new XMLSlideShow();
+ for (String s : new String[]{"Slide1","Slide2"}) {
+ ss.createSlide().createTextBox().setText(s);
+ }
+
+ // Slide starts with just layout relation
- assertEquals(1, slide.getShapes().length);
++ XSLFSlide slide = ss.getSlides().get(0);
+ assertEquals(0, ss.getAllPictures().size());
- assertEquals(i+2, slide.getShapes().length);
++ assertEquals(1, slide.getShapes().size());
+
+ assertEquals(1, slide.getRelations().size());
+ assertRelationEquals(XSLFRelation.SLIDE_LAYOUT, slide.getRelations().get(0));
+
+ // Some dummy pictures
+ byte[][] pics = new byte[15][3];
+ for (int i=0; i<pics.length; i++) {
+ for (int j=0; j<pics[i].length; j++) {
+ pics[i][j] = (byte)i;
+ }
+ }
+
+ // Add a few pictures
+ for (int i=0; i<10; i++) {
+ int idx = ss.addPicture(pics[i], XSLFPictureData.PICTURE_TYPE_JPEG);
+ assertEquals(i, idx);
+ assertEquals(i+1, ss.getAllPictures().size());
+
+ XSLFPictureShape shape = slide.createPicture(idx);
+ assertNotNull(shape.getPictureData());
+ assertArrayEquals(pics[i], shape.getPictureData().getData());
- XSLFPictureShape shape = (XSLFPictureShape)slide.getShapes()[i+1];
++ assertEquals(i+2, slide.getShapes().size());
+ }
+ // Re-fetch the pictures and check
+ for (int i=0; i<10; i++) {
- assertEquals(i+2, slide.getShapes().length);
++ XSLFPictureShape shape = (XSLFPictureShape)slide.getShapes().get(i+1);
+ assertNotNull(shape.getPictureData());
+ assertArrayEquals(pics[i], shape.getPictureData().getData());
+ }
+
+ // Add past 10
+ for (int i=10; i<15; i++) {
+ int idx = ss.addPicture(pics[i], XSLFPictureData.PICTURE_TYPE_JPEG);
+ assertEquals(i, idx);
+ assertEquals(i+1, ss.getAllPictures().size());
+
+ XSLFPictureShape shape = slide.createPicture(idx);
+ assertNotNull(shape.getPictureData());
+ assertArrayEquals(pics[i], shape.getPictureData().getData());
- XSLFPictureShape shape = (XSLFPictureShape)slide.getShapes()[i+1];
++ assertEquals(i+2, slide.getShapes().size());
+ }
+ // Check all pictures
+ for (int i=0; i<15; i++) {
- assertEquals(17, slide.getShapes().length);
++ XSLFPictureShape shape = (XSLFPictureShape)slide.getShapes().get(i+1);
+ assertNotNull(shape.getPictureData());
+ assertArrayEquals(pics[i], shape.getPictureData().getData());
+ }
+
+ // Add a duplicate, check the right one is picked
+ int idx = ss.addPicture(pics[3], XSLFPictureData.PICTURE_TYPE_JPEG);
+ assertEquals(3, idx);
+ assertEquals(15, ss.getAllPictures().size());
+
+ XSLFPictureShape shape = slide.createPicture(idx);
+ assertNotNull(shape.getPictureData());
+ assertArrayEquals(pics[3], shape.getPictureData().getData());
- slide = ss.getSlides()[0];
++ assertEquals(17, slide.getShapes().size());
+
+
+ // Save and re-load
+ ss = XSLFTestDataSamples.writeOutAndReadBack(ss);
- shape = (XSLFPictureShape)slide.getShapes()[i+1];
++ slide = ss.getSlides().get(0);
+
+ // Check the 15 individual ones added
+ for (int i=0; i<15; i++) {
- shape = (XSLFPictureShape)slide.getShapes()[16];
++ shape = (XSLFPictureShape)slide.getShapes().get(i+1);
+ assertNotNull(shape.getPictureData());
+ assertArrayEquals(pics[i], shape.getPictureData().getData());
+ }
+
+ // Check the duplicate
- assertEquals(18, slide.getShapes().length);
++ shape = (XSLFPictureShape)slide.getShapes().get(16);
+ assertNotNull(shape.getPictureData());
+ assertArrayEquals(pics[3], shape.getPictureData().getData());
+
+ // Add another duplicate
+ idx = ss.addPicture(pics[5], XSLFPictureData.PICTURE_TYPE_JPEG);
+ assertEquals(5, idx);
+ assertEquals(15, ss.getAllPictures().size());
+
+ shape = slide.createPicture(idx);
+ assertNotNull(shape.getPictureData());
+ assertArrayEquals(pics[5], shape.getPictureData().getData());
++ assertEquals(18, slide.getShapes().size());
+ }
private void validateSlides(XMLSlideShow ss, boolean saveAndReload, String... slideTexts) {
if (saveAndReload) {
}
/**
- * EMF signature is <code>0x3D40</code>
+ * EMF signature is {@code 0x3D40} or {@code 0x3D50}
*
- * @return EMF signature (<code>0x3D40</code>)
+ * @return EMF signature ({@code 0x3D40} or {@code 0x3D50})
*/
- public int getSignature() {
+ public int getSignature(){
- return 0x3D40;
+ return (uidInstanceCount == 1 ? 0x3D40 : 0x3D50);
+ }
+
+ /**
+ * Sets the EMF signature - either {@code 0x3D40} or {@code 0x3D50}
+ */
+ public void setSignature(int signature) {
+ switch (signature) {
+ case 0x3D40:
+ uidInstanceCount = 1;
+ break;
+ case 0x3D50:
+ uidInstanceCount = 2;
+ break;
+ default:
+ throw new IllegalArgumentException(signature+" is not a valid instance/signature value for EMF");
+ }
}
+
+ public String getContentType() {
+ return "image/x-emf";
+ }
}
*/
public final class JPEG extends Bitmap {
+ public enum ColorSpace { rgb, cymk };
+
+ private ColorSpace colorSpace = ColorSpace.rgb;
+
/**
* @return type of this picture
- * @see org.apache.poi.hslf.model.Picture#JPEG
+ * @see org.apache.poi.hslf.usermodel.HSLFPictureShape#JPEG
*/
public int getType(){
- return Picture.JPEG;
+ return HSLFPictureShape.JPEG;
}
+ public ColorSpace getColorSpace() {
+ return colorSpace;
+ }
+
+ public void setColorSpace(ColorSpace colorSpace) {
+ this.colorSpace = colorSpace;
+ }
+
/**
- * JPEG signature is <code>0x46A0</code>
+ * JPEG signature is one of {@code 0x46A0, 0x46B0, 0x6E20, 0x6E30}
*
- * @return JPEG signature (<code>0x46A0</code>)
+ * @return JPEG signature ({@code 0x46A0, 0x46B0, 0x6E20, 0x6E30})
*/
public int getSignature(){
- return 0x46A0;
+ return (colorSpace == ColorSpace.rgb)
+ ? (uidInstanceCount == 1 ? 0x46A0 : 0x46B0)
+ : (uidInstanceCount == 1 ? 0x6E20 : 0x6E30);
+ }
+
+ /**
+ * Sets the PICT signature - either {@code 0x5420} or {@code 0x5430}
+ */
+ public void setSignature(int signature) {
+ switch (signature) {
+ case 0x46A0:
+ uidInstanceCount = 1;
+ colorSpace = ColorSpace.rgb;
+ break;
+ case 0x46B0:
+ uidInstanceCount = 2;
+ colorSpace = ColorSpace.rgb;
+ break;
+ case 0x6E20:
+ uidInstanceCount = 1;
+ colorSpace = ColorSpace.cymk;
+ break;
+ case 0x6E30:
+ uidInstanceCount = 2;
+ colorSpace = ColorSpace.cymk;
+ break;
+ default:
+ throw new IllegalArgumentException(signature+" is not a valid instance/signature value for JPEG");
+ }
- }
+ }
+
+ public String getContentType() {
+ return "image/jpeg";
+ }
}
}
/**
- * PICT signature is <code>0x5430</code>
+ * PICT signature is {@code 0x5420} or {@code 0x5430}
*
- * @return PICT signature (<code>0x5430</code>)
+ * @return PICT signature ({@code 0x5420} or {@code 0x5430})
*/
public int getSignature(){
- return 0x5430;
+ return (uidInstanceCount == 1 ? 0x5420 : 0x5430);
+ }
+
+ /**
+ * Sets the PICT signature - either {@code 0x5420} or {@code 0x5430}
+ */
+ public void setSignature(int signature) {
+ switch (signature) {
+ case 0x5420:
+ uidInstanceCount = 1;
+ break;
+ case 0x5430:
+ uidInstanceCount = 2;
+ break;
+ default:
+ throw new IllegalArgumentException(signature+" is not a valid instance/signature value for PICT");
+ }
}
+
+ public String getContentType() {
+ return "image/x-pict";
+ }
+
}
}
/**
- * PNG signature is <code>0x6E00</code>
+ * PNG signature is {@code 0x6E00} or {@code 0x6E10}
*
- * @return PNG signature (<code>0x6E00</code>)
+ * @return PNG signature ({@code 0x6E00} or {@code 0x6E10})
*/
public int getSignature(){
- return 0x6E00;
+ return (uidInstanceCount == 1 ? 0x6E00 : 0x6E10);
+ }
+
+ /**
+ * Sets the PNG signature - either {@code 0x6E00} or {@code 0x6E10}
+ */
+ public void setSignature(int signature) {
+ switch (signature) {
+ case 0x6E00:
+ uidInstanceCount = 1;
+ break;
+ case 0x6E10:
+ uidInstanceCount = 2;
+ break;
+ default:
+ throw new IllegalArgumentException(signature+" is not a valid instance/signature value for PNG");
+ }
}
+
+ public String getContentType() {
+ return "image/png";
+ }
}
package org.apache.poi.hslf.dev;
- import java.io.*;
-
- import org.apache.poi.poifs.filesystem.POIFSFileSystem;
+ import java.io.File;
+ import java.io.IOException;
+ import java.io.InputStream;
+
+ import org.apache.poi.ddf.DefaultEscherRecordFactory;
+ import org.apache.poi.ddf.EscherContainerRecord;
+ import org.apache.poi.ddf.EscherRecord;
+ import org.apache.poi.ddf.EscherTextboxRecord;
+ import org.apache.poi.hslf.record.RecordTypes;
import org.apache.poi.poifs.filesystem.DocumentEntry;
- import org.apache.poi.ddf.*;
+ import org.apache.poi.poifs.filesystem.NPOIFSFileSystem;
+import org.apache.poi.hslf.record.HSLFEscherRecordFactory;
+import org.apache.poi.hslf.record.RecordTypes;
import org.apache.poi.util.LittleEndian;
/**
package org.apache.poi.hslf.extractor;
+import java.io.*;
+ import java.io.File;
+ import java.io.IOException;
+ import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
-import org.apache.poi.hslf.model.TextRun;
-import org.apache.poi.hslf.record.CString;
-import org.apache.poi.hslf.record.Record;
-import org.apache.poi.hslf.record.RecordTypes;
-import org.apache.poi.hslf.record.StyleTextPropAtom;
-import org.apache.poi.hslf.record.TextBytesAtom;
-import org.apache.poi.hslf.record.TextCharsAtom;
-import org.apache.poi.hslf.record.TextHeaderAtom;
+import org.apache.poi.hslf.record.*;
+import org.apache.poi.hslf.usermodel.HSLFTextParagraph;
+import org.apache.poi.hslf.usermodel.HSLFTextShape;
import org.apache.poi.poifs.filesystem.DocumentEntry;
- import org.apache.poi.poifs.filesystem.POIFSFileSystem;
+ import org.apache.poi.poifs.filesystem.NPOIFSFileSystem;
import org.apache.poi.util.LittleEndian;
/**
--- /dev/null
+/* ====================================================================
+ 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.hslf.usermodel;
+
+import java.io.IOException;
+import java.io.OutputStream;
+import java.security.MessageDigest;
+
+import org.apache.poi.hslf.blip.*;
+import org.apache.poi.poifs.crypt.CryptoFunctions;
+import org.apache.poi.poifs.crypt.HashAlgorithm;
+import org.apache.poi.sl.usermodel.PictureData;
+import org.apache.poi.util.*;
+
+/**
+ * A class that represents image data contained in a slide show.
+ *
+ * @author Yegor Kozlov
+ */
+public abstract class HSLFPictureData implements PictureData {
+
+ protected POILogger logger = POILogFactory.getLogger(this.getClass());
+
+ /**
+ * Size of the image checksum calculated using MD5 algorithm.
+ */
+ protected static final int CHECKSUM_SIZE = 16;
+
+ /**
+ * Binary data of the picture
+ */
+ private byte[] rawdata;
+ /**
+ * The offset to the picture in the stream
+ */
+ protected int offset;
+
++ /**
++ * The instance type/signatures defines if one or two UID instances will be included
++ */
++ protected int uidInstanceCount = 1;
++
+ /**
+ * Returns type of this picture.
+ * Must be one of the static constants defined in the <code>Picture<code> class.
+ *
+ * @return type of this picture.
+ */
+ public abstract int getType();
+
+
+ /**
+ * Returns content type (mime type) of this picture.
+ *
+ * @return content type of this picture.
+ */
+ public abstract String getContentType();
+
+ /**
+ * Returns the binary data of this Picture
+ * @return picture data
+ */
+ public abstract byte[] getData();
+
+ /**
+ * Set picture data
+ */
+ public abstract void setData(byte[] data) throws IOException;
+
+ /**
+ * Blip signature.
+ */
+ protected abstract int getSignature();
+
++ public abstract void setSignature(int signature);
++
++ /**
++ * The instance type/signatures defines if one or two UID instances will be included
++ */
++ protected int getUIDInstanceCount() {
++ return uidInstanceCount;
++ }
++
+ /**
+ * Returns the raw binary data of this Picture excluding the first 8 bytes
+ * which hold image signature and size of the image data.
+ *
+ * @return picture data
+ */
+ public byte[] getRawData(){
+ return rawdata;
+ }
+
+ public void setRawData(byte[] data){
+ rawdata = data;
+ }
+
+ /**
+ * File offset in the 'Pictures' stream
+ *
+ * @return offset in the 'Pictures' stream
+ */
+ public int getOffset(){
+ return offset;
+ }
+
+ /**
+ * Set offset of this picture in the 'Pictures' stream.
+ * We need to set it when a new picture is created.
+ *
+ * @param offset in the 'Pictures' stream
+ */
+ public void setOffset(int offset){
+ this.offset = offset;
+ }
+
+ /**
+ * Returns 16-byte checksum of this picture
+ */
+ public byte[] getUID(){
+ byte[] uid = new byte[16];
+ System.arraycopy(rawdata, 0, uid, 0, uid.length);
+ return uid;
+ }
+
+
+ /**
+ * Compute 16-byte checksum of this picture using MD5 algorithm.
+ */
+ public static byte[] getChecksum(byte[] data) {
+ MessageDigest md5 = CryptoFunctions.getMessageDigest(HashAlgorithm.md5);
+ md5.update(data);
+ return md5.digest();
+ }
+
+ /**
+ * Write this picture into <code>OutputStream</code>
+ */
+ public void write(OutputStream out) throws IOException {
+ byte[] data;
+
+ data = new byte[LittleEndian.SHORT_SIZE];
+ LittleEndian.putUShort(data, 0, getSignature());
+ out.write(data);
+
+ data = new byte[LittleEndian.SHORT_SIZE];
+ LittleEndian.putUShort(data, 0, getType() + 0xF018);
+ out.write(data);
+
+ byte[] rawdata = getRawData();
+
+ data = new byte[LittleEndian.INT_SIZE];
+ LittleEndian.putInt(data, 0, rawdata.length);
+ out.write(data);
+
+ out.write(rawdata);
+ }
+
+ /**
+ * Create an instance of <code>PictureData</code> by type.
+ *
+ * @param type type of the picture data.
+ * Must be one of the static constants defined in the <code>Picture<code> class.
+ * @return concrete instance of <code>PictureData</code>
+ */
+ public static HSLFPictureData create(int type){
+ HSLFPictureData pict;
+ switch (type){
+ case HSLFPictureShape.EMF:
+ pict = new EMF();
+ break;
+ case HSLFPictureShape.WMF:
+ pict = new WMF();
+ break;
+ case HSLFPictureShape.PICT:
+ pict = new PICT();
+ break;
+ case HSLFPictureShape.JPEG:
+ pict = new JPEG();
+ break;
+ case HSLFPictureShape.PNG:
+ pict = new PNG();
+ break;
+ case HSLFPictureShape.DIB:
+ pict = new DIB();
+ break;
+ default:
+ throw new IllegalArgumentException("Unsupported picture type: " + type);
+ }
+ return pict;
+ }
+
+ /**
+ * Return 24 byte header which preceeds the actual picture data.
+ * <p>
+ * The header consists of 2-byte signature, 2-byte type,
+ * 4-byte image size and 16-byte checksum of the image data.
+ * </p>
+ *
+ * @return the 24 byte header which preceeds the actual picture data.
+ */
+ public byte[] getHeader() {
+ byte[] header = new byte[16 + 8];
+ LittleEndian.putInt(header, 0, getSignature());
+ LittleEndian.putInt(header, 4, getRawData().length);
+ System.arraycopy(rawdata, 0, header, 8, 16);
+ return header;
+ }
+
+ /**
+ * Return image size in bytes
+ *
+ * @return the size of the picture in bytes
+ * @deprecated Use <code>getData().length</code> instead.
+ */
+ public int getSize(){
+ return getData().length;
+ }
+}
--- /dev/null
- (float)Units.masterToPoints(x),
- (float)Units.masterToPoints(y),
- (float)Units.masterToPoints(w),
- (float)Units.masterToPoints(h)
+/* ====================================================================
+ 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.hslf.usermodel;
+
+import java.awt.Color;
+import java.awt.Graphics2D;
+import java.awt.geom.Rectangle2D;
+import java.util.Iterator;
+
+import org.apache.poi.ddf.*;
+import org.apache.poi.hslf.record.ColorSchemeAtom;
+import org.apache.poi.hslf.record.RecordTypes;
+import org.apache.poi.sl.usermodel.*;
+import org.apache.poi.util.*;
+
+/**
+ * <p>
+ * Represents a Shape which is the elemental object that composes a drawing.
+ * This class is a wrapper around EscherSpContainer which holds all information
+ * about a shape in PowerPoint document.
+ * </p>
+ * <p>
+ * When you add a shape, you usually specify the dimensions of the shape and the position
+ * of the upper'left corner of the bounding box for the shape relative to the upper'left
+ * corner of the page, worksheet, or slide. Distances in the drawing layer are measured
+ * in points (72 points = 1 inch).
+ * </p>
+ * <p>
+ *
+ * @author Yegor Kozlov
+ */
+public abstract class HSLFShape implements Shape {
+
+ // For logging
+ protected POILogger logger = POILogFactory.getLogger(this.getClass());
+
+ /**
+ * In Escher absolute distances are specified in
+ * English Metric Units (EMUs), occasionally referred to as A units;
+ * there are 360000 EMUs per centimeter, 914400 EMUs per inch, 12700 EMUs per point.
+ */
+ public static final int EMU_PER_INCH = 914400;
+ public static final int EMU_PER_POINT = 12700;
+ public static final int EMU_PER_CENTIMETER = 360000;
+
+ /**
+ * Master DPI (576 pixels per inch).
+ * Used by the reference coordinate system in PowerPoint.
+ */
+ public static final int MASTER_DPI = 576;
+
+ /**
+ * Pixels DPI (96 pixels per inch)
+ */
+ public static final int PIXEL_DPI = 96;
+
+ /**
+ * Points DPI (72 pixels per inch)
+ */
+ public static final int POINT_DPI = 72;
+
+ /**
+ * Either EscherSpContainer or EscheSpgrContainer record
+ * which holds information about this shape.
+ */
+ protected EscherContainerRecord _escherContainer;
+
+ /**
+ * Parent of this shape.
+ * <code>null</code> for the topmost shapes.
+ */
+ protected ShapeContainer<HSLFShape> _parent;
+
+ /**
+ * The <code>Sheet</code> this shape belongs to
+ */
+ protected HSLFSheet _sheet;
+
+ /**
+ * Fill
+ */
+ protected HSLFFill _fill;
+
+ /**
+ * Create a Shape object. This constructor is used when an existing Shape is read from from a PowerPoint document.
+ *
+ * @param escherRecord <code>EscherSpContainer</code> container which holds information about this shape
+ * @param parent the parent of this Shape
+ */
+ protected HSLFShape(EscherContainerRecord escherRecord, ShapeContainer<HSLFShape> parent){
+ _escherContainer = escherRecord;
+ _parent = parent;
+ }
+
+ /**
+ * Creates the lowerlevel escher records for this shape.
+ */
+ protected abstract EscherContainerRecord createSpContainer(boolean isChild);
+
+ /**
+ * @return the parent of this shape
+ */
+ public ShapeContainer<HSLFShape> getParent(){
+ return _parent;
+ }
+
+ /**
+ * @return name of the shape.
+ */
+ public String getShapeName(){
+ return getShapeType().nativeName;
+ }
+
+ /**
+ * @return type of the shape.
+ * @see org.apache.poi.hslf.record.RecordTypes
+ */
+ public ShapeType getShapeType(){
+ EscherSpRecord spRecord = getEscherChild(EscherSpRecord.RECORD_ID);
+ return ShapeType.forId(spRecord.getShapeType(), false);
+ }
+
+ /**
+ * @param type type of the shape.
+ * @see org.apache.poi.hslf.record.RecordTypes
+ */
+ public void setShapeType(ShapeType type){
+ EscherSpRecord spRecord = getEscherChild(EscherSpRecord.RECORD_ID);
+ spRecord.setShapeType( (short) type.nativeId );
+ spRecord.setVersion( (short) 0x2 );
+ }
+
+ /**
+ * Returns the anchor (the bounding box rectangle) of this shape.
+ * All coordinates are expressed in points (72 dpi).
+ *
+ * @return the anchor of this shape
+ */
+ public java.awt.Rectangle getAnchor(){
+ Rectangle2D anchor2d = getAnchor2D();
+ return anchor2d.getBounds();
+ }
+
+ /**
+ * Returns the anchor (the bounding box rectangle) of this shape.
+ * All coordinates are expressed in points (72 dpi).
+ *
+ * @return the anchor of this shape
+ */
+ public Rectangle2D getAnchor2D(){
+ EscherSpRecord spRecord = getEscherChild(EscherSpRecord.RECORD_ID);
+ int flags = spRecord.getFlags();
+ int x,y,w,h;
+ EscherChildAnchorRecord childRec = getEscherChild(EscherChildAnchorRecord.RECORD_ID);
+ boolean useChildRec = ((flags & EscherSpRecord.FLAG_CHILD) != 0);
+ if (useChildRec && childRec != null){
+ x = childRec.getDx1();
+ y = childRec.getDy1();
+ w = childRec.getDx2()-childRec.getDx1();
+ h = childRec.getDy2()-childRec.getDy1();
+ } else {
+ if (useChildRec) {
+ logger.log(POILogger.WARN, "EscherSpRecord.FLAG_CHILD is set but EscherChildAnchorRecord was not found");
+ }
+ EscherClientAnchorRecord clientRec = getEscherChild(EscherClientAnchorRecord.RECORD_ID);
+ x = clientRec.getFlag();
+ y = clientRec.getCol1();
+ w = clientRec.getDx1()-clientRec.getFlag();
+ h = clientRec.getRow1()-clientRec.getCol1();
+ }
+
++ // TODO: find out where this -1 value comes from at #57820 (link to ms docs?)
+ Rectangle2D anchor = new Rectangle2D.Float(
++ (float)(x == -1 ? -1 : Units.masterToPoints(x)),
++ (float)(y == -1 ? -1 : Units.masterToPoints(y)),
++ (float)(w == -1 ? -1 : Units.masterToPoints(w)),
++ (float)(h == -1 ? -1 : Units.masterToPoints(h))
+ );
+
+ return anchor;
+ }
+
+ /**
+ * Sets the anchor (the bounding box rectangle) of this shape.
+ * All coordinates should be expressed in points (72 dpi).
+ *
+ * @param anchor new anchor
+ */
+ public void setAnchor(Rectangle2D anchor){
+ int x = Units.pointsToMaster(anchor.getX());
+ int y = Units.pointsToMaster(anchor.getY());
+ int w = Units.pointsToMaster(anchor.getWidth() + anchor.getX());
+ int h = Units.pointsToMaster(anchor.getHeight() + anchor.getY());
+ EscherSpRecord spRecord = getEscherChild(EscherSpRecord.RECORD_ID);
+ int flags = spRecord.getFlags();
+ if ((flags & EscherSpRecord.FLAG_CHILD) != 0){
+ EscherChildAnchorRecord rec = (EscherChildAnchorRecord)getEscherChild(EscherChildAnchorRecord.RECORD_ID);
+ rec.setDx1(x);
+ rec.setDy1(y);
+ rec.setDx2(w);
+ rec.setDy2(h);
+ } else {
+ EscherClientAnchorRecord rec = (EscherClientAnchorRecord)getEscherChild(EscherClientAnchorRecord.RECORD_ID);
+ rec.setFlag((short)x);
+ rec.setCol1((short)y);
+ rec.setDx1((short)w);
+ rec.setRow1((short)h);
+ }
+
+ }
+
+ /**
+ * Moves the top left corner of the shape to the specified point.
+ *
+ * @param x the x coordinate of the top left corner of the shape
+ * @param y the y coordinate of the top left corner of the shape
+ */
+ public void moveTo(float x, float y){
+ Rectangle2D anchor = getAnchor2D();
+ anchor.setRect(x, y, anchor.getWidth(), anchor.getHeight());
+ setAnchor(anchor);
+ }
+
+ /**
+ * Helper method to return escher child by record ID
+ *
+ * @return escher record or <code>null</code> if not found.
+ */
+ public static <T extends EscherRecord> T getEscherChild(EscherContainerRecord owner, int recordId){
+ return owner.getChildById((short)recordId);
+ }
+
+ public <T extends EscherRecord> T getEscherChild(int recordId){
+ return _escherContainer.getChildById((short)recordId);
+ }
+
+ /**
+ * Returns escher property by id.
+ *
+ * @return escher property or <code>null</code> if not found.
+ */
+ public static <T extends EscherProperty> T getEscherProperty(EscherOptRecord opt, int propId){
+ if (opt == null) return null;
+ return opt.lookup(propId);
+ }
+
+ /**
+ * Set an escher property for this shape.
+ *
+ * @param opt The opt record to set the properties to.
+ * @param propId The id of the property. One of the constants defined in EscherOptRecord.
+ * @param value value of the property. If value = -1 then the property is removed.
+ */
+ public static void setEscherProperty(EscherOptRecord opt, short propId, int value){
+ java.util.List<EscherProperty> props = opt.getEscherProperties();
+ for ( Iterator<EscherProperty> iterator = props.iterator(); iterator.hasNext(); ) {
+ if (iterator.next().getPropertyNumber() == propId){
+ iterator.remove();
+ break;
+ }
+ }
+ if (value != -1) {
+ opt.addEscherProperty(new EscherSimpleProperty(propId, value));
+ opt.sortProperties();
+ }
+ }
+
+ /**
+ * Set an simple escher property for this shape.
+ *
+ * @param propId The id of the property. One of the constants defined in EscherOptRecord.
+ * @param value value of the property. If value = -1 then the property is removed.
+ */
+ public void setEscherProperty(short propId, int value){
+ EscherOptRecord opt = getEscherOptRecord();
+ setEscherProperty(opt, propId, value);
+ }
+
+ /**
+ * Get the value of a simple escher property for this shape.
+ *
+ * @param propId The id of the property. One of the constants defined in EscherOptRecord.
+ */
+ public int getEscherProperty(short propId){
+ EscherOptRecord opt = getEscherOptRecord();
+ EscherSimpleProperty prop = getEscherProperty(opt, propId);
+ return prop == null ? 0 : prop.getPropertyValue();
+ }
+
+ /**
+ * Get the value of a simple escher property for this shape.
+ *
+ * @param propId The id of the property. One of the constants defined in EscherOptRecord.
+ */
+ public int getEscherProperty(short propId, int defaultValue){
+ EscherOptRecord opt = getEscherOptRecord();
+ EscherSimpleProperty prop = getEscherProperty(opt, propId);
+ return prop == null ? defaultValue : prop.getPropertyValue();
+ }
+
+ /**
+ * @return The shape container and it's children that can represent this
+ * shape.
+ */
+ public EscherContainerRecord getSpContainer(){
+ return _escherContainer;
+ }
+
+ /**
+ * Event which fires when a shape is inserted in the sheet.
+ * In some cases we need to propagate changes to upper level containers.
+ * <br>
+ * Default implementation does nothing.
+ *
+ * @param sh - owning shape
+ */
+ protected void afterInsert(HSLFSheet sh){
+ if(_fill != null) {
+ _fill.afterInsert(sh);
+ }
+ }
+
+ /**
+ * @return the <code>SlideShow</code> this shape belongs to
+ */
+ public HSLFSheet getSheet(){
+ return _sheet;
+ }
+
+ /**
+ * Assign the <code>SlideShow</code> this shape belongs to
+ *
+ * @param sheet owner of this shape
+ */
+ public void setSheet(HSLFSheet sheet){
+ _sheet = sheet;
+ }
+
+ Color getColor(short colorProperty, short opacityProperty, int defaultColor){
+ EscherOptRecord opt = getEscherOptRecord();
+ EscherSimpleProperty p = getEscherProperty(opt, colorProperty);
+ if(p == null && defaultColor == -1) return null;
+
+ int val = (p == null) ? defaultColor : p.getPropertyValue();
+
+ EscherColorRef ecr = new EscherColorRef(val);
+
+ boolean fPaletteIndex = ecr.hasPaletteIndexFlag();
+ boolean fPaletteRGB = ecr.hasPaletteRGBFlag();
+ boolean fSystemRGB = ecr.hasSystemRGBFlag();
+ boolean fSchemeIndex = ecr.hasSchemeIndexFlag();
+ boolean fSysIndex = ecr.hasSysIndexFlag();
+
+ int rgb[] = ecr.getRGB();
+
+ HSLFSheet sheet = getSheet();
+ if (fSchemeIndex && sheet != null) {
+ //red is the index to the color scheme
+ ColorSchemeAtom ca = sheet.getColorScheme();
+ int schemeColor = ca.getColor(ecr.getSchemeIndex());
+
+ rgb[0] = (schemeColor >> 0) & 0xFF;
+ rgb[1] = (schemeColor >> 8) & 0xFF;
+ rgb[2] = (schemeColor >> 16) & 0xFF;
+ } else if (fPaletteIndex){
+ //TODO
+ } else if (fPaletteRGB){
+ //TODO
+ } else if (fSystemRGB){
+ //TODO
+ } else if (fSysIndex){
+ //TODO
+ }
+
+ double alpha = getAlpha(opacityProperty);
+ return new Color(rgb[0], rgb[1], rgb[2], (int)(alpha*255.0));
+ }
+
+ double getAlpha(short opacityProperty) {
+ EscherOptRecord opt = getEscherOptRecord();
+ EscherSimpleProperty op = getEscherProperty(opt, opacityProperty);
+ int defaultOpacity = 0x00010000;
+ int opacity = (op == null) ? defaultOpacity : op.getPropertyValue();
+ return Units.fixedPointToDouble(opacity);
+ }
+
+ Color toRGB(int val){
+ int a = (val >> 24) & 0xFF;
+ int b = (val >> 16) & 0xFF;
+ int g = (val >> 8) & 0xFF;
+ int r = (val >> 0) & 0xFF;
+
+ if(a == 0xFE){
+ // Color is an sRGB value specified by red, green, and blue fields.
+ } else if (a == 0xFF){
+ // Color is undefined.
+ } else {
+ // index in the color scheme
+ ColorSchemeAtom ca = getSheet().getColorScheme();
+ int schemeColor = ca.getColor(a);
+
+ r = (schemeColor >> 0) & 0xFF;
+ g = (schemeColor >> 8) & 0xFF;
+ b = (schemeColor >> 16) & 0xFF;
+ }
+ return new Color(r, g, b);
+ }
+
+ /**
+ * @return id for the shape.
+ */
+ public int getShapeId(){
+ EscherSpRecord spRecord = getEscherChild(EscherSpRecord.RECORD_ID);
+ return spRecord == null ? 0 : spRecord.getShapeId();
+ }
+
+ /**
+ * Sets shape ID
+ *
+ * @param id of the shape
+ */
+ public void setShapeId(int id){
+ EscherSpRecord spRecord = getEscherChild(EscherSpRecord.RECORD_ID);
+ if(spRecord != null) spRecord.setShapeId(id);
+ }
+
+ /**
+ * Fill properties of this shape
+ *
+ * @return fill properties of this shape
+ */
+ public HSLFFill getFill(){
+ if(_fill == null) {
+ _fill = new HSLFFill(this);
+ }
+ return _fill;
+ }
+
+ public FillStyle getFillStyle() {
+ return getFill().getFillStyle();
+ }
+
+ /**
+ * Returns the hyperlink assigned to this shape
+ *
+ * @return the hyperlink assigned to this shape
+ * or <code>null</code> if not found.
+ */
+ public HSLFHyperlink getHyperlink(){
+ return HSLFHyperlink.find(this);
+ }
+
+ public void draw(Graphics2D graphics){
+ logger.log(POILogger.INFO, "Rendering " + getShapeName());
+ }
+
+ public EscherOptRecord getEscherOptRecord() {
+ EscherOptRecord opt = getEscherChild(EscherOptRecord.RECORD_ID);
+ if (opt == null) {
+ opt = getEscherChild(RecordTypes.EscherUserDefined);
+ }
+ return opt;
+ }
+
+ public boolean getFlipHorizontal(){
+ EscherSpRecord spRecord = getEscherChild(EscherSpRecord.RECORD_ID);
+ return (spRecord.getFlags()& EscherSpRecord.FLAG_FLIPHORIZ) != 0;
+ }
+
+ public void setFlipHorizontal(boolean flip) {
+ EscherSpRecord spRecord = getEscherChild(EscherSpRecord.RECORD_ID);
+ int flag = spRecord.getFlags() | EscherSpRecord.FLAG_FLIPHORIZ;
+ spRecord.setFlags(flag);
+ }
+
+ public boolean getFlipVertical(){
+ EscherSpRecord spRecord = getEscherChild(EscherSpRecord.RECORD_ID);
+ return (spRecord.getFlags()& EscherSpRecord.FLAG_FLIPVERT) != 0;
+ }
+
+ public void setFlipVertical(boolean flip) {
+ EscherSpRecord spRecord = getEscherChild(EscherSpRecord.RECORD_ID);
+ int flag = spRecord.getFlags() | EscherSpRecord.FLAG_FLIPVERT;
+ spRecord.setFlags(flag);
+ }
+
+ public double getRotation(){
+ int rot = getEscherProperty(EscherProperties.TRANSFORM__ROTATION);
+ return Units.fixedPointToDouble(rot);
+ }
+
+ public void setRotation(double theta){
+ int rot = Units.doubleToFixedPoint(theta % 360.0);
+ setEscherProperty(EscherProperties.TRANSFORM__ROTATION, rot);
+ }
+
+ public boolean isPlaceholder() {
+ return false;
+ }
+}
--- /dev/null
- /**
- * Returns the underlying POIFSFileSystem for the document
- * that is open.
- */
- protected POIFSFileSystem getPOIFSFileSystem() {
- return directory.getFileSystem();
- }
-
+/* ====================================================================
+ 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.hslf.usermodel;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.security.GeneralSecurityException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Hashtable;
+import java.util.List;
+import java.util.Map;
+import java.util.NavigableMap;
+import java.util.TreeMap;
+
+import org.apache.poi.POIDocument;
+import org.apache.poi.hpsf.PropertySet;
+import org.apache.poi.hslf.exceptions.CorruptPowerPointFileException;
+import org.apache.poi.hslf.exceptions.HSLFException;
+import org.apache.poi.hslf.record.CurrentUserAtom;
+import org.apache.poi.hslf.record.DocumentEncryptionAtom;
+import org.apache.poi.hslf.record.ExOleObjStg;
+import org.apache.poi.hslf.record.PersistPtrHolder;
+import org.apache.poi.hslf.record.PersistRecord;
+import org.apache.poi.hslf.record.PositionDependentRecord;
+import org.apache.poi.hslf.record.Record;
+import org.apache.poi.hslf.record.RecordTypes;
+import org.apache.poi.hslf.record.UserEditAtom;
+import org.apache.poi.poifs.crypt.cryptoapi.CryptoAPIEncryptor;
+import org.apache.poi.poifs.filesystem.DirectoryNode;
+import org.apache.poi.poifs.filesystem.DocumentEntry;
+import org.apache.poi.poifs.filesystem.DocumentInputStream;
+import org.apache.poi.poifs.filesystem.EntryUtils;
+import org.apache.poi.poifs.filesystem.NPOIFSFileSystem;
+import org.apache.poi.poifs.filesystem.POIFSFileSystem;
+import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.POILogFactory;
+import org.apache.poi.util.POILogger;
+
+/**
+ * This class contains the main functionality for the Powerpoint file
+ * "reader". It is only a very basic class for now
+ *
+ * @author Nick Burch
+ */
+public final class HSLFSlideShowImpl extends POIDocument {
+ public static final int UNSET_OFFSET = -1;
+
+ // For logging
+ private POILogger logger = POILogFactory.getLogger(this.getClass());
+
+ // Holds metadata on where things are in our document
+ private CurrentUserAtom currentUser;
+
+ // Low level contents of the file
+ private byte[] _docstream;
+
+ // Low level contents
+ private Record[] _records;
+
+ // Raw Pictures contained in the pictures stream
+ private List<HSLFPictureData> _pictures;
+
+ // Embedded objects stored in storage records in the document stream, lazily populated.
+ private HSLFObjectData[] _objects;
+
+ /**
+ * Returns the directory in the underlying POIFSFileSystem for the
+ * document that is open.
+ */
+ protected DirectoryNode getPOIFSDirectory() {
+ return directory;
+ }
+
+ /**
+ * Constructs a Powerpoint document from fileName. Parses the document
+ * and places all the important stuff into data structures.
+ *
+ * @param fileName The name of the file to read.
+ * @throws IOException if there is a problem while parsing the document.
+ */
+ public HSLFSlideShowImpl(String fileName) throws IOException
+ {
+ this(new FileInputStream(fileName));
+ }
+
+ /**
+ * Constructs a Powerpoint document from an input stream. Parses the
+ * document and places all the important stuff into data structures.
+ *
+ * @param inputStream the source of the data
+ * @throws IOException if there is a problem while parsing the document.
+ */
+ public HSLFSlideShowImpl(InputStream inputStream) throws IOException {
+ //do Ole stuff
+ this(new POIFSFileSystem(inputStream));
+ }
+
+ /**
+ * Constructs a Powerpoint document from a POIFS Filesystem. Parses the
+ * document and places all the important stuff into data structures.
+ *
+ * @param filesystem the POIFS FileSystem to read from
+ * @throws IOException if there is a problem while parsing the document.
+ */
+ public HSLFSlideShowImpl(POIFSFileSystem filesystem) throws IOException
+ {
+ this(filesystem.getRoot());
+ }
+
+ /**
+ * Constructs a Powerpoint document from a POIFS Filesystem. Parses the
+ * document and places all the important stuff into data structures.
+ *
+ * @param filesystem the POIFS FileSystem to read from
+ * @throws IOException if there is a problem while parsing the document.
+ */
+ public HSLFSlideShowImpl(NPOIFSFileSystem filesystem) throws IOException
+ {
+ this(filesystem.getRoot());
+ }
+
+ /**
+ * Constructs a Powerpoint document from a specific point in a
+ * POIFS Filesystem. Parses the document and places all the
+ * important stuff into data structures.
+ *
+ * @deprecated Use {@link #HSLFSlideShow(DirectoryNode)} instead
+ * @param dir the POIFS directory to read from
+ * @param filesystem the POIFS FileSystem to read from
+ * @throws IOException if there is a problem while parsing the document.
+ */
+ @Deprecated
+ public HSLFSlideShowImpl(DirectoryNode dir, POIFSFileSystem filesystem) throws IOException
+ {
+ this(dir);
+ }
+
+ /**
+ * Constructs a Powerpoint document from a specific point in a
+ * POIFS Filesystem. Parses the document and places all the
+ * important stuff into data structures.
+ *
+ * @param dir the POIFS directory to read from
+ * @throws IOException if there is a problem while parsing the document.
+ */
+ public HSLFSlideShowImpl(DirectoryNode dir) throws IOException {
+ super(handleDualStorage(dir));
+
+ // First up, grab the "Current User" stream
+ // We need this before we can detect Encrypted Documents
+ readCurrentUserStream();
+
+ // Next up, grab the data that makes up the
+ // PowerPoint stream
+ readPowerPointStream();
+
+ // Now, build records based on the PowerPoint stream
+ buildRecords();
+
+ // Look for any other streams
+ readOtherStreams();
+ }
+
+ private static DirectoryNode handleDualStorage(DirectoryNode dir) throws IOException {
+ // when there's a dual storage entry, use it, as the outer document can't be read quite probably ...
+ String dualName = "PP97_DUALSTORAGE";
+ if (!dir.hasEntry(dualName)) return dir;
+ dir = (DirectoryNode)dir.getEntry(dualName);
+ return dir;
+ }
+
+ /**
+ * Constructs a new, empty, Powerpoint document.
+ */
+ public static final HSLFSlideShowImpl create() {
+ InputStream is = HSLFSlideShowImpl.class.getResourceAsStream("/org/apache/poi/hslf/data/empty.ppt");
+ if (is == null) {
+ throw new RuntimeException("Missing resource 'empty.ppt'");
+ }
+ try {
+ return new HSLFSlideShowImpl(is);
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ /**
+ * Extracts the main PowerPoint document stream from the
+ * POI file, ready to be passed
+ *
+ * @throws IOException
+ */
+ private void readPowerPointStream() throws IOException
+ {
+ // Get the main document stream
+ DocumentEntry docProps =
+ (DocumentEntry)directory.getEntry("PowerPoint Document");
+
+ // Grab the document stream
+ _docstream = new byte[docProps.getSize()];
+ directory.createDocumentInputStream("PowerPoint Document").read(_docstream);
+ }
+
+ /**
+ * Builds the list of records, based on the contents
+ * of the PowerPoint stream
+ */
+ private void buildRecords()
+ {
+ // The format of records in a powerpoint file are:
+ // <little endian 2 byte "info">
+ // <little endian 2 byte "type">
+ // <little endian 4 byte "length">
+ // If it has a zero length, following it will be another record
+ // <xx xx yy yy 00 00 00 00> <xx xx yy yy zz zz zz zz>
+ // If it has a length, depending on its type it may have children or data
+ // If it has children, these will follow straight away
+ // <xx xx yy yy zz zz zz zz <xx xx yy yy zz zz zz zz>>
+ // If it has data, this will come straigh after, and run for the length
+ // <xx xx yy yy zz zz zz zz dd dd dd dd dd dd dd>
+ // All lengths given exclude the 8 byte record header
+ // (Data records are known as Atoms)
+
+ // Document should start with:
+ // 0F 00 E8 03 ## ## ## ##
+ // (type 1000 = document, info 00 0f is normal, rest is document length)
+ // 01 00 E9 03 28 00 00 00
+ // (type 1001 = document atom, info 00 01 normal, 28 bytes long)
+ // 80 16 00 00 E0 10 00 00 xx xx xx xx xx xx xx xx
+ // 05 00 00 00 0A 00 00 00 xx xx xx
+ // (the contents of the document atom, not sure what it means yet)
+ // (records then follow)
+
+ // When parsing a document, look to see if you know about that type
+ // of the current record. If you know it's a type that has children,
+ // process the record's data area looking for more records
+ // If you know about the type and it doesn't have children, either do
+ // something with the data (eg TextRun) or skip over it
+ // If you don't know about the type, play safe and skip over it (using
+ // its length to know where the next record will start)
+ //
+
+ _records = read(_docstream, (int)currentUser.getCurrentEditOffset());
+ }
+
+ private Record[] read(byte[] docstream, int usrOffset){
+ //sort found records by offset.
+ //(it is not necessary but SlideShow.findMostRecentCoreRecords() expects them sorted)
+ NavigableMap<Integer,Record> records = new TreeMap<Integer,Record>(); // offset -> record
+ Map<Integer,Integer> persistIds = new HashMap<Integer,Integer>(); // offset -> persistId
+ initRecordOffsets(docstream, usrOffset, records, persistIds);
+ HSLFSlideShowEncrypted decryptData = new HSLFSlideShowEncrypted(docstream, records);
+
+ for (Map.Entry<Integer,Record> entry : records.entrySet()) {
+ Integer offset = entry.getKey();
+ Record record = entry.getValue();
+ Integer persistId = persistIds.get(offset);
+ if (record == null) {
+ // all plain records have been already added,
+ // only new records need to be decrypted (tbd #35897)
+ decryptData.decryptRecord(docstream, persistId, offset);
+ record = Record.buildRecordAtOffset(docstream, offset);
+ entry.setValue(record);
+ }
+
+ if (record instanceof PersistRecord) {
+ ((PersistRecord)record).setPersistId(persistId);
+ }
+ }
+
+ return records.values().toArray(new Record[records.size()]);
+ }
+
+ private void initRecordOffsets(byte[] docstream, int usrOffset, NavigableMap<Integer,Record> recordMap, Map<Integer,Integer> offset2id) {
+ while (usrOffset != 0){
+ UserEditAtom usr = (UserEditAtom) Record.buildRecordAtOffset(docstream, usrOffset);
+ recordMap.put(usrOffset, usr);
+
+ int psrOffset = usr.getPersistPointersOffset();
+ PersistPtrHolder ptr = (PersistPtrHolder)Record.buildRecordAtOffset(docstream, psrOffset);
+ recordMap.put(psrOffset, ptr);
+
+ for(Map.Entry<Integer,Integer> entry : ptr.getSlideLocationsLookup().entrySet()) {
+ Integer offset = entry.getValue();
+ Integer id = entry.getKey();
+ recordMap.put(offset, null); // reserve a slot for the record
+ offset2id.put(offset, id);
+ }
+
+ usrOffset = usr.getLastUserEditAtomOffset();
+
+ // check for corrupted user edit atom and try to repair it
+ // if the next user edit atom offset is already known, we would go into an endless loop
+ if (usrOffset > 0 && recordMap.containsKey(usrOffset)) {
+ // a user edit atom is usually located 36 byte before the smallest known record offset
+ usrOffset = recordMap.firstKey()-36;
+ // check that we really are located on a user edit atom
+ int ver_inst = LittleEndian.getUShort(docstream, usrOffset);
+ int type = LittleEndian.getUShort(docstream, usrOffset+2);
+ int len = LittleEndian.getInt(docstream, usrOffset+4);
+ if (ver_inst == 0 && type == 4085 && (len == 0x1C || len == 0x20)) {
+ logger.log(POILogger.WARN, "Repairing invalid user edit atom");
+ usr.setLastUserEditAtomOffset(usrOffset);
+ } else {
+ throw new CorruptPowerPointFileException("Powerpoint document contains invalid user edit atom");
+ }
+ }
+ }
+ }
+
+ public DocumentEncryptionAtom getDocumentEncryptionAtom() {
+ for (Record r : _records) {
+ if (r instanceof DocumentEncryptionAtom) {
+ return (DocumentEncryptionAtom)r;
+ }
+ }
+ return null;
+ }
+
+
+ /**
+ * Find the "Current User" stream, and load it
+ */
+ private void readCurrentUserStream() {
+ try {
+ currentUser = new CurrentUserAtom(directory);
+ } catch(IOException ie) {
+ logger.log(POILogger.ERROR, "Error finding Current User Atom:\n" + ie);
+ currentUser = new CurrentUserAtom();
+ }
+ }
+
+ /**
+ * Find any other streams from the filesystem, and load them
+ */
+ private void readOtherStreams() {
+ // Currently, there aren't any
+ }
+
+ /**
+ * Find and read in pictures contained in this presentation.
+ * This is lazily called as and when we want to touch pictures.
+ */
+ @SuppressWarnings("unused")
+ private void readPictures() throws IOException {
+ _pictures = new ArrayList<HSLFPictureData>();
+
+ // if the presentation doesn't contain pictures - will use a null set instead
+ if (!directory.hasEntry("Pictures")) return;
+
+ HSLFSlideShowEncrypted decryptData = new HSLFSlideShowEncrypted(getDocumentEncryptionAtom());
+
+ DocumentEntry entry = (DocumentEntry)directory.getEntry("Pictures");
+ byte[] pictstream = new byte[entry.getSize()];
+ DocumentInputStream is = directory.createDocumentInputStream(entry);
+ is.read(pictstream);
+ is.close();
+
+
+ int pos = 0;
+ // An empty picture record (length 0) will take up 8 bytes
+ while (pos <= (pictstream.length-8)) {
+ int offset = pos;
+
+ decryptData.decryptPicture(pictstream, offset);
+
+ // Image signature
+ int signature = LittleEndian.getUShort(pictstream, pos);
+ pos += LittleEndian.SHORT_SIZE;
+ // Image type + 0xF018
+ int type = LittleEndian.getUShort(pictstream, pos);
+ pos += LittleEndian.SHORT_SIZE;
+ // Image size (excluding the 8 byte header)
+ int imgsize = LittleEndian.getInt(pictstream, pos);
+ pos += LittleEndian.INT_SIZE;
+
+ // When parsing the BStoreDelay stream, [MS-ODRAW] says that we
+ // should terminate if the type isn't 0xf007 or 0xf018->0xf117
+ if (!((type == 0xf007) || (type >= 0xf018 && type <= 0xf117)))
+ break;
+
+ // The image size must be 0 or greater
+ // (0 is allowed, but odd, since we do wind on by the header each
+ // time, so we won't get stuck)
+ if(imgsize < 0) {
+ throw new CorruptPowerPointFileException("The file contains a picture, at position " + _pictures.size() + ", which has a negatively sized data length, so we can't trust any of the picture data");
+ }
+
+ // If they type (including the bonus 0xF018) is 0, skip it
+ if(type == 0) {
+ logger.log(POILogger.ERROR, "Problem reading picture: Invalid image type 0, on picture with length " + imgsize + ".\nYou document will probably become corrupted if you save it!");
+ logger.log(POILogger.ERROR, "" + pos);
+ } else {
+ // Build the PictureData object from the data
+ try {
+ HSLFPictureData pict = HSLFPictureData.create(type - 0xF018);
+
+ // Copy the data, ready to pass to PictureData
+ byte[] imgdata = new byte[imgsize];
+ System.arraycopy(pictstream, pos, imgdata, 0, imgdata.length);
+ pict.setRawData(imgdata);
+
+ pict.setOffset(offset);
+ _pictures.add(pict);
+ } catch(IllegalArgumentException e) {
+ logger.log(POILogger.ERROR, "Problem reading picture: " + e + "\nYou document will probably become corrupted if you save it!");
+ }
+ }
+
+ pos += imgsize;
+ }
+ }
+
+ /**
+ * remove duplicated UserEditAtoms and merge PersistPtrHolder, i.e.
+ * remove document edit history
+ */
+ public void normalizeRecords() {
+ try {
+ updateAndWriteDependantRecords(null, null);
+ } catch (IOException e) {
+ throw new CorruptPowerPointFileException(e);
+ }
+ _records = HSLFSlideShowEncrypted.normalizeRecords(_records);
+ }
+
+
+ /**
+ * This is a helper functions, which is needed for adding new position dependent records
+ * or finally write the slideshow to a file.
+ *
+ * @param os the stream to write to, if null only the references are updated
+ * @param interestingRecords a map of interesting records (PersistPtrHolder and UserEditAtom)
+ * referenced by their RecordType. Only the very last of each type will be saved to the map.
+ * May be null, if not needed.
+ * @throws IOException
+ */
+ public void updateAndWriteDependantRecords(OutputStream os, Map<RecordTypes.Type,PositionDependentRecord> interestingRecords)
+ throws IOException {
+ // For position dependent records, hold where they were and now are
+ // As we go along, update, and hand over, to any Position Dependent
+ // records we happen across
+ Hashtable<Integer,Integer> oldToNewPositions = new Hashtable<Integer,Integer>();
+
+ // First pass - figure out where all the position dependent
+ // records are going to end up, in the new scheme
+ // (Annoyingly, some powerpoint files have PersistPtrHolders
+ // that reference slides after the PersistPtrHolder)
+ UserEditAtom usr = null;
+ PersistPtrHolder ptr = null;
+ CountingOS cos = new CountingOS();
+ for (Record record : _records) {
+ // all top level records are position dependent
+ assert(record instanceof PositionDependentRecord);
+ PositionDependentRecord pdr = (PositionDependentRecord)record;
+ int oldPos = pdr.getLastOnDiskOffset();
+ int newPos = cos.size();
+ pdr.setLastOnDiskOffset(newPos);
+ if (oldPos != UNSET_OFFSET) {
+ // new records don't need a mapping, as they aren't in a relation yet
+ oldToNewPositions.put(oldPos,newPos);
+ }
+
+ // Grab interesting records as they come past
+ // this will only save the very last record of each type
+ RecordTypes.Type saveme = null;
+ int recordType = (int)record.getRecordType();
+ if (recordType == RecordTypes.PersistPtrIncrementalBlock.typeID) {
+ saveme = RecordTypes.PersistPtrIncrementalBlock;
+ ptr = (PersistPtrHolder)pdr;
+ } else if (recordType == RecordTypes.UserEditAtom.typeID) {
+ saveme = RecordTypes.UserEditAtom;
+ usr = (UserEditAtom)pdr;
+ }
+ if (interestingRecords != null && saveme != null) {
+ interestingRecords.put(saveme,pdr);
+ }
+
+ // Dummy write out, so the position winds on properly
+ record.writeOut(cos);
+ }
+
+ assert(usr != null && ptr != null);
+
+ Map<Integer,Integer> persistIds = new HashMap<Integer,Integer>();
+ for (Map.Entry<Integer,Integer> entry : ptr.getSlideLocationsLookup().entrySet()) {
+ persistIds.put(oldToNewPositions.get(entry.getValue()), entry.getKey());
+ }
+
+ HSLFSlideShowEncrypted encData = new HSLFSlideShowEncrypted(getDocumentEncryptionAtom());
+
+ for (Record record : _records) {
+ assert(record instanceof PositionDependentRecord);
+ // We've already figured out their new location, and
+ // told them that
+ // Tell them of the positions of the other records though
+ PositionDependentRecord pdr = (PositionDependentRecord)record;
+ Integer persistId = persistIds.get(pdr.getLastOnDiskOffset());
+ if (persistId == null) persistId = 0;
+
+ // For now, we're only handling PositionDependentRecord's that
+ // happen at the top level.
+ // In future, we'll need the handle them everywhere, but that's
+ // a bit trickier
+ pdr.updateOtherRecordReferences(oldToNewPositions);
+
+ // Whatever happens, write out that record tree
+ if (os != null) {
+ record.writeOut(encData.encryptRecord(os, persistId, record));
+ }
+ }
+
+ // Update and write out the Current User atom
+ int oldLastUserEditAtomPos = (int)currentUser.getCurrentEditOffset();
+ Integer newLastUserEditAtomPos = oldToNewPositions.get(oldLastUserEditAtomPos);
+ if(usr == null || newLastUserEditAtomPos == null || usr.getLastOnDiskOffset() != newLastUserEditAtomPos) {
+ throw new HSLFException("Couldn't find the new location of the last UserEditAtom that used to be at " + oldLastUserEditAtomPos);
+ }
+ currentUser.setCurrentEditOffset(usr.getLastOnDiskOffset());
+ }
+
+ /**
+ * Writes out the slideshow file the is represented by an instance
+ * of this class.
+ * It will write out the common OLE2 streams. If you require all
+ * streams to be written out, pass in preserveNodes
+ * @param out The OutputStream to write to.
+ * @throws IOException If there is an unexpected IOException from
+ * the passed in OutputStream
+ */
+ public void write(OutputStream out) throws IOException {
+ // Write out, but only the common streams
+ write(out,false);
+ }
+ /**
+ * Writes out the slideshow file the is represented by an instance
+ * of this class.
+ * If you require all streams to be written out (eg Marcos, embeded
+ * documents), then set preserveNodes to true
+ * @param out The OutputStream to write to.
+ * @param preserveNodes Should all OLE2 streams be written back out, or only the common ones?
+ * @throws IOException If there is an unexpected IOException from
+ * the passed in OutputStream
+ */
+ public void write(OutputStream out, boolean preserveNodes) throws IOException {
+ // read properties and pictures, with old encryption settings where appropriate
+ if(_pictures == null) {
+ readPictures();
+ }
+ getDocumentSummaryInformation();
+
+ // set new encryption settings
+ HSLFSlideShowEncrypted encryptedSS = new HSLFSlideShowEncrypted(getDocumentEncryptionAtom());
+ _records = encryptedSS.updateEncryptionRecord(_records);
+
+ // Get a new Filesystem to write into
+ POIFSFileSystem outFS = new POIFSFileSystem();
+
+ // The list of entries we've written out
+ List<String> writtenEntries = new ArrayList<String>(1);
+
+ // Write out the Property Streams
+ writeProperties(outFS, writtenEntries);
+
+ BufAccessBAOS baos = new BufAccessBAOS();
+
+ // For position dependent records, hold where they were and now are
+ // As we go along, update, and hand over, to any Position Dependent
+ // records we happen across
+ updateAndWriteDependantRecords(baos, null);
+
+ // Update our cached copy of the bytes that make up the PPT stream
+ _docstream = new byte[baos.size()];
+ System.arraycopy(baos.getBuf(), 0, _docstream, 0, baos.size());
+
+ // Write the PPT stream into the POIFS layer
+ ByteArrayInputStream bais = new ByteArrayInputStream(_docstream);
+ outFS.createDocument(bais,"PowerPoint Document");
+ writtenEntries.add("PowerPoint Document");
+
+ currentUser.setEncrypted(encryptedSS.getDocumentEncryptionAtom() != null);
+ currentUser.writeToFS(outFS);
+ writtenEntries.add("Current User");
+
+
+ if (_pictures.size() > 0) {
+ BufAccessBAOS pict = new BufAccessBAOS();
+ for (HSLFPictureData p : _pictures) {
+ int offset = pict.size();
+ p.write(pict);
+ encryptedSS.encryptPicture(pict.getBuf(), offset);
+ }
+ outFS.createDocument(
+ new ByteArrayInputStream(pict.getBuf(), 0, pict.size()), "Pictures"
+ );
+ writtenEntries.add("Pictures");
+ }
+
+ // If requested, write out any other streams we spot
+ if(preserveNodes) {
+ EntryUtils.copyNodes(directory.getFileSystem(), outFS, writtenEntries);
+ }
+
+ // Send the POIFSFileSystem object out to the underlying stream
+ outFS.writeFilesystem(out);
+ }
+
+ /**
+ * For a given named property entry, either return it or null if
+ * if it wasn't found
+ *
+ * @param setName The property to read
+ * @return The value of the given property or null if it wasn't found.
+ */
+ protected PropertySet getPropertySet(String setName) {
+ DocumentEncryptionAtom dea = getDocumentEncryptionAtom();
+ return (dea == null)
+ ? super.getPropertySet(setName)
+ : super.getPropertySet(setName, dea.getEncryptionInfo());
+ }
+
+ /**
+ * Writes out the standard Documment Information Properties (HPSF)
+ * @param outFS the POIFSFileSystem to write the properties into
+ * @param writtenEntries a list of POIFS entries to add the property names too
+ *
+ * @throws IOException if an error when writing to the
+ * {@link POIFSFileSystem} occurs
+ */
+ protected void writeProperties(POIFSFileSystem outFS, List<String> writtenEntries) throws IOException {
+ super.writeProperties(outFS, writtenEntries);
+ DocumentEncryptionAtom dea = getDocumentEncryptionAtom();
+ if (dea != null) {
+ CryptoAPIEncryptor enc = (CryptoAPIEncryptor)dea.getEncryptionInfo().getEncryptor();
+ try {
+ enc.getDataStream(outFS.getRoot()); // ignore OutputStream
+ } catch (IOException e) {
+ throw e;
+ } catch (GeneralSecurityException e) {
+ throw new IOException(e);
+ }
+ }
+ }
+
+ /* ******************* adding methods follow ********************* */
+
+ /**
+ * Adds a new root level record, at the end, but before the last
+ * PersistPtrIncrementalBlock.
+ */
+ public synchronized int appendRootLevelRecord(Record newRecord) {
+ int addedAt = -1;
+ Record[] r = new Record[_records.length+1];
+ boolean added = false;
+ for(int i=(_records.length-1); i>=0; i--) {
+ if(added) {
+ // Just copy over
+ r[i] = _records[i];
+ } else {
+ r[(i+1)] = _records[i];
+ if(_records[i] instanceof PersistPtrHolder) {
+ r[i] = newRecord;
+ added = true;
+ addedAt = i;
+ }
+ }
+ }
+ _records = r;
+ return addedAt;
+ }
+
+ /**
+ * Add a new picture to this presentation.
+ *
+ * @return offset of this picture in the Pictures stream
+ */
+ public int addPicture(HSLFPictureData img) {
+ // Process any existing pictures if we haven't yet
+ if(_pictures == null) {
+ try {
+ readPictures();
+ } catch(IOException e) {
+ throw new CorruptPowerPointFileException(e.getMessage());
+ }
+ }
+
+ // Add the new picture in
+ int offset = 0;
+ if(_pictures.size() > 0) {
+ HSLFPictureData prev = _pictures.get(_pictures.size() - 1);
+ offset = prev.getOffset() + prev.getRawData().length + 8;
+ }
+ img.setOffset(offset);
+ _pictures.add(img);
+ return offset;
+ }
+
+ /* ******************* fetching methods follow ********************* */
+
+
+ /**
+ * Returns an array of all the records found in the slideshow
+ */
+ public Record[] getRecords() { return _records; }
+
+ /**
+ * Returns an array of the bytes of the file. Only correct after a
+ * call to open or write - at all other times might be wrong!
+ */
+ public byte[] getUnderlyingBytes() { return _docstream; }
+
+ /**
+ * Fetch the Current User Atom of the document
+ */
+ public CurrentUserAtom getCurrentUserAtom() { return currentUser; }
+
+ /**
+ * Return array of pictures contained in this presentation
+ *
+ * @return array with the read pictures or <code>null</code> if the
+ * presentation doesn't contain pictures.
+ */
+ public HSLFPictureData[] getPictures() {
+ if(_pictures == null) {
+ try {
+ readPictures();
+ } catch(IOException e) {
+ throw new CorruptPowerPointFileException(e.getMessage());
+ }
+ }
+
+ return _pictures.toArray(new HSLFPictureData[_pictures.size()]);
+ }
+
+ /**
+ * Gets embedded object data from the slide show.
+ *
+ * @return the embedded objects.
+ */
+ public HSLFObjectData[] getEmbeddedObjects() {
+ if (_objects == null) {
+ List<HSLFObjectData> objects = new ArrayList<HSLFObjectData>();
+ for (Record r : _records) {
+ if (r instanceof ExOleObjStg) {
+ objects.add(new HSLFObjectData((ExOleObjStg)r));
+ }
+ }
+ _objects = objects.toArray(new HSLFObjectData[objects.size()]);
+ }
+ return _objects;
+ }
+
+
+ private static class BufAccessBAOS extends ByteArrayOutputStream {
+ public byte[] getBuf() {
+ return buf;
+ }
+ }
+
+ private static class CountingOS extends OutputStream {
+ int count = 0;
+ public void write(int b) throws IOException {
+ count++;
+ }
+
+ public void write(byte[] b) throws IOException {
+ count += b.length;
+ }
+
+ public void write(byte[] b, int off, int len) throws IOException {
+ count += len;
+ }
+
+ public int size() {
+ return count;
+ }
+ }
+}
--- /dev/null
- int y0 = -1;
+/* ====================================================================
+ 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.hslf.usermodel;
+
+import org.apache.poi.ddf.*;
+import org.apache.poi.hslf.model.Line;
+import org.apache.poi.hslf.usermodel.*;
+import org.apache.poi.sl.usermodel.ShapeContainer;
+import org.apache.poi.sl.usermodel.TableShape;
+import org.apache.poi.util.LittleEndian;
+
+import java.util.*;
+import java.util.List;
+import java.awt.*;
+
+/**
+ * Represents a table in a PowerPoint presentation
+ *
+ * @author Yegor Kozlov
+ */
+public final class HSLFTable extends HSLFGroupShape implements TableShape {
+
+ protected static final int BORDER_TOP = 1;
+ protected static final int BORDER_RIGHT = 2;
+ protected static final int BORDER_BOTTOM = 3;
+ protected static final int BORDER_LEFT = 4;
+
+ protected static final int BORDERS_ALL = 5;
+ protected static final int BORDERS_OUTSIDE = 6;
+ protected static final int BORDERS_INSIDE = 7;
+ protected static final int BORDERS_NONE = 8;
+
+
+ protected HSLFTableCell[][] cells;
+
+ /**
+ * Create a new Table of the given number of rows and columns
+ *
+ * @param numrows the number of rows
+ * @param numcols the number of columns
+ */
+ public HSLFTable(int numrows, int numcols) {
+ super();
+
+ if(numrows < 1) throw new IllegalArgumentException("The number of rows must be greater than 1");
+ if(numcols < 1) throw new IllegalArgumentException("The number of columns must be greater than 1");
+
+ int x=0, y=0, tblWidth=0, tblHeight=0;
+ cells = new HSLFTableCell[numrows][numcols];
+ for (int i = 0; i < cells.length; i++) {
+ x = 0;
+ for (int j = 0; j < cells[i].length; j++) {
+ cells[i][j] = new HSLFTableCell(this);
+ Rectangle anchor = new Rectangle(x, y, HSLFTableCell.DEFAULT_WIDTH, HSLFTableCell.DEFAULT_HEIGHT);
+ cells[i][j].setAnchor(anchor);
+ x += HSLFTableCell.DEFAULT_WIDTH;
+ }
+ y += HSLFTableCell.DEFAULT_HEIGHT;
+ }
+ tblWidth = x;
+ tblHeight = y;
+ setAnchor(new Rectangle(0, 0, tblWidth, tblHeight));
+
+ EscherContainerRecord spCont = (EscherContainerRecord) getSpContainer().getChild(0);
+ EscherOptRecord opt = new EscherOptRecord();
+ opt.setRecordId((short)0xF122);
+ opt.addEscherProperty(new EscherSimpleProperty((short)0x39F, 1));
+ EscherArrayProperty p = new EscherArrayProperty((short)(0x4000 | 0x3A0), false, null);
+ p.setSizeOfElements(0x0004);
+ p.setNumberOfElementsInArray(numrows);
+ p.setNumberOfElementsInMemory(numrows);
+ opt.addEscherProperty(p);
+ List<EscherRecord> lst = spCont.getChildRecords();
+ lst.add(lst.size()-1, opt);
+ spCont.setChildRecords(lst);
+ }
+
+ /**
+ * Create a Table object and initilize it from the supplied Record container.
+ *
+ * @param escherRecord <code>EscherSpContainer</code> container which holds information about this shape
+ * @param parent the parent of the shape
+ */
+ public HSLFTable(EscherContainerRecord escherRecord, ShapeContainer<HSLFShape> parent) {
+ super(escherRecord, parent);
+ }
+
+ /**
+ * Gets a cell
+ *
+ * @param row the row index (0-based)
+ * @param col the column index (0-based)
+ * @return the cell
+ */
+ public HSLFTableCell getCell(int row, int col) {
+ return cells[row][col];
+ }
+
+ public int getNumberOfColumns() {
+ return cells[0].length;
+ }
+ public int getNumberOfRows() {
+ return cells.length;
+ }
+
+ protected void afterInsert(HSLFSheet sh){
+ super.afterInsert(sh);
+
+ EscherContainerRecord spCont = (EscherContainerRecord) getSpContainer().getChild(0);
+ List<EscherRecord> lst = spCont.getChildRecords();
+ EscherOptRecord opt = (EscherOptRecord)lst.get(lst.size()-2);
+ EscherArrayProperty p = opt.lookup(0x3A0);
+ for (int i = 0; i < cells.length; i++) {
+ HSLFTableCell cell = cells[i][0];
+ int rowHeight = cell.getAnchor().height*MASTER_DPI/POINT_DPI;
+ byte[] val = new byte[4];
+ LittleEndian.putInt(val, 0, rowHeight);
+ p.setElement(i, val);
+ for (int j = 0; j < cells[i].length; j++) {
+ HSLFTableCell c = cells[i][j];
+ addShape(c);
+
+ Line bt = c.getBorderTop();
+ if(bt != null) addShape(bt);
+
+ Line br = c.getBorderRight();
+ if(br != null) addShape(br);
+
+ Line bb = c.getBorderBottom();
+ if(bb != null) addShape(bb);
+
+ Line bl = c.getBorderLeft();
+ if(bl != null) addShape(bl);
+
+ }
+ }
+
+ }
+
+ protected void initTable(){
+ List<HSLFShape> shapeList = getShapeList();
+
+ Iterator<HSLFShape> shapeIter = shapeList.iterator();
+ while (shapeIter.hasNext()) {
+ HSLFShape shape = shapeIter.next();
+ if (shape instanceof HSLFAutoShape) {
+ HSLFAutoShape autoShape = (HSLFAutoShape)shape;
+ EscherTextboxRecord etr = autoShape.getEscherChild(EscherTextboxRecord.RECORD_ID);
+ if (etr != null) continue;
+ }
+ shapeIter.remove();
+ }
+
+ Collections.sort(shapeList, new Comparator<HSLFShape>(){
+ public int compare( HSLFShape o1, HSLFShape o2 ) {
+ Rectangle anchor1 = o1.getAnchor();
+ Rectangle anchor2 = o2.getAnchor();
+ int delta = anchor1.y - anchor2.y;
+ if (delta == 0) delta = anchor1.x - anchor2.x;
+ // descending size
+ if (delta == 0) delta = (anchor2.width*anchor2.height)-(anchor1.width*anchor1.height);
+ return delta;
+ }
+ });
+
++ int y0 = (shapeList.isEmpty()) ? -1 : shapeList.get(0).getAnchor().y - 1;
+ int maxrowlen = 0;
+ List<List<HSLFShape>> lst = new ArrayList<List<HSLFShape>>();
+ List<HSLFShape> row = null;
+ for (HSLFShape sh : shapeList) {
+ if(sh instanceof HSLFTextShape){
+ Rectangle anchor = sh.getAnchor();
+ if(anchor.y != y0){
+ y0 = anchor.y;
+ row = new ArrayList<HSLFShape>();
+ lst.add(row);
+ }
+ row.add(sh);
+ maxrowlen = Math.max(maxrowlen, row.size());
+ }
+ }
+ cells = new HSLFTableCell[lst.size()][maxrowlen];
+ for (int i = 0; i < lst.size(); i++) {
+ row = lst.get(i);
+ for (int j = 0; j < row.size(); j++) {
+ HSLFTextShape tx = (HSLFTextShape)row.get(j);
+ cells[i][j] = new HSLFTableCell(tx.getSpContainer(), getParent());
+ cells[i][j].setSheet(tx.getSheet());
+ }
+ }
+ }
+
+ /**
+ * Assign the <code>SlideShow</code> this shape belongs to
+ *
+ * @param sheet owner of this shape
+ */
+ public void setSheet(HSLFSheet sheet){
+ super.setSheet(sheet);
+ if(cells == null) initTable();
+ }
+
+ /**
+ * Sets the row height.
+ *
+ * @param row the row index (0-based)
+ * @param height the height to set (in pixels)
+ */
+ public void setRowHeight(int row, int height){
+ int currentHeight = cells[row][0].getAnchor().height;
+ int dy = height - currentHeight;
+
+ for (int i = row; i < cells.length; i++) {
+ for (int j = 0; j < cells[i].length; j++) {
+ Rectangle anchor = cells[i][j].getAnchor();
+ if(i == row) anchor.height = height;
+ else anchor.y += dy;
+ cells[i][j].setAnchor(anchor);
+ }
+ }
+ Rectangle tblanchor = getAnchor();
+ tblanchor.height += dy;
+ setAnchor(tblanchor);
+
+ }
+
+ /**
+ * Sets the column width.
+ *
+ * @param col the column index (0-based)
+ * @param width the width to set (in pixels)
+ */
+ public void setColumnWidth(int col, int width){
+ int currentWidth = cells[0][col].getAnchor().width;
+ int dx = width - currentWidth;
+ for (int i = 0; i < cells.length; i++) {
+ Rectangle anchor = cells[i][col].getAnchor();
+ anchor.width = width;
+ cells[i][col].setAnchor(anchor);
+
+ if(col < cells[i].length - 1) for (int j = col+1; j < cells[i].length; j++) {
+ anchor = cells[i][j].getAnchor();
+ anchor.x += dx;
+ cells[i][j].setAnchor(anchor);
+ }
+ }
+ Rectangle tblanchor = getAnchor();
+ tblanchor.width += dx;
+ setAnchor(tblanchor);
+ }
+
+ /**
+ * Format the table and apply the specified Line to all cell boundaries,
+ * both outside and inside
+ *
+ * @param line the border line
+ */
+ public void setAllBorders(Line line){
+ for (int i = 0; i < cells.length; i++) {
+ for (int j = 0; j < cells[i].length; j++) {
+ HSLFTableCell cell = cells[i][j];
+ cell.setBorderTop(cloneBorder(line));
+ cell.setBorderLeft(cloneBorder(line));
+ if(j == cells[i].length - 1) cell.setBorderRight(cloneBorder(line));
+ if(i == cells.length - 1) cell.setBorderBottom(cloneBorder(line));
+ }
+ }
+ }
+
+ /**
+ * Format the outside border using the specified Line object
+ *
+ * @param line the border line
+ */
+ public void setOutsideBorders(Line line){
+ for (int i = 0; i < cells.length; i++) {
+ for (int j = 0; j < cells[i].length; j++) {
+ HSLFTableCell cell = cells[i][j];
+
+ if(j == 0) cell.setBorderLeft(cloneBorder(line));
+ if(j == cells[i].length - 1) cell.setBorderRight(cloneBorder(line));
+ else {
+ cell.setBorderLeft(null);
+ cell.setBorderLeft(null);
+ }
+
+ if(i == 0) cell.setBorderTop(cloneBorder(line));
+ else if(i == cells.length - 1) cell.setBorderBottom(cloneBorder(line));
+ else {
+ cell.setBorderTop(null);
+ cell.setBorderBottom(null);
+ }
+ }
+ }
+ }
+
+ /**
+ * Format the inside border using the specified Line object
+ *
+ * @param line the border line
+ */
+ public void setInsideBorders(Line line){
+ for (int i = 0; i < cells.length; i++) {
+ for (int j = 0; j < cells[i].length; j++) {
+ HSLFTableCell cell = cells[i][j];
+
+ if(j != cells[i].length - 1)
+ cell.setBorderRight(cloneBorder(line));
+ else {
+ cell.setBorderLeft(null);
+ cell.setBorderLeft(null);
+ }
+ if(i != cells.length - 1) cell.setBorderBottom(cloneBorder(line));
+ else {
+ cell.setBorderTop(null);
+ cell.setBorderBottom(null);
+ }
+ }
+ }
+ }
+
+ private Line cloneBorder(Line line){
+ Line border = createBorder();
+ border.setLineWidth(line.getLineWidth());
+ border.setLineDashing(line.getLineDashing());
+ border.setLineColor(line.getLineColor());
+ border.setLineCompound(line.getLineCompound());
+ return border;
+ }
+
+ /**
+ * Create a border to format this table
+ *
+ * @return the created border
+ */
+ public Line createBorder(){
+ Line line = new Line(this);
+
+ EscherOptRecord opt = getEscherOptRecord();
+ setEscherProperty(opt, EscherProperties.GEOMETRY__SHAPEPATH, -1);
+ setEscherProperty(opt, EscherProperties.GEOMETRY__FILLOK, -1);
+ setEscherProperty(opt, EscherProperties.SHADOWSTYLE__SHADOWOBSURED, 0x20000);
+ setEscherProperty(opt, EscherProperties.THREED__LIGHTFACE, 0x80000);
+
+ return line;
+ }
+}
package org.apache.poi.hslf.model;
- import static org.junit.Assert.*;
++import static org.junit.Assert.assertEquals;
++import static org.junit.Assert.assertNotNull;
++import static org.junit.Assert.assertSame;
++import static org.junit.Assert.assertTrue;
++import static org.junit.Assert.fail;
+
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-
-import junit.framework.TestCase;
+import java.util.List;
-import org.apache.poi.hslf.HSLFSlideShow;
-import org.apache.poi.hslf.extractor.PowerPointExtractor;
+ import org.apache.poi.POIDataSamples;
import org.apache.poi.hslf.record.TextHeaderAtom;
- import org.apache.poi.hslf.usermodel.*;
-import org.apache.poi.hslf.usermodel.SlideShow;
++import org.apache.poi.hslf.usermodel.HSLFShape;
++import org.apache.poi.hslf.usermodel.HSLFSlide;
++import org.apache.poi.hslf.usermodel.HSLFSlideShow;
++import org.apache.poi.hslf.usermodel.HSLFTable;
++import org.apache.poi.hslf.usermodel.HSLFTableCell;
++import org.apache.poi.sl.usermodel.Shape;
++import org.apache.poi.sl.usermodel.Slide;
++import org.apache.poi.sl.usermodel.SlideShow;
++import org.apache.poi.sl.usermodel.TableShape;
import org.junit.Test;
/**
*
* @author Yegor Kozlov
*/
-public final class TestTable extends TestCase {
+public final class TestTable {
+ private static POIDataSamples _slTests = POIDataSamples.getSlideShowInstance();
/**
* Test that ShapeFactory works properly and returns <code>Table</code>
}
}
- SlideShow ppt = new SlideShow(new HSLFSlideShow(_slTests.openResourceAsStream("bug57820-initTableNullRefrenceException.ppt")));
+
+ /**
+ * Bug 57820: initTable throws NullPointerException
+ * when the table is positioned with its top at -1
+ */
+ @Test
+ public void test57820() throws Exception {
- Slide[] slides = ppt.getSlides();
- assertEquals(1, slides.length);
++ SlideShow ppt = new HSLFSlideShow(_slTests.openResourceAsStream("bug57820-initTableNullRefrenceException.ppt"));
+
- Shape[] shapes = slides[0].getShapes(); //throws NullPointerException
++ List<? extends Slide<?,?,?>> slides = ppt.getSlides();
++ assertEquals(1, slides.size());
+
- Table tbl = null;
- for(int idx = 0; idx < shapes.length; idx++) {
- if(shapes[idx] instanceof Table) {
- tbl = (Table)shapes[idx];
++ List<? extends Shape> shapes = slides.get(0).getShapes(); //throws NullPointerException
+
- assertEquals(-1, tbl.getAnchor().y);
++ TableShape tbl = null;
++ for(Shape s : shapes) {
++ if(s instanceof TableShape) {
++ tbl = (TableShape)s;
+ break;
+ }
+ }
+
+ assertNotNull(tbl);
+
++ // handling changed in common sl, so it evaluates to 0 now
++ assertEquals(0, tbl.getAnchor().getY(), 0);
+ }
}
--- /dev/null
- // @Ignore("Just for visual validation - antialiasing is different on various systems")
+/* ====================================================================
+ 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.hslf.usermodel;
+
+import static org.junit.Assert.*;
+
+import java.awt.*;
+import java.awt.image.BufferedImage;
+import java.io.*;
+import java.lang.reflect.Constructor;
+import java.util.*;
+
+import javax.imageio.ImageIO;
+
+import org.apache.poi.POIDataSamples;
+import org.apache.poi.ddf.EscherBSERecord;
+import org.apache.poi.hssf.usermodel.DummyGraphics2d;
+import org.apache.poi.sl.draw.Drawable;
+import org.apache.poi.sl.usermodel.Slide;
+import org.apache.poi.sl.usermodel.SlideShow;
+import org.apache.poi.util.JvmBugs;
++import org.junit.Ignore;
+import org.junit.Test;
+
+/**
+ * Test Picture shape.
+ *
+ * @author Yegor Kozlov
+ */
+public final class TestPicture {
+ private static POIDataSamples _slTests = POIDataSamples.getSlideShowInstance();
+
+ /**
+ * Test that the reference count of a blip is incremented every time the picture is inserted.
+ * This is important when the same image appears multiple times in a slide show.
+ *
+ */
+ @Test
+ public void multiplePictures() throws Exception {
+ HSLFSlideShow ppt = new HSLFSlideShow();
+
+ HSLFSlide s = ppt.createSlide();
+ HSLFSlide s2 = ppt.createSlide();
+ HSLFSlide s3 = ppt.createSlide();
+
+ int idx = ppt.addPicture(_slTests.readFile("clock.jpg"), HSLFPictureShape.JPEG);
+ HSLFPictureShape pict = new HSLFPictureShape(idx);
+ HSLFPictureShape pict2 = new HSLFPictureShape(idx);
+ HSLFPictureShape pict3 = new HSLFPictureShape(idx);
+
+ pict.setAnchor(new Rectangle(10,10,100,100));
+ s.addShape(pict);
+ EscherBSERecord bse1 = pict.getEscherBSERecord();
+ assertEquals(1, bse1.getRef());
+
+ pict2.setAnchor(new Rectangle(10,10,100,100));
+ s2.addShape(pict2);
+ EscherBSERecord bse2 = pict.getEscherBSERecord();
+ assertSame(bse1, bse2);
+ assertEquals(2, bse1.getRef());
+
+ pict3.setAnchor(new Rectangle(10,10,100,100));
+ s3.addShape(pict3);
+ EscherBSERecord bse3 = pict.getEscherBSERecord();
+ assertSame(bse2, bse3);
+ assertEquals(3, bse1.getRef());
+ }
+
+ /**
+ * Picture#getEscherBSERecord threw NullPointerException if EscherContainerRecord.BSTORE_CONTAINER
+ * was not found. The correct behaviour is to return null.
+ */
+ @Test
+ public void bug46122() {
+ HSLFSlideShow ppt = new HSLFSlideShow();
+ HSLFSlide slide = ppt.createSlide();
+
+ HSLFPictureShape pict = new HSLFPictureShape(-1); //index to non-existing picture data
+ pict.setSheet(slide);
+ HSLFPictureData data = pict.getPictureData();
+ assertNull(data);
+
+ BufferedImage img = new BufferedImage(100, 100, BufferedImage.TYPE_INT_RGB);
+ Graphics2D graphics = img.createGraphics();
+ pict.draw(graphics);
+ }
+
+ @Test
+ public void macImages() throws Exception {
+ HSLFSlideShowImpl hss = new HSLFSlideShowImpl(_slTests.openResourceAsStream("53446.ppt"));
+
+ HSLFPictureData[] pictures = hss.getPictures();
+ assertEquals(15, pictures.length);
+
+ int[][] expectedSizes = {
+ null, // WMF
+ { 427, 428 }, // PNG
+ { 371, 370 }, // PNG
+ { 288, 183 }, // PNG
+ { 285, 97 }, // PNG
+ { 288, 168 }, // PNG
+ null, // WMF
+ null, // WMF
+ { 199, 259 }, // PNG
+ { 432, 244 }, // PNG
+ { 261, 258 }, // PNG
+ null, // WMF
+ null, // WMF
+ null, // WMF
+ null // EMF
+ };
+
+ for (int i = 0; i < pictures.length; i++) {
+ BufferedImage image = ImageIO.read(new ByteArrayInputStream(pictures[i].getData()));
+
+ if (pictures[i].getType() != HSLFPictureShape.WMF && pictures[i].getType() != HSLFPictureShape.EMF) {
+ assertNotNull(image);
+
+ int[] dimensions = expectedSizes[i];
+ assertEquals(dimensions[0], image.getWidth());
+ assertEquals(dimensions[1], image.getHeight());
+ }
+ }
+ }
+
+ @Test
++ @Ignore("Just for visual validation - antialiasing is different on various systems")
+ public void bug54541() throws Exception {
+ String files[] = {
+// "sample_pptx_grouping_issues.pptx",
+// "54542_cropped_bitmap.pptx",
+// "54541_cropped_bitmap.ppt",
+// "54541_cropped_bitmap2.ppt",
+ "alterman_security.ppt",
+// "alterman_security3.pptx",
+ };
+
+ BitSet pages = new BitSet();
+ pages.set(2);
+
+ for (String file : files) {
+ InputStream is = _slTests.openResourceAsStream(file);
+ SlideShow ss;
+ if (file.endsWith("pptx")) {
+ Class<?> cls = Class.forName("org.apache.poi.xslf.usermodel.XMLSlideShow");
+ Constructor<?> ct = cls.getDeclaredConstructor(InputStream.class);
+ ss = (SlideShow)ct.newInstance(is);
+ } else {
+ ss = new HSLFSlideShow(is);
+ }
+ is.close();
+
+ boolean debugOut = false;
+ Dimension pg = ss.getPageSize();
+ for (Slide<?,?,?> slide : ss.getSlides()) {
+ int slideNo = slide.getSlideNumber();
+ if (!pages.get(slideNo-1)) {
+ if (pages.nextSetBit(slideNo-1) == -1) break; else continue;
+ }
+ if (debugOut) {
+ DummyGraphics2d graphics = new DummyGraphics2d();
+ slide.draw(graphics);
+ } else {
+ BufferedImage img = new BufferedImage(pg.width, pg.height, BufferedImage.TYPE_INT_ARGB);
+ Graphics2D graphics = img.createGraphics();
+ fixFonts(graphics);
+ slide.draw(graphics);
+ graphics.setColor(Color.BLACK);
+ graphics.setStroke(new BasicStroke(1));
+ graphics.drawRect(0, 0, (int)pg.getWidth()-1, (int)pg.getHeight()-1);
+ ImageIO.write(img, "PNG", new File(file.replaceFirst(".pptx?", "-")+slideNo+".png"));
+ }
+ }
+ }
+ }
+
+ @SuppressWarnings("unchecked")
+ private void fixFonts(Graphics2D graphics) {
+ if (!JvmBugs.hasLineBreakMeasurerBug()) return;
+ Map<String,String> fontMap = (Map<String,String>)graphics.getRenderingHint(Drawable.FONT_MAP);
+ if (fontMap == null) fontMap = new HashMap<String,String>();
+ fontMap.put("Calibri", "Lucida Sans");
+ fontMap.put("Cambria", "Lucida Bright");
+ graphics.setRenderingHint(Drawable.FONT_MAP, fontMap);
+ }
+}
* Checks that the supplied slideshow still matches the bytes
* of slideshow c
*/
- private static void assertMatchesFileC(SlideShow s) throws Exception {
- if (true) { // TODO - test is disabled, pending fix of bug #39800
- // System.err.println("Skipping test, as would be marked as failed due to bug #39800"); //
- return;
- }
-if(false) {
+ private static void assertMatchesFileC(HSLFSlideShow s) throws Exception {
// Grab the bytes of the file
- FileInputStream fin = new FileInputStream(filenameC);
- ByteArrayOutputStream fb = new ByteArrayOutputStream();
- byte[] b = new byte[4096];
- int read = 0;
- while(read != -1) {
- read = fin.read(b);
- if(read > 0) {
- fb.write(b, 0, read);
- }
- }
- byte[] raw_file = fb.toByteArray();
+ NPOIFSFileSystem fs = new NPOIFSFileSystem(_slTests.getFile(filenameC));
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ InputStream is = fs.createDocumentInputStream("PowerPoint Document");
+ IOUtils.copy(is, baos);
+ is.close();
+ fs.close();
+ byte[] raw_file = baos.toByteArray();
// Now write out the slideshow
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ baos.reset();
s.write(baos);
+ fs = new NPOIFSFileSystem(new ByteArrayInputStream(baos.toByteArray()));
+ baos.reset();
+ is = fs.createDocumentInputStream("PowerPoint Document");
+ IOUtils.copy(is, baos);
+ is.close();
+ fs.close();
byte[] raw_ss = baos.toByteArray();
-
+
- FileOutputStream fos = new FileOutputStream("PowerPoint Document.new.stream");
- fos.write(raw_ss);
- fos.close();
-
+ // different paragraph mask, because of sanitizing
+ raw_ss[169030] = 0x0a;
+
// Ensure they're the same
- assertEquals(raw_file.length, raw_ss.length);
- for(int i=0; i<raw_file.length; i++) {
- assertEquals(raw_file[i], raw_ss[i]);
- }
-}
+ assertArrayEquals(raw_file, raw_ss);
}
private byte[] writeRecord(Record r) throws Exception {