'##############
'Matrix Script
'##############

'Simuliert die Topform Matrix von LAWO/Gorba.

'(c) 26.08.2022 Neoplan VEST

'Script Version: 1.0
'Omsi release: 2.0

'Needs:
'- Cockpit (Batterietrennschalter)
'- IBIS

'NrSpecRandom Seed Area:
'971: Anzahl der Fehlerpixel pro Jahr


'Revision History:
'- Marcel Kuhnt		29.09.2012	Created from scratch
'- Marcel Kuhnt		17.09.2013	Steckschilder für ausgewählte Ziele
'- Marcel Kuhnt		17.09.2013	Seitenschild
'- Marcel Kuhnt		13.10.2013	Neuer Seitenschildpfad
'- Marcel Kuhnt		20.12.2013	Bugfix: Steckschild-Init
'- Neoplan VEST		22.08.2022	Anpassung für GORBA Darstellung
'- Neoplan VEST		26.08.2022	LAWO Fonts hinzugefügt inklusiv Variable für Repaint zum Wechseln.
'- Neoplan VEST					LED Schimmer Effekt hinzugefügt.
'- Neoplan VEST		27.08.2022	Font Verschiebung hinzugefügt.
'- Neoplan VEST					*L[] aus der churaKrueger Script eingefügt.
'- Neoplan VEST		28.08.2022	Linke Linienkasten hinzugefügt inklusive Repaint Variable
'- Neoplan VEST					Startinitialisierung hinzugefügt
'- Neoplan VEST		31.08.2022	LED Animation hinzugefügt
'- Neoplan VEST		02.09.2022	Dicke Linienfont hinzugefügt
'------------------------------------------------------------------------------------------
'-	Repaint-Variablen----------------------------------------------------------------------
'-	Matrix_Style		Steuert die Font Zuweisung		1=LAWO Vestische	2=LAWO
'-	Matrix_LNR_Kasten	Steuert den Linienkasten Links	1=Aktiviert den linken Linienkasten
'------------------------------------------------------------------------------------------


{macro:Matrix_init}
	-1 (S.L.Matrix_RefreshCursor)
	(L.S.Year) (C.L.Matrix_Baujahr) - 0.01 max (C.L.Matrix_Fehlerpixel_pro_Jahr) * 971 (M.V.NrSpecRandom) 1 + * (S.L.Matrix_Fehlerpixel)
	
	(L.L.Matrix_LED_Text) 1 =
	{if}
		1 (S.L.Matrix_LED_Text)
	{endif}
	
	-1 (S.L.matrix_steckschild_Termindex)
	0 (S.L.matrix_steckschild_vis)
{end}


{trigger:ai_scheduled_settarget}

'Stromversorgung herstellen:
	1 (S.L.elec_busbar_main_sw)	
	1.0 (S.L.elec_V_battery)

'Hier wird die Nummer eingestellt:
	(L.$.SetLineTo) (S.$.Matrix_Nr)

'Hier wird das Ziel eingestellt:
	1 (S.L.elec_busbar_main_sw)

	(L.L.AI_target_index) s0 (M.V.GetTerminusCode) s1
'Wenn der Terminus-Code größer als 1000 ist, dann bitte Steckschild verwenden:
	1000 >
	{if}
		l1 1000 - (S.L.matrix_steckschild_index)
		l0 (S.L.matrix_steckschild_Termindex)
'Matrix auf 0:
		0 (S.L.IBIS_TerminusIndex) s2
	{else}
		l0 (S.L.IBIS_TerminusIndex) s2
		-1 (S.L.matrix_steckschild_Termindex)

		-1 (S.L.Matrix_TerminusIndex_Last)

'Wenn der Bitmap-String in Verwendung ist, dann den als Integer interpretieren und Steckschild zusätzlich setzen:
		l0 6 (M.V.GetTerminusString) $StrToFloat s1
		l1 1000 >
		{if}
			l1 1000 - (S.L.matrix_steckschild_index)
			l0 (S.L.matrix_steckschild_Termindex)			
		{endif}

	{endif}
	(M.L.matrix_setsteckschild)

	l2 (M.V.GetTerminusCode) (S.L.IBIS_TerminusCode)

	1 (S.L.matrix_refresh_seitenschild)

{end}





'*******************************************
' Trigger für Seitenschild

{trigger:matrix_seitenschildklemme_drag}
	(L.S.mouse_y) -300 / (L.L.matrix_seitenschildklemme) + (S.L.matrix_seitenschildklemme) s0
	l0 0 <
	{if}
		0 (S.L.matrix_seitenschildklemme)
	{endif}
	l0 0.7 >
	{if}
		(L.L.matrix_seitenschild_refresh) 0 =
		{if}
			1 (S.L.matrix_seitenschild_refresh)
			(T.L.ev_fahrertuer_auf)
			(L.$.Matrix_Seitenschild) "" $=
			{if}
				1 (S.L.matrix_refresh_seitenschild)
			{else}
				"" (S.$.Matrix_Seitenschild)
			{endif}
		{endif}
	{endif}
	l0 1 >
	{if}
		1 (S.L.matrix_seitenschildklemme)
	{endif}
{end}

{trigger:matrix_seitenschildklemme_off}
	(L.L.matrix_seitenschildklemme)
	0.3 >
	{if}
		(T.L.ev_fahrertuer_zu)
	{endif}
	0 (S.L.matrix_seitenschildklemme)
	(S.L.matrix_seitenschild_refresh)
{end}

'*******************************************
' Trigger für Steckschild

{trigger:bus_matrix_change_steckschild}
	(L.L.matrix_steckschild_index) 1 + (S.L.matrix_steckschild_index)
	1000 + (M.V.GetTerminusIndex) (S.L.matrix_steckschild_Termindex)

	(M.L.matrix_setsteckschild)
	(M.L.matrix_refreshIntIndex)
{end}

{macro:matrix_setsteckschild}
	(L.L.matrix_steckschild_Termindex) s0
	0 >= 
	{if}
		l0 6 (M.V.GetTerminusString) (S.$.Matrix_SchildFrnt)
		1 $SetLengthL $StrToFloat 1 max (S.L.matrix_steckschild_vis)
		"..\..\Anzeigen\SteckSchilder\" (L.$.Matrix_SchildFrnt) $+ (S.$.Matrix_SchildFrnt)
	{else}
		0 (S.L.matrix_steckschild_index) (S.L.matrix_steckschild_vis)
		""  (S.$.Matrix_SchildFrnt)
	{endif}
{end}


{macro:Matrix_frame}

'******************************+
'    Terminus-Matrix
'******************************+
'Matrix Font Style für Repaint
'	[setvar]
'	Matrix_Style
'	Index-Nr

'	Index-Nummer
'	0 = Gorba IBIS-Style Vestische
'	1 = LAWO Vestische Style
'	2 = LAWO

'	Gorba Vestische Style
	(L.L.Matrix_Style) 0 =
	{if}
		"NV_Gorba_8x4_1" (M.V.GetFontIndex) (S.L.Font_Ziel_8x4)
		"NV_Gorba_8x6_2" (M.V.GetFontIndex) (S.L.Font_Ziel_8x6)
		"NV_Gorba_16x6_2" (M.V.GetFontIndex) (S.L.Font_16x6)
		"NV_Gorba_16x7_2" (M.V.GetFontIndex) (S.L.Font_16x7)

		(L.L.Matrix_Style_Line) 1 =
		{if}
			"NV_Gorba_16x8_3" (M.V.GetFontIndex) (S.L.Font_Linie_Dick)
		{else}
			"NV_Gorba_16x6_2" (M.V.GetFontIndex) (S.L.Font_Linie_Dick)
		{endif}
		"NV_Gorba_16x6_2" (M.V.GetFontIndex) (S.L.Font_Linie_Duenn)
	{endif}

'	LAWO Vestische Style
	(L.L.Matrix_Style) 1 =
	{if}
		"Vestische_HELVS_F08" (M.V.GetFontIndex) (S.L.Font_Ziel_8x4)
		"Vestische_HELV_F08" (M.V.GetFontIndex) (S.L.Font_Ziel_8x5)
		"Vestische_HELV_FAT_F08" (M.V.GetFontIndex) (S.L.Font_Ziel_8x6)
		"Vestische_HELV_FAT_F15" (M.V.GetFontIndex) (S.L.Font_Ziel_15x12)
		
		(L.L.Matrix_Style_Line) 1 =
		{if}
			"Vestische_LNR_F16" (M.V.GetFontIndex) (S.L.Font_Linie_Dick)
		{else}
			"Vestische_LNR_F16" (M.V.GetFontIndex) (S.L.Font_Linie_Dick)
		{endif}
		"Vestische_LNR_F16" (M.V.GetFontIndex) (S.L.Font_Linie_Duenn)
	{endif}

'	LAWO Style
	(L.L.Matrix_Style) 2 =
	{if}
		"NV_Gorba_8x4_1" (M.V.GetFontIndex) (S.L.Font_Ziel_8x4)
		"NV_Gorba_8x6_2" (M.V.GetFontIndex) (S.L.Font_Ziel_8x6)
		"NV_LW_Ziel_16x8" (M.V.GetFontIndex) (S.L.Font_Ziel_15x12)

		(L.L.Matrix_Style_Line) 1 =
		{if}
			"NV_LW_LNR_16x8" (M.V.GetFontIndex) (S.L.Font_Linie_Dick)
		{else}
			"NV_LW_LNR_16x6" (M.V.GetFontIndex) (S.L.Font_Linie_Dick)
		{endif}
		"NV_LW_LNR_16x6" (M.V.GetFontIndex) (S.L.Font_Linie_Duenn)
	{endif}

'	LED Leuchteffekt Simulation auf Schwarze Seite, da alle LEDs dauerhaft leuchten und im Dunkelheit grünlich schimmert.
	(L.L.elec_busbar_main) 1 &&
	{if}
'	Simuliere die LEDs vom CU3

		1 (S.L.CU3_light_OK)
		0 (S.L.CU3_light_ERR)
		(L.L.CU3_RX_timer) 0.2 >
		{if}
			0 (S.L.CU3_RX_timer)
			(L.L.CU3_light_RX) ! (S.L.CU3_light_RX)
		{else}
			(L.L.CU3_RX_timer) (L.S.Timegap) + (S.L.CU3_RX_timer)
		{endif}
		
		(L.L.CU3_TX_timer) 0.3 >
		{if}
			0 (S.L.CU3_TX_timer)
			(L.L.CU3_light_TX) ! (S.L.CU3_light_TX)
		{else}
			(L.L.CU3_TX_timer) (L.S.Timegap) + (S.L.CU3_TX_timer)
		{endif}
		
		(L.L.Envir_Brightness) 0.9 <
		{if}
			1 (S.L.Matrix_light_LED_Bg)
		{else}
			0 (S.L.Matrix_light_LED_Bg)
		{endif}
	{else}
		0 (S.L.Matrix_light_LED_Bg) (S.L.CU3_RX_timer) (S.L.CU3_TX_timer) (S.L.CU3_light_OK) (S.L.CU3_light_RX) (S.L.CU3_light_TX) (S.L.CU3_light_ERR)
	{endif}
	
'	Visible für den linken Linienkasten um über Repaint Aktivieren zu können.
	(L.L.Matrix_LNR_Kasten) ! &&
	{if}
		1 (S.L.Matrix_LNR_Kasten)
	{else}
		0 (S.L.Matrix_LNR_Kasten)
	{endif}

	(L.L.Matrix_Typ) 1 =
	{if}
		(L.L.elec_busbar_main) (C.L.elec_busbar_minV) <
		{if}
			0 (S.L.Matrix_LED_Text_timer) (S.L.Matrix_LED_Text)
			"" (S.$.Matrix_Nr) (S.$.Matrix_TerminusL1) (S.$.Matrix_TerminusL2)
		{endif}

		(L.L.Matrix_LED_Text) 0 =
		{if}
			(L.L.Matrix_LED_Text_timer) (L.S.Timegap) + (S.L.Matrix_LED_Text_timer)
			(L.L.Matrix_LED_Text_timer) 3 >=
			{if}
				1 (S.L.Matrix_LED_Text)
				0 (S.L.Matrix_LED_Text_timer)
			{endif}
		{endif}
	{endif}

    (L.L.Matrix_Style) 1 =
    (L.L.Matrix_Style) 2 = ||
    {if}
		(L.L.Matrix_Typ) 1 =
		{if}
'Matrix-Initialisierung:
			(L.L.Matrix_Init_Status) (S.L.Matrix_Init_StatusLast) 
		
			(L.L.elec_busbar_main)
			(L.L.Matrix_Init_Timer) 0 >= &&
			(L.L.Matrix_Init_Timer) 24 < &&
			(L.L.AI) ! &&
			{if}
				(L.L.Matrix_Init_Timer) (L.S.Timegap) + (S.L.Matrix_Init_Timer)
				s0 16 >
				(L.L.Matrix_Init_Status) 2 = &&
				{if}
					3 (S.L.Matrix_Init_Status)
					-1 (S.L.Matrix_Nr_Last) (S.L.Matrix_TerminusIndex_Last)
				{else}
					l0 8 >
					(L.L.Matrix_Init_Status) 1 = &&
					{if}
						2 (S.L.Matrix_Init_Status)
						"9997" (S.$.Matrix_Nr)
						"" (S.$.Matrix_TerminusL1) (S.$.Matrix_TerminusL2)
					{else}
						l0 0 >
						(L.L.Matrix_Init_Status) 0 = &&
						{if}
							1 (S.L.Matrix_Init_Status)
							"9998" (S.$.Matrix_Nr)
							"" (S.$.Matrix_TerminusL1) (S.$.Matrix_TerminusL2)
						{endif}
					{endif}
				{endif}
			{endif}
		{else}
'Matrix-Initialisierung:
			(L.L.Matrix_Init_Status) (S.L.Matrix_Init_StatusLast) 
		
			(L.L.elec_busbar_main)
			(L.L.Matrix_Init_Timer) 0 >= &&
			(L.L.Matrix_Init_Timer) 20 < &&
			(L.L.AI) ! &&
			{if}
				(L.L.Matrix_Init_Timer) (L.S.Timegap) + (S.L.Matrix_Init_Timer)
				s0 15 >
				(L.L.Matrix_Init_Status) 3 = &&
				{if}
					4 (S.L.Matrix_Init_Status)
					-1 (S.L.Matrix_Nr_Last) (S.L.Matrix_TerminusIndex_Last)
				{else}
					l0 10 >
					(L.L.Matrix_Init_Status) 2 = &&
					{if}
						3 (S.L.Matrix_Init_Status)
						"9997" (S.$.Matrix_Nr)
						"" (S.$.Matrix_TerminusL1) (S.$.Matrix_TerminusL2)
					{else}
						l0 5 >
						(L.L.Matrix_Init_Status) 1 = &&
						{if}
							2 (S.L.Matrix_Init_Status)
							"9998" (S.$.Matrix_Nr)
							"" (S.$.Matrix_TerminusL1) (S.$.Matrix_TerminusL2)
						{else}
							l0 0 >
							(L.L.Matrix_Init_Status) 0 = &&
							{if}
								1 (S.L.Matrix_Init_Status)
								"9999" (S.$.Matrix_Nr)
								"" (S.$.Matrix_TerminusL1) (S.$.Matrix_TerminusL2)
							{endif}
						{endif}
					{endif}
				{endif}
			{endif}
		{endif}
    
		(L.L.elec_busbar_main) !
		{if}
			0 (S.L.Matrix_Init_Status) (S.L.Matrix_Init_StatusLast) (S.L.Matrix_Init_Timer)
		{endif}
    {endif}

'Erster Schritt: Linie erstellen:

	(L.L.IBIS_Linie_Complex) s0 (L.L.Matrix_Nr_Last) = ! 
	(L.L.elec_busbar_main) &&
	{if}

					l0 100 / trunc s1
					(L.L.IBIS_Linie_Suffix) s4
' l0: Originalzahl; l1: erste drei Ziffern; l4: letzte zwei Ziffern

' Falls gleich 0, dann gar nix:
					l1 0 =
					{if}
						""
					{else}
' Sonst die normale Nummer:
						l1 trunc $IntToStr
					{endif}

					(S.$.Matrix_Nr)

' ===============================================================================
' Falls jetzt die hinteren beiden Ziffern (l2) etwas Interessantes enthalten:
' ===============================================================================

					(L.$.Yard) "Neue Horizonte" $= 
					(L.$.Yard) "Ruhrgebiet" $= || 
					{if}
						l4 1 =
						{if}
							"S" (S.$.Matrix_Nr)
						{endif}
						l4 2 =
						{if}
							"E"
						{endif}
						l4 3 =
						{if}
							"|"
						{endif}
						l4 4 =
						{if}
							(L.$.Matrix_Nr) "F" $+
						{endif}
						l4 5 =
						{if}
							"P" (S.$.Matrix_Nr)
						{endif}
						l4 6 =
						{if}
							"L" (S.$.Matrix_Nr)
						{endif}
						l4 7 =
						{if}
							"D"
						{endif}
						l4 8 =
						{if}
							"P R" (S.$.Matrix_Nr) 
						{endif}
						l4 9 =
						{if}
							"E000" (S.$.Matrix_Nr)
						{endif}
						l4 10 =
						{if}
							"~" (S.$.Matrix_Nr) 
						{endif}

						l4 12 =
						{if}
							"å" (S.$.Matrix_Nr)
						{endif}
						l4 13 =
						{if}
							"WM" (S.$.Matrix_Nr)
						{endif}

						l4 17 =
						{if}
							"U" (S.$.Matrix_Nr)
						{endif}
						l4 18 =
						{if}
							"S" (S.$.Matrix_Nr)
						{endif}
						l4 19 =
						{if}
							"{16" (S.$.Matrix_Nr)
						{endif}
						l4 20 =
						{if}
							"{20" (S.$.Matrix_Nr)
						{endif}
						l4 21 =
						{if}
							"{21" (S.$.Matrix_Nr)
						{endif}
						l4 22 =
						{if}
							"{22" (S.$.Matrix_Nr)
						{endif}
						l4 23 =
						{if}
							"{23" (S.$.Matrix_Nr)
						{endif}
						l4 24 =
						{if}
							"{24" (S.$.Matrix_Nr)
						{endif}
						l4 25 =
						{if}
							"{25" (S.$.Matrix_Nr)
						{endif}
						l4 26 =
						{if}
							"{26" (S.$.Matrix_Nr)
						{endif}
						l4 27 =
						{if}
							"{27" (S.$.Matrix_Nr)
						{endif}
						l4 28 =
						{if}
							"{28" (S.$.Matrix_Nr)
						{endif}
						l4 29 =
						{if}
							"{29" (S.$.Matrix_Nr)
						{endif}
						l4 30 =
						{if}
							"{30" (S.$.Matrix_Nr)
						{endif}
						l4 31 =
						{if}
							"{31" (S.$.Matrix_Nr)
						{endif}
						l4 32 =
						{if}
							"{32" (S.$.Matrix_Nr)
						{endif}
						l4 33 =
						{if}
							"{33" (S.$.Matrix_Nr)
						{endif}
						l4 34 =
						{if}
							"{34" (S.$.Matrix_Nr)
						{endif}
						l4 35 =
						{if}
							"{35" (S.$.Matrix_Nr)
						{endif}
						l4 36 =
						{if}
							"{36" (S.$.Matrix_Nr)
						{endif}
						l4 37 =
						{if}
							"{37" (S.$.Matrix_Nr)
						{endif}
						l4 38 =
						{if}
							"{38" (S.$.Matrix_Nr)
						{endif}
						l4 39 =
						{if}
							"{39" (S.$.Matrix_Nr)
						{endif}
						(L.L.Matrix_Style) 0 =
						(L.L.Matrix_Style) 1 = ||
						{if}
							l4 40 =
							{if}
								"§" (L.$.Matrix_Nr) 2 $SetLengthR $+
							{endif}
						{else}
							l4 40 =
							{if}
								"RE" (L.$.Matrix_Nr) 2 $SetLengthR $+
							{endif}
						{endif}
						(L.L.Matrix_Style) 0 =
						(L.L.Matrix_Style) 1 = ||
						{if}
							l4 41 =
							{if}
								"$" (L.$.Matrix_Nr) 2 $SetLengthR $+
							{endif}
						{else}
							l4 41 =
							{if}
								"RB" (L.$.Matrix_Nr) 2 $SetLengthR $+
							{endif}
						{endif}
						
						l4 44 =
						{if}
							"R73" (S.$.Matrix_Nr)
						{endif}
						l4 45 =
						{if}
							"R74" (S.$.Matrix_Nr)
						{endif}
						l4 49 =
						{if}
							"{49" (S.$.Matrix_Nr)
						{endif}
						l4 50 =
						{if}
							"¨50" (S.$.Matrix_Nr)
						{endif}
						l4 51 =
						{if}
							"¨51" (S.$.Matrix_Nr)
						{endif}
						l4 52 =
						{if}
							"¨52" (S.$.Matrix_Nr)
						{endif}
						l4 53 =
						{if}
							"¨53" (S.$.Matrix_Nr)
						{endif}
						l4 54 =
						{if}
							"¨54" (S.$.Matrix_Nr)
						{endif}
						l4 55 =
						{if}
							"¨55" (S.$.Matrix_Nr)
						{endif}
						l4 56 =
						{if}
							"¨56" (S.$.Matrix_Nr)
						{endif}
						l4 57 =
						{if}
							"¨57" (S.$.Matrix_Nr)
						{endif}
						l4 58 =
						{if}
							"¨58" (S.$.Matrix_Nr)
						{endif}
						l4 59 =
						{if}
							"¨59" (S.$.Matrix_Nr)
						{endif}
						l4 60 =
						{if}
							"}1" (S.$.Matrix_Nr)
						{endif}
						l4 61 =
						{if}
							"}2" (S.$.Matrix_Nr)
						{endif}
						l4 62 =
						{if}
							"}3" (S.$.Matrix_Nr)
						{endif}
						l4 63 =
						{if}
							"}4" (S.$.Matrix_Nr)
						{endif}
						l4 64 =
						{if}
							"}5" (S.$.Matrix_Nr)
						{endif}
						l4 65 =
						{if}
							"}6" (S.$.Matrix_Nr)
						{endif}
						l4 66 =
						{if}
							"}7" (S.$.Matrix_Nr)
						{endif}
						l4 67 =
						{if}
							"}8" (S.$.Matrix_Nr)
						{endif}
						l4 68 =
						{if}
							"}9" (S.$.Matrix_Nr)
						{endif}
						l4 69 =
						{if}
							"}10" (S.$.Matrix_Nr)
						{endif}
						l4 70 =
						{if}
							"}11" (S.$.Matrix_Nr)
						{endif}
						l4 71 =
						{if}
							"}12" (S.$.Matrix_Nr)
						{endif}
						l4 72 =
						{if}
							"}13" (S.$.Matrix_Nr)
						{endif}
						l4 73 =
						{if}
							"}14" (S.$.Matrix_Nr)
						{endif}
						l4 74 =
						{if}
							"}15" (S.$.Matrix_Nr)
						{endif}
						l4 75 =
						{if}
							"}16" (S.$.Matrix_Nr)
						{endif}
						l4 76 =
						{if}
							"}17" (S.$.Matrix_Nr)
						{endif}
						l4 77 =
						{if}
							"}18" (S.$.Matrix_Nr)
						{endif}
						l4 78 =
						{if}
							"}19" (S.$.Matrix_Nr)
						{endif}
						l4 79 =
						{if}
							"}20" (S.$.Matrix_Nr)
						{endif}
						l4 80 =
						{if}
							"}21" (S.$.Matrix_Nr)
						{endif}
						l4 81 =
						{if}
							"}22" (S.$.Matrix_Nr)
						{endif}
						l4 82 =
						{if}
							"}23" (S.$.Matrix_Nr)
						{endif}
						l4 83 =
						{if}
							"}24" (S.$.Matrix_Nr)
						{endif}
						l4 84 =
						{if}
							"}25" (S.$.Matrix_Nr)
						{endif}
						l4 85 =
						{if}
							"}26" (S.$.Matrix_Nr)
						{endif}
						l4 86 =
						{if}
							"}27" (S.$.Matrix_Nr)
						{endif}
						l4 87 =
						{if}
							"}28" (S.$.Matrix_Nr)
						{endif}
						l4 88 =
						{if}
							"}29" (S.$.Matrix_Nr)
						{endif}
						l4 89 =
						{if}
							"}30" (S.$.Matrix_Nr)
						{endif}
						l4 90 =
						{if}
							"{90" (S.$.Matrix_Nr)
						{endif}
						l4 91 =
						{if}
							"{91" (S.$.Matrix_Nr)
						{endif}
						l4 92 =
						{if}
							"{92" (S.$.Matrix_Nr)
						{endif}
						l4 93 =
						{if}
							"{93" (S.$.Matrix_Nr)
						{endif}
						l4 94 =
						{if}
							"{94" (S.$.Matrix_Nr)
						{endif}
						l4 95 =
						{if}
							"{95" (S.$.Matrix_Nr)
						{endif}
						l4 96 =
						{if}
							"{96" (S.$.Matrix_Nr)
						{endif}
						l4 97 =
						{if}
							"{97" (S.$.Matrix_Nr)
						{endif}
						l4 98 =
						{if}
							"~" (S.$.Matrix_Nr)
						{endif}
						(L.$.Matrix_Nr) $StrToFloat 613 =
						(L.$.Matrix_Nr) $StrToFloat 642 = ||
						{if}
							"X" (L.$.Matrix_Nr) 2 $SetLengthR $+
						{endif}
						(L.$.Matrix_Nr) $StrToFloat 73 =
						(L.$.Matrix_Nr) $StrToFloat 74 = ||
						{if}
							"R" (L.$.Matrix_Nr) $RemoveSpaces $+ 3 $SetLengthL (S.$.Matrix_Nr)
						{endif}
						(L.$.Matrix_Nr) $StrToFloat 16 =
						(L.$.Matrix_Nr) $StrToFloat 20 = ||
						(L.$.Matrix_Nr) $StrToFloat 24 = ||
						(L.$.Matrix_Nr) $StrToFloat 25 = ||
						(L.$.Matrix_Nr) $StrToFloat 26 = ||
						(L.$.Matrix_Nr) $StrToFloat 27 = ||
						(L.$.Matrix_Nr) $StrToFloat 28 = ||
						(L.$.Matrix_Nr) $StrToFloat 29 = ||
						(L.$.Matrix_Nr) $StrToFloat 36 = ||
						(L.$.Matrix_Nr) $StrToFloat 49 = ||
						(L.$.Matrix_Nr) $StrToFloat 91 = ||
						{if}
							"{" (L.$.Matrix_Nr) $RemoveSpaces $+ 3 $SetLengthL (S.$.Matrix_Nr)
						{endif}
						(L.$.Matrix_Nr) $StrToFloat 2 =
						(L.$.Matrix_Nr) $StrToFloat 5 = ||
						(L.$.Matrix_Nr) $StrToFloat 7 = ||
						(L.$.Matrix_Nr) $StrToFloat 9 = ||
						{if}
							"}" (L.$.Matrix_Nr) $RemoveSpaces $+ 2 $SetLengthL (S.$.Matrix_Nr)
						{endif}
						(L.$.Matrix_Nr) $StrToFloat 10 = 
						(L.$.Matrix_Nr) $StrToFloat 11 = ||
						(L.$.Matrix_Nr) $StrToFloat 14 = ||
						(L.$.Matrix_Nr) $StrToFloat 18 = ||
						(L.$.Matrix_Nr) $StrToFloat 19 = ||
						(L.$.Matrix_Nr) $StrToFloat 21 = ||
						{if}
							"}" (L.$.Matrix_Nr) $RemoveSpaces $+ 3 $SetLengthL (S.$.Matrix_Nr)
						{endif}
						(L.$.Matrix_Nr) $StrToFloat 940 = 
						{if}
							"SEV" (S.$.Matrix_Nr)
						{endif}
						(L.$.Matrix_Nr) $StrToFloat 911 =
						{if}
							"ES11" (S.$.Matrix_Nr)
						{endif}
						(L.$.Matrix_Nr) $StrToFloat 915 =
						{if}
							"ES15" (S.$.Matrix_Nr)
						{endif}
						(L.$.Matrix_Nr) $StrToFloat 918 =
						{if}
							"ES18" (S.$.Matrix_Nr)
						{endif}
						(L.$.Matrix_Nr) $StrToFloat 200 =
						{if}
							"S" (S.$.Matrix_Nr)
						{endif}
						(L.$.Matrix_Nr) $StrToFloat 322 =
						{if}
							"E" (S.$.Matrix_Nr)
						{endif}
						(L.$.Matrix_Nr) $StrToFloat 999 =
						{if}
							"~" (S.$.Matrix_Nr)
						{endif}
					{else}
						l4 1 =
						{if}
							"E" (L.$.Matrix_Nr) 2 $SetLengthR $+
						{endif}
						l4 2 =
						{if}
							"/^\"
						{endif}
						l4 3 =
						{if}
							"|"
						{endif}
						l4 4 =
						{if}
							(L.$.Matrix_Nr) "N" $+
						{endif}
						l4 5 = l4 24 = ||
						{if}
							"S" (L.$.Matrix_Nr) 2 $SetLengthR $+
						{endif}
						l4 6 =
						{if}
							"A" (L.$.Matrix_Nr) 2 $SetLengthR $+
						{endif}

						l4 9 =
						{if}
							"E" (L.$.Matrix_Nr) 2 $SetLengthR $+
						{endif}
						l4 10 =
						{if}
							(L.$.Matrix_Nr) "E" $+
						{endif}
						l4 11 =
						{if}
							"D" (L.$.Matrix_Nr) 2 $SetLengthR $+
						{endif}
						l4 12 =
						{if}
							"C" (L.$.Matrix_Nr) 2 $SetLengthR $+
						{endif}
						l4 13 =
						{if}
							"B" (L.$.Matrix_Nr) 2 $SetLengthR $+
						{endif}
						l4 14 =
						{if}
							"A" (L.$.Matrix_Nr) 2 $SetLengthR $+
						{endif}
						l4 15 =
						{if}
							"N" (L.$.Matrix_Nr) 2 $SetLengthR $+
						{endif}

						l4 23 =
						{if}
							"S" (L.$.Matrix_Nr) 2 $SetLengthR $+
						{endif}
' 24 s.o. bei 5!
						l4 25 =
						{if}
							"U" (L.$.Matrix_Nr) 2 $SetLengthR $+
						{endif}
						l4 26 =
						{if}
							"U" (L.$.Matrix_Nr) 2 $SetLengthR $+
						{endif}
						l4 27 =
						{if}
							"M" (L.$.Matrix_Nr) 2 $SetLengthR $+
						{endif}
						l4 28 =
						{if}
							"M" (L.$.Matrix_Nr) 2 $SetLengthR $+
						{endif}
						l4 29 =
						{if}
							"BVG"
						{endif}
						l4 30 =
						{if}
							(L.$.Matrix_Nr) "S" $+
						{endif}
						l4 31 =
						{if}
							(L.$.Matrix_Nr) "U" $+
						{endif}
						l4 32 =
						{if}
							(L.$.Matrix_Nr) "M" $+
						{endif}
						l4 35 =
						{if}
							"N" (L.$.Matrix_Nr) 2 $SetLengthR $+
						{endif}
						l4 36 =
						{if}
							"X" (L.$.Matrix_Nr) 2 $SetLengthR $+
						{endif}

						l4 39 =
						{if}
							"{" (L.$.Matrix_Nr) 2 $SetLengthR $+
						{endif}
						l4 40 =
						{if}
							"}" (L.$.Matrix_Nr) 2 $SetLengthR $+
						{endif}
						l4 41 =
						{if}
							"¨" (L.$.Matrix_Nr) 2 $SetLengthR $+
						{endif}
						(L.L.Matrix_Style) 0 =
						(L.L.Matrix_Style) 1 = ||
						{if}
							l4 42 =
							{if}
								"§" (L.$.Matrix_Nr) 2 $SetLengthR $+
							{endif}
						{else}
							l4 42 =
							{if}
								"RE" (L.$.Matrix_Nr) 2 $SetLengthR $+
							{endif}
						{endif}
						(L.L.Matrix_Style) 0 =
						(L.L.Matrix_Style) 1 = ||
						{if}
							l4 43 =
							{if}
								"$" (L.$.Matrix_Nr) 2 $SetLengthR $+
							{endif}
						{else}
							l4 43 =
							{if}
								"RB" (L.$.Matrix_Nr) 2 $SetLengthR $+
							{endif}
						{endif}
						l4 98 =
						{if}
							"..\..\Anzeigen\VMatrix_Topform\Setra315.bmp" (L.$.Matrix_Bitmapfilename) $+ 0 (M.V.STLoadTex) $msg	
							"" (S.$.Matrix_Nr) (S.$.Matrix_TerminusL1) (S.$.Matrix_TerminusL2)
						{endif}
					{endif}

					 $RemoveSpaces (S.$.Matrix_Nr)
	{endif}


'Zweiter Schritt: Ziel erstellen:

	(L.L.IBIS_TerminusIndex) s0 (L.L.Matrix_TerminusIndex_Last) s1 = !
	(L.L.elec_busbar_main) &&
	{if}
		l0 1 (M.V.GetTerminusString) $RemoveSpaces (S.$.Matrix_TerminusL1)
		l0 2 (M.V.GetTerminusString) $RemoveSpaces (S.$.Matrix_TerminusL2)

'Wenn nur die untere Zeile beschrieben ist, dann diese nach oben und untere leeren:
		(L.$.Matrix_TerminusL1) "" $=
		{if}
			(L.$.Matrix_TerminusL2) (S.$.Matrix_TerminusL1)
			"" (S.$.Matrix_TerminusL2)
		{endif}
		
'	*L Funktion aus dem churaKrueger

		(L.$.Matrix_TerminusL1)
		$d 1 $SetLengthR "]" $=
		$d 9 $SetLengthR && 6 $cutEnd "*L[" $= {if} 5 s1 min {endif}
		$d 8 $SetLengthR && 5 $cutEnd "*L[" $= {if} 4 s1 min {endif} ||
		$d 7 $SetLengthR && 4 $cutEnd "*L[" $= {if} 3 s1 min {endif} ||
		$d 6 $SetLengthR && 3 $cutEnd "*L[" $= {if} 2 s1 min {endif} ||
		$d 5 $SetLengthR && 2 $cutEnd "*L[" $= {if} 1 s1 max {endif} ||
		$d 4 $SetLengthR && 1 $cutEnd "*L[" $= {if} 0 s1 max {endif} || &&
		{if}
			$d l1 1 + $SetLengthR 1 $cutEnd (S.$.Matrix_Nr) 0 $* $+
			l1 4 + $cutEnd (S.$.Matrix_TerminusL1)
		{endif}


		(L.$.Matrix_Nr) 2 $SetLengthL "SB" $=
		{if}
			"{" (L.$.Matrix_Nr) 2 $cutBegin $+ (S.$.Matrix_Nr)
		{endif}
		(L.$.Matrix_Nr) 2 $SetLengthL "NE" $=
		{if}
			"}" (L.$.Matrix_Nr) 2 $cutBegin $+ (S.$.Matrix_Nr)
		{endif}
		(L.$.Matrix_Nr) "gh" $=
		(L.$.Matrix_Nr) "GH" $= ||
		(L.$.Matrix_Nr) "gh " $= ||
		{if}
			"|" (S.$.Matrix_Nr)
		{endif}
		(L.$.Matrix_Nr) "/^\" $=
		{if}
			"YES" (S.$.Matrix_Nr)
		{endif}
		(L.$.Matrix_Nr) "VEST" $=
		(L.$.Matrix_Nr) "Vest" $= ||
		(L.$.Matrix_Nr) "VST" $= ||
		{if}
			"~" (S.$.Matrix_Nr)
		{endif}
' *SCH := Add school icon
		(L.$.Matrix_TerminusL1) $d 4 $SetLengthR "*SCH" $=
		{if}
			4 $cutEnd (S.$.Matrix_TerminusL1)
			"|" (L.$.Matrix_Nr) $+ (S.$.Matrix_Nr)
		{endif}
' *SCH := Add school icon
		(L.$.Matrix_TerminusL1) $d 2 $SetLengthR "*U" $=
		{if}
			2 $cutEnd (S.$.Matrix_TerminusL1)
			(L.$.Matrix_TerminusL1) ">" $+ (S.$.Matrix_TerminusL1)
		{endif}
' *SCH := Add school icon
		(L.$.Matrix_TerminusL1) $d 2 $SetLengthR "*S" $=
		{if}
			2 $cutEnd (S.$.Matrix_TerminusL1)
			(L.$.Matrix_TerminusL1) "<" $+ (S.$.Matrix_TerminusL1)
		{endif}

' *SCH := Add school icon
		(L.$.Matrix_TerminusL2) $d 2 $SetLengthR "*U" $=
		{if}
			2 $cutEnd (S.$.Matrix_TerminusL2)
			(L.$.Matrix_TerminusL2) ">" $+ (S.$.Matrix_TerminusL2)
		{endif}
' *SCH := Add school icon
		(L.$.Matrix_TerminusL2) $d 2 $SetLengthR "*S" $=
		{if}
			2 $cutEnd (S.$.Matrix_TerminusL2)
			(L.$.Matrix_TerminusL2) "<" $+ (S.$.Matrix_TerminusL2)
		{endif}
	{endif}

'Dritter Schritt: Speicherbitmap schreiben:

    (L.L.IBIS_Linie_Complex) (L.L.Matrix_Nr_Last) = ! 
    (L.L.IBIS_TerminusIndex) s0 (L.L.Matrix_TerminusIndex_Last) s1 = ! ||
    (L.L.Matrix_Init_Status) (L.L.Matrix_Init_StatusLast) = ! ||
    (L.L.elec_busbar_main) &&
    {if}
		
	(L.$.Matrix_TerminusL2) "" $=
	{if}
		(M.L.Matrix_Verschiebungprüfen)
	{endif}


	l0 (S.L.Matrix_TerminusAct)
	(L.L.IBIS_Linie_Complex) (S.L.Matrix_Nr_Last)
	(L.L.IBIS_Linie_Suffix) 99 = !
	{if}
	    l0 7 (M.V.GetTerminusString) $RemoveSpaces (S.$.Matrix_Bitmapfilename)
	    "" $=
	    {if}

'3.0 Initialisieren der Bitmap und setzen der Farbe:

		0 (M.V.STNewTex)
		0 (M.V.STLock)

		0
		0
		255
		0
		0
		(M.V.STSetColor)


'Ab hier gelten folgende Register-Zuordnungen:
'l0 = Fontindex
'l1 = Stringlänge (Pixel)
'l2 = Y-Offset
'l3 = Verfügbare Länge
'l4 = Einzeilig
'l5 = Zentrierungsaufschlag
'l6 = Sperrpixelfaktor
'l7 = (max.) Sperrung



		(L.$.Matrix_Nr) "" $=
		{if}
			0 s1 (S.L.Matrix_Xpos)
		{else}

			(L.$.Matrix_Nr) $StrToFloat 9999 =
			{if}
				"..\Texture\Matrix_Startup\1.bmp" (L.$.Matrix_Bitmapfilename) $+ 0 (M.V.STLoadTex) $msg	
				"" (S.$.Matrix_Nr) (S.$.Matrix_TerminusL1) (S.$.Matrix_TerminusL2)
			{endif}
			(L.$.Matrix_Nr) $StrToFloat 9998 =
			{if}
				"..\Texture\Matrix_Startup\2.bmp" (L.$.Matrix_Bitmapfilename) $+ 0 (M.V.STLoadTex) $msg	
				"" (S.$.Matrix_Nr) (S.$.Matrix_TerminusL1) (S.$.Matrix_TerminusL2)
			{endif}
			(L.$.Matrix_Nr) $StrToFloat 9997 = 
			{if}
				(L.L.Matrix_Style) 1 =
				{if}
					"..\Texture\Matrix_Startup\3.bmp" (L.$.Matrix_Bitmapfilename) $+ 0 (M.V.STLoadTex) $msg	
					"" (S.$.Matrix_Nr) (S.$.Matrix_TerminusL1) (S.$.Matrix_TerminusL2)	
				{else}
					"..\Texture\Matrix_Startup\3_2.bmp" (L.$.Matrix_Bitmapfilename) $+ 0 (M.V.STLoadTex) $msg	
					"" (S.$.Matrix_Nr) (S.$.Matrix_TerminusL1) (S.$.Matrix_TerminusL2)		
				{endif}	
			{endif}

'3.A.0 Sperrpixelfaktor (l6):
			(L.$.Matrix_Nr) $length 1 - 0 max s6
'3.A.05 Setzen der Maximalbreite:
			28 s3
'3.A.1 Bestimmen des Fonts der Linie (vorne):
			
			(L.$.Matrix_Nr) (L.L.Font_Linie_Dick) s0 (M.V.TextLength) l6 + s1
			32 >
			{if}
				(L.$.Matrix_Nr) (L.L.Font_Linie_Duenn) s0 (M.V.TextLength) l6 + s1
				32 >
				{if}
					l1 l6 - s1
					0 s7
				{endif}
			{else}
				0 s7
			{endif}

'	l0: Schriftart, l1: Länge in Pixeln

'3.A.2 Schreiben:
			0
			0
			0
			l0
			2
			0 s7
			(L.$.Matrix_Nr)
			(M.V.STTextOut)
			
'3.A.1 Bestimmen des Fonts der Linie (Rechts):

			(L.$.Matrix_Nr) (L.L.Font_Linie_Dick) s0 (M.V.TextLength) l6 + s1
			32 >
			{if}
				(L.$.Matrix_Nr) (L.L.Font_Linie_Duenn) s0 (M.V.TextLength) l6 + s1
				32 >
				{if}
					l1 l6 - s1
					0 s7
				{endif}
			{else}
				0 s7
			{endif}

'	l0: Schriftart, l1: Länge in Pixeln

'3.A.2 Schreiben:
			0
			0
			16
			l0
			2
			0 s7
			(L.$.Matrix_Nr)
			(M.V.STTextOut)

'3.A.3 Bestimmen des Startpunktes des Zieles (Matrix_Xpos):
		l1 1 + (S.L.Matrix_Xpos)

'3.A.4 Bestimmen des Fonts der Linie (hinten):


			0 s2
			(L.$.Matrix_Nr) (L.L.Font_Linie_Dick) s0 (M.V.TextLength) s1
			l3 >
			{if}
				0 s2
				(L.$.Matrix_Nr) (L.L.Font_Linie_Duenn) s0 (M.V.TextLength) s1
			{endif}


'	l0: Schriftart, l1: Länge in Pixeln

'3.A.5 Berechnen der Sperrung:
			l3 l1 - l6 / trunc 0 min s7
			l1 l6 l7 * + s1
'3.A.6 Berechnen des Zentrierungsaufschlages (l5):
			l3 l1 - 2 / trunc s5

'3.A.7 Schreiben:
			0
			l5
			32
			l0
			2
			l7
			(L.$.Matrix_Nr)
			(M.V.STTextOut)

'3.A.4 Bestimmen des Fonts der Linie (links):


			0 s2
			(L.$.Matrix_Nr) (L.L.Font_Linie_Dick) s0 (M.V.TextLength) s1
			l3 >
			{if}
				0 s2
				(L.$.Matrix_Nr) (L.L.Font_Linie_Duenn) s0 (M.V.TextLength) s1
			{endif}


'	l0: Schriftart, l1: Länge in Pixeln

'3.A.5 Berechnen der Sperrung:
			l3 l1 - l6 / trunc 0 min s7
			l1 l6 l7 * + s1
'3.A.6 Berechnen des Zentrierungsaufschlages (l5):
			l3 l1 - 2 / trunc s5

'3.A.7 Schreiben:
			0
			30 l5 +
			32
			l0
			2
			l7
			(L.$.Matrix_Nr)
			(M.V.STTextOut)
		{endif}


'Schreiben des Zieles Front-Anzeige:

		(L.L.Matrix_Style) 0 =
		{if}
			0 (S.L.Matrix_Ypos)
			
			(M.L.Matrix_WriteTerminus)
			
			16 (S.L.Matrix_Ypos)
		
			(M.L.Matrix_WriteTerminus_Rechts)
		{endif}

		(L.L.Matrix_Style) 1 =
		{if}
			0 (S.L.Matrix_Ypos)
			
			(M.L.Matrix_WriteTerminus_LW)
			
			16 (S.L.Matrix_Ypos)
			
			(M.L.Matrix_WriteTerminus_Rechts_LW)
		{endif}

		(L.L.Matrix_Style) 2 =
		{if}
			0 (S.L.Matrix_Ypos)
			
			(M.L.Matrix_WriteTerminus_LW2)
			
			16 (S.L.Matrix_Ypos)
			
			(M.L.Matrix_WriteTerminus_Rechts_LW2)
		{endif}

'Fertig: Unlocken


		0 (M.V.STUnlock)

	    {else}
		"..\..\Anzeigen\VMatrix_Topform\" (L.$.Matrix_Bitmapfilename) $+ 0 (M.V.STLoadTex) $msg
	    {endif}
		0 (S.L.Matrix_LED_Text)
	    (L.L.Matrix_TerminusAct) (S.L.Matrix_TerminusIndex_Last)
	    (M.L.matrix_refreshIntIndex)
	{endif}
'RefreshCursor zurücksetzen:
	0 (S.L.Matrix_RefreshCursor)
    {endif}



'Nun sollen die Pixel schrittweise übertragen werden - zunächst mit 1Pixel/Frame:



	(L.L.elec_busbar_main)
	(L.L.Matrix_RefreshCursor) 0 >= &&
	{if}


'Locken:
		0 (M.V.STLock)
		1 (M.V.STLock)


'Sound abspielen:

		(L.L.Matrix_RefreshCursor) 0 =
		{if}
			(T.L.ev_Matrix_Terminus_change)
		{endif}


		(M.L.Matrix_PixelRefresh_x2)
		(M.L.Matrix_PixelRefresh_x2)
		(M.L.Matrix_PixelRefresh_x2)
		(M.L.Matrix_PixelRefresh_x2)
		(M.L.Matrix_PixelRefresh_x2)
		(M.L.Matrix_PixelRefresh_x2)
		(M.L.Matrix_PixelRefresh_x2)
		(M.L.Matrix_PixelRefresh_x2)
		(M.L.Matrix_PixelRefresh_x2)
		(M.L.Matrix_PixelRefresh_x2)
		(M.L.Matrix_PixelRefresh_x2)
		(M.L.Matrix_PixelRefresh_x2)
		(M.L.Matrix_PixelRefresh_x2)
		(M.L.Matrix_PixelRefresh_x2)
		(M.L.Matrix_PixelRefresh_x2)
		(M.L.Matrix_PixelRefresh_x2)
		(M.L.Matrix_PixelRefresh_x2)
		(M.L.Matrix_PixelRefresh_x2)
		(M.L.Matrix_PixelRefresh_x2)
		(M.L.Matrix_PixelRefresh_x2)
		(M.L.Matrix_PixelRefresh_x2)
		(M.L.Matrix_PixelRefresh_x2)
		(M.L.Matrix_PixelRefresh_x2)
		(M.L.Matrix_PixelRefresh_x2)
		(M.L.Matrix_PixelRefresh_x2)
		(M.L.Matrix_PixelRefresh_x2)
		(M.L.Matrix_PixelRefresh_x2)
		(M.L.Matrix_PixelRefresh_x2)
		(M.L.Matrix_PixelRefresh_x2)
		(M.L.Matrix_PixelRefresh_x2)
		(M.L.Matrix_PixelRefresh_x2)
		(M.L.Matrix_PixelRefresh_x2)
		(M.L.Matrix_PixelRefresh_x2)
		(M.L.Matrix_PixelRefresh_x2)
		(M.L.Matrix_PixelRefresh_x2)
		(M.L.Matrix_PixelRefresh_x2)
		(M.L.Matrix_PixelRefresh_x2)
		(M.L.Matrix_PixelRefresh_x2)
		(M.L.Matrix_PixelRefresh_x2)
		(M.L.Matrix_PixelRefresh_x2)
		(M.L.Matrix_PixelRefresh_x2)
		(M.L.Matrix_PixelRefresh_x2)
		(M.L.Matrix_PixelRefresh_x2)


'Unlocken:

		0 (M.V.STUnlock)
		1 (M.V.STUnlock)
		1 (M.V.STFilter)


	{endif}




'Aktualisierung der Code-Tafel:

	"Linienlisten\" (L.$.yard) "_ANX.jpg" $+ $+ (S.$.Matrix_Linelist)

	(L.L.matrix_refresh_seitenschild)
	{if}
		"..\..\Anzeigen\Seitenschilder\" 2 (M.V.GetDepotStringGlobal) $+ "\" $+ (L.$.Matrix_Nr) $RemoveSpaces $+ ".bmp" $+ (S.$.Matrix_Seitenschild)
		0 (S.L.matrix_refresh_seitenschild)
	{endif}

{end}




'*------------------------------------------------------------------------------------------------------------


{macro:Matrix_PixelRefresh_x2}
0 s0
(M.L.Matrix_PixelRefresh)
(L.L.Matrix_RefreshCursor) 1 - (S.L.Matrix_RefreshCursor)

1 s0
(M.L.Matrix_PixelRefresh)
(L.L.Matrix_RefreshCursor) 1 - (S.L.Matrix_RefreshCursor)
2 s0
(M.L.Matrix_PixelRefresh)
{end}

{macro:Matrix_PixelRefresh}
		(L.L.Matrix_RefreshCursor) (C.L.Matrix_HxW) >=
		(L.L.Matrix_RefreshCursor) 0 < ||
		{if}
			(L.L.IBIS_Linie_Suffix) 99 =
			{if}
				(L.L.Matrix_Testcolor) ! (S.L.Matrix_Testcolor)
				0
			{else}
				-1
			{endif}
			(S.L.Matrix_RefreshCursor)
		{else}


'X und Y berechnen:
'l0: Ebene (vorne/Seite)
'l1: X
'l2: Y

			(L.L.Matrix_RefreshCursor) (C.L.Matrix_HxW) % (C.L.Matrix_Height) / trunc s1
			(L.L.Matrix_RefreshCursor) (C.L.Matrix_HxW) % (C.L.Matrix_Height) / trunc s1
			(L.L.Matrix_RefreshCursor) (C.L.Matrix_HxW) % (C.L.Matrix_Height) % s2

'Fehlerpixel berechnen:
			(L.L.Matrix_RefreshCursor) (M.V.NrSpecRandom) 2 * (L.L.Matrix_Fehlerpixel) / s6
			1 <
			{if}
				255 s7
			{else}
			l6 2 <
			{if}
				0 s7
			{else}
'Wenn 99er-Code, dann alles grün:
			(L.L.IBIS_Linie_Suffix) 99 =
			{if}
				(L.L.Matrix_Testcolor) 255 * s7
			{else}

'Farbe setzen:
				0
				l1
				l2 l0 16 * +
				(M.V.STReadPixel) 

				0 (M.V.STGetR) s7
			{endif}
			{endif}
			{endif}


			1
			l7
			255
			255
			255
			(M.V.STSetColor)

'Pixel zeichnen:
			1
			l1 (C.L.Matrix_PixelFactor) * s4
			l2 l0 16 * + (C.L.Matrix_PixelFactor) * s5
			l4 (C.L.Matrix_PixelFactor) + 2 -
			l5 (C.L.Matrix_PixelFactor) + 2 -
			(M.V.STDrawRect)

'Cursor verschieben:
			(L.L.Matrix_RefreshCursor) 1 + (S.L.Matrix_RefreshCursor)
		{endif}
{end}

{macro:Matrix_WriteTerminus}

'3.B.2 Bestimmen der verbliebenen Länge des Zieles vorne (l3):
		126 (L.L.Matrix_Xpos) - s3


'3.B.3 Einzeilig (l4)?
		(L.$.Matrix_TerminusL2) "" $= s4

'3.B.4 Bestimmen des Fonts der Zeile 1 des Ziels (l0/l1):

		l4 {if}
			9 s7
			0 s2
			(L.$.Matrix_TerminusL1) (L.L.Font_16x7) s0 (M.V.TextLength) s1
			l3 >
			{if}
				7 s7
				0 s2
				(L.$.Matrix_TerminusL1) (L.L.Font_16x6) s0 (M.V.TextLength) s1
				l3 >
				{if}
					5 s7
					4 s2
					(L.$.Matrix_TerminusL1) (L.L.Font_Ziel_8x6) s0 (M.V.TextLength) s1
					l3 >
					{if}
						4 s7
						4 s2
						(L.$.Matrix_TerminusL1) (L.L.Font_Ziel_8x4) s0 (M.V.TextLength) s1
					{endif}
				{endif}
			{endif}
		{else}
			0 s2
			6 s7
			(L.$.Matrix_TerminusL1) (L.L.Font_Ziel_8x6) s0 (M.V.TextLength) s1
			l3 >
			{if}
				0 s2
				4 s7
				(L.$.Matrix_TerminusL1) (L.L.Font_Ziel_8x4) s0 (M.V.TextLength) s1
			{endif}
		{endif}
'3.B.5 Berechnen des Sperrpixelfaktors: (Anzahl der Buchstaben, l6)
	(L.$.Matrix_TerminusL1) $length 1 - 0 max s6
'3.B.6 Berechnen der Sperrung:
	l3 l1 - l6 / trunc 0 min s7
	l1 l6 l7 * + s1
'3.B.7 Berechnen des Zentrierungsaufschlages (l5):
	l3 l1 - 2 / trunc s5
'3.B.8 Schreiben:
			0
			(L.L.Matrix_Xpos) l5 +
			(L.L.Matrix_Ypos) l2 +
			l0
			2
			l7
			(L.$.Matrix_TerminusL1)
			(M.V.STTextOut)

	


'3.C.1 Bestimmen des Fonts der Zeile 2 des Ziels (l0/l1):
		l4 ! {if}
			6 s7
			(L.$.Matrix_TerminusL2) (L.L.Font_Ziel_8x6) s0 (M.V.TextLength) s1
			l3 >
			{if}
				4 s7
				(L.$.Matrix_TerminusL2) (L.L.Font_Ziel_8x4) s0 (M.V.TextLength) s1
			{endif}

'3.C.2 Berechnen des Sperrpixelfaktors: (Anzahl der Buchstaben, l6)
	(L.$.Matrix_TerminusL2) $length 1 - 0 max s6
'3.C.3 Berechnen der Sperrung:
	l3 l1 - l6 / trunc 0 min s7
	l1 l6 l7 * + s1
'3.C.4 Berechnen des Zentrierungsaufschlages (l5):
	l3 l1 - 2 / trunc s5
'3.C.5 Schreiben:
			0
			(L.L.Matrix_Xpos) l5 +
			(L.L.Matrix_Ypos) 8 +
			l0
			2
			l7
			(L.$.Matrix_TerminusL2)
			(M.V.STTextOut)


		{endif}
{end}

{macro:Matrix_WriteTerminus_Rechts}

'3.B.2 Bestimmen der verbliebenen Länge des Zieles vorne (l3):
		112 (L.L.Matrix_Xpos) - s3


'3.B.3 Einzeilig (l4)?
		(L.$.Matrix_TerminusL2) "" $= s4

'3.B.4 Bestimmen des Fonts der Zeile 1 des Ziels (l0/l1):

		l4 {if}
			9 s7
			0 s2
			(L.$.Matrix_TerminusL1) (L.L.Font_16x7) s0 (M.V.TextLength) s1
			l3 >
			{if}
				7 s7
				0 s2
				(L.$.Matrix_TerminusL1) (L.L.Font_16x6) s0 (M.V.TextLength) s1
				l3 >
				{if}
					5 s7
					4 s2
					(L.$.Matrix_TerminusL1) (L.L.Font_Ziel_8x6) s0 (M.V.TextLength) s1
					l3 >
					{if}
						4 s7
						4 s2
						(L.$.Matrix_TerminusL1) (L.L.Font_Ziel_8x4) s0 (M.V.TextLength) s1
					{endif}
				{endif}
			{endif}
		{else}
			0 s2
			6 s7
			(L.$.Matrix_TerminusL1) (L.L.Font_Ziel_8x6) s0 (M.V.TextLength) s1
			l3 >
			{if}
				0 s2
				4 s7
				(L.$.Matrix_TerminusL1) (L.L.Font_Ziel_8x4) s0 (M.V.TextLength) s1
			{endif}
		{endif}
'3.B.5 Berechnen des Sperrpixelfaktors: (Anzahl der Buchstaben, l6)
	(L.$.Matrix_TerminusL1) $length 1 - 0 max s6
'3.B.6 Berechnen der Sperrung:
	l3 l1 - l6 / trunc 0 min s7
	l1 l6 l7 * + s1
'3.B.7 Berechnen des Zentrierungsaufschlages (l5):
	l3 l1 - 2 / trunc s5
'3.B.8 Schreiben:
			0
			(L.L.Matrix_Xpos) l5 +
			(L.L.Matrix_Ypos) l2 +
			l0
			2
			l7
			(L.$.Matrix_TerminusL1)
			(M.V.STTextOut)

	


'3.C.1 Bestimmen des Fonts der Zeile 2 des Ziels (l0/l1):
		l4 ! {if}
			6 s7
			(L.$.Matrix_TerminusL2) (L.L.Font_Ziel_8x6) s0 (M.V.TextLength) s1
			l3 >
			{if}
				4 s7
				(L.$.Matrix_TerminusL2) (L.L.Font_Ziel_8x4) s0 (M.V.TextLength) s1
			{endif}

'3.C.2 Berechnen des Sperrpixelfaktors: (Anzahl der Buchstaben, l6)
	(L.$.Matrix_TerminusL2) $length 1 - 0 max s6
'3.C.3 Berechnen der Sperrung:
	l3 l1 - l6 / trunc 0 min s7
	l1 l6 l7 * + s1
'3.C.4 Berechnen des Zentrierungsaufschlages (l5):
	l3 l1 - 2 / trunc s5
'3.C.5 Schreiben:
			0
			(L.L.Matrix_Xpos) l5 +
			(L.L.Matrix_Ypos) 8 +
			l0
			2
			l7
			(L.$.Matrix_TerminusL2)
			(M.V.STTextOut)


		{endif}
{end}

{macro:Matrix_WriteTerminus_LW}

'3.B.2 Bestimmen der verbliebenen Länge des Zieles vorne (l3):
		126 (L.L.Matrix_Xpos) - s3


'3.B.3 Einzeilig (l4)?
		(L.$.Matrix_TerminusL2) "" $= s4

'3.B.4 Bestimmen des Fonts der Zeile 1 des Ziels (l0/l1):

		l4 {if}
			9 s7
			(L.L.Matrix_L1Verschiebung) 1 =
			{if}
				0 s2
				(L.$.Matrix_TerminusL1) (L.L.Font_Ziel_15x12) s0 (M.V.TextLength) s1
			{else}
				1 s2
				(L.$.Matrix_TerminusL1) (L.L.Font_Ziel_15x12) s0 (M.V.TextLength) s1
			{endif}
			l3 >
			{if}
				7 s7
				4 s2
				(L.$.Matrix_TerminusL1) (L.L.Font_Ziel_8x6) s0 (M.V.TextLength) s1
				l3 >
				{if}
					5 s7
					4 s2
					(L.$.Matrix_TerminusL1) (L.L.Font_Ziel_8x5) s0 (M.V.TextLength) s1
					l3 >
					{if}
						4 s7
						4 s2
						(L.$.Matrix_TerminusL1) (L.L.Font_Ziel_8x4) s0 (M.V.TextLength) s1
					{endif}
				{endif}
			{endif}
		{else}
			0 s2
			6 s7
			(L.$.Matrix_TerminusL1) (L.L.Font_Ziel_8x6) s0 (M.V.TextLength) s1
			l3 >
			{if}
				0 s2
				4 s7
				(L.$.Matrix_TerminusL1) (L.L.Font_Ziel_8x5) s0 (M.V.TextLength) s1
			{endif}
		{endif}
'3.B.5 Berechnen des Sperrpixelfaktors: (Anzahl der Buchstaben, l6)
	(L.$.Matrix_TerminusL1) $length 1 - 0 max s6
'3.B.6 Berechnen der Sperrung:
	l3 l1 - l6 / trunc 4 min s7
	l1 l6 l7 * + s1
'3.B.7 Berechnen des Zentrierungsaufschlages (l5):
	l3 l1 - 2 / trunc s5
'3.B.8 Schreiben:
			0
			(L.L.Matrix_Xpos) l5 +
			(L.L.Matrix_Ypos) l2 +
			l0
			2
			l7
			(L.$.Matrix_TerminusL1)
			(M.V.STTextOut)

	


'3.C.1 Bestimmen des Fonts der Zeile 2 des Ziels (l0/l1):
		l4 ! {if}
			6 s7
			(L.$.Matrix_TerminusL2) (L.L.Font_Ziel_8x6) s0 (M.V.TextLength) s1
			l3 >
			{if}
				4 s7
				(L.$.Matrix_TerminusL2) (L.L.Font_Ziel_8x4) s0 (M.V.TextLength) s1
			{endif}

'3.C.2 Berechnen des Sperrpixelfaktors: (Anzahl der Buchstaben, l6)
	(L.$.Matrix_TerminusL2) $length 1 - 0 max s6
'3.C.3 Berechnen der Sperrung:
	l3 l1 - l6 / trunc 4 min s7
	l1 l6 l7 * + s1
'3.C.4 Berechnen des Zentrierungsaufschlages (l5):
	l3 l1 - 2 / trunc s5
'3.C.5 Schreiben:
			0
			(L.L.Matrix_Xpos) l5 +
			(L.L.Matrix_Ypos) 8 +
			l0
			2
			l7
			(L.$.Matrix_TerminusL2)
			(M.V.STTextOut)


		{endif}
{end}

{macro:Matrix_WriteTerminus_Rechts_LW}

'3.B.2 Bestimmen der verbliebenen Länge des Zieles vorne (l3):
		112 (L.L.Matrix_Xpos) - s3


'3.B.3 Einzeilig (l4)?
		(L.$.Matrix_TerminusL2) "" $= s4

'3.B.4 Bestimmen des Fonts der Zeile 1 des Ziels (l0/l1):

		l4 {if}
			9 s7
			(L.L.Matrix_L1Verschiebung) 1 =
			{if}
				0 s2
				(L.$.Matrix_TerminusL1) (L.L.Font_Ziel_15x12) s0 (M.V.TextLength) s1
			{else}
				1 s2
				(L.$.Matrix_TerminusL1) (L.L.Font_Ziel_15x12) s0 (M.V.TextLength) s1
			{endif}
			l3 >
			{if}
				7 s7
				4 s2
				(L.$.Matrix_TerminusL1) (L.L.Font_Ziel_8x6) s0 (M.V.TextLength) s1
				l3 >
				{if}
					5 s7
					4 s2
					(L.$.Matrix_TerminusL1) (L.L.Font_Ziel_8x5) s0 (M.V.TextLength) s1
					l3 >
					{if}
						4 s7
						4 s2
						(L.$.Matrix_TerminusL1) (L.L.Font_Ziel_8x4) s0 (M.V.TextLength) s1
					{endif}
				{endif}
			{endif}
		{else}
			0 s2
			6 s7
			(L.$.Matrix_TerminusL1) (L.L.Font_Ziel_8x6) s0 (M.V.TextLength) s1
			l3 >
			{if}
				0 s2
				4 s7
				(L.$.Matrix_TerminusL1) (L.L.Font_Ziel_8x4) s0 (M.V.TextLength) s1
			{endif}
		{endif}
'3.B.5 Berechnen des Sperrpixelfaktors: (Anzahl der Buchstaben, l6)
	(L.$.Matrix_TerminusL1) $length 1 - 0 max s6
'3.B.6 Berechnen der Sperrung:
	l3 l1 - l6 / trunc 4 min s7
	l1 l6 l7 * + s1
'3.B.7 Berechnen des Zentrierungsaufschlages (l5):
	l3 l1 - 2 / trunc s5
'3.B.8 Schreiben:
			0
			(L.L.Matrix_Xpos) l5 +
			(L.L.Matrix_Ypos) l2 +
			l0
			2
			l7
			(L.$.Matrix_TerminusL1)
			(M.V.STTextOut)

	


'3.C.1 Bestimmen des Fonts der Zeile 2 des Ziels (l0/l1):
		l4 ! {if}
			6 s7
			(L.$.Matrix_TerminusL2) (L.L.Font_Ziel_8x6) s0 (M.V.TextLength) s1
			l3 >
			{if}
				4 s7
				(L.$.Matrix_TerminusL2) (L.L.Font_Ziel_8x4) s0 (M.V.TextLength) s1
			{endif}

'3.C.2 Berechnen des Sperrpixelfaktors: (Anzahl der Buchstaben, l6)
	(L.$.Matrix_TerminusL2) $length 1 - 0 max s6
'3.C.3 Berechnen der Sperrung:
	l3 l1 - l6 / trunc 4 min s7
	l1 l6 l7 * + s1
'3.C.4 Berechnen des Zentrierungsaufschlages (l5):
	l3 l1 - 2 / trunc s5
'3.C.5 Schreiben:
			0
			(L.L.Matrix_Xpos) l5 +
			(L.L.Matrix_Ypos) 8 +
			l0
			2
			l7
			(L.$.Matrix_TerminusL2)
			(M.V.STTextOut)


		{endif}
{end}

{macro:Matrix_WriteTerminus_LW2}

'3.B.2 Bestimmen der verbliebenen Länge des Zieles vorne (l3):
		126 (L.L.Matrix_Xpos) - s3


'3.B.3 Einzeilig (l4)?
		(L.$.Matrix_TerminusL2) "" $= s4

'3.B.4 Bestimmen des Fonts der Zeile 1 des Ziels (l0/l1):

		l4 {if}
			9 s7
			0 s2
			(L.$.Matrix_TerminusL1) (L.L.Font_Ziel_15x12) s0 (M.V.TextLength) s1
			l3 >
			{if}
				7 s7
				4 s2
				(L.$.Matrix_TerminusL1) (L.L.Font_Ziel_8x6) s0 (M.V.TextLength) s1
				l3 >
				{if}
					4 s7
					4 s2
					(L.$.Matrix_TerminusL1) (L.L.Font_Ziel_8x4) s0 (M.V.TextLength) s1
				{endif}
			{endif}
		{else}
			0 s2
			6 s7
			(L.$.Matrix_TerminusL1) (L.L.Font_Ziel_8x6) s0 (M.V.TextLength) s1
			l3 >
			{if}
				0 s2
				4 s7
				(L.$.Matrix_TerminusL1) (L.L.Font_Ziel_8x4) s0 (M.V.TextLength) s1
			{endif}
		{endif}
'3.B.5 Berechnen des Sperrpixelfaktors: (Anzahl der Buchstaben, l6)
	(L.$.Matrix_TerminusL1) $length 1 - 0 max s6
'3.B.6 Berechnen der Sperrung:
	l3 l1 - l6 / trunc 2 min s7
	l1 l6 l7 * + s1
'3.B.7 Berechnen des Zentrierungsaufschlages (l5):
	l3 l1 - 2 / trunc s5
'3.B.8 Schreiben:
			0
			(L.L.Matrix_Xpos) l5 +
			(L.L.Matrix_Ypos) l2 +
			l0
			2
			l7
			(L.$.Matrix_TerminusL1)
			(M.V.STTextOut)

	


'3.C.1 Bestimmen des Fonts der Zeile 2 des Ziels (l0/l1):
		l4 ! {if}
			6 s7
			(L.$.Matrix_TerminusL2) (L.L.Font_Ziel_8x6) s0 (M.V.TextLength) s1
			l3 >
			{if}
				4 s7
				(L.$.Matrix_TerminusL2) (L.L.Font_Ziel_8x4) s0 (M.V.TextLength) s1
			{endif}

'3.C.2 Berechnen des Sperrpixelfaktors: (Anzahl der Buchstaben, l6)
	(L.$.Matrix_TerminusL2) $length 1 - 0 max s6
'3.C.3 Berechnen der Sperrung:
	l3 l1 - l6 / trunc 2 min s7
	l1 l6 l7 * + s1
'3.C.4 Berechnen des Zentrierungsaufschlages (l5):
	l3 l1 - 2 / trunc s5
'3.C.5 Schreiben:
			0
			(L.L.Matrix_Xpos) l5 +
			(L.L.Matrix_Ypos) 8 +
			l0
			2
			l7
			(L.$.Matrix_TerminusL2)
			(M.V.STTextOut)


		{endif}
{end}

{macro:Matrix_WriteTerminus_Rechts_LW2}

'3.B.2 Bestimmen der verbliebenen Länge des Zieles vorne (l3):
		112 (L.L.Matrix_Xpos) - s3


'3.B.3 Einzeilig (l4)?
		(L.$.Matrix_TerminusL2) "" $= s4

'3.B.4 Bestimmen des Fonts der Zeile 1 des Ziels (l0/l1):

		l4 {if}
			9 s7
			0 s2
			(L.$.Matrix_TerminusL1) (L.L.Font_Ziel_15x12) s0 (M.V.TextLength) s1
			l3 >
			{if}
				7 s7
				4 s2
				(L.$.Matrix_TerminusL1) (L.L.Font_Ziel_8x6) s0 (M.V.TextLength) s1
				l3 >
				{if}
					4 s7
					4 s2
					(L.$.Matrix_TerminusL1) (L.L.Font_Ziel_8x4) s0 (M.V.TextLength) s1
				{endif}
			{endif}
		{else}
			0 s2
			6 s7
			(L.$.Matrix_TerminusL1) (L.L.Font_Ziel_8x6) s0 (M.V.TextLength) s1
			l3 >
			{if}
				0 s2
				4 s7
				(L.$.Matrix_TerminusL1) (L.L.Font_Ziel_8x4) s0 (M.V.TextLength) s1
			{endif}
		{endif}
'3.B.5 Berechnen des Sperrpixelfaktors: (Anzahl der Buchstaben, l6)
	(L.$.Matrix_TerminusL1) $length 1 - 0 max s6
'3.B.6 Berechnen der Sperrung:
	l3 l1 - l6 / trunc 2 min s7
	l1 l6 l7 * + s1
'3.B.7 Berechnen des Zentrierungsaufschlages (l5):
	l3 l1 - 2 / trunc s5
'3.B.8 Schreiben:
			0
			(L.L.Matrix_Xpos) l5 +
			(L.L.Matrix_Ypos) l2 +
			l0
			2
			l7
			(L.$.Matrix_TerminusL1)
			(M.V.STTextOut)

	


'3.C.1 Bestimmen des Fonts der Zeile 2 des Ziels (l0/l1):
		l4 ! {if}
			6 s7
			(L.$.Matrix_TerminusL2) (L.L.Font_Ziel_8x6) s0 (M.V.TextLength) s1
			l3 >
			{if}
				4 s7
				(L.$.Matrix_TerminusL2) (L.L.Font_Ziel_8x4) s0 (M.V.TextLength) s1
			{endif}

'3.C.2 Berechnen des Sperrpixelfaktors: (Anzahl der Buchstaben, l6)
	(L.$.Matrix_TerminusL2) $length 1 - 0 max s6
'3.C.3 Berechnen der Sperrung:
	l3 l1 - l6 / trunc 2 min s7
	l1 l6 l7 * + s1
'3.C.4 Berechnen des Zentrierungsaufschlages (l5):
	l3 l1 - 2 / trunc s5
'3.C.5 Schreiben:
			0
			(L.L.Matrix_Xpos) l5 +
			(L.L.Matrix_Ypos) 8 +
			l0
			2
			l7
			(L.$.Matrix_TerminusL2)
			(M.V.STTextOut)


		{endif}
{end}

{macro:matrix_refreshIntIndex}
	(L.L.matrix_steckschild_Termindex) s0 0 >=
	l0 0 (M.V.GetTerminusString) "" $= ! &&
	{if}
		l0
	{else}
		(L.L.Matrix_TerminusAct)
	{endif}
	(S.L.target_index_int)
{end}

{macro:Matrix_Verschiebungprüfen}
	0 (S.L.Matrix_L1Verschiebung)
	1 (S.L.Matrix_RefreshCursor)
	(M.L.Matrix_Verschiebungprüfen3)
	(M.L.Matrix_Verschiebungprüfen3)
	(M.L.Matrix_Verschiebungprüfen3)
	0 (S.L.Matrix_RefreshCursor)
{end}

{macro:Matrix_Verschiebungprüfen3}
	(M.L.Matrix_Verschiebungprüfen2)
	(M.L.Matrix_Verschiebungprüfen2)
{end}

{macro:Matrix_Verschiebungprüfen2}
	(M.L.Matrix_Verschiebungprüfen1)
	(M.L.Matrix_Verschiebungprüfen1)
{end}

{macro:Matrix_Verschiebungprüfen1}
	(M.L.Matrix_Verschiebungprüfen0)
	(M.L.Matrix_Verschiebungprüfen0)
{end}

{macro:Matrix_Verschiebungprüfen0}
	(L.$.Matrix_TerminusL1) $length s7 (L.L.Matrix_RefreshCursor) >=
	{if}
		l7 (L.L.Matrix_RefreshCursor) - s7
		(L.$.Matrix_TerminusL1) (L.L.Matrix_RefreshCursor) 1 - $cutBegin l7 $cutEnd "g" $=
		(L.$.Matrix_TerminusL1) (L.L.Matrix_RefreshCursor) 1 - $cutBegin l7 $cutEnd "j" $= ||
		(L.$.Matrix_TerminusL1) (L.L.Matrix_RefreshCursor) 1 - $cutBegin l7 $cutEnd "p" $= ||
		(L.$.Matrix_TerminusL1) (L.L.Matrix_RefreshCursor) 1 - $cutBegin l7 $cutEnd "q" $= ||
		(L.$.Matrix_TerminusL1) (L.L.Matrix_RefreshCursor) 1 - $cutBegin l7 $cutEnd "y" $= ||
		{if}
			1 (S.L.Matrix_L1Verschiebung)
		{endif}
		(L.L.Matrix_RefreshCursor) 1 + (S.L.Matrix_RefreshCursor)
	{endif}
{end}


