diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/Xmobar/X11/Text.hs | 33 | ||||
| -rw-r--r-- | src/Xmobar/X11/XlibDraw.hs | 32 | 
2 files changed, 15 insertions, 50 deletions
| diff --git a/src/Xmobar/X11/Text.hs b/src/Xmobar/X11/Text.hs index 8de2e7d..6da96fa 100644 --- a/src/Xmobar/X11/Text.hs +++ b/src/Xmobar/X11/Text.hs @@ -3,7 +3,7 @@  -----------------------------------------------------------------------------  -- |  -- Module      :  Xmobar.X11.Text --- Copyright   :  (C) 2011, 2012, 2013, 2014, 2015, 2017, 2018, 2022 Jose Antonio Ortega Ruiz +-- Copyright   :  (C) 2011-2015, 2017, 2018, 2022 Jose Antonio Ortega Ruiz  --                (C) 2007 Andrea Rossato  -- License     :  BSD3  -- @@ -14,10 +14,8 @@  -----------------------------------------------------------------------------  module Xmobar.X11.Text -    ( XFont(..) +    ( XFont      , initFont -    , initCoreFont -    , initUtf8Font      , textExtents      , textWidth      ) where @@ -26,34 +24,19 @@ import Control.Exception (SomeException, handle)  import Foreign  import Graphics.X11.Xlib hiding (textExtents, textWidth) -import qualified Graphics.X11.Xlib as Xlib (textExtents, textWidth)  import Graphics.X11.Xlib.Extras  import System.Mem.Weak ( addFinalizer ) -data XFont = Core FontStruct -           | Utf8 FontSet +type XFont = FontSet --- | When initFont gets a font name that starts with 'xft:' it switchs --- to the Xft backend Example: 'xft:Sans-10'  initFont :: Display -> String -> IO XFont -initFont d s = fmap Utf8 $ initUtf8Font d s +initFont = initUtf8Font  miscFixedFont :: String  miscFixedFont = "-misc-fixed-*-*-*-*-*-*-*-*-*-*-*-*"  -- | Given a fontname returns the font structure. If the font name is  --  not valid the default font will be loaded and returned. -initCoreFont :: Display -> String -> IO FontStruct -initCoreFont d s = do -  f <- handle fallBack getIt -  addFinalizer f (freeFont d f) -  return f -      where getIt = loadQueryFont d s -            fallBack :: SomeException -> IO FontStruct -            fallBack = const $ loadQueryFont d miscFixedFont - --- | Given a fontname returns the font structure. If the font name is ---  not valid the default font will be loaded and returned.  initUtf8Font :: Display -> String -> IO FontSet  initUtf8Font d s = do    (_,_,f) <- handle fallBack getIt @@ -64,14 +47,10 @@ initUtf8Font d s = do              fallBack = const $ createFontSet d miscFixedFont  textWidth :: Display -> XFont -> String -> IO Int -textWidth _   (Utf8 fs) s = return $ fromIntegral $ wcTextEscapement fs s -textWidth _   (Core fs) s = return $ fromIntegral $ Xlib.textWidth fs s +textWidth _   fs s = return $ fromIntegral $ wcTextEscapement fs s  textExtents :: XFont -> String -> IO (Int32,Int32) -textExtents (Core fs) s = do -  let (_,a,d,_) = Xlib.textExtents fs s -  return (a,d) -textExtents (Utf8 fs) s = do +textExtents fs s = do    let (_,rl)  = wcTextExtents fs s        ascent  = fromIntegral $ negate (rect_y rl)        descent = fromIntegral $ rect_height rl + fromIntegral (rect_y rl) diff --git a/src/Xmobar/X11/XlibDraw.hs b/src/Xmobar/X11/XlibDraw.hs index 9a005e8..d1432f8 100644 --- a/src/Xmobar/X11/XlibDraw.hs +++ b/src/Xmobar/X11/XlibDraw.hs @@ -81,31 +81,17 @@ verticalOffset ht (Icon _) _ _ conf    | otherwise = return $ fi (ht `div` 2) - 1  verticalOffset _ (Hspace _) _ voffs _ = return $ fi voffs -printString :: Display -            -> Drawable -            -> XFont -            -> GC -            -> String -            -> String -            -> Position -            -> Position -            -> Position -            -> Position -            -> String -            -> Int +printString :: Display -> Drawable -> XFont -> GC +            -> String -> String +            -> Position -> Position -> Position -> Position +            -> String -> Int              -> IO () -printString d p (Core fs) gc fc bc x y _ _ s a = do -    setFont d gc $ fontFromFontStruct fs -    withColors d [fc, bc] $ \[fc', bc'] -> do -      setForeground d gc fc' -      when (a == 255) (setBackground d gc bc') -      drawImageString d p gc x y s -printString d p (Utf8 fs) gc fc bc x y _ _ s a = -    withColors d [fc, bc] $ \[fc', bc'] -> do -      setForeground d gc fc' -      when (a == 255) (setBackground d gc bc') -      liftIO $ wcDrawImageString d p fs gc x y s +printString d p fs gc fc bc x y _ _ s a = +   withColors d [fc, bc] $ \[fc', bc'] -> do +     setForeground d gc fc' +     when (a == 255) (setBackground d gc bc') +     liftIO $ wcDrawImageString d p fs gc x y s  -- | An easy way to print the stuff we need to print  printStrings :: Drawable | 
