Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local gradient = {}
- gradient.Colour1 = Color3.fromRGB(22, 22, 22)
- gradient.Colour2 = Color3.fromRGB(255, 36, 134)
- local ts = game:GetService("TextService")
- local rs = game:GetService("RunService")
- function gradient:RectGradient(target, x, y, colour1, colour2)
- local frame = target
- local colourOne = colour1 or gradient.Colour1
- local colourTwo = colour2 or gradient.Colour2
- local position = UDim2.new(0, 0, 0, 0)
- local colours = {}
- for i = 0, x - 2 do
- if i == 0 or i == (x - 2) then
- local progress = (i/x)
- local nframe = Instance.new("Frame")
- nframe.Size = UDim2.new(0, 2, 0, y)
- nframe.Position = position + UDim2.new(0, i, 0, 0)
- nframe.BackgroundColor3 = colourOne:lerp(colourTwo, progress)
- nframe.Name = i
- nframe.BorderSizePixel = 0
- nframe.ZIndex = 3
- nframe.Parent = frame
- else
- local progress = (i/(x - 2))
- local colour = colourOne:lerp(colourTwo, progress)
- table.insert(colours, {Colour = colour, Size = 2})
- end
- end
- local lastDeltaT = 0
- local before = #colours
- for i,v in pairs(colours) do
- if i < #colours then
- local colourTwo = colours[i + 1].Colour
- local colourOne = v.Colour
- local deltaR = colourTwo.r - colourOne.r
- local deltaG = colourTwo.g - colourOne.g
- local deltaB = colourTwo.b - colourOne.b
- local deltaT = deltaR + deltaG + deltaB
- local deltaT2 = deltaT - lastDeltaT
- if deltaT2 > 0 then
- table.remove(colours, i + 1)
- v.Size = (2 * v.Size)
- end
- lastDeltaT = deltaT
- end
- end
- local after = #colours
- local deltaE = before - after
- print("Compressed",deltaE,"elements.")
- for i,v in pairs(colours) do
- print(i)
- local nframe = Instance.new("Frame")
- nframe.BackgroundColor3 = v.Colour
- nframe.BorderSizePixel = 0
- nframe.Size = UDim2.new(0, v.Size, 0, 2)
- nframe.Position = position
- nframe.ZIndex = 2
- nframe.Parent = frame
- local nframe2 = Instance.new("Frame")
- nframe2.BackgroundColor3 = v.Colour
- nframe2.BorderSizePixel = 0
- nframe2.Size = UDim2.new(0, v.Size, 0, 2)
- nframe2.Position = position + UDim2.new(0, 0, 1, -2)
- nframe2.ZIndex = 1
- nframe2.Parent = frame
- position = position + UDim2.new(0, (v.Size/2))
- end
- end
- function gradient:CircleGradient(target, radius, colour1, colour2)
- local frame = target
- local colourOne = colour1 or gradient.Colour1
- local colourTwo = colour2 or gradient.Colour2
- local xValues = {}
- local yValues = {}
- for i = -radius, 0, 0.05 do
- local progress = math.abs(i/radius)
- local y = math.sqrt(radius^2 - i^2)
- local yOpp = -y
- local nframe = Instance.new("Frame")
- nframe.Size = UDim2.new(0, 2, 0, 2)
- nframe.Position = UDim2.new(0.5, i, 0.5, y)
- nframe.Parent = frame
- nframe.BorderSizePixel = 0
- nframe.BackgroundColor3 = colourTwo:lerp(colourOne, progress)
- local nframe2 = Instance.new("Frame")
- nframe2.Size = UDim2.new(0, 2, 0, 2)
- nframe2.Position = UDim2.new(0.5, i, 0.5, yOpp)
- nframe2.Parent = frame
- nframe2.BorderSizePixel = 0
- nframe2.BackgroundColor3 = colourTwo:lerp(colourOne, progress)
- rs.Heartbeat:Wait()
- end
- for i = 0, radius, 0.05 do
- local progress = math.abs(i/radius)
- local y = math.sqrt(radius^2 - i^2)
- local yOpp = -y
- local nframe = Instance.new("Frame")
- nframe.Size = UDim2.new(0, 2, 0, 2)
- nframe.Position = UDim2.new(0.5, i, 0.5, y)
- nframe.Parent = frame
- nframe.BorderSizePixel = 0
- nframe.BackgroundColor3 = colourTwo:lerp(colourOne, progress)
- local nframe2 = Instance.new("Frame")
- nframe2.Size = UDim2.new(0, 2, 0, 2)
- nframe2.Position = UDim2.new(0.5, i, 0.5, yOpp)
- nframe2.Parent = frame
- nframe2.BorderSizePixel = 0
- nframe2.BackgroundColor3 = colourTwo:lerp(colourOne, progress)
- rs.Heartbeat:Wait()
- end
- end
- function gradient:TextGradient(target, text, textsize, font, colour1, colour2)
- local frame = target
- local string_to_output = text
- local total_size_x = 0
- local total_size_y = 0
- local text = {}
- local colourOne = colour1 or gradient.Colour1
- local colourTwo = colour2 or gradient.Colour2
- for i = 1, string_to_output:len() do
- local char = string_to_output:sub(i,i)
- local size_needed = ts:GetTextSize(char, textsize, font, frame.AbsoluteSize)
- table.insert(text, {[char] = size_needed})
- total_size_x = total_size_x + size_needed.X
- total_size_y = total_size_y
- end
- local position = UDim2.new(0.5, (-total_size_x/2), 0, 0)
- for i,v in pairs(text) do
- for i2,j in next, v do
- local progress = (i/#text)
- local char = i2
- local size = j
- local new_text = Instance.new("TextLabel")
- new_text.Text = char
- new_text.BackgroundTransparency = 1
- new_text.Position = position
- new_text.TextColor3 = colourOne:lerp(colourTwo, progress)
- new_text.Parent = frame
- new_text.Font = font
- new_text.TextSize = textsize
- new_text.Size = UDim2.new(0, size.X, 1, 0)
- position = position + UDim2.new(0, size.X, 0, 0)
- end
- end
- end
- function gradient:RenderGradient(target, x, colour1, colour2)
- local frame = target
- local x1 = x
- local fittable = math.floor(frame.AbsoluteSize.X/x1) - 1
- local colours = {}
- local lastDeltaT = 0
- local colourOne = colour1 or gradient.Colour1
- local colourTwo = colour2 or gradient.Colour2
- local position = UDim2.new(0, 0, 0, 0)
- for i = 0, fittable, 1 do
- local progress = (i/fittable)
- table.insert(colours, {Colour = colourOne:lerp(colourTwo, progress), Size = x})
- end
- local before = #colours
- for i,v in pairs(colours) do
- if i < #colours then
- local colourTwo = colours[i + 1].Colour
- local colourOne = v.Colour
- local deltaR = colourTwo.r - colourOne.r
- local deltaG = colourTwo.g - colourOne.g
- local deltaB = colourTwo.b - colourOne.b
- local deltaT = deltaR + deltaG + deltaB
- local deltaT2 = deltaT - lastDeltaT
- if deltaT2 > 0 then
- table.remove(colours, i + 1)
- v.Size = (2 * v.Size)
- end
- lastDeltaT = deltaT
- end
- end
- local after = #colours
- print("Compressed "..before-after.." elements.")
- for i,v in pairs(colours) do
- local nframe = Instance.new("Frame")
- nframe.BackgroundColor3 = v.Colour
- nframe.BorderSizePixel = 0
- nframe.Size = UDim2.new(0, v.Size, 1, 0)
- nframe.Position = position
- position = position + UDim2.new(0, v.Size)
- nframe.Parent = frame
- end
- end
- function gradient:ClearGradient(target)
- local frame = target
- local children = frame:GetChildren()
- for i,v in pairs(children) do
- v:Destroy()
- end
- end
- function gradient:SliderGradient(target, x, colour1, colour2)
- local children = target:GetChildren()
- for i,v in pairs(children) do
- v:Destroy()
- end
- local frame = target
- local current = x.Current
- local max = x.Max
- local size = x.Size
- local colourOne = colour1 or gradient.Colour1
- local colourTwo = colour2 or gradient.Colour2
- local count = 0
- local lastDeltaT = 0
- local position = UDim2.new(0, 0, 0, 0)
- local colours = {}
- if current > 0 then
- for i = 0, current - size, size do
- local progress = (i / max)
- local colour = colourOne:lerp(colourTwo, progress)
- table.insert(colours, {Colour = colour, Size = size})
- end
- end
- local before = #colours
- for i,v in pairs(colours) do
- if i < #colours then
- local colourTwo = colours[i + 1].Colour
- local colourOne = v.Colour
- local deltaR = colourTwo.r - colourOne.r
- local deltaG = colourTwo.g - colourOne.g
- local deltaB = colourTwo.b - colourOne.b
- local deltaT = deltaR + deltaG + deltaB
- local deltaT2 = deltaT - lastDeltaT
- if deltaT2 > 0 then
- table.remove(colours, i + 1)
- v.Size = (2 * v.Size)
- end
- lastDeltaT = deltaT
- end
- end
- local after = #colours
- local deltaE = before - after
- print("Compressed",deltaE,"elements.")
- for i,v in pairs(colours) do
- local nframe = Instance.new("Frame")
- nframe.BackgroundColor3 = v.Colour
- nframe.BorderSizePixel = 0
- nframe.Size = UDim2.new(0, v.Size, 1, 0)
- nframe.Position = position
- nframe.Parent = frame
- position = position + UDim2.new(0, v.Size)
- end
- if current > 0 then
- for i = 0, current - size, size do
- local progress = (i/max)
- local nframe = Instance.new("Frame")
- nframe.Size = UDim2.new(0, size, 1, 0)
- nframe.BorderSizePixel = 0
- nframe.BackgroundColor3 = colourOne:lerp(colourTwo, progress)
- nframe.Parent = frame
- nframe.Position = UDim2.new(0, count * size, 0, 0)
- count = count + 1
- end
- end
- end
- return gradient
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement