vizrtexample

Color Control RGB or RGBA (int, float, hex)

Oct 7th, 2020 (edited)
351
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. RegisterPluginVersion(1,0,1)
  2. Dim info As String = "Color Control RGB or RGBA (int, float, hex)."
  3.  
  4. Dim f As Array[String]
  5.     f.Push("R G B A(int)")
  6.     f.Push("R G B A(float)")
  7.     f.Push("RGBA(hex)")
  8. Dim m As Array[String]
  9.     m.Push("COLOR")
  10.     m.Push("AMBIENT")  
  11.     m.Push("DIFFUSE")
  12.     m.Push("SPECULAR")
  13.     m.Push("EMISSION")
  14.  
  15. Sub OnInitParameters()
  16.     RegisterInfoText(info)
  17.     RegisterParameterContainer("Container", "Remote Container")
  18.     RegisterRadioButton("ColorFormat", "Color Format", 0, f)
  19.     RegisterRadioButton("PropertyMode", "Color Property Mode", 0, m)
  20.     RegisterParameterString("colorInt", "R G B A(int): ", "", 50, 100, "")
  21.     RegisterParameterString("colorFloat", "R G B A(float): ", "", 50, 100, "")
  22.     RegisterParameterString("colorHex", "RGBA(hex): ", "", 50, 100, "")
  23.     RegisterPushButton("btnRandom", "  RANDOM ", 10)
  24. End Sub
  25.  
  26. Sub OnInit()
  27.     Dim c = GetParameterContainer("Container")
  28.     If Not c.Valid Then
  29.         c = this
  30.     End If
  31.    
  32.     Dim rgbInt As Color = IntToRgb(GetParameterString("colorInt"))
  33.     Dim rgbFloat As Color = FloatToRgb(GetParameterString("colorFloat"))
  34.     Dim rgbHex As Color = HextToRgb(GetParameterString("colorHex"))
  35.  
  36.     Select Case GetParameterInt("ColorFormat")
  37.        Case 0
  38.            SendGuiParameterShow("colorInt", SHOW)
  39.            SendGuiParameterShow("colorFloat", HIDE)
  40.            SendGuiParameterShow("colorHex", HIDE)
  41.            SetColor(c,rgbInt)
  42.        Case 1
  43.            SendGuiParameterShow("colorInt", HIDE)
  44.            SendGuiParameterShow("colorFloat", SHOW)
  45.            SendGuiParameterShow("colorHex", HIDE)
  46.            SetColor(c,rgbFloat)
  47.        Case 2
  48.            SendGuiParameterShow("colorInt", HIDE)
  49.            SendGuiParameterShow("colorFloat", HIDE)
  50.            SendGuiParameterShow("colorHex", SHOW)
  51.            SetColor(c,rgbHex)
  52.     End Select
  53.  
  54. End Sub
  55.  
  56. Sub SetColor(c As Container, rgba As Color)
  57.     Select Case GetParameterInt("PropertyMode")
  58.         Case 0
  59.             c.Material.Color = rgba
  60.         Case 1
  61.             c.Material.Ambient = rgba
  62.         Case 2
  63.             c.Material.Diffuse = rgba
  64.         Case 3
  65.             c.Material.Specular = rgba
  66.         Case 4
  67.             c.Material.Emission = rgba 
  68.     End Select
  69.     c.Material.Alpha = rgba.Alpha
  70. End Sub
  71.  
  72. Sub OnExecAction(buttonId As Integer)
  73.     If buttonId = 10 Then
  74.        Select Case GetParameterInt("ColorFormat")
  75.            Case 0
  76.                this.ScriptPluginInstance.SetParameterString("colorInt",  RandomIntString())
  77.            Case 1
  78.                this.ScriptPluginInstance.SetParameterString("colorFloat",  RandomFloatString())
  79.            Case 2
  80.                this.ScriptPluginInstance.SetParameterString("colorHex",  RandomHexString())
  81.        End Select
  82.     End If
  83. End Sub
  84.  
  85. Sub OnGuiStatus()
  86.     OnInit()
  87. End sub
  88.  
  89. Sub OnParameterChanged(parameterName As String)
  90.     OnInit()
  91. End Sub
  92.  
  93. '-------------------------------------------------------------------------------
  94.  
  95. Function HextToRgb(s As String) As Color
  96.     s.Substitute("[^0-9a-fA-F]", "",true)
  97.     Dim r As Integer = 0
  98.     Dim g As Integer = 0
  99.     Dim b As Integer = 0
  100.     Dim a As Integer = 255
  101.     Dim tmp As Color
  102.     Select Case s.Length
  103.         Case 1
  104.             r = HexToInt(s.GetSubstring(0,1))
  105.         Case 2
  106.             r = HexToInt(s.GetSubstring(0,2))
  107.         Case 3
  108.             r = HexToInt(s.GetSubstring(0,2))
  109.             g = HexToInt(s.GetSubstring(2,1))
  110.         Case 4
  111.             r = HexToInt(s.GetSubstring(0,2))
  112.             g = HexToInt(s.GetSubstring(2,2))      
  113.         Case 5
  114.             r = HexToInt(s.GetSubstring(0,2))
  115.             g = HexToInt(s.GetSubstring(2,2))
  116.             b = HexToInt(s.GetSubstring(4,1))      
  117.         Case 6
  118.             r = HexToInt(s.GetSubstring(0,2))
  119.             g = HexToInt(s.GetSubstring(2,2))
  120.             b = HexToInt(s.GetSubstring(4,2))
  121.         Case Is >= 7
  122.             r = HexToInt(s.GetSubstring(0,2))
  123.             g = HexToInt(s.GetSubstring(2,2))
  124.             b = HexToInt(s.GetSubstring(4,2))
  125.             a = HexToInt(s.GetSubstring(6,2))          
  126.     End Select 
  127.     tmp.SetRGBA8(r,g,b,a)
  128.     HextToRgb = tmp
  129. End Function
  130.  
  131. Function HexToInt(s As String) As Integer
  132.    Select Case s.Length
  133.       Case 1
  134.          HexToInt = StrToInt(s.Left(1))
  135.       Case 2
  136.          HexToInt = (StrToInt(s.Left(1))*16) + StrToInt(s.Right(1))
  137.    End Select
  138. End Function
  139.  
  140. Function StrToInt(s As String) As Integer
  141.    s.Substitute("[Aa]", "10", false)
  142.    s.Substitute("[Bb]", "11", false)
  143.    s.Substitute("[Cc]", "12", false)
  144.    s.Substitute("[Dd]", "13", false)
  145.    s.Substitute("[Ee]", "14", false)
  146.    s.Substitute("[Ff]", "15", false)
  147.    StrToInt = CInt(s)
  148. End Function
  149.  
  150. '-------------------------------------------------------------------------------
  151.  
  152. Function IntToRgb(s As String) As Color
  153.     Dim arr As Array[String]
  154.     Dim r As Integer = 0
  155.     Dim g As Integer = 0
  156.     Dim b As Integer = 0
  157.     Dim a As Integer = 255
  158.     Dim tmp As Color
  159.     s.TclSplit(arr)
  160.     Select Case arr.Size
  161.        Case 1
  162.           r = CInt(arr[0])
  163.        Case 2
  164.           r = CInt(arr[0])
  165.           g = CInt(arr[1])
  166.        Case 3
  167.           r = CInt(arr[0])
  168.           g = CInt(arr[1])
  169.           b = CInt(arr[2])
  170.        Case Is >= 4
  171.           r = CInt(arr[0])
  172.           g = CInt(arr[1])
  173.           b = CInt(arr[2])
  174.           a = CInt(arr[3])
  175.     End Select
  176.     tmp.SetRGBA8(r,g,b,a)
  177.     IntToRgb = tmp
  178. End Function
  179.  
  180. '-------------------------------------------------------------------------------
  181.  
  182. Function FloatToRgb(s As String) As Color
  183.     Dim arr As Array[String]
  184.     Dim r As Double = 0
  185.     Dim g As Double = 0
  186.     Dim b As Double = 0
  187.     Dim a As Double = 1
  188.     Dim tmp As Color
  189.     s.TclSplit(arr)
  190.     Select Case arr.Size
  191.        Case 1
  192.           r = CDbl(arr[0])
  193.        Case 2
  194.           r = CDbl(arr[0])
  195.           g = CDbl(arr[1])
  196.        Case 3
  197.           r = CDbl(arr[0])
  198.           g = CDbl(arr[1])
  199.           b = CDbl(arr[2])
  200.        Case Is >= 4
  201.           r = CDbl(arr[0])
  202.           g = CDbl(arr[1])
  203.           b = CDbl(arr[2])
  204.           a = CDbl(arr[3])
  205.     End Select
  206.     tmp.SetRGBA(r,g,b,a)
  207.     FloatToRgb = tmp
  208. End Function
  209.  
  210. '-------------------------------------------------------------------------------
  211.  
  212. Function RandomHexString() As String
  213.     Dim s As String = "ABCDEFabcdef0123456789"
  214.     Dim n As Integer = s.Length - 1
  215.     RandomHexString = "#"
  216.     'R
  217.     RandomHexString &= s.GetSubstring(Random(n),1)
  218.     RandomHexString &= s.GetSubstring(Random(n),1)
  219.     'G
  220.     RandomHexString &= s.GetSubstring(Random(n),1)
  221.     RandomHexString &= s.GetSubstring(Random(n),1)
  222.     'B
  223.     RandomHexString &= s.GetSubstring(Random(n),1)
  224.     RandomHexString &= s.GetSubstring(Random(n),1)
  225. End Function
  226.  
  227. Function RandomIntString() As String
  228.     RandomIntString = CStr(Random(255)) & " " & CStr(Random(255)) & " " & CStr(Random(255))
  229. End Function
  230.  
  231. Function RandomFloatString() As String
  232.     RandomFloatString = DoubleToString(Random(),4) & " " & DoubleToString(Random(),4) & " " & DoubleToString(Random(),4)
  233. End Function
  234.  
Add Comment
Please, Sign In to add comment