screen_t* new_screen(char* name, char* desc, int prepend) { screen_t* the_screen = alloc_screen(); the_screen->name = strdup(name); if (desc == NULL || strlen(desc) == 0) the_screen->desc = strdup("(no desc)"); else the_screen->desc = strdup(desc); the_screen->num_counters = 0; the_screen->num_alloc_counters = alloc_chunk; the_screen->counters = malloc(alloc_chunk * sizeof(counter_t)); the_screen->num_columns = 0; the_screen->num_alloc_columns = alloc_chunk; the_screen->columns = malloc(alloc_chunk * sizeof(column_t)); if (num_screens >= num_alloc_screens) { num_alloc_screens += alloc_chunk; screens = realloc(screens, num_alloc_screens * sizeof(screen_t*)); } if (prepend) { /* shift existing screens by 1 */ memmove(&screens[1], &screens[0], num_screens * sizeof(screen_t*)); screens[0] = the_screen; } else { screens[num_screens] = the_screen; } num_screens++; return the_screen; }
static int set_zoom(void) { if ((zoom_form = alloc_screen())!=NULL) { copy_form(&uf,zoom_form); /* save undo screen */ copy_form(&vf,&uf); /* save undo for marqi routines */ rub_in_place(vs.zoomx,vs.zoomy,vs.zoomx+vs.zoomw-1,vs.zoomy+vs.zoomh-1); if (PJSTDN) /* move zoom box... */ { move_box(&vs.zoomx,&vs.zoomy,vs.zoomw,vs.zoomh); clip_zoom(); } copy_form(zoom_form, &uf); /* replace undo buffer */ set_alloced_zoom(); return(1); } else { return(0); } }