1 | static int imageIcon_cacheSize = 10; |
2 | sbool imageIcon_verbose; |
3 | static Map<S, ImageIcon> imageIcon_cache; |
4 | static Lock imageIcon_lock = lock(); |
5 | static new ThreadLocal<Bool> imageIcon_fixGIF; |
6 | |
7 | // not going through BufferedImage preserves animations |
8 | static ImageIcon imageIcon(S imageID) ctex { |
9 | if (imageID == null) null; |
10 | lock imageIcon_lock; |
11 | if (imageIcon_cache == null) |
12 | imageIcon_cache = new MRUCache(imageIcon_cacheSize); |
13 | imageID = fsI(imageID); |
14 | ImageIcon ii = imageIcon_cache.get(imageID); |
15 | if (ii == null) { |
16 | if (imageIcon_verbose) print("Loading image icon: " + imageID); |
17 | File f = loadBinarySnippet(imageID); |
18 | ifndef DontFixGIFs |
19 | Bool b = imageIcon_fixGIF!; |
20 | if (!isFalse(b)) |
21 | ii = new ImageIcon(loadBufferedImageFixingGIFs(f)); |
22 | else |
23 | endifndef |
24 | ii = new ImageIcon(f.toURI().toURL()); |
25 | } else |
26 | imageIcon_cache.remove(imageID); // move to front of cache on access |
27 | imageIcon_cache.put(imageID, ii); |
28 | ret ii; |
29 | } |
30 | |
31 | // doesn't fix GIFs |
32 | static ImageIcon imageIcon(File f) ctex { |
33 | ret new ImageIcon(f.toURI().toURL()); |
34 | } |
35 | |
36 | static ImageIcon imageIcon(Image img) { |
37 | ret img == null ?: new ImageIcon(img); |
38 | } |
39 | |
40 | ifclass RGBImage |
41 | static ImageIcon imageIcon(RGBImage img) { |
42 | ret imageIcon(img.getBufferedImage()); |
43 | } |
44 | endif |
download show line numbers debug dex old transpilations
Travelled to 17 computer(s): aoiabmzegqzx, bhatertpkbcr, cbybwowwnfue, cfunsshuasjs, ddnzoavkxhuk, gwrvuhgaqvyk, irmadwmeruwu, ishqpsrjomds, lpdgvwnxivlt, mowyntqkapby, mqqgnosmbjvj, onxytkatvevr, pyentgdyhuwx, pzhvpgtvlbxg, tslmcundralx, tvejysmllsmz, vouqrxazstgt
No comments. add comment
Snippet ID: | #1003551 |
Snippet name: | imageIcon - make ImageIcon from image ID or BufferedImage |
Eternal ID of this version: | #1003551/16 |
Text MD5: | a892d616213a47ef53002d4d7e61eda0 |
Author: | stefan |
Category: | javax / gui |
Type: | JavaX fragment (include) |
Public (visible to everyone): | Yes |
Archived (hidden from active list): | No |
Created/modified: | 2022-02-12 21:09:50 |
Source code size: | 1317 bytes / 44 lines |
Pitched / IR pitched: | No / No |
Views / Downloads: | 733 / 1024 |
Version history: | 15 change(s) |
Referenced in: | [show references] |