118 lines
3.6 KiB
C
118 lines
3.6 KiB
C
|
/*==============================================================================
|
||
|
|
||
|
Copyright 2018 by Roland Rabien
|
||
|
For more information visit www.rabiensoftware.com
|
||
|
|
||
|
==============================================================================*/
|
||
|
|
||
|
#pragma once
|
||
|
|
||
|
//==============================================================================
|
||
|
/** Apply vignette
|
||
|
*
|
||
|
\param amount Amount to darken outside of vignette. 0 no darkening. 1 is black.
|
||
|
\param radius Size of vignette. 1 size of image. 0 is 0 size.
|
||
|
\param falloff Relative size of inner boundry of vignette 0,1
|
||
|
*/
|
||
|
void applyVignette (Image& img, float amount, float radius, float falloff, ThreadPool* threadPool = nullptr);
|
||
|
|
||
|
/** Make it look old */
|
||
|
void applySepia (Image& img, ThreadPool* threadPool = nullptr);
|
||
|
|
||
|
/** Converts image to B/W, heavier weighting towards greens */
|
||
|
void applyGreyScale (Image& img, ThreadPool* threadPool = nullptr);
|
||
|
|
||
|
/** Softens an image */
|
||
|
void applySoften (Image& img, ThreadPool* threadPool = nullptr);
|
||
|
|
||
|
/** Sharpens an image */
|
||
|
void applySharpen (Image& img, ThreadPool* threadPool = nullptr);
|
||
|
|
||
|
void applyGamma (Image& img, float gamma, ThreadPool* threadPool = nullptr);
|
||
|
|
||
|
/** Inverts colours of an image */
|
||
|
void applyInvert (Image& img, ThreadPool* threadPool = nullptr);
|
||
|
|
||
|
/** Adjust contrast of an image
|
||
|
*
|
||
|
\param contrast Amount to adjust contrast. Negative values increase, positive values increase
|
||
|
*/
|
||
|
void applyContrast (Image& img, float contrast, ThreadPool* threadPool = nullptr);
|
||
|
|
||
|
/** Adjust brightness and contrast of an image
|
||
|
*
|
||
|
\param brightness Amount to adjust brightness -100,100
|
||
|
\param contrast Amount to adjust contrast -100,100
|
||
|
*/
|
||
|
void applyBrightnessContrast (Image& img, float brightness, float contrast, ThreadPool* threadPool = nullptr);
|
||
|
|
||
|
/** Adjust hue, saturation and lightness of an image
|
||
|
*
|
||
|
\param hue Amount to adjust hue -180,180
|
||
|
\param saturation Amount to adjust saturation 0,200
|
||
|
\param lightness Amount to adjust lightness -100,100
|
||
|
*/
|
||
|
void applyHueSaturationLightness (Image& img, float hue, float saturation, float lightness, ThreadPool* threadPool = nullptr);
|
||
|
|
||
|
/** A very fast blur. This is a compromise between Gaussian Blur and Box blur.
|
||
|
It creates much better looking blurs than Box Blur, but is 7x faster than some Gaussian Blur
|
||
|
implementations.
|
||
|
*
|
||
|
\param radius from 2 to 254
|
||
|
*/
|
||
|
void applyStackBlur (Image& img, int radius);
|
||
|
|
||
|
/** A very high quality image resize using a bank of sinc
|
||
|
* function-based fractional delay filters */
|
||
|
Image applyResize (const Image& img, int width, int height);
|
||
|
|
||
|
Image applyResize (const Image& img, float factor);
|
||
|
|
||
|
/** GradientMap a image. Brightness gets remapped to colour on a gradient.
|
||
|
*/
|
||
|
void applyGradientMap (Image& img, const ColourGradient& gradient, ThreadPool* threadPool = nullptr);
|
||
|
|
||
|
void applyGradientMap (Image& img, const Colour c1, const Colour c2, ThreadPool* threadPool = nullptr);
|
||
|
|
||
|
/** Set an image to a solid colour
|
||
|
*/
|
||
|
void applyColour (Image& img, Colour c, ThreadPool* threadPool = nullptr);
|
||
|
|
||
|
/** Blend two images
|
||
|
*/
|
||
|
|
||
|
enum BlendMode
|
||
|
{
|
||
|
Normal,
|
||
|
Lighten,
|
||
|
Darken,
|
||
|
Multiply,
|
||
|
Average,
|
||
|
Add,
|
||
|
Subtract,
|
||
|
Difference,
|
||
|
Negation,
|
||
|
Screen,
|
||
|
Exclusion,
|
||
|
Overlay,
|
||
|
SoftLight,
|
||
|
HardLight,
|
||
|
ColorDodge,
|
||
|
ColorBurn,
|
||
|
LinearDodge,
|
||
|
LinearBurn,
|
||
|
LinearLight,
|
||
|
VividLight,
|
||
|
PinLight,
|
||
|
HardMix,
|
||
|
Reflect,
|
||
|
Glow,
|
||
|
Phoenix,
|
||
|
};
|
||
|
|
||
|
void applyBlend (Image& dst, const Image& src, BlendMode mode, float alpha = 1.0f, juce::Point<int> position = {}, ThreadPool* threadPool = nullptr);
|
||
|
|
||
|
void applyBlend (Image& dst, BlendMode mode, Colour c, ThreadPool* threadPool = nullptr);
|
||
|
|
||
|
|