Bilal Elmoussaoui 2024-02-16 23:15:40 +01:00 committed by Marge Bot
parent 40dde833af
commit cf0803ab71
8 changed files with 32 additions and 100 deletions

View File

@ -251,10 +251,10 @@ clutter_deform_effect_paint_target (ClutterOffscreenEffect *effect,
vertex_out->z = vertex.z; vertex_out->z = vertex.z;
vertex_out->s = vertex.tx; vertex_out->s = vertex.tx;
vertex_out->t = vertex.ty; vertex_out->t = vertex.ty;
vertex_out->r = cogl_color_get_red_byte (&vertex.color); vertex_out->r = cogl_color_get_red (&vertex.color) * 255.0;
vertex_out->g = cogl_color_get_green_byte (&vertex.color); vertex_out->g = cogl_color_get_green (&vertex.color) * 255.0;
vertex_out->b = cogl_color_get_blue_byte (&vertex.color); vertex_out->b = cogl_color_get_blue (&vertex.color) * 255.0;
vertex_out->a = cogl_color_get_alpha_byte (&vertex.color); vertex_out->a = cogl_color_get_alpha (&vertex.color) * 255.0;
} }
} }

View File

@ -417,13 +417,12 @@ _cogl_pango_display_list_render (CoglFramebuffer *fb,
if (node->color_override) if (node->color_override)
/* Use the override color but preserve the alpha from the /* Use the override color but preserve the alpha from the
draw color */ draw color */
cogl_color_init_from_4ub (&draw_color, cogl_color_init_from_4f (&draw_color,
cogl_color_get_red_byte (&node->color), cogl_color_get_red (&node->color),
cogl_color_get_green_byte (&node->color), cogl_color_get_green (&node->color),
cogl_color_get_blue_byte (&node->color), cogl_color_get_blue (&node->color),
(cogl_color_get_alpha_byte (&node->color) * (cogl_color_get_alpha (&node->color) *
cogl_color_get_alpha_byte (color) / cogl_color_get_alpha (color)));
255));
else else
draw_color = *color; draw_color = *color;
cogl_color_premultiply (&draw_color); cogl_color_premultiply (&draw_color);

View File

@ -87,48 +87,24 @@ cogl_color_init_from_4f (CoglColor *color,
color->alpha = (alpha * 255); color->alpha = (alpha * 255);
} }
unsigned char
cogl_color_get_red_byte (const CoglColor *color)
{
return color->red;
}
float float
cogl_color_get_red (const CoglColor *color) cogl_color_get_red (const CoglColor *color)
{ {
return ((float) color->red / 255.0); return ((float) color->red / 255.0);
} }
unsigned char
cogl_color_get_green_byte (const CoglColor *color)
{
return color->green;
}
float float
cogl_color_get_green (const CoglColor *color) cogl_color_get_green (const CoglColor *color)
{ {
return ((float) color->green / 255.0); return ((float) color->green / 255.0);
} }
unsigned char
cogl_color_get_blue_byte (const CoglColor *color)
{
return color->blue;
}
float float
cogl_color_get_blue (const CoglColor *color) cogl_color_get_blue (const CoglColor *color)
{ {
return ((float) color->blue / 255.0); return ((float) color->blue / 255.0);
} }
unsigned char
cogl_color_get_alpha_byte (const CoglColor *color)
{
return color->alpha;
}
float float
cogl_color_get_alpha (const CoglColor *color) cogl_color_get_alpha (const CoglColor *color)
{ {

View File

@ -115,54 +115,6 @@ cogl_color_init_from_4f (CoglColor *color,
float blue, float blue,
float alpha); float alpha);
/**
* cogl_color_get_red_byte:
* @color: a #CoglColor
*
* Retrieves the red channel of @color as a byte value
* between 0 and 255
*
* Return value: the red channel of the passed color
*/
COGL_EXPORT unsigned char
cogl_color_get_red_byte (const CoglColor *color);
/**
* cogl_color_get_green_byte:
* @color: a #CoglColor
*
* Retrieves the green channel of @color as a byte value
* between 0 and 255
*
* Return value: the green channel of the passed color
*/
COGL_EXPORT unsigned char
cogl_color_get_green_byte (const CoglColor *color);
/**
* cogl_color_get_blue_byte:
* @color: a #CoglColor
*
* Retrieves the blue channel of @color as a byte value
* between 0 and 255
*
* Return value: the blue channel of the passed color
*/
COGL_EXPORT unsigned char
cogl_color_get_blue_byte (const CoglColor *color);
/**
* cogl_color_get_alpha_byte:
* @color: a #CoglColor
*
* Retrieves the alpha channel of @color as a byte value
* between 0 and 255
*
* Return value: the alpha channel of the passed color
*/
COGL_EXPORT unsigned char
cogl_color_get_alpha_byte (const CoglColor *color);
/** /**
* cogl_color_get_red: * cogl_color_get_red:
* @color: a #CoglColor * @color: a #CoglColor

View File

@ -187,10 +187,10 @@ dump_pipeline_cb (CoglNode *node, void *user_data)
changes = TRUE; changes = TRUE;
g_string_append_printf (changes_label, g_string_append_printf (changes_label,
"\\lcolor=0x%02X%02X%02X%02X\\n", "\\lcolor=0x%02X%02X%02X%02X\\n",
cogl_color_get_red_byte (&pipeline->color), (int) (cogl_color_get_red (&pipeline->color) * 255.0),
cogl_color_get_green_byte (&pipeline->color), (int) (cogl_color_get_green (&pipeline->color) * 255.0),
cogl_color_get_blue_byte (&pipeline->color), (int) (cogl_color_get_blue (&pipeline->color) * 255.0),
cogl_color_get_alpha_byte (&pipeline->color)); (int) (cogl_color_get_alpha (&pipeline->color) * 255.0));
} }
if (pipeline->differences & COGL_PIPELINE_STATE_BLEND) if (pipeline->differences & COGL_PIPELINE_STATE_BLEND)

View File

@ -639,14 +639,15 @@ _cogl_pipeline_change_implies_transparency (CoglPipeline *pipeline,
if (unknown_color_alpha) if (unknown_color_alpha)
return TRUE; return TRUE;
if ((override_color && cogl_color_get_alpha_byte (override_color) != 0xff)) if (override_color &&
!G_APPROX_VALUE (cogl_color_get_alpha (override_color), 1.0, FLT_EPSILON))
return TRUE; return TRUE;
if (changes & COGL_PIPELINE_STATE_COLOR) if (changes & COGL_PIPELINE_STATE_COLOR)
{ {
CoglColor tmp; CoglColor tmp;
cogl_pipeline_get_color (pipeline, &tmp); cogl_pipeline_get_color (pipeline, &tmp);
if (cogl_color_get_alpha_byte (&tmp) != 0xff) if (!G_APPROX_VALUE (cogl_color_get_alpha (&tmp), 1.0, FLT_EPSILON))
return TRUE; return TRUE;
} }

View File

@ -89,10 +89,10 @@ test_coglbox_fade_texture (CoglFramebuffer *framebuffer,
255, 255,
((i ^ (i >> 1)) & 1) ? 0 : 128); ((i ^ (i >> 1)) & 1) ? 0 : 128);
cogl_color_premultiply (&cogl_color); cogl_color_premultiply (&cogl_color);
vertices[i].r = cogl_color_get_red_byte (&cogl_color); vertices[i].r = cogl_color_get_red (&cogl_color) * 255.0;
vertices[i].g = cogl_color_get_green_byte (&cogl_color); vertices[i].g = cogl_color_get_green (&cogl_color) * 255.0;
vertices[i].b = cogl_color_get_blue_byte (&cogl_color); vertices[i].b = cogl_color_get_blue (&cogl_color) * 255.0;
vertices[i].a = cogl_color_get_alpha_byte (&cogl_color); vertices[i].a = cogl_color_get_alpha (&cogl_color) * 255.0;
} }
primitive = primitive =

View File

@ -13,7 +13,7 @@ test_color_hsl (void)
CoglColor color; CoglColor color;
float hue, saturation, luminance; float hue, saturation, luminance;
cogl_color_init_from_4ub(&color, 108, 198, 78, 255); cogl_color_init_from_4f (&color, 108.0 / 255.0, 198 / 255.0, 78.0 / 255.0, 1.0);
cogl_color_to_hsl(&color, &hue, &saturation, &luminance); cogl_color_to_hsl(&color, &hue, &saturation, &luminance);
g_assert_cmpfloat_with_epsilon (hue, 105.f, TEST_CASE_EPSILON); g_assert_cmpfloat_with_epsilon (hue, 105.f, TEST_CASE_EPSILON);
@ -21,15 +21,19 @@ test_color_hsl (void)
g_assert_cmpfloat_with_epsilon (luminance, 0.541176, TEST_CASE_EPSILON); g_assert_cmpfloat_with_epsilon (luminance, 0.541176, TEST_CASE_EPSILON);
memset(&color, 0, sizeof (CoglColor)); memset(&color, 0, sizeof (CoglColor));
cogl_color_init_from_hsl(&color, hue, saturation, luminance); cogl_color_init_from_hsl (&color, hue, saturation, luminance);
g_assert_cmpint (cogl_color_get_red_byte (&color), ==, 108); g_assert_cmpfloat_with_epsilon (cogl_color_get_red (&color), 108.0 / 255.0,
g_assert_cmpint (cogl_color_get_green_byte (&color), ==, 198); TEST_CASE_EPSILON);
g_assert_cmpint (cogl_color_get_blue_byte (&color), ==, 78); g_assert_cmpfloat_with_epsilon (cogl_color_get_green (&color), 198.0 / 255.0,
g_assert_cmpint (cogl_color_get_alpha_byte (&color), ==, 255); TEST_CASE_EPSILON);
g_assert_cmpfloat_with_epsilon (cogl_color_get_blue (&color), 78.0 / 255.0,
TEST_CASE_EPSILON);
g_assert_cmpfloat_with_epsilon (cogl_color_get_alpha (&color), 1.0,
TEST_CASE_EPSILON);
memset(&color, 0, sizeof (CoglColor)); memset(&color, 0, sizeof (CoglColor));
cogl_color_init_from_hsl(&color, hue, 0, luminance); cogl_color_init_from_hsl (&color, hue, 0, luminance);
g_assert_cmpfloat_with_epsilon (cogl_color_get_red (&color), luminance, g_assert_cmpfloat_with_epsilon (cogl_color_get_red (&color), luminance,
TEST_CASE_EPSILON); TEST_CASE_EPSILON);