Copperbox revision 1912.
I've added a new function vectorPath to Core to create relative paths, and removed the arity family of raise functions from Basic - their usage is replaced by Applicative's pure.
Monday, November 29, 2010
wumpus-basic
Copperbox revision 1911.
First look at systematically naming setters and queries on the DrawingContext. Setters should have short names as they are used more commonly in client code - for instance lineWidth should set the line width. As querying the line width is legitimate, there is a function getLineWidth - it's expected to be less common in client code, so it gets the longer name. Prefixing both with get- or set- seems a burden although this would be uniform.
Often queries a return a synthetic property which can't be set directly. It seems reasonable to drop the get prefix for these queries as there won't be a corresponding setter.
First look at systematically naming setters and queries on the DrawingContext. Setters should have short names as they are used more commonly in client code - for instance lineWidth should set the line width. As querying the line width is legitimate, there is a function getLineWidth - it's expected to be less common in client code, so it gets the longer name. Prefixing both with get- or set- seems a burden although this would be uniform.
Often queries a return a synthetic property which can't be set directly. It seems reasonable to drop the get prefix for these queries as there won't be a corresponding setter.
Sunday, November 28, 2010
wumpus-tree - new release 0.11.1
Copperbox revision 1910.
New release of wumpus-tree, InnerSpace constraints in the Draw module have been removed. They were not needed and caused problems for the GHC used by Hackage.
Note - the build-depends of Wumpus-Core and Wumpus-Basic are too specific for GHC 7.0.1, they need to be hand edited to increase the upper bounds of Containers and Time.
New release of wumpus-tree, InnerSpace constraints in the Draw module have been removed. They were not needed and caused problems for the GHC used by Hackage.
Note - the build-depends of Wumpus-Core and Wumpus-Basic are too specific for GHC 7.0.1, they need to be hand edited to increase the upper bounds of Containers and Time.
wumpus - new releases
Copperbox revision 1909.
New releases - improved "special character" support in Wumpus-Core. Font metrics and re-designed Graphic types in Wumpus-Basic.
wumpus-core-0.40.0
wumpus-basic-0.13.0
wumpus-microprint-0.12.0
wumpus-tree-0.11.0
New releases - improved "special character" support in Wumpus-Core. Font metrics and re-designed Graphic types in Wumpus-Basic.
wumpus-core-0.40.0
wumpus-basic-0.13.0
wumpus-microprint-0.12.0
wumpus-tree-0.11.0
wumpus
Copperbox revision 1907.
Wumpus-Basic - I've updated the demos to remove the hard-coded font paths.
Wumpus-Tree - updated to use glyph metrics and the numeric "unit type" has been generalized from Double. Although the current examples are too trivial to show a difference, having glyph metrics for Wumpus-Tree is a big improvement - node text really demands being centered.
Wumpus-Basic - I've updated the demos to remove the hard-coded font paths.
Wumpus-Tree - updated to use glyph metrics and the numeric "unit type" has been generalized from Double. Although the current examples are too trivial to show a difference, having glyph metrics for Wumpus-Tree is a big improvement - node text really demands being centered.
Saturday, November 27, 2010
wumpus-basic
Copperbox revision 1906.
Work towards removing the hard coded paths to the font resources (either the GhostScript font directory or the Adobe Core14 fonts). The LeftRightText example is done, the other examples are still to do.
Work towards removing the hard coded paths to the font resources (either the GhostScript font directory or the Adobe Core14 fonts). The LeftRightText example is done, the other examples are still to do.
wumpus-basic
Copperbox revision 1905.
I've renamed the import modules for the font loaders, and changed the top level function to be a bit more convenient to use.
I've renamed the import modules for the font loaders, and changed the top level function to be a bit more convenient to use.
Friday, November 26, 2010
wumpus-basic
Copperbox revision 1904.
I've updated the demos included in the Hackage release to compile without warnings. I'll probably make a release of the current version once I've written a "status report" for it. While Wumpus-Basic is still very rough - the latest version is probably even less polished that the previous one, though it adds a lot of new features - the Wumpus-Core version on Hackage could do with being updated.
I've updated the demos included in the Hackage release to compile without warnings. I'll probably make a release of the current version once I've written a "status report" for it. While Wumpus-Basic is still very rough - the latest version is probably even less polished that the previous one, though it adds a lot of new features - the Wumpus-Core version on Hackage could do with being updated.
wumpus-basic
Copperbox revision 1903.
I've fixed the bug with the substError (question-mark-inside-angle-brackets) combinator. It was over keen in replacing the whole failure continuation - it should just replace the failure message of the failure continuation, the failure continuation can have both Fail and Okay.
The AFM v4.1 parser now works for the two examples I've tried it on, though it is far from robust. The main problem is v4.1 has many modes for advance vectors and I don't know what to do about them, for the moment I only want to handle horizontal, left-to-right text.
I've fixed the bug with the substError (question-mark-inside-angle-brackets) combinator. It was over keen in replacing the whole failure continuation - it should just replace the failure message of the failure continuation, the failure continuation can have both Fail and Okay.
The AFM v4.1 parser now works for the two examples I've tried it on, though it is far from robust. The main problem is v4.1 has many modes for advance vectors and I don't know what to do about them, for the moment I only want to handle horizontal, left-to-right text.
Thursday, November 25, 2010
wumpus-basic
Copperbox revision 1902.
More work on the v4.1 parser. Unfortunately I've discovered a pervasive bug in the parser combinators - if a parser is annotated with an error message via the substError[*] combinator it cannot be used by the manyTill parser. Currently I don't know how to fix this.
[*] I can't get the name to print with Blogger - it is really question-mark-inside-angle-brackets.
More work on the v4.1 parser. Unfortunately I've discovered a pervasive bug in the parser combinators - if a parser is annotated with an error message via the substError[*] combinator it cannot be used by the manyTill parser. Currently I don't know how to fix this.
[*] I can't get the name to print with Blogger - it is really question-mark-inside-angle-brackets.
wumpus-basic
Copperbox revision 1901.
First work on adding a parser for AFM 4.1 files. This commit put the modules in place, but so far the parser is just the version 2.0 parser renamed.
First work on adding a parser for AFM 4.1 files. This commit put the modules in place, but so far the parser is just the version 2.0 parser renamed.
Wednesday, November 24, 2010
wumpus-basic
Copperbox revision 1900.
Initial refactoring of the AFM font loader code. I want to add a loader for AFM version 4.1 files - Adobe provide metrics for the Core 14 fonts in this format - so I am tidying up the version 2.0 code first.
Initial refactoring of the AFM font loader code. I want to add a loader for AFM version 4.1 files - Adobe provide metrics for the Core 14 fonts in this format - so I am tidying up the version 2.0 code first.
wumpus-basic
Copperbox revision 1899.
I've removed the modules that have been superseded by the new text implementation. One of them was the Shapes.Plaintext module which hasn't been superseded yet, but I don't want it in the source tree when I make another release. I've also updated the demos to use the new text where appropriate.
I've removed the modules that have been superseded by the new text implementation. One of them was the Shapes.Plaintext module which hasn't been superseded yet, but I don't want it in the source tree when I make another release. I've also updated the demos to use the new text where appropriate.
wumpus-basic
Copperbox revision 1898.
I've added single line functions for bounded text - one where the point is baseline-left, the other where it is "center-center". I've updated the dots code to use the center-center version, so now dots are drawn with proper centering.
I've added single line functions for bounded text - one where the point is baseline-left, the other where it is "center-center". I've updated the dots code to use the center-center version, so now dots are drawn with proper centering.
wumpus-basic
Copperbox revision 1897.
I've improved the new text implementation so it can handle empty strings without throwing a runtime error.
I've improved the new text implementation so it can handle empty strings without throwing a runtime error.
wumpus
Copperbox revision 1896.
The Courier metrics in Wumpus.Core.FontSize are now hidden in the Wumpus.Core shim module. They can be imported directly if need, but otherwise they "waste" good names.
I've also corrected an error in the new text handling in Wumpus-Basic where the supplied point for multi-line text was not treated as the horizontal center.
The Courier metrics in Wumpus.Core.FontSize are now hidden in the Wumpus.Core shim module. They can be imported directly if need, but otherwise they "waste" good names.
I've also corrected an error in the new text handling in Wumpus-Basic where the supplied point for multi-line text was not treated as the horizontal center.
Tuesday, November 23, 2010
wumpus-basic
Copperbox revision 1895.
I've made a new implementation of left-to-right bounded text, which can be left, center or right-aligned.
The new implementation is quite rough as I had to change my mind about how to do it many times. At the moment there are some error throwing functions that shouldn't need to throw errors.
I've made a new implementation of left-to-right bounded text, which can be left, center or right-aligned.
The new implementation is quite rough as I had to change my mind about how to do it many times. At the moment there are some error throwing functions that shouldn't need to throw errors.
Monday, November 22, 2010
wumpus-basic
Copperbox revision 1894.
I've removed the BoundaryAnchors and LRText / LRSymbol modules.
The code from BoundaryAnchors has be put back into the DrawingComposition module. I'm not going to attempt to make code common between drawing composition and text-line alignment and composition, so the boundary anchors need not be in their own module.
LRText didn't work with the changes to Wumpus-Core. As it is due to be superseded by the current work on text handling, I won't be spending time updating it.
I've removed the BoundaryAnchors and LRText / LRSymbol modules.
The code from BoundaryAnchors has be put back into the DrawingComposition module. I'm not going to attempt to make code common between drawing composition and text-line alignment and composition, so the boundary anchors need not be in their own module.
LRText didn't work with the changes to Wumpus-Core. As it is due to be superseded by the current work on text handling, I won't be spending time updating it.
Sunday, November 21, 2010
wumpus-core
Copperbox revision 1892.
I've added new API functions to expose the new SVG attribute functionality. This should be the last addition to Wumpus-Core for quite a while, all the new functionality I had plans for has been added (except improved PS kerning output that didn't actually improve things) so I'll be going back to Wumpus-Basic.
I've added new API functions to expose the new SVG attribute functionality. This should be the last addition to Wumpus-Core for quite a while, all the new functionality I had plans for has been added (except improved PS kerning output that didn't actually improve things) so I'll be going back to Wumpus-Basic.
wumpus-core
Copperbox revision 1891.
I've added initial support for attributing SVG output with other properties than hyperlinks. At the moment I haven't worked out the API, so the functionality is in place but not client-level code to use it. It should be stressed that this is only for non-graphic properties e.g. onmouseover events.
I've added initial support for attributing SVG output with other properties than hyperlinks. At the moment I haven't worked out the API, so the functionality is in place but not client-level code to use it. It should be stressed that this is only for non-graphic properties e.g. onmouseover events.
wumpus-core
Copperbox revision 1890.
I've backed out the PostScript kerning code from the last commit.
In the presence of special chars, PostScript's xshow is not as capable as the SVG equivalent, so the Haskell code was becoming very complicated and the generated PostScript was not significantly more efficient that the original.
I've backed out the PostScript kerning code from the last commit.
In the presence of special chars, PostScript's xshow is not as capable as the SVG equivalent, so the Haskell code was becoming very complicated and the generated PostScript was not significantly more efficient that the original.
wumpus-core
Copperbox revision 1889.
Work on optimizing the generated PostScript for hernlabel and vkernlabel. The current code is unfortunately buggy.
Work on optimizing the generated PostScript for hernlabel and vkernlabel. The current code is unfortunately buggy.
wumpus-core
Copperbox revision 1888.
I've added a new example TextBBox to test the revised FontSize code; I've also corrected the errors it revealed.
I've added a new example TextBBox to test the revised FontSize code; I've also corrected the errors it revealed.
Saturday, November 20, 2010
wumpus-core
Copperbox revision 1887.
I've reworked the FontSize module and API so that it exports are consistent set of metrics. That is consistent with the metrics accessible in font files, the metrics it originally exposed were ones I had measured by-hand.The bounding box calculation has been changed so it adds a margin around the all sides, again this is consistent with how fonts actually work.
I've reworked the FontSize module and API so that it exports are consistent set of metrics. That is consistent with the metrics accessible in font files, the metrics it originally exposed were ones I had measured by-hand.The bounding box calculation has been changed so it adds a margin around the all sides, again this is consistent with how fonts actually work.
wumpus-core
Copperbox revision 1886.
I've changed the PrimCTM representation so it stores the origin of the primitive (center for ellipse, baseline-left for text label). The PrimEllipse and PrimLabel types have also been changed so they don't store their respective origins. This unifies the code - previously ellipse has a rotation bug that label didn't have.
I've also fixed a bug with illustrateControlPoints that crept in at the last release, whereby the primitive being illustrated didn't actually get printed only its control points.
I've changed the PrimCTM representation so it stores the origin of the primitive (center for ellipse, baseline-left for text label). The PrimEllipse and PrimLabel types have also been changed so they don't store their respective origins. This unifies the code - previously ellipse has a rotation bug that label didn't have.
I've also fixed a bug with illustrateControlPoints that crept in at the last release, whereby the primitive being illustrated didn't actually get printed only its control points.
wumpus-core
Copperbox revision 1885.
I've fixed the ellipse bug where the bounding box was wrongly calculated after a rotation (and possibly a scale). It had been in the code for quite some time - probably back to when the affine transforms on Primitives were last changed.
I've fixed the ellipse bug where the bounding box was wrongly calculated after a rotation (and possibly a scale). It had been in the code for quite some time - probably back to when the affine transforms on Primitives were last changed.
wumpus-core
Copperbox revision 1884.
First round of work making moving Primitives a cheap operation. This is very useful to Wumpus-Basic so it can arrange BoundedGraphics where it needs to take a bounding box but then draw the Prim somewhere else.
This work changes the internal representation of Paths to use relative path segments rather than absolute ones. With relative path segments the function to move paths can just move the start point. A second round of work will have to look at the PrimGroup Primitive constructor - currently transforming this maps the transform to all its elements, maybe it ought to "cache" transformations in a CTM.
Note - I've found a bug in calculating the bounding box of rotated ellipses, I'm not sure how long this has been around...
First round of work making moving Primitives a cheap operation. This is very useful to Wumpus-Basic so it can arrange BoundedGraphics where it needs to take a bounding box but then draw the Prim somewhere else.
This work changes the internal representation of Paths to use relative path segments rather than absolute ones. With relative path segments the function to move paths can just move the start point. A second round of work will have to look at the PrimGroup Primitive constructor - currently transforming this maps the transform to all its elements, maybe it ought to "cache" transformations in a CTM.
Note - I've found a bug in calculating the bounding box of rotated ellipses, I'm not sure how long this has been around...
Friday, November 19, 2010
wumpus-basic
Copperbox revision 1883.
Work refactoring the DrawingComposition code, which was the PictureLanguage code until a few days ago.
The BoundedLocGraphic, the new underlying type for align-able text could usefully support most of the drawing composition operators - however I can't yet see how both can co-exist. I don't think the original type class formulation of the PictureLanguage operators would work as the types are trickier now, but it would be good to unify them if I can.
Work refactoring the DrawingComposition code, which was the PictureLanguage code until a few days ago.
The BoundedLocGraphic, the new underlying type for align-able text could usefully support most of the drawing composition operators - however I can't yet see how both can co-exist. I don't think the original type class formulation of the PictureLanguage operators would work as the types are trickier now, but it would be good to unify them if I can.
wumpus-basic
Copperbox revision 1882.
I've moved the Anchors module in with the main Graphic modules that are the basis for constructing drawings. I've also added anchor instances for bounding boxes - this might useful improve the DrawingComposition code which has its own aliases for functions that are essentially anchors.
I've moved the Anchors module in with the main Graphic modules that are the basis for constructing drawings. I've also added anchor instances for bounding boxes - this might useful improve the DrawingComposition code which has its own aliases for functions that are essentially anchors.
Thursday, November 18, 2010
wumpus
Copperbox revision 1881.
Minor corrections to Wumpus-Core - Core.Text.Base is now exposed in the Wumpus.Core shim module.
Work towards replacing the Advance text-with-metrics prototype in Wumpus-Basic. I now have a primitive function singleLine (which will be renamed in due course) that draws a line and returns its accurate bounding box. Advance should be replaced with code that uses this primitive.
Minor corrections to Wumpus-Core - Core.Text.Base is now exposed in the Wumpus.Core shim module.
Work towards replacing the Advance text-with-metrics prototype in Wumpus-Basic. I now have a primitive function singleLine (which will be renamed in due course) that draws a line and returns its accurate bounding box. Advance should be replaced with code that uses this primitive.
Wednesday, November 17, 2010
wumpus-core
Copperbox revision 1880.
Work updating the Guide and document in Haddock issues relating to glyph lookup and encoding vectors.
Work updating the Guide and document in Haddock issues relating to glyph lookup and encoding vectors.
wumpus-core
Copperbox revision 1879.
I've changed the naming for Wumpus-Core's internal escaped strings to assert that they are only Escaped strings and not Encoded ones. 'Encoding' as much as it exists, happens in the rendering phase not in the construction phase.
I'm undecided as to whether it would actually be better to encode strings as well as escape them at construction time. For the moment the status quo remains, but changing might be a more logical design.
I've changed the naming for Wumpus-Core's internal escaped strings to assert that they are only Escaped strings and not Encoded ones. 'Encoding' as much as it exists, happens in the rendering phase not in the construction phase.
I'm undecided as to whether it would actually be better to encode strings as well as escape them at construction time. For the moment the status quo remains, but changing might be a more logical design.
wumpus
Copperbox revision 1878.
I've added a Latin1 encoding table to Wumpus-Core and a definitions file to Wumpus-Fontkit to generate it. The Latin1 example in Wumpus-Core wasn't working correctly with the Standard encoding table as Lslash replaces egrave in the Standard encoding.
I've added a Latin1 encoding table to Wumpus-Core and a definitions file to Wumpus-Fontkit to generate it. The Latin1 example in Wumpus-Core wasn't working correctly with the Standard encoding table as Lslash replaces egrave in the Standard encoding.
wumpus-core
Copperbox revision 1877.
I've added label building functions for pre-encoded text - previously there were only string functions that parsed then input string for escape characters then built the label. Wumpus-Basic needs versions for pre-encoded text so it can more efficiently construct labels with advance vectors without having to un-encode the text to print it.
I've added label building functions for pre-encoded text - previously there were only string functions that parsed then input string for escape characters then built the label. Wumpus-Basic needs versions for pre-encoded text so it can more efficiently construct labels with advance vectors without having to un-encode the text to print it.
Tuesday, November 16, 2010
wumpus-basic
Copperbox revision 1876.
The NewText demo now works with font loading. This is something of a milestone, even though a lot of the code is currently quite flaky (the Advance data types probably need a rethink).
Here is the sample printed with Helvetica:
The NewText demo now works with font loading. This is something of a milestone, even though a lot of the code is currently quite flaky (the Advance data types probably need a rethink).
Here is the sample printed with Helvetica:
wumpus-basic
Copperbox revision 1875.
I've integrated most of the font loader / glyph metrics code into Wumpus-Basic. The DrawingContext now has a table mapping fonts to glyph metrics and the font loader has been changed to use the modified types. Unfortunately the Advance module and the NewText example aren't working yet.
I've integrated most of the font loader / glyph metrics code into Wumpus-Basic. The DrawingContext now has a table mapping fonts to glyph metrics and the font loader has been changed to use the modified types. Unfortunately the Advance module and the NewText example aren't working yet.
wumpus-basic
Copperbox revision 1874.
I've changed the examples so they build Drawings rather than Pictures. When I add glyph metrics to the DrawingContext there should be less to change in the examples as they are now running a pure Drawing from within main.
I've changed the examples so they build Drawings rather than Pictures. When I add glyph metrics to the DrawingContext there should be less to change in the examples as they are now running a pure Drawing from within main.
wumpus-basic
Copperbox revision 1873.
I've added a prototype of a new drawing object for Wumpus-Basic to use rather than directly use Wumpus-Core's Picture.
Unlike the Wumpus-Core picture type this Drawing object has a DrawingContext so it can use font metrics which are loaded at run time. Font metrics are loaded in IO, and added to DrawingContext a Drawing is then run with the DrawingContext to produce a file Picture, which is written to file in IO. The new Drawing object supports affine transformations as-per the corresponding Picture type and it also has a version of the PictureLanguage combinators.
The one main sticking point is that although a Drawing is basically an evaluated TraceDrawing it cannot use the value produced by a TraceDrawing (TraceDrawing is basically a Writer monad, so it produces two values). So far TraceDrawings have always produced (), so this isn't isn't a problem for any existing code but maybe there are useful values a TraceDrawing can produce?
I've added a prototype of a new drawing object for Wumpus-Basic to use rather than directly use Wumpus-Core's Picture.
Unlike the Wumpus-Core picture type this Drawing object has a DrawingContext so it can use font metrics which are loaded at run time. Font metrics are loaded in IO, and added to DrawingContext a Drawing is then run with the DrawingContext to produce a file Picture, which is written to file in IO. The new Drawing object supports affine transformations as-per the corresponding Picture type and it also has a version of the PictureLanguage combinators.
The one main sticking point is that although a Drawing is basically an evaluated TraceDrawing it cannot use the value produced by a TraceDrawing (TraceDrawing is basically a Writer monad, so it produces two values). So far TraceDrawings have always produced (), so this isn't isn't a problem for any existing code but maybe there are useful values a TraceDrawing can produce?
Monday, November 15, 2010
wumpus-basic
Copperbox revision 1872.
File name changes - Basic.Graphic.Drawing becomes Basic.Graphic.Context function.
I still haven't worked out the new type of Drawings that represent Pictures with DrawingContext. Because TraceDrawings can produce empty lists of Primitives, Wumpus-Basic has a liftToPictureU operation (U - for unsafe) to get a Picture from a non-empty list of primitives, for pictures-in-context, I'm not sure if the picture should be wrapped with a Maybe instead.
File name changes - Basic.Graphic.Drawing becomes Basic.Graphic.Context function.
I still haven't worked out the new type of Drawings that represent Pictures with DrawingContext. Because TraceDrawings can produce empty lists of Primitives, Wumpus-Basic has a liftToPictureU operation (U - for unsafe) to get a Picture from a non-empty list of primitives, for pictures-in-context, I'm not sure if the picture should be wrapped with a Maybe instead.
wumpus-basic
Copperbox revision 1871.
I've renamed the Drawing functional type to CF for (C)ontext (F)unction.
If I make "pictures" in Wumpus-Basic a functional type with the DrawingContext as a supplied argument, I want a good name for them as they need distinguishing from the Picture type in Wumpus-Core.
I've renamed the Drawing functional type to CF for (C)ontext (F)unction.
If I make "pictures" in Wumpus-Basic a functional type with the DrawingContext as a supplied argument, I want a good name for them as they need distinguishing from the Picture type in Wumpus-Core.
Sunday, November 14, 2010
wumpus-basic
Copperbox revision 1870.
Some more work on font metrics integration.
The problem with IO is a bit more drastic than I previously realized, previously I made pictures like this:
However, to accommodate the font loader I'll no longer be able to create a DrawingContext statically as a top level binding, I'll have to acquire BaseGlyphMetrics in IO then make a context like this:
This will also mandate a change to pic1, it will have to become a functional type taking the runtime drawing context rather than just a picture:
This probably means I'll end up changing the (Wumpus-basic) Picture type so it is a function from DrawingContext to (Wumpus-core) Picture rather than just a Picture. The thought of this does make me worry about efficiency and that Wumpus is getting too higher-order, though.
Some more work on font metrics integration.
The problem with IO is a bit more drastic than I previously realized, previously I made pictures like this:
dctx :: DrawingContext dctx = fontface courier_bold $ standardContext 24 pic1 :: DPicture pic1 = liftToPictureU $ execTraceDrawing dctx $ do draw $ textlineMulti ["hello", "world"] `at` zeroPt
However, to accommodate the font loader I'll no longer be able to create a DrawingContext statically as a top level binding, I'll have to acquire BaseGlyphMetrics in IO then make a context like this:
makeDctx :: BaseGlyphMetrics Double -> DrawingContext makeDctx base_metrics = fontface courier_bold $ standardContext 24 base_metrics
This will also mandate a change to pic1, it will have to become a functional type taking the runtime drawing context rather than just a picture:
pic1 :: DrawingContext -> DPicture pic1 dctx = liftToPictureU $ execTraceDrawing dctx $ do draw $ textlineMulti ["hello", "world"] `at` zeroPt
This probably means I'll end up changing the (Wumpus-basic) Picture type so it is a function from DrawingContext to (Wumpus-core) Picture rather than just a Picture. The thought of this does make me worry about efficiency and that Wumpus is getting too higher-order, though.
wumpus-basic
Copperbox revision 1869.
More work integrating the font loader and font metrics code.
I can now get font metrics from file in the right data structure for the new Text types. Unfortunately the data is IO when Wumpus-Basic is otherwise pure. This is rectifiable by changing the DrawingContext and its run function to have an initializable table of font metrics that can be loaded at start up.
More work integrating the font loader and font metrics code.
I can now get font metrics from file in the right data structure for the new Text types. Unfortunately the data is IO when Wumpus-Basic is otherwise pure. This is rectifiable by changing the DrawingContext and its run function to have an initializable table of font metrics that can be loaded at start up.
wumpus-basic
Copperbox revision 1868.
Work towards integrating the font metrics and font loader code.
This is going to be a substantial amount of work - the NewText demo was very much a proof-of-concept, tying it in to code that actually extracts metrics from AFM2 files (GhostScript) is a lot more effort and I'm not even going to think about AFM4.1 or TrueType fonts for some time.
Work towards integrating the font metrics and font loader code.
This is going to be a substantial amount of work - the NewText demo was very much a proof-of-concept, tying it in to code that actually extracts metrics from AFM2 files (GhostScript) is a lot more effort and I'm not even going to think about AFM4.1 or TrueType fonts for some time.
Saturday, November 13, 2010
wumpus-fontkit
Copperbox revision 1867.
This commit adds the code that generated the Encoding Tables in the previous commit. As Wumpus-Fontkit now seems to be "scripts" to make other parts of Wumpus its getting rather messy. In all likelihood it will stay messy for a while, there probably isn't a great benefit to tidying it up until Wumpus-Basic is satisfactory.
This commit adds the code that generated the Encoding Tables in the previous commit. As Wumpus-Fontkit now seems to be "scripts" to make other parts of Wumpus its getting rather messy. In all likelihood it will stay messy for a while, there probably isn't a great benefit to tidying it up until Wumpus-Basic is satisfactory.
wumpus-core
Copperbox revision 1866.
I've now generated lookup tables for the Symbol font and the Standard Encoding. This means that the work is "done" for the Text re-implementation, I've just got to make sure it works.
I've now generated lookup tables for the Symbol font and the Standard Encoding. This means that the work is "done" for the Text re-implementation, I've just got to make sure it works.
wumpus-basic
Copperbox revision 1865.
I've updated the demos to work with the latest wumpus-Core. Mostly this was simply removing the now redundant "_latin1" from the writeSVG and writePS functions. The other change was regarding the SafeFonts module, when Wumpus is more stable again this module will need re-thinking - the listed safe fonts aren't really safe for SVG in their current incarnation.
I've updated the demos to work with the latest wumpus-Core. Mostly this was simply removing the now redundant "_latin1" from the writeSVG and writePS functions. The other change was regarding the SafeFonts module, when Wumpus is more stable again this module will need re-thinking - the listed safe fonts aren't really safe for SVG in their current incarnation.
Friday, November 12, 2010
wumpus-core
Copperbox revision 1864.
I've updated the demos to work with the changes to the Text modules and added a stub module for the Symbol font encoding table.
I've updated the demos to work with the changes to the Text modules and added a stub module for the Symbol font encoding table.
wumpus-core
Copperbox revision 1863.
I've re-worked the Text handling code.
SVG output no longer uses a TextEncoder. That it previously used a font specific TextEncoder to lookup symbol names was a design mistake, to get a Unicode code point from a PostScript glyph name it now uses a global lookup table derived from the glyph list. Where the input string encodes a special character as a code point it simply prints the code point as-is and as per the Text.XHtml package character values above ASCII 128 are encoded as code points.
PostScript still needs a encoder per-font, though most of these will be one of the encoding vectors defined in the PostScript Language Reference Manual. At some point I will have to generate lookup tables for these encoding vectors, though Wumpus-Core already has a fall-back lookup table derived from the glyph list. The fall-back lookup is slightly problematic as the some of the entries in the glyph list share the same name (e.g. ncedilla and ncommaaccent). Here the glyph names "mean" the same character but they correspond to different renderings of it and fonts will support one or the other, so it is possible that the lookup might not find the correct character.
I've re-worked the Text handling code.
SVG output no longer uses a TextEncoder. That it previously used a font specific TextEncoder to lookup symbol names was a design mistake, to get a Unicode code point from a PostScript glyph name it now uses a global lookup table derived from the glyph list. Where the input string encodes a special character as a code point it simply prints the code point as-is and as per the Text.XHtml package character values above ASCII 128 are encoded as code points.
PostScript still needs a encoder per-font, though most of these will be one of the encoding vectors defined in the PostScript Language Reference Manual. At some point I will have to generate lookup tables for these encoding vectors, though Wumpus-Core already has a fall-back lookup table derived from the glyph list. The fall-back lookup is slightly problematic as the some of the entries in the glyph list share the same name (e.g. ncedilla and ncommaaccent). Here the glyph names "mean" the same character but they correspond to different renderings of it and fonts will support one or the other, so it is possible that the lookup might not find the correct character.
Thursday, November 11, 2010
wumpus-fontkit
Copperbox revision 1862.
I've added another generator to make a module / table that maps from PostScript glyph name to Unicode code point.
I've added another generator to make a module / table that maps from PostScript glyph name to Unicode code point.
wumpus-fontkit
Copperbox revision 1861.
I've added a script to generate a Haskell module implementing a PostScript glyph name lookup from the Adobe glyphlist file. This will probably be the basis of Wumpus-Core's glyph name resolution when I redo it (its currently faulty).
I've added a script to generate a Haskell module implementing a PostScript glyph name lookup from the Adobe glyphlist file. This will probably be the basis of Wumpus-Core's glyph name resolution when I redo it (its currently faulty).
Wednesday, November 10, 2010
wumpus-fontkit
Copperbox revision 1860.
I've updated the AFM parser in Wumpus-Fontkit to use the parser combinators in Basic. Also I've added a parser for the Adobe glyphlist file. This matches PostScript glyph names to Unicode code points - I think this would be a better basis for Wumpus-Core's extended glyph handling than the current Encoders.
I've updated the AFM parser in Wumpus-Fontkit to use the parser combinators in Basic. Also I've added a parser for the Adobe glyphlist file. This matches PostScript glyph names to Unicode code points - I think this would be a better basis for Wumpus-Core's extended glyph handling than the current Encoders.
Tuesday, November 9, 2010
wumpus-basic
Copperbox revision 1859.
More work on glyph metrics - some tidying of the AFM parser and changing lookup tables to be IntMaps.
More work on glyph metrics - some tidying of the AFM parser and changing lookup tables to be IntMaps.
wumpus-basic
Copperbox revision 1858.
I've decided to put Font Loader capabilities in wumpus-basic rather than require an "independent dependency" on wumpus-fontkit (clients would depend on both, but wumpus-basic need not depend on wumpus-fontkit).
Also I've worked out a new way of white-space handling for token parsers, so I've put the parser combinators into Wumpus.Basic.Utils.
I've decided to put Font Loader capabilities in wumpus-basic rather than require an "independent dependency" on wumpus-fontkit (clients would depend on both, but wumpus-basic need not depend on wumpus-fontkit).
Also I've worked out a new way of white-space handling for token parsers, so I've put the parser combinators into Wumpus.Basic.Utils.
Monday, November 8, 2010
wumpus-basic
Copperbox revision 1857.
I've now a working proof-of-concept attempt at using font metrics to center and right-align text:
I don't use a font loader yet and the code is horrible, but overall this is quite a milestone. I first looked at the "innards" of fonts for the OpenVG binding, this is the first real success.
I've now a working proof-of-concept attempt at using font metrics to center and right-align text:
I don't use a font loader yet and the code is horrible, but overall this is quite a milestone. I first looked at the "innards" of fonts for the OpenVG binding, this is the first real success.
wumpus status
Wumpus status - 8 November 2010
Wumpus-Core
Wumpus-Core is now at version 0.37.0 on Hackage. The drawing model in Wumpus-Core is comparatively mature - the Picture API tends to get tweaked every release but the tweaks are mostly minor. Now that Primitives can be combined as Primitives rather than needing a promotion to Picture the design is satisfactory.
Adding free annotations for SVG would be useful, so SVG output can support mouseover hints. This should be doable with a new function in Core.Picture working like the xlink function. Otherwise no changes to the Picture API are currently envisaged.
It would be nice if the PostScript output was more efficient for the hkernlabel and vkernlabel functions. PostScript Level 2 has the xshow and yshow operators which appear to support this efficiently. Wumpus-Core could support two printing modes for Level 1 or Level 2 output but this is not currently a priority.
The Text Encoding API has not changed very much recently, however it should be considered unstable. Its limitations are due to the authors own limited understanding of how PostScript encodes character names and codes (fonts != Unicode). Work on direct font support in Wumpus-Basic should improve Wumpus-Core, (e.g. the Encoding table types can be refined, other Encoding Vectors can be added) whilst Wumpus-Core should be able to maintain its font agnostic status.
Edit 9 Nov - I've identified an unfortunate oversight in the SVG handling of Encoding tables which will be corrected as I work on glyph metrics. In a nutshell, the SVG renderer should not use the Encoding tables as they are only really pertinent to PostScript.
Wumpus-Basic
Wumpus-Basic is at version 0.12.0 on Hackage. The SVN repository has already changed significantly from this version as the Basic.Graphic modules have been substantially re-worked. I have no plans to update the version on Hackage until progress has been made on glyph metrics and the Basic.Text modules. The previous attempts at text handling without glyph metrics - Basic.Text.LRText and Basic.Shapes.Plaintext - are considered obsolete though they won't be removed from the code base until they have a functioning replacement.
Wumpus-Basic should always support simple text through functions in the Basic.Graphics modules. Working with glyph metrics will add complexity to text drawing and make it less efficient so a path to avoid the penalities when not necessary for drawing is essential. Glyph metrics will also mandate than font loading has to be IO, though this should not IO-contaminate the rest of Wumpus-Basic.
Much of the work for handling glyph metrics will be farmed out to the Wumpus-Fontkit package. Reading text (AFM) and binary (TrueType) font files will need dependencies that I don't want to burden Wumpus-Basic with. Wumpus-Basic will define the tpes it needs and the table look up functions. Wumpus-Fontkit will build the metrics tables. Also I anticipate having to equip Wumpus-Fontkit with a quite a lot of code to introspect into font files - adding font loading support to Wumpus will open up many avenues for errors so giving users tools to investigate errors for themselves seems wise.
The new combinator basis in Basic.Graphic for building graphics is not yet systematically elsewhere in Wumpus-Basic. Overtime I will have to improve the code for Shapes, arrowheads etc. so that the source is more exemplary. Shapes themselves need work adding more shapes.There is also a lot of work to be done on designs in Wumpus-Basic as all the good examples so far e.g. the Petri-net and the Feature diagram use explicit coordinates.
Wumpus-Tree
Wumpus-Tree is at version 0.10.0 on Hackage. Wumpus-Tree has not had much attention since its initial release except to make sure it is compatible with the latest versions of Wumpus-Core and Wumpus-Basic. This is largely due to the deficiencies of text handling in Wumpus-Basic - for text labelled trees having left-aligned text is unwelcome. I intend to improve Wumpus-Tree once better text support is present in Wumpus-Basic.
Wumpus-Microprint
Wumpus-Microprint is at version 0.11.0 on Hackage. Microprint is rather underwhelming - unlike Wumpus-Tree it is not a particularly good subject to drive development of Wumpus-Basic as the graphic work is quite secondary to the input tokenizing. I will keep bumping the version on Hackage when Wumpus-Basic gets a release but unfortunately I don't anticipate doing any work to improve its capabilities. Unless it finds a compelling use my time is better spent working on Wumpus-Basic.
Poor Small Chart
Not released on Hackage. Charting is well served by other libraries, so it is a niche I don't see Wumpus occupying. As with Wumpus-Microprint the subject requires significant work that is not directly graphical (successful chart libraries appear to do a lot of automatic work interpreting the data for scaling ranges etc.). It would be nice to improve charting as there are still useful graphics to be manufactured, but I don't see it as a priority that will be worked on any time soon.
Wumpus-Core
Wumpus-Core is now at version 0.37.0 on Hackage. The drawing model in Wumpus-Core is comparatively mature - the Picture API tends to get tweaked every release but the tweaks are mostly minor. Now that Primitives can be combined as Primitives rather than needing a promotion to Picture the design is satisfactory.
Adding free annotations for SVG would be useful, so SVG output can support mouseover hints. This should be doable with a new function in Core.Picture working like the xlink function. Otherwise no changes to the Picture API are currently envisaged.
It would be nice if the PostScript output was more efficient for the hkernlabel and vkernlabel functions. PostScript Level 2 has the xshow and yshow operators which appear to support this efficiently. Wumpus-Core could support two printing modes for Level 1 or Level 2 output but this is not currently a priority.
The Text Encoding API has not changed very much recently, however it should be considered unstable. Its limitations are due to the authors own limited understanding of how PostScript encodes character names and codes (fonts != Unicode). Work on direct font support in Wumpus-Basic should improve Wumpus-Core, (e.g. the Encoding table types can be refined, other Encoding Vectors can be added) whilst Wumpus-Core should be able to maintain its font agnostic status.
Edit 9 Nov - I've identified an unfortunate oversight in the SVG handling of Encoding tables which will be corrected as I work on glyph metrics. In a nutshell, the SVG renderer should not use the Encoding tables as they are only really pertinent to PostScript.
Wumpus-Basic
Wumpus-Basic is at version 0.12.0 on Hackage. The SVN repository has already changed significantly from this version as the Basic.Graphic modules have been substantially re-worked. I have no plans to update the version on Hackage until progress has been made on glyph metrics and the Basic.Text modules. The previous attempts at text handling without glyph metrics - Basic.Text.LRText and Basic.Shapes.Plaintext - are considered obsolete though they won't be removed from the code base until they have a functioning replacement.
Wumpus-Basic should always support simple text through functions in the Basic.Graphics modules. Working with glyph metrics will add complexity to text drawing and make it less efficient so a path to avoid the penalities when not necessary for drawing is essential. Glyph metrics will also mandate than font loading has to be IO, though this should not IO-contaminate the rest of Wumpus-Basic.
Much of the work for handling glyph metrics will be farmed out to the Wumpus-Fontkit package. Reading text (AFM) and binary (TrueType) font files will need dependencies that I don't want to burden Wumpus-Basic with. Wumpus-Basic will define the tpes it needs and the table look up functions. Wumpus-Fontkit will build the metrics tables. Also I anticipate having to equip Wumpus-Fontkit with a quite a lot of code to introspect into font files - adding font loading support to Wumpus will open up many avenues for errors so giving users tools to investigate errors for themselves seems wise.
The new combinator basis in Basic.Graphic for building graphics is not yet systematically elsewhere in Wumpus-Basic. Overtime I will have to improve the code for Shapes, arrowheads etc. so that the source is more exemplary. Shapes themselves need work adding more shapes.There is also a lot of work to be done on designs in Wumpus-Basic as all the good examples so far e.g. the Petri-net and the Feature diagram use explicit coordinates.
Wumpus-Tree
Wumpus-Tree is at version 0.10.0 on Hackage. Wumpus-Tree has not had much attention since its initial release except to make sure it is compatible with the latest versions of Wumpus-Core and Wumpus-Basic. This is largely due to the deficiencies of text handling in Wumpus-Basic - for text labelled trees having left-aligned text is unwelcome. I intend to improve Wumpus-Tree once better text support is present in Wumpus-Basic.
Wumpus-Microprint
Wumpus-Microprint is at version 0.11.0 on Hackage. Microprint is rather underwhelming - unlike Wumpus-Tree it is not a particularly good subject to drive development of Wumpus-Basic as the graphic work is quite secondary to the input tokenizing. I will keep bumping the version on Hackage when Wumpus-Basic gets a release but unfortunately I don't anticipate doing any work to improve its capabilities. Unless it finds a compelling use my time is better spent working on Wumpus-Basic.
Poor Small Chart
Not released on Hackage. Charting is well served by other libraries, so it is a niche I don't see Wumpus occupying. As with Wumpus-Microprint the subject requires significant work that is not directly graphical (successful chart libraries appear to do a lot of automatic work interpreting the data for scaling ranges etc.). It would be nice to improve charting as there are still useful graphics to be manufactured, but I don't see it as a priority that will be worked on any time soon.
new release - wumpus-core-0.37.0
Copperbox revision 1856.
I've made a new release of wumpus-core - version 0.37.0.
I'm not going to make a twinned release of wumpus-basic as its design is in flux at the moment, however I don't want the Hackage release of wumpus-core to be too far behind the SVN repository.
I've made a new release of wumpus-core - version 0.37.0.
I'm not going to make a twinned release of wumpus-basic as its design is in flux at the moment, however I don't want the Hackage release of wumpus-core to be too far behind the SVN repository.
Sunday, November 7, 2010
wumpus-basic
Copperbox revision 1855.
Alignment is now working for the horizontal, left-to-right versions of the new Text combinators. Hopefully the underlying mechanism is general enough that I'll be able to define similar combinators for right to left and vertical text. The main work is still to extract font metrics...
Alignment is now working for the horizontal, left-to-right versions of the new Text combinators. Hopefully the underlying mechanism is general enough that I'll be able to define similar combinators for right to left and vertical text. The main work is still to extract font metrics...
wumpus-basic
Copperbox revision 1854.
More work on the new text implementation, which is a actually a complete re-write of the last design. This current one has different types for single and multi-line text. I've worked it up to a demo (avoiding actual characters at the moment) but right alignment is currently not correct.
More work on the new text implementation, which is a actually a complete re-write of the last design. This current one has different types for single and multi-line text. I've worked it up to a demo (avoiding actual characters at the moment) but right alignment is currently not correct.
wumpus-basic
Copperbox revision 1853.
Work on a new implementation of Text using advance vectors. The new version should support right and center alignment and eventually right-to-left and vertical text. It will need metrics from font files - though I'll work with AFM files to begin with as they are simple.
Work on a new implementation of Text using advance vectors. The new version should support right and center alignment and eventually right-to-left and vertical text. It will need metrics from font files - though I'll work with AFM files to begin with as they are simple.
Saturday, November 6, 2010
wumpus
Copperbox revision 1852.
Changes to both Wumpus-Basic and Wumpus-Fontkit to account for the AfmUnit datatype moving from Core to Basic.Also I'm starting work on replacing LRText with something that works with the bounding boxes and advance vectors in font files.
Bounding boxes and advance vectors are quite visible in AFM files, in OpenType files the htmx table has advance vectors and the glyf table has character bounding boxes. My old project ZFont can already access these tables but it is very rough and I never worked out the relation between glyphs and there indices in OpenType / TrueType files. For a while I can limit the scope to AFM and the core PostScript font files.
Changes to both Wumpus-Basic and Wumpus-Fontkit to account for the AfmUnit datatype moving from Core to Basic.Also I'm starting work on replacing LRText with something that works with the bounding boxes and advance vectors in font files.
Bounding boxes and advance vectors are quite visible in AFM files, in OpenType files the htmx table has advance vectors and the glyf table has character bounding boxes. My old project ZFont can already access these tables but it is very rough and I never worked out the relation between glyphs and there indices in OpenType / TrueType files. For a while I can limit the scope to AFM and the core PostScript font files.
Friday, November 5, 2010
wumpus-core
Copperbox revision 1850.
I've renamed the constructors in the BoundingBox module. The original names were a bit terse and the would seem more useful for variable names than function names.
I've renamed the constructors in the BoundingBox module. The original names were a bit terse and the would seem more useful for variable names than function names.
wumpus-core
Copperbox revisions 1848 & 1849.
I've swapped the internal OneList for a JoinList. This should allow more efficient concatenation of Pictures and Primitives, though I haven't yet extended the Picture API with functions for this.
In revision 1848 I missed adding some of the changes.
I've swapped the internal OneList for a JoinList. This should allow more efficient concatenation of Pictures and Primitives, though I haven't yet extended the Picture API with functions for this.
In revision 1848 I missed adding some of the changes.
wumpus-core
Copperbox revision 1847.
I've shifted the "font delta' SVG optimization into the Primitive type from the Picture type. As Wumpus-Basic at least builds with Primitives much more than Pictures this should give some room to use the optimization more often.
I still haven't looked at improving the concatenation of Primitives - this will mean replacing the OneList with a JoinList. Fortunately I have a JoinList ready made.
I've shifted the "font delta' SVG optimization into the Primitive type from the Picture type. As Wumpus-Basic at least builds with Primitives much more than Pictures this should give some room to use the optimization more often.
I still haven't looked at improving the concatenation of Primitives - this will mean replacing the OneList with a JoinList. Fortunately I have a JoinList ready made.
wumpus-core
Copperbox revision 1846.
First work on improving the concatenation of Primitives. I've changed the Primitive tree shape so SVG hyper link annotations are independent of grouping.
Also I've removed the AfmUnit type that I recently added, this type will be put in Wumpus-Basic.
First work on improving the concatenation of Primitives. I've changed the Primitive tree shape so SVG hyper link annotations are independent of grouping.
Also I've removed the AfmUnit type that I recently added, this type will be put in Wumpus-Basic.
Thursday, November 4, 2010
wumpus-fontkit
Copperbox revision 1845.
More work towards extracting font metrics for the Core13[*] PostScript fonts. I'm now making a HTML report as the SVG renderer in Chrome doesn't support scrolling it seems.
[*] Note - I don't know whether there should be 13 or 14 (14 would include Dingbats). I've only seen the expression "core 14", but lists of assumed fonts often don't mention Dingbats. Wumpus-Basic has always had 13.
More work towards extracting font metrics for the Core13[*] PostScript fonts. I'm now making a HTML report as the SVG renderer in Chrome doesn't support scrolling it seems.
[*] Note - I don't know whether there should be 13 or 14 (14 would include Dingbats). I've only seen the expression "core 14", but lists of assumed fonts often don't mention Dingbats. Wumpus-Basic has always had 13.
Wednesday, November 3, 2010
wumpus-basic
Copperbox revision 1844.
I've added an example "iterated" drawing. Iterated drawings pass the current point to the next drawing rather than always taking a fresh point via a supplied argument.
I've added an example "iterated" drawing. Iterated drawings pass the current point to the next drawing rather than always taking a fresh point via a supplied argument.
wumpus-basic
Copperbox revision 1843.
I've documented the Drawing combinators. Only cardinalprime is now sticking out like the proverbial sore thumb.
I've documented the Drawing combinators. Only cardinalprime is now sticking out like the proverbial sore thumb.
Tuesday, November 2, 2010
wumpus-basic
Copperbox revision 1842.
I've dropped the R suffix from the DrawingR functional type and renamed and split several modules in Basic.Graphic. Hopefully this should be the last substantial refactoring of these modules.
I've dropped the R suffix from the DrawingR functional type and renamed and split several modules in Basic.Graphic. Hopefully this should be the last substantial refactoring of these modules.
wumpus-basic
Copperbox revision 1841.
I've renamed the Drawing monad TraceDrawing. I want to signal that it is a bit less primary than a DrawingR, which might soon drop the suffix R itself.
I've renamed the Drawing monad TraceDrawing. I want to signal that it is a bit less primary than a DrawingR, which might soon drop the suffix R itself.
wumpus-basic
Copperbox revision 1840.
I've updated the demos to work with the new DrawingR types. There are some quirks, such as Shapes can no longer be placed with `at`. Also there is a lot of code that heavily uses the Applicative and Monad operations, the idea is that they should use the new combinators instead, probably aliasing them for descriptive domain-specific naming.
I've updated the demos to work with the new DrawingR types. There are some quirks, such as Shapes can no longer be placed with `at`. Also there is a lot of code that heavily uses the Applicative and Monad operations, the idea is that they should use the new combinators instead, probably aliasing them for descriptive domain-specific naming.
wumpus-basic
Copperbox revision 1839.
All the library code compiles again following the changes to the DrawingR types. Some of the demos haven't been update yet, so this means that there's quite a bit of the revised code in the library modules is untested.
All the library code compiles again following the changes to the DrawingR types. Some of the demos haven't been update yet, so this means that there's quite a bit of the revised code in the library modules is untested.
Monday, November 1, 2010
wumpus-basic
Copperbox revision 1838.
More work converting the Basic modules to use the new Drawing types. I've updated all the dots and most of the arrow tips, and I'm also getting a better feel for the combinator vocabulary though it still needs improvement.
More work converting the Basic modules to use the new Drawing types. I've updated all the dots and most of the arrow tips, and I'm also getting a better feel for the combinator vocabulary though it still needs improvement.
Subscribe to:
Posts (Atom)
Blog Archive
-
▼
2010
(890)
-
▼
November
(75)
- wumpus
- wumpus-basic
- wumpus-tree - new release 0.11.1
- wumpus - new releases
- wumpus
- wumpus
- wumpus-basic
- wumpus-basic
- wumpus-basic
- wumpus-basic
- wumpus-basic
- wumpus-basic
- wumpus-basic
- wumpus-basic
- wumpus-basic
- wumpus-basic
- wumpus
- wumpus-basic
- wumpus-basic
- wumpus
- wumpus-core
- wumpus-core
- wumpus-core
- wumpus-core
- wumpus-core
- wumpus-core
- wumpus-core
- wumpus-core
- wumpus-core
- wumpus-basic
- wumpus-basic
- wumpus
- wumpus-core
- wumpus-core
- wumpus
- wumpus-core
- wumpus-basic
- wumpus-basic
- wumpus-basic
- wumpus-basic
- wumpus-basic
- wumpus-basic
- wumpus-basic
- wumpus-basic
- wumpus-basic
- wumpus-fontkit
- wumpus-core
- wumpus-basic
- wumpus-core
- wumpus-core
- wumpus-fontkit
- wumpus-fontkit
- wumpus-fontkit
- wumpus-basic
- wumpus-basic
- wumpus-basic
- wumpus status
- new release - wumpus-core-0.37.0
- wumpus-basic
- wumpus-basic
- wumpus-basic
- wumpus
- wumpus-basic
- wumpus-core
- wumpus-core
- wumpus-core
- wumpus-core
- wumpus-fontkit
- wumpus-basic
- wumpus-basic
- wumpus-basic
- wumpus-basic
- wumpus-basic
- wumpus-basic
- wumpus-basic
-
▼
November
(75)
About Me
- Stephen Tetley
- Disambiguating biog as there are a few Stephen Tetley's in the world. I'm neither a cage fighter or yachtsman. I studied Fine Art in the nineties (foundation Bradford 1992, degree Cheltenham 1992 - 95) then Computing part-time at Leeds Met graduating in 2003. I'm the Stephen Tetley on Haskell Cafe and Stackoverflow.