コード例 #1
0
ファイル: tree.c プロジェクト: eoinomurchu/CGE
static void clearNodes(Node *node) {
  int n;
  for (n = 0; n < node->count; n++)
    clearNodes(node->children[n]);
  free(node->children);
  free(node);
}
コード例 #2
0
void GraphGraphicsView::drawSpecifiedGraph(QList<QList<int> > adjM)
{
    if(&adjM != &adjMatrix)
    {
        clearNodes();
        clearArrows();
        adjMatrix.clear();
        adj.clear();
        adjMatrix = adjM;

        for (int i = 0; i < adjMatrix.length(); ++i) {
            adj.push_back(AdjacencyList());
            for (int j = 0; j < adjMatrix.length(); ++j) {
                if (adjMatrix[i][j] > 0) {
                    adj[i].Insert(j, adjMatrix[i][j]);
                }
            }
        }
    }

    for (int i = 0; i < adjMatrix.size(); ++i) {
        nodes.push_back(new NodeGraphicsItem(QString::number(i+1)));
        scene.addItem(nodes[i]);
        nodes[i]->setPos(qrand() % 500, qrand() % 500);
    }
    reposition();
}
コード例 #3
0
void GraphGraphicsView::drawSpecifiedGraph(int vertices, int edges)
{
    clearNodes();
    clearArrows();
    adjMatrix.clear();
    adj.clear();

    for (int i = 0; i < vertices; ++i) {
        nodes.push_back(new NodeGraphicsItem(QString::number(i+1)));
        scene.addItem(nodes[i]);
        nodes[i]->setPos(qrand() % 500, qrand() % 500);
    }

    for (int i = 0; i < nodes.length(); ++i) {
        adjMatrix.push_back(QList<int>());
        adj.push_back(AdjacencyList());
        for (int j = 0; j < nodes.length(); ++j) {
            if (edges > 0 && i != j)
            {
                int val = qrand() % 11;
                adjMatrix[i].push_back(val);
                if (val > 0) {
                    adj[i].Insert(j,val);
                }
                edges--;
            }
        }
        //adj[i].printValues();
    }

    reposition();
}
コード例 #4
0
ファイル: Mesh.cpp プロジェクト: fmckenna/OpenSees
Mesh::~Mesh()
{
    Domain* domain = OPS_GetDomain();
    if (domain == 0) return;

    clearEles();
    clearNodes();
}
コード例 #5
0
CMathExpression::CMathExpression(const CExpression & src,
                                 CMathContainer & container,
                                 const bool & replaceDiscontinuousNodes):
  CEvaluationTree(src.getObjectName(), &container, CEvaluationTree::MathExpression),
  mPrerequisites()
{
  clearNodes();

  // Create a converted copy of the existing expression tree.
  mpRootNode = container.copyBranch(src.getRoot(), replaceDiscontinuousNodes);

  compile();
}
コード例 #6
0
void GraphGraphicsView::randomGraph()
{
    clearNodes();
    clearArrows();

    adjMatrix.clear();
    adj.clear();


    int sizeOf = qrand() % 8;

    for (int i = 0; i < sizeOf; ++i) {
        adjMatrix.push_back(QList<int>());
        adj.push_back(AdjacencyList());
        for (int j = 0; j < sizeOf; ++j) {
            if (i != j)
            {
                int val = qrand() % 50;
                if ((val % 10) == 0)
                    val = 0;
                adjMatrix[i].push_back(val);
                if (val > 0) {
                    adj[i].Insert(j,val);

                }
            }
        }
        nodes.push_back(new NodeGraphicsItem(QString::number(i+1)));
        scene.addItem(nodes[i]);
        //qDebug() << i+1 << ": " << adj[i].printValues();
        //adj[i].printValues();
        nodes[i]->setPos(qrand() % 500, qrand() % 500);
    }

    reposition();
    //runPrim();
}
コード例 #7
0
ファイル: tree.c プロジェクト: eoinomurchu/CGE
void clearTree(Tree *tree) {
  clearNodes(tree->root);
  free(tree);
}
コード例 #8
0
ファイル: IfShape.cpp プロジェクト: iocroblab/coindesigner
IfShape::~IfShape()
{
    clearNodes();
}
コード例 #9
0
void GraphGraphicsView::clear()
{
    clearNodes();
    clearArrows();
    clearWeights();
}
コード例 #10
0
void OutlineVectorizer::makeDataRaster(const TRasterP &src)
{
	m_vimage = new TVectorImage();
	if (!src)
		return;
	m_src = src;

	clearNodes();
	clearJunctions();

	int x, y, ii = 0;
	TRaster32P srcRGBM = (TRaster32P)m_src;
	TRasterCM32P srcCM = (TRasterCM32P)m_src;
	TRasterGR8P srcGR = (TRasterGR8P)m_src;

	// Inizializzo DataRasterP per i casi in cui si ha un TRaster32P, un TRasterGR8P o un TRasterCM32P molto grande
	DataRasterP dataRaster(m_src->getSize().lx + 2, m_src->getSize().ly + 2);
	if (srcRGBM || srcGR || (srcCM && srcCM->getLx() * srcCM->getLy() > 5000000)) {
		int ly = dataRaster->getLy();
		int lx = dataRaster->getLx();
		int wrap = dataRaster->getWrap();
		DataPixel *dataPix0 = dataRaster->pixels(0);
		DataPixel *dataPix1 = dataRaster->pixels(0) + m_src->getLx() + 1;
		for (y = 0; y < ly; y++, dataPix0 += wrap, dataPix1 += wrap) {
			dataPix0->m_pos.x = 0;
			dataPix1->m_pos.x = lx - 1;
			dataPix0->m_pos.y = dataPix1->m_pos.y = y;
			dataPix0->m_value = dataPix1->m_value = 0;
			dataPix0->m_ink = dataPix1->m_ink = false;
			dataPix0->m_node = dataPix1->m_node = 0;
		}
		dataPix0 = dataRaster->pixels(0);
		dataPix1 = dataRaster->pixels(ly - 1);
		for (x = 0; x < lx; x++, dataPix0++, dataPix1++) {
			dataPix0->m_pos.x = dataPix1->m_pos.x = x;
			dataPix0->m_pos.y = 0;
			dataPix1->m_pos.y = ly - 1;
			dataPix0->m_value = dataPix1->m_value = 0;
			dataPix0->m_ink = dataPix1->m_ink = false;
			dataPix0->m_node = dataPix1->m_node = 0;
		}
	}

	if (srcRGBM) {
		assert(m_palette);
		int inkId = m_palette->getClosestStyle(m_configuration.m_inkColor);
		if (!inkId || m_configuration.m_inkColor != m_palette->getStyle(inkId)->getMainColor()) {
			inkId = m_palette->getStyleCount();
			m_palette->getStylePage(1)->insertStyle(1, m_configuration.m_inkColor);
			m_palette->setStyle(inkId, m_configuration.m_inkColor);
		}
		assert(inkId);

		m_dataRasterArray.push_back(std::pair<int, DataRasterP>(inkId, dataRaster));
		int maxDistance2 = m_configuration.m_threshold * m_configuration.m_threshold;

		for (y = 0; y < m_src->getLy(); y++) {
			TPixel32 *inPix = srcRGBM->pixels(y);
			TPixel32 *inEndPix = inPix + srcRGBM->getLx();
			DataPixel *dataPix = dataRaster->pixels(y + 1) + 1;
			x = 0;
			while (inPix < inEndPix) {
				*dataPix = DataPixel();
				int distance2 = colorDistance2(m_configuration.m_inkColor, *inPix);

				if (y == 0 || y == m_src->getLy() - 1 || x == 0 || x == m_src->getLx() - 1 || inPix->m == 0) {
					dataPix->m_value = 255;
					dataPix->m_ink = false;
				} else {
					dataPix->m_value = (inPix->r + 2 * inPix->g + inPix->b) >> 2;
					dataPix->m_ink = (distance2 < maxDistance2);
				}
				dataPix->m_pos.x = x++;
				dataPix->m_pos.y = y;
				dataPix->m_node = 0;
				inPix++;
				dataPix++;
			}
		}
	} else if (srcGR) {
コード例 #11
0
OutlineVectorizer::~OutlineVectorizer()
{
	m_protoOutlines.clear();
	clearNodes();
	clearJunctions();
}
コード例 #12
0
ファイル: octree.cpp プロジェクト: gaoyakun/atom3d
ATOM_OctreeNodeChunk::~ATOM_OctreeNodeChunk (void) 
{
  clearNodes ();
}
コード例 #13
0
void WPDefManager::unload( void )
{
	// Clear all nodes inside our local tree
	clearNodes( Items );
	clearNodes( Scripts );
	clearNodes( NPCs );
	clearNodes( StringLists );
	clearNodes( Menus );
	clearNodes( Spells );
	clearNodes( PrivLevels );
	clearNodes( SpawnRegions );
	clearNodes( Regions );
	clearNodes( Multis );
	clearNodes( Texts );
}
コード例 #14
0
CMathExpression::CMathExpression(const CFunction & src,
                                 const CCallParameters< C_FLOAT64 > & callParameters,
                                 CMathContainer & container,
                                 const bool & replaceDiscontinuousNodes):
  CEvaluationTree(src.getObjectName(), &container, CEvaluationTree::MathExpression),
  mPrerequisites()
{
  clearNodes();

  // Deal with the different function types
  switch (src.getType())
    {
      case CEvaluationTree::Function:
      case CEvaluationTree::PreDefined:
      case CEvaluationTree::UserDefined:
      {
        // Create a vector of CEvaluationNodeObject for each variable
        CMath::Variables< CEvaluationNode * > Variables;

        CCallParameters< C_FLOAT64 >::const_iterator it = callParameters.begin();
        CCallParameters< C_FLOAT64 >::const_iterator end = callParameters.end();

        for (; it != end; ++it)
          {
            Variables.push_back(createNodeFromValue(it->value));
          }

        // Create a converted copy of the existing expression tree.
        mpRootNode = container.copyBranch(src.getRoot(), Variables, replaceDiscontinuousNodes);

        // Deleted the created variables
        CMath::Variables< CEvaluationNode * >::iterator itVar = Variables.begin();
        CMath::Variables< CEvaluationNode * >::iterator endVar = Variables.end();

        for (; itVar != endVar; ++itVar)
          {
            pdelete(*itVar);
          }
      }

      break;

      case CEvaluationTree::MassAction:
      {
        // We build a mass action expression based on the call parameters.
        CCallParameters< C_FLOAT64 >::const_iterator it = callParameters.begin();

        // Handle the case we were have an invalid number of call parameters.
        if (callParameters.size() < 2)
          {
            mpRootNode = NULL;
          }
        else
          {
            // We always have reactants
            const C_FLOAT64 * pK = it->value;
            ++it;
            const CCallParameters< C_FLOAT64 > * pSpecies = it->vector;
            ++it;

            CEvaluationNode * pPart = createMassActionPart(pK, pSpecies);

            if (callParameters.size() < 4)
              {
                mpRootNode = pPart;
              }
            else
              {
                mpRootNode = new CEvaluationNodeOperator(CEvaluationNode::S_MINUS, "-");
                mpRootNode->addChild(pPart);

                pK = it->value;
                ++it;
                pSpecies = it->vector;
                ++it;

                pPart = createMassActionPart(pK, pSpecies);

                mpRootNode->addChild(pPart);
              }
          }
      }
      break;

      case CEvaluationTree::MathExpression:
      case CEvaluationTree::Expression:
        // This cannot happen and is only here to satisfy the compiler.
        break;
    }

  compile();
}