// Path: src/main/java/info/deskchan/gui_javafx/Main.java
// public class Main implements Plugin {
// 	
// 	private static Main instance;
// 	private PluginProxyInterface pluginProxy;
// 	private Semaphore appInitSem = new Semaphore(0);
// 
// 	@Override
// 	public boolean initialize(PluginProxyInterface pluginProxy) {
// 		this.pluginProxy = pluginProxy;
// 		instance = this;
// 
// 		getProperties().load();
// 
// 		pluginProxy.setResourceBundle("info/deskchan/gui_javafx/strings");
// 		pluginProxy.setConfigField("name", pluginProxy.getString("plugin-name"));
// 		pluginProxy.getProperties().putIfHasNot("use-tray", true);
// 		pluginProxy.getProperties().putIfHasNot("skin.name", "illia");
// 		pluginProxy.getProperties().putIfHasNot("sprites-animation-delay", 20);
//         pluginProxy.getProperties().putIfHasNot("balloon.text-animation-delay", 50);
// 
// 		new Thread(() -> {
// 			try {
// 				App.run(PluginManager.getInstance().getArgs());
// 			} catch (NoClassDefFoundError e){
// 				pluginProxy.log("WARNING! JavaFX is not installed. GUI plugin is now closing. Please, install JavaFX.");
// 				appInitSem.release();
// 				instance = null;
// 			}
// 		}).start();
// 		try {
// 			appInitSem.acquire();
// 		} catch (InterruptedException e) {
// 			log(e);
// 		}
// 
// 		return instance != null;
// 	}
// 	
// 	@Override
// 	public void unload() {
// 		synchronized (this) {
// 			getProperties().save();
// 		}
// 
// 		if (SystemUtils.IS_OS_WINDOWS) {
// 			MouseEventNotificator.disableHooks();
// 		}
// 		try {
// 			Platform.exit();
// 		} catch (Exception e){
// 			log(e);
// 		}
// 	}
// 	
// 	public static Main getInstance() {
// 		return instance;
// 	}
// 
// 	public static PluginProxyInterface getPluginProxy() { return instance.pluginProxy; }
// 	
// 	Semaphore getAppInitSem() {
// 		return appInitSem;
// 	}
// 
// 	public void quit() {
// 		pluginProxy.sendMessage("core:quit", null);
// 	}
// 
// 	public static void log(String text) {
// 		getPluginProxy().log(text);
// 	}
// 
// 	public static void log(Throwable e) {
// 		getPluginProxy().log(e);
// 	}
// 
// 	public static String getString(String text){
// 		return getPluginProxy().getString(text);
// 	}
// 
// 	public static synchronized PluginProperties getProperties() {
// 		return getPluginProxy().getProperties();
// 	}
// 
// 	public static void runLater(Runnable runnable) {
// 		PlatformImpl.runLater(new Runnable() {
// 			@Override
// 			public void run() {
// 				try {
// 					runnable.run();
// 				} catch (Throwable e){
// 					getPluginProxy().log(e);
// 				}
// 			}
// 		});
// 	}
// 
// }


import info.deskchan.gui_javafx.Main;
import javafx.geometry.Insets;
import javafx.scene.Node;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import org.w3c.dom.Document;
import java.io.File;
import java.io.FileInputStream;
package info.deskchan.gui_javafx.panes.sprite_drawers;



public class ImageSprite extends Sprite {

    private String path = null;

    public static boolean canRead(File path){
        try {
            Image image = new Image(new FileInputStream(path));
            return image.getHeight() > 0 && image.getWidth() > 0;
        } catch (Exception e){
            Main.log(e);
            return false;
        }
    }

    public static ImageSprite create(File path) throws Exception {
        Image image = new Image(new FileInputStream(path));

        Insets margin;
// Path: src/main/java/info/deskchan/gui_javafx/Main.java
// public class Main implements Plugin {
// 	
// 	private static Main instance;
// 	private PluginProxyInterface pluginProxy;
// 	private Semaphore appInitSem = new Semaphore(0);
// 
// 	@Override
// 	public boolean initialize(PluginProxyInterface pluginProxy) {
// 		this.pluginProxy = pluginProxy;
// 		instance = this;
// 
// 		getProperties().load();
// 
// 		pluginProxy.setResourceBundle("info/deskchan/gui_javafx/strings");
// 		pluginProxy.setConfigField("name", pluginProxy.getString("plugin-name"));
// 		pluginProxy.getProperties().putIfHasNot("use-tray", true);
// 		pluginProxy.getProperties().putIfHasNot("skin.name", "illia");
// 		pluginProxy.getProperties().putIfHasNot("sprites-animation-delay", 20);
//         pluginProxy.getProperties().putIfHasNot("balloon.text-animation-delay", 50);
// 
// 		new Thread(() -> {
// 			try {
// 				App.run(PluginManager.getInstance().getArgs());
// 			} catch (NoClassDefFoundError e){
// 				pluginProxy.log("WARNING! JavaFX is not installed. GUI plugin is now closing. Please, install JavaFX.");
// 				appInitSem.release();
// 				instance = null;
// 			}
// 		}).start();
// 		try {
// 			appInitSem.acquire();
// 		} catch (InterruptedException e) {
// 			log(e);
// 		}
// 
// 		return instance != null;
// 	}
// 	
// 	@Override
// 	public void unload() {
// 		synchronized (this) {
// 			getProperties().save();
// 		}
// 
// 		if (SystemUtils.IS_OS_WINDOWS) {
// 			MouseEventNotificator.disableHooks();
// 		}
// 		try {
// 			Platform.exit();
// 		} catch (Exception e){
// 			log(e);
// 		}
// 	}
// 	
// 	public static Main getInstance() {
// 		return instance;
// 	}
// 
// 	public static PluginProxyInterface getPluginProxy() { return instance.pluginProxy; }
// 	
// 	Semaphore getAppInitSem() {
// 		return appInitSem;
// 	}
// 
// 	public void quit() {
// 		pluginProxy.sendMessage("core:quit", null);
// 	}
// 
// 	public static void log(String text) {
// 		getPluginProxy().log(text);
// 	}
// 
// 	public static void log(Throwable e) {
// 		getPluginProxy().log(e);
// 	}
// 
// 	public static String getString(String text){
// 		return getPluginProxy().getString(text);
// 	}
// 
// 	public static synchronized PluginProperties getProperties() {
// 		return getPluginProxy().getProperties();
// 	}
// 
// 	public static void runLater(Runnable runnable) {
// 		PlatformImpl.runLater(new Runnable() {
// 			@Override
// 			public void run() {
// 				try {
// 					runnable.run();
// 				} catch (Throwable e){
// 					getPluginProxy().log(e);
// 				}
// 			}
// 		});
// 	}
// 
// }


// Path: src/main/java/info/deskchan/gui_javafx/panes/sprite_drawers/ImageSprite.java
import info.deskchan.gui_javafx.Main;
import javafx.geometry.Insets;
import javafx.scene.Node;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import org.w3c.dom.Document;
import java.io.File;
import java.io.FileInputStream;

package info.deskchan.gui_javafx.panes.sprite_drawers;



public class ImageSprite extends Sprite {

    private String path = null;

    public static boolean canRead(File path){
        try {
            Image image = new Image(new FileInputStream(path));
            return image.getHeight() > 0 && image.getWidth() > 0;
        } catch (Exception e){
            Main.log(e);
            return false;
        }
    }

    public static ImageSprite create(File path) throws Exception {
        Image image = new Image(new FileInputStream(path));

        Insets margin;
        String textStyle;