mirror of
https://github.com/WinampDesktop/winamp.git
synced 2025-06-18 07:35:46 -04:00
Initial community commit
This commit is contained in:
61
Src/Plugins/Input/in_mp3/graphics/image.h
Normal file
61
Src/Plugins/Input/in_mp3/graphics/image.h
Normal file
@ -0,0 +1,61 @@
|
||||
#ifndef NULLSOFT_ML_IMAGE_HEADER
|
||||
#define NULLSOFT_ML_IMAGE_HEADER
|
||||
|
||||
#include <windows.h>
|
||||
|
||||
#define RGBA(r,g,b,a) ((COLORREF)(((BYTE)(r)|((WORD)(g)<<8))|(((DWORD)(BYTE)(b))<<16)|(((DWORD)(BYTE)(a))<<24)))
|
||||
#define FIXCOLORREF(clr) RGBA(GetBValue(clr),GetGValue(clr), GetRValue(clr),((DWORD)(clr)) >> 24)
|
||||
|
||||
// loader function will be called every time MLImage need to
|
||||
// reload picture. Input parameter - handle to the calling object
|
||||
// Output - loaded bitmap
|
||||
typedef HBITMAP (*IMGLOADFUNC)(INT_PTR handle);
|
||||
|
||||
class MLImage
|
||||
{
|
||||
public:
|
||||
MLImage(void);
|
||||
MLImage(IMGLOADFUNC loader, BOOL deleteDone);
|
||||
MLImage(int width, int height);
|
||||
~MLImage(void);
|
||||
|
||||
public:
|
||||
// sets the loader function and returns handle to the class or NULL if error
|
||||
// loader - pointer to the loader function
|
||||
// deleteDone - if TRUE MLImage will delete HBITMAP object from loader every time it is done loading
|
||||
// forceLoad - forcing to load bitamp immedialty by calling Load()
|
||||
INT_PTR SetLoader(IMGLOADFUNC loader, BOOL deleteDone, BOOL forceLoad);
|
||||
BOOL Load(void); // load image
|
||||
|
||||
MLImage* Init(int width, int height); // init image (allocates memory)
|
||||
MLImage* Init(int width, int height, COLORREF color); // init image (allocates memory) and set
|
||||
|
||||
BOOL Draw(HDC hdcDest, int destX, int destY, int destWidth, int destHeight, int sourceX, int sourceY); // draw image
|
||||
BOOL Draw(HDC hdcDest, int destX, int destY); // draw image
|
||||
|
||||
public:
|
||||
int GetWidth(void) const;
|
||||
int GetHeight(void) const;
|
||||
void* GetData(void) const;
|
||||
|
||||
|
||||
private:
|
||||
void ResetData(void);
|
||||
|
||||
public:
|
||||
static MLImage* Copy(MLImage* destination, const MLImage* original);// copy all data from the original object (including image data) to the destination
|
||||
|
||||
private:
|
||||
static HBITMAP ConvertTo32BppDIB(HBITMAP bmpHandle, int bmpWidth, int bmpHeight, LPBITMAPINFO bmpInfo, LPVOID *bmpData);
|
||||
|
||||
private:
|
||||
IMGLOADFUNC loader; // pointer to the loader function
|
||||
BOOL loaderDelete; // TRUE - delete HBITMAP from loader after load
|
||||
|
||||
HBITMAP hbmp; // my bitmap
|
||||
BITMAPINFO info;
|
||||
void *data;
|
||||
};
|
||||
|
||||
#endif // NULLSOFT_ML_IMAGE_HEADER
|
||||
|
Reference in New Issue
Block a user