Difference between revisions of "Applications and libraries/Graphics"

From HaskellWiki
Jump to navigation Jump to search
(addition of Grapefruit)
(separate 3d libraries into their own section)
(21 intermediate revisions by 11 users not shown)
Line 3: Line 3:
 
== Applications ==
 
== Applications ==
   
;[http://haskell.org/Blobs Blobs diagram editor]
+
;[http://haskell.org/Blobs/ Blobs diagram editor]
 
:Blobs is a diagram editor for directed graphs. It is written in Haskell, using the platform-independent GUI toolkit wxHaskell. Blobs is a front-end for drawing and editing graph diagrams.
 
:Blobs is a diagram editor for directed graphs. It is written in Haskell, using the platform-independent GUI toolkit wxHaskell. Blobs is a front-end for drawing and editing graph diagrams.
   
;[http://web.comlab.ox.ac.uk/oucl/work/ian.lynagh/Fraskell/ Fraskell]
+
;[http://www.comlab.ox.ac.uk/ian.lynagh/Fraskell/ Fraskell]
 
:A Haskell program that generates images of the Mandelbrot set.
 
:A Haskell program that generates images of the Mandelbrot set.
   
 
=== Ray tracing ===
 
=== Ray tracing ===
   
  +
<!--
 
;[http://www.cse.unsw.edu.au/~cgray/banky/ Banky : Monte Carlo ray tracing]
 
;[http://www.cse.unsw.edu.au/~cgray/banky/ Banky : Monte Carlo ray tracing]
 
:A monte carlo ray tracer in Haskell. Monte-Carlo ray-Tracing uses random and quasi-random techniques for improved image synthesis. Monte-carlo ray-tracers simulate global illumination and eliminates the ambient term. It does this using a set of random techniques to simulate an integration model of illumination, which is far more realistic.
 
:A monte carlo ray tracer in Haskell. Monte-Carlo ray-Tracing uses random and quasi-random techniques for improved image synthesis. Monte-carlo ray-tracers simulate global illumination and eliminates the ambient term. It does this using a set of random techniques to simulate an integration model of illumination, which is far more realistic.
  +
-->
   
;[http://www.haskell.org/tmrwiki/HRay HRay: A Haskell ray tracer]
+
;[[HRay]] A Haskell ray tracer
 
:HRay, a ray tracer in Haskell. The goal is to show how elegant, short and maintainable a ray tracing implementation would be in a functional language, as opposed to an imperative or procedural language. It uses a formal model for the application, using the functional and declarative formalism Funmath
 
:HRay, a ray tracer in Haskell. The goal is to show how elegant, short and maintainable a ray tracing implementation would be in a functional language, as opposed to an imperative or procedural language. It uses a formal model for the application, using the functional and declarative formalism Funmath
 
;[http://staff.science.uva.nl/~kort/hart/index.html HaRT: Haskell ray tracer]
 
:Yet another Haskell ray tracer
 
   
 
;[http://benny.kramekweb.com/hrayt/ hrayt, A Haskell Raytracer]
 
;[http://benny.kramekweb.com/hrayt/ hrayt, A Haskell Raytracer]
Line 25: Line 24:
 
;[http://www.nobugs.org/developer/htrace/index.html Htrace, A Haskell Raytracer]
 
;[http://www.nobugs.org/developer/htrace/index.html Htrace, A Haskell Raytracer]
 
:A 1 day raytracer.
 
:A 1 day raytracer.
 
;[http://www.xs4all.nl/~jkort/ Haskell Ray Tracer]
 
:A Haskell ray tracer written for Jan Kort's master thesis
 
   
 
;[http://www.cs.mu.oz.au/~bjpop/code.html bjpop-ray]
 
;[http://www.cs.mu.oz.au/~bjpop/code.html bjpop-ray]
Line 35: Line 31:
 
:A parallel ray tracer, using the parallel Haskell
 
:A parallel ray tracer, using the parallel Haskell
   
;Galois Ray Tracer from icfp00
+
;Galois Ray Tracer from ICFP '00
:A Galois Connections team submitted a ray tracer entry in Haskell in the 2000 icfp contest
+
:A Galois Connections team submitted a ray tracer entry in Haskell in the 2000 ICFP contest
   
 
;[http://www.macs.hw.ac.uk/~gnik/apset/ray_tracer.lhs A Ray Tracer for Spheres]
 
;[http://www.macs.hw.ac.uk/~gnik/apset/ray_tracer.lhs A Ray Tracer for Spheres]
:David King's Haskell port of an Id ray tracer from the [http://www.csg.lcs.mit.edu/impala/ Impala suite]
+
:David King's Haskell port of an Id ray tracer from the Impala suite
  +
  +
;[http://syn.cs.pdx.edu/~jsnow/glome Glome]
  +
:A ray tracer written by Jim Snow with a modern acceleration structure and a variety primitive types.
   
 
== Libraries ==
 
== Libraries ==
 
;[http://dockerz.net/software/chart.html Chart Library]
 
: A simple library for drawing 2D charts, implemented in Haskell, using the [http://cairographics.org/ Cairo] graphics library for rendering. [http://hackage.haskell.org/package/Chart On Hackage]
   
  +
;[[Diagrams]]
;[http://haskell.org/graphics/ The Hugs Graphics Library]
 
  +
:Provides an embedded domain-specific language (EDSL) for creating simple pictures and diagrams in Haskell.
:The Hugs Graphics Library supports 2-dimensional graphics operations, timers, mouse and keyboard actions and multiple windows. It runs on Hugs under both Win32 and X11. An earlier version was used for early prototypes of Fran.
 
   
;[http://haskell.org/haven/ Haven]
+
;[http://hackage.haskell.org/package/funcmp Functional Metapost]
 
:Functional Metapost is a Haskell binding for MetaPost, the powerful but cumbersome graphics language.
:Scalable Vector Graphics for Haskell. Portable, device-independent, resolution-independent library, including support for affine transformations, Bezier curves, fine-grained control of pen attributes, bounds and intersection tests, constructive area geometry, anti-aliased rendering, outline fonts, etc.
 
   
 
;[http://www.conal.net/Fran/ Functional Reactive Animation]
 
;[http://www.conal.net/Fran/ Functional Reactive Animation]
 
:FRAN is a Haskell library (or "embedded language") for interactive animations with 2D and 3D graphics and sound. It runs on Hugs under Windows 95 and Windows NT, using Win32 graphics (GDI).
 
:FRAN is a Haskell library (or "embedded language") for interactive animations with 2D and 3D graphics and sound. It runs on Hugs under Windows 95 and Windows NT, using Win32 graphics (GDI).
  +
  +
;[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/gd GD bindings]: Bindings to a small subset of the GD graphics library.
  +
 
;[http://hackage.haskell.org/package/gloss Gloss]:
  +
:Get some simple vector graphics on the screen with a minimum of fuss. Gloss comes with a large number of [http://code.ouroborus.net/gloss/gloss-stable/gloss-examples/ examples] in the [http://hackage.haskell.org/package/gloss-examples gloss-examples] package.
  +
  +
;[http://hackage.haskell.org/package/gloss-raster Gloss-raster]:
  +
:Renders raster images in parallel using the Repa array library. Gloss-raster can be used as a partial replacement for the "Processing" Java library.
  +
  +
;[http://hackage.haskell.org/package/Rasterific Rasterific]
  +
:A simple canvas-like library to draw vector graphics, tailored to in memory rendering of images, can be used as a back-end of diagrams.
   
 
;[[Grapefruit]]
 
;[[Grapefruit]]
 
:Grapefruit is a library for programming graphical animations and GUIs in a declarative way. It is based on the concepts of [[Functional Reactive Programming]].
 
:Grapefruit is a library for programming graphical animations and GUIs in a declarative way. It is based on the concepts of [[Functional Reactive Programming]].
 
;[http://haskell.org/HOpenGL/ HOpenGL]
 
:HOpenGL is a Haskell binding for the OpenGL graphics API (GL 2.1 / GLU 1.3) and the portable OpenGL utility toolkit GLUT.
 
 
;[http://cryp.to/funcmp/ Functional Metapost]
 
:Functional Metapost is a Haskell binding for MetaPost, the powerful but cumbersome graphics language.
 
   
 
;[http://www.haskell.org/haskellwiki/HaskLS L-systems]
 
;[http://www.haskell.org/haskellwiki/HaskLS L-systems]
 
:A Haskell implementation for Lindenmayer Systems (L-systems). The goal is to implement L-systems in Haskell, and provide a way to visualize them using HOpenGL.
 
:A Haskell implementation for Lindenmayer Systems (L-systems). The goal is to implement L-systems in Haskell, and provide a way to visualize them using HOpenGL.
   
;[http://darcs.haskell.org/~lemmih/hsSDL/ hsSDL]
+
;[http://haskell.org/haven/ Haven] (broken link)
 
:Scalable Vector Graphics for Haskell. Portable, device-independent, resolution-independent library, including support for affine transformations, Bezier curves, fine-grained control of pen attributes, bounds and intersection tests, constructive area geometry, anti-aliased rendering, outline fonts, etc.
:Contains bindings to libSDL, libSDL_gfx, libSDL_image, libSDL_mixer and libSDL_ttf.
 
   
  +
;[http://vis.renci.org/jeff/hieroglyph/ Hieroglyph]
;[http://dockerz.net/software/chart.html Chart Library]
 
: A simple library for drawing 2D charts, implemented in haskell, using the [http://cairographics.org/ Cairo] graphics library for rendering.
 
   
;[http://linuz.sns.it/~monge/wiki/index.php/Milfoh Milfoh]
+
;[http://hackage.haskell.org/package/HPlot HPLot]
:An image to texture loading library. Use SDL_image (and a bare minimun of SDL), to load image files as opengl textures.
 
   
  +
;[http://hackage.haskell.org/package/hps hps]
;[http://users.info.unicaen.fr/~karczma/Work/Clastic_distr/clastic.html Clastic]
 
  +
: Partially implements the postscript drawing model.
:Texture generation
 
  +
 
;[http://haskell.org/graphics/ The Hugs Graphics Library]
 
:The Hugs Graphics Library supports 2-dimensional graphics operations, timers, mouse and keyboard actions and multiple windows. It runs on Hugs under both Win32 and X11. An earlier version was used for early prototypes of Fran.
   
 
=== Pan ===
 
=== Pan ===
Line 84: Line 91:
 
:Pan# is a slightly re-engineered version of Pan. It uses the same compiler but used the Microsoft .NET framework instead of visual studio, making it easier to install and use. It also has a number of new features added. While Pan is embedded in Haskell, Pan# has its own Haskell-like language built in so there is no need to use other Haskell compilers. Currently Windows-only.
 
:Pan# is a slightly re-engineered version of Pan. It uses the same compiler but used the Microsoft .NET framework instead of visual studio, making it easier to install and use. It also has a number of new features added. While Pan is embedded in Haskell, Pan# has its own Haskell-like language built in so there is no need to use other Haskell compilers. Currently Windows-only.
   
;[http://www.acooke.org/jara/pancito/index.html Pancito]
+
;[http://www.acooke.org/pancito-code/ Pancito]
 
:Pancito is a Haskell module for manipulating functional images and then saving them to disk. It was inspired by Pan.
 
:Pancito is a Haskell module for manipulating functional images and then saving them to disk. It was inspired by Pan.
 
;[http://www.cse.unsw.edu.au/~sseefried/pantheon.html PanTHeon]
 
:PanTHeon is a cross platform re-implementation of of Pan. It is still in development and will likely undergo many changes in the future.
 
   
 
;[http://www.cse.unsw.edu.au/~sseefried/pan/index.html Panic]
 
;[http://www.cse.unsw.edu.au/~sseefried/pan/index.html Panic]
Line 94: Line 98:
   
 
=== Graphics file formats ===
 
=== Graphics file formats ===
  +
  +
;[http://hackage.haskell.org/package/JuicyPixels JuicyPixels]
  +
:A library for loading and writing pictures in Jpeg/Png/Gif/Tiff/Bitmap and radiance.
   
 
;[http://www.alpheccar.org/en/posts/show/82 HPDF]
 
;[http://www.alpheccar.org/en/posts/show/82 HPDF]
 
:A small portable Haskell library to generate PDF pictures.
 
:A small portable Haskell library to generate PDF pictures.
   
;[http://www.cs.uu.nl/people/jeroen/ Functional Specification of the JPEG algorithm], and an Implementation for Free
+
;[http://people.cs.uu.nl/jeroen/ Functional Specification of the JPEG algorithm], and an Implementation for Free
   
 
;[http://web.archive.org/web/20010606145143/www.numeric-quest.com/haskell/gd/index.html PNG and JPEG writer]
 
;[http://web.archive.org/web/20010606145143/www.numeric-quest.com/haskell/gd/index.html PNG and JPEG writer]
Line 106: Line 113:
 
: available at internet archive; cumbersome for download
 
: available at internet archive; cumbersome for download
   
  +
== Three-dimensional graphics libraries ==
  +
  +
;[[GPipe]]
  +
:A functional graphics API for programmable GPUs.
  +
  +
;[http://lambdacube3d.wordpress.com/ LambdaCube 3D]
  +
:LambdaCube 3D is a domain specific language and library that makes it possible to program GPUs in a purely functional style.
  +
  +
;[http://haskell.org/HOpenGL/ HOpenGL]
 
:HOpenGL is a Haskell binding for the OpenGL graphics API (GL 2.1 / GLU 1.3) and the portable OpenGL utility toolkit GLUT.
  +
  +
;[http://darcs.haskell.org/~lemmih/hsSDL/ hsSDL]
 
:Contains bindings to libSDL, libSDL_gfx, libSDL_image, libSDL_mixer and libSDL_ttf.
  +
  +
;[http://linuz.sns.it/~monge/wiki/index.php/Milfoh Milfoh]
 
:An image to texture loading library. Use SDL_image (and a bare minimum of SDL), to load image files as OpenGL textures.
   
   
 
{{LibrariesPage}}
 
{{LibrariesPage}}
  +
[[Category:Graphics]]
  +
[[Category:Libraries]]
  +
[[Category:Packages]]

Revision as of 06:59, 17 September 2015

Dealing with graphics, drawing and graphics file formats. For information about libraries for graphical user interfaces, see GUI libraries.

Applications

Blobs diagram editor
Blobs is a diagram editor for directed graphs. It is written in Haskell, using the platform-independent GUI toolkit wxHaskell. Blobs is a front-end for drawing and editing graph diagrams.
Fraskell
A Haskell program that generates images of the Mandelbrot set.

Ray tracing

HRay A Haskell ray tracer
HRay, a ray tracer in Haskell. The goal is to show how elegant, short and maintainable a ray tracing implementation would be in a functional language, as opposed to an imperative or procedural language. It uses a formal model for the application, using the functional and declarative formalism Funmath
hrayt, A Haskell Raytracer
A Haskell ray tracer in only a few hours.
Htrace, A Haskell Raytracer
A 1 day raytracer.
bjpop-ray
A simple raytracer using wxHaskell for the GUI.
Parallel Ray Tracing in pH
A parallel ray tracer, using the parallel Haskell
Galois Ray Tracer from ICFP '00
A Galois Connections team submitted a ray tracer entry in Haskell in the 2000 ICFP contest
A Ray Tracer for Spheres
David King's Haskell port of an Id ray tracer from the Impala suite
Glome
A ray tracer written by Jim Snow with a modern acceleration structure and a variety primitive types.

Libraries

Chart Library
A simple library for drawing 2D charts, implemented in Haskell, using the Cairo graphics library for rendering. On Hackage
Diagrams
Provides an embedded domain-specific language (EDSL) for creating simple pictures and diagrams in Haskell.
Functional Metapost
Functional Metapost is a Haskell binding for MetaPost, the powerful but cumbersome graphics language.
Functional Reactive Animation
FRAN is a Haskell library (or "embedded language") for interactive animations with 2D and 3D graphics and sound. It runs on Hugs under Windows 95 and Windows NT, using Win32 graphics (GDI).
GD bindings
Bindings to a small subset of the GD graphics library.
Gloss
Get some simple vector graphics on the screen with a minimum of fuss. Gloss comes with a large number of examples in the gloss-examples package.
Gloss-raster
Renders raster images in parallel using the Repa array library. Gloss-raster can be used as a partial replacement for the "Processing" Java library.
Rasterific
A simple canvas-like library to draw vector graphics, tailored to in memory rendering of images, can be used as a back-end of diagrams.
Grapefruit
Grapefruit is a library for programming graphical animations and GUIs in a declarative way. It is based on the concepts of Functional Reactive Programming.
L-systems
A Haskell implementation for Lindenmayer Systems (L-systems). The goal is to implement L-systems in Haskell, and provide a way to visualize them using HOpenGL.
Haven (broken link)
Scalable Vector Graphics for Haskell. Portable, device-independent, resolution-independent library, including support for affine transformations, Bezier curves, fine-grained control of pen attributes, bounds and intersection tests, constructive area geometry, anti-aliased rendering, outline fonts, etc.
Hieroglyph
HPLot
hps
Partially implements the postscript drawing model.
The Hugs Graphics Library
The Hugs Graphics Library supports 2-dimensional graphics operations, timers, mouse and keyboard actions and multiple windows. It runs on Hugs under both Win32 and X11. An earlier version was used for early prototypes of Fran.

Pan

Pan
An embedded language and highly optimizing compiler for image synthesis and transformation, based on the simple idea of images as functions over infinite, continuous 2D space. The resulting binaries can be used as PhotoShop plugins, embedded in web pages or PowerPoint, or used in an interactive standalone viewer. The compiler contains no domain-specific knowledge, so it's very extensible. See the gallery for visual examples. Currently Windows-only, but ports are encouraged.
Pan#
Pan# is a slightly re-engineered version of Pan. It uses the same compiler but used the Microsoft .NET framework instead of visual studio, making it easier to install and use. It also has a number of new features added. While Pan is embedded in Haskell, Pan# has its own Haskell-like language built in so there is no need to use other Haskell compilers. Currently Windows-only.
Pancito
Pancito is a Haskell module for manipulating functional images and then saving them to disk. It was inspired by Pan.
Panic
A cross-platform re-implementation of Pan in Haskell using the wxWidgets GUI library and OpenGL graphics library.

Graphics file formats

JuicyPixels
A library for loading and writing pictures in Jpeg/Png/Gif/Tiff/Bitmap and radiance.
HPDF
A small portable Haskell library to generate PDF pictures.
Functional Specification of the JPEG algorithm, and an Implementation for Free
PNG and JPEG writer
available at internet archive; cumbersome for download
PDF writer
available at internet archive; cumbersome for download

Three-dimensional graphics libraries

GPipe
A functional graphics API for programmable GPUs.
LambdaCube 3D
LambdaCube 3D is a domain specific language and library that makes it possible to program GPUs in a purely functional style.
HOpenGL
HOpenGL is a Haskell binding for the OpenGL graphics API (GL 2.1 / GLU 1.3) and the portable OpenGL utility toolkit GLUT.
hsSDL
Contains bindings to libSDL, libSDL_gfx, libSDL_image, libSDL_mixer and libSDL_ttf.
Milfoh
An image to texture loading library. Use SDL_image (and a bare minimum of SDL), to load image files as OpenGL textures.


This page contains a list of libraries and tools in a certain category. For a comprehensive list of such pages, see Applications and libraries.