From 5987dd2b331f2fd127a3b1070a3157edfd51e783 Mon Sep 17 00:00:00 2001 From: shagu Date: Wed, 25 Aug 2021 18:21:45 +0200 Subject: [PATCH] core: add option to use blizzard borders --- api/api.lua | 25 ++++++++++++++++++++++--- api/config.lua | 2 ++ api/ui-widgets.lua | 5 +++++ modules/gui.lua | 1 + pfUI.lua | 16 ++++++++++++++++ 5 files changed, 46 insertions(+), 3 deletions(-) diff --git a/api/api.lua b/api/api.lua index 3fa341c4..8bacbc9b 100644 --- a/api/api.lua +++ b/api/api.lua @@ -983,6 +983,11 @@ function pfUI.api.CreateBackdrop(f, inset, legacy, transp, backdropSetting) border = inset end + -- detect if blizzard backdrops shall be used + local blizz = C.appearance.border.force_blizz == "1" and true or nil + backdrop = blizz and pfUI.backdrop_blizz_full or rawborder == 1 and pfUI.backdrop_thin or pfUI.backdrop + border = blizz and math.max(border, 3) or border + -- get the color settings br, bg, bb, ba = pfUI.api.GetStringColor(pfUI_config.appearance.border.background) er, eg, eb, ea = pfUI.api.GetStringColor(pfUI_config.appearance.border.color) @@ -991,7 +996,6 @@ function pfUI.api.CreateBackdrop(f, inset, legacy, transp, backdropSetting) -- use legacy backdrop handling if legacy then - backdrop = rawborder == 1 and pfUI.backdrop_thin or pfUI.backdrop if backdropSetting then f:SetBackdrop(backdropSetting) end f:SetBackdrop(backdrop) f:SetBackdropColor(br, bg, bb, ba) @@ -1019,10 +1023,25 @@ function pfUI.api.CreateBackdrop(f, inset, legacy, transp, backdropSetting) f.backdrop:SetPoint("TOPLEFT", f, "TOPLEFT", -border, border) f.backdrop:SetPoint("BOTTOMRIGHT", f, "BOTTOMRIGHT", border, -border) - f.backdrop:SetBackdrop(rawborder > 1 and pfUI.backdrop or pfUI.backdrop_thin) - + f.backdrop:SetBackdrop(backdrop) f.backdrop:SetBackdropColor(br, bg, bb, ba) f.backdrop:SetBackdropBorderColor(er, eg, eb , ea) + + if blizz then + if not f.backdrop_border then + local border = CreateFrame("Frame", nil, f) + border:SetFrameLevel(level + 1) + f.backdrop_border = border + end + + f.backdrop.SetBackdropBorderColor = function(self, r, g, b, a) + f.backdrop_border:SetBackdropBorderColor(r,g,b,a) + end + + f.backdrop_border:SetAllPoints(f.backdrop) + f.backdrop_border:SetBackdrop(pfUI.backdrop_blizz_border) + f.backdrop_border:SetBackdropBorderColor(er, eg, eb , ea) + end end end diff --git a/api/config.lua b/api/config.lua index 7c99ae55..47f65297 100644 --- a/api/config.lua +++ b/api/config.lua @@ -122,11 +122,13 @@ function pfUI:LoadConfig() pfUI:UpdateConfig("buffbar", "tdebuff", "whitelist", "") pfUI:UpdateConfig("buffbar", "tdebuff", "blacklist", "") + pfUI:UpdateConfig("appearance", "border", "background", "0,0,0,1") 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", "0") pfUI:UpdateConfig("appearance", "border", "shadow_intensity", ".35") pfUI:UpdateConfig("appearance", "border", "pixelperfect", "1") + pfUI:UpdateConfig("appearance", "border", "force_blizz", "0") pfUI:UpdateConfig("appearance", "border", "hidpi", "1") pfUI:UpdateConfig("appearance", "border", "default", "3") pfUI:UpdateConfig("appearance", "border", "nameplates", "-1") diff --git a/api/ui-widgets.lua b/api/ui-widgets.lua index 14b98875..822d606f 100644 --- a/api/ui-widgets.lua +++ b/api/ui-widgets.lua @@ -874,6 +874,11 @@ function pfUI.api.SkinCheckbox(frame, size) end CreateBackdrop(frame) SetAllPointsOffset(frame.backdrop, frame, 4) + + if frame.backdrop_border then + -- make sure the blizzard border doesn't overlap the checkmark + frame.backdrop_border:SetFrameLevel(frame.backdrop:GetFrameLevel()) + end end function pfUI.api.SkinDropDown(frame, cr, cg, cb, useSmall) diff --git a/modules/gui.lua b/modules/gui.lua index 5422fa63..4867c4cf 100644 --- a/modules/gui.lua +++ b/modules/gui.lua @@ -1504,6 +1504,7 @@ pfUI:RegisterModule("gui", "vanilla:tbc", function () CreateConfig(nil, T["Enable Frame Shadow"], C.appearance.border, "shadow", "checkbox") CreateConfig(nil, T["Frame Shadow Intensity"], C.appearance.border, "shadow_intensity", "dropdown", pfUI.gui.dropdowns.uf_debuff_indicator_size) CreateConfig(nil) -- spacer + CreateConfig(nil, T["Force Blizzard Borders (|cffffaaaaExperimental|r)"], C.appearance.border, "force_blizz", "checkbox") CreateConfig(nil, T["Enable Pixel Perfect Borders"], C.appearance.border, "pixelperfect", "checkbox") CreateConfig(nil, T["Scale Border On HiDPI Displays"], C.appearance.border, "hidpi", "checkbox") CreateConfig(nil) -- spacer diff --git a/pfUI.lua b/pfUI.lua index a3674c7e..4d5c487c 100644 --- a/pfUI.lua +++ b/pfUI.lua @@ -317,6 +317,22 @@ pfUI.backdrop_shadow = { insets = {left = 0, right = 0, top = 0, bottom = 0}, } +pfUI.backdrop_blizz_bg = { + bgFile = "Interface\\BUTTONS\\WHITE8X8", tile = true, tileSize = 8, + insets = { left = 3, right = 3, top = 3, bottom = 3 } +} + +pfUI.backdrop_blizz_border = { + edgeFile = "Interface\\Tooltips\\UI-Tooltip-Border", edgeSize = 12, + insets = { left = 3, right = 3, top = 3, bottom = 3 } +} + +pfUI.backdrop_blizz_full = { + bgFile = "Interface\\BUTTONS\\WHITE8X8", tile = true, tileSize = 8, + edgeFile = "Interface\\Tooltips\\UI-Tooltip-Border", edgeSize = 12, + insets = { left = 3, right = 3, top = 3, bottom = 3 } +} + message = function(msg) DEFAULT_CHAT_FRAME:AddMessage("|cffcccc33INFO: |cffffff55" .. ( msg or "nil" )) end