﻿#NoTrayIcon
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WinAPIGdi.au3>
#include <WindowsConstants.au3>

Opt('GUIOnEventMode', 1) ; den OnEventMode einschalten

#cs
	"_Segment7new()" enthaelt den Font "Segment7" im BASE64-Format
	Der Font wird in den Speicher geladen und dem Script zur Verfuegung gestellt.
	Beim beenden des Scripts wird der Font wieder aus dem Speicher entfernt.

	The Font "Segment7":
	=====================
	Copyright (c) 2014, Cedric Knight <fonts@cedders.com>, with Reserved Font Name "Segment7".

	This Font Software is licensed under the SIL Open Font License, Version 1.1.
	This license is available with a FAQ at: http://scripts.sil.org/OFL
	-----------------------------------------------------------
	SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
	-----------------------------------------------------------
#ce
Global $bFont = _Segment7new() ; den Font als Binaerdaten laden
Global $tFont = DllStructCreate('byte[' & BinaryLen($bFont) & ']') ; eine Struktur fuer den Font erstellen
DllStructSetData($tFont, 1, $bFont) ; die Binaerdaten in die Struktur schreiben
Global $hFont = _WinAPI_AddFontMemResourceEx(DllStructGetPtr($tFont), DllStructGetSize($tFont)) ; den Font dem Betriebssystem zur Verfuegung stellen
OnAutoItExitRegister('_Exit') ; die Funktion "_Exit" beim beenden des Scripts aufrufen (damit der Font wieder entfernt wird)

Global $iTimer = TimerInit(), $fStart = False, $iY = 28 ; ein paar globale Variablen

Global $hGui = GUICreate('Stoppuhr', 800, 300) ; das Fenster erstellen
GUISetOnEvent($GUI_EVENT_CLOSE, '_CloseGui') ; Funktion festlegen, die beim schliessen des Fensters aufgerufen wird
GUISetFont(14, 400, 0, 'Verdana', $hGui) ; der Standardfont fuer das Fenster
GUISetBkColor(0xCCCCCC) ; die Hintergrundfarbe des Fensters

; die Beschriftungen erstellen
GUICtrlCreateLabel('Stunden', 15, $iY, 120, 20, $SS_CENTER)
GUICtrlCreateLabel('Minuten', 210, $iY, 120, 20, $SS_CENTER)
GUICtrlCreateLabel('Sekunden', 405, $iY, 120, 20, $SS_CENTER)
GUICtrlCreateLabel('Millisekunden', 620, $iY, 140, 20, $SS_CENTER)

GUICtrlCreateLabel('', 13, 58, 772, 94, Default, $WS_EX_CLIENTEDGE) ; dieses Label dient nur der Umrandung der Ziffern

Global $aStopWatch = StringSplit('00:00:00 000', '', $STR_NOCOUNT) ; hier wird ein Array mit den Anzeigewerten erstellt
Global $aidStopWatch[UBound($aStopWatch)] ; ein Array fuer die Anzeigelabel (ein Label fuer jede Stelle, damit man das flackern verhindern kann)
For $i = 0 To UBound($aStopWatch) - 1 ; Schleife, um alle Label zu erstellen
	$aidStopWatch[$i] = GUICtrlCreateLabel($aStopWatch[$i], 15 + $i * 64, 60, 64, 90) ; die Label werden ab X-Position 15 alle 64 Pixel erstellt
	GUICtrlSetFont(-1, 82, 400, 0, 'Segment7') ; hier wird dem Label der oben registrierte Font zugewiesen
	GUICtrlSetColor(-1, 0x000000) ; die Vordergrundfarbe
	GUICtrlSetBkColor(-1, 0xAAEECC) ; die Hintergrundfarbe
Next

Global $idStart = GUICtrlCreateButton('Start', 100, 220, 160, 45) ; den Start-Button erstellen
GUICtrlSetFont(-1, 24, 400, 0, 'Verdana') ; den Font fuer den Button
GUICtrlSetOnEvent(-1, '_Start') ; die Funktion festlegen, die beim Klick auf den Button aufgerufen wird

Global $idStop = GUICtrlCreateButton('Stopp', 300, 220, 160, 45) ; den Stopp-Button erstellen
GUICtrlSetFont(-1, 24, 400, 0, 'Verdana') ; den Font fuer den Button
GUICtrlSetOnEvent(-1, '_Stop') ; die Funktion festlegen, die beim Klick auf den Button aufgerufen wird
GUICtrlSetState(-1, $GUI_DISABLE) ; den Stopp-Button erstmal deaktivieren

Global $idReset = GUICtrlCreateButton('Reset', 500, 220, 160, 45) ; den Reset-Button erstellen
GUICtrlSetFont(-1, 24, 400, 0, 'Verdana') ; den Font fuer den Button
GUICtrlSetOnEvent(-1, '_Reset') ; die Funktion festlegen, die beim Klick auf den Button aufgerufen wird

GUISetState() ; das Fenster anzeigen

While Sleep(10) ; Endlosschleife mit kleinem Sleep (um den Prozessor zu entlasten)
	If $fStart Then _ShowTimer() ; wenn die Variable $fStart True ist, wird bei jedem Schleifendurchlauf die Funktion "_ShowTimer" aufgerufen
WEnd

Func _CloseGui() ; die Funktion, die beim schliessen des Fensters aufgerufen wird
	GUIDelete($hGui)
	Exit
EndFunc   ;==>_CloseGui

Func _Exit() ; diese Funktion, wird beim beenden des Scripts noch ausgefuehrt
	_WinAPI_RemoveFontMemResourceEx($hFont) ; hier wird der Font wieder entfernt
EndFunc   ;==>_Exit

Func _Start() ; die Funktion, die beim Klick auf den Start-Button aufgerufen wird
	GUICtrlSetState($idStart, $GUI_DISABLE) ; den Start-Button deaktivieren
	GUICtrlSetState($idStop, $GUI_ENABLE) ; den Stopp-Button aktivieren
	$iTimer = TimerInit() ; den Timer zuruecksetzen
	$fStart = True ; und die Variable auf True setzen
EndFunc   ;==>_Start

Func _Stop() ; die Funktion, die beim Klick auf den Stopp-Button aufgerufen wird
	GUICtrlSetState($idStop, $GUI_DISABLE) ; den Stopp-Button deaktivieren
	GUICtrlSetState($idStart, $GUI_ENABLE) ; den Start-Button aktivieren
	$fStart = False ; und die Variable auf False setzen
EndFunc   ;==>_Stop

Func _Reset() ; die Funktion, die beim Klick auf den Reset-Button aufgerufen wird
	$iTimer = TimerInit() ; den Timer zuruecksetzen
	_ShowTimer() ; und einmal "_ShowTimer" aufrufen, damit die Anzeige aktualisiert wird
EndFunc   ;==>_Reset

Func _ShowTimer() ; diese Funktion, sorgt fuer die Aktualisierung der Anzeige
	Local Static $aOld = $aStopWatch ; das ist ein statisches Array (innerhalb der Funktion behaelt es die zugewiesenen Werte)
	Local $aTime = _Ticks2Time(TimerDiff($iTimer)) ; die Millisekunden des Timers werden in "hh:mm:ss ms" umgewandelt (als Array mit jedem Wert einzeln)
	For $i = 0 To UBound($aStopWatch) - 1 ; Schleife, um alle einzelnen Anzeigewerte durchzugehen
		If $aTime[$i] <> $aOld[$i] Then ; wenn sich der Wert vom bisherigen Wert unterscheidet, dann...
			$aOld[$i] = $aTime[$i] ; den neuen Wert speichern
			GUICtrlSetData($aidStopWatch[$i], $aTime[$i]) ; und die Anzeige entsprechend aendern
		EndIf ; weil die Anzeige nur bei einer Aenderung aktualisiert wird, wird das flackern verhindert
	Next
EndFunc   ;==>_ShowTimer

Func _Ticks2Time($iTicks) ; diese Funktion, wandelt die Millisekunden (Ticks) in "hh:mm:ss ms" um
	Local $iH, $iM, $iS, $aTime
	$iH = Int($iTicks / 3600000) ; Integerwert (Ganzzahl) der Division durch 3600000 entspricht den Stunden
	$iTicks = Mod($iTicks, 3600000) ; Modulo (Restwert) der Division durch 3600000 sind die restlichen Millisekunden
	$iM = Int($iTicks / 60000) ; Integerwert (Ganzzahl) der Division durch 60000 entspricht den Minuten
	$iTicks = Mod($iTicks, 60000) ; Modulo (Restwert) der Division durch 60000 sind die restlichen Millisekunden
	$iS = Int($iTicks / 1000) ; Integerwert (Ganzzahl) der Division durch 1000 entspricht den Sekunden
	$iTicks = Mod($iTicks, 1000) ; Modulo (Restwert) der Division durch 1000 sind die restlichen Millisekunden
	; jetzt werden die Werte mit Stringformat formatiert (fuehrende Null) und mit Stringsplit in ein Array gesplittet
	$aTime = StringSplit(StringFormat('%02i:%02i:%02i %03i', $iH, $iM, $iS, $iTicks), '', $STR_NOCOUNT)
	Return $aTime ; diese Array wird hier an die aufrufende Funktion zurueckgegeben
EndFunc   ;==>_Ticks2Time

; die nachfolgenden Funktionen enthalten lediglich den Font "Segment7" im BASE64-Format
; und die Funktionen "_WinAPI_LZNTDecompress" und "_WinAPI_Base64Decode" zum dekodieren (BASE64 -> Binaerformat)

; Copyright (c) 2014, Cedric Knight <fonts@cedders.com>, with Reserved Font Name "Segment7".
Func _Segment7new($bSaveBinary = False, $sSavePath = @ScriptDir)
	Local $Segment7new
	$Segment7new &= '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'
	$Segment7new &= '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'
	$Segment7new &= 'CiQT70A/7QnXEx9AfwkxZfIgAs3/uBSfFFgKi20PFGYKXG5/E+9XCjpv8iTwHQK4VR8JfRN/jwj8Ev8HXBK0ELJ8sz0m/zAbnwf7PQ8lbwjmPq8kLwnv1D/PGvUJeREq/wkfJW9C/x8SGSVvCf8kwkRzP/EINS1//yzVBw8sBiwfKxYGPw8i/AAoPw9eB29MHw/Xfg8P38+2xU7wCPSes04Z0Sn/Mf8PPJ8xrztPMX8g8mx/vn++/3++N6t5LnJIHxUSDd8tDxX4DAGPXy3fFH8MtBT5I/4eHyQcUX8kjFDvJA1QNXz/Nk/fDzgIPw/2B58Odwd1cf21Ig6Qh5AG30NPIu9C/CHHH0I20jpmFgAf/xR9rz8PFTywDxUvsTZuPLEoAP4x3xUfCV8mHxcPCg8nbxj/3wrUCrESN4uxJ6CivyeviwfvJ/+LGwgstAAFWjL+4zMsCwAiBgFkDAQywgAxJSrWAAUAQgAAJAISAwwABAAACQARABcAIAAAABMXDwEnEwAFByMnEzMXBwAjLgEnBRcDB4AnNxMWFQ4BADQAN1JWDE8LWQEAZ1v/UFTpQUAA+AwvBwF/IhMAEkIMawUCDAIAIzgMAs04xi8IGAFUB+gSJv7gIBpP4wGkBnsCAAAvADsB1gHCAAgGAA4DdRM+ATcBBHJNSgxcEAEMAmAFX4o06TIBMCgFFT0CTQAAAAUAgC7//gIBAwsAtwAWABsAIwApAAAANyEeARcWFYgUKwMAQyY9ARXLAIoBBgouCgULAKyNSAMOBAgkAFYLUApYAWZaAP5QUulCQPgNAC4HAYAgExFCAA1cDjYOBQIFAAQRBAsBAgKoADfHLxkBUgNbADP+4jMrCiIGgBEm/t8aTuSBRwAEAC///gHWAoLNgEcYAB0AJZNGB4BxAkoFdIsBBQosQAsFCqyOR4BEByoeg3sGAbFqBH5cDQQ4DYFBEgQHBAGkAWaEhAFIgbEKiIchgD8CEgL6hD8jAM4sm0BMdRgiAZlKd9kjXjTOef8l/yXRJQbMJSXwACsANONsZyiFcMzHa190z8sDwisCwOrBux43UCqJucwkbErryg8C6MendO1I4QwkAC30at8hbUEPI/8gBBGp2R/hawACO2KVBgALABMAthxmhgofAcUQJIhP65TmsSQPBooBhzKj5HnkLf3hQyJ7Q4IQOEHjpRk/wqUmAOA8YLIB/eCIBAD4DAAS5LFrLSKwbCpjrm/KJ2QYYSZhORxykuEWAbM6OINHAYNYN2JIpXBWuEIBoObLZRlCDiWwyRQBte/HG0gyAAEAaFwBY2LGB2AJRCKsxeUgwmZYAQGn4Q5gWLYIgAElDQIAFsML+ogK/+SA5jz8gPjisz8MUB+Ba1L/MGFkdGJEZxY/lxYLjwoPS/9zCv8Jj0qjJvNJshkxCXCEf/8IGn5PCAl/jwfZfztlIPwAJrBB/wb7Bs8a7wf3hh9vGt8I0wgPGj8lIgAq/AAzHwr+Q05MXwoMRY5Nv68KHEa/TrVVsU6xVRAwC/+2Vb4JdFU/CEea3wY8EfWa/+BOPxEfm48b7GXPqM8bSWbfn6n7G/EQM1izZhn7ECslXwkR7DMcERwzcUqWcQYBSoQQLQBDWAHbkwOEx1UCNFy0Lh4AJz8TtAnjjxK/IwwBj88R7yI/Ef8xN7DCOSIwiF8irxG/Ig8S/y8jZhJ0RbZO3w84CD8P9gf/nw53B/S78YVwFv6FOR/9hX9rH++FiB8qN3ENsh/zzxT/HtAaFHxJ7NAWJTPIMQV1Uf/fEl8GryJPB79gHwgzLXEi+3eacSIhfyKfTq8iP5vPIv/fTD/tP+1fRT/tP+0/7T/t/z/tP+0/7T/tP+0fUj/tP+0BN+38twD4DS4HAYAgEwARQg1cDjYOBQACBQQRBAsBAgACqDfHLxkBUgADWzP+4jMrCgAiBhEm/t8aTgTkAAAABAAv//4AAdYCzQARABgAAB0AJQAANyEAHgEXFhUUKwMALgEn'
	$Segment7new &= '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'
	$Segment7new &= 'AIsAAJ0AqQCkAUQAAIoA2gCDAJMBAEUBRgCNAUcAAIgAwwDeAUgAAJ4AqgD1APQAAPYAogCtAMkAqseQV2JQO5CAHMsgHgDIAMoAzwDMACDNAM4A6RBF0wAg0ADRAK8AIPAAgJEA1gDUANWwQ4DrAO0AiQBqACOqa4AhbMAgoKAjcZBBVWEkdQAidhBK6tBKegFQTHsAfQB8ALgAAKEAfwB+AIAAAIEA7ADuALpgB3VuaTAAAHQARFV0ADF0ADJ0ADN0ADRVdAA1dAA2dAA3dAA4VXQAOXQAQXQAQnQAQ1V0AEV0AEZzADH0BzFVdAcxdAcxdAcxdAcxVXQHMXQHMXQHMXQHMVV0BzF0BzF0BzF0BzFV9A0x9Acx9Ac3dAA4VXQIOHQIOHQIOHQIOFV0CDh0CDh0CDh0CDhVdAg4dAg4dAg4dAg4VXQIOHQIOHQIOPQHOVX0Bzn0Bzn0Bzn0BzlV9Ac59Ac59Ac59Ac5VfQHOfQHOfQHOfQHOVX0Bzn0Bzn0Bzn0B0FV9AdB9AFC9AdC9AdCyXQHQjnhQ///EEZRRf4MMACxzdEAQkUwQdJHEYNVUDw6EAFAEAAC8DpCAAACqbBEAEYAEAIATwAQAgQAWQAQAgBiAHMRACh1AHoAKAAAAQEADAoAHAAeAAEAREZMVAAIAASxAEQA//8BFAB0BAAGIggEBgYAIAAKAgCIRwBLBG4eACwObsEBMgFrZXJuACYBgpEBMQYADgMXABAEdaIWAlME/bYCIS8AA74kAkEBUw8BACEAKQIAB6gxADoEmQACXwADd0EEEQDUGVc/AQfPCK/PUwEH1X6Ftw=='
	$Segment7new = _WinAPI_Base64Decode($Segment7new)
	If @error Then Return SetError(1, 0, 0)
	Local $tSource = DllStructCreate('byte[' & BinaryLen($Segment7new) & ']')
	DllStructSetData($tSource, 1, $Segment7new)
	Local $tDecompress
	_WinAPI_LZNTDecompress($tSource, $tDecompress, 16644)
	If @error Then Return SetError(3, 0, 0)
	$tSource = 0
	Local Const $bString = Binary(DllStructGetData($tDecompress, 1))
	If $bSaveBinary Then
		Local Const $hFile = FileOpen($sSavePath & "\Segment7New.ttf", 18)
		If @error Then Return SetError(2, 0, $bString)
		FileWrite($hFile, $bString)
		FileClose($hFile)
	EndIf
	Return $bString
EndFunc   ;==>_Segment7new

Func _WinAPI_LZNTDecompress(ByRef $tInput, ByRef $tOutput, $iBufferSize)
	$tOutput = DllStructCreate("byte[" & $iBufferSize & "]")
	If @error Then Return SetError(1, 0, 0)
	Local $aRet = DllCall("ntdll.dll", "uint", "RtlDecompressBuffer", "ushort", 0x0002, "struct*", $tOutput, "ulong", $iBufferSize, "struct*", $tInput, "ulong", DllStructGetSize($tInput), "ulong*", 0)
	If @error Then Return SetError(2, 0, 0)
	If $aRet[0] Then Return SetError(3, $aRet[0], 0)
	Return $aRet[6]
EndFunc   ;==>_WinAPI_LZNTDecompress

Func _WinAPI_Base64Decode($sB64String)
	Local $aCrypt = DllCall("Crypt32.dll", "bool", "CryptStringToBinaryA", "str", $sB64String, "dword", 0, "dword", 1, "ptr", 0, "dword*", 0, "ptr", 0, "ptr", 0)
	If @error Or Not $aCrypt[0] Then Return SetError(1, 0, "")
	Local $bBuffer = DllStructCreate("byte[" & $aCrypt[5] & "]")
	$aCrypt = DllCall("Crypt32.dll", "bool", "CryptStringToBinaryA", "str", $sB64String, "dword", 0, "dword", 1, "struct*", $bBuffer, "dword*", $aCrypt[5], "ptr", 0, "ptr", 0)
	If @error Or Not $aCrypt[0] Then Return SetError(2, 0, "")
	Return DllStructGetData($bBuffer, 1)
EndFunc   ;==>_WinAPI_Base64Decode
