poppler-0.14: Graphics/UI/Gtk/Poppler/Structs.hsc
{-# LANGUAGE CPP, ScopedTypeVariables #-}
{-# OPTIONS_HADDOCK hide #-}
-- -*-haskell-*-
-- GIMP Toolkit (GTK) Structures for Pango
--
-- Author : Axel Simon
--
-- Created: 2 March 2008
--
-- Copyright (C) 2008 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.
--
-- #hide
#include <glib-2.0/glib.h>
#include <poppler.h>
#include "template-hsc-gtk2hs.h"
-- |
-- Maintainer : gtk2hs-users@lists.sourceforge.net
-- Stability : provisional
-- Portability : portable (depends on GHC)
--
module Graphics.UI.Gtk.Poppler.Structs (
PopplerRectangle(..),
peekPopplerRectangle,
PopplerColor(..),
peekPopplerColor,
) where
import Control.Monad (liftM)
import Data.IORef
import Control.Exception
import System.Glib.FFI
import System.Glib.UTFString ( peekUTFString, UTFCorrection,
ofsToUTF, ofsFromUTF )
import System.Glib.GObject (makeNewGObject)
-- | Rectangles describing an area in 'Double's.
--
-- * Specifies x, y, width and height
--
data PopplerRectangle = PopplerRectangle Double Double Double Double
deriving Show
instance Storable PopplerRectangle where
sizeOf _ = #{const sizeof(PopplerRectangle)}
alignment _ = alignment (undefined:: #gtk2hs_type gdouble)
peek ptr = do
(PopplerRectangle x1_ y1_ x2_ y2_) <- peekPopplerRectangle ptr
return $ PopplerRectangle (realToFrac x1_) (realToFrac y1_)
(realToFrac x2_) (realToFrac y2_)
poke ptr (PopplerRectangle x1 y1 x2 y2) = do
#{poke PopplerRectangle, x1} ptr (x1::#gtk2hs_type gdouble)
#{poke PopplerRectangle, y1} ptr (y1::#gtk2hs_type gdouble)
#{poke PopplerRectangle, x2} ptr (x2::#gtk2hs_type gdouble)
#{poke PopplerRectangle, y2} ptr (y2::#gtk2hs_type gdouble)
peekPopplerRectangle :: Ptr PopplerRectangle -> IO PopplerRectangle
peekPopplerRectangle ptr = do
(x1_ ::#gtk2hs_type gdouble) <- #{peek PopplerRectangle, x1} ptr
(y1_ ::#gtk2hs_type gdouble) <- #{peek PopplerRectangle, y1} ptr
(x2_ ::#gtk2hs_type gdouble) <- #{peek PopplerRectangle, x2} ptr
(y2_ ::#gtk2hs_type gdouble) <- #{peek PopplerRectangle, y2} ptr
return (PopplerRectangle (realToFrac x1_) (realToFrac y1_)
(realToFrac x2_) (realToFrac y2_))
data PopplerColor = PopplerColor (#gtk2hs_type guint16) (#gtk2hs_type guint16) (#gtk2hs_type guint16)
deriving (Eq,Show)
instance Storable PopplerColor where
sizeOf _ = #{const sizeof(PopplerColor)}
alignment _ = alignment (undefined::#gtk2hs_type guint16)
peek ptr = peekPopplerColor ptr
poke ptr (PopplerColor red green blue) = do
#{poke PopplerColor, red} ptr red
#{poke PopplerColor, green} ptr green
#{poke PopplerColor, blue} ptr blue
peekPopplerColor :: Ptr PopplerColor -> IO PopplerColor
peekPopplerColor ptr = do
red <- #{peek PopplerColor, red} ptr
green <- #{peek PopplerColor, green} ptr
blue <- #{peek PopplerColor, blue} ptr
return $ PopplerColor red green blue