{-# LINE 2 "./Graphics/UI/Gtk/Selectors/HSV.chs" #-}
-- -*-haskell-*-
-- GIMP Toolkit (GTK) Widget HSV
--
-- Author : Andy Stewart
--
-- Created: 25 Mar 2010
--
-- Copyright (C) 2010 Andy Stewart
--
-- This library is free software; you can redistribute it and/or
-- modify it under the terms of the GNU Lesser General Public
-- License as published by the Free Software Foundation; either
-- version 2.1 of the License, or (at your option) any later version.
--
-- This library is distributed in the hope that it will be useful,
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-- Lesser General Public License for more details.
--
-- |
-- Maintainer : gtk2hs-users@lists.sourceforge.net
-- Stability : provisional
-- Portability : portable (depends on GHC)
--
-- A \'color wheel\' widget
--
-- * Module available since Gtk+ version 2.14
--
module Graphics.UI.Gtk.Selectors.HSV (

-- * Detail
--
-- | 'HSV' is the \'color wheel\' part of a complete color selector widget. It
-- allows to select a color by determining its 'HSV' components in an intuitive
-- way. Moving the selection around the outer ring changes the hue, and moving
-- the selection point inside the inner triangle changes value and saturation.

-- * Class Hierarchy
--
-- |
-- @
-- | 'GObject'
-- | +----'Object'
-- | +----'Widget'
-- | +----HSV
-- @


-- * Types
  HSV,
  HSVClass,
  castToHSV,
  toHSV,

-- * Constructors
  hsvNew,

-- * Methods
  hsvIsAdjusting,
  hsvToRgb,
  rgbToHsv,

-- * Attributes
  hsvColor,
  hsvMetrics,

-- * Signals
  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" #-}


--------------------
-- Constructors

-- | Creates a new 'HSV' color selector.
--
-- * Available since 2.14
--
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" #-}

--------------------
-- Methods

-- | Sets the current color in an 'HSV' color selector. Color component values
-- must be in the [0.0, 1.0] range.
--
-- * Available since 2.14
--
hsvSetColor :: HSVClass self => self
 -> (Double, Double, Double)
   -- ^ @(h, s, v)@
   -- @h@ - value for the hue
   -- @s@ value for the saturation
   -- @v@ value for the value
 -> 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)

-- | Queries the current color in an 'HSV' color selector. Returned values will
-- be in the [0.0, 1.0] range.
--
hsvGetColor :: HSVClass self => self
 -> IO (Double, Double, Double) -- ^ @(h, s, v)@ @h@ - Return value for the hue @s@ -
                                -- Return value for the saturation @v@ - Return
                                -- value for the value
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)

-- | Sets the size and ring width of an 'HSV' color selector.
--
hsvSetMetrics :: HSVClass self => self
 -> (Int, Int)
 -- ^ @(size, ringWidth)@
 -- ^ @size@ - Diameter for the hue ring
 -- ^ @ringWidth@ - Width of the hue ring
 -> 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)

-- | Queries the size and ring width of an 'HSV' color selector.
--
hsvGetMetrics :: HSVClass self => self
 -> IO (Int, Int) -- ^ @(size, ringWidth)@
                  -- @size@ - Return value for the diameter of the hue ring
                  -- @ringWidth@ - Return value for the width of the hue ring
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)

-- | An 'HSV' color selector can be said to be adjusting if multiple rapid
-- changes are being made to its value, for example, when the user is adjusting
-- the value with the mouse. This function queries whether the 'HSV' color
-- selector is being adjusted or not.
--
hsvIsAdjusting :: HSVClass self => self
 -> IO Bool -- ^ returns @True@ if clients can ignore changes to the color
            -- value, since they may be transitory, or @False@ if they should
            -- consider the color value status to be final.
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)

-- | Converts a color from 'HSV' space to RGB. Input values must be in the [0.0,
-- 1.0] range; output values will be in the same range.
--
hsvToRgb ::
 (Double, Double, Double)
   -- ^ @(h, s, v)@
   -- @h@ - value for the hue
   -- @s@ value for the saturation
   -- @v@ value for the value
 -> (Double, Double, Double) -- ^ @(r, g, b)@ @r@ - Return value for the red
                            -- component @g@ - Return value for the green
                            -- component @b@ - Return value for the blue
                            -- component
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)

-- | Converts a color from RGB space to 'HSV'. Input values must be in the [0.0, 1.0] range; output values
-- will be in the same range.
rgbToHsv ::
       (Double, Double, Double)
    -- ^ @(r, g, b)@ @r@ value for the red component
    -- @g@ value for the green component
    -- @b@ value for the blue component
    -> (Double, Double, Double)
   -- ^ @(h, s, v)@
   -- @h@ - Return value for the hue
   -- @s@ - Return value for the saturation
   -- @v@ - Return value for the value
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)

--------------------
-- Attributes
-- | Color in an 'HSV' color selector.
-- Color component values must be in the [0.0, 1.0] range.
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

-- | The size and ring width of an 'HSV' color selector.
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

--------------------
-- Signals

-- |
--
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 ())))))))