#ifndef INTERFACE_H
#define INTERFACE_H

#define PixelAt(x,y) ...

class Graphics
{
public:
  Graphics(int argc, char *argv[]);
  ~Graphics(void);

  int Open(void);
  void Close(void);

  void Print(void);
  void Clear(int color);

  void SetPixel (int x, int y, int color);
  void SetLine (int x1, int y1, int x2, int y2, int color);
  void SetHorLine (int x1, int x2, int y, int color);
  void SetRGB(int i, int r, int g, int b);
  void Write(int x, int y, int fg, int bg, char *str, ...);
  unsigned char *GetPixelAt (long x, long y);

  unsigned char *Memory;

private:
  void WriteChar(int x, int y, int fg, int bg, char c);
  void SetPixel2(int x, int y, int color);
  int *WidthAddress;
};

class Keyboard
{
public:
  Keyboard(int argc, char *argv[]);
  ~Keyboard(void);

  int Open(void);
  void Close(void);
};

class Mouse
{
public
  Mouse(int argc, char *argv[]);
  ~Mouse(void);

  int Open(void);
  void Close(void);
}

#endif // INTERFACE_H
