{-# LINE 1 "Graphics/Rendering/Pango/Structs.hsc" #-} {-# LANGUAGE CPP, ScopedTypeVariables #-} {-# LINE 2 "Graphics/Rendering/Pango/Structs.hsc" #-} {-# 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 {-# LINE 25 "Graphics/Rendering/Pango/Structs.hsc" #-} {-# LINE 26 "Graphics/Rendering/Pango/Structs.hsc" #-} {-# LINE 27 "Graphics/Rendering/Pango/Structs.hsc" #-} -- | -- Maintainer : gtk2hs-users@lists.sourceforge.net -- Stability : provisional -- Portability : portable (depends on GHC) -- module Graphics.Rendering.Pango.Structs ( PangoUnit, Color(..), Rectangle(..), PangoRectangle(..), peekIntPangoRectangle, PangoDirection(..), pangoScale, puToInt, puToUInt, intToPu, uIntToPu, pangodirToLevel, PangoAttribute(..), setAttrPos, pangoItemGetFont, pangoItemGetLanguage, pangoItemRawGetOffset, pangoItemRawGetLength, pangoItemRawAnalysis, pangoItemRawGetLevel, readAttr ) where import Control.Monad (liftM) import Data.IORef import Control.Exception import System.Glib.FFI import System.Glib.UTFString ( peekUTFString, UTFCorrection, ofsToUTF, ofsFromUTF, DefaultGlibString ) import System.Glib.GObject (makeNewGObject) import Graphics.Rendering.Pango.Types import Graphics.Rendering.Pango.BasicTypes -- A pango unit is an internal euclidian metric, that is, a measure for -- lengths and position. -- -- * Deprecated. Replaced by Double. type PangoUnit = Double -- | Color -- -- * Specifies a color with three integer values for red, green and blue. -- All values range from 0 (least intense) to 65535 (highest intensity). -- data Color = Color (Word16) (Word16) (Word16) {-# LINE 80 "Graphics/Rendering/Pango/Structs.hsc" #-} deriving (Eq,Show) -- PangoColor is different from GdkColor, but for the Gtk2Hs user we pretend they -- are the same. To do this, we need a different marshalling routine for PangoColors. peekPangoColor :: Ptr Color -> IO Color peekPangoColor ptr = do red <- (\hsc_ptr -> peekByteOff hsc_ptr 0) ptr {-# LINE 88 "Graphics/Rendering/Pango/Structs.hsc" #-} green <- (\hsc_ptr -> peekByteOff hsc_ptr 2) ptr {-# LINE 89 "Graphics/Rendering/Pango/Structs.hsc" #-} blue <- (\hsc_ptr -> peekByteOff hsc_ptr 4) ptr {-# LINE 90 "Graphics/Rendering/Pango/Structs.hsc" #-} return $ Color red green blue -- | Rectangle -- -- * Specifies x, y, width and height -- data Rectangle = Rectangle Int Int Int Int deriving (Eq,Show) -- | Rectangles describing an area in 'Double's. -- -- * Specifies x, y, width and height -- data PangoRectangle = PangoRectangle Double Double Double Double deriving Show instance Storable PangoRectangle where sizeOf _ = 16 {-# LINE 107 "Graphics/Rendering/Pango/Structs.hsc" #-} alignment _ = alignment (undefined:: Int32) {-# LINE 108 "Graphics/Rendering/Pango/Structs.hsc" #-} peek ptr = do (Rectangle x_ y_ w_ h_) <- peekIntPangoRectangle ptr return $ PangoRectangle (fromIntegral x_/pangoScale) (fromIntegral y_/pangoScale) (fromIntegral w_/pangoScale) (fromIntegral h_/pangoScale) poke ptr (PangoRectangle x y w h) = do (\hsc_ptr -> pokeByteOff hsc_ptr 0) ptr ((truncate (x*pangoScale))::Int32) {-# LINE 114 "Graphics/Rendering/Pango/Structs.hsc" #-} (\hsc_ptr -> pokeByteOff hsc_ptr 4) ptr ((truncate (y*pangoScale))::Int32) {-# LINE 115 "Graphics/Rendering/Pango/Structs.hsc" #-} (\hsc_ptr -> pokeByteOff hsc_ptr 8) ptr ((truncate (w*pangoScale))::Int32) {-# LINE 116 "Graphics/Rendering/Pango/Structs.hsc" #-} (\hsc_ptr -> pokeByteOff hsc_ptr 12) ptr ((truncate (h*pangoScale))::Int32) {-# LINE 117 "Graphics/Rendering/Pango/Structs.hsc" #-} peekIntPangoRectangle :: Ptr PangoRectangle -> IO Rectangle peekIntPangoRectangle ptr = do (x_ ::Int32) <- (\hsc_ptr -> peekByteOff hsc_ptr 0) ptr {-# LINE 121 "Graphics/Rendering/Pango/Structs.hsc" #-} (y_ ::Int32) <- (\hsc_ptr -> peekByteOff hsc_ptr 4) ptr {-# LINE 122 "Graphics/Rendering/Pango/Structs.hsc" #-} (w_ ::Int32) <- (\hsc_ptr -> peekByteOff hsc_ptr 8) ptr {-# LINE 123 "Graphics/Rendering/Pango/Structs.hsc" #-} (h_ ::Int32) <- (\hsc_ptr -> peekByteOff hsc_ptr 12) ptr {-# LINE 124 "Graphics/Rendering/Pango/Structs.hsc" #-} return (Rectangle (fromIntegral x_) (fromIntegral y_) (fromIntegral w_) (fromIntegral h_)) -- | The 'PangoDirection' type represents a direction in the Unicode -- bidirectional algorithm. -- -- * The \"weak\" values denote a left-to-right or right-to-left direction -- only if there is no character with a strong direction in a paragraph. -- An example is a sequence of special, graphical characters which are -- neutral with respect to their rendering direction. A fresh -- 'Graphics.Rendering.Pango.Rendering.PangoContext' is by default weakly -- left-to-right. -- -- * Not every value in this enumeration makes sense for every usage -- of 'PangoDirection'; for example, the return value of -- 'unicharDirection' and 'findBaseDir' cannot be 'PangoDirectionWeakLtr' -- or 'PangoDirectionWeakRtl', since every character is either neutral or -- has a strong direction; on the other hand 'PangoDirectionNeutral' -- doesn't make sense to pass to 'log2visGetEmbeddingLevels'. -- data PangoDirection = PangoDirectionLtr | PangoDirectionRtl {-# LINE 147 "Graphics/Rendering/Pango/Structs.hsc" #-} | PangoDirectionWeakLtr | PangoDirectionWeakRtl | PangoDirectionNeutral {-# LINE 151 "Graphics/Rendering/Pango/Structs.hsc" #-} deriving (Eq,Ord) -- Internal unit of measuring sizes. -- -- * This constant represents the scale between -- dimensions used for distances in text rendering and Pango device units. -- The -- definition of device unit is dependent on the output device; it will -- typically be pixels for a screen, and points for a printer. When -- setting font sizes, device units are always considered to be points -- (as in \"12 point font\"), rather than pixels. -- pangoScale :: Double pangoScale = 1024 {-# LINE 167 "Graphics/Rendering/Pango/Structs.hsc" #-} puToInt :: Double -> GInt puToInt u = truncate (u*pangoScale) puToUInt :: Double -> GInt puToUInt u = let u' = u*pangoScale in if u'<0 then 0 else truncate u' intToPu :: GInt -> Double intToPu i = fromIntegral i/pangoScale uIntToPu :: GInt -> Double uIntToPu i = fromIntegral i/pangoScale instance Enum PangoDirection where fromEnum PangoDirectionLtr = 0 {-# LINE 182 "Graphics/Rendering/Pango/Structs.hsc" #-} fromEnum PangoDirectionRtl = 1 {-# LINE 183 "Graphics/Rendering/Pango/Structs.hsc" #-} {-# LINE 184 "Graphics/Rendering/Pango/Structs.hsc" #-} fromEnum PangoDirectionWeakLtr = 4 {-# LINE 185 "Graphics/Rendering/Pango/Structs.hsc" #-} fromEnum PangoDirectionWeakRtl = 5 {-# LINE 186 "Graphics/Rendering/Pango/Structs.hsc" #-} fromEnum PangoDirectionNeutral = 6 {-# LINE 187 "Graphics/Rendering/Pango/Structs.hsc" #-} {-# LINE 188 "Graphics/Rendering/Pango/Structs.hsc" #-} toEnum 0 = PangoDirectionLtr {-# LINE 189 "Graphics/Rendering/Pango/Structs.hsc" #-} toEnum 1 = PangoDirectionRtl {-# LINE 190 "Graphics/Rendering/Pango/Structs.hsc" #-} toEnum 2 = PangoDirectionLtr {-# LINE 191 "Graphics/Rendering/Pango/Structs.hsc" #-} toEnum 3 = PangoDirectionRtl {-# LINE 192 "Graphics/Rendering/Pango/Structs.hsc" #-} {-# LINE 193 "Graphics/Rendering/Pango/Structs.hsc" #-} toEnum 4 = PangoDirectionWeakLtr {-# LINE 194 "Graphics/Rendering/Pango/Structs.hsc" #-} toEnum 5 = PangoDirectionWeakRtl {-# LINE 195 "Graphics/Rendering/Pango/Structs.hsc" #-} toEnum 6 = PangoDirectionNeutral {-# LINE 196 "Graphics/Rendering/Pango/Structs.hsc" #-} {-# LINE 197 "Graphics/Rendering/Pango/Structs.hsc" #-} -- This is a copy of the local function direction_simple in pango-layout.c pangodirToLevel :: PangoDirection -> Int pangodirToLevel PangoDirectionLtr = 1 pangodirToLevel PangoDirectionRtl = -1 {-# LINE 203 "Graphics/Rendering/Pango/Structs.hsc" #-} pangodirToLevel PangoDirectionWeakLtr = 1 pangodirToLevel PangoDirectionWeakRtl = -1 pangodirToLevel PangoDirectionNeutral = 0 {-# LINE 207 "Graphics/Rendering/Pango/Structs.hsc" #-} -- | Extract the font used for this 'PangoItem'. -- pangoItemGetFont :: PangoItem -> IO Font pangoItemGetFont (PangoItem _ (PangoItemRaw pir)) = withForeignPtr pir pangoItemRawGetFont -- | Extract the 'Language' used for this 'PangoItem'. -- pangoItemGetLanguage :: PangoItem -> IO Language pangoItemGetLanguage (PangoItem _ (PangoItemRaw pir)) = liftM (Language . castPtr) $ withForeignPtr pir pangoItemRawGetLanguage -- Get the font of a PangoAnalysis within a PangoItem. pangoItemRawGetFont :: Ptr pangoItem -> IO Font pangoItemRawGetFont ptr = makeNewGObject mkFont ((\hsc_ptr -> peekByteOff hsc_ptr 32) ptr) {-# LINE 224 "Graphics/Rendering/Pango/Structs.hsc" #-} -- Get the font of a PangoAnalysis within a PangoItem. pangoItemRawGetLanguage :: Ptr pangoItem -> IO (Ptr CChar) pangoItemRawGetLanguage ptr = (\hsc_ptr -> peekByteOff hsc_ptr 48) ptr {-# LINE 229 "Graphics/Rendering/Pango/Structs.hsc" #-} -- Get the offset at which a PangoItem starts pangoItemRawGetOffset :: Ptr pangoItem -> IO Int32 {-# LINE 232 "Graphics/Rendering/Pango/Structs.hsc" #-} pangoItemRawGetOffset = (\hsc_ptr -> peekByteOff hsc_ptr 0) {-# LINE 233 "Graphics/Rendering/Pango/Structs.hsc" #-} -- Get the number of bytes that the PangoItem affects pangoItemRawGetLength :: Ptr pangoItem -> IO Int32 {-# LINE 236 "Graphics/Rendering/Pango/Structs.hsc" #-} pangoItemRawGetLength = (\hsc_ptr -> peekByteOff hsc_ptr 4) {-# LINE 237 "Graphics/Rendering/Pango/Structs.hsc" #-} -- Get the PangoAnalysis within a PangoItem pangoItemRawAnalysis :: Ptr pangoItem -> Ptr pangoAnalysis pangoItemRawAnalysis = (\hsc_ptr -> hsc_ptr `plusPtr` 16) {-# LINE 241 "Graphics/Rendering/Pango/Structs.hsc" #-} -- Get the text direction of this PangoItem. pangoItemRawGetLevel :: Ptr pangoItem -> IO Bool pangoItemRawGetLevel ptr = do level <- (\hsc_ptr -> peekByteOff hsc_ptr 40) ptr {-# LINE 246 "Graphics/Rendering/Pango/Structs.hsc" #-} return (toBool (level :: Word8)) {-# LINE 247 "Graphics/Rendering/Pango/Structs.hsc" #-} -- Set the start and end position of an attribute setAttrPos :: UTFCorrection -> Int -> Int -> IO (Ptr ()) -> IO (Ptr ()) setAttrPos correct start end act = do atPtr <- act (\hsc_ptr -> pokeByteOff hsc_ptr 8) atPtr {-# LINE 253 "Graphics/Rendering/Pango/Structs.hsc" #-} (fromIntegral (ofsToUTF start correct) :: Word32) {-# LINE 254 "Graphics/Rendering/Pango/Structs.hsc" #-} (\hsc_ptr -> pokeByteOff hsc_ptr 12) atPtr {-# LINE 255 "Graphics/Rendering/Pango/Structs.hsc" #-} (fromIntegral (ofsToUTF end correct) :: Word32) {-# LINE 256 "Graphics/Rendering/Pango/Structs.hsc" #-} return atPtr -- | Attributes for 'PangoItem's. -- -- * A given attribute is applied from its start position 'paStart' up, -- but not including the end position, 'paEnd'. -- data PangoAttribute -- | A hint as to what language this piece of text is written in. = AttrLanguage { paStart :: Int, paEnd :: Int, paLang :: Language } -- | The font family, e.g. @sans serif@. | AttrFamily { paStart :: Int, paEnd :: Int, paFamily :: DefaultGlibString } -- | The slant of the current font. | AttrStyle { paStart :: Int, paEnd :: Int, paStyle :: FontStyle } -- | Weight of font, e.g. 'WeightBold'. | AttrWeight { paStart :: Int, paEnd :: Int, paWeight :: Weight } -- | 'VariantSmallCaps' will display lower case letters as small -- upper case letters (if the font supports this). | AttrVariant { paStart :: Int, paEnd :: Int, paVariant :: Variant } -- | Stretch or condense the width of the letters. | AttrStretch { paStart :: Int, paEnd :: Int, paStretch :: Stretch } -- | Specify the size of the font in points. | AttrSize { paStart :: Int, paEnd :: Int, paSize :: Double } {-# LINE 280 "Graphics/Rendering/Pango/Structs.hsc" #-} -- | Specify the size of the font in device units (pixels). -- -- * Available in Pango 1.8.0 and higher. -- | AttrAbsSize { paStart :: Int, paEnd :: Int, paSize :: Double } {-# LINE 286 "Graphics/Rendering/Pango/Structs.hsc" #-} -- | Specify several attributes of a font at once. Note that no deep copy -- of the description is made when this attributes is passed to or received -- from functions. | AttrFontDescription { paStart :: Int, paEnd :: Int, paFontDescription :: FontDescription } -- | Specify the foreground color. | AttrForeground { paStart :: Int, paEnd :: Int, paColor :: Color } -- | Specify the background color. | AttrBackground { paStart :: Int, paEnd :: Int, paColor :: Color } -- | Specify the kind of underline, e.g. 'UnderlineSingle'. | AttrUnderline { paStart :: Int, paEnd :: Int, paUnderline :: Underline } {-# LINE 299 "Graphics/Rendering/Pango/Structs.hsc" #-} -- | Specify the color of an underline. -- -- * Available in Pango 1.8.0 and higher. -- | AttrUnderlineColor { paStart :: Int, paEnd :: Int, paColor :: Color } {-# LINE 305 "Graphics/Rendering/Pango/Structs.hsc" #-} -- | Specify if this piece of text should have a line through it. | AttrStrikethrough { paStart :: Int, paEnd :: Int, paStrikethrough :: Bool } {-# LINE 309 "Graphics/Rendering/Pango/Structs.hsc" #-} -- | Specify the color of the strike through line. -- -- * Available in Pango 1.8.0 and higher. -- | AttrStrikethroughColor { paStart :: Int, paEnd :: Int, paColor :: Color } {-# LINE 315 "Graphics/Rendering/Pango/Structs.hsc" #-} -- | Displace the text vertically. Positive values move the text upwards. | AttrRise { paStart :: Int, paEnd :: Int, paRise :: Double } {-# LINE 318 "Graphics/Rendering/Pango/Structs.hsc" #-} -- | Restrict the amount of what is drawn of the marked shapes. -- -- * Available in Pango 1.8.0 and higher. -- | AttrShape { paStart :: Int, paEnd :: Int, paInk :: PangoRectangle, paLogical :: PangoRectangle } {-# LINE 325 "Graphics/Rendering/Pango/Structs.hsc" #-} -- | Scale the font up (values greater than one) or shrink the font. | AttrScale { paStart :: Int, paEnd :: Int, paScale :: Double } {-# LINE 328 "Graphics/Rendering/Pango/Structs.hsc" #-} -- | Determine if a fall back font should be substituted if no matching -- font is available. | AttrFallback { paStart :: Int, paEnd :: Int, paFallback :: Bool } {-# LINE 332 "Graphics/Rendering/Pango/Structs.hsc" #-} {-# LINE 333 "Graphics/Rendering/Pango/Structs.hsc" #-} -- | Add extra space between graphemes of the text. -- -- * Available in Pango 1.6.0 and higher. -- | AttrLetterSpacing { paStart :: Int, paEnd :: Int, paLetterSpacing :: Double } {-# LINE 340 "Graphics/Rendering/Pango/Structs.hsc" #-} {-# LINE 341 "Graphics/Rendering/Pango/Structs.hsc" #-} -- | Sets the gravity field of a font description. The gravity field specifies -- how the glyphs should be rotated. If gravity is 'GravityAuto', this -- actually unsets the gravity mask on the font description. -- -- * This function is seldom useful to the user. Gravity should normally be -- set on a 'PangoContext'. -- -- * Available in Pango 1.16.0 and higher. -- | AttrGravity { paStart :: Int, paEnd :: Int, paGravity :: PangoGravity } -- | Set the way horizontal scripts behave in a vertical context. -- -- * Available in Pango 1.16.0 and higher. -- | AttrGravityHint { paStart :: Int, paEnd :: Int, paGravityHint :: PangoGravityHint } {-# LINE 360 "Graphics/Rendering/Pango/Structs.hsc" #-} deriving Show -- | Convert a pointer to an attribute to an attribute. readAttr :: UTFCorrection -> CPangoAttribute -> IO PangoAttribute readAttr correct attrPtr = do klassPtr <- (\hsc_ptr -> peekByteOff hsc_ptr 0) attrPtr {-# LINE 366 "Graphics/Rendering/Pango/Structs.hsc" #-} startByte <- (\hsc_ptr -> peekByteOff hsc_ptr 8) attrPtr {-# LINE 367 "Graphics/Rendering/Pango/Structs.hsc" #-} endByte <- (\hsc_ptr -> peekByteOff hsc_ptr 12) attrPtr {-# LINE 368 "Graphics/Rendering/Pango/Structs.hsc" #-} ty <- (\hsc_ptr -> peekByteOff hsc_ptr 0) klassPtr {-# LINE 369 "Graphics/Rendering/Pango/Structs.hsc" #-} let b :: Int b = ofsFromUTF (fromIntegral (startByte :: Word32)) correct {-# LINE 371 "Graphics/Rendering/Pango/Structs.hsc" #-} e :: Int e = ofsFromUTF (fromIntegral (endByte :: Word32)) correct {-# LINE 373 "Graphics/Rendering/Pango/Structs.hsc" #-} case ty :: Word32 of {-# LINE 374 "Graphics/Rendering/Pango/Structs.hsc" #-} 1 -> do {-# LINE 375 "Graphics/Rendering/Pango/Structs.hsc" #-} lang <- (\hsc_ptr -> peekByteOff hsc_ptr 16) attrPtr {-# LINE 376 "Graphics/Rendering/Pango/Structs.hsc" #-} return $ AttrLanguage b e (Language lang) 2 -> do {-# LINE 378 "Graphics/Rendering/Pango/Structs.hsc" #-} strPtr <- (\hsc_ptr -> peekByteOff hsc_ptr 16) attrPtr {-# LINE 379 "Graphics/Rendering/Pango/Structs.hsc" #-} str <- peekUTFString strPtr return $ AttrFamily b e str 3 -> do {-# LINE 382 "Graphics/Rendering/Pango/Structs.hsc" #-} v <- (\hsc_ptr -> peekByteOff hsc_ptr 16) attrPtr {-# LINE 383 "Graphics/Rendering/Pango/Structs.hsc" #-} return $ AttrStyle b e (toEnum (fromIntegral (v::Int32))) {-# LINE 384 "Graphics/Rendering/Pango/Structs.hsc" #-} 4 -> do {-# LINE 385 "Graphics/Rendering/Pango/Structs.hsc" #-} v <- (\hsc_ptr -> peekByteOff hsc_ptr 16) attrPtr {-# LINE 386 "Graphics/Rendering/Pango/Structs.hsc" #-} return $ AttrWeight b e (toEnum (fromIntegral (v::Int32))) {-# LINE 387 "Graphics/Rendering/Pango/Structs.hsc" #-} 5 -> do {-# LINE 388 "Graphics/Rendering/Pango/Structs.hsc" #-} v <- (\hsc_ptr -> peekByteOff hsc_ptr 16) attrPtr {-# LINE 389 "Graphics/Rendering/Pango/Structs.hsc" #-} return $ AttrVariant b e (toEnum (fromIntegral (v::Int32))) {-# LINE 390 "Graphics/Rendering/Pango/Structs.hsc" #-} 6 -> do {-# LINE 391 "Graphics/Rendering/Pango/Structs.hsc" #-} v <- (\hsc_ptr -> peekByteOff hsc_ptr 16) attrPtr {-# LINE 392 "Graphics/Rendering/Pango/Structs.hsc" #-} return $ AttrStretch b e (toEnum (fromIntegral (v::Int32))) {-# LINE 393 "Graphics/Rendering/Pango/Structs.hsc" #-} 7 -> do {-# LINE 394 "Graphics/Rendering/Pango/Structs.hsc" #-} v <- (\hsc_ptr -> peekByteOff hsc_ptr 16) attrPtr {-# LINE 395 "Graphics/Rendering/Pango/Structs.hsc" #-} return $ AttrSize b e (realToFrac (v::Double)) {-# LINE 396 "Graphics/Rendering/Pango/Structs.hsc" #-} {-# LINE 397 "Graphics/Rendering/Pango/Structs.hsc" #-} 20 -> do {-# LINE 398 "Graphics/Rendering/Pango/Structs.hsc" #-} v <- (\hsc_ptr -> peekByteOff hsc_ptr 16) attrPtr {-# LINE 399 "Graphics/Rendering/Pango/Structs.hsc" #-} return $ AttrAbsSize b e (realToFrac (v::Double)) {-# LINE 400 "Graphics/Rendering/Pango/Structs.hsc" #-} {-# LINE 401 "Graphics/Rendering/Pango/Structs.hsc" #-} 8 -> do {-# LINE 402 "Graphics/Rendering/Pango/Structs.hsc" #-} fdPtr <- (\hsc_ptr -> peekByteOff hsc_ptr 16) attrPtr {-# LINE 403 "Graphics/Rendering/Pango/Structs.hsc" #-} fd <- makeNewFontDescription fdPtr return $ AttrFontDescription b e fd 9 -> do {-# LINE 406 "Graphics/Rendering/Pango/Structs.hsc" #-} col <- peekPangoColor ((\hsc_ptr -> hsc_ptr `plusPtr` 16) attrPtr) {-# LINE 407 "Graphics/Rendering/Pango/Structs.hsc" #-} return $ AttrForeground b e col 10 -> do {-# LINE 409 "Graphics/Rendering/Pango/Structs.hsc" #-} col <- peekPangoColor ((\hsc_ptr -> hsc_ptr `plusPtr` 16) attrPtr) {-# LINE 410 "Graphics/Rendering/Pango/Structs.hsc" #-} return $ AttrBackground b e col 11 -> do {-# LINE 412 "Graphics/Rendering/Pango/Structs.hsc" #-} v <- (\hsc_ptr -> peekByteOff hsc_ptr 16) attrPtr {-# LINE 413 "Graphics/Rendering/Pango/Structs.hsc" #-} return $ AttrUnderline b e (toEnum (fromIntegral (v::Int32))) {-# LINE 414 "Graphics/Rendering/Pango/Structs.hsc" #-} {-# LINE 416 "Graphics/Rendering/Pango/Structs.hsc" #-} 18 -> do {-# LINE 417 "Graphics/Rendering/Pango/Structs.hsc" #-} col <- peekPangoColor ((\hsc_ptr -> hsc_ptr `plusPtr` 16) attrPtr) {-# LINE 418 "Graphics/Rendering/Pango/Structs.hsc" #-} return $ AttrUnderlineColor b e col {-# LINE 420 "Graphics/Rendering/Pango/Structs.hsc" #-} 12 -> do {-# LINE 421 "Graphics/Rendering/Pango/Structs.hsc" #-} v <- (\hsc_ptr -> peekByteOff hsc_ptr 16) attrPtr {-# LINE 422 "Graphics/Rendering/Pango/Structs.hsc" #-} return $ AttrStrikethrough b e (toEnum (fromIntegral (v::Int32))) {-# LINE 423 "Graphics/Rendering/Pango/Structs.hsc" #-} {-# LINE 425 "Graphics/Rendering/Pango/Structs.hsc" #-} 19 -> do {-# LINE 426 "Graphics/Rendering/Pango/Structs.hsc" #-} col <- peekPangoColor ((\hsc_ptr -> hsc_ptr `plusPtr` 16) attrPtr) {-# LINE 427 "Graphics/Rendering/Pango/Structs.hsc" #-} return $ AttrStrikethroughColor b e col {-# LINE 429 "Graphics/Rendering/Pango/Structs.hsc" #-} 13 -> do {-# LINE 430 "Graphics/Rendering/Pango/Structs.hsc" #-} v <- (\hsc_ptr -> peekByteOff hsc_ptr 16) attrPtr {-# LINE 431 "Graphics/Rendering/Pango/Structs.hsc" #-} return $ AttrRise b e (realToFrac (v::Double)) {-# LINE 432 "Graphics/Rendering/Pango/Structs.hsc" #-} {-# LINE 433 "Graphics/Rendering/Pango/Structs.hsc" #-} 14 -> do {-# LINE 434 "Graphics/Rendering/Pango/Structs.hsc" #-} rect1 <- (\hsc_ptr -> peekByteOff hsc_ptr 16) attrPtr {-# LINE 435 "Graphics/Rendering/Pango/Structs.hsc" #-} rect2 <- (\hsc_ptr -> peekByteOff hsc_ptr 32) attrPtr {-# LINE 436 "Graphics/Rendering/Pango/Structs.hsc" #-} return $ AttrShape b e rect1 rect2 {-# LINE 438 "Graphics/Rendering/Pango/Structs.hsc" #-} 15 -> do {-# LINE 439 "Graphics/Rendering/Pango/Structs.hsc" #-} v <- (\hsc_ptr -> peekByteOff hsc_ptr 16) attrPtr {-# LINE 440 "Graphics/Rendering/Pango/Structs.hsc" #-} return $ AttrScale b e (realToFrac (v::Double)) {-# LINE 441 "Graphics/Rendering/Pango/Structs.hsc" #-} {-# LINE 442 "Graphics/Rendering/Pango/Structs.hsc" #-} 16 -> do {-# LINE 443 "Graphics/Rendering/Pango/Structs.hsc" #-} v <- (\hsc_ptr -> peekByteOff hsc_ptr 16) attrPtr {-# LINE 444 "Graphics/Rendering/Pango/Structs.hsc" #-} return $ AttrFallback b e (toBool (v::Int32)) {-# LINE 445 "Graphics/Rendering/Pango/Structs.hsc" #-} {-# LINE 446 "Graphics/Rendering/Pango/Structs.hsc" #-} {-# LINE 447 "Graphics/Rendering/Pango/Structs.hsc" #-} 17 -> do {-# LINE 448 "Graphics/Rendering/Pango/Structs.hsc" #-} v <- (\hsc_ptr -> peekByteOff hsc_ptr 16) attrPtr {-# LINE 449 "Graphics/Rendering/Pango/Structs.hsc" #-} return $ AttrLetterSpacing b e (realToFrac (v::Double)) {-# LINE 450 "Graphics/Rendering/Pango/Structs.hsc" #-} {-# LINE 451 "Graphics/Rendering/Pango/Structs.hsc" #-} {-# LINE 452 "Graphics/Rendering/Pango/Structs.hsc" #-} 21 -> do {-# LINE 453 "Graphics/Rendering/Pango/Structs.hsc" #-} v <- (\hsc_ptr -> peekByteOff hsc_ptr 16) attrPtr {-# LINE 454 "Graphics/Rendering/Pango/Structs.hsc" #-} return $ AttrGravity b e (toEnum (fromIntegral (v::Int32))) {-# LINE 455 "Graphics/Rendering/Pango/Structs.hsc" #-} 22 -> do {-# LINE 456 "Graphics/Rendering/Pango/Structs.hsc" #-} v <- (\hsc_ptr -> peekByteOff hsc_ptr 16) attrPtr {-# LINE 457 "Graphics/Rendering/Pango/Structs.hsc" #-} return $ AttrGravityHint b e (toEnum (fromIntegral (v::Int32))) {-# LINE 458 "Graphics/Rendering/Pango/Structs.hsc" #-} {-# LINE 459 "Graphics/Rendering/Pango/Structs.hsc" #-} _ -> error "extracting pango attributes: unknown attribute type"