From 5ec895542e75d668fdd7813079ee520251f114fa Mon Sep 17 00:00:00 2001 From: shagu Date: Wed, 3 Oct 2018 13:03:00 +0200 Subject: [PATCH] api: option to add shadows to frames --- api/api.lua | 87 ++++++++++++++++++++++++++++++------------------- api/config.lua | 2 ++ modules/gui.lua | 3 ++ 3 files changed, 58 insertions(+), 34 deletions(-) diff --git a/api/api.lua b/api/api.lua index ff0c91c9..5fb227bf 100644 --- a/api/api.lua +++ b/api/api.lua @@ -681,46 +681,65 @@ function pfUI.api.CreateBackdrop(f, inset, legacy, transp, backdropSetting) f:SetBackdrop(backdrop) f:SetBackdropColor(br, bg, bb, ba) f:SetBackdropBorderColor(er, eg, eb , ea) - return - end - - -- increase clickable area if available - if f.SetHitRectInsets then - f:SetHitRectInsets(-border,-border,-border,-border) - end - - -- use new backdrop behaviour - if not f.backdrop then - f:SetBackdrop(nil) - - local backdrop = pfUI.backdrop - local b = CreateFrame("Frame", nil, f) - if tonumber(border) > 1 then - local border = tonumber(border) - 1 - backdrop.insets = {left = -1, right = -1, top = -1, bottom = -1} - b:SetPoint("TOPLEFT", f, "TOPLEFT", -border, border) - b:SetPoint("BOTTOMRIGHT", f, "BOTTOMRIGHT", border, -border) - else - local border = tonumber(border) - backdrop.insets = {left = 0, right = 0, top = 0, bottom = 0} - b:SetPoint("TOPLEFT", f, "TOPLEFT", -border, border) - b:SetPoint("BOTTOMRIGHT", f, "BOTTOMRIGHT", border, -border) + else + -- increase clickable area if available + if f.SetHitRectInsets then + f:SetHitRectInsets(-border,-border,-border,-border) end - local level = f:GetFrameLevel() - if level < 1 then - b:SetFrameLevel(level) - else - b:SetFrameLevel(level - 1) + -- use new backdrop behaviour + if not f.backdrop then + f:SetBackdrop(nil) + + local backdrop = pfUI.backdrop + local b = CreateFrame("Frame", nil, f) + if tonumber(border) > 1 then + local border = tonumber(border) - 1 + backdrop.insets = {left = -1, right = -1, top = -1, bottom = -1} + b:SetPoint("TOPLEFT", f, "TOPLEFT", -border, border) + b:SetPoint("BOTTOMRIGHT", f, "BOTTOMRIGHT", border, -border) + else + local border = tonumber(border) + backdrop.insets = {left = 0, right = 0, top = 0, bottom = 0} + b:SetPoint("TOPLEFT", f, "TOPLEFT", -border, border) + b:SetPoint("BOTTOMRIGHT", f, "BOTTOMRIGHT", border, -border) + end + + local level = f:GetFrameLevel() + if level < 1 then + b:SetFrameLevel(level) + else + b:SetFrameLevel(level - 1) + end + + f.backdrop = b + b:SetBackdrop(backdrop) end - f.backdrop = b - b:SetBackdrop(backdrop) + local b = f.backdrop + b:SetBackdropColor(br, bg, bb, ba) + b:SetBackdropBorderColor(er, eg, eb , ea) end - local b = f.backdrop - b:SetBackdropColor(br, bg, bb, ba) - b:SetBackdropBorderColor(er, eg, eb , ea) + -- add shadow + if not f.backdrop_shadow and pfUI_config.appearance.border.shadow == "1" then + local size = 8 + local inset = size-1 + local anchor = f.backdrop or f + local intensity = tonumber(pfUI_config.appearance.border.shadow_intensity) + + f.backdrop_shadow = CreateFrame("Frame", nil, anchor) + f.backdrop_shadow:SetFrameStrata("BACKGROUND") + f.backdrop_shadow:SetFrameLevel(1) + + f.backdrop_shadow:SetPoint("TOPLEFT", anchor, "TOPLEFT", -inset, inset) + f.backdrop_shadow:SetPoint("BOTTOMRIGHT", anchor, "BOTTOMRIGHT", inset, -inset) + f.backdrop_shadow:SetBackdrop({ + edgeFile = "Interface\\AddOns\\pfUI\\img\\glow2", edgeSize = size, + insets = {left = 0, right = 0, top = 0, bottom = 0}, + }) + f.backdrop_shadow:SetBackdropBorderColor(0,0,0,intensity) + end end -- [ Bar Layout Options ] -- diff --git a/api/config.lua b/api/config.lua index 84fe423f..fc9c41c2 100644 --- a/api/config.lua +++ b/api/config.lua @@ -62,6 +62,8 @@ function pfUI:LoadConfig() pfUI:UpdateConfig("appearance", "border", "background", "0,0,0,1") pfUI:UpdateConfig("appearance", "border", "color", "0.2,0.2,0.2,1") + pfUI:UpdateConfig("appearance", "border", "shadow", "1") + pfUI:UpdateConfig("appearance", "border", "shadow_intensity", ".35") pfUI:UpdateConfig("appearance", "border", "default", "3") pfUI:UpdateConfig("appearance", "border", "actionbars", "-1") pfUI:UpdateConfig("appearance", "border", "unitframes", "-1") diff --git a/modules/gui.lua b/modules/gui.lua index 0854d7a4..7019c123 100644 --- a/modules/gui.lua +++ b/modules/gui.lua @@ -748,6 +748,9 @@ pfUI:RegisterModule("gui", function () CreateConfig(nil, this, T["Border Color"], C.appearance.border, "color", "color") CreateConfig(update["mapreveal"], this, T["Map Reveal Color"], C.appearance.worldmap, "mapreveal_color", "color") CreateConfig(nil, this) -- spacer + CreateConfig(nil, this, T["Enable Frame Shadow"], C.appearance.border, "shadow", "checkbox") + CreateConfig(nil, this, T["Frame Shadow Intensity"], C.appearance.border, "shadow_intensity", "dropdown", pfUI.gui.dropdowns.uf_debuff_indicator_size) + CreateConfig(nil, this) -- spacer CreateConfig(nil, this, T["Global Border Size"], C.appearance.border, "default") CreateConfig(nil, this, T["Action Bar Border Size"], C.appearance.border, "actionbars") CreateConfig(nil, this, T["Unit Frame Border Size"], C.appearance.border, "unitframes")