
I'm hoping the second part of the version number isn't ominous, but I've just uploaded the latest release in my bindings for the Graphviz suite of graph visualisation tools. The changes in this release are: * Added support for the `osage` and `patchwork` visualisation tools, available as of Graphviz-2.28.0. * Updated attributes as of Graphviz-2.28.0: - `SVG` colors are now supported, and the support for different colors has been revamped. - `overlap=false` is now equivalent to `overlap=prism` and the `RemoveOverlaps` option has been removed. - `LabelScheme` and `Rotation` are new attributes for use with `sfdp`. - `Scale` is a new attribute for use with `twopi`. - Add new italics, bold, underline, superscript and subscript options for HTML-like labels. - `LHeight` and `LWidth` for getting the height and width of the root graph and clusters. * Updated attributes from the current development branch of Graphviz (i.e. 2.29.*). Please note that these will probably not work yet, but are implemented now for future-proofing. - A new style for edges: `Tapered`. - `XLabel` allows you to specify labels external to a node or edge. `ForceLabels` allow you to specify that these should be drawn even when they will cause overlaps. - `ImagePath` allows you to specify where to search for images. - HTML-like labels now support `ID` values as well as horizontal and vertical rules. - `BgColor` and `FillColor` now take a list of colors: this allows gradient fills for graphs, clusters and nodes. The `Radial` style and `GradientAngle` are also used for this purpose. - `FillColor` is now used by edges to set the color of any arrows. - [WebP](http://en.wikipedia.org/wiki/WebP) output support added. * Other attribute changes: - Use a specified data type for the `Ordering` attribute rather than an arbitrary `Text` value, and provide a documented wrapper in `Data.GraphViz.Attributes`. - `Bb` has been renamed `BoundingBox`. - `ID` now only takes `EscString` (a type alias for `Text`) values rather than arbitrary `Label`s. - The `Data.GraphViz.Attributes.HTML` module has had all values re-named and is now meant to be imported qualified. It is also no longer re-exported from `Data.GraphViz.Attributes.Complete`. * The `ToGraphID` class provides a common wrapper to help create cluster identifiers, etc. * Cabal's `Test-Suite` functionality is now used. As part of this, the `Data.GraphViz.Testing` module and sub-modules are no longer exported by the library. * The new `Benchmark` support in Cabal-1.14 is now used for the benchmark script. * Dropped support for base-3. * The `Data.GraphViz.State` module is no longer exposed, as there's no need for users to use it. * Bugfixes: - Some corner cases in canonicalisation prevented it from being idempotent. - The `TestParsing` script will no longer crash and refuse to continue if an IO-based error (e.g. unable to successfully call `dot`) occurs. - A typo was spotted by **Gabor Greif**. -- Ivan Lazar Miljenovic Ivan.Miljenovic@gmail.com http://IvanMiljenovic.wordpress.com

I should have pointed out that for most people, there should be
minimal to no API change with this release; the only change I needed
to make in my own code was that a type-class I had defined in
Graphalyze was removed as it provided the impetus for the ToGraphID
class mentioned below.
On 19 April 2012 22:52, Ivan Lazar Miljenovic
I'm hoping the second part of the version number isn't ominous, but I've just uploaded the latest release in my bindings for the Graphviz suite of graph visualisation tools.
The changes in this release are:
* Added support for the `osage` and `patchwork` visualisation tools, available as of Graphviz-2.28.0.
* Updated attributes as of Graphviz-2.28.0:
- `SVG` colors are now supported, and the support for different colors has been revamped.
- `overlap=false` is now equivalent to `overlap=prism` and the `RemoveOverlaps` option has been removed.
- `LabelScheme` and `Rotation` are new attributes for use with `sfdp`.
- `Scale` is a new attribute for use with `twopi`.
- Add new italics, bold, underline, superscript and subscript options for HTML-like labels.
- `LHeight` and `LWidth` for getting the height and width of the root graph and clusters.
* Updated attributes from the current development branch of Graphviz (i.e. 2.29.*). Please note that these will probably not work yet, but are implemented now for future-proofing.
- A new style for edges: `Tapered`.
- `XLabel` allows you to specify labels external to a node or edge. `ForceLabels` allow you to specify that these should be drawn even when they will cause overlaps.
- `ImagePath` allows you to specify where to search for images.
- HTML-like labels now support `ID` values as well as horizontal and vertical rules.
- `BgColor` and `FillColor` now take a list of colors: this allows gradient fills for graphs, clusters and nodes. The `Radial` style and `GradientAngle` are also used for this purpose.
- `FillColor` is now used by edges to set the color of any arrows.
- [WebP](http://en.wikipedia.org/wiki/WebP) output support added.
* Other attribute changes:
- Use a specified data type for the `Ordering` attribute rather than an arbitrary `Text` value, and provide a documented wrapper in `Data.GraphViz.Attributes`.
- `Bb` has been renamed `BoundingBox`.
- `ID` now only takes `EscString` (a type alias for `Text`) values rather than arbitrary `Label`s.
- The `Data.GraphViz.Attributes.HTML` module has had all values re-named and is now meant to be imported qualified. It is also no longer re-exported from `Data.GraphViz.Attributes.Complete`.
* The `ToGraphID` class provides a common wrapper to help create cluster identifiers, etc.
* Cabal's `Test-Suite` functionality is now used. As part of this, the `Data.GraphViz.Testing` module and sub-modules are no longer exported by the library.
* The new `Benchmark` support in Cabal-1.14 is now used for the benchmark script.
* Dropped support for base-3.
* The `Data.GraphViz.State` module is no longer exposed, as there's no need for users to use it.
* Bugfixes:
- Some corner cases in canonicalisation prevented it from being idempotent.
- The `TestParsing` script will no longer crash and refuse to continue if an IO-based error (e.g. unable to successfully call `dot`) occurs.
- A typo was spotted by **Gabor Greif**.
-- Ivan Lazar Miljenovic Ivan.Miljenovic@gmail.com http://IvanMiljenovic.wordpress.com
-- Ivan Lazar Miljenovic Ivan.Miljenovic@gmail.com http://IvanMiljenovic.wordpress.com

Hello Ivan,
Thanks for bringing Graphviz to Haskell, and for your continuing
dedication to making it more complete!
I just tried Graphvis for the first time a few days ago. I regretted
the absence of example code, especially as the API has been evolving,
so that examples on the Web do not generally work without change.
I see that the inclusion of QuickStart-style documentation is on your
short-term list of milestones. I suppose an example program is not
quite that, but it might help. Do you have something along these
lines? Or, if not, if I managed to put something together which
exercises a good cross-section of the features, do you think you could
include it with the next release? I suppose there's a trade-off
between ease of maintaining the code through releases, and feature
coverage of the example(s)...
I'm CC-ing haskell-cafe in case anyone reading already has some
example code like this, which they'd be willing to donate? If
possible, it ought to be small yet illustrate a lot of features.
Kind Regards,
Andrew
On Thu, Apr 19, 2012 at 10:10 AM, Ivan Lazar Miljenovic
I should have pointed out that for most people, there should be minimal to no API change with this release; the only change I needed to make in my own code was that a type-class I had defined in Graphalyze was removed as it provided the impetus for the ToGraphID class mentioned below.
On 19 April 2012 22:52, Ivan Lazar Miljenovic
wrote: I'm hoping the second part of the version number isn't ominous, but I've just uploaded the latest release in my bindings for the Graphviz suite of graph visualisation tools.
The changes in this release are:
* Added support for the `osage` and `patchwork` visualisation tools, available as of Graphviz-2.28.0.
* Updated attributes as of Graphviz-2.28.0:
- `SVG` colors are now supported, and the support for different colors has been revamped.
- `overlap=false` is now equivalent to `overlap=prism` and the `RemoveOverlaps` option has been removed.
- `LabelScheme` and `Rotation` are new attributes for use with `sfdp`.
- `Scale` is a new attribute for use with `twopi`.
- Add new italics, bold, underline, superscript and subscript options for HTML-like labels.
- `LHeight` and `LWidth` for getting the height and width of the root graph and clusters.
* Updated attributes from the current development branch of Graphviz (i.e. 2.29.*). Please note that these will probably not work yet, but are implemented now for future-proofing.
- A new style for edges: `Tapered`.
- `XLabel` allows you to specify labels external to a node or edge. `ForceLabels` allow you to specify that these should be drawn even when they will cause overlaps.
- `ImagePath` allows you to specify where to search for images.
- HTML-like labels now support `ID` values as well as horizontal and vertical rules.
- `BgColor` and `FillColor` now take a list of colors: this allows gradient fills for graphs, clusters and nodes. The `Radial` style and `GradientAngle` are also used for this purpose.
- `FillColor` is now used by edges to set the color of any arrows.
- [WebP](http://en.wikipedia.org/wiki/WebP) output support added.
* Other attribute changes:
- Use a specified data type for the `Ordering` attribute rather than an arbitrary `Text` value, and provide a documented wrapper in `Data.GraphViz.Attributes`.
- `Bb` has been renamed `BoundingBox`.
- `ID` now only takes `EscString` (a type alias for `Text`) values rather than arbitrary `Label`s.
- The `Data.GraphViz.Attributes.HTML` module has had all values re-named and is now meant to be imported qualified. It is also no longer re-exported from `Data.GraphViz.Attributes.Complete`.
* The `ToGraphID` class provides a common wrapper to help create cluster identifiers, etc.
* Cabal's `Test-Suite` functionality is now used. As part of this, the `Data.GraphViz.Testing` module and sub-modules are no longer exported by the library.
* The new `Benchmark` support in Cabal-1.14 is now used for the benchmark script.
* Dropped support for base-3.
* The `Data.GraphViz.State` module is no longer exposed, as there's no need for users to use it.
* Bugfixes:
- Some corner cases in canonicalisation prevented it from being idempotent.
- The `TestParsing` script will no longer crash and refuse to continue if an IO-based error (e.g. unable to successfully call `dot`) occurs.
- A typo was spotted by **Gabor Greif**.
-- Ivan Lazar Miljenovic Ivan.Miljenovic@gmail.com http://IvanMiljenovic.wordpress.com
-- Ivan Lazar Miljenovic Ivan.Miljenovic@gmail.com http://IvanMiljenovic.wordpress.com
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe

On 20 April 2012 03:21, Ras Far
Hello Ivan,
Thanks for bringing Graphviz to Haskell, and for your continuing dedication to making it more complete!
I just tried Graphvis for the first time a few days ago. I regretted the absence of example code, especially as the API has been evolving, so that examples on the Web do not generally work without change.
I see that the inclusion of QuickStart-style documentation is on your short-term list of milestones. I suppose an example program is not quite that, but it might help. Do you have something along these lines? Or, if not, if I managed to put something together which exercises a good cross-section of the features, do you think you could include it with the next release? I suppose there's a trade-off between ease of maintaining the code through releases, and feature coverage of the example(s)...
Well, one reason I haven't included anything like that is because I'm not sure what to write, or where to put it! If you're using FGL graphs, you probably want [graphToDot]; otherwise, [graphElemsToDot] might do what you want (for which I've written an [example], which is also linked to from the [FAQ]). [graphToDot]: http://hackage.haskell.org/packages/archive/graphviz/2999.13.0.1/doc/html/Da... [graphElemsToDot]: http://hackage.haskell.org/packages/archive/graphviz/2999.13.0.1/doc/html/Da... [tutorial](http://ivanmiljenovic.wordpress.com/2011/10/16/graphviz-in-vacuum/) [FAQ]: http://projects.haskell.org/graphviz/faq.html -- Ivan Lazar Miljenovic Ivan.Miljenovic@gmail.com http://IvanMiljenovic.wordpress.com

Alright, thank-you Ivan. I'm not yet using any standard library for
my graphs, although no doubt I should, and FGL sounds like the obvious
choice. Just hoping for a "tour de force" example of the layout and
visualisation possibilities, preferably some Haskell code in the
public domain that was guaranteed to work with the current version of
the graphviz library, and could be used by newcomers as a springboard.
Probably I'm being lazy, and should just start from scratch from the
API. Thanks again for your efforts! -Andrew
On Thu, Apr 19, 2012 at 6:04 PM, Ivan Lazar Miljenovic
On 20 April 2012 03:21, Ras Far
wrote: Hello Ivan,
Thanks for bringing Graphviz to Haskell, and for your continuing dedication to making it more complete!
I just tried Graphvis for the first time a few days ago. I regretted the absence of example code, especially as the API has been evolving, so that examples on the Web do not generally work without change.
I see that the inclusion of QuickStart-style documentation is on your short-term list of milestones. I suppose an example program is not quite that, but it might help. Do you have something along these lines? Or, if not, if I managed to put something together which exercises a good cross-section of the features, do you think you could include it with the next release? I suppose there's a trade-off between ease of maintaining the code through releases, and feature coverage of the example(s)...
Well, one reason I haven't included anything like that is because I'm not sure what to write, or where to put it!
If you're using FGL graphs, you probably want [graphToDot]; otherwise, [graphElemsToDot] might do what you want (for which I've written an [example], which is also linked to from the [FAQ]).
[graphToDot]: http://hackage.haskell.org/packages/archive/graphviz/2999.13.0.1/doc/html/Da... [graphElemsToDot]: http://hackage.haskell.org/packages/archive/graphviz/2999.13.0.1/doc/html/Da... [tutorial](http://ivanmiljenovic.wordpress.com/2011/10/16/graphviz-in-vacuum/) [FAQ]: http://projects.haskell.org/graphviz/faq.html
-- Ivan Lazar Miljenovic Ivan.Miljenovic@gmail.com http://IvanMiljenovic.wordpress.com
participants (3)
-
Andrew Seniuk
-
Ivan Lazar Miljenovic
-
Ras Far