X-Git-Url: http://git.treefish.org/~alex/phys/latlib.git/blobdiff_plain/37439b2f85687ddafa4097d07237fc17a0a6db0d..870fa143f6a703e4f4432097ce8332ab3f15e4ad:/culooks.h diff --git a/culooks.h b/culooks.h index 32e36a8..3e47fde 100644 --- a/culooks.h +++ b/culooks.h @@ -10,13 +10,68 @@ #include #include -#include "culooks_cube.h" - using namespace std; 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: + cube (int l); + void draw(); + int id; + float az, alt; + float azRotSpeed; + 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: + float wireColor[4]; + void drawAll(); + void drawBox(); + static void drawFrame(); + float *plaq; + float *link; + float *plaqbuf[2]; + float *linkbuf[2]; + int l; + int plaqbuf_active; + int linkbuf_active; + static int allid; + bool hideplaquettes; + bool hidelinks; + }; + struct window { int layout[2]; double aspect; @@ -25,23 +80,30 @@ class culooks 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 > 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 > Windows; static pthread_t glThreadId; static int windowid; int mywid; - }; #endif