mirror of
				https://github.com/Swordfish90/cool-retro-term.git
				synced 2025-11-04 09:02:14 +00:00 
			
		
		
		
	Merge pull request #487 from Swordfish90/framebuffer
Separate dynamic effects (the one based on time) from static ones. This caches a lot of computations and reduce resource consumption.
This commit is contained in:
		@@ -48,7 +48,7 @@ QtObject{
 | 
				
			|||||||
    property bool showTerminalSize: true
 | 
					    property bool showTerminalSize: true
 | 
				
			||||||
    property real windowScaling: 1.0
 | 
					    property real windowScaling: 1.0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    property real fps: 24
 | 
					    property real fps: 20
 | 
				
			||||||
    property bool verbose: false
 | 
					    property bool verbose: false
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    property real bloomQuality: 0.5
 | 
					    property real bloomQuality: 0.5
 | 
				
			||||||
@@ -73,7 +73,7 @@ QtObject{
 | 
				
			|||||||
    property color backgroundColor: Utils.mix(Utils.strToColor(_backgroundColor), Utils.strToColor(saturatedColor), 0.7 + (contrast * 0.3))
 | 
					    property color backgroundColor: Utils.mix(Utils.strToColor(_backgroundColor), Utils.strToColor(saturatedColor), 0.7 + (contrast * 0.3))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    property real staticNoise: 0.12
 | 
					    property real staticNoise: 0.12
 | 
				
			||||||
    property real screenCurvature: 0.2
 | 
					    property real screenCurvature: 0.3
 | 
				
			||||||
    property real glowingLine: 0.2
 | 
					    property real glowingLine: 0.2
 | 
				
			||||||
    property real burnIn: 0.25
 | 
					    property real burnIn: 0.25
 | 
				
			||||||
    property real bloom: 0.55
 | 
					    property real bloom: 0.55
 | 
				
			||||||
@@ -155,7 +155,7 @@ QtObject{
 | 
				
			|||||||
        if (index === undefined) return;
 | 
					        if (index === undefined) return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        fontManager.item.selectedFontIndex = index;
 | 
					        fontManager.item.selectedFontIndex = index;
 | 
				
			||||||
        fontManager.item.scaling = totalFontScaling * windowScaling;
 | 
					        fontManager.item.scaling = totalFontScaling;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        var fontSource = fontManager.item.source;
 | 
					        var fontSource = fontManager.item.source;
 | 
				
			||||||
        var pixelSize = fontManager.item.pixelSize;
 | 
					        var pixelSize = fontManager.item.pixelSize;
 | 
				
			||||||
@@ -384,7 +384,7 @@ QtObject{
 | 
				
			|||||||
                  "rasterization": 0,
 | 
					                  "rasterization": 0,
 | 
				
			||||||
                  "rbgShift": 0,
 | 
					                  "rbgShift": 0,
 | 
				
			||||||
                  "saturationColor": 0.2483,
 | 
					                  "saturationColor": 0.2483,
 | 
				
			||||||
                  "screenCurvature": 0.1997,
 | 
					                  "screenCurvature": 0.3,
 | 
				
			||||||
                  "staticNoise": 0.1198,
 | 
					                  "staticNoise": 0.1198,
 | 
				
			||||||
                  "windowOpacity": 1
 | 
					                  "windowOpacity": 1
 | 
				
			||||||
                }'
 | 
					                }'
 | 
				
			||||||
@@ -411,7 +411,7 @@ QtObject{
 | 
				
			|||||||
                  "rasterization": 0,
 | 
					                  "rasterization": 0,
 | 
				
			||||||
                  "rbgShift": 0,
 | 
					                  "rbgShift": 0,
 | 
				
			||||||
                  "saturationColor": 0.0,
 | 
					                  "saturationColor": 0.0,
 | 
				
			||||||
                  "screenCurvature": 0.1997,
 | 
					                  "screenCurvature": 0.3,
 | 
				
			||||||
                  "staticNoise": 0.1198,
 | 
					                  "staticNoise": 0.1198,
 | 
				
			||||||
                  "windowOpacity": 1
 | 
					                  "windowOpacity": 1
 | 
				
			||||||
                }'
 | 
					                }'
 | 
				
			||||||
@@ -438,7 +438,7 @@ QtObject{
 | 
				
			|||||||
                  "rasterization": 1,
 | 
					                  "rasterization": 1,
 | 
				
			||||||
                  "rbgShift": 0,
 | 
					                  "rbgShift": 0,
 | 
				
			||||||
                  "saturationColor": 0.5,
 | 
					                  "saturationColor": 0.5,
 | 
				
			||||||
                  "screenCurvature": 0.2,
 | 
					                  "screenCurvature": 0.3,
 | 
				
			||||||
                  "staticNoise": 0.15,
 | 
					                  "staticNoise": 0.15,
 | 
				
			||||||
                  "windowOpacity": 1
 | 
					                  "windowOpacity": 1
 | 
				
			||||||
                }'
 | 
					                }'
 | 
				
			||||||
@@ -466,7 +466,7 @@ QtObject{
 | 
				
			|||||||
                  "rbgShift": 0,
 | 
					                  "rbgShift": 0,
 | 
				
			||||||
                  "saturationColor": 0,
 | 
					                  "saturationColor": 0,
 | 
				
			||||||
                  "screenCurvature": 0,
 | 
					                  "screenCurvature": 0,
 | 
				
			||||||
                  "staticNoise": 0.1545,
 | 
					                  "staticNoise": 0.15,
 | 
				
			||||||
                  "windowOpacity": 1
 | 
					                  "windowOpacity": 1
 | 
				
			||||||
                }'
 | 
					                }'
 | 
				
			||||||
            builtin: true
 | 
					            builtin: true
 | 
				
			||||||
@@ -492,7 +492,7 @@ QtObject{
 | 
				
			|||||||
                  "rasterization": 1,
 | 
					                  "rasterization": 1,
 | 
				
			||||||
                  "rbgShift": 0,
 | 
					                  "rbgShift": 0,
 | 
				
			||||||
                  "saturationColor": 0,
 | 
					                  "saturationColor": 0,
 | 
				
			||||||
                  "screenCurvature": 0.8976,
 | 
					                  "screenCurvature": 0.5,
 | 
				
			||||||
                  "staticNoise": 0.099,
 | 
					                  "staticNoise": 0.099,
 | 
				
			||||||
                  "windowOpacity": 1
 | 
					                  "windowOpacity": 1
 | 
				
			||||||
                }'
 | 
					                }'
 | 
				
			||||||
@@ -519,7 +519,7 @@ QtObject{
 | 
				
			|||||||
                  "rasterization": 1,
 | 
					                  "rasterization": 1,
 | 
				
			||||||
                  "rbgShift": 0.2969,
 | 
					                  "rbgShift": 0.2969,
 | 
				
			||||||
                  "saturationColor": 0,
 | 
					                  "saturationColor": 0,
 | 
				
			||||||
                  "screenCurvature": 0.3003,
 | 
					                  "screenCurvature": 0.5,
 | 
				
			||||||
                  "staticNoise": 0.2969,
 | 
					                  "staticNoise": 0.2969,
 | 
				
			||||||
                  "windowOpacity": 1
 | 
					                  "windowOpacity": 1
 | 
				
			||||||
                }'
 | 
					                }'
 | 
				
			||||||
@@ -546,7 +546,7 @@ QtObject{
 | 
				
			|||||||
                  "rasterization": 0,
 | 
					                  "rasterization": 0,
 | 
				
			||||||
                  "rbgShift": 0.3524,
 | 
					                  "rbgShift": 0.3524,
 | 
				
			||||||
                  "saturationColor": 0,
 | 
					                  "saturationColor": 0,
 | 
				
			||||||
                  "screenCurvature": 0.401,
 | 
					                  "screenCurvature": 0.4,
 | 
				
			||||||
                  "staticNoise": 0.0503,
 | 
					                  "staticNoise": 0.0503,
 | 
				
			||||||
                  "windowOpacity": 1
 | 
					                  "windowOpacity": 1
 | 
				
			||||||
                }'
 | 
					                }'
 | 
				
			||||||
@@ -573,7 +573,7 @@ QtObject{
 | 
				
			|||||||
                  "rasterization": 0,
 | 
					                  "rasterization": 0,
 | 
				
			||||||
                  "rbgShift": 0,
 | 
					                  "rbgShift": 0,
 | 
				
			||||||
                  "saturationColor": 0,
 | 
					                  "saturationColor": 0,
 | 
				
			||||||
                  "screenCurvature": 0.1997,
 | 
					                  "screenCurvature": 0.2,
 | 
				
			||||||
                  "staticNoise": 0,
 | 
					                  "staticNoise": 0,
 | 
				
			||||||
                  "windowOpacity": 1
 | 
					                  "windowOpacity": 1
 | 
				
			||||||
                }'
 | 
					                }'
 | 
				
			||||||
@@ -600,7 +600,7 @@ QtObject{
 | 
				
			|||||||
                  "rasterization": 0,
 | 
					                  "rasterization": 0,
 | 
				
			||||||
                  "rbgShift": 0,
 | 
					                  "rbgShift": 0,
 | 
				
			||||||
                  "saturationColor": 0.4983,
 | 
					                  "saturationColor": 0.4983,
 | 
				
			||||||
                  "screenCurvature": 0.05,
 | 
					                  "screenCurvature": 0,
 | 
				
			||||||
                  "staticNoise": 0.0955,
 | 
					                  "staticNoise": 0.0955,
 | 
				
			||||||
                  "windowOpacity": 0.7
 | 
					                  "windowOpacity": 0.7
 | 
				
			||||||
                }'
 | 
					                }'
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -13,8 +13,6 @@ ShaderEffect {
 | 
				
			|||||||
    property real screenCurvature: appSettings.screenCurvature * appSettings.screenCurvatureSize
 | 
					    property real screenCurvature: appSettings.screenCurvature * appSettings.screenCurvatureSize
 | 
				
			||||||
    property real shadowLength: 0.5 * screenCurvature * Utils.lint(0.50, 1.5, _ambientLight)
 | 
					    property real shadowLength: 0.5 * screenCurvature * Utils.lint(0.50, 1.5, _ambientLight)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    visible: screenCurvature != 0
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    fragmentShader: "
 | 
					    fragmentShader: "
 | 
				
			||||||
        #ifdef GL_ES
 | 
					        #ifdef GL_ES
 | 
				
			||||||
            precision mediump float;
 | 
					            precision mediump float;
 | 
				
			||||||
@@ -53,7 +51,6 @@ ShaderEffect {
 | 
				
			|||||||
            float alpha = 0.0;
 | 
					            float alpha = 0.0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            float outShadowLength = shadowLength;
 | 
					            float outShadowLength = shadowLength;
 | 
				
			||||||
            float inShadowLength = 0.5 * shadowLength;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
            float outShadow = max2(1.0 - smoothstep(vec2(-outShadowLength), vec2(0.0), coords) + smoothstep(vec2(1.0), vec2(1.0 + outShadowLength), coords));
 | 
					            float outShadow = max2(1.0 - smoothstep(vec2(-outShadowLength), vec2(0.0), coords) + smoothstep(vec2(1.0), vec2(1.0 + outShadowLength), coords));
 | 
				
			||||||
            outShadow = clamp(0.0, 1.0, outShadow);
 | 
					            outShadow = clamp(0.0, 1.0, outShadow);
 | 
				
			||||||
@@ -61,10 +58,6 @@ ShaderEffect {
 | 
				
			|||||||
            alpha = sum2(1.0 - step(0.0, coords) + step(1.0, coords));
 | 
					            alpha = sum2(1.0 - step(0.0, coords) + step(1.0, coords));
 | 
				
			||||||
            alpha = clamp(alpha, 0.0, 1.0) * mix(1.0, 0.9, sqrt(outShadow));
 | 
					            alpha = clamp(alpha, 0.0, 1.0) * mix(1.0, 0.9, sqrt(outShadow));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            float inShadow = min2(step(vec2(0.0), coords) - step(vec2(1.0), coords));
 | 
					 | 
				
			||||||
            inShadow -= min2(smoothstep(0.0, inShadowLength, coords) - smoothstep(1.0 - inShadowLength, 1.0, coords));
 | 
					 | 
				
			||||||
            alpha += 0.35 * inShadow;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            gl_FragColor = vec4(color * alpha, alpha);
 | 
					            gl_FragColor = vec4(color * alpha, alpha);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    "
 | 
					    "
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -23,12 +23,17 @@ import QtQuick.Controls 1.1
 | 
				
			|||||||
import QtQuick.Layouts 1.1
 | 
					import QtQuick.Layouts 1.1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Tab{
 | 
					Tab{
 | 
				
			||||||
    GroupBox{
 | 
					 | 
				
			||||||
        title: qsTr("Effects")
 | 
					 | 
				
			||||||
        anchors.fill: parent
 | 
					 | 
				
			||||||
    ColumnLayout{
 | 
					    ColumnLayout{
 | 
				
			||||||
        anchors.fill: parent
 | 
					        anchors.fill: parent
 | 
				
			||||||
        spacing: 2
 | 
					        spacing: 2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        GroupBox{
 | 
				
			||||||
 | 
					            title: qsTr("Effects")
 | 
				
			||||||
 | 
					            Layout.fillWidth: true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            ColumnLayout {
 | 
				
			||||||
 | 
					                anchors.fill: parent
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                CheckableSlider{
 | 
					                CheckableSlider{
 | 
				
			||||||
                    name: qsTr("Bloom")
 | 
					                    name: qsTr("Bloom")
 | 
				
			||||||
                    onNewValue: appSettings.bloom = newValue
 | 
					                    onNewValue: appSettings.bloom = newValue
 | 
				
			||||||
@@ -82,4 +87,29 @@ Tab{
 | 
				
			|||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        GroupBox{
 | 
				
			||||||
 | 
					            title: qsTr("Lights")
 | 
				
			||||||
 | 
					            Layout.fillWidth: true
 | 
				
			||||||
 | 
					            GridLayout{
 | 
				
			||||||
 | 
					                anchors.fill: parent
 | 
				
			||||||
 | 
					                columns: 2
 | 
				
			||||||
 | 
					                Label{ text: qsTr("Brightness") }
 | 
				
			||||||
 | 
					                SimpleSlider{
 | 
				
			||||||
 | 
					                    onValueChanged: appSettings.brightness = value
 | 
				
			||||||
 | 
					                    value: appSettings.brightness
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                Label{ text: qsTr("Contrast") }
 | 
				
			||||||
 | 
					                SimpleSlider{
 | 
				
			||||||
 | 
					                    onValueChanged: appSettings.contrast = value
 | 
				
			||||||
 | 
					                    value: appSettings.contrast
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                Label{ text: qsTr("Opacity") }
 | 
				
			||||||
 | 
					                SimpleSlider{
 | 
				
			||||||
 | 
					                    onValueChanged: appSettings.windowOpacity = value
 | 
				
			||||||
 | 
					                    value: appSettings.windowOpacity
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,67 +0,0 @@
 | 
				
			|||||||
/*******************************************************************************
 | 
					 | 
				
			||||||
* Copyright (c) 2013 "Filippo Scognamiglio"
 | 
					 | 
				
			||||||
* https://github.com/Swordfish90/cool-retro-term
 | 
					 | 
				
			||||||
*
 | 
					 | 
				
			||||||
* This file is part of cool-retro-term.
 | 
					 | 
				
			||||||
*
 | 
					 | 
				
			||||||
* cool-retro-term is free software: you can redistribute it and/or modify
 | 
					 | 
				
			||||||
* it under the terms of the GNU General Public License as published by
 | 
					 | 
				
			||||||
* the Free Software Foundation, either version 3 of the License, or
 | 
					 | 
				
			||||||
* (at your option) any later version.
 | 
					 | 
				
			||||||
*
 | 
					 | 
				
			||||||
* This program is distributed in the hope that it will be useful,
 | 
					 | 
				
			||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
					 | 
				
			||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
					 | 
				
			||||||
* GNU General Public License for more details.
 | 
					 | 
				
			||||||
*
 | 
					 | 
				
			||||||
* You should have received a copy of the GNU General Public License
 | 
					 | 
				
			||||||
* along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | 
					 | 
				
			||||||
*******************************************************************************/
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import QtQuick 2.2
 | 
					 | 
				
			||||||
import QtQuick.Controls 1.1
 | 
					 | 
				
			||||||
import QtQuick.Layouts 1.1
 | 
					 | 
				
			||||||
import QtQuick.Dialogs 1.1
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Tab{
 | 
					 | 
				
			||||||
    ColumnLayout{
 | 
					 | 
				
			||||||
        anchors.fill: parent
 | 
					 | 
				
			||||||
        GroupBox{
 | 
					 | 
				
			||||||
            title: qsTr("Rasterization Mode")
 | 
					 | 
				
			||||||
            Layout.fillWidth: true
 | 
					 | 
				
			||||||
            ComboBox {
 | 
					 | 
				
			||||||
                id: rasterizationBox
 | 
					 | 
				
			||||||
                property string selectedElement: model[currentIndex]
 | 
					 | 
				
			||||||
                anchors.fill: parent
 | 
					 | 
				
			||||||
                model: [qsTr("Default"), qsTr("Scanlines"), qsTr("Pixels")]
 | 
					 | 
				
			||||||
                currentIndex: appSettings.rasterization
 | 
					 | 
				
			||||||
                onCurrentIndexChanged: {
 | 
					 | 
				
			||||||
                    appSettings.rasterization = currentIndex
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        GroupBox{
 | 
					 | 
				
			||||||
            title: qsTr("Lights")
 | 
					 | 
				
			||||||
            Layout.fillWidth: true
 | 
					 | 
				
			||||||
            GridLayout{
 | 
					 | 
				
			||||||
                anchors.fill: parent
 | 
					 | 
				
			||||||
                columns: 2
 | 
					 | 
				
			||||||
                Label{ text: qsTr("Brightness") }
 | 
					 | 
				
			||||||
                SimpleSlider{
 | 
					 | 
				
			||||||
                    onValueChanged: appSettings.brightness = value
 | 
					 | 
				
			||||||
                    value: appSettings.brightness
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
                Label{ text: qsTr("Contrast") }
 | 
					 | 
				
			||||||
                SimpleSlider{
 | 
					 | 
				
			||||||
                    onValueChanged: appSettings.contrast = value
 | 
					 | 
				
			||||||
                    value: appSettings.contrast
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
                Label{ text: qsTr("Opacity") }
 | 
					 | 
				
			||||||
                SimpleSlider{
 | 
					 | 
				
			||||||
                    onValueChanged: appSettings.windowOpacity = value
 | 
					 | 
				
			||||||
                    value: appSettings.windowOpacity
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -27,13 +27,26 @@ import "Components"
 | 
				
			|||||||
Tab{
 | 
					Tab{
 | 
				
			||||||
    ColumnLayout{
 | 
					    ColumnLayout{
 | 
				
			||||||
        anchors.fill: parent
 | 
					        anchors.fill: parent
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        GroupBox{
 | 
					        GroupBox{
 | 
				
			||||||
            property var rasterization: [qsTr("Default"), qsTr("Scanlines"), qsTr("Pixels")][appSettings.rasterization]
 | 
					            title: qsTr("Font")
 | 
				
			||||||
            title: qsTr("Font " + "(" + rasterization + ")")
 | 
					 | 
				
			||||||
            Layout.fillWidth: true
 | 
					            Layout.fillWidth: true
 | 
				
			||||||
            GridLayout{
 | 
					            GridLayout{
 | 
				
			||||||
                anchors.fill: parent
 | 
					                anchors.fill: parent
 | 
				
			||||||
                columns: 2
 | 
					                columns: 2
 | 
				
			||||||
 | 
					                Label { text: qsTr("Rasterization") }
 | 
				
			||||||
 | 
					                ComboBox {
 | 
				
			||||||
 | 
					                    id: rasterizationBox
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    property string selectedElement: model[currentIndex]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    Layout.fillWidth: true
 | 
				
			||||||
 | 
					                    model: [qsTr("Default"), qsTr("Scanlines"), qsTr("Pixels")]
 | 
				
			||||||
 | 
					                    currentIndex: appSettings.rasterization
 | 
				
			||||||
 | 
					                    onCurrentIndexChanged: {
 | 
				
			||||||
 | 
					                        appSettings.rasterization = currentIndex
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
                Label{ text: qsTr("Name") }
 | 
					                Label{ text: qsTr("Name") }
 | 
				
			||||||
                ComboBox{
 | 
					                ComboBox{
 | 
				
			||||||
                    id: fontChanger
 | 
					                    id: fontChanger
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -28,7 +28,7 @@ Window {
 | 
				
			|||||||
    id: settings_window
 | 
					    id: settings_window
 | 
				
			||||||
    title: qsTr("Settings")
 | 
					    title: qsTr("Settings")
 | 
				
			||||||
    width: 580
 | 
					    width: 580
 | 
				
			||||||
    height: 400
 | 
					    height: 500
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    property int tabmargins: 15
 | 
					    property int tabmargins: 15
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -42,12 +42,6 @@ Window {
 | 
				
			|||||||
            anchors.fill: parent
 | 
					            anchors.fill: parent
 | 
				
			||||||
            anchors.margins: tabmargins
 | 
					            anchors.margins: tabmargins
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        SettingsScreenTab{
 | 
					 | 
				
			||||||
            id: screenTab
 | 
					 | 
				
			||||||
            title: qsTr("Screen")
 | 
					 | 
				
			||||||
            anchors.fill: parent
 | 
					 | 
				
			||||||
            anchors.margins: tabmargins
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        SettingsTerminalTab{
 | 
					        SettingsTerminalTab{
 | 
				
			||||||
            id: terminalTab
 | 
					            id: terminalTab
 | 
				
			||||||
            title: qsTr("Terminal")
 | 
					            title: qsTr("Terminal")
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -23,51 +23,56 @@ import QtGraphicalEffects 1.0
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import "utils.js" as Utils
 | 
					import "utils.js" as Utils
 | 
				
			||||||
 | 
					
 | 
				
			||||||
ShaderEffect {
 | 
					Item {
 | 
				
			||||||
    property ShaderEffectSource source
 | 
					    property ShaderEffectSource source
 | 
				
			||||||
    property BurnInEffect burnInEffect
 | 
					    property BurnInEffect burnInEffect
 | 
				
			||||||
    property ShaderEffectSource bloomSource
 | 
					    property ShaderEffectSource bloomSource
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    property color fontColor: appSettings.fontColor
 | 
					    property color fontColor: appSettings.fontColor
 | 
				
			||||||
    property color backgroundColor: appSettings.backgroundColor
 | 
					    property color backgroundColor: appSettings.backgroundColor
 | 
				
			||||||
    property real bloom: appSettings.bloom * 2.5
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    property ShaderEffectSource burnInSource: burnInEffect.source
 | 
					 | 
				
			||||||
    property real burnIn: appSettings.burnIn
 | 
					 | 
				
			||||||
    property real burnInLastUpdate: burnInEffect.lastUpdate
 | 
					 | 
				
			||||||
    property real burnInTime: burnInEffect.burnInFadeTime
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    property real jitter: appSettings.jitter
 | 
					 | 
				
			||||||
    property size jitterDisplacement: Qt.size(0.007 * jitter, 0.002 * jitter)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    property real staticNoise: appSettings.staticNoise
 | 
					 | 
				
			||||||
    property size scaleNoiseSize: Qt.size((width) / (noiseTexture.width * appSettings.windowScaling * appSettings.totalFontScaling),
 | 
					 | 
				
			||||||
                                          (height) / (noiseTexture.height * appSettings.windowScaling * appSettings.totalFontScaling))
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    property real screenCurvature: appSettings.screenCurvature * appSettings.screenCurvatureSize
 | 
					    property real screenCurvature: appSettings.screenCurvature * appSettings.screenCurvatureSize
 | 
				
			||||||
    property real glowingLine: appSettings.glowingLine * 0.2
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    property real chromaColor: appSettings.chromaColor;
 | 
					    property real chromaColor: appSettings.chromaColor
 | 
				
			||||||
 | 
					 | 
				
			||||||
    property real rbgShift: (appSettings.rbgShift / width) * appSettings.totalFontScaling
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    property real flickering: appSettings.flickering
 | 
					 | 
				
			||||||
    property real horizontalSync: appSettings.horizontalSync * 0.5
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    property int rasterization: appSettings.rasterization
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    property real screen_brightness: Utils.lint(0.5, 1.5, appSettings.brightness)
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    property real ambientLight: appSettings.ambientLight * 0.2
 | 
					    property real ambientLight: appSettings.ambientLight * 0.2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    property size virtual_resolution
 | 
					    property size virtual_resolution
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					     ShaderEffect {
 | 
				
			||||||
 | 
					         id: dynamicShader
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					         property ShaderEffectSource screenBuffer: frameBuffer
 | 
				
			||||||
 | 
					         property ShaderEffectSource burnInSource: burnInEffect.source
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					         property color fontColor: parent.fontColor
 | 
				
			||||||
 | 
					         property color backgroundColor: parent.backgroundColor
 | 
				
			||||||
 | 
					         property real screenCurvature: parent.screenCurvature
 | 
				
			||||||
 | 
					         property real chromaColor: parent.chromaColor
 | 
				
			||||||
 | 
					         property real ambientLight: parent.ambientLight
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					         property real flickering: appSettings.flickering
 | 
				
			||||||
 | 
					         property real horizontalSync: appSettings.horizontalSync * 0.5
 | 
				
			||||||
 | 
					         property real glowingLine: appSettings.glowingLine * 0.2
 | 
				
			||||||
 | 
					         property real burnIn: appSettings.burnIn
 | 
				
			||||||
 | 
					         property real burnInLastUpdate: burnInEffect.lastUpdate
 | 
				
			||||||
 | 
					         property real burnInTime: burnInEffect.burnInFadeTime
 | 
				
			||||||
 | 
					         property real jitter: appSettings.jitter
 | 
				
			||||||
 | 
					         property size jitterDisplacement: Qt.size(0.007 * jitter, 0.002 * jitter)
 | 
				
			||||||
 | 
					         property real shadowLength: 0.25 * screenCurvature * Utils.lint(0.50, 1.5, ambientLight)
 | 
				
			||||||
 | 
					         property real staticNoise: appSettings.staticNoise
 | 
				
			||||||
 | 
					         property size scaleNoiseSize: Qt.size((width) / (noiseTexture.width * appSettings.windowScaling * appSettings.totalFontScaling),
 | 
				
			||||||
 | 
					                                               (height) / (noiseTexture.height * appSettings.windowScaling * appSettings.totalFontScaling))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					         property size virtual_resolution: parent.virtual_resolution
 | 
				
			||||||
 | 
					
 | 
				
			||||||
         property real time: timeManager.time
 | 
					         property real time: timeManager.time
 | 
				
			||||||
         property ShaderEffectSource noiseSource: noiseShaderSource
 | 
					         property ShaderEffectSource noiseSource: noiseShaderSource
 | 
				
			||||||
 | 
					
 | 
				
			||||||
         // If something goes wrong activate the fallback version of the shader.
 | 
					         // If something goes wrong activate the fallback version of the shader.
 | 
				
			||||||
         property bool fallBack: false
 | 
					         property bool fallBack: false
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					         anchors.fill: parent
 | 
				
			||||||
         blending: false
 | 
					         blending: false
 | 
				
			||||||
 | 
					
 | 
				
			||||||
         //Smooth random texture used for flickering effect.
 | 
					         //Smooth random texture used for flickering effect.
 | 
				
			||||||
@@ -104,9 +109,6 @@ ShaderEffect {
 | 
				
			|||||||
             (!fallBack ? "
 | 
					             (!fallBack ? "
 | 
				
			||||||
                 uniform sampler2D noiseSource;" : "") +
 | 
					                 uniform sampler2D noiseSource;" : "") +
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        (!fallBack && rbgShift !== 0.0 ?"
 | 
					 | 
				
			||||||
            varying lowp vec4 constantNoise;" : "") +
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
             (!fallBack && flickering !== 0.0 ?"
 | 
					             (!fallBack && flickering !== 0.0 ?"
 | 
				
			||||||
                 varying lowp float brightness;
 | 
					                 varying lowp float brightness;
 | 
				
			||||||
                 uniform lowp float flickering;" : "") +
 | 
					                 uniform lowp float flickering;" : "") +
 | 
				
			||||||
@@ -121,13 +123,10 @@ ShaderEffect {
 | 
				
			|||||||
                 qt_TexCoord0 = qt_MultiTexCoord0;
 | 
					                 qt_TexCoord0 = qt_MultiTexCoord0;
 | 
				
			||||||
                 vec2 coords = vec2(fract(time/(1024.0*2.0)), fract(time/(1024.0*1024.0)));" +
 | 
					                 vec2 coords = vec2(fract(time/(1024.0*2.0)), fract(time/(1024.0*1024.0)));" +
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            (!fallBack && (flickering !== 0.0 || horizontalSync !== 0.0 || rbgShift !== 0) ?
 | 
					                 (!fallBack && (flickering !== 0.0 || horizontalSync !== 0.0) ?
 | 
				
			||||||
                     "vec4 initialNoiseTexel = texture2D(noiseSource, coords);"
 | 
					                     "vec4 initialNoiseTexel = texture2D(noiseSource, coords);"
 | 
				
			||||||
                 : "") +
 | 
					                 : "") +
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            (!fallBack && rbgShift !== 0.0 ?"
 | 
					 | 
				
			||||||
                constantNoise = initialNoiseTexel;" : "") +
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                 (!fallBack && flickering !== 0.0 ? "
 | 
					                 (!fallBack && flickering !== 0.0 ? "
 | 
				
			||||||
                     brightness = 1.0 + (initialNoiseTexel.g - 0.5) * flickering;"
 | 
					                     brightness = 1.0 + (initialNoiseTexel.g - 0.5) * flickering;"
 | 
				
			||||||
                 : "") +
 | 
					                 : "") +
 | 
				
			||||||
@@ -146,27 +145,24 @@ ShaderEffect {
 | 
				
			|||||||
                 precision mediump float;
 | 
					                 precision mediump float;
 | 
				
			||||||
             #endif
 | 
					             #endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        uniform sampler2D source;
 | 
					             uniform sampler2D screenBuffer;
 | 
				
			||||||
             uniform highp float qt_Opacity;
 | 
					             uniform highp float qt_Opacity;
 | 
				
			||||||
             uniform highp float time;
 | 
					             uniform highp float time;
 | 
				
			||||||
             varying highp vec2 qt_TexCoord0;
 | 
					             varying highp vec2 qt_TexCoord0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
             uniform highp vec4 fontColor;
 | 
					             uniform highp vec4 fontColor;
 | 
				
			||||||
             uniform highp vec4 backgroundColor;
 | 
					             uniform highp vec4 backgroundColor;
 | 
				
			||||||
        uniform lowp float screen_brightness;
 | 
					             uniform lowp float shadowLength;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
             uniform highp vec2 virtual_resolution;" +
 | 
					             uniform highp vec2 virtual_resolution;" +
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        (bloom !== 0 ? "
 | 
					 | 
				
			||||||
            uniform highp sampler2D bloomSource;
 | 
					 | 
				
			||||||
            uniform lowp float bloom;" : "") +
 | 
					 | 
				
			||||||
             (burnIn !== 0 ? "
 | 
					             (burnIn !== 0 ? "
 | 
				
			||||||
                 uniform sampler2D burnInSource;
 | 
					                 uniform sampler2D burnInSource;
 | 
				
			||||||
                 uniform highp float burnInLastUpdate;
 | 
					                 uniform highp float burnInLastUpdate;
 | 
				
			||||||
                 uniform highp float burnInTime;" : "") +
 | 
					                 uniform highp float burnInTime;" : "") +
 | 
				
			||||||
             (staticNoise !== 0 ? "
 | 
					             (staticNoise !== 0 ? "
 | 
				
			||||||
                 uniform highp float staticNoise;" : "") +
 | 
					                 uniform highp float staticNoise;" : "") +
 | 
				
			||||||
        (((staticNoise !== 0 || jitter !== 0 || rbgShift)
 | 
					             (((staticNoise !== 0 || jitter !== 0)
 | 
				
			||||||
               ||(fallBack && (flickering || horizontalSync))) ? "
 | 
					               ||(fallBack && (flickering || horizontalSync))) ? "
 | 
				
			||||||
                 uniform lowp sampler2D noiseSource;
 | 
					                 uniform lowp sampler2D noiseSource;
 | 
				
			||||||
                 uniform highp vec2 scaleNoiseSize;" : "") +
 | 
					                 uniform highp vec2 scaleNoiseSize;" : "") +
 | 
				
			||||||
@@ -178,8 +174,6 @@ ShaderEffect {
 | 
				
			|||||||
                 uniform lowp float chromaColor;" : "") +
 | 
					                 uniform lowp float chromaColor;" : "") +
 | 
				
			||||||
             (jitter !== 0 ? "
 | 
					             (jitter !== 0 ? "
 | 
				
			||||||
                 uniform lowp vec2 jitterDisplacement;" : "") +
 | 
					                 uniform lowp vec2 jitterDisplacement;" : "") +
 | 
				
			||||||
        (rbgShift !== 0 ? "
 | 
					 | 
				
			||||||
            uniform lowp float rbgShift;" : "") +
 | 
					 | 
				
			||||||
             (ambientLight !== 0 ? "
 | 
					             (ambientLight !== 0 ? "
 | 
				
			||||||
                 uniform lowp float ambientLight;" : "") +
 | 
					                 uniform lowp float ambientLight;" : "") +
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -194,38 +188,41 @@ ShaderEffect {
 | 
				
			|||||||
                 varying lowp float distortionScale;
 | 
					                 varying lowp float distortionScale;
 | 
				
			||||||
                 varying lowp float distortionFreq;" : "") +
 | 
					                 varying lowp float distortionFreq;" : "") +
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        (!fallBack && rbgShift !== 0.0 ?"
 | 
					 | 
				
			||||||
            varying lowp vec4 constantNoise;" : "") +
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
             (glowingLine !== 0 ? "
 | 
					             (glowingLine !== 0 ? "
 | 
				
			||||||
                 float randomPass(vec2 coords){
 | 
					                 float randomPass(vec2 coords){
 | 
				
			||||||
                     return fract(smoothstep(-120.0, 0.0, coords.y - (virtual_resolution.y + 120.0) * fract(time * 0.00015)));
 | 
					                     return fract(smoothstep(-120.0, 0.0, coords.y - (virtual_resolution.y + 120.0) * fract(time * 0.00015)));
 | 
				
			||||||
                 }" : "") +
 | 
					                 }" : "") +
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        "highp float getScanlineIntensity(vec2 coords) {
 | 
					             "float min2(vec2 v) {
 | 
				
			||||||
            float result = 1.0;" +
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
           (appSettings.rasterization != appSettings.no_rasterization ?
 | 
					 | 
				
			||||||
               "float val = 0.0;
 | 
					 | 
				
			||||||
                vec2 rasterizationCoords = fract(coords * virtual_resolution);
 | 
					 | 
				
			||||||
                val += smoothstep(0.0, 0.5, rasterizationCoords.y);
 | 
					 | 
				
			||||||
                val -= smoothstep(0.5, 1.0, rasterizationCoords.y);
 | 
					 | 
				
			||||||
                result *= mix(0.5, 1.0, val);" : "") +
 | 
					 | 
				
			||||||
           (appSettings.rasterization == appSettings.pixel_rasterization ?
 | 
					 | 
				
			||||||
               "val = 0.0;
 | 
					 | 
				
			||||||
                val += smoothstep(0.0, 0.5, rasterizationCoords.x);
 | 
					 | 
				
			||||||
                val -= smoothstep(0.5, 1.0, rasterizationCoords.x);
 | 
					 | 
				
			||||||
                result *= mix(0.5, 1.0, val);" : "") + "
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
           return result;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        float min2(vec2 v) {
 | 
					 | 
				
			||||||
                 return min(v.x, v.y);
 | 
					                 return min(v.x, v.y);
 | 
				
			||||||
             }
 | 
					             }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
             float rgb2grey(vec3 v){
 | 
					             float rgb2grey(vec3 v){
 | 
				
			||||||
                 return dot(v, vec3(0.21, 0.72, 0.04));
 | 
					                 return dot(v, vec3(0.21, 0.72, 0.04));
 | 
				
			||||||
 | 
					             }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					             float isInScreen(vec2 v) {
 | 
				
			||||||
 | 
					                 return min2(step(0.0, v) - step(1.0, v));
 | 
				
			||||||
 | 
					             }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					             vec2 barrel(vec2 v, vec2 cc) {" +
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                 (screenCurvature !== 0 ? "
 | 
				
			||||||
 | 
					                     float distortion = dot(cc, cc) * screenCurvature;
 | 
				
			||||||
 | 
					                     return (v - cc * (1.0 + distortion) * distortion);"
 | 
				
			||||||
 | 
					                 :
 | 
				
			||||||
 | 
					                     "return v;") +
 | 
				
			||||||
 | 
					             "}" +
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					             "vec3 convertWithChroma(vec3 inColor) {
 | 
				
			||||||
 | 
					                vec3 outColor = inColor;" +
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                 (chromaColor !== 0 ?
 | 
				
			||||||
 | 
					                     "outColor = fontColor.rgb * mix(vec3(rgb2grey(inColor)), inColor, chromaColor);"
 | 
				
			||||||
 | 
					                 :
 | 
				
			||||||
 | 
					                     "outColor = fontColor.rgb * rgb2grey(inColor);") +
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					             "  return outColor;
 | 
				
			||||||
             }" +
 | 
					             }" +
 | 
				
			||||||
 | 
					
 | 
				
			||||||
             "void main() {" +
 | 
					             "void main() {" +
 | 
				
			||||||
@@ -233,7 +230,7 @@ ShaderEffect {
 | 
				
			|||||||
                 "float distance = length(cc);" +
 | 
					                 "float distance = length(cc);" +
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                 //FallBack if there are problems
 | 
					                 //FallBack if there are problems
 | 
				
			||||||
            (fallBack && (flickering !== 0.0 || horizontalSync !== 0.0 || rbgShift !== 0.0) ?
 | 
					                 (fallBack && (flickering !== 0.0 || horizontalSync !== 0.0) ?
 | 
				
			||||||
                     "vec2 initialCoords = vec2(fract(time/(1024.0*2.0)), fract(time/(1024.0*1024.0)));
 | 
					                     "vec2 initialCoords = vec2(fract(time/(1024.0*2.0)), fract(time/(1024.0*1024.0)));
 | 
				
			||||||
                      vec4 initialNoiseTexel = texture2D(noiseSource, initialCoords);"
 | 
					                      vec4 initialNoiseTexel = texture2D(noiseSource, initialCoords);"
 | 
				
			||||||
                 : "") +
 | 
					                 : "") +
 | 
				
			||||||
@@ -245,29 +242,30 @@ ShaderEffect {
 | 
				
			|||||||
                     float distortionScale = step(0.0, randval) * randval * horizontalSync;
 | 
					                     float distortionScale = step(0.0, randval) * randval * horizontalSync;
 | 
				
			||||||
                     float distortionFreq = mix(4.0, 40.0, initialNoiseTexel.g);"
 | 
					                     float distortionFreq = mix(4.0, 40.0, initialNoiseTexel.g);"
 | 
				
			||||||
                 : "") +
 | 
					                 : "") +
 | 
				
			||||||
            (fallBack && rbgShift !== 0.0 ?"
 | 
					 | 
				
			||||||
                lowp vec4 constantNoise = initialNoiseTexel;" : "") +
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
                 (staticNoise ? "
 | 
					                 (staticNoise ? "
 | 
				
			||||||
                     float noise = staticNoise;" : "") +
 | 
					                     float noise = staticNoise;" : "") +
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                 (screenCurvature !== 0 ? "
 | 
					                 (screenCurvature !== 0 ? "
 | 
				
			||||||
                float distortion = dot(cc, cc) * screenCurvature;
 | 
					                     vec2 curvatureCoords = barrel(qt_TexCoord0, cc);
 | 
				
			||||||
                vec2 curvatureCoords = (qt_TexCoord0 - cc * (1.0 + distortion) * distortion);
 | 
					                     float staticInScreen = min2(step(0.0, curvatureCoords) - step(1.0, curvatureCoords));
 | 
				
			||||||
                vec2 staticCoords = - 2.0 * curvatureCoords + 3.0 * step(vec2(0.0), curvatureCoords) * curvatureCoords - 3.0 * step(vec2(1.0), curvatureCoords) * curvatureCoords;"
 | 
					                     vec2 staticCoords = curvatureCoords;"
 | 
				
			||||||
                 :"
 | 
					                 :"
 | 
				
			||||||
                vec2 staticCoords = qt_TexCoord0;") +
 | 
					                     vec2 staticCoords = qt_TexCoord0;
 | 
				
			||||||
 | 
					                     float staticInScreen = 1.0;") +
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            "vec2 coords = staticCoords;" +
 | 
					                 "vec2 coords = qt_TexCoord0;" +
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                 (horizontalSync !== 0 ? "
 | 
					                 (horizontalSync !== 0 ? "
 | 
				
			||||||
                     float dst = sin((coords.y + time * 0.001) * distortionFreq);
 | 
					                     float dst = sin((coords.y + time * 0.001) * distortionFreq);
 | 
				
			||||||
                     coords.x += dst * distortionScale;" +
 | 
					                     coords.x += dst * distortionScale;" +
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                     (staticNoise ? "
 | 
					                     (staticNoise ? "
 | 
				
			||||||
                         noise += distortionScale * 7.0;" : "")
 | 
					                         noise += distortionScale * 7.0;" : "")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                 : "") +
 | 
					                 : "") +
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            (jitter !== 0 || staticNoise !== 0 || rbgShift !== 0 ?
 | 
					                 (jitter !== 0 || staticNoise !== 0 ?
 | 
				
			||||||
                     "vec4 noiseTexel = texture2D(noiseSource, scaleNoiseSize * coords + vec2(fract(time / 51.0), fract(time / 237.0)));"
 | 
					                     "vec4 noiseTexel = texture2D(noiseSource, scaleNoiseSize * coords + vec2(fract(time / 51.0), fract(time / 237.0)));"
 | 
				
			||||||
                 : "") +
 | 
					                 : "") +
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -285,49 +283,21 @@ ShaderEffect {
 | 
				
			|||||||
                 (glowingLine !== 0 ? "
 | 
					                 (glowingLine !== 0 ? "
 | 
				
			||||||
                     color += randomPass(coords * virtual_resolution) * glowingLine;" : "") +
 | 
					                     color += randomPass(coords * virtual_resolution) * glowingLine;" : "") +
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            "vec3 txt_color = texture2D(source, txt_coords).rgb;" +
 | 
					                 "txt_coords = mix(qt_TexCoord0, txt_coords, staticInScreen);
 | 
				
			||||||
 | 
					                  float inScreen2 = isInScreen(barrel(txt_coords, cc));
 | 
				
			||||||
            (rbgShift !== 0 ? "
 | 
					                  vec3 origTxtColor = texture2D(screenBuffer, txt_coords).rgb;
 | 
				
			||||||
                vec2 displacement = vec2(12.0, 0.0) * rbgShift * (0.6 * constantNoise.r + 0.4);
 | 
					                  vec3 txt_color = mix(backgroundColor.rgb, origTxtColor, inScreen2);" +
 | 
				
			||||||
                vec3 rightColor = texture2D(source, txt_coords + displacement).rgb;
 | 
					 | 
				
			||||||
                vec3 leftColor = texture2D(source, txt_coords - displacement).rgb;
 | 
					 | 
				
			||||||
                txt_color.r = leftColor.r * 0.10 + rightColor.r * 0.30 + txt_color.r * 0.60;
 | 
					 | 
				
			||||||
                txt_color.g = leftColor.g * 0.20 + rightColor.g * 0.20 + txt_color.g * 0.60;
 | 
					 | 
				
			||||||
                txt_color.b = leftColor.b * 0.30 + rightColor.b * 0.10 + txt_color.b * 0.60;
 | 
					 | 
				
			||||||
            " : "") +
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
                 (burnIn !== 0 ? "
 | 
					                 (burnIn !== 0 ? "
 | 
				
			||||||
                     vec4 txt_blur = texture2D(burnInSource, staticCoords);
 | 
					                     vec4 txt_blur = texture2D(burnInSource, staticCoords);
 | 
				
			||||||
                     float blurDecay = clamp((time - burnInLastUpdate) * burnInTime, 0.0, 1.0);
 | 
					                     float blurDecay = clamp((time - burnInLastUpdate) * burnInTime, 0.0, 1.0);
 | 
				
			||||||
                txt_color = max(txt_color, 0.5 * (txt_blur.rgb - vec3(blurDecay)));"
 | 
					                     vec3 burnInColor = 0.65 * (txt_blur.rgb - vec3(blurDecay));
 | 
				
			||||||
 | 
					                     txt_color = max(txt_color, convertWithChroma(burnInColor));"
 | 
				
			||||||
                 : "") +
 | 
					                 : "") +
 | 
				
			||||||
 | 
					
 | 
				
			||||||
             "txt_color *= getScanlineIntensity(coords);" +
 | 
					                  "txt_color += fontColor.rgb * vec3(color);" +
 | 
				
			||||||
 | 
					
 | 
				
			||||||
             "txt_color += vec3(color);" +
 | 
					                 "vec3 finalColor = txt_color;" +
 | 
				
			||||||
             "float greyscale_color = rgb2grey(txt_color);" +
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            (chromaColor !== 0 ?
 | 
					 | 
				
			||||||
                "vec3 foregroundColor = mix(fontColor.rgb, txt_color * fontColor.rgb / greyscale_color, chromaColor);
 | 
					 | 
				
			||||||
                 vec3 finalColor = mix(backgroundColor.rgb, foregroundColor, greyscale_color);"
 | 
					 | 
				
			||||||
            :
 | 
					 | 
				
			||||||
                "vec3 finalColor = mix(backgroundColor.rgb, fontColor.rgb, greyscale_color);") +
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            (bloom !== 0 ?
 | 
					 | 
				
			||||||
                "vec4 bloomFullColor = texture2D(bloomSource, coords);
 | 
					 | 
				
			||||||
                 vec3 bloomColor = bloomFullColor.rgb;
 | 
					 | 
				
			||||||
                 float bloomAlpha = bloomFullColor.a;" +
 | 
					 | 
				
			||||||
                (chromaColor !== 0 ?
 | 
					 | 
				
			||||||
                    "bloomColor = fontColor.rgb * mix(vec3(rgb2grey(bloomColor)), bloomColor, chromaColor);"
 | 
					 | 
				
			||||||
                :
 | 
					 | 
				
			||||||
                    "bloomColor = fontColor.rgb * rgb2grey(bloomColor);") +
 | 
					 | 
				
			||||||
                "finalColor += clamp(bloomColor * bloom * bloomAlpha, 0.0, 0.5);"
 | 
					 | 
				
			||||||
            : "") +
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            (screenCurvature !== 0 ? "
 | 
					 | 
				
			||||||
                vec2 curvatureMask = step(vec2(0.0), curvatureCoords) - step(vec2(1.0), curvatureCoords);
 | 
					 | 
				
			||||||
                finalColor *= clamp(0.0, 1.0, curvatureMask.x + curvatureMask.y);"
 | 
					 | 
				
			||||||
            :"") +
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
                 (flickering !== 0 ? "
 | 
					                 (flickering !== 0 ? "
 | 
				
			||||||
                     finalColor *= brightness;" : "") +
 | 
					                     finalColor *= brightness;" : "") +
 | 
				
			||||||
@@ -336,7 +306,12 @@ ShaderEffect {
 | 
				
			|||||||
                     finalColor += vec3(ambientLight) * (1.0 - distance) * (1.0 - distance);" : "") +
 | 
					                     finalColor += vec3(ambientLight) * (1.0 - distance) * (1.0 - distance);" : "") +
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            "gl_FragColor = vec4(finalColor * screen_brightness, qt_Opacity);" +
 | 
					                 "float inShadow = 1.0 - min2(smoothstep(0.0, shadowLength, staticCoords) - smoothstep(1.0 - shadowLength, 1.0, staticCoords));
 | 
				
			||||||
 | 
					                  inShadow = pow(inShadow, 100.0) + 0.35 * inShadow * inShadow;  // Inner shadow and antialiasing when screen background is bright.
 | 
				
			||||||
 | 
					                  finalColor = mix(finalColor, vec3(0.0), inShadow);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                  finalColor = mix(origTxtColor, finalColor, staticInScreen);
 | 
				
			||||||
 | 
					                  gl_FragColor = vec4(finalColor, qt_Opacity);" +
 | 
				
			||||||
             "}"
 | 
					             "}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
          onStatusChanged: {
 | 
					          onStatusChanged: {
 | 
				
			||||||
@@ -349,4 +324,182 @@ ShaderEffect {
 | 
				
			|||||||
                 fallBack = true;
 | 
					                 fallBack = true;
 | 
				
			||||||
              }
 | 
					              }
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
 | 
					     }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					     ShaderEffect {
 | 
				
			||||||
 | 
					         id: staticShader
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					         width: parent.width * appSettings.windowScaling
 | 
				
			||||||
 | 
					         height: parent.height * appSettings.windowScaling
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					         property ShaderEffectSource source: parent.source
 | 
				
			||||||
 | 
					         property ShaderEffectSource bloomSource: parent.bloomSource
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					         property color fontColor: parent.fontColor
 | 
				
			||||||
 | 
					         property color backgroundColor: parent.backgroundColor
 | 
				
			||||||
 | 
					         property real bloom: appSettings.bloom * 2.5
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					         property real screenCurvature: parent.screenCurvature
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					         property real chromaColor: appSettings.chromaColor;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					         property real rbgShift: (appSettings.rbgShift / width) * appSettings.totalFontScaling // TODO FILIPPO width here is wrong.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					         property int rasterization: appSettings.rasterization
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					         property real screen_brightness: Utils.lint(0.5, 1.5, appSettings.brightness)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					         property real ambientLight: parent.ambientLight
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					         property size virtual_resolution: parent.virtual_resolution
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					         blending: false
 | 
				
			||||||
 | 
					         visible: false
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					         //Print the number with a reasonable precision for the shader.
 | 
				
			||||||
 | 
					         function str(num){
 | 
				
			||||||
 | 
					             return num.toFixed(8);
 | 
				
			||||||
 | 
					         }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					         fragmentShader: "
 | 
				
			||||||
 | 
					             #ifdef GL_ES
 | 
				
			||||||
 | 
					                 precision mediump float;
 | 
				
			||||||
 | 
					             #endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					             uniform sampler2D source;
 | 
				
			||||||
 | 
					             uniform highp float qt_Opacity;
 | 
				
			||||||
 | 
					             varying highp vec2 qt_TexCoord0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					             uniform highp vec4 fontColor;
 | 
				
			||||||
 | 
					             uniform highp vec4 backgroundColor;
 | 
				
			||||||
 | 
					             uniform lowp float screen_brightness;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					             uniform highp vec2 virtual_resolution;" +
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					             (bloom !== 0 ? "
 | 
				
			||||||
 | 
					                 uniform highp sampler2D bloomSource;
 | 
				
			||||||
 | 
					                 uniform lowp float bloom;" : "") +
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					             (screenCurvature !== 0 ? "
 | 
				
			||||||
 | 
					                 uniform highp float screenCurvature;" : "") +
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					             (chromaColor !== 0 ? "
 | 
				
			||||||
 | 
					                 uniform lowp float chromaColor;" : "") +
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					             (rbgShift !== 0 ? "
 | 
				
			||||||
 | 
					                 uniform lowp float rbgShift;" : "") +
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					             (ambientLight !== 0 ? "
 | 
				
			||||||
 | 
					                 uniform lowp float ambientLight;" : "") +
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					             "highp float getScanlineIntensity(vec2 coords) {
 | 
				
			||||||
 | 
					                 float result = 1.0;" +
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                (appSettings.rasterization != appSettings.no_rasterization ?
 | 
				
			||||||
 | 
					                    "float val = 0.0;
 | 
				
			||||||
 | 
					                     vec2 rasterizationCoords = fract(coords * virtual_resolution);
 | 
				
			||||||
 | 
					                     val += smoothstep(0.0, 0.5, rasterizationCoords.y);
 | 
				
			||||||
 | 
					                     val -= smoothstep(0.5, 1.0, rasterizationCoords.y);
 | 
				
			||||||
 | 
					                     result *= mix(0.5, 1.0, val);" : "") +
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                (appSettings.rasterization == appSettings.pixel_rasterization ?
 | 
				
			||||||
 | 
					                    "val = 0.0;
 | 
				
			||||||
 | 
					                     val += smoothstep(0.0, 0.5, rasterizationCoords.x);
 | 
				
			||||||
 | 
					                     val -= smoothstep(0.5, 1.0, rasterizationCoords.x);
 | 
				
			||||||
 | 
					                     result *= mix(0.5, 1.0, val);" : "") + "
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                return result;
 | 
				
			||||||
 | 
					             }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					             float min2(vec2 v) {
 | 
				
			||||||
 | 
					                 return min(v.x, v.y);
 | 
				
			||||||
 | 
					             }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					             float rgb2grey(vec3 v){
 | 
				
			||||||
 | 
					                 return dot(v, vec3(0.21, 0.72, 0.04));
 | 
				
			||||||
 | 
					             }" +
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					             "vec3 convertWithChroma(vec3 inColor) {
 | 
				
			||||||
 | 
					                vec3 outColor = inColor;" +
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                 (chromaColor !== 0 ?
 | 
				
			||||||
 | 
					                     "outColor = fontColor.rgb * mix(vec3(rgb2grey(inColor)), inColor, chromaColor);"
 | 
				
			||||||
 | 
					                 :
 | 
				
			||||||
 | 
					                     "outColor = fontColor.rgb * rgb2grey(inColor);") +
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					             "  return outColor;
 | 
				
			||||||
 | 
					             }" +
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					             "void main() {" +
 | 
				
			||||||
 | 
					                 "vec2 cc = vec2(0.5) - qt_TexCoord0;" +
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                 (screenCurvature !== 0 ? "
 | 
				
			||||||
 | 
					                     float distortion = dot(cc, cc) * screenCurvature;
 | 
				
			||||||
 | 
					                     vec2 curvatureCoords = (qt_TexCoord0 - cc * (1.0 + distortion) * distortion);
 | 
				
			||||||
 | 
					                     vec2 txt_coords = - 2.0 * curvatureCoords + 3.0 * step(vec2(0.0), curvatureCoords) * curvatureCoords - 3.0 * step(vec2(1.0), curvatureCoords) * curvatureCoords;"
 | 
				
			||||||
 | 
					                 :"
 | 
				
			||||||
 | 
					                     vec2 txt_coords = qt_TexCoord0;") +
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                 "vec3 txt_color = texture2D(source, txt_coords).rgb;" +
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                 (rbgShift !== 0 ? "
 | 
				
			||||||
 | 
					                     vec2 displacement = vec2(12.0, 0.0) * rbgShift;
 | 
				
			||||||
 | 
					                     vec3 rightColor = texture2D(source, txt_coords + displacement).rgb;
 | 
				
			||||||
 | 
					                     vec3 leftColor = texture2D(source, txt_coords - displacement).rgb;
 | 
				
			||||||
 | 
					                     txt_color.r = leftColor.r * 0.10 + rightColor.r * 0.30 + txt_color.r * 0.60;
 | 
				
			||||||
 | 
					                     txt_color.g = leftColor.g * 0.20 + rightColor.g * 0.20 + txt_color.g * 0.60;
 | 
				
			||||||
 | 
					                     txt_color.b = leftColor.b * 0.30 + rightColor.b * 0.10 + txt_color.b * 0.60;
 | 
				
			||||||
 | 
					                 " : "") +
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                  "txt_color *= getScanlineIntensity(txt_coords);" +
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                  "txt_color += vec3(0.0001);" +
 | 
				
			||||||
 | 
					                  "float greyscale_color = rgb2grey(txt_color);" +
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                 (chromaColor !== 0 ?
 | 
				
			||||||
 | 
					                     "vec3 foregroundColor = mix(fontColor.rgb, txt_color * fontColor.rgb / greyscale_color, chromaColor);
 | 
				
			||||||
 | 
					                      vec3 finalColor = mix(backgroundColor.rgb, foregroundColor, greyscale_color);"
 | 
				
			||||||
 | 
					                 :
 | 
				
			||||||
 | 
					                     "vec3 finalColor = mix(backgroundColor.rgb, fontColor.rgb, greyscale_color);") +
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                     (bloom !== 0 ?
 | 
				
			||||||
 | 
					                         "vec4 bloomFullColor = texture2D(bloomSource, txt_coords);
 | 
				
			||||||
 | 
					                          vec3 bloomColor = bloomFullColor.rgb;
 | 
				
			||||||
 | 
					                          float bloomAlpha = bloomFullColor.a;
 | 
				
			||||||
 | 
					                          bloomColor = convertWithChroma(bloomColor);
 | 
				
			||||||
 | 
					                          finalColor += clamp(bloomColor * bloom * bloomAlpha, 0.0, 0.5);"
 | 
				
			||||||
 | 
					                     : "") +
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                 "finalColor *= screen_brightness;" +
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                 (screenCurvature !== 0 ? "
 | 
				
			||||||
 | 
					                     vec2 curvatureMask = step(vec2(0.0), curvatureCoords) - step(vec2(1.0), curvatureCoords);
 | 
				
			||||||
 | 
					                     finalColor *= clamp(0.0, 1.0, curvatureMask.x + curvatureMask.y);"
 | 
				
			||||||
 | 
					                 :"") +
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                 "gl_FragColor = vec4(finalColor, qt_Opacity);" +
 | 
				
			||||||
 | 
					             "}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					         Loader {
 | 
				
			||||||
 | 
					             anchors.fill: parent
 | 
				
			||||||
 | 
					             active: screenCurvature !== 0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					             sourceComponent: NewTerminalFrame {
 | 
				
			||||||
 | 
					                 blending: true
 | 
				
			||||||
 | 
					             }
 | 
				
			||||||
 | 
					         }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					         onStatusChanged: {
 | 
				
			||||||
 | 
					             // Print warning messages
 | 
				
			||||||
 | 
					             if (log) console.log(log);
 | 
				
			||||||
 | 
					         }
 | 
				
			||||||
 | 
					     }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					     ShaderEffectSource {
 | 
				
			||||||
 | 
					         id: frameBuffer
 | 
				
			||||||
 | 
					         visible: false
 | 
				
			||||||
 | 
					         sourceItem: staticShader
 | 
				
			||||||
 | 
					         hideSource: true
 | 
				
			||||||
 | 
					     }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -10,8 +10,6 @@ ShaderTerminal {
 | 
				
			|||||||
    id: mainShader
 | 
					    id: mainShader
 | 
				
			||||||
    opacity: appSettings.windowOpacity * 0.3 + 0.7
 | 
					    opacity: appSettings.windowOpacity * 0.3 + 0.7
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    blending: false
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    source: terminal.mainSource
 | 
					    source: terminal.mainSource
 | 
				
			||||||
    burnInEffect: terminal.burnInEffect
 | 
					    burnInEffect: terminal.burnInEffect
 | 
				
			||||||
    virtual_resolution: terminal.virtualResolution
 | 
					    virtual_resolution: terminal.virtualResolution
 | 
				
			||||||
@@ -36,7 +34,7 @@ ShaderTerminal {
 | 
				
			|||||||
        height: parent.height * appSettings.bloomQuality
 | 
					        height: parent.height * appSettings.bloomQuality
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        sourceComponent: FastBlur{
 | 
					        sourceComponent: FastBlur{
 | 
				
			||||||
            radius: Utils.lint(16, 64, appSettings.bloomQuality * appSettings.windowScaling);
 | 
					            radius: Utils.lint(16, 64, appSettings.bloomQuality);
 | 
				
			||||||
            source: terminal.mainSource
 | 
					            source: terminal.mainSource
 | 
				
			||||||
            transparentBorder: true
 | 
					            transparentBorder: true
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
@@ -56,11 +54,11 @@ ShaderTerminal {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    bloomSource: bloomSourceLoader.item
 | 
					    bloomSource: bloomSourceLoader.item
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    NewTerminalFrame {
 | 
					//    NewTerminalFrame {
 | 
				
			||||||
        id: terminalFrame
 | 
					//        id: terminalFrame
 | 
				
			||||||
        anchors.fill: parent
 | 
					//        anchors.fill: parent
 | 
				
			||||||
        blending: true
 | 
					//        blending: true
 | 
				
			||||||
    }
 | 
					//    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // This shader might be useful in the future. Since we used it only for a couple
 | 
					    // This shader might be useful in the future. Since we used it only for a couple
 | 
				
			||||||
    // of calculations is probably best to move those in the main shader. If in the future
 | 
					    // of calculations is probably best to move those in the main shader. If in the future
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -137,13 +137,8 @@ ApplicationWindow{
 | 
				
			|||||||
    TerminalContainer{
 | 
					    TerminalContainer{
 | 
				
			||||||
        id: terminalContainer
 | 
					        id: terminalContainer
 | 
				
			||||||
        y: appSettings.showMenubar ? 0 : -2 // Workaroud to hide the margin in the menubar.
 | 
					        y: appSettings.showMenubar ? 0 : -2 // Workaroud to hide the margin in the menubar.
 | 
				
			||||||
        width: parent.width * appSettings.windowScaling
 | 
					        width: parent.width
 | 
				
			||||||
        height: (parent.height + Math.abs(y)) * appSettings.windowScaling
 | 
					        height: (parent.height + Math.abs(y))
 | 
				
			||||||
 | 
					 | 
				
			||||||
        transform: Scale {
 | 
					 | 
				
			||||||
            xScale: 1 / appSettings.windowScaling
 | 
					 | 
				
			||||||
            yScale: 1 / appSettings.windowScaling
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    SettingsWindow{
 | 
					    SettingsWindow{
 | 
				
			||||||
        id: settingswindow
 | 
					        id: settingswindow
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -32,7 +32,6 @@
 | 
				
			|||||||
        <file>fonts/modern-pro-font-win-tweaked/ProFontWindows.ttf</file>
 | 
					        <file>fonts/modern-pro-font-win-tweaked/ProFontWindows.ttf</file>
 | 
				
			||||||
        <file>fonts/modern-hermit/Hermit-medium.otf</file>
 | 
					        <file>fonts/modern-hermit/Hermit-medium.otf</file>
 | 
				
			||||||
        <file>fonts/modern-inconsolata/Inconsolata.otf</file>
 | 
					        <file>fonts/modern-inconsolata/Inconsolata.otf</file>
 | 
				
			||||||
        <file>SettingsScreenTab.qml</file>
 | 
					 | 
				
			||||||
        <file>fonts/modern-fixedsys-excelsior/FSEX301-L2.ttf</file>
 | 
					        <file>fonts/modern-fixedsys-excelsior/FSEX301-L2.ttf</file>
 | 
				
			||||||
        <file>../icons/32x32/cool-retro-term.png</file>
 | 
					        <file>../icons/32x32/cool-retro-term.png</file>
 | 
				
			||||||
        <file>Components/SizedLabel.qml</file>
 | 
					        <file>Components/SizedLabel.qml</file>
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user