You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@poi.apache.org by ni...@apache.org on 2006/04/12 20:47:47 UTC
svn commit: r393575 - in
/jakarta/poi/trunk/src/documentation/content/xdocs/hslf: book.xml
how-to-shapes.xml hslf_shapes.gif
Author: nick
Date: Wed Apr 12 11:47:44 2006
New Revision: 393575
URL: http://svn.apache.org/viewcvs?rev=393575&view=rev
Log:
Add Yegor's documention on the Shapes and Pictures stuff
Added:
jakarta/poi/trunk/src/documentation/content/xdocs/hslf/how-to-shapes.xml
jakarta/poi/trunk/src/documentation/content/xdocs/hslf/hslf_shapes.gif (with props)
Modified:
jakarta/poi/trunk/src/documentation/content/xdocs/hslf/book.xml
Modified: jakarta/poi/trunk/src/documentation/content/xdocs/hslf/book.xml
URL: http://svn.apache.org/viewcvs/jakarta/poi/trunk/src/documentation/content/xdocs/hslf/book.xml?rev=393575&r1=393574&r2=393575&view=diff
==============================================================================
--- jakarta/poi/trunk/src/documentation/content/xdocs/hslf/book.xml (original)
+++ jakarta/poi/trunk/src/documentation/content/xdocs/hslf/book.xml Wed Apr 12 11:47:44 2006
@@ -13,6 +13,7 @@
<menu label="HSLF">
<menu-item label="Overview" href="index.html"/>
<menu-item label="Quick Guide" href="quick-guide.html"/>
+ <menu-item label="Shapes HowTo" href="how-to-shapes.html"/>
<menu-item label="PPT File Format" href="ppt-file-format.html"/>
</menu>
Added: jakarta/poi/trunk/src/documentation/content/xdocs/hslf/how-to-shapes.xml
URL: http://svn.apache.org/viewcvs/jakarta/poi/trunk/src/documentation/content/xdocs/hslf/how-to-shapes.xml?rev=393575&view=auto
==============================================================================
--- jakarta/poi/trunk/src/documentation/content/xdocs/hslf/how-to-shapes.xml (added)
+++ jakarta/poi/trunk/src/documentation/content/xdocs/hslf/how-to-shapes.xml Wed Apr 12 11:47:44 2006
@@ -0,0 +1,215 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2004 The Apache Software Foundation. All rights reserved. -->
+<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.1//EN" "../dtd/document-v11.dtd">
+
+<document>
+ <header>
+ <title>Busy Developers' Guide to HSLF drawing layer</title>
+ <authors>
+ <person email="yegor@dinom.ru" name="Yegor Kozlov" id="CO"/>
+ </authors>
+ </header>
+ <body>
+ <section><title>Busy Developers' Guide to HSLF drawing layer</title>
+ <section><title>Index of Features</title>
+ <ul>
+ <li><link href="#NewPresentation">How to create a new presentation and add new slides to it</link></li>
+ <li><link href="#PageSize">How to retrieve or change slide size</link></li>
+ <li><link href="#GetShapes">How to get shapes contained in a particular slide</link></li>
+ <li><link href="#Shapes">Drawing a shape on a slide</link></li>
+ <li><link href="#Pictures">How to add/retrieve pictures</link></li>
+ </ul>
+ </section>
+ <section><title>Features</title>
+ <anchor id="NewPresentation"/>
+ <section><title>New Presentation</title>
+ <source>
+ //create a new empty slide show
+ SlideShow ppt = new SlideShow();
+
+ //add first slide
+ Slide s1 = ppt.createSlide();
+
+ //add second slide
+ Slide s2 = ppt.createSlide();
+
+ //save changes in a file
+ FileOutputStream out = new FileOutputStream("slideshow.ppt");
+ wb.write(out);
+ out.close();
+ </source>
+ </section>
+ <anchor id="PageSize"/>
+ <section><title>How to retrieve or change slide size</title>
+ <source>
+ SlideShow ppt = new SlideShow(new HSLFSlideShow("slideshow.ppt"));
+ //retrieve page size. Coordinates are expressed in points (72 dpi)
+ java.awt.Dimension pgsize = ppt.getPageSize();
+ int pgx = pgsize.width; //slide width
+ int pgy = pgsize.height; //slide height
+
+ //set new page size
+ ppt.setPageSize(new java.awt.Dimension(1024, 768));
+ //save changes
+ FileOutputStream out = new FileOutputStream("slideshow.ppt");
+ wb.write(out);
+ out.close();
+ </source>
+ </section>
+ <anchor id="GetShapes"/>
+ <section><title>How to get shapes contained in a particular slide</title>
+ <p>The superclass of all shapes in HSLF is the Shape class - the elemental object that composes a drawing.
+ The following pictute shows the class tree of HSLF shapes:
+ </p>
+ <p>
+ <img src="hslf_shapes.gif" alt="Class Tree of HSLF Shapes" width="611" height="285"/>
+ </p>
+ <p>
+ The following fragment demonstrates how to iterate over shapes for each slide.
+ </p>
+ <source>
+ SlideShow ppt = new SlideShow(new HSLFSlideShow("slideshow.ppt"));
+ //get slides
+ Slide[] slide = ppt.getSlides();
+ for (int i = 0; i < slide.length; i++){
+ Shape[] sh = slide[i].getShapes();
+ for (int j = 0; j < sh.length; j++){
+ //name of the shape
+ String name = sh[j].getShapeName();
+
+ //shapes's anchor which defines the position of this shape in the slide
+ java.awt.Rectangle anchor = sh[j].getAnchor();
+
+ if (sh[j] instanceof Line){
+ Line line = (Line)sh[j];
+ //work with Line
+ } else if (sh[j] instanceof AutoShape){
+ AutoShape shape = (AutoShape)sh[j];
+ //work with AutoShape
+ } else if (sh[j] instanceof TextBox){
+ TextBox shape = (TextBox)sh[j];
+ //work with TextBox
+ } else if (sh[j] instanceof Picture){
+ Picture shape = (Picture)sh[j];
+ //work with Picture
+ }
+ }
+ }
+ </source>
+ </section>
+ <anchor id="Shapes"/>
+ <section><title>Drawing a shape on a slide</title>
+ <p>
+ When you add a shape, you usually specify the dimensions of the shape and the position
+ of the upper left corner of the bounding box for the shape relative to the upper left
+ corner of the slide. Distances in the drawing layer are measured in points (72 points = 1 inch).
+ </p>
+ <source>
+ SlideShow ppt = new SlideShow);
+
+ Slide slide = ppt.createSlide();
+
+ //Line shape
+ Line line = new Line();
+ line.setAnchor(new java.awt.Rectangle(50, 50, 100, 20));
+ line.setLineColor(new Color(0, 128, 0));
+ line.setLineStyle(Line.LineDashDotSys);
+ slide.addShape(line);
+
+ //TextBox
+ TextBox txt = new TextBox();
+ txt.setText("Hello, World!");
+ txt.setAnchor(new java.awt.Rectangle(100, 100, 200, 50));
+ txt.setFontSize(32);
+ txt.setFontName("Arial");
+ txt.setBold(true);
+ slide.addShape(txt);
+
+ //Autoshape
+ //32-point star
+ AutoShape sh1 = new AutoShape(ShapeTypes.Star32);
+ sh1.setAnchor(new java.awt.Rectangle(50, 50, 100, 200));
+ sh1.setFillColor(Color.red);
+ slide.addShape(sh1);
+
+ //Trapezoid
+ AutoShape sh2 = new AutoShape(ShapeTypes.Trapezoid);
+ sh2.setAnchor(new java.awt.Rectangle(150, 150, 100, 200));
+ sh2.setFillColor(Color.blue);
+ slide.addShape(sh2);
+
+ FileOutputStream out = new FileOutputStream("slideshow.ppt");
+ wb.write(out);
+ out.close();
+ </source>
+ </section>
+ <anchor id="Pictures"/>
+ <section><title>How to add/retrieve pictures</title>
+ <p>
+ Note, for now only PNG and JPEG formats are supported.
+ </p>
+ <source>
+ SlideShow ppt = new SlideShow(new HSLFSlideShow("slideshow.ppt"));
+
+ //extract all pictures contained in the presentation
+ PictureData[] pdata = ppt.getPictureData();
+ for (int i = 0; i < pdata.length; i++){
+ PictureData pict = pdata[i];
+
+ //raw picture data
+ byte[] data = pict.getData();
+
+ int type = pict.getType();
+ if (type == Picture.JPEG){
+ FileOutputStream out = new FileOutputStream("pict"+i+".jpg");
+ out.write(data);
+ out.close();
+ } else if (type == Picture.PNG){
+ FileOutputStream out = new FileOutputStream("pict"+i+".png");
+ out.write(data);
+ out.close();
+ }
+ }
+
+ // add a new picture to this slideshow and insert it in a new slide
+ int idx = ppt.addPicture(new File("clock.jpg"), Picture.JPEG);
+
+ Picture pict = new Picture(idx);
+
+ //set image position in the slide
+ pict.setAnchor(new java.awt.Rectangle(100, 100, 300, 200));
+
+ Slide slide = ppt.createSlide();
+ slide.addShape(pict);
+
+ //now retrieve pictures containes in the first slide and save them on disk
+ slide = ppt.getSlides()[0];
+ Shape[] sh = slide.getShapes();
+ for (int i = 0; i < sh.length; i++){
+ if (sh[i] instanceof Picture){
+ Picture pict = (Picture)sh[i];
+ PictureData data = pict.getPictureData();
+ byte[] data = pict.getData();
+ int type = pict.getType();
+ if (type == Picture.JPEG){
+ FileOutputStream out = new FileOutputStream("slide0_"+i+".jpg");
+ out.write(data);
+ out.close();
+ } else if (type == Picture.PNG){
+ FileOutputStream out = new FileOutputStream("slide0_"+i+".png");
+ out.write(data);
+ out.close();
+ }
+ }
+ }
+
+ FileOutputStream out = new FileOutputStream("slideshow.ppt");
+ wb.write(out);
+ out.close();
+
+ </source>
+ </section>
+ </section>
+ </section>
+ </body>
+</document>
Added: jakarta/poi/trunk/src/documentation/content/xdocs/hslf/hslf_shapes.gif
URL: http://svn.apache.org/viewcvs/jakarta/poi/trunk/src/documentation/content/xdocs/hslf/hslf_shapes.gif?rev=393575&view=auto
==============================================================================
Binary file - no diff available.
Propchange: jakarta/poi/trunk/src/documentation/content/xdocs/hslf/hslf_shapes.gif
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
---------------------------------------------------------------------
To unsubscribe, e-mail: poi-dev-unsubscribe@jakarta.apache.org
Mailing List: http://jakarta.apache.org/site/mail2.html#poi
The Apache Jakarta POI Project: http://jakarta.apache.org/poi/