//MyGraph.h
#include <ddraw.h>
#include <windows.h>

typedef unsigned short word;

//--------------------------------------------------------
// Расчитывает новое значение частоты смены кадров
int UpdateFPS();
//--------------------------------------------------------
//получение случайного числа
int     randInt( int low, int high );
double  randDouble( double low, double high );
//--------------------------------------------------------
//рисование прямоугольника
void rectangle(int x,int y,int width,int height,DWORD c1,DWORD c2);
//рисование прямоугольника
void rectangle(int x,int y,int width,int height,DWORD c1,DWORD c2,LPDIRECTDRAWSURFACE7 surface);
//перегруженная функция (rectangle) с заданием одного цвета для всех сторон
void rectangle(int x,int y,int width,int height,DWORD c);
//перегруженная функция (rectangle) с заданием одного цвета для всех сторон
void rectangle(int x,int y,int width,int height,DWORD c,LPDIRECTDRAWSURFACE7 surface);
//рисование клиппированного прямоугольника
void rectangle_clip(int x,int y,int width,int height,int clip_x,int clip_y,
					int clip_x1,int clip_y1,DWORD color);
//рисование клиппированного прямоугольника
void rectangle_clip(int x,int y,int width,int height//положение и размеры прямоугольника
					,int clip_x,int clip_y,//видимая отсекаемая область
					int clip_w,int clip_h//
					,DWORD color,LPDIRECTDRAWSURFACE7 surface);
//клипированый заполненный прямоугольник
void box_clip(int x,int y,int width,int height,int c_x,int c_y,int c_w,int c_h,DWORD color);
void box_clip(int x,int y,int width,int height,int c_x,int c_y,int c_w,int c_h,
			  DWORD color,LPDIRECTDRAWSURFACE7 surface);
//заполненный прямоугольник
void box(int x,int y,int lx,int ly,DWORD color);
//заполнение прямоугольника в заданной поверхности
void box(int x1, int y1, int x2, int y2, DWORD color,LPDIRECTDRAWSURFACE7 surface);
//--------------------------------------------------------
//пробник
DWORD check_color(int x,int y);
//--------------------------------------------------------
//размер растра в файле
bool bmpfile_size(int* x,int* y,char* filename);//размер растра в файле
//размер поверхности
bool surface_size(int* x,int* y,LPDIRECTDRAWSURFACE7 pSurface);
//---------------------------------------------------------------------
//вывод растра в DirectDraw функцией BltFast без цветовых ключей
void BltFast(int x,int y,int dx,int dy,int width,int height,LPDIRECTDRAWSURFACE7 pSurface);
//--------------------------------------------------------
//вывод растра функцией Blt со стретчингом 
void Blt(int x,int y,int dx,int dy,int width,int height,
					int stretchX,int stretchY,LPDIRECTDRAWSURFACE7 pSurface);
//--------------------------------------------------------
//вывод растра в DirectDraw функцией BltFast c цветовыми ключами и клипированием
void draw(int x,int y,int dx,int dy,int width,int height,
				  LPDIRECTDRAWSURFACE7 pSurface);//поверхность источник
void draw(int x,int y,int dx,int dy,int width,int height,
				  LPDIRECTDRAWSURFACE7 source,LPDIRECTDRAWSURFACE7 dest);
//--------------------------------------------------------
//возвращает цвет 16 и 32 формата в зависимости от заданного цветового режима в BIT_MODE
//Ужасно медленная функция - поэтому можно использовать только вне цикла игры
DWORD COLOR(BYTE r,BYTE g,BYTE b);
//------------------------------------------------------
//Печать текстов - цвет задается только RGB(N,N,N)
//Очень медленная функция - как можно реже применять
void print(int x,int y,UINT size,COLORREF color,char* str);
//------------------------
//Сохранение растра на диске в формате BMP
bool save_bmp(int x,int y,int w,int h,LPDIRECTDRAWSURFACE7 pSurface,char* fileName);
