text fit proportional fittosize Nicole Scholz How can I change the size of a text within a shape proportional to the shape?

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