mirror of
https://github.com/Bluewhale1337/ElvUIModernized.git
synced 2026-07-27 08:24:44 +00:00
update pixelperfect
This commit is contained in:
+22
-18
@@ -7,8 +7,12 @@ local match = string.match
|
||||
--WoW API / Variables
|
||||
local GetCVar, SetCVar = GetCVar, SetCVar
|
||||
|
||||
local scale
|
||||
--Global variables that we don"t cache, list them here for the mikk"s Find Globals script
|
||||
-- GLOBALS: UIParent, WorldMapFrame
|
||||
|
||||
--Determine if Eyefinity is being used, setup the pixel perfect script.
|
||||
|
||||
local scale
|
||||
function E:UIScale(event)
|
||||
local width = E.screenwidth
|
||||
local height = E.screenheight
|
||||
@@ -26,24 +30,24 @@ function E:UIScale(event)
|
||||
end
|
||||
|
||||
if width < 1600 then
|
||||
E.lowversion = true
|
||||
E.lowversion = true
|
||||
elseif width >= 3840 and E.global.general.eyefinity then
|
||||
-- because some user enable bezel compensation, we need to find the real width of a single monitor.
|
||||
-- I don't know how it really work, but i'm assuming they add pixel to width to compensate the bezel. :P
|
||||
|
||||
-- HQ resolution
|
||||
if width >= 9840 then width = 3280 end -- WQSXGA
|
||||
if width >= 7680 and width < 9840 then width = 2560 end -- WQXGA
|
||||
if width >= 5760 and width < 7680 then width = 1920 end -- WUXGA & HDTV
|
||||
if width >= 5040 and width < 5760 then width = 1680 end -- WSXGA+
|
||||
if width >= 9840 then width = 3280 end -- WQSXGA
|
||||
if width >= 7680 and width < 9840 then width = 2560 end -- WQXGA
|
||||
if width >= 5760 and width < 7680 then width = 1920 end -- WUXGA & HDTV
|
||||
if width >= 5040 and width < 5760 then width = 1680 end -- WSXGA+
|
||||
|
||||
-- adding height condition here to be sure it work with bezel compensation because WSXGA+ and UXGA/HD+ got approx same width
|
||||
if width >= 4800 and width < 5760 and height == 900 then width = 1600 end -- UXGA & HD+
|
||||
|
||||
-- low resolution screen
|
||||
if width >= 4320 and width < 4800 then width = 1440 end -- WSXGA
|
||||
if width >= 4080 and width < 4320 then width = 1360 end -- WXGA
|
||||
if width >= 3840 and width < 4080 then width = 1224 end -- SXGA & SXGA (UVGA) & WXGA & HDTV
|
||||
if width >= 4320 and width < 4800 then width = 1440 end -- WSXGA
|
||||
if width >= 4080 and width < 4320 then width = 1360 end -- WXGA
|
||||
if width >= 3840 and width < 4080 then width = 1224 end -- SXGA & SXGA (UVGA) & WXGA & HDTV
|
||||
|
||||
-- yep, now set ElvUI to lower resolution if screen #1 width < 1600
|
||||
if width < 1600 then
|
||||
@@ -55,8 +59,8 @@ function E:UIScale(event)
|
||||
end
|
||||
|
||||
E.mult = 768/height/scale
|
||||
E.Spacing = E.PixelMode and 0 or E.mult
|
||||
E.Border = (E.PixelMode and E.mult or E.mult*2)
|
||||
E.Spacing = (E.PixelMode and 0) or E.mult
|
||||
E.Border = (E.PixelMode and E.mult) or E.mult*2
|
||||
|
||||
if E.global.general.autoScale then
|
||||
--Set UIScale, NOTE: SetCVar for UIScale can cause taints so only do this when we need to..
|
||||
@@ -77,8 +81,8 @@ function E:UIScale(event)
|
||||
-- if autoscale is off, find a new width value of E.UIParent for screen #1.
|
||||
if not E.global.general.autoScale or height > 1200 then
|
||||
local h = UIParent:GetHeight()
|
||||
local ratio = height / h
|
||||
local w = width / ratio
|
||||
local ratio = (height / h)
|
||||
local w = (width / ratio)
|
||||
|
||||
width = w
|
||||
height = h
|
||||
@@ -88,15 +92,15 @@ function E:UIScale(event)
|
||||
Dragging moveable frames outside the box and reloading the UI ensures that they are saving position correctly.
|
||||
]]
|
||||
else
|
||||
width = UIParent:GetWidth()
|
||||
height = UIParent:GetHeight()
|
||||
width, height = UIParent:GetWidth(), UIParent:GetHeight()
|
||||
end
|
||||
|
||||
E.UIParent:SetWidth(width)
|
||||
E.UIParent:SetHeight(height)
|
||||
E.UIParent:ClearAllPoints()
|
||||
E.UIParent:SetAllPoints(UIParent)
|
||||
|
||||
|
||||
--Calculate potential coordinate differences
|
||||
E.diffGetLeft = E:Round(abs(UIParent:GetLeft() - E.UIParent:GetLeft()))
|
||||
E.diffGetRight = E:Round(abs(UIParent:GetRight() - E.UIParent:GetRight()))
|
||||
E.diffGetTop = E:Round(abs(UIParent:GetTop() - E.UIParent:GetTop()))
|
||||
@@ -121,5 +125,5 @@ end
|
||||
|
||||
-- pixel perfect script of custom ui scale.
|
||||
function E:Scale(x)
|
||||
return E.mult*floor(x/E.mult+.5)
|
||||
end
|
||||
return E.mult * floor(x/E.mult+.5)
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user