packages feed

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

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

module Graphics.UI.Qtah.Generated.Gui.QBitmap (
  castQBitmapToQPixmap,
  castQPixmapToQBitmap,
  castQBitmapToQPaintDevice,
  castQPaintDeviceToQBitmap,
  QBitmapValue (..),
  QBitmapConstPtr (..),
  transformed,
  QBitmapPtr (..),
  clear,
  swap,
  aSSIGN,
  fromData,
  fromDataAll,
  fromImage,
  fromImageAll,
  QBitmapConst (..),
  castQBitmapToConst,
  QBitmap (..),
  castQBitmapToNonconst,
  new,
  newWithSize,
  newWithSizeRaw,
  newWithFile,
  newWithFileAndFormat,
  newCopy,
  QBitmapSuper (..),
  QBitmapSuperConst (..),
  ) 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.Flags as QtahFlags
import qualified Graphics.UI.Qtah.Generated.Core.QSize as M134
import qualified Graphics.UI.Qtah.Generated.Core.QString as M142
import qualified Graphics.UI.Qtah.Generated.Core.Types as M190
import {-# SOURCE #-} qualified Graphics.UI.Qtah.Generated.Gui.QImage as M292
import qualified Graphics.UI.Qtah.Generated.Gui.QPaintDevice as M304
import {-# SOURCE #-} qualified Graphics.UI.Qtah.Generated.Gui.QPixmap as M316
import qualified Graphics.UI.Qtah.Generated.Gui.QTransform as M336
import Prelude (($), (.), (=<<), (==), (>>), (>>=))
import qualified Prelude as HoppyP
import qualified Prelude as QtahP

foreign import ccall "genpop__QBitmap_new" new' ::  HoppyP.IO (HoppyF.Ptr QBitmap)
foreign import ccall "genpop__QBitmap_newWithSize" newWithSize' ::  HoppyF.Ptr M134.QSizeConst -> HoppyP.IO (HoppyF.Ptr QBitmap)
foreign import ccall "genpop__QBitmap_newWithSizeRaw" newWithSizeRaw' ::  HoppyFC.CInt -> HoppyFC.CInt -> HoppyP.IO (HoppyF.Ptr QBitmap)
foreign import ccall "genpop__QBitmap_newWithFile" newWithFile' ::  HoppyF.Ptr M142.QStringConst -> HoppyP.IO (HoppyF.Ptr QBitmap)
foreign import ccall "genpop__QBitmap_newWithFileAndFormat" newWithFileAndFormat' ::  HoppyF.Ptr M142.QStringConst -> HoppyF.Ptr HoppyFC.CChar -> HoppyP.IO (HoppyF.Ptr QBitmap)
foreign import ccall "genpop__QBitmap_newCopy" newCopy' ::  HoppyF.Ptr QBitmapConst -> HoppyP.IO (HoppyF.Ptr QBitmap)
foreign import ccall "genpop__QBitmap_clear" clear' ::  HoppyF.Ptr QBitmap -> HoppyP.IO ()
foreign import ccall "genpop__QBitmap_swap" swap' ::  HoppyF.Ptr QBitmap -> HoppyF.Ptr QBitmap -> HoppyP.IO ()
foreign import ccall "genpop__QBitmap_transformed" transformed' ::  HoppyF.Ptr QBitmapConst -> HoppyF.Ptr M336.QTransformConst -> HoppyP.IO (HoppyF.Ptr QBitmapConst)
foreign import ccall "genpop__QBitmap_fromData" fromData' ::  HoppyF.Ptr M134.QSizeConst -> HoppyF.Ptr HoppyFC.CUChar -> HoppyP.IO (HoppyF.Ptr QBitmapConst)
foreign import ccall "genpop__QBitmap_fromDataAll" fromDataAll' ::  HoppyF.Ptr M134.QSizeConst -> HoppyF.Ptr HoppyFC.CUChar -> HoppyFC.CInt -> HoppyP.IO (HoppyF.Ptr QBitmapConst)
foreign import ccall "genpop__QBitmap_fromImage" fromImage' ::  HoppyF.Ptr M292.QImageConst -> HoppyP.IO (HoppyF.Ptr QBitmapConst)
foreign import ccall "genpop__QBitmap_fromImageAll" fromImageAll' ::  HoppyF.Ptr M292.QImageConst -> HoppyFC.CInt -> HoppyP.IO (HoppyF.Ptr QBitmapConst)
foreign import ccall "genpop__QBitmap_ASSIGN" aSSIGN' ::  HoppyF.Ptr QBitmap -> HoppyF.Ptr QBitmapConst -> HoppyP.IO (HoppyF.Ptr QBitmap)
foreign import ccall "gencast__QBitmap__QPixmap" castQBitmapToQPixmap :: HoppyF.Ptr QBitmapConst -> HoppyF.Ptr M316.QPixmapConst
foreign import ccall "gencast__QPixmap__QBitmap" castQPixmapToQBitmap :: HoppyF.Ptr M316.QPixmapConst -> HoppyF.Ptr QBitmapConst
foreign import ccall "gencast__QBitmap__QPaintDevice" castQBitmapToQPaintDevice :: HoppyF.Ptr QBitmapConst -> HoppyF.Ptr M304.QPaintDeviceConst
foreign import ccall "gencast__QPaintDevice__QBitmap" castQPaintDeviceToQBitmap :: HoppyF.Ptr M304.QPaintDeviceConst -> HoppyF.Ptr QBitmapConst
foreign import ccall "gendel__QBitmap" delete'QBitmap :: HoppyF.Ptr QBitmapConst -> HoppyP.IO ()
foreign import ccall "&gendel__QBitmap" deletePtr'QBitmap :: HoppyF.FunPtr (HoppyF.Ptr QBitmapConst -> HoppyP.IO ())

class QBitmapValue a where
  withQBitmapPtr :: a -> (QBitmapConst -> HoppyP.IO b) -> HoppyP.IO b

instance {-# OVERLAPPABLE #-} QBitmapConstPtr a => QBitmapValue a where
  withQBitmapPtr = HoppyP.flip ($) . toQBitmapConst

class (M316.QPixmapConstPtr this) => QBitmapConstPtr this where
  toQBitmapConst :: this -> QBitmapConst

transformed :: (QBitmapValue this, M336.QTransformValue arg'2) => (this) {- ^ this -} -> (arg'2) -> (HoppyP.IO QBitmap)
transformed arg'1 arg'2 =
  withQBitmapPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  M336.withQTransformPtr arg'2 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'2' ->
  (HoppyFHR.decodeAndDelete . QBitmapConst) =<<
  (transformed' arg'1' arg'2')

class (QBitmapConstPtr this, M316.QPixmapPtr this) => QBitmapPtr this where
  toQBitmap :: this -> QBitmap

clear :: (QBitmapPtr this) => (this) {- ^ this -} -> (HoppyP.IO ())
clear arg'1 =
  HoppyFHR.withCppPtr (toQBitmap arg'1) $ \arg'1' ->
  (clear' arg'1')

swap :: (QBitmapPtr this, QBitmapPtr arg'2) => (this) {- ^ this -} -> (arg'2) -> (HoppyP.IO ())
swap arg'1 arg'2 =
  HoppyFHR.withCppPtr (toQBitmap arg'1) $ \arg'1' ->
  HoppyFHR.withCppPtr (toQBitmap arg'2) $ \arg'2' ->
  (swap' arg'1' arg'2')

aSSIGN :: (QBitmapPtr this, QBitmapValue arg'2) => (this) {- ^ this -} -> (arg'2) -> (HoppyP.IO QBitmap)
aSSIGN arg'1 arg'2 =
  HoppyFHR.withCppPtr (toQBitmap arg'1) $ \arg'1' ->
  withQBitmapPtr arg'2 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'2' ->
  HoppyP.fmap QBitmap
  (aSSIGN' arg'1' arg'2')

fromData :: (M134.QSizeValue arg'1) => (arg'1) -> (HoppyF.Ptr HoppyFC.CUChar) -> (HoppyP.IO QBitmap)
fromData arg'1 arg'2 =
  M134.withQSizePtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  let arg'2' = arg'2 in
  (HoppyFHR.decodeAndDelete . QBitmapConst) =<<
  (fromData' arg'1' arg'2')

fromDataAll :: (M134.QSizeValue arg'1) => (arg'1) -> (HoppyF.Ptr HoppyFC.CUChar) -> (M292.QImageFormat) -> (HoppyP.IO QBitmap)
fromDataAll arg'1 arg'2 arg'3 =
  M134.withQSizePtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  let arg'2' = arg'2 in
  (
    HoppyP.return . HoppyFHR.fromCppEnum
  ) arg'3 >>= \arg'3' ->
  (HoppyFHR.decodeAndDelete . QBitmapConst) =<<
  (fromDataAll' arg'1' arg'2' arg'3')

fromImage :: (M292.QImageValue arg'1) => (arg'1) -> (HoppyP.IO QBitmap)
fromImage arg'1 =
  M292.withQImagePtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  (HoppyFHR.decodeAndDelete . QBitmapConst) =<<
  (fromImage' arg'1')

fromImageAll :: (M292.QImageValue arg'1, M190.IsQtImageConversionFlags arg'2) => (arg'1) -> (arg'2) -> (HoppyP.IO QBitmap)
fromImageAll arg'1 arg'2 =
  M292.withQImagePtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  (
    QtahP.return . QtahFlags.flagsToNum . M190.toQtImageConversionFlags
  ) arg'2 >>= \arg'2' ->
  (HoppyFHR.decodeAndDelete . QBitmapConst) =<<
  (fromImageAll' arg'1' arg'2')

data QBitmapConst =
    QBitmapConst (HoppyF.Ptr QBitmapConst)
  | QBitmapConstGc (HoppyF.ForeignPtr ()) (HoppyF.Ptr QBitmapConst)
  deriving (HoppyP.Show)

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

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

castQBitmapToConst :: QBitmap -> QBitmapConst
castQBitmapToConst (QBitmap ptr') = QBitmapConst $ HoppyF.castPtr ptr'
castQBitmapToConst (QBitmapGc fptr' ptr') = QBitmapConstGc fptr' $ HoppyF.castPtr ptr'

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

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

instance HoppyFHR.Copyable QBitmapConst QBitmap where copy = newCopy

instance QBitmapConstPtr QBitmapConst where
  toQBitmapConst = HoppyP.id

instance M316.QPixmapConstPtr QBitmapConst where
  toQPixmapConst (QBitmapConst ptr') = M316.QPixmapConst $ castQBitmapToQPixmap ptr'
  toQPixmapConst (QBitmapConstGc fptr' ptr') = M316.QPixmapConstGc fptr' $ castQBitmapToQPixmap ptr'

instance M304.QPaintDeviceConstPtr QBitmapConst where
  toQPaintDeviceConst (QBitmapConst ptr') = M304.QPaintDeviceConst $ castQBitmapToQPaintDevice ptr'
  toQPaintDeviceConst (QBitmapConstGc fptr' ptr') = M304.QPaintDeviceConstGc fptr' $ castQBitmapToQPaintDevice ptr'

data QBitmap =
    QBitmap (HoppyF.Ptr QBitmap)
  | QBitmapGc (HoppyF.ForeignPtr ()) (HoppyF.Ptr QBitmap)
  deriving (HoppyP.Show)

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

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

castQBitmapToNonconst :: QBitmapConst -> QBitmap
castQBitmapToNonconst (QBitmapConst ptr') = QBitmap $ HoppyF.castPtr ptr'
castQBitmapToNonconst (QBitmapConstGc fptr' ptr') = QBitmapGc fptr' $ HoppyF.castPtr ptr'

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

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

instance HoppyFHR.Copyable QBitmap QBitmap where copy = newCopy

instance QBitmapConstPtr QBitmap where
  toQBitmapConst (QBitmap ptr') = QBitmapConst $ (HoppyF.castPtr :: HoppyF.Ptr QBitmap -> HoppyF.Ptr QBitmapConst) ptr'
  toQBitmapConst (QBitmapGc fptr' ptr') = QBitmapConstGc fptr' $ (HoppyF.castPtr :: HoppyF.Ptr QBitmap -> HoppyF.Ptr QBitmapConst) ptr'

instance QBitmapPtr QBitmap where
  toQBitmap = HoppyP.id

instance M316.QPixmapConstPtr QBitmap where
  toQPixmapConst (QBitmap ptr') = M316.QPixmapConst $ castQBitmapToQPixmap $ (HoppyF.castPtr :: HoppyF.Ptr QBitmap -> HoppyF.Ptr QBitmapConst) ptr'
  toQPixmapConst (QBitmapGc fptr' ptr') = M316.QPixmapConstGc fptr' $ castQBitmapToQPixmap $ (HoppyF.castPtr :: HoppyF.Ptr QBitmap -> HoppyF.Ptr QBitmapConst) ptr'

instance M316.QPixmapPtr QBitmap where
  toQPixmap (QBitmap ptr') = M316.QPixmap $ (HoppyF.castPtr :: HoppyF.Ptr M316.QPixmapConst -> HoppyF.Ptr M316.QPixmap) $ castQBitmapToQPixmap $ (HoppyF.castPtr :: HoppyF.Ptr QBitmap -> HoppyF.Ptr QBitmapConst) ptr'
  toQPixmap (QBitmapGc fptr' ptr') = M316.QPixmapGc fptr' $ (HoppyF.castPtr :: HoppyF.Ptr M316.QPixmapConst -> HoppyF.Ptr M316.QPixmap) $ castQBitmapToQPixmap $ (HoppyF.castPtr :: HoppyF.Ptr QBitmap -> HoppyF.Ptr QBitmapConst) ptr'

instance M304.QPaintDeviceConstPtr QBitmap where
  toQPaintDeviceConst (QBitmap ptr') = M304.QPaintDeviceConst $ castQBitmapToQPaintDevice $ (HoppyF.castPtr :: HoppyF.Ptr QBitmap -> HoppyF.Ptr QBitmapConst) ptr'
  toQPaintDeviceConst (QBitmapGc fptr' ptr') = M304.QPaintDeviceConstGc fptr' $ castQBitmapToQPaintDevice $ (HoppyF.castPtr :: HoppyF.Ptr QBitmap -> HoppyF.Ptr QBitmapConst) ptr'

instance M304.QPaintDevicePtr QBitmap where
  toQPaintDevice (QBitmap ptr') = M304.QPaintDevice $ (HoppyF.castPtr :: HoppyF.Ptr M304.QPaintDeviceConst -> HoppyF.Ptr M304.QPaintDevice) $ castQBitmapToQPaintDevice $ (HoppyF.castPtr :: HoppyF.Ptr QBitmap -> HoppyF.Ptr QBitmapConst) ptr'
  toQPaintDevice (QBitmapGc fptr' ptr') = M304.QPaintDeviceGc fptr' $ (HoppyF.castPtr :: HoppyF.Ptr M304.QPaintDeviceConst -> HoppyF.Ptr M304.QPaintDevice) $ castQBitmapToQPaintDevice $ (HoppyF.castPtr :: HoppyF.Ptr QBitmap -> HoppyF.Ptr QBitmapConst) ptr'

new :: (HoppyP.IO QBitmap)
new =
  HoppyP.fmap QBitmap
  (new')

newWithSize :: (M134.QSizeValue arg'1) => (arg'1) -> (HoppyP.IO QBitmap)
newWithSize arg'1 =
  M134.withQSizePtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  HoppyP.fmap QBitmap
  (newWithSize' arg'1')

newWithSizeRaw :: (HoppyP.Int) -> (HoppyP.Int) -> (HoppyP.IO QBitmap)
newWithSizeRaw arg'1 arg'2 =
  (
    HoppyP.return . HoppyFHR.coerceIntegral
  ) arg'1 >>= \arg'1' ->
  (
    HoppyP.return . HoppyFHR.coerceIntegral
  ) arg'2 >>= \arg'2' ->
  HoppyP.fmap QBitmap
  (newWithSizeRaw' arg'1' arg'2')

newWithFile :: (M142.QStringValue arg'1) => (arg'1) -> (HoppyP.IO QBitmap)
newWithFile arg'1 =
  M142.withQStringPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  HoppyP.fmap QBitmap
  (newWithFile' arg'1')

newWithFileAndFormat :: (M142.QStringValue arg'1) => (arg'1) -> (HoppyF.Ptr HoppyFC.CChar) -> (HoppyP.IO QBitmap)
newWithFileAndFormat arg'1 arg'2 =
  M142.withQStringPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  let arg'2' = arg'2 in
  HoppyP.fmap QBitmap
  (newWithFileAndFormat' arg'1' arg'2')

newCopy :: (QBitmapValue arg'1) => (arg'1) -> (HoppyP.IO QBitmap)
newCopy arg'1 =
  withQBitmapPtr arg'1 $ HoppyP.flip HoppyFHR.withCppPtr $ \arg'1' ->
  HoppyP.fmap QBitmap
  (newCopy' arg'1')

class QBitmapSuper a where
  downToQBitmap :: a -> QBitmap

instance QBitmapSuper M316.QPixmap where
  downToQBitmap = castQBitmapToNonconst . cast' . M316.castQPixmapToConst
    where
      cast' (M316.QPixmapConst ptr') = QBitmapConst $ castQPixmapToQBitmap ptr'
      cast' (M316.QPixmapConstGc fptr' ptr') = QBitmapConstGc fptr' $ castQPixmapToQBitmap ptr'
instance QBitmapSuper M304.QPaintDevice where
  downToQBitmap = castQBitmapToNonconst . cast' . M304.castQPaintDeviceToConst
    where
      cast' (M304.QPaintDeviceConst ptr') = QBitmapConst $ castQPaintDeviceToQBitmap ptr'
      cast' (M304.QPaintDeviceConstGc fptr' ptr') = QBitmapConstGc fptr' $ castQPaintDeviceToQBitmap ptr'

class QBitmapSuperConst a where
  downToQBitmapConst :: a -> QBitmapConst

instance QBitmapSuperConst M316.QPixmapConst where
  downToQBitmapConst = cast'
    where
      cast' (M316.QPixmapConst ptr') = QBitmapConst $ castQPixmapToQBitmap ptr'
      cast' (M316.QPixmapConstGc fptr' ptr') = QBitmapConstGc fptr' $ castQPixmapToQBitmap ptr'
instance QBitmapSuperConst M304.QPaintDeviceConst where
  downToQBitmapConst = cast'
    where
      cast' (M304.QPaintDeviceConst ptr') = QBitmapConst $ castQPaintDeviceToQBitmap ptr'
      cast' (M304.QPaintDeviceConstGc fptr' ptr') = QBitmapConstGc fptr' $ castQPaintDeviceToQBitmap ptr'

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

instance QBitmapValue a => HoppyFHR.Assignable QBitmap a where
  assign x' y' = aSSIGN x' y' >> HoppyP.return ()

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

instance HoppyFHR.Decodable QBitmap (QBitmap) where
  decode = HoppyFHR.decode . toQBitmapConst

instance HoppyFHR.Decodable QBitmapConst (QBitmap) where
  decode =
    HoppyFHR.copy >=> HoppyFHR.toGc