diff options
author | Jef <jef@targetspot.com> | 2024-09-24 08:54:57 -0400 |
---|---|---|
committer | Jef <jef@targetspot.com> | 2024-09-24 08:54:57 -0400 |
commit | 20d28e80a5c861a9d5f449ea911ab75b4f37ad0d (patch) | |
tree | 12f17f78986871dd2cfb0a56e5e93b545c1ae0d0 /Src/Plugins/Library/ml_devices/image.h | |
parent | 537bcbc86291b32fc04ae4133ce4d7cac8ebe9a7 (diff) | |
download | winamp-20d28e80a5c861a9d5f449ea911ab75b4f37ad0d.tar.gz |
Initial community commit
Diffstat (limited to 'Src/Plugins/Library/ml_devices/image.h')
-rw-r--r-- | Src/Plugins/Library/ml_devices/image.h | 227 |
1 files changed, 227 insertions, 0 deletions
diff --git a/Src/Plugins/Library/ml_devices/image.h b/Src/Plugins/Library/ml_devices/image.h new file mode 100644 index 00000000..47871324 --- /dev/null +++ b/Src/Plugins/Library/ml_devices/image.h @@ -0,0 +1,227 @@ +#ifndef _NULLSOFT_WINAMP_ML_DEVICES_IMAGE_HEADER +#define _NULLSOFT_WINAMP_ML_DEVICES_IMAGE_HEADER + +#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#pragma once +#endif + +#define IMAGE_FILTER_NORMAL 0x00000000 +#define IMAGE_FILTER_GRAYSCALE 0x00010000 +#define IMAGE_FILTER_BLEND 0x00020000 +#define IMAGE_FILTER_MASK 0xFFFF0000 + + +typedef struct ImageInfo +{ + unsigned int width; + unsigned int height; + const wchar_t *path; +} ImageInfo; + + +HBITMAP +Image_Load(const wchar_t *path, + unsigned int type, + unsigned int flags, + int width, + int height); + +HBITMAP +Image_LoadEx(HINSTANCE instance, + const wchar_t *path, + unsigned int type, + unsigned int flags, + int width, + int height); + +HBITMAP +Image_LoadSkinned(const wchar_t *path, + unsigned int type, + unsigned int flags, //ISF_XXX + IMAGE_FILTER_XXX + int width, + int height, + COLORREF backColor, + COLORREF frontColor, + COLORREF blendColor); // only valid if IMAGE_FILTER_BLEND set + +HBITMAP +Image_LoadSkinnedEx(HINSTANCE instance, + const wchar_t *path, + unsigned int type, + unsigned int flags, //ISF_XXX + IMAGE_FILTER_XXX + int width, + int height, + COLORREF backColor, + COLORREF frontColor, + COLORREF blendColor); // only valid if IMAGE_FILTER_BLEND set + +BOOL +Image_FilterEx(void *pixelData, + long width, + long height, + unsigned short bpp, + unsigned int flags, + COLORREF backColor, + COLORREF frontColor, + COLORREF blendColor); + +BOOL +Image_Filter(HBITMAP bitmap, + unsigned int flags, + COLORREF backColor, + COLORREF frontColor, + COLORREF blendColor); + +BOOL +Image_BlendEx(void *pixelData, + long width, + long height, + unsigned short bpp, + COLORREF blendColor); +BOOL +Image_Blend(HBITMAP bitmap, + COLORREF blendColor); + +HBITMAP +Image_DuplicateDib(HBITMAP source); + +BOOL +Image_ColorOver(HBITMAP hbmp, + const RECT *prcPart, + BOOL premult, + COLORREF rgb); + +BOOL +Image_ColorOverEx(unsigned char *pPixels, + int bitmapCX, + int bitmapCY, + long x, + long y, + long cx, + long cy, + unsigned short bpp, + BOOL premult, + COLORREF rgb); + +BOOL +Image_Premultiply(HBITMAP hbmp, + const RECT *prcPart); + +BOOL +Image_PremultiplyEx(unsigned char *pPixels, + int bitmapCX, + int bitmapCY, + long x, + long y, + long cx, + long cy, + unsigned short bpp); + +BOOL +Image_Demultiply(HBITMAP hbmp, + const RECT *prcPart); + +BOOL +Image_DemultiplyEx(unsigned char *pPixels, + int bitmapCX, + int bitmapCY, + long x, + long y, + long cx, + long cy, + unsigned short bpp); + +BOOL +Image_Saturate(HBITMAP hbmp, + const RECT *prcPart, + int n, + BOOL fScale); + +BOOL +Image_SaturateEx(unsigned char *pPixels, + int bitmapCX, + int bitmapCY, + long x, + long y, + long cx, + long cy, + unsigned short bpp, + int n, + BOOL fScale); + +BOOL +Image_AdjustAlpha(HBITMAP hbmp, + const RECT *prcPart, + int n, + BOOL fScale); + +BOOL +Image_AdjustAlphaEx(unsigned char *pPixels, + int bitmapCX, + int bitmapCY, + long x, + long y, + long cx, + long cy, + unsigned short bpp, + int n, + BOOL fScale); + +BOOL +Image_AdjustSaturationAlpha(HBITMAP hbmp, + const RECT *prcPart, + int nSaturation, + int nAlpha); + +BOOL +Image_AdjustSaturationAlphaEx(unsigned char *pPixels, + int bitmapCX, + int bitmapCY, + long x, + long y, + long cx, + long cy, + unsigned short bpp, + int nSaturation, + int nAlpha); + +BOOL +Image_FillBorder(HDC targetDC, + const RECT *targetRect, + HDC sourceDC, + const RECT *sourceRect, + BOOL fillCenter, + BYTE alphaConstant); + + +const ImageInfo * +Image_GetBestFit(const ImageInfo *images, + size_t count, + unsigned int width, + unsigned int height); + +typedef enum AlphaBlendFlags +{ + AlphaBlend_Normal = 0, + AlphaBlend_ScaleSource = (1 << 0), + AlphaBlend_AlignLeft = (1 << 1), + AlphaBlend_AlignRight = (1 << 2), + AlphaBlend_AlignCenter = 0, + AlphaBlend_AlignTop = (1 << 3), + AlphaBlend_AlignBottom = (1 << 4), + AlphaBlend_AlignVCenter = 0, +}AlphaBlendFlags; +DEFINE_ENUM_FLAG_OPERATORS(AlphaBlendFlags); + +BOOL +Image_AlphaBlend(HDC targetDC, + const RECT *targetRect, + HDC sourceDC, + const RECT *sourceRect, + BYTE sourceAlpha, + HBITMAP sourceBitmap, + const RECT *paintRect, + AlphaBlendFlags flags, + RECT *rectOut); + +#endif //_NULLSOFT_WINAMP_ML_DEVICES_IMAGE_HEADER |