Main Page   Namespace List   Class Hierarchy   Compound List   File List   Namespace Members   Compound Members   File Members   Related Pages  

simpleViewer

introduction

This is the minimum code example. We use the class SimpleX3DGLScene to load and draw an X3D scene.

code

Viewer.h

//                            Viewer.h                                        //

#ifndef VIEWER_H
#define VIEWER_H

#include <QGLViewer/qglviewer.h>
#include <X3DTK/simplex3dglscene.h>

// Class providing an X3D Viewer by implementing QGLViewer.

class Viewer : public QGLViewer
{
protected :
  void init();
  void draw();
  void keyPressEvent(QKeyEvent *e);
  void loadFile();
  void help();
  
private:
  X3DTK::SimpleX3DGLScene scene;
};

#endif

Viewer.cpp

#include "Viewer.h"
#include <qfiledialog.h>

#include <X3DTK/kernel.h>

using namespace X3DTK;
using namespace std;

void Viewer::init()
{
  glEnable(GL_RESCALE_NORMAL);
  help();
  loadFile();
}

void Viewer::keyPressEvent(QKeyEvent *e)
{
  switch (e->key())
  {
    case Qt::Key_L : loadFile(); break;
    default:         QGLViewer::keyPressEvent(e);
  }
}

void Viewer::loadFile()
{
  QString name = QFileDialog::getOpenFileName("", "X3D files (*.x3d *.X3D);;All files (*)", this);
  
  // In case of Cancel
  if (name.isEmpty())
    return;

  // Loads the file name.
  scene.load(name);
  
  // QGLViewer settings.
  setSceneBoundingBox(scene.getBboxMin().f_data(), scene.getBboxMax().f_data());
  showEntireScene();
}

void Viewer::draw()
{
  // Draws the scene.
  scene.draw();
}

void Viewer::help()
{
  cout << endl << "\t\t- -  X 3 D V i e w e r  - -" << endl << endl;
  cout << "This example uses the libX3D library to load a x3d object file." << endl;
  cout << "Press 'L'(oad) to open a x3d file." << endl << endl;
}

Generated on Tue Jul 15 16:46:54 2003 for X3DToolKit by doxygen1.3