Example #1
0
CNode CSelection::nodeAt(size_t i)
{
	if (i >= mNodes.size())
	{
		return CNode();
	}

	return CNode(mNodes[i]);
}
Example #2
0
CNode CSelection::nodeAt(unsigned int i)
{
	if (i >= mNodes.size())
	{
		return CNode();
	}

	return CNode(mNodes[i]);
}
Example #3
0
CNode CNode::childAt(size_t i)
{
	if (mpNode->type != GUMBO_NODE_ELEMENT || i >= mpNode->v.element.children.length)
	{
		return CNode();
	}

	return CNode((GumboNode*) mpNode->v.element.children.data[i]);
}
Example #4
0
	void endRep()
	{
		// add 'tmp' here.
		nodes.push_back(CNode());
		CNode *node = &nodes.back();
		node->value = 0;	// not used
		assert(!tmp.empty());
		for(std::list<int>::iterator i = tmp.begin(); i != tmp.end(); ++i)
		{
			nodes.push_back(CNode());
			nodes.back().value = *i;
			node->children.push_back(&nodes.back());
		}
		root->children.push_back(node);
		
		tmp.clear();
		inRep = false;
	}
Example #5
0
	// next alternative of the production.
	void reset()
	{
		if(root != NULL)
			update();
		inRep = false;
		root = NULL;
		nodes.clear();
		nodes.push_back(CNode());
		root = &nodes.back();
	}
Example #6
0
	void add(int value)
	{
		if(inRep)
			tmp.push_back(value);
		else
		{
			// add 'value' here.
			nodes.push_back(CNode());
			nodes.back().value = value;
			root->children.push_back(&nodes.back());
		}
	}
Example #7
0
//---------------------------------------------------------------------------
//	@function:
//		CTreeMapTest::Pnd
//
//	@doc:
//		Constructor function for result tree
//
//---------------------------------------------------------------------------
CTreeMapTest::CNode*
CTreeMapTest::Pnd
	(
	IMemoryPool *pmp,
	ULONG *pul,
	DrgPnd *pdrgpnd,
	BOOL *fTestTrue
	)
{
	// The test passes 'true' to PrUnrank and the rehydrate function expects to find it here.
	GPOS_ASSERT(NULL != fTestTrue);
	GPOS_ASSERT(*fTestTrue && "Flag is expected to be true");
	*fTestTrue = true;
	return GPOS_NEW(pmp) CNode(pmp, pul, pdrgpnd);
}
Example #8
0
//////////////////////////////////////////////////////////////////////////////
//
//	-	Sets up lights for the scene.
// -	Loads textures.
//	-	Allocates OpenGL quadric for the "node" spheres.
//	-	Originally I was going to read points from a text file, but with the
//		"Coma 2" party less than 2 weeks away, I opted to use this brute force
//		way of entering in the points.  Yes, I know it's hacky.  I should have
//		at least written a macro.
//
//	RETURNS: true,		On success.
//				false,	On failure.
//
//	THROWS:	char *
//
//////////////////////////////////////////////////////////////////////////////
bool CComaLogo::init()
{
	// Setup initial lights and positions
	m_ambientLight[0] = 0.2f;
	m_ambientLight[1] = 0.2f;
	m_ambientLight[2] = 0.2f;
	m_ambientLight[3] = 1.0f;

	m_diffuseLight[0] = 0.7f;
	m_diffuseLight[1] = 0.7f;
	m_diffuseLight[2] = 0.7f;
	m_diffuseLight[3] = 1.0f;
	
	m_lightPos[0] = fSHADOW_RANGE * 8;
	m_lightPos[1] = 60.0f;
	m_lightPos[2] = 10.0f;
	m_lightPos[3] = 1.0f;
	

	// Format: x, y, connecting nodes list...
	// Good luck, I did this on graph paper.

	// "O"
	// [[1 - 5]]
	m_vNodes.push_back(CNode(0,0,2,3));
	m_vNodes.push_back(CNode(0,1,5));
	m_vNodes.push_back(CNode(-1,1,2,4,5));
	m_vNodes.push_back(CNode(-2,2,6,14));
	m_vNodes.push_back(CNode(0,2,6,7));
	// [[6 - 10]]
	m_vNodes.push_back(CNode(-1,2,3));
	m_vNodes.push_back(CNode(1,2,8,19));
	m_vNodes.push_back(CNode(1,3,5,9));
	m_vNodes.push_back(CNode(2,4,10));
	m_vNodes.push_back(CNode(3,3,11,12,13));
	// [[11 - 15]]
	m_vNodes.push_back(CNode(2,3,8,9,12));
	m_vNodes.push_back(CNode(2,2,7,8,19));
	m_vNodes.push_back(CNode(4,4,28,61));	// to "M"
	m_vNodes.push_back(CNode(-3,3,15));
	m_vNodes.push_back(CNode(-4,4,16,37));	// to "C"
	// [[16 - 20]]
	m_vNodes.push_back(CNode(-3,5,17));
	m_vNodes.push_back(CNode(-2,6,18,21));
	m_vNodes.push_back(CNode(-2,5,16,20));
	m_vNodes.push_back(CNode(1,1,1,2,5));
	m_vNodes.push_back(CNode(-1,5,17,21,22));
	// [[21 - 25]]
	m_vNodes.push_back(CNode(-1,6,26,27));
	m_vNodes.push_back(CNode(-2,4,14,24,23,16,18));
	m_vNodes.push_back(CNode(-3,4,14,15,16));
	m_vNodes.push_back(CNode(-2,3,4,14,25));
	m_vNodes.push_back(CNode(-1,3,4,5,6,22));
	// [[26 - 30]]
	m_vNodes.push_back(CNode(-1,7,17));
	m_vNodes.push_back(CNode(0,6,20,26,33));
	m_vNodes.push_back(CNode(3,5,9,29,30));
	m_vNodes.push_back(CNode(3,4,9,10,13));
	m_vNodes.push_back(CNode(2,5,9,31));
	// [[31 - 35]]
	m_vNodes.push_back(CNode(1,5,9,27,33,32));
	m_vNodes.push_back(CNode(2,6,28,30,33));
	m_vNodes.push_back(CNode(1,6,34));
	m_vNodes.push_back(CNode(1,7,27,32,35,36));
	m_vNodes.push_back(CNode(0,8,26,36));
	// [[36 - 40]]
	m_vNodes.push_back(CNode(0,7,26,27));

	// "C"
	m_vNodes.push_back(CNode(LINK, LINK, 38, 59));
	m_vNodes.push_back(CNode(-6,6,39,42,47));
	m_vNodes.push_back(CNode(-5,7,40,41));
	m_vNodes.push_back(CNode(-6,7,38,41,42));

	// [[41 - 45]]
	m_vNodes.push_back(CNode(-6,8,42));
	m_vNodes.push_back(CNode(-7,7,43,44));
	m_vNodes.push_back(CNode(-7,6,38,44));
	m_vNodes.push_back(CNode(-8,6,45,46,47));
	m_vNodes.push_back(CNode(-9,5,46));

	// [[46 - 50]]
	m_vNodes.push_back(CNode(-8,5,50));
	m_vNodes.push_back(CNode(-7,5,46,43));
	m_vNodes.push_back(CNode(-10,4,45));
	m_vNodes.push_back(CNode(-9,4,45,48));
	m_vNodes.push_back(CNode(-8,4,45,47,49,51,52,53));

	// [[51 - 55]]
	m_vNodes.push_back(CNode(-9,3,48,49,52));
	m_vNodes.push_back(CNode(-8,3));
	m_vNodes.push_back(CNode(-7,3,52));
	m_vNodes.push_back(CNode(-8,2,51,52,53));
	m_vNodes.push_back(CNode(-7,2,53,54,56));

	// [[56 - 60]]
	m_vNodes.push_back(CNode(-6,2,53,57,58,59));
	m_vNodes.push_back(CNode(-7,1,54,55));
	m_vNodes.push_back(CNode(-6,1,57));
	m_vNodes.push_back(CNode(-5,1,58,60));
	m_vNodes.push_back(CNode(-6,0,57,58));

	// "M"
	// [[61 - 65]]
	m_vNodes.push_back(CNode(LINK,LINK,62));
	m_vNodes.push_back(CNode(6,6,63,81));
	m_vNodes.push_back(CNode(7,5,64,73));
	m_vNodes.push_back(CNode(6,4,65));
	m_vNodes.push_back(CNode(7,3,66,71,74));
	
	// [[66 - 70]]
	m_vNodes.push_back(CNode(6,2,67));
	m_vNodes.push_back(CNode(7,1,68,70,72,75));
	m_vNodes.push_back(CNode(6,0,69));
	m_vNodes.push_back(CNode(7,0,67));
	m_vNodes.push_back(CNode(8,0,69,76));

	// [[71 - 75]]
	m_vNodes.push_back(CNode(8,4,63,78,80));
	m_vNodes.push_back(CNode(8,2,65,77,79));
	m_vNodes.push_back(CNode(6,5,62,64));
	m_vNodes.push_back(CNode(6,3,64,66));
	m_vNodes.push_back(CNode(6,1,66,68));

	// [[76 - 80]]
	m_vNodes.push_back(CNode(8,1,67,72));
	m_vNodes.push_back(CNode(8,3,65,71));
	m_vNodes.push_back(CNode(8,5,63,83));
	m_vNodes.push_back(CNode(7,2,65,66,67));
	m_vNodes.push_back(CNode(7,4,63,64,65));

	// [[81 - 85]]
	m_vNodes.push_back(CNode(7,7,85,121));			// to "A"
	m_vNodes.push_back(CNode(7,6,62,63,81));
	m_vNodes.push_back(CNode(8,6,63,81,82,84));
	m_vNodes.push_back(CNode(8,7,81,85,86));
	m_vNodes.push_back(CNode(8,8,86));

	// [[86 - 90]]
	m_vNodes.push_back(CNode(9,7,83,91));//m_vNodes.push_back(CNode(9,7,83,92));
	m_vNodes.push_back(CNode(9,6,83,86,88));
	m_vNodes.push_back(CNode(9,5,83,89));
	m_vNodes.push_back(CNode(10,4,90,96));
	m_vNodes.push_back(CNode(10,5,88,91));

	// [[91 - 95]]	// Ack, two nodes not really needed for a good looking M
	m_vNodes.push_back(CNode(10,6,86,87,88,94));
	m_vNodes.push_back(CNode(LINK,LINK));	//	m_vNodes.push_back(CNode(10,7,93,91));
	m_vNodes.push_back(CNode(LINK,LINK));	//	m_vNodes.push_back(CNode(10,8,86,94));
	m_vNodes.push_back(CNode(11,7,92,97,99));
	m_vNodes.push_back(CNode(11,6,91,94,97));

	// [[96 - 100]]
	m_vNodes.push_back(CNode(11,5,90,91,95));
	m_vNodes.push_back(CNode(12,6,96,104));
	m_vNodes.push_back(CNode(12,7,94,97,100));
	m_vNodes.push_back(CNode(12,8,98));
	m_vNodes.push_back(CNode(13,7,97,99,102));
	
	// [[101 - 105]]
	m_vNodes.push_back(CNode(13,6,97,100));
	m_vNodes.push_back(CNode(14,6,101,103));
	m_vNodes.push_back(CNode(14,5,104,108));
	m_vNodes.push_back(CNode(13,5,101,102,106));
	m_vNodes.push_back(CNode(12,5,97,104));

	// [[106 - 110]]
	m_vNodes.push_back(CNode(12,4,105,111));
	m_vNodes.push_back(CNode(13,4,104,106));
	m_vNodes.push_back(CNode(14,4,104,107,109));
	m_vNodes.push_back(CNode(14,3,114));
	m_vNodes.push_back(CNode(13,3,106,107,108,109,111));

	// [[111 - 115]]
	m_vNodes.push_back(CNode(12,3,112));
	m_vNodes.push_back(CNode(12,2,110,116,117));
	m_vNodes.push_back(CNode(13,2,110,112,114));
	m_vNodes.push_back(CNode(14,2,110));
	m_vNodes.push_back(CNode(14,1,114,120));
	
	// [[116 - 120]]
	m_vNodes.push_back(CNode(13,1,113,114,115));
	m_vNodes.push_back(CNode(12,1,116,118));
	m_vNodes.push_back(CNode(12,0,116,119));
	m_vNodes.push_back(CNode(13,0,116,120));
	m_vNodes.push_back(CNode(14,0,116));

	// "A"
	// [[121 - 125]]
	m_vNodes.push_back(CNode(LINK,LINK,122));
	m_vNodes.push_back(CNode(16,1,123,127));
	m_vNodes.push_back(CNode(17,0,125,126));
	m_vNodes.push_back(CNode(19,4,153,154));
	m_vNodes.push_back(CNode(18,1));

	// [[126 - 130]]
	m_vNodes.push_back(CNode(17,1,122,125));
	m_vNodes.push_back(CNode(16,2,132));
	m_vNodes.push_back(CNode(17,2,122,125,126,127,130,131,132));
	m_vNodes.push_back(CNode(18,2,125,128));
	m_vNodes.push_back(CNode(18,3,124,129,135));

	// [[131 - 135]]
	m_vNodes.push_back(CNode(17,3,130,132,134));
	m_vNodes.push_back(CNode(16,3,133));
	m_vNodes.push_back(CNode(16,4,134,138));
	m_vNodes.push_back(CNode(17,4,130,132,135,136,137,138));
	m_vNodes.push_back(CNode(18,4,124));

	// [[136 - 140]]
	m_vNodes.push_back(CNode(18,5,135,139));
	m_vNodes.push_back(CNode(17,5,136));
	m_vNodes.push_back(CNode(16,5,137));
	m_vNodes.push_back(CNode(17,6,137,138,141));
	m_vNodes.push_back(CNode(18,6,136,139,141));

	// [[141 - 145]]
	m_vNodes.push_back(CNode(18,7,142));
	m_vNodes.push_back(CNode(19,8,143,145));
	m_vNodes.push_back(CNode(19,7,141,145));
	m_vNodes.push_back(CNode(19,6,136,140,141,143));
	m_vNodes.push_back(CNode(20,7,144,147));

	// [[146 - 150]]
	m_vNodes.push_back(CNode(20,6,144,145,148));
	m_vNodes.push_back(CNode(21,6,146,149));
	m_vNodes.push_back(CNode(20,5,144,147));
	m_vNodes.push_back(CNode(21,5,148,152));
	m_vNodes.push_back(CNode(22,5,147,149,152));

	// [[151 - 155]]
	m_vNodes.push_back(CNode(22,4,150,156));
	m_vNodes.push_back(CNode(21,4,148,151,154,156));
	m_vNodes.push_back(CNode(20,4,148,152,154));
	m_vNodes.push_back(CNode(20,3,158,159));
	m_vNodes.push_back(CNode(21,3,152,154,156));

	// [[156 - 160]]
	m_vNodes.push_back(CNode(22,3,157));
	m_vNodes.push_back(CNode(22,2,162));
	m_vNodes.push_back(CNode(21,2,155,156,157,159,161));
	m_vNodes.push_back(CNode(20,2,160));
	m_vNodes.push_back(CNode(20,1,158,163));

	// [[161 - 165]]
	m_vNodes.push_back(CNode(21,1,160));
	m_vNodes.push_back(CNode(22,1,158,161,163));
	m_vNodes.push_back(CNode(21,0,161));

	
	// Now that node information is filled, translate the target node values
	// into x,y coordinates.
	
	// Loop through nodes.  (Here is where an iterator comes in handy.)
	for (	itrNodeType itrNode = m_vNodes.begin();
			itrNode < m_vNodes.end();
			itrNode++)
	{

		// Loop through connections for the current node.
		for ( itrConnectType itrConnect = 
					itrNode->m_vConnect.begin();
				itrConnect < itrNode->m_vConnect.end();
				itrConnect++)
		{
			// Set the connection coordinates.
			itrConnect->x = m_vNodes[itrConnect->m_nNode - 1].x;
			itrConnect->y = m_vNodes[itrConnect->m_nNode - 1].y;		
		}
	
	}

	
	// Create a new quadric and set our pointer to it
	m_pQuadSphere = gluNewQuadric();
	if (m_pQuadSphere == 0)
		throw "CComaLogo.init()\r\nNot enough memory to allocate m_pQuadSphere";

	// Set options to how quadric behaves in OpenGL environment
	gluQuadricDrawStyle(	m_pQuadSphere,		GLU_FILL);
	gluQuadricNormals(	m_pQuadSphere,		GLU_SMOOTH);
	gluQuadricOrientation(m_pQuadSphere,	GLU_OUTSIDE);
	gluQuadricTexture(	m_pQuadSphere,		GL_FALSE);
	
	// Load textures	
	
	md::Cimage oImage;	// Create a "media duke" image object
	
	// Load title image as an OpenGL texture.
	if (!m_pEnvInfo->oMedia.read("nodelogo.png", oImage))
		throw "CComaLogo.init()\r\nCould not load nodelogo.png";
	m_punTitle = new unsigned int;
	*m_punTitle = oImage.makeGLTexture(m_pEnvInfo->glWantMipmap,m_pEnvInfo->glWantLinear);
   if (*m_punTitle==-1)
      throw "CComaLogo.init()\r\nUnable to create texture for nodelogo.png";
	oImage.destroy();

	// Load background image as an OpenGL texture.
	if (!m_pEnvInfo->oMedia.read("coma2bg.png", oImage))
		throw "CComaLogo.init()\r\nCould not load coma2bg.png";
	m_punBGTexture = new unsigned int;
	*m_punBGTexture = oImage.makeGLTexture(m_pEnvInfo->glWantMipmap,m_pEnvInfo->glWantLinear);
   if (*m_punBGTexture==-1)
      throw "CComaLogo.init()\r\nUnable to create texture for coma2bg.png";
	oImage.destroy();

	// Load shadow image as an OpenGL texture.
	if (!m_pEnvInfo->oMedia.read("nodeshadow.png", oImage))
		throw "CComaLogo.init()\r\nCould not load nodeshadow.png";
	m_punBGShadow = new unsigned int;
	*m_punBGShadow = oImage.makeGLTexture(m_pEnvInfo->glWantMipmap,m_pEnvInfo->glWantLinear);
   if (*m_punBGShadow==-1)
      throw "CComaLogo.init()\r\nUnable to create texture for nodeshadow.png";
	oImage.destroy();

	return true;
}
Example #9
0
CNode CNode::parent()
{
	return CNode(mpNode->parent);
}
Example #10
0
const CNode CConf::GetRootNode() const throw()
{
	return CNode((CNodeImpl*)(m_pConfImpl->GetRootNode()));
}