xlsx-0.7.0: src/Codec/Xlsx/Types/PageSetup.hs
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE DeriveGeneric #-}
module Codec.Xlsx.Types.PageSetup (
-- * Main types
PageSetup(..)
-- * Enumerations
, CellComments(..)
, PrintErrors(..)
, Orientation(..)
, PageOrder(..)
, PaperSize(..)
-- * Lenses
-- ** PageSetup
, pageSetupBlackAndWhite
, pageSetupCellComments
, pageSetupCopies
, pageSetupDraft
, pageSetupErrors
, pageSetupFirstPageNumber
, pageSetupFitToHeight
, pageSetupFitToWidth
, pageSetupHorizontalDpi
, pageSetupId
, pageSetupOrientation
, pageSetupPageOrder
, pageSetupPaperHeight
, pageSetupPaperSize
, pageSetupPaperWidth
, pageSetupScale
, pageSetupUseFirstPageNumber
, pageSetupUsePrinterDefaults
, pageSetupVerticalDpi
) where
import Control.Lens (makeLenses)
import Control.DeepSeq (NFData)
import Data.Default
import qualified Data.Map as Map
import Data.Maybe (catMaybes)
import Data.Text (Text)
import GHC.Generics (Generic)
import Text.XML
import Codec.Xlsx.Writer.Internal
import Codec.Xlsx.Parser.Internal
{-------------------------------------------------------------------------------
Main types
-------------------------------------------------------------------------------}
data PageSetup = PageSetup {
-- | Print black and white.
_pageSetupBlackAndWhite :: Maybe Bool
-- | This attribute specifies how to print cell comments.
, _pageSetupCellComments :: Maybe CellComments
-- | Number of copies to print.
, _pageSetupCopies :: Maybe Int
-- | Print without graphics.
, _pageSetupDraft :: Maybe Bool
-- | Specifies how to print cell values for cells with errors.
, _pageSetupErrors :: Maybe PrintErrors
-- | Page number for first printed page. If no value is specified, then
-- 'automatic' is assumed.
, _pageSetupFirstPageNumber :: Maybe Int
-- | Number of vertical pages to fit on.
, _pageSetupFitToHeight :: Maybe Int
-- | Number of horizontal pages to fit on.
, _pageSetupFitToWidth :: Maybe Int
-- | Horizontal print resolution of the device.
, _pageSetupHorizontalDpi :: Maybe Int
-- | Relationship Id of the devMode printer settings part.
--
-- (Explicit reference to a parent XML element.)
--
-- See 22.8.2.1 "ST_RelationshipId (Explicit Relationship ID)" (p. 3784)
, _pageSetupId :: Maybe Text
-- | Orientation of the page.
, _pageSetupOrientation :: Maybe Orientation
-- | Order of printed pages
, _pageSetupPageOrder :: Maybe PageOrder
-- | Height of custom paper as a number followed by a unit identifier.
--
-- When paperHeight and paperWidth are specified, paperSize shall be ignored.
-- Examples: @"297mm"@, @"11in"@.
--
-- See 22.9.2.12 "ST_PositiveUniversalMeasure (Positive Universal Measurement)" (p. 3792)
, _pageSetupPaperHeight :: Maybe Text
-- | Pager size
--
-- When paperHeight, paperWidth, and paperUnits are specified, paperSize
-- should be ignored.
, _pageSetupPaperSize :: Maybe PaperSize
-- | Width of custom paper as a number followed by a unit identifier
--
-- Examples: @21cm@, @8.5in@
--
-- When paperHeight and paperWidth are specified, paperSize shall be
-- ignored.
, _pageSetupPaperWidth :: Maybe Text
-- | Print scaling.
--
-- This attribute is restricted to values ranging from 10 to 400.
-- This setting is overridden when fitToWidth and/or fitToHeight are in
-- use.
, _pageSetupScale :: Maybe Int
-- | Use '_pageSetupFirstPageNumber' value for first page number, and do
-- not auto number the pages.
, _pageSetupUseFirstPageNumber :: Maybe Bool
-- | Use the printer’s defaults settings for page setup values and don't
-- use the default values specified in the schema.
--
-- Example: If dpi is not present or specified in the XML, the application
-- must not assume 600dpi as specified in the schema as a default and
-- instead must let the printer specify the default dpi.
, _pageSetupUsePrinterDefaults :: Maybe Bool
-- | Vertical print resolution of the device.
, _pageSetupVerticalDpi :: Maybe Int
}
deriving (Eq, Ord, Show, Generic)
instance NFData PageSetup
{-------------------------------------------------------------------------------
Enumerations
-------------------------------------------------------------------------------}
-- | Cell comments
--
-- These enumerations specify how cell comments shall be displayed for paper
-- printing purposes.
--
-- See 18.18.5 "ST_CellComments (Cell Comments)" (p. 2441).
data CellComments =
-- | Print cell comments as displayed
CellCommentsAsDisplayed
-- | Print cell comments at end of document
| CellCommentsAtEnd
-- | Do not print cell comments
| CellCommentsNone
deriving (Eq, Ord, Show, Generic)
instance NFData CellComments
-- | Print errors
--
-- This enumeration specifies how to display cells with errors when printing the
-- worksheet.
data PrintErrors =
-- | Display cell errors as blank
PrintErrorsBlank
-- | Display cell errors as dashes
| PrintErrorsDash
-- | Display cell errors as displayed on screen
| PrintErrorsDisplayed
-- | Display cell errors as @#N/A@
| PrintErrorsNA
deriving (Eq, Ord, Show, Generic)
instance NFData PrintErrors
-- | Print orientation for this sheet
data Orientation =
OrientationDefault
| OrientationLandscape
| OrientationPortrait
deriving (Eq, Ord, Show, Generic)
instance NFData Orientation
-- | Specifies printed page order
data PageOrder =
-- | Order pages vertically first, then move horizontally
PageOrderDownThenOver
-- | Order pages horizontally first, then move vertically
| PageOrderOverThenDown
deriving (Eq, Ord, Show, Generic)
instance NFData PageOrder
-- | Paper size
data PaperSize =
PaperA2 -- ^ A2 paper (420 mm by 594 mm)
| PaperA3 -- ^ A3 paper (297 mm by 420 mm)
| PaperA3Extra -- ^ A3 extra paper (322 mm by 445 mm)
| PaperA3ExtraTransverse -- ^ A3 extra transverse paper (322 mm by 445 mm)
| PaperA3Transverse -- ^ A3 transverse paper (297 mm by 420 mm)
| PaperA4 -- ^ A4 paper (210 mm by 297 mm)
| PaperA4Extra -- ^ A4 extra paper (236 mm by 322 mm)
| PaperA4Plus -- ^ A4 plus paper (210 mm by 330 mm)
| PaperA4Small -- ^ A4 small paper (210 mm by 297 mm)
| PaperA4Transverse -- ^ A4 transverse paper (210 mm by 297 mm)
| PaperA5 -- ^ A5 paper (148 mm by 210 mm)
| PaperA5Extra -- ^ A5 extra paper (174 mm by 235 mm)
| PaperA5Transverse -- ^ A5 transverse paper (148 mm by 210 mm)
| PaperB4 -- ^ B4 paper (250 mm by 353 mm)
| PaperB5 -- ^ B5 paper (176 mm by 250 mm)
| PaperC -- ^ C paper (17 in. by 22 in.)
| PaperD -- ^ D paper (22 in. by 34 in.)
| PaperE -- ^ E paper (34 in. by 44 in.)
| PaperExecutive -- ^ Executive paper (7.25 in. by 10.5 in.)
| PaperFanfoldGermanLegal -- ^ German legal fanfold (8.5 in. by 13 in.)
| PaperFanfoldGermanStandard -- ^ German standard fanfold (8.5 in. by 12 in.)
| PaperFanfoldUsStandard -- ^ US standard fanfold (14.875 in. by 11 in.)
| PaperFolio -- ^ Folio paper (8.5 in. by 13 in.)
| PaperIsoB4 -- ^ ISO B4 (250 mm by 353 mm)
| PaperIsoB5Extra -- ^ ISO B5 extra paper (201 mm by 276 mm)
| PaperJapaneseDoublePostcard -- ^ Japanese double postcard (200 mm by 148 mm)
| PaperJisB5Transverse -- ^ JIS B5 transverse paper (182 mm by 257 mm)
| PaperLedger -- ^ Ledger paper (17 in. by 11 in.)
| PaperLegal -- ^ Legal paper (8.5 in. by 14 in.)
| PaperLegalExtra -- ^ Legal extra paper (9.275 in. by 15 in.)
| PaperLetter -- ^ Letter paper (8.5 in. by 11 in.)
| PaperLetterExtra -- ^ Letter extra paper (9.275 in. by 12 in.)
| PaperLetterExtraTransverse -- ^ Letter extra transverse paper (9.275 in. by 12 in.)
| PaperLetterPlus -- ^ Letter plus paper (8.5 in. by 12.69 in.)
| PaperLetterSmall -- ^ Letter small paper (8.5 in. by 11 in.)
| PaperLetterTransverse -- ^ Letter transverse paper (8.275 in. by 11 in.)
| PaperNote -- ^ Note paper (8.5 in. by 11 in.)
| PaperQuarto -- ^ Quarto paper (215 mm by 275 mm)
| PaperStandard9_11 -- ^ Standard paper (9 in. by 11 in.)
| PaperStandard10_11 -- ^ Standard paper (10 in. by 11 in.)
| PaperStandard10_14 -- ^ Standard paper (10 in. by 14 in.)
| PaperStandard11_17 -- ^ Standard paper (11 in. by 17 in.)
| PaperStandard15_11 -- ^ Standard paper (15 in. by 11 in.)
| PaperStatement -- ^ Statement paper (5.5 in. by 8.5 in.)
| PaperSuperA -- ^ SuperA/SuperA/A4 paper (227 mm by 356 mm)
| PaperSuperB -- ^ SuperB/SuperB/A3 paper (305 mm by 487 mm)
| PaperTabloid -- ^ Tabloid paper (11 in. by 17 in.)
| PaperTabloidExtra -- ^ Tabloid extra paper (11.69 in. by 18 in.)
| Envelope6_3_4 -- ^ 6 3/4 envelope (3.625 in. by 6.5 in.)
| Envelope9 -- ^ #9 envelope (3.875 in. by 8.875 in.)
| Envelope10 -- ^ #10 envelope (4.125 in. by 9.5 in.)
| Envelope11 -- ^ #11 envelope (4.5 in. by 10.375 in.)
| Envelope12 -- ^ #12 envelope (4.75 in. by 11 in.)
| Envelope14 -- ^ #14 envelope (5 in. by 11.5 in.)
| EnvelopeB4 -- ^ B4 envelope (250 mm by 353 mm)
| EnvelopeB5 -- ^ B5 envelope (176 mm by 250 mm)
| EnvelopeB6 -- ^ B6 envelope (176 mm by 125 mm)
| EnvelopeC3 -- ^ C3 envelope (324 mm by 458 mm)
| EnvelopeC4 -- ^ C4 envelope (229 mm by 324 mm)
| EnvelopeC5 -- ^ C5 envelope (162 mm by 229 mm)
| EnvelopeC6 -- ^ C6 envelope (114 mm by 162 mm)
| EnvelopeC65 -- ^ C65 envelope (114 mm by 229 mm)
| EnvelopeDL -- ^ DL envelope (110 mm by 220 mm)
| EnvelopeInvite -- ^ Invite envelope (220 mm by 220 mm)
| EnvelopeItaly -- ^ Italy envelope (110 mm by 230 mm)
| EnvelopeMonarch -- ^ Monarch envelope (3.875 in. by 7.5 in.).
deriving (Eq, Ord, Show, Generic)
instance NFData PaperSize
{-------------------------------------------------------------------------------
Default instances
-------------------------------------------------------------------------------}
instance Default PageSetup where
def = PageSetup {
_pageSetupBlackAndWhite = Nothing
, _pageSetupCellComments = Nothing
, _pageSetupCopies = Nothing
, _pageSetupDraft = Nothing
, _pageSetupErrors = Nothing
, _pageSetupFirstPageNumber = Nothing
, _pageSetupFitToHeight = Nothing
, _pageSetupFitToWidth = Nothing
, _pageSetupHorizontalDpi = Nothing
, _pageSetupId = Nothing
, _pageSetupOrientation = Nothing
, _pageSetupPageOrder = Nothing
, _pageSetupPaperHeight = Nothing
, _pageSetupPaperSize = Nothing
, _pageSetupPaperWidth = Nothing
, _pageSetupScale = Nothing
, _pageSetupUseFirstPageNumber = Nothing
, _pageSetupUsePrinterDefaults = Nothing
, _pageSetupVerticalDpi = Nothing
}
{-------------------------------------------------------------------------------
Lenses
-------------------------------------------------------------------------------}
makeLenses ''PageSetup
{-------------------------------------------------------------------------------
Rendering
-------------------------------------------------------------------------------}
-- | See @CT_PageSetup@, p. 3922
instance ToElement PageSetup where
toElement nm PageSetup{..} = Element {
elementName = nm
, elementNodes = []
, elementAttributes = Map.fromList . catMaybes $ [
"paperSize" .=? _pageSetupPaperSize
, "paperHeight" .=? _pageSetupPaperHeight
, "paperWidth" .=? _pageSetupPaperWidth
, "scale" .=? _pageSetupScale
, "firstPageNumber" .=? _pageSetupFirstPageNumber
, "fitToWidth" .=? _pageSetupFitToWidth
, "fitToHeight" .=? _pageSetupFitToHeight
, "pageOrder" .=? _pageSetupPageOrder
, "orientation" .=? _pageSetupOrientation
, "usePrinterDefaults" .=? _pageSetupUsePrinterDefaults
, "blackAndWhite" .=? _pageSetupBlackAndWhite
, "draft" .=? _pageSetupDraft
, "cellComments" .=? _pageSetupCellComments
, "useFirstPageNumber" .=? _pageSetupUseFirstPageNumber
, "errors" .=? _pageSetupErrors
, "horizontalDpi" .=? _pageSetupHorizontalDpi
, "verticalDpi" .=? _pageSetupVerticalDpi
, "copies" .=? _pageSetupCopies
, "id" .=? _pageSetupId
]
}
-- | See @ST_CellComments@, p. 3923
instance ToAttrVal CellComments where
toAttrVal CellCommentsNone = "none"
toAttrVal CellCommentsAsDisplayed = "asDisplayed"
toAttrVal CellCommentsAtEnd = "atEnd"
-- | See @ST_PrintError@, p. 3923
instance ToAttrVal PrintErrors where
toAttrVal PrintErrorsDisplayed = "displayed"
toAttrVal PrintErrorsBlank = "blank"
toAttrVal PrintErrorsDash = "dash"
toAttrVal PrintErrorsNA = "NA"
-- | See @ST_Orientation@, p. 3923
instance ToAttrVal Orientation where
toAttrVal OrientationDefault = "default"
toAttrVal OrientationPortrait = "portrait"
toAttrVal OrientationLandscape = "landscape"
-- | See @ST_PageOrder@, p. 3923
instance ToAttrVal PageOrder where
toAttrVal PageOrderDownThenOver = "downThenOver"
toAttrVal PageOrderOverThenDown = "overThenDown"
-- | See @paperSize@ (attribute of @pageSetup@), p. 1659
instance ToAttrVal PaperSize where
toAttrVal PaperLetter = "1"
toAttrVal PaperLetterSmall = "2"
toAttrVal PaperTabloid = "3"
toAttrVal PaperLedger = "4"
toAttrVal PaperLegal = "5"
toAttrVal PaperStatement = "6"
toAttrVal PaperExecutive = "7"
toAttrVal PaperA3 = "8"
toAttrVal PaperA4 = "9"
toAttrVal PaperA4Small = "10"
toAttrVal PaperA5 = "11"
toAttrVal PaperB4 = "12"
toAttrVal PaperB5 = "13"
toAttrVal PaperFolio = "14"
toAttrVal PaperQuarto = "15"
toAttrVal PaperStandard10_14 = "16"
toAttrVal PaperStandard11_17 = "17"
toAttrVal PaperNote = "18"
toAttrVal Envelope9 = "19"
toAttrVal Envelope10 = "20"
toAttrVal Envelope11 = "21"
toAttrVal Envelope12 = "22"
toAttrVal Envelope14 = "23"
toAttrVal PaperC = "24"
toAttrVal PaperD = "25"
toAttrVal PaperE = "26"
toAttrVal EnvelopeDL = "27"
toAttrVal EnvelopeC5 = "28"
toAttrVal EnvelopeC3 = "29"
toAttrVal EnvelopeC4 = "30"
toAttrVal EnvelopeC6 = "31"
toAttrVal EnvelopeC65 = "32"
toAttrVal EnvelopeB4 = "33"
toAttrVal EnvelopeB5 = "34"
toAttrVal EnvelopeB6 = "35"
toAttrVal EnvelopeItaly = "36"
toAttrVal EnvelopeMonarch = "37"
toAttrVal Envelope6_3_4 = "38"
toAttrVal PaperFanfoldUsStandard = "39"
toAttrVal PaperFanfoldGermanStandard = "40"
toAttrVal PaperFanfoldGermanLegal = "41"
toAttrVal PaperIsoB4 = "42"
toAttrVal PaperJapaneseDoublePostcard = "43"
toAttrVal PaperStandard9_11 = "44"
toAttrVal PaperStandard10_11 = "45"
toAttrVal PaperStandard15_11 = "46"
toAttrVal EnvelopeInvite = "47"
toAttrVal PaperLetterExtra = "50"
toAttrVal PaperLegalExtra = "51"
toAttrVal PaperTabloidExtra = "52"
toAttrVal PaperA4Extra = "53"
toAttrVal PaperLetterTransverse = "54"
toAttrVal PaperA4Transverse = "55"
toAttrVal PaperLetterExtraTransverse = "56"
toAttrVal PaperSuperA = "57"
toAttrVal PaperSuperB = "58"
toAttrVal PaperLetterPlus = "59"
toAttrVal PaperA4Plus = "60"
toAttrVal PaperA5Transverse = "61"
toAttrVal PaperJisB5Transverse = "62"
toAttrVal PaperA3Extra = "63"
toAttrVal PaperA5Extra = "64"
toAttrVal PaperIsoB5Extra = "65"
toAttrVal PaperA2 = "66"
toAttrVal PaperA3Transverse = "67"
toAttrVal PaperA3ExtraTransverse = "68"
{-------------------------------------------------------------------------------
Parsing
-------------------------------------------------------------------------------}
-- | See @CT_PageSetup@, p. 3922
instance FromCursor PageSetup where
fromCursor cur = do
_pageSetupPaperSize <- maybeAttribute "paperSize" cur
_pageSetupPaperHeight <- maybeAttribute "paperHeight" cur
_pageSetupPaperWidth <- maybeAttribute "paperWidth" cur
_pageSetupScale <- maybeAttribute "scale" cur
_pageSetupFirstPageNumber <- maybeAttribute "firstPageNumber" cur
_pageSetupFitToWidth <- maybeAttribute "fitToWidth" cur
_pageSetupFitToHeight <- maybeAttribute "fitToHeight" cur
_pageSetupPageOrder <- maybeAttribute "pageOrder" cur
_pageSetupOrientation <- maybeAttribute "orientation" cur
_pageSetupUsePrinterDefaults <- maybeAttribute "usePrinterDefaults" cur
_pageSetupBlackAndWhite <- maybeAttribute "blackAndWhite" cur
_pageSetupDraft <- maybeAttribute "draft" cur
_pageSetupCellComments <- maybeAttribute "cellComments" cur
_pageSetupUseFirstPageNumber <- maybeAttribute "useFirstPageNumber" cur
_pageSetupErrors <- maybeAttribute "errors" cur
_pageSetupHorizontalDpi <- maybeAttribute "horizontalDpi" cur
_pageSetupVerticalDpi <- maybeAttribute "verticalDpi" cur
_pageSetupCopies <- maybeAttribute "copies" cur
_pageSetupId <- maybeAttribute "id" cur
return PageSetup{..}
instance FromXenoNode PageSetup where
fromXenoNode root =
parseAttributes root $ do
_pageSetupPaperSize <- maybeAttr "paperSize"
_pageSetupPaperHeight <- maybeAttr "paperHeight"
_pageSetupPaperWidth <- maybeAttr "paperWidth"
_pageSetupScale <- maybeAttr "scale"
_pageSetupFirstPageNumber <- maybeAttr "firstPageNumber"
_pageSetupFitToWidth <- maybeAttr "fitToWidth"
_pageSetupFitToHeight <- maybeAttr "fitToHeight"
_pageSetupPageOrder <- maybeAttr "pageOrder"
_pageSetupOrientation <- maybeAttr "orientation"
_pageSetupUsePrinterDefaults <- maybeAttr "usePrinterDefaults"
_pageSetupBlackAndWhite <- maybeAttr "blackAndWhite"
_pageSetupDraft <- maybeAttr "draft"
_pageSetupCellComments <- maybeAttr "cellComments"
_pageSetupUseFirstPageNumber <- maybeAttr "useFirstPageNumber"
_pageSetupErrors <- maybeAttr "errors"
_pageSetupHorizontalDpi <- maybeAttr "horizontalDpi"
_pageSetupVerticalDpi <- maybeAttr "verticalDpi"
_pageSetupCopies <- maybeAttr "copies"
_pageSetupId <- maybeAttr "id"
return PageSetup {..}
-- | See @paperSize@ (attribute of @pageSetup@), p. 1659
instance FromAttrVal PaperSize where
fromAttrVal "1" = readSuccess PaperLetter
fromAttrVal "2" = readSuccess PaperLetterSmall
fromAttrVal "3" = readSuccess PaperTabloid
fromAttrVal "4" = readSuccess PaperLedger
fromAttrVal "5" = readSuccess PaperLegal
fromAttrVal "6" = readSuccess PaperStatement
fromAttrVal "7" = readSuccess PaperExecutive
fromAttrVal "8" = readSuccess PaperA3
fromAttrVal "9" = readSuccess PaperA4
fromAttrVal "10" = readSuccess PaperA4Small
fromAttrVal "11" = readSuccess PaperA5
fromAttrVal "12" = readSuccess PaperB4
fromAttrVal "13" = readSuccess PaperB5
fromAttrVal "14" = readSuccess PaperFolio
fromAttrVal "15" = readSuccess PaperQuarto
fromAttrVal "16" = readSuccess PaperStandard10_14
fromAttrVal "17" = readSuccess PaperStandard11_17
fromAttrVal "18" = readSuccess PaperNote
fromAttrVal "19" = readSuccess Envelope9
fromAttrVal "20" = readSuccess Envelope10
fromAttrVal "21" = readSuccess Envelope11
fromAttrVal "22" = readSuccess Envelope12
fromAttrVal "23" = readSuccess Envelope14
fromAttrVal "24" = readSuccess PaperC
fromAttrVal "25" = readSuccess PaperD
fromAttrVal "26" = readSuccess PaperE
fromAttrVal "27" = readSuccess EnvelopeDL
fromAttrVal "28" = readSuccess EnvelopeC5
fromAttrVal "29" = readSuccess EnvelopeC3
fromAttrVal "30" = readSuccess EnvelopeC4
fromAttrVal "31" = readSuccess EnvelopeC6
fromAttrVal "32" = readSuccess EnvelopeC65
fromAttrVal "33" = readSuccess EnvelopeB4
fromAttrVal "34" = readSuccess EnvelopeB5
fromAttrVal "35" = readSuccess EnvelopeB6
fromAttrVal "36" = readSuccess EnvelopeItaly
fromAttrVal "37" = readSuccess EnvelopeMonarch
fromAttrVal "38" = readSuccess Envelope6_3_4
fromAttrVal "39" = readSuccess PaperFanfoldUsStandard
fromAttrVal "40" = readSuccess PaperFanfoldGermanStandard
fromAttrVal "41" = readSuccess PaperFanfoldGermanLegal
fromAttrVal "42" = readSuccess PaperIsoB4
fromAttrVal "43" = readSuccess PaperJapaneseDoublePostcard
fromAttrVal "44" = readSuccess PaperStandard9_11
fromAttrVal "45" = readSuccess PaperStandard10_11
fromAttrVal "46" = readSuccess PaperStandard15_11
fromAttrVal "47" = readSuccess EnvelopeInvite
fromAttrVal "50" = readSuccess PaperLetterExtra
fromAttrVal "51" = readSuccess PaperLegalExtra
fromAttrVal "52" = readSuccess PaperTabloidExtra
fromAttrVal "53" = readSuccess PaperA4Extra
fromAttrVal "54" = readSuccess PaperLetterTransverse
fromAttrVal "55" = readSuccess PaperA4Transverse
fromAttrVal "56" = readSuccess PaperLetterExtraTransverse
fromAttrVal "57" = readSuccess PaperSuperA
fromAttrVal "58" = readSuccess PaperSuperB
fromAttrVal "59" = readSuccess PaperLetterPlus
fromAttrVal "60" = readSuccess PaperA4Plus
fromAttrVal "61" = readSuccess PaperA5Transverse
fromAttrVal "62" = readSuccess PaperJisB5Transverse
fromAttrVal "63" = readSuccess PaperA3Extra
fromAttrVal "64" = readSuccess PaperA5Extra
fromAttrVal "65" = readSuccess PaperIsoB5Extra
fromAttrVal "66" = readSuccess PaperA2
fromAttrVal "67" = readSuccess PaperA3Transverse
fromAttrVal "68" = readSuccess PaperA3ExtraTransverse
fromAttrVal t = invalidText "PaperSize" t
instance FromAttrBs PaperSize where
fromAttrBs "1" = return PaperLetter
fromAttrBs "2" = return PaperLetterSmall
fromAttrBs "3" = return PaperTabloid
fromAttrBs "4" = return PaperLedger
fromAttrBs "5" = return PaperLegal
fromAttrBs "6" = return PaperStatement
fromAttrBs "7" = return PaperExecutive
fromAttrBs "8" = return PaperA3
fromAttrBs "9" = return PaperA4
fromAttrBs "10" = return PaperA4Small
fromAttrBs "11" = return PaperA5
fromAttrBs "12" = return PaperB4
fromAttrBs "13" = return PaperB5
fromAttrBs "14" = return PaperFolio
fromAttrBs "15" = return PaperQuarto
fromAttrBs "16" = return PaperStandard10_14
fromAttrBs "17" = return PaperStandard11_17
fromAttrBs "18" = return PaperNote
fromAttrBs "19" = return Envelope9
fromAttrBs "20" = return Envelope10
fromAttrBs "21" = return Envelope11
fromAttrBs "22" = return Envelope12
fromAttrBs "23" = return Envelope14
fromAttrBs "24" = return PaperC
fromAttrBs "25" = return PaperD
fromAttrBs "26" = return PaperE
fromAttrBs "27" = return EnvelopeDL
fromAttrBs "28" = return EnvelopeC5
fromAttrBs "29" = return EnvelopeC3
fromAttrBs "30" = return EnvelopeC4
fromAttrBs "31" = return EnvelopeC6
fromAttrBs "32" = return EnvelopeC65
fromAttrBs "33" = return EnvelopeB4
fromAttrBs "34" = return EnvelopeB5
fromAttrBs "35" = return EnvelopeB6
fromAttrBs "36" = return EnvelopeItaly
fromAttrBs "37" = return EnvelopeMonarch
fromAttrBs "38" = return Envelope6_3_4
fromAttrBs "39" = return PaperFanfoldUsStandard
fromAttrBs "40" = return PaperFanfoldGermanStandard
fromAttrBs "41" = return PaperFanfoldGermanLegal
fromAttrBs "42" = return PaperIsoB4
fromAttrBs "43" = return PaperJapaneseDoublePostcard
fromAttrBs "44" = return PaperStandard9_11
fromAttrBs "45" = return PaperStandard10_11
fromAttrBs "46" = return PaperStandard15_11
fromAttrBs "47" = return EnvelopeInvite
fromAttrBs "50" = return PaperLetterExtra
fromAttrBs "51" = return PaperLegalExtra
fromAttrBs "52" = return PaperTabloidExtra
fromAttrBs "53" = return PaperA4Extra
fromAttrBs "54" = return PaperLetterTransverse
fromAttrBs "55" = return PaperA4Transverse
fromAttrBs "56" = return PaperLetterExtraTransverse
fromAttrBs "57" = return PaperSuperA
fromAttrBs "58" = return PaperSuperB
fromAttrBs "59" = return PaperLetterPlus
fromAttrBs "60" = return PaperA4Plus
fromAttrBs "61" = return PaperA5Transverse
fromAttrBs "62" = return PaperJisB5Transverse
fromAttrBs "63" = return PaperA3Extra
fromAttrBs "64" = return PaperA5Extra
fromAttrBs "65" = return PaperIsoB5Extra
fromAttrBs "66" = return PaperA2
fromAttrBs "67" = return PaperA3Transverse
fromAttrBs "68" = return PaperA3ExtraTransverse
fromAttrBs x = unexpectedAttrBs "PaperSize" x
-- | See @ST_PageOrder@, p. 3923
instance FromAttrVal PageOrder where
fromAttrVal "downThenOver" = readSuccess PageOrderDownThenOver
fromAttrVal "overThenDown" = readSuccess PageOrderOverThenDown
fromAttrVal t = invalidText "PageOrder" t
instance FromAttrBs PageOrder where
fromAttrBs "downThenOver" = return PageOrderDownThenOver
fromAttrBs "overThenDown" = return PageOrderOverThenDown
fromAttrBs x = unexpectedAttrBs "PageOrder" x
-- | See @ST_CellComments@, p. 3923
instance FromAttrVal CellComments where
fromAttrVal "none" = readSuccess CellCommentsNone
fromAttrVal "asDisplayed" = readSuccess CellCommentsAsDisplayed
fromAttrVal "atEnd" = readSuccess CellCommentsAtEnd
fromAttrVal t = invalidText "CellComments" t
instance FromAttrBs CellComments where
fromAttrBs "none" = return CellCommentsNone
fromAttrBs "asDisplayed" = return CellCommentsAsDisplayed
fromAttrBs "atEnd" = return CellCommentsAtEnd
fromAttrBs x = unexpectedAttrBs "CellComments" x
-- | See @ST_PrintError@, p. 3923
instance FromAttrVal PrintErrors where
fromAttrVal "displayed" = readSuccess PrintErrorsDisplayed
fromAttrVal "blank" = readSuccess PrintErrorsBlank
fromAttrVal "dash" = readSuccess PrintErrorsDash
fromAttrVal "NA" = readSuccess PrintErrorsNA
fromAttrVal t = invalidText "PrintErrors" t
instance FromAttrBs PrintErrors where
fromAttrBs "displayed" = return PrintErrorsDisplayed
fromAttrBs "blank" = return PrintErrorsBlank
fromAttrBs "dash" = return PrintErrorsDash
fromAttrBs "NA" = return PrintErrorsNA
fromAttrBs x = unexpectedAttrBs "PrintErrors" x
-- | See @ST_Orientation@, p. 3923
instance FromAttrVal Orientation where
fromAttrVal "default" = readSuccess OrientationDefault
fromAttrVal "portrait" = readSuccess OrientationPortrait
fromAttrVal "landscape" = readSuccess OrientationLandscape
fromAttrVal t = invalidText "Orientation" t
instance FromAttrBs Orientation where
fromAttrBs "default" = return OrientationDefault
fromAttrBs "portrait" = return OrientationPortrait
fromAttrBs "landscape" = return OrientationLandscape
fromAttrBs x = unexpectedAttrBs "Orientation" x