Merge: Nitpretty: make the tool more customizable
[nit.git] / contrib / inkscape_tools / src / svg_to_png_and_nit.nit
index b902f08..2a94089 100644 (file)
@@ -68,14 +68,6 @@ end
        end
 end
 
-redef class String
-       fun to_i_strip_e: Int
-       do
-               if has_substring("e-", 0) then return 0
-               return to_i
-       end
-end
-
 redef class Int
        fun adapt(d: Int, scale: Float): Int
        do
@@ -111,6 +103,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
@@ -152,12 +149,12 @@ for drawing in drawings do
                        var words = line.split("=")
                        var n = words[1]
                        n = n.substring(1, n.length-2) # remove ""
-                       page_width = n.to_i_strip_e
+                       page_width = n.to_f.ceil.to_i
                else if page_height == -1 and line.search("height") != null then
                        var words = line.split("=")
                        var n = words[1]
                        n = n.substring(1, n.length-2) # remove ""
-                       page_height = n.to_i_strip_e
+                       page_height = n.to_f.ceil.to_i
                end
        end
        svg_file.close
@@ -184,10 +181,10 @@ for drawing in drawings do
                if words.length == 5 then
                        var id = words[0]
 
-                       var x = words[1].to_i_strip_e
-                       var y = words[2].to_i_strip_e
-                       var w = words[3].to_i_strip_e
-                       var h = words[4].to_i_strip_e
+                       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+1
+                       var h = words[4].to_f.ceil.to_i+1
 
                        if id.has_prefix("0") then
                                var nit_name = id.substring_from(1)
@@ -208,7 +205,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
@@ -237,7 +234,7 @@ 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