contrib/inkscape_tools: remove old_style constructor and whitespace error
[nit.git] / contrib / inkscape_tools / src / svg_to_png_and_nit.nit
index 35732ad..f718255 100644 (file)
@@ -38,7 +38,6 @@ class ImageSetSrc
        super Template
 
        var name: String
-       init(name: String) do self.name = name
 
        var attributes = new Array[String]
        var load_exprs = new Array[String]
@@ -103,6 +102,11 @@ if not errors.is_empty or opt_help.value then
        exit 1
 end
 
+if not "inkscape".program_is_in_path then
+       print "This tool needs the external program `inkscape`, make sure it is installed and in your PATH."
+       exit 1
+end
+
 var drawings = rest
 for drawing in drawings do
        if not drawing.file_exists then
@@ -136,7 +140,7 @@ for drawing in drawings do
        # Inkscape doesn't give us this information
        var page_width = -1
        var page_height = -1
-       var svg_file = new IFStream.open(drawing)
+       var svg_file = new FileReader.open(drawing)
        while not svg_file.eof do
                var line = svg_file.read_line
 
@@ -159,7 +163,7 @@ for drawing in drawings do
 
        # Query Inkscape
        var prog = "inkscape"
-       var proc = new IProcess.from_a(prog, ["--without-gui", "--query-all", drawing])
+       var proc = new ProcessReader.from_a(prog, ["--without-gui", "--query-all", drawing])
 
        var min_x = 1000000
        var min_y = 1000000
@@ -172,14 +176,14 @@ for drawing in drawings do
        while not proc.eof do
                var line = proc.read_line
                var words = line.split(",")
-               
+
                if words.length == 5 then
                        var id = words[0]
 
                        var x = words[1].to_f.floor.to_i
                        var y = words[2].to_f.floor.to_i
-                       var w = words[3].to_f.ceil.to_i
-                       var h = words[4].to_f.ceil.to_i
+                       var w = words[3].to_f.ceil.to_i+1
+                       var h = words[4].to_f.ceil.to_i+1
 
                        if id.has_prefix("0") then
                                var nit_name = id.substring_from(1)
@@ -200,7 +204,7 @@ for drawing in drawings do
        # Nit class
        var nit_class_name = drawing_name.chars.first.to_s.to_upper + drawing_name.substring_from(1) + "Images"
        var nit_src = new ImageSetSrc(nit_class_name)
-       nit_src.attributes.add "\tprivate var main_image: Image\n"
+       nit_src.attributes.add "\tprivate var main_image: Image is noinit\n"
        nit_src.load_exprs.add "\t\tmain_image = app.load_image(\"images/{drawing_name}.png\")\n"
 
        # Sort images by name, it prevents Array errors and looks better
@@ -229,13 +233,13 @@ for drawing in drawings do
                        nit_src.load_exprs.add "\t\t{nit_name}.add(main_image.subimage({x}, {y}, {w}, {h}))\n"
                else
                        # Single image
-                       nit_src.attributes.add "\tvar {nit_name}: Image\n"
+                       nit_src.attributes.add "\tvar {nit_name}: Image is noinit\n"
                        nit_src.load_exprs.add "\t\t{nit_name} = main_image.subimage({x}, {y}, {w}, {h})\n"
                end
        end
 
        # Output source file
-       var src_file = new OFStream.open("{src_path}/{drawing_name}.nit")
+       var src_file = new FileWriter.open("{src_path}/{drawing_name}.nit")
        nit_src.write_to(src_file)
        src_file.close