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

module HROOT.Class.TAttAxis.Implementation where


import HROOT.TypeCast

import HROOT.Class.TAttAxis.RawType
import HROOT.Class.TAttAxis.FFI
import HROOT.Class.TAttAxis.Interface
import HROOT.Class.TAttAxis.Cast

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 ITAttAxis TAttAxis where
  getNdivisions = xform0 c_tattaxis_getndivisions
  getAxisColor = xform0 c_tattaxis_getaxiscolor
  getLabelColor = xform0 c_tattaxis_getlabelcolor
  getLabelFont = xform0 c_tattaxis_getlabelfont
  getLabelOffset = xform0 c_tattaxis_getlabeloffset
  getLabelSize = xform0 c_tattaxis_getlabelsize
  getTitleOffset = xform0 c_tattaxis_gettitleoffset
  getTitleSize = xform0 c_tattaxis_gettitlesize
  getTickLength = xform0 c_tattaxis_getticklength
  getTitleFont = xform0 c_tattaxis_gettitlefont
  setNdivisions = xform2 c_tattaxis_setndivisions
  setAxisColor = xform1 c_tattaxis_setaxiscolor
  setLabelColor = xform1 c_tattaxis_setlabelcolor
  setLabelFont = xform1 c_tattaxis_setlabelfont
  setLabelOffset = xform1 c_tattaxis_setlabeloffset
  setLabelSize = xform1 c_tattaxis_setlabelsize
  setTickLength = xform1 c_tattaxis_setticklength
  setTitleOffset = xform1 c_tattaxis_settitleoffset
  setTitleSize = xform1 c_tattaxis_settitlesize
  setTitleColor = xform1 c_tattaxis_settitlecolor
  setTitleFont = xform1 c_tattaxis_settitlefont
instance IDeletable TAttAxis where
  delete = xform0 c_tattaxis_delete

instance ITAttAxis (Exist TAttAxis) where
  getNdivisions (ETAttAxis x) = getNdivisions x
  getAxisColor (ETAttAxis x) = getAxisColor x
  getLabelColor (ETAttAxis x) = getLabelColor x
  getLabelFont (ETAttAxis x) = getLabelFont x
  getLabelOffset (ETAttAxis x) = getLabelOffset x
  getLabelSize (ETAttAxis x) = getLabelSize x
  getTitleOffset (ETAttAxis x) = getTitleOffset x
  getTitleSize (ETAttAxis x) = getTitleSize x
  getTickLength (ETAttAxis x) = getTickLength x
  getTitleFont (ETAttAxis x) = getTitleFont x
  setNdivisions (ETAttAxis x) = setNdivisions x
  setAxisColor (ETAttAxis x) = setAxisColor x
  setLabelColor (ETAttAxis x) = setLabelColor x
  setLabelFont (ETAttAxis x) = setLabelFont x
  setLabelOffset (ETAttAxis x) = setLabelOffset x
  setLabelSize (ETAttAxis x) = setLabelSize x
  setTickLength (ETAttAxis x) = setTickLength x
  setTitleOffset (ETAttAxis x) = setTitleOffset x
  setTitleSize (ETAttAxis x) = setTitleSize x
  setTitleColor (ETAttAxis x) = setTitleColor x
  setTitleFont (ETAttAxis x) = setTitleFont x
instance IDeletable (Exist TAttAxis) where
  delete (ETAttAxis x) = delete x


newTAttAxis :: IO TAttAxis
newTAttAxis = xformnull c_tattaxis_newtattaxis





instance FPtr (Exist TAttAxis) where
  type Raw (Exist TAttAxis) = RawTAttAxis
  get_fptr (ETAttAxis obj) = castForeignPtr (get_fptr obj)
  cast_fptr_to_obj fptr = ETAttAxis (cast_fptr_to_obj (fptr :: ForeignPtr RawTAttAxis) :: TAttAxis)