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

morechart.chart.renderer.LookupSVGScale.scala Maven / Gradle / Ivy

The newest version!
package morechart.chart.renderer

import org.apache.batik.util.XMLResourceDescriptor
import org.apache.batik.dom.svg.SAXSVGDocumentFactory

import org.w3c.dom.Document

/** Like [[org.jfree.chart.renderer.LookupPaintScale]] but for SVG.
 *
 * @author myst3r10n
 */
class LookupSVGScale(
  lowerBound0: Double,
  upperBound0: Double,
  defaultSVG0: Document)
  extends SVGScale with Serializable {

  def this(lowerBound0: Double, upperBound0: Double) =
    this(lowerBound0, upperBound0, null)

  def this() = this(0.0, 1.0, null)

  /** @see [[org.jfree.chart.renderer.LookupPaintScale]]. */
  val defaultSVG =
    if(defaultSVG0 == null)
      new SAXSVGDocumentFactory(XMLResourceDescriptor
        .getXMLParserClassName)
        .createDocument(null, getClass.getResourceAsStream("/svg/morechart.svg"))
    else
      defaultSVG0

  /** @see [[org.jfree.chart.renderer.LookupPaintScale]]. */
  def lowerBound = lowerBound0

  /** @see [[org.jfree.chart.renderer.LookupPaintScale]]. */
  def upperBound = upperBound0

  def add(value: Double, svg: Document) { lookupTable += value -> svg }

  /** @see [[org.jfree.chart.renderer.PaintScale]]. */
  def svg(value: Double) =
    if(value < lowerBound ||
       value > upperBound ||
       lookupTable.size == 0 ||
       !lookupTable.contains(value))
      defaultSVG
    else
      lookupTable(value)


  private var lookupTable = Map[Double, Document]()

}





© 2015 - 2025 Weber Informatics LLC | Privacy Policy