| Oval Glow Effect 
 
	 
	
		| Author | Message |   
		| ynotpeace 
 
 
 
 
 | 
			
				|  Posted: Wed Dec 08, 2010 10:46 pm    Post subject: Oval Glow Effect |  |   
				| 
 |  
				| Since Turing default colors is only 8-bit, I tried to play around with the RGB to get something cooler. So I came up with a Glowing Oval effect
 
 	  | Turing: |  	  |  
setscreen("graphics,nobuttonbar,title:Glow Effect")
colorback (black)
cls
proc Glowoval ( normal, back, glow : string , Bradius, glowradius, inradius, intenseradius, xt, yt : int , glowcheck : boolean)
    var  RGBinter : array 1 . . 3 of real
    var  RGBinterglow : array 1 . . 3 of real
    const  inter : int :=  Bradius
    const  glowinter : int :=  glowradius
    const  width : int :=  inradius
    const  intens : int :=  intenseradius %NOTE:intensity must be smaller then width
    var  glowcolor : array 1 . . 3 of real
    var  startcolor : array 1 . . 3 of real
    var  backcolor : array 1 . . 3 of real
    var  x, y : int 
    x :=  xt
 
    y :=  yt
 
    startcolor (1) := strint ( normal (6)  + normal (7), 16)  / 256 
    startcolor (2) := strint ( normal (4)  + normal (5), 16)  / 256 
    startcolor (3) := strint ( normal (2)  + normal (3), 16)  / 256 
    backcolor (1) := strint ( back (6)  + back (7), 16)  / 256 
    backcolor (2) := strint ( back (4)  + back (5), 16)  / 256 
    backcolor (3) := strint ( back (2)  + back (3), 16)  / 256
    if  glowcheck = true then 
        glowcolor (1) := strint ( glow (6)  + glow (7), 16)  / 256 
        glowcolor (2) := strint ( glow (4)  + glow (5), 16)  / 256 
        glowcolor (3) := strint ( glow (2)  + glow (3), 16)  / 256
    else 
        glowcolor (1) :=  startcolor (1)  + ((1  - startcolor (1)) * 0 .7) 
        glowcolor (2) :=  startcolor (2)  + ((1  - startcolor (2)) * 0 .7) 
        glowcolor (3) :=  startcolor (3)  + ((1  - startcolor (3)) * 0 .7)
    end if 
    RGBinter (1) := ( backcolor (1)  - startcolor (1))  / inter
 
    RGBinter (2) := ( backcolor (2)  - startcolor (2))  / inter
 
    RGBinter (3) := ( backcolor (3)  - startcolor (3))  / inter
 
    RGBinterglow (1) := ( glowcolor (1)  - startcolor (1))  / glowinter
 
    RGBinterglow (2) := ( glowcolor (2)  - startcolor (2))  / glowinter
 
    RGBinterglow (3) := ( glowcolor (3)  - startcolor (3))  / glowinter
    for  decreasing i :  inter - 1  + glowinter + width . . glowinter + width
        RGB.SetColor (1 , startcolor (1)  + (( i - glowinter - width) *  RGBinter (1)), 
            startcolor (2)  + (( i - glowinter - width) *  RGBinter (2)), 
            startcolor (3)  + (( i - glowinter - width) *  RGBinter (3)))
        Draw.FillOval ( x, y, i, i, 1)
    end for
    for  decreasing i :  glowinter + width - 1 . . width
        RGB.SetColor (1 , startcolor (1)  + ((( glowinter + width)  - i) *  RGBinterglow (1)), 
            startcolor (2)  + (( glowinter + width)  - i) *  RGBinterglow (2), 
            startcolor (3)  + (( glowinter + width)  - i) *  RGBinterglow (3))
        Draw.FillOval ( x, y, i, i, 1)
    end for
    for  decreasing i :  width - 1 . . width - intens
        RGB.SetColor (1 , glowcolor (1)  + (( width - i) * (1  - glowcolor (1))  / intens), 
            glowcolor (2)  + (( width - i) * (1  - glowcolor (2))  / intens), 
            glowcolor (3)  + (( width - i) * (1  - glowcolor (3))  / intens))
        Draw.FillOval ( x, y, i, i, 1)
    end for
    View.Update
    color(31)
    put  startcolor(1) *256
    put  startcolor(2) *256
    put  startcolor(3) *256
end  Glowoval
 
Glowoval ("#41C333" , "#000000" , "#FFFFFF", 8 , 10 , 40 , 20 , 200 , 200 , true)
/*EXAMPLE 2(uncomment to see) Glowoval ("#41C333", "#000000", "#FFFFFF", 10, 10, 60, 2, 200, 200, true)
 Glowoval ("#41C333", "#FFFFFF", "#000000", 20, 25, 10, 0, 200, 200, true)
 */
 | 
 Parameters are:
 Glowoval(object color,background color, glow color, fade out radius,glowing radius,center glow radius,intensity,x,y,manual glow check)
 most of it is pretty self explanatory.
 For Manual glow check, if set to false, the procedure automatically finds the glowing color with is just a whiter shade of the object color.
 Please comment and help me improve on this.
 (as you can see in example 2, you can play around with the settings and make some neat stuff.)
 I also find that sometimes some hex colors don't work for some reason :S
 Thanks!
 |  
				|  |  |   
		|  |  |  
	  
		|  |   
		| Sponsor Sponsor
 
  
   |  |   
		|  |   
		| SNIPERDUDE 
 
  
 
 
 | 
			
				|  Posted: Thu Dec 09, 2010 7:23 pm    Post subject: RE:Oval Glow Effect |  |   
				| 
 |  
				| That is actually really cool, one of the better graphical effect engines I've seen in Turing in a while. +bits
 |  
				|  |  |   
		|  |  |  
	  
		|  |   
		| ynotpeace 
 
 
 
 
 | 
			
				|  Posted: Thu Dec 09, 2010 9:18 pm    Post subject: Re: Oval Glow Effect |  |   
				| 
 |  
				| Ok fixed the color problem and added some stuff to make this complete. 
 Parameters:
 
 Glowoval(object color,background color,glow color, fade radius, transition glow radius,  in glow radius, intensity, object radius, x, y, x-radius factor, y-radius factor, manual glow check)
 
 Explanation:
 
 Object color: The color of the oval.
 Background color: Color of background.
 Glow color: The color you want your object to glow into.
 Fade radius: The outer rim of oval, fades from object color to background color.
 Transition glow radius: The length of pixels it takes for the object color to transition to the glow color.
 In glow radius: Length in pixels of the radius of the inner "white".
 Intensity: Transition between the glow color to white (the less this value is the more intense it will look).
 Object radius: This is between the fade radius and transition glow radius. It is the length in pixels of pure object color.
 x: x positioning.
 y: y positioning.
 x-radius factor, y-radius factor: Determines the stretch or compression factor of the oval (example:(1,2) would make the oval very tall).
 Manual glow check: If left false, engine will automatically generate a glow color (whiter shade of the object color). (please note that even left false please enter a blank string for the glow color ).
 
 
 
 	  | Turing: |  	  |  
setscreen ("graphics:600;600,nobuttonbar,title:Glow Effect")
colorback (black)
cls
proc Glowoval ( normal, back, glow : string , Bradius, glowradius, inradius, intenseradius, objectradius, xt, yt : int , xr, yr : real , glowcheck : boolean)
    var  RGBinter : array 1 . . 3 of real
    var  RGBinterglow : array 1 . . 3 of real
    const  inter : int :=  Bradius
    const  glowinter : int :=  glowradius
    const  width : int :=  inradius
    const  intens : int :=  intenseradius %NOTE:intensity must be smaller then width
    const  object : int :=  objectradius
    var  glowcolor : array 1 . . 3 of real
    var  startcolor : array 1 . . 3 of real
    var  backcolor : array 1 . . 3 of real
    var  x, y : int 
    x :=  xt
 
    y :=  yt
 
    startcolor (1) := strint ( normal (2)  + normal (3), 16)  / 256 
    startcolor (2) := strint ( normal (4)  + normal (5), 16)  / 256 
    startcolor (3) := strint ( normal (6)  + normal (7), 16)  / 256 
    backcolor (1) := strint ( back (2)  + back (3), 16)  / 256 
    backcolor (2) := strint ( back (4)  + back (5), 16)  / 256 
    backcolor (3) := strint ( back (6)  + back (7), 16)  / 256
    if  glowcheck = true then 
        glowcolor (1) := strint ( glow (2)  + glow (3), 16)  / 256 
        glowcolor (2) := strint ( glow (4)  + glow (5), 16)  / 256 
        glowcolor (3) := strint ( glow (6)  + glow (7), 16)  / 256
    else 
        glowcolor (1) :=  startcolor (1)  + ((1  - startcolor (1)) * 0 .7) 
        glowcolor (2) :=  startcolor (2)  + ((1  - startcolor (2)) * 0 .7) 
        glowcolor (3) :=  startcolor (3)  + ((1  - startcolor (3)) * 0 .7)
    end if 
    RGBinter (1) := ( backcolor (1)  - startcolor (1))  / inter
 
    RGBinter (2) := ( backcolor (2)  - startcolor (2))  / inter
 
    RGBinter (3) := ( backcolor (3)  - startcolor (3))  / inter
 
    RGBinterglow (1) := ( glowcolor (1)  - startcolor (1))  / glowinter
 
    RGBinterglow (2) := ( glowcolor (2)  - startcolor (2))  / glowinter
 
    RGBinterglow (3) := ( glowcolor (3)  - startcolor (3))  / glowinter
    for  decreasing i :  inter - 1  + glowinter + width + object . . glowinter + width + object
        RGB.SetColor (1 , startcolor (1)  + (( i - glowinter - width - object) *  RGBinter (1)), 
            startcolor (2)  + (( i - glowinter - width - object) *  RGBinter (2)), 
            startcolor (3)  + (( i - glowinter - width - object) *  RGBinter (3)))
        Draw.FillOval ( x, y, i + round ( i *  xr),  i + round ( i *  yr), 1)
    end for
    for  decreasing i :  glowinter + width - 1 . . width
        RGB.SetColor (1 , startcolor (1)  + ((( glowinter + width)  - i) *  RGBinterglow (1)), 
            startcolor (2)  + (( glowinter + width)  - i) *  RGBinterglow (2), 
            startcolor (3)  + (( glowinter + width)  - i) *  RGBinterglow (3))
        Draw.FillOval ( x, y, i + round ( i *  xr),  i + round ( i *  yr), 1)
    end for
    for  decreasing i :  width - 1 . . width - intens
        RGB.SetColor (1 , glowcolor (1)  + (( width - i) * (1  - glowcolor (1))  / intens), 
            glowcolor (2)  + (( width - i) * (1  - glowcolor (2))  / intens), 
            glowcolor (3)  + (( width - i) * (1  - glowcolor (3))  / intens))
        Draw.FillOval ( x, y, i + round ( i *  xr),  i + round ( i *  yr), 1)
    end for
    View.Update
end  Glowoval
var  mx, my, button : int
var  r, g, b : int
var  count : int := 0
var  cc : int := 1
var  colr : string 
r := 255 
g := 0 
b := 0
loop 
    count :=  count + 1
    if  count = 85 then 
        count := 1 
        cc :=  cc + 1
    end if
    if  cc = 7 then 
        cc := 1
    end if
    if  cc = 1 then 
        g :=  g + 3
    elsif  cc = 2 then 
        r :=  r - 3
    elsif  cc = 3 then 
        b :=  b + 3
    elsif  cc = 4 then 
        g :=  g - 3
    elsif  cc = 5 then 
        r :=  r + 3
    elsif  cc = 6 then 
        b :=  b - 3
    end if
    if  r < 16 then 
        colr := "#"  + "0"  + intstr ( r, 1 , 16)
    else 
        colr := "#"  + intstr ( r, 2 , 16)
    end if
    if  g < 16 then 
        colr :=  colr + "0"  + intstr ( g, 1 , 16)
    else 
        colr :=  colr + intstr ( g, 2 , 16)
    end if
    if  b < 16 then 
        colr :=  colr + "0"  + intstr ( b, 1 , 16)
    else 
        colr :=  colr + intstr ( b, 2 , 16)
    end if 
    button :=  Rand.Int (40 , 50) 
    Glowoval ( colr, "#000000" , "#D1FFFF", ceil ( button / 5), ceil ( button * 0 .2), ceil ( button * 0 .8), ceil (56  - ( button)), 50  - ceil ( button * 0 .4)  - ceil ( button * 0 .6), round (maxx  /
        2),
        round (maxy  / 2), 1 , 1 , false)
    delay (90)
    cls
end loop
%Glowoval ("#3DFFFF", "#000000", "#FFFFFF", 10, 10, 60, 2,0, round(maxx/2), round(maxy/2),1,1, true)
%Glowoval ("#3DFFFF", "#FFFFFF", "#000000", 20, 25, 10, 0,0, round(maxx/2), round(maxy/2),1,1, true) | 
 
 if you wanna check out the simple examples then comment out the main program and check the 2 examples towards the bottom of the program.
 |  
				|  |  |   
		|  |  |  
	  
		|  |   
		|  |  
 |