{-# 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}