Changeset 383 for trunk/gui/vizservers


Ignore:
Timestamp:
Mar 28, 2006, 2:27:09 PM (19 years ago)
Author:
qiaow
Message:

Added Event class for recording user input.

Location:
trunk/gui/vizservers/nanovis
Files:
2 added
9 edited

Legend:

Unmodified
Added
Removed
  • trunk/gui/vizservers/nanovis/Makefile

    r379 r383  
    22                Texture1D.o Texture3D.o Volume.o Texture2D.o ParticleSystem.o Sphere.o Color.o \
    33                PerfQuery.o TransferFunction.o ControlPoint.o ColorGradient.o ColorPaletteWindow.o\
    4                 ColorGradientGLUTWindow.o TransferFunctionGLUTWindow.o MainWindow.o
     4                ColorGradientGLUTWindow.o TransferFunctionGLUTWindow.o MainWindow.o Event.o
     5OBJ_CLIENT = Socket.o ClientSocket.o RenderClient.o
    56
    67AUXSRC = config.h define.h global.h
     
    1415CFLAG = -g -c -Wall -I../src2/core
    1516
    16 all: nanovis
     17all: nanovis client
    1718
    1819clean:
     
    4041        gcc $(CFLAG) $(SOCKETSRC)/Socket.cpp
    4142
     43ClientSocket.o: $(SOCKETSRC)/ClientSocket.h $(SOCKETSRC)/ClientSocket.cpp Socket.o
     44        gcc $(CFLAG) $(SOCKETSRC)/ClientSocket.cpp
     45
     46RenderClient.o: $(SOCKETSRC)/RenderClient.h $(SOCKETSRC)/RenderClient.cpp ClientSocket.o
     47        gcc $(CFLAG) $(SOCKETSRC)/RenderClient.cpp
     48
    4249RenderVertexArray.o: RenderVertexArray.h RenderVertexArray.cpp
    4350        gcc $(CFLAG) RenderVertexArray.cpp
    4451
    45 #qdclient: $(OBJ_CLIENT)
    46 #       gcc -g -o qdclient $(OBJ_CLIENT) $(LIB_CLIENT)
     52client: $(OBJ_CLIENT)
     53        gcc -g -o client $(OBJ_CLIENT) $(LIB_CLIENT)
    4754
    4855Color.o: Color.cpp
    4956        gcc $(CFLAG) Color.cpp
     57
     58Event.o: Event.cpp
     59        gcc $(CFLAG) Event.cpp
    5060
    5161ControlPoint.o: $(TFSRC)/ControlPoint.cpp
  • trunk/gui/vizservers/nanovis/ParticleSystem.cpp

    r379 r383  
    102102  reborn = false;
    103103
    104   fprintf(stderr, "init particles\n");
     104  //fprintf(stderr, "init particles\n");
    105105}
    106106
     
    190190   }
    191191
    192    fprintf(stderr, "advect: %d ", psys_frame);
     192   //fprintf(stderr, "advect: %d ", psys_frame);
    193193}
    194194
  • trunk/gui/vizservers/nanovis/config.h

    r380 r383  
    1515
    1616
    17 #define NV40    //Uncomment if using 6 series card. By default we assume older card the 5xxx series
     17#define NV40      //Uncomment if using 6 series card. By default we assume older card the 5xxx series
     18//#define XINETD  //enable render server
     19#define EVENTLOG  //enable event logging
  • trunk/gui/vizservers/nanovis/nanovis.cpp

    r381 r383  
    3232#include "transfer-function/MainWindow.h"
    3333
     34//render server
     35
    3436float color_table[256][4];     
     37
     38#ifdef XINETD
     39FILE* xinetd_log;
     40#endif
     41
     42#ifdef EVENTLOG
     43FILE* event_log;
     44//log
     45void init_event_log();
     46void end_event_log();
     47#endif
    3548
    3649int render_window;              //the handle of the render window;
     
    4356float psys_x=0.4, psys_y=0, psys_z=0;
    4457
    45 char* screen_buffer = new char[4*NPIX*NPIX+1];          //buffer to store data read from the screen
     58char* screen_buffer = new char[3*NPIX*NPIX+1];          //buffer to store data read from the screen
    4659NVISid fbo, color_tex, pattern_tex, mag_tex, final_fbo, final_color_tex, final_depth_rb; //fbo related identifiers
    4760NVISid vel_fbo, slice_vector_tex;       //for projecting 3d vector to 2d vector on a plane
     
    87100
    88101using namespace std;
     102
     103static void set_camera(int x_angle, int y_angle, int z_angle, float dis){
     104  live_rot_x = x_angle;
     105  live_rot_y = y_angle;
     106  live_rot_z = z_angle;
     107
     108  live_obj_z = dis;
     109}
     110
    89111
    90112
     
    100122static int LoadCmd _ANSI_ARGS_((ClientData cdata, Tcl_Interp *interp, int argc, CONST84 char *argv[]));
    101123
     124//Tcl callback functions
     125static int
     126CameraCmd(ClientData cdata, Tcl_Interp *interp, int argc, CONST84 char *argv[])
     127{
     128
     129        fprintf(stderr, "camera cmd\n");
     130        int x, y, z;
     131        double dis;
     132
     133        if (argc != 5) {
     134                Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0],
     135                        " x_angle y_angle z_angle distance\"", (char*)NULL);
     136                return TCL_ERROR;
     137        }
     138        if (Tcl_GetInt(interp, argv[1], &x) != TCL_OK) {
     139                return TCL_ERROR;
     140        }
     141        if (Tcl_GetInt(interp, argv[2], &y) != TCL_OK) {
     142                return TCL_ERROR;
     143        }
     144        if (Tcl_GetInt(interp, argv[3], &z) != TCL_OK) {
     145                return TCL_ERROR;
     146        }
     147        if (Tcl_GetDouble(interp, argv[4], &dis) != TCL_OK) {
     148                return TCL_ERROR;
     149        }
     150        set_camera(x, y, z, (float)dis);
     151        return TCL_OK;
     152}
     153
     154
     155static int
     156HelloCmd(ClientData cdata, Tcl_Interp *interp, int argc, CONST84 char *argv[])
     157{
     158        //send back 4 bytes as confirmation
     159        char ack[4]="ACK";
     160        fprintf(stderr, "wrote %d\n", write(fileno(stdout), ack, 4));
     161        fflush(stdout);
     162        return TCL_OK;
     163}
    102164
    103165//report errors related to CG shaders
     
    548610
    549611  tf[0]->update(data);
     612
     613#ifdef EVENTLOG
     614  float param[3] = {0,0,0};
     615  Event* tmp = new Event(EVENT_ROTATE, param, 0);
     616  tmp->write(event_log);
     617  delete tmp;
     618#endif
    550619}
    551620
     
    579648  glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
    580649  glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
     650#ifdef NV40
    581651  glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA16F_ARB, win_width, win_height, 0,
    582652               GL_RGB, GL_INT, NULL);
     653#else
     654  glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, win_width, win_height, 0,
     655               GL_RGB, GL_INT, NULL);
     656#endif
    583657  glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT,
    584658                            GL_COLOR_ATTACHMENT0_EXT,
     
    759833  psys->initialize((Particle*)data);
    760834  delete[] data;
    761 
    762   fprintf(stderr, "init particles\n");
    763835}
    764836
     
    849921  interp = Tcl_CreateInterp();
    850922  Tcl_MakeSafe(interp);
     923
     924  Tcl_CreateCommand(interp, "camera", CameraCmd, (ClientData)0, (Tcl_CmdDeleteProc*)NULL);
     925  //Tcl_CreateCommand(interp, "size", SizeCmd, (ClientData)0, (Tcl_CmdDeleteProc*)NULL);
     926  //Tcl_CreateCommand(interp, "clear", ClearCmd, (ClientData)0, (Tcl_CmdDeleteProc*)NULL);
     927  //Tcl_CreateCommand(interp, "cut", CutCmd, (ClientData)0, (Tcl_CmdDeleteProc*)NULL);
     928  //Tcl_CreateCommand(interp, "outline", OutlineCmd, (ClientData)0, (Tcl_CmdDeleteProc*)NULL);
     929  Tcl_CreateCommand(interp, "hello", HelloCmd, (ClientData)0, (Tcl_CmdDeleteProc*)NULL);
     930  //Tcl_CreateCommand(interp, "load", LoadCmd, (ClientData)0, (Tcl_CmdDeleteProc*)NULL);
    851931}
    852932
     
    9251005  glBindTexture(GL_TEXTURE_2D, 0);
    9261006  glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fbo);
    927   glReadPixels(0, 0, win_width, win_height, GL_RGBA, /*GL_COLOR_ATTACHMENT0_EXT*/ GL_UNSIGNED_BYTE, screen_buffer);
     1007  glReadPixels(0, 0, win_width, win_height, GL_RGB, /*GL_COLOR_ATTACHMENT0_EXT*/ GL_UNSIGNED_BYTE, screen_buffer);
    9281008  assert(glGetError()==0);
    9291009}
    9301010
     1011void display();
    9311012
    9321013void xinetd_listen(){
     
    9511032    }
    9521033
     1034    display();
    9531035    //read the image
    9541036    read_screen();
    955     writen(fileno(stdout), screen_buffer, 4*win_width*win_height);      //unsigned byte
    956 
    957     cerr << "server: serve() done" << endl;
     1037    writen(fileno(stdout), screen_buffer, 3*win_width*win_height);      //unsigned byte
     1038
     1039    cerr << "server: serve() image sent" << endl;
    9581040}
    9591041
     
    9921074
    9931075  nanosleep(&ts, 0);
    994   //xinetd_listen();
    995 
     1076
     1077#ifdef XINETD
     1078  xinetd_listen();
     1079#else
    9961080  glutPostRedisplay();
     1081#endif
    9971082}
    9981083
     
    17081793
    17091794   //convolve
    1710    lic();
     1795   //lic();
    17111796
    17121797   /*
     
    17831868     psys->display_vertices();
    17841869   perf->disable();
    1785    fprintf(stderr, "particle pixels: %d\n", perf->get_pixel_count());
     1870   //fprintf(stderr, "particle pixels: %d\n", perf->get_pixel_count());
    17861871   perf->reset();
    17871872
     
    17971882     render_volume(1, 256);
    17981883   perf->disable();
    1799    fprintf(stderr, "volume pixels: %d\n", perf->get_pixel_count());
     1884   //fprintf(stderr, "volume pixels: %d\n", perf->get_pixel_count());
    18001885   perf->reset();
    18011886
     
    18641949}
    18651950
     1951void end_service();
    18661952
    18671953void keyboard(unsigned char key, int x, int y){
    1868    
     1954 
     1955   bool log = false;
     1956
    18691957   switch (key){
    18701958        case 'q':
     1959#ifdef XINETD
     1960                end_service();
     1961#endif
    18711962                exit(0);
    18721963                break;
     
    18981989        case 'w': //zoom out
    18991990                live_obj_z-=0.1;
     1991                log = true;
    19001992                break;
    19011993        case 's': //zoom in
    19021994                live_obj_z+=0.1;
     1995                log = true;
    19031996                break;
    19041997        case 'a': //left
    19051998                live_obj_x-=0.1;
     1999                log = true;
    19062000                break;
    19072001        case 'd': //right
    19082002                live_obj_x+=0.1;
     2003                log = true;
    19092004                break;
    19102005        case 'i':
     
    19142009                break;
    19152010    }   
    1916    
     2011
     2012#ifdef EVENTLOG
     2013   if(log){
     2014     float param[3] = {live_obj_x, live_obj_y, live_obj_z};
     2015     Event* tmp = new Event(EVENT_MOVE, param, 0);
     2016     tmp->write(event_log);
     2017     delete tmp;
     2018   }
     2019#endif
    19172020}
    19182021
     
    19522055    }
    19532056
     2057#ifdef EVENTLOG
     2058    float param[3] = {live_rot_x, live_rot_y, live_rot_z};
     2059    Event* tmp = new Event(EVENT_ROTATE, param, 0);
     2060    tmp->write(event_log);
     2061    delete tmp;
     2062#endif
     2063
    19542064    glutPostRedisplay();
    19552065}
    19562066
     2067#ifdef XINETD
     2068void init_service(){
     2069  //open log and map stderr to log file
     2070  xinetd_log = fopen("log.txt", "w");
     2071  close(2);
     2072  dup2(fileno(xinetd_log), 2);
     2073
     2074  //flush junk
     2075  fflush(stdout);
     2076  fflush(stderr);
     2077}
     2078
     2079void end_service(){
     2080  //close log file
     2081  fclose(xinetd_log);
     2082}
     2083#endif
     2084
     2085#ifdef EVENTLOG
     2086void init_event_log(){
     2087  event_log = fopen("event.txt", "w");
     2088  assert(event_log!=0);
     2089}
     2090
     2091void end_event_log(){
     2092  fclose(event_log);
     2093}
     2094#endif
    19572095
    19582096/*----------------------------------------------------*/
     
    19782116
    19792117   initGL();
     2118#ifdef XINETD
     2119   init_service();
     2120#endif
    19802121   initTcl();
    19812122
    1982    //FILE* log_file = fopen("log.txt", "w");
    1983    //close(2);
    1984    //dup2(fileno(log_file), 2);
    1985 
     2123#ifdef EVENTLOG
     2124   init_event_log();
     2125#endif
     2126   //event loop
    19862127   glutMainLoop();
     2128#ifdef EVENTLOG
     2129   end_event_log();
     2130#endif
     2131
     2132#ifdef XINETD
     2133   end_service();
     2134#endif
     2135
    19872136   return 0;
    19882137}
  • trunk/gui/vizservers/nanovis/nanovis.h

    r379 r383  
    4040#include "ParticleSystem.h"
    4141#include "PerfQuery.h"
     42#include "Event.h"
    4243
    4344#include "config.h"
  • trunk/gui/vizservers/nanovis/socket/RenderClient.cpp

    r226 r383  
    3030RenderClient::RenderClient(std::string& remote_host, int port_num){
    3131        //screen_size = sizeof(float)*4*512*512;        //float
    32         screen_size = 4*width*height;   //unsigned byte
     32        screen_size = 3*width*height;   //unsigned byte
    3333        screen_buffer = new char[screen_size];
    3434
     
    116116{
    117117   delete[] client->screen_buffer;
    118    client->screen_size = 4*_width*_height;
     118   client->screen_size = 3*_width*_height;
    119119   client->screen_buffer = new char[client->screen_size];
    120120
     
    174174     //glDrawPixels(width, height, GL_RGBA, GL_FLOAT, client->screen_buffer);   
    175175     //bzero(client->screen_buffer, client->screen_size);
    176      glDrawPixels(width, height, GL_RGBA, GL_UNSIGNED_BYTE, client->screen_buffer);     
     176     glDrawPixels(width, height, GL_RGB, GL_UNSIGNED_BYTE, client->screen_buffer);     
    177177     glFlush();
    178178     glutSwapBuffers();
     
    469469
    470470
    471 void init_client(){
     471void init_client(char* host, char* port){
    472472  //std::string host = "localhost";
    473473  //hostname -i
    474   std::string host = "128.46.137.192";
    475   client = new RenderClient(host, 30000);
     474  //std::string host = "128.46.137.192";
     475 
     476  std::string hostname = host;
     477  client = new RenderClient(hostname, atoi(port));
    476478
    477479  //point stdin stdout to socket
     
    483485  */
    484486 
    485  
    486   std::stringstream stream;
    487   stream << "hello";
    488   std::string msg1;
    489   stream >> msg1;
     487  std::string msg1 = "hello";
    490488  std::string msg2 = " ";
    491489
     
    496494  client->receive(msg2);
    497495 
    498   //cerr << "client: msg received - " << msg2 << endl;
     496  cerr << "client: msg received - " << msg2 << endl;
    499497  cerr << "connection to server established" << endl;
    500498}
     
    541539}
    542540
     541void help(const char *argv0)
     542{
     543  fprintf(stderr,
     544          "Syntax: %s addr:port load\n",
     545          argv0);
     546  exit(1);
     547}
     548
    543549/* Program entry point */
    544550int main(int argc, char *argv[])
    545551{
     552    //parameters:  hostip and port
     553    if(argc!=3) help(argv[0]);
     554
    546555    width =512; height=512;
    547556
    548     init_client();
     557    init_client(argv[1], argv[2]);
    549558
    550559    glutInit(&argc, argv);
  • trunk/gui/vizservers/nanovis/transfer-function/ColorGradientGLUTWindow.cpp

    r379 r383  
    8383
    8484        if(mapOutput==0)
    85                 printf("NULL");
     85                fprintf(stderr, "NULL");
    8686
    8787        //initialize mapOutput
     
    148148
    149149        if(map == NULL){
    150                 printf("ColorGradient Window : forgot to bind the colorMap\n");
     150                fprintf(stderr, "ColorGradient Window : forgot to bind the colorMap\n");
    151151                return;
    152152        }
     
    617617        for(i=0;i<numOfOutput;i++){
    618618                //printf("(%g,%g,%g) ", mapOutput[3*i], mapOutput[3*i+1], mapOutput[3*i+2]);
    619                 printf("(%g,%g,%g) ", color_table[i][0], color_table[i][1], color_table[i][2]);
    620         }
    621 }
    622 
    623 
     619                fprintf(stderr, "(%g,%g,%g) ", color_table[i][0], color_table[i][1], color_table[i][2]);
     620        }
     621}
     622
     623
  • trunk/gui/vizservers/nanovis/transfer-function/MainWindow.cpp

    r379 r383  
    9999
    100100void MainTransferFunctionWindow::mainMouse(int button, int state, int x, int y){
    101         printf("main mouse\n");
     101        fprintf(stderr, "main mouse\n");
    102102        //find out what area received the event
    103103        if (y<=main_winy-tf_winy){
     
    242242       
    243243        if (fileName==0 || strlen(fileName)<1){
    244                 printf("Error: file name not supplied.\n");
     244                fprintf(stderr, "Error: file name not supplied.\n");
    245245                return;
    246246        }
     
    249249
    250250        if(!fp){
    251                 printf("Error: open file.\n");
     251                fprintf(stderr, "Error: open file.\n");
    252252                return;
    253253        }
    254254
    255         printf("File \"%s\" opened.\n", fileName);
     255        fprintf(stderr, "File \"%s\" opened.\n", fileName);
    256256
    257257        char buf[300];                  //buffer to store one line from file
  • trunk/gui/vizservers/nanovis/transfer-function/TransferFunctionGLUTWindow.cpp

    r379 r383  
    112112        tf_gvSelectedPoint = new ControlPoint(0,0);
    113113
    114         printf("Transferfunction Init...\n");
     114        fprintf(stderr, "Transferfunction Init...\n");
    115115}
    116116
     
    598598        for(i=0;i<numOfOutput;i++){
    599599                //printf("%f, ",output[i]);
    600                 printf("%f, ",color_table[i][3]);
    601         }
    602         printf("\n");
     600                fprintf(stderr, "%f, ",color_table[i][3]);
     601        }
     602        fprintf(stderr, "\n");
    603603}
    604604
     
    803803void TransferFunctionGLUTWindow::printPoints(){
    804804        ControlPoint* cur=tf_pointList;
    805         printf("********************\n");
    806         printf("Total points %d \n", tf_numOfPoints);
     805        fprintf(stderr, "********************\n");
     806        fprintf(stderr, "Total points %d \n", tf_numOfPoints);
    807807
    808808        if (tf_numOfPoints==0)
     
    810810
    811811        while (cur->next!=0){
    812                 printf("(%g,%g)\n", cur->x, cur->y);
     812                fprintf(stderr, "(%g,%g)\n", cur->x, cur->y);
    813813                cur=cur->next;
    814814        }
    815         printf("(%g,%g)\n", cur->x, cur->y);
    816         printf("********************\n");
     815        fprintf(stderr, "(%g,%g)\n", cur->x, cur->y);
     816        fprintf(stderr, "********************\n");
    817817}
    818818
     
    926926        for(int j=0; j<4; j++){
    927927                for (i=0; i<Hist[j].range; i++){
    928                         printf("%ld\t", Hist[j].count[i]);     
    929                 }
    930                 printf("\n\n");
     928                        fprintf(stderr, "%ld\t", Hist[j].count[i]);     
     929                }
     930                fprintf(stderr, "\n\n");
    931931        }
    932932
Note: See TracChangeset for help on using the changeset viewer.