All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.hfg.svg.SvgLink Maven / Gradle / Ivy

There is a newer version: 20240423
Show newest version
package com.hfg.svg;

import com.hfg.util.collection.CollectionUtil;
import com.hfg.xml.XMLNode;
import com.hfg.xml.XMLAttribute;
import com.hfg.xml.XMLNamespace;
import com.hfg.html.HTML;
import com.hfg.xml.XMLTag;
import com.hfg.xml.XMLizable;

import java.awt.*;
import java.util.regex.Matcher;

//------------------------------------------------------------------------------
/**
 * Object representation of an SVG (Scalable Vector Graphics) 'g' tag.
 *
 * @author J. Alex Taylor, hairyfatguy.com
 */
//------------------------------------------------------------------------------
// com.hfg XML/HTML Coding Library
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
//
// J. Alex Taylor, President, Founder, CEO, COO, CFO, OOPS hairyfatguy.com
// [email protected]
//------------------------------------------------------------------------------

public class SvgLink extends AbstractSvgNode implements SvgNode
{
   //**************************************************************************
   // CONSTRUCTORS
   //**************************************************************************

   //---------------------------------------------------------------------------
   private SvgLink()
   {
      super(SVG.anchor);
   }

   //---------------------------------------------------------------------------
   public SvgLink(CharSequence inURL)
   {
      this();
      XMLAttribute attr = new XMLAttribute(HTML.HREF, inURL);
      attr.setNamespace(XMLNamespace.XLINK);
      setAttribute(attr);
   }

   //---------------------------------------------------------------------------
   public SvgLink(XMLTag inXMLTag)
   {
      this();

      inXMLTag.verifyTagName(getTagName());

      if (CollectionUtil.hasValues(inXMLTag.getAttributes()))
      {
         for (XMLAttribute attr : inXMLTag.getAttributes())
         {
            setAttribute(attr.clone());
         }
      }

      java.util.List subtags = inXMLTag.getSubtags();
      if (CollectionUtil.hasValues(subtags))
      {
         for (XMLTag subtag : subtags)
         {
            addSubtag(SVG.constructFromXMLTag(subtag));
         }
      }
   }

   //**************************************************************************
   // PUBLIC METHODS
   //**************************************************************************


   //---------------------------------------------------------------------------
   public SvgLink setFont(Font inFont)
   {
      setStyle("font-family: " + inFont.getName() + "; font-size:" + inFont.getSize() + "pt;");
      return this;
   }

   //---------------------------------------------------------------------------
   public SvgLink setStyle(String inValue)
   {
      setAttribute(SvgAttr.style, inValue);
      return this;
   }

   //---------------------------------------------------------------------------
   public SvgLink setTransform(String inValue)
   {
      setAttribute(SvgAttr.transform, inValue);
      return this;
   }

   //---------------------------------------------------------------------------
   public SvgLine addLine(Point inStart, Point inEnd)
   {
      SvgLine line = new SvgLine(inStart, inEnd);
      addSubtag(line);
      return line;
   }

   //---------------------------------------------------------------------------
   public SvgRect addRect(Rectangle inRect)
   {
      SvgRect rect = new SvgRect(inRect);
      addSubtag(rect);
      return rect;
   }

   //---------------------------------------------------------------------------
   public SvgText addText(String inText, Font inFont, Point inLocation)
   {
      SvgText text = new SvgText(inText, inFont, inLocation);
      addSubtag(text);
      return text;
   }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy