Skip to content
Snippets Groups Projects
Forked from gmsh / gmsh
9807 commits behind the upstream repository.
drawContext.h 2.04 KiB
#ifndef _DRAW_GMODEL_H_
#define _DRAW_GMODEL_H_

#ifndef __cplusplus
#error You need a Cpp compiler!
#endif

#if !defined(BUILD_ANDROID)
#define BUILD_IOS 1
#endif

#include <string>

#if defined(BUILD_IOS)
#include <Gmsh/PView.h>
#include <Gmsh/PViewOptions.h>
#include <Gmsh/Context.h>
#endif

#include "movePosition.h"

class drawContext{
private:
  float _translate[3], _scale[3]; // current translation and scale
  double _rotate[16]; // current rotation matrix (double for Trackball)
  float _rotatef[16]; // current rotation matrix (float for OpenGL ES)
  double _quaternion[4]; // current quaternion used for rotation
  movePosition _start, _previous, _current; // store informations about user interactions
  int _width, _height; // size of OpenGL context in pixel
  float _left, _right, _top, _bottom, _far; // value of "border"
  float _fontFactor;
  bool _retina; // retina display

  void OrthofFromGModel(void);
  void drawPView(PView *p);
  void drawVectorArray(PViewOptions *opt, VertexArray *va);
public:
  drawContext(float fontFactor=1., bool retina=false);
  ~drawContext(){}
  void load(std::string filename);
  void eventHandler(int event, float x=0, float y=0);
  void setQuaternion(double q0, double q1, double q2, double q3);
  void addQuaternion(double p1x, double p1y, double p2x, double p2y);
  void buildRotationMatrix();
  void setTranslate(int i, float t) {if(i>=0 && i<3) _translate[i] = t;}
  float getTranslate(int i) {if(i>=0 && i<3) return _translate[i]; return 0;}
  void setScale(int i, float s) {if(i>=0 && i<3) _scale[i] = s;}
  float getScale(int i) {if(i>=0 && i<3) return _scale[i]; return 0;}
  void initView(int w, int h);
  void drawView();
  void drawAxes(float x0=0., float y0=0., float z0=0., float h=0.5);
  void drawGeom();
  void drawMesh();
  void drawPost();
  void drawScale();
};

void drawArray(VertexArray *va, int type, bool useColorArray=false,
               bool useNormalArray=false);
int onelab_cb(std::string);
int animation_next();
int animation_prev();
int number_of_animation();
void set_animation(int step);

#endif