{-# LANGUAGE OverloadedStrings #-} module PDF.TextRendering ( TextRendering(..) , update ) where import Data.ByteString.Lazy.Char8 (ByteString) import qualified Data.ByteString.Lazy.Char8 as BS (pack, readInt, unwords, words) data TextRendering = Fill | Stroke | FillStroke | Invisible | FillAddPath | StrokeAddPath | FillStrokeAddPath | AddPath deriving (Enum, Show) update :: (TextRendering -> TextRendering) -> ByteString -> ByteString update f = BS.unwords . changeTextRendering . BS.words where changeTextRendering :: [ByteString] -> [ByteString] changeTextRendering l@[value, "Tr"] = case BS.readInt value of Just (n, _) -> [BS.pack . show . fromEnum . f $ toEnum n, "Tr"] _ -> l changeTextRendering l = l