#ifndef TELESCOPE_H
#define TELESCOPE_H

class Telescope {
 public:
  Telescope(GLfloat x = 0, GLfloat y = 0);
  ~Telescope();

  /* This draws the "outside" of the telescope - the fov and aspect are
   * needed since it is drawn in eye coordinates */
  void draw_setup(GLfloat fov, GLfloat aspect = 1.0, int perspective = 1);
  void draw_fake();
  void draw_body();
  void draw_takedown();
  
  /* This just draws the lens - usually it will be used to draw the lens
   * into the stencil buffer */
  void draw_lens();

  /* How finally to divide things as we're drawing */
  void set_divisions(int d);
  int get_divisions();

  /* This is the radius of the lens - the rest of the dimensions depend
   * upon it */
  void set_radius(GLfloat r);
  GLfloat get_radius();

  /* Positions are in eye coordinates and go from [0, 1] */
  GLfloat xpos, ypos;
 private:
  int divisions;

  GLfloat radius; 

  GLUquadricObj *disk;
  GLUquadricObj *cylinder;
};

#endif