75 lines
2.7 KiB
Lua
75 lines
2.7 KiB
Lua
|
--- Text and font handling.
|
|||
|
-- @module Noble.Text
|
|||
|
Noble.Text = {}
|
|||
|
|
|||
|
--- Fonts
|
|||
|
--
|
|||
|
-- You can use these fonts in your project, or override them with your own if you wish.
|
|||
|
-- @section fonts
|
|||
|
-- @usage
|
|||
|
-- Noble.Text.FONT_SMALL = Graphics.font.new("assets/fonts/MySmallFont")
|
|||
|
-- Noble.Text.setFont(Noble.Text.FONT_SMALL)
|
|||
|
|
|||
|
--- The Playdate system font.
|
|||
|
Noble.Text.FONT_SYSTEM = Graphics.getSystemFont()
|
|||
|
--- <strong>Noble Sans</strong>: A sans-serif 8×9 font, with English and Japanese-Kana character sets.
|
|||
|
Noble.Text.FONT_SMALL = Graphics.font.new("libraries/noble/assets/fonts/NobleSans")
|
|||
|
--- <strong>Noble Slab</strong>: (This font is not ready yet!)
|
|||
|
Noble.Text.FONT_MEDIUM = Graphics.font.new("libraries/noble/assets/fonts/NobleSlab")
|
|||
|
--- <strong>Satchel Roughed</strong>: A sans-serif 17×14 rounded font, with an English character set.
|
|||
|
Noble.Text.FONT_LARGE = Graphics.font.new("libraries/noble/assets/fonts/SatchelRoughed")
|
|||
|
|
|||
|
--- Constants
|
|||
|
--@section constants
|
|||
|
|
|||
|
--- An alternate way to call Playdate SDK's `kTextAlignment.left`
|
|||
|
Noble.Text.ALIGN_LEFT = kTextAlignment.left
|
|||
|
--- An alternate way to call Playdate SDK's `kTextAlignment.right`
|
|||
|
Noble.Text.ALIGN_RIGHT = kTextAlignment.right
|
|||
|
--- An alternate way to call Playdate SDK's `kTextAlignment.center`
|
|||
|
Noble.Text.ALIGN_CENTER = kTextAlignment.center
|
|||
|
|
|||
|
local currentFont = Noble.Text.FONT_SYSTEM
|
|||
|
|
|||
|
|
|||
|
--- Functions
|
|||
|
--@section functions
|
|||
|
|
|||
|
---
|
|||
|
-- @return The currently set font.
|
|||
|
function Noble.Text.getCurrentFont()
|
|||
|
return currentFont
|
|||
|
end
|
|||
|
|
|||
|
--- Set the current font
|
|||
|
-- @param __font any
|
|||
|
-- @param __variant any
|
|||
|
function Noble.Text.setFont(__font, __variant)
|
|||
|
currentFont = __font
|
|||
|
local variant = __variant or Graphics.font.kVariantNormal
|
|||
|
Graphics.setFont(__font, variant)
|
|||
|
end
|
|||
|
|
|||
|
--- Abstracts multiple `playdate.text` drawing functions into one.
|
|||
|
-- @string __string Display text or localization key.
|
|||
|
-- @number __x
|
|||
|
-- @number __y
|
|||
|
-- @param[opt=Noble.Text.ALIGN_LEFT] __alignment Left, right, or center!
|
|||
|
-- @bool[opt=false] __localized If true, `__string` is a localization key rather than display text.
|
|||
|
-- @param[opt=Noble.Text.getCurrentFont()] __font A font to use. If not set, the `currentFont` is used. If set, the `currentFont` is not updated.
|
|||
|
function Noble.Text.draw(__string, __x, __y, __alignment, __localized, __font)
|
|||
|
local alignment = __alignment or Noble.Text.ALIGN_LEFT
|
|||
|
local localized = Utilities.handleOptionalBoolean(__localized, false)
|
|||
|
local string = __string or ""
|
|||
|
|
|||
|
if (__font ~= nil) then Graphics.setFont(__font) end -- Temporary font
|
|||
|
|
|||
|
if (localized) then
|
|||
|
Graphics.drawLocalizedTextAligned(string, __x, __y, alignment)
|
|||
|
else
|
|||
|
Graphics.drawTextAligned(string, __x, __y, alignment)
|
|||
|
end
|
|||
|
|
|||
|
if (__font ~= nil) then Graphics.setFont(currentFont) end -- Reset
|
|||
|
end
|