zombiesurvival-evolved/gamemodes/zombiesurvival/gamemode/vgui/dexrotatedimage.lua

78 lines
1.2 KiB
Lua
Raw Permalink Normal View History

2014-10-02 08:49:54 +08:00
local PANEL = {}
function PANEL:PaintAt( x, y, dw, dh )
self:LoadMaterial()
if ( !self.m_Material ) then return true end
surface.SetMaterial( self.m_Material )
surface.SetDrawColor( self.m_Color.r, self.m_Color.g, self.m_Color.b, self.m_Color.a )
if ( self:GetKeepAspect() ) then
local w = self.ActualWidth
local h = self.ActualHeight
-- Image is bigger than panel, shrink to suitable size
if ( w > dw && h > dh ) then
if ( w > dw ) then
local diff = dw / w
w = w * diff
h = h * diff
end
if ( h > dh ) then
local diff = dh / h
w = w * diff
h = h * diff
end
end
if ( w < dw ) then
local diff = dw / w
w = w * diff
h = h * diff
end
if ( h < dh ) then
local diff = dh / h
w = w * diff
h = h * diff
end
local OffX = (dw - w) * 0.5
local OffY = (dh - h) * 0.5
surface.DrawTexturedRect( OffX+x, OffY+y, w, h )
return true
end
surface.DrawTexturedRectRotated( x + dw / 2, y + dh / 2, dw, dh, self:GetRotation() )
return true
end
function PANEL:SetRotation(m)
self.m_Rotation = m
end
function PANEL:GetRotation()
return self.m_Rotation or 0
end
vgui.Register("DEXRotatedImage", PANEL, "DImage")