v0.3.1: bugfix: accurate tile visibility test
[ruff:gruff.git] / gruff.cabal
1 Name:                gruff
2 Version:             0.3.1
3 Synopsis:            fractal explorer GUI using the ruff library
4 Description:
5     Mandelbrot Set fractal explorer using the ruff library.
6     .
7     Requires GTK, OpenGL, and GLSL fragment shader support; lots of RAM
8     and multiple CPU cores recommended.
9     .
10     If you want to explore very deep zooms, you'll need hmpfr which
11     currently requires GHC to be compiled with integer-simple instead of
12     the default integer-gmp.  To install with MPFR support, use
13     @cabal install gruff -fmpfr@.
14     Note that the default setting for this flag has changed since gruff-0.2.
15     .
16     gruff-0.3.1 is a bugfix release, fixing a performance problem wherein
17     offscreen tiles were needlessly calculated.  The performance gain
18     is much less (and in many cases is in fact a performance loss) when
19     using integer-simple.
20     .
21     gruff-0.3 includes a small library to allow external programs to
22     create diagrams and animations with gruff.  See the gruff-examples
23     package.  The interface has been remodelled to simplify it and add
24     informative feature overlays.
25     .
26     gruff-0.2.1 was a bugfix release.  Changes since gruff-0.2:
27     .
28       * Supersampling bugs are fixed (no more undocumented quantization
29         leading to inconsistent appearance at different zoom levels).
30     .
31       * Race condition bugs in cache management are fixed (no more
32         incompletely rendered images).
33     .
34       * Internal changes/refactoring to make future additions easier.
35     .
36     Features in this version include:
37     .
38       * Interactive fractal browser display with mouse controls:
39         .
40           * Left click to zoom in (press shift for bigger jumps).
41         .
42           * Right click to zoom out (press shift for bigger jumps).
43         .
44           * Middle click to center.
45         .
46           * Shift middle click to auto-focus.
47         .
48           * Control left click to label with period.
49         .
50           * Control right click to label with angled internal address (slow!).
51     .
52       * Session persistance (stored in @~\/.gruff\/state.gruff@ - states can
53         also be loaded from and saved to other files, including labels and
54         rays).  Note that the file format is incompatible with previous
55         releases of gruff.
56     .
57       * Tile cache (by default in @~\/.gruff\/cache@ - symlink it somewhere
58         with a few GB of space if you plan on exploring a lot).
59     .
60       * Can use MPFR if desired for higher precision, allowing deeper
61         zooms and locating high period nucleii.
62     .
63       * Limited amount of customizable colouring (colours for interior,
64         border, and exterior points, as well as labels and rays).
65     .
66       * Supersampling for more detailed images (useful range is 1 to 16).
67     .
68       * Rudimentary scripting support (see the gruff-examples package).
69     .
70     Future versions will focus on enhancing the scripting support.
71
72 License:             GPL-2
73 License-file:        LICENSE
74 Author:              Claude Heiland-Allen
75 Maintainer:          claudiusmaximus@goto10.org
76 Category:            Graphics
77
78 Build-type:          Simple
79 Cabal-version:       >=1.8
80
81 Data-dir:            data
82 Data-files:          icon.png, merge.frag, minimal.frag
83 Extra-source-files:  TODO src/mp_real.h
84
85 Flag mpfr
86   description: use MPFR for higher precision floating point
87   default: False
88
89 Library
90   Hs-source-dirs:     src
91   Exposed-modules:    Fractal.GRUFF
92   Build-depends:      base >= 3 && < 5,
93                       ruff >= 0.3 && < 0.4
94   GHC-options:        -Wall
95
96 Executable gruff
97   Hs-source-dirs:     src
98   Main-is:            gruff.hs
99   Other-modules:      Browser
100                       GLUTGtk
101                       Interact
102                       Logger
103                       Number
104                       Progress
105                       QuadTree
106                       Shader
107                       Snapshot
108                       StatusDialog
109                       Tile
110                       Utils
111                       View
112   Build-depends:      gruff == 0.3.1,
113                       base >= 4 && < 5,
114                       containers >= 0 && < 1,
115                       directory >= 1 && < 2,
116                       filepath >= 1 && < 2,
117                       FTGL == 1.333,
118                       gtk >= 0.11 && < 0.13,
119                       gtkglext >= 0.11 && < 0.13,
120                       old-locale >= 1 && < 2,
121                       OpenGL >= 2.4 && < 3,
122                       OpenGLRaw >= 1.1 && < 2,
123                       parallel >= 3.1 && < 3.2,
124                       qd >= 1 && < 2,
125                       qd-vec >= 1 && < 2,
126                       time >= 1 && < 2,
127                       Vec >= 0.9 && < 1,
128                       ruff >= 0.3 && < 0.4,
129                       bytestring,
130                       mtl
131   if (flag(mpfr))
132     Build-depends:    hmpfr >= 0.3.2 && < 0.4
133     CPP-options:      -DHAVE_MPFR
134     CC-options:       -DHAVE_MPFR
135   C-sources:          src/compute.cc, src/rts.c
136   CC-options:         -O3 -Wall -pedantic -Wextra
137   GHC-options:        -O2 -Wall -threaded -rtsopts
138   GHC-Prof-Options:   -prof -auto-all -caf-all
139
140 source-repository head
141   type:     git
142   location: git://gitorious.org/ruff/gruff.git
143
144 source-repository this
145   type:     git
146   location: git://gitorious.org/ruff/gruff.git
147   tag:      v0.3