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.

101 lines
2.4 KiB

--[[
This file is part of 'Masque', an add-on for World of Warcraft. For bug reports,
suggestions and license information, please visit https://github.com/SFX-WoW/Masque.
* File...: Core\Regions\SlotIcon.lua
* Author.: StormFX
'SlotIcon' Region
]]
local _, Core = ...
----------------------------------------
-- Lua API
---
local error, type = error, type
----------------------------------------
-- Internal
---
-- @ Core\Utility
local GetColor, GetSize, GetTexCoords = Core.GetColor, Core.GetSize, Core.GetTexCoords
local SetPoints = Core.SetPoints
-- @ Core\Regions\Mask
local SkinMask = Core.SkinMask
----------------------------------------
-- Locals
---
local DEF_TEXTURE = [[Interface\Icons\INV_Misc_Bag_08]]
----------------------------------------
-- Functions
---
-- Skins or creates the 'SlotIcon' region of a button.
local function AddSlotIcon(Button, Skin, xScale, yScale)
local Region = Button.__MSQ_SlotIcon
if not Region then
Region = Button:CreateTexture()
Button.__MSQ_SlotIcon = Region
end
Region:SetParent(Button)
Region:SetTexture(Skin.Texture or DEF_TEXTURE)
Region:SetTexCoord(GetTexCoords(Skin.TexCoords))
Region:SetBlendMode(Skin.BlendMode or "BLEND")
Region:SetVertexColor(GetColor(Skin.Color))
Region:SetDrawLayer(Skin.DrawLayer or "BACKGROUND", Skin.DrawLevel or 0)
Region:SetSize(GetSize(Skin.Width, Skin.Height, xScale, yScale))
SetPoints(Region, Button, Skin, nil, Skin.SetAllPoints)
SkinMask(Region, Button, Skin, xScale, yScale)
end
-- Removes the 'SlotIcon' region from a button.
local function RemoveSlotIcon(Button)
local Region = Button.__MSQ_SlotIcon
if Region then
Region:SetTexture()
Region:Hide()
Button.__MSQ_SlotIcon = nil
end
end
----------------------------------------
-- Core
---
-- Skins or removes a 'SlotIcon' region.
function Core.SkinSlotIcon(Enabled, Button, Skin, xScale, yScale)
if Enabled and not Skin.Hide and Skin.Texture then
AddSlotIcon(Button, Skin, xScale, yScale)
else
RemoveSlotIcon(Button)
end
end
----------------------------------------
-- API
---
-- Retrieves the 'SlotIcon' region of a button.
function Core.API:GetSlotIcon(Button)
if type(Button) ~= "table" then
if Core.Debug then
error("Bad argument to API method 'GetGloss'. 'Button' must be a button object.", 2)
end
return
end
return Button.__MSQ_SlotIcon
end