void GfxGlEngine::drawPicture(const Picture &picture, const int dx, const int dy)
{
   GLuint aTextureID = picture._glTextureID;
   int x0 = dx+picture.get_xoffset();
   int x1 = x0+picture.get_width();
   int y0 = dy-picture.get_yoffset();
   int y1 = y0+picture.get_height();


   // Bind the texture to which subsequent calls refer to
   glBindTexture( GL_TEXTURE_2D, aTextureID);

   glBegin( GL_QUADS );

   //Bottom-left vertex (corner)
   glTexCoord2i( 0, 0 );
   glVertex2f( x0, y0 );

   //Bottom-right vertex (corner)
   glTexCoord2i( 1, 0 );
   glVertex2f( x1, y0 );

   //Top-right vertex (corner)
   glTexCoord2i( 1, 1 );
   glVertex2f( x1, y1 );

   //Top-left vertex (corner)
   glTexCoord2i( 0, 1 );
   glVertex2f( x0, y1 );

   glEnd();
}
Esempio n. 2
0
int main (int argc, char *argv[]) {
  ofstream output;
  char in;
  int width, c, d;
  string filename, line;

  if ((argc > 1) && (!strcmp (argv[1], "/?"))) {usage (); exit (0);}
  if (argc > 2) { // Do we have an output file?
    filename = argv[2];
  } else {
    if (argc > 1) {
      filename = argv[1];
      int n = filename.find_last_of('\\');
      filename.erase(n + 1, filename.length() - n);
      filename.append("Enpict.txt");
    } else filename = "Enpict.txt";
  }
  output.open(filename.c_str ());
  if (!output.is_open ()) {
    cout << "Unable to open " << filename << " for writing.\n\n";
    usage (); exit (0);
  }
  Picture pict;
  if (argc > 1) { // Do we have an input file?
    ifstream input (argv[1]);
    if (!input.is_open ()) {
      cout << "Unable to open " << argv[1] << " for reading.\n\n";
      return 0;
    }
    streamsize longest = 0;
    while (input.ignore(numeric_limits< streamsize >::max(), '\n'))
      longest = max(longest, input.gcount());
    pict.set_width (--longest);
    input.clear();
    input.seekg (0, ios::beg);
    while (getline(input, line)) {
      for (string::const_iterator d = line.begin(), end = line.end();
        d != end; ++d) pict.enpict(*d);
      for (int d = line.size(); d != longest; ++d)
        pict.enpict (' ');
    }
    input.close ();
  } else {
    usage ();
    cout << "\nInput the width of your picture : ";
    cin >> width;
    pict.set_width (width);
    cout << "\nStart inputing the picture. All non-space characters will be\n"
      << "treated the same. Input a blank line to quit\n";
    cout << ":"; for (c = 0; c < width; c++) cout << '-';
    cout << ":\n:";
    cin >> ws;
    c = 0; in = cin.get ();
    while (in != '\n') {
      c++; pict.enpict (in);
      in = cin.get ();
      if (c == width) while (in != '\n') in = cin.get ();
      if (in == '\n') {
        while (c++ < width) pict.enpict (' ');
         cout << ':';
         c = 0; in = cin.get ();
      }
    }
  }
  cout << "Encoded picture data for Depicter.c:\n\nstring code =\n\"";
  output << "string code =\n\"";
  string temp = pict.get_code();
  d = 0;
  for (c = 0; c < temp.length ();c++) {
    if ((temp.at(c) == '"') || (temp.at(c) == '\\'))
      {cout << '\\'; output << '\\'; d++;}
    cout << temp.at(c); output << temp.at(c);
    if (!(++d % 77)) {cout << "\"\n\""; output << "\"\n\"";}
  }
  cout   << "\";\nint width = " << pict.get_width() << ";\n";
  output << "\";\nint width = " << pict.get_width() << ";\n";
  output.close ();
  cout << "\nPress ENTER to continue...";
  getline (cin, line);
}