{-# LANGUAGE EmptyDataDecls, FlexibleContexts, FlexibleInstances,
  ForeignFunctionInterface, IncoherentInstances,
  MultiParamTypeClasses, OverlappingInstances, TemplateHaskell,
  TypeFamilies, TypeSynonymInstances #-}
module HROOT.Graf.TBox.Implementation where
import Data.Monoid
import Data.Word
import Data.Int
import Foreign.C
import Foreign.Ptr
import Language.Haskell.TH
import Language.Haskell.TH.Syntax
import System.IO.Unsafe
import FFICXX.Runtime.Cast
import FFICXX.Runtime.CodeGen.Cxx
import FFICXX.Runtime.TH
import HROOT.Graf.TBox.RawType
import HROOT.Graf.TBox.FFI
import HROOT.Graf.TBox.Interface
import HROOT.Graf.TBox.Cast
import HROOT.Graf.TBox.RawType
import HROOT.Graf.TBox.Cast
import HROOT.Graf.TBox.Interface
import HROOT.Core.TClass.RawType
import HROOT.Core.TClass.Cast
import HROOT.Core.TClass.Interface
import HROOT.Core.TObject.RawType
import HROOT.Core.TObject.Cast
import HROOT.Core.TObject.Interface
import HROOT.Core.TAttLine.RawType
import HROOT.Core.TAttLine.Cast
import HROOT.Core.TAttLine.Interface
import HROOT.Core.TAttFill.RawType
import HROOT.Core.TAttFill.Cast
import HROOT.Core.TAttFill.Interface
import STD.Deletable.RawType
import STD.Deletable.Cast
import STD.Deletable.Interface

instance () => ITBox (TBox) where

instance () => ITObject (TBox) where
        clear :: forall c0. Castable c0 CString => TBox -> c0 -> IO ()
clear = (Ptr RawTBox -> CString -> IO ()) -> TBox -> c0 -> IO ()
forall a ca x1 cx1 y cy.
(Castable a ca, Castable x1 cx1, Castable y cy) =>
(ca -> cx1 -> IO cy) -> a -> x1 -> IO y
xform1 Ptr RawTBox -> CString -> IO ()
c_tbox_clear
        draw :: forall c0. Castable c0 CString => TBox -> c0 -> IO ()
draw = (Ptr RawTBox -> CString -> IO ()) -> TBox -> c0 -> IO ()
forall a ca x1 cx1 y cy.
(Castable a ca, Castable x1 cx1, Castable y cy) =>
(ca -> cx1 -> IO cy) -> a -> x1 -> IO y
xform1 Ptr RawTBox -> CString -> IO ()
c_tbox_draw
        findObject :: forall c0. Castable c0 CString => TBox -> c0 -> IO TObject
findObject = (Ptr RawTBox -> CString -> IO (Ptr RawTObject))
-> TBox -> c0 -> IO TObject
forall a ca x1 cx1 y cy.
(Castable a ca, Castable x1 cx1, Castable y cy) =>
(ca -> cx1 -> IO cy) -> a -> x1 -> IO y
xform1 Ptr RawTBox -> CString -> IO (Ptr RawTObject)
c_tbox_findobject
        getName :: TBox -> IO CString
getName = (Ptr RawTBox -> IO CString) -> TBox -> IO CString
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0 Ptr RawTBox -> IO CString
c_tbox_getname
        isA :: TBox -> IO TClass
isA = (Ptr RawTBox -> IO (Ptr RawTClass)) -> TBox -> IO TClass
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0 Ptr RawTBox -> IO (Ptr RawTClass)
c_tbox_isa
        paint :: forall c0. Castable c0 CString => TBox -> c0 -> IO ()
paint = (Ptr RawTBox -> CString -> IO ()) -> TBox -> c0 -> IO ()
forall a ca x1 cx1 y cy.
(Castable a ca, Castable x1 cx1, Castable y cy) =>
(ca -> cx1 -> IO cy) -> a -> x1 -> IO y
xform1 Ptr RawTBox -> CString -> IO ()
c_tbox_paint
        printObj :: forall c0. Castable c0 CString => TBox -> c0 -> IO ()
printObj = (Ptr RawTBox -> CString -> IO ()) -> TBox -> c0 -> IO ()
forall a ca x1 cx1 y cy.
(Castable a ca, Castable x1 cx1, Castable y cy) =>
(ca -> cx1 -> IO cy) -> a -> x1 -> IO y
xform1 Ptr RawTBox -> CString -> IO ()
c_tbox_printobj
        saveAs :: forall c1 c0.
(Castable c1 CString, Castable c0 CString) =>
TBox -> c0 -> c1 -> IO ()
saveAs = (Ptr RawTBox -> CString -> CString -> IO ())
-> TBox -> c0 -> c1 -> IO ()
forall a ca x1 cx1 x2 cx2 y cy.
(Castable a ca, Castable x1 cx1, Castable x2 cx2, Castable y cy) =>
(ca -> cx1 -> cx2 -> IO cy) -> a -> x1 -> x2 -> IO y
xform2 Ptr RawTBox -> CString -> CString -> IO ()
c_tbox_saveas
        write :: forall c0.
Castable c0 CString =>
TBox -> c0 -> CInt -> CInt -> IO CInt
write = (Ptr RawTBox -> CString -> CInt -> CInt -> IO CInt)
-> TBox -> c0 -> CInt -> CInt -> IO CInt
forall a ca x1 cx1 x2 cx2 x3 cx3 y cy.
(Castable a ca, Castable x1 cx1, Castable x2 cx2, Castable x3 cx3,
 Castable y cy) =>
(ca -> cx1 -> cx2 -> cx3 -> IO cy) -> a -> x1 -> x2 -> x3 -> IO y
xform3 Ptr RawTBox -> CString -> CInt -> CInt -> IO CInt
c_tbox_write
        write_ :: TBox -> IO CInt
write_ = (Ptr RawTBox -> IO CInt) -> TBox -> IO CInt
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0 Ptr RawTBox -> IO CInt
c_tbox_write_

instance () => ITAttLine (TBox) where
        getLineColor :: TBox -> IO CShort
getLineColor = (Ptr RawTBox -> IO CShort) -> TBox -> IO CShort
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0 Ptr RawTBox -> IO CShort
c_tbox_getlinecolor
        getLineStyle :: TBox -> IO CShort
getLineStyle = (Ptr RawTBox -> IO CShort) -> TBox -> IO CShort
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0 Ptr RawTBox -> IO CShort
c_tbox_getlinestyle
        getLineWidth :: TBox -> IO CShort
getLineWidth = (Ptr RawTBox -> IO CShort) -> TBox -> IO CShort
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0 Ptr RawTBox -> IO CShort
c_tbox_getlinewidth
        resetAttLine :: forall c0. Castable c0 CString => TBox -> c0 -> IO ()
resetAttLine = (Ptr RawTBox -> CString -> IO ()) -> TBox -> c0 -> IO ()
forall a ca x1 cx1 y cy.
(Castable a ca, Castable x1 cx1, Castable y cy) =>
(ca -> cx1 -> IO cy) -> a -> x1 -> IO y
xform1 Ptr RawTBox -> CString -> IO ()
c_tbox_resetattline
        setLineAttributes :: TBox -> IO ()
setLineAttributes = (Ptr RawTBox -> IO ()) -> TBox -> IO ()
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0 Ptr RawTBox -> IO ()
c_tbox_setlineattributes
        setLineColor :: TBox -> CShort -> IO ()
setLineColor = (Ptr RawTBox -> CShort -> IO ()) -> TBox -> CShort -> IO ()
forall a ca x1 cx1 y cy.
(Castable a ca, Castable x1 cx1, Castable y cy) =>
(ca -> cx1 -> IO cy) -> a -> x1 -> IO y
xform1 Ptr RawTBox -> CShort -> IO ()
c_tbox_setlinecolor
        setLineStyle :: TBox -> CShort -> IO ()
setLineStyle = (Ptr RawTBox -> CShort -> IO ()) -> TBox -> CShort -> IO ()
forall a ca x1 cx1 y cy.
(Castable a ca, Castable x1 cx1, Castable y cy) =>
(ca -> cx1 -> IO cy) -> a -> x1 -> IO y
xform1 Ptr RawTBox -> CShort -> IO ()
c_tbox_setlinestyle
        setLineWidth :: TBox -> CShort -> IO ()
setLineWidth = (Ptr RawTBox -> CShort -> IO ()) -> TBox -> CShort -> IO ()
forall a ca x1 cx1 y cy.
(Castable a ca, Castable x1 cx1, Castable y cy) =>
(ca -> cx1 -> IO cy) -> a -> x1 -> IO y
xform1 Ptr RawTBox -> CShort -> IO ()
c_tbox_setlinewidth

instance () => ITAttFill (TBox) where
        setFillColor :: TBox -> CInt -> IO ()
setFillColor = (Ptr RawTBox -> CInt -> IO ()) -> TBox -> CInt -> IO ()
forall a ca x1 cx1 y cy.
(Castable a ca, Castable x1 cx1, Castable y cy) =>
(ca -> cx1 -> IO cy) -> a -> x1 -> IO y
xform1 Ptr RawTBox -> CInt -> IO ()
c_tbox_setfillcolor
        setFillStyle :: TBox -> CInt -> IO ()
setFillStyle = (Ptr RawTBox -> CInt -> IO ()) -> TBox -> CInt -> IO ()
forall a ca x1 cx1 y cy.
(Castable a ca, Castable x1 cx1, Castable y cy) =>
(ca -> cx1 -> IO cy) -> a -> x1 -> IO y
xform1 Ptr RawTBox -> CInt -> IO ()
c_tbox_setfillstyle

instance () => IDeletable (TBox) where
        delete :: TBox -> IO ()
delete = (Ptr RawTBox -> IO ()) -> TBox -> IO ()
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0 Ptr RawTBox -> IO ()
c_tbox_delete

newTBox ::
          () => CDouble -> CDouble -> CDouble -> CDouble -> IO TBox
newTBox :: CDouble -> CDouble -> CDouble -> CDouble -> IO TBox
newTBox = (CDouble -> CDouble -> CDouble -> CDouble -> IO (Ptr RawTBox))
-> CDouble -> CDouble -> CDouble -> CDouble -> IO TBox
forall a ca x1 cx1 x2 cx2 x3 cx3 y cy.
(Castable a ca, Castable x1 cx1, Castable x2 cx2, Castable x3 cx3,
 Castable y cy) =>
(ca -> cx1 -> cx2 -> cx3 -> IO cy) -> a -> x1 -> x2 -> x3 -> IO y
xform3 CDouble -> CDouble -> CDouble -> CDouble -> IO (Ptr RawTBox)
c_tbox_newtbox