1 /* 2 * Licensed to the Apache Software Foundation (ASF) under one or more 3 * contributor license agreements. See the NOTICE file distributed with 4 * this work for additional information regarding copyright ownership. 5 * The ASF licenses this file to You under the Apache License, Version 2.0 6 * (the "License"); you may not use this file except in compliance with 7 * the License. You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 */ 17 /** 18 * @author Rustem V. Rafikov 19 * @version $Revision: 1.3 $ 20 */ 21 22 package javax.imageio; 23 24 import javax.imageio.spi.ImageReaderSpi; 25 import javax.imageio.stream.ImageInputStream; 26 import javax.imageio.metadata.IIOMetadata; 27 import javax.imageio.event.IIOReadWarningListener; 28 import javax.imageio.event.IIOReadProgressListener; 29 import javax.imageio.event.IIOReadUpdateListener; 30 import java.util.Locale; 31 import java.util.List; 32 import java.util.Iterator; 33 import java.util.Set; 34 import java.io.IOException; 35 import java.awt.image.BufferedImage; 36 import java.awt.image.Raster; 37 import java.awt.image.RenderedImage; 38 import java.awt.*; 39 40 /** 41 * The ImageReader class is an abstract class for decoding images. ImageReader 42 * objects are instantiated by the service provider interface, ImageReaderSpi 43 * class, for the specific format. ImageReaderSpi class should be registered 44 * with the IIORegistry, which uses them for format recognition and presentation 45 * of available format readers and writers. 46 * 47 * @since Android 1.0 48 */ 49 public abstract class ImageReader { 50 51 /** 52 * The originating provider. 53 */ 54 protected ImageReaderSpi originatingProvider; 55 56 /** 57 * The input object such as ImageInputStream. 58 */ 59 protected Object input; 60 61 /** 62 * The seek forward only. 63 */ 64 protected boolean seekForwardOnly; 65 66 /** 67 * The ignore metadata flag indicates whether current input source has been 68 * marked as metadata is allowed to be ignored by setInput. 69 */ 70 protected boolean ignoreMetadata; 71 72 /** 73 * The minimum index. 74 */ 75 protected int minIndex; 76 77 /** 78 * The available locales. 79 */ 80 protected Locale[] availableLocales; 81 82 /** 83 * The locale. 84 */ 85 protected Locale locale; 86 87 /** 88 * The list of warning listeners. 89 */ 90 protected List<IIOReadWarningListener> warningListeners; 91 92 /** 93 * The list of warning locales. 94 */ 95 protected List<Locale> warningLocales; 96 97 /** 98 * The list of progress listeners. 99 */ 100 protected List<IIOReadProgressListener> progressListeners; 101 102 /** 103 * The list of update listeners. 104 */ 105 protected List<IIOReadUpdateListener> updateListeners; 106 107 /** 108 * Instantiates a new ImageReader. 109 * 110 * @param originatingProvider 111 * the ImageReaderSpi which instantiates this ImageReader. 112 */ 113 protected ImageReader(ImageReaderSpi originatingProvider) { 114 this.originatingProvider = originatingProvider; 115 } 116 117 /** 118 * Gets the format name of this input source. 119 * 120 * @return the format name of this input source. 121 * @throws IOException 122 * if an I/O exception has occurred. 123 */ 124 public String getFormatName() throws IOException { 125 return originatingProvider.getFormatNames()[0]; 126 } 127 128 /** 129 * Gets the ImageReaderSpi which instantiated this ImageReader. 130 * 131 * @return the ImageReaderSpi. 132 */ 133 public ImageReaderSpi getOriginatingProvider() { 134 return originatingProvider; 135 } 136 137 /** 138 * Sets the specified Object as the input source of this ImageReader. 139 * 140 * @param input 141 * the input source, it can be an ImageInputStream or other 142 * supported objects. 143 * @param seekForwardOnly 144 * indicates whether the stream must be read sequentially from 145 * its current starting point. 146 * @param ignoreMetadata 147 * parameter which indicates if metadata may be ignored during 148 * reads or not. 149 */ 150 public void setInput(Object input, boolean seekForwardOnly, boolean ignoreMetadata) { 151 if (input != null) { 152 if (!isSupported(input) && !(input instanceof ImageInputStream)) { 153 throw new IllegalArgumentException("input " + input + " is not supported"); 154 } 155 } 156 this.minIndex = 0; 157 this.seekForwardOnly = seekForwardOnly; 158 this.ignoreMetadata = ignoreMetadata; 159 this.input = input; 160 } 161 162 /** 163 * Checks if is supported. 164 * 165 * @param input 166 * the input. 167 * @return true, if is supported. 168 */ 169 private boolean isSupported(Object input) { 170 ImageReaderSpi spi = getOriginatingProvider(); 171 if (null != spi) { 172 Class[] outTypes = spi.getInputTypes(); 173 for (Class<?> element : outTypes) { 174 if (element.isInstance(input)) { 175 return true; 176 } 177 } 178 } 179 return false; 180 } 181 182 /** 183 * Sets the specified Object as the input source of this ImageReader. 184 * Metadata is not ignored. 185 * 186 * @param input 187 * the input source, it can be an ImageInputStream or other 188 * supported objects. 189 * @param seekForwardOnly 190 * indicates whether the stream must be read sequentially from 191 * its current starting point. 192 */ 193 public void setInput(Object input, boolean seekForwardOnly) { 194 setInput(input, seekForwardOnly, false); 195 } 196 197 /** 198 * Sets the specified Object as the input source of this ImageReader. 199 * Metadata is not ignored and forward seeking is not required. 200 * 201 * @param input 202 * the input source, it can be ImageInputStream or other objects. 203 */ 204 public void setInput(Object input) { 205 setInput(input, false, false); 206 } 207 208 /** 209 * Gets the input source object of this ImageReader, or returns null. 210 * 211 * @return the input source object such as ImageInputStream, or null. 212 */ 213 public Object getInput() { 214 return input; 215 } 216 217 /** 218 * Checks if the input source supports only forward reading, or not. 219 * 220 * @return true, if the input source supports only forward reading, false 221 * otherwise. 222 */ 223 public boolean isSeekForwardOnly() { 224 return seekForwardOnly; 225 } 226 227 /** 228 * Returns true if the current input source allows to metadata to be ignored 229 * by passing true as the ignoreMetadata argument to the setInput method. 230 * 231 * @return true, if the current input source allows to metadata to be 232 * ignored by passing true as the ignoreMetadata argument to the 233 * setInput method. 234 */ 235 public boolean isIgnoringMetadata() { 236 return ignoreMetadata; 237 } 238 239 /** 240 * Gets the minimum valid index for reading an image, thumbnail, or image 241 * metadata. 242 * 243 * @return the minimum valid index for reading an image, thumbnail, or image 244 * metadata. 245 */ 246 public int getMinIndex() { 247 return minIndex; 248 } 249 250 /** 251 * Gets the available locales. 252 * 253 * @return an array of the available locales. 254 */ 255 public Locale[] getAvailableLocales() { 256 return availableLocales; 257 } 258 259 /** 260 * Sets the locale to this ImageReader. 261 * 262 * @param locale 263 * the Locale. 264 */ 265 public void setLocale(Locale locale) { 266 throw new UnsupportedOperationException("Not implemented yet"); 267 } 268 269 /** 270 * Gets the locale of this ImageReader. 271 * 272 * @return the locale of this ImageReader. 273 */ 274 public Locale getLocale() { 275 return locale; 276 } 277 278 /** 279 * Gets the number of images available in the current input source. 280 * 281 * @param allowSearch 282 * the parameter which indicates what a search is required; if 283 * false, the reader may return -1 without searching. 284 * @return the number of images. 285 * @throws IOException 286 * if an I/O exception has occurred. 287 */ 288 public abstract int getNumImages(boolean allowSearch) throws IOException; 289 290 /** 291 * Gets the width of the specified image in input source. 292 * 293 * @param imageIndex 294 * the image index. 295 * @return the width in pixels. 296 * @throws IOException 297 * if an I/O exception has occurred. 298 */ 299 public abstract int getWidth(int imageIndex) throws IOException; 300 301 /** 302 * Gets the height of the specified image in input source. 303 * 304 * @param imageIndex 305 * the image index. 306 * @return the height in pixels. 307 * @throws IOException 308 * if an I/O exception has occurred. 309 */ 310 public abstract int getHeight(int imageIndex) throws IOException; 311 312 /** 313 * Checks if the storage format of the specified image places an impediment 314 * on random pixels access or not. 315 * 316 * @param imageIndex 317 * the image's index. 318 * @return true, if the storage format of the specified image places an 319 * impediment on random pixels access, false otherwise. 320 * @throws IOException 321 * if an I/O exception has occurred. 322 */ 323 public boolean isRandomAccessEasy(int imageIndex) throws IOException { 324 return false; // def 325 } 326 327 /** 328 * Gets the aspect ratio (width devided by height) of the image. 329 * 330 * @param imageIndex 331 * the image index. 332 * @return the aspect ratio of the image. 333 * @throws IOException 334 * if an I/O exception has occurred. 335 */ 336 public float getAspectRatio(int imageIndex) throws IOException { 337 return (float)getWidth(imageIndex) / getHeight(imageIndex); 338 } 339 340 /** 341 * Gets an ImageTypeSpecifier which indicates the type of the specified 342 * image. 343 * 344 * @param imageIndex 345 * the image's index. 346 * @return the ImageTypeSpecifier. 347 * @throws IOException 348 * if an I/O exception has occurred. 349 */ 350 public ImageTypeSpecifier getRawImageType(int imageIndex) throws IOException { 351 throw new UnsupportedOperationException("Not implemented yet"); 352 } 353 354 /** 355 * Gets an Iterator of ImageTypeSpecifier objects which are associated with 356 * image types that may be used when decoding specified image. 357 * 358 * @param imageIndex 359 * the image index. 360 * @return an Iterator of ImageTypeSpecifier objects. 361 * @throws IOException 362 * if an I/O exception has occurred. 363 */ 364 public abstract Iterator<ImageTypeSpecifier> getImageTypes(int imageIndex) throws IOException; 365 366 /** 367 * Gets the default ImageReadParam object. 368 * 369 * @return the ImageReadParam object. 370 */ 371 public ImageReadParam getDefaultReadParam() { 372 throw new UnsupportedOperationException("Not implemented yet"); 373 } 374 375 /** 376 * Gets an IIOMetadata object for this input source. 377 * 378 * @return the IIOMetadata. 379 * @throws IOException 380 * if an I/O exception has occurred. 381 */ 382 public abstract IIOMetadata getStreamMetadata() throws IOException; 383 384 /** 385 * Gets an IIOMetadata object for this input source. 386 * 387 * @param formatName 388 * the desired metadata format to be used in the returned 389 * IIOMetadata object. 390 * @param nodeNames 391 * the node names of the document. 392 * @return the IIOMetadata. 393 * @throws IOException 394 * if an I/O exception has occurred. 395 */ 396 public IIOMetadata getStreamMetadata(String formatName, Set<String> nodeNames) 397 throws IOException { 398 throw new UnsupportedOperationException("Not implemented yet"); 399 } 400 401 /** 402 * Gets the image metadata of the specified image in input source. 403 * 404 * @param imageIndex 405 * the image index. 406 * @return the IIOMetadata. 407 * @throws IOException 408 * if an I/O exception has occurred. 409 */ 410 public abstract IIOMetadata getImageMetadata(int imageIndex) throws IOException; 411 412 /** 413 * Gets the image metadata of the specified image input source. 414 * 415 * @param imageIndex 416 * the image index. 417 * @param formatName 418 * the desired metadata format to be used in the returned 419 * IIOMetadata object. 420 * @param nodeNames 421 * the node names which can be contained in the document. 422 * @return the IIOMetadata. 423 * @throws IOException 424 * if an I/O exception has occurred. 425 */ 426 public IIOMetadata getImageMetadata(int imageIndex, String formatName, Set<String> nodeNames) 427 throws IOException { 428 throw new UnsupportedOperationException("Not implemented yet"); 429 } 430 431 /** 432 * Reads the specified image and returns it as a BufferedImage using the 433 * default ImageReadParam. 434 * 435 * @param imageIndex 436 * the image index. 437 * @return the BufferedImage. 438 * @throws IOException 439 * if an I/O exception has occurred. 440 */ 441 public BufferedImage read(int imageIndex) throws IOException { 442 return read(imageIndex, null); 443 } 444 445 /** 446 * Reads the specified image and returns it as a BufferedImage using the 447 * specified ImageReadParam. 448 * 449 * @param imageIndex 450 * the image index. 451 * @param param 452 * the ImageReadParam. 453 * @return the BufferedImage. 454 * @throws IOException 455 * if an I/O exception has occurred. 456 */ 457 public abstract BufferedImage read(int imageIndex, ImageReadParam param) throws IOException; 458 459 /** 460 * Reads the specified image and returns an IIOImage with this image, 461 * thumbnails, and metadata for this image, using the specified 462 * ImageReadParam. 463 * 464 * @param imageIndex 465 * the image index. 466 * @param param 467 * the ImageReadParam. 468 * @return the IIOImage. 469 * @throws IOException 470 * if an I/O exception has occurred. 471 */ 472 public IIOImage readAll(int imageIndex, ImageReadParam param) throws IOException { 473 throw new UnsupportedOperationException("Not implemented yet"); 474 } 475 476 /** 477 * Returns an Iterator of IIOImages from the input source. 478 * 479 * @param params 480 * the Iterator of ImageReadParam objects. 481 * @return the iterator of IIOImages. 482 * @throws IOException 483 * if an I/O exception has occurred. 484 */ 485 public Iterator<IIOImage> readAll(Iterator<? extends ImageReadParam> params) throws IOException { 486 throw new UnsupportedOperationException("Not implemented yet"); 487 } 488 489 /** 490 * Checks whether or not this plug-in supports reading a Raster. 491 * 492 * @return true, if this plug-in supports reading a Raster, false otherwise. 493 */ 494 public boolean canReadRaster() { 495 return false; // def 496 } 497 498 /** 499 * Reads a new Raster object which contains the raw pixel data from the 500 * image. 501 * 502 * @param imageIndex 503 * the image index. 504 * @param param 505 * the ImageReadParam. 506 * @return the Raster. 507 * @throws IOException 508 * if an I/O exception has occurred. 509 */ 510 public Raster readRaster(int imageIndex, ImageReadParam param) throws IOException { 511 throw new UnsupportedOperationException("Unsupported"); 512 } 513 514 /** 515 * Checks if the specified image has tiles or not. 516 * 517 * @param imageIndex 518 * the image's index. 519 * @return true, if the specified image has tiles, false otherwise. 520 * @throws IOException 521 * if an I/O exception has occurred. 522 */ 523 public boolean isImageTiled(int imageIndex) throws IOException { 524 return false; // def 525 } 526 527 /** 528 * Gets the tile width in the specified image. 529 * 530 * @param imageIndex 531 * the image's index. 532 * @return the tile width. 533 * @throws IOException 534 * if an I/O exception has occurred. 535 */ 536 public int getTileWidth(int imageIndex) throws IOException { 537 return getWidth(imageIndex); // def 538 } 539 540 /** 541 * Gets the tile height in the specified image. 542 * 543 * @param imageIndex 544 * the image's index. 545 * @return the tile height. 546 * @throws IOException 547 * if an I/O exception has occurred. 548 */ 549 public int getTileHeight(int imageIndex) throws IOException { 550 return getHeight(imageIndex); // def 551 } 552 553 /** 554 * Gets the X coordinate of the upper left corner of the tile grid in the 555 * specified image. 556 * 557 * @param imageIndex 558 * the image's index. 559 * @return the X coordinate of the upper left corner of the tile grid. 560 * @throws IOException 561 * if an I/O exception has occurred. 562 */ 563 public int getTileGridXOffset(int imageIndex) throws IOException { 564 return 0; // def 565 } 566 567 /** 568 * Gets the Y coordinate of the upper left corner of the tile grid in the 569 * specified image. 570 * 571 * @param imageIndex 572 * the image's index. 573 * @return the Y coordinate of the upper left corner of the tile grid. 574 * @throws IOException 575 * if an I/O exception has occurred. 576 */ 577 public int getTileGridYOffset(int imageIndex) throws IOException { 578 return 0; // def 579 } 580 581 /** 582 * Reads the tile specified by the tileX and tileY parameters of the 583 * specified image and returns it as a BufferedImage. 584 * 585 * @param imageIndex 586 * the image index. 587 * @param tileX 588 * the X index of tile. 589 * @param tileY 590 * the Y index of tile. 591 * @return the BufferedImage. 592 * @throws IOException 593 * if an I/O exception has occurred. 594 */ 595 public BufferedImage readTile(int imageIndex, int tileX, int tileY) throws IOException { 596 throw new UnsupportedOperationException("Not implemented yet"); 597 } 598 599 /** 600 * Reads the tile specified by the tileX and tileY parameters of the 601 * specified image and returns it as a Raster. 602 * 603 * @param imageIndex 604 * the image index. 605 * @param tileX 606 * the X index of tile. 607 * @param tileY 608 * the Y index of tile. 609 * @return the Raster. 610 * @throws IOException 611 * if an I/O exception has occurred. 612 */ 613 public Raster readTileRaster(int imageIndex, int tileX, int tileY) throws IOException { 614 throw new UnsupportedOperationException("Not implemented yet"); 615 } 616 617 /** 618 * Reads the specified image using the specified ImageReadParam and returns 619 * it as a RenderedImage. 620 * 621 * @param imageIndex 622 * the image index. 623 * @param param 624 * the ImageReadParam. 625 * @return the RenderedImage. 626 * @throws IOException 627 * if an I/O exception has occurred. 628 */ 629 public RenderedImage readAsRenderedImage(int imageIndex, ImageReadParam param) 630 throws IOException { 631 return read(imageIndex, param); 632 } 633 634 /** 635 * Returns true if the image format supported by this reader supports 636 * thumbnail preview images. 637 * 638 * @return true, if the image format supported by this reader supports 639 * thumbnail preview images, false otherwise. 640 */ 641 public boolean readerSupportsThumbnails() { 642 return false; // def 643 } 644 645 /** 646 * Checks if the specified image has thumbnails or not. 647 * 648 * @param imageIndex 649 * the image's index. 650 * @return true, if the specified image has thumbnails, false otherwise. 651 * @throws IOException 652 * if an I/O exception has occurred. 653 */ 654 public boolean hasThumbnails(int imageIndex) throws IOException { 655 return getNumThumbnails(imageIndex) > 0; // def 656 } 657 658 /** 659 * Gets the number of thumbnails for the specified image. 660 * 661 * @param imageIndex 662 * the image's index. 663 * @return the number of thumbnails. 664 * @throws IOException 665 * if an I/O exception has occurred. 666 */ 667 public int getNumThumbnails(int imageIndex) throws IOException { 668 return 0; // def 669 } 670 671 /** 672 * Gets the width of the specified thumbnail for the specified image. 673 * 674 * @param imageIndex 675 * the image's index. 676 * @param thumbnailIndex 677 * the thumbnail's index. 678 * @return the thumbnail width. 679 * @throws IOException 680 * if an I/O exception has occurred. 681 */ 682 public int getThumbnailWidth(int imageIndex, int thumbnailIndex) throws IOException { 683 return readThumbnail(imageIndex, thumbnailIndex).getWidth(); // def 684 } 685 686 /** 687 * Gets the height of the specified thumbnail for the specified image. 688 * 689 * @param imageIndex 690 * the image's index. 691 * @param thumbnailIndex 692 * the thumbnail's index. 693 * @return the thumbnail height. 694 * @throws IOException 695 * if an I/O exception has occurred. 696 */ 697 public int getThumbnailHeight(int imageIndex, int thumbnailIndex) throws IOException { 698 return readThumbnail(imageIndex, thumbnailIndex).getHeight(); // def 699 } 700 701 /** 702 * Reads the thumbnail image for the specified image as a BufferedImage. 703 * 704 * @param imageIndex 705 * the image index. 706 * @param thumbnailIndex 707 * the thumbnail index. 708 * @return the BufferedImage. 709 * @throws IOException 710 * if an I/O exception has occurred. 711 */ 712 public BufferedImage readThumbnail(int imageIndex, int thumbnailIndex) throws IOException { 713 throw new UnsupportedOperationException("Unsupported"); // def 714 } 715 716 /** 717 * Requests an abort operation for current reading operation. 718 */ 719 public void abort() { 720 throw new UnsupportedOperationException("Not implemented yet"); 721 } 722 723 /** 724 * Checks whether or not a request to abort the current read operation has 725 * been made successfully. 726 * 727 * @return true, if the request to abort the current read operation has been 728 * made successfully, false otherwise. 729 */ 730 protected boolean abortRequested() { 731 throw new UnsupportedOperationException("Not implemented yet"); 732 } 733 734 /** 735 * Clears all previous abort request, and abortRequested returns false after 736 * calling this method. 737 */ 738 protected void clearAbortRequest() { 739 throw new UnsupportedOperationException("Not implemented yet"); 740 } 741 742 /** 743 * Adds the IIOReadWarningListener. 744 * 745 * @param listener 746 * the IIOReadWarningListener. 747 */ 748 public void addIIOReadWarningListener(IIOReadWarningListener listener) { 749 throw new UnsupportedOperationException("Not implemented yet"); 750 } 751 752 /** 753 * Removes the specified IIOReadWarningListener. 754 * 755 * @param listener 756 * the IIOReadWarningListener to be removed. 757 */ 758 public void removeIIOReadWarningListener(IIOReadWarningListener listener) { 759 throw new UnsupportedOperationException("Not implemented yet"); 760 } 761 762 /** 763 * Removes all registered IIOReadWarningListeners. 764 */ 765 public void removeAllIIOReadWarningListeners() { 766 throw new UnsupportedOperationException("Not implemented yet"); 767 } 768 769 /** 770 * Adds the IIOReadProgressListener. 771 * 772 * @param listener 773 * the IIOReadProgressListener. 774 */ 775 public void addIIOReadProgressListener(IIOReadProgressListener listener) { 776 throw new UnsupportedOperationException("Not implemented yet"); 777 } 778 779 /** 780 * Removes the specified IIOReadProgressListener. 781 * 782 * @param listener 783 * the IIOReadProgressListener to be removed. 784 */ 785 public void removeIIOReadProgressListener(IIOReadProgressListener listener) { 786 throw new UnsupportedOperationException("Not implemented yet"); 787 } 788 789 /** 790 * Removes registered IIOReadProgressListeners. 791 */ 792 public void removeAllIIOReadProgressListeners() { 793 throw new UnsupportedOperationException("Not implemented yet"); 794 } 795 796 /** 797 * Adds the IIOReadUpdateListener. 798 * 799 * @param listener 800 * the IIOReadUpdateListener. 801 */ 802 public void addIIOReadUpdateListener(IIOReadUpdateListener listener) { 803 throw new UnsupportedOperationException("Not implemented yet"); 804 } 805 806 /** 807 * Removes the specified IIOReadUpdateListener. 808 * 809 * @param listener 810 * the IIOReadUpdateListener to be removed. 811 */ 812 public void removeIIOReadUpdateListener(IIOReadUpdateListener listener) { 813 throw new UnsupportedOperationException("Not implemented yet"); 814 } 815 816 /** 817 * Removes registered IIOReadUpdateListeners. 818 */ 819 public void removeAllIIOReadUpdateListeners() { 820 throw new UnsupportedOperationException("Not implemented yet"); 821 } 822 823 /** 824 * Processes the start of an sequence of image reads by calling the 825 * sequenceStarted method on all registered IIOReadProgressListeners. 826 * 827 * @param minIndex 828 * the minimum index. 829 */ 830 protected void processSequenceStarted(int minIndex) { 831 throw new UnsupportedOperationException("Not implemented yet"); 832 } 833 834 /** 835 * Processes the completion of an sequence of image reads by calling 836 * sequenceComplete method on all registered IIOReadProgressListeners. 837 */ 838 protected void processSequenceComplete() { 839 throw new UnsupportedOperationException("Not implemented yet"); 840 } 841 842 /** 843 * Processes the start of an image read by calling the imageStarted method 844 * on all registered IIOReadProgressListeners. 845 * 846 * @param imageIndex 847 * the image index. 848 */ 849 protected void processImageStarted(int imageIndex) { 850 throw new UnsupportedOperationException("Not implemented yet"); 851 } 852 853 /** 854 * Processes the current percentage of image completion by calling the 855 * imageProgress method on all registered IIOReadProgressListeners. 856 * 857 * @param percentageDone 858 * the percentage done. 859 */ 860 protected void processImageProgress(float percentageDone) { 861 throw new UnsupportedOperationException("Not implemented yet"); 862 } 863 864 /** 865 * Processes image completion by calling the imageComplete method on all 866 * registered IIOReadProgressListeners. 867 */ 868 protected void processImageComplete() { 869 throw new UnsupportedOperationException("Not implemented yet"); 870 } 871 872 /** 873 * Processes the start of a thumbnail read by calling the thumbnailStarted 874 * method on all registered IIOReadProgressListeners. 875 * 876 * @param imageIndex 877 * the image index. 878 * @param thumbnailIndex 879 * the thumbnail index. 880 */ 881 protected void processThumbnailStarted(int imageIndex, int thumbnailIndex) { 882 throw new UnsupportedOperationException("Not implemented yet"); 883 } 884 885 /** 886 * Processes the current percentage of thumbnail completion by calling the 887 * thumbnailProgress method on all registered IIOReadProgressListeners. 888 * 889 * @param percentageDone 890 * the percentage done. 891 */ 892 protected void processThumbnailProgress(float percentageDone) { 893 throw new UnsupportedOperationException("Not implemented yet"); 894 } 895 896 /** 897 * Processes the completion of a thumbnail read by calling the 898 * thumbnailComplete method on all registered IIOReadProgressListeners. 899 */ 900 protected void processThumbnailComplete() { 901 throw new UnsupportedOperationException("Not implemented yet"); 902 } 903 904 /** 905 * Processes a read aborted event by calling the readAborted method on all 906 * registered IIOReadProgressListeners. 907 */ 908 protected void processReadAborted() { 909 throw new UnsupportedOperationException("Not implemented yet"); 910 } 911 912 /** 913 * Processes the beginning of a progressive pass by calling the passStarted 914 * method on all registered IIOReadUpdateListeners. 915 * 916 * @param theImage 917 * the image to be updated. 918 * @param pass 919 * the current pass index. 920 * @param minPass 921 * the minimum pass index. 922 * @param maxPass 923 * the maximum pass index. 924 * @param minX 925 * the X coordinate of of the upper left pixel. 926 * @param minY 927 * the Y coordinate of of the upper left pixel. 928 * @param periodX 929 * the horizontal separation between pixels. 930 * @param periodY 931 * the vertical separation between pixels. 932 * @param bands 933 * the number of affected bands. 934 */ 935 protected void processPassStarted(BufferedImage theImage, int pass, int minPass, int maxPass, 936 int minX, int minY, int periodX, int periodY, int[] bands) { 937 throw new UnsupportedOperationException("Not implemented yet"); 938 } 939 940 /** 941 * Processes the update of a set of samples by calling the imageUpdate 942 * method on all registered IIOReadUpdateListeners. 943 * 944 * @param theImage 945 * the image to be updated. 946 * @param minX 947 * the X coordinate of the upper left pixel. 948 * @param minY 949 * the Y coordinate of the upper left pixel. 950 * @param width 951 * the width of updated area. 952 * @param height 953 * the height of updated area. 954 * @param periodX 955 * the horizontal separation between pixels. 956 * @param periodY 957 * the vertical separation between pixels. 958 * @param bands 959 * the number of affected bands. 960 */ 961 protected void processImageUpdate(BufferedImage theImage, int minX, int minY, int width, 962 int height, int periodX, int periodY, int[] bands) { 963 throw new UnsupportedOperationException("Not implemented yet"); 964 } 965 966 /** 967 * Processes the end of a progressive pass by calling passComplete method of 968 * registered IIOReadUpdateListeners. 969 * 970 * @param theImage 971 * the image to be updated. 972 */ 973 protected void processPassComplete(BufferedImage theImage) { 974 throw new UnsupportedOperationException("Not implemented yet"); 975 } 976 977 /** 978 * Processes the beginning of a thumbnail progressive pass by calling the 979 * thumbnailPassStarted method on all registered IIOReadUpdateListeners. 980 * 981 * @param theThumbnail 982 * the thumbnail to be updated. 983 * @param pass 984 * the current pass index. 985 * @param minPass 986 * the minimum pass index. 987 * @param maxPass 988 * the maximum pass index. 989 * @param minX 990 * the X coordinate of the upper left pixel. 991 * @param minY 992 * the Y coordinate of the upper left pixel. 993 * @param periodX 994 * the horizontal separation between pixels. 995 * @param periodY 996 * the vertical separation between pixels. 997 * @param bands 998 * the number of affected bands. 999 */ 1000 protected void processThumbnailPassStarted(BufferedImage theThumbnail, int pass, int minPass, 1001 int maxPass, int minX, int minY, int periodX, int periodY, int[] bands) { 1002 throw new UnsupportedOperationException("Not implemented yet"); 1003 } 1004 1005 /** 1006 * Processes the update of a set of samples in a thumbnail image by calling 1007 * the thumbnailUpdate method on all registered IIOReadUpdateListeners. 1008 * 1009 * @param theThumbnail 1010 * the thumbnail to be updated. 1011 * @param minX 1012 * the X coordinate of the upper left pixel. 1013 * @param minY 1014 * the Y coordinate of the upper left pixel. 1015 * @param width 1016 * the total width of the updated area. 1017 * @param height 1018 * the total height of the updated area. 1019 * @param periodX 1020 * the horizontal separation between pixels. 1021 * @param periodY 1022 * the vertical separation between pixels. 1023 * @param bands 1024 * the number of affected bands. 1025 */ 1026 protected void processThumbnailUpdate(BufferedImage theThumbnail, int minX, int minY, 1027 int width, int height, int periodX, int periodY, int[] bands) { 1028 throw new UnsupportedOperationException("Not implemented yet"); 1029 } 1030 1031 /** 1032 * Processes the end of a thumbnail progressive pass by calling the 1033 * thumbnailPassComplete method on all registered IIOReadUpdateListeners. 1034 * 1035 * @param theThumbnail 1036 * the thumbnail to be updated. 1037 */ 1038 protected void processThumbnailPassComplete(BufferedImage theThumbnail) { 1039 throw new UnsupportedOperationException("Not implemented yet"); 1040 } 1041 1042 /** 1043 * Processes a warning message by calling warningOccurred method of 1044 * registered IIOReadWarningListeners. 1045 * 1046 * @param warning 1047 * the warning. 1048 */ 1049 protected void processWarningOccurred(String warning) { 1050 throw new UnsupportedOperationException("Not implemented yet"); 1051 } 1052 1053 /** 1054 * Processes a warning by calling the warningOccurred method of on all 1055 * registered IIOReadWarningListeners. 1056 * 1057 * @param baseName 1058 * the base name of ResourceBundles. 1059 * @param keyword 1060 * the keyword to index the warning among ResourceBundles. 1061 */ 1062 protected void processWarningOccurred(String baseName, String keyword) { 1063 throw new UnsupportedOperationException("Not implemented yet"); 1064 } 1065 1066 /** 1067 * Resets this ImageReader. 1068 */ 1069 public void reset() { 1070 // def 1071 setInput(null, false); 1072 setLocale(null); 1073 removeAllIIOReadUpdateListeners(); 1074 removeAllIIOReadWarningListeners(); 1075 removeAllIIOReadProgressListeners(); 1076 clearAbortRequest(); 1077 } 1078 1079 /** 1080 * Disposes of any resources. 1081 */ 1082 public void dispose() { 1083 // do nothing by def 1084 } 1085 1086 /** 1087 * Gets the region of source image that should be read with the specified 1088 * width, height and ImageReadParam. 1089 * 1090 * @param param 1091 * the ImageReadParam object, or null. 1092 * @param srcWidth 1093 * the source image's width. 1094 * @param srcHeight 1095 * the source image's height. 1096 * @return the Rectangle of source region. 1097 */ 1098 protected static Rectangle getSourceRegion(ImageReadParam param, int srcWidth, int srcHeight) { 1099 throw new UnsupportedOperationException("Not implemented yet"); 1100 } 1101 1102 /** 1103 * Computes the specified source region and the specified destination region 1104 * with the specified the width and height of the source image, an optional 1105 * destination image, and an ImageReadParam. 1106 * 1107 * @param param 1108 * the an ImageReadParam object, or null. 1109 * @param srcWidth 1110 * the source image's width. 1111 * @param srcHeight 1112 * the source image's height. 1113 * @param image 1114 * the destination image. 1115 * @param srcRegion 1116 * the source region. 1117 * @param destRegion 1118 * the destination region. 1119 */ 1120 protected static void computeRegions(ImageReadParam param, int srcWidth, int srcHeight, 1121 BufferedImage image, Rectangle srcRegion, Rectangle destRegion) { 1122 throw new UnsupportedOperationException("Not implemented yet"); 1123 } 1124 1125 /** 1126 * Checks the validity of the source and destination band and is called when 1127 * the reader knows the number of bands of the source image and the number 1128 * of bands of the destination image. 1129 * 1130 * @param param 1131 * the ImageReadParam for reading the Image. 1132 * @param numSrcBands 1133 * the number of bands in the source. 1134 * @param numDstBands 1135 * the number of bands in the destination. 1136 */ 1137 protected static void checkReadParamBandSettings(ImageReadParam param, int numSrcBands, 1138 int numDstBands) { 1139 throw new UnsupportedOperationException("Not implemented yet"); 1140 } 1141 1142 /** 1143 * Gets the destination image where the decoded data is written. 1144 * 1145 * @param param 1146 * the ImageReadParam. 1147 * @param imageTypes 1148 * the iterator of ImageTypeSpecifier objects. 1149 * @param width 1150 * the width of the image being decoded. 1151 * @param height 1152 * the height of the image being decoded. 1153 * @return the BufferedImage where decoded pixels should be written. 1154 * @throws IIOException 1155 * the IIOException is thrown if there is no suitable 1156 * ImageTypeSpecifier. 1157 */ 1158 protected static BufferedImage getDestination(ImageReadParam param, 1159 Iterator<ImageTypeSpecifier> imageTypes, int width, int height) throws IIOException { 1160 throw new UnsupportedOperationException("Not implemented yet"); 1161 } 1162 } 1163