001/* =========================================================== 002 * JFreeChart : a free chart library for the Java(tm) platform 003 * =========================================================== 004 * 005 * (C) Copyright 2000-2013, by Object Refinery Limited and Contributors. 006 * 007 * Project Info: http://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 * ChartUtilities.java 029 * ------------------- 030 * (C) Copyright 2001-2013, by Object Refinery Limited and Contributors. 031 * 032 * Original Author: David Gilbert (for Object Refinery Limited); 033 * Contributor(s): Wolfgang Irler; 034 * Richard Atkinson; 035 * Xavier Poinsard; 036 * 037 * Changes 038 * ------- 039 * 11-Dec-2001 : Version 1. The JPEG method comes from Wolfgang Irler's 040 * JFreeChartServletDemo class (DG); 041 * 23-Jan-2002 : Changed saveChartAsXXX() methods to pass IOExceptions back to 042 * caller (DG); 043 * 26-Jun-2002 : Added image map methods (DG); 044 * 05-Aug-2002 : Added writeBufferedImage methods 045 * Modified writeImageMap method to support flexible image 046 * maps (RA); 047 * 26-Aug-2002 : Added saveChartAsJPEG and writeChartAsJPEG methods with info 048 * objects (RA); 049 * 05-Sep-2002 : Added writeImageMap() method to support OverLIB 050 * - http://www.bosrup.com/web/overlib (RA); 051 * 26-Sep-2002 : Fixed errors reported by Checkstyle (DG); 052 * 17-Oct-2002 : Exposed JPEG quality setting and PNG compression level as 053 * parameters (DG); 054 * 25-Oct-2002 : Fixed writeChartAsJPEG() empty method bug (DG); 055 * 13-Mar-2003 : Updated writeImageMap method as suggested by Xavier Poinsard 056 * (see Feature Request 688079) (DG); 057 * 12-Aug-2003 : Added support for custom image maps using 058 * ToolTipTagFragmentGenerator and URLTagFragmentGenerator (RA); 059 * 02-Sep-2003 : Separated PNG encoding from writing chart to an 060 * OutputStream (RA); 061 * 04-Dec-2003 : Chart draw() method modified to include anchor point (DG); 062 * 20-Feb-2004 : Edited Javadocs and added argument checking (DG); 063 * 05-Apr-2004 : Fixed problem with buffered image type (DG); 064 * 01-Aug-2004 : Modified to use EncoderUtil for all image encoding (RA); 065 * 02-Aug-2004 : Delegated image map related functionality to ImageMapUtil (RA); 066 * 13-Jan-2005 : Renamed ImageMapUtil --> ImageMapUtilities, removed method 067 * writeImageMap(PrintWriter, String, ChartRenderingInfo) which 068 * exists in ImageMapUtilities (DG); 069 * ------------- JFREECHART 1.0.x --------------------------------------------- 070 * 06-Feb-2006 : API doc update (DG); 071 * 19-Mar-2007 : Use try-finally to close output stream in saveChartAsXXX() 072 * methods (DG); 073 * 10-Jan-2008 : Fix bug 1868251 - don't create image with transparency when 074 * saving to JPEG format (DG); 075 * 02-Jul-2013 : Use ParamChecks class (DG); 076 * 077 */ 078 079package org.jfree.chart; 080 081import java.awt.Graphics2D; 082import java.awt.geom.AffineTransform; 083import java.awt.geom.Rectangle2D; 084import java.awt.image.BufferedImage; 085import java.io.BufferedOutputStream; 086import java.io.File; 087import java.io.FileOutputStream; 088import java.io.IOException; 089import java.io.OutputStream; 090import java.io.PrintWriter; 091 092import org.jfree.chart.encoders.EncoderUtil; 093import org.jfree.chart.encoders.ImageFormat; 094import org.jfree.chart.imagemap.ImageMapUtilities; 095import org.jfree.chart.imagemap.OverLIBToolTipTagFragmentGenerator; 096import org.jfree.chart.imagemap.StandardToolTipTagFragmentGenerator; 097import org.jfree.chart.imagemap.StandardURLTagFragmentGenerator; 098import org.jfree.chart.imagemap.ToolTipTagFragmentGenerator; 099import org.jfree.chart.imagemap.URLTagFragmentGenerator; 100import org.jfree.chart.util.ParamChecks; 101 102/** 103 * A collection of utility methods for JFreeChart. Includes methods for 104 * converting charts to image formats (PNG and JPEG) plus creating simple HTML 105 * image maps. 106 * 107 * @see ImageMapUtilities 108 */ 109public abstract class ChartUtilities { 110 111 /** 112 * Applies the current theme to the specified chart. This method is 113 * provided for convenience, the theme itself is stored in the 114 * {@link ChartFactory} class. 115 * 116 * @param chart the chart (<code>null</code> not permitted). 117 * 118 * @since 1.0.11 119 */ 120 public static void applyCurrentTheme(JFreeChart chart) { 121 ChartFactory.getChartTheme().apply(chart); 122 } 123 124 /** 125 * Writes a chart to an output stream in PNG format. 126 * 127 * @param out the output stream (<code>null</code> not permitted). 128 * @param chart the chart (<code>null</code> not permitted). 129 * @param width the image width. 130 * @param height the image height. 131 * 132 * @throws IOException if there are any I/O errors. 133 */ 134 public static void writeChartAsPNG(OutputStream out, JFreeChart chart, 135 int width, int height) throws IOException { 136 137 // defer argument checking... 138 writeChartAsPNG(out, chart, width, height, null); 139 140 } 141 142 /** 143 * Writes a chart to an output stream in PNG format. 144 * 145 * @param out the output stream (<code>null</code> not permitted). 146 * @param chart the chart (<code>null</code> not permitted). 147 * @param width the image width. 148 * @param height the image height. 149 * @param encodeAlpha encode alpha? 150 * @param compression the compression level (0-9). 151 * 152 * @throws IOException if there are any I/O errors. 153 */ 154 public static void writeChartAsPNG(OutputStream out, JFreeChart chart, 155 int width, int height, boolean encodeAlpha, int compression) 156 throws IOException { 157 158 // defer argument checking... 159 ChartUtilities.writeChartAsPNG(out, chart, width, height, null, 160 encodeAlpha, compression); 161 162 } 163 164 /** 165 * Writes a chart to an output stream in PNG format. This method allows 166 * you to pass in a {@link ChartRenderingInfo} object, to collect 167 * information about the chart dimensions/entities. You will need this 168 * info if you want to create an HTML image map. 169 * 170 * @param out the output stream (<code>null</code> not permitted). 171 * @param chart the chart (<code>null</code> not permitted). 172 * @param width the image width. 173 * @param height the image height. 174 * @param info the chart rendering info (<code>null</code> permitted). 175 * 176 * @throws IOException if there are any I/O errors. 177 */ 178 public static void writeChartAsPNG(OutputStream out, JFreeChart chart, 179 int width, int height, ChartRenderingInfo info) 180 throws IOException { 181 182 ParamChecks.nullNotPermitted(chart, "chart"); 183 BufferedImage bufferedImage 184 = chart.createBufferedImage(width, height, info); 185 EncoderUtil.writeBufferedImage(bufferedImage, ImageFormat.PNG, out); 186 } 187 188 /** 189 * Writes a chart to an output stream in PNG format. This method allows 190 * you to pass in a {@link ChartRenderingInfo} object, to collect 191 * information about the chart dimensions/entities. You will need this 192 * info if you want to create an HTML image map. 193 * 194 * @param out the output stream (<code>null</code> not permitted). 195 * @param chart the chart (<code>null</code> not permitted). 196 * @param width the image width. 197 * @param height the image height. 198 * @param info carries back chart rendering info (<code>null</code> 199 * permitted). 200 * @param encodeAlpha encode alpha? 201 * @param compression the PNG compression level (0-9). 202 * 203 * @throws IOException if there are any I/O errors. 204 */ 205 public static void writeChartAsPNG(OutputStream out, JFreeChart chart, 206 int width, int height, ChartRenderingInfo info, 207 boolean encodeAlpha, int compression) throws IOException { 208 209 ParamChecks.nullNotPermitted(out, "out"); 210 ParamChecks.nullNotPermitted(chart, "chart"); 211 BufferedImage chartImage = chart.createBufferedImage(width, height, 212 BufferedImage.TYPE_INT_ARGB, info); 213 ChartUtilities.writeBufferedImageAsPNG(out, chartImage, encodeAlpha, 214 compression); 215 216 } 217 218 /** 219 * Writes a scaled version of a chart to an output stream in PNG format. 220 * 221 * @param out the output stream (<code>null</code> not permitted). 222 * @param chart the chart (<code>null</code> not permitted). 223 * @param width the unscaled chart width. 224 * @param height the unscaled chart height. 225 * @param widthScaleFactor the horizontal scale factor. 226 * @param heightScaleFactor the vertical scale factor. 227 * 228 * @throws IOException if there are any I/O problems. 229 */ 230 public static void writeScaledChartAsPNG(OutputStream out, 231 JFreeChart chart, int width, int height, int widthScaleFactor, 232 int heightScaleFactor) throws IOException { 233 234 ParamChecks.nullNotPermitted(out, "out"); 235 ParamChecks.nullNotPermitted(chart, "chart"); 236 237 double desiredWidth = width * widthScaleFactor; 238 double desiredHeight = height * heightScaleFactor; 239 double defaultWidth = width; 240 double defaultHeight = height; 241 boolean scale = false; 242 243 // get desired width and height from somewhere then... 244 if ((widthScaleFactor != 1) || (heightScaleFactor != 1)) { 245 scale = true; 246 } 247 248 double scaleX = desiredWidth / defaultWidth; 249 double scaleY = desiredHeight / defaultHeight; 250 251 BufferedImage image = new BufferedImage((int) desiredWidth, 252 (int) desiredHeight, BufferedImage.TYPE_INT_ARGB); 253 Graphics2D g2 = image.createGraphics(); 254 255 if (scale) { 256 AffineTransform saved = g2.getTransform(); 257 g2.transform(AffineTransform.getScaleInstance(scaleX, scaleY)); 258 chart.draw(g2, new Rectangle2D.Double(0, 0, defaultWidth, 259 defaultHeight), null, null); 260 g2.setTransform(saved); 261 g2.dispose(); 262 } 263 else { 264 chart.draw(g2, new Rectangle2D.Double(0, 0, defaultWidth, 265 defaultHeight), null, null); 266 } 267 out.write(encodeAsPNG(image)); 268 269 } 270 271 /** 272 * Saves a chart to the specified file in PNG format. 273 * 274 * @param file the file name (<code>null</code> not permitted). 275 * @param chart the chart (<code>null</code> not permitted). 276 * @param width the image width. 277 * @param height the image height. 278 * 279 * @throws IOException if there are any I/O errors. 280 */ 281 public static void saveChartAsPNG(File file, JFreeChart chart, 282 int width, int height) throws IOException { 283 284 // defer argument checking... 285 saveChartAsPNG(file, chart, width, height, null); 286 287 } 288 289 /** 290 * Saves a chart to a file in PNG format. This method allows you to pass 291 * in a {@link ChartRenderingInfo} object, to collect information about the 292 * chart dimensions/entities. You will need this info if you want to 293 * create an HTML image map. 294 * 295 * @param file the file (<code>null</code> not permitted). 296 * @param chart the chart (<code>null</code> not permitted). 297 * @param width the image width. 298 * @param height the image height. 299 * @param info the chart rendering info (<code>null</code> permitted). 300 * 301 * @throws IOException if there are any I/O errors. 302 */ 303 public static void saveChartAsPNG(File file, JFreeChart chart, 304 int width, int height, ChartRenderingInfo info) 305 throws IOException { 306 307 ParamChecks.nullNotPermitted(file, "file"); 308 OutputStream out = new BufferedOutputStream(new FileOutputStream(file)); 309 try { 310 ChartUtilities.writeChartAsPNG(out, chart, width, height, info); 311 } 312 finally { 313 out.close(); 314 } 315 } 316 317 /** 318 * Saves a chart to a file in PNG format. This method allows you to pass 319 * in a {@link ChartRenderingInfo} object, to collect information about the 320 * chart dimensions/entities. You will need this info if you want to 321 * create an HTML image map. 322 * 323 * @param file the file (<code>null</code> not permitted). 324 * @param chart the chart (<code>null</code> not permitted). 325 * @param width the image width. 326 * @param height the image height. 327 * @param info the chart rendering info (<code>null</code> permitted). 328 * @param encodeAlpha encode alpha? 329 * @param compression the PNG compression level (0-9). 330 * 331 * @throws IOException if there are any I/O errors. 332 */ 333 public static void saveChartAsPNG(File file, JFreeChart chart, 334 int width, int height, ChartRenderingInfo info, boolean encodeAlpha, 335 int compression) throws IOException { 336 337 ParamChecks.nullNotPermitted(file, "file"); 338 ParamChecks.nullNotPermitted(chart, "chart"); 339 OutputStream out = new BufferedOutputStream(new FileOutputStream(file)); 340 try { 341 writeChartAsPNG(out, chart, width, height, info, encodeAlpha, 342 compression); 343 } 344 finally { 345 out.close(); 346 } 347 348 } 349 350 /** 351 * Writes a chart to an output stream in JPEG format. Please note that 352 * JPEG is a poor format for chart images, use PNG if possible. 353 * 354 * @param out the output stream (<code>null</code> not permitted). 355 * @param chart the chart (<code>null</code> not permitted). 356 * @param width the image width. 357 * @param height the image height. 358 * 359 * @throws IOException if there are any I/O errors. 360 */ 361 public static void writeChartAsJPEG(OutputStream out, 362 JFreeChart chart, int width, int height) throws IOException { 363 364 // defer argument checking... 365 writeChartAsJPEG(out, chart, width, height, null); 366 367 } 368 369 /** 370 * Writes a chart to an output stream in JPEG format. Please note that 371 * JPEG is a poor format for chart images, use PNG if possible. 372 * 373 * @param out the output stream (<code>null</code> not permitted). 374 * @param quality the quality setting. 375 * @param chart the chart (<code>null</code> not permitted). 376 * @param width the image width. 377 * @param height the image height. 378 * 379 * @throws IOException if there are any I/O errors. 380 */ 381 public static void writeChartAsJPEG(OutputStream out, float quality, 382 JFreeChart chart, int width, int height) throws IOException { 383 384 // defer argument checking... 385 ChartUtilities.writeChartAsJPEG(out, quality, chart, width, height, 386 null); 387 388 } 389 390 /** 391 * Writes a chart to an output stream in JPEG format. This method allows 392 * you to pass in a {@link ChartRenderingInfo} object, to collect 393 * information about the chart dimensions/entities. You will need this 394 * info if you want to create an HTML image map. 395 * 396 * @param out the output stream (<code>null</code> not permitted). 397 * @param chart the chart (<code>null</code> not permitted). 398 * @param width the image width. 399 * @param height the image height. 400 * @param info the chart rendering info (<code>null</code> permitted). 401 * 402 * @throws IOException if there are any I/O errors. 403 */ 404 public static void writeChartAsJPEG(OutputStream out, JFreeChart chart, 405 int width, int height, ChartRenderingInfo info) 406 throws IOException { 407 408 ParamChecks.nullNotPermitted(out, "out"); 409 ParamChecks.nullNotPermitted(chart, "chart"); 410 BufferedImage image = chart.createBufferedImage(width, height, 411 BufferedImage.TYPE_INT_RGB, info); 412 EncoderUtil.writeBufferedImage(image, ImageFormat.JPEG, out); 413 414 } 415 416 /** 417 * Writes a chart to an output stream in JPEG format. This method allows 418 * you to pass in a {@link ChartRenderingInfo} object, to collect 419 * information about the chart dimensions/entities. You will need this 420 * info if you want to create an HTML image map. 421 * 422 * @param out the output stream (<code>null</code> not permitted). 423 * @param quality the output quality (0.0f to 1.0f). 424 * @param chart the chart (<code>null</code> not permitted). 425 * @param width the image width. 426 * @param height the image height. 427 * @param info the chart rendering info (<code>null</code> permitted). 428 * 429 * @throws IOException if there are any I/O errors. 430 */ 431 public static void writeChartAsJPEG(OutputStream out, float quality, 432 JFreeChart chart, int width, int height, ChartRenderingInfo info) 433 throws IOException { 434 435 ParamChecks.nullNotPermitted(out, "out"); 436 ParamChecks.nullNotPermitted(chart, "chart"); 437 BufferedImage image = chart.createBufferedImage(width, height, 438 BufferedImage.TYPE_INT_RGB, info); 439 EncoderUtil.writeBufferedImage(image, ImageFormat.JPEG, out, quality); 440 441 } 442 443 /** 444 * Saves a chart to a file in JPEG format. 445 * 446 * @param file the file (<code>null</code> not permitted). 447 * @param chart the chart (<code>null</code> not permitted). 448 * @param width the image width. 449 * @param height the image height. 450 * 451 * @throws IOException if there are any I/O errors. 452 */ 453 public static void saveChartAsJPEG(File file, JFreeChart chart, 454 int width, int height) throws IOException { 455 456 // defer argument checking... 457 saveChartAsJPEG(file, chart, width, height, null); 458 459 } 460 461 /** 462 * Saves a chart to a file in JPEG format. 463 * 464 * @param file the file (<code>null</code> not permitted). 465 * @param quality the JPEG quality setting. 466 * @param chart the chart (<code>null</code> not permitted). 467 * @param width the image width. 468 * @param height the image height. 469 * 470 * @throws IOException if there are any I/O errors. 471 */ 472 public static void saveChartAsJPEG(File file, float quality, 473 JFreeChart chart, int width, int height) throws IOException { 474 475 // defer argument checking... 476 saveChartAsJPEG(file, quality, chart, width, height, null); 477 478 } 479 480 /** 481 * Saves a chart to a file in JPEG format. This method allows you to pass 482 * in a {@link ChartRenderingInfo} object, to collect information about the 483 * chart dimensions/entities. You will need this info if you want to 484 * create an HTML image map. 485 * 486 * @param file the file name (<code>null</code> not permitted). 487 * @param chart the chart (<code>null</code> not permitted). 488 * @param width the image width. 489 * @param height the image height. 490 * @param info the chart rendering info (<code>null</code> permitted). 491 * 492 * @throws IOException if there are any I/O errors. 493 */ 494 public static void saveChartAsJPEG(File file, JFreeChart chart, 495 int width, int height, ChartRenderingInfo info) throws IOException { 496 497 ParamChecks.nullNotPermitted(file, "file"); 498 ParamChecks.nullNotPermitted(chart, "chart"); 499 OutputStream out = new BufferedOutputStream(new FileOutputStream(file)); 500 try { 501 writeChartAsJPEG(out, chart, width, height, info); 502 } 503 finally { 504 out.close(); 505 } 506 507 } 508 509 /** 510 * Saves a chart to a file in JPEG format. This method allows you to pass 511 * in a {@link ChartRenderingInfo} object, to collect information about the 512 * chart dimensions/entities. You will need this info if you want to 513 * create an HTML image map. 514 * 515 * @param file the file name (<code>null</code> not permitted). 516 * @param quality the quality setting. 517 * @param chart the chart (<code>null</code> not permitted). 518 * @param width the image width. 519 * @param height the image height. 520 * @param info the chart rendering info (<code>null</code> permitted). 521 * 522 * @throws IOException if there are any I/O errors. 523 */ 524 public static void saveChartAsJPEG(File file, float quality, 525 JFreeChart chart, int width, int height, 526 ChartRenderingInfo info) throws IOException { 527 528 ParamChecks.nullNotPermitted(file, "file"); 529 ParamChecks.nullNotPermitted(chart, "chart"); 530 OutputStream out = new BufferedOutputStream(new FileOutputStream( 531 file)); 532 try { 533 writeChartAsJPEG(out, quality, chart, width, height, info); 534 } 535 finally { 536 out.close(); 537 } 538 539 } 540 541 /** 542 * Writes a {@link BufferedImage} to an output stream in JPEG format. 543 * 544 * @param out the output stream (<code>null</code> not permitted). 545 * @param image the image (<code>null</code> not permitted). 546 * 547 * @throws IOException if there are any I/O errors. 548 */ 549 public static void writeBufferedImageAsJPEG(OutputStream out, 550 BufferedImage image) throws IOException { 551 552 // defer argument checking... 553 writeBufferedImageAsJPEG(out, 0.75f, image); 554 555 } 556 557 /** 558 * Writes a {@link BufferedImage} to an output stream in JPEG format. 559 * 560 * @param out the output stream (<code>null</code> not permitted). 561 * @param quality the image quality (0.0f to 1.0f). 562 * @param image the image (<code>null</code> not permitted). 563 * 564 * @throws IOException if there are any I/O errors. 565 */ 566 public static void writeBufferedImageAsJPEG(OutputStream out, float quality, 567 BufferedImage image) throws IOException { 568 569 EncoderUtil.writeBufferedImage(image, ImageFormat.JPEG, out, quality); 570 571 } 572 573 /** 574 * Writes a {@link BufferedImage} to an output stream in PNG format. 575 * 576 * @param out the output stream (<code>null</code> not permitted). 577 * @param image the image (<code>null</code> not permitted). 578 * 579 * @throws IOException if there are any I/O errors. 580 */ 581 public static void writeBufferedImageAsPNG(OutputStream out, 582 BufferedImage image) throws IOException { 583 584 EncoderUtil.writeBufferedImage(image, ImageFormat.PNG, out); 585 586 } 587 588 /** 589 * Writes a {@link BufferedImage} to an output stream in PNG format. 590 * 591 * @param out the output stream (<code>null</code> not permitted). 592 * @param image the image (<code>null</code> not permitted). 593 * @param encodeAlpha encode alpha? 594 * @param compression the compression level (0-9). 595 * 596 * @throws IOException if there are any I/O errors. 597 */ 598 public static void writeBufferedImageAsPNG(OutputStream out, 599 BufferedImage image, boolean encodeAlpha, int compression) 600 throws IOException { 601 602 EncoderUtil.writeBufferedImage(image, ImageFormat.PNG, out, 603 compression, encodeAlpha); 604 } 605 606 /** 607 * Encodes a {@link BufferedImage} to PNG format. 608 * 609 * @param image the image (<code>null</code> not permitted). 610 * 611 * @return A byte array in PNG format. 612 * 613 * @throws IOException if there is an I/O problem. 614 */ 615 public static byte[] encodeAsPNG(BufferedImage image) throws IOException { 616 return EncoderUtil.encode(image, ImageFormat.PNG); 617 } 618 619 /** 620 * Encodes a {@link BufferedImage} to PNG format. 621 * 622 * @param image the image (<code>null</code> not permitted). 623 * @param encodeAlpha encode alpha? 624 * @param compression the PNG compression level (0-9). 625 * 626 * @return The byte array in PNG format. 627 * 628 * @throws IOException if there is an I/O problem. 629 */ 630 public static byte[] encodeAsPNG(BufferedImage image, boolean encodeAlpha, 631 int compression) throws IOException { 632 return EncoderUtil.encode(image, ImageFormat.PNG, compression, 633 encodeAlpha); 634 } 635 636 /** 637 * Writes an image map to an output stream. 638 * 639 * @param writer the writer (<code>null</code> not permitted). 640 * @param name the map name (<code>null</code> not permitted). 641 * @param info the chart rendering info (<code>null</code> not permitted). 642 * @param useOverLibForToolTips whether to use OverLIB for tooltips 643 * (http://www.bosrup.com/web/overlib/). 644 * 645 * @throws IOException if there are any I/O errors. 646 */ 647 public static void writeImageMap(PrintWriter writer, String name, 648 ChartRenderingInfo info, boolean useOverLibForToolTips) 649 throws IOException { 650 651 ToolTipTagFragmentGenerator toolTipTagFragmentGenerator; 652 if (useOverLibForToolTips) { 653 toolTipTagFragmentGenerator 654 = new OverLIBToolTipTagFragmentGenerator(); 655 } 656 else { 657 toolTipTagFragmentGenerator 658 = new StandardToolTipTagFragmentGenerator(); 659 } 660 ImageMapUtilities.writeImageMap(writer, name, info, 661 toolTipTagFragmentGenerator, 662 new StandardURLTagFragmentGenerator()); 663 664 } 665 666 /** 667 * Writes an image map to the specified writer. 668 * 669 * @param writer the writer (<code>null</code> not permitted). 670 * @param name the map name (<code>null</code> not permitted). 671 * @param info the chart rendering info (<code>null</code> not permitted). 672 * @param toolTipTagFragmentGenerator a generator for the HTML fragment 673 * that will contain the tooltip text (<code>null</code> not permitted 674 * if <code>info</code> contains tooltip information). 675 * @param urlTagFragmentGenerator a generator for the HTML fragment that 676 * will contain the URL reference (<code>null</code> not permitted if 677 * <code>info</code> contains URLs). 678 * 679 * @throws IOException if there are any I/O errors. 680 */ 681 public static void writeImageMap(PrintWriter writer, String name, 682 ChartRenderingInfo info, 683 ToolTipTagFragmentGenerator toolTipTagFragmentGenerator, 684 URLTagFragmentGenerator urlTagFragmentGenerator) 685 throws IOException { 686 687 writer.println(ImageMapUtilities.getImageMap(name, info, 688 toolTipTagFragmentGenerator, urlTagFragmentGenerator)); 689 } 690 691 /** 692 * Creates an HTML image map. This method maps to 693 * {@link ImageMapUtilities#getImageMap(String, ChartRenderingInfo, 694 * ToolTipTagFragmentGenerator, URLTagFragmentGenerator)}, using default 695 * generators. 696 * 697 * @param name the map name (<code>null</code> not permitted). 698 * @param info the chart rendering info (<code>null</code> not permitted). 699 * 700 * @return The map tag. 701 */ 702 public static String getImageMap(String name, ChartRenderingInfo info) { 703 return ImageMapUtilities.getImageMap(name, info, 704 new StandardToolTipTagFragmentGenerator(), 705 new StandardURLTagFragmentGenerator()); 706 } 707 708 /** 709 * Creates an HTML image map. This method maps directly to 710 * {@link ImageMapUtilities#getImageMap(String, ChartRenderingInfo, 711 * ToolTipTagFragmentGenerator, URLTagFragmentGenerator)}. 712 * 713 * @param name the map name (<code>null</code> not permitted). 714 * @param info the chart rendering info (<code>null</code> not permitted). 715 * @param toolTipTagFragmentGenerator a generator for the HTML fragment 716 * that will contain the tooltip text (<code>null</code> not permitted 717 * if <code>info</code> contains tooltip information). 718 * @param urlTagFragmentGenerator a generator for the HTML fragment that 719 * will contain the URL reference (<code>null</code> not permitted if 720 * <code>info</code> contains URLs). 721 * 722 * @return The map tag. 723 */ 724 public static String getImageMap(String name, ChartRenderingInfo info, 725 ToolTipTagFragmentGenerator toolTipTagFragmentGenerator, 726 URLTagFragmentGenerator urlTagFragmentGenerator) { 727 728 return ImageMapUtilities.getImageMap(name, info, 729 toolTipTagFragmentGenerator, urlTagFragmentGenerator); 730 731 } 732 733}