//////////////////////// constructor ///////////////////////// GeometryList::GeometryList(VMDApp *vmdapp, Displayable *disp) : Displayable(disp) { // indicate we don't yet have a color object to use colorCat = (-1); // save the list of molecules to use for data app = vmdapp; // default size of text labels is 1.0 (no scaling) labelsize = 1.0f; labelthickness = 1.0f; // create default lists for atom, bond, angle, and dihedral measurements add_geom_list("Atoms", ATOMGEOMCOL); add_geom_list("Bonds", BONDGEOMCOL); add_geom_list("Angles", ANGLEGEOMCOL); add_geom_list("Dihedrals", DIHEGEOMCOL); add_geom_list("Springs", SPRINGGEOMCOL); colorCat = scene->add_color_category("Labels"); for (int i=0; i<num_lists(); i++) { scene->add_color_item(colorCat, geomLists.name(i), geomLists.data(i)->defaultColor); } // Displayable characteristics rot_off(); scale_off(); glob_trans_off(); cent_trans_off(); }
/// And now the class definition VMDTitle::VMDTitle(DisplayDevice *d, Displayable *par) : Displayable(par), disp(d) { // displayable characteristics rot_off(); scale_off(); glob_trans_off(); cent_trans_off(); letterson = TRUE; redraw_list(); glob_trans_on(); set_glob_trans(0, 0.5, 0); glob_trans_off(); starttime = time_of_day(); }
////////////////////////// constructor Axes::Axes(DisplayDevice *d, Displayable *par) : Displayable(par), disp(d) { colorCat = (-1); // indicate we don't yet have a color object to use need_create_cmdlist = TRUE; movedAxes = FALSE; // initialize coordinates for axes lines origin[0] = yLine[0] = zLine[0] = 0.0; xLineCap[1] = xLineCap[2] = 0.0; xLine[0] = AXESRODLEN; xLineCap[0] = 1.0; origin[1] = xLine[1] = zLine[1] = 0.0; yLineCap[0] = yLineCap[2] = 0.0; yLine[1] = AXESRODLEN; yLineCap[1] = 1.0; origin[2] = xLine[2] = yLine[2] = 0.0; zLineCap[0] = zLineCap[1] = 0.0; zLine[2] = AXESRODLEN; zLineCap[2] = 1.0; xText[0] = AXESTXTLEN * xLine[0]; xText[1] = xLine[1]; xText[2] = xLine[2]; yText[1] = AXESTXTLEN * yLine[1]; yText[0] = yLine[0]; yText[2] = yLine[2]; zText[2] = AXESTXTLEN * zLine[2]; zText[0] = zLine[0]; zText[1] = zLine[1]; // Displayable characteristics rot_on(); glob_trans_off(); cent_trans_off(); // set scaling factor to a small amount scale_on(); set_scale(0.25); scale_off(); // put axes in lower left corner by default axesPos = AXES_LOWERLEFT; Aspect = (-1.0); colorCat = scene->add_color_category("Axes"); // add components, and their default colors scene->add_color_item(colorCat, "X", AXESXCOL); scene->add_color_item(colorCat, "Y", AXESYCOL); scene->add_color_item(colorCat, "Z", AXESZCOL); scene->add_color_item(colorCat, "Origin", AXESOCOL); scene->add_color_item(colorCat, "Labels", AXESTCOL); do_color_changed(colorCat); }
FPS::FPS(DisplayDevice *d, Displayable *par) : Displayable(par), disp(d) { last_update = time_of_day(); // setup time of day with initial value loop_count = 0; // disable transformations on this displayable rot_off(); glob_trans_off(); cent_trans_off(); scale_off(); // set the text color category, index, etc. colorCat = scene->add_color_category("Display"); if (colorCat < 0) colorCat = scene->category_index("Display"); usecolor = scene->add_color_item(colorCat, "FPS", REGWHITE); do_color_changed(colorCat); }
Stage::Stage(Displayable *disp) : Displayable(disp) { // Displayable characteristics rot_off(); scale_off(); glob_trans_off(); cent_trans_off(); // put stage in lower part of image by default Panels = 0; panels(STAGE_PANELS); // really sets the panels, and panel size stagePos = STAGEPOS_TOTAL; // (inits value so purify doesn't complain) location(NO_STAGE); // position the stage colorCat = scene->add_color_category("Stage"); scene->add_color_item(colorCat, "Even", STAGEEVENCOL); scene->add_color_item(colorCat, "Odd", STAGEODDCOL); do_color_changed(colorCat); }
void VMDTitle::prepare() { double elapsed = time_of_day() - starttime; double delta; // Prevent the title screen from hogging the CPU/GPU when there's // nothing else going on. This is particularly important for users // that start VMD and immediately start using Multiseq with no structure // data loaded at all. vmd_msleep(1); // sleep for 1 millisecond or more if (elapsed < 5 + 3) { // display the title screen, no animation if (!letterson) { letterson = TRUE; redraw_list(); } return; } elapsed -= 3; if (letterson) { letterson = FALSE; redraw_list(); } if (elapsed < 30) { // just spin the VMD logo delta = elapsed - 5; rot_on(); set_rot(solve_position((float) delta, 25.0f, 0.0f, 360.0f*8.0f), 'y'); rot_off(); } if (elapsed < 15) { delta = elapsed - 5; scale_on(); set_scale( 1.0f/(1.0f+ ((float) delta)/3.0f)); // and getting smaller scale_off(); glob_trans_on(); // and moving up set_glob_trans(0, 0.5f, solve_position((float) delta, 10.0f, 0.0f, 0.5f)); glob_trans_off(); return; } if (elapsed < 20) { return; } // I am at ( 0 , 0.5, 0.5) // I want to get to ( -.7 , 0.9 , 0.5) in 10 secs if (elapsed < 30) { delta = elapsed - 20; glob_trans_on(); set_glob_trans( solve_position((float) delta, 10.0f, 0.0f, -0.6f * disp->aspect()), solve_position((float) delta, 10.0f, 0.5f, 0.8f), solve_position((float) delta, 10.0f, 0.5f, 0.5f)); glob_trans_off(); scale_on(); set_scale(solve_position((float) delta, 10.0f, 1.0f/(1.0f+10.0f/3.0f), 0.25f)); scale_off(); return; } if (elapsed < 35) return; // just spin the VMD logo delta = elapsed - 35; rot_on(); set_rot((float) delta * 360.0f / 6.0f, 'y'); rot_off(); }