{-# LANGUAGE OverloadedStrings #-} -- | Content stream operators module Pdf.Toolbox.Content.Ops ( Op(..), Expr(..), Operator, toOp ) where import Data.ByteString (ByteString) import Pdf.Toolbox.Core -- | Operator with arguments type Operator = (Op, [Object ()]) -- | Content stream operators data Op -- | Graphics State Operators = Op_q | Op_Q | Op_cm | Op_w | Op_J | Op_j | Op_M | Op_d | Op_ri | Op_i | Op_gs -- | Path Construction Operators | Op_m | Op_l | Op_c | Op_v | Op_y | Op_h | Op_re -- | Path Painting Operators | Op_S | Op_s | Op_f | Op_F | Op_f_star | Op_B | Op_B_star | Op_b | Op_b_star | Op_n -- | Clipping Path Operators | Op_W | Op_W_star -- | Text Object Operators | Op_BT | Op_ET -- | Text State Operators | Op_Tc | Op_Tw | Op_Tz | Op_TL | Op_Tf | Op_Tr | Op_Ts -- | Text Positioning Operators | Op_Td | Op_TD | Op_Tm | Op_T_star -- | Text Showing Operators | Op_Tj | Op_apostrophe | Op_quote | Op_TJ -- | Type 3 Font Operators | Op_d0 | Op_d1 -- | Color Operators | Op_CS | Op_cs | Op_SC | Op_SCN | Op_sc | Op_scn | Op_G | Op_g | Op_RG | Op_rg | Op_K | Op_k -- | Shading Operator | Op_sh -- | Inline Image Operators | Op_BI | Op_ID | Op_EI -- | XObject Operator | Op_Do -- | Marked Content Operators | Op_MP | Op_DP | Op_BMC | Op_BDC | Op_EMC -- | Compatibility Operators | Op_BX | Op_EX -- | Unknown | UnknownOp ByteString deriving (Show, Eq) -- | Expression is a regular objects or an operators data Expr = Obj (Object ()) | Op Op deriving (Show, Eq) -- | Conversion to operator toOp :: ByteString -> Op toOp "q" = Op_q toOp "Q" = Op_Q toOp "cm" = Op_cm toOp "w" = Op_w toOp "J" = Op_J toOp "j" = Op_j toOp "M" = Op_M toOp "d" = Op_d toOp "ri" = Op_ri toOp "i" = Op_i toOp "gs" = Op_gs toOp "m" = Op_m toOp "l" = Op_l toOp "c" = Op_c toOp "v" = Op_v toOp "y" = Op_y toOp "h" = Op_h toOp "re" = Op_re toOp "S" = Op_S toOp "s" = Op_s toOp "f" = Op_f toOp "F" = Op_F toOp "f*" = Op_f_star toOp "B" = Op_B toOp "B*" = Op_B_star toOp "b" = Op_b toOp "b*" = Op_b_star toOp "n" = Op_n toOp "W" = Op_W toOp "W*" = Op_W_star toOp "BT" = Op_BT toOp "ET" = Op_ET toOp "Tc" = Op_Tc toOp "Tw" = Op_Tw toOp "Tz" = Op_Tz toOp "TL" = Op_TL toOp "Tf" = Op_Tf toOp "Tr" = Op_Tr toOp "Ts" = Op_Ts toOp "Td" = Op_Td toOp "TD" = Op_TD toOp "Tm" = Op_Tm toOp "T*" = Op_T_star toOp "Tj" = Op_Tj toOp "'" = Op_apostrophe toOp "\"" = Op_quote toOp "TJ" = Op_TJ toOp "d0" = Op_d0 toOp "d1" = Op_d1 toOp "CS" = Op_CS toOp "cs" = Op_cs toOp "SC" = Op_SC toOp "SCN" = Op_SCN toOp "sc" = Op_sc toOp "scn" = Op_scn toOp "G" = Op_G toOp "g" = Op_g toOp "RG" = Op_RG toOp "rg" = Op_rg toOp "K" = Op_K toOp "k" = Op_k toOp "sh" = Op_sh toOp "BI" = Op_BI toOp "ID" = Op_ID toOp "EI" = Op_EI toOp "Do" = Op_Do toOp "MP" = Op_MP toOp "DP" = Op_DP toOp "BMC" = Op_BMC toOp "BDC" = Op_BDC toOp "EMC" = Op_EMC toOp "BX" = Op_BX toOp "EX" = Op_EX toOp str = UnknownOp str