hgeometry-ipe
Safe HaskellNone
LanguageGHC2024

Ipe.Reader

Synopsis

Reading ipe Files

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

Given a file path, tries to read an ipe file

readIpeFile :: (Coordinate r, Eq r) => OsPath -> 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) => OsPath -> 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, and it makes sure there is at least one layer and view in the page.

readSinglePageFileThrow :: (Coordinate r, Eq r) => OsPath -> IO (IpePage r) Source #

Tries to read a single page file, throws an error when this fails. See readSinglePageFile for further details.

Readiing ipe style files

readIpeStylesheet :: OsPath -> IO (Either ConversionError IpeStyle) Source #

Reads an Ipe stylesheet from Disk.

addStyleSheetFrom :: OsPath -> IpeFile r -> IO (IpeFile r) Source #

Given a path to a stylesheet, add it to the ipe file with the highest priority. Throws an error when this fails.

Reading XML directly

fromIpeXML :: forall {k} t (r :: k). 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

Methods

ipeReadText :: Text -> Either ConversionError t Source #

Try to read the text content into a value of type t

Instances

Instances details
IpeReadText FillType Source # 
Instance details

Defined in Ipe.Reader

IpeReadText HorizontalAlignment Source # 
Instance details

Defined in Ipe.Reader

IpeReadText PinType Source # 
Instance details

Defined in Ipe.Reader

IpeReadText TransformationTypes Source # 
Instance details

Defined in Ipe.Reader

IpeReadText VerticalAlignment Source # 
Instance details

Defined in Ipe.Reader

IpeReadText LayerName Source # 
Instance details

Defined in Ipe.Reader

IpeReadText Text Source # 
Instance details

Defined in Ipe.Reader

IpeReadText Int Source # 
Instance details

Defined in Ipe.Reader

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

Defined in Ipe.Reader

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

Defined in Ipe.Reader

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

Defined in Ipe.Reader

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

Defined in Ipe.Reader

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

Defined in Ipe.Reader

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

Defined in Ipe.Reader

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

Defined in Ipe.Reader

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

Defined in Ipe.Reader

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

Defined in Ipe.Reader

IpeReadText (IpeValue r) Source #

Reads as a naimed value by default

Instance details

Defined in Ipe.Reader

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

Defined in Ipe.Reader

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

Defined in Ipe.Reader

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

Defined in Ipe.Reader

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

Defined in Ipe.Reader

class IpeRead t where Source #

Reading an ipe lement from Xml

Methods

ipeRead :: Node Text Text -> Either ConversionError t Source #

Try to convert an xml tree into a value of type t

Instances

Instances details
IpeRead LayerName Source # 
Instance details

Defined in Ipe.Reader

IpeRead IpeStyle Source # 
Instance details

Defined in Ipe.Reader

IpeRead View Source # 
Instance details

Defined in Ipe.Reader

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

Defined in Ipe.Reader

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

Defined in Ipe.Reader

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

Defined in Ipe.Reader

Coordinate r => IpeRead (IpeSymbol r) Source #

Ipe read instances

Instance details

Defined in Ipe.Reader

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

Defined in Ipe.Reader

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

Defined in Ipe.Reader

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

Defined in Ipe.Reader

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

Defined in Ipe.Reader

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

Defined in Ipe.Reader

class IpeReadAttributes ats where Source #

Methods

ipeReadAttrs :: [(Text, Text)] -> Either ConversionError ats Source #

Given the attributes in their text form, try to parse them

ipeReadAttrsFrom :: IpeReadAttributes ats => Node Text Text -> Either ConversionError ats Source #

read the attributes of a given node

Some low level implementation functions

ipeReadObject :: (IpeRead (i r), IpeReadAttributes (IpeAttributes i r)) => 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

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 #

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

Instances

Instances details
Coordinate Double Source # 
Instance details

Defined in Ipe.PathParser

Coordinate Float Source # 
Instance details

Defined in Ipe.PathParser

Coordinate (Ratio Integer) Source # 
Instance details

Defined in Ipe.PathParser

(Coordinate r, Ord r) => Coordinate (IntervalReal r) Source # 
Instance details

Defined in Ipe.PathParser

Coordinate (RealNumber p) Source # 
Instance details

Defined in Ipe.PathParser

(Coordinate r, Ord r, AbsoluteTolerance tol) => Coordinate (AbsolutelyApproximateValue tol r) Source # 
Instance details

Defined in Ipe.PathParser

HasResolution p => Coordinate (Fixed p) Source # 
Instance details

Defined in Ipe.PathParser

Methods

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