merge trunk to common sl branch

git-svn-id: https://svn.apache.org/repos/asf/poi/branches/common_sl@1691845 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/build.xml b/build.xml
index ca705de..d7b5482 100644
--- a/build.xml
+++ b/build.xml
@@ -107,6 +107,12 @@
     <property name="scratchpad.output.test.dir" location="build/scratchpad-test-classes"/>
     <property name="scratchpad.testokfile" location="build/scratchpad-testokfile.txt"/>
 
+    <!-- Scratchpad/Geometry -->
+	<property name="geometry.schema" value="src/resources/ooxml/org/apache/poi/xslf/usermodel/presetShapeDefinitions.xml"/>
+	<property name="geometry.pkg" value="org.apache.poi.sl.draw.binding"/>
+	<property name="geometry.output.tmpdir" value="build/geometry-java"/>
+	
+	
     <!-- Examples: -->
     <property name="examples.src" location="src/examples/src"/>
     <property name="examples.output.dir" location="build/examples-classes"/>
@@ -378,6 +384,7 @@
         <mkdir dir="${scratchpad.output.dir}"/>
         <mkdir dir="${scratchpad.output.test.dir}"/>
         <mkdir dir="${scratchpad.reports.test}"/>
+    	<mkdir dir="${geometry.output.tmpdir}"/>
         <mkdir dir="${ooxml.output.dir}"/>
         <mkdir dir="${ooxml.output.test.dir}"/>
         <mkdir dir="${ooxml.reports.test}"/>
@@ -702,7 +709,39 @@
         </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="${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}"
diff --git a/src/examples/src/org/apache/poi/hslf/examples/ApacheconEU08.java b/src/examples/src/org/apache/poi/hslf/examples/ApacheconEU08.java
index 25f1eab..ce6bf5d 100644
--- a/src/examples/src/org/apache/poi/hslf/examples/ApacheconEU08.java
+++ b/src/examples/src/org/apache/poi/hslf/examples/ApacheconEU08.java
@@ -17,13 +17,16 @@
 
 package org.apache.poi.hslf.examples;
 
-import org.apache.poi.hslf.usermodel.*;
+import java.awt.*;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.util.List;
+
 import org.apache.poi.hslf.model.*;
 import org.apache.poi.hslf.record.TextHeaderAtom;
-
-import java.io.IOException;
-import java.io.FileOutputStream;
-import java.awt.*;
+import org.apache.poi.hslf.usermodel.*;
+import org.apache.poi.sl.usermodel.ShapeType;
+import org.apache.poi.sl.usermodel.VerticalAlignment;
 
 /**
  * Presentation for Fast Feather Track on ApacheconEU 2008
@@ -33,7 +36,7 @@
 public final class ApacheconEU08 {
 
     public static void main(String[] args) throws IOException {
-        SlideShow ppt = new SlideShow();
+        HSLFSlideShow ppt = new HSLFSlideShow();
         ppt.setPageSize(new Dimension(720, 540));
 
         slide1(ppt);
@@ -55,48 +58,43 @@
 
     }
 
-    public static void slide1(SlideShow ppt) throws IOException {
-        Slide slide = ppt.createSlide();
+    public static void slide1(HSLFSlideShow ppt) throws IOException {
+        HSLFSlide slide = ppt.createSlide();
 
-        TextBox box1 = new TextBox();
-        TextRun tr1 = box1.getTextRun();
-        tr1.setRunType(TextHeaderAtom.CENTER_TITLE_TYPE);
-        tr1.setText("POI-HSLF");
+        HSLFTextBox box1 = new HSLFTextBox();
+        box1.setRunType(TextHeaderAtom.CENTER_TITLE_TYPE);
+        box1.setText("POI-HSLF");
         box1.setAnchor(new Rectangle(54, 78, 612, 115));
         slide.addShape(box1);
 
-        TextBox box2 = new TextBox();
-        TextRun tr2 = box2.getTextRun();
-        tr2.setRunType(TextHeaderAtom.CENTRE_BODY_TYPE);
-        tr2.setText("Java API To Access Microsoft PowerPoint Format Files");
+        HSLFTextBox box2 = new HSLFTextBox();
+        box2.setRunType(TextHeaderAtom.CENTRE_BODY_TYPE);
+        box2.setText("Java API To Access Microsoft PowerPoint Format Files");
         box2.setAnchor(new Rectangle(108, 204, 504, 138));
         slide.addShape(box2);
 
-        TextBox box3 = new TextBox();
-        TextRun tr3 = box3.getTextRun();
-        tr3.getRichTextRuns()[0].setFontSize(32);
-        box3.setHorizontalAlignment(TextBox.AlignCenter);
-        tr3.setText(
+        HSLFTextBox box3 = new HSLFTextBox();
+        box3.getTextParagraphs().get(0).getTextRuns().get(0).setFontSize(32d);
+        box3.setText(
                 "Yegor Kozlov\r" +
                 "yegor - apache - org");
+        box3.setHorizontalCentered(true);
         box3.setAnchor(new Rectangle(206, 348, 310, 84));
         slide.addShape(box3);
     }
 
-    public static void slide2(SlideShow ppt) throws IOException {
-        Slide slide = ppt.createSlide();
+    public static void slide2(HSLFSlideShow ppt) throws IOException {
+        HSLFSlide slide = ppt.createSlide();
 
-        TextBox box1 = new TextBox();
-        TextRun tr1 = box1.getTextRun();
-        tr1.setRunType(TextHeaderAtom.TITLE_TYPE);
-        tr1.setText("What is HSLF?");
+        HSLFTextBox box1 = new HSLFTextBox();
+        box1.setRunType(TextHeaderAtom.TITLE_TYPE);
+        box1.setText("What is HSLF?");
         box1.setAnchor(new Rectangle(36, 21, 648, 90));
         slide.addShape(box1);
 
-        TextBox box2 = new TextBox();
-        TextRun tr2 = box2.getTextRun();
-        tr2.setRunType(TextHeaderAtom.BODY_TYPE);
-        tr2.setText("HorribleSLideshowFormat is the POI Project's pure Java implementation " +
+        HSLFTextBox box2 = new HSLFTextBox();
+        box2.setRunType(TextHeaderAtom.BODY_TYPE);
+        box2.setText("HorribleSLideshowFormat is the POI Project's pure Java implementation " +
                 "of the Powerpoint binary file format. \r" +
                 "POI sub-project since 2005\r" +
                 "Started by Nick Birch, Yegor Kozlov joined soon after");
@@ -106,74 +104,66 @@
 
     }
 
-    public static void slide3(SlideShow ppt) throws IOException {
-        Slide slide = ppt.createSlide();
+    public static void slide3(HSLFSlideShow ppt) throws IOException {
+        HSLFSlide slide = ppt.createSlide();
 
-        TextBox box1 = new TextBox();
-        TextRun tr1 = box1.getTextRun();
-        tr1.setRunType(TextHeaderAtom.TITLE_TYPE);
-        tr1.setText("HSLF in a Nutshell");
+        HSLFTextBox box1 = new HSLFTextBox();
+        box1.setRunType(TextHeaderAtom.TITLE_TYPE);
+        box1.setText("HSLF in a Nutshell");
         box1.setAnchor(new Rectangle(36, 15, 648, 65));
         slide.addShape(box1);
 
-        TextBox box2 = new TextBox();
-        TextRun tr2 = box2.getTextRun();
-        tr2.setRunType(TextHeaderAtom.BODY_TYPE);
-        tr2.setText(
-                "HSLF provides a way to read, create and modify MS PowerPoint presentations\r" +
-                "Pure Java API - you don't need PowerPoint to read and write *.ppt files\r" +
-                "Comprehensive support of PowerPoint objects");
-        tr2.getRichTextRuns()[0].setFontSize(28);
-        box2.setAnchor(new Rectangle(36, 80, 648, 200));
-        slide.addShape(box2);
-
-        TextBox box3 = new TextBox();
-        TextRun tr3 = box3.getTextRun();
-        tr3.setRunType(TextHeaderAtom.BODY_TYPE);
-        tr3.setText(
+        HSLFTextBox box2 = new HSLFTextBox();
+        box2.setRunType(TextHeaderAtom.BODY_TYPE);
+        box2.setText(
+            "HSLF provides a way to read, create and modify MS PowerPoint presentations\r" +
+            "Pure Java API - you don't need PowerPoint to read and write *.ppt files\r" +
+            "Comprehensive support of PowerPoint objects\r" +
                 "Rich text\r" +
                 "Tables\r" +
                 "Shapes\r" +
                 "Pictures\r" +
-                "Master slides");
-        tr3.getRichTextRuns()[0].setFontSize(24);
-        tr3.getRichTextRuns()[0].setIndentLevel(1);
-        box3.setAnchor(new Rectangle(36, 265, 648, 150));
-        slide.addShape(box3);
+                "Master slides\r" +
+            "Access to low level data structures"
+        );
 
-        TextBox box4 = new TextBox();
-        TextRun tr4 = box4.getTextRun();
-        tr4.setRunType(TextHeaderAtom.BODY_TYPE);
-        tr4.setText("Access to low level data structures");
-        box4.setAnchor(new Rectangle(36, 430, 648, 50));
-        slide.addShape(box4);
+        List<HSLFTextParagraph> tp = box2.getTextParagraphs();
+        for (int i : new byte[]{0,1,2,8}) {
+            tp.get(i).getTextRuns().get(0).setFontSize(28d);
+        }
+        for (int i : new byte[]{3,4,5,6,7}) {
+            tp.get(i).getTextRuns().get(0).setFontSize(24d);
+            tp.get(i).setIndentLevel(1);
+        }
+        box2.setAnchor(new Rectangle(36, 80, 648, 400));
+        slide.addShape(box2);
     }
 
-    public static void slide4(SlideShow ppt) throws IOException {
-        Slide slide = ppt.createSlide();
+    public static void slide4(HSLFSlideShow ppt) throws IOException {
+        HSLFSlide slide = ppt.createSlide();
 
         String[][] txt1 = {
             {"Note"},
             {"This presentation was created programmatically using POI HSLF"}
         };
-        Table table1 = new Table(2, 1);
+        HSLFTable table1 = new HSLFTable(2, 1);
         for (int i = 0; i < txt1.length; i++) {
             for (int j = 0; j < txt1[i].length; j++) {
-                TableCell cell = table1.getCell(i, j);
+                HSLFTableCell cell = table1.getCell(i, j);
                 cell.setText(txt1[i][j]);
-                cell.getTextRun().getRichTextRuns()[0].setFontSize(10);
-                RichTextRun rt = cell.getTextRun().getRichTextRuns()[0];
-                rt.setFontName("Arial");
+                HSLFTextRun rt = cell.getTextParagraphs().get(0).getTextRuns().get(0);
+                rt.setFontSize(10d);
+                rt.setFontFamily("Arial");
                 rt.setBold(true);
                 if(i == 0){
-                    rt.setFontSize(32);
+                    rt.setFontSize(32d);
                     rt.setFontColor(Color.white);
                     cell.getFill().setForegroundColor(new Color(0, 153, 204));
                 } else {
-                    rt.setFontSize(28);
+                    rt.setFontSize(28d);
                     cell.getFill().setForegroundColor(new Color(235, 239, 241));
                 }
-                cell.setVerticalAlignment(TextBox.AnchorMiddle);
+                cell.setVerticalAlignment(VerticalAlignment.MIDDLE);
             }
         }
 
@@ -194,32 +184,28 @@
 
         table1.moveTo(100, 100);
 
-        TextBox box1 = new TextBox();
-        box1.setHorizontalAlignment(TextBox.AlignCenter);
-        TextRun tr1 = box1.getTextRun();
-        tr1.setText("The source code is available at\r" +
+        HSLFTextBox box1 = new HSLFTextBox();
+        box1.setHorizontalCentered(true);
+        box1.getTextParagraphs().get(0).getTextRuns().get(0).setFontSize(24d);
+        box1.setText("The source code is available at\r" +
                 "http://people.apache.org/~yegor/apachecon_eu08/");
-        RichTextRun rt = tr1.getRichTextRuns()[0];
-        rt.setFontSize(24);
         box1.setAnchor(new Rectangle(80, 356, 553, 65));
         slide.addShape(box1);
 
     }
 
-    public static void slide5(SlideShow ppt) throws IOException {
-        Slide slide = ppt.createSlide();
+    public static void slide5(HSLFSlideShow ppt) throws IOException {
+        HSLFSlide slide = ppt.createSlide();
 
-        TextBox box1 = new TextBox();
-        TextRun tr1 = box1.getTextRun();
-        tr1.setRunType(TextHeaderAtom.TITLE_TYPE);
-        tr1.setText("HSLF in Action - 1\rData Extraction");
+        HSLFTextBox box1 = new HSLFTextBox();
+        box1.setRunType(TextHeaderAtom.TITLE_TYPE);
+        box1.setText("HSLF in Action - 1\rData Extraction");
         box1.setAnchor(new Rectangle(36, 21, 648, 100));
         slide.addShape(box1);
 
-        TextBox box2 = new TextBox();
-        TextRun tr2 = box2.getTextRun();
-        tr2.setRunType(TextHeaderAtom.BODY_TYPE);
-        tr2.setText(
+        HSLFTextBox box2 = new HSLFTextBox();
+        box2.setRunType(TextHeaderAtom.BODY_TYPE);
+        box2.setText(
                 "Text from slides and notes\r" +
                 "Images\r" +
                 "Shapes and their properties (type, position in the slide, color, font, etc.)");
@@ -229,90 +215,88 @@
 
     }
 
-    public static void slide6(SlideShow ppt) throws IOException {
-        Slide slide = ppt.createSlide();
+    public static void slide6(HSLFSlideShow ppt) throws IOException {
+        HSLFSlide slide = ppt.createSlide();
 
-        TextBox box1 = new TextBox();
-        TextRun tr1 = box1.getTextRun();
-        tr1.setRunType(TextHeaderAtom.TITLE_TYPE);
-        tr1.setText("HSLF in Action - 2");
+        HSLFTextBox box1 = new HSLFTextBox();
+        box1.setRunType(TextHeaderAtom.TITLE_TYPE);
+        box1.setText("HSLF in Action - 2");
         box1.setAnchor(new Rectangle(36, 20, 648, 90));
         slide.addShape(box1);
 
-        TextBox box2 = new TextBox();
-        TextRun tr2 = box2.getTextRun();
-        tr2.getRichTextRuns()[0].setFontSize(18);
-        tr2.setText("Creating a simple presentation from scratch");
+        HSLFTextBox box2 = new HSLFTextBox();
+        box2.getTextParagraphs().get(0).getTextRuns().get(0).setFontSize(18d);
+        box2.setText("Creating a simple presentation from scratch");
         box2.setAnchor(new Rectangle(170, 100, 364, 30));
         slide.addShape(box2);
 
-        TextBox box3 = new TextBox();
-        TextRun tr3 = box3.getTextRun();
-        RichTextRun rt3 = tr3.getRichTextRuns()[0];
-        rt3.setFontName("Courier New");
-        rt3.setFontSize(8);
-        tr3.setText(
-                "        SlideShow ppt = new SlideShow();\r" +
-                "        Slide slide = ppt.createSlide();\r" +
-                "\r" +
-                "        TextBox box2 = new TextBox();\r" +
-                "        box2.setHorizontalAlignment(TextBox.AlignCenter);\r" +
-                "        box2.setVerticalAlignment(TextBox.AnchorMiddle);\r" +
-                "        box2.getTextRun().setText(\"Java Code\");\r" +
-                "        box2.getFill().setForegroundColor(new Color(187, 224, 227));\r" +
-                "        box2.setLineColor(Color.black);\r" +
-                "        box2.setLineWidth(0.75);\r" +
-                "        box2.setAnchor(new Rectangle(66, 243, 170, 170));\r" +
-                "        slide.addShape(box2);\r" +
-                "\r" +
-                "        TextBox box3 = new TextBox();\r" +
-                "        box3.setHorizontalAlignment(TextBox.AlignCenter);\r" +
-                "        box3.setVerticalAlignment(TextBox.AnchorMiddle);\r" +
-                "        box3.getTextRun().setText(\"*.ppt file\");\r" +
-                "        box3.setLineWidth(0.75);\r" +
-                "        box3.setLineColor(Color.black);\r" +
-                "        box3.getFill().setForegroundColor(new Color(187, 224, 227));\r" +
-                "        box3.setAnchor(new Rectangle(473, 243, 170, 170));\r" +
-                "        slide.addShape(box3);\r" +
-                "\r" +
-                "        AutoShape box4 = new AutoShape(ShapeTypes.Arrow);\r" +
-                "        box4.getFill().setForegroundColor(new Color(187, 224, 227));\r" +
-                "        box4.setLineWidth(0.75);\r" +
-                "        box4.setLineColor(Color.black);\r" +
-                "        box4.setAnchor(new Rectangle(253, 288, 198, 85));\r" +
-                "        slide.addShape(box4);\r" +
-                "\r" +
-                "        FileOutputStream out = new FileOutputStream(\"hslf-demo.ppt\");\r" +
-                "        ppt.write(out);\r" +
-                "        out.close();");
+        HSLFTextBox box3 = new HSLFTextBox();
+        HSLFTextRun rt3 = box3.getTextParagraphs().get(0).getTextRuns().get(0);
+        rt3.setFontFamily("Courier New");
+        rt3.setFontSize(8d);
+        box3.setText(
+                "SlideShow ppt = new SlideShow();\u000b" +
+                "Slide slide = ppt.createSlide();\u000b" +
+                "\u000b" +
+                "TextBox box2 = new TextBox();\u000b" +
+                "box2.setHorizontalAlignment(TextBox.AlignCenter);\u000b" +
+                "box2.setVerticalAlignment(TextBox.AnchorMiddle);\u000b" +
+                "box2.getTextRun().setText(\"Java Code\");\u000b" +
+                "box2.getFill().setForegroundColor(new Color(187, 224, 227));\u000b" +
+                "box2.setLineColor(Color.black);\u000b" +
+                "box2.setLineWidth(0.75);\u000b" +
+                "box2.setAnchor(new Rectangle(66, 243, 170, 170));\u000b" +
+                "slide.addShape(box2);\u000b" +
+                "\u000b" +
+                "TextBox box3 = new TextBox();\u000b" +
+                "box3.setHorizontalAlignment(TextBox.AlignCenter);\u000b" +
+                "box3.setVerticalAlignment(TextBox.AnchorMiddle);\u000b" +
+                "box3.getTextRun().setText(\"*.ppt file\");\u000b" +
+                "box3.setLineWidth(0.75);\u000b" +
+                "box3.setLineColor(Color.black);\u000b" +
+                "box3.getFill().setForegroundColor(new Color(187, 224, 227));\u000b" +
+                "box3.setAnchor(new Rectangle(473, 243, 170, 170));\u000b" +
+                "slide.addShape(box3);\u000b" +
+                "\u000b" +
+                "AutoShape box4 = new AutoShape(ShapeTypes.Arrow);\u000b" +
+                "box4.getFill().setForegroundColor(new Color(187, 224, 227));\u000b" +
+                "box4.setLineWidth(0.75);\u000b" +
+                "box4.setLineColor(Color.black);\u000b" +
+                "box4.setAnchor(new Rectangle(253, 288, 198, 85));\u000b" +
+                "slide.addShape(box4);\u000b" +
+                "\u000b" +
+                "FileOutputStream out = new FileOutputStream(\"hslf-demo.ppt\");\u000b" +
+                "ppt.write(out);\u000b" +
+                "out.close();");
         box3.setAnchor(new Rectangle(30, 150, 618, 411));
+        box3.setHorizontalCentered(true);
         slide.addShape(box3);
     }
 
-    public static void slide7(SlideShow ppt) throws IOException {
-        Slide slide = ppt.createSlide();
+    public static void slide7(HSLFSlideShow ppt) throws IOException {
+        HSLFSlide slide = ppt.createSlide();
 
-        TextBox box2 = new TextBox();
-        box2.setHorizontalAlignment(TextBox.AlignCenter);
-        box2.setVerticalAlignment(TextBox.AnchorMiddle);
-        box2.getTextRun().setText("Java Code");
+        HSLFTextBox box2 = new HSLFTextBox();
+        box2.setHorizontalCentered(true);
+        box2.setVerticalAlignment(VerticalAlignment.MIDDLE);
+        box2.setText("Java Code");
         box2.getFill().setForegroundColor(new Color(187, 224, 227));
         box2.setLineColor(Color.black);
         box2.setLineWidth(0.75);
         box2.setAnchor(new Rectangle(66, 243, 170, 170));
         slide.addShape(box2);
 
-        TextBox box3 = new TextBox();
-        box3.setHorizontalAlignment(TextBox.AlignCenter);
-        box3.setVerticalAlignment(TextBox.AnchorMiddle);
-        box3.getTextRun().setText("*.ppt file");
+        HSLFTextBox box3 = new HSLFTextBox();
+        box3.setHorizontalCentered(true);
+        box3.setVerticalAlignment(VerticalAlignment.MIDDLE);
+        box3.setText("*.ppt file");
         box3.setLineWidth(0.75);
         box3.setLineColor(Color.black);
         box3.getFill().setForegroundColor(new Color(187, 224, 227));
         box3.setAnchor(new Rectangle(473, 243, 170, 170));
         slide.addShape(box3);
 
-        AutoShape box4 = new AutoShape(ShapeTypes.Arrow);
+        HSLFAutoShape box4 = new HSLFAutoShape(ShapeType.RIGHT_ARROW);
         box4.getFill().setForegroundColor(new Color(187, 224, 227));
         box4.setLineWidth(0.75);
         box4.setLineColor(Color.black);
@@ -320,20 +304,18 @@
         slide.addShape(box4);
     }
 
-    public static void slide8(SlideShow ppt) throws IOException {
-        Slide slide = ppt.createSlide();
+    public static void slide8(HSLFSlideShow ppt) throws IOException {
+        HSLFSlide slide = ppt.createSlide();
 
-        TextBox box1 = new TextBox();
-        TextRun tr1 = box1.getTextRun();
-        tr1.setRunType(TextHeaderAtom.TITLE_TYPE);
-        tr1.setText("Wait, there is more!");
+        HSLFTextBox box1 = new HSLFTextBox();
+        box1.setRunType(TextHeaderAtom.TITLE_TYPE);
+        box1.setText("Wait, there is more!");
         box1.setAnchor(new Rectangle(36, 21, 648, 90));
         slide.addShape(box1);
 
-        TextBox box2 = new TextBox();
-        TextRun tr2 = box2.getTextRun();
-        tr2.setRunType(TextHeaderAtom.BODY_TYPE);
-        tr2.setText(
+        HSLFTextBox box2 = new HSLFTextBox();
+        box2.setRunType(TextHeaderAtom.BODY_TYPE);
+        box2.setText(
                 "Rich text\r" +
                 "Tables\r" +
                 "Pictures (JPEG, PNG, BMP, WMF, PICT)\r" +
@@ -342,72 +324,70 @@
         slide.addShape(box2);
     }
 
-    public static void slide9(SlideShow ppt) throws IOException {
-        Slide slide = ppt.createSlide();
+    public static void slide9(HSLFSlideShow ppt) throws IOException {
+        HSLFSlide slide = ppt.createSlide();
 
-        TextBox box1 = new TextBox();
-        TextRun tr1 = box1.getTextRun();
-        tr1.setRunType(TextHeaderAtom.TITLE_TYPE);
-        tr1.setText("HSLF in Action - 3");
+        HSLFTextBox box1 = new HSLFTextBox();
+        box1.setRunType(TextHeaderAtom.TITLE_TYPE);
+        box1.setText("HSLF in Action - 3");
         box1.setAnchor(new Rectangle(36, 20, 648, 50));
         slide.addShape(box1);
 
-        TextBox box2 = new TextBox();
-        TextRun tr2 = box2.getTextRun();
-        tr2.getRichTextRuns()[0].setFontSize(18);
-        tr2.setText("PPGraphics2D: PowerPoint Graphics2D driver");
+        HSLFTextBox box2 = new HSLFTextBox();
+        box2.getTextParagraphs().get(0).getTextRuns().get(0).setFontSize(18d);
+        box2.setText("PPGraphics2D: PowerPoint Graphics2D driver");
         box2.setAnchor(new Rectangle(178, 70, 387, 30));
         slide.addShape(box2);
 
-        TextBox box3 = new TextBox();
-        TextRun tr3 = box3.getTextRun();
-        RichTextRun rt3 = tr3.getRichTextRuns()[0];
-        rt3.setFontName("Courier New");
-        rt3.setFontSize(8);
-        tr3.setText(
-                "        //bar chart data. The first value is the bar color, the second is the width\r" +
-                "        Object[] def = new Object[]{\r" +
-                "            Color.yellow, new Integer(100),\r" +
-                "            Color.green, new Integer(150),\r" +
-                "            Color.gray, new Integer(75),\r" +
-                "            Color.red, new Integer(200),\r" +
-                "        };\r" +
-                "\r" +
-                "        SlideShow ppt = new SlideShow();\r" +
-                "        Slide slide = ppt.createSlide();\r" +
-                "\r" +
-                "        ShapeGroup group = new ShapeGroup();\r" +
-                "        //define position of the drawing in the slide\r" +
-                "        Rectangle bounds = new java.awt.Rectangle(200, 100, 350, 300);\r" +
-                "        group.setAnchor(bounds);\r" +
-                "        slide.addShape(group);\r" +
-                "        Graphics2D graphics = new PPGraphics2D(group);\r" +
-                "\r" +
-                "        //draw a simple bar graph\r" +
-                "        int x = bounds.x + 50, y = bounds.y + 50;\r" +
-                "        graphics.setFont(new Font(\"Arial\", Font.BOLD, 10));\r" +
-                "        for (int i = 0, idx = 1; i < def.length; i+=2, idx++) {\r" +
-                "            graphics.setColor(Color.black);\r" +
-                "            int width = ((Integer)def[i+1]).intValue();\r" +
-                "            graphics.drawString(\"Q\" + idx, x-20, y+20);\r" +
-                "            graphics.drawString(width + \"%\", x + width + 10, y + 20);\r" +
-                "            graphics.setColor((Color)def[i]);\r" +
-                "            graphics.fill(new Rectangle(x, y, width, 30));\r" +
-                "            y += 40;\r" +
-                "        }\r" +
-                "        graphics.setColor(Color.black);\r" +
-                "        graphics.setFont(new Font(\"Arial\", Font.BOLD, 14));\r" +
-                "        graphics.draw(bounds);\r" +
-                "        graphics.drawString(\"Performance\", x + 70, y + 40);\r" +
-                "\r" +
-                "        FileOutputStream out = new FileOutputStream(\"hslf-demo.ppt\");\r" +
-                "        ppt.write(out);\r" +
-                "        out.close();");
+        HSLFTextBox box3 = new HSLFTextBox();
+        HSLFTextRun rt3 = box3.getTextParagraphs().get(0).getTextRuns().get(0);
+        rt3.setFontFamily("Courier New");
+        rt3.setFontSize(8d);
+        box3.setText(
+                "//bar chart data. The first value is the bar color, the second is the width\u000b" +
+                "Object[] def = new Object[]{\u000b" +
+                "    Color.yellow, new Integer(100),\u000b" +
+                "    Color.green, new Integer(150),\u000b" +
+                "    Color.gray, new Integer(75),\u000b" +
+                "    Color.red, new Integer(200),\u000b" +
+                "};\u000b" +
+                "\u000b" +
+                "SlideShow ppt = new SlideShow();\u000b" +
+                "Slide slide = ppt.createSlide();\u000b" +
+                "\u000b" +
+                "ShapeGroup group = new ShapeGroup();\u000b" +
+                "//define position of the drawing in the slide\u000b" +
+                "Rectangle bounds = new java.awt.Rectangle(200, 100, 350, 300);\u000b" +
+                "group.setAnchor(bounds);\u000b" +
+                "slide.addShape(group);\u000b" +
+                "Graphics2D graphics = new PPGraphics2D(group);\u000b" +
+                "\u000b" +
+                "//draw a simple bar graph\u000b" +
+                "int x = bounds.x + 50, y = bounds.y + 50;\u000b" +
+                "graphics.setFont(new Font(\"Arial\", Font.BOLD, 10));\u000b" +
+                "for (int i = 0, idx = 1; i < def.length; i+=2, idx++) {\u000b" +
+                "    graphics.setColor(Color.black);\u000b" +
+                "    int width = ((Integer)def[i+1]).intValue();\u000b" +
+                "    graphics.drawString(\"Q\" + idx, x-20, y+20);\u000b" +
+                "    graphics.drawString(width + \"%\", x + width + 10, y + 20);\u000b" +
+                "    graphics.setColor((Color)def[i]);\u000b" +
+                "    graphics.fill(new Rectangle(x, y, width, 30));\u000b" +
+                "    y += 40;\u000b" +
+                "}\u000b" +
+                "graphics.setColor(Color.black);\u000b" +
+                "graphics.setFont(new Font(\"Arial\", Font.BOLD, 14));\u000b" +
+                "graphics.draw(bounds);\u000b" +
+                "graphics.drawString(\"Performance\", x + 70, y + 40);\u000b" +
+                "\u000b" +
+                "FileOutputStream out = new FileOutputStream(\"hslf-demo.ppt\");\u000b" +
+                "ppt.write(out);\u000b" +
+                "out.close();");
         box3.setAnchor(new Rectangle(96, 110, 499, 378));
+        box3.setHorizontalCentered(true);
         slide.addShape(box3);
     }
 
-    public static void slide10(SlideShow ppt) throws IOException {
+    public static void slide10(HSLFSlideShow ppt) throws IOException {
         //bar chart data. The first value is the bar color, the second is the width
         Object[] def = new Object[]{
             Color.yellow, new Integer(100),
@@ -416,9 +396,9 @@
             Color.red, new Integer(200),
         };
 
-        Slide slide = ppt.createSlide();
+        HSLFSlide slide = ppt.createSlide();
 
-        ShapeGroup group = new ShapeGroup();
+        HSLFGroupShape group = new HSLFGroupShape();
         //define position of the drawing in the slide
         Rectangle bounds = new java.awt.Rectangle(200, 100, 350, 300);
         group.setAnchor(bounds);
@@ -444,69 +424,51 @@
 
     }
 
-    public static void slide11(SlideShow ppt) throws IOException {
-        Slide slide = ppt.createSlide();
+    public static void slide11(HSLFSlideShow ppt) throws IOException {
+        HSLFSlide slide = ppt.createSlide();
 
-        TextBox box1 = new TextBox();
-        TextRun tr1 = box1.getTextRun();
-        tr1.setRunType(TextHeaderAtom.TITLE_TYPE);
-        tr1.setText("HSLF Development Plans");
+        HSLFTextBox box1 = new HSLFTextBox();
+        box1.setRunType(TextHeaderAtom.TITLE_TYPE);
+        box1.setText("HSLF Development Plans");
         box1.setAnchor(new Rectangle(36, 21, 648, 90));
         slide.addShape(box1);
 
-        TextBox box2 = new TextBox();
-        TextRun tr2 = box2.getTextRun();
-        tr2.setRunType(TextHeaderAtom.BODY_TYPE);
-        tr2.getRichTextRuns()[0].setFontSize(32);
-        tr2.setText(
-                "Support for more PowerPoint functionality\r" +
-                "Rendering slides into java.awt.Graphics2D");
-        box2.setAnchor(new Rectangle(36, 126, 648, 100));
-        slide.addShape(box2);
-
-        TextBox box3 = new TextBox();
-        TextRun tr3 = box3.getTextRun();
-        tr3.setRunType(TextHeaderAtom.BODY_TYPE);
-        tr3.getRichTextRuns()[0].setIndentLevel(1);
-        tr3.setText(
-                "A way to export slides into images or other formats");
-        box3.setAnchor(new Rectangle(36, 220, 648, 70));
-        slide.addShape(box3);
-
-        TextBox box4 = new TextBox();
-        TextRun tr4 = box4.getTextRun();
-        tr4.setRunType(TextHeaderAtom.BODY_TYPE);
-        tr4.getRichTextRuns()[0].setFontSize(32);
-        tr4.setText(
-                "Integration with Apache FOP - Formatting Objects Processor");
-        box4.setAnchor(new Rectangle(36, 290, 648, 90));
-        slide.addShape(box4);
-
-        TextBox box5 = new TextBox();
-        TextRun tr5 = box5.getTextRun();
-        tr5.setRunType(TextHeaderAtom.BODY_TYPE);
-        tr5.getRichTextRuns()[0].setIndentLevel(1);
-        tr5.setText(
+        HSLFTextBox box2 = new HSLFTextBox();
+        box2.setRunType(TextHeaderAtom.BODY_TYPE);
+        box2.setText(
+            "Support for more PowerPoint functionality\r" +
+            "Rendering slides into java.awt.Graphics2D\r" +
+                "A way to export slides into images or other formats\r" +
+            "Integration with Apache FOP - Formatting Objects Processor\r" +
                 "Transformation of XSL-FO into PPT\r" +
-                "PPT2PDF transcoder");
-        box5.setAnchor(new Rectangle(36, 380, 648, 100));
-        slide.addShape(box5);
+                "PPT2PDF transcoder"
+        );
+
+        List<HSLFTextParagraph> tp = box2.getTextParagraphs();
+        for (int i : new byte[]{0,1,3}) {
+            tp.get(i).getTextRuns().get(0).setFontSize(28d);
+        }
+        for (int i : new byte[]{2,4,5}) {
+            tp.get(i).getTextRuns().get(0).setFontSize(24d);
+            tp.get(i).setIndentLevel(1);
+        }
+        
+        box2.setAnchor(new Rectangle(36, 126, 648, 400));
+        slide.addShape(box2);
     }
 
-    public static void slide12(SlideShow ppt) throws IOException {
-        Slide slide = ppt.createSlide();
+    public static void slide12(HSLFSlideShow ppt) throws IOException {
+        HSLFSlide slide = ppt.createSlide();
 
-        TextBox box1 = new TextBox();
-        TextRun tr1 = box1.getTextRun();
-        tr1.setRunType(TextHeaderAtom.CENTER_TITLE_TYPE);
-        tr1.setText("Questions?");
+        HSLFTextBox box1 = new HSLFTextBox();
+        box1.setRunType(TextHeaderAtom.CENTER_TITLE_TYPE);
+        box1.setText("Questions?");
         box1.setAnchor(new Rectangle(54, 167, 612, 115));
         slide.addShape(box1);
 
-        TextBox box2 = new TextBox();
-        TextRun tr2 = box2.getTextRun();
-        tr2.setRunType(TextHeaderAtom.CENTRE_BODY_TYPE);
-        tr2.setText(
+        HSLFTextBox box2 = new HSLFTextBox();
+        box2.setRunType(TextHeaderAtom.CENTRE_BODY_TYPE);
+        box2.setText(
                 "http://poi.apache.org/hslf/\r" +
                 "http://people.apache.org/~yegor");
         box2.setAnchor(new Rectangle(108, 306, 504, 138));
diff --git a/src/examples/src/org/apache/poi/hslf/examples/BulletsDemo.java b/src/examples/src/org/apache/poi/hslf/examples/BulletsDemo.java
index 3a97b61..a047d8b 100644
--- a/src/examples/src/org/apache/poi/hslf/examples/BulletsDemo.java
+++ b/src/examples/src/org/apache/poi/hslf/examples/BulletsDemo.java
@@ -17,10 +17,7 @@
 
 package org.apache.poi.hslf.examples;
 
-import org.apache.poi.hslf.usermodel.SlideShow;
-import org.apache.poi.hslf.usermodel.RichTextRun;
-import org.apache.poi.hslf.model.Slide;
-import org.apache.poi.hslf.model.TextBox;
+import org.apache.poi.hslf.usermodel.*;
 
 import java.io.FileOutputStream;
 
@@ -34,22 +31,22 @@
 
     public static void main(String[] args) throws Exception {
 
-        SlideShow ppt = new SlideShow();
+        HSLFSlideShow ppt = new HSLFSlideShow();
 
-        Slide slide = ppt.createSlide();
+        HSLFSlide slide = ppt.createSlide();
 
-        TextBox shape = new TextBox();
-        RichTextRun rt = shape.getTextRun().getRichTextRuns()[0];
+        HSLFTextBox shape = new HSLFTextBox();
+        HSLFTextParagraph rt = shape.getTextParagraphs().get(0);
+        rt.getTextRuns().get(0).setFontSize(42d);
+        rt.setBullet(true);
+        rt.setIndent(0d);  //bullet offset
+        rt.setLeftMargin(50d);   //text offset (should be greater than bullet offset)
+        rt.setBulletChar('\u263A'); //bullet character
         shape.setText(
                 "January\r" +
                 "February\r" +
                 "March\r" +
                 "April");
-        rt.setFontSize(42);
-        rt.setBullet(true);
-        rt.setBulletOffset(0);  //bullet offset
-        rt.setTextOffset(50);   //text offset (should be greater than bullet offset)
-        rt.setBulletChar('\u263A'); //bullet character
         slide.addShape(shape);
 
         shape.setAnchor(new java.awt.Rectangle(50, 50, 500, 300));  //position of the text box in the slide
diff --git a/src/examples/src/org/apache/poi/hslf/examples/CreateHyperlink.java b/src/examples/src/org/apache/poi/hslf/examples/CreateHyperlink.java
index 0aa8db3..8732152 100644
--- a/src/examples/src/org/apache/poi/hslf/examples/CreateHyperlink.java
+++ b/src/examples/src/org/apache/poi/hslf/examples/CreateHyperlink.java
@@ -17,7 +17,7 @@
 
 package org.apache.poi.hslf.examples;
 
-import org.apache.poi.hslf.usermodel.SlideShow;
+import org.apache.poi.hslf.usermodel.*;
 import org.apache.poi.hslf.model.*;
 
 import java.io.FileOutputStream;
@@ -31,19 +31,19 @@
 public final class CreateHyperlink {
 
     public static void main(String[] args) throws Exception {
-        SlideShow ppt = new SlideShow();
+        HSLFSlideShow ppt = new HSLFSlideShow();
 
-        Slide slideA = ppt.createSlide();
-        Slide slideB = ppt.createSlide();
-        Slide slideC = ppt.createSlide();
+        HSLFSlide slideA = ppt.createSlide();
+        HSLFSlide slideB = ppt.createSlide();
+        HSLFSlide slideC = ppt.createSlide();
 
         // link to a URL
-        TextBox textBox1 = new TextBox();
+        HSLFTextBox textBox1 = new HSLFTextBox();
         textBox1.setText("Apache POI");
         textBox1.setAnchor(new Rectangle(100, 100, 200, 50));
 
         String text = textBox1.getText();
-        Hyperlink link = new Hyperlink();
+        HSLFHyperlink link = new HSLFHyperlink();
         link.setAddress("http://www.apache.org");
         link.setTitle(textBox1.getText());
         int linkId = ppt.addHyperlink(link);
@@ -54,11 +54,11 @@
         slideA.addShape(textBox1);
 
         // link to another slide
-        TextBox textBox2 = new TextBox();
+        HSLFTextBox textBox2 = new HSLFTextBox();
         textBox2.setText("Go to slide #3");
         textBox2.setAnchor(new Rectangle(100, 300, 200, 50));
 
-        Hyperlink link2 = new Hyperlink();
+        HSLFHyperlink link2 = new HSLFHyperlink();
         link2.setAddress(slideC);
         ppt.addHyperlink(link2);
 
diff --git a/src/examples/src/org/apache/poi/hslf/examples/DataExtraction.java b/src/examples/src/org/apache/poi/hslf/examples/DataExtraction.java
index a278e89..d1e9a21 100644
--- a/src/examples/src/org/apache/poi/hslf/examples/DataExtraction.java
+++ b/src/examples/src/org/apache/poi/hslf/examples/DataExtraction.java
@@ -41,11 +41,11 @@
         }
 
         FileInputStream is = new FileInputStream(args[0]);
-        SlideShow ppt = new SlideShow(is);
+        HSLFSlideShow ppt = new HSLFSlideShow(is);
         is.close();
 
         //extract all sound files embedded in this presentation
-        SoundData[] sound = ppt.getSoundData();
+        HSLFSoundData[] sound = ppt.getSoundData();
         for (int i = 0; i < sound.length; i++) {
             String type = sound[i].getSoundType();  //*.wav
             String name = sound[i].getSoundName();  //typically file name
@@ -57,14 +57,14 @@
             out.close();
         }
 
-        //extract embedded OLE documents
-        Slide[] slide = ppt.getSlides();
-        for (int i = 0; i < slide.length; i++) {
-            Shape[] shape = slide[i].getShapes();
-            for (int j = 0; j < shape.length; j++) {
-                if (shape[j] instanceof OLEShape) {
-                    OLEShape ole = (OLEShape) shape[j];
-                    ObjectData data = ole.getObjectData();
+        int oleIdx=-1, picIdx=-1;
+        for (HSLFSlide slide : ppt.getSlides()) {
+            //extract embedded OLE documents
+            for (HSLFShape shape : slide.getShapes()) {
+                if (shape instanceof OLEShape) {
+                    oleIdx++;
+                    OLEShape ole = (OLEShape) shape;
+                    HSLFObjectData data = ole.getObjectData();
                     String name = ole.getInstanceName();
                     if ("Worksheet".equals(name)) {
 
@@ -81,11 +81,11 @@
                          }
 
                         //save on disk
-                        FileOutputStream out = new FileOutputStream(name + "-("+(j)+").doc");
+                        FileOutputStream out = new FileOutputStream(name + "-("+(oleIdx)+").doc");
                         doc.write(out);
                         out.close();
                      }  else {
-                        FileOutputStream out = new FileOutputStream(ole.getProgID() + "-"+(j+1)+".dat");
+                        FileOutputStream out = new FileOutputStream(ole.getProgID() + "-"+(oleIdx+1)+".dat");
                         InputStream dis = data.getData();
                         byte[] chunk = new byte[2048];
                         int count;
@@ -96,50 +96,44 @@
                         out.close();
                     }
                 }
-
-            }
-        }
-
-        //Pictures
-        for (int i = 0; i < slide.length; i++) {
-            Shape[] shape = slide[i].getShapes();
-            for (int j = 0; j < shape.length; j++) {
-                if (shape[j] instanceof Picture) {
-                    Picture p = (Picture) shape[j];
-                    PictureData data = p.getPictureData();
+                
+                //Pictures
+                else if (shape instanceof HSLFPictureShape) {
+                    picIdx++;
+                    HSLFPictureShape p = (HSLFPictureShape) shape;
+                    HSLFPictureData data = p.getPictureData();
                     String name = p.getPictureName();
                     int type = data.getType();
                     String ext;
                     switch (type) {
-                        case Picture.JPEG:
+                        case HSLFPictureShape.JPEG:
                             ext = ".jpg";
                             break;
-                        case Picture.PNG:
+                        case HSLFPictureShape.PNG:
                             ext = ".png";
                             break;
-                        case Picture.WMF:
+                        case HSLFPictureShape.WMF:
                             ext = ".wmf";
                             break;
-                        case Picture.EMF:
+                        case HSLFPictureShape.EMF:
                             ext = ".emf";
                             break;
-                        case Picture.PICT:
+                        case HSLFPictureShape.PICT:
                             ext = ".pict";
                             break;
-                        case Picture.DIB:
+                        case HSLFPictureShape.DIB:
                             ext = ".dib";
                             break;
                         default:
                             continue;
                     }
-                    FileOutputStream out = new FileOutputStream("pict-" + j + ext);
+                    FileOutputStream out = new FileOutputStream("pict-" + picIdx + ext);
                     out.write(data.getData());
                     out.close();
                 }
-
             }
-        }
 
+        }
     }
 
     private static void usage(){
diff --git a/src/examples/src/org/apache/poi/hslf/examples/Graphics2DDemo.java b/src/examples/src/org/apache/poi/hslf/examples/Graphics2DDemo.java
index 8d79211..cd90090 100644
--- a/src/examples/src/org/apache/poi/hslf/examples/Graphics2DDemo.java
+++ b/src/examples/src/org/apache/poi/hslf/examples/Graphics2DDemo.java
@@ -17,7 +17,7 @@
 
 package org.apache.poi.hslf.examples;
 
-import org.apache.poi.hslf.usermodel.SlideShow;
+import org.apache.poi.hslf.usermodel.*;
 import org.apache.poi.hslf.model.*;
 
 import java.awt.*;
@@ -34,7 +34,7 @@
      * A simple bar chart demo
      */
     public static void main(String[] args) throws Exception {
-        SlideShow ppt = new SlideShow();
+        HSLFSlideShow ppt = new HSLFSlideShow();
 
         //bar chart data. The first value is the bar color, the second is the width
         Object[] def = new Object[]{
@@ -44,13 +44,13 @@
             Color.red, new Integer(80),
         };
 
-        Slide slide = ppt.createSlide();
+        HSLFSlide slide = ppt.createSlide();
 
-        ShapeGroup group = new ShapeGroup();
+        HSLFGroupShape group = new HSLFGroupShape();
         //define position of the drawing in the slide
         Rectangle bounds = new java.awt.Rectangle(200, 100, 350, 300);
         group.setAnchor(bounds);
-        group.setCoordinates(new java.awt.Rectangle(0, 0, 100, 100));
+        group.setInteriorAnchor(new java.awt.Rectangle(0, 0, 100, 100));
         slide.addShape(group);
         Graphics2D graphics = new PPGraphics2D(group);
 
@@ -68,7 +68,7 @@
         }
         graphics.setColor(Color.black);
         graphics.setFont(new Font("Arial", Font.BOLD, 14));
-        graphics.draw(group.getCoordinates());
+        graphics.draw(group.getInteriorAnchor());
         graphics.drawString("Performance", x + 30, y + 10);
 
         FileOutputStream out = new FileOutputStream("hslf-graphics.ppt");
diff --git a/src/examples/src/org/apache/poi/hslf/examples/HeadersFootersDemo.java b/src/examples/src/org/apache/poi/hslf/examples/HeadersFootersDemo.java
index 3ebcecc..b335e1f 100644
--- a/src/examples/src/org/apache/poi/hslf/examples/HeadersFootersDemo.java
+++ b/src/examples/src/org/apache/poi/hslf/examples/HeadersFootersDemo.java
@@ -16,9 +16,9 @@
 ==================================================================== */
 package org.apache.poi.hslf.examples;
 
-import org.apache.poi.hslf.usermodel.SlideShow;
+import org.apache.poi.hslf.usermodel.HSLFSlide;
+import org.apache.poi.hslf.usermodel.HSLFSlideShow;
 import org.apache.poi.hslf.model.HeadersFooters;
-import org.apache.poi.hslf.model.Slide;
 
 import java.io.FileOutputStream;
 
@@ -29,7 +29,7 @@
  */
 public class HeadersFootersDemo {
     public static void main(String[] args) throws Exception {
-        SlideShow ppt = new SlideShow();
+        HSLFSlideShow ppt = new HSLFSlideShow();
         
         HeadersFooters slideHeaders = ppt.getSlideHeadersFooters();
         slideHeaders.setFootersText("Created by POI-HSLF");
@@ -40,7 +40,7 @@
         notesHeaders.setFootersText("My notes footers");
         notesHeaders.setHeaderText("My notes header");
 
-        Slide slide = ppt.createSlide();
+        HSLFSlide slide = ppt.createSlide();
 
         FileOutputStream out = new FileOutputStream("headers_footers.ppt");
         ppt.write(out);
diff --git a/src/examples/src/org/apache/poi/hslf/examples/Hyperlinks.java b/src/examples/src/org/apache/poi/hslf/examples/Hyperlinks.java
index 968426c..9e88082 100644
--- a/src/examples/src/org/apache/poi/hslf/examples/Hyperlinks.java
+++ b/src/examples/src/org/apache/poi/hslf/examples/Hyperlinks.java
@@ -17,13 +17,10 @@
 
 package org.apache.poi.hslf.examples;
 
-import org.apache.poi.hslf.usermodel.SlideShow;
-import org.apache.poi.hslf.model.Slide;
-import org.apache.poi.hslf.model.TextRun;
-import org.apache.poi.hslf.model.Hyperlink;
-import org.apache.poi.hslf.model.Shape;
-
 import java.io.FileInputStream;
+import java.util.List;
+
+import org.apache.poi.hslf.usermodel.*;
 
 /**
  * Demonstrates how to read hyperlinks from  a presentation
@@ -35,47 +32,40 @@
     public static void main(String[] args) throws Exception {
         for (int i = 0; i < args.length; i++) {
             FileInputStream is = new FileInputStream(args[i]);
-            SlideShow ppt = new SlideShow(is);
+            HSLFSlideShow ppt = new HSLFSlideShow(is);
             is.close();
 
-            Slide[] slide = ppt.getSlides();
-            for (int j = 0; j < slide.length; j++) {
-                System.out.println("slide " + slide[j].getSlideNumber());
+            for (HSLFSlide slide : ppt.getSlides()) {
+                System.out.println("\nslide " + slide.getSlideNumber());
 
-                //read hyperlinks from the slide's text runs
-                System.out.println("reading hyperlinks from the text runs");
-                TextRun[] txt = slide[j].getTextRuns();
-                for (int k = 0; k < txt.length; k++) {
-                    String text = txt[k].getText();
-                    Hyperlink[] links = txt[k].getHyperlinks();
-                    if(links != null) for (int l = 0; l < links.length; l++) {
-                        Hyperlink link = links[l];
-                        String title = link.getTitle();
-                        String address = link.getAddress();
-                        System.out.println("  " + title);
-                        System.out.println("  " + address);
-                        String substring = text.substring(link.getStartIndex(), link.getEndIndex()-1);//in ppt end index is inclusive
-                        System.out.println("  " + substring);
+                // read hyperlinks from the slide's text runs
+                System.out.println("- reading hyperlinks from the text runs");
+                for (List<HSLFTextParagraph> txtParas : slide.getTextParagraphs()) {
+                    List<HSLFHyperlink> links = HSLFHyperlink.find(txtParas);
+                    String text = HSLFTextParagraph.getRawText(txtParas);
+
+                    for (HSLFHyperlink link : links) {
+                        System.out.println(toStr(link, text));
                     }
                 }
 
-                //in PowerPoint you can assign a hyperlink to a shape without text,
-                //for example to a Line object. The code below demonstrates how to
-                //read such hyperlinks
-                System.out.println("  reading hyperlinks from the slide's shapes");
-                Shape[] sh = slide[j].getShapes();
-                for (int k = 0; k < sh.length; k++) {
-                    Hyperlink link = sh[k].getHyperlink();
-                    if(link != null)  {
-                        String title = link.getTitle();
-                        String address = link.getAddress();
-                        System.out.println("  " + title);
-                        System.out.println("  " + address);
-                    }
+                // in PowerPoint you can assign a hyperlink to a shape without text,
+                // for example to a Line object. The code below demonstrates how to
+                // read such hyperlinks
+                System.out.println("- reading hyperlinks from the slide's shapes");
+                for (HSLFShape sh : slide.getShapes()) {
+                    HSLFHyperlink link = HSLFHyperlink.find(sh);
+                    if (link == null) continue;
+                    System.out.println(toStr(link, null));
                 }
             }
-
         }
-
    }
+
+    static String toStr(HSLFHyperlink link, String rawText) {
+        //in ppt end index is inclusive
+        String formatStr = "title: %1$s, address: %2$s" + (rawText == null ? "" : ", start: %3$s, end: %4$s, substring: %5$s");
+        String substring = (rawText == null) ? "" : rawText.substring(link.getStartIndex(), link.getEndIndex()-1);
+        return String.format(formatStr, link.getTitle(), link.getAddress(), link.getStartIndex(), link.getEndIndex(), substring);
+    }
 }
diff --git a/src/examples/src/org/apache/poi/hslf/examples/PPT2PNG.java b/src/examples/src/org/apache/poi/hslf/examples/PPT2PNG.java
index 99037d3..8981c64 100644
--- a/src/examples/src/org/apache/poi/hslf/examples/PPT2PNG.java
+++ b/src/examples/src/org/apache/poi/hslf/examples/PPT2PNG.java
@@ -17,15 +17,16 @@
 
 package org.apache.poi.hslf.examples;
 
-import org.apache.poi.hslf.usermodel.*;
-import org.apache.poi.hslf.model.*;
+import java.awt.*;
+import java.awt.geom.Rectangle2D;
+import java.awt.image.BufferedImage;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
 
 import javax.imageio.ImageIO;
-import java.io.FileOutputStream;
-import java.io.FileInputStream;
-import java.awt.*;
-import java.awt.image.BufferedImage;
-import java.awt.geom.Rectangle2D;
+
+import org.apache.poi.hslf.usermodel.HSLFSlide;
+import org.apache.poi.hslf.usermodel.HSLFSlideShow;
 
 /**
  * Demonstrates how you can use HSLF to convert each slide into a PNG image
@@ -62,19 +63,18 @@
         }
 
         FileInputStream is = new FileInputStream(file);
-        SlideShow ppt = new SlideShow(is);
+        HSLFSlideShow ppt = new HSLFSlideShow(is);
         is.close();
 
         Dimension pgsize = ppt.getPageSize();
         int width = (int)(pgsize.width*scale);
         int height = (int)(pgsize.height*scale);
 
-        Slide[] slide = ppt.getSlides();
-        for (int i = 0; i < slide.length; i++) {
-            if (slidenum != -1 && slidenum != (i+1)) continue;
+        for (HSLFSlide slide : ppt.getSlides()) {
+            if (slidenum != -1 && slidenum != slide.getSlideNumber()) continue;
 
-            String title = slide[i].getTitle();
-            System.out.println("Rendering slide "+slide[i].getSlideNumber() + (title == null ? "" : ": " + title));
+            String title = slide.getTitle();
+            System.out.println("Rendering slide "+slide.getSlideNumber() + (title == null ? "" : ": " + title));
 
             BufferedImage img = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
             Graphics2D graphics = img.createGraphics();
@@ -88,9 +88,9 @@
 
             graphics.scale((double)width/pgsize.width, (double)height/pgsize.height);
 
-            slide[i].draw(graphics);
+            slide.draw(graphics);
 
-            String fname = file.replaceAll("\\.ppt", "-" + (i+1) + ".png");
+            String fname = file.replaceAll("\\.ppt", "-" + slide.getSlideNumber() + ".png");
             FileOutputStream out = new FileOutputStream(fname);
             ImageIO.write(img, "png", out);
             out.close();
diff --git a/src/examples/src/org/apache/poi/hslf/examples/SoundFinder.java b/src/examples/src/org/apache/poi/hslf/examples/SoundFinder.java
index b31019d..3cdb101 100644
--- a/src/examples/src/org/apache/poi/hslf/examples/SoundFinder.java
+++ b/src/examples/src/org/apache/poi/hslf/examples/SoundFinder.java
@@ -15,16 +15,14 @@
    limitations under the License.
 ==================================================================== */
 package org.apache.poi.hslf.examples;
-import org.apache.poi.ddf.*;
-import org.apache.poi.hslf.model.*;
-import org.apache.poi.hslf.record.InteractiveInfo;
-import org.apache.poi.hslf.record.InteractiveInfoAtom;
-import org.apache.poi.hslf.record.Record;
-import org.apache.poi.hslf.usermodel.*;
 import java.io.FileInputStream;
 import java.util.Iterator;
 import java.util.List;
 
+import org.apache.poi.ddf.*;
+import org.apache.poi.hslf.record.*;
+import org.apache.poi.hslf.usermodel.*;
+
 /**
  * For each slide iterate over shapes and found associated sound data.
  *
@@ -32,19 +30,18 @@
  */
 public class SoundFinder {
     public static void main(String[] args) throws Exception {
-        SlideShow ppt = new SlideShow(new FileInputStream(args[0]));
-        SoundData[] sounds = ppt.getSoundData();
+        HSLFSlideShow ppt = new HSLFSlideShow(new FileInputStream(args[0]));
+        HSLFSoundData[] sounds = ppt.getSoundData();
 
-        Slide[] slide = ppt.getSlides();
-        for (int i = 0; i < slide.length; i++) {
-            Shape[] shape = slide[i].getShapes();
-            for (int j = 0; j < shape.length; j++) {
-                int soundRef = getSoundReference(shape[j]);
-                if(soundRef != -1) {
-                    System.out.println("Slide["+i+"], shape["+j+"], soundRef: "+soundRef);
-                    System.out.println("  " + sounds[soundRef].getSoundName());
-                    System.out.println("  " + sounds[soundRef].getSoundType());
-                }
+        for (HSLFSlide slide : ppt.getSlides()) {
+            for (HSLFShape shape : slide.getShapes()) {
+                int soundRef = getSoundReference(shape);
+                if(soundRef == -1) continue;
+
+                
+                System.out.println("Slide["+slide.getSlideNumber()+"], shape["+shape.getShapeId()+"], soundRef: "+soundRef);
+                System.out.println("  " + sounds[soundRef].getSoundName());
+                System.out.println("  " + sounds[soundRef].getSoundType());
             }
         }
     }
@@ -54,7 +51,7 @@
      * @return 0-based reference to a sound in the sound collection
      * or -1 if the shape is not associated with a sound
      */
-    protected static int getSoundReference(Shape shape){
+    protected static int getSoundReference(HSLFShape shape){
         int soundRef = -1;
         //dive into the shape container and search for InteractiveInfoAtom
         EscherContainerRecord spContainer = shape.getSpContainer();
diff --git a/src/examples/src/org/apache/poi/hslf/examples/TableDemo.java b/src/examples/src/org/apache/poi/hslf/examples/TableDemo.java
index 44935c0..93463aa 100644
--- a/src/examples/src/org/apache/poi/hslf/examples/TableDemo.java
+++ b/src/examples/src/org/apache/poi/hslf/examples/TableDemo.java
@@ -17,9 +17,10 @@
 
 package org.apache.poi.hslf.examples;
 
-import org.apache.poi.hslf.usermodel.SlideShow;
-import org.apache.poi.hslf.usermodel.RichTextRun;
+import org.apache.poi.hslf.usermodel.*;
 import org.apache.poi.hslf.model.*;
+import org.apache.poi.sl.usermodel.TextParagraph.TextAlign;
+import org.apache.poi.sl.usermodel.VerticalAlignment;
 
 import java.awt.*;
 import java.io.FileOutputStream;
@@ -43,26 +44,26 @@
             {"Total PO History Spend", "$10,172,038"}
         };
 
-        SlideShow ppt = new SlideShow();
+        HSLFSlideShow ppt = new HSLFSlideShow();
 
-        Slide slide = ppt.createSlide();
+        HSLFSlide slide = ppt.createSlide();
 
         //six rows, two columns
-        Table table1 = new Table(6, 2);
+        HSLFTable table1 = new HSLFTable(6, 2);
         for (int i = 0; i < txt1.length; i++) {
             for (int j = 0; j < txt1[i].length; j++) {
-                TableCell cell = table1.getCell(i, j);
-                cell.setText(txt1[i][j]);
-                RichTextRun rt = cell.getTextRun().getRichTextRuns()[0];
-                rt.setFontName("Arial");
-                rt.setFontSize(10);
+                HSLFTableCell cell = table1.getCell(i, j);
+                HSLFTextRun rt = cell.getTextParagraphs().get(0).getTextRuns().get(0);
+                rt.setFontFamily("Arial");
+                rt.setFontSize(10d);
                 if(i == 0){
                     cell.getFill().setForegroundColor(new Color(227, 227, 227));
                 } else {
                     rt.setBold(true);
                 }
-                cell.setVerticalAlignment(TextBox.AnchorMiddle);
-                cell.setHorizontalAlignment(TextBox.AlignCenter);
+                cell.setVerticalAlignment(VerticalAlignment.MIDDLE);
+                cell.setHorizontalCentered(true);
+                cell.setText(txt1[i][j]);
             }
         }
 
@@ -87,26 +88,27 @@
         };
 
         //two rows, one column
-        Table table2 = new Table(2, 1);
+        HSLFTable table2 = new HSLFTable(2, 1);
         for (int i = 0; i < txt2.length; i++) {
             for (int j = 0; j < txt2[i].length; j++) {
-                TableCell cell = table2.getCell(i, j);
-                cell.setText(txt2[i][j]);
-                RichTextRun rt = cell.getTextRun().getRichTextRuns()[0];
-                rt.setFontSize(10);
-                rt.setFontName("Arial");
+                HSLFTableCell cell = table2.getCell(i, j);
+                HSLFTextRun rt = cell.getTextParagraphs().get(0).getTextRuns().get(0);
+                rt.setFontSize(10d);
+                rt.setFontFamily("Arial");
                 if(i == 0){
                     cell.getFill().setForegroundColor(new Color(0, 51, 102));
                     rt.setFontColor(Color.white);
                     rt.setBold(true);
-                    rt.setFontSize(14);
-                    cell.setHorizontalAlignment(TextBox.AlignCenter);
+                    rt.setFontSize(14d);
+                    cell.setHorizontalCentered(true);
                 } else {
-                    rt.setBullet(true);
-                    rt.setFontSize(12);
-                    cell.setHorizontalAlignment(TextBox.AlignLeft);
+                    rt.getTextParagraph().setBullet(true);
+                    rt.setFontSize(12d);
+                    rt.getTextParagraph().setAlignment(TextAlign.LEFT);
+                    cell.setHorizontalCentered(false);
                 }
-                cell.setVerticalAlignment(TextBox.AnchorMiddle);
+                cell.setVerticalAlignment(VerticalAlignment.MIDDLE);
+                cell.setText(txt2[i][j]);
             }
         }
         table2.setColumnWidth(0, 300);
diff --git a/src/examples/src/org/apache/poi/hssf/usermodel/examples/EmeddedObjects.java b/src/examples/src/org/apache/poi/hssf/usermodel/examples/EmeddedObjects.java
index bb6f19d..c656e7c 100644
--- a/src/examples/src/org/apache/poi/hssf/usermodel/examples/EmeddedObjects.java
+++ b/src/examples/src/org/apache/poi/hssf/usermodel/examples/EmeddedObjects.java
@@ -21,8 +21,8 @@
 import org.apache.poi.poifs.filesystem.Entry;

 import org.apache.poi.poifs.filesystem.POIFSFileSystem;

 import org.apache.poi.hwpf.HWPFDocument;

-import org.apache.poi.hslf.HSLFSlideShow;

-import org.apache.poi.hslf.usermodel.SlideShow;

+import org.apache.poi.hslf.usermodel.HSLFSlideShow;

+import org.apache.poi.hslf.usermodel.HSLFSlideShowImpl;

 

 import java.io.FileInputStream;

 import java.util.Iterator;

@@ -47,7 +47,7 @@
                 //System.out.println(entry.getName() + ": " + embeddedWordDocument.getRange().text());

             }  else if (oleName.equals("Presentation")) {

                 DirectoryNode dn = (DirectoryNode) obj.getDirectory();

-                SlideShow embeddedPowerPointDocument = new SlideShow(new HSLFSlideShow(dn));

+                HSLFSlideShow embeddedPowerPointDocument = new HSLFSlideShow(new HSLFSlideShowImpl(dn));

                 //System.out.println(entry.getName() + ": " + embeddedPowerPointDocument.getSlides().length);

             } else {

                 if(obj.hasDirectoryEntry()){

diff --git a/src/examples/src/org/apache/poi/xslf/usermodel/DataExtraction.java b/src/examples/src/org/apache/poi/xslf/usermodel/DataExtraction.java
index b7e08fc..5437b5d 100644
--- a/src/examples/src/org/apache/poi/xslf/usermodel/DataExtraction.java
+++ b/src/examples/src/org/apache/poi/xslf/usermodel/DataExtraction.java
@@ -76,7 +76,6 @@
         Dimension pageSize = ppt.getPageSize();  // size of the canvas in points

         for(XSLFSlide slide : ppt.getSlides()) {

             for(XSLFShape shape : slide){

-                Rectangle2D anchor = shape.getAnchor();  // position on the canvas

                 if(shape instanceof XSLFTextShape) {

                     XSLFTextShape txShape = (XSLFTextShape)shape;

                     System.out.println(txShape.getText());

diff --git a/src/examples/src/org/apache/poi/xslf/usermodel/PieChartDemo.java b/src/examples/src/org/apache/poi/xslf/usermodel/PieChartDemo.java
index de90c52..e399d3d 100644
--- a/src/examples/src/org/apache/poi/xslf/usermodel/PieChartDemo.java
+++ b/src/examples/src/org/apache/poi/xslf/usermodel/PieChartDemo.java
@@ -67,7 +67,7 @@
             String chartTitle = modelReader.readLine();  // first line is chart title

     

             XMLSlideShow pptx = new XMLSlideShow(new FileInputStream(args[0]));

-            XSLFSlide slide = pptx.getSlides()[0];

+            XSLFSlide slide = pptx.getSlides().get(0);

     

             // find chart in the slide

             XSLFChart chart = null;

diff --git a/src/examples/src/org/apache/poi/xslf/usermodel/Tutorial1.java b/src/examples/src/org/apache/poi/xslf/usermodel/Tutorial1.java
index 93d437b..f552ea8 100644
--- a/src/examples/src/org/apache/poi/xslf/usermodel/Tutorial1.java
+++ b/src/examples/src/org/apache/poi/xslf/usermodel/Tutorial1.java
@@ -37,7 +37,7 @@
         /*XSLFSlide blankSlide =*/ ppt.createSlide();

 

         

-        XSLFSlideMaster master = ppt.getSlideMasters()[0];

+        XSLFSlideMaster master = ppt.getSlideMasters().get(0);

 

         XSLFSlideLayout layout1 = master.getLayout(SlideLayout.TITLE);

         XSLFSlide slide1 = ppt.createSlide(layout1) ;

@@ -56,13 +56,13 @@
         // we are going to add text by paragraphs. Clear the default placehoder text before that

         bodyPlaceholder.clearText();

         XSLFTextParagraph p1 = bodyPlaceholder.addNewTextParagraph();

-        p1.setLevel(0);

+        p1.setIndentLevel(0);

         p1.addNewTextRun().setText("Level1 text");

         XSLFTextParagraph p2 = bodyPlaceholder.addNewTextParagraph();

-        p2.setLevel(1);

+        p2.setIndentLevel(1);

         p2.addNewTextRun().setText("Level2 text");

         XSLFTextParagraph p3 = bodyPlaceholder.addNewTextParagraph();

-        p3.setLevel(3);

+        p3.setIndentLevel(3);

         p3.addNewTextRun().setText("Level3 text");

 

         FileOutputStream out = new FileOutputStream("slides.pptx");

diff --git a/src/examples/src/org/apache/poi/xslf/usermodel/Tutorial2.java b/src/examples/src/org/apache/poi/xslf/usermodel/Tutorial2.java
index 373f01f..dcd0dea 100644
--- a/src/examples/src/org/apache/poi/xslf/usermodel/Tutorial2.java
+++ b/src/examples/src/org/apache/poi/xslf/usermodel/Tutorial2.java
@@ -42,30 +42,30 @@
         XSLFTextParagraph p1 = shape1.addNewTextParagraph();

         XSLFTextRun r1 = p1.addNewTextRun();

         r1.setText("Paragraph Formatting");

-        r1.setFontSize(24);

+        r1.setFontSize(24d);

         r1.setFontColor(new Color(85, 142, 213));

 

         XSLFTextParagraph p2 = shape1.addNewTextParagraph();

         // If spaceBefore >= 0, then space is a percentage of normal line height.

         // If spaceBefore < 0, the absolute value of linespacing is the spacing in points

-        p2.setSpaceBefore(-20); // 20 pt from the previous paragraph

-        p2.setSpaceAfter(300); // 3 lines after the paragraph

+        p2.setSpaceBefore(-20d); // 20 pt from the previous paragraph

+        p2.setSpaceAfter(300d); // 3 lines after the paragraph

         XSLFTextRun r2 = p2.addNewTextRun();

         r2.setText("Paragraph  properties apply to all text residing within the corresponding paragraph.");

-        r2.setFontSize(16);

+        r2.setFontSize(16d);

 

         XSLFTextParagraph p3 = shape1.addNewTextParagraph();

 

         XSLFTextRun r3 = p3.addNewTextRun();

         r3.setText("Run Formatting");

-        r3.setFontSize(24);

+        r3.setFontSize(24d);

         r3.setFontColor(new Color(85, 142, 213));

 

         XSLFTextParagraph p4 = shape1.addNewTextParagraph();

-        p4.setSpaceBefore(-20); // 20 pt from the previous paragraph

-        p4.setSpaceAfter(300); // 3 lines after the paragraph

+        p4.setSpaceBefore(-20d); // 20 pt from the previous paragraph

+        p4.setSpaceAfter(300d); // 3 lines after the paragraph

         XSLFTextRun r4 = p4.addNewTextRun();

-        r4.setFontSize(16);

+        r4.setFontSize(16d);

         r4.setText(

                 "Run level formatting is the most granular property level and allows " +

                 "for the specifying of all low level text properties. The text run is " +

diff --git a/src/examples/src/org/apache/poi/xslf/usermodel/Tutorial4.java b/src/examples/src/org/apache/poi/xslf/usermodel/Tutorial4.java
index ea4fba3..926bc0d 100644
--- a/src/examples/src/org/apache/poi/xslf/usermodel/Tutorial4.java
+++ b/src/examples/src/org/apache/poi/xslf/usermodel/Tutorial4.java
@@ -19,11 +19,13 @@
 

 package org.apache.poi.xslf.usermodel;

 

-import java.awt.*;

+import java.awt.Color;

 import java.awt.geom.Rectangle2D;

 import java.io.FileOutputStream;

 import java.io.IOException;

 

+import org.apache.poi.sl.usermodel.TextParagraph.TextAlign;

+

 /**

  * PPTX Tables

  *

diff --git a/src/examples/src/org/apache/poi/xslf/usermodel/Tutorial7.java b/src/examples/src/org/apache/poi/xslf/usermodel/Tutorial7.java
index a80f23c..443d568 100644
--- a/src/examples/src/org/apache/poi/xslf/usermodel/Tutorial7.java
+++ b/src/examples/src/org/apache/poi/xslf/usermodel/Tutorial7.java
@@ -23,6 +23,8 @@
 import java.io.FileOutputStream;

 import java.io.IOException;

 

+import org.apache.poi.sl.usermodel.AutoNumberingScheme;

+

 /**

  * Bullets and numbering

  *

@@ -38,41 +40,41 @@
         shape.setAnchor(new Rectangle(50, 50, 400, 200));

 

         XSLFTextParagraph p1 = shape.addNewTextParagraph();

-        p1.setLevel(0);

+        p1.setIndentLevel(0);

         p1.setBullet(true);

         XSLFTextRun r1 = p1.addNewTextRun();

         r1.setText("Bullet1");

 

         XSLFTextParagraph p2 = shape.addNewTextParagraph();

         // indentation before text

-        p2.setLeftMargin(60);

+        p2.setLeftMargin(60d);

         // the bullet is set 40 pt before the text

-        p2.setIndent(-40);

+        p2.setIndent(-40d);

         p2.setBullet(true);

         // customize bullets

         p2.setBulletFontColor(Color.red);

         p2.setBulletFont("Wingdings");

         p2.setBulletCharacter("\u0075");

-        p2.setLevel(1);

+        p2.setIndentLevel(1);

         XSLFTextRun r2 = p2.addNewTextRun();

         r2.setText("Bullet2");

 

         // the next three paragraphs form an auto-numbered list

         XSLFTextParagraph p3 = shape.addNewTextParagraph();

-        p3.setBulletAutoNumber(ListAutoNumber.ALPHA_LC_PARENT_R, 1);

-        p3.setLevel(2);

+        p3.setBulletAutoNumber(AutoNumberingScheme.alphaLcParenRight, 1);

+        p3.setIndentLevel(2);

         XSLFTextRun r3 = p3.addNewTextRun();

         r3.setText("Numbered List Item - 1");

 

         XSLFTextParagraph p4 = shape.addNewTextParagraph();

-        p4.setBulletAutoNumber(ListAutoNumber.ALPHA_LC_PARENT_R, 2);

-        p4.setLevel(2);

+        p4.setBulletAutoNumber(AutoNumberingScheme.alphaLcParenRight, 2);

+        p4.setIndentLevel(2);

         XSLFTextRun r4 = p4.addNewTextRun();

         r4.setText("Numbered List Item - 2");

 

         XSLFTextParagraph p5 = shape.addNewTextParagraph();

-        p5.setBulletAutoNumber(ListAutoNumber.ALPHA_LC_PARENT_R, 3);

-        p5.setLevel(2);

+        p5.setBulletAutoNumber(AutoNumberingScheme.alphaLcParenRight, 3);

+        p5.setIndentLevel(2);

         XSLFTextRun r5 = p5.addNewTextRun();

         r5.setText("Numbered List Item - 3");

 

diff --git a/src/examples/src/org/apache/poi/xslf/usermodel/tutorial/Step1.java b/src/examples/src/org/apache/poi/xslf/usermodel/tutorial/Step1.java
index a83a17e..41c6cc2 100644
--- a/src/examples/src/org/apache/poi/xslf/usermodel/tutorial/Step1.java
+++ b/src/examples/src/org/apache/poi/xslf/usermodel/tutorial/Step1.java
@@ -50,12 +50,12 @@
                 if(shape instanceof XSLFTextShape) {
                     XSLFTextShape tsh = (XSLFTextShape)shape;
                     for(XSLFTextParagraph p : tsh){
-                        System.out.println("Paragraph level: " + p.getLevel());
+                        System.out.println("Paragraph level: " + p.getIndentLevel());
                         for(XSLFTextRun r : p){
-                            System.out.println(r.getText());
+                            System.out.println(r.getRawText());
                             System.out.println("  bold: " + r.isBold());
                             System.out.println("  italic: " + r.isItalic());
-                            System.out.println("  underline: " + r.isUnderline());
+                            System.out.println("  underline: " + r.isUnderlined());
                             System.out.println("  font.family: " + r.getFontFamily());
                             System.out.println("  font.size: " + r.getFontSize());
                             System.out.println("  font.color: " + r.getFontColor());
diff --git a/src/examples/src/org/apache/poi/xslf/usermodel/tutorial/Step2.java b/src/examples/src/org/apache/poi/xslf/usermodel/tutorial/Step2.java
index b006eb8..cd01d60c8 100644
--- a/src/examples/src/org/apache/poi/xslf/usermodel/tutorial/Step2.java
+++ b/src/examples/src/org/apache/poi/xslf/usermodel/tutorial/Step2.java
@@ -49,7 +49,7 @@
         // blank slide
         /*XSLFSlide blankSlide =*/ ppt.createSlide();
 
-        XSLFSlideMaster defaultMaster = ppt.getSlideMasters()[0];
+        XSLFSlideMaster defaultMaster = ppt.getSlideMasters().get(0);
 
         // title slide
         XSLFSlideLayout titleLayout = defaultMaster.getLayout(SlideLayout.TITLE);
diff --git a/src/examples/src/org/apache/poi/xssf/usermodel/examples/EmbeddedObjects.java b/src/examples/src/org/apache/poi/xssf/usermodel/examples/EmbeddedObjects.java
index b50e959..69b570f 100644
--- a/src/examples/src/org/apache/poi/xssf/usermodel/examples/EmbeddedObjects.java
+++ b/src/examples/src/org/apache/poi/xssf/usermodel/examples/EmbeddedObjects.java
@@ -20,7 +20,7 @@
 import org.apache.poi.openxml4j.opc.OPCPackage;

 import org.apache.poi.openxml4j.opc.PackagePart;

 import org.apache.poi.xwpf.usermodel.XWPFDocument;

-import org.apache.poi.hslf.HSLFSlideShow;

+import org.apache.poi.hslf.usermodel.HSLFSlideShowImpl;

 import org.apache.poi.hwpf.HWPFDocument;

 import org.apache.poi.xslf.XSLFSlideShow;

 import org.apache.poi.hssf.usermodel.HSSFWorkbook;

@@ -54,7 +54,7 @@
             }

             // PowerPoint Document - binary file format

             else if (contentType.equals("application/vnd.ms-powerpoint")) {

-                HSLFSlideShow slideShow = new HSLFSlideShow(pPart.getInputStream());

+                HSLFSlideShowImpl slideShow = new HSLFSlideShowImpl(pPart.getInputStream());

             }

             // PowerPoint Document - OpenXML file format

             else if (contentType.equals("application/vnd.openxmlformats-officedocument.presentationml.presentation")) {

diff --git a/src/integrationtest/org/apache/poi/stress/HSLFFileHandler.java b/src/integrationtest/org/apache/poi/stress/HSLFFileHandler.java
index 51e54f6..a946b18 100644
--- a/src/integrationtest/org/apache/poi/stress/HSLFFileHandler.java
+++ b/src/integrationtest/org/apache/poi/stress/HSLFFileHandler.java
@@ -22,14 +22,14 @@
 import java.io.FileInputStream;
 import java.io.InputStream;
 
-import org.apache.poi.hslf.HSLFSlideShow;
 import org.apache.poi.hslf.record.Record;
+import org.apache.poi.hslf.usermodel.HSLFSlideShowImpl;
 import org.junit.Test;
 
 public class HSLFFileHandler extends POIFSFileHandler {
 	@Override
 	public void handleFile(InputStream stream) throws Exception {
-		HSLFSlideShow slide = new HSLFSlideShow(stream);
+		HSLFSlideShowImpl slide = new HSLFSlideShowImpl(stream);
 		assertNotNull(slide.getCurrentUserAtom());
 		assertNotNull(slide.getEmbeddedObjects());
 		assertNotNull(slide.getUnderlyingBytes());
diff --git a/src/integrationtest/org/apache/poi/stress/XSLFFileHandler.java b/src/integrationtest/org/apache/poi/stress/XSLFFileHandler.java
index b6f5f7c..2669238 100644
--- a/src/integrationtest/org/apache/poi/stress/XSLFFileHandler.java
+++ b/src/integrationtest/org/apache/poi/stress/XSLFFileHandler.java
@@ -29,6 +29,8 @@
 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;
@@ -61,9 +63,7 @@
     private void createBitmaps(ByteArrayOutputStream out) throws IOException {
         XMLSlideShow ppt = new XMLSlideShow(new ByteArrayInputStream(out.toByteArray()));
         Dimension pgsize = ppt.getPageSize();
-        XSLFSlide[] xmlSlide = ppt.getSlides();
-        int slideSize = xmlSlide.length;
-        for (int i = 0; i < slideSize; i++) {
+        for (XSLFSlide xmlSlide : ppt.getSlides()) {
 //            System.out.println("slide-" + (i + 1));
 //            System.out.println("" + xmlSlide[i].getTitle());
 
@@ -71,13 +71,15 @@
             Graphics2D graphics = img.createGraphics();
 
             // draw stuff
-            xmlSlide[i].draw(graphics);
+            xmlSlide.draw(graphics);
 
             // Also try to read notes
-            XSLFNotes notes = xmlSlide[i].getNotes();
+            XSLFNotes notes = xmlSlide.getNotes();
             if(notes != null) {
                 for (XSLFShape note : notes) {
-                    note.draw(graphics);
+                    DrawFactory df = DrawFactory.getInstance(graphics);
+                    Drawable d = df.getDrawable(note);
+                    d.draw(graphics);
                     
                     if (note instanceof XSLFTextShape) {
                         XSLFTextShape txShape = (XSLFTextShape) note;
diff --git a/src/java/org/apache/poi/common/usermodel/Fill.java b/src/java/org/apache/poi/common/usermodel/Fill.java
deleted file mode 100644
index 9e1ab45..0000000
--- a/src/java/org/apache/poi/common/usermodel/Fill.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/* ====================================================================
-   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.common.usermodel;
-
-import java.awt.Color;
-
-public interface Fill {
-	public Color getColor();
-	public void setColor(Color color);
-}
diff --git a/src/java/org/apache/poi/ddf/DefaultEscherRecordFactory.java b/src/java/org/apache/poi/ddf/DefaultEscherRecordFactory.java
index cf48a38..05a3246 100644
--- a/src/java/org/apache/poi/ddf/DefaultEscherRecordFactory.java
+++ b/src/java/org/apache/poi/ddf/DefaultEscherRecordFactory.java
@@ -117,7 +117,7 @@
      * @param recClasses The records to convert
      * @return The map containing the id/constructor pairs.
      */
-    private static Map<Short, Constructor<? extends EscherRecord>> recordsToMap(Class<?>[] recClasses) {
+    protected static Map<Short, Constructor<? extends EscherRecord>> recordsToMap(Class<?>[] recClasses) {
         Map<Short, Constructor<? extends EscherRecord>> result = new HashMap<Short, Constructor<? extends EscherRecord>>();
         final Class<?>[] EMPTY_CLASS_ARRAY = new Class[0];
 
diff --git a/src/java/org/apache/poi/ddf/EscherChildAnchorRecord.java b/src/java/org/apache/poi/ddf/EscherChildAnchorRecord.java
index b6193ce..bbb84ba 100644
--- a/src/java/org/apache/poi/ddf/EscherChildAnchorRecord.java
+++ b/src/java/org/apache/poi/ddf/EscherChildAnchorRecord.java
@@ -40,13 +40,26 @@
     private int field_4_dy2;
 
     public int fillFields(byte[] data, int offset, EscherRecordFactory recordFactory) {
-        /*int bytesRemaining =*/ readHeader( data, offset );
+        int bytesRemaining = readHeader( data, offset );
         int pos            = offset + 8;
         int size           = 0;
-        field_1_dx1    =  LittleEndian.getInt( data, pos + size );size+=4;
-        field_2_dy1    =  LittleEndian.getInt( data, pos + size );size+=4;
-        field_3_dx2  =  LittleEndian.getInt( data, pos + size );size+=4;
-        field_4_dy2 =  LittleEndian.getInt( data, pos + size );size+=4;
+        switch (bytesRemaining) {
+        case 16: // RectStruct
+            field_1_dx1 =  LittleEndian.getInt( data, pos + size );size+=4;
+            field_2_dy1 =  LittleEndian.getInt( data, pos + size );size+=4;
+            field_3_dx2 =  LittleEndian.getInt( data, pos + size );size+=4;
+            field_4_dy2 =  LittleEndian.getInt( data, pos + size );size+=4;
+            break;
+        case 8: // SmallRectStruct
+            field_1_dx1 =  LittleEndian.getShort( data, pos + size );size+=2;
+            field_2_dy1 =  LittleEndian.getShort( data, pos + size );size+=2;
+            field_3_dx2 =  LittleEndian.getShort( data, pos + size );size+=2;
+            field_4_dy2 =  LittleEndian.getShort( data, pos + size );size+=2;
+            break;
+        default:
+            throw new RuntimeException("Invalid EscherChildAnchorRecord - neither 8 nor 16 bytes.");
+        }
+            
         return 8 + size;
     }
 
@@ -58,8 +71,8 @@
         LittleEndian.putInt( data, pos, getRecordSize()-8 );       pos += 4;
         LittleEndian.putInt( data, pos, field_1_dx1 );             pos += 4;
         LittleEndian.putInt( data, pos, field_2_dy1 );             pos += 4;
-        LittleEndian.putInt( data, pos, field_3_dx2 );           pos += 4;
-        LittleEndian.putInt( data, pos, field_4_dy2 );          pos += 4;
+        LittleEndian.putInt( data, pos, field_3_dx2 );             pos += 4;
+        LittleEndian.putInt( data, pos, field_4_dy2 );             pos += 4;
 
         listener.afterRecordSerialize( pos, getRecordId(), pos - offset, this );
         return pos - offset;
diff --git a/src/java/org/apache/poi/ddf/EscherContainerRecord.java b/src/java/org/apache/poi/ddf/EscherContainerRecord.java
index 8454231..d613943 100644
--- a/src/java/org/apache/poi/ddf/EscherContainerRecord.java
+++ b/src/java/org/apache/poi/ddf/EscherContainerRecord.java
@@ -18,10 +18,7 @@
 package org.apache.poi.ddf;
 
 import java.io.PrintWriter;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.NoSuchElementException;
+import java.util.*;
 
 import org.apache.poi.util.HexDump;
 import org.apache.poi.util.LittleEndian;
@@ -154,30 +151,9 @@
     }
 
     public Iterator<EscherRecord> getChildIterator() {
-        return new ReadOnlyIterator(_childRecords);
+        return Collections.unmodifiableList(_childRecords).iterator();
     }
-    private static final class ReadOnlyIterator implements Iterator<EscherRecord> {
-        private final List<EscherRecord> _list;
-        private int _index;
 
-        public ReadOnlyIterator(List<EscherRecord> list) {
-            _list = list;
-            _index = 0;
-        }
-
-        public boolean hasNext() {
-            return _index < _list.size();
-        }
-        public EscherRecord next() {
-            if (!hasNext()) {
-                throw new NoSuchElementException();
-            }
-            return _list.get(_index++);
-        }
-        public void remove() {
-            throw new UnsupportedOperationException();
-        }
-    }
     /**
      * replaces the internal child list with the contents of the supplied <tt>childRecords</tt>
      */
diff --git a/src/java/org/apache/poi/ddf/EscherProperties.java b/src/java/org/apache/poi/ddf/EscherProperties.java
index 7ec2190..2bee6b9 100644
--- a/src/java/org/apache/poi/ddf/EscherProperties.java
+++ b/src/java/org/apache/poi/ddf/EscherProperties.java
@@ -507,7 +507,7 @@
 		addProp(m, SHADOWSTYLE__ORIGINX, "shadowstyle.originx");
 		addProp(m, SHADOWSTYLE__ORIGINY, "shadowstyle.originy");
 		addProp(m, SHADOWSTYLE__SHADOW, "shadowstyle.shadow");
-		addProp(m, SHADOWSTYLE__SHADOWOBSURED, "shadowstyle.shadowobsured");
+		addProp(m, SHADOWSTYLE__SHADOWOBSURED, "shadowstyle.shadowobscured");
 		addProp(m, PERSPECTIVE__TYPE, "perspective.type");
 		addProp(m, PERSPECTIVE__OFFSETX, "perspective.offsetx");
 		addProp(m, PERSPECTIVE__OFFSETY, "perspective.offsety");
diff --git a/src/java/org/apache/poi/ddf/EscherTextboxRecord.java b/src/java/org/apache/poi/ddf/EscherTextboxRecord.java
index c21c227..1a0147f 100644
--- a/src/java/org/apache/poi/ddf/EscherTextboxRecord.java
+++ b/src/java/org/apache/poi/ddf/EscherTextboxRecord.java
@@ -17,9 +17,7 @@
 
 package org.apache.poi.ddf;
 
-import org.apache.poi.util.HexDump;
-import org.apache.poi.util.LittleEndian;
-import org.apache.poi.util.RecordFormatException;
+import org.apache.poi.util.*;
 
 /**
  * Holds data from the parent application. Most commonly used to store
@@ -32,7 +30,7 @@
  */
 public class EscherTextboxRecord extends EscherRecord
 {
-    public static final short RECORD_ID = (short)0xF00D;
+    public static final short RECORD_ID = (short)0xf00d;
     public static final String RECORD_DESCRIPTION = "msofbtClientTextbox";
 
     private static final byte[] NO_BYTES = new byte[0];
diff --git a/src/java/org/apache/poi/hssf/usermodel/DummyGraphics2d.java b/src/java/org/apache/poi/hssf/usermodel/DummyGraphics2d.java
index beadac4..8ada601 100644
--- a/src/java/org/apache/poi/hssf/usermodel/DummyGraphics2d.java
+++ b/src/java/org/apache/poi/hssf/usermodel/DummyGraphics2d.java
@@ -28,6 +28,7 @@
 import java.awt.image.RenderedImage;

 import java.awt.image.renderable.RenderableImage;

 import java.text.AttributedCharacterIterator;

+import java.util.Arrays;

 import java.util.Map;

 

 public class DummyGraphics2d

@@ -262,7 +263,7 @@
 

     public void setPaint( Paint paint )

     {

-        System.out.println( "setPain(Paint):" );

+        System.out.println( "setPaint(Paint):" );

         System.out.println( "paint = " + paint );

         g2D.setPaint( paint );

     }

@@ -285,7 +286,19 @@
     public void setStroke(Stroke s)

     {

         System.out.println( "setStroke(Stoke):" );

-        System.out.println( "s = " + s );

+        if (s instanceof BasicStroke) {

+            BasicStroke bs = (BasicStroke)s;

+            StringBuilder str = new StringBuilder("s = BasicStroke(");

+            str.append("dash[]: "+Arrays.toString(bs.getDashArray())+", ");

+            str.append("dashPhase: "+bs.getDashPhase()+", ");

+            str.append("endCap: "+bs.getEndCap()+", ");

+            str.append("lineJoin: "+bs.getLineJoin()+", ");

+            str.append("width: "+bs.getLineWidth()+", ");

+            str.append("miterLimit: "+bs.getMiterLimit()+")");

+            System.out.println(str.toString());

+        } else {

+            System.out.println( "s = " + s );

+        }

         g2D.setStroke( s );

     }

 

diff --git a/src/java/org/apache/poi/hssf/usermodel/HSSFPatriarch.java b/src/java/org/apache/poi/hssf/usermodel/HSSFPatriarch.java
index 04f57b4..667c83c 100644
--- a/src/java/org/apache/poi/hssf/usermodel/HSSFPatriarch.java
+++ b/src/java/org/apache/poi/hssf/usermodel/HSSFPatriarch.java
@@ -518,7 +518,7 @@
     }
 
     public Chart createChart(ClientAnchor anchor) {
-        throw new RuntimeException("NotImplemented");
+        throw new UnsupportedOperationException("NotImplemented");
     }
 
 
diff --git a/src/java/org/apache/poi/common/usermodel/LineStyle.java b/src/java/org/apache/poi/sl/draw/DrawAutoShape.java
similarity index 78%
copy from src/java/org/apache/poi/common/usermodel/LineStyle.java
copy to src/java/org/apache/poi/sl/draw/DrawAutoShape.java
index db676f5..6af2b4b 100644
--- a/src/java/org/apache/poi/common/usermodel/LineStyle.java
+++ b/src/java/org/apache/poi/sl/draw/DrawAutoShape.java
@@ -1,21 +1,27 @@
-/* ====================================================================
-   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.common.usermodel;
-
-public interface LineStyle {
-
-}
+/* ====================================================================

+   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;

+

+import org.apache.poi.sl.usermodel.*;

+

+

+public class DrawAutoShape<T extends AutoShape<? extends TextParagraph<? extends TextRun>>> extends DrawTextShape<T> {

+    public DrawAutoShape(T shape) {

+        super(shape);

+    }

+}

diff --git a/src/java/org/apache/poi/sl/draw/DrawBackground.java b/src/java/org/apache/poi/sl/draw/DrawBackground.java
new file mode 100644
index 0000000..35c844d
--- /dev/null
+++ b/src/java/org/apache/poi/sl/draw/DrawBackground.java
@@ -0,0 +1,60 @@
+/* ====================================================================

+   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;

+

+import java.awt.*;

+import java.awt.geom.Rectangle2D;

+

+import org.apache.poi.sl.usermodel.*;

+import org.apache.poi.sl.usermodel.Shape;

+

+

+public class DrawBackground<T extends Background> extends DrawShape<T> {

+    public DrawBackground(T shape) {

+        super(shape);

+    }

+

+    public void draw(Graphics2D graphics) {

+        Dimension pg = shape.getSheet().getSlideShow().getPageSize();

+        final Rectangle2D anchor = new Rectangle2D.Double(0, 0, pg.getWidth(), pg.getHeight());

+

+        PlaceableShape ps = new PlaceableShape(){

+            public ShapeContainer<? extends Shape> getParent() { return null; }

+            public Rectangle2D getAnchor() { return anchor; }

+            public void setAnchor(Rectangle2D anchor) {}

+            public double getRotation() { return 0; }

+            public void setRotation(double theta) {}

+            public void setFlipHorizontal(boolean flip) {}

+            public void setFlipVertical(boolean flip) {}

+            public boolean getFlipHorizontal() { return false; }

+            public boolean getFlipVertical() { return false; }

+        };

+        

+        DrawFactory drawFact = DrawFactory.getInstance(graphics);

+        DrawPaint dp = drawFact.getPaint(ps);

+        Paint fill = dp.getPaint(graphics, shape.getFillStyle().getPaint());

+        Rectangle2D anchor2 = getAnchor(graphics, anchor);

+        

+        if(fill != null) {

+            graphics.setPaint(fill);

+            graphics.fill(anchor2);

+        }

+    }

+    

+    

+}

diff --git a/src/java/org/apache/poi/common/usermodel/LineStyle.java b/src/java/org/apache/poi/sl/draw/DrawConnectorShape.java
similarity index 80%
rename from src/java/org/apache/poi/common/usermodel/LineStyle.java
rename to src/java/org/apache/poi/sl/draw/DrawConnectorShape.java
index db676f5..0fee07c 100644
--- a/src/java/org/apache/poi/common/usermodel/LineStyle.java
+++ b/src/java/org/apache/poi/sl/draw/DrawConnectorShape.java
@@ -1,21 +1,26 @@
-/* ====================================================================
-   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.common.usermodel;
-
-public interface LineStyle {
-
-}
+/* ====================================================================

+   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;

+

+import org.apache.poi.sl.usermodel.*;

+

+public class DrawConnectorShape<T extends ConnectorShape> extends DrawSimpleShape<T> {

+    public DrawConnectorShape(T shape) {

+        super(shape);

+    }

+}

diff --git a/src/java/org/apache/poi/sl/draw/DrawFactory.java b/src/java/org/apache/poi/sl/draw/DrawFactory.java
new file mode 100644
index 0000000..97b3f52
--- /dev/null
+++ b/src/java/org/apache/poi/sl/draw/DrawFactory.java
@@ -0,0 +1,148 @@
+/* ====================================================================

+   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;

+

+import static org.apache.poi.sl.draw.Drawable.DRAW_FACTORY;

+

+import java.awt.Graphics2D;

+import java.awt.font.TextLayout;

+import java.text.AttributedString;

+

+import org.apache.poi.sl.usermodel.*;

+

+public class DrawFactory {

+    protected static ThreadLocal<DrawFactory> defaultFactory = new ThreadLocal<DrawFactory>();

+

+    /**

+     * Set a custom draw factory for the current thread.

+     * This is a fallback, for operations where usercode can't set a graphics context.

+     * Preferably use the rendering hint {@link Drawable#DRAW_FACTORY} to set the factory.

+     *

+     * @param factory

+     */

+    public static void setDefaultFactory(DrawFactory factory) {

+        defaultFactory.set(factory);

+    }

+

+    public static DrawFactory getInstance(Graphics2D graphics) {

+        // first try to find the factory over the rendering hint

+        DrawFactory factory = null;

+        boolean isHint = false;

+        if (graphics != null) {

+            factory = (DrawFactory)graphics.getRenderingHint(DRAW_FACTORY);

+            isHint = (factory != null);

+        }

+        // secondly try the thread local default

+        if (factory == null) {

+            factory = defaultFactory.get();

+        }

+        // and at last, use the default factory

+        if (factory == null) {

+            factory = new DrawFactory();

+        }

+        if (graphics != null && !isHint) {

+            graphics.setRenderingHint(DRAW_FACTORY, factory);

+        }

+        return factory;

+    }

+

+    @SuppressWarnings("unchecked")

+    public Drawable getDrawable(Shape shape) {

+        if (shape instanceof TextBox) {

+            return getDrawable((TextBox<? extends TextParagraph<? extends TextRun>>)shape);

+        } else if (shape instanceof FreeformShape) {

+            return getDrawable((FreeformShape<? extends TextParagraph<? extends TextRun>>)shape);

+        } else if (shape instanceof TextShape) {

+            return getDrawable((TextShape<? extends TextParagraph<? extends TextRun>>)shape);

+        } else if (shape instanceof GroupShape) {

+            return getDrawable((GroupShape<? extends Shape>)shape);

+        } else if (shape instanceof PictureShape) {

+            return getDrawable((PictureShape)shape);

+        } else if (shape instanceof Background) {

+            return getDrawable((Background)shape);

+        } else if (shape instanceof ConnectorShape) {

+            return getDrawable((ConnectorShape)shape);

+        } else if (shape instanceof TableShape) {

+            return getDrawable((TableShape)shape);

+        } else if (shape instanceof Slide) {

+            return getDrawable((Slide<? extends Shape, ? extends SlideShow, ? extends Notes<?,?>>)shape);

+        } else if (shape instanceof MasterSheet) {

+            return getDrawable((MasterSheet<? extends Shape, ? extends SlideShow>)shape);

+        } else if (shape instanceof Sheet) {

+            return getDrawable((Sheet<? extends Shape, ? extends SlideShow>)shape);

+        }

+

+        throw new IllegalArgumentException("Unsupported shape type: "+shape.getClass());

+    }

+

+    public <T extends Slide<? extends Shape, ? extends SlideShow, ? extends Notes<?,?>>> DrawSlide<T> getDrawable(T sheet) {

+        return new DrawSlide<T>(sheet);

+    }

+

+    public <T extends Sheet<? extends Shape, ? extends SlideShow>> DrawSheet<T> getDrawable(T sheet) {

+        return new DrawSheet<T>(sheet);

+    }

+

+    public <T extends MasterSheet<? extends Shape, ? extends SlideShow>> DrawMasterSheet<T> getDrawable(T sheet) {

+        return new DrawMasterSheet<T>(sheet);

+    }

+

+    public <T extends TextBox<? extends TextParagraph<?>>> DrawTextBox<T> getDrawable(T shape) {

+        return new DrawTextBox<T>(shape);

+    }

+

+    public <T extends FreeformShape<? extends TextParagraph<? extends TextRun>>> DrawFreeformShape<T> getDrawable(T shape) {

+        return new DrawFreeformShape<T>(shape);

+    }

+

+    public <T extends ConnectorShape> DrawConnectorShape<T> getDrawable(T shape) {

+        return new DrawConnectorShape<T>(shape);

+    }

+    

+    public <T extends TableShape> DrawTableShape<T> getDrawable(T shape) {

+        return new DrawTableShape<T>(shape);

+    }

+    

+    public <T extends TextShape<? extends TextParagraph<? extends TextRun>>> DrawTextShape<T> getDrawable(T shape) {

+        return new DrawTextShape<T>(shape);

+    }

+

+    public <T extends GroupShape<? extends Shape>> DrawGroupShape<T> getDrawable(T shape) {

+        return new DrawGroupShape<T>(shape);

+    }

+    

+    public <T extends PictureShape> DrawPictureShape<T> getDrawable(T shape) {

+        return new DrawPictureShape<T>(shape);

+    }

+    

+    public <T extends TextRun> DrawTextParagraph<T> getDrawable(TextParagraph<T> paragraph) {

+        return new DrawTextParagraph<T>(paragraph);

+    }

+

+    public <T extends Background> DrawBackground<T> getDrawable(T shape) {

+        return new DrawBackground<T>(shape);

+    }

+    

+    public DrawTextFragment getTextFragment(TextLayout layout, AttributedString str) {

+        return new DrawTextFragment(layout, str);

+    }

+    

+    public DrawPaint getPaint(PlaceableShape shape) {

+        return new DrawPaint(shape);

+    }

+}

diff --git a/src/ooxml/java/org/apache/poi/xslf/model/geom/IAdjustableShape.java b/src/java/org/apache/poi/sl/draw/DrawFontManager.java
similarity index 67%
copy from src/ooxml/java/org/apache/poi/xslf/model/geom/IAdjustableShape.java
copy to src/java/org/apache/poi/sl/draw/DrawFontManager.java
index 44f5a56..9c49489 100644
--- a/src/ooxml/java/org/apache/poi/xslf/model/geom/IAdjustableShape.java
+++ b/src/java/org/apache/poi/sl/draw/DrawFontManager.java
@@ -1,37 +1,38 @@
-/*
- *  ====================================================================
- *    Licensed to the Apache Software Foundation (ASF) under one or more
- *    contributor license agreements.  See the NOTICE file distributed with
- *    this work for additional information regarding copyright ownership.
- *    The ASF licenses this file to You under the Apache License, Version 2.0
- *    (the "License"); you may not use this file except in compliance with
- *    the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *    Unless required by applicable law or agreed to in writing, software
- *    distributed under the License is distributed on an "AS IS" BASIS,
- *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *    See the License for the specific language governing permissions and
- *    limitations under the License.
- * ====================================================================
- */
-
-package org.apache.poi.xslf.model.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);
-}
+/*

+ *  ====================================================================

+ *    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;

+

+/**

+ * Manages fonts when rendering slides.

+ *

+ * Use this class to handle unknown / missing fonts or to substitute fonts

+ */

+public interface DrawFontManager {

+

+    /**

+     * select a font to be used to paint text

+     *

+     * @param typeface the font family as defined in the .pptx file.

+     * This can be unknown or missing in the graphic environment.

+     *

+     * @return the font to be used to paint text

+     */

+    String getRendererableFont(String typeface, int pitchFamily);

+}

diff --git a/src/ooxml/java/org/apache/poi/xslf/usermodel/LineDash.java b/src/java/org/apache/poi/sl/draw/DrawFreeformShape.java
similarity index 77%
rename from src/ooxml/java/org/apache/poi/xslf/usermodel/LineDash.java
rename to src/java/org/apache/poi/sl/draw/DrawFreeformShape.java
index 71891f8..b8dd7c3 100644
--- a/src/ooxml/java/org/apache/poi/xslf/usermodel/LineDash.java
+++ b/src/java/org/apache/poi/sl/draw/DrawFreeformShape.java
@@ -14,21 +14,13 @@
    See the License for the specific language governing permissions and

    limitations under the License.

 ==================================================================== */

-package org.apache.poi.xslf.usermodel;

 

-/**

- * @author Yegor Kozlov

- */

-public enum LineDash {

-    SOLID,

-    DOT,

-    DASH,

-    LG_DASH,

-    DASH_DOT,

-    LG_DASH_DOT,

-    LG_DASH_DOT_DOT,

-    SYS_DASH,

-    SYS_DOT,

-    SYS_DASH_DOT,

-    SYS_DASH_DOT_DOT;

+package org.apache.poi.sl.draw;

+

+import org.apache.poi.sl.usermodel.*;

+

+public class DrawFreeformShape<T extends FreeformShape<? extends TextParagraph<? extends TextRun>>> extends DrawAutoShape<T> {

+    public DrawFreeformShape(T shape) {

+        super(shape);

+    }

 }

diff --git a/src/java/org/apache/poi/sl/draw/DrawGroupShape.java b/src/java/org/apache/poi/sl/draw/DrawGroupShape.java
new file mode 100644
index 0000000..60af5f7
--- /dev/null
+++ b/src/java/org/apache/poi/sl/draw/DrawGroupShape.java
@@ -0,0 +1,70 @@
+/* ====================================================================

+   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;

+

+import java.awt.Graphics2D;

+import java.awt.geom.AffineTransform;

+import java.awt.geom.Rectangle2D;

+

+import org.apache.poi.sl.usermodel.*;

+

+

+public class DrawGroupShape<T extends GroupShape<? extends Shape>> extends DrawShape<T> implements Drawable {

+

+    public DrawGroupShape(T shape) {

+        super(shape);

+    }

+    

+    public void draw(Graphics2D graphics) {

+

+        // the coordinate system of this group of shape

+        Rectangle2D interior = shape.getInteriorAnchor();

+        // anchor of this group relative to the parent shape

+        Rectangle2D exterior = shape.getAnchor();

+

+        AffineTransform tx = (AffineTransform)graphics.getRenderingHint(Drawable.GROUP_TRANSFORM);

+        AffineTransform tx0 = new AffineTransform(tx);

+

+        double scaleX = interior.getWidth() == 0. ? 1.0 : exterior.getWidth() / interior.getWidth();

+        double scaleY = interior.getHeight() == 0. ? 1.0 : exterior.getHeight() / interior.getHeight();

+

+        tx.translate(exterior.getX(), exterior.getY());

+        tx.scale(scaleX, scaleY);

+        tx.translate(-interior.getX(), -interior.getY());

+

+        DrawFactory drawFact = DrawFactory.getInstance(graphics);

+        AffineTransform at2 = graphics.getTransform();

+        

+        for (Shape child : shape) {

+            // remember the initial transform and restore it after we are done with the drawing

+            AffineTransform at = graphics.getTransform();

+            graphics.setRenderingHint(Drawable.GSAVE, true);

+

+            Drawable draw = drawFact.getDrawable(child);

+            draw.applyTransform(graphics);

+            draw.draw(graphics);

+

+            // restore the coordinate system

+            graphics.setTransform(at);

+            graphics.setRenderingHint(Drawable.GRESTORE, true);

+        }

+

+        graphics.setTransform(at2);

+        graphics.setRenderingHint(Drawable.GROUP_TRANSFORM, tx0);

+    }

+}

diff --git a/src/ooxml/java/org/apache/poi/xslf/usermodel/LineCap.java b/src/java/org/apache/poi/sl/draw/DrawMasterSheet.java
similarity index 60%
rename from src/ooxml/java/org/apache/poi/xslf/usermodel/LineCap.java
rename to src/java/org/apache/poi/sl/draw/DrawMasterSheet.java
index 55b4c84..6b5d078 100644
--- a/src/ooxml/java/org/apache/poi/xslf/usermodel/LineCap.java
+++ b/src/java/org/apache/poi/sl/draw/DrawMasterSheet.java
@@ -14,25 +14,25 @@
    See the License for the specific language governing permissions and

    limitations under the License.

 ==================================================================== */

-package org.apache.poi.xslf.usermodel;

 

-/**

- * 

- *

- * @author Yegor Kozlov

- */

-public enum LineCap {

-    /**

-     *  Rounded ends

-     */

-    ROUND,

-    /**

-     * Square protrudes by half line width

-     */

-    SQUARE,

+package org.apache.poi.sl.draw;

+

+import org.apache.poi.sl.usermodel.*;

+

+

+public class DrawMasterSheet<T extends MasterSheet<? extends Shape, ? extends SlideShow>> extends DrawSheet<T> {

+

+    public DrawMasterSheet(T sheet) {

+        super(sheet);

+    }

 

     /**

-     *  Line ends at end point

+     * Checks if this <code>sheet</code> displays the specified shape.

+     *

+     * Subclasses can override it and skip certain shapes from drawings,

+     * for instance, slide masters and layouts don't display placeholders

      */

-    FLAT;

-}
\ No newline at end of file
+    protected boolean canDraw(Shape shape){

+        return !(shape instanceof SimpleShape) || !((SimpleShape)shape).isPlaceholder();

+    }

+}

diff --git a/src/java/org/apache/poi/sl/draw/DrawPaint.java b/src/java/org/apache/poi/sl/draw/DrawPaint.java
new file mode 100644
index 0000000..16562b8
--- /dev/null
+++ b/src/java/org/apache/poi/sl/draw/DrawPaint.java
@@ -0,0 +1,444 @@
+/* ====================================================================

+   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;

+

+import static org.apache.poi.sl.usermodel.PaintStyle.TRANSPARENT_PAINT;

+

+import java.awt.*;

+import java.awt.MultipleGradientPaint.ColorSpaceType;

+import java.awt.MultipleGradientPaint.CycleMethod;

+import java.awt.geom.*;

+import java.io.IOException;

+import java.io.InputStream;

+

+import org.apache.poi.sl.usermodel.*;

+import org.apache.poi.sl.usermodel.PaintStyle.GradientPaint;

+import org.apache.poi.sl.usermodel.PaintStyle.SolidPaint;

+import org.apache.poi.sl.usermodel.PaintStyle.TexturePaint;

+import org.apache.poi.util.POILogFactory;

+import org.apache.poi.util.POILogger;

+

+

+/**

+ * This class handles color transformations

+ * 

+ * @see HSL code taken from <a href="https://tips4java.wordpress.com/2009/07/05/hsl-color/">Java Tips Weblog</a>

+ */

+public class DrawPaint {

+    // HSL code is public domain - see https://tips4java.wordpress.com/contact-us/

+    

+    private final static POILogger LOG = POILogFactory.getLogger(DrawPaint.class);

+

+    protected PlaceableShape shape;

+    

+    public DrawPaint(PlaceableShape shape) {

+        this.shape = shape;

+    }

+

+    public static SolidPaint createSolidPaint(final Color color) {

+        return new SolidPaint() {

+            public ColorStyle getSolidColor() {

+                return new ColorStyle(){

+                    public Color getColor() { return color; }

+                    public int getAlpha() { return -1; }

+                    public int getLumOff() { return -1; }

+                    public int getLumMod() { return -1; }

+                    public int getShade() { return -1; }

+                    public int getTint() { return -1; }

+                };

+            }

+        };

+    }

+    

+    public Paint getPaint(Graphics2D graphics, PaintStyle paint) {

+        if (paint instanceof SolidPaint) {

+            return getSolidPaint((SolidPaint)paint, graphics);

+        } else if (paint instanceof GradientPaint) {

+            return getGradientPaint((GradientPaint)paint, graphics);

+        } else if (paint instanceof TexturePaint) {

+            return getTexturePaint((TexturePaint)paint, graphics);

+        }

+        return null;

+    }

+    

+    protected Paint getSolidPaint(SolidPaint fill, Graphics2D graphics) {

+        return applyColorTransform(fill.getSolidColor());

+    }

+

+    protected Paint getGradientPaint(GradientPaint fill, Graphics2D graphics) {

+        switch (fill.getGradientType()) {

+        case linear:

+            return createLinearGradientPaint(fill, graphics);

+        case circular:

+            return createRadialGradientPaint(fill, graphics);

+        case shape:

+            return createPathGradientPaint(fill, graphics);

+        default:

+            throw new UnsupportedOperationException("gradient fill of type "+fill+" not supported.");

+        }

+    }

+

+    protected Paint getTexturePaint(TexturePaint fill, Graphics2D graphics) {

+        InputStream is = fill.getImageData();

+        if (is == null) return TRANSPARENT_PAINT.getSolidColor().getColor();

+        assert(graphics != null);

+        

+        ImageRenderer renderer = (ImageRenderer)graphics.getRenderingHint(Drawable.IMAGE_RENDERER);

+        if (renderer == null) renderer = new ImageRenderer();

+

+        try {

+            renderer.loadImage(fill.getImageData(), fill.getContentType());

+        } catch (IOException e) {

+            LOG.log(POILogger.ERROR, "Can't load image data - using transparent color", e);

+            return TRANSPARENT_PAINT.getSolidColor().getColor();

+        }

+

+        int alpha = fill.getAlpha();

+        if (alpha != -1) {

+            renderer.setAlpha(alpha/100000.f);

+        }

+        

+        Dimension dim = renderer.getDimension();

+        Rectangle2D textAnchor = new Rectangle2D.Double(0, 0, dim.getWidth(), dim.getHeight());

+        Paint paint = new java.awt.TexturePaint(renderer.getImage(), textAnchor);

+

+        return paint;

+    }

+    

+    /**

+     * Convert color transformations in {@link ColorStyle} to a {@link Color} instance

+     */

+    public static Color applyColorTransform(ColorStyle color){

+        Color result = color.getColor();

+

+        if (result == null || color.getAlpha() == 100) {

+            return TRANSPARENT_PAINT.getSolidColor().getColor();

+        }

+        

+        result = applyAlpha(result, color);

+        result = applyLuminance(result, color);

+        result = applyShade(result, color);

+        result = applyTint(result, color);

+

+        return result;

+    }

+

+    protected static Color applyAlpha(Color c, ColorStyle fc) {

+        int alpha = c.getAlpha();

+        return (alpha == 255) ? c : new Color(c.getRed(), c.getGreen(), c.getBlue(), alpha); 

+    }

+    

+    /**

+     * Apply lumMod / lumOff adjustments

+     *

+     * @param c the color to modify

+     * @param lumMod luminance modulation in the range [0..100000]

+     * @param lumOff luminance offset in the range [0..100000]

+     * @return  modified color

+     * 

+     * @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>

+     */

+    protected static Color applyLuminance(Color c, ColorStyle fc) {

+        int lumMod = fc.getLumMod();

+        if (lumMod == -1) lumMod = 100000;

+

+        int lumOff = fc.getLumOff();

+        if (lumOff == -1) lumOff = 0;

+        

+        if (lumMod == 100000 && lumOff == 0) return c;

+

+        // The lumMod value is the percent luminance. A lumMod value of "60000",

+        // is 60% of the luminance of the original color.

+        // When the color is a shade of the original theme color, the lumMod

+        // attribute is the only one of the tags shown here that appears.

+        // The <a:lumOff> tag appears after the <a:lumMod> tag when the color is a

+        // tint of the original. The lumOff value always equals 1-lumMod, which is used in the tint calculation

+        //

+        // Despite having different ways to display the tint and shade percentages,

+        // all of the programs use the same method to calculate the resulting color.

+        // Convert the original RGB value to HSL ... and then adjust the luminance (L)

+        // with one of the following equations before converting the HSL value back to RGB.

+        // (The % tint in the following equations refers to the tint, themetint, themeshade,

+        // or lumMod values, as applicable.)

+        //

+        // For a shade, the equation is luminance * %tint.

+        //

+        // For a tint, the equation is luminance * %tint + (1-%tint).

+        // (Note that 1-%tint is equal to the lumOff value in DrawingML.)

+        

+        double fLumOff = lumOff / 100000d;

+        double fLumMod = lumMod / 100000d;

+        

+        double hsl[] = RGB2HSL(c);

+        hsl[2] = hsl[2]*fLumMod+fLumOff;

+

+        Color c2 = HSL2RGB(hsl[0], hsl[1], hsl[2], c.getAlpha()/255d);

+        return c2;

+    }

+    

+    /**

+     * This algorithm returns result different from PowerPoint.

+     * TODO: revisit and improve

+     */

+    protected static Color applyShade(Color c, ColorStyle fc) {

+        int shade = fc.getShade();

+        if (shade == -1) return c;

+        

+        float fshade = shade / 100000.f;

+

+        float red = c.getRed() * fshade;

+        float green = c.getGreen() * fshade;

+        float blue = c.getGreen() * fshade;

+        

+        return new Color(Math.round(red), Math.round(green), Math.round(blue), c.getAlpha());

+    }

+

+    /**

+     * This algorithm returns result different from PowerPoint.

+     * TODO: revisit and improve

+     */

+    protected static Color applyTint(Color c, ColorStyle fc) {

+        int tint = fc.getTint();

+        if (tint == -1) return c;

+        

+        float ftint = tint / 100000.f;

+

+        float red = ftint * c.getRed() + (1.f - ftint) * 255.f;

+        float green = ftint * c.getGreen() + (1.f - ftint) * 255.f;

+        float blue = ftint * c.getBlue() + (1.f - ftint) * 255.f;

+

+        return new Color(Math.round(red), Math.round(green), Math.round(blue), c.getAlpha());

+    }

+    

+

+    protected Paint createLinearGradientPaint(GradientPaint fill, Graphics2D graphics) {

+        double angle = fill.getGradientAngle();

+        Rectangle2D anchor = DrawShape.getAnchor(graphics, shape);

+

+        AffineTransform at = AffineTransform.getRotateInstance(

+            Math.toRadians(angle),

+            anchor.getX() + anchor.getWidth() / 2,

+            anchor.getY() + anchor.getHeight() / 2);

+

+        double diagonal = Math.sqrt(anchor.getHeight() * anchor.getHeight() + anchor.getWidth() * anchor.getWidth());

+        Point2D p1 = new Point2D.Double(anchor.getX() + anchor.getWidth() / 2 - diagonal / 2,

+                anchor.getY() + anchor.getHeight() / 2);

+        p1 = at.transform(p1, null);

+

+        Point2D p2 = new Point2D.Double(anchor.getX() + anchor.getWidth(), anchor.getY() + anchor.getHeight() / 2);

+        p2 = at.transform(p2, null);

+

+        snapToAnchor(p1, anchor);

+        snapToAnchor(p2, anchor);

+

+        float[] fractions = fill.getGradientFractions();

+        Color[] colors = new Color[fractions.length];

+        

+        int i = 0;

+        for (ColorStyle fc : fill.getGradientColors()) {

+            colors[i++] = applyColorTransform(fc);

+        }

+

+        AffineTransform grAt  = new AffineTransform();

+        if(fill.isRotatedWithShape()) {

+            double rotation = shape.getRotation();

+            if (rotation != 0.) {

+                double centerX = anchor.getX() + anchor.getWidth() / 2;

+                double centerY = anchor.getY() + anchor.getHeight() / 2;

+

+                grAt.translate(centerX, centerY);

+                grAt.rotate(Math.toRadians(-rotation));

+                grAt.translate(-centerX, -centerY);

+            }

+        }

+

+        return new LinearGradientPaint

+            (p1, p2, fractions, colors, CycleMethod.NO_CYCLE, ColorSpaceType.SRGB, grAt);

+    }

+

+    protected Paint createRadialGradientPaint(GradientPaint fill, Graphics2D graphics) {

+        Rectangle2D anchor = DrawShape.getAnchor(graphics, shape);

+

+        Point2D pCenter = new Point2D.Double(anchor.getX() + anchor.getWidth()/2,

+                anchor.getY() + anchor.getHeight()/2);

+

+        float radius = (float)Math.max(anchor.getWidth(), anchor.getHeight());

+

+        float[] fractions = fill.getGradientFractions();

+        Color[] colors = new Color[fractions.length];

+

+        int i=0;

+        for (ColorStyle fc : fill.getGradientColors()) {

+            colors[i++] = applyColorTransform(fc);

+        }

+

+        return new RadialGradientPaint(pCenter, radius, fractions, colors);

+    }

+

+    protected Paint createPathGradientPaint(GradientPaint fill, Graphics2D graphics) {

+        // currently we ignore an eventually center setting

+        

+        float[] fractions = fill.getGradientFractions();

+        Color[] colors = new Color[fractions.length];

+

+        int i=0;

+        for (ColorStyle fc : fill.getGradientColors()) {

+            colors[i++] = applyColorTransform(fc);

+        }

+

+        return new PathGradientPaint(colors, fractions);

+    }

+    

+    protected void snapToAnchor(Point2D p, Rectangle2D anchor) {

+        if (p.getX() < anchor.getX()) {

+            p.setLocation(anchor.getX(), p.getY());

+        } else if (p.getX() > (anchor.getX() + anchor.getWidth())) {

+            p.setLocation(anchor.getX() + anchor.getWidth(), p.getY());

+        }

+

+        if (p.getY() < anchor.getY()) {

+            p.setLocation(p.getX(), anchor.getY());

+        } else if (p.getY() > (anchor.getY() + anchor.getHeight())) {

+            p.setLocation(p.getX(), anchor.getY() + anchor.getHeight());

+        }

+    }

+

+    /**

+     *  Convert HSL values to a RGB Color.

+     *

+     *  @param h Hue is specified as degrees in the range 0 - 360.

+     *  @param s Saturation is specified as a percentage in the range 1 - 100.

+     *  @param l Luminance is specified as a percentage in the range 1 - 100.

+     *  @param alpha  the alpha value between 0 - 1

+     *

+     *  @returns the RGB Color object

+     */

+    private static Color HSL2RGB(double h, double s, double l, double alpha) {

+        if (s <0.0f || s > 100.0f) {

+            String message = "Color parameter outside of expected range - Saturation";

+            throw new IllegalArgumentException( message );

+        }

+

+        if (l <0.0f || l > 100.0f) {

+            String message = "Color parameter outside of expected range - Luminance";

+            throw new IllegalArgumentException( message );

+        }

+

+        if (alpha <0.0f || alpha > 1.0f) {

+            String message = "Color parameter outside of expected range - Alpha";

+            throw new IllegalArgumentException( message );

+        }

+

+        //  Formula needs all values between 0 - 1.

+

+        h = h % 360.0f;

+        h /= 360f;

+        s /= 100f;

+        l /= 100f;

+

+        double q = (l < 0.5d)

+            ? l * (1d + s)

+            : (l + s) - (s * l);

+

+        double p = 2d * l - q;

+

+        double r = Math.max(0, HUE2RGB(p, q, h + (1.0d / 3.0d)));

+        double g = Math.max(0, HUE2RGB(p, q, h));

+        double b = Math.max(0, HUE2RGB(p, q, h - (1.0d / 3.0d)));

+

+        r = Math.min(r, 1.0d);

+        g = Math.min(g, 1.0d);

+        b = Math.min(b, 1.0d);

+

+        return new Color((float)r, (float)g, (float)b, (float)alpha);

+    }

+

+    private static double HUE2RGB(double p, double q, double h) {

+        if (h < 0d) h += 1d;

+

+        if (h > 1d) h -= 1d;

+

+        if (6d * h < 1d) {

+            return p + ((q - p) * 6d * h);

+        }

+

+        if (2d * h < 1d) {

+            return q;

+        }

+

+        if (3d * h < 2d) {

+            return p + ( (q - p) * 6d * ((2.0d / 3.0d) - h) );

+        }

+

+        return p;

+    }

+

+

+    /**

+     *  Convert a RGB Color to it corresponding HSL values.

+     *

+     *  @return an array containing the 3 HSL values.

+     */

+    private static double[] RGB2HSL(Color color)

+    {

+        //  Get RGB values in the range 0 - 1

+

+        float[] rgb = color.getRGBColorComponents( null );

+        double r = rgb[0];

+        double g = rgb[1];

+        double b = rgb[2];

+

+        //  Minimum and Maximum RGB values are used in the HSL calculations

+

+        double min = Math.min(r, Math.min(g, b));

+        double max = Math.max(r, Math.max(g, b));

+

+        //  Calculate the Hue

+

+        double h = 0;

+

+        if (max == min) {

+            h = 0;

+        } else if (max == r) {

+            h = ((60d * (g - b) / (max - min)) + 360d) % 360d;

+        } else if (max == g) {

+            h = (60d * (b - r) / (max - min)) + 120d;

+        } else if (max == b) {

+            h = (60d * (r - g) / (max - min)) + 240d;

+        }

+

+        //  Calculate the Luminance

+

+        double l = (max + min) / 2d;

+

+        //  Calculate the Saturation

+

+        double s = 0;

+

+        if (max == min) {

+            s = 0;

+        } else if (l <= .5d) {

+            s = (max - min) / (max + min);

+        } else {

+            s = (max - min) / (2d - max - min);

+        }

+

+        return new double[] {h, s * 100, l * 100};

+    }

+

+}
\ No newline at end of file
diff --git a/src/java/org/apache/poi/sl/draw/DrawPictureShape.java b/src/java/org/apache/poi/sl/draw/DrawPictureShape.java
new file mode 100644
index 0000000..3d00b4e
--- /dev/null
+++ b/src/java/org/apache/poi/sl/draw/DrawPictureShape.java
@@ -0,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;

+

+import java.awt.Graphics2D;

+import java.awt.Insets;

+import java.awt.geom.Rectangle2D;

+import java.io.IOException;

+

+import org.apache.poi.sl.usermodel.PictureData;

+import org.apache.poi.sl.usermodel.PictureShape;

+

+

+public class DrawPictureShape<T extends PictureShape> extends DrawSimpleShape<T> {

+    public DrawPictureShape(T shape) {

+        super(shape);

+    }

+    

+    @Override

+    public void drawContent(Graphics2D graphics) {

+        PictureData data = shape.getPictureData();

+        if(data == null) return;

+

+        ImageRenderer renderer = (ImageRenderer)graphics.getRenderingHint(Drawable.IMAGE_RENDERER);

+        if (renderer == null) renderer = new ImageRenderer();

+        

+        Rectangle2D anchor = getAnchor(graphics, shape);

+

+        Insets insets = shape.getClipping();

+

+        try {

+            renderer.loadImage(data.getData(), data.getContentType());

+            renderer.drawImage(graphics, anchor, insets);

+        } catch (IOException e) {

+            // TODO: draw specific runtime exception?

+            throw new RuntimeException(e);

+        }

+    }    

+}

diff --git a/src/java/org/apache/poi/sl/draw/DrawShape.java b/src/java/org/apache/poi/sl/draw/DrawShape.java
new file mode 100644
index 0000000..13ef429
--- /dev/null
+++ b/src/java/org/apache/poi/sl/draw/DrawShape.java
@@ -0,0 +1,143 @@
+/* ====================================================================

+   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;

+

+import java.awt.Graphics2D;

+import java.awt.geom.AffineTransform;

+import java.awt.geom.Rectangle2D;

+

+import org.apache.poi.sl.usermodel.PlaceableShape;

+import org.apache.poi.sl.usermodel.Shape;

+

+

+public class DrawShape<T extends Shape> implements Drawable {

+

+    protected final T shape;

+    

+    public DrawShape(T shape) {

+        this.shape = shape;

+    }

+    

+    /**

+     * Apply 2-D transforms before drawing this shape. This includes rotation and flipping.

+     *

+     * @param graphics the graphics whos transform matrix will be modified

+     */

+    public void applyTransform(Graphics2D graphics) {

+        if (!(shape instanceof PlaceableShape)) return;

+        

+        PlaceableShape ps = (PlaceableShape)shape;

+        AffineTransform tx = (AffineTransform)graphics.getRenderingHint(Drawable.GROUP_TRANSFORM);

+        if (tx == null) tx = new AffineTransform();

+        final Rectangle2D anchor = tx.createTransformedShape(ps.getAnchor()).getBounds2D();

+

+        // rotation

+        double rotation = ps.getRotation();

+        if (rotation != 0.) {

+            // PowerPoint rotates shapes relative to the geometric center

+            double centerX = anchor.getCenterX();

+            double centerY = anchor.getCenterY();

+

+            // normalize rotation

+            rotation %= 360.;

+            if (rotation < 0) rotation += 360.;

+

+            int quadrant = (((int)rotation+45)/90)%4;

+            double scaleX = 1.0, scaleY = 1.0;

+            

+            // scale to bounding box (bug #53176)

+            if (quadrant == 1 || quadrant == 3) {

+                // In quadrant 1 and 3, which is basically a shape in a more or less portrait orientation 

+                // (45-135 degrees and 225-315 degrees), we need to first rotate the shape by a multiple 

+                // of 90 degrees and then resize the bounding box to its original bbox. After that we can 

+                // rotate the shape to the exact rotation amount.

+                // It's strange that you'll need to rotate the shape back and forth again, but you can

+                // think of it, as if you paint the shape on a canvas. First you rotate the canvas, which might

+                // be already (differently) scaled, so you can paint the shape in its default orientation

+                // and later on, turn it around again to compare it with its original size ...

+

+                AffineTransform txs;

+                if (ps.getClass().getCanonicalName().toLowerCase().contains("hslf")) {

+                    txs = new AffineTransform(tx);

+                } else {

+                    // this handling is only based on try and error ... not sure why xslf is handled differently.

+                    txs = new AffineTransform();

+                    txs.translate(centerX, centerY);

+                    txs.rotate(Math.PI/2.); // actually doesn't matter if +/- 90 degrees

+                    txs.translate(-centerX, -centerY);

+                    txs.concatenate(tx);

+                }

+                

+                txs.translate(centerX, centerY);

+                txs.rotate(Math.PI/2.);

+                txs.translate(-centerX, -centerY);

+                

+                Rectangle2D anchor2 = txs.createTransformedShape(ps.getAnchor()).getBounds2D();

+                

+                scaleX = anchor.getWidth() == 0. ? 1.0 : anchor.getWidth() / anchor2.getWidth();

+                scaleY = anchor.getHeight() == 0. ? 1.0 : anchor.getHeight() / anchor2.getHeight();

+            } else {

+                quadrant = 0;

+            }

+            

+            // transformation is applied reversed ...

+            graphics.translate(centerX, centerY);

+            graphics.rotate(Math.toRadians(rotation-quadrant*90.));

+            graphics.scale(scaleX, scaleY);

+            graphics.rotate(Math.toRadians(quadrant*90));

+            graphics.translate(-centerX, -centerY);

+        }

+

+        //flip horizontal

+        if (ps.getFlipHorizontal()) {

+            graphics.translate(anchor.getX() + anchor.getWidth(), anchor.getY());

+            graphics.scale(-1, 1);

+            graphics.translate(-anchor.getX(), -anchor.getY());

+        }

+

+        //flip vertical

+        if (ps.getFlipVertical()) {

+            graphics.translate(anchor.getX(), anchor.getY() + anchor.getHeight());

+            graphics.scale(1, -1);

+            graphics.translate(-anchor.getX(), -anchor.getY());

+        }

+    }

+

+

+    public void draw(Graphics2D graphics) {

+    }

+

+    public void drawContent(Graphics2D context) {

+    }

+

+    public static Rectangle2D getAnchor(Graphics2D graphics, PlaceableShape shape) {

+        return getAnchor(graphics, shape.getAnchor());

+    }

+    

+    public static Rectangle2D getAnchor(Graphics2D graphics, Rectangle2D anchor) {

+        if(graphics == null)  {

+            return anchor;

+        }

+

+        AffineTransform tx = (AffineTransform)graphics.getRenderingHint(Drawable.GROUP_TRANSFORM);

+        if(tx != null) {

+            anchor = tx.createTransformedShape(anchor).getBounds2D();

+        }

+        return anchor;

+    }    

+}

diff --git a/src/java/org/apache/poi/sl/draw/DrawSheet.java b/src/java/org/apache/poi/sl/draw/DrawSheet.java
new file mode 100644
index 0000000..e4c7e18
--- /dev/null
+++ b/src/java/org/apache/poi/sl/draw/DrawSheet.java
@@ -0,0 +1,91 @@
+/* ====================================================================

+   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;

+

+import java.awt.Dimension;

+import java.awt.Color;

+import java.awt.Graphics2D;

+

+import java.awt.geom.AffineTransform;

+

+import org.apache.poi.sl.usermodel.*;

+

+

+public class DrawSheet<T extends Sheet<? extends Shape, ? extends SlideShow>> implements Drawable {

+

+    protected final T sheet;

+    

+    public DrawSheet(T sheet) {

+        this.sheet = sheet;

+    }

+    

+    public void draw(Graphics2D graphics) {

+        Dimension dim = sheet.getSlideShow().getPageSize();

+        Color whiteTrans = new Color(1f,1f,1f,0f);

+        graphics.setColor(whiteTrans);

+        graphics.fillRect(0, 0, (int)dim.getWidth(), (int)dim.getHeight());

+        

+        DrawFactory drawFact = DrawFactory.getInstance(graphics);

+        MasterSheet<? extends Shape, ? extends SlideShow> master = sheet.getMasterSheet();

+        

+        if(sheet.getFollowMasterGraphics() && master != null) {

+            Drawable drawer = drawFact.getDrawable(master);

+            drawer.draw(graphics);

+        }

+        

+        graphics.setRenderingHint(Drawable.GROUP_TRANSFORM, new AffineTransform());

+

+        for (Shape shape : sheet.getShapes()) {

+            if(!canDraw(shape)) continue;

+            

+            // remember the initial transform and restore it after we are done with drawing

+            AffineTransform at = graphics.getTransform();

+

+            // concrete implementations can make sense of this hint,

+            // for example PSGraphics2D or PDFGraphics2D would call gsave() / grestore

+            graphics.setRenderingHint(Drawable.GSAVE, true);

+

+            // apply rotation and flipping

+            Drawable drawer = drawFact.getDrawable(shape);

+            drawer.applyTransform(graphics);

+            // draw stuff

+            drawer.draw(graphics);

+

+            // restore the coordinate system

+            graphics.setTransform(at);

+

+            graphics.setRenderingHint(Drawable.GRESTORE, true);

+        }

+    }

+

+    public void applyTransform(Graphics2D context) {

+    }

+

+    public void drawContent(Graphics2D context) {

+    }

+

+    /**

+     * Checks if this <code>sheet</code> displays the specified shape.

+     *

+     * Subclasses can override it and skip certain shapes from drawings,

+     * for instance, slide masters and layouts don't display placeholders

+     */

+    protected boolean canDraw(Shape shape){

+        return true;

+    }

+}

diff --git a/src/java/org/apache/poi/sl/draw/DrawSimpleShape.java b/src/java/org/apache/poi/sl/draw/DrawSimpleShape.java
new file mode 100644
index 0000000..e674166
--- /dev/null
+++ b/src/java/org/apache/poi/sl/draw/DrawSimpleShape.java
@@ -0,0 +1,420 @@
+/* ====================================================================

+   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;

+

+import java.awt.*;

+import java.awt.geom.*;

+import java.io.*;

+import java.nio.charset.Charset;

+import java.util.*;

+import java.util.List;

+

+import javax.xml.bind.*;

+import javax.xml.stream.*;

+import javax.xml.stream.EventFilter;

+import javax.xml.stream.events.StartElement;

+import javax.xml.stream.events.XMLEvent;

+

+import org.apache.poi.sl.draw.binding.CTCustomGeometry2D;

+import org.apache.poi.sl.draw.geom.*;

+import org.apache.poi.sl.usermodel.*;

+import org.apache.poi.sl.usermodel.LineDecoration.DecorationSize;

+import org.apache.poi.sl.usermodel.PaintStyle.SolidPaint;

+import org.apache.poi.sl.usermodel.StrokeStyle.*;

+import org.apache.poi.util.Units;

+

+

+public class DrawSimpleShape<T extends SimpleShape> extends DrawShape<T> {

+

+    public DrawSimpleShape(T shape) {

+        super(shape);

+    }

+

+    @Override

+    public void draw(Graphics2D graphics) {

+//        RenderableShape rShape = new RenderableShape(this);

+//        rShape.render(graphics);

+

+        DrawPaint drawPaint = DrawFactory.getInstance(graphics).getPaint(shape);

+        Paint fill = drawPaint.getPaint(graphics, shape.getFillStyle().getPaint());

+        Paint line = drawPaint.getPaint(graphics, shape.getStrokeStyle().getPaint());

+        BasicStroke stroke = getStroke(); // the stroke applies both to the shadow and the shape

+        graphics.setStroke(stroke);

+

+        Collection<Outline> elems = computeOutlines(graphics);

+        

+        // first paint the shadow

+        drawShadow(graphics, elems, fill, line);

+        

+        // then fill the shape interior

+        if (fill != null) {

+            graphics.setPaint(fill);

+            for (Outline o : elems) {

+                if (o.getPath().isFilled()){

+                    java.awt.Shape s = o.getOutline();

+                    graphics.setRenderingHint(Drawable.GRADIENT_SHAPE, s);

+                    graphics.fill(s);

+                }                

+            }

+        }

+        

+        // then draw any content within this shape (text, image, etc.)

+        drawContent(graphics);

+

+        // then stroke the shape outline

+        if(line != null) {

+            graphics.setPaint(line);

+            for(Outline o : elems){

+                if(o.getPath().isStroked()){

+                    java.awt.Shape s = o.getOutline();

+                    graphics.setRenderingHint(Drawable.GRADIENT_SHAPE, s);

+                    graphics.draw(s);

+                }

+            }

+        }

+        

+        // draw line decorations

+        drawDecoration(graphics, line, stroke);

+    }

+

+    protected void drawDecoration(Graphics2D graphics, Paint line, BasicStroke stroke) {

+        if(line == null) return;

+        graphics.setPaint(line);

+        

+        List<Outline> lst = new ArrayList<Outline>();

+        LineDecoration deco = shape.getLineDecoration();

+        Outline head = getHeadDecoration(graphics, deco, stroke);

+        if (head != null) lst.add(head);

+        Outline tail = getTailDecoration(graphics, deco, stroke);

+        if (tail != null) lst.add(tail);

+        

+        

+        for(Outline o : lst){

+            java.awt.Shape s = o.getOutline();

+            Path p = o.getPath();

+            graphics.setRenderingHint(Drawable.GRADIENT_SHAPE, s);

+            

+            if(p.isFilled()) graphics.fill(s);

+            if(p.isStroked()) graphics.draw(s);

+        }

+    }

+

+    protected Outline getTailDecoration(Graphics2D graphics, LineDecoration deco, BasicStroke stroke) {

+        DecorationSize tailLength = deco.getTailLength();

+        DecorationSize tailWidth = deco.getTailWidth();

+    

+        double lineWidth = Math.max(2.5, stroke.getLineWidth());

+    

+        Rectangle2D anchor = getAnchor(graphics, shape);

+        double x2 = anchor.getX() + anchor.getWidth(),

+                y2 = anchor.getY() + anchor.getHeight();

+    

+        double alpha = Math.atan(anchor.getHeight() / anchor.getWidth());

+    

+        AffineTransform at = new AffineTransform();

+        java.awt.Shape shape = null;

+        Path p = null;

+        Rectangle2D bounds;

+        double scaleY = Math.pow(2, tailWidth.ordinal());

+        double scaleX = Math.pow(2, tailLength.ordinal());

+        switch (deco.getTailShape()) {

+            case OVAL:

+                p = new Path();

+                shape = new Ellipse2D.Double(0, 0, lineWidth * scaleX, lineWidth * scaleY);

+                bounds = shape.getBounds2D();

+                at.translate(x2 - bounds.getWidth() / 2, y2 - bounds.getHeight() / 2);

+                at.rotate(alpha, bounds.getX() + bounds.getWidth() / 2, bounds.getY() + bounds.getHeight() / 2);

+                break;

+            case ARROW:

+                p = new Path();

+                GeneralPath arrow = new GeneralPath();

+                arrow.moveTo((float) (-lineWidth * 3), (float) (-lineWidth * 2));

+                arrow.lineTo(0, 0);

+                arrow.lineTo((float) (-lineWidth * 3), (float) (lineWidth * 2));

+                shape = arrow;

+                at.translate(x2, y2);

+                at.rotate(alpha);

+                break;

+            case TRIANGLE:

+                p = new Path();

+                scaleY = tailWidth.ordinal() + 1;

+                scaleX = tailLength.ordinal() + 1;

+                GeneralPath triangle = new GeneralPath();

+                triangle.moveTo((float) (-lineWidth * scaleX), (float) (-lineWidth * scaleY / 2));

+                triangle.lineTo(0, 0);

+                triangle.lineTo((float) (-lineWidth * scaleX), (float) (lineWidth * scaleY / 2));

+                triangle.closePath();

+                shape = triangle;

+                at.translate(x2, y2);

+                at.rotate(alpha);

+                break;

+            default:

+                break;

+        }

+    

+        if (shape != null) {

+            shape = at.createTransformedShape(shape);

+        }

+        return shape == null ? null : new Outline(shape, p);

+    }

+    

+    Outline getHeadDecoration(Graphics2D graphics, LineDecoration deco, BasicStroke stroke) {

+        DecorationSize headLength = deco.getHeadLength();

+        DecorationSize headWidth = deco.getHeadWidth();

+    

+        double lineWidth = Math.max(2.5, stroke.getLineWidth());

+    

+        Rectangle2D anchor = getAnchor(graphics, shape);

+        double x1 = anchor.getX(),

+                y1 = anchor.getY();

+    

+        double alpha = Math.atan(anchor.getHeight() / anchor.getWidth());

+    

+        AffineTransform at = new AffineTransform();

+        java.awt.Shape shape = null;

+        Path p = null;

+        Rectangle2D bounds;

+        double scaleY = 1;

+        double scaleX = 1;

+        switch (deco.getHeadShape()) {

+            case OVAL:

+                p = new Path();

+                shape = new Ellipse2D.Double(0, 0, lineWidth * scaleX, lineWidth * scaleY);

+                bounds = shape.getBounds2D();

+                at.translate(x1 - bounds.getWidth() / 2, y1 - bounds.getHeight() / 2);

+                at.rotate(alpha, bounds.getX() + bounds.getWidth() / 2, bounds.getY() + bounds.getHeight() / 2);

+                break;

+            case STEALTH:

+            case ARROW:

+                p = new Path(false, true);

+                GeneralPath arrow = new GeneralPath();

+                arrow.moveTo((float) (lineWidth * 3 * scaleX), (float) (-lineWidth * scaleY * 2));

+                arrow.lineTo(0, 0);

+                arrow.lineTo((float) (lineWidth * 3 * scaleX), (float) (lineWidth * scaleY * 2));

+                shape = arrow;

+                at.translate(x1, y1);

+                at.rotate(alpha);

+                break;

+            case TRIANGLE:

+                p = new Path();

+                scaleY = headWidth.ordinal() + 1;

+                scaleX = headLength.ordinal() + 1;

+                GeneralPath triangle = new GeneralPath();

+                triangle.moveTo((float) (lineWidth * scaleX), (float) (-lineWidth * scaleY / 2));

+                triangle.lineTo(0, 0);

+                triangle.lineTo((float) (lineWidth * scaleX), (float) (lineWidth * scaleY / 2));

+                triangle.closePath();

+                shape = triangle;

+                at.translate(x1, y1);

+                at.rotate(alpha);

+                break;

+            default:

+                break;

+        }

+    

+        if (shape != null) {

+            shape = at.createTransformedShape(shape);

+        }

+        return shape == null ? null : new Outline(shape, p);

+    }

+    

+    public BasicStroke getStroke() {

+        StrokeStyle strokeStyle = shape.getStrokeStyle();

+        

+        float lineWidth = (float) strokeStyle.getLineWidth();

+        if (lineWidth == 0.0f) lineWidth = 0.25f; // Both PowerPoint and OOo draw zero-length lines as 0.25pt

+

+        LineDash lineDash = strokeStyle.getLineDash();

+        if (lineDash == null) {

+        	lineDash = LineDash.SOLID;

+        }

+

+        int dashPatI[] = lineDash.pattern;

+        final float dash_phase = 0;

+        float[] dashPatF = null;

+        if (dashPatI != null) {

+            dashPatF = new float[dashPatI.length];

+            for (int i=0; i<dashPatI.length; i++) {

+                dashPatF[i] = dashPatI[i]*Math.max(1, lineWidth);

+            }

+        }

+

+        LineCap lineCapE = strokeStyle.getLineCap();

+        if (lineCapE == null) lineCapE = LineCap.FLAT;

+        int lineCap;

+        switch (lineCapE) {

+            case ROUND:

+                lineCap = BasicStroke.CAP_ROUND;

+                break;

+            case SQUARE:

+                lineCap = BasicStroke.CAP_SQUARE;

+                break;

+            default:

+            case FLAT:

+                lineCap = BasicStroke.CAP_BUTT;

+                break;

+        }

+

+        int lineJoin = BasicStroke.JOIN_ROUND;

+

+        return new BasicStroke(lineWidth, lineCap, lineJoin, lineWidth, dashPatF, dash_phase);

+    }

+

+    protected void drawShadow(

+            Graphics2D graphics

+          , Collection<Outline> outlines

+          , Paint fill

+          , Paint line

+    ) {

+          Shadow shadow = shape.getShadow();

+          if (shadow == null || (fill == null && line == null)) return;

+

+          SolidPaint shadowPaint = shadow.getFillStyle();

+          Color shadowColor = DrawPaint.applyColorTransform(shadowPaint.getSolidColor());

+          

+          double shapeRotation = shape.getRotation();

+          if(shape.getFlipVertical()) {

+              shapeRotation += 180;

+          }

+          double angle = shadow.getAngle() - shapeRotation;

+          double dist = shadow.getDistance();

+          double dx = dist * Math.cos(Math.toRadians(angle));

+          double dy = dist * Math.sin(Math.toRadians(angle));

+          

+          graphics.translate(dx, dy);

+          

+          for(Outline o : outlines){

+              java.awt.Shape s = o.getOutline();

+              Path p = o.getPath();

+              graphics.setRenderingHint(Drawable.GRADIENT_SHAPE, s);

+              graphics.setPaint(shadowColor);

+              

+              if(fill != null && p.isFilled()){

+                  graphics.fill(s);

+              } else if (line != null && p.isStroked()) {

+                  graphics.draw(s);

+              }

+          }

+

+          graphics.translate(-dx, -dy);

+      }

+      

+    protected static CustomGeometry getCustomGeometry(String name) {

+        return getCustomGeometry(name, null);

+    }

+    

+    protected static CustomGeometry getCustomGeometry(String name, Graphics2D graphics) {

+        @SuppressWarnings("unchecked")

+        Map<String, CustomGeometry> presets = (graphics == null)

+            ? null

+            : (Map<String, CustomGeometry>)graphics.getRenderingHint(Drawable.PRESET_GEOMETRY_CACHE);

+        

+        if (presets == null) {

+            presets = new HashMap<String,CustomGeometry>();

+            if (graphics != null) {

+                graphics.setRenderingHint(Drawable.PRESET_GEOMETRY_CACHE, presets);

+            }

+            

+            String packageName = "org.apache.poi.sl.draw.binding";

+            InputStream presetIS = Drawable.class.getResourceAsStream("presetShapeDefinitions.xml");

+            Reader xml = new InputStreamReader( presetIS, Charset.forName("UTF-8") );

+    

+            // StAX:

+            EventFilter startElementFilter = new EventFilter() {

+                @Override

+                public boolean accept(XMLEvent event) {

+                    return event.isStartElement();

+                }

+            };

+            

+            try {

+                XMLInputFactory staxFactory = XMLInputFactory.newInstance();

+                XMLEventReader staxReader = staxFactory.createXMLEventReader(xml);

+                XMLEventReader staxFiltRd = staxFactory.createFilteredReader(staxReader, startElementFilter);

+                // Ignore StartElement:

+                staxFiltRd.nextEvent();

+                // JAXB:

+                JAXBContext jaxbContext = JAXBContext.newInstance(packageName);

+                Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();

+        

+                while (staxFiltRd.peek() != null) {

+                    StartElement evRoot = (StartElement)staxFiltRd.peek();

+                    String cusName = evRoot.getName().getLocalPart();

+                    // XMLEvent ev = staxReader.nextEvent();

+                    JAXBElement<org.apache.poi.sl.draw.binding.CTCustomGeometry2D> el = unmarshaller.unmarshal(staxReader, CTCustomGeometry2D.class);

+                    CTCustomGeometry2D cusGeom = el.getValue();

+                    

+                    presets.put(cusName, new CustomGeometry(cusGeom));

+                }

+            } catch (Exception e) {

+                throw new RuntimeException("Unable to load preset geometries.", e);

+            }

+        }

+        

+        return presets.get(name);

+    }

+    

+    protected Collection<Outline> computeOutlines(Graphics2D graphics) {

+

+        List<Outline> lst = new ArrayList<Outline>();

+        CustomGeometry geom = shape.getGeometry();

+        if(geom == null) {

+            return lst;

+        }

+

+        Rectangle2D anchor = getAnchor(graphics, shape);

+        for (Path p : geom) {

+

+            double w = p.getW() == -1 ? anchor.getWidth() * Units.EMU_PER_POINT : p.getW();

+            double h = p.getH() == -1 ? anchor.getHeight() * Units.EMU_PER_POINT : p.getH();

+

+            // the guides in the shape definitions are all defined relative to each other,

+            // so we build the path starting from (0,0).

+            final Rectangle2D pathAnchor = new Rectangle2D.Double(0,0,w,h);

+

+            Context ctx = new Context(geom, pathAnchor, shape);

+

+            java.awt.Shape gp = p.getPath(ctx);

+

+            // translate the result to the canvas coordinates in points

+            AffineTransform at = new AffineTransform();

+            at.translate(anchor.getX(), anchor.getY());

+

+            double scaleX, scaleY;

+            if (p.getW() != -1) {

+                scaleX = anchor.getWidth() / p.getW();

+            } else {

+                scaleX = 1.0 / Units.EMU_PER_POINT;

+            }

+            if (p.getH() != -1) {

+                scaleY = anchor.getHeight() / p.getH();

+            } else {

+                scaleY = 1.0 / Units.EMU_PER_POINT;

+            }

+

+            at.scale(scaleX, scaleY);

+

+            java.awt.Shape canvasShape = at.createTransformedShape(gp);

+

+            lst.add(new Outline(canvasShape, p));

+        }

+

+        return lst;

+    }

+

+}

diff --git a/src/ooxml/java/org/apache/poi/xslf/usermodel/LineDash.java b/src/java/org/apache/poi/sl/draw/DrawSlide.java
similarity index 60%
copy from src/ooxml/java/org/apache/poi/xslf/usermodel/LineDash.java
copy to src/java/org/apache/poi/sl/draw/DrawSlide.java
index 71891f8..cfa3167 100644
--- a/src/ooxml/java/org/apache/poi/xslf/usermodel/LineDash.java
+++ b/src/java/org/apache/poi/sl/draw/DrawSlide.java
@@ -14,21 +14,28 @@
    See the License for the specific language governing permissions and

    limitations under the License.

 ==================================================================== */

-package org.apache.poi.xslf.usermodel;

 

-/**

- * @author Yegor Kozlov

- */

-public enum LineDash {

-    SOLID,

-    DOT,

-    DASH,

-    LG_DASH,

-    DASH_DOT,

-    LG_DASH_DOT,

-    LG_DASH_DOT_DOT,

-    SYS_DASH,

-    SYS_DOT,

-    SYS_DASH_DOT,

-    SYS_DASH_DOT_DOT;

+package org.apache.poi.sl.draw;

+

+import java.awt.Graphics2D;

+

+import org.apache.poi.sl.usermodel.*;

+

+

+public class DrawSlide<T extends Slide<? extends Shape, ? extends SlideShow, ? extends Notes<?,?>>> extends DrawSheet<T> {

+

+    public DrawSlide(T slide) {

+        super(slide);

+    }

+    

+    public void draw(Graphics2D graphics) {

+        Background bg = sheet.getBackground();

+        if(bg != null) {

+            DrawFactory drawFact = DrawFactory.getInstance(graphics);

+            Drawable db = drawFact.getDrawable(bg);

+            db.draw(graphics);

+        }

+

+        super.draw(graphics);

+    }

 }

diff --git a/src/java/org/apache/poi/common/usermodel/LineStyle.java b/src/java/org/apache/poi/sl/draw/DrawTableShape.java
similarity index 79%
copy from src/java/org/apache/poi/common/usermodel/LineStyle.java
copy to src/java/org/apache/poi/sl/draw/DrawTableShape.java
index db676f5..ceb6450 100644
--- a/src/java/org/apache/poi/common/usermodel/LineStyle.java
+++ b/src/java/org/apache/poi/sl/draw/DrawTableShape.java
@@ -1,21 +1,27 @@
-/* ====================================================================
-   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.common.usermodel;
-
-public interface LineStyle {
-
-}
+/* ====================================================================

+   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;

+

+import org.apache.poi.sl.usermodel.*;

+

+public class DrawTableShape<T extends TableShape> extends DrawShape<T> {

+    // to be implemented ...

+    public DrawTableShape(T shape) {

+        super(shape);

+    }

+}

diff --git a/src/java/org/apache/poi/common/usermodel/LineStyle.java b/src/java/org/apache/poi/sl/draw/DrawTextBox.java
similarity index 78%
copy from src/java/org/apache/poi/common/usermodel/LineStyle.java
copy to src/java/org/apache/poi/sl/draw/DrawTextBox.java
index db676f5..89d6922 100644
--- a/src/java/org/apache/poi/common/usermodel/LineStyle.java
+++ b/src/java/org/apache/poi/sl/draw/DrawTextBox.java
@@ -1,21 +1,26 @@
-/* ====================================================================
-   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.common.usermodel;
-
-public interface LineStyle {
-
-}
+/* ====================================================================

+   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;

+

+import org.apache.poi.sl.usermodel.*;

+

+public class DrawTextBox<T extends TextBox<? extends TextParagraph<? extends TextRun>>> extends DrawAutoShape<T> {

+    public DrawTextBox(T shape) {

+        super(shape);

+    }

+}

diff --git a/src/java/org/apache/poi/sl/draw/DrawTextFragment.java b/src/java/org/apache/poi/sl/draw/DrawTextFragment.java
new file mode 100644
index 0000000..acb6b4c
--- /dev/null
+++ b/src/java/org/apache/poi/sl/draw/DrawTextFragment.java
@@ -0,0 +1,105 @@
+/* ====================================================================

+   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;

+

+import java.awt.Graphics2D;

+import java.awt.font.TextLayout;

+import java.text.*;

+

+public class DrawTextFragment implements Drawable  {

+    final TextLayout layout;

+    final AttributedString str;

+    double x, y;

+    

+    public DrawTextFragment(TextLayout layout, AttributedString str) {

+        this.layout = layout;

+        this.str = str;

+    }

+

+    public void setPosition(double x, double y) {

+        // TODO: replace it, by applyTransform????

+        this.x = x;

+        this.y = y;

+    }

+

+    public void draw(Graphics2D graphics){

+        if(str == null) {

+            return;

+        }

+

+        double yBaseline = y + layout.getAscent();

+

+        Integer textMode = (Integer)graphics.getRenderingHint(Drawable.TEXT_RENDERING_MODE);

+        if(textMode != null && textMode == Drawable.TEXT_AS_SHAPES){

+            layout.draw(graphics, (float)x, (float)yBaseline);

+        } else {

+            graphics.drawString(str.getIterator(), (float)x, (float)yBaseline );

+        }

+    }

+

+    public void applyTransform(Graphics2D graphics) {

+    }

+

+    public void drawContent(Graphics2D graphics) {

+    }

+    

+    public TextLayout getLayout() {

+        return layout;

+    }

+

+    public AttributedString getAttributedString() {

+        return str;

+    }

+    

+    /**

+     * @return full height of this text run which is sum of ascent, descent and leading

+     */

+    public float getHeight(){

+        double h = Math.ceil(layout.getAscent()) + Math.ceil(layout.getDescent()) + layout.getLeading();

+        return (float)h;

+    }

+

+    /**

+     *

+     * @return width if this text run

+     */

+    public float getWidth(){

+        return layout.getAdvance();

+    }

+

+    /**

+     *

+     * @return the string to be painted

+     */

+    public String getString(){

+        if (str == null) return "";

+

+        AttributedCharacterIterator it = str.getIterator();

+         StringBuilder buf = new StringBuilder();

+         for (char c = it.first(); c != CharacterIterator.DONE; c = it.next()) {

+             buf.append(c);

+         }

+        return buf.toString();

+    }

+

+    @Override

+    public String toString(){

+        return "[" + getClass().getSimpleName() + "] " + getString();

+    }

+    

+}

diff --git a/src/java/org/apache/poi/sl/draw/DrawTextParagraph.java b/src/java/org/apache/poi/sl/draw/DrawTextParagraph.java
new file mode 100644
index 0000000..e2db501
--- /dev/null
+++ b/src/java/org/apache/poi/sl/draw/DrawTextParagraph.java
@@ -0,0 +1,462 @@
+/* ====================================================================

+   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;

+

+import java.awt.Color;

+import java.awt.Graphics2D;

+import java.awt.font.*;

+import java.awt.geom.Rectangle2D;

+import java.text.*;

+import java.text.AttributedCharacterIterator.Attribute;

+import java.util.*;

+

+import org.apache.poi.sl.usermodel.*;

+import org.apache.poi.sl.usermodel.TextParagraph.BulletStyle;

+import org.apache.poi.sl.usermodel.TextParagraph.TextAlign;

+import org.apache.poi.sl.usermodel.TextRun.TextCap;

+import org.apache.poi.util.Units;

+

+public class DrawTextParagraph<T extends TextRun> implements Drawable {

+    protected TextParagraph<T> paragraph;

+    double x, y;

+    protected List<DrawTextFragment> lines = new ArrayList<DrawTextFragment>();

+    protected String rawText;

+    protected DrawTextFragment bullet;

+    protected int autoNbrIdx = 0;

+

+    /**

+     * the highest line in this paragraph. Used for line spacing.

+     */

+    protected double maxLineHeight;

+

+    public DrawTextParagraph(TextParagraph<T> paragraph) {

+        this.paragraph = paragraph;

+    }

+

+    public void setPosition(double x, double y) {

+        // TODO: replace it, by applyTransform????

+        this.x = x;

+        this.y = y;

+    }

+

+    public double getY() {

+        return y;

+    }

+

+    /**

+     * Sets the auto numbering index of the handled paragraph

+     * @param index the auto numbering index

+     */

+    public void setAutoNumberingIdx(int index) {

+        autoNbrIdx = index;

+    }

+    

+    public void draw(Graphics2D graphics){

+        if (lines.isEmpty()) return;

+        

+        Insets2D insets = paragraph.getParentShape().getInsets();

+        double leftInset = insets.left;

+        double rightInset = insets.right;

+        double penY = y;

+

+        boolean firstLine = true;

+        int indentLevel = paragraph.getIndentLevel();

+        Double leftMargin = paragraph.getLeftMargin();

+        if (leftMargin == null) {

+            // if the marL attribute is omitted, then a value of 347663 is implied

+            leftMargin = Units.toPoints(347663*(indentLevel+1));

+        }

+        Double indent = paragraph.getIndent();

+        if (indent == null) {

+            indent = Units.toPoints(347663*indentLevel);

+        }

+        Double rightMargin = paragraph.getRightMargin();

+        if (rightMargin == null) {

+            rightMargin = 0d;

+        }

+

+        //The vertical line spacing

+        Double spacing = paragraph.getLineSpacing();

+        if (spacing == null) spacing = 100d;

+        

+        for(DrawTextFragment line : lines){

+            double penX;

+

+            if(firstLine) {

+                if (!isEmptyParagraph()) {

+                    // TODO: find out character style for empty, but bulleted/numbered lines

+                    bullet = getBullet(graphics, line.getAttributedString().getIterator());

+                }

+                

+                if (bullet != null){

+                    bullet.setPosition(x + indent, penY);

+                    bullet.draw(graphics);

+                    // don't let text overlay the bullet and advance by the bullet width

+                    double bulletWidth = bullet.getLayout().getAdvance() + 1;

+                    penX = x + Math.max(leftMargin, indent+bulletWidth);

+                } else {

+                    penX = x + indent;

+                }

+            } else {

+                penX = x + leftMargin;

+            }

+

+            Rectangle2D anchor = DrawShape.getAnchor(graphics, paragraph.getParentShape());

+

+            TextAlign ta = paragraph.getTextAlign();

+            if (ta == null) ta = TextAlign.LEFT;

+            switch (ta) {

+                case CENTER:

+                    penX += (anchor.getWidth() - leftMargin - line.getWidth() - leftInset - rightInset) / 2;

+                    break;

+                case RIGHT:

+                    penX += (anchor.getWidth() - line.getWidth() - leftInset - rightInset);

+                    break;

+                default:

+                    break;

+            }

+

+            line.setPosition(penX, penY);

+            line.draw(graphics);

+

+            if(spacing > 0) {

+                // If linespacing >= 0, then linespacing is a percentage of normal line height.

+                penY += spacing*0.01* line.getHeight();

+            } else {

+                // negative value means absolute spacing in points

+                penY += -spacing;

+            }

+

+            firstLine = false;

+        }

+

+        y = penY - y;

+    }

+    

+    public float getFirstLineHeight() {

+        return (lines.isEmpty()) ? 0 : lines.get(0).getHeight();

+    }

+

+    public float getLastLineHeight() {

+        return (lines.isEmpty()) ? 0 : lines.get(lines.size()-1).getHeight();

+    }

+

+    public boolean isEmptyParagraph() {

+        return (lines.isEmpty() || rawText.trim().isEmpty());

+    }

+    

+    public void applyTransform(Graphics2D graphics) {

+    }

+

+    public void drawContent(Graphics2D graphics) {

+    }

+

+    /**

+     * break text into lines, each representing a line of text that fits in the wrapping width

+     *

+     * @param graphics

+     */

+    protected void breakText(Graphics2D graphics){

+        lines.clear();

+

+        DrawFactory fact = DrawFactory.getInstance(graphics);

+        StringBuilder text = new StringBuilder();

+        AttributedString at = getAttributedString(graphics, text);

+        boolean emptyParagraph = ("".equals(text.toString().trim()));

+

+        AttributedCharacterIterator it = at.getIterator();

+        LineBreakMeasurer measurer = new LineBreakMeasurer(it, graphics.getFontRenderContext());

+        for (;;) {

+            int startIndex = measurer.getPosition();

+

+            double wrappingWidth = getWrappingWidth(lines.size() == 0, graphics) + 1; // add a pixel to compensate rounding errors

+            // shape width can be smaller that the sum of insets (this was proved by a test file)

+            if(wrappingWidth < 0) wrappingWidth = 1;

+

+            int nextBreak = text.indexOf("\n", startIndex + 1);

+            if(nextBreak == -1) nextBreak = it.getEndIndex();

+

+            TextLayout layout = measurer.nextLayout((float)wrappingWidth, nextBreak, true);

+            if (layout == null) {

+                 // layout can be null if the entire word at the current position

+                 // does not fit within the wrapping width. Try with requireNextWord=false.

+                 layout = measurer.nextLayout((float)wrappingWidth, nextBreak, false);

+            }

+

+            if(layout == null) {

+                // exit if can't break any more

+                break;

+            }

+

+            int endIndex = measurer.getPosition();

+            // skip over new line breaks (we paint 'clear' text runs not starting or ending with \n)

+            if(endIndex < it.getEndIndex() && text.charAt(endIndex) == '\n'){

+                measurer.setPosition(endIndex + 1);

+            }

+

+            TextAlign hAlign = paragraph.getTextAlign();

+            if(hAlign == TextAlign.JUSTIFY || hAlign == TextAlign.JUSTIFY_LOW) {

+                layout = layout.getJustifiedLayout((float)wrappingWidth);

+            }

+

+            AttributedString str = (emptyParagraph)

+                ? null // we will not paint empty paragraphs

+                : new AttributedString(it, startIndex, endIndex);

+            DrawTextFragment line = fact.getTextFragment(layout, str);

+            lines.add(line);

+

+            maxLineHeight = Math.max(maxLineHeight, line.getHeight());

+

+            if(endIndex == it.getEndIndex()) break;

+        }

+

+        rawText = text.toString();

+    }

+

+    protected DrawTextFragment getBullet(Graphics2D graphics, AttributedCharacterIterator firstLineAttr) {

+        BulletStyle bulletStyle = paragraph.getBulletStyle();

+        if (bulletStyle == null) return null;

+

+        String buCharacter;

+        AutoNumberingScheme ans = bulletStyle.getAutoNumberingScheme();

+        if (ans != null) {

+            buCharacter = ans.format(autoNbrIdx);

+        } else {

+            buCharacter = bulletStyle.getBulletCharacter();

+        }

+        if (buCharacter == null) return null;

+

+        String buFont = bulletStyle.getBulletFont();

+        if (buFont == null) buFont = paragraph.getDefaultFontFamily();

+        assert(buFont != null);

+

+        Color buColor = bulletStyle.getBulletFontColor();

+        if (buColor == null) buColor = (Color)firstLineAttr.getAttribute(TextAttribute.FOREGROUND);

+

+        float fontSize = (Float)firstLineAttr.getAttribute(TextAttribute.SIZE);

+        Double buSz = bulletStyle.getBulletFontSize();

+        if (buSz == null) buSz = 100d; 

+        if (buSz > 0) fontSize *= buSz* 0.01;

+        else fontSize = (float)-buSz;

+

+        

+        AttributedString str = new AttributedString(buCharacter);

+        str.addAttribute(TextAttribute.FOREGROUND, buColor);

+        str.addAttribute(TextAttribute.FAMILY, buFont);

+        str.addAttribute(TextAttribute.SIZE, fontSize);

+

+        TextLayout layout = new TextLayout(str.getIterator(), graphics.getFontRenderContext());

+        DrawFactory fact = DrawFactory.getInstance(graphics);

+        return fact.getTextFragment(layout, str);

+    }

+

+    protected String getRenderableText(TextRun tr) {

+        StringBuilder buf = new StringBuilder();

+        TextCap cap = tr.getTextCap();

+        String tabs = null;

+        for (char c : tr.getRawText().toCharArray()) {

+            if(c == '\t') {

+                if (tabs == null) {

+                    tabs = tab2space(tr);

+                }

+                buf.append(tabs);

+                continue;

+            }

+

+            switch (cap) {

+                case ALL: c = Character.toUpperCase(c); break;

+                case SMALL: c = Character.toLowerCase(c); break;

+                case NONE: break;

+            }

+

+            buf.append(c);

+        }

+

+        return buf.toString();

+    }

+    

+    /**

+     * Replace a tab with the effective number of white spaces.

+     */

+    private String tab2space(TextRun tr) {

+        AttributedString string = new AttributedString(" ");

+        String typeFace = tr.getFontFamily();

+        if (typeFace == null) typeFace = "Lucida Sans";

+        string.addAttribute(TextAttribute.FAMILY, typeFace);

+

+        Double fs = tr.getFontSize();

+        if (fs == null) fs = 12d;

+        string.addAttribute(TextAttribute.SIZE, fs.floatValue());

+        

+        TextLayout l = new TextLayout(string.getIterator(), new FontRenderContext(null, true, true));

+        double wspace = l.getAdvance();

+

+        Double tabSz = paragraph.getDefaultTabSize();

+        if (tabSz == null) tabSz = wspace*4;

+

+        int numSpaces = (int)Math.ceil(tabSz / wspace);

+        StringBuilder buf = new StringBuilder();

+        for(int i = 0; i < numSpaces; i++) {

+            buf.append(' ');

+        }

+        return buf.toString();

+    }

+    

+

+    /**

+     * Returns wrapping width to break lines in this paragraph

+     *

+     * @param firstLine whether the first line is breaking

+     *

+     * @return  wrapping width in points

+     */

+    protected double getWrappingWidth(boolean firstLine, Graphics2D graphics){

+        // internal margins for the text box

+

+        Insets2D insets = paragraph.getParentShape().getInsets();

+        double leftInset = insets.left;

+        double rightInset = insets.right;

+

+        Rectangle2D anchor = DrawShape.getAnchor(graphics, paragraph.getParentShape());

+

+        int indentLevel = paragraph.getIndentLevel();

+        Double leftMargin = paragraph.getLeftMargin();

+        if (leftMargin == null) {

+            // if the marL attribute is omitted, then a value of 347663 is implied

+            leftMargin = Units.toPoints(347663*(indentLevel+1));

+        }

+        Double indent = paragraph.getIndent();

+        if (indent == null) {

+            indent = Units.toPoints(347663*indentLevel);

+        }

+        Double rightMargin = paragraph.getRightMargin();

+        if (rightMargin == null) {

+            rightMargin = 0d;

+        }

+

+        double width;

+        TextShape<? extends TextParagraph<T>> ts = paragraph.getParentShape();

+        if (!ts.getWordWrap()) {

+            // if wordWrap == false then we return the advance to the right border of the sheet

+            width = ts.getSheet().getSlideShow().getPageSize().getWidth() - anchor.getX();

+        } else {

+            width = anchor.getWidth() - leftInset - rightInset - leftMargin - rightMargin;

+            if (firstLine) {

+                if (bullet != null){

+                    if (indent > 0) width -= indent;

+                } else {

+                    if (indent > 0) width -= indent; // first line indentation

+                    else if (indent < 0) { // hanging indentation: the first line start at the left margin

+                        width += leftMargin;

+                    }

+                }

+            }

+        }

+

+        return width;

+    }

+

+    private static class AttributedStringData {

+        Attribute attribute;

+        Object value;

+        int beginIndex, endIndex;

+        AttributedStringData(Attribute attribute, Object value, int beginIndex, int endIndex) {

+            this.attribute = attribute;

+            this.value = value;

+            this.beginIndex = beginIndex;

+            this.endIndex = endIndex;

+        }

+    }

+

+    protected AttributedString getAttributedString(Graphics2D graphics, StringBuilder text){

+        List<AttributedStringData> attList = new ArrayList<AttributedStringData>();

+        if (text == null) text = new StringBuilder();

+

+        DrawFontManager fontHandler = (DrawFontManager)graphics.getRenderingHint(Drawable.FONT_HANDLER);

+

+        for (TextRun run : paragraph){

+            String runText = getRenderableText(run);

+            // skip empty runs

+            if (runText.isEmpty()) continue;

+

+            int beginIndex = text.length();

+            text.append(runText);

+            int endIndex = text.length();

+

+            Color fgColor = run.getFontColor();

+            if (fgColor == null) fgColor = Color.BLACK;

+            attList.add(new AttributedStringData(TextAttribute.FOREGROUND, fgColor, beginIndex, endIndex));

+

+            // user can pass an custom object to convert fonts

+            String fontFamily = run.getFontFamily();

+            @SuppressWarnings("unchecked")

+            Map<String,String> fontMap = (Map<String,String>)graphics.getRenderingHint(Drawable.FONT_MAP);

+            if (fontMap != null && fontMap.containsKey(fontFamily)) {

+                fontFamily = fontMap.get(fontFamily);

+            }

+            if(fontHandler != null) {

+                fontFamily = fontHandler.getRendererableFont(fontFamily, run.getPitchAndFamily());

+            }

+            if (fontFamily == null) {

+                fontFamily = paragraph.getDefaultFontFamily();

+            }

+            attList.add(new AttributedStringData(TextAttribute.FAMILY, fontFamily, beginIndex, endIndex));

+

+            Double fontSz = run.getFontSize();

+            if (fontSz == null) fontSz = paragraph.getDefaultFontSize();

+            attList.add(new AttributedStringData(TextAttribute.SIZE, fontSz.floatValue(), beginIndex, endIndex));

+

+            if(run.isBold()) {

+                attList.add(new AttributedStringData(TextAttribute.WEIGHT, TextAttribute.WEIGHT_BOLD, beginIndex, endIndex));

+            }

+            if(run.isItalic()) {

+                attList.add(new AttributedStringData(TextAttribute.POSTURE, TextAttribute.POSTURE_OBLIQUE, beginIndex, endIndex));

+            }

+            if(run.isUnderlined()) {

+                attList.add(new AttributedStringData(TextAttribute.UNDERLINE, TextAttribute.UNDERLINE_ON, beginIndex, endIndex));

+                attList.add(new AttributedStringData(TextAttribute.INPUT_METHOD_UNDERLINE, TextAttribute.UNDERLINE_LOW_TWO_PIXEL, beginIndex, endIndex));

+            }

+            if(run.isStrikethrough()) {

+                attList.add(new AttributedStringData(TextAttribute.STRIKETHROUGH, TextAttribute.STRIKETHROUGH_ON, beginIndex, endIndex));

+            }

+            if(run.isSubscript()) {

+                attList.add(new AttributedStringData(TextAttribute.SUPERSCRIPT, TextAttribute.SUPERSCRIPT_SUB, beginIndex, endIndex));

+            }

+            if(run.isSuperscript()) {

+                attList.add(new AttributedStringData(TextAttribute.SUPERSCRIPT, TextAttribute.SUPERSCRIPT_SUPER, beginIndex, endIndex));

+            }

+        }

+

+        // ensure that the paragraph contains at least one character

+        // We need this trick to correctly measure text

+        if (text.length() == 0) {

+            Double fontSz = paragraph.getDefaultFontSize();

+            text.append(" ");

+            attList.add(new AttributedStringData(TextAttribute.SIZE, fontSz.floatValue(), 0, 1));

+        }

+

+        AttributedString string = new AttributedString(text.toString());

+        for (AttributedStringData asd : attList) {

+            string.addAttribute(asd.attribute, asd.value, asd.beginIndex, asd.endIndex);

+        }

+

+        return string;

+    }

+

+

+}

diff --git a/src/java/org/apache/poi/sl/draw/DrawTextShape.java b/src/java/org/apache/poi/sl/draw/DrawTextShape.java
new file mode 100644
index 0000000..5862ac5
--- /dev/null
+++ b/src/java/org/apache/poi/sl/draw/DrawTextShape.java
@@ -0,0 +1,179 @@
+/* ====================================================================

+   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;

+

+import java.awt.Graphics2D;

+import java.awt.geom.AffineTransform;

+import java.awt.geom.Rectangle2D;

+import java.awt.image.BufferedImage;

+import java.util.*;

+

+import org.apache.poi.sl.usermodel.*;

+import org.apache.poi.sl.usermodel.TextParagraph.BulletStyle;

+import org.apache.poi.util.JvmBugs;

+

+public class DrawTextShape<T extends TextShape<? extends TextParagraph<? extends TextRun>>> extends DrawSimpleShape<T> {

+

+    public DrawTextShape(T shape) {

+        super(shape);

+    }

+

+    @Override

+    public void drawContent(Graphics2D graphics) {

+        Rectangle2D anchor = DrawShape.getAnchor(graphics, shape);

+        Insets2D insets = shape.getInsets();

+        double x = anchor.getX() + insets.left;

+        double y = anchor.getY();

+

+        // remember the initial transform

+        AffineTransform tx = graphics.getTransform();

+

+        // Transform of text in flipped shapes is special.

+        // At this point the flip and rotation transform is already applied

+        // (see DrawShape#applyTransform ), but we need to restore it to avoid painting "upside down".

+        // See Bugzilla 54210.

+

+        if(shape.getFlipVertical()){

+            graphics.translate(anchor.getX(), anchor.getY() + anchor.getHeight());

+            graphics.scale(1, -1);

+            graphics.translate(-anchor.getX(), -anchor.getY());

+

+            // text in vertically flipped shapes is rotated by 180 degrees

+            double centerX = anchor.getX() + anchor.getWidth()/2;

+            double centerY = anchor.getY() + anchor.getHeight()/2;

+            graphics.translate(centerX, centerY);

+            graphics.rotate(Math.toRadians(180));

+            graphics.translate(-centerX, -centerY);

+        }

+

+        // Horizontal flipping applies only to shape outline and not to the text in the shape.

+        // Applying flip second time restores the original not-flipped transform

+        if(shape.getFlipHorizontal()){

+            graphics.translate(anchor.getX() + anchor.getWidth(), anchor.getY());

+            graphics.scale(-1, 1);

+            graphics.translate(-anchor.getX() , -anchor.getY());

+        }

+

+

+        // first dry-run to calculate the total height of the text

+        double textHeight = shape.getTextHeight();

+

+        switch (shape.getVerticalAlignment()){

+            case TOP:

+                y += insets.top;

+                break;

+            case BOTTOM:

+                y += anchor.getHeight() - textHeight - insets.bottom;

+                break;

+            default:

+            case MIDDLE:

+                double delta = anchor.getHeight() - textHeight - insets.top - insets.bottom;

+                y += insets.top + delta/2;

+                break;

+        }

+

+        drawParagraphs(graphics, x, y);

+

+        // restore the transform

+        graphics.setTransform(tx);

+    }

+

+    /**

+     * paint the paragraphs starting from top left (x,y)

+     *

+     * @return  the vertical advance, i.e. the cumulative space occupied by the text

+     */

+    public double drawParagraphs(Graphics2D graphics, double x, double y) {

+        DrawFactory fact = DrawFactory.getInstance(graphics);

+        Insets2D shapePadding = shape.getInsets();

+

+        double y0 = y;

+        Iterator<? extends TextParagraph<? extends TextRun>> paragraphs = shape.iterator();

+        

+        boolean isFirstLine = true;

+        for (int autoNbrIdx=0; paragraphs.hasNext(); autoNbrIdx++){

+            TextParagraph<? extends TextRun> p = paragraphs.next();

+            DrawTextParagraph<? extends TextRun> dp = fact.getDrawable(p);

+            BulletStyle bs = p.getBulletStyle();

+            if (bs == null || bs.getAutoNumberingScheme() == null) {

+                autoNbrIdx = -1;

+            } else {

+                Integer startAt = bs.getAutoNumberingStartAt();

+                if (startAt == null) startAt = 1;

+                // TODO: handle reset auto number indexes

+                if (startAt > autoNbrIdx) autoNbrIdx = startAt;

+            }

+            dp.setAutoNumberingIdx(autoNbrIdx);

+            dp.breakText(graphics);

+

+            if (!isFirstLine) {

+                // the amount of vertical white space before the paragraph

+                Double spaceBefore = p.getSpaceBefore();

+                if (spaceBefore == null) spaceBefore = 0d;

+                if(spaceBefore > 0) {

+                    // positive value means percentage spacing of the height of the first line, e.g.

+                    // the higher the first line, the bigger the space before the paragraph

+                    y += spaceBefore*0.01*dp.getFirstLineHeight();

+                } else {

+                    // negative value means the absolute spacing in points

+                    y += -spaceBefore;

+                }

+            }

+            isFirstLine = false;

+            

+            dp.setPosition(x, y);

+            dp.draw(graphics);

+            y += dp.getY();

+

+            if (paragraphs.hasNext()) {

+                Double spaceAfter = p.getSpaceAfter();

+                if (spaceAfter == null) spaceAfter = 0d;

+                if(spaceAfter > 0) {

+                    // positive value means percentage spacing of the height of the last line, e.g.

+                    // the higher the last line, the bigger the space after the paragraph

+                    y += spaceAfter*0.01*dp.getLastLineHeight();

+                } else {

+                    // negative value means the absolute spacing in points

+                    y += -spaceAfter;

+                }

+            }

+        }

+        return y - y0;

+    }

+

+    /**

+     * Compute the cumulative height occupied by the text

+     */

+    public double getTextHeight(){

+        // dry-run in a 1x1 image and return the vertical advance

+        BufferedImage img = new BufferedImage(1, 1, BufferedImage.TYPE_INT_RGB);

+        Graphics2D graphics = img.createGraphics();

+        fixFonts(graphics);

+        return drawParagraphs(graphics, 0, 0);

+    }

+    

+    @SuppressWarnings("unchecked")

+    private static 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);        

+    }

+}

diff --git a/src/java/org/apache/poi/sl/draw/Drawable.java b/src/java/org/apache/poi/sl/draw/Drawable.java
new file mode 100644
index 0000000..54128b8
--- /dev/null
+++ b/src/java/org/apache/poi/sl/draw/Drawable.java
@@ -0,0 +1,140 @@
+/* ====================================================================

+   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;

+

+import java.awt.Graphics2D;

+import java.awt.RenderingHints;

+

+import org.apache.poi.util.Internal;

+

+

+public interface Drawable {

+    class DrawableHint extends RenderingHints.Key {

+        protected DrawableHint(int id) {

+            super(id);

+        }

+        

+        public boolean isCompatibleValue(Object val) {

+            return true;

+        }

+        

+        public String toString() {

+            switch (intKey()) {

+            case 1: return "DRAW_FACTORY";

+            case 2: return "GROUP_TRANSFORM";

+            case 3: return "IMAGE_RENDERER";

+            case 4: return "TEXT_RENDERING_MODE";

+            case 5: return "GRADIENT_SHAPE";

+            case 6: return "PRESET_GEOMETRY_CACHE";

+            case 7: return "FONT_HANDLER";

+            case 8: return "FONT_FALLBACK";

+            case 9: return "FONT_MAP";

+            case 10: return "GSAVE";

+            case 11: return "GRESTORE";

+            default: return "UNKNOWN_ID "+intKey();

+            }

+        }

+    }

+    

+    /**

+     * {@link DrawFactory} which will be used to draw objects into this graphics context

+     */

+    DrawableHint DRAW_FACTORY = new DrawableHint(1);

+

+    /**

+     * Key will be internally used to store affine transformation temporarily within group shapes

+     */

+    @Internal

+    DrawableHint GROUP_TRANSFORM = new DrawableHint(2);

+

+    /**

+     * Use a custom image renderer of an instance of {@link ImageRenderer}

+     */

+    DrawableHint IMAGE_RENDERER = new DrawableHint(3);

+

+    /**

+     *  how to render text:

+     *

+     *  {@link #TEXT_AS_CHARACTERS} (default) means to draw via

+     *   {@link java.awt.Graphics2D#drawString(java.text.AttributedCharacterIterator, float, float)}.

+     *   This mode draws text as characters. Use it if the target graphics writes the actual

+     *   character codes instead of glyph outlines (PDFGraphics2D, SVGGraphics2D, etc.)

+     *

+     *   {@link #TEXT_AS_SHAPES} means to render via

+     *   {@link java.awt.font.TextLayout#draw(java.awt.Graphics2D, float, float)}.

+     *   This mode draws glyphs as shapes and provides some advanced capabilities such as

+     *   justification and font substitution. Use it if the target graphics is an image.

+     *

+     */

+    DrawableHint TEXT_RENDERING_MODE = new DrawableHint(4);

+

+    /**

+     * PathGradientPaint needs the shape to be set.

+     * It will be achieved through setting it in the rendering hints

+     */

+    DrawableHint GRADIENT_SHAPE = new DrawableHint(5);

+

+

+    /**

+     * Internal key for caching the preset geometries

+     */

+    DrawableHint PRESET_GEOMETRY_CACHE = new DrawableHint(6);

+    

+    /**

+     * draw text via {@link java.awt.Graphics2D#drawString(java.text.AttributedCharacterIterator, float, float)}

+     */

+    int TEXT_AS_CHARACTERS = 1;

+

+    /**

+     * draw text via {@link java.awt.font.TextLayout#draw(java.awt.Graphics2D, float, float)}

+     */

+    int TEXT_AS_SHAPES = 2;

+

+    /**

+     * Use this object to resolve unknown / missing fonts when rendering slides

+     */

+    DrawableHint FONT_HANDLER = new DrawableHint(7);

+    DrawableHint FONT_FALLBACK = new DrawableHint(8);

+    DrawableHint FONT_MAP = new DrawableHint(9);

+    

+    DrawableHint GSAVE = new DrawableHint(10);

+    DrawableHint GRESTORE = new DrawableHint(11);

+    

+    

+    

+    /**

+     * Apply 2-D transforms before drawing this shape. This includes rotation and flipping.

+     *

+     * @param graphics the graphics whos transform matrix will be modified

+     */

+    void applyTransform(Graphics2D graphics);

+    

+    /**

+     * Draw this shape into the supplied canvas

+     *

+     * @param graphics the graphics to draw into

+     */

+    void draw(Graphics2D graphics);

+    

+    /**

+     * draw any content within this shape (image, text, etc.).

+     *

+     * @param graphics the graphics to draw into

+     */

+    void drawContent(Graphics2D graphics);    

+}

diff --git a/src/java/org/apache/poi/sl/draw/ImageRenderer.java b/src/java/org/apache/poi/sl/draw/ImageRenderer.java
new file mode 100644
index 0000000..87561ae
--- /dev/null
+++ b/src/java/org/apache/poi/sl/draw/ImageRenderer.java
@@ -0,0 +1,192 @@
+/*

+ *  ====================================================================

+ *    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;

+

+import java.awt.*;

+import java.awt.geom.AffineTransform;

+import java.awt.geom.Rectangle2D;

+import java.awt.image.BufferedImage;

+import java.awt.image.RescaleOp;

+import java.io.*;

+

+import javax.imageio.ImageIO;

+

+/**

+ * For now this class renders only images supported by the javax.imageio.ImageIO

+ * framework. Subclasses can override this class to support other formats, for

+ * example, use Apache Batik to render WMF, PICT can be rendered using Apple QuickTime API for Java:

+ *

+ * <pre>

+ * <code>

+ * public class MyImageRendener extends ImageRendener {

+ *     InputStream data;

+ *

+ *     public boolean drawImage(Graphics2D graphics,Rectangle2D anchor,Insets clip) {

+ *         // draw image

+ *       DataInputStream is = new DataInputStream(data);

+ *       org.apache.batik.transcoder.wmf.tosvg.WMFRecordStore wmfStore =

+ *               new org.apache.batik.transcoder.wmf.tosvg.WMFRecordStore();

+ *       try {

+ *           wmfStore.read(is);

+ *       } catch (IOException e){

+ *           return;

+ *       }

+ *

+ *       float scale = (float)anchor.width/wmfStore.getWidthPixels();

+ *

+ *       org.apache.batik.transcoder.wmf.tosvg.WMFPainter painter =

+ *               new org.apache.batik.transcoder.wmf.tosvg.WMFPainter(wmfStore, 0, 0, scale);

+ *       graphics.translate(anchor.x, anchor.y);

+ *       painter.paint(graphics);

+ *     }

+ *

+ *     public void loadImage(InputStream data, String contentType) throws IOException {

+ *         if ("image/wmf".equals(contentType)) {

+ *             this.data = data;

+ *             // use Apache Batik to handle WMF

+ *         } else {

+ *             super.loadImage(data,contentType);

+ *         }

+ *     }

+ * }

+ * </code>

+ * </pre>

+ *

+ * and then pass this class to your instance of java.awt.Graphics2D:

+ *

+ * <pre>

+ * <code>

+ * graphics.setRenderingHint(Drawable.IMAGE_RENDERER, new MyImageRendener());

+ * </code>

+ * </pre>

+ */

+public class ImageRenderer {

+    protected BufferedImage img;

+

+    /**

+     * Load and buffer the image

+     *

+     * @param data the raw image stream

+     * @param contentType the content type

+     */

+    public void loadImage(InputStream data, String contentType) throws IOException {

+        img = convertBufferedImage(ImageIO.read(data));

+    }

+

+    /**

+     * Load and buffer the image

+     *

+     * @param data the raw image stream

+     * @param contentType the content type

+     */

+    public void loadImage(byte data[], String contentType) throws IOException {

+        img = convertBufferedImage(ImageIO.read(new ByteArrayInputStream(data)));

+    }

+

+    protected static BufferedImage convertBufferedImage(BufferedImage img) {

+        BufferedImage bi = new BufferedImage(img.getWidth(), img.getHeight(), BufferedImage.TYPE_INT_ARGB);

+        Graphics g = bi.getGraphics();

+        g.drawImage(img, 0, 0, null);

+        g.dispose();

+        return bi;

+    }

+    

+    

+    /**

+     * @return the buffered image

+     */

+    public BufferedImage getImage() {

+        return img;

+    }

+

+    /**

+     * @return the dimension of the buffered image

+     */

+    public Dimension getDimension() {

+        return (img == null)

+            ? new Dimension(0,0)

+            : new Dimension(img.getWidth(),img.getHeight());

+    }

+

+    /**

+     * @param alpha the alpha [0..1] to be added to the image (possibly already containing an alpha channel)

+     */

+    public void setAlpha(double alpha) {

+        if (img == null) return;

+

+        Dimension dim = getDimension();

+        BufferedImage newImg = new BufferedImage((int)dim.getWidth(), (int)dim.getHeight(), BufferedImage.TYPE_INT_ARGB);

+        Graphics2D g = newImg.createGraphics();

+        RescaleOp op = new RescaleOp(new float[]{1.0f, 1.0f, 1.0f, (float)alpha}, new float[]{0,0,0,0}, null);

+        g.drawImage(img, op, 0, 0);

+        g.dispose();

+        

+        img = newImg;

+    }

+

+

+    /**

+     * Render picture data into the supplied graphics

+     *

+     * @return true if the picture data was successfully rendered

+     */

+    public boolean drawImage(

+        Graphics2D graphics,

+        Rectangle2D anchor) {

+        return drawImage(graphics, anchor, null);

+    }

+

+    /**

+     * Render picture data into the supplied graphics

+     *

+     * @return true if the picture data was successfully rendered

+     */

+    public boolean drawImage(

+        Graphics2D graphics,

+        Rectangle2D anchor,

+        Insets clip) {

+        if (img == null) return false;

+

+        boolean isClipped = true;

+        if (clip == null) {

+            isClipped = false;

+            clip = new Insets(0,0,0,0);

+        }

+

+        int iw = img.getWidth();

+        int ih = img.getHeight();

+

+        

+        double cw = (100000-clip.left-clip.right) / 100000.0;

+        double ch = (100000-clip.top-clip.bottom) / 100000.0;

+        double sx = anchor.getWidth()/(iw*cw);

+        double sy = anchor.getHeight()/(ih*ch);

+        double tx = anchor.getX()-(iw*sx*clip.left/100000.0);

+        double ty = anchor.getY()-(ih*sy*clip.top/100000.0);

+

+        AffineTransform at = new AffineTransform(sx, 0, 0, sy, tx, ty) ;

+

+        Shape clipOld = graphics.getClip();

+        if (isClipped) graphics.clip(anchor.getBounds2D());

+        graphics.drawRenderedImage(img, at);

+        graphics.setClip(clipOld);

+

+        return true;

+    }

+}

diff --git a/src/java/org/apache/poi/sl/draw/PathGradientPaint.java b/src/java/org/apache/poi/sl/draw/PathGradientPaint.java
new file mode 100644
index 0000000..c5ad799
--- /dev/null
+++ b/src/java/org/apache/poi/sl/draw/PathGradientPaint.java
@@ -0,0 +1,186 @@
+/* ====================================================================

+   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;

+

+import java.awt.*;

+import java.awt.MultipleGradientPaint.ColorSpaceType;

+import java.awt.MultipleGradientPaint.CycleMethod;

+import java.awt.geom.*;

+import java.awt.image.*;

+

+class PathGradientPaint implements Paint {

+

+    // http://asserttrue.blogspot.de/2010/01/how-to-iimplement-custom-paint-in-50.html

+    protected final Color colors[];

+    protected final float fractions[];

+    protected final int capStyle;

+    protected final int joinStyle;

+    protected final int transparency;

+

+    

+    public PathGradientPaint(Color colors[], float fractions[]) {

+        this(colors,fractions,BasicStroke.CAP_ROUND,BasicStroke.JOIN_ROUND);

+    }

+    

+    public PathGradientPaint(Color colors[], float fractions[], int capStyle, int joinStyle) {

+        this.colors = colors;

+        this.fractions = fractions;

+        this.capStyle = capStyle;

+        this.joinStyle = joinStyle;

+

+        // determine transparency

+        boolean opaque = true;

+        for (int i = 0; i < colors.length; i++){

+            opaque = opaque && (colors[i].getAlpha() == 0xff);

+        }

+        this.transparency = opaque ? OPAQUE : TRANSLUCENT;

+    }

+    

+    public PaintContext createContext(ColorModel cm,

+        Rectangle deviceBounds,

+        Rectangle2D userBounds,

+        AffineTransform transform,

+        RenderingHints hints) {

+        return new PathGradientContext(cm, deviceBounds, userBounds, transform, hints);

+    }

+    

+    public int getTransparency() {

+        return transparency;

+    }

+

+    class PathGradientContext implements PaintContext {

+        protected final Rectangle deviceBounds;

+        protected final Rectangle2D userBounds;

+        protected final AffineTransform xform;

+        protected final RenderingHints hints;

+

+        /**

+         * for POI: the shape will be only known when the subclasses determines the concrete implementation 

+         * in the draw/-content method, so we need to postpone the setting/creation as long as possible

+         **/

+        protected final Shape shape;

+        protected final PaintContext pCtx;

+        protected final int gradientSteps;

+        WritableRaster raster;

+

+        public PathGradientContext(

+              ColorModel cm

+            , Rectangle deviceBounds

+            , Rectangle2D userBounds

+            , AffineTransform xform

+            , RenderingHints hints

+        ) {

+            shape = (Shape)hints.get(Drawable.GRADIENT_SHAPE);

+            if (shape == null) {

+                throw new IllegalPathStateException("PathGradientPaint needs a shape to be set via the rendering hint PathGradientPaint.GRADIANT_SHAPE.");

+            }

+

+            this.deviceBounds = deviceBounds;

+            this.userBounds = userBounds;

+            this.xform = xform;

+            this.hints = hints;

+

+            gradientSteps = getGradientSteps(shape);

+

+            Point2D start = new Point2D.Double(0, 0);

+            Point2D end = new Point2D.Double(gradientSteps, 0);

+            LinearGradientPaint gradientPaint = new LinearGradientPaint(start, end, fractions, colors, CycleMethod.NO_CYCLE, ColorSpaceType.SRGB, new AffineTransform());

+            

+            Rectangle bounds = new Rectangle(0, 0, gradientSteps, 1);

+            pCtx = gradientPaint.createContext(cm, bounds, bounds, new AffineTransform(), hints);

+        }

+

+        public void dispose() {}

+

+        public ColorModel getColorModel() {

+            return pCtx.getColorModel();

+        }

+

+        public Raster getRaster(int xOffset, int yOffset, int w, int h) {

+            ColorModel cm = getColorModel();

+            if (raster == null) createRaster();

+

+            // TODO: eventually use caching here

+            WritableRaster childRaster = cm.createCompatibleWritableRaster(w, h);

+            Rectangle2D childRect = new Rectangle2D.Double(xOffset, yOffset, w, h);

+            if (!childRect.intersects(deviceBounds)) {

+                // usually doesn't happen ...

+                return childRaster;

+            }

+            

+            Rectangle2D destRect = new Rectangle2D.Double();

+            Rectangle2D.intersect(childRect, deviceBounds, destRect);

+            int dx = (int)(destRect.getX()-deviceBounds.getX());

+            int dy = (int)(destRect.getY()-deviceBounds.getY());

+            int dw = (int)destRect.getWidth();

+            int dh = (int)destRect.getHeight();

+            Object data = raster.getDataElements(dx, dy, dw, dh, null);

+            dx = (int)(destRect.getX()-childRect.getX());

+            dy = (int)(destRect.getY()-childRect.getY());

+            childRaster.setDataElements(dx, dy, dw, dh, data);

+            

+            return childRaster;

+        }

+

+        protected int getGradientSteps(Shape shape) {

+            Rectangle rect = shape.getBounds();

+            int lower = 1;

+            int upper = (int)(Math.max(rect.getWidth(),rect.getHeight())/2.0);

+            while (lower < upper-1) {

+                int mid = lower + (upper - lower) / 2;

+                BasicStroke bs = new BasicStroke(mid, capStyle, joinStyle);

+                Area area = new Area(bs.createStrokedShape(shape));

+                if (area.isSingular()) {

+                    upper = mid;

+                } else {

+                    lower = mid;

+                }

+            }

+            return upper;

+        }

+        

+        

+        

+        protected void createRaster() {

+            ColorModel cm = getColorModel();

+            raster = cm.createCompatibleWritableRaster((int)deviceBounds.getWidth(), (int)deviceBounds.getHeight());

+            BufferedImage img = new BufferedImage(cm, raster, false, null);

+            Graphics2D graphics = img.createGraphics();

+            graphics.setRenderingHints(hints);

+            graphics.translate(-deviceBounds.getX(), -deviceBounds.getY());

+            graphics.transform(xform);

+

+            Raster img2 = pCtx.getRaster(0, 0, gradientSteps, 1);

+            int rgb[] = new int[cm.getNumComponents()];

+

+            for (int i = gradientSteps-1; i>=0; i--) {

+                img2.getPixel(i, 0, rgb);

+                Color c = new Color(rgb[0],rgb[1],rgb[2]);

+                if (rgb.length == 4) {

+                    // it doesn't work to use just a color with transparency ...

+                    graphics.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC, rgb[3]/255.0f));                           

+                }

+                graphics.setStroke(new BasicStroke(i+1, capStyle, joinStyle));

+                graphics.setColor(c);

+                graphics.draw(shape);

+            }

+            

+            graphics.dispose();

+        }

+    }

+}

diff --git a/src/java/org/apache/poi/sl/draw/binding/CTAdjPoint2D.java b/src/java/org/apache/poi/sl/draw/binding/CTAdjPoint2D.java
new file mode 100644
index 0000000..d7fc0ae
--- /dev/null
+++ b/src/java/org/apache/poi/sl/draw/binding/CTAdjPoint2D.java
@@ -0,0 +1,109 @@
+/* ====================================================================

+   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.binding;

+

+import javax.xml.bind.annotation.XmlAccessType;

+import javax.xml.bind.annotation.XmlAccessorType;

+import javax.xml.bind.annotation.XmlAttribute;

+import javax.xml.bind.annotation.XmlType;

+

+

+/**

+ * <p>Java class for CT_AdjPoint2D complex type.

+ * 

+ * <p>The following schema fragment specifies the expected content contained within this class.

+ * 

+ * <pre>

+ * &lt;complexType name="CT_AdjPoint2D">

+ *   &lt;complexContent>

+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">

+ *       &lt;attribute name="x" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_AdjCoordinate" />

+ *       &lt;attribute name="y" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_AdjCoordinate" />

+ *     &lt;/restriction>

+ *   &lt;/complexContent>

+ * &lt;/complexType>

+ * </pre>

+ * 

+ * 

+ */

+@XmlAccessorType(XmlAccessType.FIELD)

+@XmlType(name = "CT_AdjPoint2D", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")

+public class CTAdjPoint2D {

+

+    @XmlAttribute(name = "x", required = true)

+    protected String x;

+    @XmlAttribute(name = "y", required = true)

+    protected String y;

+

+    /**

+     * Gets the value of the x property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link String }

+     *     

+     */

+    public String getX() {

+        return x;

+    }

+

+    /**

+     * Sets the value of the x property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link String }

+     *     

+     */

+    public void setX(String value) {

+        this.x = value;

+    }

+

+    public boolean isSetX() {

+        return (this.x!= null);

+    }

+

+    /**

+     * Gets the value of the y property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link String }

+     *     

+     */

+    public String getY() {

+        return y;

+    }

+

+    /**

+     * Sets the value of the y property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link String }

+     *     

+     */

+    public void setY(String value) {

+        this.y = value;

+    }

+

+    public boolean isSetY() {

+        return (this.y!= null);

+    }

+

+}

diff --git a/src/java/org/apache/poi/sl/draw/binding/CTAdjustHandleList.java b/src/java/org/apache/poi/sl/draw/binding/CTAdjustHandleList.java
new file mode 100644
index 0000000..d684ccc
--- /dev/null
+++ b/src/java/org/apache/poi/sl/draw/binding/CTAdjustHandleList.java
@@ -0,0 +1,99 @@
+/* ====================================================================

+   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.binding;

+

+import java.util.ArrayList;

+import java.util.List;

+import javax.xml.bind.annotation.XmlAccessType;

+import javax.xml.bind.annotation.XmlAccessorType;

+import javax.xml.bind.annotation.XmlElement;

+import javax.xml.bind.annotation.XmlElements;

+import javax.xml.bind.annotation.XmlType;

+

+

+/**

+ * <p>Java class for CT_AdjustHandleList complex type.

+ * 

+ * <p>The following schema fragment specifies the expected content contained within this class.

+ * 

+ * <pre>

+ * &lt;complexType name="CT_AdjustHandleList">

+ *   &lt;complexContent>

+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">

+ *       &lt;choice maxOccurs="unbounded" minOccurs="0">

+ *         &lt;element name="ahXY" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_XYAdjustHandle"/>

+ *         &lt;element name="ahPolar" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_PolarAdjustHandle"/>

+ *       &lt;/choice>

+ *     &lt;/restriction>

+ *   &lt;/complexContent>

+ * &lt;/complexType>

+ * </pre>

+ * 

+ * 

+ */

+@XmlAccessorType(XmlAccessType.FIELD)

+@XmlType(name = "CT_AdjustHandleList", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", propOrder = {

+    "ahXYOrAhPolar"

+})

+public class CTAdjustHandleList {

+

+    @XmlElements({

+        @XmlElement(name = "ahXY", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = CTXYAdjustHandle.class),

+        @XmlElement(name = "ahPolar", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = CTPolarAdjustHandle.class)

+    })

+    protected List<Object> ahXYOrAhPolar;

+

+    /**

+     * Gets the value of the ahXYOrAhPolar property.

+     * 

+     * <p>

+     * This accessor method returns a reference to the live list,

+     * not a snapshot. Therefore any modification you make to the

+     * returned list will be present inside the JAXB object.

+     * This is why there is not a <CODE>set</CODE> method for the ahXYOrAhPolar property.

+     * 

+     * <p>

+     * For example, to add a new item, do as follows:

+     * <pre>

+     *    getAhXYOrAhPolar().add(newItem);

+     * </pre>

+     * 

+     * 

+     * <p>

+     * Objects of the following type(s) are allowed in the list

+     * {@link CTXYAdjustHandle }

+     * {@link CTPolarAdjustHandle }

+     * 

+     * 

+     */

+    public List<Object> getAhXYOrAhPolar() {

+        if (ahXYOrAhPolar == null) {

+            ahXYOrAhPolar = new ArrayList<Object>();

+        }

+        return this.ahXYOrAhPolar;

+    }

+

+    public boolean isSetAhXYOrAhPolar() {

+        return ((this.ahXYOrAhPolar!= null)&&(!this.ahXYOrAhPolar.isEmpty()));

+    }

+

+    public void unsetAhXYOrAhPolar() {

+        this.ahXYOrAhPolar = null;

+    }

+

+}

diff --git a/src/java/org/apache/poi/sl/draw/binding/CTAngle.java b/src/java/org/apache/poi/sl/draw/binding/CTAngle.java
new file mode 100644
index 0000000..2da2373
--- /dev/null
+++ b/src/java/org/apache/poi/sl/draw/binding/CTAngle.java
@@ -0,0 +1,70 @@
+/* ====================================================================

+   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.binding;

+

+import javax.xml.bind.annotation.XmlAccessType;

+import javax.xml.bind.annotation.XmlAccessorType;

+import javax.xml.bind.annotation.XmlAttribute;

+import javax.xml.bind.annotation.XmlType;

+

+

+/**

+ * <p>Java class for CT_Angle complex type.

+ * 

+ * <p>The following schema fragment specifies the expected content contained within this class.

+ * 

+ * <pre>

+ * &lt;complexType name="CT_Angle">

+ *   &lt;complexContent>

+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">

+ *       &lt;attribute name="val" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_Angle" />

+ *     &lt;/restriction>

+ *   &lt;/complexContent>

+ * &lt;/complexType>

+ * </pre>

+ * 

+ * 

+ */

+@XmlAccessorType(XmlAccessType.FIELD)

+@XmlType(name = "CT_Angle", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")

+public class CTAngle {

+

+    @XmlAttribute(name = "val", required = true)

+    protected int val;

+

+    /**

+     * Gets the value of the val property.

+     * 

+     */

+    public int getVal() {

+        return val;

+    }

+

+    /**

+     * Sets the value of the val property.

+     * 

+     */

+    public void setVal(int value) {

+        this.val = value;

+    }

+

+    public boolean isSetVal() {

+        return true;

+    }

+

+}

diff --git a/src/java/org/apache/poi/sl/draw/binding/CTColor.java b/src/java/org/apache/poi/sl/draw/binding/CTColor.java
new file mode 100644
index 0000000..dd3cca3
--- /dev/null
+++ b/src/java/org/apache/poi/sl/draw/binding/CTColor.java
@@ -0,0 +1,237 @@
+/* ====================================================================

+   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.binding;

+

+import javax.xml.bind.annotation.XmlAccessType;

+import javax.xml.bind.annotation.XmlAccessorType;

+import javax.xml.bind.annotation.XmlElement;

+import javax.xml.bind.annotation.XmlType;

+

+

+/**

+ * <p>Java class for CT_Color complex type.

+ * 

+ * <p>The following schema fragment specifies the expected content contained within this class.

+ * 

+ * <pre>

+ * &lt;complexType name="CT_Color">

+ *   &lt;complexContent>

+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">

+ *       &lt;sequence>

+ *         &lt;group ref="{http://schemas.openxmlformats.org/drawingml/2006/main}EG_ColorChoice"/>

+ *       &lt;/sequence>

+ *     &lt;/restriction>

+ *   &lt;/complexContent>

+ * &lt;/complexType>

+ * </pre>

+ * 

+ * 

+ */

+@XmlAccessorType(XmlAccessType.FIELD)

+@XmlType(name = "CT_Color", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", propOrder = {

+    "scrgbClr",

+    "srgbClr",

+    "hslClr",

+    "sysClr",

+    "schemeClr",

+    "prstClr"

+})

+public class CTColor {

+

+    @XmlElement(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")

+    protected CTScRgbColor scrgbClr;

+    @XmlElement(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")

+    protected CTSRgbColor srgbClr;

+    @XmlElement(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")

+    protected CTHslColor hslClr;

+    @XmlElement(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")

+    protected CTSystemColor sysClr;

+    @XmlElement(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")

+    protected CTSchemeColor schemeClr;

+    @XmlElement(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")

+    protected CTPresetColor prstClr;

+

+    /**

+     * Gets the value of the scrgbClr property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link CTScRgbColor }

+     *     

+     */

+    public CTScRgbColor getScrgbClr() {

+        return scrgbClr;

+    }

+

+    /**

+     * Sets the value of the scrgbClr property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link CTScRgbColor }

+     *     

+     */

+    public void setScrgbClr(CTScRgbColor value) {

+        this.scrgbClr = value;

+    }

+

+    public boolean isSetScrgbClr() {

+        return (this.scrgbClr!= null);

+    }

+

+    /**

+     * Gets the value of the srgbClr property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link CTSRgbColor }

+     *     

+     */

+    public CTSRgbColor getSrgbClr() {

+        return srgbClr;

+    }

+

+    /**

+     * Sets the value of the srgbClr property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link CTSRgbColor }

+     *     

+     */

+    public void setSrgbClr(CTSRgbColor value) {

+        this.srgbClr = value;

+    }

+

+    public boolean isSetSrgbClr() {

+        return (this.srgbClr!= null);

+    }

+

+    /**

+     * Gets the value of the hslClr property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link CTHslColor }

+     *     

+     */

+    public CTHslColor getHslClr() {

+        return hslClr;

+    }

+

+    /**

+     * Sets the value of the hslClr property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link CTHslColor }

+     *     

+     */

+    public void setHslClr(CTHslColor value) {

+        this.hslClr = value;

+    }

+

+    public boolean isSetHslClr() {

+        return (this.hslClr!= null);

+    }

+

+    /**

+     * Gets the value of the sysClr property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link CTSystemColor }

+     *     

+     */

+    public CTSystemColor getSysClr() {

+        return sysClr;

+    }

+

+    /**

+     * Sets the value of the sysClr property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link CTSystemColor }

+     *     

+     */

+    public void setSysClr(CTSystemColor value) {

+        this.sysClr = value;

+    }

+

+    public boolean isSetSysClr() {

+        return (this.sysClr!= null);

+    }

+

+    /**

+     * Gets the value of the schemeClr property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link CTSchemeColor }

+     *     

+     */

+    public CTSchemeColor getSchemeClr() {

+        return schemeClr;

+    }

+

+    /**

+     * Sets the value of the schemeClr property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link CTSchemeColor }

+     *     

+     */

+    public void setSchemeClr(CTSchemeColor value) {

+        this.schemeClr = value;

+    }

+

+    public boolean isSetSchemeClr() {

+        return (this.schemeClr!= null);

+    }

+

+    /**

+     * Gets the value of the prstClr property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link CTPresetColor }

+     *     

+     */

+    public CTPresetColor getPrstClr() {

+        return prstClr;

+    }

+

+    /**

+     * Sets the value of the prstClr property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link CTPresetColor }

+     *     

+     */

+    public void setPrstClr(CTPresetColor value) {

+        this.prstClr = value;

+    }

+

+    public boolean isSetPrstClr() {

+        return (this.prstClr!= null);

+    }

+

+}

diff --git a/src/java/org/apache/poi/sl/draw/binding/CTColorMRU.java b/src/java/org/apache/poi/sl/draw/binding/CTColorMRU.java
new file mode 100644
index 0000000..8ec68ba
--- /dev/null
+++ b/src/java/org/apache/poi/sl/draw/binding/CTColorMRU.java
@@ -0,0 +1,106 @@
+/* ====================================================================

+   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.binding;

+

+import java.util.ArrayList;

+import java.util.List;

+import javax.xml.bind.annotation.XmlAccessType;

+import javax.xml.bind.annotation.XmlAccessorType;

+import javax.xml.bind.annotation.XmlElement;

+import javax.xml.bind.annotation.XmlElements;

+import javax.xml.bind.annotation.XmlType;

+

+

+/**

+ * <p>Java class for CT_ColorMRU complex type.

+ * 

+ * <p>The following schema fragment specifies the expected content contained within this class.

+ * 

+ * <pre>

+ * &lt;complexType name="CT_ColorMRU">

+ *   &lt;complexContent>

+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">

+ *       &lt;sequence>

+ *         &lt;group ref="{http://schemas.openxmlformats.org/drawingml/2006/main}EG_ColorChoice" maxOccurs="10" minOccurs="0"/>

+ *       &lt;/sequence>

+ *     &lt;/restriction>

+ *   &lt;/complexContent>

+ * &lt;/complexType>

+ * </pre>

+ * 

+ * 

+ */

+@XmlAccessorType(XmlAccessType.FIELD)

+@XmlType(name = "CT_ColorMRU", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", propOrder = {

+    "egColorChoice"

+})

+public class CTColorMRU {

+

+    @XmlElements({

+        @XmlElement(name = "scrgbClr", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = CTScRgbColor.class),

+        @XmlElement(name = "srgbClr", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = CTSRgbColor.class),

+        @XmlElement(name = "hslClr", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = CTHslColor.class),

+        @XmlElement(name = "sysClr", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = CTSystemColor.class),

+        @XmlElement(name = "schemeClr", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = CTSchemeColor.class),

+        @XmlElement(name = "prstClr", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = CTPresetColor.class)

+    })

+    protected List<Object> egColorChoice;

+

+    /**

+     * Gets the value of the egColorChoice property.

+     * 

+     * <p>

+     * This accessor method returns a reference to the live list,

+     * not a snapshot. Therefore any modification you make to the

+     * returned list will be present inside the JAXB object.

+     * This is why there is not a <CODE>set</CODE> method for the egColorChoice property.

+     * 

+     * <p>

+     * For example, to add a new item, do as follows:

+     * <pre>

+     *    getEGColorChoice().add(newItem);

+     * </pre>

+     * 

+     * 

+     * <p>

+     * Objects of the following type(s) are allowed in the list

+     * {@link CTScRgbColor }

+     * {@link CTSRgbColor }

+     * {@link CTHslColor }

+     * {@link CTSystemColor }

+     * {@link CTSchemeColor }

+     * {@link CTPresetColor }

+     * 

+     * 

+     */

+    public List<Object> getEGColorChoice() {

+        if (egColorChoice == null) {

+            egColorChoice = new ArrayList<Object>();

+        }

+        return this.egColorChoice;

+    }

+

+    public boolean isSetEGColorChoice() {

+        return ((this.egColorChoice!= null)&&(!this.egColorChoice.isEmpty()));

+    }

+

+    public void unsetEGColorChoice() {

+        this.egColorChoice = null;

+    }

+

+}

diff --git a/src/java/org/apache/poi/sl/draw/binding/CTComplementTransform.java b/src/java/org/apache/poi/sl/draw/binding/CTComplementTransform.java
new file mode 100644
index 0000000..dd1a56c
--- /dev/null
+++ b/src/java/org/apache/poi/sl/draw/binding/CTComplementTransform.java
@@ -0,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.binding;

+

+import javax.xml.bind.annotation.XmlAccessType;

+import javax.xml.bind.annotation.XmlAccessorType;

+import javax.xml.bind.annotation.XmlType;

+

+

+/**

+ * <p>Java class for CT_ComplementTransform complex type.

+ * 

+ * <p>The following schema fragment specifies the expected content contained within this class.

+ * 

+ * <pre>

+ * &lt;complexType name="CT_ComplementTransform">

+ *   &lt;complexContent>

+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">

+ *     &lt;/restriction>

+ *   &lt;/complexContent>

+ * &lt;/complexType>

+ * </pre>

+ * 

+ * 

+ */

+@XmlAccessorType(XmlAccessType.FIELD)

+@XmlType(name = "CT_ComplementTransform", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")

+public class CTComplementTransform {

+

+

+}

diff --git a/src/java/org/apache/poi/sl/draw/binding/CTConnection.java b/src/java/org/apache/poi/sl/draw/binding/CTConnection.java
new file mode 100644
index 0000000..f5d5e17
--- /dev/null
+++ b/src/java/org/apache/poi/sl/draw/binding/CTConnection.java
@@ -0,0 +1,95 @@
+/* ====================================================================

+   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.binding;

+

+import javax.xml.bind.annotation.XmlAccessType;

+import javax.xml.bind.annotation.XmlAccessorType;

+import javax.xml.bind.annotation.XmlAttribute;

+import javax.xml.bind.annotation.XmlSchemaType;

+import javax.xml.bind.annotation.XmlType;

+

+

+/**

+ * <p>Java class for CT_Connection complex type.

+ * 

+ * <p>The following schema fragment specifies the expected content contained within this class.

+ * 

+ * <pre>

+ * &lt;complexType name="CT_Connection">

+ *   &lt;complexContent>

+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">

+ *       &lt;attribute name="id" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_DrawingElementId" />

+ *       &lt;attribute name="idx" use="required" type="{http://www.w3.org/2001/XMLSchema}unsignedInt" />

+ *     &lt;/restriction>

+ *   &lt;/complexContent>

+ * &lt;/complexType>

+ * </pre>

+ * 

+ * 

+ */

+@XmlAccessorType(XmlAccessType.FIELD)

+@XmlType(name = "CT_Connection", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")

+public class CTConnection {

+

+    @XmlAttribute(name = "id", required = true)

+    protected long id;

+    @XmlAttribute(name = "idx", required = true)

+    @XmlSchemaType(name = "unsignedInt")

+    protected long idx;

+

+    /**

+     * Gets the value of the id property.

+     * 

+     */

+    public long getId() {

+        return id;

+    }

+

+    /**

+     * Sets the value of the id property.

+     * 

+     */

+    public void setId(long value) {

+        this.id = value;

+    }

+

+    public boolean isSetId() {

+        return true;

+    }

+

+    /**

+     * Gets the value of the idx property.

+     * 

+     */

+    public long getIdx() {

+        return idx;

+    }

+

+    /**

+     * Sets the value of the idx property.

+     * 

+     */

+    public void setIdx(long value) {

+        this.idx = value;

+    }

+

+    public boolean isSetIdx() {

+        return true;

+    }

+

+}

diff --git a/src/java/org/apache/poi/sl/draw/binding/CTConnectionSite.java b/src/java/org/apache/poi/sl/draw/binding/CTConnectionSite.java
new file mode 100644
index 0000000..eae59a0
--- /dev/null
+++ b/src/java/org/apache/poi/sl/draw/binding/CTConnectionSite.java
@@ -0,0 +1,114 @@
+/* ====================================================================

+   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.binding;

+

+import javax.xml.bind.annotation.XmlAccessType;

+import javax.xml.bind.annotation.XmlAccessorType;

+import javax.xml.bind.annotation.XmlAttribute;

+import javax.xml.bind.annotation.XmlElement;

+import javax.xml.bind.annotation.XmlType;

+

+

+/**

+ * <p>Java class for CT_ConnectionSite complex type.

+ * 

+ * <p>The following schema fragment specifies the expected content contained within this class.

+ * 

+ * <pre>

+ * &lt;complexType name="CT_ConnectionSite">

+ *   &lt;complexContent>

+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">

+ *       &lt;sequence>

+ *         &lt;element name="pos" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_AdjPoint2D"/>

+ *       &lt;/sequence>

+ *       &lt;attribute name="ang" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_AdjAngle" />

+ *     &lt;/restriction>

+ *   &lt;/complexContent>

+ * &lt;/complexType>

+ * </pre>

+ * 

+ * 

+ */

+@XmlAccessorType(XmlAccessType.FIELD)

+@XmlType(name = "CT_ConnectionSite", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", propOrder = {

+    "pos"

+})

+public class CTConnectionSite {

+

+    @XmlElement(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", required = true)

+    protected CTAdjPoint2D pos;

+    @XmlAttribute(name = "ang", required = true)

+    protected String ang;

+

+    /**

+     * Gets the value of the pos property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link CTAdjPoint2D }

+     *     

+     */

+    public CTAdjPoint2D getPos() {

+        return pos;

+    }

+

+    /**

+     * Sets the value of the pos property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link CTAdjPoint2D }

+     *     

+     */

+    public void setPos(CTAdjPoint2D value) {

+        this.pos = value;

+    }

+

+    public boolean isSetPos() {

+        return (this.pos!= null);

+    }

+

+    /**

+     * Gets the value of the ang property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link String }

+     *     

+     */

+    public String getAng() {

+        return ang;

+    }

+

+    /**

+     * Sets the value of the ang property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link String }

+     *     

+     */

+    public void setAng(String value) {

+        this.ang = value;

+    }

+

+    public boolean isSetAng() {

+        return (this.ang!= null);

+    }

+

+}

diff --git a/src/java/org/apache/poi/sl/draw/binding/CTConnectionSiteList.java b/src/java/org/apache/poi/sl/draw/binding/CTConnectionSiteList.java
new file mode 100644
index 0000000..a3c9889
--- /dev/null
+++ b/src/java/org/apache/poi/sl/draw/binding/CTConnectionSiteList.java
@@ -0,0 +1,93 @@
+/* ====================================================================

+   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.binding;

+

+import java.util.ArrayList;

+import java.util.List;

+import javax.xml.bind.annotation.XmlAccessType;

+import javax.xml.bind.annotation.XmlAccessorType;

+import javax.xml.bind.annotation.XmlElement;

+import javax.xml.bind.annotation.XmlType;

+

+

+/**

+ * <p>Java class for CT_ConnectionSiteList complex type.

+ * 

+ * <p>The following schema fragment specifies the expected content contained within this class.

+ * 

+ * <pre>

+ * &lt;complexType name="CT_ConnectionSiteList">

+ *   &lt;complexContent>

+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">

+ *       &lt;sequence>

+ *         &lt;element name="cxn" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_ConnectionSite" maxOccurs="unbounded" minOccurs="0"/>

+ *       &lt;/sequence>

+ *     &lt;/restriction>

+ *   &lt;/complexContent>

+ * &lt;/complexType>

+ * </pre>

+ * 

+ * 

+ */

+@XmlAccessorType(XmlAccessType.FIELD)

+@XmlType(name = "CT_ConnectionSiteList", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", propOrder = {

+    "cxn"

+})

+public class CTConnectionSiteList {

+

+    @XmlElement(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")

+    protected List<CTConnectionSite> cxn;

+

+    /**

+     * Gets the value of the cxn property.

+     * 

+     * <p>

+     * This accessor method returns a reference to the live list,

+     * not a snapshot. Therefore any modification you make to the

+     * returned list will be present inside the JAXB object.

+     * This is why there is not a <CODE>set</CODE> method for the cxn property.

+     * 

+     * <p>

+     * For example, to add a new item, do as follows:

+     * <pre>

+     *    getCxn().add(newItem);

+     * </pre>

+     * 

+     * 

+     * <p>

+     * Objects of the following type(s) are allowed in the list

+     * {@link CTConnectionSite }

+     * 

+     * 

+     */

+    public List<CTConnectionSite> getCxn() {

+        if (cxn == null) {

+            cxn = new ArrayList<CTConnectionSite>();

+        }

+        return this.cxn;

+    }

+

+    public boolean isSetCxn() {

+        return ((this.cxn!= null)&&(!this.cxn.isEmpty()));

+    }

+

+    public void unsetCxn() {

+        this.cxn = null;

+    }

+

+}

diff --git a/src/java/org/apache/poi/sl/draw/binding/CTCustomGeometry2D.java b/src/java/org/apache/poi/sl/draw/binding/CTCustomGeometry2D.java
new file mode 100644
index 0000000..d6856ee
--- /dev/null
+++ b/src/java/org/apache/poi/sl/draw/binding/CTCustomGeometry2D.java
@@ -0,0 +1,242 @@
+/* ====================================================================

+   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.binding;

+

+import javax.xml.bind.annotation.XmlAccessType;

+import javax.xml.bind.annotation.XmlAccessorType;

+import javax.xml.bind.annotation.XmlElement;

+import javax.xml.bind.annotation.XmlType;

+

+

+/**

+ * <p>Java class for CT_CustomGeometry2D complex type.

+ * 

+ * <p>The following schema fragment specifies the expected content contained within this class.

+ * 

+ * <pre>

+ * &lt;complexType name="CT_CustomGeometry2D">

+ *   &lt;complexContent>

+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">

+ *       &lt;sequence>

+ *         &lt;element name="avLst" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_GeomGuideList" minOccurs="0"/>

+ *         &lt;element name="gdLst" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_GeomGuideList" minOccurs="0"/>

+ *         &lt;element name="ahLst" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_AdjustHandleList" minOccurs="0"/>

+ *         &lt;element name="cxnLst" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_ConnectionSiteList" minOccurs="0"/>

+ *         &lt;element name="rect" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_GeomRect" minOccurs="0"/>

+ *         &lt;element name="pathLst" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_Path2DList"/>

+ *       &lt;/sequence>

+ *     &lt;/restriction>

+ *   &lt;/complexContent>

+ * &lt;/complexType>

+ * </pre>

+ * 

+ * 

+ */

+@XmlAccessorType(XmlAccessType.FIELD)

+@XmlType(name = "CT_CustomGeometry2D", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", propOrder = {

+    "avLst",

+    "gdLst",

+    "ahLst",

+    "cxnLst",

+    "rect",

+    "pathLst"

+})

+public class CTCustomGeometry2D {

+

+    @XmlElement(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")

+    protected CTGeomGuideList avLst;

+    @XmlElement(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")

+    protected CTGeomGuideList gdLst;

+    @XmlElement(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")

+    protected CTAdjustHandleList ahLst;

+    @XmlElement(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")

+    protected CTConnectionSiteList cxnLst;

+    @XmlElement(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")

+    protected CTGeomRect rect;

+    @XmlElement(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", required = true)

+    protected CTPath2DList pathLst;

+

+    /**

+     * Gets the value of the avLst property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link CTGeomGuideList }

+     *     

+     */

+    public CTGeomGuideList getAvLst() {

+        return avLst;

+    }

+

+    /**

+     * Sets the value of the avLst property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link CTGeomGuideList }

+     *     

+     */

+    public void setAvLst(CTGeomGuideList value) {

+        this.avLst = value;

+    }

+

+    public boolean isSetAvLst() {

+        return (this.avLst!= null);

+    }

+

+    /**

+     * Gets the value of the gdLst property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link CTGeomGuideList }

+     *     

+     */

+    public CTGeomGuideList getGdLst() {

+        return gdLst;

+    }

+

+    /**

+     * Sets the value of the gdLst property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link CTGeomGuideList }

+     *     

+     */

+    public void setGdLst(CTGeomGuideList value) {

+        this.gdLst = value;

+    }

+

+    public boolean isSetGdLst() {

+        return (this.gdLst!= null);

+    }

+

+    /**

+     * Gets the value of the ahLst property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link CTAdjustHandleList }

+     *     

+     */

+    public CTAdjustHandleList getAhLst() {

+        return ahLst;

+    }

+

+    /**

+     * Sets the value of the ahLst property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link CTAdjustHandleList }

+     *     

+     */

+    public void setAhLst(CTAdjustHandleList value) {

+        this.ahLst = value;

+    }

+

+    public boolean isSetAhLst() {

+        return (this.ahLst!= null);

+    }

+

+    /**

+     * Gets the value of the cxnLst property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link CTConnectionSiteList }

+     *     

+     */

+    public CTConnectionSiteList getCxnLst() {

+        return cxnLst;

+    }

+

+    /**

+     * Sets the value of the cxnLst property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link CTConnectionSiteList }

+     *     

+     */

+    public void setCxnLst(CTConnectionSiteList value) {

+        this.cxnLst = value;

+    }

+

+    public boolean isSetCxnLst() {

+        return (this.cxnLst!= null);

+    }

+

+    /**

+     * Gets the value of the rect property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link CTGeomRect }

+     *     

+     */

+    public CTGeomRect getRect() {

+        return rect;

+    }

+

+    /**

+     * Sets the value of the rect property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link CTGeomRect }

+     *     

+     */

+    public void setRect(CTGeomRect value) {

+        this.rect = value;

+    }

+

+    public boolean isSetRect() {

+        return (this.rect!= null);

+    }

+

+    /**

+     * Gets the value of the pathLst property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link CTPath2DList }

+     *     

+     */

+    public CTPath2DList getPathLst() {

+        return pathLst;

+    }

+

+    /**

+     * Sets the value of the pathLst property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link CTPath2DList }

+     *     

+     */

+    public void setPathLst(CTPath2DList value) {

+        this.pathLst = value;

+    }

+

+    public boolean isSetPathLst() {

+        return (this.pathLst!= null);

+    }

+

+}

diff --git a/src/java/org/apache/poi/sl/draw/binding/CTEmbeddedWAVAudioFile.java b/src/java/org/apache/poi/sl/draw/binding/CTEmbeddedWAVAudioFile.java
new file mode 100644
index 0000000..8787125
--- /dev/null
+++ b/src/java/org/apache/poi/sl/draw/binding/CTEmbeddedWAVAudioFile.java
@@ -0,0 +1,152 @@
+/* ====================================================================

+   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.binding;

+

+import javax.xml.bind.annotation.XmlAccessType;

+import javax.xml.bind.annotation.XmlAccessorType;

+import javax.xml.bind.annotation.XmlAttribute;

+import javax.xml.bind.annotation.XmlType;

+

+

+/**

+ * <p>Java class for CT_EmbeddedWAVAudioFile complex type.

+ * 

+ * <p>The following schema fragment specifies the expected content contained within this class.

+ * 

+ * <pre>

+ * &lt;complexType name="CT_EmbeddedWAVAudioFile">

+ *   &lt;complexContent>

+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">

+ *       &lt;attribute ref="{http://schemas.openxmlformats.org/officeDocument/2006/relationships}embed use="required""/>

+ *       &lt;attribute name="name" type="{http://www.w3.org/2001/XMLSchema}string" default="" />

+ *       &lt;attribute name="builtIn" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />

+ *     &lt;/restriction>

+ *   &lt;/complexContent>

+ * &lt;/complexType>

+ * </pre>

+ * 

+ * 

+ */

+@XmlAccessorType(XmlAccessType.FIELD)

+@XmlType(name = "CT_EmbeddedWAVAudioFile", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")

+public class CTEmbeddedWAVAudioFile {

+

+    @XmlAttribute(name = "embed", namespace = "http://schemas.openxmlformats.org/officeDocument/2006/relationships", required = true)

+    protected String embed;

+    @XmlAttribute(name = "name")

+    protected String name;

+    @XmlAttribute(name = "builtIn")

+    protected Boolean builtIn;

+

+    /**

+     * Embedded Audio File Relationship ID

+     * 

+     * @return

+     *     possible object is

+     *     {@link String }

+     *     

+     */

+    public String getEmbed() {

+        return embed;

+    }

+

+    /**

+     * Sets the value of the embed property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link String }

+     *     

+     */

+    public void setEmbed(String value) {

+        this.embed = value;

+    }

+

+    public boolean isSetEmbed() {

+        return (this.embed!= null);

+    }

+

+    /**

+     * Gets the value of the name property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link String }

+     *     

+     */

+    public String getName() {

+        if (name == null) {

+            return "";

+        } else {

+            return name;

+        }

+    }

+

+    /**

+     * Sets the value of the name property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link String }

+     *     

+     */

+    public void setName(String value) {

+        this.name = value;

+    }

+

+    public boolean isSetName() {

+        return (this.name!= null);

+    }

+

+    /**

+     * Gets the value of the builtIn property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link Boolean }

+     *     

+     */

+    public boolean isBuiltIn() {

+        if (builtIn == null) {

+            return false;

+        } else {

+            return builtIn;

+        }

+    }

+

+    /**

+     * Sets the value of the builtIn property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link Boolean }

+     *     

+     */

+    public void setBuiltIn(boolean value) {

+        this.builtIn = value;

+    }

+

+    public boolean isSetBuiltIn() {

+        return (this.builtIn!= null);

+    }

+

+    public void unsetBuiltIn() {

+        this.builtIn = null;

+    }

+

+}

diff --git a/src/java/org/apache/poi/sl/draw/binding/CTFixedPercentage.java b/src/java/org/apache/poi/sl/draw/binding/CTFixedPercentage.java
new file mode 100644
index 0000000..d1ed283
--- /dev/null
+++ b/src/java/org/apache/poi/sl/draw/binding/CTFixedPercentage.java
@@ -0,0 +1,70 @@
+/* ====================================================================

+   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.binding;

+

+import javax.xml.bind.annotation.XmlAccessType;

+import javax.xml.bind.annotation.XmlAccessorType;

+import javax.xml.bind.annotation.XmlAttribute;

+import javax.xml.bind.annotation.XmlType;

+

+

+/**

+ * <p>Java class for CT_FixedPercentage complex type.

+ * 

+ * <p>The following schema fragment specifies the expected content contained within this class.

+ * 

+ * <pre>

+ * &lt;complexType name="CT_FixedPercentage">

+ *   &lt;complexContent>

+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">

+ *       &lt;attribute name="val" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_FixedPercentage" />

+ *     &lt;/restriction>

+ *   &lt;/complexContent>

+ * &lt;/complexType>

+ * </pre>

+ * 

+ * 

+ */

+@XmlAccessorType(XmlAccessType.FIELD)

+@XmlType(name = "CT_FixedPercentage", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")

+public class CTFixedPercentage {

+

+    @XmlAttribute(name = "val", required = true)

+    protected int val;

+

+    /**

+     * Gets the value of the val property.

+     * 

+     */

+    public int getVal() {

+        return val;

+    }

+

+    /**

+     * Sets the value of the val property.

+     * 

+     */

+    public void setVal(int value) {

+        this.val = value;

+    }

+

+    public boolean isSetVal() {

+        return true;

+    }

+

+}

diff --git a/src/java/org/apache/poi/sl/draw/binding/CTGammaTransform.java b/src/java/org/apache/poi/sl/draw/binding/CTGammaTransform.java
new file mode 100644
index 0000000..7cf6cb1
--- /dev/null
+++ b/src/java/org/apache/poi/sl/draw/binding/CTGammaTransform.java
@@ -0,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.binding;

+

+import javax.xml.bind.annotation.XmlAccessType;

+import javax.xml.bind.annotation.XmlAccessorType;

+import javax.xml.bind.annotation.XmlType;

+

+

+/**

+ * <p>Java class for CT_GammaTransform complex type.

+ * 

+ * <p>The following schema fragment specifies the expected content contained within this class.

+ * 

+ * <pre>

+ * &lt;complexType name="CT_GammaTransform">

+ *   &lt;complexContent>

+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">

+ *     &lt;/restriction>

+ *   &lt;/complexContent>

+ * &lt;/complexType>

+ * </pre>

+ * 

+ * 

+ */

+@XmlAccessorType(XmlAccessType.FIELD)

+@XmlType(name = "CT_GammaTransform", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")

+public class CTGammaTransform {

+

+

+}

diff --git a/src/java/org/apache/poi/sl/draw/binding/CTGeomGuide.java b/src/java/org/apache/poi/sl/draw/binding/CTGeomGuide.java
new file mode 100644
index 0000000..5622e4c
--- /dev/null
+++ b/src/java/org/apache/poi/sl/draw/binding/CTGeomGuide.java
@@ -0,0 +1,112 @@
+/* ====================================================================

+   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.binding;

+

+import javax.xml.bind.annotation.XmlAccessType;

+import javax.xml.bind.annotation.XmlAccessorType;

+import javax.xml.bind.annotation.XmlAttribute;

+import javax.xml.bind.annotation.XmlType;

+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;

+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;

+

+

+/**

+ * <p>Java class for CT_GeomGuide complex type.

+ * 

+ * <p>The following schema fragment specifies the expected content contained within this class.

+ * 

+ * <pre>

+ * &lt;complexType name="CT_GeomGuide">

+ *   &lt;complexContent>

+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">

+ *       &lt;attribute name="name" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_GeomGuideName" />

+ *       &lt;attribute name="fmla" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_GeomGuideFormula" />

+ *     &lt;/restriction>

+ *   &lt;/complexContent>

+ * &lt;/complexType>

+ * </pre>

+ * 

+ * 

+ */

+@XmlAccessorType(XmlAccessType.FIELD)

+@XmlType(name = "CT_GeomGuide", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")

+public class CTGeomGuide {

+

+    @XmlAttribute(name = "name", required = true)

+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)

+    protected String name;

+    @XmlAttribute(name = "fmla", required = true)

+    protected String fmla;

+

+    /**

+     * Gets the value of the name property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link String }

+     *     

+     */

+    public String getName() {

+        return name;

+    }

+

+    /**

+     * Sets the value of the name property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link String }

+     *     

+     */

+    public void setName(String value) {

+        this.name = value;

+    }

+

+    public boolean isSetName() {

+        return (this.name!= null);

+    }

+

+    /**

+     * Gets the value of the fmla property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link String }

+     *     

+     */

+    public String getFmla() {

+        return fmla;

+    }

+

+    /**

+     * Sets the value of the fmla property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link String }

+     *     

+     */

+    public void setFmla(String value) {

+        this.fmla = value;

+    }

+

+    public boolean isSetFmla() {

+        return (this.fmla!= null);

+    }

+

+}

diff --git a/src/java/org/apache/poi/sl/draw/binding/CTGeomGuideList.java b/src/java/org/apache/poi/sl/draw/binding/CTGeomGuideList.java
new file mode 100644
index 0000000..4490933
--- /dev/null
+++ b/src/java/org/apache/poi/sl/draw/binding/CTGeomGuideList.java
@@ -0,0 +1,93 @@
+/* ====================================================================

+   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.binding;

+

+import java.util.ArrayList;

+import java.util.List;

+import javax.xml.bind.annotation.XmlAccessType;

+import javax.xml.bind.annotation.XmlAccessorType;

+import javax.xml.bind.annotation.XmlElement;

+import javax.xml.bind.annotation.XmlType;

+

+

+/**

+ * <p>Java class for CT_GeomGuideList complex type.

+ * 

+ * <p>The following schema fragment specifies the expected content contained within this class.

+ * 

+ * <pre>

+ * &lt;complexType name="CT_GeomGuideList">

+ *   &lt;complexContent>

+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">

+ *       &lt;sequence>

+ *         &lt;element name="gd" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_GeomGuide" maxOccurs="unbounded" minOccurs="0"/>

+ *       &lt;/sequence>

+ *     &lt;/restriction>

+ *   &lt;/complexContent>

+ * &lt;/complexType>

+ * </pre>

+ * 

+ * 

+ */

+@XmlAccessorType(XmlAccessType.FIELD)

+@XmlType(name = "CT_GeomGuideList", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", propOrder = {

+    "gd"

+})

+public class CTGeomGuideList {

+

+    @XmlElement(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")

+    protected List<CTGeomGuide> gd;

+

+    /**

+     * Gets the value of the gd property.

+     * 

+     * <p>

+     * This accessor method returns a reference to the live list,

+     * not a snapshot. Therefore any modification you make to the

+     * returned list will be present inside the JAXB object.

+     * This is why there is not a <CODE>set</CODE> method for the gd property.

+     * 

+     * <p>

+     * For example, to add a new item, do as follows:

+     * <pre>

+     *    getGd().add(newItem);

+     * </pre>

+     * 

+     * 

+     * <p>

+     * Objects of the following type(s) are allowed in the list

+     * {@link CTGeomGuide }

+     * 

+     * 

+     */

+    public List<CTGeomGuide> getGd() {

+        if (gd == null) {

+            gd = new ArrayList<CTGeomGuide>();

+        }

+        return this.gd;

+    }

+

+    public boolean isSetGd() {

+        return ((this.gd!= null)&&(!this.gd.isEmpty()));

+    }

+

+    public void unsetGd() {

+        this.gd = null;

+    }

+

+}

diff --git a/src/java/org/apache/poi/sl/draw/binding/CTGeomRect.java b/src/java/org/apache/poi/sl/draw/binding/CTGeomRect.java
new file mode 100644
index 0000000..3198f04
--- /dev/null
+++ b/src/java/org/apache/poi/sl/draw/binding/CTGeomRect.java
@@ -0,0 +1,171 @@
+/* ====================================================================

+   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.binding;

+

+import javax.xml.bind.annotation.XmlAccessType;

+import javax.xml.bind.annotation.XmlAccessorType;

+import javax.xml.bind.annotation.XmlAttribute;

+import javax.xml.bind.annotation.XmlType;

+

+

+/**

+ * <p>Java class for CT_GeomRect complex type.

+ * 

+ * <p>The following schema fragment specifies the expected content contained within this class.

+ * 

+ * <pre>

+ * &lt;complexType name="CT_GeomRect">

+ *   &lt;complexContent>

+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">

+ *       &lt;attribute name="l" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_AdjCoordinate" />

+ *       &lt;attribute name="t" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_AdjCoordinate" />

+ *       &lt;attribute name="r" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_AdjCoordinate" />

+ *       &lt;attribute name="b" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_AdjCoordinate" />

+ *     &lt;/restriction>

+ *   &lt;/complexContent>

+ * &lt;/complexType>

+ * </pre>

+ * 

+ * 

+ */

+@XmlAccessorType(XmlAccessType.FIELD)

+@XmlType(name = "CT_GeomRect", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")

+public class CTGeomRect {

+

+    @XmlAttribute(name = "l", required = true)

+    protected String l;

+    @XmlAttribute(name = "t", required = true)

+    protected String t;

+    @XmlAttribute(name = "r", required = true)

+    protected String r;

+    @XmlAttribute(name = "b", required = true)

+    protected String b;

+

+    /**

+     * Gets the value of the l property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link String }

+     *     

+     */

+    public String getL() {

+        return l;

+    }

+

+    /**

+     * Sets the value of the l property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link String }

+     *     

+     */

+    public void setL(String value) {

+        this.l = value;

+    }

+

+    public boolean isSetL() {

+        return (this.l!= null);

+    }

+

+    /**

+     * Gets the value of the t property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link String }

+     *     

+     */

+    public String getT() {

+        return t;

+    }

+

+    /**

+     * Sets the value of the t property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link String }

+     *     

+     */

+    public void setT(String value) {

+        this.t = value;

+    }

+

+    public boolean isSetT() {

+        return (this.t!= null);

+    }

+

+    /**

+     * Gets the value of the r property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link String }

+     *     

+     */

+    public String getR() {

+        return r;

+    }

+

+    /**

+     * Sets the value of the r property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link String }

+     *     

+     */

+    public void setR(String value) {

+        this.r = value;

+    }

+

+    public boolean isSetR() {

+        return (this.r!= null);

+    }

+

+    /**

+     * Gets the value of the b property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link String }

+     *     

+     */

+    public String getB() {

+        return b;

+    }

+

+    /**

+     * Sets the value of the b property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link String }

+     *     

+     */

+    public void setB(String value) {

+        this.b = value;

+    }

+

+    public boolean isSetB() {

+        return (this.b!= null);

+    }

+

+}

diff --git a/src/java/org/apache/poi/sl/draw/binding/CTGrayscaleTransform.java b/src/java/org/apache/poi/sl/draw/binding/CTGrayscaleTransform.java
new file mode 100644
index 0000000..643db02
--- /dev/null
+++ b/src/java/org/apache/poi/sl/draw/binding/CTGrayscaleTransform.java
@@ -0,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.binding;

+

+import javax.xml.bind.annotation.XmlAccessType;

+import javax.xml.bind.annotation.XmlAccessorType;

+import javax.xml.bind.annotation.XmlType;

+

+

+/**

+ * <p>Java class for CT_GrayscaleTransform complex type.

+ * 

+ * <p>The following schema fragment specifies the expected content contained within this class.

+ * 

+ * <pre>

+ * &lt;complexType name="CT_GrayscaleTransform">

+ *   &lt;complexContent>

+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">

+ *     &lt;/restriction>

+ *   &lt;/complexContent>

+ * &lt;/complexType>

+ * </pre>

+ * 

+ * 

+ */

+@XmlAccessorType(XmlAccessType.FIELD)

+@XmlType(name = "CT_GrayscaleTransform", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")

+public class CTGrayscaleTransform {

+

+

+}

diff --git a/src/java/org/apache/poi/sl/draw/binding/CTGroupTransform2D.java b/src/java/org/apache/poi/sl/draw/binding/CTGroupTransform2D.java
new file mode 100644
index 0000000..f06e1d8
--- /dev/null
+++ b/src/java/org/apache/poi/sl/draw/binding/CTGroupTransform2D.java
@@ -0,0 +1,296 @@
+/* ====================================================================

+   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.binding;

+

+import javax.xml.bind.annotation.XmlAccessType;

+import javax.xml.bind.annotation.XmlAccessorType;

+import javax.xml.bind.annotation.XmlAttribute;

+import javax.xml.bind.annotation.XmlElement;

+import javax.xml.bind.annotation.XmlType;

+

+

+/**

+ * <p>Java class for CT_GroupTransform2D complex type.

+ * 

+ * <p>The following schema fragment specifies the expected content contained within this class.

+ * 

+ * <pre>

+ * &lt;complexType name="CT_GroupTransform2D">

+ *   &lt;complexContent>

+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">

+ *       &lt;sequence>

+ *         &lt;element name="off" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_Point2D" minOccurs="0"/>

+ *         &lt;element name="ext" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_PositiveSize2D" minOccurs="0"/>

+ *         &lt;element name="chOff" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_Point2D" minOccurs="0"/>

+ *         &lt;element name="chExt" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_PositiveSize2D" minOccurs="0"/>

+ *       &lt;/sequence>

+ *       &lt;attribute name="rot" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_Angle" default="0" />

+ *       &lt;attribute name="flipH" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />

+ *       &lt;attribute name="flipV" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />

+ *     &lt;/restriction>

+ *   &lt;/complexContent>

+ * &lt;/complexType>

+ * </pre>

+ * 

+ * 

+ */

+@XmlAccessorType(XmlAccessType.FIELD)

+@XmlType(name = "CT_GroupTransform2D", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", propOrder = {

+    "off",

+    "ext",

+    "chOff",

+    "chExt"

+})

+public class CTGroupTransform2D {

+

+    @XmlElement(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")

+    protected CTPoint2D off;

+    @XmlElement(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")

+    protected CTPositiveSize2D ext;

+    @XmlElement(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")

+    protected CTPoint2D chOff;

+    @XmlElement(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")

+    protected CTPositiveSize2D chExt;

+    @XmlAttribute(name = "rot")

+    protected Integer rot;

+    @XmlAttribute(name = "flipH")

+    protected Boolean flipH;

+    @XmlAttribute(name = "flipV")

+    protected Boolean flipV;

+

+    /**

+     * Gets the value of the off property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link CTPoint2D }

+     *     

+     */

+    public CTPoint2D getOff() {

+        return off;

+    }

+

+    /**

+     * Sets the value of the off property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link CTPoint2D }

+     *     

+     */

+    public void setOff(CTPoint2D value) {

+        this.off = value;

+    }

+

+    public boolean isSetOff() {

+        return (this.off!= null);

+    }

+

+    /**

+     * Gets the value of the ext property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link CTPositiveSize2D }

+     *     

+     */

+    public CTPositiveSize2D getExt() {

+        return ext;

+    }

+

+    /**

+     * Sets the value of the ext property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link CTPositiveSize2D }

+     *     

+     */

+    public void setExt(CTPositiveSize2D value) {

+        this.ext = value;

+    }

+

+    public boolean isSetExt() {

+        return (this.ext!= null);

+    }

+

+    /**

+     * Gets the value of the chOff property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link CTPoint2D }

+     *     

+     */

+    public CTPoint2D getChOff() {

+        return chOff;

+    }

+

+    /**

+     * Sets the value of the chOff property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link CTPoint2D }

+     *     

+     */

+    public void setChOff(CTPoint2D value) {

+        this.chOff = value;

+    }

+

+    public boolean isSetChOff() {

+        return (this.chOff!= null);

+    }

+

+    /**

+     * Gets the value of the chExt property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link CTPositiveSize2D }

+     *     

+     */

+    public CTPositiveSize2D getChExt() {

+        return chExt;

+    }

+

+    /**

+     * Sets the value of the chExt property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link CTPositiveSize2D }

+     *     

+     */

+    public void setChExt(CTPositiveSize2D value) {

+        this.chExt = value;

+    }

+

+    public boolean isSetChExt() {

+        return (this.chExt!= null);

+    }

+

+    /**

+     * Gets the value of the rot property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link Integer }

+     *     

+     */

+    public int getRot() {

+        if (rot == null) {

+            return  0;

+        } else {

+            return rot;

+        }

+    }

+

+    /**

+     * Sets the value of the rot property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link Integer }

+     *     

+     */

+    public void setRot(int value) {

+        this.rot = value;

+    }

+

+    public boolean isSetRot() {

+        return (this.rot!= null);

+    }

+

+    public void unsetRot() {

+        this.rot = null;

+    }

+

+    /**

+     * Gets the value of the flipH property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link Boolean }

+     *     

+     */

+    public boolean isFlipH() {

+        if (flipH == null) {

+            return false;

+        } else {

+            return flipH;

+        }

+    }

+

+    /**

+     * Sets the value of the flipH property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link Boolean }

+     *     

+     */

+    public void setFlipH(boolean value) {

+        this.flipH = value;

+    }

+

+    public boolean isSetFlipH() {

+        return (this.flipH!= null);

+    }

+

+    public void unsetFlipH() {

+        this.flipH = null;

+    }

+

+    /**

+     * Gets the value of the flipV property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link Boolean }

+     *     

+     */

+    public boolean isFlipV() {

+        if (flipV == null) {

+            return false;

+        } else {

+            return flipV;

+        }

+    }

+

+    /**

+     * Sets the value of the flipV property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link Boolean }

+     *     

+     */

+    public void setFlipV(boolean value) {

+        this.flipV = value;

+    }

+

+    public boolean isSetFlipV() {

+        return (this.flipV!= null);

+    }

+

+    public void unsetFlipV() {

+        this.flipV = null;

+    }

+

+}

diff --git a/src/java/org/apache/poi/sl/draw/binding/CTHslColor.java b/src/java/org/apache/poi/sl/draw/binding/CTHslColor.java
new file mode 100644
index 0000000..376d423
--- /dev/null
+++ b/src/java/org/apache/poi/sl/draw/binding/CTHslColor.java
@@ -0,0 +1,221 @@
+/* ====================================================================

+   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.binding;

+

+import java.util.ArrayList;

+import java.util.List;

+import javax.xml.bind.JAXBElement;

+import javax.xml.bind.annotation.XmlAccessType;

+import javax.xml.bind.annotation.XmlAccessorType;

+import javax.xml.bind.annotation.XmlAttribute;

+import javax.xml.bind.annotation.XmlElementRef;

+import javax.xml.bind.annotation.XmlElementRefs;

+import javax.xml.bind.annotation.XmlType;

+

+

+/**

+ * <p>Java class for CT_HslColor complex type.

+ * 

+ * <p>The following schema fragment specifies the expected content contained within this class.

+ * 

+ * <pre>

+ * &lt;complexType name="CT_HslColor">

+ *   &lt;complexContent>

+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">

+ *       &lt;sequence>

+ *         &lt;group ref="{http://schemas.openxmlformats.org/drawingml/2006/main}EG_ColorTransform" maxOccurs="unbounded" minOccurs="0"/>

+ *       &lt;/sequence>

+ *       &lt;attribute name="hue" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_PositiveFixedAngle" />

+ *       &lt;attribute name="sat" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_Percentage" />

+ *       &lt;attribute name="lum" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_Percentage" />

+ *     &lt;/restriction>

+ *   &lt;/complexContent>

+ * &lt;/complexType>

+ * </pre>

+ * 

+ * 

+ */

+@XmlAccessorType(XmlAccessType.FIELD)

+@XmlType(name = "CT_HslColor", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", propOrder = {

+    "egColorTransform"

+})

+public class CTHslColor {

+

+    @XmlElementRefs({

+        @XmlElementRef(name = "red", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "greenMod", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "gamma", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "hueMod", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "hueOff", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "invGamma", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "gray", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "comp", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "lumMod", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "green", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "inv", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "satMod", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "sat", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "alphaOff", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "greenOff", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "redOff", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "blueOff", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "alphaMod", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "lumOff", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "blueMod", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "satOff", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "lum", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "alpha", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "tint", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "blue", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "redMod", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "hue", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "shade", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false)

+    })

+    protected List<JAXBElement<?>> egColorTransform;

+    @XmlAttribute(name = "hue", required = true)

+    protected int hue;

+    @XmlAttribute(name = "sat", required = true)

+    protected int sat;

+    @XmlAttribute(name = "lum", required = true)

+    protected int lum;

+

+    /**

+     * Gets the value of the egColorTransform property.

+     * 

+     * <p>

+     * This accessor method returns a reference to the live list,

+     * not a snapshot. Therefore any modification you make to the

+     * returned list will be present inside the JAXB object.

+     * This is why there is not a <CODE>set</CODE> method for the egColorTransform property.

+     * 

+     * <p>

+     * For example, to add a new item, do as follows:

+     * <pre>

+     *    getEGColorTransform().add(newItem);

+     * </pre>

+     * 

+     * 

+     * <p>

+     * Objects of the following type(s) are allowed in the list

+     * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTGammaTransform }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPositivePercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTAngle }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTInverseGammaTransform }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTGrayscaleTransform }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTComplementTransform }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTInverseTransform }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTFixedPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPositivePercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPositiveFixedPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPositiveFixedPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPositiveFixedAngle }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPositiveFixedPercentage }{@code >}

+     * 

+     * 

+     */

+    public List<JAXBElement<?>> getEGColorTransform() {

+        if (egColorTransform == null) {

+            egColorTransform = new ArrayList<JAXBElement<?>>();

+        }

+        return this.egColorTransform;

+    }

+

+    public boolean isSetEGColorTransform() {

+        return ((this.egColorTransform!= null)&&(!this.egColorTransform.isEmpty()));

+    }

+

+    public void unsetEGColorTransform() {

+        this.egColorTransform = null;

+    }

+

+    /**

+     * Gets the value of the hue property.

+     * 

+     */

+    public int getHue() {

+        return hue;

+    }

+

+    /**

+     * Sets the value of the hue property.

+     * 

+     */

+    public void setHue(int value) {

+        this.hue = value;

+    }

+

+    public boolean isSetHue() {

+        return true;

+    }

+

+    /**

+     * Gets the value of the sat property.

+     * 

+     */

+    public int getSat() {

+        return sat;

+    }

+

+    /**

+     * Sets the value of the sat property.

+     * 

+     */

+    public void setSat(int value) {

+        this.sat = value;

+    }

+

+    public boolean isSetSat() {

+        return true;

+    }

+

+    /**

+     * Gets the value of the lum property.

+     * 

+     */

+    public int getLum() {

+        return lum;

+    }

+

+    /**

+     * Sets the value of the lum property.

+     * 

+     */

+    public void setLum(int value) {

+        this.lum = value;

+    }

+

+    public boolean isSetLum() {

+        return true;

+    }

+

+}

diff --git a/src/java/org/apache/poi/sl/draw/binding/CTHyperlink.java b/src/java/org/apache/poi/sl/draw/binding/CTHyperlink.java
new file mode 100644
index 0000000..0c89f39
--- /dev/null
+++ b/src/java/org/apache/poi/sl/draw/binding/CTHyperlink.java
@@ -0,0 +1,403 @@
+/* ====================================================================

+   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.binding;

+

+import javax.xml.bind.annotation.XmlAccessType;

+import javax.xml.bind.annotation.XmlAccessorType;

+import javax.xml.bind.annotation.XmlAttribute;

+import javax.xml.bind.annotation.XmlElement;

+import javax.xml.bind.annotation.XmlType;

+

+

+/**

+ * <p>Java class for CT_Hyperlink complex type.

+ * 

+ * <p>The following schema fragment specifies the expected content contained within this class.

+ * 

+ * <pre>

+ * &lt;complexType name="CT_Hyperlink">

+ *   &lt;complexContent>

+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">

+ *       &lt;sequence>

+ *         &lt;element name="snd" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_EmbeddedWAVAudioFile" minOccurs="0"/>

+ *         &lt;element name="extLst" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_OfficeArtExtensionList" minOccurs="0"/>

+ *       &lt;/sequence>

+ *       &lt;attribute ref="{http://schemas.openxmlformats.org/officeDocument/2006/relationships}id"/>

+ *       &lt;attribute name="invalidUrl" type="{http://www.w3.org/2001/XMLSchema}string" default="" />

+ *       &lt;attribute name="action" type="{http://www.w3.org/2001/XMLSchema}string" default="" />

+ *       &lt;attribute name="tgtFrame" type="{http://www.w3.org/2001/XMLSchema}string" default="" />

+ *       &lt;attribute name="tooltip" type="{http://www.w3.org/2001/XMLSchema}string" default="" />

+ *       &lt;attribute name="history" type="{http://www.w3.org/2001/XMLSchema}boolean" default="true" />

+ *       &lt;attribute name="highlightClick" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />

+ *       &lt;attribute name="endSnd" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />

+ *     &lt;/restriction>

+ *   &lt;/complexContent>

+ * &lt;/complexType>

+ * </pre>

+ * 

+ * 

+ */

+@XmlAccessorType(XmlAccessType.FIELD)

+@XmlType(name = "CT_Hyperlink", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", propOrder = {

+    "snd",

+    "extLst"

+})

+public class CTHyperlink {

+

+    @XmlElement(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")

+    protected CTEmbeddedWAVAudioFile snd;

+    @XmlElement(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")

+    protected CTOfficeArtExtensionList extLst;

+    @XmlAttribute(name = "id", namespace = "http://schemas.openxmlformats.org/officeDocument/2006/relationships")

+    protected String id;

+    @XmlAttribute(name = "invalidUrl")

+    protected String invalidUrl;

+    @XmlAttribute(name = "action")

+    protected String action;

+    @XmlAttribute(name = "tgtFrame")

+    protected String tgtFrame;

+    @XmlAttribute(name = "tooltip")

+    protected String tooltip;

+    @XmlAttribute(name = "history")

+    protected Boolean history;

+    @XmlAttribute(name = "highlightClick")

+    protected Boolean highlightClick;

+    @XmlAttribute(name = "endSnd")

+    protected Boolean endSnd;

+

+    /**

+     * Gets the value of the snd property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link CTEmbeddedWAVAudioFile }

+     *     

+     */

+    public CTEmbeddedWAVAudioFile getSnd() {

+        return snd;

+    }

+

+    /**

+     * Sets the value of the snd property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link CTEmbeddedWAVAudioFile }

+     *     

+     */

+    public void setSnd(CTEmbeddedWAVAudioFile value) {

+        this.snd = value;

+    }

+

+    public boolean isSetSnd() {

+        return (this.snd!= null);

+    }

+

+    /**

+     * Gets the value of the extLst property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link CTOfficeArtExtensionList }

+     *     

+     */

+    public CTOfficeArtExtensionList getExtLst() {

+        return extLst;

+    }

+

+    /**

+     * Sets the value of the extLst property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link CTOfficeArtExtensionList }

+     *     

+     */

+    public void setExtLst(CTOfficeArtExtensionList value) {

+        this.extLst = value;

+    }

+

+    public boolean isSetExtLst() {

+        return (this.extLst!= null);

+    }

+

+    /**

+     * Drawing Object Hyperlink Target

+     * 

+     * @return

+     *     possible object is

+     *     {@link String }

+     *     

+     */

+    public String getId() {

+        return id;

+    }

+

+    /**

+     * Sets the value of the id property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link String }

+     *     

+     */

+    public void setId(String value) {

+        this.id = value;

+    }

+

+    public boolean isSetId() {

+        return (this.id!= null);

+    }

+

+    /**

+     * Gets the value of the invalidUrl property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link String }

+     *     

+     */

+    public String getInvalidUrl() {

+        if (invalidUrl == null) {

+            return "";

+        } else {

+            return invalidUrl;

+        }

+    }

+

+    /**

+     * Sets the value of the invalidUrl property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link String }

+     *     

+     */

+    public void setInvalidUrl(String value) {

+        this.invalidUrl = value;

+    }

+

+    public boolean isSetInvalidUrl() {

+        return (this.invalidUrl!= null);

+    }

+

+    /**

+     * Gets the value of the action property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link String }

+     *     

+     */

+    public String getAction() {

+        if (action == null) {

+            return "";

+        } else {

+            return action;

+        }

+    }

+

+    /**

+     * Sets the value of the action property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link String }

+     *     

+     */

+    public void setAction(String value) {

+        this.action = value;

+    }

+

+    public boolean isSetAction() {

+        return (this.action!= null);

+    }

+

+    /**

+     * Gets the value of the tgtFrame property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link String }

+     *     

+     */

+    public String getTgtFrame() {

+        if (tgtFrame == null) {

+            return "";

+        } else {

+            return tgtFrame;

+        }

+    }

+

+    /**

+     * Sets the value of the tgtFrame property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link String }

+     *     

+     */

+    public void setTgtFrame(String value) {

+        this.tgtFrame = value;

+    }

+

+    public boolean isSetTgtFrame() {

+        return (this.tgtFrame!= null);

+    }

+

+    /**

+     * Gets the value of the tooltip property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link String }

+     *     

+     */

+    public String getTooltip() {

+        if (tooltip == null) {

+            return "";

+        } else {

+            return tooltip;

+        }

+    }

+

+    /**

+     * Sets the value of the tooltip property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link String }

+     *     

+     */

+    public void setTooltip(String value) {

+        this.tooltip = value;

+    }

+

+    public boolean isSetTooltip() {

+        return (this.tooltip!= null);

+    }

+

+    /**

+     * Gets the value of the history property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link Boolean }

+     *     

+     */

+    public boolean isHistory() {

+        if (history == null) {

+            return true;

+        } else {

+            return history;

+        }

+    }

+

+    /**

+     * Sets the value of the history property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link Boolean }

+     *     

+     */

+    public void setHistory(boolean value) {

+        this.history = value;

+    }

+

+    public boolean isSetHistory() {

+        return (this.history!= null);

+    }

+

+    public void unsetHistory() {

+        this.history = null;

+    }

+

+    /**

+     * Gets the value of the highlightClick property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link Boolean }

+     *     

+     */

+    public boolean isHighlightClick() {

+        if (highlightClick == null) {

+            return false;

+        } else {

+            return highlightClick;

+        }

+    }

+

+    /**

+     * Sets the value of the highlightClick property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link Boolean }

+     *     

+     */

+    public void setHighlightClick(boolean value) {

+        this.highlightClick = value;

+    }

+

+    public boolean isSetHighlightClick() {

+        return (this.highlightClick!= null);

+    }

+

+    public void unsetHighlightClick() {

+        this.highlightClick = null;

+    }

+

+    /**

+     * Gets the value of the endSnd property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link Boolean }

+     *     

+     */

+    public boolean isEndSnd() {

+        if (endSnd == null) {

+            return false;

+        } else {

+            return endSnd;

+        }

+    }

+

+    /**

+     * Sets the value of the endSnd property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link Boolean }

+     *     

+     */

+    public void setEndSnd(boolean value) {

+        this.endSnd = value;

+    }

+

+    public boolean isSetEndSnd() {

+        return (this.endSnd!= null);

+    }

+

+    public void unsetEndSnd() {

+        this.endSnd = null;

+    }

+

+}

diff --git a/src/java/org/apache/poi/sl/draw/binding/CTInverseGammaTransform.java b/src/java/org/apache/poi/sl/draw/binding/CTInverseGammaTransform.java
new file mode 100644
index 0000000..eaff064
--- /dev/null
+++ b/src/java/org/apache/poi/sl/draw/binding/CTInverseGammaTransform.java
@@ -0,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.binding;

+

+import javax.xml.bind.annotation.XmlAccessType;

+import javax.xml.bind.annotation.XmlAccessorType;

+import javax.xml.bind.annotation.XmlType;

+

+

+/**

+ * <p>Java class for CT_InverseGammaTransform complex type.

+ * 

+ * <p>The following schema fragment specifies the expected content contained within this class.

+ * 

+ * <pre>

+ * &lt;complexType name="CT_InverseGammaTransform">

+ *   &lt;complexContent>

+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">

+ *     &lt;/restriction>

+ *   &lt;/complexContent>

+ * &lt;/complexType>

+ * </pre>

+ * 

+ * 

+ */

+@XmlAccessorType(XmlAccessType.FIELD)

+@XmlType(name = "CT_InverseGammaTransform", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")

+public class CTInverseGammaTransform {

+

+

+}

diff --git a/src/java/org/apache/poi/sl/draw/binding/CTInverseTransform.java b/src/java/org/apache/poi/sl/draw/binding/CTInverseTransform.java
new file mode 100644
index 0000000..84af625
--- /dev/null
+++ b/src/java/org/apache/poi/sl/draw/binding/CTInverseTransform.java
@@ -0,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.binding;

+

+import javax.xml.bind.annotation.XmlAccessType;

+import javax.xml.bind.annotation.XmlAccessorType;

+import javax.xml.bind.annotation.XmlType;

+

+

+/**

+ * <p>Java class for CT_InverseTransform complex type.

+ * 

+ * <p>The following schema fragment specifies the expected content contained within this class.

+ * 

+ * <pre>

+ * &lt;complexType name="CT_InverseTransform">

+ *   &lt;complexContent>

+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">

+ *     &lt;/restriction>

+ *   &lt;/complexContent>

+ * &lt;/complexType>

+ * </pre>

+ * 

+ * 

+ */

+@XmlAccessorType(XmlAccessType.FIELD)

+@XmlType(name = "CT_InverseTransform", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")

+public class CTInverseTransform {

+

+

+}

diff --git a/src/java/org/apache/poi/sl/draw/binding/CTOfficeArtExtension.java b/src/java/org/apache/poi/sl/draw/binding/CTOfficeArtExtension.java
new file mode 100644
index 0000000..ec864d3
--- /dev/null
+++ b/src/java/org/apache/poi/sl/draw/binding/CTOfficeArtExtension.java
@@ -0,0 +1,122 @@
+/* ====================================================================

+   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.binding;

+

+import javax.xml.bind.annotation.XmlAccessType;

+import javax.xml.bind.annotation.XmlAccessorType;

+import javax.xml.bind.annotation.XmlAnyElement;

+import javax.xml.bind.annotation.XmlAttribute;

+import javax.xml.bind.annotation.XmlSchemaType;

+import javax.xml.bind.annotation.XmlType;

+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;

+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;

+import org.w3c.dom.Element;

+

+

+/**

+ * <p>Java class for CT_OfficeArtExtension complex type.

+ * 

+ * <p>The following schema fragment specifies the expected content contained within this class.

+ * 

+ * <pre>

+ * &lt;complexType name="CT_OfficeArtExtension">

+ *   &lt;complexContent>

+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">

+ *       &lt;sequence>

+ *         &lt;any processContents='lax'/>

+ *       &lt;/sequence>

+ *       &lt;attribute name="uri" type="{http://www.w3.org/2001/XMLSchema}token" />

+ *     &lt;/restriction>

+ *   &lt;/complexContent>

+ * &lt;/complexType>

+ * </pre>

+ * 

+ * 

+ */

+@XmlAccessorType(XmlAccessType.FIELD)

+@XmlType(name = "CT_OfficeArtExtension", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", propOrder = {

+    "any"

+})

+public class CTOfficeArtExtension {

+

+    @XmlAnyElement(lax = true)

+    protected Object any;

+    @XmlAttribute(name = "uri")

+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)

+    @XmlSchemaType(name = "token")

+    protected String uri;

+

+    /**

+     * Gets the value of the any property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link Object }

+     *     {@link Element }

+     *     

+     */

+    public Object getAny() {

+        return any;

+    }

+

+    /**

+     * Sets the value of the any property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link Object }

+     *     {@link Element }

+     *     

+     */

+    public void setAny(Object value) {

+        this.any = value;

+    }

+

+    public boolean isSetAny() {

+        return (this.any!= null);

+    }

+

+    /**

+     * Gets the value of the uri property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link String }

+     *     

+     */

+    public String getUri() {

+        return uri;

+    }

+

+    /**

+     * Sets the value of the uri property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link String }

+     *     

+     */

+    public void setUri(String value) {

+        this.uri = value;

+    }

+

+    public boolean isSetUri() {

+        return (this.uri!= null);

+    }

+

+}

diff --git a/src/java/org/apache/poi/sl/draw/binding/CTOfficeArtExtensionList.java b/src/java/org/apache/poi/sl/draw/binding/CTOfficeArtExtensionList.java
new file mode 100644
index 0000000..f0b54cb
--- /dev/null
+++ b/src/java/org/apache/poi/sl/draw/binding/CTOfficeArtExtensionList.java
@@ -0,0 +1,93 @@
+/* ====================================================================

+   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.binding;

+

+import java.util.ArrayList;

+import java.util.List;

+import javax.xml.bind.annotation.XmlAccessType;

+import javax.xml.bind.annotation.XmlAccessorType;

+import javax.xml.bind.annotation.XmlElement;

+import javax.xml.bind.annotation.XmlType;

+

+

+/**

+ * <p>Java class for CT_OfficeArtExtensionList complex type.

+ * 

+ * <p>The following schema fragment specifies the expected content contained within this class.

+ * 

+ * <pre>

+ * &lt;complexType name="CT_OfficeArtExtensionList">

+ *   &lt;complexContent>

+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">

+ *       &lt;sequence>

+ *         &lt;group ref="{http://schemas.openxmlformats.org/drawingml/2006/main}EG_OfficeArtExtensionList"/>

+ *       &lt;/sequence>

+ *     &lt;/restriction>

+ *   &lt;/complexContent>

+ * &lt;/complexType>

+ * </pre>

+ * 

+ * 

+ */

+@XmlAccessorType(XmlAccessType.FIELD)

+@XmlType(name = "CT_OfficeArtExtensionList", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", propOrder = {

+    "ext"

+})

+public class CTOfficeArtExtensionList {

+

+    @XmlElement(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")

+    protected List<CTOfficeArtExtension> ext;

+

+    /**

+     * Gets the value of the ext property.

+     * 

+     * <p>

+     * This accessor method returns a reference to the live list,

+     * not a snapshot. Therefore any modification you make to the

+     * returned list will be present inside the JAXB object.

+     * This is why there is not a <CODE>set</CODE> method for the ext property.

+     * 

+     * <p>

+     * For example, to add a new item, do as follows:

+     * <pre>

+     *    getExt().add(newItem);

+     * </pre>

+     * 

+     * 

+     * <p>

+     * Objects of the following type(s) are allowed in the list

+     * {@link CTOfficeArtExtension }

+     * 

+     * 

+     */

+    public List<CTOfficeArtExtension> getExt() {

+        if (ext == null) {

+            ext = new ArrayList<CTOfficeArtExtension>();

+        }

+        return this.ext;

+    }

+

+    public boolean isSetExt() {

+        return ((this.ext!= null)&&(!this.ext.isEmpty()));

+    }

+

+    public void unsetExt() {

+        this.ext = null;

+    }

+

+}

diff --git a/src/java/org/apache/poi/sl/draw/binding/CTPath2D.java b/src/java/org/apache/poi/sl/draw/binding/CTPath2D.java
new file mode 100644
index 0000000..5294812
--- /dev/null
+++ b/src/java/org/apache/poi/sl/draw/binding/CTPath2D.java
@@ -0,0 +1,303 @@
+/* ====================================================================

+   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.binding;

+

+import java.util.ArrayList;

+import java.util.List;

+import javax.xml.bind.annotation.XmlAccessType;

+import javax.xml.bind.annotation.XmlAccessorType;

+import javax.xml.bind.annotation.XmlAttribute;

+import javax.xml.bind.annotation.XmlElement;

+import javax.xml.bind.annotation.XmlElements;

+import javax.xml.bind.annotation.XmlType;

+

+

+/**

+ * <p>Java class for CT_Path2D complex type.

+ * 

+ * <p>The following schema fragment specifies the expected content contained within this class.

+ * 

+ * <pre>

+ * &lt;complexType name="CT_Path2D">

+ *   &lt;complexContent>

+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">

+ *       &lt;choice maxOccurs="unbounded" minOccurs="0">

+ *         &lt;element name="close" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_Path2DClose"/>

+ *         &lt;element name="moveTo" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_Path2DMoveTo"/>

+ *         &lt;element name="lnTo" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_Path2DLineTo"/>

+ *         &lt;element name="arcTo" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_Path2DArcTo"/>

+ *         &lt;element name="quadBezTo" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_Path2DQuadBezierTo"/>

+ *         &lt;element name="cubicBezTo" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_Path2DCubicBezierTo"/>

+ *       &lt;/choice>

+ *       &lt;attribute name="w" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_PositiveCoordinate" default="0" />

+ *       &lt;attribute name="h" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_PositiveCoordinate" default="0" />

+ *       &lt;attribute name="fill" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_PathFillMode" default="norm" />

+ *       &lt;attribute name="stroke" type="{http://www.w3.org/2001/XMLSchema}boolean" default="true" />

+ *       &lt;attribute name="extrusionOk" type="{http://www.w3.org/2001/XMLSchema}boolean" default="true" />

+ *     &lt;/restriction>

+ *   &lt;/complexContent>

+ * &lt;/complexType>

+ * </pre>

+ * 

+ * 

+ */

+@XmlAccessorType(XmlAccessType.FIELD)

+@XmlType(name = "CT_Path2D", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", propOrder = {

+    "closeOrMoveToOrLnTo"

+})

+public class CTPath2D {

+

+    @XmlElements({

+        @XmlElement(name = "close", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = CTPath2DClose.class),

+        @XmlElement(name = "moveTo", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = CTPath2DMoveTo.class),

+        @XmlElement(name = "lnTo", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = CTPath2DLineTo.class),

+        @XmlElement(name = "arcTo", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = CTPath2DArcTo.class),

+        @XmlElement(name = "quadBezTo", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = CTPath2DQuadBezierTo.class),

+        @XmlElement(name = "cubicBezTo", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = CTPath2DCubicBezierTo.class)

+    })

+    protected List<Object> closeOrMoveToOrLnTo;

+    @XmlAttribute(name = "w")

+    protected Long w;

+    @XmlAttribute(name = "h")

+    protected Long h;

+    @XmlAttribute(name = "fill")

+    protected STPathFillMode fill;

+    @XmlAttribute(name = "stroke")

+    protected Boolean stroke;

+    @XmlAttribute(name = "extrusionOk")

+    protected Boolean extrusionOk;

+

+    /**

+     * Gets the value of the closeOrMoveToOrLnTo property.

+     * 

+     * <p>

+     * This accessor method returns a reference to the live list,

+     * not a snapshot. Therefore any modification you make to the

+     * returned list will be present inside the JAXB object.

+     * This is why there is not a <CODE>set</CODE> method for the closeOrMoveToOrLnTo property.

+     * 

+     * <p>

+     * For example, to add a new item, do as follows:

+     * <pre>

+     *    getCloseOrMoveToOrLnTo().add(newItem);

+     * </pre>

+     * 

+     * 

+     * <p>

+     * Objects of the following type(s) are allowed in the list

+     * {@link CTPath2DClose }

+     * {@link CTPath2DMoveTo }

+     * {@link CTPath2DLineTo }

+     * {@link CTPath2DArcTo }

+     * {@link CTPath2DQuadBezierTo }

+     * {@link CTPath2DCubicBezierTo }

+     * 

+     * 

+     */

+    public List<Object> getCloseOrMoveToOrLnTo() {

+        if (closeOrMoveToOrLnTo == null) {

+            closeOrMoveToOrLnTo = new ArrayList<Object>();

+        }

+        return this.closeOrMoveToOrLnTo;

+    }

+

+    public boolean isSetCloseOrMoveToOrLnTo() {

+        return ((this.closeOrMoveToOrLnTo!= null)&&(!this.closeOrMoveToOrLnTo.isEmpty()));

+    }

+

+    public void unsetCloseOrMoveToOrLnTo() {

+        this.closeOrMoveToOrLnTo = null;

+    }

+

+    /**

+     * Gets the value of the w property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link Long }

+     *     

+     */

+    public long getW() {

+        if (w == null) {

+            return  0L;

+        } else {

+            return w;

+        }

+    }

+

+    /**

+     * Sets the value of the w property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link Long }

+     *     

+     */

+    public void setW(long value) {

+        this.w = value;

+    }

+

+    public boolean isSetW() {

+        return (this.w!= null);

+    }

+

+    public void unsetW() {

+        this.w = null;

+    }

+

+    /**

+     * Gets the value of the h property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link Long }

+     *     

+     */

+    public long getH() {

+        if (h == null) {

+            return  0L;

+        } else {

+            return h;

+        }

+    }

+

+    /**

+     * Sets the value of the h property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link Long }

+     *     

+     */

+    public void setH(long value) {

+        this.h = value;

+    }

+

+    public boolean isSetH() {

+        return (this.h!= null);

+    }

+

+    public void unsetH() {

+        this.h = null;

+    }

+

+    /**

+     * Gets the value of the fill property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link STPathFillMode }

+     *     

+     */

+    public STPathFillMode getFill() {

+        if (fill == null) {

+            return STPathFillMode.NORM;

+        } else {

+            return fill;

+        }

+    }

+

+    /**

+     * Sets the value of the fill property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link STPathFillMode }

+     *     

+     */

+    public void setFill(STPathFillMode value) {

+        this.fill = value;

+    }

+

+    public boolean isSetFill() {

+        return (this.fill!= null);

+    }

+

+    /**

+     * Gets the value of the stroke property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link Boolean }

+     *     

+     */

+    public boolean isStroke() {

+        if (stroke == null) {

+            return true;

+        } else {

+            return stroke;

+        }

+    }

+

+    /**

+     * Sets the value of the stroke property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link Boolean }

+     *     

+     */

+    public void setStroke(boolean value) {

+        this.stroke = value;

+    }

+

+    public boolean isSetStroke() {

+        return (this.stroke!= null);

+    }

+

+    public void unsetStroke() {

+        this.stroke = null;

+    }

+

+    /**

+     * Gets the value of the extrusionOk property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link Boolean }

+     *     

+     */

+    public boolean isExtrusionOk() {

+        if (extrusionOk == null) {

+            return true;

+        } else {

+            return extrusionOk;

+        }

+    }

+

+    /**

+     * Sets the value of the extrusionOk property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link Boolean }

+     *     

+     */

+    public void setExtrusionOk(boolean value) {

+        this.extrusionOk = value;

+    }

+

+    public boolean isSetExtrusionOk() {

+        return (this.extrusionOk!= null);

+    }

+

+    public void unsetExtrusionOk() {

+        this.extrusionOk = null;

+    }

+

+}

diff --git a/src/java/org/apache/poi/sl/draw/binding/CTPath2DArcTo.java b/src/java/org/apache/poi/sl/draw/binding/CTPath2DArcTo.java
new file mode 100644
index 0000000..5464ee4
--- /dev/null
+++ b/src/java/org/apache/poi/sl/draw/binding/CTPath2DArcTo.java
@@ -0,0 +1,171 @@
+/* ====================================================================

+   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.binding;

+

+import javax.xml.bind.annotation.XmlAccessType;

+import javax.xml.bind.annotation.XmlAccessorType;

+import javax.xml.bind.annotation.XmlAttribute;

+import javax.xml.bind.annotation.XmlType;

+

+

+/**

+ * <p>Java class for CT_Path2DArcTo complex type.

+ * 

+ * <p>The following schema fragment specifies the expected content contained within this class.

+ * 

+ * <pre>

+ * &lt;complexType name="CT_Path2DArcTo">

+ *   &lt;complexContent>

+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">

+ *       &lt;attribute name="wR" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_AdjCoordinate" />

+ *       &lt;attribute name="hR" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_AdjCoordinate" />

+ *       &lt;attribute name="stAng" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_AdjAngle" />

+ *       &lt;attribute name="swAng" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_AdjAngle" />

+ *     &lt;/restriction>

+ *   &lt;/complexContent>

+ * &lt;/complexType>

+ * </pre>

+ * 

+ * 

+ */

+@XmlAccessorType(XmlAccessType.FIELD)

+@XmlType(name = "CT_Path2DArcTo", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")

+public class CTPath2DArcTo {

+

+    @XmlAttribute(name = "wR", required = true)

+    protected String wr;

+    @XmlAttribute(name = "hR", required = true)

+    protected String hr;

+    @XmlAttribute(name = "stAng", required = true)

+    protected String stAng;

+    @XmlAttribute(name = "swAng", required = true)

+    protected String swAng;

+

+    /**

+     * Gets the value of the wr property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link String }

+     *     

+     */

+    public String getWR() {

+        return wr;

+    }

+

+    /**

+     * Sets the value of the wr property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link String }

+     *     

+     */

+    public void setWR(String value) {

+        this.wr = value;

+    }

+

+    public boolean isSetWR() {

+        return (this.wr!= null);

+    }

+

+    /**

+     * Gets the value of the hr property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link String }

+     *     

+     */

+    public String getHR() {

+        return hr;

+    }

+

+    /**

+     * Sets the value of the hr property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link String }

+     *     

+     */

+    public void setHR(String value) {

+        this.hr = value;

+    }

+

+    public boolean isSetHR() {

+        return (this.hr!= null);

+    }

+

+    /**

+     * Gets the value of the stAng property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link String }

+     *     

+     */

+    public String getStAng() {

+        return stAng;

+    }

+

+    /**

+     * Sets the value of the stAng property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link String }

+     *     

+     */

+    public void setStAng(String value) {

+        this.stAng = value;

+    }

+

+    public boolean isSetStAng() {

+        return (this.stAng!= null);

+    }

+

+    /**

+     * Gets the value of the swAng property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link String }

+     *     

+     */

+    public String getSwAng() {

+        return swAng;

+    }

+

+    /**

+     * Sets the value of the swAng property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link String }

+     *     

+     */

+    public void setSwAng(String value) {

+        this.swAng = value;

+    }

+

+    public boolean isSetSwAng() {

+        return (this.swAng!= null);

+    }

+

+}

diff --git a/src/java/org/apache/poi/sl/draw/binding/CTPath2DClose.java b/src/java/org/apache/poi/sl/draw/binding/CTPath2DClose.java
new file mode 100644
index 0000000..a60f98b
--- /dev/null
+++ b/src/java/org/apache/poi/sl/draw/binding/CTPath2DClose.java
@@ -0,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.binding;

+

+import javax.xml.bind.annotation.XmlAccessType;

+import javax.xml.bind.annotation.XmlAccessorType;

+import javax.xml.bind.annotation.XmlType;

+

+

+/**

+ * <p>Java class for CT_Path2DClose complex type.

+ * 

+ * <p>The following schema fragment specifies the expected content contained within this class.

+ * 

+ * <pre>

+ * &lt;complexType name="CT_Path2DClose">

+ *   &lt;complexContent>

+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">

+ *     &lt;/restriction>

+ *   &lt;/complexContent>

+ * &lt;/complexType>

+ * </pre>

+ * 

+ * 

+ */

+@XmlAccessorType(XmlAccessType.FIELD)

+@XmlType(name = "CT_Path2DClose", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")

+public class CTPath2DClose {

+

+

+}

diff --git a/src/java/org/apache/poi/sl/draw/binding/CTPath2DCubicBezierTo.java b/src/java/org/apache/poi/sl/draw/binding/CTPath2DCubicBezierTo.java
new file mode 100644
index 0000000..e1818fa
--- /dev/null
+++ b/src/java/org/apache/poi/sl/draw/binding/CTPath2DCubicBezierTo.java
@@ -0,0 +1,93 @@
+/* ====================================================================

+   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.binding;

+

+import java.util.ArrayList;

+import java.util.List;

+import javax.xml.bind.annotation.XmlAccessType;

+import javax.xml.bind.annotation.XmlAccessorType;

+import javax.xml.bind.annotation.XmlElement;

+import javax.xml.bind.annotation.XmlType;

+

+

+/**

+ * <p>Java class for CT_Path2DCubicBezierTo complex type.

+ * 

+ * <p>The following schema fragment specifies the expected content contained within this class.

+ * 

+ * <pre>

+ * &lt;complexType name="CT_Path2DCubicBezierTo">

+ *   &lt;complexContent>

+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">

+ *       &lt;sequence>

+ *         &lt;element name="pt" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_AdjPoint2D" maxOccurs="3" minOccurs="3"/>

+ *       &lt;/sequence>

+ *     &lt;/restriction>

+ *   &lt;/complexContent>

+ * &lt;/complexType>

+ * </pre>

+ * 

+ * 

+ */

+@XmlAccessorType(XmlAccessType.FIELD)

+@XmlType(name = "CT_Path2DCubicBezierTo", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", propOrder = {

+    "pt"

+})

+public class CTPath2DCubicBezierTo {

+

+    @XmlElement(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", required = true)

+    protected List<CTAdjPoint2D> pt;

+

+    /**

+     * Gets the value of the pt property.

+     * 

+     * <p>

+     * This accessor method returns a reference to the live list,

+     * not a snapshot. Therefore any modification you make to the

+     * returned list will be present inside the JAXB object.

+     * This is why there is not a <CODE>set</CODE> method for the pt property.

+     * 

+     * <p>

+     * For example, to add a new item, do as follows:

+     * <pre>

+     *    getPt().add(newItem);

+     * </pre>

+     * 

+     * 

+     * <p>

+     * Objects of the following type(s) are allowed in the list

+     * {@link CTAdjPoint2D }

+     * 

+     * 

+     */

+    public List<CTAdjPoint2D> getPt() {

+        if (pt == null) {

+            pt = new ArrayList<CTAdjPoint2D>();

+        }

+        return this.pt;

+    }

+

+    public boolean isSetPt() {

+        return ((this.pt!= null)&&(!this.pt.isEmpty()));

+    }

+

+    public void unsetPt() {

+        this.pt = null;

+    }

+

+}

diff --git a/src/java/org/apache/poi/sl/draw/binding/CTPath2DLineTo.java b/src/java/org/apache/poi/sl/draw/binding/CTPath2DLineTo.java
new file mode 100644
index 0000000..9c6d1b3
--- /dev/null
+++ b/src/java/org/apache/poi/sl/draw/binding/CTPath2DLineTo.java
@@ -0,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.binding;

+

+import javax.xml.bind.annotation.XmlAccessType;

+import javax.xml.bind.annotation.XmlAccessorType;

+import javax.xml.bind.annotation.XmlElement;

+import javax.xml.bind.annotation.XmlType;

+

+

+/**

+ * <p>Java class for CT_Path2DLineTo complex type.

+ * 

+ * <p>The following schema fragment specifies the expected content contained within this class.

+ * 

+ * <pre>

+ * &lt;complexType name="CT_Path2DLineTo">

+ *   &lt;complexContent>

+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">

+ *       &lt;sequence>

+ *         &lt;element name="pt" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_AdjPoint2D"/>

+ *       &lt;/sequence>

+ *     &lt;/restriction>

+ *   &lt;/complexContent>

+ * &lt;/complexType>

+ * </pre>

+ * 

+ * 

+ */

+@XmlAccessorType(XmlAccessType.FIELD)

+@XmlType(name = "CT_Path2DLineTo", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", propOrder = {

+    "pt"

+})

+public class CTPath2DLineTo {

+

+    @XmlElement(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", required = true)

+    protected CTAdjPoint2D pt;

+

+    /**

+     * Gets the value of the pt property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link CTAdjPoint2D }

+     *     

+     */

+    public CTAdjPoint2D getPt() {

+        return pt;

+    }

+

+    /**

+     * Sets the value of the pt property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link CTAdjPoint2D }

+     *     

+     */

+    public void setPt(CTAdjPoint2D value) {

+        this.pt = value;

+    }

+

+    public boolean isSetPt() {

+        return (this.pt!= null);

+    }

+

+}

diff --git a/src/java/org/apache/poi/sl/draw/binding/CTPath2DList.java b/src/java/org/apache/poi/sl/draw/binding/CTPath2DList.java
new file mode 100644
index 0000000..cd31a0b
--- /dev/null
+++ b/src/java/org/apache/poi/sl/draw/binding/CTPath2DList.java
@@ -0,0 +1,93 @@
+/* ====================================================================

+   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.binding;

+

+import java.util.ArrayList;

+import java.util.List;

+import javax.xml.bind.annotation.XmlAccessType;

+import javax.xml.bind.annotation.XmlAccessorType;

+import javax.xml.bind.annotation.XmlElement;

+import javax.xml.bind.annotation.XmlType;

+

+

+/**

+ * <p>Java class for CT_Path2DList complex type.

+ * 

+ * <p>The following schema fragment specifies the expected content contained within this class.

+ * 

+ * <pre>

+ * &lt;complexType name="CT_Path2DList">

+ *   &lt;complexContent>

+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">

+ *       &lt;sequence>

+ *         &lt;element name="path" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_Path2D" maxOccurs="unbounded" minOccurs="0"/>

+ *       &lt;/sequence>

+ *     &lt;/restriction>

+ *   &lt;/complexContent>

+ * &lt;/complexType>

+ * </pre>

+ * 

+ * 

+ */

+@XmlAccessorType(XmlAccessType.FIELD)

+@XmlType(name = "CT_Path2DList", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", propOrder = {

+    "path"

+})

+public class CTPath2DList {

+

+    @XmlElement(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")

+    protected List<CTPath2D> path;

+

+    /**

+     * Gets the value of the path property.

+     * 

+     * <p>

+     * This accessor method returns a reference to the live list,

+     * not a snapshot. Therefore any modification you make to the

+     * returned list will be present inside the JAXB object.

+     * This is why there is not a <CODE>set</CODE> method for the path property.

+     * 

+     * <p>

+     * For example, to add a new item, do as follows:

+     * <pre>

+     *    getPath().add(newItem);

+     * </pre>

+     * 

+     * 

+     * <p>

+     * Objects of the following type(s) are allowed in the list

+     * {@link CTPath2D }

+     * 

+     * 

+     */

+    public List<CTPath2D> getPath() {

+        if (path == null) {

+            path = new ArrayList<CTPath2D>();

+        }

+        return this.path;

+    }

+

+    public boolean isSetPath() {

+        return ((this.path!= null)&&(!this.path.isEmpty()));

+    }

+

+    public void unsetPath() {

+        this.path = null;

+    }

+

+}

diff --git a/src/java/org/apache/poi/sl/draw/binding/CTPath2DMoveTo.java b/src/java/org/apache/poi/sl/draw/binding/CTPath2DMoveTo.java
new file mode 100644
index 0000000..f5e210f
--- /dev/null
+++ b/src/java/org/apache/poi/sl/draw/binding/CTPath2DMoveTo.java
@@ -0,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.binding;

+

+import javax.xml.bind.annotation.XmlAccessType;

+import javax.xml.bind.annotation.XmlAccessorType;

+import javax.xml.bind.annotation.XmlElement;

+import javax.xml.bind.annotation.XmlType;

+

+

+/**

+ * <p>Java class for CT_Path2DMoveTo complex type.

+ * 

+ * <p>The following schema fragment specifies the expected content contained within this class.

+ * 

+ * <pre>

+ * &lt;complexType name="CT_Path2DMoveTo">

+ *   &lt;complexContent>

+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">

+ *       &lt;sequence>

+ *         &lt;element name="pt" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_AdjPoint2D"/>

+ *       &lt;/sequence>

+ *     &lt;/restriction>

+ *   &lt;/complexContent>

+ * &lt;/complexType>

+ * </pre>

+ * 

+ * 

+ */

+@XmlAccessorType(XmlAccessType.FIELD)

+@XmlType(name = "CT_Path2DMoveTo", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", propOrder = {

+    "pt"

+})

+public class CTPath2DMoveTo {

+

+    @XmlElement(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", required = true)

+    protected CTAdjPoint2D pt;

+

+    /**

+     * Gets the value of the pt property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link CTAdjPoint2D }

+     *     

+     */

+    public CTAdjPoint2D getPt() {

+        return pt;

+    }

+

+    /**

+     * Sets the value of the pt property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link CTAdjPoint2D }

+     *     

+     */

+    public void setPt(CTAdjPoint2D value) {

+        this.pt = value;

+    }

+

+    public boolean isSetPt() {

+        return (this.pt!= null);

+    }

+

+}

diff --git a/src/java/org/apache/poi/sl/draw/binding/CTPath2DQuadBezierTo.java b/src/java/org/apache/poi/sl/draw/binding/CTPath2DQuadBezierTo.java
new file mode 100644
index 0000000..b588775
--- /dev/null
+++ b/src/java/org/apache/poi/sl/draw/binding/CTPath2DQuadBezierTo.java
@@ -0,0 +1,93 @@
+/* ====================================================================

+   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.binding;

+

+import java.util.ArrayList;

+import java.util.List;

+import javax.xml.bind.annotation.XmlAccessType;

+import javax.xml.bind.annotation.XmlAccessorType;

+import javax.xml.bind.annotation.XmlElement;

+import javax.xml.bind.annotation.XmlType;

+

+

+/**

+ * <p>Java class for CT_Path2DQuadBezierTo complex type.

+ * 

+ * <p>The following schema fragment specifies the expected content contained within this class.

+ * 

+ * <pre>

+ * &lt;complexType name="CT_Path2DQuadBezierTo">

+ *   &lt;complexContent>

+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">

+ *       &lt;sequence>

+ *         &lt;element name="pt" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_AdjPoint2D" maxOccurs="2" minOccurs="2"/>

+ *       &lt;/sequence>

+ *     &lt;/restriction>

+ *   &lt;/complexContent>

+ * &lt;/complexType>

+ * </pre>

+ * 

+ * 

+ */

+@XmlAccessorType(XmlAccessType.FIELD)

+@XmlType(name = "CT_Path2DQuadBezierTo", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", propOrder = {

+    "pt"

+})

+public class CTPath2DQuadBezierTo {

+

+    @XmlElement(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", required = true)

+    protected List<CTAdjPoint2D> pt;

+

+    /**

+     * Gets the value of the pt property.

+     * 

+     * <p>

+     * This accessor method returns a reference to the live list,

+     * not a snapshot. Therefore any modification you make to the

+     * returned list will be present inside the JAXB object.

+     * This is why there is not a <CODE>set</CODE> method for the pt property.

+     * 

+     * <p>

+     * For example, to add a new item, do as follows:

+     * <pre>

+     *    getPt().add(newItem);

+     * </pre>

+     * 

+     * 

+     * <p>

+     * Objects of the following type(s) are allowed in the list

+     * {@link CTAdjPoint2D }

+     * 

+     * 

+     */

+    public List<CTAdjPoint2D> getPt() {

+        if (pt == null) {

+            pt = new ArrayList<CTAdjPoint2D>();

+        }

+        return this.pt;

+    }

+

+    public boolean isSetPt() {

+        return ((this.pt!= null)&&(!this.pt.isEmpty()));

+    }

+

+    public void unsetPt() {

+        this.pt = null;

+    }

+

+}

diff --git a/src/java/org/apache/poi/sl/draw/binding/CTPercentage.java b/src/java/org/apache/poi/sl/draw/binding/CTPercentage.java
new file mode 100644
index 0000000..e1a74b5
--- /dev/null
+++ b/src/java/org/apache/poi/sl/draw/binding/CTPercentage.java
@@ -0,0 +1,70 @@
+/* ====================================================================

+   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.binding;

+

+import javax.xml.bind.annotation.XmlAccessType;

+import javax.xml.bind.annotation.XmlAccessorType;

+import javax.xml.bind.annotation.XmlAttribute;

+import javax.xml.bind.annotation.XmlType;

+

+

+/**

+ * <p>Java class for CT_Percentage complex type.

+ * 

+ * <p>The following schema fragment specifies the expected content contained within this class.

+ * 

+ * <pre>

+ * &lt;complexType name="CT_Percentage">

+ *   &lt;complexContent>

+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">

+ *       &lt;attribute name="val" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_Percentage" />

+ *     &lt;/restriction>

+ *   &lt;/complexContent>

+ * &lt;/complexType>

+ * </pre>

+ * 

+ * 

+ */

+@XmlAccessorType(XmlAccessType.FIELD)

+@XmlType(name = "CT_Percentage", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")

+public class CTPercentage {

+

+    @XmlAttribute(name = "val", required = true)

+    protected int val;

+

+    /**

+     * Gets the value of the val property.

+     * 

+     */

+    public int getVal() {

+        return val;

+    }

+

+    /**

+     * Sets the value of the val property.

+     * 

+     */

+    public void setVal(int value) {

+        this.val = value;

+    }

+

+    public boolean isSetVal() {

+        return true;

+    }

+

+}

diff --git a/src/java/org/apache/poi/sl/draw/binding/CTPoint2D.java b/src/java/org/apache/poi/sl/draw/binding/CTPoint2D.java
new file mode 100644
index 0000000..06cbfbc
--- /dev/null
+++ b/src/java/org/apache/poi/sl/draw/binding/CTPoint2D.java
@@ -0,0 +1,93 @@
+/* ====================================================================

+   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.binding;

+

+import javax.xml.bind.annotation.XmlAccessType;

+import javax.xml.bind.annotation.XmlAccessorType;

+import javax.xml.bind.annotation.XmlAttribute;

+import javax.xml.bind.annotation.XmlType;

+

+

+/**

+ * <p>Java class for CT_Point2D complex type.

+ * 

+ * <p>The following schema fragment specifies the expected content contained within this class.

+ * 

+ * <pre>

+ * &lt;complexType name="CT_Point2D">

+ *   &lt;complexContent>

+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">

+ *       &lt;attribute name="x" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_Coordinate" />

+ *       &lt;attribute name="y" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_Coordinate" />

+ *     &lt;/restriction>

+ *   &lt;/complexContent>

+ * &lt;/complexType>

+ * </pre>

+ * 

+ * 

+ */

+@XmlAccessorType(XmlAccessType.FIELD)

+@XmlType(name = "CT_Point2D", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")

+public class CTPoint2D {

+

+    @XmlAttribute(name = "x", required = true)

+    protected long x;

+    @XmlAttribute(name = "y", required = true)

+    protected long y;

+

+    /**

+     * Gets the value of the x property.

+     * 

+     */

+    public long getX() {

+        return x;

+    }

+

+    /**

+     * Sets the value of the x property.

+     * 

+     */

+    public void setX(long value) {

+        this.x = value;

+    }

+

+    public boolean isSetX() {

+        return true;

+    }

+

+    /**

+     * Gets the value of the y property.

+     * 

+     */

+    public long getY() {

+        return y;

+    }

+

+    /**

+     * Sets the value of the y property.

+     * 

+     */

+    public void setY(long value) {

+        this.y = value;

+    }

+

+    public boolean isSetY() {

+        return true;

+    }

+

+}

diff --git a/src/java/org/apache/poi/sl/draw/binding/CTPoint3D.java b/src/java/org/apache/poi/sl/draw/binding/CTPoint3D.java
new file mode 100644
index 0000000..3cbeb67
--- /dev/null
+++ b/src/java/org/apache/poi/sl/draw/binding/CTPoint3D.java
@@ -0,0 +1,116 @@
+/* ====================================================================

+   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.binding;

+

+import javax.xml.bind.annotation.XmlAccessType;

+import javax.xml.bind.annotation.XmlAccessorType;

+import javax.xml.bind.annotation.XmlAttribute;

+import javax.xml.bind.annotation.XmlType;

+

+

+/**

+ * <p>Java class for CT_Point3D complex type.

+ * 

+ * <p>The following schema fragment specifies the expected content contained within this class.

+ * 

+ * <pre>

+ * &lt;complexType name="CT_Point3D">

+ *   &lt;complexContent>

+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">

+ *       &lt;attribute name="x" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_Coordinate" />

+ *       &lt;attribute name="y" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_Coordinate" />

+ *       &lt;attribute name="z" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_Coordinate" />

+ *     &lt;/restriction>

+ *   &lt;/complexContent>

+ * &lt;/complexType>

+ * </pre>

+ * 

+ * 

+ */

+@XmlAccessorType(XmlAccessType.FIELD)

+@XmlType(name = "CT_Point3D", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")

+public class CTPoint3D {

+

+    @XmlAttribute(name = "x", required = true)

+    protected long x;

+    @XmlAttribute(name = "y", required = true)

+    protected long y;

+    @XmlAttribute(name = "z", required = true)

+    protected long z;

+

+    /**

+     * Gets the value of the x property.

+     * 

+     */

+    public long getX() {

+        return x;

+    }

+

+    /**

+     * Sets the value of the x property.

+     * 

+     */

+    public void setX(long value) {

+        this.x = value;

+    }

+

+    public boolean isSetX() {

+        return true;

+    }

+

+    /**

+     * Gets the value of the y property.

+     * 

+     */

+    public long getY() {

+        return y;

+    }

+

+    /**

+     * Sets the value of the y property.

+     * 

+     */

+    public void setY(long value) {

+        this.y = value;

+    }

+

+    public boolean isSetY() {

+        return true;

+    }

+

+    /**

+     * Gets the value of the z property.

+     * 

+     */

+    public long getZ() {

+        return z;

+    }

+

+    /**

+     * Sets the value of the z property.

+     * 

+     */

+    public void setZ(long value) {

+        this.z = value;

+    }

+

+    public boolean isSetZ() {

+        return true;

+    }

+

+}

diff --git a/src/java/org/apache/poi/sl/draw/binding/CTPolarAdjustHandle.java b/src/java/org/apache/poi/sl/draw/binding/CTPolarAdjustHandle.java
new file mode 100644
index 0000000..646dad5
--- /dev/null
+++ b/src/java/org/apache/poi/sl/draw/binding/CTPolarAdjustHandle.java
@@ -0,0 +1,273 @@
+/* ====================================================================

+   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.binding;

+

+import javax.xml.bind.annotation.XmlAccessType;

+import javax.xml.bind.annotation.XmlAccessorType;

+import javax.xml.bind.annotation.XmlAttribute;

+import javax.xml.bind.annotation.XmlElement;

+import javax.xml.bind.annotation.XmlType;

+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;

+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;

+

+

+/**

+ * <p>Java class for CT_PolarAdjustHandle complex type.

+ * 

+ * <p>The following schema fragment specifies the expected content contained within this class.

+ * 

+ * <pre>

+ * &lt;complexType name="CT_PolarAdjustHandle">

+ *   &lt;complexContent>

+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">

+ *       &lt;sequence>

+ *         &lt;element name="pos" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_AdjPoint2D"/>

+ *       &lt;/sequence>

+ *       &lt;attribute name="gdRefR" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_GeomGuideName" />

+ *       &lt;attribute name="minR" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_AdjCoordinate" />

+ *       &lt;attribute name="maxR" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_AdjCoordinate" />

+ *       &lt;attribute name="gdRefAng" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_GeomGuideName" />

+ *       &lt;attribute name="minAng" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_AdjAngle" />

+ *       &lt;attribute name="maxAng" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_AdjAngle" />

+ *     &lt;/restriction>

+ *   &lt;/complexContent>

+ * &lt;/complexType>

+ * </pre>

+ * 

+ * 

+ */

+@XmlAccessorType(XmlAccessType.FIELD)

+@XmlType(name = "CT_PolarAdjustHandle", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", propOrder = {

+    "pos"

+})

+public class CTPolarAdjustHandle {

+

+    @XmlElement(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", required = true)

+    protected CTAdjPoint2D pos;

+    @XmlAttribute(name = "gdRefR")

+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)

+    protected String gdRefR;

+    @XmlAttribute(name = "minR")

+    protected String minR;

+    @XmlAttribute(name = "maxR")

+    protected String maxR;

+    @XmlAttribute(name = "gdRefAng")

+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)

+    protected String gdRefAng;

+    @XmlAttribute(name = "minAng")

+    protected String minAng;

+    @XmlAttribute(name = "maxAng")

+    protected String maxAng;

+

+    /**

+     * Gets the value of the pos property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link CTAdjPoint2D }

+     *     

+     */

+    public CTAdjPoint2D getPos() {

+        return pos;

+    }

+

+    /**

+     * Sets the value of the pos property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link CTAdjPoint2D }

+     *     

+     */

+    public void setPos(CTAdjPoint2D value) {

+        this.pos = value;

+    }

+

+    public boolean isSetPos() {

+        return (this.pos!= null);

+    }

+

+    /**

+     * Gets the value of the gdRefR property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link String }

+     *     

+     */

+    public String getGdRefR() {

+        return gdRefR;

+    }

+

+    /**

+     * Sets the value of the gdRefR property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link String }

+     *     

+     */

+    public void setGdRefR(String value) {

+        this.gdRefR = value;

+    }

+

+    public boolean isSetGdRefR() {

+        return (this.gdRefR!= null);

+    }

+

+    /**

+     * Gets the value of the minR property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link String }

+     *     

+     */

+    public String getMinR() {

+        return minR;

+    }

+

+    /**

+     * Sets the value of the minR property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link String }

+     *     

+     */

+    public void setMinR(String value) {

+        this.minR = value;

+    }

+

+    public boolean isSetMinR() {

+        return (this.minR!= null);

+    }

+

+    /**

+     * Gets the value of the maxR property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link String }

+     *     

+     */

+    public String getMaxR() {

+        return maxR;

+    }

+

+    /**

+     * Sets the value of the maxR property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link String }

+     *     

+     */

+    public void setMaxR(String value) {

+        this.maxR = value;

+    }

+

+    public boolean isSetMaxR() {

+        return (this.maxR!= null);

+    }

+

+    /**

+     * Gets the value of the gdRefAng property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link String }

+     *     

+     */

+    public String getGdRefAng() {

+        return gdRefAng;

+    }

+

+    /**

+     * Sets the value of the gdRefAng property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link String }

+     *     

+     */

+    public void setGdRefAng(String value) {

+        this.gdRefAng = value;

+    }

+

+    public boolean isSetGdRefAng() {

+        return (this.gdRefAng!= null);

+    }

+

+    /**

+     * Gets the value of the minAng property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link String }

+     *     

+     */

+    public String getMinAng() {

+        return minAng;

+    }

+

+    /**

+     * Sets the value of the minAng property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link String }

+     *     

+     */

+    public void setMinAng(String value) {

+        this.minAng = value;

+    }

+

+    public boolean isSetMinAng() {

+        return (this.minAng!= null);

+    }

+

+    /**

+     * Gets the value of the maxAng property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link String }

+     *     

+     */

+    public String getMaxAng() {

+        return maxAng;

+    }

+

+    /**

+     * Sets the value of the maxAng property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link String }

+     *     

+     */

+    public void setMaxAng(String value) {

+        this.maxAng = value;

+    }

+

+    public boolean isSetMaxAng() {

+        return (this.maxAng!= null);

+    }

+

+}

diff --git a/src/java/org/apache/poi/sl/draw/binding/CTPositiveFixedAngle.java b/src/java/org/apache/poi/sl/draw/binding/CTPositiveFixedAngle.java
new file mode 100644
index 0000000..962db95
--- /dev/null
+++ b/src/java/org/apache/poi/sl/draw/binding/CTPositiveFixedAngle.java
@@ -0,0 +1,70 @@
+/* ====================================================================

+   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.binding;

+

+import javax.xml.bind.annotation.XmlAccessType;

+import javax.xml.bind.annotation.XmlAccessorType;

+import javax.xml.bind.annotation.XmlAttribute;

+import javax.xml.bind.annotation.XmlType;

+

+

+/**

+ * <p>Java class for CT_PositiveFixedAngle complex type.

+ * 

+ * <p>The following schema fragment specifies the expected content contained within this class.

+ * 

+ * <pre>

+ * &lt;complexType name="CT_PositiveFixedAngle">

+ *   &lt;complexContent>

+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">

+ *       &lt;attribute name="val" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_PositiveFixedAngle" />

+ *     &lt;/restriction>

+ *   &lt;/complexContent>

+ * &lt;/complexType>

+ * </pre>

+ * 

+ * 

+ */

+@XmlAccessorType(XmlAccessType.FIELD)

+@XmlType(name = "CT_PositiveFixedAngle", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")

+public class CTPositiveFixedAngle {

+

+    @XmlAttribute(name = "val", required = true)

+    protected int val;

+

+    /**

+     * Gets the value of the val property.

+     * 

+     */

+    public int getVal() {

+        return val;

+    }

+

+    /**

+     * Sets the value of the val property.

+     * 

+     */

+    public void setVal(int value) {

+        this.val = value;

+    }

+

+    public boolean isSetVal() {

+        return true;

+    }

+

+}

diff --git a/src/java/org/apache/poi/sl/draw/binding/CTPositiveFixedPercentage.java b/src/java/org/apache/poi/sl/draw/binding/CTPositiveFixedPercentage.java
new file mode 100644
index 0000000..001f01a
--- /dev/null
+++ b/src/java/org/apache/poi/sl/draw/binding/CTPositiveFixedPercentage.java
@@ -0,0 +1,70 @@
+/* ====================================================================

+   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.binding;

+

+import javax.xml.bind.annotation.XmlAccessType;

+import javax.xml.bind.annotation.XmlAccessorType;

+import javax.xml.bind.annotation.XmlAttribute;

+import javax.xml.bind.annotation.XmlType;

+

+

+/**

+ * <p>Java class for CT_PositiveFixedPercentage complex type.

+ * 

+ * <p>The following schema fragment specifies the expected content contained within this class.

+ * 

+ * <pre>

+ * &lt;complexType name="CT_PositiveFixedPercentage">

+ *   &lt;complexContent>

+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">

+ *       &lt;attribute name="val" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_PositiveFixedPercentage" />

+ *     &lt;/restriction>

+ *   &lt;/complexContent>

+ * &lt;/complexType>

+ * </pre>

+ * 

+ * 

+ */

+@XmlAccessorType(XmlAccessType.FIELD)

+@XmlType(name = "CT_PositiveFixedPercentage", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")

+public class CTPositiveFixedPercentage {

+

+    @XmlAttribute(name = "val", required = true)

+    protected int val;

+

+    /**

+     * Gets the value of the val property.

+     * 

+     */

+    public int getVal() {

+        return val;

+    }

+

+    /**

+     * Sets the value of the val property.

+     * 

+     */

+    public void setVal(int value) {

+        this.val = value;

+    }

+

+    public boolean isSetVal() {

+        return true;

+    }

+

+}

diff --git a/src/java/org/apache/poi/sl/draw/binding/CTPositivePercentage.java b/src/java/org/apache/poi/sl/draw/binding/CTPositivePercentage.java
new file mode 100644
index 0000000..8fc61f3
--- /dev/null
+++ b/src/java/org/apache/poi/sl/draw/binding/CTPositivePercentage.java
@@ -0,0 +1,70 @@
+/* ====================================================================

+   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.binding;

+

+import javax.xml.bind.annotation.XmlAccessType;

+import javax.xml.bind.annotation.XmlAccessorType;

+import javax.xml.bind.annotation.XmlAttribute;

+import javax.xml.bind.annotation.XmlType;

+

+

+/**

+ * <p>Java class for CT_PositivePercentage complex type.

+ * 

+ * <p>The following schema fragment specifies the expected content contained within this class.

+ * 

+ * <pre>

+ * &lt;complexType name="CT_PositivePercentage">

+ *   &lt;complexContent>

+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">

+ *       &lt;attribute name="val" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_PositivePercentage" />

+ *     &lt;/restriction>

+ *   &lt;/complexContent>

+ * &lt;/complexType>

+ * </pre>

+ * 

+ * 

+ */

+@XmlAccessorType(XmlAccessType.FIELD)

+@XmlType(name = "CT_PositivePercentage", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")

+public class CTPositivePercentage {

+

+    @XmlAttribute(name = "val", required = true)

+    protected int val;

+

+    /**

+     * Gets the value of the val property.

+     * 

+     */

+    public int getVal() {

+        return val;

+    }

+

+    /**

+     * Sets the value of the val property.

+     * 

+     */

+    public void setVal(int value) {

+        this.val = value;

+    }

+

+    public boolean isSetVal() {

+        return true;

+    }

+

+}

diff --git a/src/java/org/apache/poi/sl/draw/binding/CTPositiveSize2D.java b/src/java/org/apache/poi/sl/draw/binding/CTPositiveSize2D.java
new file mode 100644
index 0000000..c8d76e6
--- /dev/null
+++ b/src/java/org/apache/poi/sl/draw/binding/CTPositiveSize2D.java
@@ -0,0 +1,93 @@
+/* ====================================================================

+   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.binding;

+

+import javax.xml.bind.annotation.XmlAccessType;

+import javax.xml.bind.annotation.XmlAccessorType;

+import javax.xml.bind.annotation.XmlAttribute;

+import javax.xml.bind.annotation.XmlType;

+

+

+/**

+ * <p>Java class for CT_PositiveSize2D complex type.

+ * 

+ * <p>The following schema fragment specifies the expected content contained within this class.

+ * 

+ * <pre>

+ * &lt;complexType name="CT_PositiveSize2D">

+ *   &lt;complexContent>

+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">

+ *       &lt;attribute name="cx" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_PositiveCoordinate" />

+ *       &lt;attribute name="cy" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_PositiveCoordinate" />

+ *     &lt;/restriction>

+ *   &lt;/complexContent>

+ * &lt;/complexType>

+ * </pre>

+ * 

+ * 

+ */

+@XmlAccessorType(XmlAccessType.FIELD)

+@XmlType(name = "CT_PositiveSize2D", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")

+public class CTPositiveSize2D {

+

+    @XmlAttribute(name = "cx", required = true)

+    protected long cx;

+    @XmlAttribute(name = "cy", required = true)

+    protected long cy;

+

+    /**

+     * Gets the value of the cx property.

+     * 

+     */

+    public long getCx() {

+        return cx;

+    }

+

+    /**

+     * Sets the value of the cx property.

+     * 

+     */

+    public void setCx(long value) {

+        this.cx = value;

+    }

+

+    public boolean isSetCx() {

+        return true;

+    }

+

+    /**

+     * Gets the value of the cy property.

+     * 

+     */

+    public long getCy() {

+        return cy;

+    }

+

+    /**

+     * Sets the value of the cy property.

+     * 

+     */

+    public void setCy(long value) {

+        this.cy = value;

+    }

+

+    public boolean isSetCy() {

+        return true;

+    }

+

+}

diff --git a/src/java/org/apache/poi/sl/draw/binding/CTPresetColor.java b/src/java/org/apache/poi/sl/draw/binding/CTPresetColor.java
new file mode 100644
index 0000000..e240a71
--- /dev/null
+++ b/src/java/org/apache/poi/sl/draw/binding/CTPresetColor.java
@@ -0,0 +1,183 @@
+/* ====================================================================

+   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.binding;

+

+import java.util.ArrayList;

+import java.util.List;

+import javax.xml.bind.JAXBElement;

+import javax.xml.bind.annotation.XmlAccessType;

+import javax.xml.bind.annotation.XmlAccessorType;

+import javax.xml.bind.annotation.XmlAttribute;

+import javax.xml.bind.annotation.XmlElementRef;

+import javax.xml.bind.annotation.XmlElementRefs;

+import javax.xml.bind.annotation.XmlType;

+

+

+/**

+ * <p>Java class for CT_PresetColor complex type.

+ * 

+ * <p>The following schema fragment specifies the expected content contained within this class.

+ * 

+ * <pre>

+ * &lt;complexType name="CT_PresetColor">

+ *   &lt;complexContent>

+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">

+ *       &lt;sequence>

+ *         &lt;group ref="{http://schemas.openxmlformats.org/drawingml/2006/main}EG_ColorTransform" maxOccurs="unbounded" minOccurs="0"/>

+ *       &lt;/sequence>

+ *       &lt;attribute name="val" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_PresetColorVal" />

+ *     &lt;/restriction>

+ *   &lt;/complexContent>

+ * &lt;/complexType>

+ * </pre>

+ * 

+ * 

+ */

+@XmlAccessorType(XmlAccessType.FIELD)

+@XmlType(name = "CT_PresetColor", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", propOrder = {

+    "egColorTransform"

+})

+public class CTPresetColor {

+

+    @XmlElementRefs({

+        @XmlElementRef(name = "redOff", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "invGamma", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "blueOff", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "greenOff", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "green", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "alphaMod", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "inv", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "gray", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "blueMod", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "alpha", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "shade", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "lumOff", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "hueMod", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "blue", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "comp", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "alphaOff", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "hueOff", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "satOff", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "hue", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "sat", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "red", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "redMod", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "tint", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "greenMod", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "gamma", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "satMod", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "lumMod", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "lum", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false)

+    })

+    protected List<JAXBElement<?>> egColorTransform;

+    @XmlAttribute(name = "val")

+    protected STPresetColorVal val;

+

+    /**

+     * Gets the value of the egColorTransform property.

+     * 

+     * <p>

+     * This accessor method returns a reference to the live list,

+     * not a snapshot. Therefore any modification you make to the

+     * returned list will be present inside the JAXB object.

+     * This is why there is not a <CODE>set</CODE> method for the egColorTransform property.

+     * 

+     * <p>

+     * For example, to add a new item, do as follows:

+     * <pre>

+     *    getEGColorTransform().add(newItem);

+     * </pre>

+     * 

+     * 

+     * <p>

+     * Objects of the following type(s) are allowed in the list

+     * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTInverseGammaTransform }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPositivePercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTInverseTransform }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTGrayscaleTransform }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPositiveFixedPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPositiveFixedPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPositivePercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTComplementTransform }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTFixedPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTAngle }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPositiveFixedAngle }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPositiveFixedPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTGammaTransform }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}

+     * 

+     * 

+     */

+    public List<JAXBElement<?>> getEGColorTransform() {

+        if (egColorTransform == null) {

+            egColorTransform = new ArrayList<JAXBElement<?>>();

+        }

+        return this.egColorTransform;

+    }

+

+    public boolean isSetEGColorTransform() {

+        return ((this.egColorTransform!= null)&&(!this.egColorTransform.isEmpty()));

+    }

+

+    public void unsetEGColorTransform() {

+        this.egColorTransform = null;

+    }

+

+    /**

+     * Gets the value of the val property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link STPresetColorVal }

+     *     

+     */

+    public STPresetColorVal getVal() {

+        return val;

+    }

+

+    /**

+     * Sets the value of the val property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link STPresetColorVal }

+     *     

+     */

+    public void setVal(STPresetColorVal value) {

+        this.val = value;

+    }

+

+    public boolean isSetVal() {

+        return (this.val!= null);

+    }

+

+}

diff --git a/src/java/org/apache/poi/sl/draw/binding/CTPresetGeometry2D.java b/src/java/org/apache/poi/sl/draw/binding/CTPresetGeometry2D.java
new file mode 100644
index 0000000..b55b02e
--- /dev/null
+++ b/src/java/org/apache/poi/sl/draw/binding/CTPresetGeometry2D.java
@@ -0,0 +1,114 @@
+/* ====================================================================

+   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.binding;

+

+import javax.xml.bind.annotation.XmlAccessType;

+import javax.xml.bind.annotation.XmlAccessorType;

+import javax.xml.bind.annotation.XmlAttribute;

+import javax.xml.bind.annotation.XmlElement;

+import javax.xml.bind.annotation.XmlType;

+

+

+/**

+ * <p>Java class for CT_PresetGeometry2D complex type.

+ * 

+ * <p>The following schema fragment specifies the expected content contained within this class.

+ * 

+ * <pre>

+ * &lt;complexType name="CT_PresetGeometry2D">

+ *   &lt;complexContent>

+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">

+ *       &lt;sequence>

+ *         &lt;element name="avLst" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_GeomGuideList" minOccurs="0"/>

+ *       &lt;/sequence>

+ *       &lt;attribute name="prst" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_ShapeType" />

+ *     &lt;/restriction>

+ *   &lt;/complexContent>

+ * &lt;/complexType>

+ * </pre>

+ * 

+ * 

+ */

+@XmlAccessorType(XmlAccessType.FIELD)

+@XmlType(name = "CT_PresetGeometry2D", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", propOrder = {

+    "avLst"

+})

+public class CTPresetGeometry2D {

+

+    @XmlElement(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")

+    protected CTGeomGuideList avLst;

+    @XmlAttribute(name = "prst", required = true)

+    protected STShapeType prst;

+

+    /**

+     * Gets the value of the avLst property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link CTGeomGuideList }

+     *     

+     */

+    public CTGeomGuideList getAvLst() {

+        return avLst;

+    }

+

+    /**

+     * Sets the value of the avLst property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link CTGeomGuideList }

+     *     

+     */

+    public void setAvLst(CTGeomGuideList value) {

+        this.avLst = value;

+    }

+

+    public boolean isSetAvLst() {

+        return (this.avLst!= null);

+    }

+

+    /**

+     * Gets the value of the prst property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link STShapeType }

+     *     

+     */

+    public STShapeType getPrst() {

+        return prst;

+    }

+

+    /**

+     * Sets the value of the prst property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link STShapeType }

+     *     

+     */

+    public void setPrst(STShapeType value) {

+        this.prst = value;

+    }

+

+    public boolean isSetPrst() {

+        return (this.prst!= null);

+    }

+

+}

diff --git a/src/java/org/apache/poi/sl/draw/binding/CTPresetTextShape.java b/src/java/org/apache/poi/sl/draw/binding/CTPresetTextShape.java
new file mode 100644
index 0000000..f7082b3
--- /dev/null
+++ b/src/java/org/apache/poi/sl/draw/binding/CTPresetTextShape.java
@@ -0,0 +1,114 @@
+/* ====================================================================

+   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.binding;

+

+import javax.xml.bind.annotation.XmlAccessType;

+import javax.xml.bind.annotation.XmlAccessorType;

+import javax.xml.bind.annotation.XmlAttribute;

+import javax.xml.bind.annotation.XmlElement;

+import javax.xml.bind.annotation.XmlType;

+

+

+/**

+ * <p>Java class for CT_PresetTextShape complex type.

+ * 

+ * <p>The following schema fragment specifies the expected content contained within this class.

+ * 

+ * <pre>

+ * &lt;complexType name="CT_PresetTextShape">

+ *   &lt;complexContent>

+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">

+ *       &lt;sequence>

+ *         &lt;element name="avLst" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_GeomGuideList" minOccurs="0"/>

+ *       &lt;/sequence>

+ *       &lt;attribute name="prst" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_TextShapeType" />

+ *     &lt;/restriction>

+ *   &lt;/complexContent>

+ * &lt;/complexType>

+ * </pre>

+ * 

+ * 

+ */

+@XmlAccessorType(XmlAccessType.FIELD)

+@XmlType(name = "CT_PresetTextShape", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", propOrder = {

+    "avLst"

+})

+public class CTPresetTextShape {

+

+    @XmlElement(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")

+    protected CTGeomGuideList avLst;

+    @XmlAttribute(name = "prst", required = true)

+    protected STTextShapeType prst;

+

+    /**

+     * Gets the value of the avLst property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link CTGeomGuideList }

+     *     

+     */

+    public CTGeomGuideList getAvLst() {

+        return avLst;

+    }

+

+    /**

+     * Sets the value of the avLst property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link CTGeomGuideList }

+     *     

+     */

+    public void setAvLst(CTGeomGuideList value) {

+        this.avLst = value;

+    }

+

+    public boolean isSetAvLst() {

+        return (this.avLst!= null);

+    }

+

+    /**

+     * Gets the value of the prst property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link STTextShapeType }

+     *     

+     */

+    public STTextShapeType getPrst() {

+        return prst;

+    }

+

+    /**

+     * Sets the value of the prst property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link STTextShapeType }

+     *     

+     */

+    public void setPrst(STTextShapeType value) {

+        this.prst = value;

+    }

+

+    public boolean isSetPrst() {

+        return (this.prst!= null);

+    }

+

+}

diff --git a/src/java/org/apache/poi/sl/draw/binding/CTRatio.java b/src/java/org/apache/poi/sl/draw/binding/CTRatio.java
new file mode 100644
index 0000000..3a951c1
--- /dev/null
+++ b/src/java/org/apache/poi/sl/draw/binding/CTRatio.java
@@ -0,0 +1,93 @@
+/* ====================================================================

+   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.binding;

+

+import javax.xml.bind.annotation.XmlAccessType;

+import javax.xml.bind.annotation.XmlAccessorType;

+import javax.xml.bind.annotation.XmlAttribute;

+import javax.xml.bind.annotation.XmlType;

+

+

+/**

+ * <p>Java class for CT_Ratio complex type.

+ * 

+ * <p>The following schema fragment specifies the expected content contained within this class.

+ * 

+ * <pre>

+ * &lt;complexType name="CT_Ratio">

+ *   &lt;complexContent>

+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">

+ *       &lt;attribute name="n" use="required" type="{http://www.w3.org/2001/XMLSchema}long" />

+ *       &lt;attribute name="d" use="required" type="{http://www.w3.org/2001/XMLSchema}long" />

+ *     &lt;/restriction>

+ *   &lt;/complexContent>

+ * &lt;/complexType>

+ * </pre>

+ * 

+ * 

+ */

+@XmlAccessorType(XmlAccessType.FIELD)

+@XmlType(name = "CT_Ratio", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")

+public class CTRatio {

+

+    @XmlAttribute(name = "n", required = true)

+    protected long n;

+    @XmlAttribute(name = "d", required = true)

+    protected long d;

+

+    /**

+     * Gets the value of the n property.

+     * 

+     */

+    public long getN() {

+        return n;

+    }

+

+    /**

+     * Sets the value of the n property.

+     * 

+     */

+    public void setN(long value) {

+        this.n = value;

+    }

+

+    public boolean isSetN() {

+        return true;

+    }

+

+    /**

+     * Gets the value of the d property.

+     * 

+     */

+    public long getD() {

+        return d;

+    }

+

+    /**

+     * Sets the value of the d property.

+     * 

+     */

+    public void setD(long value) {

+        this.d = value;

+    }

+

+    public boolean isSetD() {

+        return true;

+    }

+

+}

diff --git a/src/java/org/apache/poi/sl/draw/binding/CTRelativeRect.java b/src/java/org/apache/poi/sl/draw/binding/CTRelativeRect.java
new file mode 100644
index 0000000..e332bd8
--- /dev/null
+++ b/src/java/org/apache/poi/sl/draw/binding/CTRelativeRect.java
@@ -0,0 +1,203 @@
+/* ====================================================================

+   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.binding;

+

+import javax.xml.bind.annotation.XmlAccessType;

+import javax.xml.bind.annotation.XmlAccessorType;

+import javax.xml.bind.annotation.XmlAttribute;

+import javax.xml.bind.annotation.XmlType;

+

+

+/**

+ * <p>Java class for CT_RelativeRect complex type.

+ * 

+ * <p>The following schema fragment specifies the expected content contained within this class.

+ * 

+ * <pre>

+ * &lt;complexType name="CT_RelativeRect">

+ *   &lt;complexContent>

+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">

+ *       &lt;attribute name="l" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_Percentage" default="0" />

+ *       &lt;attribute name="t" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_Percentage" default="0" />

+ *       &lt;attribute name="r" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_Percentage" default="0" />

+ *       &lt;attribute name="b" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_Percentage" default="0" />

+ *     &lt;/restriction>

+ *   &lt;/complexContent>

+ * &lt;/complexType>

+ * </pre>

+ * 

+ * 

+ */

+@XmlAccessorType(XmlAccessType.FIELD)

+@XmlType(name = "CT_RelativeRect", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")

+public class CTRelativeRect {

+

+    @XmlAttribute(name = "l")

+    protected Integer l;

+    @XmlAttribute(name = "t")

+    protected Integer t;

+    @XmlAttribute(name = "r")

+    protected Integer r;

+    @XmlAttribute(name = "b")

+    protected Integer b;

+

+    /**

+     * Gets the value of the l property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link Integer }

+     *     

+     */

+    public int getL() {

+        if (l == null) {

+            return  0;

+        } else {

+            return l;

+        }

+    }

+

+    /**

+     * Sets the value of the l property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link Integer }

+     *     

+     */

+    public void setL(int value) {

+        this.l = value;

+    }

+

+    public boolean isSetL() {

+        return (this.l!= null);

+    }

+

+    public void unsetL() {

+        this.l = null;

+    }

+

+    /**

+     * Gets the value of the t property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link Integer }

+     *     

+     */

+    public int getT() {

+        if (t == null) {

+            return  0;

+        } else {

+            return t;

+        }

+    }

+

+    /**

+     * Sets the value of the t property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link Integer }

+     *     

+     */

+    public void setT(int value) {

+        this.t = value;

+    }

+

+    public boolean isSetT() {

+        return (this.t!= null);

+    }

+

+    public void unsetT() {

+        this.t = null;

+    }

+

+    /**

+     * Gets the value of the r property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link Integer }

+     *     

+     */

+    public int getR() {

+        if (r == null) {

+            return  0;

+        } else {

+            return r;

+        }

+    }

+

+    /**

+     * Sets the value of the r property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link Integer }

+     *     

+     */

+    public void setR(int value) {

+        this.r = value;

+    }

+

+    public boolean isSetR() {

+        return (this.r!= null);

+    }

+

+    public void unsetR() {

+        this.r = null;

+    }

+

+    /**

+     * Gets the value of the b property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link Integer }

+     *     

+     */

+    public int getB() {

+        if (b == null) {

+            return  0;

+        } else {

+            return b;

+        }

+    }

+

+    /**

+     * Sets the value of the b property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link Integer }

+     *     

+     */

+    public void setB(int value) {

+        this.b = value;

+    }

+

+    public boolean isSetB() {

+        return (this.b!= null);

+    }

+

+    public void unsetB() {

+        this.b = null;

+    }

+

+}

diff --git a/src/java/org/apache/poi/sl/draw/binding/CTSRgbColor.java b/src/java/org/apache/poi/sl/draw/binding/CTSRgbColor.java
new file mode 100644
index 0000000..ef920d6
--- /dev/null
+++ b/src/java/org/apache/poi/sl/draw/binding/CTSRgbColor.java
@@ -0,0 +1,186 @@
+/* ====================================================================

+   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.binding;

+

+import java.util.ArrayList;

+import java.util.List;

+import javax.xml.bind.JAXBElement;

+import javax.xml.bind.annotation.XmlAccessType;

+import javax.xml.bind.annotation.XmlAccessorType;

+import javax.xml.bind.annotation.XmlAttribute;

+import javax.xml.bind.annotation.XmlElementRef;

+import javax.xml.bind.annotation.XmlElementRefs;

+import javax.xml.bind.annotation.XmlType;

+import javax.xml.bind.annotation.adapters.HexBinaryAdapter;

+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;

+

+

+/**

+ * <p>Java class for CT_SRgbColor complex type.

+ * 

+ * <p>The following schema fragment specifies the expected content contained within this class.

+ * 

+ * <pre>

+ * &lt;complexType name="CT_SRgbColor">

+ *   &lt;complexContent>

+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">

+ *       &lt;sequence>

+ *         &lt;group ref="{http://schemas.openxmlformats.org/drawingml/2006/main}EG_ColorTransform" maxOccurs="unbounded" minOccurs="0"/>

+ *       &lt;/sequence>

+ *       &lt;attribute name="val" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_HexBinary3" />

+ *     &lt;/restriction>

+ *   &lt;/complexContent>

+ * &lt;/complexType>

+ * </pre>

+ * 

+ * 

+ */

+@XmlAccessorType(XmlAccessType.FIELD)

+@XmlType(name = "CT_SRgbColor", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", propOrder = {

+    "egColorTransform"

+})

+public class CTSRgbColor {

+

+    @XmlElementRefs({

+        @XmlElementRef(name = "comp", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "lumOff", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "gray", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "blueMod", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "greenMod", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "satMod", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "redMod", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "alphaMod", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "hue", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "inv", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "tint", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "lumMod", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "invGamma", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "shade", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "alphaOff", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "satOff", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "gamma", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "blueOff", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "lum", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "alpha", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "hueMod", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "red", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "greenOff", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "sat", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "green", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "redOff", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "hueOff", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "blue", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false)

+    })

+    protected List<JAXBElement<?>> egColorTransform;

+    @XmlAttribute(name = "val", required = true)

+    @XmlJavaTypeAdapter(HexBinaryAdapter.class)

+    protected byte[] val;

+

+    /**

+     * Gets the value of the egColorTransform property.

+     * 

+     * <p>

+     * This accessor method returns a reference to the live list,

+     * not a snapshot. Therefore any modification you make to the

+     * returned list will be present inside the JAXB object.

+     * This is why there is not a <CODE>set</CODE> method for the egColorTransform property.

+     * 

+     * <p>

+     * For example, to add a new item, do as follows:

+     * <pre>

+     *    getEGColorTransform().add(newItem);

+     * </pre>

+     * 

+     * 

+     * <p>

+     * Objects of the following type(s) are allowed in the list

+     * {@link JAXBElement }{@code <}{@link CTComplementTransform }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTGrayscaleTransform }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPositivePercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPositiveFixedAngle }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTInverseTransform }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPositiveFixedPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTInverseGammaTransform }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPositiveFixedPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTFixedPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTGammaTransform }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPositiveFixedPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPositivePercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTAngle }{@code >}

+     * 

+     * 

+     */

+    public List<JAXBElement<?>> getEGColorTransform() {

+        if (egColorTransform == null) {

+            egColorTransform = new ArrayList<JAXBElement<?>>();

+        }

+        return this.egColorTransform;

+    }

+

+    public boolean isSetEGColorTransform() {

+        return ((this.egColorTransform!= null)&&(!this.egColorTransform.isEmpty()));

+    }

+

+    public void unsetEGColorTransform() {

+        this.egColorTransform = null;

+    }

+

+    /**

+     * Gets the value of the val property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link String }

+     *     

+     */

+    public byte[] getVal() {

+        return val;

+    }

+

+    /**

+     * Sets the value of the val property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link String }

+     *     

+     */

+    public void setVal(byte[] value) {

+        this.val = value;

+    }

+

+    public boolean isSetVal() {

+        return (this.val!= null);

+    }

+

+}

diff --git a/src/java/org/apache/poi/sl/draw/binding/CTScRgbColor.java b/src/java/org/apache/poi/sl/draw/binding/CTScRgbColor.java
new file mode 100644
index 0000000..335e4b2
--- /dev/null
+++ b/src/java/org/apache/poi/sl/draw/binding/CTScRgbColor.java
@@ -0,0 +1,221 @@
+/* ====================================================================

+   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.binding;

+

+import java.util.ArrayList;

+import java.util.List;

+import javax.xml.bind.JAXBElement;

+import javax.xml.bind.annotation.XmlAccessType;

+import javax.xml.bind.annotation.XmlAccessorType;

+import javax.xml.bind.annotation.XmlAttribute;

+import javax.xml.bind.annotation.XmlElementRef;

+import javax.xml.bind.annotation.XmlElementRefs;

+import javax.xml.bind.annotation.XmlType;

+

+

+/**

+ * <p>Java class for CT_ScRgbColor complex type.

+ * 

+ * <p>The following schema fragment specifies the expected content contained within this class.

+ * 

+ * <pre>

+ * &lt;complexType name="CT_ScRgbColor">

+ *   &lt;complexContent>

+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">

+ *       &lt;sequence>

+ *         &lt;group ref="{http://schemas.openxmlformats.org/drawingml/2006/main}EG_ColorTransform" maxOccurs="unbounded" minOccurs="0"/>

+ *       &lt;/sequence>

+ *       &lt;attribute name="r" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_Percentage" />

+ *       &lt;attribute name="g" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_Percentage" />

+ *       &lt;attribute name="b" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_Percentage" />

+ *     &lt;/restriction>

+ *   &lt;/complexContent>

+ * &lt;/complexType>

+ * </pre>

+ * 

+ * 

+ */

+@XmlAccessorType(XmlAccessType.FIELD)

+@XmlType(name = "CT_ScRgbColor", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", propOrder = {

+    "egColorTransform"

+})

+public class CTScRgbColor {

+

+    @XmlElementRefs({

+        @XmlElementRef(name = "redMod", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "gray", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "satMod", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "green", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "blue", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "hueOff", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "sat", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "tint", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "gamma", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "inv", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "comp", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "satOff", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "hueMod", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "red", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "greenOff", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "hue", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "lumMod", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "alphaMod", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "lumOff", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "blueOff", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "blueMod", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "lum", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "redOff", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "greenMod", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "shade", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "invGamma", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "alphaOff", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "alpha", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false)

+    })

+    protected List<JAXBElement<?>> egColorTransform;

+    @XmlAttribute(name = "r", required = true)

+    protected int r;

+    @XmlAttribute(name = "g", required = true)

+    protected int g;

+    @XmlAttribute(name = "b", required = true)

+    protected int b;

+

+    /**

+     * Gets the value of the egColorTransform property.

+     * 

+     * <p>

+     * This accessor method returns a reference to the live list,

+     * not a snapshot. Therefore any modification you make to the

+     * returned list will be present inside the JAXB object.

+     * This is why there is not a <CODE>set</CODE> method for the egColorTransform property.

+     * 

+     * <p>

+     * For example, to add a new item, do as follows:

+     * <pre>

+     *    getEGColorTransform().add(newItem);

+     * </pre>

+     * 

+     * 

+     * <p>

+     * Objects of the following type(s) are allowed in the list

+     * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTGrayscaleTransform }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTAngle }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPositiveFixedPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTGammaTransform }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTInverseTransform }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTComplementTransform }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPositivePercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPositiveFixedAngle }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPositivePercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPositiveFixedPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTInverseGammaTransform }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPositiveFixedPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTFixedPercentage }{@code >}

+     * 

+     * 

+     */

+    public List<JAXBElement<?>> getEGColorTransform() {

+        if (egColorTransform == null) {

+            egColorTransform = new ArrayList<JAXBElement<?>>();

+        }

+        return this.egColorTransform;

+    }

+

+    public boolean isSetEGColorTransform() {

+        return ((this.egColorTransform!= null)&&(!this.egColorTransform.isEmpty()));

+    }

+

+    public void unsetEGColorTransform() {

+        this.egColorTransform = null;

+    }

+

+    /**

+     * Gets the value of the r property.

+     * 

+     */

+    public int getR() {

+        return r;

+    }

+

+    /**

+     * Sets the value of the r property.

+     * 

+     */

+    public void setR(int value) {

+        this.r = value;

+    }

+

+    public boolean isSetR() {

+        return true;

+    }

+

+    /**

+     * Gets the value of the g property.

+     * 

+     */

+    public int getG() {

+        return g;

+    }

+

+    /**

+     * Sets the value of the g property.

+     * 

+     */

+    public void setG(int value) {

+        this.g = value;

+    }

+

+    public boolean isSetG() {

+        return true;

+    }

+

+    /**

+     * Gets the value of the b property.

+     * 

+     */

+    public int getB() {

+        return b;

+    }

+

+    /**

+     * Sets the value of the b property.

+     * 

+     */

+    public void setB(int value) {

+        this.b = value;

+    }

+

+    public boolean isSetB() {

+        return true;

+    }

+

+}

diff --git a/src/java/org/apache/poi/sl/draw/binding/CTScale2D.java b/src/java/org/apache/poi/sl/draw/binding/CTScale2D.java
new file mode 100644
index 0000000..2e8eba1
--- /dev/null
+++ b/src/java/org/apache/poi/sl/draw/binding/CTScale2D.java
@@ -0,0 +1,114 @@
+/* ====================================================================

+   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.binding;

+

+import javax.xml.bind.annotation.XmlAccessType;

+import javax.xml.bind.annotation.XmlAccessorType;

+import javax.xml.bind.annotation.XmlElement;

+import javax.xml.bind.annotation.XmlType;

+

+

+/**

+ * <p>Java class for CT_Scale2D complex type.

+ * 

+ * <p>The following schema fragment specifies the expected content contained within this class.

+ * 

+ * <pre>

+ * &lt;complexType name="CT_Scale2D">

+ *   &lt;complexContent>

+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">

+ *       &lt;sequence>

+ *         &lt;element name="sx" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_Ratio"/>

+ *         &lt;element name="sy" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_Ratio"/>

+ *       &lt;/sequence>

+ *     &lt;/restriction>

+ *   &lt;/complexContent>

+ * &lt;/complexType>

+ * </pre>

+ * 

+ * 

+ */

+@XmlAccessorType(XmlAccessType.FIELD)

+@XmlType(name = "CT_Scale2D", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", propOrder = {

+    "sx",

+    "sy"

+})

+public class CTScale2D {

+

+    @XmlElement(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", required = true)

+    protected CTRatio sx;

+    @XmlElement(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", required = true)

+    protected CTRatio sy;

+

+    /**

+     * Gets the value of the sx property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link CTRatio }

+     *     

+     */

+    public CTRatio getSx() {

+        return sx;

+    }

+

+    /**

+     * Sets the value of the sx property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link CTRatio }

+     *     

+     */

+    public void setSx(CTRatio value) {

+        this.sx = value;

+    }

+

+    public boolean isSetSx() {

+        return (this.sx!= null);

+    }

+

+    /**

+     * Gets the value of the sy property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link CTRatio }

+     *     

+     */

+    public CTRatio getSy() {

+        return sy;

+    }

+

+    /**

+     * Sets the value of the sy property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link CTRatio }

+     *     

+     */

+    public void setSy(CTRatio value) {

+        this.sy = value;

+    }

+

+    public boolean isSetSy() {

+        return (this.sy!= null);

+    }

+

+}

diff --git a/src/java/org/apache/poi/sl/draw/binding/CTSchemeColor.java b/src/java/org/apache/poi/sl/draw/binding/CTSchemeColor.java
new file mode 100644
index 0000000..7febaad
--- /dev/null
+++ b/src/java/org/apache/poi/sl/draw/binding/CTSchemeColor.java
@@ -0,0 +1,183 @@
+/* ====================================================================

+   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.binding;

+

+import java.util.ArrayList;

+import java.util.List;

+import javax.xml.bind.JAXBElement;

+import javax.xml.bind.annotation.XmlAccessType;

+import javax.xml.bind.annotation.XmlAccessorType;

+import javax.xml.bind.annotation.XmlAttribute;

+import javax.xml.bind.annotation.XmlElementRef;

+import javax.xml.bind.annotation.XmlElementRefs;

+import javax.xml.bind.annotation.XmlType;

+

+

+/**

+ * <p>Java class for CT_SchemeColor complex type.

+ * 

+ * <p>The following schema fragment specifies the expected content contained within this class.

+ * 

+ * <pre>

+ * &lt;complexType name="CT_SchemeColor">

+ *   &lt;complexContent>

+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">

+ *       &lt;sequence>

+ *         &lt;group ref="{http://schemas.openxmlformats.org/drawingml/2006/main}EG_ColorTransform" maxOccurs="unbounded" minOccurs="0"/>

+ *       &lt;/sequence>

+ *       &lt;attribute name="val" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_SchemeColorVal" />

+ *     &lt;/restriction>

+ *   &lt;/complexContent>

+ * &lt;/complexType>

+ * </pre>

+ * 

+ * 

+ */

+@XmlAccessorType(XmlAccessType.FIELD)

+@XmlType(name = "CT_SchemeColor", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", propOrder = {

+    "egColorTransform"

+})

+public class CTSchemeColor {

+

+    @XmlElementRefs({

+        @XmlElementRef(name = "lumMod", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "inv", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "satMod", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "blue", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "blueOff", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "shade", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "gray", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "satOff", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "sat", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "alphaOff", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "blueMod", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "red", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "hueMod", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "tint", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "green", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "greenOff", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "redMod", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "hueOff", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "alpha", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "alphaMod", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "lum", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "lumOff", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "redOff", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "gamma", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "greenMod", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "comp", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "hue", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "invGamma", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false)

+    })

+    protected List<JAXBElement<?>> egColorTransform;

+    @XmlAttribute(name = "val", required = true)

+    protected STSchemeColorVal val;

+

+    /**

+     * Gets the value of the egColorTransform property.

+     * 

+     * <p>

+     * This accessor method returns a reference to the live list,

+     * not a snapshot. Therefore any modification you make to the

+     * returned list will be present inside the JAXB object.

+     * This is why there is not a <CODE>set</CODE> method for the egColorTransform property.

+     * 

+     * <p>

+     * For example, to add a new item, do as follows:

+     * <pre>

+     *    getEGColorTransform().add(newItem);

+     * </pre>

+     * 

+     * 

+     * <p>

+     * Objects of the following type(s) are allowed in the list

+     * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTInverseTransform }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPositiveFixedPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTGrayscaleTransform }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTFixedPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPositivePercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPositiveFixedPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTAngle }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPositiveFixedPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPositivePercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTGammaTransform }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTComplementTransform }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPositiveFixedAngle }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTInverseGammaTransform }{@code >}

+     * 

+     * 

+     */

+    public List<JAXBElement<?>> getEGColorTransform() {

+        if (egColorTransform == null) {

+            egColorTransform = new ArrayList<JAXBElement<?>>();

+        }

+        return this.egColorTransform;

+    }

+

+    public boolean isSetEGColorTransform() {

+        return ((this.egColorTransform!= null)&&(!this.egColorTransform.isEmpty()));

+    }

+

+    public void unsetEGColorTransform() {

+        this.egColorTransform = null;

+    }

+

+    /**

+     * Gets the value of the val property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link STSchemeColorVal }

+     *     

+     */

+    public STSchemeColorVal getVal() {

+        return val;

+    }

+

+    /**

+     * Sets the value of the val property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link STSchemeColorVal }

+     *     

+     */

+    public void setVal(STSchemeColorVal value) {

+        this.val = value;

+    }

+

+    public boolean isSetVal() {

+        return (this.val!= null);

+    }

+

+}

diff --git a/src/java/org/apache/poi/sl/draw/binding/CTSphereCoords.java b/src/java/org/apache/poi/sl/draw/binding/CTSphereCoords.java
new file mode 100644
index 0000000..a29d744
--- /dev/null
+++ b/src/java/org/apache/poi/sl/draw/binding/CTSphereCoords.java
@@ -0,0 +1,116 @@
+/* ====================================================================

+   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.binding;

+

+import javax.xml.bind.annotation.XmlAccessType;

+import javax.xml.bind.annotation.XmlAccessorType;

+import javax.xml.bind.annotation.XmlAttribute;

+import javax.xml.bind.annotation.XmlType;

+

+

+/**

+ * <p>Java class for CT_SphereCoords complex type.

+ * 

+ * <p>The following schema fragment specifies the expected content contained within this class.

+ * 

+ * <pre>

+ * &lt;complexType name="CT_SphereCoords">

+ *   &lt;complexContent>

+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">

+ *       &lt;attribute name="lat" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_PositiveFixedAngle" />

+ *       &lt;attribute name="lon" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_PositiveFixedAngle" />

+ *       &lt;attribute name="rev" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_PositiveFixedAngle" />

+ *     &lt;/restriction>

+ *   &lt;/complexContent>

+ * &lt;/complexType>

+ * </pre>

+ * 

+ * 

+ */

+@XmlAccessorType(XmlAccessType.FIELD)

+@XmlType(name = "CT_SphereCoords", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")

+public class CTSphereCoords {

+

+    @XmlAttribute(name = "lat", required = true)

+    protected int lat;

+    @XmlAttribute(name = "lon", required = true)

+    protected int lon;

+    @XmlAttribute(name = "rev", required = true)

+    protected int rev;

+

+    /**

+     * Gets the value of the lat property.

+     * 

+     */

+    public int getLat() {

+        return lat;

+    }

+

+    /**

+     * Sets the value of the lat property.

+     * 

+     */

+    public void setLat(int value) {

+        this.lat = value;

+    }

+

+    public boolean isSetLat() {

+        return true;

+    }

+

+    /**

+     * Gets the value of the lon property.

+     * 

+     */

+    public int getLon() {

+        return lon;

+    }

+

+    /**

+     * Sets the value of the lon property.

+     * 

+     */

+    public void setLon(int value) {

+        this.lon = value;

+    }

+

+    public boolean isSetLon() {

+        return true;

+    }

+

+    /**

+     * Gets the value of the rev property.

+     * 

+     */

+    public int getRev() {

+        return rev;

+    }

+

+    /**

+     * Sets the value of the rev property.

+     * 

+     */

+    public void setRev(int value) {

+        this.rev = value;

+    }

+

+    public boolean isSetRev() {

+        return true;

+    }

+

+}

diff --git a/src/java/org/apache/poi/sl/draw/binding/CTSystemColor.java b/src/java/org/apache/poi/sl/draw/binding/CTSystemColor.java
new file mode 100644
index 0000000..adf0d16
--- /dev/null
+++ b/src/java/org/apache/poi/sl/draw/binding/CTSystemColor.java
@@ -0,0 +1,219 @@
+/* ====================================================================

+   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.binding;

+

+import java.util.ArrayList;

+import java.util.List;

+import javax.xml.bind.JAXBElement;

+import javax.xml.bind.annotation.XmlAccessType;

+import javax.xml.bind.annotation.XmlAccessorType;

+import javax.xml.bind.annotation.XmlAttribute;

+import javax.xml.bind.annotation.XmlElementRef;

+import javax.xml.bind.annotation.XmlElementRefs;

+import javax.xml.bind.annotation.XmlType;

+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;

+import javax.xml.bind.annotation.adapters.HexBinaryAdapter;

+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;

+

+

+/**

+ * <p>Java class for CT_SystemColor complex type.

+ * 

+ * <p>The following schema fragment specifies the expected content contained within this class.

+ * 

+ * <pre>

+ * &lt;complexType name="CT_SystemColor">

+ *   &lt;complexContent>

+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">

+ *       &lt;sequence>

+ *         &lt;group ref="{http://schemas.openxmlformats.org/drawingml/2006/main}EG_ColorTransform" maxOccurs="unbounded" minOccurs="0"/>

+ *       &lt;/sequence>

+ *       &lt;attribute name="val" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_SystemColorVal" />

+ *       &lt;attribute name="lastClr" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_HexBinary3" />

+ *     &lt;/restriction>

+ *   &lt;/complexContent>

+ * &lt;/complexType>

+ * </pre>

+ * 

+ * 

+ */

+@XmlAccessorType(XmlAccessType.FIELD)

+@XmlType(name = "CT_SystemColor", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", propOrder = {

+    "egColorTransform"

+})

+public class CTSystemColor {

+

+    @XmlElementRefs({

+        @XmlElementRef(name = "alphaMod", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "satMod", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "lumMod", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "lum", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "sat", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "red", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "invGamma", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "greenMod", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "blueOff", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "hue", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "comp", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "lumOff", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "blueMod", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "greenOff", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "alphaOff", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "green", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "inv", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "alpha", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "shade", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "redOff", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "blue", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "hueMod", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "redMod", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "hueOff", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "gray", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "gamma", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "tint", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false),

+        @XmlElementRef(name = "satOff", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", type = JAXBElement.class, required = false)

+    })

+    protected List<JAXBElement<?>> egColorTransform;

+    @XmlAttribute(name = "val", required = true)

+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)

+    protected String val;

+    @XmlAttribute(name = "lastClr")

+    @XmlJavaTypeAdapter(HexBinaryAdapter.class)

+    protected byte[] lastClr;

+

+    /**

+     * Gets the value of the egColorTransform property.

+     * 

+     * <p>

+     * This accessor method returns a reference to the live list,

+     * not a snapshot. Therefore any modification you make to the

+     * returned list will be present inside the JAXB object.

+     * This is why there is not a <CODE>set</CODE> method for the egColorTransform property.

+     * 

+     * <p>

+     * For example, to add a new item, do as follows:

+     * <pre>

+     *    getEGColorTransform().add(newItem);

+     * </pre>

+     * 

+     * 

+     * <p>

+     * Objects of the following type(s) are allowed in the list

+     * {@link JAXBElement }{@code <}{@link CTPositivePercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTInverseGammaTransform }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPositiveFixedAngle }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTComplementTransform }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTFixedPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTInverseTransform }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPositiveFixedPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPositiveFixedPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPositivePercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTAngle }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTGrayscaleTransform }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTGammaTransform }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}

+     * {@link JAXBElement }{@code <}{@link CTPositiveFixedPercentage }{@code >}

+     * 

+     * 

+     */

+    public List<JAXBElement<?>> getEGColorTransform() {

+        if (egColorTransform == null) {

+            egColorTransform = new ArrayList<JAXBElement<?>>();

+        }

+        return this.egColorTransform;

+    }

+

+    public boolean isSetEGColorTransform() {

+        return ((this.egColorTransform!= null)&&(!this.egColorTransform.isEmpty()));

+    }

+

+    public void unsetEGColorTransform() {

+        this.egColorTransform = null;

+    }

+

+    /**

+     * Gets the value of the val property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link String }

+     *     

+     */

+    public String getVal() {

+        return val;

+    }

+

+    /**

+     * Sets the value of the val property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link String }

+     *     

+     */

+    public void setVal(String value) {

+        this.val = value;

+    }

+

+    public boolean isSetVal() {

+        return (this.val!= null);

+    }

+

+    /**

+     * Gets the value of the lastClr property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link String }

+     *     

+     */

+    public byte[] getLastClr() {

+        return lastClr;

+    }

+

+    /**

+     * Sets the value of the lastClr property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link String }

+     *     

+     */

+    public void setLastClr(byte[] value) {

+        this.lastClr = value;

+    }

+

+    public boolean isSetLastClr() {

+        return (this.lastClr!= null);

+    }

+

+}

diff --git a/src/java/org/apache/poi/sl/draw/binding/CTTransform2D.java b/src/java/org/apache/poi/sl/draw/binding/CTTransform2D.java
new file mode 100644
index 0000000..38ec50e
--- /dev/null
+++ b/src/java/org/apache/poi/sl/draw/binding/CTTransform2D.java
@@ -0,0 +1,232 @@
+/* ====================================================================

+   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.binding;

+

+import javax.xml.bind.annotation.XmlAccessType;

+import javax.xml.bind.annotation.XmlAccessorType;

+import javax.xml.bind.annotation.XmlAttribute;

+import javax.xml.bind.annotation.XmlElement;

+import javax.xml.bind.annotation.XmlType;

+

+

+/**

+ * <p>Java class for CT_Transform2D complex type.

+ * 

+ * <p>The following schema fragment specifies the expected content contained within this class.

+ * 

+ * <pre>

+ * &lt;complexType name="CT_Transform2D">

+ *   &lt;complexContent>

+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">

+ *       &lt;sequence>

+ *         &lt;element name="off" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_Point2D" minOccurs="0"/>

+ *         &lt;element name="ext" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_PositiveSize2D" minOccurs="0"/>

+ *       &lt;/sequence>

+ *       &lt;attribute name="rot" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_Angle" default="0" />

+ *       &lt;attribute name="flipH" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />

+ *       &lt;attribute name="flipV" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />

+ *     &lt;/restriction>

+ *   &lt;/complexContent>

+ * &lt;/complexType>

+ * </pre>

+ * 

+ * 

+ */

+@XmlAccessorType(XmlAccessType.FIELD)

+@XmlType(name = "CT_Transform2D", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", propOrder = {

+    "off",

+    "ext"

+})

+public class CTTransform2D {

+

+    @XmlElement(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")

+    protected CTPoint2D off;

+    @XmlElement(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")

+    protected CTPositiveSize2D ext;

+    @XmlAttribute(name = "rot")

+    protected Integer rot;

+    @XmlAttribute(name = "flipH")

+    protected Boolean flipH;

+    @XmlAttribute(name = "flipV")

+    protected Boolean flipV;

+

+    /**

+     * Gets the value of the off property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link CTPoint2D }

+     *     

+     */

+    public CTPoint2D getOff() {

+        return off;

+    }

+

+    /**

+     * Sets the value of the off property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link CTPoint2D }

+     *     

+     */

+    public void setOff(CTPoint2D value) {

+        this.off = value;

+    }

+

+    public boolean isSetOff() {

+        return (this.off!= null);

+    }

+

+    /**

+     * Gets the value of the ext property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link CTPositiveSize2D }

+     *     

+     */

+    public CTPositiveSize2D getExt() {

+        return ext;

+    }

+

+    /**

+     * Sets the value of the ext property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link CTPositiveSize2D }

+     *     

+     */

+    public void setExt(CTPositiveSize2D value) {

+        this.ext = value;

+    }

+

+    public boolean isSetExt() {

+        return (this.ext!= null);

+    }

+

+    /**

+     * Gets the value of the rot property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link Integer }

+     *     

+     */

+    public int getRot() {

+        if (rot == null) {

+            return  0;

+        } else {

+            return rot;

+        }

+    }

+

+    /**

+     * Sets the value of the rot property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link Integer }

+     *     

+     */

+    public void setRot(int value) {

+        this.rot = value;

+    }

+

+    public boolean isSetRot() {

+        return (this.rot!= null);

+    }

+

+    public void unsetRot() {

+        this.rot = null;

+    }

+

+    /**

+     * Gets the value of the flipH property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link Boolean }

+     *     

+     */

+    public boolean isFlipH() {

+        if (flipH == null) {

+            return false;

+        } else {

+            return flipH;

+        }

+    }

+

+    /**

+     * Sets the value of the flipH property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link Boolean }

+     *     

+     */

+    public void setFlipH(boolean value) {

+        this.flipH = value;

+    }

+

+    public boolean isSetFlipH() {

+        return (this.flipH!= null);

+    }

+

+    public void unsetFlipH() {

+        this.flipH = null;

+    }

+

+    /**

+     * Gets the value of the flipV property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link Boolean }

+     *     

+     */

+    public boolean isFlipV() {

+        if (flipV == null) {

+            return false;

+        } else {

+            return flipV;

+        }

+    }

+

+    /**

+     * Sets the value of the flipV property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link Boolean }

+     *     

+     */

+    public void setFlipV(boolean value) {

+        this.flipV = value;

+    }

+

+    public boolean isSetFlipV() {

+        return (this.flipV!= null);

+    }

+

+    public void unsetFlipV() {

+        this.flipV = null;

+    }

+

+}

diff --git a/src/java/org/apache/poi/sl/draw/binding/CTVector3D.java b/src/java/org/apache/poi/sl/draw/binding/CTVector3D.java
new file mode 100644
index 0000000..03c5fb8
--- /dev/null
+++ b/src/java/org/apache/poi/sl/draw/binding/CTVector3D.java
@@ -0,0 +1,116 @@
+/* ====================================================================

+   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.binding;

+

+import javax.xml.bind.annotation.XmlAccessType;

+import javax.xml.bind.annotation.XmlAccessorType;

+import javax.xml.bind.annotation.XmlAttribute;

+import javax.xml.bind.annotation.XmlType;

+

+

+/**

+ * <p>Java class for CT_Vector3D complex type.

+ * 

+ * <p>The following schema fragment specifies the expected content contained within this class.

+ * 

+ * <pre>

+ * &lt;complexType name="CT_Vector3D">

+ *   &lt;complexContent>

+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">

+ *       &lt;attribute name="dx" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_Coordinate" />

+ *       &lt;attribute name="dy" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_Coordinate" />

+ *       &lt;attribute name="dz" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_Coordinate" />

+ *     &lt;/restriction>

+ *   &lt;/complexContent>

+ * &lt;/complexType>

+ * </pre>

+ * 

+ * 

+ */

+@XmlAccessorType(XmlAccessType.FIELD)

+@XmlType(name = "CT_Vector3D", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main")

+public class CTVector3D {

+

+    @XmlAttribute(name = "dx", required = true)

+    protected long dx;

+    @XmlAttribute(name = "dy", required = true)

+    protected long dy;

+    @XmlAttribute(name = "dz", required = true)

+    protected long dz;

+

+    /**

+     * Gets the value of the dx property.

+     * 

+     */

+    public long getDx() {

+        return dx;

+    }

+

+    /**

+     * Sets the value of the dx property.

+     * 

+     */

+    public void setDx(long value) {

+        this.dx = value;

+    }

+

+    public boolean isSetDx() {

+        return true;

+    }

+

+    /**

+     * Gets the value of the dy property.

+     * 

+     */

+    public long getDy() {

+        return dy;

+    }

+

+    /**

+     * Sets the value of the dy property.

+     * 

+     */

+    public void setDy(long value) {

+        this.dy = value;

+    }

+

+    public boolean isSetDy() {

+        return true;

+    }

+

+    /**

+     * Gets the value of the dz property.

+     * 

+     */

+    public long getDz() {

+        return dz;

+    }

+

+    /**

+     * Sets the value of the dz property.

+     * 

+     */

+    public void setDz(long value) {

+        this.dz = value;

+    }

+

+    public boolean isSetDz() {

+        return true;

+    }

+

+}

diff --git a/src/java/org/apache/poi/sl/draw/binding/CTXYAdjustHandle.java b/src/java/org/apache/poi/sl/draw/binding/CTXYAdjustHandle.java
new file mode 100644
index 0000000..85c30ba
--- /dev/null
+++ b/src/java/org/apache/poi/sl/draw/binding/CTXYAdjustHandle.java
@@ -0,0 +1,273 @@
+/* ====================================================================

+   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.binding;

+

+import javax.xml.bind.annotation.XmlAccessType;

+import javax.xml.bind.annotation.XmlAccessorType;

+import javax.xml.bind.annotation.XmlAttribute;

+import javax.xml.bind.annotation.XmlElement;

+import javax.xml.bind.annotation.XmlType;

+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;

+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;

+

+

+/**

+ * <p>Java class for CT_XYAdjustHandle complex type.

+ * 

+ * <p>The following schema fragment specifies the expected content contained within this class.

+ * 

+ * <pre>

+ * &lt;complexType name="CT_XYAdjustHandle">

+ *   &lt;complexContent>

+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">

+ *       &lt;sequence>

+ *         &lt;element name="pos" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_AdjPoint2D"/>

+ *       &lt;/sequence>

+ *       &lt;attribute name="gdRefX" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_GeomGuideName" />

+ *       &lt;attribute name="minX" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_AdjCoordinate" />

+ *       &lt;attribute name="maxX" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_AdjCoordinate" />

+ *       &lt;attribute name="gdRefY" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_GeomGuideName" />

+ *       &lt;attribute name="minY" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_AdjCoordinate" />

+ *       &lt;attribute name="maxY" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_AdjCoordinate" />

+ *     &lt;/restriction>

+ *   &lt;/complexContent>

+ * &lt;/complexType>

+ * </pre>

+ * 

+ * 

+ */

+@XmlAccessorType(XmlAccessType.FIELD)

+@XmlType(name = "CT_XYAdjustHandle", namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", propOrder = {

+    "pos"

+})

+public class CTXYAdjustHandle {

+

+    @XmlElement(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", required = true)

+    protected CTAdjPoint2D pos;

+    @XmlAttribute(name = "gdRefX")

+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)

+    protected String gdRefX;

+    @XmlAttribute(name = "minX")

+    protected String minX;

+    @XmlAttribute(name = "maxX")

+    protected String maxX;

+    @XmlAttribute(name = "gdRefY")

+    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)

+    protected String gdRefY;

+    @XmlAttribute(name = "minY")

+    protected String minY;

+    @XmlAttribute(name = "maxY")

+    protected String maxY;

+

+    /**

+     * Gets the value of the pos property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link CTAdjPoint2D }

+     *     

+     */

+    public CTAdjPoint2D getPos() {

+        return pos;

+    }

+

+    /**

+     * Sets the value of the pos property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link CTAdjPoint2D }

+     *     

+     */

+    public void setPos(CTAdjPoint2D value) {

+        this.pos = value;

+    }

+

+    public boolean isSetPos() {

+        return (this.pos!= null);

+    }

+

+    /**

+     * Gets the value of the gdRefX property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link String }

+     *     

+     */

+    public String getGdRefX() {

+        return gdRefX;

+    }

+

+    /**

+     * Sets the value of the gdRefX property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link String }

+     *     

+     */

+    public void setGdRefX(String value) {

+        this.gdRefX = value;

+    }

+

+    public boolean isSetGdRefX() {

+        return (this.gdRefX!= null);

+    }

+

+    /**

+     * Gets the value of the minX property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link String }

+     *     

+     */

+    public String getMinX() {

+        return minX;

+    }

+

+    /**

+     * Sets the value of the minX property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link String }

+     *     

+     */

+    public void setMinX(String value) {

+        this.minX = value;

+    }

+

+    public boolean isSetMinX() {

+        return (this.minX!= null);

+    }

+

+    /**

+     * Gets the value of the maxX property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link String }

+     *     

+     */

+    public String getMaxX() {

+        return maxX;

+    }

+

+    /**

+     * Sets the value of the maxX property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link String }

+     *     

+     */

+    public void setMaxX(String value) {

+        this.maxX = value;

+    }

+

+    public boolean isSetMaxX() {

+        return (this.maxX!= null);

+    }

+

+    /**

+     * Gets the value of the gdRefY property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link String }

+     *     

+     */

+    public String getGdRefY() {

+        return gdRefY;

+    }

+

+    /**

+     * Sets the value of the gdRefY property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link String }

+     *     

+     */

+    public void setGdRefY(String value) {

+        this.gdRefY = value;

+    }

+

+    public boolean isSetGdRefY() {

+        return (this.gdRefY!= null);

+    }

+

+    /**

+     * Gets the value of the minY property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link String }

+     *     

+     */

+    public String getMinY() {

+        return minY;

+    }

+

+    /**

+     * Sets the value of the minY property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link String }

+     *     

+     */

+    public void setMinY(String value) {

+        this.minY = value;

+    }

+

+    public boolean isSetMinY() {

+        return (this.minY!= null);

+    }

+

+    /**

+     * Gets the value of the maxY property.

+     * 

+     * @return

+     *     possible object is

+     *     {@link String }

+     *     

+     */

+    public String getMaxY() {

+        return maxY;

+    }

+

+    /**

+     * Sets the value of the maxY property.

+     * 

+     * @param value

+     *     allowed object is

+     *     {@link String }

+     *     

+     */

+    public void setMaxY(String value) {

+        this.maxY = value;

+    }

+

+    public boolean isSetMaxY() {

+        return (this.maxY!= null);

+    }

+

+}

diff --git a/src/java/org/apache/poi/sl/draw/binding/ObjectFactory.java b/src/java/org/apache/poi/sl/draw/binding/ObjectFactory.java
new file mode 100644
index 0000000..8c6f9c2
--- /dev/null
+++ b/src/java/org/apache/poi/sl/draw/binding/ObjectFactory.java
@@ -0,0 +1,2023 @@
+/* ====================================================================

+   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.binding;

+

+import javax.xml.bind.JAXBElement;

+import javax.xml.bind.annotation.XmlElementDecl;

+import javax.xml.bind.annotation.XmlRegistry;

+import javax.xml.namespace.QName;

+

+

+/**

+ * This object contains factory methods for each 

+ * Java content interface and Java element interface 

+ * generated in the org.apache.poi.sl.draw.binding package. 

+ * <p>An ObjectFactory allows you to programatically 

+ * construct new instances of the Java representation 

+ * for XML content. The Java representation of XML 

+ * content can consist of schema derived interfaces 

+ * and classes representing the binding of schema 

+ * type definitions, element declarations and model 

+ * groups.  Factory methods for each of these are 

+ * provided in this class.

+ * 

+ */

+@XmlRegistry

+public class ObjectFactory {

+

+    private final static QName _CTSRgbColorAlpha_QNAME = new QName("http://schemas.openxmlformats.org/drawingml/2006/main", "alpha");

+    private final static QName _CTSRgbColorLum_QNAME = new QName("http://schemas.openxmlformats.org/drawingml/2006/main", "lum");

+    private final static QName _CTSRgbColorGamma_QNAME = new QName("http://schemas.openxmlformats.org/drawingml/2006/main", "gamma");

+    private final static QName _CTSRgbColorInvGamma_QNAME = new QName("http://schemas.openxmlformats.org/drawingml/2006/main", "invGamma");

+    private final static QName _CTSRgbColorAlphaMod_QNAME = new QName("http://schemas.openxmlformats.org/drawingml/2006/main", "alphaMod");

+    private final static QName _CTSRgbColorRedOff_QNAME = new QName("http://schemas.openxmlformats.org/drawingml/2006/main", "redOff");

+    private final static QName _CTSRgbColorAlphaOff_QNAME = new QName("http://schemas.openxmlformats.org/drawingml/2006/main", "alphaOff");

+    private final static QName _CTSRgbColorGreenOff_QNAME = new QName("http://schemas.openxmlformats.org/drawingml/2006/main", "greenOff");

+    private final static QName _CTSRgbColorHue_QNAME = new QName("http://schemas.openxmlformats.org/drawingml/2006/main", "hue");

+    private final static QName _CTSRgbColorRedMod_QNAME = new QName("http://schemas.openxmlformats.org/drawingml/2006/main", "redMod");

+    private final static QName _CTSRgbColorSatOff_QNAME = new QName("http://schemas.openxmlformats.org/drawingml/2006/main", "satOff");

+    private final static QName _CTSRgbColorGreenMod_QNAME = new QName("http://schemas.openxmlformats.org/drawingml/2006/main", "greenMod");

+    private final static QName _CTSRgbColorSat_QNAME = new QName("http://schemas.openxmlformats.org/drawingml/2006/main", "sat");

+    private final static QName _CTSRgbColorBlue_QNAME = new QName("http://schemas.openxmlformats.org/drawingml/2006/main", "blue");

+    private final static QName _CTSRgbColorRed_QNAME = new QName("http://schemas.openxmlformats.org/drawingml/2006/main", "red");

+    private final static QName _CTSRgbColorSatMod_QNAME = new QName("http://schemas.openxmlformats.org/drawingml/2006/main", "satMod");

+    private final static QName _CTSRgbColorBlueMod_QNAME = new QName("http://schemas.openxmlformats.org/drawingml/2006/main", "blueMod");

+    private final static QName _CTSRgbColorHueOff_QNAME = new QName("http://schemas.openxmlformats.org/drawingml/2006/main", "hueOff");

+    private final static QName _CTSRgbColorShade_QNAME = new QName("http://schemas.openxmlformats.org/drawingml/2006/main", "shade");

+    private final static QName _CTSRgbColorLumMod_QNAME = new QName("http://schemas.openxmlformats.org/drawingml/2006/main", "lumMod");

+    private final static QName _CTSRgbColorInv_QNAME = new QName("http://schemas.openxmlformats.org/drawingml/2006/main", "inv");

+    private final static QName _CTSRgbColorLumOff_QNAME = new QName("http://schemas.openxmlformats.org/drawingml/2006/main", "lumOff");

+    private final static QName _CTSRgbColorTint_QNAME = new QName("http://schemas.openxmlformats.org/drawingml/2006/main", "tint");

+    private final static QName _CTSRgbColorGreen_QNAME = new QName("http://schemas.openxmlformats.org/drawingml/2006/main", "green");

+    private final static QName _CTSRgbColorComp_QNAME = new QName("http://schemas.openxmlformats.org/drawingml/2006/main", "comp");

+    private final static QName _CTSRgbColorBlueOff_QNAME = new QName("http://schemas.openxmlformats.org/drawingml/2006/main", "blueOff");

+    private final static QName _CTSRgbColorHueMod_QNAME = new QName("http://schemas.openxmlformats.org/drawingml/2006/main", "hueMod");

+    private final static QName _CTSRgbColorGray_QNAME = new QName("http://schemas.openxmlformats.org/drawingml/2006/main", "gray");

+

+    /**

+     * Create a new ObjectFactory that can be used to create new instances of schema derived classes for package: org.apache.poi.sl.draw.binding

+     * 

+     */

+    public ObjectFactory() {

+    }

+

+    /**

+     * Create an instance of {@link CTPath2DQuadBezierTo }

+     * 

+     */

+    public CTPath2DQuadBezierTo createCTPath2DQuadBezierTo() {

+        return new CTPath2DQuadBezierTo();

+    }

+

+    /**

+     * Create an instance of {@link CTCustomGeometry2D }

+     * 

+     */

+    public CTCustomGeometry2D createCTCustomGeometry2D() {

+        return new CTCustomGeometry2D();

+    }

+

+    /**

+     * Create an instance of {@link CTPolarAdjustHandle }

+     * 

+     */

+    public CTPolarAdjustHandle createCTPolarAdjustHandle() {

+        return new CTPolarAdjustHandle();

+    }

+

+    /**

+     * Create an instance of {@link CTPath2DClose }

+     * 

+     */

+    public CTPath2DClose createCTPath2DClose() {

+        return new CTPath2DClose();

+    }

+

+    /**

+     * Create an instance of {@link CTPoint2D }

+     * 

+     */

+    public CTPoint2D createCTPoint2D() {

+        return new CTPoint2D();

+    }

+

+    /**

+     * Create an instance of {@link CTInverseTransform }

+     * 

+     */

+    public CTInverseTransform createCTInverseTransform() {

+        return new CTInverseTransform();

+    }

+

+    /**

+     * Create an instance of {@link CTPercentage }

+     * 

+     */

+    public CTPercentage createCTPercentage() {

+        return new CTPercentage();

+    }

+

+    /**

+     * Create an instance of {@link CTSystemColor }

+     * 

+     */

+    public CTSystemColor createCTSystemColor() {

+        return new CTSystemColor();

+    }

+

+    /**

+     * Create an instance of {@link CTConnectionSite }

+     * 

+     */

+    public CTConnectionSite createCTConnectionSite() {

+        return new CTConnectionSite();

+    }

+

+    /**

+     * Create an instance of {@link CTColor }

+     * 

+     */

+    public CTColor createCTColor() {

+        return new CTColor();

+    }

+

+    /**

+     * Create an instance of {@link CTPositiveFixedAngle }

+     * 

+     */

+    public CTPositiveFixedAngle createCTPositiveFixedAngle() {

+        return new CTPositiveFixedAngle();

+    }

+

+    /**

+     * Create an instance of {@link CTFixedPercentage }

+     * 

+     */

+    public CTFixedPercentage createCTFixedPercentage() {

+        return new CTFixedPercentage();

+    }

+

+    /**

+     * Create an instance of {@link CTHslColor }

+     * 

+     */

+    public CTHslColor createCTHslColor() {

+        return new CTHslColor();

+    }

+

+    /**

+     * Create an instance of {@link CTConnection }

+     * 

+     */

+    public CTConnection createCTConnection() {

+        return new CTConnection();

+    }

+

+    /**

+     * Create an instance of {@link CTPath2DLineTo }

+     * 

+     */

+    public CTPath2DLineTo createCTPath2DLineTo() {

+        return new CTPath2DLineTo();

+    }

+

+    /**

+     * Create an instance of {@link CTTransform2D }

+     * 

+     */

+    public CTTransform2D createCTTransform2D() {

+        return new CTTransform2D();

+    }

+

+    /**

+     * Create an instance of {@link CTPositivePercentage }

+     * 

+     */

+    public CTPositivePercentage createCTPositivePercentage() {

+        return new CTPositivePercentage();

+    }

+

+    /**

+     * Create an instance of {@link CTVector3D }

+     * 

+     */

+    public CTVector3D createCTVector3D() {

+        return new CTVector3D();

+    }

+

+    /**

+     * Create an instance of {@link CTSphereCoords }

+     * 

+     */

+    public CTSphereCoords createCTSphereCoords() {

+        return new CTSphereCoords();

+    }

+

+    /**

+     * Create an instance of {@link CTPath2D }

+     * 

+     */

+    public CTPath2D createCTPath2D() {

+        return new CTPath2D();

+    }

+

+    /**

+     * Create an instance of {@link CTGroupTransform2D }

+     * 

+     */

+    public CTGroupTransform2D createCTGroupTransform2D() {

+        return new CTGroupTransform2D();

+    }

+

+    /**

+     * Create an instance of {@link CTGrayscaleTransform }

+     * 

+     */

+    public CTGrayscaleTransform createCTGrayscaleTransform() {

+        return new CTGrayscaleTransform();

+    }

+

+    /**

+     * Create an instance of {@link CTRatio }

+     * 

+     */

+    public CTRatio createCTRatio() {

+        return new CTRatio();

+    }

+

+    /**

+     * Create an instance of {@link CTSRgbColor }

+     * 

+     */

+    public CTSRgbColor createCTSRgbColor() {

+        return new CTSRgbColor();

+    }

+

+    /**

+     * Create an instance of {@link CTGeomGuideList }

+     * 

+     */

+    public CTGeomGuideList createCTGeomGuideList() {

+        return new CTGeomGuideList();

+    }

+

+    /**

+     * Create an instance of {@link CTComplementTransform }

+     * 

+     */

+    public CTComplementTransform createCTComplementTransform() {

+        return new CTComplementTransform();

+    }

+

+    /**

+     * Create an instance of {@link CTPath2DCubicBezierTo }

+     * 

+     */

+    public CTPath2DCubicBezierTo createCTPath2DCubicBezierTo() {

+        return new CTPath2DCubicBezierTo();

+    }

+

+    /**

+     * Create an instance of {@link CTXYAdjustHandle }

+     * 

+     */

+    public CTXYAdjustHandle createCTXYAdjustHandle() {

+        return new CTXYAdjustHandle();

+    }

+

+    /**

+     * Create an instance of {@link CTPresetColor }

+     * 

+     */

+    public CTPresetColor createCTPresetColor() {

+        return new CTPresetColor();

+    }

+

+    /**

+     * Create an instance of {@link CTOfficeArtExtension }

+     * 

+     */

+    public CTOfficeArtExtension createCTOfficeArtExtension() {

+        return new CTOfficeArtExtension();

+    }

+

+    /**

+     * Create an instance of {@link CTSchemeColor }

+     * 

+     */

+    public CTSchemeColor createCTSchemeColor() {

+        return new CTSchemeColor();

+    }

+

+    /**

+     * Create an instance of {@link CTConnectionSiteList }

+     * 

+     */

+    public CTConnectionSiteList createCTConnectionSiteList() {

+        return new CTConnectionSiteList();

+    }

+

+    /**

+     * Create an instance of {@link CTPath2DArcTo }

+     * 

+     */

+    public CTPath2DArcTo createCTPath2DArcTo() {

+        return new CTPath2DArcTo();

+    }

+

+    /**

+     * Create an instance of {@link CTPath2DList }

+     * 

+     */

+    public CTPath2DList createCTPath2DList() {

+        return new CTPath2DList();

+    }

+

+    /**

+     * Create an instance of {@link CTAngle }

+     * 

+     */

+    public CTAngle createCTAngle() {

+        return new CTAngle();

+    }

+

+    /**

+     * Create an instance of {@link CTScale2D }

+     * 

+     */

+    public CTScale2D createCTScale2D() {

+        return new CTScale2D();

+    }

+

+    /**

+     * Create an instance of {@link CTPositiveSize2D }

+     * 

+     */

+    public CTPositiveSize2D createCTPositiveSize2D() {

+        return new CTPositiveSize2D();

+    }

+

+    /**

+     * Create an instance of {@link CTOfficeArtExtensionList }

+     * 

+     */

+    public CTOfficeArtExtensionList createCTOfficeArtExtensionList() {

+        return new CTOfficeArtExtensionList();

+    }

+

+    /**

+     * Create an instance of {@link CTHyperlink }

+     * 

+     */

+    public CTHyperlink createCTHyperlink() {

+        return new CTHyperlink();

+    }

+

+    /**

+     * Create an instance of {@link CTPoint3D }

+     * 

+     */

+    public CTPoint3D createCTPoint3D() {

+        return new CTPoint3D();

+    }

+

+    /**

+     * Create an instance of {@link CTInverseGammaTransform }

+     * 

+     */

+    public CTInverseGammaTransform createCTInverseGammaTransform() {

+        return new CTInverseGammaTransform();

+    }

+

+    /**

+     * Create an instance of {@link CTPositiveFixedPercentage }

+     * 

+     */

+    public CTPositiveFixedPercentage createCTPositiveFixedPercentage() {

+        return new CTPositiveFixedPercentage();

+    }

+

+    /**

+     * Create an instance of {@link CTGeomRect }

+     * 

+     */

+    public CTGeomRect createCTGeomRect() {

+        return new CTGeomRect();

+    }

+

+    /**

+     * Create an instance of {@link CTPresetTextShape }

+     * 

+     */

+    public CTPresetTextShape createCTPresetTextShape() {

+        return new CTPresetTextShape();

+    }

+

+    /**

+     * Create an instance of {@link CTColorMRU }

+     * 

+     */

+    public CTColorMRU createCTColorMRU() {

+        return new CTColorMRU();

+    }

+

+    /**

+     * Create an instance of {@link CTPath2DMoveTo }

+     * 

+     */

+    public CTPath2DMoveTo createCTPath2DMoveTo() {

+        return new CTPath2DMoveTo();

+    }

+

+    /**

+     * Create an instance of {@link CTEmbeddedWAVAudioFile }

+     * 

+     */

+    public CTEmbeddedWAVAudioFile createCTEmbeddedWAVAudioFile() {

+        return new CTEmbeddedWAVAudioFile();

+    }

+

+    /**

+     * Create an instance of {@link CTScRgbColor }

+     * 

+     */

+    public CTScRgbColor createCTScRgbColor() {

+        return new CTScRgbColor();

+    }

+

+    /**

+     * Create an instance of {@link CTPresetGeometry2D }

+     * 

+     */

+    public CTPresetGeometry2D createCTPresetGeometry2D() {

+        return new CTPresetGeometry2D();

+    }

+

+    /**

+     * Create an instance of {@link CTGeomGuide }

+     * 

+     */

+    public CTGeomGuide createCTGeomGuide() {

+        return new CTGeomGuide();

+    }

+

+    /**

+     * Create an instance of {@link CTRelativeRect }

+     * 

+     */

+    public CTRelativeRect createCTRelativeRect() {

+        return new CTRelativeRect();

+    }

+

+    /**

+     * Create an instance of {@link CTAdjustHandleList }

+     * 

+     */

+    public CTAdjustHandleList createCTAdjustHandleList() {

+        return new CTAdjustHandleList();

+    }

+

+    /**

+     * Create an instance of {@link CTAdjPoint2D }

+     * 

+     */

+    public CTAdjPoint2D createCTAdjPoint2D() {

+        return new CTAdjPoint2D();

+    }

+

+    /**

+     * Create an instance of {@link CTGammaTransform }

+     * 

+     */

+    public CTGammaTransform createCTGammaTransform() {

+        return new CTGammaTransform();

+    }

+

+    /**

+     * Create an instance of {@link JAXBElement }{@code <}{@link CTPositiveFixedPercentage }{@code >}}

+     * 

+     */

+    @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "alpha", scope = CTSRgbColor.class)

+    public JAXBElement<CTPositiveFixedPercentage> createCTSRgbColorAlpha(CTPositiveFixedPercentage value) {

+        return new JAXBElement<CTPositiveFixedPercentage>(_CTSRgbColorAlpha_QNAME, CTPositiveFixedPercentage.class, CTSRgbColor.class, value);

+    }

+

+    /**

+     * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}

+     * 

+     */

+    @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "lum", scope = CTSRgbColor.class)

+    public JAXBElement<CTPercentage> createCTSRgbColorLum(CTPercentage value) {

+        return new JAXBElement<CTPercentage>(_CTSRgbColorLum_QNAME, CTPercentage.class, CTSRgbColor.class, value);

+    }

+

+    /**

+     * Create an instance of {@link JAXBElement }{@code <}{@link CTGammaTransform }{@code >}}

+     * 

+     */

+    @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "gamma", scope = CTSRgbColor.class)

+    public JAXBElement<CTGammaTransform> createCTSRgbColorGamma(CTGammaTransform value) {

+        return new JAXBElement<CTGammaTransform>(_CTSRgbColorGamma_QNAME, CTGammaTransform.class, CTSRgbColor.class, value);

+    }

+

+    /**

+     * Create an instance of {@link JAXBElement }{@code <}{@link CTInverseGammaTransform }{@code >}}

+     * 

+     */

+    @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "invGamma", scope = CTSRgbColor.class)

+    public JAXBElement<CTInverseGammaTransform> createCTSRgbColorInvGamma(CTInverseGammaTransform value) {

+        return new JAXBElement<CTInverseGammaTransform>(_CTSRgbColorInvGamma_QNAME, CTInverseGammaTransform.class, CTSRgbColor.class, value);

+    }

+

+    /**

+     * Create an instance of {@link JAXBElement }{@code <}{@link CTPositivePercentage }{@code >}}

+     * 

+     */

+    @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "alphaMod", scope = CTSRgbColor.class)

+    public JAXBElement<CTPositivePercentage> createCTSRgbColorAlphaMod(CTPositivePercentage value) {

+        return new JAXBElement<CTPositivePercentage>(_CTSRgbColorAlphaMod_QNAME, CTPositivePercentage.class, CTSRgbColor.class, value);

+    }

+

+    /**

+     * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}

+     * 

+     */

+    @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "redOff", scope = CTSRgbColor.class)

+    public JAXBElement<CTPercentage> createCTSRgbColorRedOff(CTPercentage value) {

+        return new JAXBElement<CTPercentage>(_CTSRgbColorRedOff_QNAME, CTPercentage.class, CTSRgbColor.class, value);

+    }

+

+    /**

+     * Create an instance of {@link JAXBElement }{@code <}{@link CTFixedPercentage }{@code >}}

+     * 

+     */

+    @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "alphaOff", scope = CTSRgbColor.class)

+    public JAXBElement<CTFixedPercentage> createCTSRgbColorAlphaOff(CTFixedPercentage value) {

+        return new JAXBElement<CTFixedPercentage>(_CTSRgbColorAlphaOff_QNAME, CTFixedPercentage.class, CTSRgbColor.class, value);

+    }

+

+    /**

+     * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}

+     * 

+     */

+    @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "greenOff", scope = CTSRgbColor.class)

+    public JAXBElement<CTPercentage> createCTSRgbColorGreenOff(CTPercentage value) {

+        return new JAXBElement<CTPercentage>(_CTSRgbColorGreenOff_QNAME, CTPercentage.class, CTSRgbColor.class, value);

+    }

+

+    /**

+     * Create an instance of {@link JAXBElement }{@code <}{@link CTPositiveFixedAngle }{@code >}}

+     * 

+     */

+    @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "hue", scope = CTSRgbColor.class)

+    public JAXBElement<CTPositiveFixedAngle> createCTSRgbColorHue(CTPositiveFixedAngle value) {

+        return new JAXBElement<CTPositiveFixedAngle>(_CTSRgbColorHue_QNAME, CTPositiveFixedAngle.class, CTSRgbColor.class, value);

+    }

+

+    /**

+     * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}

+     * 

+     */

+    @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "redMod", scope = CTSRgbColor.class)

+    public JAXBElement<CTPercentage> createCTSRgbColorRedMod(CTPercentage value) {

+        return new JAXBElement<CTPercentage>(_CTSRgbColorRedMod_QNAME, CTPercentage.class, CTSRgbColor.class, value);

+    }

+

+    /**

+     * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}

+     * 

+     */

+    @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "satOff", scope = CTSRgbColor.class)

+    public JAXBElement<CTPercentage> createCTSRgbColorSatOff(CTPercentage value) {

+        return new JAXBElement<CTPercentage>(_CTSRgbColorSatOff_QNAME, CTPercentage.class, CTSRgbColor.class, value);

+    }

+

+    /**

+     * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}

+     * 

+     */

+    @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "greenMod", scope = CTSRgbColor.class)

+    public JAXBElement<CTPercentage> createCTSRgbColorGreenMod(CTPercentage value) {

+        return new JAXBElement<CTPercentage>(_CTSRgbColorGreenMod_QNAME, CTPercentage.class, CTSRgbColor.class, value);

+    }

+

+    /**

+     * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}

+     * 

+     */

+    @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "sat", scope = CTSRgbColor.class)

+    public JAXBElement<CTPercentage> createCTSRgbColorSat(CTPercentage value) {

+        return new JAXBElement<CTPercentage>(_CTSRgbColorSat_QNAME, CTPercentage.class, CTSRgbColor.class, value);

+    }

+

+    /**

+     * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}

+     * 

+     */

+    @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "blue", scope = CTSRgbColor.class)

+    public JAXBElement<CTPercentage> createCTSRgbColorBlue(CTPercentage value) {

+        return new JAXBElement<CTPercentage>(_CTSRgbColorBlue_QNAME, CTPercentage.class, CTSRgbColor.class, value);

+    }

+

+    /**

+     * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}

+     * 

+     */

+    @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "red", scope = CTSRgbColor.class)

+    public JAXBElement<CTPercentage> createCTSRgbColorRed(CTPercentage value) {

+        return new JAXBElement<CTPercentage>(_CTSRgbColorRed_QNAME, CTPercentage.class, CTSRgbColor.class, value);

+    }

+

+    /**

+     * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}

+     * 

+     */

+    @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "satMod", scope = CTSRgbColor.class)

+    public JAXBElement<CTPercentage> createCTSRgbColorSatMod(CTPercentage value) {

+        return new JAXBElement<CTPercentage>(_CTSRgbColorSatMod_QNAME, CTPercentage.class, CTSRgbColor.class, value);

+    }

+

+    /**

+     * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}

+     * 

+     */

+    @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "blueMod", scope = CTSRgbColor.class)

+    public JAXBElement<CTPercentage> createCTSRgbColorBlueMod(CTPercentage value) {

+        return new JAXBElement<CTPercentage>(_CTSRgbColorBlueMod_QNAME, CTPercentage.class, CTSRgbColor.class, value);

+    }

+

+    /**

+     * Create an instance of {@link JAXBElement }{@code <}{@link CTAngle }{@code >}}

+     * 

+     */

+    @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "hueOff", scope = CTSRgbColor.class)

+    public JAXBElement<CTAngle> createCTSRgbColorHueOff(CTAngle value) {

+        return new JAXBElement<CTAngle>(_CTSRgbColorHueOff_QNAME, CTAngle.class, CTSRgbColor.class, value);

+    }

+

+    /**

+     * Create an instance of {@link JAXBElement }{@code <}{@link CTPositiveFixedPercentage }{@code >}}

+     * 

+     */

+    @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "shade", scope = CTSRgbColor.class)

+    public JAXBElement<CTPositiveFixedPercentage> createCTSRgbColorShade(CTPositiveFixedPercentage value) {

+        return new JAXBElement<CTPositiveFixedPercentage>(_CTSRgbColorShade_QNAME, CTPositiveFixedPercentage.class, CTSRgbColor.class, value);

+    }

+

+    /**

+     * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}

+     * 

+     */

+    @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "lumMod", scope = CTSRgbColor.class)

+    public JAXBElement<CTPercentage> createCTSRgbColorLumMod(CTPercentage value) {

+        return new JAXBElement<CTPercentage>(_CTSRgbColorLumMod_QNAME, CTPercentage.class, CTSRgbColor.class, value);

+    }

+

+    /**

+     * Create an instance of {@link JAXBElement }{@code <}{@link CTInverseTransform }{@code >}}

+     * 

+     */

+    @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "inv", scope = CTSRgbColor.class)

+    public JAXBElement<CTInverseTransform> createCTSRgbColorInv(CTInverseTransform value) {

+        return new JAXBElement<CTInverseTransform>(_CTSRgbColorInv_QNAME, CTInverseTransform.class, CTSRgbColor.class, value);

+    }

+

+    /**

+     * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}

+     * 

+     */

+    @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "lumOff", scope = CTSRgbColor.class)

+    public JAXBElement<CTPercentage> createCTSRgbColorLumOff(CTPercentage value) {

+        return new JAXBElement<CTPercentage>(_CTSRgbColorLumOff_QNAME, CTPercentage.class, CTSRgbColor.class, value);

+    }

+

+    /**

+     * Create an instance of {@link JAXBElement }{@code <}{@link CTPositiveFixedPercentage }{@code >}}

+     * 

+     */

+    @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "tint", scope = CTSRgbColor.class)

+    public JAXBElement<CTPositiveFixedPercentage> createCTSRgbColorTint(CTPositiveFixedPercentage value) {

+        return new JAXBElement<CTPositiveFixedPercentage>(_CTSRgbColorTint_QNAME, CTPositiveFixedPercentage.class, CTSRgbColor.class, value);

+    }

+

+    /**

+     * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}

+     * 

+     */

+    @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "green", scope = CTSRgbColor.class)

+    public JAXBElement<CTPercentage> createCTSRgbColorGreen(CTPercentage value) {

+        return new JAXBElement<CTPercentage>(_CTSRgbColorGreen_QNAME, CTPercentage.class, CTSRgbColor.class, value);

+    }

+

+    /**

+     * Create an instance of {@link JAXBElement }{@code <}{@link CTComplementTransform }{@code >}}

+     * 

+     */

+    @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "comp", scope = CTSRgbColor.class)

+    public JAXBElement<CTComplementTransform> createCTSRgbColorComp(CTComplementTransform value) {

+        return new JAXBElement<CTComplementTransform>(_CTSRgbColorComp_QNAME, CTComplementTransform.class, CTSRgbColor.class, value);

+    }

+

+    /**

+     * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}

+     * 

+     */

+    @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "blueOff", scope = CTSRgbColor.class)

+    public JAXBElement<CTPercentage> createCTSRgbColorBlueOff(CTPercentage value) {

+        return new JAXBElement<CTPercentage>(_CTSRgbColorBlueOff_QNAME, CTPercentage.class, CTSRgbColor.class, value);

+    }

+

+    /**

+     * Create an instance of {@link JAXBElement }{@code <}{@link CTPositivePercentage }{@code >}}

+     * 

+     */

+    @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "hueMod", scope = CTSRgbColor.class)

+    public JAXBElement<CTPositivePercentage> createCTSRgbColorHueMod(CTPositivePercentage value) {

+        return new JAXBElement<CTPositivePercentage>(_CTSRgbColorHueMod_QNAME, CTPositivePercentage.class, CTSRgbColor.class, value);

+    }

+

+    /**

+     * Create an instance of {@link JAXBElement }{@code <}{@link CTGrayscaleTransform }{@code >}}

+     * 

+     */

+    @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "gray", scope = CTSRgbColor.class)

+    public JAXBElement<CTGrayscaleTransform> createCTSRgbColorGray(CTGrayscaleTransform value) {

+        return new JAXBElement<CTGrayscaleTransform>(_CTSRgbColorGray_QNAME, CTGrayscaleTransform.class, CTSRgbColor.class, value);

+    }

+

+    /**

+     * Create an instance of {@link JAXBElement }{@code <}{@link CTPositiveFixedPercentage }{@code >}}

+     * 

+     */

+    @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "alpha", scope = CTSchemeColor.class)

+    public JAXBElement<CTPositiveFixedPercentage> createCTSchemeColorAlpha(CTPositiveFixedPercentage value) {

+        return new JAXBElement<CTPositiveFixedPercentage>(_CTSRgbColorAlpha_QNAME, CTPositiveFixedPercentage.class, CTSchemeColor.class, value);

+    }

+

+    /**

+     * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}

+     * 

+     */

+    @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "lum", scope = CTSchemeColor.class)

+    public JAXBElement<CTPercentage> createCTSchemeColorLum(CTPercentage value) {

+        return new JAXBElement<CTPercentage>(_CTSRgbColorLum_QNAME, CTPercentage.class, CTSchemeColor.class, value);

+    }

+

+    /**

+     * Create an instance of {@link JAXBElement }{@code <}{@link CTGammaTransform }{@code >}}

+     * 

+     */

+    @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "gamma", scope = CTSchemeColor.class)

+    public JAXBElement<CTGammaTransform> createCTSchemeColorGamma(CTGammaTransform value) {

+        return new JAXBElement<CTGammaTransform>(_CTSRgbColorGamma_QNAME, CTGammaTransform.class, CTSchemeColor.class, value);

+    }

+

+    /**

+     * Create an instance of {@link JAXBElement }{@code <}{@link CTInverseGammaTransform }{@code >}}

+     * 

+     */

+    @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "invGamma", scope = CTSchemeColor.class)

+    public JAXBElement<CTInverseGammaTransform> createCTSchemeColorInvGamma(CTInverseGammaTransform value) {

+        return new JAXBElement<CTInverseGammaTransform>(_CTSRgbColorInvGamma_QNAME, CTInverseGammaTransform.class, CTSchemeColor.class, value);

+    }

+

+    /**

+     * Create an instance of {@link JAXBElement }{@code <}{@link CTPositivePercentage }{@code >}}

+     * 

+     */

+    @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "alphaMod", scope = CTSchemeColor.class)

+    public JAXBElement<CTPositivePercentage> createCTSchemeColorAlphaMod(CTPositivePercentage value) {

+        return new JAXBElement<CTPositivePercentage>(_CTSRgbColorAlphaMod_QNAME, CTPositivePercentage.class, CTSchemeColor.class, value);

+    }

+

+    /**

+     * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}

+     * 

+     */

+    @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "redOff", scope = CTSchemeColor.class)

+    public JAXBElement<CTPercentage> createCTSchemeColorRedOff(CTPercentage value) {

+        return new JAXBElement<CTPercentage>(_CTSRgbColorRedOff_QNAME, CTPercentage.class, CTSchemeColor.class, value);

+    }

+

+    /**

+     * Create an instance of {@link JAXBElement }{@code <}{@link CTFixedPercentage }{@code >}}

+     * 

+     */

+    @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "alphaOff", scope = CTSchemeColor.class)

+    public JAXBElement<CTFixedPercentage> createCTSchemeColorAlphaOff(CTFixedPercentage value) {

+        return new JAXBElement<CTFixedPercentage>(_CTSRgbColorAlphaOff_QNAME, CTFixedPercentage.class, CTSchemeColor.class, value);

+    }

+

+    /**

+     * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}

+     * 

+     */

+    @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "greenOff", scope = CTSchemeColor.class)

+    public JAXBElement<CTPercentage> createCTSchemeColorGreenOff(CTPercentage value) {

+        return new JAXBElement<CTPercentage>(_CTSRgbColorGreenOff_QNAME, CTPercentage.class, CTSchemeColor.class, value);

+    }

+

+    /**

+     * Create an instance of {@link JAXBElement }{@code <}{@link CTPositiveFixedAngle }{@code >}}

+     * 

+     */

+    @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "hue", scope = CTSchemeColor.class)

+    public JAXBElement<CTPositiveFixedAngle> createCTSchemeColorHue(CTPositiveFixedAngle value) {

+        return new JAXBElement<CTPositiveFixedAngle>(_CTSRgbColorHue_QNAME, CTPositiveFixedAngle.class, CTSchemeColor.class, value);

+    }

+

+    /**

+     * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}

+     * 

+     */

+    @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "redMod", scope = CTSchemeColor.class)

+    public JAXBElement<CTPercentage> createCTSchemeColorRedMod(CTPercentage value) {

+        return new JAXBElement<CTPercentage>(_CTSRgbColorRedMod_QNAME, CTPercentage.class, CTSchemeColor.class, value);

+    }

+

+    /**

+     * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}

+     * 

+     */

+    @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "satOff", scope = CTSchemeColor.class)

+    public JAXBElement<CTPercentage> createCTSchemeColorSatOff(CTPercentage value) {

+        return new JAXBElement<CTPercentage>(_CTSRgbColorSatOff_QNAME, CTPercentage.class, CTSchemeColor.class, value);

+    }

+

+    /**

+     * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}

+     * 

+     */

+    @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "greenMod", scope = CTSchemeColor.class)

+    public JAXBElement<CTPercentage> createCTSchemeColorGreenMod(CTPercentage value) {

+        return new JAXBElement<CTPercentage>(_CTSRgbColorGreenMod_QNAME, CTPercentage.class, CTSchemeColor.class, value);

+    }

+

+    /**

+     * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}

+     * 

+     */

+    @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "sat", scope = CTSchemeColor.class)

+    public JAXBElement<CTPercentage> createCTSchemeColorSat(CTPercentage value) {

+        return new JAXBElement<CTPercentage>(_CTSRgbColorSat_QNAME, CTPercentage.class, CTSchemeColor.class, value);

+    }

+

+    /**

+     * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}

+     * 

+     */

+    @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "blue", scope = CTSchemeColor.class)

+    public JAXBElement<CTPercentage> createCTSchemeColorBlue(CTPercentage value) {

+        return new JAXBElement<CTPercentage>(_CTSRgbColorBlue_QNAME, CTPercentage.class, CTSchemeColor.class, value);

+    }

+

+    /**

+     * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}

+     * 

+     */

+    @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "red", scope = CTSchemeColor.class)

+    public JAXBElement<CTPercentage> createCTSchemeColorRed(CTPercentage value) {

+        return new JAXBElement<CTPercentage>(_CTSRgbColorRed_QNAME, CTPercentage.class, CTSchemeColor.class, value);

+    }

+

+    /**

+     * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}

+     * 

+     */

+    @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "satMod", scope = CTSchemeColor.class)

+    public JAXBElement<CTPercentage> createCTSchemeColorSatMod(CTPercentage value) {

+        return new JAXBElement<CTPercentage>(_CTSRgbColorSatMod_QNAME, CTPercentage.class, CTSchemeColor.class, value);

+    }

+

+    /**

+     * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}

+     * 

+     */

+    @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "blueMod", scope = CTSchemeColor.class)

+    public JAXBElement<CTPercentage> createCTSchemeColorBlueMod(CTPercentage value) {

+        return new JAXBElement<CTPercentage>(_CTSRgbColorBlueMod_QNAME, CTPercentage.class, CTSchemeColor.class, value);

+    }

+

+    /**

+     * Create an instance of {@link JAXBElement }{@code <}{@link CTAngle }{@code >}}

+     * 

+     */

+    @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "hueOff", scope = CTSchemeColor.class)

+    public JAXBElement<CTAngle> createCTSchemeColorHueOff(CTAngle value) {

+        return new JAXBElement<CTAngle>(_CTSRgbColorHueOff_QNAME, CTAngle.class, CTSchemeColor.class, value);

+    }

+

+    /**

+     * Create an instance of {@link JAXBElement }{@code <}{@link CTPositiveFixedPercentage }{@code >}}

+     * 

+     */

+    @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "shade", scope = CTSchemeColor.class)

+    public JAXBElement<CTPositiveFixedPercentage> createCTSchemeColorShade(CTPositiveFixedPercentage value) {

+        return new JAXBElement<CTPositiveFixedPercentage>(_CTSRgbColorShade_QNAME, CTPositiveFixedPercentage.class, CTSchemeColor.class, value);

+    }

+

+    /**

+     * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}

+     * 

+     */

+    @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "lumMod", scope = CTSchemeColor.class)

+    public JAXBElement<CTPercentage> createCTSchemeColorLumMod(CTPercentage value) {

+        return new JAXBElement<CTPercentage>(_CTSRgbColorLumMod_QNAME, CTPercentage.class, CTSchemeColor.class, value);

+    }

+

+    /**

+     * Create an instance of {@link JAXBElement }{@code <}{@link CTInverseTransform }{@code >}}

+     * 

+     */

+    @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "inv", scope = CTSchemeColor.class)

+    public JAXBElement<CTInverseTransform> createCTSchemeColorInv(CTInverseTransform value) {

+        return new JAXBElement<CTInverseTransform>(_CTSRgbColorInv_QNAME, CTInverseTransform.class, CTSchemeColor.class, value);

+    }

+

+    /**

+     * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}

+     * 

+     */

+    @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "lumOff", scope = CTSchemeColor.class)

+    public JAXBElement<CTPercentage> createCTSchemeColorLumOff(CTPercentage value) {

+        return new JAXBElement<CTPercentage>(_CTSRgbColorLumOff_QNAME, CTPercentage.class, CTSchemeColor.class, value);

+    }

+

+    /**

+     * Create an instance of {@link JAXBElement }{@code <}{@link CTPositiveFixedPercentage }{@code >}}

+     * 

+     */

+    @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "tint", scope = CTSchemeColor.class)

+    public JAXBElement<CTPositiveFixedPercentage> createCTSchemeColorTint(CTPositiveFixedPercentage value) {

+        return new JAXBElement<CTPositiveFixedPercentage>(_CTSRgbColorTint_QNAME, CTPositiveFixedPercentage.class, CTSchemeColor.class, value);

+    }

+

+    /**

+     * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}

+     * 

+     */

+    @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "green", scope = CTSchemeColor.class)

+    public JAXBElement<CTPercentage> createCTSchemeColorGreen(CTPercentage value) {

+        return new JAXBElement<CTPercentage>(_CTSRgbColorGreen_QNAME, CTPercentage.class, CTSchemeColor.class, value);

+    }

+

+    /**

+     * Create an instance of {@link JAXBElement }{@code <}{@link CTComplementTransform }{@code >}}

+     * 

+     */

+    @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "comp", scope = CTSchemeColor.class)

+    public JAXBElement<CTComplementTransform> createCTSchemeColorComp(CTComplementTransform value) {

+        return new JAXBElement<CTComplementTransform>(_CTSRgbColorComp_QNAME, CTComplementTransform.class, CTSchemeColor.class, value);

+    }

+

+    /**

+     * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}

+     * 

+     */

+    @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "blueOff", scope = CTSchemeColor.class)

+    public JAXBElement<CTPercentage> createCTSchemeColorBlueOff(CTPercentage value) {

+        return new JAXBElement<CTPercentage>(_CTSRgbColorBlueOff_QNAME, CTPercentage.class, CTSchemeColor.class, value);

+    }

+

+    /**

+     * Create an instance of {@link JAXBElement }{@code <}{@link CTPositivePercentage }{@code >}}

+     * 

+     */

+    @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "hueMod", scope = CTSchemeColor.class)

+    public JAXBElement<CTPositivePercentage> createCTSchemeColorHueMod(CTPositivePercentage value) {

+        return new JAXBElement<CTPositivePercentage>(_CTSRgbColorHueMod_QNAME, CTPositivePercentage.class, CTSchemeColor.class, value);

+    }

+

+    /**

+     * Create an instance of {@link JAXBElement }{@code <}{@link CTGrayscaleTransform }{@code >}}

+     * 

+     */

+    @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "gray", scope = CTSchemeColor.class)

+    public JAXBElement<CTGrayscaleTransform> createCTSchemeColorGray(CTGrayscaleTransform value) {

+        return new JAXBElement<CTGrayscaleTransform>(_CTSRgbColorGray_QNAME, CTGrayscaleTransform.class, CTSchemeColor.class, value);

+    }

+

+    /**

+     * Create an instance of {@link JAXBElement }{@code <}{@link CTPositiveFixedPercentage }{@code >}}

+     * 

+     */

+    @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "alpha", scope = CTScRgbColor.class)

+    public JAXBElement<CTPositiveFixedPercentage> createCTScRgbColorAlpha(CTPositiveFixedPercentage value) {

+        return new JAXBElement<CTPositiveFixedPercentage>(_CTSRgbColorAlpha_QNAME, CTPositiveFixedPercentage.class, CTScRgbColor.class, value);

+    }

+

+    /**

+     * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}

+     * 

+     */

+    @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "lum", scope = CTScRgbColor.class)

+    public JAXBElement<CTPercentage> createCTScRgbColorLum(CTPercentage value) {

+        return new JAXBElement<CTPercentage>(_CTSRgbColorLum_QNAME, CTPercentage.class, CTScRgbColor.class, value);

+    }

+

+    /**

+     * Create an instance of {@link JAXBElement }{@code <}{@link CTGammaTransform }{@code >}}

+     * 

+     */

+    @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "gamma", scope = CTScRgbColor.class)

+    public JAXBElement<CTGammaTransform> createCTScRgbColorGamma(CTGammaTransform value) {

+        return new JAXBElement<CTGammaTransform>(_CTSRgbColorGamma_QNAME, CTGammaTransform.class, CTScRgbColor.class, value);

+    }

+

+    /**

+     * Create an instance of {@link JAXBElement }{@code <}{@link CTInverseGammaTransform }{@code >}}

+     * 

+     */

+    @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "invGamma", scope = CTScRgbColor.class)

+    public JAXBElement<CTInverseGammaTransform> createCTScRgbColorInvGamma(CTInverseGammaTransform value) {

+        return new JAXBElement<CTInverseGammaTransform>(_CTSRgbColorInvGamma_QNAME, CTInverseGammaTransform.class, CTScRgbColor.class, value);

+    }

+

+    /**

+     * Create an instance of {@link JAXBElement }{@code <}{@link CTPositivePercentage }{@code >}}

+     * 

+     */

+    @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "alphaMod", scope = CTScRgbColor.class)

+    public JAXBElement<CTPositivePercentage> createCTScRgbColorAlphaMod(CTPositivePercentage value) {

+        return new JAXBElement<CTPositivePercentage>(_CTSRgbColorAlphaMod_QNAME, CTPositivePercentage.class, CTScRgbColor.class, value);

+    }

+

+    /**

+     * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}

+     * 

+     */

+    @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "redOff", scope = CTScRgbColor.class)

+    public JAXBElement<CTPercentage> createCTScRgbColorRedOff(CTPercentage value) {

+        return new JAXBElement<CTPercentage>(_CTSRgbColorRedOff_QNAME, CTPercentage.class, CTScRgbColor.class, value);

+    }

+

+    /**

+     * Create an instance of {@link JAXBElement }{@code <}{@link CTFixedPercentage }{@code >}}

+     * 

+     */

+    @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "alphaOff", scope = CTScRgbColor.class)

+    public JAXBElement<CTFixedPercentage> createCTScRgbColorAlphaOff(CTFixedPercentage value) {

+        return new JAXBElement<CTFixedPercentage>(_CTSRgbColorAlphaOff_QNAME, CTFixedPercentage.class, CTScRgbColor.class, value);

+    }

+

+    /**

+     * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}

+     * 

+     */

+    @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "greenOff", scope = CTScRgbColor.class)

+    public JAXBElement<CTPercentage> createCTScRgbColorGreenOff(CTPercentage value) {

+        return new JAXBElement<CTPercentage>(_CTSRgbColorGreenOff_QNAME, CTPercentage.class, CTScRgbColor.class, value);

+    }

+

+    /**

+     * Create an instance of {@link JAXBElement }{@code <}{@link CTPositiveFixedAngle }{@code >}}

+     * 

+     */

+    @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "hue", scope = CTScRgbColor.class)

+    public JAXBElement<CTPositiveFixedAngle> createCTScRgbColorHue(CTPositiveFixedAngle value) {

+        return new JAXBElement<CTPositiveFixedAngle>(_CTSRgbColorHue_QNAME, CTPositiveFixedAngle.class, CTScRgbColor.class, value);

+    }

+

+    /**

+     * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}

+     * 

+     */

+    @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "redMod", scope = CTScRgbColor.class)

+    public JAXBElement<CTPercentage> createCTScRgbColorRedMod(CTPercentage value) {

+        return new JAXBElement<CTPercentage>(_CTSRgbColorRedMod_QNAME, CTPercentage.class, CTScRgbColor.class, value);

+    }

+

+    /**

+     * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}

+     * 

+     */

+    @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "satOff", scope = CTScRgbColor.class)

+    public JAXBElement<CTPercentage> createCTScRgbColorSatOff(CTPercentage value) {

+        return new JAXBElement<CTPercentage>(_CTSRgbColorSatOff_QNAME, CTPercentage.class, CTScRgbColor.class, value);

+    }

+

+    /**

+     * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}

+     * 

+     */

+    @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "greenMod", scope = CTScRgbColor.class)

+    public JAXBElement<CTPercentage> createCTScRgbColorGreenMod(CTPercentage value) {

+        return new JAXBElement<CTPercentage>(_CTSRgbColorGreenMod_QNAME, CTPercentage.class, CTScRgbColor.class, value);

+    }

+

+    /**

+     * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}

+     * 

+     */

+    @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "sat", scope = CTScRgbColor.class)

+    public JAXBElement<CTPercentage> createCTScRgbColorSat(CTPercentage value) {

+        return new JAXBElement<CTPercentage>(_CTSRgbColorSat_QNAME, CTPercentage.class, CTScRgbColor.class, value);

+    }

+

+    /**

+     * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}

+     * 

+     */

+    @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "blue", scope = CTScRgbColor.class)

+    public JAXBElement<CTPercentage> createCTScRgbColorBlue(CTPercentage value) {

+        return new JAXBElement<CTPercentage>(_CTSRgbColorBlue_QNAME, CTPercentage.class, CTScRgbColor.class, value);

+    }

+

+    /**

+     * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}

+     * 

+     */

+    @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "red", scope = CTScRgbColor.class)

+    public JAXBElement<CTPercentage> createCTScRgbColorRed(CTPercentage value) {

+        return new JAXBElement<CTPercentage>(_CTSRgbColorRed_QNAME, CTPercentage.class, CTScRgbColor.class, value);

+    }

+

+    /**

+     * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}

+     * 

+     */

+    @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "satMod", scope = CTScRgbColor.class)

+    public JAXBElement<CTPercentage> createCTScRgbColorSatMod(CTPercentage value) {

+        return new JAXBElement<CTPercentage>(_CTSRgbColorSatMod_QNAME, CTPercentage.class, CTScRgbColor.class, value);

+    }

+

+    /**

+     * Create an instance of {@link JAXBElement }{@code <}{@link CTPercentage }{@code >}}

+     * 

+     */

+    @XmlElementDecl(namespace = "http://schemas.openxmlformats.org/drawingml/2006/main", name = "blueMod", scope = CTScRgbColor.class)

+    public JAXBElement<CTPercentage> createCTScRgbColorBlueMod(CTPercentage value) {

+        return new JAXBElement<CTPercentage>(_CTSRgbColorBlueMod_QNAME, CTPercentage.class, CTScRgbColor.class, value);

+    }

+

+    /**

+     * Create