# Cinder

# cinder::ip Namespace Reference

## Classes
class | AdaptiveThresholdT
## Typedefs
typedef AdaptiveThresholdT < uint8_t > | AdaptiveThreshold
typedef AdaptiveThresholdT < uint8_t > | AdaptiveThreshold8u
typedef AdaptiveThresholdT< float > | AdaptiveThreshold32f
## Functions
template<typename T >
void | edgeDetectSobel (const ChannelT< T > &srcChannel, const Area &srcArea, const Vec2i &dstOffset, ChannelT< T > *dstChannel)
template<typename T >
void | edgeDetectSobel (const SurfaceT< T > &srcSurface, const Area &srcArea, const Vec2i &dstOffset, SurfaceT< T > *dstSuface)
template<typename T >
void | edgeDetectSobel (const ChannelT< T > &srcChannel, ChannelT< T > *dstChannel)
template<typename T >
void | edgeDetectSobel (const SurfaceT< T > &srcSurface, SurfaceT< T > *dstSuface)
template<typename T , typename Y >
void | fill (SurfaceT< T > *surface, const ColorT< Y > &color)
template<typename T , typename Y >
void | fill (SurfaceT< T > *surface, const ColorT< Y > &color, const Area &area)
template<typename T , typename Y >
void | fill (SurfaceT< T > *surface, const ColorAT< Y > &color)
template<typename T , typename Y >
void | fill (SurfaceT< T > *surface, const ColorAT< Y > &color, const Area &area)
template<typename T >
void | fill (ChannelT< T > *channel, T value, const Area &area)
template<typename T >
void | fill (ChannelT< T > *channel, T value)
template<typename T >
void | flipVertical (SurfaceT< T > *surface)
template<typename T >
void | grayscale (const SurfaceT< T > &srcSurface, SurfaceT< T > *dstSurface)
| Converts Surface srcSurface to grayscale and stores the result in Surface dstSurface. Uses primary weights dictated by the Rec. 709 Video Standard.
template<typename T >
void | grayscale (const SurfaceT< T > &srcSurface, ChannelT< T > *dstChannel)
| Converts Surface srcSurface to grayscale and stores the result in Channel dstChannel. Uses primary weights dictated by the Rec. 709 Video Standard.
void | hdrNormalize (Surface32f *surface)
void | hdrNormalize (Channel32f *channel)
void | getMinMax (const Channel32f &channel, float *resultMin, float *resultMax)
template<typename T >
void | unpremultiply (SurfaceT< T > *surface)
template<typename T >
void | resize (const SurfaceT< T > &srcSurface, SurfaceT< T > *dstSurface, const FilterBase &filter=FilterTriangle())
template<typename T >
void | resize (const ChannelT< T > &srcChannel, ChannelT< T > *dstChannel, const FilterBase &filter=FilterTriangle())
template<typename T >
void | resize (const SurfaceT< T > &srcSurface, const Area &srcArea, SurfaceT< T > *dstSurface, const Area &dstArea, const FilterBase &filter=FilterTriangle())
template<typename T >
SurfaceT< T > | resizeCopy (const SurfaceT< T > &srcSurface, const Area &srcArea, const Vec2i &dstSize, const FilterBase &filter=FilterTriangle())
| Returns a new Surface which is a copy of srcSurface's area srcArea scaled to size dstSize using filter filter.
template<typename T >
void | resize (const ChannelT< T > &srcChannel, const Area &srcArea, ChannelT< T > *dstChannel, const Area &dstArea, const FilterBase &filter=FilterTriangle())
template<typename T >
void | threshold (SurfaceT< T > *surface, T value, const Area &area)
| Thresholds surface setting any values below value to zero and any values above to unity inside the Area area.
template<typename T >
void | threshold (SurfaceT< T > *surface, T value)
| Thresholds surface setting any values below value to zero and any values above to unity.
template<typename T >
void | threshold (const SurfaceT< T > &srcSurface, T value, SurfaceT< T > *dstSurface)
| Thresholds srcSurface setting any values below value to zero and any values above to unity and storing the result in dstSurface.
template<typename T >
void | threshold (const ChannelT< T > &srcSurface, T value, ChannelT< T > *dstSurface)
| Thresholds srcChannel setting any values below value to zero and any values above to unity and storing the result in dstChannel.
template<typename T >
void | adaptiveThreshold (const ChannelT< T > &srcChannel, int32_t windowSize, float percentageDelta, ChannelT< T > *dstChannel)
| Thresholds srcChannel using an adaptive thresholding algorithm which considers a window of size windowSize pixels and stores the result in dstChannel.
template<typename T >
void | adaptiveThreshold (ChannelT< T > *channel, int32_t windowSize, float percentageDelta)
| Thresholds srcChannel using an adaptive thresholding algorithm which considers a window of size windowSize pixels.
template<typename T >
void | adaptiveThresholdZero (ChannelT< T > *channel, int32_t windowSize)
| Thresholds srcChannel using an adaptive thresholding algorithm which considers a window of size windowSize pixels. Equivalent to calling adaptiveThreshold with a 0 for percentageDelta.
template<typename T >
void | adaptiveThresholdZero (const ChannelT< T > &srcChannel, int32_t windowSize, ChannelT< T > *dstChannel)
template<typename T >
Area | findNonTransparentArea (const SurfaceT< T > &surface, const Area &bounds)
template<typename T >
void | fill_impl (SurfaceT< T > *surface, const ColorT< T > &color, const Area &area)
template<typename T >
void | fill_impl (SurfaceT< T > *surface, const ColorAT< T > &color, const Area &area)
template<>
void | grayscale (const Surface8u &srcSurface, Channel8u *dstChannel)
template void | grayscale (const SurfaceT< float > &srcSurface, ChannelT< float > *dstChannel)
template<>
void | unpremultiply< uint8_t > (SurfaceT< uint8_t > *surface)
template<>
void | unpremultiply< float > (SurfaceT< float > *surface)
template<typename LT , typename AT >
void | scanlineAccumulate (LT weight, LT *lineBuffer, int32_t lineBufferWidth, AT *accum)
template<typename T , typename WT >
void | makeWeightTable (int32_t b, float cen, const FilterBase &filter, const FilterParams *params, int32_t len, bool trimzeros, WeightTable< WT > *wtab)
template<typename AT , typename T >
void | scanlineShiftAccumToChannel (AT *accum, int32_t x1, int32_t y, int32_t width, ChannelT< T > *channel)
template<typename T , typename WT , typename AT >
void | scanlineFilterChannelToBuffer (WeightTable< WT > *weights, int32_t x, int32_t y, const ChannelT< T > &channel, AT *lineBuffer, int32_t width)
template<typename T >
void | resample (const vector< const ChannelT< T > * > &srcChannels, const FilterBase &filter, const Area &srcArea, const Area &dstArea, const vector< ChannelT< T > * > &dstChannels)
template<typename T >
void | thresholdImpl (SurfaceT< T > *surface, T value, const Area &area)
template<typename T >
void | thresholdImpl (const SurfaceT< T > &srcSurface, T value, const Area &srcArea, const Vec2i &dstLT, SurfaceT< T > *dstSurface)
template<typename T >
void | thresholdImpl (const ChannelT< T > &srcChannel, T value, const Area &srcArea, const Vec2i &dstLT, ChannelT< T > *dstChannel)
template<typename T >
void | calculateAdaptiveThreshold (const ChannelT< T > *srcChannel, typename CHANTRAIT< T >::Accum *integralImage, int32_t windowSize, float percentageDelta, ChannelT< T > *dstChannel)
template<typename T >
void | calculateAdaptiveThresholdZero (const ChannelT< T > *srcChannel, typename CHANTRAIT< T >::Accum *integralImage, int32_t windowSize, ChannelT< T > *dstChannel)
template<typename T >
void | calculateIntegralImage (const ChannelT< T > &channel, typename CHANTRAIT< T >::Accum *integralImage)
template<typename T >
bool | transparentHorizontalScanline (const SurfaceT< T > &surface, int32_t row, int32_t x1, int32_t x2)
template<typename T >
bool | transparentVerticalScanline (const SurfaceT< T > &surface, int32_t column, int32_t y1, int32_t y2)

## Typedef Documentation

typedef AdaptiveThresholdT<uint8_t> cinder::ip::AdaptiveThreshold

typedef AdaptiveThresholdT<uint8_t> cinder::ip::AdaptiveThreshold8u

typedef AdaptiveThresholdT<float> cinder::ip::AdaptiveThreshold32f

## Function Documentation

template<typename T >

void cinder::ip::edgeDetectSobel | ( | const ChannelT< T > & | srcChannel,
|  | const Area & | srcArea,
|  | const Vec2i & | dstOffset,
|  | ChannelT< T > * | dstChannel |
| ) |  |  |

template<typename T >

void cinder::ip::edgeDetectSobel | ( | const SurfaceT< T > & | srcSurface,
|  | const Area & | srcArea,
|  | const Vec2i & | dstOffset,
|  | SurfaceT< T > * | dstSuface |
| ) |  |  |

template<typename T >

void cinder::ip::edgeDetectSobel | ( | const ChannelT< T > & | srcChannel,
|  | ChannelT< T > * | dstChannel |
| ) |  |  |

template<typename T >

void cinder::ip::edgeDetectSobel | ( | const SurfaceT< T > & | srcSurface,
|  | SurfaceT< T > * | dstSuface |
| ) |  |  |

template<typename T , typename Y >

void cinder::ip::fill | ( | SurfaceT< T > * | surface,
|  | const ColorT< Y > & | color |
| ) |  |  |

template<typename T , typename Y >

void cinder::ip::fill | ( | SurfaceT< T > * | surface,
|  | const ColorT< Y > & | color,
|  | const Area & | area |
| ) |  |  |

template<typename T , typename Y >

void cinder::ip::fill | ( | SurfaceT< T > * | surface,
|  | const ColorAT< Y > & | color |
| ) |  |  |

template<typename T , typename Y >

void cinder::ip::fill | ( | SurfaceT< T > * | surface,
|  | const ColorAT< Y > & | color,
|  | const Area & | area |
| ) |  |  |

template<typename T >

void cinder::ip::fill | ( | ChannelT< T > * | channel,
|  | T | value,
|  | const Area & | area |
| ) |  |  |

template<typename T >

void cinder::ip::fill | ( | ChannelT< T > * | channel,
|  | T | value |
| ) |  |  |

template<typename T >

void cinder::ip::flipVertical | ( | SurfaceT< T > * | surface | ) |

Flips the contents of surface vertically

template<typename T >

void cinder::ip::grayscale | ( | const SurfaceT< T > & | srcSurface,
|  | SurfaceT< T > * | dstSurface |
| ) |  |  |

Converts Surface srcSurface to grayscale and stores the result in Surface dstSurface. Uses primary weights dictated by the Rec. 709 Video Standard.

template<typename T >

void cinder::ip::grayscale | ( | const SurfaceT< T > & | srcSurface,
|  | ChannelT< T > * | dstChannel |
| ) |  |  |

Converts Surface srcSurface to grayscale and stores the result in Channel dstChannel. Uses primary weights dictated by the Rec. 709 Video Standard.

void cinder::ip::hdrNormalize | ( | Surface32f * | surface | ) |

Normalizes surface by scaling the maximum and minimum values to lie in the range ``[0,1]

void cinder::ip::hdrNormalize | ( | Channel32f * | channel | ) |

Normalizes channel by scaling the maximum and minimum values to lie in the range ``[0,1]

void cinder::ip::getMinMax | ( | const Channel32f & | channel,
|  | float * | resultMin,
|  | float * | resultMax |
| ) |  |  |

Determines the minimum and maximum values of channel

template<typename T >

void cinder::ip::unpremultiply | ( | SurfaceT< T > * | surface | ) |

Unpremultiplies the contents of a Surface using its own alpha channel

template<typename T >

void cinder::ip::resize | ( | const SurfaceT< T > & | srcSurface,
|  | SurfaceT< T > * | dstSurface,
|  | const FilterBase & | filter = `FilterTriangle()` |
| ) |  |  |

template<typename T >

void cinder::ip::resize | ( | const ChannelT< T > & | srcChannel,
|  | ChannelT< T > * | dstChannel,
|  | const FilterBase & | filter = `FilterTriangle()` |
| ) |  |  |

template<typename T >

void cinder::ip::resize | ( | const SurfaceT< T > & | srcSurface,
|  | const Area & | srcArea,
|  | SurfaceT< T > * | dstSurface,
|  | const Area & | dstArea,
|  | const FilterBase & | filter = `FilterTriangle()` |
| ) |  |  |

template<typename T >

SurfaceT<T> cinder::ip::resizeCopy | ( | const SurfaceT< T > & | srcSurface,
|  | const Area & | srcArea,
|  | const Vec2i & | dstSize,
|  | const FilterBase & | filter = `FilterTriangle()` |
| ) |  |  |

Returns a new Surface which is a copy of srcSurface's area srcArea scaled to size dstSize using filter filter.

template<typename T >

void cinder::ip::resize | ( | const ChannelT< T > & | srcChannel,
|  | const Area & | srcArea,
|  | ChannelT< T > * | dstChannel,
|  | const Area & | dstArea,
|  | const FilterBase & | filter = `FilterTriangle()` |
| ) |  |  |

template<typename T >

void cinder::ip::threshold | ( | SurfaceT< T > * | surface,
|  | T | value,
|  | const Area & | area |
| ) |  |  |

Thresholds surface setting any values below value to zero and any values above to unity inside the Area area.

template<typename T >

void cinder::ip::threshold | ( | SurfaceT< T > * | surface,
|  | T | value |
| ) |  |  |

Thresholds surface setting any values below value to zero and any values above to unity.

template<typename T >

void cinder::ip::threshold | ( | const SurfaceT< T > & | srcSurface,
|  | T | value,
|  | SurfaceT< T > * | dstSurface |
| ) |  |  |

Thresholds srcSurface setting any values below value to zero and any values above to unity and storing the result in dstSurface.

template<typename T >

void cinder::ip::threshold | ( | const ChannelT< T > & | srcSurface,
|  | T | value,
|  | ChannelT< T > * | dstSurface |
| ) |  |  |

Thresholds srcChannel setting any values below value to zero and any values above to unity and storing the result in dstChannel.

template<typename T >

void cinder::ip::adaptiveThreshold | ( | const ChannelT< T > & | srcChannel,
|  | int32_t | windowSize,
|  | float | percentageDelta,
|  | ChannelT< T > * | dstChannel |
| ) |  |  |

Thresholds srcChannel using an adaptive thresholding algorithm which considers a window of size windowSize pixels and stores the result in dstChannel.

Implements the algorithm described in "Adaptive Thresholding Using the Integral Image" by Bradley & Roth. The srcSurface.getWidth() / 8 is a good default for windowSize and 0.15 is for percentageDelta

template<typename T >

void cinder::ip::adaptiveThreshold | ( | ChannelT< T > * | channel,
|  | int32_t | windowSize,
|  | float | percentageDelta |
| ) |  |  |

Thresholds srcChannel using an adaptive thresholding algorithm which considers a window of size windowSize pixels.

Implements the algorithm described in "Adaptive Thresholding Using the Integral Image" by Bradley & Roth. The srcSurface.getWidth() / 8 is a good default for windowSize and 0.15 is for percentageDelta

template<typename T >

void cinder::ip::adaptiveThresholdZero | ( | ChannelT< T > * | channel,
|  | int32_t | windowSize |
| ) |  |  |

Thresholds srcChannel using an adaptive thresholding algorithm which considers a window of size windowSize pixels. Equivalent to calling adaptiveThreshold with a 0 for percentageDelta.

Implements the algorithm described in "Adaptive Thresholding Using the Integral Image" by Bradley & Roth. The srcSurface.getWidth() / 8 is a good default for windowSize

template<typename T >

void cinder::ip::adaptiveThresholdZero | ( | const ChannelT< T > & | srcChannel,
|  | int32_t | windowSize,
|  | ChannelT< T > * | dstChannel |
| ) |  |  |

template<typename T >

Area cinder::ip::findNonTransparentArea | ( | const SurfaceT< T > & | surface,
|  | const Area & | bounds |
| ) |  |  |

Finds the bounding rectangle of the area bounds inside of surface which contains non-zero alpha

template<typename T >

void cinder::ip::fill_impl | ( | SurfaceT< T > * | surface,
|  | const ColorT< T > & | color,
|  | const Area & | area |
| ) |  |  |

template<typename T >

void cinder::ip::fill_impl | ( | SurfaceT< T > * | surface,
|  | const ColorAT< T > & | color,
|  | const Area & | area |
| ) |  |  |

template<>

void cinder::ip::grayscale | ( | const Surface8u & | srcSurface,
|  | Channel8u * | dstChannel |
| ) |  |  |

template void cinder::ip::grayscale | ( | const SurfaceT< float > & | srcSurface,
|  | ChannelT< float > * | dstChannel |
| ) |  |  |

template<>

void cinder::ip::unpremultiply< uint8_t > | ( | SurfaceT< uint8_t > * | surface | ) |

template<>

void cinder::ip::unpremultiply< float > | ( | SurfaceT< float > * | surface | ) |

template<typename LT , typename AT >

void cinder::ip::scanlineAccumulate | ( | LT | weight,
|  | LT * | lineBuffer,
|  | int32_t | lineBufferWidth,
|  | AT * | accum |
| ) |  |  |

template<typename T , typename WT >

void cinder::ip::makeWeightTable | ( | int32_t | b,
|  | float | cen,
|  | const FilterBase & | filter,
|  | const FilterParams * | params,
|  | int32_t | len,
|  | bool | trimzeros,
|  | WeightTable< WT > * | wtab |
| ) |  |  |

template<typename AT , typename T >

void cinder::ip::scanlineShiftAccumToChannel | ( | AT * | accum,
|  | int32_t | x1,
|  | int32_t | y,
|  | int32_t | width,
|  | ChannelT< T > * | channel |
| ) |  |  |

template<typename T , typename WT , typename AT >

void cinder::ip::scanlineFilterChannelToBuffer | ( | WeightTable< WT > * | weights,
|  | int32_t | x,
|  | int32_t | y,
|  | const ChannelT< T > & | channel,
|  | AT * | lineBuffer,
|  | int32_t | width |
| ) |  |  |

template<typename T >

void cinder::ip::resample | ( | const vector< const ChannelT< T > * > & | srcChannels,
|  | const FilterBase & | filter,
|  | const Area & | srcArea,
|  | const Area & | dstArea,
|  | const vector< ChannelT< T > * > & | dstChannels |
| ) |  |  |

template<typename T >

void cinder::ip::thresholdImpl | ( | SurfaceT< T > * | surface,
|  | T | value,
|  | const Area & | area |
| ) |  |  |

template<typename T >

void cinder::ip::thresholdImpl | ( | const SurfaceT< T > & | srcSurface,
|  | T | value,
|  | const Area & | srcArea,
|  | const Vec2i & | dstLT,
|  | SurfaceT< T > * | dstSurface |
| ) |  |  |

template<typename T >

void cinder::ip::thresholdImpl | ( | const ChannelT< T > & | srcChannel,
|  | T | value,
|  | const Area & | srcArea,
|  | const Vec2i & | dstLT,
|  | ChannelT< T > * | dstChannel |
| ) |  |  |

template<typename T >

void cinder::ip::calculateAdaptiveThreshold | ( | const ChannelT< T > * | srcChannel,
|  | typename CHANTRAIT< T >::Accum * | integralImage,
|  | int32_t | windowSize,
|  | float | percentageDelta,
|  | ChannelT< T > * | dstChannel |
| ) |  |  |

template<typename T >

void cinder::ip::calculateAdaptiveThresholdZero | ( | const ChannelT< T > * | srcChannel,
|  | typename CHANTRAIT< T >::Accum * | integralImage,
|  | int32_t | windowSize,
|  | ChannelT< T > * | dstChannel |
| ) |  |  |

template<typename T >

void cinder::ip::calculateIntegralImage | ( | const ChannelT< T > & | channel,
|  | typename CHANTRAIT< T >::Accum * | integralImage |
| ) |  |  |

template<typename T >

bool cinder::ip::transparentHorizontalScanline | ( | const SurfaceT< T > & | surface,
|  | int32_t | row,
|  | int32_t | x1,
|  | int32_t | x2 |
| ) |  |  |

template<typename T >

bool cinder::ip::transparentVerticalScanline | ( | const SurfaceT< T > & | surface,
|  | int32_t | column,
|  | int32_t | y1,
|  | int32_t | y2 |
| ) |  |  |