001/* ======================================================
002 * JFreeChart : a chart library for the Java(tm) platform
003 * ======================================================
004 *
005 * (C) Copyright 2000-present, by David Gilbert and Contributors.
006 *
007 * Project Info:  https://www.jfree.org/jfreechart/index.html
008 *
009 * This library is free software; you can redistribute it and/or modify it
010 * under the terms of the GNU Lesser General Public License as published by
011 * the Free Software Foundation; either version 2.1 of the License, or
012 * (at your option) any later version.
013 *
014 * This library is distributed in the hope that it will be useful, but
015 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
016 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
017 * License for more details.
018 *
019 * You should have received a copy of the GNU Lesser General Public
020 * License along with this library; if not, write to the Free Software
021 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301,
022 * USA.
023 *
024 * [Oracle and Java are registered trademarks of Oracle and/or its affiliates. 
025 * Other names may be trademarks of their respective owners.]
026 *
027 * ---------------
028 * ChartUtils.java
029 * ---------------
030 * (C) Copyright 2001-present, by David Gilbert and Contributors.
031 *
032 * Original Author:  David Gilbert;
033 * Contributor(s):   Wolfgang Irler;
034 *                   Richard Atkinson;
035 *                   Xavier Poinsard;
036 *
037 */
038
039package org.jfree.chart;
040
041import java.awt.Graphics2D;
042import java.awt.geom.AffineTransform;
043import java.awt.geom.Rectangle2D;
044import java.awt.image.BufferedImage;
045import java.io.BufferedOutputStream;
046import java.io.File;
047import java.io.FileOutputStream;
048import java.io.IOException;
049import java.io.OutputStream;
050import java.io.PrintWriter;
051
052import org.jfree.chart.encoders.EncoderUtil;
053import org.jfree.chart.encoders.ImageFormat;
054import org.jfree.chart.imagemap.ImageMapUtils;
055import org.jfree.chart.imagemap.OverLIBToolTipTagFragmentGenerator;
056import org.jfree.chart.imagemap.StandardToolTipTagFragmentGenerator;
057import org.jfree.chart.imagemap.StandardURLTagFragmentGenerator;
058import org.jfree.chart.imagemap.ToolTipTagFragmentGenerator;
059import org.jfree.chart.imagemap.URLTagFragmentGenerator;
060import org.jfree.chart.util.Args;
061
062/**
063 * A collection of utility methods for JFreeChart.  Includes methods for
064 * converting charts to image formats (PNG and JPEG) plus creating simple HTML
065 * image maps.
066 *
067 * @see ImageMapUtils
068 */
069public abstract class ChartUtils {
070
071    private ChartUtils() {
072        // no requirement to instantiate
073    }
074
075    /**
076     * Applies the current theme to the specified chart.  This method is
077     * provided for convenience, the theme itself is stored in the
078     * {@link ChartFactory} class.
079     *
080     * @param chart  the chart ({@code null} not permitted).
081     */
082    public static void applyCurrentTheme(JFreeChart chart) {
083        ChartFactory.getChartTheme().apply(chart);
084    }
085
086    /**
087     * Writes a chart to an output stream in PNG format.
088     *
089     * @param out  the output stream ({@code null} not permitted).
090     * @param chart  the chart ({@code null} not permitted).
091     * @param width  the image width.
092     * @param height  the image height.
093     *
094     * @throws IOException if there are any I/O errors.
095     */
096    public static void writeChartAsPNG(OutputStream out, JFreeChart chart,
097            int width, int height) throws IOException {
098
099        // defer argument checking...
100        writeChartAsPNG(out, chart, width, height, null);
101
102    }
103
104    /**
105     * Writes a chart to an output stream in PNG format.
106     *
107     * @param out  the output stream ({@code null} not permitted).
108     * @param chart  the chart ({@code null} not permitted).
109     * @param width  the image width.
110     * @param height  the image height.
111     * @param encodeAlpha  encode alpha?
112     * @param compression  the compression level (0-9).
113     *
114     * @throws IOException if there are any I/O errors.
115     */
116    public static void writeChartAsPNG(OutputStream out, JFreeChart chart,
117            int width, int height, boolean encodeAlpha, int compression)
118            throws IOException {
119
120        // defer argument checking...
121        ChartUtils.writeChartAsPNG(out, chart, width, height, null,
122                encodeAlpha, compression);
123
124    }
125
126    /**
127     * Writes a chart to an output stream in PNG format.  This method allows
128     * you to pass in a {@link ChartRenderingInfo} object, to collect
129     * information about the chart dimensions/entities.  You will need this
130     * info if you want to create an HTML image map.
131     *
132     * @param out  the output stream ({@code null} not permitted).
133     * @param chart  the chart ({@code null} not permitted).
134     * @param width  the image width.
135     * @param height  the image height.
136     * @param info  the chart rendering info ({@code null} permitted).
137     *
138     * @throws IOException if there are any I/O errors.
139     */
140    public static void writeChartAsPNG(OutputStream out, JFreeChart chart,
141            int width, int height,  ChartRenderingInfo info)
142            throws IOException {
143
144        Args.nullNotPermitted(chart, "chart");
145        BufferedImage bufferedImage
146                = chart.createBufferedImage(width, height, info);
147        EncoderUtil.writeBufferedImage(bufferedImage, ImageFormat.PNG, out);
148    }
149
150    /**
151     * Writes a chart to an output stream in PNG format.  This method allows
152     * you to pass in a {@link ChartRenderingInfo} object, to collect
153     * information about the chart dimensions/entities.  You will need this
154     * info if you want to create an HTML image map.
155     *
156     * @param out  the output stream ({@code null} not permitted).
157     * @param chart  the chart ({@code null} not permitted).
158     * @param width  the image width.
159     * @param height  the image height.
160     * @param info  carries back chart rendering info ({@code null}
161     *              permitted).
162     * @param encodeAlpha  encode alpha?
163     * @param compression  the PNG compression level (0-9).
164     *
165     * @throws IOException if there are any I/O errors.
166     */
167    public static void writeChartAsPNG(OutputStream out, JFreeChart chart,
168            int width, int height, ChartRenderingInfo info,
169            boolean encodeAlpha, int compression) throws IOException {
170
171        Args.nullNotPermitted(out, "out");
172        Args.nullNotPermitted(chart, "chart");
173        BufferedImage chartImage = chart.createBufferedImage(width, height,
174                BufferedImage.TYPE_INT_ARGB, info);
175        ChartUtils.writeBufferedImageAsPNG(out, chartImage, encodeAlpha,
176                compression);
177
178    }
179
180    /**
181     * Writes a scaled version of a chart to an output stream in PNG format.
182     *
183     * @param out  the output stream ({@code null} not permitted).
184     * @param chart  the chart ({@code null} not permitted).
185     * @param width  the unscaled chart width.
186     * @param height  the unscaled chart height.
187     * @param widthScaleFactor  the horizontal scale factor.
188     * @param heightScaleFactor  the vertical scale factor.
189     *
190     * @throws IOException if there are any I/O problems.
191     */
192    public static void writeScaledChartAsPNG(OutputStream out,
193            JFreeChart chart, int width, int height, int widthScaleFactor,
194            int heightScaleFactor) throws IOException {
195
196        Args.nullNotPermitted(out, "out");
197        Args.nullNotPermitted(chart, "chart");
198
199        double desiredWidth = width * widthScaleFactor;
200        double desiredHeight = height * heightScaleFactor;
201        double defaultWidth = width;
202        double defaultHeight = height;
203        boolean scale = false;
204
205        // get desired width and height from somewhere then...
206        if ((widthScaleFactor != 1) || (heightScaleFactor != 1)) {
207            scale = true;
208        }
209
210        double scaleX = desiredWidth / defaultWidth;
211        double scaleY = desiredHeight / defaultHeight;
212
213        BufferedImage image = new BufferedImage((int) desiredWidth,
214                (int) desiredHeight, BufferedImage.TYPE_INT_ARGB);
215        Graphics2D g2 = image.createGraphics();
216
217        if (scale) {
218            AffineTransform saved = g2.getTransform();
219            g2.transform(AffineTransform.getScaleInstance(scaleX, scaleY));
220            chart.draw(g2, new Rectangle2D.Double(0, 0, defaultWidth,
221                    defaultHeight), null, null);
222            g2.setTransform(saved);
223            g2.dispose();
224        }
225        else {
226            chart.draw(g2, new Rectangle2D.Double(0, 0, defaultWidth,
227                    defaultHeight), null, null);
228        }
229        out.write(encodeAsPNG(image));
230
231    }
232
233    /**
234     * Saves a chart to the specified file in PNG format.
235     *
236     * @param file  the file name ({@code null} not permitted).
237     * @param chart  the chart ({@code null} not permitted).
238     * @param width  the image width.
239     * @param height  the image height.
240     *
241     * @throws IOException if there are any I/O errors.
242     */
243    public static void saveChartAsPNG(File file, JFreeChart chart,
244            int width, int height) throws IOException {
245
246        // defer argument checking...
247        saveChartAsPNG(file, chart, width, height, null);
248
249    }
250
251    /**
252     * Saves a chart to a file in PNG format.  This method allows you to pass
253     * in a {@link ChartRenderingInfo} object, to collect information about the
254     * chart dimensions/entities.  You will need this info if you want to
255     * create an HTML image map.
256     *
257     * @param file  the file ({@code null} not permitted).
258     * @param chart  the chart ({@code null} not permitted).
259     * @param width  the image width.
260     * @param height  the image height.
261     * @param info  the chart rendering info ({@code null} permitted).
262     *
263     * @throws IOException if there are any I/O errors.
264     */
265    public static void saveChartAsPNG(File file, JFreeChart chart,
266            int width, int height, ChartRenderingInfo info)
267        throws IOException {
268
269        Args.nullNotPermitted(file, "file");
270        OutputStream out = new BufferedOutputStream(new FileOutputStream(file));
271        try {
272            ChartUtils.writeChartAsPNG(out, chart, width, height, info);
273        }
274        finally {
275            out.close();
276        }
277    }
278
279    /**
280     * Saves a chart to a file in PNG format.  This method allows you to pass
281     * in a {@link ChartRenderingInfo} object, to collect information about the
282     * chart dimensions/entities.  You will need this info if you want to
283     * create an HTML image map.
284     *
285     * @param file  the file ({@code null} not permitted).
286     * @param chart  the chart ({@code null} not permitted).
287     * @param width  the image width.
288     * @param height  the image height.
289     * @param info  the chart rendering info ({@code null} permitted).
290     * @param encodeAlpha  encode alpha?
291     * @param compression  the PNG compression level (0-9).
292     *
293     * @throws IOException if there are any I/O errors.
294     */
295    public static void saveChartAsPNG(File file, JFreeChart chart,
296           int width, int height, ChartRenderingInfo info, boolean encodeAlpha,
297           int compression) throws IOException {
298
299        Args.nullNotPermitted(file, "file");
300        Args.nullNotPermitted(chart, "chart");
301        OutputStream out = new BufferedOutputStream(new FileOutputStream(file));
302        try {
303            writeChartAsPNG(out, chart, width, height, info, encodeAlpha,
304                    compression);
305        }
306        finally {
307            out.close();
308        }
309
310    }
311
312    /**
313     * Writes a chart to an output stream in JPEG format.  Please note that
314     * JPEG is a poor format for chart images, use PNG if possible.
315     *
316     * @param out  the output stream ({@code null} not permitted).
317     * @param chart  the chart ({@code null} not permitted).
318     * @param width  the image width.
319     * @param height  the image height.
320     *
321     * @throws IOException if there are any I/O errors.
322     */
323    public static void writeChartAsJPEG(OutputStream out,
324            JFreeChart chart, int width, int height) throws IOException {
325
326        // defer argument checking...
327        writeChartAsJPEG(out, chart, width, height, null);
328
329    }
330
331    /**
332     * Writes a chart to an output stream in JPEG format.  Please note that
333     * JPEG is a poor format for chart images, use PNG if possible.
334     *
335     * @param out  the output stream ({@code null} not permitted).
336     * @param quality  the quality setting.
337     * @param chart  the chart ({@code null} not permitted).
338     * @param width  the image width.
339     * @param height  the image height.
340     *
341     * @throws IOException if there are any I/O errors.
342     */
343    public static void writeChartAsJPEG(OutputStream out, float quality,
344            JFreeChart chart, int width, int height) throws IOException {
345
346        // defer argument checking...
347        ChartUtils.writeChartAsJPEG(out, quality, chart, width, height,
348                null);
349
350    }
351
352    /**
353     * Writes a chart to an output stream in JPEG format. This method allows
354     * you to pass in a {@link ChartRenderingInfo} object, to collect
355     * information about the chart dimensions/entities.  You will need this
356     * info if you want to create an HTML image map.
357     *
358     * @param out  the output stream ({@code null} not permitted).
359     * @param chart  the chart ({@code null} not permitted).
360     * @param width  the image width.
361     * @param height  the image height.
362     * @param info  the chart rendering info ({@code null} permitted).
363     *
364     * @throws IOException if there are any I/O errors.
365     */
366    public static void writeChartAsJPEG(OutputStream out, JFreeChart chart,
367            int width, int height, ChartRenderingInfo info)
368            throws IOException {
369
370        Args.nullNotPermitted(out, "out");
371        Args.nullNotPermitted(chart, "chart");
372        BufferedImage image = chart.createBufferedImage(width, height,
373                BufferedImage.TYPE_INT_RGB, info);
374        EncoderUtil.writeBufferedImage(image, ImageFormat.JPEG, out);
375
376    }
377
378    /**
379     * Writes a chart to an output stream in JPEG format.  This method allows
380     * you to pass in a {@link ChartRenderingInfo} object, to collect
381     * information about the chart dimensions/entities.  You will need this
382     * info if you want to create an HTML image map.
383     *
384     * @param out  the output stream ({@code null} not permitted).
385     * @param quality  the output quality (0.0f to 1.0f).
386     * @param chart  the chart ({@code null} not permitted).
387     * @param width  the image width.
388     * @param height  the image height.
389     * @param info  the chart rendering info ({@code null} permitted).
390     *
391     * @throws IOException if there are any I/O errors.
392     */
393    public static void writeChartAsJPEG(OutputStream out, float quality,
394            JFreeChart chart, int width, int height, ChartRenderingInfo info)
395            throws IOException {
396
397        Args.nullNotPermitted(out, "out");
398        Args.nullNotPermitted(chart, "chart");
399        BufferedImage image = chart.createBufferedImage(width, height,
400                BufferedImage.TYPE_INT_RGB, info);
401        EncoderUtil.writeBufferedImage(image, ImageFormat.JPEG, out, quality);
402
403    }
404
405    /**
406     * Saves a chart to a file in JPEG format.
407     *
408     * @param file  the file ({@code null} not permitted).
409     * @param chart  the chart ({@code null} not permitted).
410     * @param width  the image width.
411     * @param height  the image height.
412     *
413     * @throws IOException if there are any I/O errors.
414     */
415    public static void saveChartAsJPEG(File file, JFreeChart chart,
416            int width, int height) throws IOException {
417
418        // defer argument checking...
419        saveChartAsJPEG(file, chart, width, height, null);
420
421    }
422
423    /**
424     * Saves a chart to a file in JPEG format.
425     *
426     * @param file  the file ({@code null} not permitted).
427     * @param quality  the JPEG quality setting.
428     * @param chart  the chart ({@code null} not permitted).
429     * @param width  the image width.
430     * @param height  the image height.
431     *
432     * @throws IOException if there are any I/O errors.
433     */
434    public static void saveChartAsJPEG(File file, float quality,
435            JFreeChart chart, int width, int height) throws IOException {
436
437        // defer argument checking...
438        saveChartAsJPEG(file, quality, chart, width, height, null);
439
440    }
441
442    /**
443     * Saves a chart to a file in JPEG format.  This method allows you to pass
444     * in a {@link ChartRenderingInfo} object, to collect information about the
445     * chart dimensions/entities.  You will need this info if you want to
446     * create an HTML image map.
447     *
448     * @param file  the file name ({@code null} not permitted).
449     * @param chart  the chart ({@code null} not permitted).
450     * @param width  the image width.
451     * @param height  the image height.
452     * @param info  the chart rendering info ({@code null} permitted).
453     *
454     * @throws IOException if there are any I/O errors.
455     */
456    public static void saveChartAsJPEG(File file, JFreeChart chart,
457            int width, int height, ChartRenderingInfo info) throws IOException {
458
459        Args.nullNotPermitted(file, "file");
460        Args.nullNotPermitted(chart, "chart");
461        OutputStream out = new BufferedOutputStream(new FileOutputStream(file));
462        try {
463            writeChartAsJPEG(out, chart, width, height, info);
464        }
465        finally {
466            out.close();
467        }
468
469    }
470
471    /**
472     * Saves a chart to a file in JPEG format.  This method allows you to pass
473     * in a {@link ChartRenderingInfo} object, to collect information about the
474     * chart dimensions/entities.  You will need this info if you want to
475     * create an HTML image map.
476     *
477     * @param file  the file name ({@code null} not permitted).
478     * @param quality  the quality setting.
479     * @param chart  the chart ({@code null} not permitted).
480     * @param width  the image width.
481     * @param height  the image height.
482     * @param info  the chart rendering info ({@code null} permitted).
483     *
484     * @throws IOException if there are any I/O errors.
485     */
486    public static void saveChartAsJPEG(File file, float quality,
487            JFreeChart chart, int width, int height,
488            ChartRenderingInfo info) throws IOException {
489
490        Args.nullNotPermitted(file, "file");
491        Args.nullNotPermitted(chart, "chart");
492        OutputStream out = new BufferedOutputStream(new FileOutputStream(
493                file));
494        try {
495            writeChartAsJPEG(out, quality, chart, width, height, info);
496        }
497        finally {
498            out.close();
499        }
500
501    }
502
503    /**
504     * Writes a {@link BufferedImage} to an output stream in JPEG format.
505     *
506     * @param out  the output stream ({@code null} not permitted).
507     * @param image  the image ({@code null} not permitted).
508     *
509     * @throws IOException if there are any I/O errors.
510     */
511    public static void writeBufferedImageAsJPEG(OutputStream out,
512            BufferedImage image) throws IOException {
513
514        // defer argument checking...
515        writeBufferedImageAsJPEG(out, 0.75f, image);
516
517    }
518
519    /**
520     * Writes a {@link BufferedImage} to an output stream in JPEG format.
521     *
522     * @param out  the output stream ({@code null} not permitted).
523     * @param quality  the image quality (0.0f to 1.0f).
524     * @param image  the image ({@code null} not permitted).
525     *
526     * @throws IOException if there are any I/O errors.
527     */
528    public static void writeBufferedImageAsJPEG(OutputStream out, float quality,
529            BufferedImage image) throws IOException {
530
531        EncoderUtil.writeBufferedImage(image, ImageFormat.JPEG, out, quality);
532
533    }
534
535    /**
536     * Writes a {@link BufferedImage} to an output stream in PNG format.
537     *
538     * @param out  the output stream ({@code null} not permitted).
539     * @param image  the image ({@code null} not permitted).
540     *
541     * @throws IOException if there are any I/O errors.
542     */
543    public static void writeBufferedImageAsPNG(OutputStream out,
544            BufferedImage image) throws IOException {
545
546        EncoderUtil.writeBufferedImage(image, ImageFormat.PNG, out);
547
548    }
549
550    /**
551     * Writes a {@link BufferedImage} to an output stream in PNG format.
552     *
553     * @param out  the output stream ({@code null} not permitted).
554     * @param image  the image ({@code null} not permitted).
555     * @param encodeAlpha  encode alpha?
556     * @param compression  the compression level (0-9).
557     *
558     * @throws IOException if there are any I/O errors.
559     */
560    public static void writeBufferedImageAsPNG(OutputStream out,
561            BufferedImage image, boolean encodeAlpha, int compression)
562            throws IOException {
563
564        EncoderUtil.writeBufferedImage(image, ImageFormat.PNG, out,
565                compression, encodeAlpha);
566    }
567
568    /**
569     * Encodes a {@link BufferedImage} to PNG format.
570     *
571     * @param image  the image ({@code null} not permitted).
572     *
573     * @return A byte array in PNG format.
574     *
575     * @throws IOException if there is an I/O problem.
576     */
577    public static byte[] encodeAsPNG(BufferedImage image) throws IOException {
578        return EncoderUtil.encode(image, ImageFormat.PNG);
579    }
580
581    /**
582     * Encodes a {@link BufferedImage} to PNG format.
583     *
584     * @param image  the image ({@code null} not permitted).
585     * @param encodeAlpha  encode alpha?
586     * @param compression  the PNG compression level (0-9).
587     *
588     * @return The byte array in PNG format.
589     *
590     * @throws IOException if there is an I/O problem.
591     */
592    public static byte[] encodeAsPNG(BufferedImage image, boolean encodeAlpha,
593            int compression) throws IOException {
594        return EncoderUtil.encode(image, ImageFormat.PNG, compression,
595                encodeAlpha);
596    }
597
598    /**
599     * Writes an image map to an output stream.
600     *
601     * @param writer  the writer ({@code null} not permitted).
602     * @param name  the map name ({@code null} not permitted).
603     * @param info  the chart rendering info ({@code null} not permitted).
604     * @param useOverLibForToolTips  whether to use OverLIB for tooltips
605     *                               (http://www.bosrup.com/web/overlib/).
606     *
607     * @throws IOException if there are any I/O errors.
608     */
609    public static void writeImageMap(PrintWriter writer, String name,
610            ChartRenderingInfo info, boolean useOverLibForToolTips)
611            throws IOException {
612
613        ToolTipTagFragmentGenerator toolTipTagFragmentGenerator;
614        if (useOverLibForToolTips) {
615            toolTipTagFragmentGenerator
616                    = new OverLIBToolTipTagFragmentGenerator();
617        }
618        else {
619            toolTipTagFragmentGenerator
620                    = new StandardToolTipTagFragmentGenerator();
621        }
622        ImageMapUtils.writeImageMap(writer, name, info,
623                toolTipTagFragmentGenerator,
624                new StandardURLTagFragmentGenerator());
625
626    }
627
628    /**
629     * Writes an image map to the specified writer.
630     *
631     * @param writer  the writer ({@code null} not permitted).
632     * @param name  the map name ({@code null} not permitted).
633     * @param info  the chart rendering info ({@code null} not permitted).
634     * @param toolTipTagFragmentGenerator  a generator for the HTML fragment
635     *     that will contain the tooltip text ({@code null} not permitted
636     *     if {@code info} contains tooltip information).
637     * @param urlTagFragmentGenerator  a generator for the HTML fragment that
638     *     will contain the URL reference ({@code null} not permitted if
639     *     {@code info} contains URLs).
640     *
641     * @throws IOException if there are any I/O errors.
642     */
643    public static void writeImageMap(PrintWriter writer, String name,
644            ChartRenderingInfo info,
645            ToolTipTagFragmentGenerator toolTipTagFragmentGenerator,
646            URLTagFragmentGenerator urlTagFragmentGenerator)
647            throws IOException {
648
649        writer.println(ImageMapUtils.getImageMap(name, info,
650                toolTipTagFragmentGenerator, urlTagFragmentGenerator));
651    }
652
653    /**
654     * Creates an HTML image map.  This method maps to
655     * {@link ImageMapUtils#getImageMap(String, ChartRenderingInfo,
656     * ToolTipTagFragmentGenerator, URLTagFragmentGenerator)}, using default
657     * generators.
658     *
659     * @param name  the map name ({@code null} not permitted).
660     * @param info  the chart rendering info ({@code null} not permitted).
661     *
662     * @return The map tag.
663     */
664    public static String getImageMap(String name, ChartRenderingInfo info) {
665        return ImageMapUtils.getImageMap(name, info,
666                new StandardToolTipTagFragmentGenerator(),
667                new StandardURLTagFragmentGenerator());
668    }
669
670    /**
671     * Creates an HTML image map.  This method maps directly to
672     * {@link ImageMapUtils#getImageMap(String, ChartRenderingInfo,
673     * ToolTipTagFragmentGenerator, URLTagFragmentGenerator)}.
674     *
675     * @param name  the map name ({@code null} not permitted).
676     * @param info  the chart rendering info ({@code null} not permitted).
677     * @param toolTipTagFragmentGenerator  a generator for the HTML fragment
678     *     that will contain the tooltip text ({@code null} not permitted
679     *     if {@code info} contains tooltip information).
680     * @param urlTagFragmentGenerator  a generator for the HTML fragment that
681     *     will contain the URL reference ({@code null} not permitted if
682     *     {@code info} contains URLs).
683     *
684     * @return The map tag.
685     */
686    public static String getImageMap(String name, ChartRenderingInfo info,
687            ToolTipTagFragmentGenerator toolTipTagFragmentGenerator,
688            URLTagFragmentGenerator urlTagFragmentGenerator) {
689
690        return ImageMapUtils.getImageMap(name, info,
691                toolTipTagFragmentGenerator, urlTagFragmentGenerator);
692
693    }
694
695}