{-# LANGUAGE ForeignFunctionInterface, TypeFamilies, MultiParamTypeClasses, 
             FlexibleInstances, TypeSynonymInstances, EmptyDataDecls, 
             OverlappingInstances, IncoherentInstances #-}

module HROOT.Class.TPaveClass.Implementation where


import HROOT.TypeCast

import HROOT.Class.TPaveClass.RawType
import HROOT.Class.TPaveClass.FFI
import HROOT.Class.TPaveClass.Interface
import HROOT.Class.TPaveClass.Cast
import HROOT.Class.TClass.RawType
import HROOT.Class.TClass.Cast
import HROOT.Class.TClass.Interface
import HROOT.Class.TPaveLabel.RawType
import HROOT.Class.TPaveLabel.Cast
import HROOT.Class.TPaveLabel.Interface
import HROOT.Class.TPave.RawType
import HROOT.Class.TPave.Cast
import HROOT.Class.TPave.Interface
import HROOT.Class.TAttText.RawType
import HROOT.Class.TAttText.Cast
import HROOT.Class.TAttText.Interface
import HROOT.Class.TBox.RawType
import HROOT.Class.TBox.Cast
import HROOT.Class.TBox.Interface
import HROOT.Class.TObject.RawType
import HROOT.Class.TObject.Cast
import HROOT.Class.TObject.Interface
import HROOT.Class.TAttLine.RawType
import HROOT.Class.TAttLine.Cast
import HROOT.Class.TAttLine.Interface
import HROOT.Class.TAttFill.RawType
import HROOT.Class.TAttFill.Cast
import HROOT.Class.TAttFill.Interface
import HROOT.Class.Deletable.RawType
import HROOT.Class.Deletable.Cast
import HROOT.Class.Deletable.Interface

import Data.Word
-- import Foreign.C            
-- import Foreign.Ptr
import Foreign.ForeignPtr

import System.IO.Unsafe


instance ITPaveClass TPaveClass where
instance ITPaveLabel TPaveClass where
instance ITPave TPaveClass where
instance ITAttText TPaveClass where
  getTextAlign = xform0 c_tpaveclass_gettextalign
  getTextAngle = xform0 c_tpaveclass_gettextangle
  getTextColor = xform0 c_tpaveclass_gettextcolor
  getTextFont = xform0 c_tpaveclass_gettextfont
  getTextSize = xform0 c_tpaveclass_gettextsize
  resetAttText = xform1 c_tpaveclass_resetatttext
  setTextAttributes = xform0 c_tpaveclass_settextattributes
  setTextAlign = xform1 c_tpaveclass_settextalign
  setTextAngle = xform1 c_tpaveclass_settextangle
  setTextColor = xform1 c_tpaveclass_settextcolor
  setTextFont = xform1 c_tpaveclass_settextfont
  setTextSize = xform1 c_tpaveclass_settextsize
  setTextSizePixels = xform1 c_tpaveclass_settextsizepixels
instance ITBox TPaveClass where
instance ITObject TPaveClass where
  draw = xform1 c_tpaveclass_draw
  findObject = xform1 c_tpaveclass_findobject
  getName = xform0 c_tpaveclass_getname
  isA = xform0 c_tpaveclass_isa
  isFolder = xform0 c_tpaveclass_isfolder
  isEqual = xform1 c_tpaveclass_isequal
  isSortable = xform0 c_tpaveclass_issortable
  paint = xform1 c_tpaveclass_paint
  printObj = xform1 c_tpaveclass_printobj
  recursiveRemove = xform1 c_tpaveclass_recursiveremove
  saveAs = xform2 c_tpaveclass_saveas
  useCurrentStyle = xform0 c_tpaveclass_usecurrentstyle
  write = xform3 c_tpaveclass_write
instance ITAttLine TPaveClass where
  getLineColor = xform0 c_tpaveclass_getlinecolor
  getLineStyle = xform0 c_tpaveclass_getlinestyle
  getLineWidth = xform0 c_tpaveclass_getlinewidth
  resetAttLine = xform1 c_tpaveclass_resetattline
  setLineAttributes = xform0 c_tpaveclass_setlineattributes
  setLineColor = xform1 c_tpaveclass_setlinecolor
  setLineStyle = xform1 c_tpaveclass_setlinestyle
  setLineWidth = xform1 c_tpaveclass_setlinewidth
instance ITAttFill TPaveClass where
  setFillColor = xform1 c_tpaveclass_setfillcolor
  setFillStyle = xform1 c_tpaveclass_setfillstyle
instance IDeletable TPaveClass where
  delete = xform0 c_tpaveclass_delete

instance ITPaveClass (Exist TPaveClass) where

instance ITPaveLabel (Exist TPaveClass) where

instance ITPave (Exist TPaveClass) where

instance ITAttText (Exist TPaveClass) where
  getTextAlign (ETPaveClass x) = getTextAlign x
  getTextAngle (ETPaveClass x) = getTextAngle x
  getTextColor (ETPaveClass x) = getTextColor x
  getTextFont (ETPaveClass x) = getTextFont x
  getTextSize (ETPaveClass x) = getTextSize x
  resetAttText (ETPaveClass x) = resetAttText x
  setTextAttributes (ETPaveClass x) = setTextAttributes x
  setTextAlign (ETPaveClass x) = setTextAlign x
  setTextAngle (ETPaveClass x) = setTextAngle x
  setTextColor (ETPaveClass x) = setTextColor x
  setTextFont (ETPaveClass x) = setTextFont x
  setTextSize (ETPaveClass x) = setTextSize x
  setTextSizePixels (ETPaveClass x) = setTextSizePixels x
instance ITBox (Exist TPaveClass) where

instance ITObject (Exist TPaveClass) where
  draw (ETPaveClass x) = draw x
  findObject (ETPaveClass x) = findObject x
  getName (ETPaveClass x) = getName x
  isA (ETPaveClass x) = isA x
  isFolder (ETPaveClass x) = isFolder x
  isEqual (ETPaveClass x) = isEqual x
  isSortable (ETPaveClass x) = isSortable x
  paint (ETPaveClass x) = paint x
  printObj (ETPaveClass x) = printObj x
  recursiveRemove (ETPaveClass x) = recursiveRemove x
  saveAs (ETPaveClass x) = saveAs x
  useCurrentStyle (ETPaveClass x) = useCurrentStyle x
  write (ETPaveClass x) = write x
instance ITAttLine (Exist TPaveClass) where
  getLineColor (ETPaveClass x) = getLineColor x
  getLineStyle (ETPaveClass x) = getLineStyle x
  getLineWidth (ETPaveClass x) = getLineWidth x
  resetAttLine (ETPaveClass x) = resetAttLine x
  setLineAttributes (ETPaveClass x) = setLineAttributes x
  setLineColor (ETPaveClass x) = setLineColor x
  setLineStyle (ETPaveClass x) = setLineStyle x
  setLineWidth (ETPaveClass x) = setLineWidth x
instance ITAttFill (Exist TPaveClass) where
  setFillColor (ETPaveClass x) = setFillColor x
  setFillStyle (ETPaveClass x) = setFillStyle x
instance IDeletable (Exist TPaveClass) where
  delete (ETPaveClass x) = delete x





instance FPtr (Exist TPaveClass) where
  type Raw (Exist TPaveClass) = RawTPaveClass
  get_fptr (ETPaveClass obj) = castForeignPtr (get_fptr obj)
  cast_fptr_to_obj fptr = ETPaveClass (cast_fptr_to_obj (fptr :: ForeignPtr RawTPaveClass) :: TPaveClass)