vanilla-wow-addons – Rev 1

Subversion Repositories:
Rev:
-- Yarr, we be pirates! oSkin/Skinner code. Tired of fucking supporting both mods and a bastard child of the first at once.
local _G = getfenv(0)

local backdrop = {
        bgFile = "Interface\\ChatFrame\\ChatFrameBackground", tile = true, tileSize = 16,
        edgeFile = "Interface\\Tooltips\\UI-Tooltip-Border", edgeSize = 16,
        insets = {left = 4, right = 4, top = 4, bottom = 4},
}

local gradientOn = {"VERTICAL", .1, .1, .1, 0, .25, .25, .25, 1}
local gradientOff = {"VERTICAL", 0, 0, 0, 1, 0, 0, 0, 1}

-- Pickup settings from installed mods
local sdb = (oSkin and oSkin.db.profile or nil) or (Skinner and Skinner.db.profile or nil) or {
        BackdropBorder = {r = 0.5, g = 0.5, b = 0.5, a = 1},
        Backdrop = {r = 0, g = 0, b = 0, a = 0.9},
        FadeHeight = {enable = false, value = 500, force = false},
        Gradient = true,
}


function XLoot:Skin(frame, header, bba, ba, fh, bd)
        if not frame then return end
        
        frame:SetBackdrop(bd or backdrop)
        frame:SetBackdropBorderColor(sdb.BackdropBorder.r or .5, sdb.BackdropBorder.g or .5, sdb.BackdropBorder.b or .5, bba or sdb.BackdropBorder.a or 1)
        frame:SetBackdropColor(sdb.Backdrop.r or 0, sdb.Backdrop.g or 0, sdb.Backdrop.b or 0, ba or sdb.Backdrop.a or .9)

        if not frame.tfade then frame.tfade = frame:CreateTexture(nil, "BORDER") end
        frame.tfade:SetTexture("Interface\\ChatFrame\\ChatFrameBackground")

        if sdb.FadeHeight.enable and (sdb.FadeHeight.force or not fh) then 
                fh = sdb.FadeHeight.value <= math.ceil(frame:GetHeight()) and sdb.FadeHeight.value or math.ceil(frame:GetHeight())
        end 

        frame.tfade:SetPoint("TOPLEFT", frame, "TOPLEFT", 4, -4)
        if fh then frame.tfade:SetPoint("BOTTOMRIGHT", frame, "TOPRIGHT", -4, -fh)
        else frame.tfade:SetPoint("BOTTOMRIGHT", frame, "BOTTOMRIGHT", -4, 4) end

        frame.tfade:SetBlendMode("ADD")
        frame.tfade:SetGradientAlpha(unpack(sdb.Gradient and gradientOn or gradientOff)) 
        
        if header and _G[frame:GetName().."Header"] then
                _G[frame:GetName().."Header"]:Hide()
                _G[frame:GetName().."Header"]:SetPoint("TOP", frame, "TOP", 0, 7)
        end
        
end

function XLoot:QualityBorder(button)
        local frame = button.wrapper or button
        local border = frame:CreateTexture(button:GetName() .. "QualBorder", "OVERLAY")
        border:SetTexture("Interface\\Buttons\\UI-ActionButton-Border")
        border:SetBlendMode("ADD")
        border:SetAlpha(0.5)
        border:SetHeight(button:GetHeight()*1.8)
        border:SetWidth(button:GetWidth()*1.8)
        border:SetPoint("CENTER", frame, "CENTER", 0, 1)
        border:Hide()
        return border
end

function XLoot:QualityBorderResize(frame, hmult, ymult, hoff, yoff)
        local border = _G[frame:GetName().."QualBorder"]
        local width, height = frame:GetWidth(), frame:GetHeight()
        border:SetHeight(height*(ymult or 1.62))
        border:SetWidth(width*(hmult or 1.72))
        border:SetPoint("CENTER", frame, "CENTER", hoff or 5, yoff or 1)
end

function XLoot:BackdropFrame(frame, bgcolor, bordercolor)
        frame:SetBackdrop(      {       bgFile = "Interface/Tooltips/UI-Tooltip-Background",
                                                                                edgeFile = "Interface/Tooltips/UI-Tooltip-Border", 
                                                                                tile = true, tileSize = 32, edgeSize = 15, 
                                                                                insets = { left = 4, right = 4, top = 4, bottom = 4 }})
        frame:SetBackdropColor(unpack(bgcolor))
        frame:SetBackdropBorderColor(unpack(bordercolor))
end

function XLoot:ItemButtonWrapper(button, woff, hoff, edgesize, borderinset)
        local wrapper = button.wrapper or CreateFrame("Frame", button:GetName().."Wrapper", button)
        wrapper:SetWidth(button:GetWidth()+(woff or 10))
        wrapper:SetHeight(button:GetHeight()+(hoff or 10))
        wrapper:ClearAllPoints()
        wrapper:SetPoint("CENTER", button, "CENTER")
        self:Skin(wrapper)
        if edgesize then
                local backdrop = wrapper:GetBackdrop()
                backdrop.edgeSize = edgesize
                wrapper:SetBackdrop(backdrop)
        end
        wrapper:SetBackdropColor(1, 1, 1, 0)
        wrapper:SetBackdropBorderColor(.7, .7, .7, 1)
        wrapper:Show()
        return wrapper
end

-- Substitute oSkin function, full credit to oSkin devs :)
function XLoot:oSkinTooltipModded(frame)
        if not frame.tfade then frame.tfade = frame:CreateTexture(nil, "BORDER") end
        frame.tfade:SetTexture("Interface\\ChatFrame\\ChatFrameBackground")

        frame.tfade:SetPoint("TOPLEFT", frame, "TOPLEFT",1,-1)
        frame.tfade:SetPoint("BOTTOMRIGHT", frame, "BOTTOMRIGHT",-1,1)

        frame.tfade:SetBlendMode("ADD")
        frame.tfade.alphagradient = { "VERTICAL", .1, .1, .1, 0, .2, .2, .2, 0.6 }
        frame.tfade:SetGradientAlpha("VERTICAL", .1, .1, .1, 0, .2, .2, .2, 0.6)

        frame.tfade:SetPoint("TOPLEFT", frame, "TOPLEFT", 6, -6)
        frame.tfade:SetPoint("BOTTOMRIGHT", frame, "TOPRIGHT", -6, -30)
end