HeapsIO / heaps

Heaps : Haxe Game Framework
http://heaps.io
MIT License
3.19k stars 337 forks source link

SVG to PNG conversion tries to call Windows EXE on Linux #1223

Open inert-aesthetic opened 1 month ago

inert-aesthetic commented 1 month ago

Hello,

When trying to load an SVG resource, I encounter an error saying that msdfgen.exe could not be found. This seems to originate from this line: https://github.com/HeapsIO/heaps/blob/master/hxd/fs/Convert.hx#L404

command("msdfgen.exe", ["-svg", srcPath, "-size", '$size', '$size', "-autoframe", "-o", dstPath]);

To account for Linux systems, something like this could be considered.

class ConvertSVGToMSDF extends Convert {
    override function convert() {
        var size = hasParam("size") ? getParam("size") : 128;
        switch(Sys.systemName()){
            case "Windows":
                command("msdfgen.exe", ["-svg", srcPath, "-size", '$size', '$size', "-autoframe", "-o", dstPath]);
            case "Linux":
                command("inkscape", [srcPath, "-o", dstPath]);
            default:
                throw("No SVG to PNG converter specified.");
        }
    }

    static var _ = Convert.register(new ConvertSVGToMSDF("svg", "png"));
}

This is sufficient for my use-case but doesn't take size into account, and does throw an access violation from Hashlink.

inert-aesthetic commented 1 month ago

The access violation was a VSHaxe issue and is now not occurring.

The suggested code works well on systems with Inkscape installed.