mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-17 21:53:46 +03:00
Upload
This commit is contained in:
124
lua/vgui/dcolorcube.lua
Normal file
124
lua/vgui/dcolorcube.lua
Normal file
@@ -0,0 +1,124 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
|
||||
local PANEL = {}
|
||||
|
||||
AccessorFunc( PANEL, "m_Hue", "Hue" )
|
||||
AccessorFunc( PANEL, "m_BaseRGB", "BaseRGB" )
|
||||
AccessorFunc( PANEL, "m_OutRGB", "RGB" )
|
||||
AccessorFunc( PANEL, "m_DefaultColor", "DefaultColor" )
|
||||
|
||||
function PANEL:Init()
|
||||
|
||||
self:SetImage( "vgui/minixhair" )
|
||||
self.Knob:NoClipping( false )
|
||||
|
||||
self.BGSaturation = vgui.Create( "DImage", self )
|
||||
self.BGSaturation:SetImage( "vgui/gradient-r" )
|
||||
|
||||
self.BGValue = vgui.Create( "DImage", self )
|
||||
self.BGValue:SetImage( "vgui/gradient-d" )
|
||||
self.BGValue:SetImageColor( color_black )
|
||||
|
||||
self:SetBaseRGB( Color( 255, 0, 0 ) )
|
||||
self:SetRGB( Color( 255, 0, 0 ) )
|
||||
self:SetColor( Color( 255, 0, 0 ) )
|
||||
|
||||
self:SetLockX( nil )
|
||||
self:SetLockY( nil )
|
||||
self:SetDefaultColor( color_white )
|
||||
|
||||
end
|
||||
|
||||
function PANEL:PerformLayout( w, h )
|
||||
|
||||
DSlider.PerformLayout( self, w, h )
|
||||
|
||||
self.BGSaturation:StretchToParent( 0, 0, 0, 0 )
|
||||
self.BGSaturation:SetZPos( -9 )
|
||||
|
||||
self.BGValue:StretchToParent( 0, 0, 0, 0 )
|
||||
self.BGValue:SetZPos( -8 )
|
||||
|
||||
end
|
||||
|
||||
function PANEL:ResetToDefaultValue()
|
||||
|
||||
self:SetColor( self:GetDefaultColor() )
|
||||
self:OnUserChanged( self.m_OutRGB )
|
||||
|
||||
end
|
||||
|
||||
|
||||
function PANEL:Paint()
|
||||
|
||||
surface.SetDrawColor( self.m_BaseRGB.r, self.m_BaseRGB.g, self.m_BaseRGB.b, 255 )
|
||||
self:DrawFilledRect()
|
||||
|
||||
end
|
||||
|
||||
function PANEL:PaintOver()
|
||||
|
||||
surface.SetDrawColor( 0, 0, 0, 250 )
|
||||
self:DrawOutlinedRect()
|
||||
|
||||
end
|
||||
|
||||
function PANEL:TranslateValues( x, y )
|
||||
|
||||
self:UpdateColor( x, y )
|
||||
self:OnUserChanged( self.m_OutRGB )
|
||||
|
||||
return x, y
|
||||
|
||||
end
|
||||
|
||||
function PANEL:UpdateColor( x, y )
|
||||
|
||||
x = x or self:GetSlideX()
|
||||
y = y or self:GetSlideY()
|
||||
|
||||
local value = 1 - y
|
||||
local saturation = 1 - x
|
||||
local h = ColorToHSV( self.m_BaseRGB )
|
||||
|
||||
local color = HSVToColor( h, saturation, value )
|
||||
|
||||
self:SetRGB( color )
|
||||
|
||||
end
|
||||
|
||||
function PANEL:OnUserChanged( color )
|
||||
|
||||
-- Override me
|
||||
|
||||
end
|
||||
|
||||
function PANEL:SetColor( color )
|
||||
|
||||
local h, s, v = ColorToHSV( color )
|
||||
|
||||
self:SetBaseRGB( HSVToColor( h, 1, 1 ) )
|
||||
|
||||
self:SetSlideY( 1 - v )
|
||||
self:SetSlideX( 1 - s )
|
||||
self:UpdateColor()
|
||||
|
||||
end
|
||||
|
||||
function PANEL:SetBaseRGB( color )
|
||||
|
||||
self.m_BaseRGB = color
|
||||
self:UpdateColor()
|
||||
|
||||
end
|
||||
|
||||
derma.DefineControl( "DColorCube", "", PANEL, "DSlider" )
|
||||
Reference in New Issue
Block a user