-# Nit module targeting the MNit framework
-class MnitImageSetSrc
- super ImageSetSrc
-
- redef fun rendering
- do
- # Known array of images
- var arrays_of_images = new Array[String]
-
- # Attributes of the generated class
- var attributes = new Array[String]
-
- # Statements for the generated `load_all` method
- var load_exprs = new Array[String]
-
- # Add images to Nit source file
- for image in images do
- # Adapt coordinates to new top left and scale
- var coordinates = document.coordinates(image)
-
- var nit_name = image.name
- var last_char = nit_name.chars.last
- if last_char.to_s.is_numeric then
- # Array of images
- # TODO support more than 10 images in an array
-
- nit_name = nit_name.substring(0, nit_name.length-1)
- if not arrays_of_images.has(nit_name) then
- # Create class attribute to store Array
- arrays_of_images.add(nit_name)
- attributes.add "\tvar {nit_name} = new Array[Image]\n"
- end
- load_exprs.add "\t\t{nit_name}.add(main_image.subimage({coordinates}))\n"
- else
- # Single image
- attributes.add "\tvar {nit_name}: Image is noinit\n"
- load_exprs.add "\t\t{nit_name} = main_image.subimage({coordinates})\n"
- end
- end
-
- add """
-# File generated by svg_to_png_and_nit, do not modify, redef instead
-
-import mnit::image_set
-
-class {{{document.nit_class_name}}}
- super ImageSet
-
- private var main_image: Image is noinit
-"""
- add_all attributes
- add """
-
- redef fun load_all(app: App)
- do
- main_image = app.load_image(\"images/{{{document.drawing_name}}}.png\")
-"""
- add_all load_exprs
- add """
- end
-end
-"""
- end
-end
-