static void cancel_ellipse(void) { canvas_ref_proc = canvas_locmove_proc = null_proc; elastic_moveellipse(); /* erase last lengths if appres.showlengths is true */ erase_lengths(); if (return_proc == copy_selected) { free_ellipse(&new_e); } else { list_add_ellipse(&objects.ellipses, new_e); redisplay_ellipse(new_e); } /* turn back on all relevant markers */ update_markers(new_objmask); (*return_proc) (); draw_mousefun_canvas(); }
void free_compound(F_compound **list) { F_compound *c, *compound; for (c = *list; c != NULL;) { compound = c; c = c->next; free_arc(&compound->arcs); free_compound(&compound->compounds); free_ellipse(&compound->ellipses); free_line(&compound->lines); free_spline(&compound->splines); free_text(&compound->texts); if (compound->comments) { free(compound->comments); compound->comments = NULL; } free((char *) compound); compound = NULL; } *list = NULL; }
void clean_up(void) { if (last_action == F_EDIT) { switch (last_object) { case O_ARC: saved_objects.arcs->next = NULL; free_arc(&saved_objects.arcs); break; case O_COMPOUND: saved_objects.compounds->next = NULL; free_compound(&saved_objects.compounds); break; case O_ELLIPSE: saved_objects.ellipses->next = NULL; free_ellipse(&saved_objects.ellipses); break; case O_POLYLINE: saved_objects.lines->next = NULL; free_line(&saved_objects.lines); break; case O_SPLINE: saved_objects.splines->next = NULL; free_spline(&saved_objects.splines); break; case O_TXT: saved_objects.texts->next = NULL; free_text(&saved_objects.texts); break; case O_FIGURE: free((char *) saved_objects.comments); break; } } else if (last_action==F_DELETE || last_action==F_JOIN || last_action==F_SPLIT) { switch (last_object) { case O_ARC: free_arc(&saved_objects.arcs); break; case O_COMPOUND: free_compound(&saved_objects.compounds); break; case O_ELLIPSE: free_ellipse(&saved_objects.ellipses); break; case O_POLYLINE: free_line(&saved_objects.lines); break; case O_SPLINE: free_spline(&saved_objects.splines); break; case O_TXT: free_text(&saved_objects.texts); break; case O_ALL_OBJECT: free_arc(&saved_objects.arcs); free_compound(&saved_objects.compounds); free_ellipse(&saved_objects.ellipses); free_line(&saved_objects.lines); free_spline(&saved_objects.splines); free_text(&saved_objects.texts); break; } } else if (last_action == F_DELETE_POINT || last_action == F_ADD_POINT) { if (last_action == F_DELETE_POINT) { /************************************************** free((char *) last_selected_point); free((char *) last_selected_sfactor); **************************************************/ last_next_point = NULL; } last_prev_point = NULL; last_selected_point = NULL; saved_objects.arcs = NULL; saved_objects.compounds = NULL; saved_objects.ellipses = NULL; saved_objects.lines = NULL; saved_objects.splines = NULL; saved_objects.texts = NULL; } else if (last_action == F_LOAD) { free_arc(&saved_objects.arcs); free_compound(&saved_objects.compounds); free_ellipse(&saved_objects.ellipses); free_line(&saved_objects.lines); free_spline(&saved_objects.splines); free_text(&saved_objects.texts); } else if (last_action == F_GLUE) { saved_objects.compounds = NULL; } else if (last_action == F_BREAK) { free((char *) saved_objects.compounds); saved_objects.compounds = NULL; } else if (last_action == F_ADD || last_action == F_MOVE) { saved_objects.arcs = NULL; saved_objects.compounds = NULL; saved_objects.ellipses = NULL; saved_objects.lines = NULL; saved_objects.splines = NULL; saved_objects.texts = NULL; free_linkinfo(&last_links); } else if (last_action == F_CONVERT) { if (last_object == O_POLYLINE) saved_objects.splines = NULL; else saved_objects.lines = NULL; } else if (last_action == F_OPEN_CLOSE) { saved_objects.splines = NULL; saved_objects.lines = NULL; free((char *) last_for_arrow); free((char *) last_back_arrow); } else if (last_action == F_ADD_ARROW_HEAD || last_action == F_DELETE_ARROW_HEAD) { saved_objects.splines = NULL; saved_objects.lines = NULL; saved_objects.arcs = NULL; last_prev_point = NULL; last_selected_point = NULL; } last_action = F_NULL; }