]> git.treefish.org Git - phys/latlib.git/blob - culooks.cpp
...
[phys/latlib.git] / culooks.cpp
1 #include "culooks.h"
2
3 #include <vector>
4 #include <GL/glut.h>
5
6 #include <iostream>
7 #include <math.h>
8
9 vector< pair<int,culooks::window*> > culooks::Windows;
10 pthread_t culooks::glThreadId;
11
12 int culooks::windowid = 0;
13
14 using namespace std;
15
16 culooks::culooks (const char* name, const int& xcubes, const int& ycubes, const int& l, int *argc, char **argv)
17 {
18   window *Win = new window;
19   int winsize[2];
20
21   if (windowid == 0) {
22     glutInit(argc, argv);
23     glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB|GLUT_DEPTH);
24   }
25
26   Win->layout[0] = xcubes;
27   Win->layout[1] = ycubes;
28   Win->aspect = (double)xcubes/ycubes;
29   for (int icube=0; icube<xcubes*ycubes; icube++) {
30     cube newCube(l);
31     Win->cubes.push_back(newCube);
32   }
33
34   if( Win->layout[0] >= Win->layout[1] ) {
35     winsize[0] = 640;
36     winsize[1] = (640.0/Win->layout[0])*Win->layout[1];
37   }
38   else {
39     winsize[1] = 640;
40     winsize[0] = (640.0/Win->layout[1])*Win->layout[0];
41   }
42
43   Win->w = winsize[0];
44   Win->h = winsize[1];
45
46   Win->name = name;
47
48   Win->initialized = false;
49
50   Windows.push_back( pair<int,culooks::window*>(0, Win) );
51   
52   if (windowid == 0) {
53     glXMakeCurrent(0,0,0);
54     pthread_create(&glThreadId, 0, &drawing::glutThread, NULL);
55   }
56
57   mywid = windowid;
58   windowid++;
59 }
60