summaryrefslogblamecommitdiffstats
path: root/Src/nu/DialogSkinner.h
blob: 425f2108dd8567de693ff6191dd78d61c69fb659 (plain) (tree)













































































                                                                                                                         
#ifndef DIALOGSKINNERH
#define DIALOGSKINNERH

#include "MediaLibraryInterface.h"
#include "../winamp/wa_dlg.h"

COLORREF GetHTMLColor( int color );

class DialogSkinner
{
	typedef HBITMAP( *BitmapFunc )( );
	typedef int ( *ColorFunc )( int idx ); // pass this an index, returns a RGB value (passing 0 or > 3 returns NULL)
	typedef int ( *HandleFunc )( HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam );
	typedef void ( *DrawFunc )( HWND hwndDlg, int *tab, int tabsize ); // each entry in tab would be the id | DCW_*
	
public:
	DialogSkinner()
	{}

	int Color( int index )
	{
		if ( !color )
			color = (ColorFunc)mediaLibrary.GetWADLGFunc( 1 );

		return color( index );
	}

	RGBQUAD GetRGB( int index )
	{
		COLORREF color = Color( index );

		RGBQUAD rgb;
		rgb.rgbReserved = 0;
		rgb.rgbBlue     = GetBValue( color );
		rgb.rgbGreen    = GetGValue( color );
		rgb.rgbRed      = GetRValue( color );

		return rgb;
	}

	INT_PTR Handle( HWND dlg, UINT msg, WPARAM wParam, LPARAM lParam )
	{
		if ( !handle )
			handle = (HandleFunc)mediaLibrary.GetWADLGFunc( 2 );

		return handle( dlg, msg, wParam, lParam );
	}

	void Draw( HWND dlg, int *tab, int tabSize )
	{
		if ( !draw )
			draw = (DrawFunc)mediaLibrary.GetWADLGFunc( 3 );

		draw( dlg, tab, tabSize );
	}

	HFONT GetFont()
	{
		return (HFONT)mediaLibrary.GetWADLGFunc( 66 );
	}

	HBITMAP GetBitmap()
	{
		if ( !bitmap )
			bitmap = (BitmapFunc)mediaLibrary.GetWADLGFunc( 4 );

		return bitmap();
	}

	ColorFunc  color  = 0;
	HandleFunc handle = 0;
	DrawFunc   draw   = 0;
	BitmapFunc bitmap = 0;
};

extern DialogSkinner dialogSkinner;

#endif