local _, ns = ... local SWATCH = [=[Interface\ChatFrame\ChatFrameColorSwatch]=] local CHECKERS = [=[Tileset\Generic\Checkers]=] local function OnClick(self) HideUIPanel(ColorPickerFrame) local origR, origG, origB, origA = unpack(pMinimapDB.minimap.borderColors) ColorPickerFrame:SetFrameStrata('FULLSCREEN_DIALOG') ColorPickerFrame.func = function() local r, g, b = ColorPickerFrame:GetColorRGB() local a = 1 - OpacitySliderFrame:GetValue() self.swatch:SetVertexColor(r, g, b, a) pMinimapDB.minimap.borderColors = {r, g, b, a} ns.UpdateCore() end ColorPickerFrame.hasOpacity = true ColorPickerFrame.opacityFunc = function() local r, g, b = ColorPickerFrame:GetColorRGB() local a = 1 - OpacitySliderFrame:GetValue() self.swatch:SetVertexColor(r, g, b, a) pMinimapDB.minimap.borderColors = {r, g, b, a} ns.UpdateCore() end ColorPickerFrame.cancelFunc = function() self.swatch:SetVertexColor(origR, origG, origB, origA) pMinimapDB.minimap.borderColors = {origR, origG, origB, origA} ns.UpdateCore() end ColorPickerFrame.opacity = 1 - origA ColorPickerFrame:SetColorRGB(origR, origG, origB) ShowUIPanel(ColorPickerFrame) end function ns.palette(parent, str, default, ...) local container = CreateFrame('Button', nil, parent) container:SetPoint(...) container:SetSize(22, 22) container:SetHitRectInsets(0, -100, 0, 0) container:SetScript('OnClick', OnClick) container:EnableMouse(true) local swatch = container:CreateTexture(nil, 'OVERLAY') swatch:SetAllPoints() swatch:SetTexture(SWATCH) swatch:SetVertexColor(unpack(default)) container.swatch = swatch local background = container:CreateTexture(nil, 'BACKGROUND') background:SetPoint('CENTER') background:SetSize(18, 18) background:SetTexture(1, 1, 1) local checkers = container:CreateTexture(nil, 'BACKGROUND') checkers:SetPoint('CENTER') checkers:SetSize(17, 17) checkers:SetTexture(CHECKERS) checkers:SetTexCoord(0.25, 0, 0.5, 0.25) checkers:SetDesaturated(true) checkers:SetVertexColor(1, 1, 1, 0.75) local label = container:CreateFontString(nil, 'OVERLAY', 'GameFontHighlight') label:SetPoint('LEFT', swatch, 'RIGHT', 2, 0) label:SetHeight(24) label:SetJustifyH('LEFT') label:SetText(str) return container end