In this example the text within a rectangle fits proportional to the rectangle.
This is realised with the TextFitToSize method. With this method the distance
of the text to each edge of the shape can be set and so the size of the text changes.
/* Retrieve the Desktop object, we need its XComponentLoader interface to load a new document */
oDesktop = UNO.createDesktop() -- get the UNO Desktop service object
xComponentLoader = oDesktop~{%see com.sun.star.frame.XDesktop%XDesktop}~{%see com.sun.star.frame.XComponentLoader%XComponentLoader} -- get componentLoader interface
/* open the blank file */
url = "private:factory/sdraw"
xDrawComponent = xComponentLoader~loadComponentFromURL(url, "_blank", 0, -
.UNO~noProps)
/* need document's factory to be able to insert created objects */
xDocumentFactory = xDrawComponent~{%see com.sun.star.lang.XMultiServiceFactory%XMultiServiceFactory}
/* get draw page by index */
xDrawPage = xDrawComponent~{%see com.sun.star.drawing.XDrawPagesSupplier%XDrawPagesSupplier}~getDrawPages~getByIndex(0)~{%see com.sun.star.drawing.XDrawPage%XDrawPage}
/* create a Rectangle and add it to the shape */
xrectangle = xDocumentFactory~createInstance("{%see com.sun.star.drawing.RectangleShape}")~{%see com.sun.star.drawing.XShape%xshape}
xrectangle~setPosition(.bsf~new("{%see com.sun.star.awt.Point}", 1000, 1000))
xrectangle~setSize(.bsf~new("{%see com.sun.star.awt.Size}", 10000, 5000))
xDrawPage~add(xrectangle)
/* set the properties of the rectangle shape */
xShapeProps = xrectangle~{%see com.sun.star.beans.XPropertySet%XPropertySet}
xShapeProps~setPropertyValue("FillColor", box("int", "8A2BE2"x ~c2d)) -- set fill colour purple
xShapeProps~setPropertyValue("LineColor", box("int", "8A2BE2"x ~c2d)) -- set fill colour purple
/* set the properties of the text in the rectangle */
xShapeProps~setPropertyValue("TextFitToSize", -
bsf.getConstant("{%see com.sun.star.drawing.TextFitToSizeType}", "PROPORTIONAL"))
xShapeProps~setPropertyValue("TextLeftDistance", box("int", 1000))
xShapeProps~setPropertyValue("TextRightDistance", box("int", 1000))
xShapeProps~setPropertyValue("TextUpperDistance", box("int", 1000))
xShapeProps~setPropertyValue("TextLowerDistance", box("int", 1000))
xText = xrectangle~{%see com.sun.star.text.XText%XText}
xTextCursor = xText~createTextCursor
xTextCursor~gotoEnd(.false)
xTextRange = xTextCursor~{%see com.sun.star.text.XTextRange%XTextRange}
xTextRange~setString("I am a rectangle!")
call Syssleep 1
xShapeProps~setPropertyValue("TextFitToSize", -
bsf.getConstant("{%see com.sun.star.drawing.TextFitToSizeType}", "PROPORTIONAL"))
xShapeProps~setPropertyValue("TextLeftDistance", box("int", 100))
xShapeProps~setPropertyValue("TextRightDistance", box("int", 100))
xShapeProps~setPropertyValue("TextUpperDistance", box("int", 100))
xShapeProps~setPropertyValue("TextLowerDistance", box("int", 100))
::requires UNO.cls -- get UNO support