void draw_tree(BITMAP *bitmap, VECTOR p, VECTOR v, NODE *node, int x, int y, int r, int c)
{
 int inv_c = inverse_color(c);

 if(node != NULL)
  {
   if(node->right != NULL)
    {
     //line(bitmap, x, y, x + 2 * r, y + 2 * r, inv_c);
     draw_tree(bitmap, p, v, node->right, x + 2 * r, y + 2 * r, r, c);
    }

   if(node->left != NULL)
    {
     //line(bitmap, x, y, x - 2 * r, y + 2 * r, inv_c);
     draw_tree(bitmap, p, v, node->left, x - 2 * r, y + 2 * r, r, c);
    }

  if(in_view(p, v, node->a, node->b))
   vector_line(bitmap, node->a, node->b, makecol(255, 255, 255));
  else
   vector_line(bitmap, node->a, node->b, 0);

   textprintf_centre_ex(bitmap, font, node->a.x - 10, node->a.y, makecol(0, 0, 255), -1, "%d", node->val);

   //circlefill(bitmap, x, y, r, c);
   //circle(bitmap, x, y, r, inv_c);
   //textprintf_centre_ex(bitmap, font, x, y - 4, inv_c, -1, "%d", node->val);
  }
}
Beispiel #2
0
main()
{
    
    cpc_SetBorder(3);
    cpc_DisableFirmware();
    cpc_SetMode(2);
    // https://codeforwin.org/2017/12/access-two-dimensional-array-using-pointers-c-programming.html
    inverse_color(&(sprite+2),sprite[0],sprite[1]);
    putsprite(SPR_OR, 0, 0, sprite);
    while (!cpc_AnyKeyPressed()){}   
}