packages feed

qtah-qt5-0.8.0: src/Graphics/UI/Qtah/Generated/Gui/QGradient.hs

{-# LANGUAGE FlexibleContexts, FlexibleInstances, ForeignFunctionInterface, MonoLocalBinds, MultiParamTypeClasses, ScopedTypeVariables, TypeSynonymInstances, UndecidableInstances #-}
---------- GENERATED FILE, EDITS WILL BE LOST ----------

module Graphics.UI.Qtah.Generated.Gui.QGradient (
  QGradientValue (..),
  QGradientConstPtr (..),
  coordinateMode,
  spread,
  getType,
  eQ,
  nE,
  QGradientPtr (..),
  setCoordinateMode,
  setColorAt,
  setSpread,
  QGradientConst (..),
  castQGradientToConst,
  QGradient (..),
  castQGradientToNonconst,
  new,
  newCopy,
  QGradientSuper (..),
  QGradientSuperConst (..),
  QGradientCoordinateMode (..),
  QGradientPreset (..),
  QGradientSpread (..),
  QGradientType (..),
  ) where

import Control.Monad ((>=>))
import qualified Foreign as HoppyF
import qualified Foreign.C as HoppyFC
import qualified Foreign.Hoppy.Runtime as HoppyFHR
import qualified Graphics.UI.Qtah.Generated.Gui.QColor as M252
import Prelude (($), (.), (/=), (=<<), (==), (>>=))
import qualified Prelude as HoppyP

foreign import ccall "genpop__QGradient_new" new' ::  HoppyFC.CInt -> HoppyP.IO (HoppyF.Ptr QGradient)
foreign import ccall "genpop__QGradient_newCopy" newCopy' ::  HoppyF.Ptr QGradientConst -> HoppyP.IO (HoppyF.Ptr QGradient)
foreign import ccall "genpop__QGradient_coordinateMode" coordinateMode' ::  HoppyF.Ptr QGradientConst -> HoppyP.IO HoppyFC.CInt
foreign import ccall "genpop__QGradient_setCoordinateMode" setCoordinateMode' ::  HoppyF.Ptr QGradient -> HoppyFC.CInt -> HoppyP.IO ()
foreign import ccall "genpop__QGradient_setColorAt" setColorAt' ::  HoppyF.Ptr QGradient -> HoppyFC.CDouble -> HoppyF.Ptr M252.QColorConst -> HoppyP.IO ()
foreign import ccall "genpop__QGradient_spread" spread' ::  HoppyF.Ptr QGradientConst -> HoppyP.IO HoppyFC.CInt
foreign import ccall "genpop__QGradient_setSpread" setSpread' ::  HoppyF.Ptr QGradient -> HoppyFC.CInt -> HoppyP.IO ()
foreign import ccall "genpop__QGradient_getType" getType' ::  HoppyF.Ptr QGradientConst -> HoppyP.IO HoppyFC.CInt
foreign import ccall "genpop__QGradient_EQ" eQ' ::  HoppyF.Ptr QGradientConst -> HoppyF.Ptr QGradientConst -> HoppyP.IO HoppyFC.CBool
foreign import ccall "genpop__QGradient_NE" nE' ::  HoppyF.Ptr QGradientConst -> HoppyF.Ptr QGradientConst -> HoppyP.IO HoppyFC.CBool
foreign import ccall "gendel__QGradient" delete'QGradient :: HoppyF.Ptr QGradientConst -> HoppyP.IO ()
foreign import ccall "&gendel__QGradient" deletePtr'QGradient :: HoppyF.FunPtr (HoppyF.Ptr QGradientConst -> HoppyP.IO ())

class QGradientValue a where
  withQGradientPtr :: a -> (QGradientConst -> HoppyP.IO b) -> HoppyP.IO b

instance {-# OVERLAPPABLE #-} QGradientConstPtr a => QGradientValue a where
  withQGradientPtr = HoppyP.flip ($) . toQGradientConst

class (HoppyFHR.CppPtr this) => QGradientConstPtr this where
  toQGradientConst :: this -> QGradientConst

coordinateMode :: (QGradientValue this) => (this) {- ^ this -} -> (HoppyP.IO QGradientCoordinateMode)
coordinateMode arg'1 =
  withQGradientPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  (
    HoppyP.return . HoppyFHR.toCppEnum
  ) =<<
  (coordinateMode' arg'1')

spread :: (QGradientValue this) => (this) {- ^ this -} -> (HoppyP.IO QGradientSpread)
spread arg'1 =
  withQGradientPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  (
    HoppyP.return . HoppyFHR.toCppEnum
  ) =<<
  (spread' arg'1')

getType :: (QGradientValue this) => (this) {- ^ this -} -> (HoppyP.IO QGradientType)
getType arg'1 =
  withQGradientPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  (
    HoppyP.return . HoppyFHR.toCppEnum
  ) =<<
  (getType' arg'1')

eQ :: (QGradientValue this, QGradientValue arg'2) => (this) {- ^ this -} -> (arg'2) -> (HoppyP.IO HoppyP.Bool)
eQ arg'1 arg'2 =
  withQGradientPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  withQGradientPtr arg'2 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'2' ->
  (
    (HoppyP.return . (/= 0))
  ) =<<
  (eQ' arg'1' arg'2')

nE :: (QGradientValue this, QGradientValue arg'2) => (this) {- ^ this -} -> (arg'2) -> (HoppyP.IO HoppyP.Bool)
nE arg'1 arg'2 =
  withQGradientPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  withQGradientPtr arg'2 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'2' ->
  (
    (HoppyP.return . (/= 0))
  ) =<<
  (nE' arg'1' arg'2')

class (QGradientConstPtr this) => QGradientPtr this where
  toQGradient :: this -> QGradient

setCoordinateMode :: (QGradientPtr this) => (this) {- ^ this -} -> (QGradientCoordinateMode) -> (HoppyP.IO ())
setCoordinateMode arg'1 arg'2 =
  HoppyFHR.withCppPtr (toQGradient arg'1) $ \arg'1' ->
  (
    HoppyP.return . HoppyFHR.fromCppEnum
  ) arg'2 >>= \arg'2' ->
  (setCoordinateMode' arg'1' arg'2')

setColorAt :: (QGradientPtr this, M252.QColorValue arg'3) => (this) {- ^ this -} -> (HoppyP.Double) -> (arg'3) -> (HoppyP.IO ())
setColorAt arg'1 arg'2 arg'3 =
  HoppyFHR.withCppPtr (toQGradient arg'1) $ \arg'1' ->
  (
    HoppyP.return . HoppyP.realToFrac
  ) arg'2 >>= \arg'2' ->
  M252.withQColorPtr arg'3 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'3' ->
  (setColorAt' arg'1' arg'2' arg'3')

setSpread :: (QGradientPtr this) => (this) {- ^ this -} -> (QGradientSpread) -> (HoppyP.IO ())
setSpread arg'1 arg'2 =
  HoppyFHR.withCppPtr (toQGradient arg'1) $ \arg'1' ->
  (
    HoppyP.return . HoppyFHR.fromCppEnum
  ) arg'2 >>= \arg'2' ->
  (setSpread' arg'1' arg'2')

data QGradientConst =
    QGradientConst (HoppyF.Ptr QGradientConst)
  | QGradientConstGc (HoppyF.ForeignPtr ()) (HoppyF.Ptr QGradientConst)
  deriving (HoppyP.Show)

instance HoppyP.Eq QGradientConst where
  x == y = HoppyFHR.toPtr x == HoppyFHR.toPtr y

instance HoppyP.Ord QGradientConst where
  compare x y = HoppyP.compare (HoppyFHR.toPtr x) (HoppyFHR.toPtr y)

castQGradientToConst :: QGradient -> QGradientConst
castQGradientToConst (QGradient ptr') = QGradientConst $ HoppyF.castPtr ptr'
castQGradientToConst (QGradientGc fptr' ptr') = QGradientConstGc fptr' $ HoppyF.castPtr ptr'

instance HoppyFHR.CppPtr QGradientConst where
  nullptr = QGradientConst HoppyF.nullPtr
  
  withCppPtr (QGradientConst ptr') f' = f' ptr'
  withCppPtr (QGradientConstGc fptr' ptr') f' = HoppyF.withForeignPtr fptr' $ \_ -> f' ptr'
  
  toPtr (QGradientConst ptr') = ptr'
  toPtr (QGradientConstGc _ ptr') = ptr'
  
  touchCppPtr (QGradientConst _) = HoppyP.return ()
  touchCppPtr (QGradientConstGc fptr' _) = HoppyF.touchForeignPtr fptr'

instance HoppyFHR.Deletable QGradientConst where
  delete (QGradientConst ptr') = delete'QGradient ptr'
  delete (QGradientConstGc _ _) = HoppyP.fail $ HoppyP.concat ["Deletable.delete: Asked to delete a GC-managed ", "QGradientConst", " object."]
  
  toGc this'@(QGradientConst ptr') = if ptr' == HoppyF.nullPtr then HoppyP.return this' else HoppyP.fmap (HoppyP.flip QGradientConstGc ptr') $ HoppyF.newForeignPtr (HoppyF.castFunPtr deletePtr'QGradient :: HoppyF.FunPtr (HoppyF.Ptr () -> HoppyP.IO ())) (HoppyF.castPtr ptr' :: HoppyF.Ptr ())
  toGc this'@(QGradientConstGc {}) = HoppyP.return this'

instance HoppyFHR.Copyable QGradientConst QGradient where copy = newCopy

instance QGradientConstPtr QGradientConst where
  toQGradientConst = HoppyP.id

data QGradient =
    QGradient (HoppyF.Ptr QGradient)
  | QGradientGc (HoppyF.ForeignPtr ()) (HoppyF.Ptr QGradient)
  deriving (HoppyP.Show)

instance HoppyP.Eq QGradient where
  x == y = HoppyFHR.toPtr x == HoppyFHR.toPtr y

instance HoppyP.Ord QGradient where
  compare x y = HoppyP.compare (HoppyFHR.toPtr x) (HoppyFHR.toPtr y)

castQGradientToNonconst :: QGradientConst -> QGradient
castQGradientToNonconst (QGradientConst ptr') = QGradient $ HoppyF.castPtr ptr'
castQGradientToNonconst (QGradientConstGc fptr' ptr') = QGradientGc fptr' $ HoppyF.castPtr ptr'

instance HoppyFHR.CppPtr QGradient where
  nullptr = QGradient HoppyF.nullPtr
  
  withCppPtr (QGradient ptr') f' = f' ptr'
  withCppPtr (QGradientGc fptr' ptr') f' = HoppyF.withForeignPtr fptr' $ \_ -> f' ptr'
  
  toPtr (QGradient ptr') = ptr'
  toPtr (QGradientGc _ ptr') = ptr'
  
  touchCppPtr (QGradient _) = HoppyP.return ()
  touchCppPtr (QGradientGc fptr' _) = HoppyF.touchForeignPtr fptr'

instance HoppyFHR.Deletable QGradient where
  delete (QGradient ptr') = delete'QGradient $ (HoppyF.castPtr ptr' :: HoppyF.Ptr QGradientConst)
  delete (QGradientGc _ _) = HoppyP.fail $ HoppyP.concat ["Deletable.delete: Asked to delete a GC-managed ", "QGradient", " object."]
  
  toGc this'@(QGradient ptr') = if ptr' == HoppyF.nullPtr then HoppyP.return this' else HoppyP.fmap (HoppyP.flip QGradientGc ptr') $ HoppyF.newForeignPtr (HoppyF.castFunPtr deletePtr'QGradient :: HoppyF.FunPtr (HoppyF.Ptr () -> HoppyP.IO ())) (HoppyF.castPtr ptr' :: HoppyF.Ptr ())
  toGc this'@(QGradientGc {}) = HoppyP.return this'

instance HoppyFHR.Copyable QGradient QGradient where copy = newCopy

instance QGradientConstPtr QGradient where
  toQGradientConst (QGradient ptr') = QGradientConst $ (HoppyF.castPtr :: HoppyF.Ptr QGradient -> HoppyF.Ptr QGradientConst) ptr'
  toQGradientConst (QGradientGc fptr' ptr') = QGradientConstGc fptr' $ (HoppyF.castPtr :: HoppyF.Ptr QGradient -> HoppyF.Ptr QGradientConst) ptr'

instance QGradientPtr QGradient where
  toQGradient = HoppyP.id

new :: (QGradientPreset) -> (HoppyP.IO QGradient)
new arg'1 =
  (
    HoppyP.return . HoppyFHR.fromCppEnum
  ) arg'1 >>= \arg'1' ->
  HoppyP.fmap QGradient
  (new' arg'1')

newCopy :: (QGradientValue arg'1) => (arg'1) -> (HoppyP.IO QGradient)
newCopy arg'1 =
  withQGradientPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  HoppyP.fmap QGradient
  (newCopy' arg'1')

class QGradientSuper a where
  downToQGradient :: a -> QGradient


class QGradientSuperConst a where
  downToQGradientConst :: a -> QGradientConst


instance HoppyFHR.Assignable (HoppyF.Ptr (HoppyF.Ptr QGradient)) QGradient where
  assign ptr' value' = HoppyF.poke ptr' $ HoppyFHR.toPtr value'

instance HoppyFHR.Decodable (HoppyF.Ptr (HoppyF.Ptr QGradient)) QGradient where
  decode = HoppyP.fmap QGradient . HoppyF.peek

instance HoppyFHR.Decodable QGradient (QGradient) where
  decode = HoppyFHR.decode . toQGradientConst

instance HoppyFHR.Decodable QGradientConst (QGradient) where
  decode =
    HoppyFHR.copy >=> HoppyFHR.toGc

data QGradientCoordinateMode =
  LogicalMode
  | StretchToDeviceMode
  | ObjectBoundingMode
  | ObjectMode
  | UnknownQGradientCoordinateMode (HoppyFC.CInt)
  deriving (HoppyP.Show)

instance HoppyFHR.CppEnum (HoppyFC.CInt) QGradientCoordinateMode where
  fromCppEnum LogicalMode = 0
  fromCppEnum StretchToDeviceMode = 1
  fromCppEnum ObjectBoundingMode = 2
  fromCppEnum ObjectMode = 3
  fromCppEnum (UnknownQGradientCoordinateMode n) = n
  
  toCppEnum (0) = LogicalMode
  toCppEnum (1) = StretchToDeviceMode
  toCppEnum (2) = ObjectBoundingMode
  toCppEnum (3) = ObjectMode
  toCppEnum n = UnknownQGradientCoordinateMode n

instance HoppyP.Eq QGradientCoordinateMode where
  x == y = HoppyFHR.fromCppEnum x == HoppyFHR.fromCppEnum y

instance HoppyP.Ord QGradientCoordinateMode where
  compare x y = HoppyP.compare (HoppyFHR.fromCppEnum x) (HoppyFHR.fromCppEnum y)

data QGradientPreset =
  WarmFlame
  | UnknownQGradientPreset (HoppyFC.CInt)
  deriving (HoppyP.Show)

instance HoppyFHR.CppEnum (HoppyFC.CInt) QGradientPreset where
  fromCppEnum WarmFlame = 1
  fromCppEnum (UnknownQGradientPreset n) = n
  
  toCppEnum (1) = WarmFlame
  toCppEnum n = UnknownQGradientPreset n

instance HoppyP.Eq QGradientPreset where
  x == y = HoppyFHR.fromCppEnum x == HoppyFHR.fromCppEnum y

instance HoppyP.Ord QGradientPreset where
  compare x y = HoppyP.compare (HoppyFHR.fromCppEnum x) (HoppyFHR.fromCppEnum y)

data QGradientSpread =
  PadSpread
  | ReflectSpread
  | RepeatSpread
  | UnknownQGradientSpread (HoppyFC.CInt)
  deriving (HoppyP.Show)

instance HoppyFHR.CppEnum (HoppyFC.CInt) QGradientSpread where
  fromCppEnum PadSpread = 0
  fromCppEnum ReflectSpread = 1
  fromCppEnum RepeatSpread = 2
  fromCppEnum (UnknownQGradientSpread n) = n
  
  toCppEnum (0) = PadSpread
  toCppEnum (1) = ReflectSpread
  toCppEnum (2) = RepeatSpread
  toCppEnum n = UnknownQGradientSpread n

instance HoppyP.Eq QGradientSpread where
  x == y = HoppyFHR.fromCppEnum x == HoppyFHR.fromCppEnum y

instance HoppyP.Ord QGradientSpread where
  compare x y = HoppyP.compare (HoppyFHR.fromCppEnum x) (HoppyFHR.fromCppEnum y)

data QGradientType =
  LinearGradient
  | RadialGradient
  | ConicalGradient
  | NoGradient
  | UnknownQGradientType (HoppyFC.CInt)
  deriving (HoppyP.Show)

instance HoppyFHR.CppEnum (HoppyFC.CInt) QGradientType where
  fromCppEnum LinearGradient = 0
  fromCppEnum RadialGradient = 1
  fromCppEnum ConicalGradient = 2
  fromCppEnum NoGradient = 3
  fromCppEnum (UnknownQGradientType n) = n
  
  toCppEnum (0) = LinearGradient
  toCppEnum (1) = RadialGradient
  toCppEnum (2) = ConicalGradient
  toCppEnum (3) = NoGradient
  toCppEnum n = UnknownQGradientType n

instance HoppyP.Eq QGradientType where
  x == y = HoppyFHR.fromCppEnum x == HoppyFHR.fromCppEnum y

instance HoppyP.Ord QGradientType where
  compare x y = HoppyP.compare (HoppyFHR.fromCppEnum x) (HoppyFHR.fromCppEnum y)