static Itdb_ArtworkFormat *g_value_to_image_format (GValue *value)
{
    GHashTable *dict;
    Itdb_ArtworkFormat *img_spec;

    g_return_val_if_fail (G_VALUE_HOLDS (value, G_TYPE_HASH_TABLE), NULL);
    dict = g_value_get_boxed (value);
    g_return_val_if_fail (dict != NULL, NULL);

    img_spec = g_new0 (Itdb_ArtworkFormat, 1);
    if (img_spec == NULL) {
        return NULL;
    }

    if (!set_pixel_format (img_spec, dict)) {
        g_free (img_spec);
        return NULL;
    }
    set_back_color (img_spec, dict);

    dict_to_struct (dict, sysinfo_image_format_fields_mapping, img_spec);

    if (get_boolean (dict, "AlignRowBytes")
            && (img_spec->row_bytes_alignment == 0)) {
        /* at least the nano3g has the AlignRowBytes key with no
         * RowBytesAlignment key.
         */
        img_spec->row_bytes_alignment = 4;
    }

    return img_spec;
}
예제 #2
0
ShaderPhongGen::ShaderPhongGen(bool color_per_vertex)
{
	if (color_per_vertex)
	{
		prg_.addShaderFromSourceCode(QOpenGLShader::Vertex, vertex_shader_source_2_);
		prg_.addShaderFromSourceCode(QOpenGLShader::Fragment, fragment_shader_source_2_);
		prg_.bindAttributeLocation("vertex_pos", ATTRIB_POS);
		prg_.bindAttributeLocation("vertex_normal", ATTRIB_NORM);
		prg_.bindAttributeLocation("vertex_color", ATTRIB_COLOR);
		prg_.link();
		get_matrices_uniforms();
	}
	else
	{
		prg_.addShaderFromSourceCode(QOpenGLShader::Vertex, vertex_shader_source_);
		prg_.addShaderFromSourceCode(QOpenGLShader::Fragment, fragment_shader_source_);
		prg_.bindAttributeLocation("vertex_pos", ATTRIB_POS);
		prg_.bindAttributeLocation("vertex_normal", ATTRIB_NORM);
		prg_.link();
		get_matrices_uniforms();
	}

	unif_front_color_ = prg_.uniformLocation("front_color");
	unif_back_color_ = prg_.uniformLocation("back_color");
	unif_ambiant_color_ = prg_.uniformLocation("ambiant_color");
	unif_spec_color_ = prg_.uniformLocation("spec_color");
	unif_spec_coef_ = prg_.uniformLocation("spec_coef");
	unif_double_side_ = prg_.uniformLocation("double_side");
	unif_light_position_ = prg_.uniformLocation("lightPosition");

	//default param
	bind();
	set_light_position(QVector3D(10.0f, 100.0f, 1000.0f));
	set_front_color(QColor(250, 0, 0));
	set_back_color(QColor(0, 250, 5));
	set_ambiant_color(QColor(5, 5, 5));
	set_specular_color(QColor(100, 100, 100));
	set_specular_coef(50.0f);
	set_double_side(true);
	release();
}
예제 #3
0
void colors_init(uint8_t primary, uint8_t accent, uint8_t back) {
    set_primary_color(primary);
    set_accent_color(accent);
    set_back_color(back);
}