Exemplo n.º 1
0
void LabelCollapsedNodesTreeDrawingListener::afterDrawNode(const DrawNodeEvent& event)
{
  try
  {
    //Pointer-based event (efficient):
    const DrawINodeEvent& eventC = dynamic_cast<const DrawINodeEvent&>(event);
    if (eventC.getINode()->getInfos().isCollapsed())
    {
      GraphicDevice* gd = event.getGraphicDevice();
      Cursor cursor     = event.getCursor();
      size_t size       = TreeTemplateTools::getNumberOfLeaves(*eventC.getINode());
      string text = "";
      if (eventC.getINode()->hasName())
        text += eventC.getINode()->getName() + " ";
      text += "(" + TextTools::toString(size) + " leaves)";
      gd->drawText(cursor.getX(), cursor.getY(), text, cursor.getHPos(), cursor.getVPos(), cursor.getAngle());
    }
  }
  catch(std::bad_cast& e)
  {
    //Id-based event (less-efficient):
    const TreeDrawing* td = event.getTreeDrawing();
    if (td->isNodeCollapsed(event.getNodeId()))
    {
      GraphicDevice* gd = event.getGraphicDevice();
      Cursor cursor     = event.getCursor();
      size_t size = TreeTools::getNumberOfLeaves(*td->getTree(), event.getNodeId());
      string text = "";
      if (td->getTree()->hasNodeName(event.getNodeId()))
        text += td->getTree()->getNodeName(event.getNodeId()) + " ";
      text += "(" + TextTools::toString(size) + " leaves)";
      gd->drawText(cursor.getX(), cursor.getY(), text, cursor.getHPos(), cursor.getVPos(), cursor.getAngle());
    }
  }
}
Exemplo n.º 2
0
void LeafNamesTreeDrawingListener::afterDrawNode(const DrawNodeEvent& event)
{
  try
  {
    //Pointer-based event (efficient):
    const DrawINodeEvent& eventC = dynamic_cast<const DrawINodeEvent&>(event);
    if (eventC.getINode()->isLeaf())
    {
      GraphicDevice* gd = event.getGraphicDevice();
      Cursor cursor     = event.getCursor();
      Font fontBck      = gd->getCurrentFont();
      if (settings_)
        gd->setCurrentFont(settings_->fontLeafNames);
      string name = eventC.getINode()->getName();
      gd->drawText(cursor.getX(), cursor.getY(), name, cursor.getHPos(), cursor.getVPos(), cursor.getAngle());
      gd->setCurrentFont(fontBck);
    }
  }
  catch (bad_cast& e)
  {
    //Id-based event (less-efficient):
    const TreeDrawing* td = event.getTreeDrawing();
    if (td->getTree()->isLeaf(event.getNodeId()))
    {
      GraphicDevice* gd = event.getGraphicDevice();
      Cursor cursor     = event.getCursor();
      Font fontBck      = gd->getCurrentFont();
      if (settings_)
        gd->setCurrentFont(settings_->fontLeafNames);
      string name = td->getTree()->getNodeName(event.getNodeId());
      gd->drawText(cursor.getX(), cursor.getY(), name, cursor.getHPos(), cursor.getVPos(), cursor.getAngle());
      gd->setCurrentFont(fontBck);
    }
  }
}
Exemplo n.º 3
0
void LabelInnerNodesTreeDrawingListener::afterDrawNode(const DrawNodeEvent& event)
{
  try
  {
    //Pointer-based event (efficient):
    const DrawINodeEvent& eventC = dynamic_cast<const DrawINodeEvent&>(event);
    if (!eventC.getINode()->getInfos().isCollapsed())
    {
      GraphicDevice* gd = event.getGraphicDevice();
      Cursor cursor     = event.getCursor();
      if (eventC.getINode()->hasName())
      {
        string name = eventC.getINode()->getName();
        gd->drawText(cursor.getX(), cursor.getY(), name, cursor.getHPos(), cursor.getVPos(), cursor.getAngle());
      }
    }
  }
  catch(std::bad_cast& e)
  {
    //Id-based event (less-efficient):
    const TreeDrawing* td = event.getTreeDrawing();
    if (! td->isNodeCollapsed(event.getNodeId()))
    {
      GraphicDevice* gd = event.getGraphicDevice();
      Cursor cursor     = event.getCursor();
      if (td->getTree()->hasNodeName(event.getNodeId()))
      {
        string name = td->getTree()->getNodeName(event.getNodeId());
        gd->drawText(cursor.getX(), cursor.getY(), name, cursor.getHPos(), cursor.getVPos(), cursor.getAngle());
      }
    }
  }
}
Exemplo n.º 4
0
void NodeClickableAreasTreeDrawingListener::afterDrawNode(const DrawNodeEvent& event)
{
  const TreeDrawing* td = event.getTreeDrawing();
  double r = td->getDisplaySettings().pointArea;
  GraphicDevice* gd = event.getGraphicDevice();
  Cursor cursor     = event.getCursor();
  gd->drawRect(cursor.getX() - r, cursor.getY() - r, 2 * r, 2 * r);
}
Exemplo n.º 5
0
void NodesIdTreeDrawingListener::afterDrawNode(const DrawNodeEvent& event)
{
  GraphicDevice* gd = event.getGraphicDevice();
  Cursor cursor     = event.getCursor();
  Font fontBck      = gd->getCurrentFont();
  if (settings_)
    gd->setCurrentFont(settings_->fontNodesId);
  string name = "#" + TextTools::toString(event.getNodeId());
  gd->drawText(cursor.getX(), cursor.getY(), name, cursor.getHPos(), cursor.getVPos(), cursor.getAngle());
  gd->setCurrentFont(fontBck);
}
Exemplo n.º 6
0
void BootstrapValuesTreeDrawingListener::afterDrawBranch(const DrawBranchEvent& event)
{
  try
  {
    //Pointer-based event (efficient):
    const DrawINodeEvent& eventC = dynamic_cast<const DrawINodeEvent&>(event);
    if (eventC.getINode()->hasBranchProperty(TreeTools::BOOTSTRAP))
    {
      const Clonable* b = eventC.getINode()->getBranchProperty(TreeTools::BOOTSTRAP);
      GraphicDevice* gd = event.getGraphicDevice();
      Cursor cursor     = event.getCursor();
      Font fontBck      = gd->getCurrentFont();
      if (settings_)
        gd->setCurrentFont(settings_->fontBranchLengths);
      gd->drawText(cursor.getX(), cursor.getY(),
          TextTools::toString(dynamic_cast<const Number<double> *>(b)->getValue()),
          cursor.getHPos(), GraphicDevice::TEXT_VERTICAL_CENTER, cursor.getAngle());
      gd->setCurrentFont(fontBck);
    }
  }
  catch (std::bad_cast& e)
  {
    //Id-based event (less-efficient):
    const TreeDrawing* td = event.getTreeDrawing();
    if (td->getTree()->hasBranchProperty(event.getNodeId(), TreeTools::BOOTSTRAP))
    {
      const Clonable* b = td->getTree()->getBranchProperty(event.getNodeId(), TreeTools::BOOTSTRAP);
      GraphicDevice* gd = event.getGraphicDevice();
      Cursor cursor     = event.getCursor();
      Font fontBck      = gd->getCurrentFont();
      if (settings_)
        gd->setCurrentFont(settings_->fontLeafNames);
      gd->drawText(cursor.getX(), cursor.getY(),
          TextTools::toString(dynamic_cast<const Number<double> *>(b)->getValue()),
          cursor.getHPos(), GraphicDevice::TEXT_VERTICAL_CENTER, cursor.getAngle());
      gd->setCurrentFont(fontBck);
    }
  }
}
Exemplo n.º 7
0
void BranchLengthsTreeDrawingListener::afterDrawBranch(const DrawBranchEvent& event)
{
  try
  {
    //Pointer-based event (efficient):
    const DrawINodeEvent& eventC = dynamic_cast<const DrawINodeEvent&>(event);
    if (eventC.getINode()->hasDistanceToFather())
    {
      GraphicDevice* gd = event.getGraphicDevice();
      Cursor cursor     = event.getBranchCursor(0.5);
      Font fontBck      = gd->getCurrentFont();
      if (settings_)
        gd->setCurrentFont(settings_->fontBranchLengths);
      gd->drawText(cursor.getX(), cursor.getY(),
          TextTools::toString(eventC.getINode()->getDistanceToFather()),
          GraphicDevice::TEXT_HORIZONTAL_CENTER, GraphicDevice::TEXT_VERTICAL_BOTTOM, cursor.getAngle());
      gd->setCurrentFont(fontBck);
    }
  }
  catch (std::bad_cast& e)
  {
    //Id-based event (less-efficient):
    const TreeDrawing* td = event.getTreeDrawing();
    if (td->getTree()->hasDistanceToFather(event.getNodeId()))
    {
      GraphicDevice* gd = event.getGraphicDevice();
      Cursor cursor     = event.getBranchCursor(0.5);
      Font fontBck      = gd->getCurrentFont();
      if (settings_)
        gd->setCurrentFont(settings_->fontLeafNames);
      gd->drawText(cursor.getX(), cursor.getY(),
          TextTools::toString(td->getTree()->getDistanceToFather(event.getNodeId())),
          GraphicDevice::TEXT_HORIZONTAL_CENTER, GraphicDevice::TEXT_VERTICAL_BOTTOM, cursor.getAngle());
      gd->setCurrentFont(fontBck);
    }
  }
}
void AntTweakBarSystem::feedInput()
{
	GraphicsWrapper* gfx = m_gfxBackend->getGfxWrapper();
	AntTweakBarWrapper* antTweakBar = AntTweakBarWrapper::getInstance();

	// mouse pos
	Cursor* cursor = m_inputBackend->getCursor();
	pair<int,int> mousePos = gfx->getScreenPixelPosFromNDC( (float)cursor->getX(),
		(float)cursor->getY() );
	int mouseX = mousePos.first;
	int mouseY = mousePos.second;
	antTweakBar->setMousePos(mouseX,mouseY);

	// mouse key
	if (!antTweakBar->shouldOnlyListenToMouseMovement())
	{
		double l_btn = cursor->getPrimaryDelta();
		double r_btn = cursor->getSecondaryDelta();
		if( l_btn<-0.5f || l_btn>0.5f) antTweakBar->setMouseBtn( (int)(l_btn+1.0)/2, TW_MOUSE_LEFT );
		if( r_btn<-0.5f || r_btn>0.5f) antTweakBar->setMouseBtn( (int)(r_btn+1.0)/2, TW_MOUSE_RIGHT );

		// keyboard	A-Z
		Control* kb_control=NULL;
		for ( int letterIdx=InputHelper::KeyboardKeys_A; letterIdx<=InputHelper::KeyboardKeys_Z; letterIdx++ )
		{
			kb_control = m_inputBackend->getControlByEnum( (InputHelper::KeyboardKeys)letterIdx );
			if ( kb_control && kb_control->getDelta() > 0.5f )
			{
				antTweakBar->setKeyPressed(letterIdx+'A',0);
			}
		}

		// keyboard	0-9
		kb_control=NULL;
		for ( int keyNumIdx=InputHelper::KeyboardKeys_0; keyNumIdx<=InputHelper::KeyboardKeys_9; keyNumIdx++ )
		{
			kb_control = m_inputBackend->getControlByEnum( (InputHelper::KeyboardKeys)keyNumIdx );
			if ( kb_control && kb_control->getDelta() > 0.5f )
			{
				antTweakBar->setKeyPressed( keyNumIdx-(int)InputHelper::KeyboardKeys_0+'0', 0 );
			}
		}

		// keyboard	numpad 0-9
		kb_control=NULL;
		for (int numPadIdx=InputHelper::KeyboardKeys_NUMPAD_0; numPadIdx<=InputHelper::KeyboardKeys_NUMPAD_9; numPadIdx++)
		{
			kb_control = m_inputBackend->getControlByEnum( (InputHelper::KeyboardKeys)numPadIdx );
			if ( kb_control && kb_control->getDelta() > 0.5f )
			{
				antTweakBar->setKeyPressed( numPadIdx-(int)InputHelper::KeyboardKeys_NUMPAD_0+'0', 0 );
			}
		}

		// space
		kb_control = m_inputBackend->getControlByEnum( InputHelper::KeyboardKeys_SPACE );
		if ( kb_control && kb_control->getDelta() > 0.5f )
		{
			antTweakBar->setKeyPressed( TW_KEY_SPACE, 0 ); // Space in ASCII = 32
		}

		// backspace
		kb_control = m_inputBackend->getControlByEnum( InputHelper::KeyboardKeys_BACKSPACE );
		if ( kb_control && kb_control->getDelta() > 0.5f )
		{
			antTweakBar->setKeyPressed( TW_KEY_BACKSPACE, 0 ); // Backspace in ASCII = 8
		}

		// return
		kb_control = m_inputBackend->getControlByEnum( InputHelper::KeyboardKeys_RETURN );
		if ( kb_control && kb_control->getDelta() > 0.5f )
		{
			antTweakBar->setKeyPressed( TW_KEY_RETURN, 0 ); // Return in ASCII = 13
		}

		// F4
		kb_control = m_inputBackend->getControlByEnum( InputHelper::KeyboardKeys_F4);
		if ( kb_control && kb_control->getDelta() > 0.5f )
		{
			antTweakBar->setKeyPressed( TW_KEY_F4, 0 );
		}
	}
}