Copyright | (c) 2015 Christopher Chalmers |
---|---|
License | BSD-style (see LICENSE) |
Maintainer | c.chalmers@me.com |
Safe Haskell | None |
Language | Haskell2010 |
Trace bitmap images into paths using the potrace library. This module also provides helpers for turning JuicyPixel images to bitmap.
- tracePath :: Bitmap -> Path V2 Double
- tracePath' :: Parameters -> Bitmap -> Path V2 Double
- data Bitmap :: *
- generate :: Int -> Int -> (Int -> Int -> Bool) -> Bitmap
- fromImage :: Pixel a => Image a -> (a -> Bool) -> Bitmap
- lumaThreshold :: DynamicImage -> Double -> Bitmap
- data Parameters :: * = Parameters {}
- data TurnPolicy :: *
- = BlackTP
- | WhiteTP
- | LeftTP
- | RightTP
- | MinorityTP
- | MajorityTP
- | RandomTP
- turdSize :: Lens' Parameters Int
- turnPolicy :: Lens' Parameters TurnPolicy
- alphaMax :: Lens' Parameters Double
- optTolerance :: Lens' Parameters (Maybe Double)
- loop :: Curve -> Located (Trail' Loop V2 Double)
- pt :: P2 -> P2 Double
Tracing
tracePath :: Bitmap -> Path V2 Double Source
Trace the bitmap image to a path using potrace with def
parameters.
tracePath' :: Parameters -> Bitmap -> Path V2 Double Source
Trace the bitmap image to a path curves using potrace with given parameters.
Bitmaps
data Bitmap :: *
generate :: Int -> Int -> (Int -> Int -> Bool) -> Bitmap
Given an image and a predicate for whether a pixel is on or off, create a bit-packed image suitable for passing to potrace.
lumaThreshold :: DynamicImage -> Double -> Bitmap
Generate a bitmap choosing pixels according to their luma plane for a threshold given between 0 and 1. Anything below the threshold is white or "off". Anything above the threshold is black, or "on". Throws an error for CMYK images.
Parameters
data Parameters :: *
Parameters to control the tracing operation of potrace. The default parameters are
Parameters { turdSize = 2 , turnPolicy = MinorityTP , alphaMax = 1.0 , optTolerance = 0.2 }
data TurnPolicy :: *
How to resolve ambiguities during decomposition of bitmaps into paths.
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
turdSize :: Lens' Parameters Int
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
The TurnPolicy
parameter determines how to resolve ambiguities
during decomposition of bitmaps into paths.
Default is MinorityTP
.
alphaMax :: Lens' Parameters Double
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)
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