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

module HROOT.Class.TButton.Implementation where


import HROOT.TypeCast

import HROOT.Class.TButton.RawType
import HROOT.Class.TButton.FFI
import HROOT.Class.TButton.Interface
import HROOT.Class.TButton.Cast
import HROOT.Class.TFrame.RawType
import HROOT.Class.TFrame.Cast
import HROOT.Class.TFrame.Interface
import HROOT.Class.TClass.RawType
import HROOT.Class.TClass.Cast
import HROOT.Class.TClass.Interface
import HROOT.Class.TPad.RawType
import HROOT.Class.TPad.Cast
import HROOT.Class.TPad.Interface
import HROOT.Class.TAttText.RawType
import HROOT.Class.TAttText.Cast
import HROOT.Class.TAttText.Interface
import HROOT.Class.TVirtualPad.RawType
import HROOT.Class.TVirtualPad.Cast
import HROOT.Class.TVirtualPad.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.TAttPad.RawType
import HROOT.Class.TAttPad.Cast
import HROOT.Class.TAttPad.Interface
import HROOT.Class.TQObject.RawType
import HROOT.Class.TQObject.Cast
import HROOT.Class.TQObject.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 ITButton TButton where
instance ITPad TButton where
instance ITAttText TButton where
  getTextAlign = xform0 c_tbutton_gettextalign
  getTextAngle = xform0 c_tbutton_gettextangle
  getTextColor = xform0 c_tbutton_gettextcolor
  getTextFont = xform0 c_tbutton_gettextfont
  getTextSize = xform0 c_tbutton_gettextsize
  resetAttText = xform1 c_tbutton_resetatttext
  setTextAttributes = xform0 c_tbutton_settextattributes
  setTextAlign = xform1 c_tbutton_settextalign
  setTextAngle = xform1 c_tbutton_settextangle
  setTextColor = xform1 c_tbutton_settextcolor
  setTextFont = xform1 c_tbutton_settextfont
  setTextSize = xform1 c_tbutton_settextsize
  setTextSizePixels = xform1 c_tbutton_settextsizepixels
instance ITVirtualPad TButton where
  cd = xform1 c_tbutton_cd
  getFrame = xform0 c_tbutton_getframe
  modified = xform1 c_tbutton_modified
  range = xform4 c_tbutton_range
instance ITObject TButton where
  draw = xform1 c_tbutton_draw
  findObject = xform1 c_tbutton_findobject
  getName = xform0 c_tbutton_getname
  isA = xform0 c_tbutton_isa
  isFolder = xform0 c_tbutton_isfolder
  isEqual = xform1 c_tbutton_isequal
  isSortable = xform0 c_tbutton_issortable
  paint = xform1 c_tbutton_paint
  printObj = xform1 c_tbutton_printobj
  recursiveRemove = xform1 c_tbutton_recursiveremove
  saveAs = xform2 c_tbutton_saveas
  useCurrentStyle = xform0 c_tbutton_usecurrentstyle
  write = xform3 c_tbutton_write
instance ITAttLine TButton where
  getLineColor = xform0 c_tbutton_getlinecolor
  getLineStyle = xform0 c_tbutton_getlinestyle
  getLineWidth = xform0 c_tbutton_getlinewidth
  resetAttLine = xform1 c_tbutton_resetattline
  setLineAttributes = xform0 c_tbutton_setlineattributes
  setLineColor = xform1 c_tbutton_setlinecolor
  setLineStyle = xform1 c_tbutton_setlinestyle
  setLineWidth = xform1 c_tbutton_setlinewidth
instance ITAttFill TButton where
  setFillColor = xform1 c_tbutton_setfillcolor
  setFillStyle = xform1 c_tbutton_setfillstyle
instance ITAttPad TButton where
  resetAttPad = xform1 c_tbutton_resetattpad
  setBottomMargin = xform1 c_tbutton_setbottommargin
  setLeftMargin = xform1 c_tbutton_setleftmargin
  setRightMargin = xform1 c_tbutton_setrightmargin
  setTopMargin = xform1 c_tbutton_settopmargin
  setMargin = xform4 c_tbutton_setmargin
  setAfile = xform1 c_tbutton_setafile
  setXfile = xform1 c_tbutton_setxfile
  setYfile = xform1 c_tbutton_setyfile
  setAstat = xform1 c_tbutton_setastat
  setXstat = xform1 c_tbutton_setxstat
  setYstat = xform1 c_tbutton_setystat
instance ITQObject TButton where
instance IDeletable TButton where
  delete = xform0 c_tbutton_delete

instance ITButton (Exist TButton) where

instance ITPad (Exist TButton) where

instance ITAttText (Exist TButton) where
  getTextAlign (ETButton x) = getTextAlign x
  getTextAngle (ETButton x) = getTextAngle x
  getTextColor (ETButton x) = getTextColor x
  getTextFont (ETButton x) = getTextFont x
  getTextSize (ETButton x) = getTextSize x
  resetAttText (ETButton x) = resetAttText x
  setTextAttributes (ETButton x) = setTextAttributes x
  setTextAlign (ETButton x) = setTextAlign x
  setTextAngle (ETButton x) = setTextAngle x
  setTextColor (ETButton x) = setTextColor x
  setTextFont (ETButton x) = setTextFont x
  setTextSize (ETButton x) = setTextSize x
  setTextSizePixels (ETButton x) = setTextSizePixels x
instance ITVirtualPad (Exist TButton) where
  cd (ETButton x) = cd x
  getFrame (ETButton x) = getFrame x
  modified (ETButton x) = modified x
  range (ETButton x) = range x
instance ITObject (Exist TButton) where
  draw (ETButton x) = draw x
  findObject (ETButton x) = findObject x
  getName (ETButton x) = getName x
  isA (ETButton x) = isA x
  isFolder (ETButton x) = isFolder x
  isEqual (ETButton x) = isEqual x
  isSortable (ETButton x) = isSortable x
  paint (ETButton x) = paint x
  printObj (ETButton x) = printObj x
  recursiveRemove (ETButton x) = recursiveRemove x
  saveAs (ETButton x) = saveAs x
  useCurrentStyle (ETButton x) = useCurrentStyle x
  write (ETButton x) = write x
instance ITAttLine (Exist TButton) where
  getLineColor (ETButton x) = getLineColor x
  getLineStyle (ETButton x) = getLineStyle x
  getLineWidth (ETButton x) = getLineWidth x
  resetAttLine (ETButton x) = resetAttLine x
  setLineAttributes (ETButton x) = setLineAttributes x
  setLineColor (ETButton x) = setLineColor x
  setLineStyle (ETButton x) = setLineStyle x
  setLineWidth (ETButton x) = setLineWidth x
instance ITAttFill (Exist TButton) where
  setFillColor (ETButton x) = setFillColor x
  setFillStyle (ETButton x) = setFillStyle x
instance ITAttPad (Exist TButton) where
  resetAttPad (ETButton x) = resetAttPad x
  setBottomMargin (ETButton x) = setBottomMargin x
  setLeftMargin (ETButton x) = setLeftMargin x
  setRightMargin (ETButton x) = setRightMargin x
  setTopMargin (ETButton x) = setTopMargin x
  setMargin (ETButton x) = setMargin x
  setAfile (ETButton x) = setAfile x
  setXfile (ETButton x) = setXfile x
  setYfile (ETButton x) = setYfile x
  setAstat (ETButton x) = setAstat x
  setXstat (ETButton x) = setXstat x
  setYstat (ETButton x) = setYstat x
instance ITQObject (Exist TButton) where

instance IDeletable (Exist TButton) where
  delete (ETButton x) = delete x





instance FPtr (Exist TButton) where
  type Raw (Exist TButton) = RawTButton
  get_fptr (ETButton obj) = castForeignPtr (get_fptr obj)
  cast_fptr_to_obj fptr = ETButton (cast_fptr_to_obj (fptr :: ForeignPtr RawTButton) :: TButton)