Return an Image object from inside the Processing lib folder.
(String filename, Component who, int width,
int height)
| 544 | * Return an Image object from inside the Processing lib folder. |
| 545 | */ |
| 546 | static public Image getLibImage(String filename, Component who, int width, |
| 547 | int height) { |
| 548 | Image image = null; |
| 549 | |
| 550 | // Use vector image when available |
| 551 | Resource vectorFile = getThemeResource(filename + ".svg"); |
| 552 | if (vectorFile.exists()) { |
| 553 | try { |
| 554 | image = imageFromSVG(vectorFile.getUrl(), width, height); |
| 555 | } catch (Exception e) { |
| 556 | System.err.println("Failed to load " + vectorFile + ": " + e.getMessage()); |
| 557 | } |
| 558 | } |
| 559 | |
| 560 | Resource bitmapFile = getThemeResource(filename + ".png"); |
| 561 | |
| 562 | // Otherwise fall-back to PNG bitmaps, allowing user-defined bitmaps to |
| 563 | // override built-in svgs |
| 564 | if (image == null || bitmapFile.getPriority() > vectorFile.getPriority()) { |
| 565 | Resource bitmap2xFile = getThemeResource(filename + "@2x.png"); |
| 566 | |
| 567 | Resource imageFile; |
| 568 | if (((getScale() > 125 && bitmap2xFile.exists()) || !bitmapFile.exists()) |
| 569 | && (bitmapFile.isUserDefined() && bitmap2xFile.isUserDefined())) { |
| 570 | imageFile = bitmap2xFile; |
| 571 | } else { |
| 572 | imageFile = bitmapFile; |
| 573 | } |
| 574 | Toolkit tk = Toolkit.getDefaultToolkit(); |
| 575 | image = tk.getImage(imageFile.getUrl()); |
| 576 | } |
| 577 | |
| 578 | MediaTracker tracker = new MediaTracker(who); |
| 579 | try { |
| 580 | tracker.addImage(image, 0); |
| 581 | tracker.waitForAll(); |
| 582 | } catch (InterruptedException e) { |
| 583 | } |
| 584 | |
| 585 | if (image.getWidth(null) != width || image.getHeight(null) != height) { |
| 586 | image = image.getScaledInstance(width, height, Image.SCALE_SMOOTH); |
| 587 | try { |
| 588 | tracker.addImage(image, 1); |
| 589 | tracker.waitForAll(); |
| 590 | } catch (InterruptedException e) { |
| 591 | } |
| 592 | } |
| 593 | |
| 594 | return image; |
| 595 | } |
| 596 | |
| 597 | /** |
| 598 | * Get an image associated with the current color theme. |
no test coverage detected