packages feed

wumpus-core-0.40.0: wumpus-core.cabal

name:             wumpus-core
version:          0.40.0
license:          BSD3
license-file:     LICENSE
copyright:        Stephen Tetley <stephen.tetley@gmail.com>
maintainer:       Stephen Tetley <stephen.tetley@gmail.com>
homepage:         http://code.google.com/p/copperbox/
category:         Graphics
synopsis:         Pure Haskell PostScript and SVG generation. 
description:
  .
  Wumpus-Core is a low-level library for generating static 2D 
  vector pictures, its salient feature is portability due to no 
  FFI dependencies. It can generate PostScript (EPS) files and SVG 
  files. The generated PostScript code is plain and reasonably 
  efficient as the use of stack operations, i.e @gsave@ and 
  @grestore@, is minimized. 
  .
  Although Wumpus-Core only generates vector output, the generated 
  PostScript can be interpreted by GraphicsMagick or a similar 
  tool to convert EPS files into bitmap image files (e.g JPEGs).
  .
  Wumpus-Core makes pictures from /paths/ and text /labels/. Paths 
  themselves are made from points. The usual affine 
  transformations (rotations, scaling, translations) can be
  applied to Pictures. Unlike PostScript there is no notion of a 
  current point, Wumpus-Core builds pictures in a coordinate-free 
  style. 
  .
  GENERAL DRAWBACKS...
  .
  For actually building pictures, diagrams, etc. Wumpus-Core is 
  very low-level. There is a supplementary package @Wumpus-Basic@ 
  available that helps create certain types of diagram, but it is
  experimental - functionality is added and dropped between 
  releases, it has no stable API.
  .
  Some of the design decisions made for Wumpus-Core are not 
  sophisticated (e.g. how path and text attributes like colour are 
  handled, and how the bounding boxes of text labels are 
  calculated), so Wumpus might be limited compared to other 
  systems. However, the design permits a fairly simple 
  implementation, which is a priority. 
  .  
  UPDATING to 0.40.0
  .
  @Core.Picture@ API change - the path construction function has 
  changed from @path@ to @primPath@. The type of the path segments
  has changed, the functions @lineTo@ and @curveTo@ now build
  @AbsPathSegments@ and @primPath@ consumes @AbsPathSegments@.
  .
  The Text API has changed substantially, however most user code
  should only need minor changes. The functions @writePS_latin1@, 
  @writeEPS_latin1@ and @writeSVG_latin1@ have been removed, code 
  should be changed to use @writePS@, @writeEPS@ and and 
  @writeSVG@ respectively. These three functions no longer take a 
  @TextEncoder@ argument as TextEncoders no longer exist.
  .
  The Font Size API has also changed substantially. It now 
  exports a more consistent set of metrics (consistent with what 
  is present in font files - the previous version was derived 
  from hand measurements). It also adds a margin to bounding box
  calculations, again this is more consistent with how font files 
  actually work.
  .
  The handling of escaped special characters is now more 
  consistent and the escaping mecahnism has been clarified 
  (previously the documentation and the implementation were at 
  odds): PostScript glyph names are delimited between @&@ 
  (ampersand) and @;@ (semi), Unicode code points are delimited 
  by @&\#@ (ampersand-hash) and @;@ (semi). Note Wumpus silently 
  drops mal-formed escape charcters, for robustness this is 
  preferable to throwing a runtime error, but it does mean the
  output needs visually checking.
  .
  Changelog:
  . 
  0.37.0 to 0.40.0: 
  .
  * Text handling substantially revised. SVG text output is now 
    better aligned to Unicode. The encoding tables for PostScript
    have been re-thought, the previous implementation had some 
    serious design flaws that should now be rectified.
  .
  * The rules for escaping special characters has been clarified.
    Previously the documentation suggested 
    @ampersand-name-semicolon@ could be used to escape glyph names
    however only @ampersand-hash-name-semicolon@ worked.
    @ampersand-name-semicolon@ is now the correct way. The 
    ampersand-hash prefix is for numeric literals - 
    @ampersand-hash-num_literal-semicolon@.
  .
  * Versions of the textlabel functions have been added to 
    @Core.Picture@ for escape-parsed text. It is useful for 
    higher-level software to escape the text, do some calculations 
    then render it - going back to un-escaped text for the 
    rendering would be inefficient.
  .
  * The internal representation of paths has changed. They are now 
    represented as start-point plus list of /relative/ path 
    segments rather than start-point plus list of absolute path 
    segments. Using relative path segments makes it cheaper to
    move paths with @translate@, although calculating the bounding
    box and rendering to PostScript is more expensive. The 
    rationale for the change is that to make complex pictures, 
    paths are potentially moved many times but the other 
    operations are only performed once.
  .
  * Internal change to Primitives and the PrimCTM - ellipses and
    labels no longer have a point (center or baseline left)
    as an element in the datatype, the point is now represented 
    within the PrimCTM.
  .
  * Name change to @Core.Picture@ API - the path construction 
    function @path@ has been renamed to @primPath@.
  .
  * Name change in @Core.FontSize@, the function @textBoundsEnc@
    has been renamed to @textBoundsEsc@. Wumpus-Core now calls 
    strings that have been parsed for escape characters 
    /Escaped Text/ rather than /Encoded Text/.
  .
  * Fixed bug where ellipse rotation and scaling calculated the 
    wrong bounding box.
  . 
  * Fixed bug in @illustrateControlPoints@ where the control points
    were drawn but the original primitive was lost. 
  .
  * Added initial support for arbitrary SVG attributes (e.g. 
    onmouseover handlers) via @annotateGroup@ in @Core.Picture@. 
    Arbitrary SVG \"defs\" can be written into the defs prologue 
    by using @writeSVG_defs@ instead of @writeSVG@. This 
    functionality is mostly untested!
  .
  .
build-type:         Simple
stability:          unstable
cabal-version:      >= 1.2

extra-source-files:
  CHANGES,
  LICENSE,
  demo/AffineTest01.hs,
  demo/AffineTest02.hs,
  demo/AffineTest03.hs,
  demo/AffineTestBase.hs,
  demo/DeltaPic.hs,
  demo/FontMetrics.hs,
  demo/Hyperlink.hs,
  demo/KernPic.hs,
  demo/LabelPic.hs,
  demo/Latin1Pic.hs,
  demo/MultiPic.hs,
  demo/TextBBox.hs,
  demo/TransformEllipse.hs,
  demo/TransformPath.hs,
  demo/TransformTextlabel.hs,
  demo/ZOrderPic.hs,
  doc/Guide.pdf,
  doc-src/Guide.lhs,
  doc-src/Makefile,
  doc-src/WorldFrame.hs



library
  hs-source-dirs:     src
  build-depends:      base            <  5, 
                      containers      >= 0.3      && <= 0.4, 
                      time            >= 1.1.3    && < 1.2,
                      vector-space    >= 0.6      && < 1.0
                        
  exposed-modules:
    Wumpus.Core,
    Wumpus.Core.AffineTrans,
    Wumpus.Core.BoundingBox,
    Wumpus.Core.Colour,
    Wumpus.Core.FontSize,
    Wumpus.Core.Geometry,
    Wumpus.Core.GraphicProps,
    Wumpus.Core.OutputPostScript,
    Wumpus.Core.OutputSVG,
    Wumpus.Core.Picture,
    Wumpus.Core.PtSize,
    Wumpus.Core.Text.Base,
    Wumpus.Core.Text.GlyphIndices,
    Wumpus.Core.Text.GlyphNames,
    Wumpus.Core.Text.Latin1Encoding,
    Wumpus.Core.Text.StandardEncoding,
    Wumpus.Core.Text.Symbol,
    Wumpus.Core.VersionNumber,
    Wumpus.Core.WumpusTypes

  other-modules:
    Wumpus.Core.PageTranslation,
    Wumpus.Core.PictureInternal,
    Wumpus.Core.PostScriptDoc,
    Wumpus.Core.SVGDoc,
    Wumpus.Core.TrafoInternal,
    Wumpus.Core.Utils.Common,
    Wumpus.Core.Utils.JoinList,
    Wumpus.Core.Utils.FormatCombinators
    
  extensions:
    

  ghc-options:
  
  includes: