示例#1
0
void discardXformDB(xformDatabase* xdb,
            abrAtomListProc delAtomProc, void *deletestuff) {
   int i = 0;
   transformData *p = NULL, *next = NULL;
   goToRec *g = NULL, *nextg = NULL;

   if (xdb) {
      for(p = xdb->xforms; p; p = next) {
         next = p->next;
         deleteTransformation(p, delAtomProc, deletestuff);
      }
      xdb->xforms = NULL;
      xdb->last   = NULL;

      for(i = 0; i < MAX_XFORM_LEVELS; i++) {
         xdb->level[i] = NULL;
      }
      xdb->nlevs  = 0;
      xdb->nstack = 0;
      free(xdb->ctmstack[0]); /* all stack elements allocated in a block */
      for(g = xdb->golist; g; g = nextg) {
         nextg = g->next;
         free(g);
      }
      if (xdb->sortedByRes) { free(xdb->sortedByRes); }
      xdb->sortedByRes = NULL;

      free(xdb);
   }
}
void PointCloud::toggleRegisterState(void)
{
  registered_ = !registered_;
  if (registered_)
    saveTransformation();   
  else
    deleteTransformation();

  return;
}
void PointCloud::setRotation(void)
{
  ParameterDialog parameter_dialog("Rotation Parameters", MainWindow::getInstance());
  int view = getView();
  DoubleParameter rotation_angle("Rotation Angle", "Rotation Angle", (view<7)?(-view*30):(12-view)*30, -180, 180, 30);
  parameter_dialog.addParameter(&rotation_angle);
  if (!parameter_dialog.exec() == QDialog::Accepted)
    return;

  double angle = rotation_angle*M_PI/180.0;
  setMatrix(MainWindow::getInstance()->getRegistrator()->getRotationMatrix(angle));

  if (angle == 0.0)
    deleteTransformation();

  return;
}