examples: annotate examples
[nit.git] / lib / mnit / display.nit
index 06a7572..a871b50 100644 (file)
@@ -17,7 +17,7 @@
 # Defines abstract display classes
 module display
 
-import input_events
+import mnit::input
 
 # Any class with a size
 interface Sized
@@ -28,17 +28,14 @@ end
 # General image class, will be specialized for each classes
 interface Image
        super Sized
+
        fun destroy is abstract
 
-       #var scale: Float is abstract
        # Scale this image when blit
-       fun scale: Float is abstract
-       fun scale=( v: Float ) is abstract
+       var scale: Float is abstract, writable
 
-       #var blended: Bool is abstract
        # Use blending on this image?
-       fun blended: Bool is abstract
-       fun blended=( v: Bool ) is abstract
+       var blended: Bool is abstract, writable
 
        # Get another image from this one
        fun subimage( x, y, w, h: Int ): Image is abstract
@@ -59,21 +56,37 @@ interface Drawable
        fun set_viewport( x, y, w, h: Int ) is abstract
 
        # Draw image on self, for top left position
-       fun blit( image: I, x, y: Int ) is abstract
+       fun blit(image: I, x, y: Numeric) is abstract
+
+       # Draw image on self, for top left position but scaled
+       # the width and height of the target rectangle is specified
+       fun blit_scaled(image: Image, x, y, w, h: Numeric)
+       do
+               var fx = x.to_f
+               var fy = y.to_f
+               var fx2 = fx + w.to_f
+               var fy2 = fy + h.to_f
+               blit_stretched(image, fx, fy, fx, fy2, fx2, fy2, fx2, fy)
+       end
 
        # Draw image, centered at position
-       fun blit_centered( image: I, x, y: Int ) is abstract
+       fun blit_centered(image: I, x, y: Numeric) is abstract
 
        # Draw image, centered at position but rotated
-       fun blit_rotated( image: I, x, y, angle: Float ) is abstract
+       fun blit_rotated(image: I, x, y: Numeric, angle: Float) is abstract
 
        # Draw image, centered, rotated and scaled
-       fun blit_rotated_scaled( image: I, x, y, angle, scale: Float ) is abstract
+       fun blit_rotated_scaled(image: I, x, y: Numeric, angle, scale: Float) is abstract
 
        # Draw image by specifying the positon of each image corners
-       # Corners are in clockwise order stating top right
-       # a is top right, b is bottom right, c is bottom left and d is top left
-       fun blit_stretched( image: I, ax, ay, bx, by, cx, cy, dx, dy: Float )
+       # Corners are in counter-clockwise order stating top left
+       # a is top left, b is bottom left, c is bottom right and d is top right
+       # ~~~raw
+       # a-d
+       # | |
+       # b-c
+       # ~~~
+       fun blit_stretched(image: I, ax, ay, bx, by, cx, cy, dx, dy: Numeric)
                is abstract
 
        # Clear entire window with given color
@@ -84,9 +97,6 @@ end
 interface Display
        super Sized
        super Drawable
-
-       # InputEvent type associated to this display type
-       type IE: InputEvent
 end
 
 # General drawable display image