Example #1
0
int treeNodeCalcPos(Ihandle* h, int *x, int *y, int *text_x)
{
  int err;
  TtreePtr tree=(TtreePtr)tree_data(h);
  Node node = (Node)tree_root(tree);
  float posy = IupGetFloat(h, IUP_POSY);     
  float dy = IupGetFloat(h, IUP_DY);
  float posx = IupGetFloat(h, IUP_POSX);
  float dx = IupGetFloat(h, IUP_DX);

  CdActivate(tree,err);

  *y = (int)((1.0 + posy/dy)*(YmaxCanvas(tree)-TREE_TOP_MARGIN));

  while(node != tree_selected(tree))
  {
    if( node_visible(node) == YES ) *y -= NODE_Y;

    node = node_next(node);
    if (node == NULL)
      return 0;
  }

  *y -= NODE_Y;
  *x = (int)(TREE_LEFT_MARGIN - (XmaxCanvas(tree)-NODE_X)*posx/dx) + NODE_X * node_depth(node);

  /* if node has a text associated to it... */
  *text_x = 0;
  if(node_name(node))
  {
    /* Calculates its dimensions */
    iupdrvStringSize(tree->self, node_name(node), text_x, NULL);
  }

  return 1;
}
Example #2
0
state_t pback_play_leaf(pback_t *pback, node_t *leaf, int8_t mode)
{
    state_t state;
    
    if (lists.newleaf != NULL)
        info("pback_play_leaf(): lists.newleaf was set. Somewhere, a decoder will die.\n");

    if (node_visible(leaf, TRAV_ALL))
    {
        if ((state = pback_start_strands(pback, leaf, mode)) == OK)
        {
            /* success */
        }
        else
            info("pback_play_leaf(): error in decoder or output. hopefully things should clean themselves up...\n");
    }
    else
    {
        error("pback_play_leaf(): leaf was invisible.\n");
        state = ERR_VIS;
    }

    return state;
}