#include "mapdisplay.h"
#include "citydisplay.h"
#include "textDisplay.h"
#include "X11Displays.h"

class XmDisplayData : public X11DisplayData {
public:
  XmDisplayData(X11Screen *screen, Display *display, char *name); // creates window
  void ExposeNotify(int x, int y, int width, int height);
  void Map();

  void CreateDrawingArea(int width, int height, WDisplay *window);
  void AddButton(char *name, void (*callback)(void *), void *call_data);
  void AddCloseButton(void (*callback)(void *), void *call_data);
  void AddMenu(char *name, MenuItem *list, void (*callback)(void *, void *), void *call_data);

  Widget XmFrame;
  Widget shell;
  Widget canvas;
  Widget panel;

  static int started;
};

class XmMapDisplay : public MapDisplay
{
public:
  XmMapDisplay();
  XmMapDisplay(World *w, Player *p);
  virtual ~XmMapDisplay();

  void DisplayMessage(char *mesg, int color);
  void BlitMap(int x1, int y1, int w, int h, int x2, int y2);
private:
  void CreateWindow();

  Widget mesg;
};

class XmCityDisplay : public CityDisplay
{
public:
  XmCityDisplay(City *cityp, Player *owner);
  virtual ~XmCityDisplay();
};

class XmtextDisplay : public TextDisplay
{
public:
  XmtextDisplay(int x, int y);
  virtual ~XmtextDisplay();
};
