]> git.treefish.org Git - phys/latlib.git/blobdiff - culooks.h
...
[phys/latlib.git] / culooks.h
index 45fa31990118bcafbf930ea17328e4ef228e5a77..3e47fde760efebd481615916b40a51a79408749e 100644 (file)
--- a/culooks.h
+++ b/culooks.h
@@ -15,20 +15,61 @@ using namespace std;
 class culooks
 {
  public:
 class culooks
 {
  public:
+  
+  culooks (const char* name, const int& xcubes, const int& ycubes, const int& l, int *argc, char **argv);
+  void setLink (const int& cubeid, const int& posdir,
+               const float& red, const float& green, const float& blue, const float& alpha);
+  void setPlaq (const int& cubeid, const int& posdir,
+               const float& red, const float& green, const float& blue, const float& alpha);
+  void swapBuffers();
+  void hidePlaqs(const int& cubeid);
+  void hidePlaqs();
+  void hideLinks(const int& cubeid);
+  void hideLinks();
+  void setBgColor(const float& red, const float& green, const float& blue, const float& alpha);
+  void setWireColor(const float& r, const float& g, const float& b, const float& a);
+
+ private:
+
+  struct comarg {
+    int *argc;
+    char **argv;
+  };
+
+  static comarg comArg;
+  
   class cube {
   public:
   class cube {
   public:
-    cube(int l);
+    cube (int l);
     void draw();
     int id;
     float az, alt;
     void draw();
     int id;
     float az, alt;
+    float azRotSpeed;
     float zoom;
     float zoom;
+    void setLink (const int& posdir, 
+                 const float& red, const float& green, const float& blue, const float& alpha);
+    void setPlaq (const int& posdir, 
+                 const float& red, const float& green, const float& blue, const float& alpha);
+    void swapLinkBuffer();
+    void swapPlaqBuffer();
+    void hidePlaqs();
+    void hideLinks();
+    void setWireColor(const float& r, const float& g, const float& b, const float& a);
   private:
   private:
+    float wireColor[4];
     void drawAll();
     void drawBox();
     void drawAll();
     void drawBox();
-    static int allid;
+    static void drawFrame();
     float *plaq;
     float *link;
     float *plaq;
     float *link;
+    float *plaqbuf[2];
+    float *linkbuf[2];
     int l;
     int l;
+    int plaqbuf_active;
+    int linkbuf_active;
+    static int allid;
+    bool hideplaquettes;
+    bool hidelinks;
   };
   
   struct window {
   };
   
   struct window {
@@ -39,23 +80,30 @@ class culooks
     int gwinid;
     bool initialized;
     string name;
     int gwinid;
     bool initialized;
     string name;
+    float bgcolor[4];
+    bool redisplay;
   };
 
   };
 
-  culooks (const char* name, const int& xcubes, const int& ycubes, const int& l, int *argc, char **argv);
-
-  static vector< pair<int,window*> > Windows;
-
-  struct wincontext {
-    GLXDrawable gDrawable;
-    Display *gDisplay;
-    GLXContext gContext;
+  class drawing 
+  {
+  private:
+    static int rotcube[3];
+    static culooks::window* getWin();
+    static int getCubeFromPos(int x, int y);
+    static void motionFunc(int x, int y);
+    static void mouseFunc(int button, int state, int x, int y);
+    static void reshapeFunc(int w, int h);
+    static void displayFunc();
+    static void initWindow(int winid);
+    static void idleFunc();
+  public:
+    static void* glutThread(void *leer);
   };
   };
-
- private:
+  
+  static vector< pair<int,window*> > Windows;
   static pthread_t glThreadId;
   static int windowid;
   int mywid;
   static pthread_t glThreadId;
   static int windowid;
   int mywid;
-  
 };
 
 #endif
 };
 
 #endif