API/Samples/Java/Draw/Impress/SDraw
Open Drawing documents
you need to specifiy the URL of the document to load for loadComponentFromURL() as “private:factory/sdraw”
Draw document structure
Draw documents maintain their drawing content on draw pages, master pages and layers. If a new draw document is opened, it contains one slide that corresponds to a <idls>com.sun.star.drawing.DrawPage</idls> service. Switching to Master View brings up the master page handled by the service <idls>com.sun.star.drawing.MasterPage</idls>. The Layer View allows access to layers to structure your drawings. These layers can be controlled through <idls>com.sun.star.drawing.Layer</idls> and <idls>com.sun.star.drawing.LayerManager</idls>.
The <idls>com.sun.star.drawing.DrawingDocument</idls> service has following interfaces for this purposes:
XDrawPagesSupplier: XMasterPagesSupplier: XLayerSupplier: XStyleFamiliesSupplier:
<idl>com.sun.star.drawing.XDrawPageSupplier</idl> and <idl>com.sun.star.drawing.XMasterPagesSupplier</idl> supplies XDrawPages and <idl>com.sun.star.drawing.MasterPage</idl> via <idl>com.sun.star.container.XIndexAccess</idl>. Each DrawPage has support <idl>com.sun.star.drawing.XShapes</idl> interface to manage shapes in this DrawPage.
The brief summary to access the single shape in Drawing document might be described as:
- Open Drawing document
- Querying DrawPagesSupplier interface of Drawing document
- Call getDrawPages() method of DrawPagesSupplier to get DrawPages
- Querying XIndexAccess interface of DrawPages
- Single DrawPage can be accessd through method of <idlm>com.sun.star.container.XXIndexAccess:getByIndex</idlm>
- However, <idlm>com.sun.star.container.XIndexAccess:getByIndex</idlm> method returns ANY type, you should querying <idl>com.sun.star.drawing.DrawPage</idl> interface before using it.
- Going a little bit further, Querying <idl>com.sun.star.drawing.XShapes</idl> interface of <idl>com.sun.star.drawing.DrawPage</idl> to gain access to the list of <idl>com.sun.star.drawing.Shapes</idl>
Shapes
Drawings consist of shapes on draw pages. Shapes are drawing elements, such as rectangles, circles, polygons, and lines. To create a drawing, get a shape by its service name at the ServiceFactory of a drawing document and add it to the appropriate DrawPage.
//get MSF
com.sun.star.lang.XMultiServiceFactory xDocMSF =
(com.sun.star.lang.XMultiServiceFactory)UnoRuntime.queryInterface(
com.sun.star.lang.XMultiServiceFactory.class, xDocComp );
...
oInt = xDocMSF.createInstance("com.sun.star.drawing.EllipseShape");
xShape = (com.sun.star.drawing.XShape)UnoRuntime.queryInterface(
com.sun.star.drawing.XShape.class, oInt);
...
// set the size and positions
size.Height = height;
size.Width = width;
position.X = x;
position.Y = y;
xShape.setSize(size);
xShape.setPosition(position);
ServiceFactory can create several kind of Shape Service, they could be LineShape, PolyLineShape, RectangleShape, TextShape etc.