[Swfdec] 5 commits - libswfdec/swfdec_as_array.c libswfdec/swfdec_as_object.c libswfdec/swfdec_text_field_movie.c test/image
Pekka Lampila
medar at kemper.freedesktop.org
Thu Nov 1 13:29:05 PDT 2007
libswfdec/swfdec_as_array.c | 18 +++++++++++++-----
libswfdec/swfdec_as_object.c | 2 ++
libswfdec/swfdec_text_field_movie.c | 12 ++++++++----
test/image/Makefile.am | 16 +++++++++++++++-
test/image/text-field-autosize-6.swf |binary
test/image/text-field-autosize-6.swf.png |binary
test/image/text-field-autosize-7.swf |binary
test/image/text-field-autosize-7.swf.png |binary
test/image/text-field-autosize-8.swf |binary
test/image/text-field-autosize-8.swf.png |binary
test/image/text-field-autosize.as | 19 +++++++++++++++++++
test/image/text-field-empty-6.swf |binary
test/image/text-field-empty-6.swf.png |binary
test/image/text-field-empty-7.swf |binary
test/image/text-field-empty-7.swf.png |binary
test/image/text-field-empty-8.swf |binary
test/image/text-field-empty-8.swf.png |binary
test/image/text-field-empty.as | 17 +++++++++++++++++
18 files changed, 74 insertions(+), 10 deletions(-)
New commits:
commit 0fc692e316d049cd75d916a1263df03d66cf899f
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date: Thu Nov 1 21:52:15 2007 +0200
Add an image test for TextField's autoSize
diff --git a/test/image/Makefile.am b/test/image/Makefile.am
index c40fd37..86c50d3 100644
--- a/test/image/Makefile.am
+++ b/test/image/Makefile.am
@@ -113,6 +113,13 @@ EXTRA_DIST = \
replace-shape-shape-6.swf.png \
replace-shape-shape-7.swf \
replace-shape-shape-7.swf.png \
+ text-field-autosize.as \
+ text-field-autosize-6.swf \
+ text-field-autosize-6.swf.png \
+ text-field-autosize-7.swf \
+ text-field-autosize-7.swf.png \
+ text-field-autosize-8.swf \
+ text-field-autosize-8.swf.png
text-field-empty.as \
text-field-empty-6.swf \
text-field-empty-6.swf.png \
diff --git a/test/image/text-field-autosize-6.swf b/test/image/text-field-autosize-6.swf
new file mode 100644
index 0000000..c172331
Binary files /dev/null and b/test/image/text-field-autosize-6.swf differ
diff --git a/test/image/text-field-autosize-6.swf.png b/test/image/text-field-autosize-6.swf.png
new file mode 100644
index 0000000..aab8cf6
Binary files /dev/null and b/test/image/text-field-autosize-6.swf.png differ
diff --git a/test/image/text-field-autosize-7.swf b/test/image/text-field-autosize-7.swf
new file mode 100644
index 0000000..6660b40
Binary files /dev/null and b/test/image/text-field-autosize-7.swf differ
diff --git a/test/image/text-field-autosize-7.swf.png b/test/image/text-field-autosize-7.swf.png
new file mode 100644
index 0000000..aab8cf6
Binary files /dev/null and b/test/image/text-field-autosize-7.swf.png differ
diff --git a/test/image/text-field-autosize-8.swf b/test/image/text-field-autosize-8.swf
new file mode 100644
index 0000000..112067c
Binary files /dev/null and b/test/image/text-field-autosize-8.swf differ
diff --git a/test/image/text-field-autosize-8.swf.png b/test/image/text-field-autosize-8.swf.png
new file mode 100644
index 0000000..aab8cf6
Binary files /dev/null and b/test/image/text-field-autosize-8.swf.png differ
diff --git a/test/image/text-field-autosize.as b/test/image/text-field-autosize.as
new file mode 100644
index 0000000..3aee9ba
--- /dev/null
+++ b/test/image/text-field-autosize.as
@@ -0,0 +1,19 @@
+// makeswf -v 7 -r 1 -s 200x150 -o text-field-autosize-7.swf text-field-autosize.as
+
+this.createTextField ("t1", 0, 25, 25, 100, 100);
+
+t1.autoSize = "left";
+t1.background = true;
+t1.backgroundColor = 0xFF0000;
+
+this.createTextField ("t2", 1, 25, 25, 100, 100);
+
+t2.autoSize = "center";
+t2.background = true;
+t2.backgroundColor = 0x00FF00;
+
+this.createTextField ("t3", 2, 25, 25, 100, 100);
+
+t3.autoSize = "right";
+t3.background = true;
+t3.backgroundColor = 0x0000FF;
commit 9004c86799488b57215561140cf32b984066085c
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date: Thu Nov 1 21:29:16 2007 +0200
Add an image test for empty TextFields
Still missing border testing there, since it's one pixel off
diff --git a/test/image/Makefile.am b/test/image/Makefile.am
index 52cd656..c40fd37 100644
--- a/test/image/Makefile.am
+++ b/test/image/Makefile.am
@@ -112,5 +112,12 @@ EXTRA_DIST = \
replace-shape-shape-6.swf \
replace-shape-shape-6.swf.png \
replace-shape-shape-7.swf \
- replace-shape-shape-7.swf.png
+ replace-shape-shape-7.swf.png \
+ text-field-empty.as \
+ text-field-empty-6.swf \
+ text-field-empty-6.swf.png \
+ text-field-empty-7.swf \
+ text-field-empty-7.swf.png \
+ text-field-empty-8.swf \
+ text-field-empty-8.swf.png
diff --git a/test/image/text-field-empty-6.swf b/test/image/text-field-empty-6.swf
new file mode 100644
index 0000000..274518a
Binary files /dev/null and b/test/image/text-field-empty-6.swf differ
diff --git a/test/image/text-field-empty-6.swf.png b/test/image/text-field-empty-6.swf.png
new file mode 100644
index 0000000..27310dd
Binary files /dev/null and b/test/image/text-field-empty-6.swf.png differ
diff --git a/test/image/text-field-empty-7.swf b/test/image/text-field-empty-7.swf
new file mode 100644
index 0000000..cdfbd91
Binary files /dev/null and b/test/image/text-field-empty-7.swf differ
diff --git a/test/image/text-field-empty-7.swf.png b/test/image/text-field-empty-7.swf.png
new file mode 100644
index 0000000..27310dd
Binary files /dev/null and b/test/image/text-field-empty-7.swf.png differ
diff --git a/test/image/text-field-empty-8.swf b/test/image/text-field-empty-8.swf
new file mode 100644
index 0000000..7f0bdac
Binary files /dev/null and b/test/image/text-field-empty-8.swf differ
diff --git a/test/image/text-field-empty-8.swf.png b/test/image/text-field-empty-8.swf.png
new file mode 100644
index 0000000..27310dd
Binary files /dev/null and b/test/image/text-field-empty-8.swf.png differ
diff --git a/test/image/text-field-empty.as b/test/image/text-field-empty.as
new file mode 100644
index 0000000..b4b4fce
--- /dev/null
+++ b/test/image/text-field-empty.as
@@ -0,0 +1,17 @@
+// makeswf -v 7 -r 1 -s 200x150 -o text-field-empty-7.swf text-field-empty.as
+
+this.createTextField ("t1", 0, 25, 25, 50, 50);
+
+t1.background = true;
+t1.backgroundColor = 0x00FF00;
+
+this.createTextField ("t2", 1, 45, 45, 95, 95);
+
+// FIXME: we currently render right and bottom border one pixel too early
+//t2.border = true;
+//t2.borderColor = 0xFF0000;
+t2.background = true;
+t2.backgroundColor = 0x0000FF;
+
+// this one won't show up at all
+this.createTextField ("t3", 2, 75, 75, 50, 50);
commit ff972fbc4a41007638ed62b7d217add4510735ca
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date: Thu Nov 1 21:14:53 2007 +0200
Some OOM fixes to the array code
diff --git a/libswfdec/swfdec_as_array.c b/libswfdec/swfdec_as_array.c
index 57fb85e..1c9c61a 100644
--- a/libswfdec/swfdec_as_array.c
+++ b/libswfdec/swfdec_as_array.c
@@ -761,6 +761,8 @@ swfdec_as_array_concat (SwfdecAsContext *cx, SwfdecAsObject *object, guint argc,
const char *var;
object_new = swfdec_as_array_new (cx);
+ if (object_new == NULL)
+ return;
array_new = SWFDEC_AS_ARRAY (object_new);
swfdec_as_array_append_array (array_new, object);
@@ -814,6 +816,8 @@ swfdec_as_array_slice (SwfdecAsContext *cx, SwfdecAsObject *object, guint argc,
}
object_new = swfdec_as_array_new (cx);
+ if (object_new == NULL)
+ return;
array_new = SWFDEC_AS_ARRAY (object_new);
swfdec_as_array_append_array_range (array_new, object, start_index, num);
@@ -851,6 +855,8 @@ swfdec_as_array_splice (SwfdecAsContext *cx, SwfdecAsObject *object, guint argc,
num_add = (argc > 2 ? argc - 2 : 0);
object_new = swfdec_as_array_new (cx);
+ if (object_new == NULL)
+ return;
array_new = SWFDEC_AS_ARRAY (object_new);
swfdec_as_array_append_array_range (array_new, object, start_index,
@@ -1228,11 +1234,13 @@ swfdec_as_array_do_sort (SwfdecAsObject *object, gint32 options,
if (fdata.options & ARRAY_SORT_OPTION_RETURNINDEXEDARRAY) {
// make a new array and fill it with numbers based on the order
fdata.object_new = swfdec_as_array_new (object->context);
- swfdec_as_object_foreach (object, swfdec_as_array_foreach_sort_indexedarray,
- &fdata);
- // we only have the elements that have been set so far, fill in the blanks
- swfdec_as_array_sort_set_undefined_indexedarray (object, &fdata);
- SWFDEC_AS_VALUE_SET_OBJECT (ret, fdata.object_new);
+ if (fdata.object_new != NULL) {
+ swfdec_as_object_foreach (object, swfdec_as_array_foreach_sort_indexedarray,
+ &fdata);
+ // we only have the elements that have been set so far, fill in the blanks
+ swfdec_as_array_sort_set_undefined_indexedarray (object, &fdata);
+ SWFDEC_AS_VALUE_SET_OBJECT (ret, fdata.object_new);
+ }
} else {
// rename properties based on the new order
swfdec_as_object_foreach_rename (object,
commit 708c0f6ca1361131a717648117060a31946da1c8
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date: Thu Nov 1 20:50:37 2007 +0200
Some fixes to background and border drawing in TextField
diff --git a/libswfdec/swfdec_text_field_movie.c b/libswfdec/swfdec_text_field_movie.c
index 5d499b2..2780b7e 100644
--- a/libswfdec/swfdec_text_field_movie.c
+++ b/libswfdec/swfdec_text_field_movie.c
@@ -591,19 +591,23 @@ swfdec_text_field_movie_render (SwfdecMovie *movie, cairo_t *cr,
cairo_clip (cr);
if (text->background) {
- cairo_rectangle (cr, limit.x0, limit.y0, limit.x1, limit.y1);
+ cairo_rectangle (cr, limit.x0, limit.y0, limit.x1 - limit.x0, limit.y1 - limit.y0);
color = swfdec_color_apply_transform (text_movie->background_color, trans);
swfdec_color_set_source (cr, color);
cairo_fill (cr);
}
if (text->border) {
- cairo_rectangle (cr, movie->original_extents.x0,
- movie->original_extents.y0, movie->original_extents.x1,
- movie->original_extents.y1);
+ cairo_rectangle (cr, movie->original_extents.x0 + SWFDEC_DOUBLE_TO_TWIPS (1),
+ movie->original_extents.y0, movie->original_extents.x1 -
+ movie->original_extents.x0 - SWFDEC_DOUBLE_TO_TWIPS (1),
+ movie->original_extents.y1 - movie->original_extents.y0 -
+ SWFDEC_DOUBLE_TO_TWIPS (1));
color = swfdec_color_apply_transform (text_movie->border_color, trans);
swfdec_color_set_source (cr, color);
cairo_set_line_width (cr, SWFDEC_DOUBLE_TO_TWIPS (1));
+ cairo_set_operator (cr, CAIRO_OPERATOR_OVER);
+ cairo_set_antialias (cr, CAIRO_ANTIALIAS_NONE);
cairo_stroke (cr);
}
commit cd7ef475d2811b1283cc9a8a2ce0d2a0dd086981
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date: Thu Nov 1 20:50:00 2007 +0200
Fix another OOM error, in swfdec_as_object_new
diff --git a/libswfdec/swfdec_as_object.c b/libswfdec/swfdec_as_object.c
index 665b608..f8b8f77 100644
--- a/libswfdec/swfdec_as_object.c
+++ b/libswfdec/swfdec_as_object.c
@@ -687,6 +687,8 @@ swfdec_as_object_new (SwfdecAsContext *context)
g_assert (context->Object_prototype);
object = swfdec_as_object_new_empty (context);
+ if (object == NULL)
+ return NULL;
SWFDEC_AS_VALUE_SET_OBJECT (&val, context->Object);
swfdec_as_object_set_variable_and_flags (object, SWFDEC_AS_STR_constructor,
&val, SWFDEC_AS_VARIABLE_HIDDEN | SWFDEC_AS_VARIABLE_PERMANENT);
More information about the Swfdec
mailing list