packages feed

hsqml-demo-samples 0.3.2.0 → 0.3.3.0

raw patch · 5 files changed

+282/−4 lines, 5 filesdep ~hsqmlnew-component:exe:hsqml-opengl2

Dependency ranges changed: hsqml

Files

CHANGELOG view
@@ -1,5 +1,9 @@ HsQML Samples - Release History +release-0.3.3.0 - 2015.01.20++  * Add OpenGLControlContext sample.+ release-0.3.2.0 - 2014.11.13    * Added OpenGL sample.
LICENSE view
@@ -1,4 +1,4 @@-Copyright (c)2014, Robin KAY+Copyright (c)2014-2015, Robin KAY  All rights reserved. 
hsqml-demo-samples.cabal view
@@ -1,15 +1,15 @@ Name:          hsqml-demo-samples-Version:       0.3.2.0+Version:       0.3.3.0 Cabal-version: >= 1.10 Build-type:    Simple License:       BSD3 License-file:  LICENSE-Copyright:     (c) 2014 Robin KAY+Copyright:     (c) 2014-2015 Robin KAY Author:        Robin KAY Maintainer:    komadori@gekkou.co.uk Stability:     experimental Homepage:      http://www.gekkou.co.uk/software/hsqml/-Category:      Graphics+Category:      Graphics, GUI Synopsis:      HsQML sample programs Data-dir:      qml Data-files:    *.qml@@ -53,6 +53,20 @@         OpenGL     == 2.9.*,         OpenGLRaw  == 1.5.*,         hsqml      >= 0.3.2 && < 0.4+    GHC-options: -threaded+    if !flag(OpenGL)+        Buildable: False++Executable hsqml-opengl2+    Default-language: Haskell2010+    Hs-source-dirs: src+    Main-is: OpenGL2.hs+    Build-depends:+        base       == 4.*,+        text       >= 0.11 && < 1.3,+        OpenGL     == 2.9.*,+        OpenGLRaw  == 1.5.*,+        hsqml      >= 0.3.3 && < 0.4     GHC-options: -threaded     if !flag(OpenGL)         Buildable: False
+ qml/opengl2.qml view
@@ -0,0 +1,214 @@+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;+        }+    }+}
+ src/OpenGL2.hs view
@@ -0,0 +1,46 @@+{-# LANGUAGE+    ScopedTypeVariables+  #-}++module Main where++import Data.Text (Text)+import qualified Data.Text as T+import Data.IORef+import Graphics.QML+import Graphics.QML.Canvas+import Graphics.Rendering.OpenGL.GL++import Paths_hsqml_demo_samples++data GLInfo = GLInfo {+    vendorText :: Text,+    rendererText :: Text,+    versionText :: Text+}++main :: IO ()+main = do+    info <- newIORef $ GLInfo (T.pack "-") (T.pack "-") (T.pack "-")+    skey <- newSignalKey+    let defInfoProp name field = defPropertySigRO' name skey (\_ ->+            fmap field $ readIORef info)+    clazz <- newClass [+        defPropertyConst' "glDelegate" (\this -> newOpenGLDelegate+            (\paint -> do+                vend <- get vendor+                rend <- get renderer+                ver <- get glVersion+                writeIORef info $+                    GLInfo (T.pack vend) (T.pack rend) (T.pack ver)+                fireSignal skey this)+            (\(_ :: OpenGLPaint' ()) -> return ())+            (\_ -> return ())),+        defInfoProp "vendor" vendorText,+        defInfoProp "renderer" rendererText,+        defInfoProp "version" versionText]+    ctx <- newObject clazz ()+    doc <- getDataFileName "opengl2.qml"+    runEngineLoop defaultEngineConfig {+        initialDocument = fileDocument doc,+        contextObject = Just $ anyObjRef ctx}