hgeometry-ipe-0.9.0.0: Reading and Writing ipe7 files.

Safe HaskellNone
LanguageHaskell2010

Data.Geometry.Ipe.Reader

Contents

Synopsis

Reading ipe Files

readRawIpeFile :: (Coordinate r, Eq r) => FilePath -> IO (Either ConversionError (IpeFile r)) Source #

Given a file path, tries to read an ipe file

readIpeFile :: (Coordinate r, Eq r) => FilePath -> IO (Either ConversionError (IpeFile r)) Source #

Given a file path, tries to read an ipe file. This function applies all matrices to objects.

readSinglePageFile :: (Coordinate r, Eq r) => FilePath -> IO (Either ConversionError (IpePage r)) Source #

Since most Ipe file contain only one page, we provide a shortcut for that as well. This function applies all matrices.

Reading XML directly

fromIpeXML :: IpeRead (t r) => ByteString -> Either ConversionError (t r) Source #

Given a Bytestring, try to parse the bytestring into anything that is IpeReadable, i.e. any of the Ipe elements.

readXML :: ByteString -> Either ConversionError (Node Text Text) Source #

Reads the data from a Bytestring into a proper Node

Read classes

class IpeReadText t where Source #

Reading an ipe elemtn from a Text value

Instances
IpeReadText Int Source # 
Instance details

Defined in Data.Geometry.Ipe.Reader

IpeReadText Text Source # 
Instance details

Defined in Data.Geometry.Ipe.Reader

IpeReadText FillType Source # 
Instance details

Defined in Data.Geometry.Ipe.Reader

IpeReadText TransformationTypes Source # 
Instance details

Defined in Data.Geometry.Ipe.Reader

IpeReadText PinType Source # 
Instance details

Defined in Data.Geometry.Ipe.Reader

IpeReadText LayerName Source # 
Instance details

Defined in Data.Geometry.Ipe.Reader

Coordinate r => IpeReadText [Operation r] Source # 
Instance details

Defined in Data.Geometry.Ipe.Reader

(Coordinate r, Eq r) => IpeReadText (NonEmpty (PathSegment r)) Source # 
Instance details

Defined in Data.Geometry.Ipe.Reader

Coordinate r => IpeReadText (RGB r) Source # 
Instance details

Defined in Data.Geometry.Ipe.Reader

Coordinate r => IpeReadText (IpeColor r) Source # 
Instance details

Defined in Data.Geometry.Ipe.Reader

Coordinate r => IpeReadText (IpeArrow r) Source # 
Instance details

Defined in Data.Geometry.Ipe.Reader

Coordinate r => IpeReadText (IpeDash r) Source # 
Instance details

Defined in Data.Geometry.Ipe.Reader

Coordinate r => IpeReadText (IpePen r) Source # 
Instance details

Defined in Data.Geometry.Ipe.Reader

Coordinate r => IpeReadText (IpeSize r) Source # 
Instance details

Defined in Data.Geometry.Ipe.Reader

(Coordinate r, Eq r) => IpeReadText (Path r) Source # 
Instance details

Defined in Data.Geometry.Ipe.Reader

Coordinate r => IpeReadText (Rectangle () r) Source # 
Instance details

Defined in Data.Geometry.Ipe.Reader

Methods

ipeReadText :: Text -> Either ConversionError (Rectangle () r) Source #

Coordinate r => IpeReadText (Point 2 r) Source # 
Instance details

Defined in Data.Geometry.Ipe.Reader

Methods

ipeReadText :: Text -> Either ConversionError (Point 2 r) Source #

Coordinate r => IpeReadText (Matrix 3 3 r) Source # 
Instance details

Defined in Data.Geometry.Ipe.Reader

Methods

ipeReadText :: Text -> Either ConversionError (Matrix 3 3 r) Source #

class IpeRead t where Source #

Reading an ipe lement from Xml

Instances
IpeRead LayerName Source # 
Instance details

Defined in Data.Geometry.Ipe.Reader

IpeRead View Source # 
Instance details

Defined in Data.Geometry.Ipe.Reader

Coordinate r => IpeRead (Image r) Source # 
Instance details

Defined in Data.Geometry.Ipe.Reader

Coordinate r => IpeRead (IpeSymbol r) Source #

Ipe read instances

Instance details

Defined in Data.Geometry.Ipe.Reader

Coordinate r => IpeRead (MiniPage r) Source # 
Instance details

Defined in Data.Geometry.Ipe.Reader

Coordinate r => IpeRead (TextLabel r) Source # 
Instance details

Defined in Data.Geometry.Ipe.Reader

(Coordinate r, Eq r) => IpeRead (Path r) Source # 
Instance details

Defined in Data.Geometry.Ipe.Reader

(Coordinate r, Eq r) => IpeRead (IpeObject r) Source # 
Instance details

Defined in Data.Geometry.Ipe.Reader

(Coordinate r, Eq r) => IpeRead (Group r) Source # 
Instance details

Defined in Data.Geometry.Ipe.Reader

(Coordinate r, Eq r) => IpeRead (IpePage r) Source # 
Instance details

Defined in Data.Geometry.Ipe.Reader

(Coordinate r, Eq r) => IpeRead (IpeFile r) Source # 
Instance details

Defined in Data.Geometry.Ipe.Reader

class IpeReadAttr t where Source #

Basically IpeReadText for attributes. This class is not really meant to be implemented directly. Just define an IpeReadText instance for the type (Apply f at), then the generic instance below takes care of looking up the name of the attribute, and calling the right ipeReadText value. This class is just so that reifyConstraint in ipeReadRec can select the right typeclass when building the rec.

Instances
IpeReadText (Apply f at) => IpeReadAttr (Attr f at) Source # 
Instance details

Defined in Data.Geometry.Ipe.Reader

Some low level implementation functions

ipeReadObject :: (IpeRead (i r), f ~ AttrMapSym1 r, ats ~ AttributesOf i, RecApplicative ats, ReifyConstraint IpeReadAttr (Attr f) ats, RecAll (Attr f) ats IpeReadAttr, AllSatisfy IpeAttrName ats) => Proxy i -> proxy r -> Node Text Text -> Either ConversionError (i r :+ IpeAttributes i r) Source #

If we can ipeRead an ipe element, and we can ipeReadAttrs its attributes we can properly read an ipe object using ipeReadObject

ipeReadAttrs :: forall proxy proxy' i r f ats. (f ~ AttrMapSym1 r, ats ~ AttributesOf i, ReifyConstraint IpeReadAttr (Attr f) ats, RecApplicative ats, RecAll (Attr f) ats IpeReadAttr, AllSatisfy IpeAttrName ats) => proxy i -> proxy' r -> Node Text Text -> Either ConversionError (IpeAttributes i r) Source #

Reader for records. Given a proxy of some ipe type i, and a proxy of an coordinate type r, read the IpeAttributes for i from the xml node.

ipeReadRec :: forall f ats. (RecApplicative ats, ReifyConstraint IpeReadAttr (Attr f) ats, RecAll (Attr f) ats IpeReadAttr, AllSatisfy IpeAttrName ats) => Proxy f -> Proxy ats -> Node Text Text -> Either ConversionError (Rec (Attr f) ats) Source #

Reading the Attributes into a Rec (Attr f), all based on the types of f (the type family mapping labels to types), and a list of labels (ats).

class Fractional r => Coordinate r where Source #

Represent stuff that can be used as a coordinate in ipe. (similar to show/read)

Minimal complete definition

Nothing

Methods

fromSeq :: Integer -> Maybe (Int, Integer) -> r Source #

fromSeq :: (Ord r, Fractional r) => Integer -> Maybe (Int, Integer) -> r Source #

Instances
Coordinate Double Source # 
Instance details

Defined in Data.Geometry.Ipe.PathParser

Coordinate (Ratio Integer) Source # 
Instance details

Defined in Data.Geometry.Ipe.PathParser