Libraries Update
This commit is contained in:
@@ -0,0 +1,106 @@
|
||||
|
||||
local detailsFramework = _G.DetailsFramework
|
||||
if (not detailsFramework or not DetailsFrameworkCanLoad) then
|
||||
return
|
||||
end
|
||||
|
||||
local CreateFrame = CreateFrame
|
||||
|
||||
---@class df_roundedpanel : frame, blz_backdrop, df_optionsmixin, df_titlebar
|
||||
---@field cornerTextures texture[]
|
||||
---@field edgeTextures texture[]
|
||||
---@field Constructor fun(self:df_roundedpanel)
|
||||
|
||||
---@class blz_backdrop : table
|
||||
---@field TopLeftCorner texture
|
||||
---@field TopRightCorner texture
|
||||
---@field BottomLeftCorner texture
|
||||
---@field BottomRightCorner texture
|
||||
---@field TopEdge texture
|
||||
---@field BottomEdge texture
|
||||
---@field LeftEdge texture
|
||||
---@field RightEdge texture
|
||||
---@field Center texture
|
||||
|
||||
detailsFramework.RoundedCornerPanelMixin = {
|
||||
Constructor = function(self)
|
||||
self.cornerTextures = {}
|
||||
self.edgeTextures = {}
|
||||
|
||||
local red, green, blue, alpha = detailsFramework:GetDefaultBackdropColor()
|
||||
|
||||
self:SetBackdrop({edgeFile = [[Interface\Buttons\WHITE8X8]], edgeSize = 1, bgFile = [[Interface\Tooltips\UI-Tooltip-Background]], tileSize = 64, tile = true})
|
||||
self:SetBackdropColor(red, green, blue, alpha * 0.95)
|
||||
self:SetBackdropBorderColor(0, 0, 0, 0.95)
|
||||
|
||||
self.__background = self:CreateTexture(nil, "border", nil, -6)
|
||||
self.__background:SetColorTexture(red, green, blue)
|
||||
self.__background:SetAllPoints()
|
||||
|
||||
self:SetSize(self.options.width, self.options.height)
|
||||
|
||||
if (self.options.use_titlebar) then
|
||||
detailsFramework:CreateTitleBar(self)
|
||||
self:SetTitle(self.options.title)
|
||||
end
|
||||
|
||||
if (self.options.use_scalebar) then
|
||||
detailsFramework:CreateScaleBar(self, self.options)
|
||||
self:SetScale(self.options.scale)
|
||||
end
|
||||
|
||||
--fill the corner and edge textures table
|
||||
for index, cornerName in ipairs({"TopLeftCorner", "TopRightCorner", "BottomLeftCorner", "BottomRightCorner"}) do
|
||||
local thisTexture = self[cornerName]
|
||||
self.cornerTextures[cornerName] = thisTexture
|
||||
thisTexture:SetTexture([[Interface\CHARACTERFRAME\TempPortraitAlphaMaskSmall]])
|
||||
|
||||
--local bIsOdd = index % 2 == 1
|
||||
--thisTexture:SetTexCoord(bIsOdd and 0 or 0.5, index < 3 and 0 or 0.5, bIsOdd and 0.5 or 1, index < 3 and 0.5 or 1)
|
||||
|
||||
if (cornerName == "TopLeftCorner") then
|
||||
thisTexture:SetTexCoord(0, 0.5, 0, 0.5)
|
||||
elseif (cornerName == "TopRightCorner") then
|
||||
thisTexture:SetTexCoord(0.5, 1, 0, 0.5)
|
||||
elseif (cornerName == "BottomLeftCorner") then
|
||||
thisTexture:SetTexCoord(0, 0.5, 0.5, 1)
|
||||
elseif (cornerName == "BottomRightCorner") then
|
||||
thisTexture:SetTexCoord(0.5, 1, 0.5, 1)
|
||||
end
|
||||
end
|
||||
|
||||
for _, edgeName in ipairs({"TopEdge", "BottomEdge", "LeftEdge", "RightEdge"}) do
|
||||
self.edgeTextures[edgeName] = self[edgeName]
|
||||
end
|
||||
end,
|
||||
}
|
||||
|
||||
local defaultOptions = {
|
||||
width = 200,
|
||||
height = 200,
|
||||
use_titlebar = true,
|
||||
use_scalebar = true,
|
||||
title = "",
|
||||
scale = 1,
|
||||
}
|
||||
|
||||
---create a regular panel with rounded corner
|
||||
---@param parent frame
|
||||
---@param name string|nil
|
||||
---@param optionsTable table|nil
|
||||
---@return df_roundedpanel
|
||||
function detailsFramework:CreateRoundedPanel(parent, name, optionsTable)
|
||||
---@type df_roundedpanel
|
||||
local newRoundedPanel = CreateFrame("frame", name, parent, "BackdropTemplate")
|
||||
newRoundedPanel:EnableMouse(true)
|
||||
newRoundedPanel.__dftype = "df_roundedpanel"
|
||||
|
||||
detailsFramework:Mixin(newRoundedPanel, detailsFramework.RoundedCornerPanelMixin)
|
||||
detailsFramework:Mixin(newRoundedPanel, detailsFramework.OptionsFunctions)
|
||||
|
||||
newRoundedPanel:BuildOptionsTable(defaultOptions, optionsTable or {})
|
||||
|
||||
newRoundedPanel:Constructor()
|
||||
|
||||
return newRoundedPanel
|
||||
end
|
||||
Reference in New Issue
Block a user