/*
 * gdipluseffects.h
 *
 * GDI+ filters and effects
 *
 * This file is part of the w32api package.
 *
 * Contributors:
 *   Created by Markus Koenig <markus@stber-koenig.de>
 *
 * THIS SOFTWARE IS NOT COPYRIGHTED
 *
 * This source code is offered for use in the public domain. You may
 * use, modify or distribute it freely.
 *
 * This code is distributed in the hope that it will be useful but
 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
 * DISCLAIMED. This includes but is not limited to warranties of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 *
 */

#ifndef __GDIPLUS_EFFECTS_H
#define __GDIPLUS_EFFECTS_H
#if __GNUC__ >=3
#pragma GCC system_header
#endif

typedef enum CurveAdjustments {
	AdjustExposure = 0,
	AdjustDensity = 1,
	AdjustContrast = 2,
	AdjustHighlight = 3,
	AdjustShadow = 4,
	AdjustMidtone = 5,
	AdjustWhiteSaturation = 6,
	AdjustBlackSaturation = 7
} CurveAdjustments;

typedef enum CurveChannel {
	CurveChannelAll = 0,
	CurveChannelRed = 1,
	CurveChannelGreen = 2,
	CurveChannelBlue = 3
} CurveChannel;

typedef struct BlurParams {
	REAL radius;
	BOOL expandEdge;
} BlurParams;

typedef struct BrightnessContrastParams {
	INT brightnessLevel;
	INT contrastLevel;
} BrightnessContrastParams;

typedef struct ColorBalanceParams {
	INT cyanRed;
	INT magentaGreen;
	INT yellowBlue;
} ColorBalanceParams;

typedef struct ColorCurveParams {
	CurveAdjustments adjustment;
	CurveChannel channel;
	INT adjustValue;
} ColorCurveParams;

typedef struct ColorLUTParams {
	ColorChannelLUT lutB;
	ColorChannelLUT lutG;
	ColorChannelLUT lutR;
	ColorChannelLUT lutA;
} ColorLUTParams;

typedef struct HueSaturationLightnessParams {
	INT hueLevel;
	INT saturationLevel;
	INT lightnessLevel;
} HueSaturationLightnessParams;

typedef struct LevelsParams {
	INT highlight;
	INT midtone;
	INT shadow;
} LevelsParams;

typedef struct RedEyeCorrectionParams {
	UINT numberOfAreas;
	RECT *areas;
} RedEyeCorrectionParams;

typedef struct SharpenParams {
	REAL radius;
	REAL amount;
} SharpenParams;

typedef struct TintParams {
	INT hue;
	INT amount;
} TintParams;

extern const GUID BlurEffectGuid;                    /* ? */
extern const GUID BrightnessContrastEffectGuid;      /* ? */
extern const GUID ColorBalanceEffectGuid;            /* ? */
extern const GUID ColorCurveEffectGuid;              /* ? */
extern const GUID ColorLUTEffectGuid;                /* ? */
extern const GUID ColorMatrixEffectGuid;             /* ? */
extern const GUID HueSaturationLightnessEffectGuid;  /* ? */
extern const GUID LevelsEffectGuid;                  /* ? */
extern const GUID RedEyeCorrectionEffectGuid;        /* ? */
extern const GUID SharpenEffectGuid;                 /* ? */
extern const GUID TintEffectGuid;                    /* ? */


#endif /* __GDIPLUS_EFFECTS_H */