static void decode_and_draw(rectangle_t* obj, const area_t * limiting_canvas_area) { area_t canvas_area = widget_compute_canvas_area(obj->glyph, limiting_canvas_area); canvas_t *canv = canvas_new(&canvas_area); if (obj->corner_radius) { if (obj->is_filled) { draw_solid_round_rectangle(canv, color_to_pixel(obj->fill_color), obj->corner_radius); } if (obj->has_border) { draw_round_rectangle(canv, color_to_pixel(obj->border_color), obj->border_tickness, obj->corner_radius); } } else { if (obj->is_filled) { draw_solid_rectangle(canv, color_to_pixel(obj->fill_color)); } if (obj->has_border) { draw_rectangle(canv, color_to_pixel(obj->border_color), obj->border_tickness); } } canvas_delete(canv); }
void *hoa_canvas_new(t_symbol *s, long argc, t_atom *argv) { t_atom av[3]; atom_setfloat(av, 0); t_hoa_canvas *x = (t_hoa_canvas *)pd_new(hoa_canvas_class); t_canvas* owner = canvas_getcurrent(); x->x_canvas = canvas_new(0, 0, 0, NULL); canvas_vis(x->x_canvas, 0); pd_typedmess((t_pd *)x->x_canvas, gensym("pop"), 1, av); canvas_setcurrent(owner); if(argc && atom_gettype(argv) == A_SYM) { atom_setfloat(av, 0); atom_setfloat(av+1, 20); atom_setsym(av+2, atom_getsym(argv)); pd_typedmess((t_pd *)x->x_canvas, gensym("obj"), 3, av); } canvas_loadbang(x->x_canvas); canvas_vis(x->x_canvas, 1); outlet_new((t_object *)x, &s_signal); return (x); }
static void *table_donew(t_symbol *s, int size, int flags, int xpix, int ypix) { t_atom a[9]; t_glist *gl; t_canvas *x, *z = canvas_getcurrent(); if (s == &s_) { char tabname[255]; t_symbol *t = gensym("table"); sprintf(tabname, "%s%d", t->s_name, tabcount++); s = gensym(tabname); } if (size < 1) size = 100; SETFLOAT(a, 0); SETFLOAT(a+1, 50); SETFLOAT(a+2, xpix + 100); SETFLOAT(a+3, ypix + 100); SETSYMBOL(a+4, s); SETFLOAT(a+5, 0); x = canvas_new(0, 0, 6, a); x->gl_owner = z; /* create a graph for the table */ gl = glist_addglist((t_glist*)x, &s_, 0, -1, (size > 1 ? size-1 : 1), 1, 50, ypix+50, xpix+50, 50); graph_array(gl, s, &s_float, size, flags); pd_this->pd_newest = &x->gl_pd; /* mimic action of canvas_pop() */ pd_popsym(&x->gl_pd); x->gl_loading = 0; return (x); }
static t_does *does_new(t_symbol *name) { t_does *does = (t_does *)pd_new(c_does_class); does->ons = new (std::nothrow) t_on_map; //does->does_canvas = canvas_new(NULL, NULL, 6, args); //canvas_unsetcurrent(does->does_canvas); t_canvas *canvas = does_canvas_get_and_add_sym_ref(name); if (!canvas) { t_atom args[6]; SETFLOAT(args+0, 0); SETFLOAT(args+1, 0); SETFLOAT(args+2, 400); SETFLOAT(args+3, 400); SETSYMBOL(args+4, name); SETFLOAT(args+5, 1); canvas = canvas_new(NULL, NULL, 6, args); //printf("does: new canvas: %X\n", (unsigned)canvas); does_canvas_set_for_sym(name, canvas); canvas_unsetcurrent(canvas); } does->sym_name = name; does->out_msg = outlet_new(&does->x_obj, gensym("out")); return does; }
Grace *grace_new(const char *home) { Grace *grace; char *s; grace = xmalloc(sizeof(Grace)); if (!grace) { return NULL; } memset(grace, 0, sizeof(Grace)); /* Grace home directory */ s = getenv("GRACE_HOME"); if (!string_is_empty(s)) { grace->grace_home = copy_string(NULL, s); } else { grace->grace_home = copy_string(NULL, home); } /* username */ s = getenv("LOGNAME"); if (string_is_empty(s)) { s = getlogin(); if (string_is_empty(s)) { s = "a user"; } } grace->username = copy_string(NULL, s); /* userhome */ if ((s = getenv("HOME")) == NULL) { s = "/"; } grace->userhome = copy_string(NULL, s); if (grace->userhome[strlen(grace->userhome) - 1] != '/') { grace->userhome = concat_strings(grace->userhome, "/"); } if (!grace->grace_home || !grace->username || !grace->userhome) { grace_free(grace); return NULL; } grace->qfactory = qfactory_new(); if (!grace->qfactory) { grace_free(grace); return NULL; } quark_factory_set_udata(grace->qfactory, grace); /* register quark flavors */ container_qf_register(grace->qfactory); project_qf_register(grace->qfactory); ssd_qf_register(grace->qfactory); frame_qf_register(grace->qfactory); graph_qf_register(grace->qfactory); set_qf_register(grace->qfactory); axisgrid_qf_register(grace->qfactory); axis_qf_register(grace->qfactory); object_qf_register(grace->qfactory); atext_qf_register(grace->qfactory); region_qf_register(grace->qfactory); grace->canvas = canvas_new(); if (!grace->canvas) { grace_free(grace); return NULL; } if (grace_init_font_db(grace) != RETURN_SUCCESS) { errmsg("Font DB initialization failed (incomplete installation?)"); grace_free(grace); return NULL; } canvas_set_username(grace->canvas, grace->username); canvas_set_fmap_proc(grace->canvas, grace_fmap_proc); canvas_set_csparse_proc(grace->canvas, grace_csparse_proc); grace->graal = graal_new(); if (!grace->graal) { grace_free(grace); return NULL; } graal_set_udata(grace->graal, grace); graal_set_lookup_procs(grace->graal, obj_proc, get_proc, set_proc); /* dictionaries */ if (grace_init_dicts(grace) != RETURN_SUCCESS) { grace_free(grace); return NULL; } return grace; }