#ifndef SHELL_H
#define SHELL_H
#include <typedefs.h>
#include <ahg.h>
#include <canvas.h>
#include <font.h>

/*Canvas*/
extern UIS_DIALOG_T     dialog;

void CanvasSetFillColor(UINT32 color); // Заливка для прямоугольника	
void CanvasSetFgColor(UINT32 color); // Устанавливает цвет для линии, текста...
void CanvasSetBgColor(UINT32 color); // Устанавливает цвет фона 

void CanvasDrawLine( INT16 x1, INT16 y1, INT16 x2, INT16 y2 ); // Линия
void CanvasDrawRect( INT32 x, INT32 y, UINT32 x2, UINT32 y2 ); // Прямоугольник 
void CanvasDrawRoundRect( INT32 x, INT32 y, UINT32 w, UINT32 h, UINT16 arcW, UINT16 arcH ); // Закруглённый прямоугольник 
void CanvasFillRect( INT32 x, INT32 y, UINT32 w, UINT32 h ); // Прямоугольник с заливкой
void CanvasDrawArc( INT16 x, INT16 y, UINT16 r, UINT16 startAngle, UINT16 arcAngle, UINT8 fill ); // Рисует дугу окружности или эллипса	

void CanvasDrawText( WCHAR *str, UINT8 x, UINT8 y, UINT16 anchor );
void CanvasDrawDesktopImage( RESOURCE_ID DrmValue, INT32 x, INT32 y, UINT32 w, UINT32 h ); // Рисуем на рабочем столе
void CanvasDrawDrmImage( RESOURCE_ID DrmValue, INT16 x, INT16 y, INT16 a_h, INT16 a_v );  // Из дрма 
void CanvasDrawPathImage( WCHAR* PathValue, UINT8 x, UINT8 y, UINT8 a_h, UINT8 a_v ); // Из ФС

void CanvasDrawSoftKey( WCHAR *str, UINT8 type, BOOL pressed ); //Софт Клавиши  //UINT8 type 0 - menu, 1 - left, 2 - right 
void CanvasDrawTitleBar( WCHAR *title ); //Загаловок
void CanvasDrawTitleBarWithIcon( WCHAR *title, RESOURCE_ID picture );  //Загаловок с иконкой
void CanvasDrawScrollBar( UINT32 num, INT32 cur ); //СкроллБар

/*ATI*/

typedef struct
{
	COLOR_T				fg;  	// Цвет текста
	COLOR_T				bg;	 	// Цвет фона
	COLOR_T				brush;	// Цвет линий
} COLORS_T; // цвета

extern COLORS_T 	colors;

void SetBrushColor( UINT32 color ); // Установить цвет линий
void SetFgColor( UINT32 color ); // Установить цвет текста
void SetBgColor( UINT32 color ); // Установить цвет фона

void SetBrushColorRGB( UINT8 r, UINT8 g, UINT8 b ); //Цвет линий
void SetFgColorRGB( UINT8 r, UINT8 g, UINT8 b ); // Цвет текста
void SetBgColorRGB( UINT8 r, UINT8 g, UINT8 b ); // Цвет фона

void DrawLine( INT16 x1, INT16 y1, INT16 x2, INT16 y2 ); 	// Линия
void FillRect( INT16 x, INT16 y, INT16 w, INT16 h ); 		// Прямоугольник с заливкой
void DrawRect( INT16 x, INT16 y, INT16 w, INT16 h ); 		// Прямоугольник
void DrawGradientRect( INT16 x, INT16 y, INT16 w, INT16 h );// Прямоугольник c градиентом

void DrawTextW(const WCHAR *str, INT16 x, INT16 y, BOOL opacity);
void DrawText( const char *str, INT16 x, INT16 y, BOOL opacity );//BOOL opacity 0 - с прочрачностью 1 - без
void DrawChar( INT16 x, INT16 y, char c ); 						  //Нарисовать символ
void DrawTextInFullDisplay( const char *str, INT16 x, INT16 y ); //Нарисовать текст во весь экран


UINT8 FontHeight( void ); //Высота символа
UINT8 FontWidth( void ); // Ширина символа
UINT8 StringWidth( const char * text ); // Ширина строки

UINT32 DrawBmpImage( const AHIBITMAP_T * bmp, AHIRECT_T * dstRect, INT32 x, INT32 y );

UINT32 DrawBmpImageFS( WCHAR* file, AHIRECT_T * dr, INT32 x, INT32 y );  // Рисуем BMP из ФС
//UINT32 DrawPngImageFS( WCHAR* file, AHIRECT_T * dr, INT32 x, INT32 y );  // Рисуем PNG из ФС


#endif