hgeometry:ipe
Copyright(C) Frank Staals
Licensesee the LICENSE file
MaintainerFrank Staals
Safe HaskellSafe-Inferred
LanguageGHC2021

Ipe

Description

Reexports the functionality for reading and writing Ipe files.

Synopsis

Ipe Files

data IpeFile r Source #

A complete ipe file

Instances

Instances details
Generic (IpeFile r) Source # 
Instance details

Defined in Ipe.Types

Associated Types

type Rep (IpeFile r) :: Type -> Type #

Methods

from :: IpeFile r -> Rep (IpeFile r) x #

to :: Rep (IpeFile r) x -> IpeFile r #

Show r => Show (IpeFile r) Source # 
Instance details

Defined in Ipe.Types

Methods

showsPrec :: Int -> IpeFile r -> ShowS #

show :: IpeFile r -> String #

showList :: [IpeFile r] -> ShowS #

Eq r => Eq (IpeFile r) Source # 
Instance details

Defined in Ipe.Types

Methods

(==) :: IpeFile r -> IpeFile r -> Bool #

(/=) :: IpeFile r -> IpeFile r -> Bool #

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

Defined in Ipe.Reader

IpeWriteText r => IpeWrite (IpeFile r) Source # 
Instance details

Defined in Ipe.Writer

type Rep (IpeFile r) Source # 
Instance details

Defined in Ipe.Types

type Rep (IpeFile r) = D1 ('MetaData "IpeFile" "Ipe.Types" "hgeometry-1.0.0.0-inplace-ipe" 'False) (C1 ('MetaCons "IpeFile" 'PrefixI 'True) (S1 ('MetaSel ('Just "_preamble") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe IpePreamble)) :*: (S1 ('MetaSel ('Just "_styles") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [IpeStyle]) :*: S1 ('MetaSel ('Just "_pages") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (NonEmpty (IpePage r))))))

preamble :: Lens' (IpeFile r) (Maybe IpePreamble) Source #

Lens to access the preamble of an ipe file

styles :: Lens' (IpeFile r) [IpeStyle] Source #

Lens to access the styles of an ipe file

pages :: Lens (IpeFile r) (IpeFile r') (NonEmpty (IpePage r)) (NonEmpty (IpePage r')) Source #

Lens to access the pages of an ipe file

ipeFile :: NonEmpty (IpePage r) -> IpeFile r Source #

Convenience constructor for creating an ipe file without preamble and with the default stylesheet.

singlePageFile :: IpePage r -> IpeFile r Source #

Convenience function to construct an ipe file consisting of a single page.

singlePageFromContent :: [IpeObject r] -> IpeFile r Source #

Create a single page ipe file from a list of IpeObjects

Reading Ipe files

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.

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

Given a file path, tries to read an ipe file

Reading all Geometries from a single page ipe file

readAll :: forall g r. (HasDefaultFromIpe g, r ~ NumType g) => IpePage r -> [g :+ IpeAttributes (DefaultFromIpe g) r] Source #

Read all g's from some ipe page(s).

readAllFrom :: forall g r. (HasDefaultFromIpe g, r ~ NumType g, Coordinate r, Eq r) => OsPath -> IO [g :+ IpeAttributes (DefaultFromIpe g) r] Source #

Convenience function from reading all g's from an ipe file. If there is an error reading or parsing the file the error is "thrown away".

Writing ipe files

writeIpeFile :: IpeWriteText r => OsPath -> IpeFile r -> IO () Source #

Write an IpeFiele to file.

writeIpeFile' :: IpeWrite t => t -> OsPath -> IO () Source #

Convert to ipe XML and write the output to a file.

writeIpePage :: IpeWriteText r => OsPath -> IpePage r -> IO () Source #

Creates a single page ipe file with the given page

toIpeXML :: IpeWrite t => t -> Maybe ByteString Source #

Convert to Ipe xml

printAsIpeSelection :: IpeWrite t => t -> IO () Source #

Convert the input to ipeXml, and prints it to standard out in such a way that the copied text can be pasted into ipe as a geometry object.

toIpeSelectionXML :: IpeWrite t => t -> Maybe ByteString Source #

Convert input into an ipe selection.

Ipe Pages

data IpePage r Source #

An IpePage is essentially a Group, together with a list of layers and a list of views.

Constructors

IpePage [LayerName] [View] [IpeObject r] 

Instances

Instances details
Generic (IpePage r) Source # 
Instance details

Defined in Ipe.Types

Associated Types

type Rep (IpePage r) :: Type -> Type #

Methods

from :: IpePage r -> Rep (IpePage r) x #

to :: Rep (IpePage r) x -> IpePage r #

Show r => Show (IpePage r) Source # 
Instance details

Defined in Ipe.Types

Methods

showsPrec :: Int -> IpePage r -> ShowS #

show :: IpePage r -> String #

showList :: [IpePage r] -> ShowS #

Eq r => Eq (IpePage r) Source # 
Instance details

Defined in Ipe.Types

Methods

(==) :: IpePage r -> IpePage r -> Bool #

(/=) :: IpePage r -> IpePage r -> Bool #

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

Defined in Ipe.Reader

IpeWriteText r => IpeWrite (IpePage r) Source # 
Instance details

Defined in Ipe.Writer

type Rep (IpePage r) Source # 
Instance details

Defined in Ipe.Types

type Rep (IpePage r) = D1 ('MetaData "IpePage" "Ipe.Types" "hgeometry-1.0.0.0-inplace-ipe" 'False) (C1 ('MetaCons "IpePage" 'PrefixI 'True) (S1 ('MetaSel ('Just "_layers") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [LayerName]) :*: (S1 ('MetaSel ('Just "_views") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [View]) :*: S1 ('MetaSel ('Just "_content") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [IpeObject r]))))

layers :: Lens' (IpePage r) [LayerName] Source #

Lens to access the layers of an ipe page

views :: Lens' (IpePage r) [View] Source #

Lens to access the views of an ipe page

content :: Lens (IpePage r) (IpePage r') [IpeObject r] [IpeObject r'] Source #

Lens to access the content of an ipe page

emptyPage :: IpePage r Source #

Creates an empty page with one layer and view.

fromContent :: [IpeObject r] -> IpePage r Source #

Creates a simple page with a single view.

onLayer :: LayerName -> Getting (Endo [IpeObject r]) [IpeObject r] (IpeObject r) Source #

This allows you to filter the objects on some layer.

>>> let page = IpePage [] [] []
>>> page^..content.onLayer "myLayer"
[]

contentInView :: Word -> Getter (IpePage r) [IpeObject r] Source #

Gets all objects that are visible in the given view.

Note that views are indexed starting from 0. If the page does not have any explicit view definitions, this function returns an empty list.

>>> let page = IpePage [] [] []
>>> page^.contentInView 0
[]

withDefaults :: IpePage r -> IpePage r Source #

Makes sure that the page has at least one layer and at least one view, essentially matching the behaviour of ipe. In particular,

  • if the page does not have any layers, it creates a layer named "alpha", and
  • if the page does not have any views, it creates a view in which all layers are visible.

Content: Ipe Objects

data IpeObject r Source #

Instances

Instances details
Foldable IpeObject Source # 
Instance details

Defined in Ipe.Content

Methods

fold :: Monoid m => IpeObject m -> m #

foldMap :: Monoid m => (a -> m) -> IpeObject a -> m #

foldMap' :: Monoid m => (a -> m) -> IpeObject a -> m #

foldr :: (a -> b -> b) -> b -> IpeObject a -> b #

foldr' :: (a -> b -> b) -> b -> IpeObject a -> b #

foldl :: (b -> a -> b) -> b -> IpeObject a -> b #

foldl' :: (b -> a -> b) -> b -> IpeObject a -> b #

foldr1 :: (a -> a -> a) -> IpeObject a -> a #

foldl1 :: (a -> a -> a) -> IpeObject a -> a #

toList :: IpeObject a -> [a] #

null :: IpeObject a -> Bool #

length :: IpeObject a -> Int #

elem :: Eq a => a -> IpeObject a -> Bool #

maximum :: Ord a => IpeObject a -> a #

minimum :: Ord a => IpeObject a -> a #

sum :: Num a => IpeObject a -> a #

product :: Num a => IpeObject a -> a #

Traversable IpeObject Source # 
Instance details

Defined in Ipe.Content

Methods

traverse :: Applicative f => (a -> f b) -> IpeObject a -> f (IpeObject b) #

sequenceA :: Applicative f => IpeObject (f a) -> f (IpeObject a) #

mapM :: Monad m => (a -> m b) -> IpeObject a -> m (IpeObject b) #

sequence :: Monad m => IpeObject (m a) -> m (IpeObject a) #

Functor IpeObject Source # 
Instance details

Defined in Ipe.Content

Methods

fmap :: (a -> b) -> IpeObject a -> IpeObject b #

(<$) :: a -> IpeObject b -> IpeObject a #

Generic (IpeObject r) Source # 
Instance details

Defined in Ipe.Content

Associated Types

type Rep (IpeObject r) :: Type -> Type #

Methods

from :: IpeObject r -> Rep (IpeObject r) x #

to :: Rep (IpeObject r) x -> IpeObject r #

Show r => Show (IpeObject r) Source # 
Instance details

Defined in Ipe.Content

Eq r => Eq (IpeObject r) Source # 
Instance details

Defined in Ipe.Content

Methods

(==) :: IpeObject r -> IpeObject r -> Bool #

(/=) :: IpeObject r -> IpeObject r -> Bool #

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

Defined in Ipe.Reader

IpeWriteText r => IpeWrite (IpeObject r) Source # 
Instance details

Defined in Ipe.Writer

Fractional r => IsTransformable (IpeObject r) Source # 
Instance details

Defined in Ipe.Content

Methods

transformBy :: Transformation (Dimension (IpeObject r)) (NumType (IpeObject r)) -> IpeObject r -> IpeObject r

type Rep (IpeObject r) Source # 
Instance details

Defined in Ipe.Content

type Dimension (IpeObject r) Source # 
Instance details

Defined in Ipe.Content

type Dimension (IpeObject r) = 2
type NumType (IpeObject r) Source # 
Instance details

Defined in Ipe.Content

type NumType (IpeObject r) = r

type IpeObject' g r = g r :+ IpeAttributes g r Source #

An IpeObject' is essentially the oject ogether with its attributes

ipeObject' :: ToObject i => i r -> IpeAttributes i r -> IpeObject r Source #

Shorthand for constructing ipeObjects

class ToObject i where Source #

Instances

Instances details
ToObject Group Source # 
Instance details

Defined in Ipe.Content

ToObject Image Source # 
Instance details

Defined in Ipe.Content

ToObject IpeSymbol Source # 
Instance details

Defined in Ipe.Content

ToObject MiniPage Source # 
Instance details

Defined in Ipe.Content

ToObject TextLabel Source # 
Instance details

Defined in Ipe.Content

ToObject Path Source # 
Instance details

Defined in Ipe.Content

Specific Ipe-Objects

newtype Path r Source #

A path is a non-empty sequence of PathSegments.

Constructors

Path (Seq (PathSegment r)) 

Instances

Instances details
Foldable Path Source # 
Instance details

Defined in Ipe.Path

Methods

fold :: Monoid m => Path m -> m #

foldMap :: Monoid m => (a -> m) -> Path a -> m #

foldMap' :: Monoid m => (a -> m) -> Path a -> m #

foldr :: (a -> b -> b) -> b -> Path a -> b #

foldr' :: (a -> b -> b) -> b -> Path a -> b #

foldl :: (b -> a -> b) -> b -> Path a -> b #

foldl' :: (b -> a -> b) -> b -> Path a -> b #

foldr1 :: (a -> a -> a) -> Path a -> a #

foldl1 :: (a -> a -> a) -> Path a -> a #

toList :: Path a -> [a] #

null :: Path a -> Bool #

length :: Path a -> Int #

elem :: Eq a => a -> Path a -> Bool #

maximum :: Ord a => Path a -> a #

minimum :: Ord a => Path a -> a #

sum :: Num a => Path a -> a #

product :: Num a => Path a -> a #

Traversable Path Source # 
Instance details

Defined in Ipe.Path

Methods

traverse :: Applicative f => (a -> f b) -> Path a -> f (Path b) #

sequenceA :: Applicative f => Path (f a) -> f (Path a) #

mapM :: Monad m => (a -> m b) -> Path a -> m (Path b) #

sequence :: Monad m => Path (m a) -> m (Path a) #

Functor Path Source # 
Instance details

Defined in Ipe.Path

Methods

fmap :: (a -> b) -> Path a -> Path b #

(<$) :: a -> Path b -> Path a #

ToObject Path Source # 
Instance details

Defined in Ipe.Content

Semigroup (Path r) Source # 
Instance details

Defined in Ipe.Path

Methods

(<>) :: Path r -> Path r -> Path r #

sconcat :: NonEmpty (Path r) -> Path r #

stimes :: Integral b => b -> Path r -> Path r #

Generic (Path r) Source # 
Instance details

Defined in Ipe.Path

Associated Types

type Rep (Path r) :: Type -> Type #

Methods

from :: Path r -> Rep (Path r) x #

to :: Rep (Path r) x -> Path r #

Show r => Show (Path r) Source # 
Instance details

Defined in Ipe.Path

Methods

showsPrec :: Int -> Path r -> ShowS #

show :: Path r -> String #

showList :: [Path r] -> ShowS #

Eq r => Eq (Path r) Source # 
Instance details

Defined in Ipe.Path

Methods

(==) :: Path r -> Path r -> Bool #

(/=) :: Path r -> Path r -> Bool #

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

Defined in Ipe.Reader

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

Defined in Ipe.Reader

IpeWriteText r => IpeWrite (Path r) Source # 
Instance details

Defined in Ipe.Writer

Methods

ipeWrite :: Path r -> Maybe (Node Text Text) Source #

IpeWriteText r => IpeWriteText (Path r) Source # 
Instance details

Defined in Ipe.Writer

Fractional r => IsTransformable (Path r) Source # 
Instance details

Defined in Ipe.Path

Methods

transformBy :: Transformation (Dimension (Path r)) (NumType (Path r)) -> Path r -> Path r

type Rep (Path r) Source # 
Instance details

Defined in Ipe.Path

type Rep (Path r) = D1 ('MetaData "Path" "Ipe.Path" "hgeometry-1.0.0.0-inplace-ipe" 'True) (C1 ('MetaCons "Path" 'PrefixI 'True) (S1 ('MetaSel ('Just "_pathSegments") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Seq (PathSegment r)))))
type Dimension (Path r) Source # 
Instance details

Defined in Ipe.Path

type Dimension (Path r) = 2
type NumType (Path r) Source # 
Instance details

Defined in Ipe.Path

type NumType (Path r) = r

pathSegments :: Iso (Path r) (Path r') (Seq (PathSegment r)) (Seq (PathSegment r')) Source #

Lens/Iso to access the sequcne of segments of the path

data PathSegment r Source #

Paths

Paths consist of Path Segments. PathSegments come in the following forms:

Instances

Instances details
Foldable PathSegment Source # 
Instance details

Defined in Ipe.Path

Methods

fold :: Monoid m => PathSegment m -> m #

foldMap :: Monoid m => (a -> m) -> PathSegment a -> m #

foldMap' :: Monoid m => (a -> m) -> PathSegment a -> m #

foldr :: (a -> b -> b) -> b -> PathSegment a -> b #

foldr' :: (a -> b -> b) -> b -> PathSegment a -> b #

foldl :: (b -> a -> b) -> b -> PathSegment a -> b #

foldl' :: (b -> a -> b) -> b -> PathSegment a -> b #

foldr1 :: (a -> a -> a) -> PathSegment a -> a #

foldl1 :: (a -> a -> a) -> PathSegment a -> a #

toList :: PathSegment a -> [a] #

null :: PathSegment a -> Bool #

length :: PathSegment a -> Int #

elem :: Eq a => a -> PathSegment a -> Bool #

maximum :: Ord a => PathSegment a -> a #

minimum :: Ord a => PathSegment a -> a #

sum :: Num a => PathSegment a -> a #

product :: Num a => PathSegment a -> a #

Traversable PathSegment Source # 
Instance details

Defined in Ipe.Path

Methods

traverse :: Applicative f => (a -> f b) -> PathSegment a -> f (PathSegment b) #

sequenceA :: Applicative f => PathSegment (f a) -> f (PathSegment a) #

mapM :: Monad m => (a -> m b) -> PathSegment a -> m (PathSegment b) #

sequence :: Monad m => PathSegment (m a) -> m (PathSegment a) #

Functor PathSegment Source # 
Instance details

Defined in Ipe.Path

Methods

fmap :: (a -> b) -> PathSegment a -> PathSegment b #

(<$) :: a -> PathSegment b -> PathSegment a #

Show r => Show (PathSegment r) Source # 
Instance details

Defined in Ipe.Path

Eq r => Eq (PathSegment r) Source # 
Instance details

Defined in Ipe.Path

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

Defined in Ipe.Reader

IpeWriteText r => IpeWriteText (PathSegment r) Source # 
Instance details

Defined in Ipe.Writer

Fractional r => IsTransformable (PathSegment r) Source # 
Instance details

Defined in Ipe.Path

Methods

transformBy :: Transformation (Dimension (PathSegment r)) (NumType (PathSegment r)) -> PathSegment r -> PathSegment r

type Dimension (PathSegment r) Source # 
Instance details

Defined in Ipe.Path

type Dimension (PathSegment r) = 2
type NumType (PathSegment r) Source # 
Instance details

Defined in Ipe.Path

type NumType (PathSegment r) = r

data IpeSymbol r Source #

Ipe Symbols, i.e. Points

A symbol (point) in ipe

Constructors

Symbol (Point 2 r) Text 

Instances

Instances details
Foldable IpeSymbol Source # 
Instance details

Defined in Ipe.Content

Methods

fold :: Monoid m => IpeSymbol m -> m #

foldMap :: Monoid m => (a -> m) -> IpeSymbol a -> m #

foldMap' :: Monoid m => (a -> m) -> IpeSymbol a -> m #

foldr :: (a -> b -> b) -> b -> IpeSymbol a -> b #

foldr' :: (a -> b -> b) -> b -> IpeSymbol a -> b #

foldl :: (b -> a -> b) -> b -> IpeSymbol a -> b #

foldl' :: (b -> a -> b) -> b -> IpeSymbol a -> b #

foldr1 :: (a -> a -> a) -> IpeSymbol a -> a #

foldl1 :: (a -> a -> a) -> IpeSymbol a -> a #

toList :: IpeSymbol a -> [a] #

null :: IpeSymbol a -> Bool #

length :: IpeSymbol a -> Int #

elem :: Eq a => a -> IpeSymbol a -> Bool #

maximum :: Ord a => IpeSymbol a -> a #

minimum :: Ord a => IpeSymbol a -> a #

sum :: Num a => IpeSymbol a -> a #

product :: Num a => IpeSymbol a -> a #

Traversable IpeSymbol Source # 
Instance details

Defined in Ipe.Content

Methods

traverse :: Applicative f => (a -> f b) -> IpeSymbol a -> f (IpeSymbol b) #

sequenceA :: Applicative f => IpeSymbol (f a) -> f (IpeSymbol a) #

mapM :: Monad m => (a -> m b) -> IpeSymbol a -> m (IpeSymbol b) #

sequence :: Monad m => IpeSymbol (m a) -> m (IpeSymbol a) #

Functor IpeSymbol Source # 
Instance details

Defined in Ipe.Content

Methods

fmap :: (a -> b) -> IpeSymbol a -> IpeSymbol b #

(<$) :: a -> IpeSymbol b -> IpeSymbol a #

ToObject IpeSymbol Source # 
Instance details

Defined in Ipe.Content

Generic (IpeSymbol r) Source # 
Instance details

Defined in Ipe.Content

Associated Types

type Rep (IpeSymbol r) :: Type -> Type #

Methods

from :: IpeSymbol r -> Rep (IpeSymbol r) x #

to :: Rep (IpeSymbol r) x -> IpeSymbol r #

Show r => Show (IpeSymbol r) Source # 
Instance details

Defined in Ipe.Content

Eq r => Eq (IpeSymbol r) Source # 
Instance details

Defined in Ipe.Content

Methods

(==) :: IpeSymbol r -> IpeSymbol r -> Bool #

(/=) :: IpeSymbol r -> IpeSymbol r -> Bool #

Ord r => Ord (IpeSymbol r) Source # 
Instance details

Defined in Ipe.Content

Coordinate r => IpeRead (IpeSymbol r) Source #

Ipe read instances

Instance details

Defined in Ipe.Reader

IpeWriteText r => IpeWrite (IpeSymbol r) Source # 
Instance details

Defined in Ipe.Writer

Fractional r => IsTransformable (IpeSymbol r) Source # 
Instance details

Defined in Ipe.Content

Methods

transformBy :: Transformation (Dimension (IpeSymbol r)) (NumType (IpeSymbol r)) -> IpeSymbol r -> IpeSymbol r

type Rep (IpeSymbol r) Source # 
Instance details

Defined in Ipe.Content

type Rep (IpeSymbol r) = D1 ('MetaData "IpeSymbol" "Ipe.Content" "hgeometry-1.0.0.0-inplace-ipe" 'False) (C1 ('MetaCons "Symbol" 'PrefixI 'True) (S1 ('MetaSel ('Just "_symbolPoint") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Point 2 r)) :*: S1 ('MetaSel ('Just "_symbolName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text)))
type Dimension (IpeSymbol r) Source # 
Instance details

Defined in Ipe.Content

type Dimension (IpeSymbol r) = 2
type NumType (IpeSymbol r) Source # 
Instance details

Defined in Ipe.Content

type NumType (IpeSymbol r) = r

symbolPoint :: Lens (IpeSymbol r) (IpeSymbol r') (Point 2 r) (Point 2 r') Source #

Lens to access the position of the symbol

symbolName :: Lens' (IpeSymbol r) Text Source #

Lens to access the name of the symbol

newtype Group r Source #

Groups and Objects

Group Attributes

A group is essentially a list of IpeObjects.

Constructors

Group [IpeObject r] 

Instances

Instances details
Foldable Group Source # 
Instance details

Defined in Ipe.Content

Methods

fold :: Monoid m => Group m -> m #

foldMap :: Monoid m => (a -> m) -> Group a -> m #

foldMap' :: Monoid m => (a -> m) -> Group a -> m #

foldr :: (a -> b -> b) -> b -> Group a -> b #

foldr' :: (a -> b -> b) -> b -> Group a -> b #

foldl :: (b -> a -> b) -> b -> Group a -> b #

foldl' :: (b -> a -> b) -> b -> Group a -> b #

foldr1 :: (a -> a -> a) -> Group a -> a #

foldl1 :: (a -> a -> a) -> Group a -> a #

toList :: Group a -> [a] #

null :: Group a -> Bool #

length :: Group a -> Int #

elem :: Eq a => a -> Group a -> Bool #

maximum :: Ord a => Group a -> a #

minimum :: Ord a => Group a -> a #

sum :: Num a => Group a -> a #

product :: Num a => Group a -> a #

Traversable Group Source # 
Instance details

Defined in Ipe.Content

Methods

traverse :: Applicative f => (a -> f b) -> Group a -> f (Group b) #

sequenceA :: Applicative f => Group (f a) -> f (Group a) #

mapM :: Monad m => (a -> m b) -> Group a -> m (Group b) #

sequence :: Monad m => Group (m a) -> m (Group a) #

Functor Group Source # 
Instance details

Defined in Ipe.Content

Methods

fmap :: (a -> b) -> Group a -> Group b #

(<$) :: a -> Group b -> Group a #

ToObject Group Source # 
Instance details

Defined in Ipe.Content

Generic (Group r) Source # 
Instance details

Defined in Ipe.Content

Associated Types

type Rep (Group r) :: Type -> Type #

Methods

from :: Group r -> Rep (Group r) x #

to :: Rep (Group r) x -> Group r #

Show r => Show (Group r) Source # 
Instance details

Defined in Ipe.Content

Methods

showsPrec :: Int -> Group r -> ShowS #

show :: Group r -> String #

showList :: [Group r] -> ShowS #

Eq r => Eq (Group r) Source # 
Instance details

Defined in Ipe.Content

Methods

(==) :: Group r -> Group r -> Bool #

(/=) :: Group r -> Group r -> Bool #

HasDefaultIpeOut (Group r) Source # 
Instance details

Defined in Ipe.IpeOut

Associated Types

type DefaultIpeOut (Group r) :: Type -> Type Source #

Methods

defIO :: IpeOut (Group r) (DefaultIpeOut (Group r)) (NumType (Group r)) Source #

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

Defined in Ipe.Reader

IpeWriteText r => IpeWrite (Group r) Source # 
Instance details

Defined in Ipe.Writer

Fractional r => IsTransformable (Group r) Source # 
Instance details

Defined in Ipe.Content

Methods

transformBy :: Transformation (Dimension (Group r)) (NumType (Group r)) -> Group r -> Group r

type Rep (Group r) Source # 
Instance details

Defined in Ipe.Content

type Rep (Group r) = D1 ('MetaData "Group" "Ipe.Content" "hgeometry-1.0.0.0-inplace-ipe" 'True) (C1 ('MetaCons "Group" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [IpeObject r])))
type DefaultIpeOut (Group r) Source # 
Instance details

Defined in Ipe.IpeOut

type Dimension (Group r) Source # 
Instance details

Defined in Ipe.Content

type Dimension (Group r) = 2
type NumType (Group r) Source # 
Instance details

Defined in Ipe.Content

type NumType (Group r) = r

data TextLabel r Source #

Text Objects

A text label

Constructors

Label Text (Point 2 r) 

Instances

Instances details
Foldable TextLabel Source # 
Instance details

Defined in Ipe.Content

Methods

fold :: Monoid m => TextLabel m -> m #

foldMap :: Monoid m => (a -> m) -> TextLabel a -> m #

foldMap' :: Monoid m => (a -> m) -> TextLabel a -> m #

foldr :: (a -> b -> b) -> b -> TextLabel a -> b #

foldr' :: (a -> b -> b) -> b -> TextLabel a -> b #

foldl :: (b -> a -> b) -> b -> TextLabel a -> b #

foldl' :: (b -> a -> b) -> b -> TextLabel a -> b #

foldr1 :: (a -> a -> a) -> TextLabel a -> a #

foldl1 :: (a -> a -> a) -> TextLabel a -> a #

toList :: TextLabel a -> [a] #

null :: TextLabel a -> Bool #

length :: TextLabel a -> Int #

elem :: Eq a => a -> TextLabel a -> Bool #

maximum :: Ord a => TextLabel a -> a #

minimum :: Ord a => TextLabel a -> a #

sum :: Num a => TextLabel a -> a #

product :: Num a => TextLabel a -> a #

Traversable TextLabel Source # 
Instance details

Defined in Ipe.Content

Methods

traverse :: Applicative f => (a -> f b) -> TextLabel a -> f (TextLabel b) #

sequenceA :: Applicative f => TextLabel (f a) -> f (TextLabel a) #

mapM :: Monad m => (a -> m b) -> TextLabel a -> m (TextLabel b) #

sequence :: Monad m => TextLabel (m a) -> m (TextLabel a) #

Functor TextLabel Source # 
Instance details

Defined in Ipe.Content

Methods

fmap :: (a -> b) -> TextLabel a -> TextLabel b #

(<$) :: a -> TextLabel b -> TextLabel a #

ToObject TextLabel Source # 
Instance details

Defined in Ipe.Content

Generic (TextLabel r) Source # 
Instance details

Defined in Ipe.Content

Associated Types

type Rep (TextLabel r) :: Type -> Type #

Methods

from :: TextLabel r -> Rep (TextLabel r) x #

to :: Rep (TextLabel r) x -> TextLabel r #

Show r => Show (TextLabel r) Source # 
Instance details

Defined in Ipe.Content

Eq r => Eq (TextLabel r) Source # 
Instance details

Defined in Ipe.Content

Methods

(==) :: TextLabel r -> TextLabel r -> Bool #

(/=) :: TextLabel r -> TextLabel r -> Bool #

Ord r => Ord (TextLabel r) Source # 
Instance details

Defined in Ipe.Content

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

Defined in Ipe.Reader

IpeWriteText r => IpeWrite (TextLabel r) Source # 
Instance details

Defined in Ipe.Writer

Fractional r => IsTransformable (TextLabel r) Source # 
Instance details

Defined in Ipe.Content

Methods

transformBy :: Transformation (Dimension (TextLabel r)) (NumType (TextLabel r)) -> TextLabel r -> TextLabel r

type Rep (TextLabel r) Source # 
Instance details

Defined in Ipe.Content

type Rep (TextLabel r) = D1 ('MetaData "TextLabel" "Ipe.Content" "hgeometry-1.0.0.0-inplace-ipe" 'False) (C1 ('MetaCons "Label" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Point 2 r))))
type Dimension (TextLabel r) Source # 
Instance details

Defined in Ipe.Content

type Dimension (TextLabel r) = 2
type NumType (TextLabel r) Source # 
Instance details

Defined in Ipe.Content

type NumType (TextLabel r) = r

data MiniPage r Source #

A Minipage

Constructors

MiniPage Text (Point 2 r) r 

Instances

Instances details
Foldable MiniPage Source # 
Instance details

Defined in Ipe.Content

Methods

fold :: Monoid m => MiniPage m -> m #

foldMap :: Monoid m => (a -> m) -> MiniPage a -> m #

foldMap' :: Monoid m => (a -> m) -> MiniPage a -> m #

foldr :: (a -> b -> b) -> b -> MiniPage a -> b #

foldr' :: (a -> b -> b) -> b -> MiniPage a -> b #

foldl :: (b -> a -> b) -> b -> MiniPage a -> b #

foldl' :: (b -> a -> b) -> b -> MiniPage a -> b #

foldr1 :: (a -> a -> a) -> MiniPage a -> a #

foldl1 :: (a -> a -> a) -> MiniPage a -> a #

toList :: MiniPage a -> [a] #

null :: MiniPage a -> Bool #

length :: MiniPage a -> Int #

elem :: Eq a => a -> MiniPage a -> Bool #

maximum :: Ord a => MiniPage a -> a #

minimum :: Ord a => MiniPage a -> a #

sum :: Num a => MiniPage a -> a #

product :: Num a => MiniPage a -> a #

Traversable MiniPage Source # 
Instance details

Defined in Ipe.Content

Methods

traverse :: Applicative f => (a -> f b) -> MiniPage a -> f (MiniPage b) #

sequenceA :: Applicative f => MiniPage (f a) -> f (MiniPage a) #

mapM :: Monad m => (a -> m b) -> MiniPage a -> m (MiniPage b) #

sequence :: Monad m => MiniPage (m a) -> m (MiniPage a) #

Functor MiniPage Source # 
Instance details

Defined in Ipe.Content

Methods

fmap :: (a -> b) -> MiniPage a -> MiniPage b #

(<$) :: a -> MiniPage b -> MiniPage a #

ToObject MiniPage Source # 
Instance details

Defined in Ipe.Content

Generic (MiniPage r) Source # 
Instance details

Defined in Ipe.Content

Associated Types

type Rep (MiniPage r) :: Type -> Type #

Methods

from :: MiniPage r -> Rep (MiniPage r) x #

to :: Rep (MiniPage r) x -> MiniPage r #

Show r => Show (MiniPage r) Source # 
Instance details

Defined in Ipe.Content

Methods

showsPrec :: Int -> MiniPage r -> ShowS #

show :: MiniPage r -> String #

showList :: [MiniPage r] -> ShowS #

Eq r => Eq (MiniPage r) Source # 
Instance details

Defined in Ipe.Content

Methods

(==) :: MiniPage r -> MiniPage r -> Bool #

(/=) :: MiniPage r -> MiniPage r -> Bool #

Ord r => Ord (MiniPage r) Source # 
Instance details

Defined in Ipe.Content

Methods

compare :: MiniPage r -> MiniPage r -> Ordering #

(<) :: MiniPage r -> MiniPage r -> Bool #

(<=) :: MiniPage r -> MiniPage r -> Bool #

(>) :: MiniPage r -> MiniPage r -> Bool #

(>=) :: MiniPage r -> MiniPage r -> Bool #

max :: MiniPage r -> MiniPage r -> MiniPage r #

min :: MiniPage r -> MiniPage r -> MiniPage r #

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

Defined in Ipe.Reader

IpeWriteText r => IpeWrite (MiniPage r) Source # 
Instance details

Defined in Ipe.Writer

Fractional r => IsTransformable (MiniPage r) Source # 
Instance details

Defined in Ipe.Content

Methods

transformBy :: Transformation (Dimension (MiniPage r)) (NumType (MiniPage r)) -> MiniPage r -> MiniPage r

type Rep (MiniPage r) Source # 
Instance details

Defined in Ipe.Content

type Dimension (MiniPage r) Source # 
Instance details

Defined in Ipe.Content

type Dimension (MiniPage r) = 2
type NumType (MiniPage r) Source # 
Instance details

Defined in Ipe.Content

type NumType (MiniPage r) = r

data Image r Source #

Image Objects

bitmap image objects in Ipe

Constructors

Image () (Rectangle (Point 2 r)) 

Instances

Instances details
Foldable Image Source # 
Instance details

Defined in Ipe.Content

Methods

fold :: Monoid m => Image m -> m #

foldMap :: Monoid m => (a -> m) -> Image a -> m #

foldMap' :: Monoid m => (a -> m) -> Image a -> m #

foldr :: (a -> b -> b) -> b -> Image a -> b #

foldr' :: (a -> b -> b) -> b -> Image a -> b #

foldl :: (b -> a -> b) -> b -> Image a -> b #

foldl' :: (b -> a -> b) -> b -> Image a -> b #

foldr1 :: (a -> a -> a) -> Image a -> a #

foldl1 :: (a -> a -> a) -> Image a -> a #

toList :: Image a -> [a] #

null :: Image a -> Bool #

length :: Image a -> Int #

elem :: Eq a => a -> Image a -> Bool #

maximum :: Ord a => Image a -> a #

minimum :: Ord a => Image a -> a #

sum :: Num a => Image a -> a #

product :: Num a => Image a -> a #

Traversable Image Source # 
Instance details

Defined in Ipe.Content

Methods

traverse :: Applicative f => (a -> f b) -> Image a -> f (Image b) #

sequenceA :: Applicative f => Image (f a) -> f (Image a) #

mapM :: Monad m => (a -> m b) -> Image a -> m (Image b) #

sequence :: Monad m => Image (m a) -> m (Image a) #

Functor Image Source # 
Instance details

Defined in Ipe.Content

Methods

fmap :: (a -> b) -> Image a -> Image b #

(<$) :: a -> Image b -> Image a #

ToObject Image Source # 
Instance details

Defined in Ipe.Content

Generic (Image r) Source # 
Instance details

Defined in Ipe.Content

Associated Types

type Rep (Image r) :: Type -> Type #

Methods

from :: Image r -> Rep (Image r) x #

to :: Rep (Image r) x -> Image r #

Show r => Show (Image r) Source # 
Instance details

Defined in Ipe.Content

Methods

showsPrec :: Int -> Image r -> ShowS #

show :: Image r -> String #

showList :: [Image r] -> ShowS #

Eq r => Eq (Image r) Source # 
Instance details

Defined in Ipe.Content

Methods

(==) :: Image r -> Image r -> Bool #

(/=) :: Image r -> Image r -> Bool #

Ord r => Ord (Image r) Source # 
Instance details

Defined in Ipe.Content

Methods

compare :: Image r -> Image r -> Ordering #

(<) :: Image r -> Image r -> Bool #

(<=) :: Image r -> Image r -> Bool #

(>) :: Image r -> Image r -> Bool #

(>=) :: Image r -> Image r -> Bool #

max :: Image r -> Image r -> Image r #

min :: Image r -> Image r -> Image r #

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

Defined in Ipe.Reader

IpeWriteText r => IpeWrite (Image r) Source # 
Instance details

Defined in Ipe.Writer

Fractional r => IsTransformable (Image r) Source # 
Instance details

Defined in Ipe.Content

Methods

transformBy :: Transformation (Dimension (Image r)) (NumType (Image r)) -> Image r -> Image r

type Rep (Image r) Source # 
Instance details

Defined in Ipe.Content

type Rep (Image r) = D1 ('MetaData "Image" "Ipe.Content" "hgeometry-1.0.0.0-inplace-ipe" 'False) (C1 ('MetaCons "Image" 'PrefixI 'True) (S1 ('MetaSel ('Just "_imageData") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ()) :*: S1 ('MetaSel ('Just "_rect") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Rectangle (Point 2 r)))))
type Dimension (Image r) Source # 
Instance details

Defined in Ipe.Content

type Dimension (Image r) = 2
type NumType (Image r) Source # 
Instance details

Defined in Ipe.Content

type NumType (Image r) = r

imageData :: Lens' (Image r) () Source #

Lens to access the image data

rect :: Lens (Image r) (Image r') (Rectangle (Point 2 r)) (Rectangle (Point 2 r')) Source #

Lens to access the rectangle of the image

type IpeBitmap = Text Source #

Ipe Bitmap data

Attributes

type Attributes' r = Attributes (AttrMapSym1 r) Source #

Attributes' :: Type -> [AttributeUniverse] -> Type

type family AttrMap (r :: Type) (l :: AttributeUniverse) :: Type where ... Source #

The mapping between the labels of the the attributes and the types of the attributes with these labels. For example, the Matrix label/attribute should have a value of type 'Matrix 3 3 r'.

data AttrMapSym1 (a6989586621679250930 :: Type) :: (~>) AttributeUniverse Type Source #

Instances

Instances details
SuppressUnusedWarnings (AttrMapSym1 a6989586621679250930 :: TyFun AttributeUniverse Type -> Type) Source # 
Instance details

Defined in Ipe.Content

type Apply (AttrMapSym1 a6989586621679250930 :: TyFun AttributeUniverse Type -> Type) (a6989586621679250931 :: AttributeUniverse) Source # 
Instance details

Defined in Ipe.Content

type Apply (AttrMapSym1 a6989586621679250930 :: TyFun AttributeUniverse Type -> Type) (a6989586621679250931 :: AttributeUniverse) = AttrMap a6989586621679250930 a6989586621679250931

traverseIpeAttrs :: (Applicative f, AllConstrained TraverseIpeAttr (AttributesOf g)) => proxy g -> (r -> f s) -> IpeAttributes g r -> f (IpeAttributes g s) Source #

traverse for ipe attributes

Layers and Views

newtype LayerName Source #

Defines an Layer in Ipe.

Constructors

LayerName Text 

Instances

Instances details
IsString LayerName Source # 
Instance details

Defined in Ipe.Layer

Read LayerName Source # 
Instance details

Defined in Ipe.Layer

Show LayerName Source # 
Instance details

Defined in Ipe.Layer

Eq LayerName Source # 
Instance details

Defined in Ipe.Layer

Ord LayerName Source # 
Instance details

Defined in Ipe.Layer

IpeRead LayerName Source # 
Instance details

Defined in Ipe.Reader

IpeReadText LayerName Source # 
Instance details

Defined in Ipe.Reader

IpeWrite LayerName Source # 
Instance details

Defined in Ipe.Writer

IpeWriteText LayerName Source # 
Instance details

Defined in Ipe.Writer

data View Source #

The definition of a view make active layer into an index ?

Constructors

View [LayerName] LayerName 

Instances

Instances details
Generic View Source # 
Instance details

Defined in Ipe.Types

Associated Types

type Rep View :: Type -> Type #

Methods

from :: View -> Rep View x #

to :: Rep View x -> View #

Show View Source # 
Instance details

Defined in Ipe.Types

Methods

showsPrec :: Int -> View -> ShowS #

show :: View -> String #

showList :: [View] -> ShowS #

Eq View Source # 
Instance details

Defined in Ipe.Types

Methods

(==) :: View -> View -> Bool #

(/=) :: View -> View -> Bool #

Ord View Source # 
Instance details

Defined in Ipe.Types

Methods

compare :: View -> View -> Ordering #

(<) :: View -> View -> Bool #

(<=) :: View -> View -> Bool #

(>) :: View -> View -> Bool #

(>=) :: View -> View -> Bool #

max :: View -> View -> View #

min :: View -> View -> View #

IpeRead View Source # 
Instance details

Defined in Ipe.Reader

IpeWrite View Source # 
Instance details

Defined in Ipe.Writer

type Rep View Source # 
Instance details

Defined in Ipe.Types

type Rep View = D1 ('MetaData "View" "Ipe.Types" "hgeometry-1.0.0.0-inplace-ipe" 'False) (C1 ('MetaCons "View" 'PrefixI 'True) (S1 ('MetaSel ('Just "_layerNames") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [LayerName]) :*: S1 ('MetaSel ('Just "_activeLayer") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 LayerName)))

layerNames :: Lens' View [LayerName] Source #

Lens to access the layers in this view

activeLayer :: Lens' View LayerName Source #

Lens to access the active layer

Ipe Syles and Preamble

data IpeStyle Source #

for now we pretty much ignore these

Constructors

IpeStyle (Maybe Text) (Node Text Text) 

Instances

Instances details
Generic IpeStyle Source # 
Instance details

Defined in Ipe.Types

Associated Types

type Rep IpeStyle :: Type -> Type #

Methods

from :: IpeStyle -> Rep IpeStyle x #

to :: Rep IpeStyle x -> IpeStyle #

Show IpeStyle Source # 
Instance details

Defined in Ipe.Types

Eq IpeStyle Source # 
Instance details

Defined in Ipe.Types

IpeRead IpeStyle Source # 
Instance details

Defined in Ipe.Reader

IpeWrite IpeStyle Source # 
Instance details

Defined in Ipe.Writer

type Rep IpeStyle Source # 
Instance details

Defined in Ipe.Types

type Rep IpeStyle = D1 ('MetaData "IpeStyle" "Ipe.Types" "hgeometry-1.0.0.0-inplace-ipe" 'False) (C1 ('MetaCons "IpeStyle" 'PrefixI 'True) (S1 ('MetaSel ('Just "_styleName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Text)) :*: S1 ('MetaSel ('Just "_styleData") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Node Text Text))))

styleName :: Lens' IpeStyle (Maybe Text) Source #

Lens to access the style name

styleData :: Lens' IpeStyle (Node Text Text) Source #

Lens to access the style data

basicIpeStyle :: IpeStyle Source #

The "basic" ipe stylesheet

opacitiesStyle :: IpeStyle Source #

A stylesheet with some convenient predefined opacities. In particular the opacities "10%","20%",..,"90%".

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

Reads an Ipe stylesheet from Disk.

addStyleSheet :: IpeStyle -> IpeFile r -> IpeFile r Source #

Adds a stylesheet to the ipe file. This will be the first stylesheet, i.e. it has priority over all previously imported stylesheets.

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.

data IpePreamble Source #

The maybe string is the encoding

Constructors

IpePreamble (Maybe Text) Text 

Instances

Instances details
Generic IpePreamble Source # 
Instance details

Defined in Ipe.Types

Associated Types

type Rep IpePreamble :: Type -> Type #

Read IpePreamble Source # 
Instance details

Defined in Ipe.Types

Show IpePreamble Source # 
Instance details

Defined in Ipe.Types

Eq IpePreamble Source # 
Instance details

Defined in Ipe.Types

Ord IpePreamble Source # 
Instance details

Defined in Ipe.Types

IpeWrite IpePreamble Source # 
Instance details

Defined in Ipe.Writer

type Rep IpePreamble Source # 
Instance details

Defined in Ipe.Types

type Rep IpePreamble = D1 ('MetaData "IpePreamble" "Ipe.Types" "hgeometry-1.0.0.0-inplace-ipe" 'False) (C1 ('MetaCons "IpePreamble" 'PrefixI 'True) (S1 ('MetaSel ('Just "_encoding") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Text)) :*: S1 ('MetaSel ('Just "_preambleData") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text)))

encoding :: Lens' IpePreamble (Maybe Text) Source #

Lens to access the encoding

preambleData :: Lens' IpePreamble Text Source #

Lens to access the preambleData

Reading Geometries *From* Ipe

class IpeRead t where Source #

Reading an ipe lement from Xml

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

Converting *from* IpeObjects

_asPoint :: Prism' (IpeSymbol r) (Point 2 r) Source #

Extracts the point from a Symbol. When creating a symbol this creates a disk that supports a stroke color.

_asLineSegment :: Prism' (Path r) (LineSegment AnEndPoint (Point 2 r)) Source #

Try to convert a path into a line segment, fails if the path is not a line segment or a polyline with more than two points.

_asClosedLineSegment :: Prism' (Path r) (ClosedLineSegment (Point 2 r)) Source #

Try to convert a path into a line segment, fails if the path is not a line segment or a polyline with more than two points.

_asRectangle :: forall r. (Num r, Ord r) => Prism' (Path r) (Rectangle (Point 2 r)) Source #

Tries to convert a path into a rectangle.

_asTriangle :: Prism' (Path r) (Triangle (Point 2 r)) Source #

Convert to a triangle

_asPolyLine :: Prism' (Path r) (PolyLine (Point 2 r)) Source #

Convert to a polyline. Ignores all non-polyline parts

>>> testPath ^? _asPolyLine
Just (PolyLine [Point2 0 0,Point2 10 10,Point2 200 100])

_asSimplePolygon :: Prism' (Path r) (SimplePolygon (Point 2 r)) Source #

Convert to a simple polygon

_asConvexPolygon :: (Num r, Ord r) => Prism' (Path r) (ConvexPolygon (Point 2 r)) Source #

Convert to a convex polygon

Dealing with Attributes

_withAttrs :: Prism' (IpeObject r) (i r :+ IpeAttributes i r) -> Prism' (i r) g -> Prism' (IpeObject r) (g :+ IpeAttributes i r) Source #

Use the first prism to select the ipe object to depicle with, and the second how to select the geometry object from there on. Then we can select the geometry object, directly with its attributes here.

>>> testObject ^? _withAttrs _IpePath _asPolyLine
Just (PolyLine [Point2 0 0,Point2 10 10,Point2 200 100] :+ Attrs {NoAttr, NoAttr, NoAttr, NoAttr, Attr IpeColor (Named "red"), NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr})

Default readers

class HasDefaultFromIpe g where Source #

Associated Types

type DefaultFromIpe g :: Type -> Type Source #

Methods

defaultFromIpe :: r ~ NumType g => Prism' (IpeObject r) (g :+ IpeAttributes (DefaultFromIpe g) r) Source #

Instances

Instances details
HasDefaultFromIpe (PolyLine (Point 2 r)) Source # 
Instance details

Defined in Ipe.FromIpe

Associated Types

type DefaultFromIpe (PolyLine (Point 2 r)) :: Type -> Type Source #

Methods

defaultFromIpe :: r0 ~ NumType (PolyLine (Point 2 r)) => Prism' (IpeObject r0) (PolyLine (Point 2 r) :+ IpeAttributes (DefaultFromIpe (PolyLine (Point 2 r))) r0) Source #

HasDefaultFromIpe (SimplePolygon (Point 2 r)) Source # 
Instance details

Defined in Ipe.FromIpe

Associated Types

type DefaultFromIpe (SimplePolygon (Point 2 r)) :: Type -> Type Source #

Methods

defaultFromIpe :: r0 ~ NumType (SimplePolygon (Point 2 r)) => Prism' (IpeObject r0) (SimplePolygon (Point 2 r) :+ IpeAttributes (DefaultFromIpe (SimplePolygon (Point 2 r))) r0) Source #

(Radical r, Eq r) => HasDefaultFromIpe (Circle (Point 2 r)) Source # 
Instance details

Defined in Ipe.FromIpe

Associated Types

type DefaultFromIpe (Circle (Point 2 r)) :: Type -> Type Source #

Methods

defaultFromIpe :: r0 ~ NumType (Circle (Point 2 r)) => Prism' (IpeObject r0) (Circle (Point 2 r) :+ IpeAttributes (DefaultFromIpe (Circle (Point 2 r))) r0) Source #

(Radical r, Eq r) => HasDefaultFromIpe (Disk (Point 2 r)) Source # 
Instance details

Defined in Ipe.FromIpe

Associated Types

type DefaultFromIpe (Disk (Point 2 r)) :: Type -> Type Source #

Methods

defaultFromIpe :: r0 ~ NumType (Disk (Point 2 r)) => Prism' (IpeObject r0) (Disk (Point 2 r) :+ IpeAttributes (DefaultFromIpe (Disk (Point 2 r))) r0) Source #

(Num r, Ord r) => HasDefaultFromIpe (Rectangle (Point 2 r)) Source # 
Instance details

Defined in Ipe.FromIpe

Associated Types

type DefaultFromIpe (Rectangle (Point 2 r)) :: Type -> Type Source #

Methods

defaultFromIpe :: r0 ~ NumType (Rectangle (Point 2 r)) => Prism' (IpeObject r0) (Rectangle (Point 2 r) :+ IpeAttributes (DefaultFromIpe (Rectangle (Point 2 r))) r0) Source #

HasDefaultFromIpe (Ellipse r) Source # 
Instance details

Defined in Ipe.FromIpe

Associated Types

type DefaultFromIpe (Ellipse r) :: Type -> Type Source #

Methods

defaultFromIpe :: r0 ~ NumType (Ellipse r) => Prism' (IpeObject r0) (Ellipse r :+ IpeAttributes (DefaultFromIpe (Ellipse r)) r0) Source #

HasDefaultFromIpe (ClosedLineSegment (Point 2 r)) Source # 
Instance details

Defined in Ipe.FromIpe

Associated Types

type DefaultFromIpe (ClosedLineSegment (Point 2 r)) :: Type -> Type Source #

Methods

defaultFromIpe :: r0 ~ NumType (ClosedLineSegment (Point 2 r)) => Prism' (IpeObject r0) (ClosedLineSegment (Point 2 r) :+ IpeAttributes (DefaultFromIpe (ClosedLineSegment (Point 2 r))) r0) Source #

HasDefaultFromIpe (LineSegment AnEndPoint (Point 2 r)) Source # 
Instance details

Defined in Ipe.FromIpe

Associated Types

type DefaultFromIpe (LineSegment AnEndPoint (Point 2 r)) :: Type -> Type Source #

Methods

defaultFromIpe :: r0 ~ NumType (LineSegment AnEndPoint (Point 2 r)) => Prism' (IpeObject r0) (LineSegment AnEndPoint (Point 2 r) :+ IpeAttributes (DefaultFromIpe (LineSegment AnEndPoint (Point 2 r))) r0) Source #

HasDefaultFromIpe (Point 2 r) Source # 
Instance details

Defined in Ipe.FromIpe

Associated Types

type DefaultFromIpe (Point 2 r) :: Type -> Type Source #

Methods

defaultFromIpe :: r0 ~ NumType (Point 2 r) => Prism' (IpeObject r0) (Point 2 r :+ IpeAttributes (DefaultFromIpe (Point 2 r)) r0) Source #

Converting *to* IpeObjects

IpeWrite

class IpeWrite t where Source #

Types that correspond to an XML Element. All instances should produce an Element. If the type should produce a Node with the Text constructor, use the IpeWriteText typeclass instead.

Methods

ipeWrite :: t -> Maybe (Node Text Text) Source #

Instances

Instances details
IpeWrite LayerName Source # 
Instance details

Defined in Ipe.Writer

IpeWrite IpePreamble Source # 
Instance details

Defined in Ipe.Writer

IpeWrite IpeStyle Source # 
Instance details

Defined in Ipe.Writer

IpeWrite View Source # 
Instance details

Defined in Ipe.Writer

IpeWrite () Source # 
Instance details

Defined in Ipe.Writer

Methods

ipeWrite :: () -> Maybe (Node Text Text) Source #

IpeWrite t => IpeWrite (NonEmpty t) Source # 
Instance details

Defined in Ipe.Writer

IpeWriteText r => IpeWrite (Group r) Source # 
Instance details

Defined in Ipe.Writer

IpeWriteText r => IpeWrite (Image r) Source # 
Instance details

Defined in Ipe.Writer

IpeWriteText r => IpeWrite (IpeObject r) Source # 
Instance details

Defined in Ipe.Writer

IpeWriteText r => IpeWrite (IpeSymbol r) Source # 
Instance details

Defined in Ipe.Writer

IpeWriteText r => IpeWrite (MiniPage r) Source # 
Instance details

Defined in Ipe.Writer

IpeWriteText r => IpeWrite (TextLabel r) Source # 
Instance details

Defined in Ipe.Writer

IpeWriteText r => IpeWrite (Path r) Source # 
Instance details

Defined in Ipe.Writer

Methods

ipeWrite :: Path r -> Maybe (Node Text Text) Source #

IpeWriteText r => IpeWrite (IpeFile r) Source # 
Instance details

Defined in Ipe.Writer

IpeWriteText r => IpeWrite (IpePage r) Source # 
Instance details

Defined in Ipe.Writer

IpeWrite t => IpeWrite [t] Source # 
Instance details

Defined in Ipe.Writer

Methods

ipeWrite :: [t] -> Maybe (Node Text Text) Source #

(IpeWrite l, IpeWrite r) => IpeWrite (Either l r) Source # 
Instance details

Defined in Ipe.Writer

Methods

ipeWrite :: Either l r -> Maybe (Node Text Text) Source #

(IpeWriteText r, EndPoint_ (endPoint point), IxValue (endPoint point) ~ point, Vertex (LineSegment endPoint point) ~ point, Point_ point 2 r) => IpeWrite (LineSegment endPoint point) Source # 
Instance details

Defined in Ipe.Writer

Methods

ipeWrite :: LineSegment endPoint point -> Maybe (Node Text Text) Source #

(AllConstrained IpeAttrName rs, RecordToList rs, RMap rs, ReifyConstraint IpeWriteText (Attr f) rs, RecAll (Attr f) rs IpeWriteText, IpeWrite g) => IpeWrite (g :+ Attributes f rs) Source # 
Instance details

Defined in Ipe.Writer

Methods

ipeWrite :: (g :+ Attributes f rs) -> Maybe (Node Text Text) Source #

(IpeWriteText r, Point_ point 2 r, Functor f, Foldable1 f) => IpeWrite (PolyLineF f point) Source # 
Instance details

Defined in Ipe.Writer

Methods

ipeWrite :: PolyLineF f point -> Maybe (Node Text Text) Source #

class IpeWriteText t where Source #

For types that can produce a text value

Methods

ipeWriteText :: t -> Maybe Text Source #

Instances

Instances details
IpeWriteText FillType Source # 
Instance details

Defined in Ipe.Writer

IpeWriteText HorizontalAlignment Source # 
Instance details

Defined in Ipe.Writer

IpeWriteText PinType Source # 
Instance details

Defined in Ipe.Writer

IpeWriteText TransformationTypes Source # 
Instance details

Defined in Ipe.Writer

IpeWriteText VerticalAlignment Source # 
Instance details

Defined in Ipe.Writer

IpeWriteText LayerName Source # 
Instance details

Defined in Ipe.Writer

IpeWriteText Text Source # 
Instance details

Defined in Ipe.Writer

IpeWriteText String Source # 
Instance details

Defined in Ipe.Writer

IpeWriteText Integer Source # 
Instance details

Defined in Ipe.Writer

IpeWriteText () Source # 
Instance details

Defined in Ipe.Writer

Methods

ipeWriteText :: () -> Maybe Text Source #

IpeWriteText Double Source # 
Instance details

Defined in Ipe.Writer

IpeWriteText Float Source # 
Instance details

Defined in Ipe.Writer

IpeWriteText Int Source # 
Instance details

Defined in Ipe.Writer

Integral a => IpeWriteText (Ratio a) Source #

This instance converts the ratio to a Pico, and then displays that.

Instance details

Defined in Ipe.Writer

IpeWriteText r => IpeWriteText (RGB r) Source # 
Instance details

Defined in Ipe.Writer

(IpeWriteText r, Point_ point 2 r) => IpeWriteText (CubicBezier point) Source # 
Instance details

Defined in Ipe.Writer

(IpeWriteText r, Point_ point 2 r) => IpeWriteText (PolyLine point) Source # 
Instance details

Defined in Ipe.Writer

Methods

ipeWriteText :: PolyLine point -> Maybe Text Source #

(IpeWriteText r, Point_ point 2 r) => IpeWriteText (SimplePolygon point) Source # 
Instance details

Defined in Ipe.Writer

IpeWriteText r => IpeWriteText (IpeArrow r) Source # 
Instance details

Defined in Ipe.Writer

IpeWriteText r => IpeWriteText (IpeDash r) Source # 
Instance details

Defined in Ipe.Writer

IpeWriteText r => IpeWriteText (IpePen r) Source # 
Instance details

Defined in Ipe.Writer

IpeWriteText r => IpeWriteText (IpeSize r) Source # 
Instance details

Defined in Ipe.Writer

IpeWriteText r => IpeWriteText (IpeColor r) Source # 
Instance details

Defined in Ipe.Writer

IpeWriteText r => IpeWriteText (Operation r) Source # 
Instance details

Defined in Ipe.Writer

IpeWriteText r => IpeWriteText (Path r) Source # 
Instance details

Defined in Ipe.Writer

IpeWriteText r => IpeWriteText (PathSegment r) Source # 
Instance details

Defined in Ipe.Writer

IpeWriteText v => IpeWriteText (IpeValue v) Source # 
Instance details

Defined in Ipe.Writer

IpeWriteText (RealNumber p) Source # 
Instance details

Defined in Ipe.Writer

(IpeWriteText l, IpeWriteText r) => IpeWriteText (Either l r) Source # 
Instance details

Defined in Ipe.Writer

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

Defined in Ipe.Writer

IpeWriteText r => IpeWriteText (Point 2 r) Source # 
Instance details

Defined in Ipe.Writer

Methods

ipeWriteText :: Point 2 r -> Maybe Text Source #

IpeWriteText (Apply f at) => IpeWriteText (Attr f at) Source # 
Instance details

Defined in Ipe.Writer

Methods

ipeWriteText :: Attr f at -> Maybe Text Source #

IpeWriteText r => IpeWriteText (Matrix 3 3 r) Source # 
Instance details

Defined in Ipe.Writer

Methods

ipeWriteText :: Matrix 3 3 r -> Maybe Text Source #

IpeOut

module Ipe.IpeOut

Batch reexports

module Ipe.Value

newtype IpeColor r Source #

Defines a color in Ipe. Colors are either RGB Values or Named values.

Constructors

IpeColor (IpeValue (RGB r)) 

Instances

Instances details
Foldable IpeColor Source # 
Instance details

Defined in Ipe.Color

Methods

fold :: Monoid m => IpeColor m -> m #

foldMap :: Monoid m => (a -> m) -> IpeColor a -> m #

foldMap' :: Monoid m => (a -> m) -> IpeColor a -> m #

foldr :: (a -> b -> b) -> b -> IpeColor a -> b #

foldr' :: (a -> b -> b) -> b -> IpeColor a -> b #

foldl :: (b -> a -> b) -> b -> IpeColor a -> b #

foldl' :: (b -> a -> b) -> b -> IpeColor a -> b #

foldr1 :: (a -> a -> a) -> IpeColor a -> a #

foldl1 :: (a -> a -> a) -> IpeColor a -> a #

toList :: IpeColor a -> [a] #

null :: IpeColor a -> Bool #

length :: IpeColor a -> Int #

elem :: Eq a => a -> IpeColor a -> Bool #

maximum :: Ord a => IpeColor a -> a #

minimum :: Ord a => IpeColor a -> a #

sum :: Num a => IpeColor a -> a #

product :: Num a => IpeColor a -> a #

Traversable IpeColor Source # 
Instance details

Defined in Ipe.Color

Methods

traverse :: Applicative f => (a -> f b) -> IpeColor a -> f (IpeColor b) #

sequenceA :: Applicative f => IpeColor (f a) -> f (IpeColor a) #

mapM :: Monad m => (a -> m b) -> IpeColor a -> m (IpeColor b) #

sequence :: Monad m => IpeColor (m a) -> m (IpeColor a) #

Functor IpeColor Source # 
Instance details

Defined in Ipe.Color

Methods

fmap :: (a -> b) -> IpeColor a -> IpeColor b #

(<$) :: a -> IpeColor b -> IpeColor a #

Read r => Read (IpeColor r) Source # 
Instance details

Defined in Ipe.Color

Show r => Show (IpeColor r) Source # 
Instance details

Defined in Ipe.Color

Methods

showsPrec :: Int -> IpeColor r -> ShowS #

show :: IpeColor r -> String #

showList :: [IpeColor r] -> ShowS #

Eq r => Eq (IpeColor r) Source # 
Instance details

Defined in Ipe.Color

Methods

(==) :: IpeColor r -> IpeColor r -> Bool #

(/=) :: IpeColor r -> IpeColor r -> Bool #

Ord r => Ord (IpeColor r) Source # 
Instance details

Defined in Ipe.Color

Methods

compare :: IpeColor r -> IpeColor r -> Ordering #

(<) :: IpeColor r -> IpeColor r -> Bool #

(<=) :: IpeColor r -> IpeColor r -> Bool #

(>) :: IpeColor r -> IpeColor r -> Bool #

(>=) :: IpeColor r -> IpeColor r -> Bool #

max :: IpeColor r -> IpeColor r -> IpeColor r #

min :: IpeColor r -> IpeColor r -> IpeColor r #

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

Defined in Ipe.Reader

IpeWriteText r => IpeWriteText (IpeColor r) Source # 
Instance details

Defined in Ipe.Writer

named :: Text -> IpeColor r Source #

Creates a named color