1  // %flair:license{


2  // This file is part of the Flair framework distributed under the


3  // CECILLC License, Version 1.0.


4  // %flair:license}


5  // created: 2013/03/27


6  // filename: Gui.h


7  //


8  // author: Guillaume Sanahuja


9  // Copyright Heudiasyc UMR UTC/CNRS 7253


10  //


11  // version: $Id: $


12  //


13  // purpose: classe definissant une Gui


14  //


15  /*********************************************************************/


16 


17  #ifndef GUI_H


18  #define GUI_H


19 


20  #include <Object.h>


21  #include <Vector3D.h>


22  #include <EDriverTypes.h>


23  #include <vector3d.h>


24 


25  namespace irr {


26  class IrrlichtDevice;


27  namespace video {


28  class ITexture;


29  }


30  namespace scene {


31  class IAnimatedMesh;


32  class ISceneManager;


33  }


34  }


35 


36  namespace flair {


37  namespace core {


38  class Object;


39  class Euler;


40  class Quaternion;


41  }


42  }


43 


44  class Gui_impl;


45  class Simulator_impl;


46  class Model_impl;


47 


48  namespace flair {


49  namespace simulator {


50 


51  class Gui: public core::Object {


52  friend class ::Simulator_impl;


53  friend class VisualizationCamera;


54 


55  public:


56  Gui(std::string name, int app_width, int app_height,


57  int scene_width, int scene_height, std::string media_path,


58  irr::video::E_DRIVER_TYPE driver_type = irr::video::EDT_OPENGL);


59  ~Gui();


60  irr::core::vector3df getRotation(void) const;


61  irr::video::ITexture *getTexture(std::string filename) const;


62  irr::scene::IAnimatedMesh *getMesh(std::string filename) const;


63  irr::scene::ISceneManager *getSceneManager(void) const;


64  irr::IrrlichtDevice *getDevice(void) const;


65  float getAspectRatio(void) const;


66 


67  protected:


68  void setMesh(std::string file,


69  irr::core::vector3df position = irr::core::vector3df(0, 0, 0),


70  irr::core::vector3df rotation = irr::core::vector3df(0, 0, 0),


71  irr::core::vector3df scale = irr::core::vector3df(1, 1, 1));


72 


73  private:


74  Gui_impl *pimpl_;


75  };


76 


77  /*!


78  * \brief get Gui


79  *


80  * \return the Gui


81  */


82  Gui *getGui(void);


83 


84  bool noGui(void);


85 


86  bool isGlExtensionSupported(


87  const std::string &ext); // check if a extension is supported


88 


89  /*!


90  * \brief Convert to irrlicht scale


91  *


92  * \param value value in simulator scale


93  *


94  * \return value in irrlicht scale


95  */


96  float ToIrrlichtScale(float value);


97 


98  /*!


99  * \brief Convert to simulator scale


100  *


101  * \param value value in irrlicht scale


102  *


103  * \return value in simulator scale


104  */


105  float ToSimulatorScale(float value);


106 


107  /*!


108  * \brief Convert to irrlicht coordinates


109  *


110  * irrlicht is left handed and as a different scale


111  *


112  * \param vect vector in simulator coordinates


113  *


114  * \return vector in irrlicht coordinates


115  */


116  irr::core::vector3df ToIrrlichtCoordinates(irr::core::vector3df vect);


117 


118  /*!


119  * \brief Convert to irrlicht coordinates


120  *


121  * irrlicht is left handed and as a different scale


122  *


123  * \param vect vector in simulator coordinates


124  *


125  * \return vector in irrlicht coordinates


126  */


127  template<typename T> irr::core::vector3df ToIrrlichtCoordinates(core::Vector3D<T> vect);


128 


129  /*!


130  * \brief Convert to simulator coordinates


131  *


132  * irrlicht is left handed and as a different scale


133  *


134  * \param vect vector in irrlicht coordinates


135  *


136  * \return vector in simulator coordinates


137  */


138  core::Vector3Df ToSimulatorCoordinates(irr::core::vector3df vect);


139 


140  /*!


141  * \brief Convert to irrlicht orientation


142  *


143  * irrlicht is left handed


144  *


145  * \param quat quaternion in simulator frame


146  *


147  * \return quaternion in irrlicht frame


148  */


149  core::Quaternion ToIrrlichtOrientation(core::Quaternion quat);


150 


151  } // end namespace simulator


152  } // end namespace flair


153  #endif // GUI_H

