From 2e96777e557425912e6c2c4adca12e81cda111a2 Mon Sep 17 00:00:00 2001 From: Darthpred Date: Sat, 23 Jul 2016 14:44:39 +0300 Subject: [PATCH] Sick shit --- ElvUI_SLE/core/toolkit.lua | 127 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 127 insertions(+) diff --git a/ElvUI_SLE/core/toolkit.lua b/ElvUI_SLE/core/toolkit.lua index c1beb0c..09501c6 100644 --- a/ElvUI_SLE/core/toolkit.lua +++ b/ElvUI_SLE/core/toolkit.lua @@ -417,6 +417,33 @@ function SLE:UpdateAll() collectgarbage('collect'); end +local function GetTemplate(t, isPixelPerfectForced) + backdropa = 1 + + if t == "ClassColor" then + if CUSTOM_CLASS_COLORS then + borderr, borderg, borderb = CUSTOM_CLASS_COLORS[E.myclass].r, CUSTOM_CLASS_COLORS[E.myclass].g, CUSTOM_CLASS_COLORS[E.myclass].b + else + borderr, borderg, borderb = RAID_CLASS_COLORS[E.myclass].r, RAID_CLASS_COLORS[E.myclass].g, RAID_CLASS_COLORS[E.myclass].b + end + if t ~= "Transparent" then + backdropr, backdropg, backdropb = unpack(E["media"].backdropcolor) + else + backdropr, backdropg, backdropb, backdropa = unpack(E["media"].backdropfadecolor) + end + elseif t == "Transparent" then + borderr, borderg, borderb = unpack(E["media"].bordercolor) + backdropr, backdropg, backdropb, backdropa = unpack(E["media"].backdropfadecolor) + else + borderr, borderg, borderb = unpack(E["media"].bordercolor) + backdropr, backdropg, backdropb = unpack(E["media"].backdropcolor) + end + + if(isPixelPerfectForced) then + borderr, borderg, borderb = 0, 0, 0 + end +end + --New API local function LevelUpBG(frame, topcolor, bottomcolor) frame.bg = frame:CreateTexture(nil, 'BACKGROUND') @@ -479,10 +506,110 @@ local function LevelUpBG(frame, topcolor, bottomcolor) end end +local function SetTemplateSLE(f, t, glossTex, ignoreUpdates, forcePixelMode) + GetTemplate(t, f.forcePixelMode or forcePixelMode) + + if(t) then + f.template = t + end + + if(glossTex) then + f.glossTex = glossTex + end + + if(ignoreUpdates) then + f.ignoreUpdates = ignoreUpdates + end + + if(forcePixelMode) then + f.forcePixelMode = forcePixelMode + end + if t ~= "NoDrop" then + if E.private.general.pixelPerfect or f.forcePixelMode then + f:SetBackdrop({ + bgFile = E["media"].blankTex, + edgeFile = E["media"].blankTex, + tile = false, tileSize = 0, edgeSize = E.mult, + insets = { left = 0, right = 0, top = 0, bottom = 0} + }) + else + f:SetBackdrop({ + bgFile = E["media"].blankTex, + edgeFile = E["media"].blankTex, + tile = false, tileSize = 0, edgeSize = E.mult, + insets = { left = -E.mult, right = -E.mult, top = -E.mult, bottom = -E.mult} + }) + end + + if not f.backdropTexture and t ~= 'Transparent' then + local backdropTexture = f:CreateTexture(nil, "BORDER") + backdropTexture:SetDrawLayer("BACKGROUND", 1) + f.backdropTexture = backdropTexture + elseif t == 'Transparent' then + f:SetBackdropColor(backdropr, backdropg, backdropb, backdropa) + + if f.backdropTexture then + f.backdropTexture:Hide() + f.backdropTexture = nil + end + + if not f.oborder and not f.iborder and not E.private.general.pixelPerfect and not f.forcePixelMode then + local border = CreateFrame("Frame", nil, f) + border:SetInside(f, E.mult, E.mult) + border:SetBackdrop({ + edgeFile = E["media"].blankTex, + edgeSize = E.mult, + insets = { left = E.mult, right = E.mult, top = E.mult, bottom = E.mult } + }) + border:SetBackdropBorderColor(0, 0, 0, 1) + f.iborder = border + + if f.oborder then return end + local border = CreateFrame("Frame", nil, f) + border:SetOutside(f, E.mult, E.mult) + border:SetFrameLevel(f:GetFrameLevel() + 1) + border:SetBackdrop({ + edgeFile = E["media"].blankTex, + edgeSize = E.mult, + insets = { left = E.mult, right = E.mult, top = E.mult, bottom = E.mult } + }) + border:SetBackdropBorderColor(0, 0, 0, 1) + f.oborder = border + end + end + + if f.backdropTexture then + f:SetBackdropColor(0, 0, 0, backdropa) + f.backdropTexture:SetVertexColor(backdropr, backdropg, backdropb) + f.backdropTexture:SetAlpha(backdropa) + if glossTex then + f.backdropTexture:SetTexture(E["media"].glossTex) + else + f.backdropTexture:SetTexture(E["media"].blankTex) + end + + if(f.forcePixelMode or forcePixelMode) then + f.backdropTexture:SetInside(f, E.mult, E.mult) + else + f.backdropTexture:SetInside(f) + end + end + else + f:SetBackdrop(nil) + if f.backdropTexture then f.backdropTexture:SetTexture(nil) end + end + f:SetBackdropBorderColor(borderr, borderg, borderb) + + if not f.ignoreUpdates and not f.forcePixelMode then + E["frames"][f] = true + end +end + --Add API local function addapi(object) local mt = getmetatable(object).__index if not object.LevelUpBG then mt.LevelUpBG = LevelUpBG end + if not object.SetTemplateSLE then mt.SetTemplateSLE = SetTemplateSLE end end local handled = {["Frame"] = true} -- 1.7.9.5