mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2024-11-09 10:20:07 +00:00
6ef3fc2dbb
No. This fix is not that much better, but I'm too tired to fix stuff like this properly. And the Cairo renderer did at least work everywhere during 4.x
83 lines
2.4 KiB
C
83 lines
2.4 KiB
C
#include <gtk/gtk.h>
|
|
#include "gsk/gskrectprivate.h"
|
|
#include "../reftests/reftest-compare.h"
|
|
|
|
static void
|
|
test_normalize (GskRenderNode *node1,
|
|
GskRenderNode *node2)
|
|
{
|
|
GskRenderer *renderer = gsk_cairo_renderer_new ();
|
|
graphene_rect_t bounds1, bounds2;
|
|
GdkTexture *texture1, *texture2, *diff;
|
|
GError *error = NULL;
|
|
|
|
gsk_renderer_realize_for_display (renderer, gdk_display_get_default (), &error);
|
|
g_assert_no_error (error);
|
|
|
|
gsk_render_node_get_bounds (node1, &bounds1);
|
|
gsk_render_node_get_bounds (node2, &bounds2);
|
|
|
|
texture1 = gsk_renderer_render_texture (renderer, node1, &bounds1);
|
|
texture2 = gsk_renderer_render_texture (renderer, node2, &bounds2);
|
|
|
|
diff = reftest_compare_textures (texture1, texture2);
|
|
g_assert_null (diff);
|
|
|
|
g_object_unref (texture1);
|
|
g_object_unref (texture2);
|
|
gsk_renderer_unrealize (renderer);
|
|
g_object_unref (renderer);
|
|
}
|
|
|
|
static void
|
|
test_normalize_color (void)
|
|
{
|
|
GskRenderNode *node1, *node2;
|
|
GdkRGBA red = { 1, 0, 0, 1 };
|
|
|
|
node1 = gsk_color_node_new (&red, &GRAPHENE_RECT_INIT (0, 0, 100, 100));
|
|
node2 = gsk_color_node_new (&red, &GRAPHENE_RECT_INIT (0, 100, 100, -100));
|
|
|
|
test_normalize (node1, node2);
|
|
|
|
gsk_render_node_unref (node1);
|
|
gsk_render_node_unref (node2);
|
|
}
|
|
|
|
static void
|
|
test_normalize_linear_gradient (void)
|
|
{
|
|
GskRenderNode *node1, *node2;
|
|
GskColorStop stops[] = {
|
|
{ 0, { 1, 0, 0, 1 } },
|
|
{ 1, { 0, 0, 1, 1 } },
|
|
};
|
|
|
|
node1 = gsk_linear_gradient_node_new (&GRAPHENE_RECT_INIT (0, 0, 100, 100),
|
|
&GRAPHENE_POINT_INIT (0, 0),
|
|
&GRAPHENE_POINT_INIT (100, 100),
|
|
stops,
|
|
G_N_ELEMENTS (stops));
|
|
node2 = gsk_linear_gradient_node_new (&GRAPHENE_RECT_INIT (0, 100, 100, -100),
|
|
&GRAPHENE_POINT_INIT (0, 0),
|
|
&GRAPHENE_POINT_INIT (100, 100),
|
|
stops,
|
|
G_N_ELEMENTS (stops));
|
|
|
|
test_normalize (node1, node2);
|
|
|
|
gsk_render_node_unref (node1);
|
|
gsk_render_node_unref (node2);
|
|
}
|
|
|
|
int
|
|
main (int argc, char *argv[])
|
|
{
|
|
gtk_test_init (&argc, &argv);
|
|
|
|
g_test_add_func ("/node/normalize/color", test_normalize_color);
|
|
g_test_add_func ("/node/normalize/linear-gradient", test_normalize_linear_gradient);
|
|
|
|
return g_test_run ();
|
|
}
|