You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

94 lines
2.9 KiB

-- ========================================================================= --
-- SylingTracker --
-- https://www.curseforge.com/wow/addons/sylingtracker --
-- --
-- Repository: --
-- https://github.com/Skamer/SylingTracker --
-- --
-- ========================================================================= --
Syling "SylingTracker.UI.SLTFontString" ""
-- ========================================================================= --
namespace "SLT"
-- ========================================================================= --
FetchFontObject = Fonts.FetchFontObject
ResetStyles = Utils.ResetStyles
__Recyclable__ "SylingTracker_SLTFontString%i"
class "SLTFontString" (function(_ENV)
inherit "FontString"
_TextRaw = setmetatable({}, { __mode = "k"})
enum "TextTransformType" {
"NONE",
"LOWERCASE",
"UPPERCASE",
}
property "TextTransform" {
type = TextTransformType,
default = TextTransformType.NONE,
handler = function(self) self:SetText(_TextRaw[self] or self:GetText()) end
}
property "SharedMediaFont" {
type = FontType,
handler = function(self, font) self:SetSharedMediaFont(font) end
}
-- property "SharedMediaFont"
function SetSharedMediaFont(self, font)
local _, fontHeight, flags = self:GetFont()
if font.outline then
if font.outline == "NORMAL" then
flags = "OUTLINE"
elseif font.outline == "THICK" then
flags = "THICKOUTLINE"
end
end
if font.monochrome then
if flags then
flags = flags..",MONOCHROME"
else
flags = "MONOCHROME"
end
end
if font.height then
fontHeight = font.height
end
local ft = _LibSharedMedia:Fetch("font", font.font)
return self:SetFontObject(FetchFontObject(ft, fontHeight or 10, flags))
end
function SetText(self, text)
_TextRaw[self] = text
if text then
if self.TextTransform == TextTransformType.LOWERCASE then
text = text:lower()
elseif self.TextTransform == TextTransformType.UPPERCASE then
text = text:upper()
end
end
super.SetText(self, text)
end
function OnRelease(self)
self:Hide()
self:ClearAllPoints()
self:SetParent()
ResetStyles(self)
end
function OnAcquire(self)
self:Show()
end
end)