Difference between revisions of "Documentation/DevGuide/Drawings/Glue Points and Connectors"
From Apache OpenOffice Wiki
< Documentation | DevGuide
(Initial author Sun Microsystems, Inc.) |
|||
(4 intermediate revisions by 3 users not shown) | |||
Line 7: | Line 7: | ||
|NextPage=Documentation/DevGuide/Drawings/Layer Handling | |NextPage=Documentation/DevGuide/Drawings/Layer Handling | ||
}} | }} | ||
− | {{DISPLAYTITLE:Glue Points and Connectors}} | + | {{Documentation/DevGuideLanguages|Documentation/DevGuide/Drawings/{{SUBPAGENAME}}}} |
+ | {{DISPLAYTITLE:Glue Points and Connectors}} | ||
By default, there are four glue points available that are used within the properties <code>StartGluePointIndex</code> and <code>EndGluePointIndex</code>. If a connector connects to the top, bottom, left or right of a shape, a new glue point is not created. The four directions are declared in the following example. | By default, there are four glue points available that are used within the properties <code>StartGluePointIndex</code> and <code>EndGluePointIndex</code>. If a connector connects to the top, bottom, left or right of a shape, a new glue point is not created. The four directions are declared in the following example. | ||
The first example demonstrates how to create a <idl>com.sun.star.drawing.ConnectorShape</idl> and connect it to two other shapes using the glue point index property. | The first example demonstrates how to create a <idl>com.sun.star.drawing.ConnectorShape</idl> and connect it to two other shapes using the glue point index property. | ||
<!--[SOURCE:Drawing/GluePointDemo.java]--> | <!--[SOURCE:Drawing/GluePointDemo.java]--> | ||
− | + | <syntaxhighlight lang="java"> | |
XDrawPagesSupplier xDrawPagesSupplier = (XDrawPagesSupplier)UnoRuntime.queryInterface( | XDrawPagesSupplier xDrawPagesSupplier = (XDrawPagesSupplier)UnoRuntime.queryInterface( | ||
XDrawPagesSupplier.class, xComponent); | XDrawPagesSupplier.class, xComponent); | ||
Line 42: | Line 43: | ||
xConnectorPropSet.setPropertyValue("StartGluePointIndex", new Integer(nStartIndex)); | xConnectorPropSet.setPropertyValue("StartGluePointIndex", new Integer(nStartIndex)); | ||
xConnectorPropSet.setPropertyValue("EndShape", xShape2); | xConnectorPropSet.setPropertyValue("EndShape", xShape2); | ||
− | xConnectorPropSet.setPropertyValue("EndGluePointIndex", new Integer(nEndIndex)); | + | xConnectorPropSet.setPropertyValue("EndGluePointIndex", new Integer(nEndIndex));</syntaxhighlight> |
The next example demonstrates the usage of user defined glue points. | The next example demonstrates the usage of user defined glue points. | ||
<!--[SOURCE:Drawing/GluePointDemo.java]--> | <!--[SOURCE:Drawing/GluePointDemo.java]--> | ||
− | + | <syntaxhighlight lang="java"> | |
XGluePointsSupplier xGluePointsSupplier; | XGluePointsSupplier xGluePointsSupplier; | ||
XIndexContainer xIndexContainer; | XIndexContainer xIndexContainer; | ||
Line 84: | Line 85: | ||
xConnector2PropSet.setPropertyValue("StartGluePointIndex", new Integer(nIndexOfGluePoint1)); | xConnector2PropSet.setPropertyValue("StartGluePointIndex", new Integer(nIndexOfGluePoint1)); | ||
xConnector2PropSet.setPropertyValue( "EndShape", xShape2 ); | xConnector2PropSet.setPropertyValue( "EndShape", xShape2 ); | ||
− | xConnector2PropSet.setPropertyValue( "EndGluePointIndex", new Integer(nIndexOfGluePoint2)); | + | xConnector2PropSet.setPropertyValue( "EndGluePointIndex", new Integer(nIndexOfGluePoint2));</syntaxhighlight> |
{{PDL1}} | {{PDL1}} | ||
− | [[Category: Drawing Documents and Presentation Documents]] | + | |
+ | [[Category:Documentation/Developer's Guide/Drawing Documents and Presentation Documents]] |
Latest revision as of 14:34, 20 December 2020
- Moving and Scaling
- Rotating and Shearing
- Transforming
- Ordering
- Grouping, Combining and Binding
- General Drawing Properties
- Glue Points and Connectors
- Layer Handling
By default, there are four glue points available that are used within the properties StartGluePointIndex
and EndGluePointIndex
. If a connector connects to the top, bottom, left or right of a shape, a new glue point is not created. The four directions are declared in the following example.
The first example demonstrates how to create a com.sun.star.drawing.ConnectorShape and connect it to two other shapes using the glue point index property.
XDrawPagesSupplier xDrawPagesSupplier = (XDrawPagesSupplier)UnoRuntime.queryInterface( XDrawPagesSupplier.class, xComponent); XDrawPages xDrawPages = xDrawPagesSupplier.getDrawPages(); XPage xPage = (XdrawPage)UnoRuntime.queryInterface(XDrawPage.class, xDrawPages.getByIndex(0)); XShapes xShapes = (XShapes) UnoRuntime.queryInterface(XShapes.class, xPage); // create two rectangles XShape xShape1 = ShapeHelper.createShape(xDrawDoc, new Point(15000, 1000), new Size(5000, 5000), "com.sun.star.drawing.RectangleShape"); XShape xShape2 = ShapeHelper.createShape(xDrawDoc, new Point(2000, 15000), new Size(5000, 5000), "com.sun.star.drawing.EllipseShape"); // and a connector XShape xConnector = ShapeHelper.createShape(xDrawDoc, new Point(0, 0), new Size(0, 0), "com.sun.star.drawing.ConnectorShape"); xShapes.add(xShape1); xShapes.add(xShape2); xShapes.add(xConnector); XPropertySet xConnectorPropSet = (XPropertySet)UnoRuntime.queryInterface( XPropertySet.class, xConnector); // Index value of 0 : the shape is connected at the top // Index value of 1 : the shape is connected at the left // Index value of 2 : the shape is connected at the bottom // Index value of 3 : the shape is connected at the right int nStartIndex = 3; int nEndIndex = 1; // the "StartPosition" or "EndPosition" property needs not to be set // if there is a shape to connect xConnectorPropSet.setPropertyValue("StartShape", xShape1); xConnectorPropSet.setPropertyValue("StartGluePointIndex", new Integer(nStartIndex)); xConnectorPropSet.setPropertyValue("EndShape", xShape2); xConnectorPropSet.setPropertyValue("EndGluePointIndex", new Integer(nEndIndex));
The next example demonstrates the usage of user defined glue points.
XGluePointsSupplier xGluePointsSupplier; XIndexContainer xIndexContainer; XIdentifierContainer xIdentifierContainer; /* take care to use the structure GluePoint2 and not GluePoint, because otherwise the XIdentifierContainer won't accept it */ GluePoint2 aGluePoint = new GluePoint2(); aGluePoint.IsRelative = false; aGluePoint.PositionAlignment = Alignment.CENTER; aGluePoint.Escape = EscapeDirection.SMART; aGluePoint.IsUserDefined = true; aGluePoint.Position.X = 0; aGluePoint.Position.Y = 0; // create and insert a glue point at shape1 xGluePointsSupplier = (XGluePointsSupplier)UnoRuntime.queryInterface( XGluePointsSupplier.class, xShape1); xIndexContainer = xGluePointsSupplier.getGluePoints(); xIdentifierContainer = (XIdentifierContainer)UnoRuntime.queryInterface( XIdentifierContainer.class, xIndexContainer); int nIndexOfGluePoint1 = xIdentifierContainer.insert(aGluePoint); // create and insert a glue point at shape2 xGluePointsSupplier = (XGluePointsSupplier) UnoRuntime.queryInterface(XGluePointsSupplier.class, xShape2); xIndexContainer = xGluePointsSupplier.getGluePoints(); xIdentifierContainer = (XIdentifierContainer)UnoRuntime.queryInterface( XIdentifierContainer.class, xIndexContainer); int nIndexOfGluePoint2 = xIdentifierContainer.insert(aGluePoint); // create and add a connector XShape xConnector2 = ShapeHelper.createShape(xDrawDoc, new Point(0, 0), new Size(0, 0), "com.sun.star.drawing.ConnectorShape"); xShapes.add( xConnector2 ); XPropertySet xConnector2PropSet = (XPropertySet)UnoRuntime.queryInterface( XPropertySet.class, xConnector2); xConnector2PropSet.setPropertyValue("StartShape", xShape1); xConnector2PropSet.setPropertyValue("StartGluePointIndex", new Integer(nIndexOfGluePoint1)); xConnector2PropSet.setPropertyValue( "EndShape", xShape2 ); xConnector2PropSet.setPropertyValue( "EndGluePointIndex", new Integer(nIndexOfGluePoint2));
Content on this page is licensed under the Public Documentation License (PDL). |