Exemple #1
0
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);
}
Exemple #2
0
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);
}
Exemple #3
0
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);
}
Exemple #4
0
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;
}
Exemple #5
0
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;
}