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