Пример #1
0
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;
}
Пример #2
0
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);
	}
}