[Swfdec-commits] 4 commits - swfdec/swfdec_actor.c swfdec/swfdec_actor.h swfdec/swfdec_player.c test/image
Benjamin Otte
company at kemper.freedesktop.org
Tue Apr 1 03:07:58 PDT 2008
swfdec/swfdec_actor.c | 16 +++++++++++++++
swfdec/swfdec_actor.h | 1
swfdec/swfdec_player.c | 30 ++++++++++++++++++++++++++++-
test/image/Makefile.am | 21 ++++++++++++++++++++
test/image/focusrect-rotated-5.swf |binary
test/image/focusrect-rotated-5.swf.png |binary
test/image/focusrect-rotated-6.swf |binary
test/image/focusrect-rotated-6.swf.org.png |binary
test/image/focusrect-rotated-6.swf.png |binary
test/image/focusrect-rotated-7.swf |binary
test/image/focusrect-rotated-7.swf.org.png |binary
test/image/focusrect-rotated-7.swf.png |binary
test/image/focusrect-rotated-8.swf |binary
test/image/focusrect-rotated-8.swf.org.png |binary
test/image/focusrect-rotated-8.swf.png |binary
test/image/focusrect-rotated.as | 22 +++++++++++++++++++++
test/image/focusrect-simple-5.swf |binary
test/image/focusrect-simple-5.swf.png |binary
test/image/focusrect-simple-6.swf |binary
test/image/focusrect-simple-6.swf.png |binary
test/image/focusrect-simple-7.swf |binary
test/image/focusrect-simple-7.swf.png |binary
test/image/focusrect-simple-8.swf |binary
test/image/focusrect-simple-8.swf.png |binary
test/image/focusrect-simple.as | 19 ++++++++++++++++++
25 files changed, 108 insertions(+), 1 deletion(-)
New commits:
commit 0d970062817bb0c0c9d71ec556ff693db0c4bfa6
Author: Benjamin Otte <otte at gnome.org>
Date: Tue Apr 1 12:07:21 2008 +0200
test that we draw focusrects properly on rotated movies
diff --git a/test/image/Makefile.am b/test/image/Makefile.am
index 8809c86..9419a9f 100644
--- a/test/image/Makefile.am
+++ b/test/image/Makefile.am
@@ -71,6 +71,18 @@ EXTRA_DIST = \
fillstyle-order.swf \
fillstyle-order.swf.png \
fillstyle-order.xml \
+ focusrect-rotated-5.swf \
+ focusrect-rotated-5.swf.png \
+ focusrect-rotated-6.swf \
+ focusrect-rotated-6.swf.org.png \
+ focusrect-rotated-6.swf.png \
+ focusrect-rotated-7.swf \
+ focusrect-rotated-7.swf.org.png \
+ focusrect-rotated-7.swf.png \
+ focusrect-rotated-8.swf \
+ focusrect-rotated-8.swf.org.png \
+ focusrect-rotated-8.swf.png \
+ focusrect-rotated.as \
focusrect-simple-5.swf \
focusrect-simple-5.swf.png \
focusrect-simple-6.swf \
diff --git a/test/image/focusrect-rotated-5.swf b/test/image/focusrect-rotated-5.swf
new file mode 100644
index 0000000..e5afc1f
Binary files /dev/null and b/test/image/focusrect-rotated-5.swf differ
diff --git a/test/image/focusrect-rotated-5.swf.png b/test/image/focusrect-rotated-5.swf.png
new file mode 100644
index 0000000..72208c2
Binary files /dev/null and b/test/image/focusrect-rotated-5.swf.png differ
diff --git a/test/image/focusrect-rotated-6.swf b/test/image/focusrect-rotated-6.swf
new file mode 100644
index 0000000..8b91642
Binary files /dev/null and b/test/image/focusrect-rotated-6.swf differ
diff --git a/test/image/focusrect-rotated-6.swf.org.png b/test/image/focusrect-rotated-6.swf.org.png
new file mode 100644
index 0000000..7c61471
Binary files /dev/null and b/test/image/focusrect-rotated-6.swf.org.png differ
diff --git a/test/image/focusrect-rotated-6.swf.png b/test/image/focusrect-rotated-6.swf.png
new file mode 100644
index 0000000..66c4e73
Binary files /dev/null and b/test/image/focusrect-rotated-6.swf.png differ
diff --git a/test/image/focusrect-rotated-7.swf b/test/image/focusrect-rotated-7.swf
new file mode 100644
index 0000000..e267139
Binary files /dev/null and b/test/image/focusrect-rotated-7.swf differ
diff --git a/test/image/focusrect-rotated-7.swf.org.png b/test/image/focusrect-rotated-7.swf.org.png
new file mode 100644
index 0000000..4a8b828
Binary files /dev/null and b/test/image/focusrect-rotated-7.swf.org.png differ
diff --git a/test/image/focusrect-rotated-7.swf.png b/test/image/focusrect-rotated-7.swf.png
new file mode 100644
index 0000000..66c4e73
Binary files /dev/null and b/test/image/focusrect-rotated-7.swf.png differ
diff --git a/test/image/focusrect-rotated-8.swf b/test/image/focusrect-rotated-8.swf
new file mode 100644
index 0000000..e8f1c1c
Binary files /dev/null and b/test/image/focusrect-rotated-8.swf differ
diff --git a/test/image/focusrect-rotated-8.swf.org.png b/test/image/focusrect-rotated-8.swf.org.png
new file mode 100644
index 0000000..6737cce
Binary files /dev/null and b/test/image/focusrect-rotated-8.swf.org.png differ
diff --git a/test/image/focusrect-rotated-8.swf.png b/test/image/focusrect-rotated-8.swf.png
new file mode 100644
index 0000000..66c4e73
Binary files /dev/null and b/test/image/focusrect-rotated-8.swf.png differ
diff --git a/test/image/focusrect-rotated.as b/test/image/focusrect-rotated.as
new file mode 100644
index 0000000..55131f1
--- /dev/null
+++ b/test/image/focusrect-rotated.as
@@ -0,0 +1,22 @@
+// makeswf -v 7 -s 200x150 -r 1 -o focusrect-rotated.swf focusrect-rotated.as
+
+rectangle = function (mc, color, x, y, w, h)
+{
+ mc.beginFill (color);
+ mc.moveTo (x, y);
+ mc.lineTo (x, y + h);
+ mc.lineTo (x + w, y + h);
+ mc.lineTo (x + w, y);
+ mc.lineTo (x, y);
+ mc.endFill ();
+};
+
+createEmptyMovieClip ("a", 0);
+rectangle (a, 0xff, 0, 0, 50, 50);
+a.focusEnabled = true;
+Selection.setFocus (a);
+a._x = 50;
+a._y = 50;
+a._rotation = 45;
+
+setInterval (function () { Selection.setFocus (a); }, 100);
commit 5c9a5386ac410df497a2e549587a2179daf96126
Author: Benjamin Otte <otte at gnome.org>
Date: Tue Apr 1 11:22:43 2008 +0200
remove comment
diff --git a/swfdec/swfdec_player.c b/swfdec/swfdec_player.c
index 54efa57..d18a1d3 100644
--- a/swfdec/swfdec_player.c
+++ b/swfdec/swfdec_player.c
@@ -2637,7 +2637,6 @@ static void
swfdec_player_render_focusrect (SwfdecPlayer *player, cairo_t *cr, SwfdecRect *inval)
{
#define LINE_WIDTH (3.0)
- //(3 * SWFDEC_TWIPS_SCALE_FACTOR)
SwfdecMovie *movie = SWFDEC_MOVIE (player->priv->focus);
SwfdecRect rect = movie->extents;
double w, h;
commit 0dfac1f31e219df36f058767b54c6654d7203a1a
Author: Benjamin Otte <otte at gnome.org>
Date: Tue Apr 1 11:22:26 2008 +0200
add a test for drawing focusrects
diff --git a/test/image/Makefile.am b/test/image/Makefile.am
index 8349615..8809c86 100644
--- a/test/image/Makefile.am
+++ b/test/image/Makefile.am
@@ -71,6 +71,15 @@ EXTRA_DIST = \
fillstyle-order.swf \
fillstyle-order.swf.png \
fillstyle-order.xml \
+ focusrect-simple-5.swf \
+ focusrect-simple-5.swf.png \
+ focusrect-simple-6.swf \
+ focusrect-simple-6.swf.png \
+ focusrect-simple-7.swf \
+ focusrect-simple-7.swf.png \
+ focusrect-simple-8.swf \
+ focusrect-simple-8.swf.png \
+ focusrect-simple.as \
gradient-beginGradientFill.as \
gradient-beginGradientFill-5.swf \
gradient-beginGradientFill-5.swf.png \
diff --git a/test/image/focusrect-simple-5.swf b/test/image/focusrect-simple-5.swf
new file mode 100644
index 0000000..ea484bf
Binary files /dev/null and b/test/image/focusrect-simple-5.swf differ
diff --git a/test/image/focusrect-simple-5.swf.png b/test/image/focusrect-simple-5.swf.png
new file mode 100644
index 0000000..889ef37
Binary files /dev/null and b/test/image/focusrect-simple-5.swf.png differ
diff --git a/test/image/focusrect-simple-6.swf b/test/image/focusrect-simple-6.swf
new file mode 100644
index 0000000..a1749fb
Binary files /dev/null and b/test/image/focusrect-simple-6.swf differ
diff --git a/test/image/focusrect-simple-6.swf.png b/test/image/focusrect-simple-6.swf.png
new file mode 100644
index 0000000..cdf4637
Binary files /dev/null and b/test/image/focusrect-simple-6.swf.png differ
diff --git a/test/image/focusrect-simple-7.swf b/test/image/focusrect-simple-7.swf
new file mode 100644
index 0000000..6b4c828
Binary files /dev/null and b/test/image/focusrect-simple-7.swf differ
diff --git a/test/image/focusrect-simple-7.swf.png b/test/image/focusrect-simple-7.swf.png
new file mode 100644
index 0000000..7ace283
Binary files /dev/null and b/test/image/focusrect-simple-7.swf.png differ
diff --git a/test/image/focusrect-simple-8.swf b/test/image/focusrect-simple-8.swf
new file mode 100644
index 0000000..a770c54
Binary files /dev/null and b/test/image/focusrect-simple-8.swf differ
diff --git a/test/image/focusrect-simple-8.swf.png b/test/image/focusrect-simple-8.swf.png
new file mode 100644
index 0000000..f1ef7b1
Binary files /dev/null and b/test/image/focusrect-simple-8.swf.png differ
diff --git a/test/image/focusrect-simple.as b/test/image/focusrect-simple.as
new file mode 100644
index 0000000..55e31c9
--- /dev/null
+++ b/test/image/focusrect-simple.as
@@ -0,0 +1,19 @@
+// makeswf -v 7 -s 200x150 -r 1 -o focusrect-simple.swf focusrect-simple.as
+
+rectangle = function (mc, color, x, y, w, h)
+{
+ mc.beginFill (color);
+ mc.moveTo (x, y);
+ mc.lineTo (x, y + h);
+ mc.lineTo (x + w, y + h);
+ mc.lineTo (x + w, y);
+ mc.lineTo (x, y);
+ mc.endFill ();
+};
+
+createEmptyMovieClip ("a", 0);
+rectangle (a, 0xff, 0, 0, 50, 50);
+a.focusEnabled = true;
+Selection.setFocus (a);
+a._x = 50;
+a._y = 50;
commit 362840d3fc97f63fbb61a81349871843d1d78b6d
Author: Benjamin Otte <otte at gnome.org>
Date: Tue Apr 1 11:21:33 2008 +0200
draw focusrects
diff --git a/swfdec/swfdec_actor.c b/swfdec/swfdec_actor.c
index c01ec99..a30cfd7 100644
--- a/swfdec/swfdec_actor.c
+++ b/swfdec/swfdec_actor.c
@@ -316,3 +316,19 @@ swfdec_actor_get_mouse_events (SwfdecActor *actor)
return FALSE;
}
+gboolean
+swfdec_actor_has_focusrect (SwfdecActor *actor)
+{
+ g_return_val_if_fail (SWFDEC_IS_ACTOR (actor), FALSE);
+
+ if (!SWFDEC_IS_BUTTON_MOVIE (actor) &&
+ !SWFDEC_IS_SPRITE_MOVIE (actor))
+ return FALSE;
+
+ if (actor->focusrect == SWFDEC_FLASH_MAYBE) {
+ actor = SWFDEC_ACTOR (swfdec_movie_get_root (SWFDEC_MOVIE (actor)));
+ }
+ g_assert (actor->focusrect != SWFDEC_FLASH_MAYBE);
+
+ return actor->focusrect != SWFDEC_FLASH_NO;
+}
diff --git a/swfdec/swfdec_actor.h b/swfdec/swfdec_actor.h
index d315f6e..fac49f2 100644
--- a/swfdec/swfdec_actor.h
+++ b/swfdec/swfdec_actor.h
@@ -85,6 +85,7 @@ void swfdec_actor_queue_script (SwfdecActor * actor,
SwfdecEventType condition);
gboolean swfdec_actor_get_mouse_events (SwfdecActor * actor);
+gboolean swfdec_actor_has_focusrect (SwfdecActor * actor);
G_END_DECLS
diff --git a/swfdec/swfdec_player.c b/swfdec/swfdec_player.c
index 520580c..54efa57 100644
--- a/swfdec/swfdec_player.c
+++ b/swfdec/swfdec_player.c
@@ -2633,6 +2633,31 @@ swfdec_player_key_release (SwfdecPlayer *player, guint keycode, guint character)
return ret;
}
+static void
+swfdec_player_render_focusrect (SwfdecPlayer *player, cairo_t *cr, SwfdecRect *inval)
+{
+#define LINE_WIDTH (3.0)
+ //(3 * SWFDEC_TWIPS_SCALE_FACTOR)
+ SwfdecMovie *movie = SWFDEC_MOVIE (player->priv->focus);
+ SwfdecRect rect = movie->extents;
+ double w, h;
+
+ cairo_save (cr);
+ /* I wonder why this has to be yellow... */
+ cairo_set_source_rgb (cr, 1.0, 1.0, 0.0);
+ if (movie->parent)
+ swfdec_movie_rect_local_to_global (movie->parent, &rect);
+ swfdec_player_global_to_stage (player, &rect.x0, &rect.y0);
+ swfdec_player_global_to_stage (player, &rect.x1, &rect.y1);
+ cairo_set_line_width (cr, LINE_WIDTH);
+ w = MAX (rect.x1 - rect.x0 - LINE_WIDTH, 0);
+ h = MAX (rect.y1 - rect.y0 - LINE_WIDTH, 0);
+ cairo_rectangle (cr, rect.x0 + LINE_WIDTH / 2, rect.y0 + LINE_WIDTH / 2, w, h);
+ cairo_stroke (cr);
+ cairo_restore (cr);
+#undef LINE_WIDTH
+}
+
/**
* swfdec_player_render:
* @player: a #SwfdecPlayer
@@ -2689,8 +2714,12 @@ swfdec_player_render (SwfdecPlayer *player, cairo_t *cr,
for (walk = priv->roots; walk; walk = walk->next) {
swfdec_movie_render (walk->data, cr, &trans, &real);
}
- SWFDEC_INFO ("=== %p: END RENDER ===", player);
cairo_restore (cr);
+ /* NB: we render the focusrect after restoring, so the focusrect doesn't scale */
+ if (priv->focus && swfdec_actor_has_focusrect (priv->focus))
+ swfdec_player_render_focusrect (player, cr, &real);
+
+ SWFDEC_INFO ("=== %p: END RENDER ===", player);
}
/**
More information about the Swfdec-commits
mailing list