Hi Urs,
Urs Reupke wrote:
yesterday I hit upon a problem when trying to get the computed text
length by calling SVGOMTextElement.getComputedTextLength() - a
NullPointerException occured, which, as close scrutiny revealed, had
it's origin in the missing SVGContext of the element.
Now, I am somewhat at a loss - I thought an elements context was
implicitly set upon creation, no need for me to tamper with it, so I
have no idea how to solve the problem. Do I need to set the svgContext
manually?
No, but if you are loading a 'static' SVG document (no script
tags or event attributes) then you need to tell Batik that you still
want access to the SVGDOM (which is provided by the context objects).
This can be done in the canvas with setDocumentState(ALWAYS_DYNAMIC),
or if you are just loading the document yourself you need to use
the GVTBuilder and the BridgeContext (the BridgeContext has a
method 'setDynamicState' - which can take the value 'DYNAMIC').
The exception occurs in method breakText(SVGOMTextElement), which is
called by afterLoad() - see code below.
Can you give me a pointer how to solve the problem?
Thanks a lot
-Urs
Code Excerpt:
private void breakText(SVGOMTextElement text) {
float textLength=text.getComputedTextLength(); //This is where
things go haywire
if textLength<120{...}
else if textLength>120 {...}
...}
protected void afterLoad() {
SVGOMTextElement currentNode;
this.graphic=canvas.getSVGDocument();
NodeList textNodes = graphic.getElementsByTagName("text");
int number=textNodes.getLength();
for(int i = 0; i < number; i++) {
currentNode=(SVGOMTextElement) textNodes.item(i);
//Check whether the Text Element is in the right group.
if
(((SVGOMGElement)currentNode.getParentNode().getParentNode().getParentNode()).getAttribute("id").matches("cascade"))
{
addOnClick(currentNode); //adds an EventListener to handle
"OnClick" events.
breakText(currentNode); //breaks the text if it is to long
}
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]