X-Git-Url: http://nitlanguage.org diff --git a/lib/mnit/tileset.nit b/lib/mnit/tileset.nit index 41d8a47..3193993 100644 --- a/lib/mnit/tileset.nit +++ b/lib/mnit/tileset.nit @@ -15,9 +15,9 @@ # Manage images that are tileset or glyphset (for bitmap fonts) module tileset -import mnit_display +import mnit::display -# Efficienly retrieve tiles in a big image +# Efficiently retrieve tiles in a big image class TileSet # The image containing the tileset var image: Image @@ -63,20 +63,20 @@ end class TileSetFont super TileSet - # Each caracter in the image + # Each character in the image # in left->right, then top->bottom order # Use space (' ') for holes in the tileset var chars: String # Additional space to insert horizontally between characters - # A negave value will display tile overlaped + # A negative value will display tile overlapped var hspace: Numeric = 0.0 is writable # Additional space to insert vertically between characters - # A negave value will display tile overlaped + # A negative value will display tile overlapped var vspace: Numeric = 0.0 is writable - # The glyph (tile) associated to the caracter `c` according to `chars` + # The glyph (tile) associated to the character `c` according to `chars` # Returns null if `c` is not in `chars` fun char(c: Char): nullable Image do @@ -88,6 +88,18 @@ class TileSetFont # Distance between the beginning of a letter tile and the beginning of the next letter tile fun advance: Numeric do return width.add(hspace) + # Distance between the beginning and the end of the longest line of `text` + fun text_width(text: String): Numeric + do + var lines = text.split('\n') + if lines.is_empty then return 0 + + var longest = 0 + for line in lines do longest = longest.max(line.length) + + return longest.mul(advance) + end + # Distance between the top of the first line to the bottom of the last line in `text` fun text_height(text: Text): Numeric do