module LC_API ( -- language module LC_G_Type, module LC_G_APIType, module LC_T_APIType, module LC_T_DSLType, module LC_T_HOAS, module LC_T_Language, Int32, Word32, uniformBool, uniformV2B, uniformV3B, uniformV4B, uniformWord, uniformV2U, uniformV3U, uniformV4U, uniformInt, uniformV2I, uniformV3I, uniformV4I, uniformFloat, uniformV2F, uniformV3F, uniformV4F, uniformM22F, uniformM23F, uniformM24F, uniformM32F, uniformM33F, uniformM34F, uniformM42F, uniformM43F, uniformM44F, uniformFTexture2D, -- backend Buffer, compileBuffer, updateBuffer, bufferSize, arraySize, arrayType, Renderer, compileRenderer, slotUniform, slotStream, uniformSetter, render, dispose, setScreenSize, Object, addObject, removeObject, objectUniformSetter, enableObject, -- texture (temporary) compileTexture2DRGBAF ) where import Data.Int import Data.Word import LC_G_APIType hiding (InputType(..)) import LC_G_Type import LC_T_APIType import LC_T_DSLType hiding (Buffer,Shadow) import LC_T_HOAS import LC_T_Language import qualified LC_T_APIType as H import qualified LC_T_HOAS as H import qualified LC_U_DeBruijn as U import LC_C_Convert import LC_B_GL hiding (compileRenderer) import LC_B_GLCompile import LC_B_GLData import LC_B_GLType import LC_B_GLUtil (Buffer) import qualified LC_B_GL as GL import Control.Monad.State import Data.ByteString.Char8 (ByteString) import Data.ByteString.Char8 as SB import Data.Trie as T compileRenderer :: H.GPOutput H.SingleOutput -> IO Renderer compileRenderer l = GL.compileRenderer dag $ U.toExp dag l' where (l', dag) = runState (U.unN $ convertGPOutput l) U.emptyDAG nullSetter :: ByteString -> String -> a -> IO () nullSetter n t _ = Prelude.putStrLn $ "WARNING: unknown uniform: " ++ SB.unpack n ++ " :: " ++ t uniformBool :: ByteString -> Trie InputSetter -> SetterFun Bool uniformV2B :: ByteString -> Trie InputSetter -> SetterFun V2B uniformV3B :: ByteString -> Trie InputSetter -> SetterFun V3B uniformV4B :: ByteString -> Trie InputSetter -> SetterFun V4B uniformWord :: ByteString -> Trie InputSetter -> SetterFun Word32 uniformV2U :: ByteString -> Trie InputSetter -> SetterFun V2U uniformV3U :: ByteString -> Trie InputSetter -> SetterFun V3U uniformV4U :: ByteString -> Trie InputSetter -> SetterFun V4U uniformInt :: ByteString -> Trie InputSetter -> SetterFun Int32 uniformV2I :: ByteString -> Trie InputSetter -> SetterFun V2I uniformV3I :: ByteString -> Trie InputSetter -> SetterFun V3I uniformV4I :: ByteString -> Trie InputSetter -> SetterFun V4I uniformFloat :: ByteString -> Trie InputSetter -> SetterFun Float uniformV2F :: ByteString -> Trie InputSetter -> SetterFun V2F uniformV3F :: ByteString -> Trie InputSetter -> SetterFun V3F uniformV4F :: ByteString -> Trie InputSetter -> SetterFun V4F uniformM22F :: ByteString -> Trie InputSetter -> SetterFun M22F uniformM23F :: ByteString -> Trie InputSetter -> SetterFun M23F uniformM24F :: ByteString -> Trie InputSetter -> SetterFun M24F uniformM32F :: ByteString -> Trie InputSetter -> SetterFun M32F uniformM33F :: ByteString -> Trie InputSetter -> SetterFun M33F uniformM34F :: ByteString -> Trie InputSetter -> SetterFun M34F uniformM42F :: ByteString -> Trie InputSetter -> SetterFun M42F uniformM43F :: ByteString -> Trie InputSetter -> SetterFun M43F uniformM44F :: ByteString -> Trie InputSetter -> SetterFun M44F uniformFTexture2D :: ByteString -> Trie InputSetter -> SetterFun TextureData uniformBool n is = case T.lookup n is of Just (SBool fun) -> fun _ -> nullSetter n "Bool" uniformV2B n is = case T.lookup n is of Just (SV2B fun) -> fun _ -> nullSetter n "V2B" uniformV3B n is = case T.lookup n is of Just (SV3B fun) -> fun _ -> nullSetter n "V3B" uniformV4B n is = case T.lookup n is of Just (SV4B fun) -> fun _ -> nullSetter n "V4B" uniformWord n is = case T.lookup n is of Just (SWord fun) -> fun _ -> nullSetter n "Word" uniformV2U n is = case T.lookup n is of Just (SV2U fun) -> fun _ -> nullSetter n "V2U" uniformV3U n is = case T.lookup n is of Just (SV3U fun) -> fun _ -> nullSetter n "V3U" uniformV4U n is = case T.lookup n is of Just (SV4U fun) -> fun _ -> nullSetter n "V4U" uniformInt n is = case T.lookup n is of Just (SInt fun) -> fun _ -> nullSetter n "Int" uniformV2I n is = case T.lookup n is of Just (SV2I fun) -> fun _ -> nullSetter n "V2I" uniformV3I n is = case T.lookup n is of Just (SV3I fun) -> fun _ -> nullSetter n "V3I" uniformV4I n is = case T.lookup n is of Just (SV4I fun) -> fun _ -> nullSetter n "V4I" uniformFloat n is = case T.lookup n is of Just (SFloat fun) -> fun _ -> nullSetter n "Float" uniformV2F n is = case T.lookup n is of Just (SV2F fun) -> fun _ -> nullSetter n "V2F" uniformV3F n is = case T.lookup n is of Just (SV3F fun) -> fun _ -> nullSetter n "V3F" uniformV4F n is = case T.lookup n is of Just (SV4F fun) -> fun _ -> nullSetter n "V4F" uniformM22F n is = case T.lookup n is of Just (SM22F fun) -> fun _ -> nullSetter n "M22F" uniformM23F n is = case T.lookup n is of Just (SM23F fun) -> fun _ -> nullSetter n "M23F" uniformM24F n is = case T.lookup n is of Just (SM24F fun) -> fun _ -> nullSetter n "M24F" uniformM32F n is = case T.lookup n is of Just (SM32F fun) -> fun _ -> nullSetter n "M32F" uniformM33F n is = case T.lookup n is of Just (SM33F fun) -> fun _ -> nullSetter n "M33F" uniformM34F n is = case T.lookup n is of Just (SM34F fun) -> fun _ -> nullSetter n "M34F" uniformM42F n is = case T.lookup n is of Just (SM42F fun) -> fun _ -> nullSetter n "M42F" uniformM43F n is = case T.lookup n is of Just (SM43F fun) -> fun _ -> nullSetter n "M43F" uniformM44F n is = case T.lookup n is of Just (SM44F fun) -> fun _ -> nullSetter n "M44F" uniformFTexture2D n is = case T.lookup n is of Just (SFTexture2D fun) -> fun _ -> nullSetter n "FTexture2D"