# Hipe

Support for reading and writing ipe7 files (http://ipe7.sourceforge.net)

API docs

## Changelog

### 0.2

• Added/switched to other data types representing a Drawing/Page/Layer. The old data types were nice/usefull for the translation into the ipe xml file, but not so much to work with as a user. The new data types are tailered to that, i.e. a drawing is (just) a list of pages, a page is a list of layers and some views, and a layer is really something that has a name and a number of geometry objects associated with it.

This dramatically changed the place where things were defined. IpeTypes now actually contains the most generic’’ definitions. The more basic stuff is in InternalTypes. However everything you should need is exported by IpeTypes (and the new Ipe module. See below.)

• Switched to arrows instead of the functions in IpeGeometry. What we basically want to do is: given a drawing, run some computation that produces another drawing. This was fine if the computation was a pure function, but not so much if the computation also did IO etc.

• Removed the ViewInstances. Functionality like this may reappear in the future. (or at least the possibility to get all objects that are visible in a certain view.)

• Added a single Ipe module (Data.Geometry.Ipe.Ipe) that exports most of the things from the other modules that you would need

• The IsConvertableToIpeObject typeclasses now use Type Families, so you can also use the typeclass with other types

• added convenience functions to work with attributes of objects (i.e. things that implement HasAttributes)

• The type constraints to be in the typeclass Coordinate (as used in the Pickling) are stricter now. Types should now also be in Fractional. This does allow us to provide a default implementation for most functions.

• Some changes in the data types used to represent IpeStyle, Preamble, and possible Bitmaps.

### 0.1.1

• Updated to Hxt 9.3, to get ipe to compile using GHC 7.6

### 0.1

• Initial release.