]> git.treefish.org Git - phys/latlib.git/blobdiff - culooks.cpp
dynamically allocating manymeans in jackknife methods to allow for large number of...
[phys/latlib.git] / culooks.cpp
index 19e6077a05db2fc4ac129ff990bc164421936a37..94b9aa9fe80a1e6186c0dd6b27d649905b59c6c4 100644 (file)
@@ -1,17 +1,13 @@
 #include "culooks.h"
 
 #include <vector>
-#include <GL/glut.h>
-#include <GL/glx.h>
-#include <GL/gl.h>
-#include <X11/Xlib.h>
-#include <X11/Xutil.h>
 
 #include <iostream>
 #include <math.h>
 
 vector< pair<int,culooks::window*> > culooks::Windows;
 pthread_t culooks::glThreadId;
+culooks::comarg culooks::comArg;
 
 int culooks::windowid = 0;
 
@@ -22,10 +18,7 @@ culooks::culooks (const char* name, const int& xcubes, const int& ycubes, const
   window *Win = new window;
   int winsize[2];
 
-  if (windowid == 0) {
-    glutInit(argc, argv);
-    glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB|GLUT_DEPTH);
-  }
+  XInitThreads();
 
   Win->layout[0] = xcubes;
   Win->layout[1] = ycubes;
@@ -51,14 +44,79 @@ culooks::culooks (const char* name, const int& xcubes, const int& ycubes, const
 
   Win->initialized = false;
 
+  //Win->linewidth = 1;
+
   Windows.push_back( pair<int,culooks::window*>(0, Win) );
-  
+
   if (windowid == 0) {
-    glXMakeCurrent(0,0,0);
-    pthread_create(&glThreadId, 0, &drawing::glutThread, NULL);
+    comArg.argc = argc;
+    comArg.argv = argv;
+    pthread_create(&glThreadId, 0, &drawing::glutThread, &comArg);
   }
-
   mywid = windowid;
   windowid++;
 }
 
+void culooks::setLink (const int& cubeid, const int& posdir,
+                      const float& red, const float& green, const float& blue, const float& alpha)
+{
+  Windows[mywid].second->cubes[cubeid].setLink(posdir, red, green, blue, alpha);
+}
+
+void culooks::setPlaq (const int& cubeid, const int& posdir,
+                      const float& red, const float& green, const float& blue, const float& alpha)
+{
+  Windows[mywid].second->cubes[cubeid].setPlaq(posdir, red, green, blue, alpha);
+}
+
+void culooks::swapBuffers () {
+  for (int icube=0; icube<Windows[mywid].second->cubes.size(); icube++) {
+    Windows[mywid].second->cubes[icube].swapLinkBuffer();
+    Windows[mywid].second->cubes[icube].swapPlaqBuffer();
+  }
+  Windows[mywid].second->redisplay = true;
+}
+
+void culooks::hidePlaqs (const int& cubeid) {
+  Windows[mywid].second->cubes[cubeid].hidePlaqs();
+}
+
+void culooks::hidePlaqs () {
+  for (int icube=0; icube<Windows[mywid].second->cubes.size(); icube++)
+    Windows[mywid].second->cubes[icube].hidePlaqs();
+}
+
+void culooks::hideLinks (const int& cubeid) {
+  Windows[mywid].second->cubes[cubeid].hideLinks();
+}
+
+void culooks::hideLinks () {
+  for (int icube=0; icube<Windows[mywid].second->cubes.size(); icube++)
+    Windows[mywid].second->cubes[icube].hideLinks();
+}
+
+void culooks::setBgColor(const float& red, const float& green, const float& blue, const float& alpha)
+{
+  Windows[mywid].second->bgcolor[0] = red;
+  Windows[mywid].second->bgcolor[1] = green;
+  Windows[mywid].second->bgcolor[2] = blue;
+  Windows[mywid].second->bgcolor[3] = alpha;
+}
+
+void culooks::setWireColor(const float& r, const float& g, const float& b, const float& a)
+{
+  for (int icube=0; icube<Windows[mywid].second->cubes.size(); icube++)
+    Windows[mywid].second->cubes[icube].setWireColor(r, g, b, a);
+}
+
+void culooks::setFrameWidth(float width)
+{
+  for (int icube=0; icube<Windows[mywid].second->cubes.size(); icube++)
+    Windows[mywid].second->cubes[icube].setFrameWidth(width);
+}
+
+void culooks::setLinkWidth(float width)
+{
+  for (int icube=0; icube<Windows[mywid].second->cubes.size(); icube++)
+    Windows[mywid].second->cubes[icube].setLinkWidth(width);
+}