potrace-0.1.0.0: Trace bitmap images to paths using potrace

Copyright(c) 2015 Christopher Chalmers
LicenseBSD-style (see LICENSE)
Maintainerc.chalmers@me.com
Safe HaskellNone
LanguageHaskell2010

Graphics.Potrace

Contents

Description

Trace bitmap images into vector paths using the potrace library. This module also provides helpers for turning any JuicyPixels image to a bitmap.

Synopsis

Tracing

trace :: Bitmap -> [Curve] Source

Trace the bitmap image to a list of curves using potrace with def parameters.

trace' :: Parameters -> Bitmap -> [Curve] Source

Trace the bitmap image to a list of curves using potrace with given parameters.

traceForest :: Bitmap -> Forest Curve Source

Trace the bitmap image as a forest of curves using potrace with def parameters. Each child curve is completely contained in it's parent.

traceForest' :: Parameters -> Bitmap -> Forest Curve Source

Trace the bitmap image as a forest of curves using potrace with given parameters parameters. Each child curve is completely contained in it's parent.

Path type

data Curve Source

A curve is a list of segments. The starting point is provided for convenience but this is just the final point of the last segment.

Constructors

Curve !P2 [Segment] 

data Segment Source

potrace defines a segment as either Bezier or a Corner (in most systems this is equivalent to linear segments).

Constructors

Bezier !P2 !P2 !P2 
Corner !P2 !P2 

data P2 Source

Data type representing a 2D point were the origin is at the bottom left.

Constructors

P2 !Double !Double 

Bitmaps

data Bitmap Source

Data type to represent a bit packed image. This can be passed to potrace via trace. The constructor is exported by Base but be aware the underlying vector has a host dependant form. You are advised to use generate to create a Bitmap.

generate :: Int -> Int -> (Int -> Int -> Bool) -> Bitmap Source

Given an image and a predicate for whether a pixel is on or off, create a bit-packed image suitable for passing to potrace.

fromImage :: Pixel a => Image a -> (a -> Bool) -> Bitmap Source

Generate a bitmap by apply the predicate function to each pixel of JuicyPixels image. True corresponds to a black pixel, False corresponds to white.

toImage :: Pixel a => Bitmap -> a -> a -> Image a Source

Convert a Bitmap to an image by using the given pixels for True and False. This is mainly here for debugging purposes.

lumaThreshold :: DynamicImage -> Double -> Bitmap Source

Generate a bitmap choosing pixels according to their luma plane for a threshold given between 0 and 1. Anything below the threshold is white. Anything above the threshold is black. Throws an error for CMYK images.

Parameters

data Parameters Source

Parameters to control the tracing operation of potrace. The default parameters are

Parameters
  { turdSize     = 2
  , turnPolicy   = MinorityTP
  , alphaMax     = 1.0
  , optTolerance = Just 0.2
  }

data TurnPolicy Source

How to resolve ambiguities during decomposition of bitmaps into paths.

Constructors

BlackTP

Prefers to connect black (foreground) components

WhiteTP

Prefers to connect white (background) components.

LeftTP

Always take a left turn.

RightTP

Always take a right turn.

MinorityTP

Prefers to connect the color (black or white) that occurs least frequently in a local neighborhood of the current position.

MajorityTP

Prefers to connect the color (black or white) that occurs most frequently in a local neighborhood of the current position. (default)

RandomTP

Choose pseudo-randomly

Lenses

type Lens' s a = forall f. Functor f => (a -> f a) -> s -> f s Source

A van Laarhoven lens, compatible with various lens libraries.

turdSize :: Lens' Parameters Int Source

The turdSize parameter can be used to “despeckle” the bitmap to be traced, by removing all curves whose enclosed area is below the given threshold.

Default is 2.

turnPolicy :: Lens' Parameters TurnPolicy Source

The TurnPolicy parameter determines how to resolve ambiguities during decomposition of bitmaps into paths.

Default is MinorityTP.

alphaMax :: Lens' Parameters Double Source

The alphamax parameter is a threshold for the detection of corners. It controls the smoothness of the traced curve.The useful range of this parameter is from 0.0 (polygon) to 1.3334 (no corners).

Default is 1.0.

optTolerance :: Lens' Parameters (Maybe Double) Source

The optTolerance parameter defines the amount of error allowed in this simplification. Larger values tend to decrease the number of segments, at the expense of less accuracy. The useful range is from 0 to infinity, although in practice one would hardly choose values greater than 1 or so. For most purposes, the default value is a good trade off between space and accuracy. Nothing turns simplification off.

Default is Just 1.0.