Esempio n. 1
0
void ScreenshotHandler::receiveImage(const Image<ColorRgb> & image)
{
	// store as PNG
	QImage pngImage((const uint8_t *) image.memptr(), image.width(), image.height(), 3*image.width(), QImage::Format_RGB888);
	pngImage.save(_filename.c_str());

	// Quit the application after the first image
	QCoreApplication::quit();
}
Esempio n. 2
0
void SlideShow::LoadImages(wxArrayString images)
{
  m_size = images.GetCount();

  if (m_fileSystem) {
    for (int i=0; i<m_size; i++)
    {
      bool loadedImage = false;

      wxFSFile *fsfile = m_fileSystem->OpenFile(images[i]);
      if (fsfile) { // open sucessful

        wxInputStream *istream = fsfile->GetStream();
        wxImage pngImage(*istream);
        if (pngImage.Ok())
        {
          loadedImage = true;
          m_bitmaps.push_back(new wxBitmap(pngImage));
        }
        delete fsfile;
      }

      if (!loadedImage)
      {
        wxBitmap *bitmap = new wxBitmap;
        bitmap->Create(400, 250);

        wxString error = wxString::Format(_("Error %d"), i);

        wxMemoryDC dc;
        dc.SelectObject(*bitmap);

        int width = 0, height = 0;
        dc.GetTextExtent(error, &width, &height);

        dc.DrawRectangle(0, 0, 400, 250);
        dc.DrawLine(0, 0,   400, 250);
        dc.DrawLine(0, 250, 400, 0);
        dc.DrawText(error, 200 - width/2, 125 - height/2);

        m_bitmaps.push_back(bitmap);
      }
    }

    m_fileSystem = NULL;
  }
  else
    for (int i=0; i<m_size; i++)
    {
      bool loadedImage = false;

      if (wxFileExists(images[i]))
      {
        wxBitmap *bitmap = new wxBitmap;
        if (bitmap->LoadFile(images[i], wxBITMAP_TYPE_PNG))
        {
          loadedImage = true;
          m_bitmaps.push_back(bitmap);
        }
        else
          delete bitmap;

        wxRemoveFile(images[i]);
      }

      if (!loadedImage)
      {
        wxBitmap *bitmap = new wxBitmap;
        bitmap->Create(400, 250);

        wxString error = wxString::Format(_("Error %d"), i);

        wxMemoryDC dc;
        dc.SelectObject(*bitmap);

        int width = 0, height = 0;
        dc.GetTextExtent(error, &width, &height);

        dc.DrawRectangle(0, 0, 400, 250);
        dc.DrawLine(0, 0,   400, 250);
        dc.DrawLine(0, 250, 400, 0);
        dc.DrawText(error, 200 - width/2, 125 - height/2);

        m_bitmaps.push_back(bitmap);
      }
    }

  m_displayed = 0;
}