Thanks for your answer,

However my explanations must have been a little messy because my purpose is neither to extend batik with new elements
nor to define custom Paint. Therefore the ExtensionHandler subclassing seems inadequate.


I will try to be more explicit, below is the code for a Rectangle class.

public class Rectangle extends DrawableComponent {



   private int x;

   private int y;

   private int width;

private int height;

   private Color color;//if null defaults to black



   public Rectangle (int x, int y, int width, int height, Color color, Taggable 
taggable){

       super(taggable);

       this.x = x;

       this.y = y;

       this.width = width;

       this.height = height;

       this.color = color;

   }

/**

    * @see org.imgt.representation.tests.Drawable#paint()

    */

   public void paint(Graphics g) {

       Graphics2D g2 = (Graphics2D)g;

       g2.setPaint(color);

g2.fill(new java.awt.Rectangle(x, y, width, height));

}

}


Let's say I want to draw rectangles from an elsewhere paint:

class ElseWhere{

public void paint(Graphics g){

while (..){

...
...

Rectangle rect = new Rectangle(

                   X_MARGIN+X_TEXT_MARGIN+position,

                   Y_MARGIN+Y_TEXT_MARGIN+Y_RULER_HEIGHT,

                   2,

                   10,

                   getColorByFunctionality(a1.getFunctionality()),

                   t1 //implements taggable

                   );


...

}

}

public static void main(String[] args){

        / Get a DOMImplementation
       DOMImplementation domImpl =
           GenericDOMImplementation.getDOMImplementation();

       // Create an instance of org.w3c.dom.Document
       Document document = domImpl.createDocument(null, "svg", null);

       // Create an instance of the SVG Generator
       SVGGraphics2D svgGenerator = new SVGGraphics2D(document);

       // Ask the test to render into the SVG Graphics2D implementation
       Elsewhere test = new Elsewhere();
       test.paint(svgGenerator);

        ....

}



I'd like the program, when i call the paint method with an SVGGraphics2D to recurse through the paints like it normally goes on (?)
to check if the component has a taggable object associated, and if true to append its content to the SVG DOM.
This XML content is not to be rendered at all, it is only there for contextual and perhaps interaction purposes.


Thanks again if anyone has an idea


Oliver


Hi Oliver,

   You want to implement an extension handler:

http://xml.apache.org/batik/extendingBatik.html#customXMLTags

   You might also want to look at the code in batik.extension.svg
In particular the classes:

BatikStarElement, BatikStarElementBridge, BatikDomExtension &
BatikBridgeExtension.

oliver clement wrote:

> Hello,
>
> I'm starting to play with the Graphics2D capabilities of batik.
> The API i'm working on enables objects to be serialized into XML via a
> toXML() method defined in an interface called Taggable
> and I'd like to be able to customize the way batik converts 2D objects
> to SVG in a way such as it could include my XML content into the SVG
> groups.
>
> Lets say I use a CustomRectangle defining the paint(Graphics g) method,
> associated with an a A object implementing Taggable.
> The thing i'd like to obtain would be :
>
> <g fill="lime" stroke="lime"> > <rect x="284341" width="471" y="245" height="10" stroke="none" /> > <a name="ect" attr1="value1" xmlns="myNameSpace">
> <.../> > </a>
>
> </g>
>
> What should I do, subclass or redefine the SVGShapes, play with the
> domGroupManager or create an extensioHandler ?
>
> Any help would be greatly appreciated
>
> Thanks
>
> Oliver
>
> >


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Reply via email to