packages feed

hsqml-demo-samples-0.3.3.0: qml/opengl2.qml

import QtQuick 2.0
import QtQuick.Controls 1.0
import QtQuick.Window 2.0
import HsQML.Canvas 1.0

Window {
    title: 'Context Controls';
    width: col.width; height: col.height;
    visible: true;

    Column {
        id: col;

        GroupBox {
            title: 'Control';

            Grid {
                columns: 2; width: col.width;
                columnSpacing: 5;

                Label {
                    text: 'Major Version';
                    font.bold: true;
                }
                TextField {
                    id: majorVersionField;
                }
                Label {
                    text: 'Minor Version';
                    font.bold: true;
                }
                TextField {
                    id: minorVersionField;
                }
                Label {
                    text: 'Context Type';
                    font.bold: true;
                }
                ComboBox {
                    id: contextTypeField;
                    model: ListModel {
                        ListElement { text: 'Type Unset'; }
                        ListElement { text: 'OpenGL';
                            type: OpenGLContextControl.OpenGL; }
                        ListElement { text: 'OpenGL ES';
                            type: OpenGLContextControl.OpenGLES; }
                    }
                }
                Label {
                    text: 'Context Profile';
                    font.bold: true;
                }
                ComboBox {
                    id: contextProfileField;
                    model: ListModel {
                        ListElement { text: 'Profile Unset'; }
                        ListElement { text: 'No Profile';
                            profile: OpenGLContextControl.NoProfile;}
                        ListElement { text: 'Core Profile';
                            profile: OpenGLContextControl.CoreProfile;}
                        ListElement { text: 'Compatibility Profile';
                            profile: OpenGLContextControl.CompatibilityProfile;}
                    }
                }
                Label {
                    text: 'Deprecated Functions';
                    font.bold: true;
                }
                ComboBox {
                    id: deprecatedFunctionsField;
                    model: ListModel {
                        ListElement { text: 'Unset'; }
                        ListElement { text: 'Enabled'; value: true; }
                        ListElement { text: 'Disabled'; value: false; }
                    }
                }
                Label {
                    text: 'Depth Buffer Size';
                    font.bold: true;
                }
                TextField {
                    id: depthBufferSizeField;
                }
                Label {
                    text: 'Stencil Buffer Size';
                    font.bold: true;
                }
                TextField {
                    id: stencilBufferSizeField;
                }
                Button {
                    text: 'Control Context';
                    onClicked: {
                        victimCtrl.when = false;
                        victimCtrl.majorVersion =
                            parseInt(majorVersionField.text);
                        victimCtrl.minorVersion =
                            parseInt(minorVersionField.text);
                        victimCtrl.contextType = contextTypeField.model.get(
                            contextTypeField.currentIndex).type;
                        victimCtrl.contextProfile =
                            contextProfileField.model.get(
                                contextProfileField.currentIndex).profile;
                        victimCtrl.deprecatedFunctions =
                            deprecatedFunctionsField.model.get(
                                deprecatedFunctionsField.currentIndex).value;
                        victimCtrl.depthBufferSize =
                            parseInt(depthBufferSizeField.text);
                        victimCtrl.stencilBufferSize =
                            parseInt(stencilBufferSizeField.text);
                        victimCtrl.when = true;
                        victim.visible = true;
                    }
                }
            }
        }
        GroupBox {
            title: 'Status';

            Grid {
                columns: 2; width: col.width;
                columnSpacing: 5;

                Label {
                    text: 'Vendor String';
                    font.bold: true;
                }
                Label {
                    text: vendor;
                }
                Label {
                    text: 'Renderer String';
                    font.bold: true;
                }
                Label {
                    text: renderer;
                }
                Label {
                    text: 'Version String';
                    font.bold: true;
                }
                Label {
                    text: version;
                }
                Label {
                    text: 'Major Version';
                    font.bold: true;
                }
                Label {
                    text: victimCtrl.majorVersion;
                }
                Label {
                    text: 'Minor Version';
                    font.bold: true;
                }
                Label {
                    text: victimCtrl.minorVersion;
                }
                Label {
                    text: 'Context Type';
                    font.bold: true;
                }
                Label {
                    text: ['Unknown','OpenGL','OpenGL ES'][
                        victimCtrl.contextType];
                }
                Label {
                    text: 'Context Profile';
                    font.bold: true;
                }
                Label {
                    text: ['None','Core','Compatability'][
                        victimCtrl.contextProfile];
                }
                Label {
                    text: 'Deprecated Functions';
                    font.bold: true;
                }
                Label {
                    text: victimCtrl.deprecatedFunctions;
                }
                Label {
                    text: 'Depth Buffer Size';
                    font.bold: true;
                }
                Label {
                    text: victimCtrl.depthBufferSize;
                }
                Label {
                    text: 'Stencil Buffer Size';
                    font.bold: true;
                }
                Label {
                    text: victimCtrl.stencilBufferSize;
                }
            }
        }
    }

    Window {
        id: victim;
        title: 'Victim Window';
        visible: true;

        HaskellCanvas {
            id: victimCanvas;
            anchors.fill: parent;
            delegate: glDelegate;
        }
        OpenGLContextControl {
            id: victimCtrl;
        }
    }
}