Jump to content

Text effects UDF


peethebee
 Share

Recommended Posts

v 1.9.3 online:

new support for a modern vertical about box with scrolling text and fading out effects on top and bottom. test it!

peethebee

vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvGerman Forums: http://www.autoit.deGerman Help File: http://autoit.de/hilfe vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv

Link to comment
Share on other sites

  • 2 weeks later...
  • Replies 79
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

As of 3.1.1.73 no longer need to force redraw

Added Label to designer

Took out all the forced redraw lines.

Couldn't the "modern" to work, was probably doing something wrong.

Gary

SciTE for AutoItDirections for Submitting Standard UDFs

 

Don't argue with an idiot; people watching may not be able to tell the difference.

 

Link to comment
Share on other sites

Thank you very much, Gary!

You are doing a great job!

peethebee

vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvGerman Forums: http://www.autoit.deGerman Help File: http://autoit.de/hilfe vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv

Link to comment
Share on other sites

Hi!

@theguy0000: Thanks for looking at almost all my programs!

peethebee

vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvGerman Forums: http://www.autoit.deGerman Help File: http://autoit.de/hilfe vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv

Link to comment
Share on other sites

  • 1 month later...

Hi!

Just wanted this UDF to be once more at the rop of the Scripts & Scraps section.

Sorry for that, if you do not like it!

peethebee

vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvGerman Forums: http://www.autoit.deGerman Help File: http://autoit.de/hilfe vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv

Link to comment
Share on other sites

  • 8 months later...
  • 2 weeks later...

Removed file, get it directly via my fileman! :whistle:

WTF is Fileman?

I am trying to animate some text in a GUI i think this may help.

If some one has another link on how to do this please let me know.

Ty.

Just look in his signature for the link

SciTE for AutoItDirections for Submitting Standard UDFs

 

Don't argue with an idiot; people watching may not be able to tell the difference.

 

Link to comment
Share on other sites

  • 1 year later...

Slight problem opening your fileman...

"404: The page/file you requested could not be found."

Sorry! We can't find the file or page you asked for. If you came from an external site the links may be out of date.  

Please try the AutoItScript home page, the AutoIt v3 page or the AutoIt v2 home page to find your file.
Spoiler

 

"If a vegetarian eats vegetables,What the heck does a humanitarian eat?"

"I hear voices in my head, but I ignore them and continue on killing."

"You have forced me to raise the indifference warning to beige, it's a beige alert people. As with all beige alerts please prepare to think about the possibility of caring."

An optimist says that giving someone power DOESN'T immediately turn them into a sadist. A pessimist says that giving someone power doesn't IMMEDIATELY turn them into a sadist.

 

 
Link to comment
Share on other sites

Slight problem opening your fileman...

"404: The page/file you requested could not be found."

Sorry! We can't find the file or page you asked for. If you came from an external site the links may be out of date.  

Please try the AutoItScript home page, the AutoIt v3 page or the AutoIt v2 home page to find your file.

Unless he requests Jon to re-active his fileman area that is what you'll get.

I believe the latest 1.93

Here's the last zip I had downloaded Sept 2005

text_effects_1.9.3.zip

SciTE for AutoItDirections for Submitting Standard UDFs

 

Don't argue with an idiot; people watching may not be able to tell the difference.

 

Link to comment
Share on other sites

Thanks man. I cant believe that you accually kept it that long lol. Im glad you did though. Thank you.

Spoiler

 

"If a vegetarian eats vegetables,What the heck does a humanitarian eat?"

"I hear voices in my head, but I ignore them and continue on killing."

"You have forced me to raise the indifference warning to beige, it's a beige alert people. As with all beige alerts please prepare to think about the possibility of caring."

An optimist says that giving someone power DOESN'T immediately turn them into a sadist. A pessimist says that giving someone power doesn't IMMEDIATELY turn them into a sadist.

 

 
Link to comment
Share on other sites

Thanks man. I cant believe that you accually kept it that long lol. Im glad you did though. Thank you.

I worked on it with him for a while, was interested in it at the time, I keep an archive of zips I download (have plenty of HD space).

Replace calls to _Floor with Floor, the UDF _Floor was removed a long time ago.

Edited by GaryFrost

SciTE for AutoItDirections for Submitting Standard UDFs

 

Don't argue with an idiot; people watching may not be able to tell the difference.

 

Link to comment
Share on other sites

Ok, thank you. Btw, how much hd space do you have? I wouldnt have enough space for doing stuff like that. I have 160gb which is great but I need to get an ex hd so that I wont have to deal with the stress of keeping all my back ups on this one lol.

Spoiler

 

"If a vegetarian eats vegetables,What the heck does a humanitarian eat?"

"I hear voices in my head, but I ignore them and continue on killing."

"You have forced me to raise the indifference warning to beige, it's a beige alert people. As with all beige alerts please prepare to think about the possibility of caring."

An optimist says that giving someone power DOESN'T immediately turn them into a sadist. A pessimist says that giving someone power doesn't IMMEDIATELY turn them into a sadist.

 

 
Link to comment
Share on other sites

Ok, thank you. Btw, how much hd space do you have? I wouldnt have enough space for doing stuff like that. I have 160gb which is great but I need to get an ex hd so that I wont have to deal with the stress of keeping all my back ups on this one lol.

couple 250gb ex. drives on this one, couple 120gb intern on this one.

spare pc at desk couple 120gb

another pc 3 or 4 75gb drives

another pc 2 75gb drives

about 1/2 dozen 75gb drives not being used

about 20 40gb drives not being used

some other assorted size drives not being used.

shouldn't run out anytime soon.

SciTE for AutoItDirections for Submitting Standard UDFs

 

Don't argue with an idiot; people watching may not be able to tell the difference.

 

Link to comment
Share on other sites

Holy crap!!!. Thats a lot of space lol. Are you sure you wont run out any time soon? lol Jk

Spoiler

 

"If a vegetarian eats vegetables,What the heck does a humanitarian eat?"

"I hear voices in my head, but I ignore them and continue on killing."

"You have forced me to raise the indifference warning to beige, it's a beige alert people. As with all beige alerts please prepare to think about the possibility of caring."

An optimist says that giving someone power DOESN'T immediately turn them into a sadist. A pessimist says that giving someone power doesn't IMMEDIATELY turn them into a sadist.

 

 
Link to comment
Share on other sites

  • 1 year later...

; ================================================
;           V E R S I O N    1 . 9 . 3
; ================================================
;
; This is as far as I know the frist AutoIt UDF
; dealing with text animations. I myself believe
; that such an easy but impressing effect can be
; very uesfull.
; I hope you like it. Feel free to post comments
; in the AutoIt forums or email me at
; peter_opali@gmx.de!
;
; peethebee, Germany
;
;
; Special Thanks to:
;       - "gafrost" for his solution of the
;             WinXPSP2/W2k problem
;
;
; Short summary of all effect functions:
;
; _txt_eff__about_messages
; _txt_eff__airport
; _txt_eff__blink
; _txt_eff__broad
; _txt_eff__color_sequence
; _txt_eff__color_to_color
; _txt_eff__enlarge_from_left
; _txt_eff__enlarge_from_right
; _txt_eff__mix_up_chars
; _txt_eff__move_cap_char_through_text
; _txt_eff__move_in_from_left
; _txt_eff__move_in_from_right
; _txt_eff__move_out_to_left
; _txt_eff__move_out_to_right
; _txt_eff__move_small_char_through_text
; _txt_eff__move_string_through_text
; _txt_eff__raining
; _txt_eff__rainbow
; _txt_eff__scroll_through_options
; _txt_eff__show_text_behind_char
; _txt_eff__small
; _txt_eff__spin
; _txt_eff__spotlight
; _txt_eff__style
; _txt_eff__uncover_from_wall_to_wall
; _txt_eff__wave
; _txt_eff__zoom
;
; =================================================

#include-once

#include <String.au3>
#include <math.au3>
#include <Array.au3>
#include <Color.au3>


; ---------------------------------
; ---------------------------------
; ----  1. pure text animation ----
; ---------------------------------
; ---------------------------------


;===============================================================================
;
; Description:      Enlarge the given text in the given control from left to right.
; Syntax:           _txt_eff__enlarge_from_left($winhandle, $control_id, [$text, [$delay, [$over_old]]])
; Parameter(s):     $winhandle - Handle of the target window, $control_id - ID of the target control, $text - The text to animate, $delay - Animation speed (1 = fast, 1000 = slow), $over_old - 0: delete old text before starting / 1: do not delete it
; Requirement(s):   v3.1.1.66 (beta) or later
; Return Value(s):  1 - in any case
;
; Author(s):        peethebee <peter_opali@gmx.de>
; Note(s):          None
;
;===============================================================================
Func _txt_eff__enlarge_from_left($winhandle, $control_id, $text = "", $delay = 100, $over_old = 0)
    If $text = "" Then $text = ControlGetText($winhandle, "", $control_id)
    Local $static = _IsStatic($winhandle, $control_id)
    
    If $over_old = 1 Then
        $orig_text = ControlGetText($winhandle, "", $control_id)
        If StringLen($orig_text) < StringLen($text) Then
            For $i = StringLen($orig_text) To StringLen($text)
                $orig_text = $orig_text & " "
            Next
        ElseIf StringLen($orig_text) > StringLen($text) Then
            For $i = StringLen($text) To StringLen($orig_text)
                $text = $text & " "
            Next
        EndIf
    EndIf
    For $i = 1 To StringLen($text)
        $out_string = StringLeft($text, $i)
        If $over_old = 1 Then $out_string = $out_string & "  " & StringTrimLeft($orig_text, $i + 2)
        If $static = 1 Then GUISetState(@SW_LOCK, $winhandle)
        ControlSetText($winhandle, "", $control_id, $out_string)
        If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle)
        Sleep($delay)
    Next
    Return 1
EndFunc   ;==>_txt_eff__enlarge_from_left


;===============================================================================
;
; Description:      Enlarge the given text in the given control from right to left.
; Syntax:           _txt_eff__enlarge_from_right($winhandle, $control_id, [$text, [$delay , [$over_old]]])
; Parameter(s):     $winhandle - Handle of the target window, $control_id - ID of the target control, $text - The text to animate, $delay - Animation speed (1 = fast, 1000 = slow), , $over_old - 0: delete old text before starting / 1: do not delete it
; Requirement(s):   v3.1.1.66 (beta) or later
; Return Value(s):  1 - in any case
;
; Author(s):        peethebee <peter_opali@gmx.de>
; Note(s):          Only looks good when using a monospace font like Courier New
;
;===============================================================================
Func _txt_eff__enlarge_from_right($winhandle, $control_id, $text = "", $delay = 100, $over_old = 0)
    If $text = "" Then $text = ControlGetText($winhandle, "", $control_id)
    Local $static = _IsStatic($winhandle, $control_id)
    
    If $over_old = 1 Then
        $orig_text = ControlGetText($winhandle, "", $control_id)
        If StringLen($orig_text) < StringLen($text) Then
            For $i = StringLen($orig_text) To StringLen($text)
                $orig_text = $orig_text & " "
            Next
        ElseIf StringLen($orig_text) > StringLen($text) Then
            For $i = StringLen($text) To StringLen($orig_text)
                $text = $text & " "
            Next
        EndIf
    EndIf
    For $i = 1 To StringLen($text)
        $out_string = StringRight($text, $i)
        If $over_old = 1 Then
            $out_string = StringTrimRight($orig_text, $i + 2) & "  " & $out_string
            If $i = StringLen($text) - 1 Then ExitLoop
        Else
            For $j = $i To StringLen($text) - 1
                $out_string = " " & $out_string
            Next
        EndIf
        If $static = 1 Then GUISetState(@SW_LOCK, $winhandle)
        ControlSetText($winhandle, "", $control_id, $out_string)
        If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle)
        Sleep($delay)
    Next
    If $over_old = 1 Then
        If $static = 1 Then GUISetState(@SW_LOCK, $winhandle)
        ControlSetText($winhandle, "", $control_id, " " & StringRight($text, StringLen($text) - 1))
        If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle)
        Sleep($delay)
        If $static = 1 Then GUISetState(@SW_LOCK, $winhandle)
        ControlSetText($winhandle, "", $control_id, $text)
        If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle)
    EndIf
    Return 1
EndFunc   ;==>_txt_eff__enlarge_from_right


;===============================================================================
;
; Description:      Move a given text in the given control in from left side.
; Syntax:           _txt_eff__move_in_from_left($winhandle, $control_id, [$text, [$delay]])
; Parameter(s):     $winhandle - Handle of the target window, $control_id - ID of the target control, $text - The text to animate, $delay - Animation speed (1 = fast, 1000 = slow)
; Requirement(s):   v3.1.1.66 (beta) or later
; Return Value(s):  1 - in any case
;
; Author(s):        peethebee <peter_opali@gmx.de>
; Note(s):          None
;
;===============================================================================
Func _txt_eff__move_in_from_left($winhandle, $control_id, $text = "", $delay = 100)
    If $text = "" Then $text = ControlGetText($winhandle, "", $control_id)
    Local $static = _IsStatic($winhandle, $control_id)
    For $i = 1 To StringLen($text)
        If $static = 1 Then GUISetState(@SW_LOCK, $winhandle)
        ControlSetText($winhandle, "", $control_id, StringRight($text, $i))
        If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle)
        Sleep($delay)
    Next
EndFunc   ;==>_txt_eff__move_in_from_left


;===============================================================================
;
; Description:      Move a given text in the given control out to left side.
; Syntax:           _txt_eff__move_out_to_left($winhandle, $control_id, [$text, [$delay]])
; Parameter(s):     $winhandle - Handle of the target window, $control_id - ID of the target control, $text - The text to animate, $delay - Animation speed (1 = fast, 1000 = slow)
; Requirement(s):   v3.1.1.66 (beta) or later
; Return Value(s):  1 - in any case
;
; Author(s):        peethebee <peter_opali@gmx.de>
; Note(s):          None
;
;===============================================================================
Func _txt_eff__move_out_to_left($winhandle, $control_id, $text = "", $delay = 100)
    If $text = "" Then $text = ControlGetText($winhandle, "", $control_id)
    Local $static = _IsStatic($winhandle, $control_id)
    For $i = StringLen($text) To 0 Step - 1
        If $static = 1 Then GUISetState(@SW_LOCK, $winhandle)
        ControlSetText($winhandle, "", $control_id, StringRight($text, $i))
        If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle)
        Sleep($delay)
    Next
    If $static = 1 Then GUISetState(@SW_LOCK, $winhandle)
    ControlSetText($winhandle, "", $control_id, "")
    If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle)
    Return 1
EndFunc   ;==>_txt_eff__move_out_to_left


;===============================================================================
;
; Description:      Move a given text in the given control in from right side.
; Syntax:           _txt_eff__move_in_from_right($winhandle, $control_id, [$text, [$delay , [$text_min_width]])
; Parameter(s):     $winhandle - Handle of the target window, $control_id - ID of the target control, $text - The text to animate, $delay - Animation speed (1 = fast, 1000 = slow), $text_min_width - enlarge the text to this min length if it shorter
; Requirement(s):   v3.1.1.66 (beta) or later
; Return Value(s):  1 - in any case
;
; Author(s):        peethebee <peter_opali@gmx.de>
; Note(s):          Only looks good when using a monospace font like Courier New
;
;===============================================================================
Func _txt_eff__move_in_from_right($winhandle, $control_id, $text = "", $delay = 100, $text_min_width = 0)
    If $text = "" Then $text = ControlGetText($winhandle, "", $control_id)
    Local $static = _IsStatic($winhandle, $control_id)
    If $text_min_width <> 0 Then
        For $i = StringLen($text) To $text_min_width
            $text = $text & " "
        Next
    EndIf
    For $i = 1 To StringLen($text)
        $out_string = StringLeft($text, $i)
        For $j = $i To StringLen($text) - 1
            $out_string = " " & $out_string
        Next
        If $static = 1 Then GUISetState(@SW_LOCK, $winhandle)
        ControlSetText($winhandle, "", $control_id, $out_string)
        If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle)
        Sleep($delay)
    Next
    Return 1
EndFunc   ;==>_txt_eff__move_in_from_right


;===============================================================================
;
; Description:      Move a given text in the given control out to right side.
; Syntax:           _txt_eff__move_out_to_right($winhandle, $control_id, [$text, [$delay, [$text_min_width]])
; Parameter(s):     $winhandle - Handle of the target window, $control_id - ID of the target control, $text - The text to animate, $delay - Animation speed (1 = fast, 1000 = slow), $text_min_width - enlarge the text to this min length if it shorter
; Requirement(s):   v3.1.1.66 (beta) or later
; Return Value(s):  1 - in any case
;
; Author(s):        peethebee <peter_opali@gmx.de>
; Note(s):          Only looks good when using a monospace font like Courier New
;
;===============================================================================
Func _txt_eff__move_out_to_right($winhandle, $control_id, $text = "", $delay = 100, $text_min_width = 0)
    If $text = "" Then $text = ControlGetText($winhandle, "", $control_id)
    Local $static = _IsStatic($winhandle, $control_id)
    If $text_min_width <> 0 Then
        For $i = StringLen($text) To $text_min_width
            $text = $text & " "
        Next
    EndIf
    For $i = StringLen($text) To 0 Step - 1
        $out_string = StringLeft($text, $i)
        For $j = $i To StringLen($text) - 1
            $out_string = " " & $out_string
        Next
        If $static = 1 Then GUISetState(@SW_LOCK, $winhandle)
        ControlSetText($winhandle, "", $control_id, $out_string)
        If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle)
        Sleep($delay)
    Next
    If $static = 1 Then GUISetState(@SW_LOCK, $winhandle)
    ControlSetText($winhandle, "", $control_id, "")
    If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle)
    Return 1
EndFunc   ;==>_txt_eff__move_out_to_right


;===============================================================================
;
; Description:      Uncover a given text in the given control behind a given password char.
; Syntax:           _txt_eff__show_text_behind_char($winhandle, $control_id, [$text, [$delay, [$char]])
; Parameter(s):     $winhandle - Handle of the target window, $control_id - ID of the target control, $text - The text to animate, $delay - Animation speed (1 = fast, 1000 = slow), $char - the foregroud char
; Requirement(s):   v3.1.1.66 (beta) or later
; Return Value(s):  1 - in any case
;
; Author(s):        peethebee <peter_opali@gmx.de>
; Note(s):          None
;
;===============================================================================
Func _txt_eff__show_text_behind_char($winhandle, $control_id, $text = "", $delay = 100, $char = "*")
    If $text = "" Then $text = ControlGetText($winhandle, "", $control_id)
    Local $static = _IsStatic($winhandle, $control_id)
    For $i = 0 To StringLen($text)
        $out_string = StringLeft($text, $i)
        ; Add specified char for every char that's still "covered"
        For $j = 1 To StringLen($text) - $i
            $out_string = $out_string & $char
        Next
        If $static = 1 Then GUISetState(@SW_LOCK, $winhandle)
        ControlSetText($winhandle, "", $control_id, $out_string)
        If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle)
        Sleep($delay)
    Next
    Return 1
EndFunc   ;==>_txt_eff__show_text_behind_char


;===============================================================================
;
; Description:      Move a string through the given text in the given control.
; Syntax:           _txt_eff__move_string_through_text($winhandle, $control_id, [$text, [$delay, [$string, [$show_complete_text]]]])
; Parameter(s):     $winhandle - Handle of the target window, $control_id - ID of the target control, $text - The text to animate, $delay - Animation speed (1 = fast, 1000 = slow), $string - string to move through, $show_complete_text - 0: uncover text while animatione / 1: show it from start on
; Requirement(s):   v3.1.1.66 (beta) or later
; Return Value(s):  1 - in any case
;
; Author(s):        peethebee <peter_opali@gmx.de>
; Note(s):          None
;
;===============================================================================
Func _txt_eff__move_string_through_text($winhandle, $control_id, $text = "", $delay = 100, $string = "->", $show_complete_text = 0)
    If $text = "" Then $text = ControlGetText($winhandle, "", $control_id)
    Local $static = _IsStatic($winhandle, $control_id)
    For $i = 1 To StringLen($text) + 1
        $out_string = StringLeft($text, $i - 1) & $string
        If $show_complete_text = 1 Then $out_string = $out_string & StringRight($text, StringLen($text) - $i - StringLen($string))
        If $static = 1 Then GUISetState(@SW_LOCK, $winhandle)
        ControlSetText($winhandle, "", $control_id, $out_string)
        If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle)
        Sleep($delay)
    Next
    If $static = 1 Then GUISetState(@SW_LOCK, $winhandle)
    ControlSetText($winhandle, "", $control_id, $text)
    If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle)
    Return 1
EndFunc   ;==>_txt_eff__move_string_through_text


;===============================================================================
;
; Description:      Shows a airport-like effect in the given control.
; Syntax:           _txt_eff__airport($winhandle, $control_id, [$text, [$delay, [$start_char, [$skip_chars]]]])
; Parameter(s):     $winhandle - Handle of the target window, $control_id - ID of the target control, $text - The text to animate, $delay - Animation speed (1 = fast, 1000 = slow), $start_char - char to start the scrolling with (ASCII-Order), $skip_chars - number of chars to skip in every step
; Requirement(s):   v3.1.1.66 (beta) or later
; Return Value(s):  1 - in any case
;
; Author(s):        peethebee <peter_opali@gmx.de>
; Note(s):          None
;
;===============================================================================
Func _txt_eff__airport($winhandle, $control_id, $text = "", $delay = 100, $start_char = "A", $skip_chars = 1)
    If $text = "" Then $text = ControlGetText($winhandle, "", $control_id)
    Local $static = _IsStatic($winhandle, $control_id)
    For $i = 1 To StringLen($text)
        $act_char = StringMid($text, $i, 1)
        For $j = Asc($start_char) To Asc($act_char) Step $skip_chars
            $out_string = StringLeft($text, $i - 1) & Chr($j)
            For $k = 1 To StringLen($text) - $i
                $out_string = $out_string & Chr($j)
            Next
            If $static = 1 Then GUISetState(@SW_LOCK, $winhandle)
            ControlSetText($winhandle, "", $control_id, $out_string)
            If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle)
            Sleep($delay)
        Next
    Next
    If $static = 1 Then GUISetState(@SW_LOCK, $winhandle)
    ControlSetText($winhandle, "", $control_id, $text)
    If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle)
    Return 1
EndFunc   ;==>_txt_eff__airport


;===============================================================================
;
; Description:      Spins a given text around in the given control.
; Syntax:           _txt_eff__spin($winhandle, $control_id, [$text, [$delay, [$num_spins, [$spin_delay]]]])
; Parameter(s):     $winhandle - Handle of the target window, $control_id - ID of the target control, $text - The text to animate, $delay - Animation speed (1 = fast, 1000 = slow), $num_spins - number of spins, $spin_delay - delay between 2 spin-arounds
; Requirement(s):   v3.1.1.66 (beta) or later
; Return Value(s):  1 - in any case
;
; Author(s):        peethebee <peter_opali@gmx.de>
; Note(s):          None
;
;===============================================================================
Func _txt_eff__spin($winhandle, $control_id, $text = "", $delay = 100, $num_spins = "1", $spin_delay = 0)
    If $spin_delay = "" Then $spin_delay = $delay
    
    If $text = "" Then $text = ControlGetText($winhandle, "", $control_id)
    Local $static = _IsStatic($winhandle, $control_id)
    For $i = 1 To $num_spins
        Sleep($spin_delay)
        
        If $static = 1 Then GUISetState(@SW_LOCK, $winhandle)
        ControlSetText($winhandle, "", $control_id, $text)
        If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle)
        For $j = 1 To Round(StringLen($text) / 2) - 1
            Sleep($delay)
            $out_string = StringTrimRight(StringTrimLeft($text, $j), $j)
            For $k = 1 To $j
                $out_string = " " & $out_string & " "
            Next
            If $static = 1 Then GUISetState(@SW_LOCK, $winhandle)
            ControlSetText($winhandle, "", $control_id, $out_string)
            If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle)
        Next
        
        For $j = Round(StringLen($text) / 2) - 1 To 1 Step - 1
            Sleep($delay)
            $out_string = StringTrimRight(StringTrimLeft(_StringReverse($text), $j), $j)
            For $k = 1 To $j
                $out_string = " " & $out_string & " "
            Next
            If $static = 1 Then GUISetState(@SW_LOCK, $winhandle)
            ControlSetText($winhandle, "", $control_id, $out_string)
            If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle)
        Next
        
        If $static = 1 Then GUISetState(@SW_LOCK, $winhandle)
        ControlSetText($winhandle, "", $control_id, _StringReverse($text))
        If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle)
        For $j = 1 To Round(StringLen($text) / 2) - 1
            Sleep($delay)
            $out_string = StringTrimRight(StringTrimLeft(_StringReverse($text), $j), $j)
            For $k = 1 To $j
                $out_string = " " & $out_string & " "
            Next
            If $static = 1 Then GUISetState(@SW_LOCK, $winhandle)
            ControlSetText($winhandle, "", $control_id, $out_string)
            If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle)
        Next
        For $j = Round(StringLen($text) / 2) - 1 To 1 Step - 1
            Sleep($delay)
            $out_string = StringTrimRight(StringTrimLeft($text, $j), $j)
            For $k = 1 To $j
                $out_string = " " & $out_string & " "
            Next
            If $static = 1 Then GUISetState(@SW_LOCK, $winhandle)
            ControlSetText($winhandle, "", $control_id, $out_string)
            If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle)
        Next
        If $static = 1 Then GUISetState(@SW_LOCK, $winhandle)
        ControlSetText($winhandle, "", $control_id, $text)
        If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle)
    Next
    Return 1
EndFunc   ;==>_txt_eff__spin


;===============================================================================
;
; Description:      Widens a given text in the given control.
; Syntax:           _txt_eff__broad($winhandle, $control_id, [$text, [$delay, [$char, [$go_back, [$delay_before_go_back]]]]])
; Parameter(s):     $winhandle - Handle of the target window, $control_id - ID of the target control, $text - The text to animate, $delay - Animation speed (1 = fast, 1000 = slow), $char - char to insert into original text, $go_back - 1: call the ...small effect after widening it / 0: do not call it, $delay_before_go_back - time to wait before going back
; Requirement(s):   v3.1.1.66 (beta) or later
; Return Value(s):  1 - in any case
;
; Author(s):        peethebee <peter_opali@gmx.de>
; Note(s):          None
;
;===============================================================================
Func _txt_eff__broad($winhandle, $control_id, $text = "", $delay = 100, $char = " ", $go_back = "0", $delay_before_go_back = 500)
    If $text = "" Then $text = ControlGetText($winhandle, "", $control_id)
    Local $static = _IsStatic($winhandle, $control_id)
    $rounds = StringLen($text) - 1
    For $i = 1 To $rounds
        $num_left = $i + ($i - 1) * StringLen($char)
        $left = StringLeft($text, $i + ($i - 1) * StringLen($char))
        $right = StringRight($text, StringLen($text) - $num_left)
        $text = $left & $char & $right
        If $static = 1 Then GUISetState(@SW_LOCK, $winhandle)
        ControlSetText($winhandle, "", $control_id, $text)
        If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle)
        Sleep($delay)
    Next
    If $static = 1 Then GUISetState(@SW_LOCK, $winhandle)
    ControlSetText($winhandle, "", $control_id, $text)
    If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle)
    If $go_back = "1" Then
        Sleep($delay_before_go_back)
        _txt_eff__small($winhandle, $control_id, $delay * 0.55, $char) ; _txt_eff__broad is about 45 % faster than _txt_eff__small
    EndIf
    Return 1
EndFunc   ;==>_txt_eff__broad


;===============================================================================
;
; Description:      Smallens a given text in the given control.
; Syntax:           _txt_eff__small($winhandle, $control_id, [$delay, [$char]])
; Parameter(s):     $winhandle - Handle of the target window, $control_id - ID of the target control, $delay - Animation speed (1 = fast, 1000 = slow), $char - char to remove
; Requirement(s):   v3.1.1.66 (beta) or later
; Return Value(s):  1 - in any case
;
; Author(s):        peethebee <peter_opali@gmx.de>
; Note(s):          None; fixed in v1.9.1
;
;===============================================================================
Func _txt_eff__small($winhandle, $control_id, $delay = 100, $char = " ")
    $del_counter = 0
    $text = ControlGetText($winhandle, "", $control_id)
    Local $static = _IsStatic($winhandle, $control_id)
    
    $out_string = $text
    For $i = StringLen($text) To 1 Step - 1
        Sleep($delay)
        If (StringMid($out_string, $i, 1) = $char) and ($del_counter < 1) Then
            $out_string = StringLeft($out_string, $i - 1) & StringTrimLeft($out_string, $i)
            $del_counter = $del_counter + 1
        Else
            $del_counter = 0
        EndIf
        If $static = 1 Then GUISetState(@SW_LOCK, $winhandle)
        ControlSetText($winhandle, "", $control_id, $out_string)
        If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle)
    Next
    Return 1
EndFunc   ;==>_txt_eff__small


;===============================================================================
;
; Description:      Shows a rain like effect, all letters are falling doiwn.
; Syntax:           _txt_eff__raining($winhandle, $control_id, [$text, [$delay, [$duration, [$over_old]]]])
; Parameter(s):     $winhandle - Handle of the target window, $control_id - ID of the target control, $text - The text to animate, $delay - Animation speed (1 = fast, 1000 = slow), $duration = maximum effect time (ms), $over_old - 0: Remove old text before startin effect / 1: Do not remove it
; Requirement(s):   v3.1.1.66 (beta) or later
;
; Return Value(s):  1 - in any case
; Author(s):        peethebee <peter_opali@gmx.de>
; Note(s):          None
;
;===============================================================================
Func _txt_eff__raining($winhandle, $control_id, $text = "", $delay = 50, $duration = 3000, $over_old = 0)
    If $text = "" Then $text = ControlGetText($winhandle, "", $control_id)
    Local $static = _IsStatic($winhandle, $control_id)
    If $over_old = 1 Then
        $orig_text = ControlGetText($winhandle, "", $control_id)
        $out_string = $orig_text
        If StringLen($orig_text) < StringLen($text) Then
            For $i = StringLen($orig_text) To StringLen($text)
                $out_string = $out_string & " "
            Next
        ElseIf StringLen($orig_text) > StringLen($text) Then
            For $i = StringLen($text) To StringLen($orig_text)
                $text = $text & " "
            Next
        EndIf
    Else
        $out_string = ""
        For $i = 1 To StringLen($text)
            $out_string = $out_string & " "
        Next
    EndIf
    
    $time = 0
    While $time <= $duration - $delay
        Sleep($delay)
        $pos = Random(1, StringLen($text), 1)
        $out_string = StringLeft($out_string, $pos - 1) & StringMid($text, $pos, 1) & StringTrimLeft($out_string, $pos)
        If $static = 1 Then GUISetState(@SW_LOCK, $winhandle)
        ControlSetText($winhandle, "", $control_id, $out_string)
        If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle)
        $time = $time + $delay
    WEnd
    
    If $static = 1 Then GUISetState(@SW_LOCK, $winhandle)
    ControlSetText($winhandle, "", $control_id, $text)
    If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle)
    Return 1
EndFunc   ;==>_txt_eff__raining


;===============================================================================
;
; Description:      Moves a capital letter trough the text.
; Syntax:
; Parameter(s):     $winhandle - Handle of the target window, $control_id - ID of the target control, $text - The text to animate, $delay - Animation speed (1 = fast, 1000 = slow),
; Requirement(s):   v3.1.1.66 (beta) or later
;
; Return Value(s):  1 - in any case
; Author(s):        peethebee <peter_opali@gmx.de>
; Note(s):          New in v1.6
;
;===============================================================================
Func _txt_eff__move_cap_char_through_text($winhandle, $control_id, $text = "", $delay = 50, $effect_width_chars = 1, $direction = "to_right", $convert_to_small = 0)
    If $text = "" Then $text = ControlGetText($winhandle, "", $control_id)
    Local $static = _IsStatic($winhandle, $control_id)
    
    If $direction = "to_left" Then
        $start = StringLen($text) - StringLen($effect_width_chars)
        $end = 0
        $step = -1
    Else
        $start = 0
        $end = StringLen($text) - StringLen($effect_width_chars)
        $step = 1
    EndIf
    
    $res_text = $text
    If $convert_to_small = 1 Then $res_text = StringLower($text)
    
    For $i = $start To $end Step $step
        Sleep($delay)
        $left = StringLeft($res_text, $i)
        $middle = StringUpper(StringMid($res_text, $i + 1, $effect_width_chars))
        $right = StringTrimLeft($res_text, $i + $effect_width_chars)
        $out_string = $left & $middle & $right
        If $static = 1 Then GUISetState(@SW_LOCK, $winhandle)
        ControlSetText($winhandle, "", $control_id, $out_string)
        If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle)
    Next
    Sleep($delay)
    If $static = 1 Then GUISetState(@SW_LOCK, $winhandle)
    ControlSetText($winhandle, "", $control_id, $text)
    If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle)
    Return 1
EndFunc   ;==>_txt_eff__move_cap_char_through_text


;===============================================================================
;
; Description:      Moves a small letter trough the text.
; Syntax:
; Parameter(s):     $winhandle - Handle of the target window, $control_id - ID of the target control, $text - The text to animate, $delay - Animation speed (1 = fast, 1000 = slow),
; Requirement(s):   v3.1.1.66 (beta) or later
;
; Return Value(s):  1 - in any case
; Author(s):        peethebee <peter_opali@gmx.de>
; Note(s):          New in v1.6
;
;===============================================================================
Func _txt_eff__move_small_char_through_text($winhandle, $control_id, $text = "", $delay = 50, $effect_width_chars = 1, $direction = "to_right", $convert_to_caps = 0)
    If $text = "" Then $text = ControlGetText($winhandle, "", $control_id)
    Local $static = _IsStatic($winhandle, $control_id)
    
    If $direction = "to_left" Then
        $start = StringLen($text) - StringLen($effect_width_chars)
        $end = 0
        $step = -1
    Else
        $start = 0
        $end = StringLen($text) - StringLen($effect_width_chars)
        $step = 1
    EndIf
    
    $res_text = $text
    If $convert_to_caps = 1 Then $res_text = StringUpper($text)
    
    For $i = $start To $end Step $step
        Sleep($delay)
        $left = StringLeft($res_text, $i)
        $middle = StringLower(StringMid($res_text, $i + 1, $effect_width_chars))
        $right = StringTrimLeft($res_text, $i + $effect_width_chars)
        $out_string = $left & $middle & $right
        If $static = 1 Then GUISetState(@SW_LOCK, $winhandle)
        ControlSetText($winhandle, "", $control_id, $out_string)
        If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle)
    Next
    
    Sleep($delay)
    If $static = 1 Then GUISetState(@SW_LOCK, $winhandle)
    ControlSetText($winhandle, "", $control_id, $text)
    If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle)
    Return 1
EndFunc   ;==>_txt_eff__move_small_char_through_text


;===============================================================================
;
; Description:      Scrolls through several options until the target text is found.
; Syntax:
; Parameter(s):     $winhandle - Handle of the target window, $control_id - ID of the target control, $text - The text to animate, $delay - Animation speed (1 = fast, 1000 = slow),
; Requirement(s):   v3.1.1.66 (beta) or later
;
; Return Value(s):  1 - in any case
; Author(s):        peethebee <peter_opali@gmx.de>
; Note(s):          New in v1.6
;
;===============================================================================
Func _txt_eff__scroll_through_options($winhandle, $control_id, $options, $target_text = "", $delay = 50)
    If $target_text = "" Then $target_text = ControlGetText($winhandle, "", $control_id)
    Local $static = _IsStatic($winhandle, $control_id)
    
    For $i = 0 To UBound($options) - 1
        Sleep($delay)
        
        $out_string = $options[$i]
        If $static = 1 Then GUISetState(@SW_LOCK, $winhandle)
        ControlSetText($winhandle, "", $control_id, $out_string)
        If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle)
        If $out_string = $target_text Then ExitLoop
    Next
    Return 1
EndFunc   ;==>_txt_eff__scroll_through_options


;===============================================================================
;
; Description:      Uncovers the text going from left to right and ack until everything is uncovered.
; Syntax:
; Parameter(s):     $winhandle - Handle of the target window, $control_id - ID of the target control, $text - The text to animate, $delay - Animation speed (1 = fast, 1000 = slow),
; Requirement(s):   v3.1.1.66 (beta) or later
;
; Return Value(s):  1 - in any case
; Author(s):        peethebee <peter_opali@gmx.de>
; Note(s):          New in v1.6
;
;===============================================================================
Func _txt_eff__uncover_from_wall_to_wall($winhandle, $control_id, $text = "", $delay = 50, $turn_arounds = 1)
    If $text = "" Then $text = ControlGetText($winhandle, "", $control_id)
    Local $static = _IsStatic($winhandle, $control_id)
    $turn_arounds = $turn_arounds + 1 ; better for internal use
    
    $out_string = ""
    For $i = 1 To StringLen($text)
        $out_string = $out_string & " "
    Next
    
    For $i = 1 To $turn_arounds
        $start = $i
        $end = _Floor (StringLen($text) / $turn_arounds) * $turn_arounds
        If Mod(StringLen($text), $turn_arounds) >= $i Then
            $end = $end + $i
        Else
            $end = $end - $turn_arounds + $i
        EndIf
        
        If Mod($i, 2) = 1 Then ; ungerade
            $step = $turn_arounds
        Else
            _Swap($start, $end)
            $step = -$turn_arounds
        EndIf
        
        For $j = $start To $end Step $step
            Sleep($delay)
            $out_string = _StringInsertAtPos($out_string, $j, StringMid($text, $j, 1))
            If $static = 1 Then GUISetState(@SW_LOCK, $winhandle)
            ControlSetText($winhandle, "", $control_id, $out_string)
            If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle)
        Next
    Next
    Return 1
EndFunc   ;==>_txt_eff__uncover_from_wall_to_wall


;===============================================================================
;
; Description:      Simulates a wave through the text.
; Syntax:
; Parameter(s):     $winhandle - Handle of the target window, $control_id - ID of the target control, $text - The text to animate, $delay - Animation speed (1 = fast, 1000 = slow),
; Requirement(s):   v3.1.1.66 (beta) or later
;
; Return Value(s):  1 - in any case
; Author(s):        peethebee <peter_opali@gmx.de>
; Note(s):          New in v1.6
;
;===============================================================================
Func _txt_eff__wave($winhandle, $control_id, $text = "", $delay = 50, $effect_width = 3, $uncover_after_effect = 1, $direction = "to_right")
    If $text = "" Then $text = ControlGetText($winhandle, "", $control_id)
    Local $static = _IsStatic($winhandle, $control_id)
    $orig_text = $text
    
    $empty_string = ""
    For $i = 1 To StringLen($text) + $effect_width * 2
        $empty_string = $empty_string & " "
    Next
    
    For $i = 1 To $effect_width
        $text = " " & $text & " "
    Next
    
    If $direction = "to_right" Then
        $start = 1
        $end = StringLen($text) + $effect_width * 2
        $step = 1
    Else
        $start = StringLen($text) + $effect_width * 2
        $end = 1
        $step = -1
    EndIf
    
    For $i = $start To $end Step $step
        Sleep($delay)
        $out_string = _StringInsertAtPos($empty_string, $i, StringMid($text, $i, $effect_width))
        $out_string = StringTrimLeft(StringTrimRight($out_string, $effect_width), $effect_width)
        If $static = 1 Then GUISetState(@SW_LOCK, $winhandle)
        ControlSetText($winhandle, "", $control_id, $out_string)
        If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle)
    Next
    
    If $uncover_after_effect = 1 Then
        Sleep($delay)
        If $static = 1 Then GUISetState(@SW_LOCK, $winhandle)
        ControlSetText($winhandle, "", $control_id, $orig_text)
        If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle)
    EndIf
    
    Return 1
EndFunc   ;==>_txt_eff__wave


;===============================================================================
;
; Description:      Shows a customizable blink effect.
; Syntax:
; Parameter(s):     $winhandle - Handle of the target window, $control_id - ID of the target control, $text - The text to animate, $delay - Animation speed (1 = fast, 1000 = slow),
; Requirement(s):   v3.1.1.66 (beta) or later
;
; Return Value(s):  1 - in any other case
; Author(s):        peethebee <peter_opali@gmx.de>
; Note(s):          New in v1.6, possible types: "all", "periodic", "parts", advanced: "all": none, "periodic": step, "parts": array containing cutting positions
;
;===============================================================================
Func _txt_eff__blink($winhandle, $control_id, $text = "", $show_delay = 50, $hide_delay = 50, $blink_type = "all", $advanced = "", $repetitions = 1)
    If $text = "" Then $text = ControlGetText($winhandle, "", $control_id)
    Local $static = _IsStatic($winhandle, $control_id)
    
    If $blink_type = "all" Then
        For $i = 1 To $repetitions
            Sleep($hide_delay)
            If $static = 1 Then GUISetState(@SW_LOCK, $winhandle)
            ControlSetText($winhandle, "", $control_id, $text)
            If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle)
            Sleep($show_delay)
            If $static = 1 Then GUISetState(@SW_LOCK, $winhandle)
            ControlSetText($winhandle, "", $control_id, "")
            If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle)
        Next
        If $static = 1 Then GUISetState(@SW_LOCK, $winhandle)
        ControlSetText($winhandle, "", $control_id, $text)
        If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle)
        
    ElseIf $blink_type = "periodic" Then
        For $j = 1 To $repetitions
            For $i = 1 To $advanced
                $start = $i
                $end = _Floor (StringLen($text) / $advanced) * $advanced
                If Mod(StringLen($text), $advanced) >= $i Then
                    $end = $end + $i
                Else
                    $end = $end - $advanced + $i
                EndIf
                
                If Mod($i, 2) = 1 Then ; ungerade
                    $step = $advanced
                Else
                    _Swap($start, $end)
                    $step = -$advanced
                EndIf
                
                $out_string = ""
                For $m = 1 To StringLen($text)
                    $out_string = $out_string & " "
                Next
                For $k = $start To $end Step $step
                    $out_string = _StringInsertAtPos($out_string, $k, StringMid($text, $k, 1))
                Next
                Sleep($hide_delay)
                If $static = 1 Then GUISetState(@SW_LOCK, $winhandle)
                ControlSetText($winhandle, "", $control_id, $out_string)
                If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle)
                Sleep($show_delay)
                If $static = 1 Then GUISetState(@SW_LOCK, $winhandle)
                ControlSetText($winhandle, "", $control_id, "")
                If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle)
            Next
        Next
        If $static = 1 Then GUISetState(@SW_LOCK, $winhandle)
        ControlSetText($winhandle, "", $control_id, $text)
        If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle)
        
    ElseIf $blink_type = "parts" Then
        For $j = 1 To $repetitions
            If IsArray($advanced) <> 1 Then
                $advanced = StringSplit($advanced, ".")
                _ArrayReverse($advanced)
                _ArrayPop($advanced)
                _ArrayReverse($advanced)
            EndIf
            For $i = -1 To UBound($advanced) - 1
                $out_string = ""
                For $m = 1 To StringLen($text) - 1
                    $out_string = $out_string & " "
                Next
                If $i = -1 Then
                    $out_string = _StringInsertAtPos($out_string, 0, StringMid($text, 1, $advanced[0]))
                ElseIf $i = UBound($advanced) - 1 Then
                    $out_string = _StringInsertAtPos($out_string, $advanced[$i] + 1, StringMid($text, $advanced[$i] + 1, StringLen($text) - $advanced[$i]))
                Else
                    $out_string = _StringInsertAtPos($out_string, $advanced[$i] + 1, StringMid($text, $advanced[$i] + 1, $advanced[$i + 1] - $advanced[$i]))
                EndIf
                Sleep($hide_delay)
                If $static = 1 Then GUISetState(@SW_LOCK, $winhandle)
                ControlSetText($winhandle, "", $control_id, $out_string)
                If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle)
                Sleep($show_delay)
                If $static = 1 Then GUISetState(@SW_LOCK, $winhandle)
                ControlSetText($winhandle, "", $control_id, "")
                If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle)
            Next
        Next
        If $static = 1 Then GUISetState(@SW_LOCK, $winhandle)
        ControlSetText($winhandle, "", $control_id, $text)
        If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle)
    EndIf
    
    Return 1
EndFunc   ;==>_txt_eff__blink


;===============================================================================
;
; Description:      Mixes up two chars and goes through the text.
; Syntax:
; Parameter(s):     $winhandle - Handle of the target window, $control_id - ID of the target control, $text - The text to animate, $delay - Animation speed (1 = fast, 1000 = slow),
; Requirement(s):   v3.1.1.66 (beta) or later
;
; Return Value(s):  1 - in any case
; Author(s):        peethebee <peter_opali@gmx.de>
; Note(s):          New in v1.6
;
;===============================================================================
Func _txt_eff__mix_up_chars($winhandle, $control_id, $text = "", $delay = 50, $effect_width = 1, $direction = "to_right")
    If $text = "" Then $text = ControlGetText($winhandle, "", $control_id)
    Local $static = _IsStatic($winhandle, $control_id)
    $orig_text = $text
    
    For $i = 1 To $effect_width
        $text = " " & $text & " "
    Next
    
    If $direction = "to_right" Then
        $start = 1
        $end = StringLen($text) + $effect_width ; *2
        $step = 1
    Else
        $start = StringLen($text) + $effect_width
        $end = 1
        $step = -1
    EndIf
    
    For $i = $start To $end Step $step
        Sleep($delay)
        $first_char = StringMid($text, $i, 1)
        $second_char = StringMid($text, $i + $effect_width, 1)
        
        If _IsCap($second_char) = 1 Then
            $first_char_res = StringUpper($first_char)
        ElseIf _IsCap($second_char) = 2 Then
            $first_char_res = StringLower($first_char)
        Else
            $first_char_res = $first_char
        EndIf
        
        If _IsCap($first_char) = 1 Then
            $second_char_res = StringUpper($second_char)
        ElseIf _IsCap($first_char) = 2 Then
            $second_char_res = StringLower($second_char)
        Else
            $second_char_res = $second_char
        EndIf
        
        $out_string = _StringInsertAtPos($text, $i, $second_char_res)
        $out_string = _StringInsertAtPos($out_string, $i + $effect_width, $first_char_res)
        $out_string = StringTrimLeft(StringTrimRight($out_string, $effect_width), $effect_width)
        If $static = 1 Then GUISetState(@SW_LOCK, $winhandle)
        ControlSetText($winhandle, "", $control_id, $out_string)
        If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle)
    Next
    If $static = 1 Then GUISetState(@SW_LOCK, $winhandle)
    ControlSetText($winhandle, "", $control_id, $orig_text)
    If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle)
    
    Return 1
EndFunc   ;==>_txt_eff__mix_up_chars


;===============================================================================
;
; Description:      Highlights some chars and goes through the text.
; Syntax:
; Parameter(s):     $winhandle - Handle of the target window, $control_id - ID of the target control, $text - The text to animate, $delay - Animation speed (1 = fast, 1000 = slow),
; Requirement(s):   v3.1.1.66 (beta) or later
;
; Return Value(s):  1 - in any case
; Author(s):        peethebee <peter_opali@gmx.de>
; Note(s):          New in v1.6, $display_type: 0 - show only effect, 1 - show text with effect, 2 - show whole text
;
;===============================================================================
Func _txt_eff__spotlight($winhandle, $control_id, $text = "", $delay = 50, $effect_width = 1, $highlighting_start_char = "(", $highlighting_end_char = ")", $display_type = 2, $direction = "to_right")
    If $text = "" Then $text = ControlGetText($winhandle, "", $control_id)
    Local $static = _IsStatic($winhandle, $control_id)
    $orig_text = $text
    
    If $direction = "to_right" Then
        $start = 1
        $end = StringLen($text)
        $step = 1
    Else
        $start = StringLen($text)
        $end = 1
        $step = -1
    EndIf
    
    For $i = $start To $end Step $step
        Sleep($delay)
        
        If $display_type = 0 Then
            $empty_string = ""
            For $j = 1 To StringLen($text)
                $empty_string = $empty_string & " "
            Next
            $char = StringMid($text, $i, $effect_width)
            $out_string = _StringInsertAtPos($empty_string, $i + $effect_width, $highlighting_end_char, 0)
            $out_string = _StringInsertAtPos($out_string, $i, $char)
            $out_string = _StringInsertAtPos($out_string, $i, $highlighting_start_char, 0)
            
        ElseIf $display_type = 1 Then
            $out_string = StringLeft($text, $i)
            $out_string = _StringInsertAtPos($out_string, $i + $effect_width, $highlighting_end_char, 0)
            $out_string = _StringInsertAtPos($out_string, $i, $highlighting_start_char, 0)
            
        Else
            $out_string = _StringInsertAtPos($text, $i + $effect_width, $highlighting_end_char, 0)
            $out_string = _StringInsertAtPos($out_string, $i, $highlighting_start_char, 0)
            
        EndIf
        
        If $static = 1 Then GUISetState(@SW_LOCK, $winhandle)
        ControlSetText($winhandle, "", $control_id, $out_string)
        If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle)
    Next
    
    Sleep($delay)
    If $static = 1 Then GUISetState(@SW_LOCK, $winhandle)
    ControlSetText($winhandle, "", $control_id, $orig_text)
    If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle)
    
    Return 1
EndFunc   ;==>_txt_eff__spotlight


;===============================================================================
;
; Description:      Shows a about box with many different effects.
; Syntax:           _txt_eff__about_messages($winhandle, $control_id, $texts, [$delay, [$showtime, [$pause, [$type]]]])
; Parameter(s):     $winhandle - Handle of the target window, $control_id - ID of the target control, $texts - Array containing all messages to show, $delay - Animation speed (1 = fast, 1000 = slow), $showtime - time the single message is shown (also possible: array with values correspondenting to $texts), $pause - time to wait until the next message is displayed, $type - type of the animation: "raining, "right_to_left", "left_to_right", "right_to_right", "left_to_left", "enlarge_from_left", "enlarge_from_right", "zoom_big_to_small", "zoom_small_to_big", "move_cap_char", "move_small_char", "wall_to_wall", "blink", "wave", "mix_up", "spotlight", "fade", "rainbow", "modern"
; Requirement(s):   v3.1.1.66 (beta) or later
; Return Value(s):  1 - if $texts is an array
;                   0 - if $texts is no array
;                   2 - if $type is no valid type
; Author(s):        peethebee <peter_opali@gmx.de>
; Note(s):          None
;
;===============================================================================
Func _txt_eff__about_messages($winhandle, $control_id, $texts, $delay = 50, $showtime = 2000, $pause = 750, $type = "right_to_left")
    If IsArray($texts) <> 0 Then
        Local $static = _IsStatic($winhandle, $control_id)
        
        If $static = 1 Then GUISetState(@SW_LOCK, $winhandle)
        ControlSetText($winhandle, "", $control_id, "")
        If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle)
        If ($type = "right_to_left") or ($type = "left_to_right") or ($type = "left_to_left") or ($type = "right_to_right") Then
            $text_min_width = 14
            For $i = 0 To UBound($texts) - 1
                If StringLen($texts[$i]) > $text_min_width Then $text_min_width = StringLen($texts[$i])
            Next
            $text_min_width = $text_min_width + 5
            
        ElseIf $type = "modern" Then
            
            ; ------- parameters -------
            Local $_l_height = 20 ; height of a single line (label)
            Local $_no_color = 0xECE9D8
            Local $_black = 0x000000
            Local $_messages = 5
            Dim $_labels[$_messages]
            
            ; enlarge Arrray
            For $k = 1 To $_messages
                _ArrayInsert($texts, 0, "")
                _ArrayInsert($texts, UBound($texts), "")
            Next
            
            $_txt_eff_about_gui = GUICreate("About", 250, $_l_height + 20 + $_l_height * $_messages + 60) ; the about win's title, width and height here
            $_txt_eff_gui_ok_button = GUICtrlCreateButton("&Ok", 10, $_l_height + 20 + $_l_height * $_messages + 25, 230, 25, $BS_DEFPUSHBUTTON)
                
            
            For $k = 1 To $_messages
                $_style = $SS_CENTER ; styles are located here!
                $_labels[$k - 1] = GUICtrlCreateLabel("[Error]", 10, 50 + 25 * $k, 210, $_l_height, $_style)
            Next
            
            GUISetState(@SW_SHOW)
                        
            
            For $k = 0 To UBound($texts) - $_messages
                
                GUICtrlSetColor($_labels[$_messages - 1], 0xECE9D8)
                For $p = 0 To $_messages - 1
                    GUICtrlSetPos($_labels[$p], 19, $_l_height + 20 + $_l_height * $p, 210, $_l_height)
                    GUICtrlSetData($_labels[$p], $texts[$k + $p])
                Next
                
                For $c = 0 To - $_l_height Step - 1   ; control's height is here again
                    Sleep($delay)
                    
                    GUISetState(@SW_LOCK)
                    ; move
                    For $z = 0 To $_messages - 1
                        GUICtrlSetPos($_labels[$z], 19, $_l_height + 20 + $_l_height * $z + $c, 210, $_l_height)
                    Next
                    
                    ; fade
                    $red_diff = _ColorGetRed($_black) - _ColorGetRed($_no_color)
                    $green_diff = _ColorGetGreen($_black) - _ColorGetGreen($_no_color)
                    $blue_diff = _ColorGetBlue($_black) - _ColorGetBlue($_no_color)
                    $red_res = Hex(_ColorGetRed($_black) + Round($red_diff / $_l_height * ($c + $_l_height + 1)), 2)
                    $green_res = Hex(_ColorGetGreen($_black) + Round($green_diff / $_l_height * ($c + $_l_height + 1)), 2)
                    $blue_res = Hex(_ColorGetBlue($_black) + Round($blue_diff / $_l_height * ($c + $_l_height + 1)), 2)
                    GUICtrlSetColor($_labels[0], "0x" & $red_res & $green_res & $blue_res)
                    
                    $red_diff = _ColorGetRed($_no_color) - _ColorGetRed($_black)
                    $green_diff = _ColorGetGreen($_no_color) - _ColorGetGreen($_black)
                    $blue_diff = _ColorGetBlue($_no_color) - _ColorGetBlue($_black)
                    $red_res = Hex(_ColorGetRed($_black) + Round($red_diff / $_l_height * ($c + $_l_height + 1)), 2)
                    $green_res = Hex(_ColorGetGreen($_black) + Round($green_diff / $_l_height * ($c + $_l_height + 1)), 2)
                    $blue_res = Hex(_ColorGetBlue($_black) + Round($blue_diff / $_l_height * ($c + $_l_height + 1)), 2)
                    GUICtrlSetColor($_labels[$_messages - 1], "0x" & $red_res & $green_res & $blue_res)
                    
                    GUISetState(@SW_UNLOCK)
                    
                    ; check if close event is there
                    $_about_msg = GUIGetMsg()
                    If $_about_msg = $GUI_EVENT_CLOSE Or $_about_msg = $_txt_eff_gui_ok_button Then ExitLoop 2
                Next
            Next
            GUIDelete($_txt_eff_about_gui)
        Else
            
            For $i = 0 To UBound($texts) - 1
                If IsArray($showtime) = 1 Then
                    $real_showtime = $showtime[$i]
                Else
                    $real_showtime = $showtime
                EndIf
                Sleep($pause)
                Select
                    Case $type = "right_to_left"
                        _txt_eff__move_in_from_right($winhandle, $control_id, $texts[$i], $delay, $text_min_width)
                        Sleep($real_showtime)
                        _txt_eff__move_out_to_left($winhandle, $control_id, $texts[$i], $delay)
                    Case $type = "left_to_right"
                        _txt_eff__move_in_from_left($winhandle, $control_id, $texts[$i], $delay)
                        Sleep($real_showtime)
                        _txt_eff__move_out_to_right($winhandle, $control_id, $texts[$i], $delay, $text_min_width)
                    Case $type = "raining"
                        _txt_eff__raining($winhandle, $control_id, $texts[$i], $delay, Round($real_showtime / 3), 1)
                        Sleep($real_showtime)
                    Case $type = "right_to_right"
                        _txt_eff__move_in_from_right($winhandle, $control_id, $texts[$i], $delay, $text_min_width)
                        Sleep($real_showtime)
                        _txt_eff__move_out_to_right($winhandle, $control_id, $texts[$i], $delay, $text_min_width)
                    Case $type = "left_to_left"
                        _txt_eff__move_in_from_left($winhandle, $control_id, $texts[$i], $delay)
                        Sleep($real_showtime)
                        _txt_eff__move_out_to_left($winhandle, $control_id, $texts[$i], $delay)
                    Case $type = "enlarge_from_left"
                        _txt_eff__enlarge_from_left($winhandle, $control_id, $texts[$i], $delay, 1)
                        Sleep($real_showtime)
                    Case $type = "enlarge_from_right"
                        _txt_eff__enlarge_from_right($winhandle, $control_id, $texts[$i], $delay, 1)
                        Sleep($real_showtime)
                    Case $type = "zoom_big_to_small"
                        _txt_eff__zoom($winhandle, $control_id, $texts[$i], $delay, 20, 14, 1, "Times New Roman", 0)
                        Sleep($real_showtime)
                        _txt_eff__zoom($winhandle, $control_id, $texts[$i], $delay, 14, 2, 2, "Times New Roman", 1)
                    Case $type = "zoom_small_to_big"
                        _txt_eff__zoom($winhandle, $control_id, $texts[$i], $delay, 2, 14, 2, "Times New Roman", 0)
                        Sleep($real_showtime)
                        _txt_eff__zoom($winhandle, $control_id, $texts[$i], $delay, 14, 20, 1, "Times New Roman", 1)
                    Case $type = "move_cap_char"
                        _txt_eff__move_cap_char_through_text($winhandle, $control_id, $texts[$i], $delay, 1, "to_right", 0)
                        Sleep($real_showtime)
                    Case $type = "move_small_char"
                        _txt_eff__move_small_char_through_text($winhandle, $control_id, $texts[$i], $delay, 1, "to_right", 1)
                        Sleep($real_showtime)
                    Case $type = "wall_to_wall"
                        _txt_eff__uncover_from_wall_to_wall($winhandle, $control_id, $texts[$i], $delay, 1)
                        Sleep($real_showtime)
                    Case $type = "blink"
                        _txt_eff__blink($winhandle, $control_id, $texts[$i], $delay, 500, "all", "", 2)
                        Sleep($real_showtime)
                    Case $type = "wave"
                        _txt_eff__wave($winhandle, $control_id, $texts[$i], $delay, 3, 1, "to_right")
                        Sleep($real_showtime)
                    Case $type = "mix_up"
                        _txt_eff__mix_up_chars($winhandle, $control_id, $texts[$i], $delay, 1, "to_right")
                        Sleep($real_showtime)
                    Case $type = "spotlight"
                        _txt_eff__spotlight($winhandle, $control_id, $texts[$i], $delay, 1, "<", ">", 2, "to_right")
                        Sleep($real_showtime)
                    Case $type = "fade"
                        _txt_eff__fade_in($winhandle, $control_id, $texts[$i], 1000, 100, "win_xp_bg")
                        Sleep($real_showtime)
                        _txt_eff__fade_out($winhandle, $control_id, $texts[$i], 1000, 100, "win_xp_bg")
                    Case $type = "rainbow"
                        _txt_eff__rainbow($winhandle, $control_id, $texts[$i], $delay, Round($delay / 10), 0)
                        Sleep($real_showtime)
                        
                    Case Else
                        Return 2
                EndSelect
            Next
        EndIf
        Return 1
    Else
        Return 0
    EndIf
EndFunc   ;==>_txt_eff__about_messages



; ---------------------------------
; ---------------------------------
; -----  2. control animation -----
; ---------------------------------
; ---------------------------------


;===============================================================================
;
; Description:      Zooms the text in the control in or out.
; Syntax:           _txt_eff__zoom($winhandle, $control_id, [$text, [$delay, [$start_size, [$end_size, [$step, [$font, [$remove]]]]]]])
; Parameter(s):     $winhandle - Handle of the target window, $control_id - ID of the target control, $text - the text for the animation, $delay - Animation speed (1 = fast, 1000 = slow), $start_size - font size at the begining of the effect, $end_size - font size at the end of the effect, $step - step on de-/increasing the font size, $font - font name, $remove 0: Don't remove text after effect / 1: remove text after effect
; Requirement(s):   v3.1.1.66 (beta) or later
; Return Value(s):  1 - in any case
; Author(s):        peethebee <peter_opali@gmx.de>
; Note(s):          Minimum size should be 2. If $text is left empty, cthe current control's text will be used. Step has to be positiv in any case.
; Questions to solve:
;                    How to read the current font size and name of the control??
;                    How to make the control resize itself to the text's width and height??
;===============================================================================
Func _txt_eff__zoom($winhandle, $control_id, $text = "", $delay = 50, $start_size = 9, $end_size = 2, $step = 1, $font = "Courier New", $remove = 0)
    
    $start_ctrl_pos = ControlGetPos($winhandle, "", $control_id)
    If $text = "" Then $text = ControlGetText($winhandle, "", $control_id)
    
    If $start_size > $end_size Then $step = - ($step)
    
    For $i = $start_size To $end_size Step $step
        Sleep($delay)
        GUICtrlSetFont($control_id, $i, -1, -1, $font)
        If $i = $start_size Then
            GUISetState(@SW_LOCK, $winhandle)
            ControlSetText($winhandle, "", $control_id, $text)
            GUISetState(@SW_UNLOCK, $winhandle)
        EndIf
    Next
    
    If $remove = 1 Then
        GUISetState(@SW_LOCK, $winhandle)
        ControlSetText($winhandle, "", $control_id, "")
        GUISetState(@SW_UNLOCK, $winhandle)
        ControlMove($winhandle, "", $control_id, $start_ctrl_pos[0], $start_ctrl_pos[1], $start_ctrl_pos[2], $start_ctrl_pos[3])
    EndIf
    Return 1
EndFunc   ;==>_txt_eff__zoom


;===============================================================================
;
; Description:      Sets the text italic, underlined or bold.
; Syntax:
; Parameter(s):
; Requirement(s):   v3.1.1.66 (beta) or later
; Return Value(s):  1 - in any case
; Author(s):        peethebee <peter_opali@gmx.de>
; Note(s):          types: italic, underline, bold
; Questions to solve:
;                    How to read out text size and so on on the func's startup?
;===============================================================================
Func _txt_eff__style($winhandle, $control_id, $text = "", $type = "bold", $font = "Courier New", $remove = 1, $show_time = 1500)
    If $text = "" Then $text = ControlGetText($winhandle, "", $control_id)
    Local $static = _IsStatic($winhandle, $control_id)
    
    GUISetState(@SW_LOCK, $winhandle)
    If $type = "bold" Then
        GUICtrlSetFont($control_id, -1, 800, -1, $font)
    ElseIf $type = "underline" Then
        GUICtrlSetFont($control_id, -1, -1, 4, $font)
    ElseIf $type = "italic" Then
        GUICtrlSetFont($control_id, -1, -1, 2, $font)
    EndIf
    GUISetState(@SW_UNLOCK, $winhandle)
    
    If $remove = 1 Then
        Sleep($show_time)
        GUISetState(@SW_LOCK, $winhandle)
        GUICtrlSetFont($control_id, -1, 400, 0, $font)
        GUISetState(@SW_UNLOCK, $winhandle)
    EndIf
    Return 1
EndFunc   ;==>_txt_eff__style




; ---------------------------------
; ---------------------------------
; -----  3. colourful effects -----
; ---------------------------------
; ---------------------------------


;===============================================================================
;
; Description:      Changes the text color in the given order and time.
; Syntax:
; Parameter(s):     $winhandle - Handle of the target window, $control_id - ID of the target control, $texts - Array containing all messages to show, $delay - Animation speed (1 = fast, 1000 = slow)
; Requirement(s):   v3.1.1.66 (beta) or later
; Return Value(s):  1 - in any case
; Author(s):        peethebee <peter_opali@gmx.de>
; Note(s):          $colors can be either an array or a string
;                   Question: Can this be used in "foreign" windows too?
;                   Look into the current help file to see, which controls are supported
;===============================================================================
Func _txt_eff__color_sequence($winhandle, $control_id, $text = "", $delay = 50, $colors = "black.green.blue. 0xffffff")
    If $text = "" Then $text = ControlGetText($winhandle, "", $control_id)
    Local $static = _IsStatic($winhandle, $control_id)
    
    If $static = 1 Then GUISetState(@SW_LOCK, $winhandle)
    ControlSetText($winhandle, "", $control_id, $text)
    If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle)
    
    If IsArray($colors) <> 1 Then
        $colors = StringStripWS($colors, 8) ; delete all spaces
        $colors = StringSplit($colors, ".")
        ; kill first element
        _ArrayReverse($colors)
        _ArrayPop($colors)
        _ArrayReverse($colors)
    EndIf
    
    For $i = 0 To UBound($colors) - 1
        Sleep($delay)
        $color = $colors[$i]
        If StringIsXDigit($color) = 0 Then $color = _GetColorByName($color)
        GUICtrlSetColor($control_id, $color)
    Next
    
    Return 1
EndFunc   ;==>_txt_eff__color_sequence


;===============================================================================
;
; Description:      Changes the text color in the order of the rainbow.
; Syntax:
; Parameter(s):     $winhandle - Handle of the target window, $control_id - ID of the target control, $texts - Array containing all messages to show, $delay - Animation speed (1 = fast, 1000 = slow)
; Requirement(s):   v3.1.1.66 (beta) or later
; Return Value(s):  1 - in any case
; Author(s):        peethebee <peter_opali@gmx.de>
; Note(s):          $colors can be either an array or a string
;                   Look into the current help file to see, which controls are supported
;===============================================================================
Func _txt_eff__rainbow($winhandle, $control_id, $text = "", $duration_per_change = 2000, $precision = 50, $direction = 0)
    If $direction = 0 Then
        _txt_eff__color_to_color($winhandle, $control_id, $text, $duration_per_change, "black.red.orange.yellow.green.blue.violet.black", $precision)
    Else
        _txt_eff__color_to_color($winhandle, $control_id, $text, $duration_per_change, "black.violet.blue.green.yellow.orange.red.black", $precision)
    EndIf
EndFunc   ;==>_txt_eff__rainbow


;===============================================================================
;
; Description:      Permorms a fade from one color to another.
; Syntax:
; Parameter(s):     $winhandle - Handle of the target window, $control_id - ID of the target control, $texts - Array containing all messages to show, $delay - Animation speed (1 = fast, 1000 = slow)
; Requirement(s):   v3.1.1.66 (beta) or later
; Return Value(s):  1 - in any case
; Author(s):        peethebee <peter_opali@gmx.de>
; Note(s):          Look into the current help file to see, which controls are supported
;===============================================================================
Func _txt_eff__color_to_color($winhandle, $control_id, $text = "", $duration_per_change = 2000, $colors = "black. white", $precision = 100)
    If $text = "" Then $text = ControlGetText($winhandle, "", $control_id)
    Local $static = _IsStatic($winhandle, $control_id)
    
    If IsArray($colors) <> 1 Then
        $colors = StringStripWS($colors, 8) ; delete all spaces
        $colors = StringSplit($colors, ".")
        ; kill first element
        _ArrayReverse($colors)
        _ArrayPop($colors)
        _ArrayReverse($colors)
    EndIf
    
    
    For $i = 0 To UBound($colors) - 2
        If StringIsXDigit($colors[$i]) = 0 Then
            $start_color = _GetColorByName($colors[$i])
        Else
            $start_color = $colors[$i]
        EndIf
        
        If StringIsXDigit($colors[$i + 1]) = 0 Then
            $end_color = _GetColorByName($colors[$i + 1])
        Else
            $end_color = $colors[$i + 1]
        EndIf
        
        For $j = 1 To $precision
            Sleep(Round($duration_per_change / $precision))
            $red_diff = _ColorGetRed($end_color) - _ColorGetRed($start_color)
            $green_diff = _ColorGetGreen($end_color) - _ColorGetGreen($start_color)
            $blue_diff = _ColorGetBlue($end_color) - _ColorGetBlue($start_color)
            $red_res = Hex(_ColorGetRed($start_color) + Round($red_diff / $precision * $j), 2)
            $green_res = Hex(_ColorGetGreen($start_color) + Round($green_diff / $precision * $j), 2)
            $blue_res = Hex(_ColorGetBlue($start_color) + Round($blue_diff / $precision * $j), 2)
            GUICtrlSetColor($control_id, "0x" & $red_res & $green_res & $blue_res)
            
            If $j = 1 And $i = 0 Then
                If $static = 1 Then GUISetState(@SW_LOCK, $winhandle)
                ControlSetText($winhandle, "", $control_id, $text)
                If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle)
            EndIf
        Next
    Next
    
    Return 1
EndFunc   ;==>_txt_eff__color_to_color

; Fades a text out (black to $color)
Func _txt_eff__fade_out($winhandle, $control_id, $text = "", $duration = 2500, $precision = 100, $color = "white")
    _txt_eff__color_to_color($winhandle, $control_id, $text, $duration, "black. " & $color, $precision)
    Local $static = _IsStatic($winhandle, $control_id)
    If $static = 1 Then GUISetState(@SW_LOCK, $winhandle)
    ControlSetText($winhandle, "", $control_id, "")
    If $static = 1 Then GUISetState(@SW_UNLOCK, $winhandle)
EndFunc   ;==>_txt_eff__fade_out


; Fades a text out ($color to black)
;
; How to get the background color of an control?
; How to calculate a harmonious color (for background)?
;
Func _txt_eff__fade_in($winhandle, $control_id, $text = "", $duration = 2500, $precision = 100, $color = "white")
    _txt_eff__color_to_color($winhandle, $control_id, $text, $duration, $color & ". black", $precision)
EndFunc   ;==>_txt_eff__fade_in




; ---------------------------------
; ---------------------------------
; -----  4. helping functions -----
; ---------------------------------
; ---------------------------------


Func _StringInsertAtPos($string, $pos, $insert, $overwrite = 1)
    If $overwrite = 0 Then
        Return StringLeft($string, $pos - 1) & $insert & StringTrimLeft($string, $pos - 1)
    Else
        Return StringLeft($string, $pos - 1) & $insert & StringTrimLeft($string, $pos - 1 + StringLen($insert))
    EndIf
EndFunc   ;==>_StringInsertAtPos

; Source: Help file
Func _Swap(ByRef $a, ByRef $b)  ;swaps two vars
    Local $t
    $t = $a
    $a = $b
    $b = $t
EndFunc   ;==>_Swap

Func _IsCap($char)
    If Asc($char) < 90 And Asc($char) > 65 Then
        Return 1
    ElseIf Asc($char) < 122 And Asc($char) > 97 Then
        Return 2
    Else
        Return 0
    EndIf
EndFunc   ;==>_IsCap

; Created with help of XDrop 0.17
Func _GetColorByName($name)
    Select
        Case $name = "black"
            Return "0x000000"
        Case $name = "white"
            Return "0xffffff"
        Case $name = "red"
            Return "0xff0000"
        Case $name = "blue"
            Return "0x0000ff"
        Case $name = "green"
            Return "0x00ff00"
        Case $name = "yellow"
            Return "0xffff00"
        Case $name = "violet"
            Return "0xAE7BE1"
        Case $name = "win_xp_bg"
            Return "0xECE9D8"
    EndSelect
EndFunc   ;==>_GetColorByName

Func _IsStatic($winhandle, $control_id)
    Local $ret = DllCall("user32.dll", "int", "GetClassName", "hwnd", ControlGetHandle($winhandle, "", $control_id), "str", "", "int", 128)
    If StringInStr($ret[2], "Static") <> 0 Then Return 1
    Return 0
EndFunc   ;==>_IsStatic

Mega

Scripts & functions Organize Includes Let Scite organize the include files

Yahtzee The game "Yahtzee" (Kniffel, DiceLion)

LoginWrapper Secure scripts by adding a query (authentication)

_RunOnlyOnThis UDF Make sure that a script can only be executed on ... (Windows / HD / ...)

Internet-Café Server/Client Application Open CD, Start Browser, Lock remote client, etc.

MultipleFuncsWithOneHotkey Start different funcs by hitting one hotkey different times

Link to comment
Share on other sites

  • 5 months later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...