]> source.dussan.org Git - poi.git/commitdiff
merge trunk to common sl branch
authorAndreas Beeker <kiwiwings@apache.org>
Sun, 19 Jul 2015 19:00:32 +0000 (19:00 +0000)
committerAndreas Beeker <kiwiwings@apache.org>
Sun, 19 Jul 2015 19:00:32 +0000 (19:00 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/branches/common_sl@1691843 13f79535-47bb-0310-9956-ffa450edef68

175 files changed:
1  2 
build.xml
src/integrationtest/org/apache/poi/stress/XSLFFileHandler.java
src/java/org/apache/poi/hssf/usermodel/HSSFPatriarch.java
src/java/org/apache/poi/sl/draw/DrawAutoShape.java
src/java/org/apache/poi/sl/draw/DrawBackground.java
src/java/org/apache/poi/sl/draw/DrawConnectorShape.java
src/java/org/apache/poi/sl/draw/DrawFactory.java
src/java/org/apache/poi/sl/draw/DrawFontManager.java
src/java/org/apache/poi/sl/draw/DrawFreeformShape.java
src/java/org/apache/poi/sl/draw/DrawGroupShape.java
src/java/org/apache/poi/sl/draw/DrawMasterSheet.java
src/java/org/apache/poi/sl/draw/DrawPaint.java
src/java/org/apache/poi/sl/draw/DrawPictureShape.java
src/java/org/apache/poi/sl/draw/DrawShape.java
src/java/org/apache/poi/sl/draw/DrawSheet.java
src/java/org/apache/poi/sl/draw/DrawSimpleShape.java
src/java/org/apache/poi/sl/draw/DrawSlide.java
src/java/org/apache/poi/sl/draw/DrawTableShape.java
src/java/org/apache/poi/sl/draw/DrawTextBox.java
src/java/org/apache/poi/sl/draw/DrawTextFragment.java
src/java/org/apache/poi/sl/draw/DrawTextParagraph.java
src/java/org/apache/poi/sl/draw/DrawTextShape.java
src/java/org/apache/poi/sl/draw/Drawable.java
src/java/org/apache/poi/sl/draw/ImageRenderer.java
src/java/org/apache/poi/sl/draw/PathGradientPaint.java
src/java/org/apache/poi/sl/draw/binding/CTAdjPoint2D.java
src/java/org/apache/poi/sl/draw/binding/CTAdjustHandleList.java
src/java/org/apache/poi/sl/draw/binding/CTAngle.java
src/java/org/apache/poi/sl/draw/binding/CTColor.java
src/java/org/apache/poi/sl/draw/binding/CTColorMRU.java
src/java/org/apache/poi/sl/draw/binding/CTComplementTransform.java
src/java/org/apache/poi/sl/draw/binding/CTConnection.java
src/java/org/apache/poi/sl/draw/binding/CTConnectionSite.java
src/java/org/apache/poi/sl/draw/binding/CTConnectionSiteList.java
src/java/org/apache/poi/sl/draw/binding/CTCustomGeometry2D.java
src/java/org/apache/poi/sl/draw/binding/CTEmbeddedWAVAudioFile.java
src/java/org/apache/poi/sl/draw/binding/CTFixedPercentage.java
src/java/org/apache/poi/sl/draw/binding/CTGammaTransform.java
src/java/org/apache/poi/sl/draw/binding/CTGeomGuide.java
src/java/org/apache/poi/sl/draw/binding/CTGeomGuideList.java
src/java/org/apache/poi/sl/draw/binding/CTGeomRect.java
src/java/org/apache/poi/sl/draw/binding/CTGrayscaleTransform.java
src/java/org/apache/poi/sl/draw/binding/CTGroupTransform2D.java
src/java/org/apache/poi/sl/draw/binding/CTHslColor.java
src/java/org/apache/poi/sl/draw/binding/CTHyperlink.java
src/java/org/apache/poi/sl/draw/binding/CTInverseGammaTransform.java
src/java/org/apache/poi/sl/draw/binding/CTInverseTransform.java
src/java/org/apache/poi/sl/draw/binding/CTOfficeArtExtension.java
src/java/org/apache/poi/sl/draw/binding/CTOfficeArtExtensionList.java
src/java/org/apache/poi/sl/draw/binding/CTPath2D.java
src/java/org/apache/poi/sl/draw/binding/CTPath2DArcTo.java
src/java/org/apache/poi/sl/draw/binding/CTPath2DClose.java
src/java/org/apache/poi/sl/draw/binding/CTPath2DCubicBezierTo.java
src/java/org/apache/poi/sl/draw/binding/CTPath2DLineTo.java
src/java/org/apache/poi/sl/draw/binding/CTPath2DList.java
src/java/org/apache/poi/sl/draw/binding/CTPath2DMoveTo.java
src/java/org/apache/poi/sl/draw/binding/CTPath2DQuadBezierTo.java
src/java/org/apache/poi/sl/draw/binding/CTPercentage.java
src/java/org/apache/poi/sl/draw/binding/CTPoint2D.java
src/java/org/apache/poi/sl/draw/binding/CTPoint3D.java
src/java/org/apache/poi/sl/draw/binding/CTPolarAdjustHandle.java
src/java/org/apache/poi/sl/draw/binding/CTPositiveFixedAngle.java
src/java/org/apache/poi/sl/draw/binding/CTPositiveFixedPercentage.java
src/java/org/apache/poi/sl/draw/binding/CTPositivePercentage.java
src/java/org/apache/poi/sl/draw/binding/CTPositiveSize2D.java
src/java/org/apache/poi/sl/draw/binding/CTPresetColor.java
src/java/org/apache/poi/sl/draw/binding/CTPresetGeometry2D.java
src/java/org/apache/poi/sl/draw/binding/CTPresetTextShape.java
src/java/org/apache/poi/sl/draw/binding/CTRatio.java
src/java/org/apache/poi/sl/draw/binding/CTRelativeRect.java
src/java/org/apache/poi/sl/draw/binding/CTSRgbColor.java
src/java/org/apache/poi/sl/draw/binding/CTScRgbColor.java
src/java/org/apache/poi/sl/draw/binding/CTScale2D.java
src/java/org/apache/poi/sl/draw/binding/CTSchemeColor.java
src/java/org/apache/poi/sl/draw/binding/CTSphereCoords.java
src/java/org/apache/poi/sl/draw/binding/CTSystemColor.java
src/java/org/apache/poi/sl/draw/binding/CTTransform2D.java
src/java/org/apache/poi/sl/draw/binding/CTVector3D.java
src/java/org/apache/poi/sl/draw/binding/CTXYAdjustHandle.java
src/java/org/apache/poi/sl/draw/binding/ObjectFactory.java
src/java/org/apache/poi/sl/draw/binding/STBlackWhiteMode.java
src/java/org/apache/poi/sl/draw/binding/STPathFillMode.java
src/java/org/apache/poi/sl/draw/binding/STPresetColorVal.java
src/java/org/apache/poi/sl/draw/binding/STRectAlignment.java
src/java/org/apache/poi/sl/draw/binding/STSchemeColorVal.java
src/java/org/apache/poi/sl/draw/binding/STShapeType.java
src/java/org/apache/poi/sl/draw/binding/STTextShapeType.java
src/java/org/apache/poi/sl/draw/geom/AbsExpression.java
src/java/org/apache/poi/sl/draw/geom/AddDivideExpression.java
src/java/org/apache/poi/sl/draw/geom/AddSubtractExpression.java
src/java/org/apache/poi/sl/draw/geom/AdjustValue.java
src/java/org/apache/poi/sl/draw/geom/ArcTanExpression.java
src/java/org/apache/poi/sl/draw/geom/ArcToCommand.java
src/java/org/apache/poi/sl/draw/geom/ClosePathCommand.java
src/java/org/apache/poi/sl/draw/geom/Context.java
src/java/org/apache/poi/sl/draw/geom/CosExpression.java
src/java/org/apache/poi/sl/draw/geom/CosineArcTanExpression.java
src/java/org/apache/poi/sl/draw/geom/CurveToCommand.java
src/java/org/apache/poi/sl/draw/geom/CustomGeometry.java
src/java/org/apache/poi/sl/draw/geom/Expression.java
src/java/org/apache/poi/sl/draw/geom/ExpressionParser.java
src/java/org/apache/poi/sl/draw/geom/Formula.java
src/java/org/apache/poi/sl/draw/geom/Guide.java
src/java/org/apache/poi/sl/draw/geom/IAdjustableShape.java
src/java/org/apache/poi/sl/draw/geom/IfElseExpression.java
src/java/org/apache/poi/sl/draw/geom/LineToCommand.java
src/java/org/apache/poi/sl/draw/geom/LiteralValueExpression.java
src/java/org/apache/poi/sl/draw/geom/MaxExpression.java
src/java/org/apache/poi/sl/draw/geom/MinExpression.java
src/java/org/apache/poi/sl/draw/geom/ModExpression.java
src/java/org/apache/poi/sl/draw/geom/MoveToCommand.java
src/java/org/apache/poi/sl/draw/geom/MultiplyDivideExpression.java
src/java/org/apache/poi/sl/draw/geom/Outline.java
src/java/org/apache/poi/sl/draw/geom/Path.java
src/java/org/apache/poi/sl/draw/geom/PathCommand.java
src/java/org/apache/poi/sl/draw/geom/PinExpression.java
src/java/org/apache/poi/sl/draw/geom/PresetGeometries.java
src/java/org/apache/poi/sl/draw/geom/QuadToCommand.java
src/java/org/apache/poi/sl/draw/geom/SinArcTanExpression.java
src/java/org/apache/poi/sl/draw/geom/SinExpression.java
src/java/org/apache/poi/sl/draw/geom/SqrtExpression.java
src/java/org/apache/poi/sl/draw/geom/TanExpression.java
src/java/org/apache/poi/sl/usermodel/AutoNumberingScheme.java
src/java/org/apache/poi/sl/usermodel/AutoShape.java
src/java/org/apache/poi/sl/usermodel/Background.java
src/java/org/apache/poi/sl/usermodel/ColorStyle.java
src/java/org/apache/poi/sl/usermodel/ConnectorShape.java
src/java/org/apache/poi/sl/usermodel/FillStyle.java
src/java/org/apache/poi/sl/usermodel/FreeformShape.java
src/java/org/apache/poi/sl/usermodel/GroupShape.java
src/java/org/apache/poi/sl/usermodel/Insets2D.java
src/java/org/apache/poi/sl/usermodel/Line.java
src/java/org/apache/poi/sl/usermodel/LineDecoration.java
src/java/org/apache/poi/sl/usermodel/MasterSheet.java
src/java/org/apache/poi/sl/usermodel/Notes.java
src/java/org/apache/poi/sl/usermodel/PaintStyle.java
src/java/org/apache/poi/sl/usermodel/PictureData.java
src/java/org/apache/poi/sl/usermodel/PictureShape.java
src/java/org/apache/poi/sl/usermodel/PlaceableShape.java
src/java/org/apache/poi/sl/usermodel/Shadow.java
src/java/org/apache/poi/sl/usermodel/Shape.java
src/java/org/apache/poi/sl/usermodel/ShapeContainer.java
src/java/org/apache/poi/sl/usermodel/ShapeType.java
src/java/org/apache/poi/sl/usermodel/Sheet.java
src/java/org/apache/poi/sl/usermodel/SimpleShape.java
src/java/org/apache/poi/sl/usermodel/Slide.java
src/java/org/apache/poi/sl/usermodel/SlideShow.java
src/java/org/apache/poi/sl/usermodel/StrokeStyle.java
src/java/org/apache/poi/sl/usermodel/TableShape.java
src/java/org/apache/poi/sl/usermodel/TextBox.java
src/java/org/apache/poi/sl/usermodel/TextParagraph.java
src/java/org/apache/poi/sl/usermodel/TextRun.java
src/java/org/apache/poi/sl/usermodel/TextShape.java
src/java/org/apache/poi/sl/usermodel/VerticalAlignment.java
src/java/org/apache/poi/util/HexDump.java
src/ooxml/testcases/org/apache/poi/xslf/TestXSLFBugs.java
src/scratchpad/src/org/apache/poi/hslf/blip/Bitmap.java
src/scratchpad/src/org/apache/poi/hslf/blip/DIB.java
src/scratchpad/src/org/apache/poi/hslf/blip/EMF.java
src/scratchpad/src/org/apache/poi/hslf/blip/JPEG.java
src/scratchpad/src/org/apache/poi/hslf/blip/Metafile.java
src/scratchpad/src/org/apache/poi/hslf/blip/PICT.java
src/scratchpad/src/org/apache/poi/hslf/blip/PNG.java
src/scratchpad/src/org/apache/poi/hslf/blip/WMF.java
src/scratchpad/src/org/apache/poi/hslf/dev/SlideShowDumper.java
src/scratchpad/src/org/apache/poi/hslf/extractor/PowerPointExtractor.java
src/scratchpad/src/org/apache/poi/hslf/extractor/QuickButCruddyTextExtractor.java
src/scratchpad/src/org/apache/poi/hslf/usermodel/HSLFPictureData.java
src/scratchpad/src/org/apache/poi/hslf/usermodel/HSLFShape.java
src/scratchpad/src/org/apache/poi/hslf/usermodel/HSLFSlideShowImpl.java
src/scratchpad/src/org/apache/poi/hslf/usermodel/HSLFTable.java
src/scratchpad/testcases/org/apache/poi/TestPOIDocumentScratchpad.java
src/scratchpad/testcases/org/apache/poi/hslf/model/TestTable.java
src/scratchpad/testcases/org/apache/poi/hslf/usermodel/TestPicture.java
src/scratchpad/testcases/org/apache/poi/hslf/usermodel/TestRichTextRun.java

diff --cc build.xml
index 9fa34a84e1b9f984ea13abf793d0bd892c7d0eb7,ca705de4b5fc1eb41124b940d47bc5a187075359..d7b5482b483dcd835d356a958fb0075e435439be
+++ b/build.xml
@@@ -697,39 -702,7 +709,39 @@@ under the License
          </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}"
index 3464218fd9d26c349b81f2f158ba8af489c9efa6,b6f5f7cffe40e92ea27197669e00bbe92b04edca..2669238be12d6fd7d3418abeccfe96a20ef6f648
@@@ -22,23 -29,69 +29,71 @@@ import java.io.IOException
  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 {
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..6af2b4b9c18d56669483edee04e7c9504f98b8d9
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,27 @@@
++/* ====================================================================\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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..35c844d8d053682810a9136ff6f9cc095df7af08
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,60 @@@
++/* ====================================================================\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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..0fee07cf6dd01284b9358bab42d9a7652e76a867
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,26 @@@
++/* ====================================================================\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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..97b3f52147c678c8f92024596a6c3346c4e37495
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,148 @@@
++/* ====================================================================\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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..9c49489ffc4a05762759c7908673755c75c768f1
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,38 @@@
++/*\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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..b8dd7c3f203948e794b1e3ceb03dc37632988987
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,26 @@@
++/* ====================================================================\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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..60af5f710e636c6cc4c2a12b545d628e3f9c8878
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,70 @@@
++/* ====================================================================\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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..6b5d0781dfec2cc9a7415ad1b7324b7db07b116e
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,38 @@@
++/* ====================================================================\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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..16562b82a06b0e38f3adddb14fed59762390f955
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,444 @@@
++/* ====================================================================\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
++}
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..3d00b4ec6bfdf69beb52996004add0d278a0e9ee
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,54 @@@
++/* ====================================================================\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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..13ef4292a3b7cf0bca1d3da153d92e0385c6589a
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,143 @@@
++/* ====================================================================\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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..e4c7e185e8a4e09818338841a79ddcccc3254700
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,91 @@@
++/* ====================================================================\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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..e6741660906131b26d083780fe8d58bd68fe75dc
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,420 @@@
++/* ====================================================================\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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..cfa316738e93230667f7d45c1190ab0a66ae9082
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,41 @@@
++/* ====================================================================\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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..ceb6450d0b6430caaf994befc82c0f6dc46c6720
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,27 @@@
++/* ====================================================================\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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..89d69223ff10537acdd274aa85966c9d63f9f78a
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,26 @@@
++/* ====================================================================\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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..acb6b4c766fd493c9748a0fafac89731d3c36c13
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,105 @@@
++/* ====================================================================\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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..e2db501e8529daf433effb7fce5380d86d2c4448
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,462 @@@
++/* ====================================================================\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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..5862ac598c8fd1e4ed94c98f7afe23b3ebf6353c
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,179 @@@
++/* ====================================================================\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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..54128b82c6c72b9fb3b93e9ff1eb290e393f73c8
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,140 @@@
++/* ====================================================================\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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..87561aedd461149cbcda7eb55024132e88f8cbc9
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,192 @@@
++/*\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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..c5ad799f4c3cc44ef49be79f3eb3f42219655ce2
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,186 @@@
++/* ====================================================================\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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..d7fc0ae07fcb66006fad36bca50aaa5af7a02959
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,109 @@@
++/* ====================================================================\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
++ * &lt;complexType name="CT_AdjPoint2D">\r
++ *   &lt;complexContent>\r
++ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ *       &lt;attribute name="x" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_AdjCoordinate" />\r
++ *       &lt;attribute name="y" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_AdjCoordinate" />\r
++ *     &lt;/restriction>\r
++ *   &lt;/complexContent>\r
++ * &lt;/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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..d684cccb74933a20d60c6b9ef480656c94aabfed
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,99 @@@
++/* ====================================================================\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
++ * &lt;complexType name="CT_AdjustHandleList">\r
++ *   &lt;complexContent>\r
++ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ *       &lt;choice maxOccurs="unbounded" minOccurs="0">\r
++ *         &lt;element name="ahXY" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_XYAdjustHandle"/>\r
++ *         &lt;element name="ahPolar" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_PolarAdjustHandle"/>\r
++ *       &lt;/choice>\r
++ *     &lt;/restriction>\r
++ *   &lt;/complexContent>\r
++ * &lt;/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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..2da2373e2555175b6fc88a96554629bbb55292d7
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,70 @@@
++/* ====================================================================\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
++ * &lt;complexType name="CT_Angle">\r
++ *   &lt;complexContent>\r
++ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ *       &lt;attribute name="val" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_Angle" />\r
++ *     &lt;/restriction>\r
++ *   &lt;/complexContent>\r
++ * &lt;/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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..dd3cca360257d82ce8945f82f88b6a245e474580
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,237 @@@
++/* ====================================================================\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
++ * &lt;complexType name="CT_Color">\r
++ *   &lt;complexContent>\r
++ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ *       &lt;sequence>\r
++ *         &lt;group ref="{http://schemas.openxmlformats.org/drawingml/2006/main}EG_ColorChoice"/>\r
++ *       &lt;/sequence>\r
++ *     &lt;/restriction>\r
++ *   &lt;/complexContent>\r
++ * &lt;/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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..8ec68ba085a4ece3cb7462b2613025d05a4dccac
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,106 @@@
++/* ====================================================================\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
++ * &lt;complexType name="CT_ColorMRU">\r
++ *   &lt;complexContent>\r
++ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ *       &lt;sequence>\r
++ *         &lt;group ref="{http://schemas.openxmlformats.org/drawingml/2006/main}EG_ColorChoice" maxOccurs="10" minOccurs="0"/>\r
++ *       &lt;/sequence>\r
++ *     &lt;/restriction>\r
++ *   &lt;/complexContent>\r
++ * &lt;/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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..dd1a56c0b99d72bb522f0fafecebe5dc5c7bf916
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,46 @@@
++/* ====================================================================\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
++ * &lt;complexType name="CT_ComplementTransform">\r
++ *   &lt;complexContent>\r
++ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ *     &lt;/restriction>\r
++ *   &lt;/complexContent>\r
++ * &lt;/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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..f5d5e1726869b4110f224ec29974f66e89e37c84
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,95 @@@
++/* ====================================================================\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
++ * &lt;complexType name="CT_Connection">\r
++ *   &lt;complexContent>\r
++ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ *       &lt;attribute name="id" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_DrawingElementId" />\r
++ *       &lt;attribute name="idx" use="required" type="{http://www.w3.org/2001/XMLSchema}unsignedInt" />\r
++ *     &lt;/restriction>\r
++ *   &lt;/complexContent>\r
++ * &lt;/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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..eae59a0f0adb6e007621cc4461e6a92b000015c1
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,114 @@@
++/* ====================================================================\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
++ * &lt;complexType name="CT_ConnectionSite">\r
++ *   &lt;complexContent>\r
++ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ *       &lt;sequence>\r
++ *         &lt;element name="pos" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_AdjPoint2D"/>\r
++ *       &lt;/sequence>\r
++ *       &lt;attribute name="ang" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_AdjAngle" />\r
++ *     &lt;/restriction>\r
++ *   &lt;/complexContent>\r
++ * &lt;/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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..a3c98898c4e1ee5a06a24079aa92bf18157e89c5
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,93 @@@
++/* ====================================================================\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
++ * &lt;complexType name="CT_ConnectionSiteList">\r
++ *   &lt;complexContent>\r
++ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ *       &lt;sequence>\r
++ *         &lt;element name="cxn" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_ConnectionSite" maxOccurs="unbounded" minOccurs="0"/>\r
++ *       &lt;/sequence>\r
++ *     &lt;/restriction>\r
++ *   &lt;/complexContent>\r
++ * &lt;/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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..d6856ee637ee2adc92debae88125c99e2efdf542
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,242 @@@
++/* ====================================================================\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
++ * &lt;complexType name="CT_CustomGeometry2D">\r
++ *   &lt;complexContent>\r
++ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ *       &lt;sequence>\r
++ *         &lt;element name="avLst" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_GeomGuideList" minOccurs="0"/>\r
++ *         &lt;element name="gdLst" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_GeomGuideList" minOccurs="0"/>\r
++ *         &lt;element name="ahLst" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_AdjustHandleList" minOccurs="0"/>\r
++ *         &lt;element name="cxnLst" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_ConnectionSiteList" minOccurs="0"/>\r
++ *         &lt;element name="rect" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_GeomRect" minOccurs="0"/>\r
++ *         &lt;element name="pathLst" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_Path2DList"/>\r
++ *       &lt;/sequence>\r
++ *     &lt;/restriction>\r
++ *   &lt;/complexContent>\r
++ * &lt;/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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..8787125f47c348098d438c6a5b74d7ad522ea8d1
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,152 @@@
++/* ====================================================================\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
++ * &lt;complexType name="CT_EmbeddedWAVAudioFile">\r
++ *   &lt;complexContent>\r
++ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ *       &lt;attribute ref="{http://schemas.openxmlformats.org/officeDocument/2006/relationships}embed use="required""/>\r
++ *       &lt;attribute name="name" type="{http://www.w3.org/2001/XMLSchema}string" default="" />\r
++ *       &lt;attribute name="builtIn" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />\r
++ *     &lt;/restriction>\r
++ *   &lt;/complexContent>\r
++ * &lt;/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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..d1ed283f5da63f3f78cbf407c133a67027a388bf
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,70 @@@
++/* ====================================================================\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
++ * &lt;complexType name="CT_FixedPercentage">\r
++ *   &lt;complexContent>\r
++ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ *       &lt;attribute name="val" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_FixedPercentage" />\r
++ *     &lt;/restriction>\r
++ *   &lt;/complexContent>\r
++ * &lt;/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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..7cf6cb195cb08ed05ccb5f5420ec8778cbb20a91
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,46 @@@
++/* ====================================================================\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
++ * &lt;complexType name="CT_GammaTransform">\r
++ *   &lt;complexContent>\r
++ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ *     &lt;/restriction>\r
++ *   &lt;/complexContent>\r
++ * &lt;/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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..5622e4c28d22a7e8f3f02e19739531feaba52760
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,112 @@@
++/* ====================================================================\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
++ * &lt;complexType name="CT_GeomGuide">\r
++ *   &lt;complexContent>\r
++ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ *       &lt;attribute name="name" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_GeomGuideName" />\r
++ *       &lt;attribute name="fmla" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_GeomGuideFormula" />\r
++ *     &lt;/restriction>\r
++ *   &lt;/complexContent>\r
++ * &lt;/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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..4490933b4f6b67624b7fba32e1d31c539b98199c
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,93 @@@
++/* ====================================================================\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
++ * &lt;complexType name="CT_GeomGuideList">\r
++ *   &lt;complexContent>\r
++ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ *       &lt;sequence>\r
++ *         &lt;element name="gd" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_GeomGuide" maxOccurs="unbounded" minOccurs="0"/>\r
++ *       &lt;/sequence>\r
++ *     &lt;/restriction>\r
++ *   &lt;/complexContent>\r
++ * &lt;/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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..3198f0410e5d87fb9f41329c9cf216a29487c90a
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,171 @@@
++/* ====================================================================\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
++ * &lt;complexType name="CT_GeomRect">\r
++ *   &lt;complexContent>\r
++ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ *       &lt;attribute name="l" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_AdjCoordinate" />\r
++ *       &lt;attribute name="t" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_AdjCoordinate" />\r
++ *       &lt;attribute name="r" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_AdjCoordinate" />\r
++ *       &lt;attribute name="b" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_AdjCoordinate" />\r
++ *     &lt;/restriction>\r
++ *   &lt;/complexContent>\r
++ * &lt;/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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..643db025a22afdfee613d9c3cd2687adb56b6163
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,46 @@@
++/* ====================================================================\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
++ * &lt;complexType name="CT_GrayscaleTransform">\r
++ *   &lt;complexContent>\r
++ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ *     &lt;/restriction>\r
++ *   &lt;/complexContent>\r
++ * &lt;/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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..f06e1d8f992d6c367f32ad23f22507927ba12961
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,296 @@@
++/* ====================================================================\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
++ * &lt;complexType name="CT_GroupTransform2D">\r
++ *   &lt;complexContent>\r
++ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ *       &lt;sequence>\r
++ *         &lt;element name="off" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_Point2D" minOccurs="0"/>\r
++ *         &lt;element name="ext" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_PositiveSize2D" minOccurs="0"/>\r
++ *         &lt;element name="chOff" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_Point2D" minOccurs="0"/>\r
++ *         &lt;element name="chExt" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_PositiveSize2D" minOccurs="0"/>\r
++ *       &lt;/sequence>\r
++ *       &lt;attribute name="rot" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_Angle" default="0" />\r
++ *       &lt;attribute name="flipH" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />\r
++ *       &lt;attribute name="flipV" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />\r
++ *     &lt;/restriction>\r
++ *   &lt;/complexContent>\r
++ * &lt;/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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..376d423ee3a4ae6d050aa23a922aac37e34be624
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,221 @@@
++/* ====================================================================\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
++ * &lt;complexType name="CT_HslColor">\r
++ *   &lt;complexContent>\r
++ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ *       &lt;sequence>\r
++ *         &lt;group ref="{http://schemas.openxmlformats.org/drawingml/2006/main}EG_ColorTransform" maxOccurs="unbounded" minOccurs="0"/>\r
++ *       &lt;/sequence>\r
++ *       &lt;attribute name="hue" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_PositiveFixedAngle" />\r
++ *       &lt;attribute name="sat" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_Percentage" />\r
++ *       &lt;attribute name="lum" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_Percentage" />\r
++ *     &lt;/restriction>\r
++ *   &lt;/complexContent>\r
++ * &lt;/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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..0c89f392ac4fd847ac9a620775742712394cfa3e
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,403 @@@
++/* ====================================================================\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
++ * &lt;complexType name="CT_Hyperlink">\r
++ *   &lt;complexContent>\r
++ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ *       &lt;sequence>\r
++ *         &lt;element name="snd" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_EmbeddedWAVAudioFile" minOccurs="0"/>\r
++ *         &lt;element name="extLst" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_OfficeArtExtensionList" minOccurs="0"/>\r
++ *       &lt;/sequence>\r
++ *       &lt;attribute ref="{http://schemas.openxmlformats.org/officeDocument/2006/relationships}id"/>\r
++ *       &lt;attribute name="invalidUrl" type="{http://www.w3.org/2001/XMLSchema}string" default="" />\r
++ *       &lt;attribute name="action" type="{http://www.w3.org/2001/XMLSchema}string" default="" />\r
++ *       &lt;attribute name="tgtFrame" type="{http://www.w3.org/2001/XMLSchema}string" default="" />\r
++ *       &lt;attribute name="tooltip" type="{http://www.w3.org/2001/XMLSchema}string" default="" />\r
++ *       &lt;attribute name="history" type="{http://www.w3.org/2001/XMLSchema}boolean" default="true" />\r
++ *       &lt;attribute name="highlightClick" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />\r
++ *       &lt;attribute name="endSnd" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />\r
++ *     &lt;/restriction>\r
++ *   &lt;/complexContent>\r
++ * &lt;/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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..eaff064d709d5f684a8e41b2a30e3aeab95c081a
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,46 @@@
++/* ====================================================================\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
++ * &lt;complexType name="CT_InverseGammaTransform">\r
++ *   &lt;complexContent>\r
++ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ *     &lt;/restriction>\r
++ *   &lt;/complexContent>\r
++ * &lt;/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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..84af62533707a7841d7c06861c730b3da927f07b
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,46 @@@
++/* ====================================================================\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
++ * &lt;complexType name="CT_InverseTransform">\r
++ *   &lt;complexContent>\r
++ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ *     &lt;/restriction>\r
++ *   &lt;/complexContent>\r
++ * &lt;/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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..ec864d3b530dabf197a168faaf8d759d87ff340f
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,122 @@@
++/* ====================================================================\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
++ * &lt;complexType name="CT_OfficeArtExtension">\r
++ *   &lt;complexContent>\r
++ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ *       &lt;sequence>\r
++ *         &lt;any processContents='lax'/>\r
++ *       &lt;/sequence>\r
++ *       &lt;attribute name="uri" type="{http://www.w3.org/2001/XMLSchema}token" />\r
++ *     &lt;/restriction>\r
++ *   &lt;/complexContent>\r
++ * &lt;/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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..f0b54cb1801e59c821b9597b3d11ed0a32ab883f
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,93 @@@
++/* ====================================================================\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
++ * &lt;complexType name="CT_OfficeArtExtensionList">\r
++ *   &lt;complexContent>\r
++ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ *       &lt;sequence>\r
++ *         &lt;group ref="{http://schemas.openxmlformats.org/drawingml/2006/main}EG_OfficeArtExtensionList"/>\r
++ *       &lt;/sequence>\r
++ *     &lt;/restriction>\r
++ *   &lt;/complexContent>\r
++ * &lt;/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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..5294812967e5088b0814fa573fc2ac0f5a66acfd
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,303 @@@
++/* ====================================================================\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
++ * &lt;complexType name="CT_Path2D">\r
++ *   &lt;complexContent>\r
++ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ *       &lt;choice maxOccurs="unbounded" minOccurs="0">\r
++ *         &lt;element name="close" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_Path2DClose"/>\r
++ *         &lt;element name="moveTo" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_Path2DMoveTo"/>\r
++ *         &lt;element name="lnTo" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_Path2DLineTo"/>\r
++ *         &lt;element name="arcTo" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_Path2DArcTo"/>\r
++ *         &lt;element name="quadBezTo" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_Path2DQuadBezierTo"/>\r
++ *         &lt;element name="cubicBezTo" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_Path2DCubicBezierTo"/>\r
++ *       &lt;/choice>\r
++ *       &lt;attribute name="w" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_PositiveCoordinate" default="0" />\r
++ *       &lt;attribute name="h" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_PositiveCoordinate" default="0" />\r
++ *       &lt;attribute name="fill" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_PathFillMode" default="norm" />\r
++ *       &lt;attribute name="stroke" type="{http://www.w3.org/2001/XMLSchema}boolean" default="true" />\r
++ *       &lt;attribute name="extrusionOk" type="{http://www.w3.org/2001/XMLSchema}boolean" default="true" />\r
++ *     &lt;/restriction>\r
++ *   &lt;/complexContent>\r
++ * &lt;/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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..5464ee4d140833ab3f978dfdb6ea039da35fe55c
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,171 @@@
++/* ====================================================================\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
++ * &lt;complexType name="CT_Path2DArcTo">\r
++ *   &lt;complexContent>\r
++ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ *       &lt;attribute name="wR" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_AdjCoordinate" />\r
++ *       &lt;attribute name="hR" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_AdjCoordinate" />\r
++ *       &lt;attribute name="stAng" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_AdjAngle" />\r
++ *       &lt;attribute name="swAng" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_AdjAngle" />\r
++ *     &lt;/restriction>\r
++ *   &lt;/complexContent>\r
++ * &lt;/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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..a60f98bb67cf9224098c9fd87d5f29a1ba141b96
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,46 @@@
++/* ====================================================================\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
++ * &lt;complexType name="CT_Path2DClose">\r
++ *   &lt;complexContent>\r
++ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ *     &lt;/restriction>\r
++ *   &lt;/complexContent>\r
++ * &lt;/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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..e1818fa5dbdd6056fabc7bbff8db49fb7021b8a6
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,93 @@@
++/* ====================================================================\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
++ * &lt;complexType name="CT_Path2DCubicBezierTo">\r
++ *   &lt;complexContent>\r
++ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ *       &lt;sequence>\r
++ *         &lt;element name="pt" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_AdjPoint2D" maxOccurs="3" minOccurs="3"/>\r
++ *       &lt;/sequence>\r
++ *     &lt;/restriction>\r
++ *   &lt;/complexContent>\r
++ * &lt;/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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..9c6d1b39a84a326aa781b3e64afb8aeac90b6dd2
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,82 @@@
++/* ====================================================================\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
++ * &lt;complexType name="CT_Path2DLineTo">\r
++ *   &lt;complexContent>\r
++ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ *       &lt;sequence>\r
++ *         &lt;element name="pt" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_AdjPoint2D"/>\r
++ *       &lt;/sequence>\r
++ *     &lt;/restriction>\r
++ *   &lt;/complexContent>\r
++ * &lt;/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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..cd31a0ba577fc656d49d9a37947250ac1a2fef1f
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,93 @@@
++/* ====================================================================\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
++ * &lt;complexType name="CT_Path2DList">\r
++ *   &lt;complexContent>\r
++ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ *       &lt;sequence>\r
++ *         &lt;element name="path" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_Path2D" maxOccurs="unbounded" minOccurs="0"/>\r
++ *       &lt;/sequence>\r
++ *     &lt;/restriction>\r
++ *   &lt;/complexContent>\r
++ * &lt;/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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..f5e210f768e5bfcace9f3ba8df280a57d2f224b7
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,82 @@@
++/* ====================================================================\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
++ * &lt;complexType name="CT_Path2DMoveTo">\r
++ *   &lt;complexContent>\r
++ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ *       &lt;sequence>\r
++ *         &lt;element name="pt" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_AdjPoint2D"/>\r
++ *       &lt;/sequence>\r
++ *     &lt;/restriction>\r
++ *   &lt;/complexContent>\r
++ * &lt;/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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..b588775245a1c9b76a615e754eefe255f841171c
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,93 @@@
++/* ====================================================================\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
++ * &lt;complexType name="CT_Path2DQuadBezierTo">\r
++ *   &lt;complexContent>\r
++ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ *       &lt;sequence>\r
++ *         &lt;element name="pt" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_AdjPoint2D" maxOccurs="2" minOccurs="2"/>\r
++ *       &lt;/sequence>\r
++ *     &lt;/restriction>\r
++ *   &lt;/complexContent>\r
++ * &lt;/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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..e1a74b53e5cd75d918a37e118df2ae210d8ba4b9
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,70 @@@
++/* ====================================================================\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
++ * &lt;complexType name="CT_Percentage">\r
++ *   &lt;complexContent>\r
++ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ *       &lt;attribute name="val" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_Percentage" />\r
++ *     &lt;/restriction>\r
++ *   &lt;/complexContent>\r
++ * &lt;/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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..06cbfbc7aafcd0db2fca85bc5c80df9511ddb744
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,93 @@@
++/* ====================================================================\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
++ * &lt;complexType name="CT_Point2D">\r
++ *   &lt;complexContent>\r
++ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ *       &lt;attribute name="x" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_Coordinate" />\r
++ *       &lt;attribute name="y" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_Coordinate" />\r
++ *     &lt;/restriction>\r
++ *   &lt;/complexContent>\r
++ * &lt;/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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..3cbeb670f97dda220e61543323f52ea253651501
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,116 @@@
++/* ====================================================================\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
++ * &lt;complexType name="CT_Point3D">\r
++ *   &lt;complexContent>\r
++ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ *       &lt;attribute name="x" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_Coordinate" />\r
++ *       &lt;attribute name="y" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_Coordinate" />\r
++ *       &lt;attribute name="z" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_Coordinate" />\r
++ *     &lt;/restriction>\r
++ *   &lt;/complexContent>\r
++ * &lt;/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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..646dad5b580ac0a529e7b41a6d6fafab845e3509
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,273 @@@
++/* ====================================================================\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
++ * &lt;complexType name="CT_PolarAdjustHandle">\r
++ *   &lt;complexContent>\r
++ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ *       &lt;sequence>\r
++ *         &lt;element name="pos" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_AdjPoint2D"/>\r
++ *       &lt;/sequence>\r
++ *       &lt;attribute name="gdRefR" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_GeomGuideName" />\r
++ *       &lt;attribute name="minR" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_AdjCoordinate" />\r
++ *       &lt;attribute name="maxR" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_AdjCoordinate" />\r
++ *       &lt;attribute name="gdRefAng" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_GeomGuideName" />\r
++ *       &lt;attribute name="minAng" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_AdjAngle" />\r
++ *       &lt;attribute name="maxAng" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_AdjAngle" />\r
++ *     &lt;/restriction>\r
++ *   &lt;/complexContent>\r
++ * &lt;/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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..962db9513769e02f2bd78c24485997663ca79b7f
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,70 @@@
++/* ====================================================================\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
++ * &lt;complexType name="CT_PositiveFixedAngle">\r
++ *   &lt;complexContent>\r
++ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ *       &lt;attribute name="val" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_PositiveFixedAngle" />\r
++ *     &lt;/restriction>\r
++ *   &lt;/complexContent>\r
++ * &lt;/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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..001f01adceb83e718bfd94d87269f490b62cde77
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,70 @@@
++/* ====================================================================\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
++ * &lt;complexType name="CT_PositiveFixedPercentage">\r
++ *   &lt;complexContent>\r
++ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ *       &lt;attribute name="val" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_PositiveFixedPercentage" />\r
++ *     &lt;/restriction>\r
++ *   &lt;/complexContent>\r
++ * &lt;/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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..8fc61f301ff74dfddb2a16da5f0979894ec32f45
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,70 @@@
++/* ====================================================================\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
++ * &lt;complexType name="CT_PositivePercentage">\r
++ *   &lt;complexContent>\r
++ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ *       &lt;attribute name="val" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_PositivePercentage" />\r
++ *     &lt;/restriction>\r
++ *   &lt;/complexContent>\r
++ * &lt;/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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..c8d76e6e56e1db218aa361d21629b9d9fb1a5d5e
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,93 @@@
++/* ====================================================================\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
++ * &lt;complexType name="CT_PositiveSize2D">\r
++ *   &lt;complexContent>\r
++ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ *       &lt;attribute name="cx" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_PositiveCoordinate" />\r
++ *       &lt;attribute name="cy" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_PositiveCoordinate" />\r
++ *     &lt;/restriction>\r
++ *   &lt;/complexContent>\r
++ * &lt;/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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..e240a711a08d68dbe1ddf401275f12f9625b6b4e
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,183 @@@
++/* ====================================================================\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
++ * &lt;complexType name="CT_PresetColor">\r
++ *   &lt;complexContent>\r
++ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ *       &lt;sequence>\r
++ *         &lt;group ref="{http://schemas.openxmlformats.org/drawingml/2006/main}EG_ColorTransform" maxOccurs="unbounded" minOccurs="0"/>\r
++ *       &lt;/sequence>\r
++ *       &lt;attribute name="val" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_PresetColorVal" />\r
++ *     &lt;/restriction>\r
++ *   &lt;/complexContent>\r
++ * &lt;/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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..b55b02ea073abba34c2062d802b574aa4ca7f39e
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,114 @@@
++/* ====================================================================\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
++ * &lt;complexType name="CT_PresetGeometry2D">\r
++ *   &lt;complexContent>\r
++ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ *       &lt;sequence>\r
++ *         &lt;element name="avLst" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_GeomGuideList" minOccurs="0"/>\r
++ *       &lt;/sequence>\r
++ *       &lt;attribute name="prst" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_ShapeType" />\r
++ *     &lt;/restriction>\r
++ *   &lt;/complexContent>\r
++ * &lt;/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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..f7082b353b6869f5c49e6c2dd5c7ced2b27f848b
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,114 @@@
++/* ====================================================================\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
++ * &lt;complexType name="CT_PresetTextShape">\r
++ *   &lt;complexContent>\r
++ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ *       &lt;sequence>\r
++ *         &lt;element name="avLst" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_GeomGuideList" minOccurs="0"/>\r
++ *       &lt;/sequence>\r
++ *       &lt;attribute name="prst" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_TextShapeType" />\r
++ *     &lt;/restriction>\r
++ *   &lt;/complexContent>\r
++ * &lt;/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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..3a951c1f1febbcb348f682e6b801e6ed26abf150
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,93 @@@
++/* ====================================================================\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
++ * &lt;complexType name="CT_Ratio">\r
++ *   &lt;complexContent>\r
++ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ *       &lt;attribute name="n" use="required" type="{http://www.w3.org/2001/XMLSchema}long" />\r
++ *       &lt;attribute name="d" use="required" type="{http://www.w3.org/2001/XMLSchema}long" />\r
++ *     &lt;/restriction>\r
++ *   &lt;/complexContent>\r
++ * &lt;/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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..e332bd83c9b466b54bb938b340d019db803227f7
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,203 @@@
++/* ====================================================================\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
++ * &lt;complexType name="CT_RelativeRect">\r
++ *   &lt;complexContent>\r
++ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ *       &lt;attribute name="l" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_Percentage" default="0" />\r
++ *       &lt;attribute name="t" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_Percentage" default="0" />\r
++ *       &lt;attribute name="r" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_Percentage" default="0" />\r
++ *       &lt;attribute name="b" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_Percentage" default="0" />\r
++ *     &lt;/restriction>\r
++ *   &lt;/complexContent>\r
++ * &lt;/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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..ef920d601a78414cde418a71ccb79d82c932e153
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,186 @@@
++/* ====================================================================\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
++ * &lt;complexType name="CT_SRgbColor">\r
++ *   &lt;complexContent>\r
++ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ *       &lt;sequence>\r
++ *         &lt;group ref="{http://schemas.openxmlformats.org/drawingml/2006/main}EG_ColorTransform" maxOccurs="unbounded" minOccurs="0"/>\r
++ *       &lt;/sequence>\r
++ *       &lt;attribute name="val" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_HexBinary3" />\r
++ *     &lt;/restriction>\r
++ *   &lt;/complexContent>\r
++ * &lt;/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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..335e4b291226f09d6e5e07a9ae1a62c8ed482385
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,221 @@@
++/* ====================================================================\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
++ * &lt;complexType name="CT_ScRgbColor">\r
++ *   &lt;complexContent>\r
++ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ *       &lt;sequence>\r
++ *         &lt;group ref="{http://schemas.openxmlformats.org/drawingml/2006/main}EG_ColorTransform" maxOccurs="unbounded" minOccurs="0"/>\r
++ *       &lt;/sequence>\r
++ *       &lt;attribute name="r" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_Percentage" />\r
++ *       &lt;attribute name="g" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_Percentage" />\r
++ *       &lt;attribute name="b" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_Percentage" />\r
++ *     &lt;/restriction>\r
++ *   &lt;/complexContent>\r
++ * &lt;/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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..2e8eba194042e0c09e337a81d226f9e26f356077
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,114 @@@
++/* ====================================================================\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
++ * &lt;complexType name="CT_Scale2D">\r
++ *   &lt;complexContent>\r
++ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ *       &lt;sequence>\r
++ *         &lt;element name="sx" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_Ratio"/>\r
++ *         &lt;element name="sy" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_Ratio"/>\r
++ *       &lt;/sequence>\r
++ *     &lt;/restriction>\r
++ *   &lt;/complexContent>\r
++ * &lt;/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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..7febaad83811066d4fa5123c8d9ff62c9f28db42
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,183 @@@
++/* ====================================================================\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
++ * &lt;complexType name="CT_SchemeColor">\r
++ *   &lt;complexContent>\r
++ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ *       &lt;sequence>\r
++ *         &lt;group ref="{http://schemas.openxmlformats.org/drawingml/2006/main}EG_ColorTransform" maxOccurs="unbounded" minOccurs="0"/>\r
++ *       &lt;/sequence>\r
++ *       &lt;attribute name="val" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_SchemeColorVal" />\r
++ *     &lt;/restriction>\r
++ *   &lt;/complexContent>\r
++ * &lt;/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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..a29d744465241b610037bccd6b8f8e534b022da5
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,116 @@@
++/* ====================================================================\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
++ * &lt;complexType name="CT_SphereCoords">\r
++ *   &lt;complexContent>\r
++ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ *       &lt;attribute name="lat" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_PositiveFixedAngle" />\r
++ *       &lt;attribute name="lon" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_PositiveFixedAngle" />\r
++ *       &lt;attribute name="rev" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_PositiveFixedAngle" />\r
++ *     &lt;/restriction>\r
++ *   &lt;/complexContent>\r
++ * &lt;/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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..adf0d16b2e2d0a6f0182c65d0bdd85302239c6c4
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,219 @@@
++/* ====================================================================\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
++ * &lt;complexType name="CT_SystemColor">\r
++ *   &lt;complexContent>\r
++ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ *       &lt;sequence>\r
++ *         &lt;group ref="{http://schemas.openxmlformats.org/drawingml/2006/main}EG_ColorTransform" maxOccurs="unbounded" minOccurs="0"/>\r
++ *       &lt;/sequence>\r
++ *       &lt;attribute name="val" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_SystemColorVal" />\r
++ *       &lt;attribute name="lastClr" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_HexBinary3" />\r
++ *     &lt;/restriction>\r
++ *   &lt;/complexContent>\r
++ * &lt;/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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..38ec50e654e4ef8438c000d4534f9bc04a7d3d93
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,232 @@@
++/* ====================================================================\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
++ * &lt;complexType name="CT_Transform2D">\r
++ *   &lt;complexContent>\r
++ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ *       &lt;sequence>\r
++ *         &lt;element name="off" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_Point2D" minOccurs="0"/>\r
++ *         &lt;element name="ext" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_PositiveSize2D" minOccurs="0"/>\r
++ *       &lt;/sequence>\r
++ *       &lt;attribute name="rot" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_Angle" default="0" />\r
++ *       &lt;attribute name="flipH" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />\r
++ *       &lt;attribute name="flipV" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />\r
++ *     &lt;/restriction>\r
++ *   &lt;/complexContent>\r
++ * &lt;/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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..03c5fb8e4467692063b4a6c31fd4c59f5e9bfaba
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,116 @@@
++/* ====================================================================\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
++ * &lt;complexType name="CT_Vector3D">\r
++ *   &lt;complexContent>\r
++ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ *       &lt;attribute name="dx" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_Coordinate" />\r
++ *       &lt;attribute name="dy" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_Coordinate" />\r
++ *       &lt;attribute name="dz" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_Coordinate" />\r
++ *     &lt;/restriction>\r
++ *   &lt;/complexContent>\r
++ * &lt;/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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..85c30bac542fbfd0f3fca9f02efd01fb7fee9df3
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,273 @@@
++/* ====================================================================\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
++ * &lt;complexType name="CT_XYAdjustHandle">\r
++ *   &lt;complexContent>\r
++ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">\r
++ *       &lt;sequence>\r
++ *         &lt;element name="pos" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_AdjPoint2D"/>\r
++ *       &lt;/sequence>\r
++ *       &lt;attribute name="gdRefX" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_GeomGuideName" />\r
++ *       &lt;attribute name="minX" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_AdjCoordinate" />\r
++ *       &lt;attribute name="maxX" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_AdjCoordinate" />\r
++ *       &lt;attribute name="gdRefY" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_GeomGuideName" />\r
++ *       &lt;attribute name="minY" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_AdjCoordinate" />\r
++ *       &lt;attribute name="maxY" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_AdjCoordinate" />\r
++ *     &lt;/restriction>\r
++ *   &lt;/complexContent>\r
++ * &lt;/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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..8c6f9c217c266ad56e3171f5dd029ba5f9912937
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,2023 @@@
++/* ====================================================================\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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..27262d6060f09282c9bc7e057e40ae82f38821d2
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,149 @@@
++/* ====================================================================\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
++ * &lt;simpleType name="ST_BlackWhiteMode">\r
++ *   &lt;restriction base="{http://www.w3.org/2001/XMLSchema}token">\r
++ *     &lt;enumeration value="clr"/>\r
++ *     &lt;enumeration value="auto"/>\r
++ *     &lt;enumeration value="gray"/>\r
++ *     &lt;enumeration value="ltGray"/>\r
++ *     &lt;enumeration value="invGray"/>\r
++ *     &lt;enumeration value="grayWhite"/>\r
++ *     &lt;enumeration value="blackGray"/>\r
++ *     &lt;enumeration value="blackWhite"/>\r
++ *     &lt;enumeration value="black"/>\r
++ *     &lt;enumeration value="white"/>\r
++ *     &lt;enumeration value="hidden"/>\r
++ *   &lt;/restriction>\r
++ * &lt;/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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..8a26458f02b89ade84a6d0cc92542cabc58d9695
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,109 @@@
++/* ====================================================================\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
++ * &lt;simpleType name="ST_PathFillMode">\r
++ *   &lt;restriction base="{http://www.w3.org/2001/XMLSchema}token">\r
++ *     &lt;enumeration value="none"/>\r
++ *     &lt;enumeration value="norm"/>\r
++ *     &lt;enumeration value="lighten"/>\r
++ *     &lt;enumeration value="lightenLess"/>\r
++ *     &lt;enumeration value="darken"/>\r
++ *     &lt;enumeration value="darkenLess"/>\r
++ *   &lt;/restriction>\r
++ * &lt;/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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..7450ac656c65f3b4eadb78bebc63dfa24ac8947a
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,1181 @@@
++/* ====================================================================\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
++ * &lt;simpleType name="ST_PresetColorVal">\r
++ *   &lt;restriction base="{http://www.w3.org/2001/XMLSchema}token">\r
++ *     &lt;enumeration value="aliceBlue"/>\r
++ *     &lt;enumeration value="antiqueWhite"/>\r
++ *     &lt;enumeration value="aqua"/>\r
++ *     &lt;enumeration value="aquamarine"/>\r
++ *     &lt;enumeration value="azure"/>\r
++ *     &lt;enumeration value="beige"/>\r
++ *     &lt;enumeration value="bisque"/>\r
++ *     &lt;enumeration value="black"/>\r
++ *     &lt;enumeration value="blanchedAlmond"/>\r
++ *     &lt;enumeration value="blue"/>\r
++ *     &lt;enumeration value="blueViolet"/>\r
++ *     &lt;enumeration value="brown"/>\r
++ *     &lt;enumeration value="burlyWood"/>\r
++ *     &lt;enumeration value="cadetBlue"/>\r
++ *     &lt;enumeration value="chartreuse"/>\r
++ *     &lt;enumeration value="chocolate"/>\r
++ *     &lt;enumeration value="coral"/>\r
++ *     &lt;enumeration value="cornflowerBlue"/>\r
++ *     &lt;enumeration value="cornsilk"/>\r
++ *     &lt;enumeration value="crimson"/>\r
++ *     &lt;enumeration value="cyan"/>\r
++ *     &lt;enumeration value="dkBlue"/>\r
++ *     &lt;enumeration value="dkCyan"/>\r
++ *     &lt;enumeration value="dkGoldenrod"/>\r
++ *     &lt;enumeration value="dkGray"/>\r
++ *     &lt;enumeration value="dkGreen"/>\r
++ *     &lt;enumeration value="dkKhaki"/>\r
++ *     &lt;enumeration value="dkMagenta"/>\r
++ *     &lt;enumeration value="dkOliveGreen"/>\r
++ *     &lt;enumeration value="dkOrange"/>\r
++ *     &lt;enumeration value="dkOrchid"/>\r
++ *     &lt;enumeration value="dkRed"/>\r
++ *     &lt;enumeration value="dkSalmon"/>\r
++ *     &lt;enumeration value="dkSeaGreen"/>\r
++ *     &lt;enumeration value="dkSlateBlue"/>\r
++ *     &lt;enumeration value="dkSlateGray"/>\r
++ *     &lt;enumeration value="dkTurquoise"/>\r
++ *     &lt;enumeration value="dkViolet"/>\r
++ *     &lt;enumeration value="deepPink"/>\r
++ *     &lt;enumeration value="deepSkyBlue"/>\r
++ *     &lt;enumeration value="dimGray"/>\r
++ *     &lt;enumeration value="dodgerBlue"/>\r
++ *     &lt;enumeration value="firebrick"/>\r
++ *     &lt;enumeration value="floralWhite"/>\r
++ *     &lt;enumeration value="forestGreen"/>\r
++ *     &lt;enumeration value="fuchsia"/>\r
++ *     &lt;enumeration value="gainsboro"/>\r
++ *     &lt;enumeration value="ghostWhite"/>\r
++ *     &lt;enumeration value="gold"/>\r
++ *     &lt;enumeration value="goldenrod"/>\r
++ *     &lt;enumeration value="gray"/>\r
++ *     &lt;enumeration value="green"/>\r
++ *     &lt;enumeration value="greenYellow"/>\r
++ *     &lt;enumeration value="honeydew"/>\r
++ *     &lt;enumeration value="hotPink"/>\r
++ *     &lt;enumeration value="indianRed"/>\r
++ *     &lt;enumeration value="indigo"/>\r
++ *     &lt;enumeration value="ivory"/>\r
++ *     &lt;enumeration value="khaki"/>\r
++ *     &lt;enumeration value="lavender"/>\r
++ *     &lt;enumeration value="lavenderBlush"/>\r
++ *     &lt;enumeration value="lawnGreen"/>\r
++ *     &lt;enumeration value="lemonChiffon"/>\r
++ *     &lt;enumeration value="ltBlue"/>\r
++ *     &lt;enumeration value="ltCoral"/>\r
++ *     &lt;enumeration value="ltCyan"/>\r
++ *     &lt;enumeration value="ltGoldenrodYellow"/>\r
++ *     &lt;enumeration value="ltGray"/>\r
++ *     &lt;enumeration value="ltGreen"/>\r
++ *     &lt;enumeration value="ltPink"/>\r
++ *     &lt;enumeration value="ltSalmon"/>\r
++ *     &lt;enumeration value="ltSeaGreen"/>\r
++ *     &lt;enumeration value="ltSkyBlue"/>\r
++ *     &lt;enumeration value="ltSlateGray"/>\r
++ *     &lt;enumeration value="ltSteelBlue"/>\r
++ *     &lt;enumeration value="ltYellow"/>\r
++ *     &lt;enumeration value="lime"/>\r
++ *     &lt;enumeration value="limeGreen"/>\r
++ *     &lt;enumeration value="linen"/>\r
++ *     &lt;enumeration value="magenta"/>\r
++ *     &lt;enumeration value="maroon"/>\r
++ *     &lt;enumeration value="medAquamarine"/>\r
++ *     &lt;enumeration value="medBlue"/>\r
++ *     &lt;enumeration value="medOrchid"/>\r
++ *     &lt;enumeration value="medPurple"/>\r
++ *     &lt;enumeration value="medSeaGreen"/>\r
++ *     &lt;enumeration value="medSlateBlue"/>\r
++ *     &lt;enumeration value="medSpringGreen"/>\r
++ *     &lt;enumeration value="medTurquoise"/>\r
++ *     &lt;enumeration value="medVioletRed"/>\r
++ *     &lt;enumeration value="midnightBlue"/>\r
++ *     &lt;enumeration value="mintCream"/>\r
++ *     &lt;enumeration value="mistyRose"/>\r
++ *     &lt;enumeration value="moccasin"/>\r
++ *     &lt;enumeration value="navajoWhite"/>\r
++ *     &lt;enumeration value="navy"/>\r
++ *     &lt;enumeration value="oldLace"/>\r
++ *     &lt;enumeration value="olive"/>\r
++ *     &lt;enumeration value="oliveDrab"/>\r
++ *     &lt;enumeration value="orange"/>\r
++ *     &lt;enumeration value="orangeRed"/>\r
++ *     &lt;enumeration value="orchid"/>\r
++ *     &lt;enumeration value="paleGoldenrod"/>\r
++ *     &lt;enumeration value="paleGreen"/>\r
++ *     &lt;enumeration value="paleTurquoise"/>\r
++ *     &lt;enumeration value="paleVioletRed"/>\r
++ *     &lt;enumeration value="papayaWhip"/>\r
++ *     &lt;enumeration value="peachPuff"/>\r
++ *     &lt;enumeration value="peru"/>\r
++ *     &lt;enumeration value="pink"/>\r
++ *     &lt;enumeration value="plum"/>\r
++ *     &lt;enumeration value="powderBlue"/>\r
++ *     &lt;enumeration value="purple"/>\r
++ *     &lt;enumeration value="red"/>\r
++ *     &lt;enumeration value="rosyBrown"/>\r
++ *     &lt;enumeration value="royalBlue"/>\r
++ *     &lt;enumeration value="saddleBrown"/>\r
++ *     &lt;enumeration value="salmon"/>\r
++ *     &lt;enumeration value="sandyBrown"/>\r
++ *     &lt;enumeration value="seaGreen"/>\r
++ *     &lt;enumeration value="seaShell"/>\r
++ *     &lt;enumeration value="sienna"/>\r
++ *     &lt;enumeration value="silver"/>\r
++ *     &lt;enumeration value="skyBlue"/>\r
++ *     &lt;enumeration value="slateBlue"/>\r
++ *     &lt;enumeration value="slateGray"/>\r
++ *     &lt;enumeration value="snow"/>\r
++ *     &lt;enumeration value="springGreen"/>\r
++ *     &lt;enumeration value="steelBlue"/>\r
++ *     &lt;enumeration value="tan"/>\r
++ *     &lt;enumeration value="teal"/>\r
++ *     &lt;enumeration value="thistle"/>\r
++ *     &lt;enumeration value="tomato"/>\r
++ *     &lt;enumeration value="turquoise"/>\r
++ *     &lt;enumeration value="violet"/>\r
++ *     &lt;enumeration value="wheat"/>\r
++ *     &lt;enumeration value="white"/>\r
++ *     &lt;enumeration value="whiteSmoke"/>\r
++ *     &lt;enumeration value="yellow"/>\r
++ *     &lt;enumeration value="yellowGreen"/>\r
++ *   &lt;/restriction>\r
++ * &lt;/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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..688a166bafd6e119586f208bcbd8a93999e50aea
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,133 @@@
++/* ====================================================================\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
++ * &lt;simpleType name="ST_RectAlignment">\r
++ *   &lt;restriction base="{http://www.w3.org/2001/XMLSchema}token">\r
++ *     &lt;enumeration value="tl"/>\r
++ *     &lt;enumeration value="t"/>\r
++ *     &lt;enumeration value="tr"/>\r
++ *     &lt;enumeration value="l"/>\r
++ *     &lt;enumeration value="ctr"/>\r
++ *     &lt;enumeration value="r"/>\r
++ *     &lt;enumeration value="bl"/>\r
++ *     &lt;enumeration value="b"/>\r
++ *     &lt;enumeration value="br"/>\r
++ *   &lt;/restriction>\r
++ * &lt;/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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..84b88075f1575d4ddd3f02cd66f371d810c6c863
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,197 @@@
++/* ====================================================================\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
++ * &lt;simpleType name="ST_SchemeColorVal">\r
++ *   &lt;restriction base="{http://www.w3.org/2001/XMLSchema}token">\r
++ *     &lt;enumeration value="bg1"/>\r
++ *     &lt;enumeration value="tx1"/>\r
++ *     &lt;enumeration value="bg2"/>\r
++ *     &lt;enumeration value="tx2"/>\r
++ *     &lt;enumeration value="accent1"/>\r
++ *     &lt;enumeration value="accent2"/>\r
++ *     &lt;enumeration value="accent3"/>\r
++ *     &lt;enumeration value="accent4"/>\r
++ *     &lt;enumeration value="accent5"/>\r
++ *     &lt;enumeration value="accent6"/>\r
++ *     &lt;enumeration value="hlink"/>\r
++ *     &lt;enumeration value="folHlink"/>\r
++ *     &lt;enumeration value="phClr"/>\r
++ *     &lt;enumeration value="dk1"/>\r
++ *     &lt;enumeration value="lt1"/>\r
++ *     &lt;enumeration value="dk2"/>\r
++ *     &lt;enumeration value="lt2"/>\r
++ *   &lt;/restriction>\r
++ * &lt;/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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..559b0a15919eb611722664dc29221b24c4ab7a8d
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,1557 @@@
++/* ====================================================================\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
++ * &lt;simpleType name="ST_ShapeType">\r
++ *   &lt;restriction base="{http://www.w3.org/2001/XMLSchema}token">\r
++ *     &lt;enumeration value="line"/>\r
++ *     &lt;enumeration value="lineInv"/>\r
++ *     &lt;enumeration value="triangle"/>\r
++ *     &lt;enumeration value="rtTriangle"/>\r
++ *     &lt;enumeration value="rect"/>\r
++ *     &lt;enumeration value="diamond"/>\r
++ *     &lt;enumeration value="parallelogram"/>\r
++ *     &lt;enumeration value="trapezoid"/>\r
++ *     &lt;enumeration value="nonIsoscelesTrapezoid"/>\r
++ *     &lt;enumeration value="pentagon"/>\r
++ *     &lt;enumeration value="hexagon"/>\r
++ *     &lt;enumeration value="heptagon"/>\r
++ *     &lt;enumeration value="octagon"/>\r
++ *     &lt;enumeration value="decagon"/>\r
++ *     &lt;enumeration value="dodecagon"/>\r
++ *     &lt;enumeration value="star4"/>\r
++ *     &lt;enumeration value="star5"/>\r
++ *     &lt;enumeration value="star6"/>\r
++ *     &lt;enumeration value="star7"/>\r
++ *     &lt;enumeration value="star8"/>\r
++ *     &lt;enumeration value="star10"/>\r
++ *     &lt;enumeration value="star12"/>\r
++ *     &lt;enumeration value="star16"/>\r
++ *     &lt;enumeration value="star24"/>\r
++ *     &lt;enumeration value="star32"/>\r
++ *     &lt;enumeration value="roundRect"/>\r
++ *     &lt;enumeration value="round1Rect"/>\r
++ *     &lt;enumeration value="round2SameRect"/>\r
++ *     &lt;enumeration value="round2DiagRect"/>\r
++ *     &lt;enumeration value="snipRoundRect"/>\r
++ *     &lt;enumeration value="snip1Rect"/>\r
++ *     &lt;enumeration value="snip2SameRect"/>\r
++ *     &lt;enumeration value="snip2DiagRect"/>\r
++ *     &lt;enumeration value="plaque"/>\r
++ *     &lt;enumeration value="ellipse"/>\r
++ *     &lt;enumeration value="teardrop"/>\r
++ *     &lt;enumeration value="homePlate"/>\r
++ *     &lt;enumeration value="chevron"/>\r
++ *     &lt;enumeration value="pieWedge"/>\r
++ *     &lt;enumeration value="pie"/>\r
++ *     &lt;enumeration value="blockArc"/>\r
++ *     &lt;enumeration value="donut"/>\r
++ *     &lt;enumeration value="noSmoking"/>\r
++ *     &lt;enumeration value="rightArrow"/>\r
++ *     &lt;enumeration value="leftArrow"/>\r
++ *     &lt;enumeration value="upArrow"/>\r
++ *     &lt;enumeration value="downArrow"/>\r
++ *     &lt;enumeration value="stripedRightArrow"/>\r
++ *     &lt;enumeration value="notchedRightArrow"/>\r
++ *     &lt;enumeration value="bentUpArrow"/>\r
++ *     &lt;enumeration value="leftRightArrow"/>\r
++ *     &lt;enumeration value="upDownArrow"/>\r
++ *     &lt;enumeration value="leftUpArrow"/>\r
++ *     &lt;enumeration value="leftRightUpArrow"/>\r
++ *     &lt;enumeration value="quadArrow"/>\r
++ *     &lt;enumeration value="leftArrowCallout"/>\r
++ *     &lt;enumeration value="rightArrowCallout"/>\r
++ *     &lt;enumeration value="upArrowCallout"/>\r
++ *     &lt;enumeration value="downArrowCallout"/>\r
++ *     &lt;enumeration value="leftRightArrowCallout"/>\r
++ *     &lt;enumeration value="upDownArrowCallout"/>\r
++ *     &lt;enumeration value="quadArrowCallout"/>\r
++ *     &lt;enumeration value="bentArrow"/>\r
++ *     &lt;enumeration value="uturnArrow"/>\r
++ *     &lt;enumeration value="circularArrow"/>\r
++ *     &lt;enumeration value="leftCircularArrow"/>\r
++ *     &lt;enumeration value="leftRightCircularArrow"/>\r
++ *     &lt;enumeration value="curvedRightArrow"/>\r
++ *     &lt;enumeration value="curvedLeftArrow"/>\r
++ *     &lt;enumeration value="curvedUpArrow"/>\r
++ *     &lt;enumeration value="curvedDownArrow"/>\r
++ *     &lt;enumeration value="swooshArrow"/>\r
++ *     &lt;enumeration value="cube"/>\r
++ *     &lt;enumeration value="can"/>\r
++ *     &lt;enumeration value="lightningBolt"/>\r
++ *     &lt;enumeration value="heart"/>\r
++ *     &lt;enumeration value="sun"/>\r
++ *     &lt;enumeration value="moon"/>\r
++ *     &lt;enumeration value="smileyFace"/>\r
++ *     &lt;enumeration value="irregularSeal1"/>\r
++ *     &lt;enumeration value="irregularSeal2"/>\r
++ *     &lt;enumeration value="foldedCorner"/>\r
++ *     &lt;enumeration value="bevel"/>\r
++ *     &lt;enumeration value="frame"/>\r
++ *     &lt;enumeration value="halfFrame"/>\r
++ *     &lt;enumeration value="corner"/>\r
++ *     &lt;enumeration value="diagStripe"/>\r
++ *     &lt;enumeration value="chord"/>\r
++ *     &lt;enumeration value="arc"/>\r
++ *     &lt;enumeration value="leftBracket"/>\r
++ *     &lt;enumeration value="rightBracket"/>\r
++ *     &lt;enumeration value="leftBrace"/>\r
++ *     &lt;enumeration value="rightBrace"/>\r
++ *     &lt;enumeration value="bracketPair"/>\r
++ *     &lt;enumeration value="bracePair"/>\r
++ *     &lt;enumeration value="straightConnector1"/>\r
++ *     &lt;enumeration value="bentConnector2"/>\r
++ *     &lt;enumeration value="bentConnector3"/>\r
++ *     &lt;enumeration value="bentConnector4"/>\r
++ *     &lt;enumeration value="bentConnector5"/>\r
++ *     &lt;enumeration value="curvedConnector2"/>\r
++ *     &lt;enumeration value="curvedConnector3"/>\r
++ *     &lt;enumeration value="curvedConnector4"/>\r
++ *     &lt;enumeration value="curvedConnector5"/>\r
++ *     &lt;enumeration value="callout1"/>\r
++ *     &lt;enumeration value="callout2"/>\r
++ *     &lt;enumeration value="callout3"/>\r
++ *     &lt;enumeration value="accentCallout1"/>\r
++ *     &lt;enumeration value="accentCallout2"/>\r
++ *     &lt;enumeration value="accentCallout3"/>\r
++ *     &lt;enumeration value="borderCallout1"/>\r
++ *     &lt;enumeration value="borderCallout2"/>\r
++ *     &lt;enumeration value="borderCallout3"/>\r
++ *     &lt;enumeration value="accentBorderCallout1"/>\r
++ *     &lt;enumeration value="accentBorderCallout2"/>\r
++ *     &lt;enumeration value="accentBorderCallout3"/>\r
++ *     &lt;enumeration value="wedgeRectCallout"/>\r
++ *     &lt;enumeration value="wedgeRoundRectCallout"/>\r
++ *     &lt;enumeration value="wedgeEllipseCallout"/>\r
++ *     &lt;enumeration value="cloudCallout"/>\r
++ *     &lt;enumeration value="cloud"/>\r
++ *     &lt;enumeration value="ribbon"/>\r
++ *     &lt;enumeration value="ribbon2"/>\r
++ *     &lt;enumeration value="ellipseRibbon"/>\r
++ *     &lt;enumeration value="ellipseRibbon2"/>\r
++ *     &lt;enumeration value="leftRightRibbon"/>\r
++ *     &lt;enumeration value="verticalScroll"/>\r
++ *     &lt;enumeration value="horizontalScroll"/>\r
++ *     &lt;enumeration value="wave"/>\r
++ *     &lt;enumeration value="doubleWave"/>\r
++ *     &lt;enumeration value="plus"/>\r
++ *     &lt;enumeration value="flowChartProcess"/>\r
++ *     &lt;enumeration value="flowChartDecision"/>\r
++ *     &lt;enumeration value="flowChartInputOutput"/>\r
++ *     &lt;enumeration value="flowChartPredefinedProcess"/>\r
++ *     &lt;enumeration value="flowChartInternalStorage"/>\r
++ *     &lt;enumeration value="flowChartDocument"/>\r
++ *     &lt;enumeration value="flowChartMultidocument"/>\r
++ *     &lt;enumeration value="flowChartTerminator"/>\r
++ *     &lt;enumeration value="flowChartPreparation"/>\r
++ *     &lt;enumeration value="flowChartManualInput"/>\r
++ *     &lt;enumeration value="flowChartManualOperation"/>\r
++ *     &lt;enumeration value="flowChartConnector"/>\r
++ *     &lt;enumeration value="flowChartPunchedCard"/>\r
++ *     &lt;enumeration value="flowChartPunchedTape"/>\r
++ *     &lt;enumeration value="flowChartSummingJunction"/>\r
++ *     &lt;enumeration value="flowChartOr"/>\r
++ *     &lt;enumeration value="flowChartCollate"/>\r
++ *     &lt;enumeration value="flowChartSort"/>\r
++ *     &lt;enumeration value="flowChartExtract"/>\r
++ *     &lt;enumeration value="flowChartMerge"/>\r
++ *     &lt;enumeration value="flowChartOfflineStorage"/>\r
++ *     &lt;enumeration value="flowChartOnlineStorage"/>\r
++ *     &lt;enumeration value="flowChartMagneticTape"/>\r
++ *     &lt;enumeration value="flowChartMagneticDisk"/>\r
++ *     &lt;enumeration value="flowChartMagneticDrum"/>\r
++ *     &lt;enumeration value="flowChartDisplay"/>\r
++ *     &lt;enumeration value="flowChartDelay"/>\r
++ *     &lt;enumeration value="flowChartAlternateProcess"/>\r
++ *     &lt;enumeration value="flowChartOffpageConnector"/>\r
++ *     &lt;enumeration value="actionButtonBlank"/>\r
++ *     &lt;enumeration value="actionButtonHome"/>\r
++ *     &lt;enumeration value="actionButtonHelp"/>\r
++ *     &lt;enumeration value="actionButtonInformation"/>\r
++ *     &lt;enumeration value="actionButtonForwardNext"/>\r
++ *     &lt;enumeration value="actionButtonBackPrevious"/>\r
++ *     &lt;enumeration value="actionButtonEnd"/>\r
++ *     &lt;enumeration value="actionButtonBeginning"/>\r
++ *     &lt;enumeration value="actionButtonReturn"/>\r
++ *     &lt;enumeration value="actionButtonDocument"/>\r
++ *     &lt;enumeration value="actionButtonSound"/>\r
++ *     &lt;enumeration value="actionButtonMovie"/>\r
++ *     &lt;enumeration value="gear6"/>\r
++ *     &lt;enumeration value="gear9"/>\r
++ *     &lt;enumeration value="funnel"/>\r
++ *     &lt;enumeration value="mathPlus"/>\r
++ *     &lt;enumeration value="mathMinus"/>\r
++ *     &lt;enumeration value="mathMultiply"/>\r
++ *     &lt;enumeration value="mathDivide"/>\r
++ *     &lt;enumeration value="mathEqual"/>\r
++ *     &lt;enumeration value="mathNotEqual"/>\r
++ *     &lt;enumeration value="cornerTabs"/>\r
++ *     &lt;enumeration value="squareTabs"/>\r
++ *     &lt;enumeration value="plaqueTabs"/>\r
++ *     &lt;enumeration value="chartX"/>\r
++ *     &lt;enumeration value="chartStar"/>\r
++ *     &lt;enumeration value="chartPlus"/>\r
++ *   &lt;/restriction>\r
++ * &lt;/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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..f3ed4b0cf7862b64d01c06cd935c1f3367c588e8
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,389 @@@
++/* ====================================================================\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
++ * &lt;simpleType name="ST_TextShapeType">\r
++ *   &lt;restriction base="{http://www.w3.org/2001/XMLSchema}token">\r
++ *     &lt;enumeration value="textNoShape"/>\r
++ *     &lt;enumeration value="textPlain"/>\r
++ *     &lt;enumeration value="textStop"/>\r
++ *     &lt;enumeration value="textTriangle"/>\r
++ *     &lt;enumeration value="textTriangleInverted"/>\r
++ *     &lt;enumeration value="textChevron"/>\r
++ *     &lt;enumeration value="textChevronInverted"/>\r
++ *     &lt;enumeration value="textRingInside"/>\r
++ *     &lt;enumeration value="textRingOutside"/>\r
++ *     &lt;enumeration value="textArchUp"/>\r
++ *     &lt;enumeration value="textArchDown"/>\r
++ *     &lt;enumeration value="textCircle"/>\r
++ *     &lt;enumeration value="textButton"/>\r
++ *     &lt;enumeration value="textArchUpPour"/>\r
++ *     &lt;enumeration value="textArchDownPour"/>\r
++ *     &lt;enumeration value="textCirclePour"/>\r
++ *     &lt;enumeration value="textButtonPour"/>\r
++ *     &lt;enumeration value="textCurveUp"/>\r
++ *     &lt;enumeration value="textCurveDown"/>\r
++ *     &lt;enumeration value="textCanUp"/>\r
++ *     &lt;enumeration value="textCanDown"/>\r
++ *     &lt;enumeration value="textWave1"/>\r
++ *     &lt;enumeration value="textWave2"/>\r
++ *     &lt;enumeration value="textDoubleWave1"/>\r
++ *     &lt;enumeration value="textWave4"/>\r
++ *     &lt;enumeration value="textInflate"/>\r
++ *     &lt;enumeration value="textDeflate"/>\r
++ *     &lt;enumeration value="textInflateBottom"/>\r
++ *     &lt;enumeration value="textDeflateBottom"/>\r
++ *     &lt;enumeration value="textInflateTop"/>\r
++ *     &lt;enumeration value="textDeflateTop"/>\r
++ *     &lt;enumeration value="textDeflateInflate"/>\r
++ *     &lt;enumeration value="textDeflateInflateDeflate"/>\r
++ *     &lt;enumeration value="textFadeRight"/>\r
++ *     &lt;enumeration value="textFadeLeft"/>\r
++ *     &lt;enumeration value="textFadeUp"/>\r
++ *     &lt;enumeration value="textFadeDown"/>\r
++ *     &lt;enumeration value="textSlantUp"/>\r
++ *     &lt;enumeration value="textSlantDown"/>\r
++ *     &lt;enumeration value="textCascadeUp"/>\r
++ *     &lt;enumeration value="textCascadeDown"/>\r
++ *   &lt;/restriction>\r
++ * &lt;/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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..0f94e14b6acefb56014df090d1ef6e9ac7cbfcc0
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,41 @@@
++/*
++ *  ====================================================================
++ *    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);
++    }
++
++}
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..2a01de449e343edf7d4ed25f3d3c3a7546f3b2b1
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,45 @@@
++/*
++ *  ====================================================================
++ *    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;
++    }
++
++}
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..5d5f1e635732b3441b0b2fb8079aa9068cc4dfb8
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,45 @@@
++/*
++ *  ====================================================================
++ *    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;
++    }
++
++}
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..8a2f0a456660a7fa542a5f7f32f62c6b41ee3567
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,45 @@@
++/*
++ *  ====================================================================
++ *    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);
++    }
++
++}
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..9044e8ad3af47c36b3659d646063330e02ee2875
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,43 @@@
++/*
++ *  ====================================================================
++ *    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);
++    }
++
++}
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..0382d7f9976c62076a84a1d1e86585f5f3a89fa6
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,68 @@@
++/*
++ *  ====================================================================
++ *    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);
++    }
++}
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..9d29062806dcc5571dd21b3cd891f7047b7e94a5
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,37 @@@
++/*
++ *  ====================================================================
++ *    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();
++    }
++}
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..8fd5147ed2e0888c7ae3723c845c49f777b483ab
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,74 @@@
++/*
++ *  ====================================================================
++ *    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;
++    }
++}
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..56373d9193dbfa81ea8becdc066cec379104e2d8
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,43 @@@
++/*
++ *  ====================================================================
++ *    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));
++    }
++
++}
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..4bed9b72d1f563557ca5f7e6d13219f266956254
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,45 @@@
++/*
++ *  ====================================================================
++ *    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));
++    }
++
++}
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..02eeb2953eb97dd8a4e9cb67d6cd9b1735b85892
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,52 @@@
++/*
++ *  ====================================================================
++ *    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);
++    }
++}
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..ce1b26c498f0d0a9b07a0eb95f62ad338eb5f053
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,82 @@@
++/*
++ *  ====================================================================
++ *    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;        
++    }
++}
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..2403c85a05e00dccf6bab582ca1c53b3982b3f06
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,31 @@@
++/*
++ *  ====================================================================
++ *    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);
++
++}
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..f1f0193a8990ae712ef3831a3a19f03cdf73ff1c
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,69 @@@
++/*
++ *  ====================================================================
++ *    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);
++    }
++}
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..47453475af903175d3066ac121bdd40ae2012b66
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,385 @@@
++/*
++ *  ====================================================================
++ *    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;
++            }
++         });
++    }
++
++}
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..f14213244b16498b07190f6cd2e607a6ec4012b0
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,58 @@@
++/*
++ *  ====================================================================
++ *    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);
++    }
++
++
++}
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..920acb82d66935e893dfc8fe10ce7195a929dfdd
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,37 @@@
++/*
++ *  ====================================================================
++ *    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);
++}
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..443115a7809529dc6e940e4ca671dc498c4e37a1
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,50 @@@
++/*
++ *  ====================================================================
++ *    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;
++    }
++
++}
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..99c5a6b20c14378ce4a59f007a9b4b5730f8ce31
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,49 @@@
++/*
++ *  ====================================================================
++ *    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);
++    }
++}
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..ab3abc7fd5226e32ed154a2eb2da626dfca5c765
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,40 @@@
++/*
++ *  ====================================================================
++ *    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);
++    }
++
++}
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..88a9c60472dd7504325cc9902d91898bf80ad5e9
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,43 @@@
++/*
++ *  ====================================================================
++ *    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);
++    }
++
++}
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..8c1864c5a43cdba13efbf11bbaaad92caae4a85e
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,43 @@@
++/*
++ *  ====================================================================
++ *    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);
++    }
++
++}
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..ff20fc20f6c4adbffddf8f6c253c4ba473650964
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,49 @@@
++/*
++ *  ====================================================================
++ *    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);
++    }
++
++}
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..22ccd540920702be5b0540fb98ee51b972470600
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,49 @@@
++/*
++ *  ====================================================================
++ *    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);
++    }
++}
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..5af0ff12c08c7937c7b1371ee1280f0d094db013
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,45 @@@
++/*
++ *  ====================================================================
++ *    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;
++    }
++
++}
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..b4ffc4257309e917d77c7822f4196a50e213242b
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,45 @@@
++/*
++ *  ====================================================================
++ *    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;
++    }
++}
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..b496e9fc96b6d4a081031d1d404cb4aa634c3d1e
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,117 @@@
++/*
++ *  ====================================================================
++ *    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;
++    }
++}
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..3063ab81bc3705b38a16ee49c98de3b3edf27feb
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,45 @@@
++/*
++ *  ====================================================================
++ *    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);
++}
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..ee0d4e5107e45474c504e7a7ffc5216ce9805836
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,54 @@@
++/*
++ *  ====================================================================
++ *    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;
++    }
++
++}
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..e2caa084dd726e70a355bcd61f62f195bc453328
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,113 @@@
++/*
++ *  ====================================================================
++ *    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;
++    }
++
++}
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..e9a9364b2dbcfa357ee8ecab8cc3514674f6693a
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,48 @@@
++/*
++ *  ====================================================================
++ *    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);
++    }
++}
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..e14acb9e6011a800b5d8f0565fb1ef115d2923c3
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,51 @@@
++/*
++ *  ====================================================================
++ *    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));
++    }
++
++}
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..ca0c110ce5bbf737a11d810f685156bb2b4bcc01
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,49 @@@
++/*
++ *  ====================================================================
++ *    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));
++    }
++
++}
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..5cdd67cc577a50d52619dd7def800769eed48e10
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,46 @@@
++/*
++ *  ====================================================================
++ *    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);
++    }
++
++}
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..7eebdcedfa05fce86b31c85130de02930c530531
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,50 @@@
++/*
++ *  ====================================================================
++ *    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));
++    }
++
++}
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..3a68313499a1502c9c0f663658b664f7ec9fe833
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,287 @@@
++/* ====================================================================\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
++}
index 0000000000000000000000000000000000000000,ae2fb7c7da884b4341e623ef3f2268e7eb275223..1bf073dfbb70df97c695f1db0da7bfeb9fb530ef
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,22 +1,21 @@@
 -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> {
+ }
index 0000000000000000000000000000000000000000,f67c57b95afac8e07ff21c6ce1afaaa6b041cc3a..8d868b86006555ef256b053cea3a9a063a922322
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,22 +1,22 @@@
 -
+ /* ====================================================================
+    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();
+ }
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..9be847b36c04dbc17c51e0433e0ddca50fa27687
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,69 @@@
++/* ====================================================================\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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..7e2bbf065cbf91beff8dd52a2457f0a69e394c5f
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,22 @@@
++/* ====================================================================\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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..8414000b8b532824dbddf08d208411d4f9936c46
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,22 @@@
++/* ====================================================================\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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..e0843a11a18e209471395af3485f6bc270e67b39
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,22 @@@
++/* ====================================================================\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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..d71bb253fe22f75906d7a61a0c812aaba4fb61b9
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,39 @@@
++/* ====================================================================
++   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);
++}
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..04b4d77cf4c35068138237b3e115f546e1e848d9
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,146 @@@
++/* ====================================================================\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
index 0000000000000000000000000000000000000000,630c37de45af6f37945ca0f490eb3661ad29bfd6..b06764e54d1f02a41f645303feaf32e5e9ad849f
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,22 +1,22 @@@
 -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> {
+ }
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..e95551c9e76738c5b8bcf8ce7f3ac3ce1a9f3b94
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,95 @@@
++/* ====================================================================\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
index 0000000000000000000000000000000000000000,61792cd5bbc7b399fcdff35cbc9f970d93732358..727217d3fac04fdc8784e60769e105944f1d389d
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,22 +1,22 @@@
 -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> {
+ }
index 0000000000000000000000000000000000000000,5d5ba98e7eb8408de36b9f62ce42de186156fb25..3e4b92472190dc95f282d3dcce1551982867356c
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,22 +1,24 @@@
 -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();
+ }
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..2551201692e865f93bb2d541669b94d5c688bdc8
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,63 @@@
++/* ====================================================================
++   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));
++}
index 0000000000000000000000000000000000000000,e325e5a8db7a44a07f5e364e911ff4fe393c82ad..8697d33965fe480434255daa095dd97d7a371811
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,26 +1,27 @@@
 -      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;
+ }
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..a2c0824e0ccf9b561f80ee235419c8920746e8f5
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,37 @@@
++/* ====================================================================
++   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();
++}
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..f81a344b178d4e25f497b4d781dce2fb855a606b
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,84 @@@
++/* ====================================================================\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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..430dbe3840645518fedc85a36b19ef7f6acaf496
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,50 @@@
++/* ====================================================================\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
index 0000000000000000000000000000000000000000,11c0bf6251501f117d5bacefcd2032cdd837edef..4de645d41f41ae8c66f2a507a49d1dbd1ef0902f
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,31 +1,29 @@@
 -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();
+ }
index 0000000000000000000000000000000000000000,cabcf4bc89b11faefcca81eb8cc405d7ebe11ab1..1741a732d30b7334342e3e34cffe9e501ee764e3
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,24 +1,46 @@@
 -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);
+ }
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..91974b79dfc8fca82571bbc150ada16dc83f53e4
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,316 @@@
++/* ====================================================================
++   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);
++    }
++}
index 0000000000000000000000000000000000000000,7959838cc17ad4c7921416faaf0baae9de565702..f94b7727a780a3aae23c8f3b5c1476a3a1f29c92
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,29 +1,46 @@@
 -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);
+ }
index 0000000000000000000000000000000000000000,449433a7e83a76ee866f4a3bf7368d0a662c4c4a..e4e8efe3a13bd869ccbb8d1fe6614b65c4f08c19
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,26 +1,36 @@@
 -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();
+ }
index 0000000000000000000000000000000000000000,d3c4af25a4161682dc83cb38fa6c50f459b68c0b..7b238de1762b4fdec685185c06b4fa536cc81b3a
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,32 +1,37 @@@
 -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();
+ }
index 0000000000000000000000000000000000000000,8239bb91ffa9c6c5fd6d0ffd927cb3874c876210..ca0ddf39182682b595d103f36df7c6c4aac5a780
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,30 +1,45 @@@
 -      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();    
+ }
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..244173fed43cc51749235829590403fdc65bb5eb
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,129 @@@
++/* ====================================================================
++   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();
++}
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..4fda40f2dffd3d59e1c693c3c452fa8fca8d399b
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,22 @@@
++/* ====================================================================\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
index 0000000000000000000000000000000000000000,5a88815ee7d45d8ddd248f3dcf8d4ea5c66f4894..3fa3bbe20d3ab3a3467f0d1a43c6c312af049396
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,21 +1,21 @@@
 -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> {
+ }
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..a914dd7cb3fed1be858ff0bc43d0e164275df932
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,324 @@@
++/* ====================================================================\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
index 0000000000000000000000000000000000000000,ae1a1347712e0fe0898d7cb7c5b0e63656758a60..946bfc3217c65028ec9b161949ae76738c7259ae
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,30 +1,63 @@@
 - *
 - * 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();
+ }
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..927fdf1f9de31bb714625682bb1dc67ac4781cbe
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,128 @@@
++/* ====================================================================\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
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..540bf2ed515dcd910a3560fbeff2792e6ecc7c79
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,71 @@@
++/*\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
index 6d66caefe058b2b0bc0618723cedf82641174443,8cf3aca1b620d42fb14f1078c32dae5941001ad4..35f30a36d0b87d208ee19fe645f18080f7eeb252
@@@ -259,6 -259,107 +259,107 @@@ public class TestXSLFBugs 
          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) {
index d7dadb6c5aea17d2f4fabd433217d6a1247c13eb,a2c3598fb5dbe2517df338cf655c61c4c86b4f0d..5d3a45e65872bbedeb66ece87f18f4ecc189cf64
@@@ -84,15 -84,27 +84,31 @@@ public final class EMF extends Metafil
      }
  
      /**
-      * 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";
 +    }
  }
index 08ba5ceb983778359eba08341fa23accdff406be,836a7b9c8ff357fa37f144439cda1fcfbcb41e25..ed436beb28ffbc5edff1113a283828aaa53079ac
@@@ -26,24 -26,60 +26,64 @@@ import org.apache.poi.hslf.usermodel.HS
   */
  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";
 +    }
  }
index 016c50f875c1e9281a310d785c14ea8190145404,848d994422ed8b1cef228dee67bd461b6783c79d..bebbcf450fa0d9e3c771ca19573201ff364b2568
@@@ -109,16 -105,27 +105,32 @@@ public final class PICT extends Metafil
      }
  
      /**
-      * 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";
 +    }
 +
  }
index 114b736bfa71aaaafee07c849c11f2658f2b9efb,b0a08d3a5eb1d4cb14c649ee053efde7fb97c491..cd61a9bd6a48d5ab201e6273ac91478a3a5fa5c9
@@@ -53,15 -53,27 +53,31 @@@ public final class PNG extends Bitmap 
      }
  
      /**
-      * 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";
 +    }
  }
index 3954f6b48758b41ff538ee380608941aaf9acdc8,5e122d94ef00a26bd7cdf881f75599005aeccb7e..e098d4083f6371c92af81f00a84cb05c9b3dc04a
  
  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;
  
  /**
index 260eebd60ff8013644ef43e8dd8fcab6c845f8e1,45ca0ce63166a3c6f062e6e924dfec152467c56d..8396ae1234b00d397c0ca88e3aeb54d00d3425c0
  
  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;
  
  /**
index 230a6401d2285c0b46033191fe5d77cf62fa3651,0000000000000000000000000000000000000000..aa7e8a32eb27d78617cd1875a70dca298e43c48c
mode 100644,000000..100644
--- /dev/null
@@@ -1,220 -1,0 +1,234 @@@
 +/* ====================================================================
 +   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;
 +    }
 +}
index 9288052c664aa431fb91a92008c7b0fffad1dd06,0000000000000000000000000000000000000000..2ecb7efe917430892546298f7a5bd6f688f3e2de
mode 100644,000000..100644
--- /dev/null
@@@ -1,514 -1,0 +1,515 @@@
-             (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;
 +    }
 +}
index ec5f735d17f764727ae7360a33bedef698bd2d3c,0000000000000000000000000000000000000000..34638f63092fdd0a050f7ec85c1da3bbeb4f83f0
mode 100644,000000..100644
--- /dev/null
@@@ -1,806 -1,0 +1,798 @@@
-     /**
-        * 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;
 +        }
 +    }
 +}
index 29fdee2dc5e16354eb0621cbf6fb1dad1e442506,0000000000000000000000000000000000000000..d9f5b11ebed246747753a1fd542cf1508c402956
mode 100644,000000..100644
--- /dev/null
@@@ -1,362 -1,0 +1,362 @@@
-         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;
 +    }
 +}
index 3337d58c36262797cbc2dfb752a6255baefd8a19,1740b46b408ebbe682563ce136d3d273ace9a449..fb49dbb1c45626a4e40e38a74598ab835770e17f
  
  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;
  
  /**
@@@ -32,7 -35,8 +45,8 @@@
   *
   * @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);
+     }
  }
index 14200d501857d94d94c6bf69602cb685302b5f82,0000000000000000000000000000000000000000..5ede8b094d26635dfcc6e115ffa7e8afa0e84d13
mode 100644,000000..100644
--- /dev/null
@@@ -1,200 -1,0 +1,201 @@@
-     // @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);        
 +    }
 +}
index 8ad3ba6d7904844257e5ca679ecc47a0fe819767,a71b72a28bcbbfa144234357be6c2cf0867e0925..ce49cd55da8368866a23e1a00e0af12fed031a83
@@@ -392,36 -411,36 +392,32 @@@ public final class TestRichTextRun 
         * 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 {