# Defines abstract display classes
module display
-import input_events
+import mnit::input
# Any class with a size
interface Sized
# 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
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
interface Display
super Sized
super Drawable
-
- # InputEvent type associated to this display type
- type IE: InputEvent
end
# General drawable display image