    {-# 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
      h <- Ptr CDouble -> IO CDouble
    forall a. Storable a => Ptr a -> IO a
    peek Ptr CDouble
    hPtr
      s <- peek sPtr
      v <- peek vPtr
      return (realToFrac h, realToFrac s, realToFrac 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
      size <- Ptr CInt -> IO CInt
    forall a. Storable a => Ptr a -> IO a
    peek Ptr CInt
    sizePtr
      ringWidth <- peek ringWidthPtr
      return (fromIntegral size, fromIntegral 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
      r <- Ptr CDouble -> IO CDouble
    forall a. Storable a => Ptr a -> IO a
    peek Ptr CDouble
    rPtr
      g <- peek gPtr
      b <- peek bPtr
      return (realToFrac r, realToFrac g, realToFrac 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
      h <- Ptr CDouble -> IO CDouble
    forall a. Storable a => Ptr a -> IO a
    peek Ptr CDouble
    hPtr
      s <- peek sPtr
      v <- peek vPtr
      return (realToFrac h, realToFrac s, realToFrac 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 ())))))))