public static Font getFont(
     String name, int size, int style, boolean strikeout, boolean underline) {
   if (name.equals("Arial") && SWTResourceManager.isMac()) {
     size += 2;
   }
   String fontName = name + "|" + size + "|" + style + "|" + strikeout + "|" + underline;
   if (resources.containsKey(fontName)) return (Font) resources.get(fontName);
   FontData fd = new FontData(name, size, style);
   if (strikeout || underline) {
     try {
       Class<?> lfCls = Class.forName("org.eclipse.swt.internal.win32.LOGFONT");
       Object lf = FontData.class.getField("data").get(fd);
       if (lf != null && lfCls != null) {
         if (strikeout) lfCls.getField("lfStrikeOut").set(lf, new Byte((byte) 1));
         if (underline) lfCls.getField("lfUnderline").set(lf, new Byte((byte) 1));
       }
     } catch (Throwable e) {
       System.err.println(
           "Unable to set underline or strikeout" + " (probably on a non-Windows platform). " + e);
     }
   }
   Font font = new Font(Display.getDefault(), fd);
   resources.put(fontName, font);
   return font;
 }
 public static Image getImage(String url) {
   try {
     url = url.replace('\\', '/');
     if (url.startsWith("/")) url = url.substring(1);
     if (resources.containsKey(url)) return (Image) resources.get(url);
     Image img =
         new Image(
             Display.getDefault(), instance.getClass().getClassLoader().getResourceAsStream(url));
     if (img != null) resources.put(url, img);
     return img;
   } catch (Exception e) {
     System.err.println("SWTResourceManager.getImage: Error getting image " + url + ", " + e);
     return null;
   }
 }