    {-# LINE 2 "./Graphics/Rendering/Pango/Enums.chs" #-}
    -- -*-haskell-*-
    -- GIMP Toolkit (GTK) Enumerations for Pango.
    --
    -- Author : Axel Simon
    --
    -- Created: 12 September 2004
    --
    -- Copyright (C) 1999-2005 Axel Simon
    --
    -- 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)
    --
    -- Enumerations for describing font characteristics.
    --
    module Graphics.Rendering.Pango.Enums (
      PangoUnit,
      pangoScale,
      Color(..),
      Rectangle(..),
      PangoRectangle(..),
      FontMetrics(..),
      Size(..),
      FontStyle(..),
      Weight(..),
      Variant(..),
      Stretch(..),
      Underline(..),
      PangoDirection(..),
      PangoAttribute(..),

      EllipsizeMode(..),

      PangoGravity(..),
      PangoGravityHint(..),

      -- these will not be exported from this module in the future
      Markup,
      Language,
      emptyLanguage,
      languageFromString,
      ) where

    import Graphics.Rendering.Pango.Types
    {-# LINE 59 "./Graphics/Rendering/Pango/Enums.chs" #-}
    import Graphics.Rendering.Pango.BasicTypes
    {-# LINE 60 "./Graphics/Rendering/Pango/Enums.chs" #-}
    import Graphics.Rendering.Pango.Structs

    {-# LINE 63 "./Graphics/Rendering/Pango/Enums.chs" #-}

    -- | Define attributes for 'FontSize'.
    --
    data Size
      = SizePoint Double
      | SizeUnreadable
      | SizeTiny
      | SizeSmall
      | SizeMedium
      | SizeLarge
      | SizeHuge
      | SizeGiant
      | SizeSmaller
      | SizeLarger

    instance Show Size where
      showsPrec _ (SizePoint v) = shows $ show (round (v*1000))
      showsPrec _ (SizeUnreadable) = shows "xx-small"
      showsPrec _ (SizeTiny) = shows "x-small"
      showsPrec _ (SizeSmall) = shows "small"
      showsPrec _ (SizeMedium) = shows "medium"
      showsPrec _ (SizeLarge) = shows "large"
      showsPrec _ (SizeHuge) = shows "x-large"
      showsPrec _ (SizeGiant) = shows "xx-large"
      showsPrec _ (SizeSmaller) = shows "smaller"
      showsPrec _ (SizeLarger) = shows "larger"

    -- | The 'EllipsizeMode' type describes what sort of (if any) ellipsization
    -- should be applied to a line of text. In the ellipsization process characters
    -- are removed from the text in order to make it fit to a given width and
    -- replaced with an ellipsis.
    --
    data EllipsizeMode = EllipsizeNone
                       | EllipsizeStart
                       | EllipsizeMiddle
                       | EllipsizeEnd
                       deriving (Enum,Eq)

    {-# LINE 99 "./Graphics/Rendering/Pango/Enums.chs" #-}

    -- | The characteristic measurements of a font.
    --
    -- * All values are measured in pixels.
    --
    -- * In Pango versions before 1.6 only 'ascent', 'descent',
    -- 'approximateCharWidth' and 'approximateDigitWidth' are available.
    --
    data FontMetrics = FontMetrics {
      -- | The ascent is the distance from the baseline to the logical top
      -- of a line of text. (The logical top may be above or below the
      -- top of the actual drawn ink. It is necessary to lay out the
      -- text to figure where the ink will be.)
      ascent :: Double,
      -- | The descent is the distance from the baseline to the logical
      -- bottom of a line of text. (The logical bottom may be above or
      -- below the bottom of the actual drawn ink. It is necessary to
      -- lay out the text to figure where the ink will be.)
      descent :: Double,
      -- | The approximate character width. This is merely a
      -- representative value useful, for example, for determining the
      -- initial size for a window. Actual characters in text will be
      -- wider and narrower than this.
      approximateCharWidth :: Double,
      -- | The approximate digit width. This is merely a representative
      -- value useful, for example, for determining the initial size for
      -- a window. Actual digits in text can be wider and narrower than
      -- this, though this value is generally somewhat more accurate
      -- than 'approximateCharWidth'.
      approximateDigitWidth :: Double

      ,
      -- | The suggested thickness to draw an underline.
      underlineThickness :: Double,
      -- | The suggested position to draw the underline. The value returned is
      -- the distance above the baseline of the top of the underline. Since
      -- most fonts have underline positions beneath the baseline, this value
      -- is typically negative.
      underlinePosition :: Double,
      -- | The suggested thickness to draw for the strikethrough.
      strikethroughThickness :: Double,
      -- | The suggested position to draw the strikethrough. The value
      -- returned is the distance above the baseline of the top of the
      -- strikethrough.
      strikethroughPosition :: Double

      } deriving Show