bitmap-0.0.2: A library for handling and manipulating bitmaps (rectangular pixel arrays).
Safe HaskellNone
LanguageHaskell98

Data.Bitmap.Simple

Description

This is the same as the pure API, without the annoying alignment stuff. All functions use the default alignment.

Synopsis

Documentation

Creating bitmaps

emptyBitmap Source #

Arguments

:: PixelComponent t 
=> Size

(width,height)

-> NChn

number of channels (components/pixel)

-> Bitmap t 

A bitmap filled with zero values.

emptyCloneBitmap Source #

Arguments

:: PixelComponent t 
=> Bitmap t

source (only dimensions and such is used)

-> Bitmap t

new empty bitmap

Creates an empty bitmap with the same properties as the source.

createSingleChannelBitmap Source #

Arguments

:: PixelComponent t 
=> Size

(width,height)

-> (Int -> Int -> t)

the function used to create the bitmap

-> Bitmap t 

Creates a single channel bitmap from a function. This is probably a bit slow.

Using bitmaps

withBitmap :: PixelComponent t => Bitmap t -> (Size -> NChn -> Padding -> Ptr t -> IO a) -> IO a Source #

withBitmap bitmap $ \(w,h) nchn padding ptr -> ...

Mapping over bitmaps

componentMap :: PixelComponent s => (s -> s) -> Bitmap s -> Bitmap s Source #

Warning: this is probably slow.

componentMap' :: (PixelComponent s, PixelComponent t) => (s -> t) -> Bitmap s -> Bitmap t Source #

Warning: this is probably slow.

Cropping and extending

copySubImage Source #

Arguments

:: PixelComponent t 
=> Bitmap t

source image

-> Offset

source rectangle offset

-> Size

source rectangle size

-> Bitmap t 

Copies a subrectangle of the source image into a new image.

copySubImage' Source #

Arguments

:: PixelComponent t 
=> Bitmap t

source image

-> Offset

source rectangle offset

-> Size

source rectangle size

-> Size

target image size

-> Offset

target rectangle offset

-> Bitmap t 

Copy into a new "black" bitmap; common generalization of crop and extend.

Flipping and mirroring

flipBitmap :: PixelComponent t => Bitmap t -> Bitmap t Source #

Flips the bitmap vertically.

mirrorBitmap :: PixelComponent t => Bitmap t -> Bitmap t Source #

Flips the bitmap horizontally.

Casting

castBitmap Source #

Arguments

:: (PixelComponent s, PixelComponent t) 
=> Bitmap s

source image

-> Bitmap t 

Converts between different component types.

Manipulating channels

extractSingleChannel Source #

Arguments

:: PixelComponent t 
=> Bitmap t

source image

-> Int

source channel index

-> Bitmap t 

Bilinear resampling

bilinearResample Source #

Arguments

:: PixelComponent t 
=> Bitmap t

source image

-> Size

target image size

-> Bitmap t 

bilinearResampleChannel Source #

Arguments

:: PixelComponent t 
=> Bitmap t

source image

-> Int

source channel indexe

-> Size

target image size

-> Bitmap t 

Blending

blendBitmaps Source #

Arguments

:: PixelComponent t 
=> Float

weight 1

-> Float

weight 2

-> Bitmap t

source image 1

-> Bitmap t

source image 2

-> Bitmap t 

Blends two bitmaps with the given weights; that is, the result is the specified linear combination. If the values are outside the allowed range (this can happen with the Word8, Word16, Word32 types and weights whose sum is bigger than 1, or with a negative weight), then they are clipped. The clipping does not happen with the Float component type.

blendChannels Source #

Arguments

:: PixelComponent t 
=> Float

weight 1

-> Float

weight 2

-> Bitmap t

source image 1

-> Int

channel index 1

-> Bitmap t

source image 2

-> Int

channel index 2

-> Bitmap t 

Gamma correction

powerlawGammaCorrection Source #

Arguments

:: PixelComponent t 
=> Float

gamma

-> Bitmap t

source image

-> Bitmap t 

This is equivalent to componentMap (c -> c^gamma), except that (^) is defined only for integral exponents; but should be faster anyway.

powerlawGammaCorrectionChannel Source #

Arguments

:: PixelComponent t 
=> Float

gamma

-> Bitmap t

source image

-> Int

source channel indexe

-> Bitmap t