#include "../model/data/base.h"
#include "../model/geometry/datarose_geometry.h"
#include "../model/geometry/density_legend_geometry.h"
#include "../model/geometry/map_geometry.h"
#include "../model/geometry/protein_geometry.h"
#include "../model/geometry/protein_selected_geometry.h"
#include "../model/state/pan_info_init.h"
#include "../model/state/selection_info_init.h"
#include "../model/state/zoom_info_init.h"
#include "init.h"
#include "state0.h"
#include <GL/glut.h>

#define S state0

void
init (void)
{
  /*
   * Initialize default values, zero memory and NULL pointers.
   */
  S.rows = 0;
  S.gi_data = NULL;
  S.base_vertices_data = NULL;
  S.base_colors_data = NULL;
  selection_info_init (&S.selection);
  zoom_info_init (&S.zoom);
  pan_info_init (&S.pan);
  S.legend = true;
  S.datarose = false;

  /*
   * Load the data.
   */
  base ();

  /*
   * Create the geometry based on the data.
   */
  S.list_offset = glGenLists (NUM_LISTS);
  protein_geometry ();
  protein_selected_geometry ();
  density_legend_geometry ();
  map_geometry ();
  datarose_geometry ();

  return;
}