mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2024-11-11 11:20:12 +00:00
[broadway] Remove old demo code
This commit is contained in:
parent
edd186e274
commit
2cb9ce954e
@ -82,7 +82,4 @@ EXTRA_DIST += $(broadway_built_sources)
|
||||
|
||||
BUILT_SOURCES = $(broadway_built_sources)
|
||||
|
||||
noinst_PROGRAMS = broadway-demo
|
||||
broadway_demo_LDADD = -lz -lcairo libbroadway.la -lglib-2.0
|
||||
|
||||
-include $(top_srcdir)/git.mk
|
||||
|
@ -1,230 +0,0 @@
|
||||
/* Build with
|
||||
gcc -lm -lz -O2 -Wall `pkg-config --libs --cflags cairo` -o broadway broadway.c demo.c
|
||||
*/
|
||||
|
||||
#include "broadway.h"
|
||||
#include <math.h>
|
||||
#include <unistd.h>
|
||||
#include <stdint.h>
|
||||
#include <cairo.h>
|
||||
|
||||
static void
|
||||
diff_surfaces (cairo_surface_t *surface,
|
||||
cairo_surface_t *old_surface)
|
||||
{
|
||||
uint8_t *data, *old_data;
|
||||
uint32_t *line, *old_line;
|
||||
int w, h, stride, old_stride;
|
||||
int x, y;
|
||||
|
||||
data = cairo_image_surface_get_data (surface);
|
||||
old_data = cairo_image_surface_get_data (old_surface);
|
||||
|
||||
w = cairo_image_surface_get_width (surface);
|
||||
h = cairo_image_surface_get_height (surface);
|
||||
|
||||
stride = cairo_image_surface_get_stride (surface);
|
||||
old_stride = cairo_image_surface_get_stride (old_surface);
|
||||
|
||||
for (y = 0; y < h; y++)
|
||||
{
|
||||
line = (uint32_t *)data;
|
||||
old_line = (uint32_t *)old_data;
|
||||
|
||||
for (x = 0; x < w; x++)
|
||||
{
|
||||
if ((*line & 0xffffff) == (*old_line & 0xffffff))
|
||||
*old_line = 0;
|
||||
else
|
||||
*old_line = *line | 0xff000000;
|
||||
line ++;
|
||||
old_line ++;
|
||||
}
|
||||
|
||||
data += stride;
|
||||
old_data += old_stride;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
snippet(cairo_t *cr, int i)
|
||||
{
|
||||
if (1)
|
||||
{
|
||||
cairo_save(cr);
|
||||
cairo_rotate (cr, i * 0.002);
|
||||
/* a custom shape that could be wrapped in a function */
|
||||
double x0 = 25.6, /* parameters like cairo_rectangle */
|
||||
y0 = 25.6,
|
||||
rect_width = 204.8,
|
||||
rect_height = 204.8,
|
||||
radius = 102.4; /* and an approximate curvature radius */
|
||||
|
||||
double x1,y1;
|
||||
|
||||
x1=x0+rect_width;
|
||||
y1=y0+rect_height;
|
||||
if (rect_width/2<radius) {
|
||||
if (rect_height/2<radius) {
|
||||
cairo_move_to (cr, x0, (y0 + y1)/2);
|
||||
cairo_curve_to (cr, x0 ,y0, x0, y0, (x0 + x1)/2, y0);
|
||||
cairo_curve_to (cr, x1, y0, x1, y0, x1, (y0 + y1)/2);
|
||||
cairo_curve_to (cr, x1, y1, x1, y1, (x1 + x0)/2, y1);
|
||||
cairo_curve_to (cr, x0, y1, x0, y1, x0, (y0 + y1)/2);
|
||||
} else {
|
||||
cairo_move_to (cr, x0, y0 + radius);
|
||||
cairo_curve_to (cr, x0 ,y0, x0, y0, (x0 + x1)/2, y0);
|
||||
cairo_curve_to (cr, x1, y0, x1, y0, x1, y0 + radius);
|
||||
cairo_line_to (cr, x1 , y1 - radius);
|
||||
cairo_curve_to (cr, x1, y1, x1, y1, (x1 + x0)/2, y1);
|
||||
cairo_curve_to (cr, x0, y1, x0, y1, x0, y1- radius);
|
||||
}
|
||||
} else {
|
||||
if (rect_height/2<radius) {
|
||||
cairo_move_to (cr, x0, (y0 + y1)/2);
|
||||
cairo_curve_to (cr, x0 , y0, x0 , y0, x0 + radius, y0);
|
||||
cairo_line_to (cr, x1 - radius, y0);
|
||||
cairo_curve_to (cr, x1, y0, x1, y0, x1, (y0 + y1)/2);
|
||||
cairo_curve_to (cr, x1, y1, x1, y1, x1 - radius, y1);
|
||||
cairo_line_to (cr, x0 + radius, y1);
|
||||
cairo_curve_to (cr, x0, y1, x0, y1, x0, (y0 + y1)/2);
|
||||
} else {
|
||||
cairo_move_to (cr, x0, y0 + radius);
|
||||
cairo_curve_to (cr, x0 , y0, x0 , y0, x0 + radius, y0);
|
||||
cairo_line_to (cr, x1 - radius, y0);
|
||||
cairo_curve_to (cr, x1, y0, x1, y0, x1, y0 + radius);
|
||||
cairo_line_to (cr, x1 , y1 - radius);
|
||||
cairo_curve_to (cr, x1, y1, x1, y1, x1 - radius, y1);
|
||||
cairo_line_to (cr, x0 + radius, y1);
|
||||
cairo_curve_to (cr, x0, y1, x0, y1, x0, y1- radius);
|
||||
}
|
||||
}
|
||||
cairo_close_path (cr);
|
||||
|
||||
cairo_set_source_rgb (cr, 0.5, 0.5, 1);
|
||||
cairo_fill_preserve (cr);
|
||||
cairo_set_source_rgba (cr, 0.5, 0, 0, 0.5);
|
||||
cairo_set_line_width (cr, 10.0);
|
||||
cairo_stroke (cr);
|
||||
cairo_restore(cr);
|
||||
}
|
||||
if (1)
|
||||
{
|
||||
double xc = 128.0;
|
||||
double yc = 128.0;
|
||||
double radius = 100.0;
|
||||
double angle1 = (45.0 + i * 5) * (M_PI/180.0); /* angles are specified */
|
||||
double angle2 = (180.0 + i * 5) * (M_PI/180.0); /* in radians */
|
||||
|
||||
cairo_set_source_rgb (cr, 0.0, 0.0, 0.0);
|
||||
|
||||
cairo_set_line_width (cr, 10.0);
|
||||
cairo_arc (cr, xc, yc, radius, angle1, angle2);
|
||||
cairo_stroke (cr);
|
||||
|
||||
/* draw helping lines */
|
||||
cairo_set_source_rgba (cr, 1, 0.2, 0.2, 0.6);
|
||||
cairo_set_line_width (cr, 6.0);
|
||||
|
||||
cairo_arc (cr, xc, yc, 10.0, 0, 2*M_PI);
|
||||
cairo_fill (cr);
|
||||
|
||||
cairo_arc (cr, xc, yc, radius, angle1, angle1);
|
||||
cairo_line_to (cr, xc, yc);
|
||||
cairo_arc (cr, xc, yc, radius, angle2, angle2);
|
||||
cairo_line_to (cr, xc, yc);
|
||||
cairo_stroke (cr);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
demo2 (BroadwayOutput *output)
|
||||
{
|
||||
cairo_t *cr;
|
||||
cairo_surface_t *surface, *old_surface;
|
||||
BroadwayRect rects[2];
|
||||
double da = 0;
|
||||
int i;
|
||||
|
||||
broadway_output_new_surface(output, 0, 100, 100, 800, 600, 0);
|
||||
|
||||
surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32,
|
||||
800, 600);
|
||||
old_surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32,
|
||||
800, 600);
|
||||
|
||||
cr = cairo_create (old_surface);
|
||||
cairo_set_source_rgb (cr, 0.0, 0.0, 0.0);
|
||||
cairo_rectangle (cr, 0, 0, 800, 600);
|
||||
cairo_fill (cr);
|
||||
cairo_destroy (cr);
|
||||
|
||||
for (i = 0; i < 100; i++)
|
||||
{
|
||||
cr = cairo_create (surface);
|
||||
|
||||
cairo_set_source_rgb (cr, 0.8, 0.8, 0.8);
|
||||
|
||||
cairo_rectangle (cr, 0, 0, 800, 600);
|
||||
cairo_fill (cr);
|
||||
|
||||
snippet(cr, i);
|
||||
|
||||
cairo_destroy (cr);
|
||||
|
||||
if (i == 0)
|
||||
{
|
||||
broadway_output_put_rgb (output, 0, 0, 0, 800, 600, 800*4,
|
||||
cairo_image_surface_get_data(surface)
|
||||
);
|
||||
broadway_output_show_surface (output, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
diff_surfaces (surface,
|
||||
old_surface);
|
||||
broadway_output_put_rgba (output, 0, 0, 0, 800, 600, 800*4,
|
||||
cairo_image_surface_get_data(old_surface));
|
||||
}
|
||||
broadway_output_move_resize_surface (output, 0, 1, 100 + i, 100 + i, 0, 0, 0);
|
||||
|
||||
rects[0].x = 500;
|
||||
rects[0].y = 0;
|
||||
rects[0].width = 100;
|
||||
rects[0].height = 100;
|
||||
rects[1].x = 600;
|
||||
rects[1].y = 100;
|
||||
rects[1].width = 100;
|
||||
rects[1].height = 100;
|
||||
broadway_output_copy_rectangles (output,
|
||||
0,
|
||||
rects, 2,
|
||||
400, 0);
|
||||
|
||||
broadway_output_flush (output);
|
||||
|
||||
cr = cairo_create (old_surface);
|
||||
cairo_set_source_surface (cr, surface, 0, 0);
|
||||
cairo_paint (cr);
|
||||
cairo_destroy (cr);
|
||||
|
||||
da += 10;
|
||||
usleep (50 * 1000);
|
||||
}
|
||||
|
||||
|
||||
cairo_surface_destroy (surface);
|
||||
broadway_output_destroy_surface(output, 0);
|
||||
broadway_output_flush (output);
|
||||
}
|
||||
|
||||
int
|
||||
main (int argc, char *argv[])
|
||||
{
|
||||
BroadwayOutput *output;
|
||||
|
||||
output = broadway_output_new (STDOUT_FILENO, 1);
|
||||
demo2(output);
|
||||
|
||||
return 0;
|
||||
}
|
Loading…
Reference in New Issue
Block a user