- if ( ! is_connected ) {
- switch (imgActual) {
- case 0:
- if ( (_a <= x+10)&&(_a > x) && (_b <=y+22)&&(_b>=y+10) ) // arriba - izquierda h
- return is_other_connection_area (get_position_x()+get_image()->get_width()-16, +get_position_y()+get_image()->get_height() + 5, &_item);
- if ( (_a <= x+image->get_width()-10)&&(_a>=x+image->get_width()-22)&&(_b<=y+image->get_height()-1)&&(_b>=y+image->get_height()-10) )//abajo-derecha v
- return is_other_connection_area( get_position_x()-5, get_position_y()+16,& _item);
- break;
- case 1:
- if ( (_a <= x+image->get_width()-10)&&(_a >= x+image->get_width()-22) && (_b <=y+10)&&(_b > y) ) //arriba-derecha v
- return is_other_connection_area( get_position_x()-5, get_position_y()+get_image()->get_height()-16, &_item);
- if ( (_a <= x+10)&&(_a > x)&&(_b<=y+image->get_height()-10)&&(_b>=y+image->get_height()-22) ) // abajo-izquierda h
- return is_other_connection_area( get_position_x()+get_image()->get_width() - 16, get_position_y() -5, &_item);
- break;
- case 2:
- if ( (_a <= x+22)&&(_a >= x+10) && (_b <=y+10)&&(_b > y) ) //arriba-izquierda v
- return is_other_connection_area( get_position_x()+get_image()->get_width()+5, get_position_y()+get_image()->get_height() - 16, &_item);
- if ( (_a <= x+image->get_width()-1)&&(_a>=x+image->get_width()-10)&&(_b<=y+image->get_height()-10)&&(_b>=y+image->get_height()-22) ) // abajo-derecha h
- return is_other_connection_area( get_position_x() + 16, get_position_y() - 5,& _item);
- break;
- case 3:
- if ( (_a <= x+image->get_width()-1)&&(_a >= x+image->get_width()-10) && (_b <=y+22)&&(_b>=y+10) ) //arriba-derecha h
- return is_other_connection_area( get_position_x() + 16, get_position_y()+get_image()->get_height() + 5, &_item);
- if ( (_a <= x+22)&&(_a>=x+10)&&(_b<=y+image->get_height()-1)&&(_b>=y+image->get_height()-10) ) // abajo-izquierda v
- return is_other_connection_area( get_position_x()+get_image()->get_width()+5, get_position_y() +16,& _item);
- }
- } else {
- switch (imgActual) {
- case 0:
- if ( (_a <= x+10)&&(_a > x) && (_b <=y+22)&&(_b>=y+10) ) // arriba - izquierda h
- return connect_vec[0].type;
- if ( (_a <= x+image->get_width()-10)&&(_a>=x+image->get_width()-22)&&(_b<=y+image->get_height()-1)&&(_b>=y+image->get_height()-10) )//abajo-derecha v
- return connect_vec[1].type;
- break;
- case 1:
- if ( (_a <= x+image->get_width()-10)&&(_a >= x+image->get_width()-22) && (_b <=y+10)&&(_b > y) ) //arriba-derecha v
- return connect_vec[0].type;
- if ( (_a <= x+10)&&(_a > x)&&(_b<=y+image->get_height()-10)&&(_b>=y+image->get_height()-22) ) // abajo-izquierda h
- return connect_vec[1].type;
- break;
- case 2:
- if ( (_a <= x+22)&&(_a >= x+10) && (_b <=y+10)&&(_b > y) ) //arriba-izquierda v
- return connect_vec[1].type;
- if ( (_a <= x+image->get_width()-1)&&(_a>=x+image->get_width()-10)&&(_b<=y+image->get_height()-10)&&(_b>=y+image->get_height()-22) ) // abajo-derecha h
- return connect_vec[0].type;
- break;
- case 3:
- if ( (_a <= x+image->get_width()-1)&&(_a >= x+image->get_width()-10) && (_b <=y+22)&&(_b>=y+10) ) //arriba-derecha h
- return connect_vec[1].type;
- if ( (_a <= x+22)&&(_a>=x+10)&&(_b<=y+image->get_height()-1)&&(_b>=y+image->get_height()-10) ) // abajo-izquierda v
- return connect_vec[0].type;
- }
+ switch (imgActual) {
+ case 0:
+ if ( (_a <= x+10)&&(_a > x) && (_b <=y+22)&&(_b>=y+10) ) {// arriba - izquierda h
+ if ( is_connected ) return connect_vec[0].type;
+ connect_vec[1].type = is_other_connection_area (get_position_x()+get_image()->get_width()-16, +get_position_y()+get_image()->get_height() + 5, &_item);
+ switch ( connect_vec[1].type ) {
+ case IN:
+ connect_vec[0].type = IN;
+ connect_vec[1].type = OUT;
+ break;
+ case OUT:
+ connect_vec[0].type = OUT;
+ connect_vec[1].type = IN;
+ break;
+ case UNDEF:
+ return UNDEF;
+ }
+ is_connected = true;
+ return connect_vec[0].type;
+ }
+ if ( (_a <= x+image->get_width()-10)&&(_a>=x+image->get_width()-22)&&(_b<=y+image->get_height()-1)&&(_b>=y+image->get_height()-10) ) {//abajo-derecha v
+ if ( is_connected ) return connect_vec[1].type;
+ connect_vec[0].type = is_other_connection_area( get_position_x()-5, get_position_y()+16,& _item);
+ switch ( connect_vec[0].type ) {
+ case IN:
+ connect_vec[0].type = OUT;
+ connect_vec[1].type = IN;
+ break;
+ case OUT:
+ connect_vec[0].type = IN;
+ connect_vec[1].type = OUT;
+ break;
+ case UNDEF:
+ return UNDEF;
+ }
+ is_connected = true;
+ return connect_vec[1].type;
+ }
+ break;
+ case 1:
+ if ( (_a <= x+image->get_width()-10)&&(_a >= x+image->get_width()-22) && (_b <=y+10)&&(_b > y) ) {//arriba-derecha v
+ if (is_connected) return connect_vec[0].type;
+ connect_vec[1].type = is_other_connection_area( get_position_x()-5, get_position_y()+get_image()->get_height()-16, &_item);
+ switch ( connect_vec[1].type ) {
+ case IN:
+ connect_vec[0].type = IN;
+ connect_vec[1].type = OUT;
+ break;
+ case OUT:
+ connect_vec[0].type = OUT;
+ connect_vec[1].type = IN;
+ break;
+ case UNDEF:
+ return UNDEF;
+ }
+ is_connected = true;
+ return connect_vec[0].type;
+ }
+
+ if ( (_a <= x+10)&&(_a > x)&&(_b<=y+image->get_height()-10)&&(_b>=y+image->get_height()-22) ) {// abajo-izquierda h
+ if ( is_connected ) return connect_vec[1].type;
+ connect_vec[0].type = is_other_connection_area( get_position_x()+get_image()->get_width() - 16, get_position_y() -5, &_item);
+ switch ( connect_vec[0].type ) {
+ case IN:
+ connect_vec[0].type = OUT;
+ connect_vec[1].type = IN;
+ break;
+ case OUT:
+ connect_vec[0].type = IN;
+ connect_vec[1].type = OUT;
+ break;
+ case UNDEF:
+ return UNDEF;
+ }
+ is_connected = true;
+ return connect_vec[1].type;
+ }
+ break;
+ case 2:
+ if ( (_a <= x+22)&&(_a >= x+10) && (_b <=y+10)&&(_b > y) ) {//arriba-izquierda v
+ if ( is_connected ) return connect_vec[1].type;
+ connect_vec[0].type = is_other_connection_area( get_position_x()+get_image()->get_width()+5, get_position_y()+get_image()->get_height() - 16, &_item);
+ switch ( connect_vec[0].type ) {
+ case IN:
+ connect_vec[0].type = OUT;
+ connect_vec[1].type = IN;
+ break;
+ case OUT:
+ connect_vec[0].type = IN;
+ connect_vec[1].type = OUT;
+ break;
+ case UNDEF:
+ return UNDEF;
+ }
+ is_connected = true;
+ return connect_vec[1].type;
+ }
+
+ if ( (_a <= x+image->get_width()-1)&&(_a>=x+image->get_width()-10)&&(_b<=y+image->get_height()-10)&&(_b>=y+image->get_height()-22) ) {// abajo-derecha h
+ if (is_connected ) return connect_vec[0].type;
+ connect_vec[1].type = is_other_connection_area( get_position_x() + 16, get_position_y() - 5,& _item);
+ switch ( connect_vec[1].type ) {
+ case IN:
+ connect_vec[0].type = IN;
+ connect_vec[1].type = OUT;
+ break;
+ case OUT:
+ connect_vec[0].type = OUT;
+ connect_vec[1].type = IN;
+ break;
+ case UNDEF:
+ return UNDEF;
+ }
+ is_connected = true;
+ return connect_vec[0].type;
+ }
+ break;
+ case 3:
+ if ( (_a <= x+image->get_width()-1)&&(_a >= x+image->get_width()-10) && (_b <=y+22)&&(_b>=y+10) ) {//arriba-derecha h
+ if ( is_connected ) return connect_vec[1].type;
+ connect_vec[0].type = is_other_connection_area( get_position_x() + 16, get_position_y()+get_image()->get_height() + 5, &_item);
+ switch ( connect_vec[0].type ) {
+ case IN:
+ connect_vec[0].type = OUT;
+ connect_vec[1].type = IN;
+ break;
+ case OUT:
+ connect_vec[0].type = IN;
+ connect_vec[1].type = OUT;
+ break;
+ case UNDEF:
+ return UNDEF;
+ }
+ is_connected = true;
+ return connect_vec[1].type;
+ }
+
+ if ( (_a <= x+22)&&(_a>=x+10)&&(_b<=y+image->get_height()-1)&&(_b>=y+image->get_height()-10) ) {// abajo-izquierda v
+ if ( is_connected ) return connect_vec[0].type;
+ connect_vec[1].type = is_other_connection_area( get_position_x()+get_image()->get_width()+5, get_position_y() +16,& _item);
+ switch ( connect_vec[1].type ) {
+ case IN:
+ connect_vec[0].type = IN;
+ connect_vec[1].type = OUT;
+ break;
+ case OUT:
+ connect_vec[0].type = OUT;
+ connect_vec[1].type = IN;
+ break;
+ case UNDEF:
+ return UNDEF;
+ }
+ is_connected = true;
+ return connect_vec[0].type;
+ }