Esempio n. 1
0
static int	test_arg(t_env *e, char **av)
{
	int		i;

	i = -1;
	if (ft_strequ(av[0], "-p"))
		i = update_port(e, av);
	else if (ft_strequ(av[0], "-x"))
		i = update_width(e, av);
	else if (ft_strequ(av[0], "-y"))
		i = update_height(e, av);
	else if (ft_strequ(av[0], "-n"))
		i = update_teams(e, av);
	else if (ft_strequ(av[0], "-c"))
		i = update_nb(e, av);
	else if (ft_strequ(av[0], "-t"))
		i = update_time(e, av);
	else
		usage();
	return (i);
}
Esempio n. 2
0
static int update_list(int i)
{
    struct COOR *new_ptr, *new_ptr1, *new_ptr2, *new_ptr3;
    double right, left;

    switch (i) {
    case 0:
	/* Vertical line - Just update width information */
	/* update_width(a_list + v_list[col]->left,0); */
	tl_area = v_list[col]->left;
	break;
    case 1:
	/* Bottom right corner - Point in middle of new line */
	/* (growing) <- ptr2 -><- ptr1 -><- ptr3 -> (growing) */
	/*            (?, col) (row, col) (row, ?) */
	new_ptr1 = get_ptr();	/* corner point */
	new_ptr2 = get_ptr();	/* downward-growing point */
	new_ptr3 = get_ptr();	/* right-growing point */
	new_ptr1->bptr = new_ptr2;
	new_ptr1->fptr = new_ptr3;
	new_ptr2->bptr = new_ptr3->bptr = new_ptr1;

	/* if(G_is_c_null_value(&tl_area)) {
	   new_ptr1->left = new_ptr2->right = new_ptr3->left = 0;
	   assign_area(tl,1);
	   } else {
	 */
	new_ptr1->left = new_ptr2->right = new_ptr3->left = tl_area;
	new_ptr1->right = new_ptr2->left = new_ptr3->right = area_num;

	assign_area(br, 1);
	update_width(a_list_old, 1);
	v_list[col] = new_ptr2;
	h_ptr = new_ptr3;
	break;
    case 3:
	/* Bottom left corner - Add point to line already under construction */
	/* (fixed) -><- original h_ptr -><- new_ptr -> (growing) */
	/*                (row, col)       (?, col) */
	tl_area = h_ptr->left;
	new_ptr = get_ptr();	/* downward-growing point */
	h_ptr->col = col;
	h_ptr->fptr = new_ptr;
	new_ptr->bptr = h_ptr;
	new_ptr->left = h_ptr->left;
	new_ptr->right = h_ptr->right;

	/* update_width(a_list + new_ptr->left,3); */
	v_list[col] = new_ptr;
	h_ptr = NULPTR;
	break;
    case 4:
	/* Top left corner - Join two lines already under construction */
	/* (fixed) -><- original v_list -><- (fixed) */
	/*                 (row, col) */
	tl_area = v_list[col]->left;
	equiv_areas(h_ptr->left, v_list[col]->right);
	equiv_areas(h_ptr->right, v_list[col]->left);
	v_list[col]->row = row;	/* keep downward-growing point */
	v_list[col]->fptr = h_ptr->bptr;	/*   and join it to predecessor */
	h_ptr->bptr->fptr = v_list[col];	/*   of right-growing point */
	G_free(h_ptr);		/* right-growing point disappears */
	h_ptr = NULPTR;		/* turn loose of pointers */
	write_boundary(v_list[col]);	/* try to write line */
	v_list[col] = NULPTR;	/* turn loose of pointers */
	break;
    case 5:
	/* Top right corner - Add point to line already under construction */
	/* (fixed) -><- original v_list -><- new_ptr -> (growing) */
	/*                 (row, col)        (row, ?) */
	new_ptr = get_ptr();	/* right-growing point */
	v_list[col]->row = row;
	new_ptr->bptr = v_list[col];
	new_ptr->left = v_list[col]->left;
	new_ptr->right = v_list[col]->right;
	v_list[col]->fptr = new_ptr;
	h_ptr = new_ptr;
	v_list[col] = NULPTR;
	break;
    case 6:
	/* T upward - End one vertical and one horizontal line */
	/*            Start horizontal line */
	v_list[col]->node = h_ptr->node = 1;
	left = v_list[col]->left;
	right = h_ptr->right;
	end_vline();
	end_hline();
	start_hline();
	h_ptr->bptr->node = 1;	/* where we came from is a node */
	h_ptr->left = h_ptr->bptr->left = left;
	h_ptr->right = h_ptr->bptr->right = right;
	break;
    case 7:
	/* T downward - End horizontal line */
	/*              Start one vertical and one horizontal line */
	h_ptr->node = 1;
	right = h_ptr->right;
	left = h_ptr->left;
	end_hline();
	start_hline();
	start_vline();
	h_ptr->bptr->node = v_list[col]->bptr->node = 1;
	h_ptr->left = h_ptr->bptr->left = left;
	h_ptr->right = h_ptr->bptr->right = v_list[col]->left =
	    v_list[col]->bptr->left = area_num;
	assign_area(br, 7);
	update_width(a_list_old, 7);
	v_list[col]->right = v_list[col]->bptr->right = right;
	break;
    case 8:
	/* T left - End one vertical and one horizontal line */
	/*          Start one vertical line */
	tl_area = v_list[col]->left;
	h_ptr->node = v_list[col]->node = 1;
	right = h_ptr->right;
	left = v_list[col]->left;
	end_vline();
	end_hline();
	start_vline();
	v_list[col]->bptr->node = 1;	/* where we came from is a node */
	v_list[col]->left = v_list[col]->bptr->left = left;
	v_list[col]->right = v_list[col]->bptr->right = right;
	/* update_width(a_list + v_list[col]->left,8); */
	break;
    case 9:
	/* T right - End one vertical line */
	/*           Start one vertical and one horizontal line */
	v_list[col]->node = 1;
	right = v_list[col]->right;
	left = v_list[col]->left;
	end_vline();
	start_vline();
	start_hline();
	v_list[col]->bptr->node = h_ptr->bptr->node = 1;
	h_ptr->left = h_ptr->bptr->left = left;
	h_ptr->right = h_ptr->bptr->right = v_list[col]->left =
	    v_list[col]->bptr->left = area_num;
	assign_area(br, 9);
	update_width(a_list_old, 9);
	v_list[col]->right = v_list[col]->bptr->right = right;
	break;
    case 10:
	/* Cross - End one vertical and one horizontal line */
	/*         Start one vertical and one horizontal line */
	v_list[col]->node = h_ptr->node = 1;
	left = v_list[col]->left;
	right = h_ptr->right;
	end_vline();
	end_hline();
	start_vline();
	start_hline();
	v_list[col]->bptr->node = h_ptr->bptr->node = 1;
	h_ptr->left = h_ptr->bptr->left = left;
	v_list[col]->left = v_list[col]->bptr->left = h_ptr->right =
	    h_ptr->bptr->right = area_num;
	assign_area(br, 10);
	update_width(a_list_old, 10);
	v_list[col]->right = v_list[col]->bptr->right = right;
	break;
    }				/* switch */

    return 0;
}				/* update_list */