@@ -99,6 +99,22 @@ public ImageData getImageData(int zoom) {
99
99
return URLImageDescriptor .getImageData (url , zoom );
100
100
}
101
101
102
+ @ Override
103
+ public ImageData getCustomizedImageData (int zoom , int flag ) {
104
+ return URLImageDescriptor .getCustomizedImageData (url , zoom , flag );
105
+ }
106
+
107
+ @ Override
108
+ public boolean supportsRasterizationFlag (int flag ) {
109
+ boolean supportsFlag = flag == SWT .IMAGE_DISABLE || flag == SWT .IMAGE_GRAY || flag == SWT .IMAGE_COPY ;
110
+ URL tempURL = getURL (url );
111
+ if (tempURL != null ) {
112
+ if (tempURL .toString ().endsWith (".svg" ) && supportsFlag ) { //$NON-NLS-1$
113
+ return true ;
114
+ }
115
+ }
116
+ return false ;
117
+ }
102
118
}
103
119
104
120
private static long cumulativeTime ;
@@ -143,14 +159,14 @@ private static ImageData getImageData(String url, int zoom) {
143
159
URL tempURL = getURL (url );
144
160
if (tempURL != null ) {
145
161
if (tempURL .toString ().endsWith (".svg" )) { //$NON-NLS-1$
146
- return getImageData (tempURL , zoom );
162
+ return getImageData (tempURL , zoom , SWT . IMAGE_COPY );
147
163
}
148
164
if (zoom == 100 ) {
149
- return getImageData (tempURL , zoom );
165
+ return getImageData (tempURL );
150
166
}
151
167
URL xUrl = getxURL (tempURL , zoom );
152
168
if (xUrl != null ) {
153
- ImageData xdata = getImageData (xUrl , zoom );
169
+ ImageData xdata = getImageData (xUrl );
154
170
if (xdata != null ) {
155
171
return xdata ;
156
172
}
@@ -159,22 +175,35 @@ private static ImageData getImageData(String url, int zoom) {
159
175
if (xpath != null ) {
160
176
URL xPathUrl = getURL (xpath );
161
177
if (xPathUrl != null ) {
162
- return getImageData (xPathUrl , zoom );
178
+ return getImageData (xPathUrl );
163
179
}
164
180
}
165
181
}
166
182
return null ;
167
183
}
168
184
169
185
private static ImageData getImageData (URL url ) {
170
- return getImageData (url , 0 );
186
+ ImageData result = null ;
187
+ try (InputStream in = getStream (url )) {
188
+ if (in != null ) {
189
+ result = new ImageData (in );
190
+ }
191
+ } catch (SWTException e ) {
192
+ if (e .code != SWT .ERROR_INVALID_IMAGE ) {
193
+ throw e ;
194
+ // fall through otherwise
195
+ }
196
+ } catch (IOException e ) {
197
+ Policy .getLog ().log (new Status (IStatus .ERROR , Policy .JFACE , e .getLocalizedMessage (), e ));
198
+ }
199
+ return result ;
171
200
}
172
201
173
- private static ImageData getImageData (URL url , int zoom ) {
202
+ private static ImageData getImageData (URL url , int zoom , int flag ) {
174
203
ImageData result = null ;
175
204
try (InputStream in = getStream (url )) {
176
205
if (in != null ) {
177
- result = new ImageData (in , zoom );
206
+ result = new ImageData (in , zoom , flag );
178
207
}
179
208
} catch (SWTException e ) {
180
209
if (e .code != SWT .ERROR_INVALID_IMAGE ) {
@@ -187,6 +216,11 @@ private static ImageData getImageData(URL url, int zoom) {
187
216
return result ;
188
217
}
189
218
219
+ private static ImageData getCustomizedImageData (String url , int zoom , int flag ) {
220
+ URL tempURL = getURL (url );
221
+ return getImageData (tempURL , zoom , flag );
222
+ }
223
+
190
224
/**
191
225
* Returns a stream on the image contents. Returns null if a stream could
192
226
* not be opened.
0 commit comments