Garry's Mod Wiki

HSVToColor

table HSVToColor( number hue, number saturation, number value )

Description

Converts a color from HSV color space into RGB color space and returns a Color.

The returned color will not have the color metatable.

Arguments

1 number hue
The hue in degrees from 0-360.
2 number saturation
The saturation from 0-1.
3 number value
The value from 0-1.

Returns

1 table
The Color created from the HSV color space.

Example

A helper function for drawing rainbow text.

local function DrawRainbowText( frequency, str, font, x, y ) surface.SetFont( font ) for i = 1, #str do surface.SetTextColor( HSVToColor( i * frequency % 360, 1, 1 ) ) local w = surface.GetTextSize( string.sub( str, 1, i - 1 ) ) surface.SetTextPos( x + w, y ) surface.DrawText( string.sub( str, i, i ) ) end end -- Solid color rainbow, faster than example above local function DrawSimpleRainbowText( speed, str, font, x, y ) surface.SetFont( font ) surface.SetTextColor( HSVToColor( ( CurTime() * speed ) % 360, 1, 1 ) ) surface.SetTextPos( x, y ) surface.DrawText( str ) end hook.Add( "HUDPaint", "RainbowPuke", function() DrawRainbowText( 10, "Hello world! This is rainbow text.", "CloseCaption_Bold", 5, 5 ) DrawSimpleRainbowText( 100, "Hello world! This is rainbow text.", "CloseCaption_Bold", 5, 55 ) end )
Output:

Example

A helper function for printing rainbow text in the chat.

local function PrintRainbowText( frequency, str ) local text = {} for i = 1, #str do table.insert( text, HSVToColor( i * frequency % 360, 1, 1 ) ) table.insert( text, string.sub( str, i, i ) ) end -- Print to chat, also prints to console chat.AddText( unpack( text ) ) -- Uncomment this to print to console only, works serverside too -- MsgC( unpack( text ) ) end -- The higher the number, the quicker the color will change between each character PrintRainbowText( 10, "Hello world!" )
Output:

Page Links


Special Pages


Wikis

?

Render Time: 48ms

DB GetPage 4
Generate Html 21
SaveChanges 14
Render Body 0
Render Sidebar 7