{-# LINE 2 "./Graphics/UI/Gtk/Selectors/HSV.chs" #-}
module Graphics.UI.Gtk.Selectors.HSV (
HSV,
HSVClass,
castToHSV,
toHSV,
hsvNew,
hsvIsAdjusting,
hsvToRgb,
rgbToHsv,
hsvColor,
hsvMetrics,
hsvChanged,
hsvMove,
) where
import Control.Monad (liftM)
import System.Glib.FFI
import System.Glib.Attributes
import Graphics.UI.Gtk.General.Enums (DirectionType (..))
import Graphics.UI.Gtk.Abstract.Object (makeNewObject)
import Graphics.UI.Gtk.Signals
{-# LINE 81 "./Graphics/UI/Gtk/Selectors/HSV.chs" #-}
import Graphics.UI.Gtk.Types
{-# LINE 82 "./Graphics/UI/Gtk/Selectors/HSV.chs" #-}
{-# LINE 84 "./Graphics/UI/Gtk/Selectors/HSV.chs" #-}
hsvNew :: IO HSV
hsvNew :: IO HSV
hsvNew =
(ForeignPtr HSV -> HSV, FinalizerPtr HSV) -> IO (Ptr HSV) -> IO HSV
forall obj.
GObjectClass obj =>
(ForeignPtr obj -> obj, FinalizerPtr obj) -> IO (Ptr obj) -> IO obj
makeNewObject (ForeignPtr HSV -> HSV, FinalizerPtr HSV)
forall {a}. (ForeignPtr HSV -> HSV, FinalizerPtr a)
mkHSV (IO (Ptr HSV) -> IO HSV) -> IO (Ptr HSV) -> IO HSV
forall a b. (a -> b) -> a -> b
$
(Ptr Widget -> Ptr HSV) -> IO (Ptr Widget) -> IO (Ptr HSV)
forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
liftM (Ptr Widget -> Ptr HSV
forall a b. Ptr a -> Ptr b
castPtr :: Ptr Widget -> Ptr HSV) (IO (Ptr Widget) -> IO (Ptr HSV))
-> IO (Ptr Widget) -> IO (Ptr HSV)
forall a b. (a -> b) -> a -> b
$
IO (Ptr Widget)
gtk_hsv_new
{-# LINE 98 "./Graphics/UI/Gtk/Selectors/HSV.chs" #-}
hsvSetColor :: HSVClass self => self
-> (Double, Double, Double)
-> IO ()
hsvSetColor :: forall self.
HSVClass self =>
self -> (Double, Double, Double) -> IO ()
hsvSetColor self
self (Double
h, Double
s, Double
v) =
(\(HSV ForeignPtr HSV
arg1) CDouble
arg2 CDouble
arg3 CDouble
arg4 -> ForeignPtr HSV -> (Ptr HSV -> IO ()) -> IO ()
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr ForeignPtr HSV
arg1 ((Ptr HSV -> IO ()) -> IO ()) -> (Ptr HSV -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr HSV
argPtr1 ->Ptr HSV -> CDouble -> CDouble -> CDouble -> IO ()
gtk_hsv_set_color Ptr HSV
argPtr1 CDouble
arg2 CDouble
arg3 CDouble
arg4)
{-# LINE 116 "./Graphics/UI/Gtk/Selectors/HSV.chs" #-}
(toHSV self)
(Double -> CDouble
forall a b. (Real a, Fractional b) => a -> b
realToFrac Double
h)
(Double -> CDouble
forall a b. (Real a, Fractional b) => a -> b
realToFrac Double
s)
(Double -> CDouble
forall a b. (Real a, Fractional b) => a -> b
realToFrac Double
v)
hsvGetColor :: HSVClass self => self
-> IO (Double, Double, Double)
hsvGetColor :: forall self. HSVClass self => self -> IO (Double, Double, Double)
hsvGetColor self
self =
(Ptr CDouble -> IO (Double, Double, Double))
-> IO (Double, Double, Double)
forall a b. Storable a => (Ptr a -> IO b) -> IO b
alloca ((Ptr CDouble -> IO (Double, Double, Double))
-> IO (Double, Double, Double))
-> (Ptr CDouble -> IO (Double, Double, Double))
-> IO (Double, Double, Double)
forall a b. (a -> b) -> a -> b
$ \Ptr CDouble
hPtr ->
(Ptr CDouble -> IO (Double, Double, Double))
-> IO (Double, Double, Double)
forall a b. Storable a => (Ptr a -> IO b) -> IO b
alloca ((Ptr CDouble -> IO (Double, Double, Double))
-> IO (Double, Double, Double))
-> (Ptr CDouble -> IO (Double, Double, Double))
-> IO (Double, Double, Double)
forall a b. (a -> b) -> a -> b
$ \Ptr CDouble
sPtr ->
(Ptr CDouble -> IO (Double, Double, Double))
-> IO (Double, Double, Double)
forall a b. Storable a => (Ptr a -> IO b) -> IO b
alloca ((Ptr CDouble -> IO (Double, Double, Double))
-> IO (Double, Double, Double))
-> (Ptr CDouble -> IO (Double, Double, Double))
-> IO (Double, Double, Double)
forall a b. (a -> b) -> a -> b
$ \Ptr CDouble
vPtr -> do
(\(HSV ForeignPtr HSV
arg1) Ptr CDouble
arg2 Ptr CDouble
arg3 Ptr CDouble
arg4 -> ForeignPtr HSV -> (Ptr HSV -> IO ()) -> IO ()
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr ForeignPtr HSV
arg1 ((Ptr HSV -> IO ()) -> IO ()) -> (Ptr HSV -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr HSV
argPtr1 ->Ptr HSV -> Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> IO ()
gtk_hsv_get_color Ptr HSV
argPtr1 Ptr CDouble
arg2 Ptr CDouble
arg3 Ptr CDouble
arg4)
{-# LINE 133 "./Graphics/UI/Gtk/Selectors/HSV.chs" #-}
(toHSV self)
Ptr CDouble
hPtr
Ptr CDouble
sPtr
Ptr CDouble
vPtr
CDouble
h <- Ptr CDouble -> IO CDouble
forall a. Storable a => Ptr a -> IO a
peek Ptr CDouble
hPtr
CDouble
s <- Ptr CDouble -> IO CDouble
forall a. Storable a => Ptr a -> IO a
peek Ptr CDouble
sPtr
CDouble
v <- Ptr CDouble -> IO CDouble
forall a. Storable a => Ptr a -> IO a
peek Ptr CDouble
vPtr
(Double, Double, Double) -> IO (Double, Double, Double)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return (CDouble -> Double
forall a b. (Real a, Fractional b) => a -> b
realToFrac CDouble
h, CDouble -> Double
forall a b. (Real a, Fractional b) => a -> b
realToFrac CDouble
s, CDouble -> Double
forall a b. (Real a, Fractional b) => a -> b
realToFrac CDouble
v)
hsvSetMetrics :: HSVClass self => self
-> (Int, Int)
-> IO ()
hsvSetMetrics :: forall self. HSVClass self => self -> (Int, Int) -> IO ()
hsvSetMetrics self
self (Int
size, Int
ringWidth) =
(\(HSV ForeignPtr HSV
arg1) CInt
arg2 CInt
arg3 -> ForeignPtr HSV -> (Ptr HSV -> IO ()) -> IO ()
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr ForeignPtr HSV
arg1 ((Ptr HSV -> IO ()) -> IO ()) -> (Ptr HSV -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr HSV
argPtr1 ->Ptr HSV -> CInt -> CInt -> IO ()
gtk_hsv_set_metrics Ptr HSV
argPtr1 CInt
arg2 CInt
arg3)
{-# LINE 152 "./Graphics/UI/Gtk/Selectors/HSV.chs" #-}
(toHSV self)
(Int -> CInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
size)
(Int -> CInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
ringWidth)
hsvGetMetrics :: HSVClass self => self
-> IO (Int, Int)
hsvGetMetrics :: forall self. HSVClass self => self -> IO (Int, Int)
hsvGetMetrics self
self =
(Ptr CInt -> IO (Int, Int)) -> IO (Int, Int)
forall a b. Storable a => (Ptr a -> IO b) -> IO b
alloca ((Ptr CInt -> IO (Int, Int)) -> IO (Int, Int))
-> (Ptr CInt -> IO (Int, Int)) -> IO (Int, Int)
forall a b. (a -> b) -> a -> b
$ \Ptr CInt
sizePtr ->
(Ptr CInt -> IO (Int, Int)) -> IO (Int, Int)
forall a b. Storable a => (Ptr a -> IO b) -> IO b
alloca ((Ptr CInt -> IO (Int, Int)) -> IO (Int, Int))
-> (Ptr CInt -> IO (Int, Int)) -> IO (Int, Int)
forall a b. (a -> b) -> a -> b
$ \Ptr CInt
ringWidthPtr -> do
(\(HSV ForeignPtr HSV
arg1) Ptr CInt
arg2 Ptr CInt
arg3 -> ForeignPtr HSV -> (Ptr HSV -> IO ()) -> IO ()
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr ForeignPtr HSV
arg1 ((Ptr HSV -> IO ()) -> IO ()) -> (Ptr HSV -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr HSV
argPtr1 ->Ptr HSV -> Ptr CInt -> Ptr CInt -> IO ()
gtk_hsv_get_metrics Ptr HSV
argPtr1 Ptr CInt
arg2 Ptr CInt
arg3)
{-# LINE 166 "./Graphics/UI/Gtk/Selectors/HSV.chs" #-}
(toHSV self)
Ptr CInt
sizePtr
Ptr CInt
ringWidthPtr
CInt
size <- Ptr CInt -> IO CInt
forall a. Storable a => Ptr a -> IO a
peek Ptr CInt
sizePtr
CInt
ringWidth <- Ptr CInt -> IO CInt
forall a. Storable a => Ptr a -> IO a
peek Ptr CInt
ringWidthPtr
(Int, Int) -> IO (Int, Int)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return (CInt -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral CInt
size, CInt -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral CInt
ringWidth)
hsvIsAdjusting :: HSVClass self => self
-> IO Bool
hsvIsAdjusting :: forall self. HSVClass self => self -> IO Bool
hsvIsAdjusting self
self =
(CInt -> Bool) -> IO CInt -> IO Bool
forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
liftM CInt -> Bool
forall a. (Eq a, Num a) => a -> Bool
toBool (IO CInt -> IO Bool) -> IO CInt -> IO Bool
forall a b. (a -> b) -> a -> b
$
(\(HSV ForeignPtr HSV
arg1) -> ForeignPtr HSV -> (Ptr HSV -> IO CInt) -> IO CInt
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr ForeignPtr HSV
arg1 ((Ptr HSV -> IO CInt) -> IO CInt)
-> (Ptr HSV -> IO CInt) -> IO CInt
forall a b. (a -> b) -> a -> b
$ \Ptr HSV
argPtr1 ->Ptr HSV -> IO CInt
gtk_hsv_is_adjusting Ptr HSV
argPtr1)
{-# LINE 185 "./Graphics/UI/Gtk/Selectors/HSV.chs" #-}
(toHSV self)
hsvToRgb ::
(Double, Double, Double)
-> (Double, Double, Double)
hsvToRgb :: (Double, Double, Double) -> (Double, Double, Double)
hsvToRgb (Double
h, Double
s, Double
v) =
IO (Double, Double, Double) -> (Double, Double, Double)
forall a. IO a -> a
unsafePerformIO (IO (Double, Double, Double) -> (Double, Double, Double))
-> IO (Double, Double, Double) -> (Double, Double, Double)
forall a b. (a -> b) -> a -> b
$
(Ptr CDouble -> IO (Double, Double, Double))
-> IO (Double, Double, Double)
forall a b. Storable a => (Ptr a -> IO b) -> IO b
alloca ((Ptr CDouble -> IO (Double, Double, Double))
-> IO (Double, Double, Double))
-> (Ptr CDouble -> IO (Double, Double, Double))
-> IO (Double, Double, Double)
forall a b. (a -> b) -> a -> b
$ \Ptr CDouble
rPtr ->
(Ptr CDouble -> IO (Double, Double, Double))
-> IO (Double, Double, Double)
forall a b. Storable a => (Ptr a -> IO b) -> IO b
alloca ((Ptr CDouble -> IO (Double, Double, Double))
-> IO (Double, Double, Double))
-> (Ptr CDouble -> IO (Double, Double, Double))
-> IO (Double, Double, Double)
forall a b. (a -> b) -> a -> b
$ \Ptr CDouble
gPtr ->
(Ptr CDouble -> IO (Double, Double, Double))
-> IO (Double, Double, Double)
forall a b. Storable a => (Ptr a -> IO b) -> IO b
alloca ((Ptr CDouble -> IO (Double, Double, Double))
-> IO (Double, Double, Double))
-> (Ptr CDouble -> IO (Double, Double, Double))
-> IO (Double, Double, Double)
forall a b. (a -> b) -> a -> b
$ \Ptr CDouble
bPtr -> do
CDouble
-> CDouble
-> CDouble
-> Ptr CDouble
-> Ptr CDouble
-> Ptr CDouble
-> IO ()
gtk_hsv_to_rgb
{-# LINE 206 "./Graphics/UI/Gtk/Selectors/HSV.chs" #-}
(realToFrac h)
(Double -> CDouble
forall a b. (Real a, Fractional b) => a -> b
realToFrac Double
s)
(Double -> CDouble
forall a b. (Real a, Fractional b) => a -> b
realToFrac Double
v)
Ptr CDouble
rPtr
Ptr CDouble
gPtr
Ptr CDouble
bPtr
CDouble
r <- Ptr CDouble -> IO CDouble
forall a. Storable a => Ptr a -> IO a
peek Ptr CDouble
rPtr
CDouble
g <- Ptr CDouble -> IO CDouble
forall a. Storable a => Ptr a -> IO a
peek Ptr CDouble
gPtr
CDouble
b <- Ptr CDouble -> IO CDouble
forall a. Storable a => Ptr a -> IO a
peek Ptr CDouble
bPtr
(Double, Double, Double) -> IO (Double, Double, Double)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return (CDouble -> Double
forall a b. (Real a, Fractional b) => a -> b
realToFrac CDouble
r, CDouble -> Double
forall a b. (Real a, Fractional b) => a -> b
realToFrac CDouble
g, CDouble -> Double
forall a b. (Real a, Fractional b) => a -> b
realToFrac CDouble
b)
rgbToHsv ::
(Double, Double, Double)
-> (Double, Double, Double)
rgbToHsv :: (Double, Double, Double) -> (Double, Double, Double)
rgbToHsv (Double
r, Double
g, Double
b) =
IO (Double, Double, Double) -> (Double, Double, Double)
forall a. IO a -> a
unsafePerformIO (IO (Double, Double, Double) -> (Double, Double, Double))
-> IO (Double, Double, Double) -> (Double, Double, Double)
forall a b. (a -> b) -> a -> b
$
(Ptr CDouble -> IO (Double, Double, Double))
-> IO (Double, Double, Double)
forall a b. Storable a => (Ptr a -> IO b) -> IO b
alloca ((Ptr CDouble -> IO (Double, Double, Double))
-> IO (Double, Double, Double))
-> (Ptr CDouble -> IO (Double, Double, Double))
-> IO (Double, Double, Double)
forall a b. (a -> b) -> a -> b
$ \Ptr CDouble
hPtr ->
(Ptr CDouble -> IO (Double, Double, Double))
-> IO (Double, Double, Double)
forall a b. Storable a => (Ptr a -> IO b) -> IO b
alloca ((Ptr CDouble -> IO (Double, Double, Double))
-> IO (Double, Double, Double))
-> (Ptr CDouble -> IO (Double, Double, Double))
-> IO (Double, Double, Double)
forall a b. (a -> b) -> a -> b
$ \Ptr CDouble
sPtr ->
(Ptr CDouble -> IO (Double, Double, Double))
-> IO (Double, Double, Double)
forall a b. Storable a => (Ptr a -> IO b) -> IO b
alloca ((Ptr CDouble -> IO (Double, Double, Double))
-> IO (Double, Double, Double))
-> (Ptr CDouble -> IO (Double, Double, Double))
-> IO (Double, Double, Double)
forall a b. (a -> b) -> a -> b
$ \Ptr CDouble
vPtr -> do
CDouble
-> CDouble
-> CDouble
-> Ptr CDouble
-> Ptr CDouble
-> Ptr CDouble
-> IO ()
gtk_rgb_to_hsv
{-# LINE 235 "./Graphics/UI/Gtk/Selectors/HSV.chs" #-}
(realToFrac r)
(Double -> CDouble
forall a b. (Real a, Fractional b) => a -> b
realToFrac Double
g)
(Double -> CDouble
forall a b. (Real a, Fractional b) => a -> b
realToFrac Double
b)
Ptr CDouble
hPtr
Ptr CDouble
sPtr
Ptr CDouble
vPtr
CDouble
h <- Ptr CDouble -> IO CDouble
forall a. Storable a => Ptr a -> IO a
peek Ptr CDouble
hPtr
CDouble
s <- Ptr CDouble -> IO CDouble
forall a. Storable a => Ptr a -> IO a
peek Ptr CDouble
sPtr
CDouble
v <- Ptr CDouble -> IO CDouble
forall a. Storable a => Ptr a -> IO a
peek Ptr CDouble
vPtr
(Double, Double, Double) -> IO (Double, Double, Double)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return (CDouble -> Double
forall a b. (Real a, Fractional b) => a -> b
realToFrac CDouble
h, CDouble -> Double
forall a b. (Real a, Fractional b) => a -> b
realToFrac CDouble
s, CDouble -> Double
forall a b. (Real a, Fractional b) => a -> b
realToFrac CDouble
v)
hsvColor :: HSVClass self => Attr self (Double, Double, Double)
hsvColor :: forall self. HSVClass self => Attr self (Double, Double, Double)
hsvColor = (self -> IO (Double, Double, Double))
-> (self -> (Double, Double, Double) -> IO ())
-> ReadWriteAttr
self (Double, Double, Double) (Double, Double, Double)
forall o a b.
(o -> IO a) -> (o -> b -> IO ()) -> ReadWriteAttr o a b
newAttr
self -> IO (Double, Double, Double)
forall self. HSVClass self => self -> IO (Double, Double, Double)
hsvGetColor
self -> (Double, Double, Double) -> IO ()
forall self.
HSVClass self =>
self -> (Double, Double, Double) -> IO ()
hsvSetColor
hsvMetrics :: HSVClass self => Attr self (Int, Int)
hsvMetrics :: forall self. HSVClass self => Attr self (Int, Int)
hsvMetrics = (self -> IO (Int, Int))
-> (self -> (Int, Int) -> IO ())
-> ReadWriteAttr self (Int, Int) (Int, Int)
forall o a b.
(o -> IO a) -> (o -> b -> IO ()) -> ReadWriteAttr o a b
newAttr
self -> IO (Int, Int)
forall self. HSVClass self => self -> IO (Int, Int)
hsvGetMetrics
self -> (Int, Int) -> IO ()
forall self. HSVClass self => self -> (Int, Int) -> IO ()
hsvSetMetrics
hsvChanged :: HSVClass self => Signal self (IO ())
hsvChanged :: forall self. HSVClass self => Signal self (IO ())
hsvChanged = (Bool -> self -> IO () -> IO (ConnectId self))
-> Signal self (IO ())
forall object handler.
(Bool -> object -> handler -> IO (ConnectId object))
-> Signal object handler
Signal (SignalName -> Bool -> self -> IO () -> IO (ConnectId self)
forall obj.
GObjectClass obj =>
SignalName -> Bool -> obj -> IO () -> IO (ConnectId obj)
connect_NONE__NONE SignalName
"changed")
hsvMove :: HSVClass self => Signal self (DirectionType -> IO ())
hsvMove :: forall self. HSVClass self => Signal self (DirectionType -> IO ())
hsvMove = (Bool -> self -> (DirectionType -> IO ()) -> IO (ConnectId self))
-> Signal self (DirectionType -> IO ())
forall object handler.
(Bool -> object -> handler -> IO (ConnectId object))
-> Signal object handler
Signal (SignalName
-> Bool -> self -> (DirectionType -> IO ()) -> IO (ConnectId self)
forall a obj.
(Enum a, GObjectClass obj) =>
SignalName -> Bool -> obj -> (a -> IO ()) -> IO (ConnectId obj)
connect_ENUM__NONE SignalName
"move")
foreign import ccall safe "gtk_hsv_new"
gtk_hsv_new :: (IO (Ptr Widget))
foreign import ccall safe "gtk_hsv_set_color"
gtk_hsv_set_color :: ((Ptr HSV) -> (CDouble -> (CDouble -> (CDouble -> (IO ())))))
foreign import ccall safe "gtk_hsv_get_color"
gtk_hsv_get_color :: ((Ptr HSV) -> ((Ptr CDouble) -> ((Ptr CDouble) -> ((Ptr CDouble) -> (IO ())))))
foreign import ccall safe "gtk_hsv_set_metrics"
gtk_hsv_set_metrics :: ((Ptr HSV) -> (CInt -> (CInt -> (IO ()))))
foreign import ccall safe "gtk_hsv_get_metrics"
gtk_hsv_get_metrics :: ((Ptr HSV) -> ((Ptr CInt) -> ((Ptr CInt) -> (IO ()))))
foreign import ccall safe "gtk_hsv_is_adjusting"
gtk_hsv_is_adjusting :: ((Ptr HSV) -> (IO CInt))
foreign import ccall safe "gtk_hsv_to_rgb"
gtk_hsv_to_rgb :: (CDouble -> (CDouble -> (CDouble -> ((Ptr CDouble) -> ((Ptr CDouble) -> ((Ptr CDouble) -> (IO ())))))))
foreign import ccall safe "gtk_rgb_to_hsv"
gtk_rgb_to_hsv :: (CDouble -> (CDouble -> (CDouble -> ((Ptr CDouble) -> ((Ptr CDouble) -> ((Ptr CDouble) -> (IO ())))))))