#include "QsLog.h"
#include "DisplayManagerDummy.h"

///////////////////////////////////////////////////////////////////////////////////////////////////
void DisplayManagerDummy::addMode(float rate)
{
  if (!m_displays.size())
    return;

  DMVideoModePtr mode = DMVideoModePtr(new DMVideoMode());
  mode->m_id = m_displays[0]->m_videoModes.size();
  mode->m_interlaced = false;
  mode->m_refreshRate = rate;
  mode->m_width = 1280;
  mode->m_height = 720;
  mode->m_bitsPerPixel = 0;
  m_displays[0]->m_videoModes[mode->m_id] = mode;
}

///////////////////////////////////////////////////////////////////////////////////////////////////
bool DisplayManagerDummy::initialize()
{
  m_displays.clear();

  DMDisplayPtr display = DMDisplayPtr(new DMDisplay());
  display->m_id = m_displays.size();
  display->m_name = "Dummy display";
  m_displays[display->m_id] = display;

  addMode(60);

  return DisplayManager::initialize();
}

///////////////////////////////////////////////////////////////////////////////////////////////////
bool DisplayManagerDummy::setDisplayMode(int display, int mode)
{
  if (!isValidDisplayMode(display, mode))
    return false;

  DMDisplayPtr displayptr = m_displays[display];
  DMVideoModePtr videomode = displayptr->m_videoModes[mode];

  QLOG_INFO() << "Switching to" << videomode->m_width << "x" << videomode->m_height << "@" << videomode->m_refreshRate;

  m_currentMode = videomode->m_id;

  return true;
}

///////////////////////////////////////////////////////////////////////////////////////////////////
int DisplayManagerDummy::getCurrentDisplayMode(int display)
{
  if (!isValidDisplay(display))
    return -1;

  return m_currentMode;
};

///////////////////////////////////////////////////////////////////////////////////////////////////
int DisplayManagerDummy::getMainDisplay()
{
  return 0;
}

///////////////////////////////////////////////////////////////////////////////////////////////////
int DisplayManagerDummy::getDisplayFromPoint(int x, int y)
{
  if (m_displays.size())
  {
    if (x >= 0 && y >= 0 && x < 1280 && y < 720)
      return 0;
  }
  return -1;
}
