[Swfdec-commits] 37 commits - swfdec/swfdec_player.c swfdec/swfdec_style_sheet.c swfdec/swfdec_text_field_movie_as.c swfdec/swfdec_text_field_movie.c swfdec/swfdec_text_field_movie.h swfdec/swfdec_text_field_movie_html.c test/image test/trace
Pekka Lampila
medar at kemper.freedesktop.org
Thu Mar 13 15:29:07 PDT 2008
swfdec/swfdec_player.c | 7
swfdec/swfdec_style_sheet.c | 3
swfdec/swfdec_text_field_movie.c | 491 ++++++++++---
swfdec/swfdec_text_field_movie.h | 21
swfdec/swfdec_text_field_movie_as.c | 15
swfdec/swfdec_text_field_movie_html.c | 74 +
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 | 5
test/trace/Makefile.am | 17
test/trace/stylesheet-parse-8.swf |binary
test/trace/stylesheet-parse-8.swf.trace | 132 +++
test/trace/stylesheet-parsecolor-5.swf |binary
test/trace/stylesheet-parsecolor-5.swf.trace | 63 -
test/trace/stylesheet-parsecolor-6.swf |binary
test/trace/stylesheet-parsecolor-6.swf.trace | 59 -
test/trace/stylesheet-parsecolor-7.swf |binary
test/trace/stylesheet-parsecolor-7.swf.trace | 74 +
test/trace/stylesheet-parsecolor-8.swf |binary
test/trace/stylesheet-parsecolor-8.swf.trace | 136 +++
test/trace/stylesheet-parsecssfontfamily-5.swf |binary
test/trace/stylesheet-parsecssfontfamily-5.swf.trace | 63 -
test/trace/stylesheet-parsecssfontfamily-6.swf |binary
test/trace/stylesheet-parsecssfontfamily-6.swf.trace | 59 -
test/trace/stylesheet-parsecssfontfamily-7.swf |binary
test/trace/stylesheet-parsecssfontfamily-7.swf.trace | 74 +
test/trace/stylesheet-parsecssfontfamily-8.swf |binary
test/trace/stylesheet-parsecssfontfamily-8.swf.trace | 132 +++
test/trace/text-field-html-input-5.swf |binary
test/trace/text-field-html-input-5.swf.trace | 348 +++++++++
test/trace/text-field-html-input-6.swf |binary
test/trace/text-field-html-input-6.swf.trace | 706 ++++++++++++++++++-
test/trace/text-field-html-input-7.swf |binary
test/trace/text-field-html-input-7.swf.trace | 654 ++++++++++++++++-
test/trace/text-field-html-input-8.swf |binary
test/trace/text-field-html-input-8.swf.trace | 652 ++++++++++++++++-
test/trace/text-field-html-input.as | 32
test/trace/text-field-html-new-format-5.swf |binary
test/trace/text-field-html-new-format-5.swf.trace | 6
test/trace/text-field-html-new-format-6.swf |binary
test/trace/text-field-html-new-format-6.swf.trace | 6
test/trace/text-field-html-new-format-7.swf |binary
test/trace/text-field-html-new-format-7.swf.trace | 6
test/trace/text-field-html-new-format-8.swf |binary
test/trace/text-field-html-new-format-8.swf.trace | 6
test/trace/text-field-html-new-format.as | 41 +
test/trace/text-field-variable-5.swf |binary
test/trace/text-field-variable-5.swf.trace | 6
test/trace/text-field-variable-6.swf |binary
test/trace/text-field-variable-6.swf.trace | 10
test/trace/text-field-variable-7.swf |binary
test/trace/text-field-variable-7.swf.trace | 10
test/trace/text-field-variable-8.swf |binary
test/trace/text-field-variable-8.swf.trace | 10
test/trace/text-field-variable.as | 16
59 files changed, 3487 insertions(+), 447 deletions(-)
New commits:
commit 2f561ebf00b90d5e1ad27be5f418c1f8d6c33eb0
Merge: 6176f7f... b4288cd...
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date: Fri Mar 14 00:26:09 2008 +0200
Merge branch 'master' into selection
commit 6176f7fd09d9b0fbae4c06cbe1719ca1deb2e5a2
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date: Thu Feb 21 19:44:40 2008 +0200
Call the mouse_move vfunc
diff --git a/swfdec/swfdec_player.c b/swfdec/swfdec_player.c
index e0e8ff9..d530225 100644
--- a/swfdec/swfdec_player.c
+++ b/swfdec/swfdec_player.c
@@ -1195,6 +1195,13 @@ swfdec_player_do_mouse_move (SwfdecPlayer *player, double x, double y)
swfdec_player_broadcast (player, SWFDEC_AS_STR_Mouse, SWFDEC_AS_STR_onMouseMove);
}
swfdec_player_grab_mouse_movie (player);
+ if (priv->mouse_grab) {
+ SwfdecMovieClass *klass = SWFDEC_MOVIE_GET_CLASS (priv->mouse_grab);
+ swfdec_player_stage_to_global (player, &x, &y);
+ swfdec_movie_global_to_local (priv->mouse_grab, &x, &y);
+ if (klass->mouse_move)
+ klass->mouse_move (priv->mouse_grab, x, y);
+ }
/* FIXME: allow events to pass through */
return TRUE;
commit 12ee3baaf082df5464519f0fa3278d384ff94dd7
Merge: e184c03... 3d747ed...
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date: Wed Feb 20 18:18:15 2008 +0200
Merge branch 'master' into selection
commit e184c030c9f03a72529b54bf26e8fa236533891b
Merge: c4d4834... 071dcd3...
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date: Tue Feb 19 21:07:07 2008 +0200
Merge branch 'master' into selection
Conflicts:
libswfdec/swfdec_load_object.c
libswfdec/swfdec_player.c
libswfdec/swfdec_style_sheet.c
libswfdec/swfdec_text_field_movie.c
libswfdec/swfdec_text_field_movie.h
libswfdec/swfdec_text_field_movie_as.c
libswfdec/swfdec_text_field_movie_html.c
diff --cc swfdec/swfdec_style_sheet.c
index 0000000,847b199..51dfa1c
mode 000000,100644..100644
--- a/swfdec/swfdec_style_sheet.c
+++ b/swfdec/swfdec_style_sheet.c
@@@ -1,0 -1,366 +1,367 @@@
+ /* Swfdec
+ * Copyright (C) 2007 Benjamin Otte <otte at gnome.org>
+ * 2007 Pekka Lampila <pekka.lampila at iki.fi>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301 USA
+ */
+
+ #ifdef HAVE_CONFIG_H
+ #include "config.h"
+ #endif
+
+ #include <string.h>
+
+ #include "swfdec_style_sheet.h"
+ #include "swfdec_as_native_function.h"
+ #include "swfdec_as_array.h"
+ #include "swfdec_as_object.h"
+ #include "swfdec_as_strings.h"
+ #include "swfdec_text_format.h"
+ #include "swfdec_text_field_movie.h"
+ #include "swfdec_debug.h"
+ #include "swfdec_internal.h"
+ #include "swfdec_as_internal.h"
+ #include "swfdec_player_internal.h"
+
+ enum {
+ UPDATE,
+ LAST_SIGNAL
+ };
+
+ G_DEFINE_TYPE (SwfdecStyleSheet, swfdec_style_sheet, SWFDEC_TYPE_AS_OBJECT)
+ static guint signals[LAST_SIGNAL] = { 0, };
+
+ static void
+ swfdec_style_sheet_class_init (SwfdecStyleSheetClass *klass)
+ {
+ signals[UPDATE] = g_signal_new ("update", G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE, 0);
+ }
+
+ static void
+ swfdec_style_sheet_init (SwfdecStyleSheet *style_sheet)
+ {
+ }
+
+ // Note: This overwrites any old object with the same name
+ static SwfdecAsObject *
+ swfdec_style_sheet_get_selector_object (SwfdecAsObject *object,
+ const char *name)
+ {
+ SwfdecAsValue val;
+ SwfdecAsObject *empty;
+
+ g_return_val_if_fail (SWFDEC_IS_AS_OBJECT (object), NULL);
+ g_return_val_if_fail (name != NULL, NULL);
+
+ empty = swfdec_as_object_new_empty (object->context);
+ SWFDEC_AS_VALUE_SET_OBJECT (&val, empty);
+ swfdec_as_object_unset_variable_flags (object, name,
+ SWFDEC_AS_VARIABLE_CONSTANT);
+ swfdec_as_object_set_variable (object, name, &val);
+
+ return empty;
+ }
+
+ static const char *
+ swfdec_style_sheet_parse_selectors (SwfdecAsContext *cx, const char *p,
+ SwfdecAsObject *object, GPtrArray *selectors)
+ {
+ const char *end;
+ const char *name;
+
+ g_return_val_if_fail (p != NULL && p != '\0' && !g_ascii_isspace (*p), NULL);
+ g_return_val_if_fail (SWFDEC_IS_AS_OBJECT (object), NULL);
+ g_return_val_if_fail (selectors != NULL, NULL);
+
+ p += strspn (p, " \t\r\n,");
+ if (*p == '{')
+ return NULL;
+
+ while (*p != '\0' && *p != '{') {
+ end = p + strcspn (p, " \t\r\n,{");
+ g_assert (end > p);
+
+ name = swfdec_as_context_give_string (cx, g_strndup (p, end - p));
+ g_ptr_array_add (selectors,
+ swfdec_style_sheet_get_selector_object (object, name));
+
+
+ p = end + strspn (end, " \t\r\n,");
+ if (*p != '{') {
+ // no , between selectors?
+ if (strchr (end, ',') == NULL || strchr (end, ',') > p)
+ return NULL;
+ }
+ }
+
+ if (*p != '{')
+ return NULL;
+
+ p++;
+ p = p + strspn (p, " \t\r\n");
+
+ // special case: don't allow empty declarations if not totally empty
- if (*(p-1) != '{' && (*p == '\0' || *p == '}'))
++ // except in version 8
++ if (cx->version < 8 && *(p-1) != '{' && (*p == '\0' || *p == '}'))
+ return NULL;
+
+ return p;
+ }
+
+ static char *
+ swfdec_style_sheet_convert_name (char *name)
+ {
+ char *p;
+
+ p = name;
+ while ((p = strchr (p, '-')) != NULL && *(p + 1) != '\0') {
+ memmove (p, p + 1, strlen (p + 1) + 1); // include NULL-byte
+ *p = g_ascii_toupper (*p);
+ p++;
+ };
+
+ return name;
+ }
+
+ static const char *
+ swfdec_style_sheet_parse_property (SwfdecAsContext *cx, const char *p,
+ const char **name, const char **value)
+ {
+ const char *end;
+
+ *name = NULL;
+ *value = NULL;
+
+ g_return_val_if_fail (p != NULL && p != '\0' && !g_ascii_isspace (*p), NULL);
+ g_return_val_if_fail (name != NULL, NULL);
+ g_return_val_if_fail (value != NULL, NULL);
+
+ end = p + strcspn (p, ":;");
+ if (*end == '\0' || *end == ';')
+ return NULL;
+
+ *name = swfdec_as_context_give_string (cx,
+ swfdec_style_sheet_convert_name (g_strndup (p, end - p)));
+
+ end++;
+ p = end + strspn (end, " \t\r\n");
+ if (*p == '\0')
+ return NULL;
+ end = p + strcspn (p, ";}");
+ if (*end == '\0')
+ return NULL;
+
+ if (end == p) {
+ *value = SWFDEC_AS_STR_EMPTY;
+ } else {
+ *value = swfdec_as_context_give_string (cx, g_strndup (p, end - p));
+ }
+
+ if (*end == '}') {
+ p = end;
+ } else {
+ end++;
+ p = end + strspn (end, " \t\r\n");
+ }
+
+ return p;
+ }
+
+ static SwfdecAsObject *
+ swfdec_style_sheet_parse (SwfdecAsContext *cx, const char *css)
+ {
+ guint i;
+ const char *p;
+ SwfdecAsValue val;
+ SwfdecAsObject *object;
+ GPtrArray *selectors;
+
+ g_return_val_if_fail (css != NULL, FALSE);
+
+ object = swfdec_as_object_new_empty (cx);
+ selectors = g_ptr_array_new ();
+
+ p = css + strspn (css, " \t\r\n");
+ while (p != NULL && *p != '\0')
+ {
+ if (selectors->len == 0) {
+ p = swfdec_style_sheet_parse_selectors (cx, p, object, selectors);
+ } else {
+ if (*p == '}') {
+ g_ptr_array_set_size (selectors, 0);
+ p++;
+ p += strspn (p, " \t\r\n");
+ } else {
+ const char *name, *value;
+ p = swfdec_style_sheet_parse_property (cx, p, &name, &value);
+ if (p != NULL) {
+ for (i = 0; i < selectors->len; i++) {
+ SWFDEC_AS_VALUE_SET_STRING (&val, value);
+ swfdec_as_object_set_variable (
+ (SwfdecAsObject *)(selectors->pdata[i]), name, &val);
+ }
+ }
+ }
+ }
+ }
+
+ g_ptr_array_free (selectors, TRUE);
+ if (p == NULL)
+ return NULL;
+
+ return object;
+ }
+
+ SWFDEC_AS_NATIVE (113, 100, swfdec_style_sheet_update)
+ void
+ swfdec_style_sheet_update (SwfdecAsContext *cx, SwfdecAsObject *object,
+ guint argc, SwfdecAsValue *argv, SwfdecAsValue *rval)
+ {
+ SwfdecStyleSheet *style;
+
+ SWFDEC_AS_CHECK (SWFDEC_TYPE_STYLESHEET, &style, "");
+
+ g_signal_emit (style, signals[UPDATE], 0);
+ }
+
+ SWFDEC_AS_NATIVE (113, 101, swfdec_style_sheet_parseCSSInternal)
+ void
+ swfdec_style_sheet_parseCSSInternal (SwfdecAsContext *cx,
+ SwfdecAsObject *object, guint argc, SwfdecAsValue *argv,
+ SwfdecAsValue *rval)
+ {
+ SwfdecAsObject *values;
+
+ if (argc < 1)
+ return;
+
+ values =
+ swfdec_style_sheet_parse (cx, swfdec_as_value_to_string (cx, &argv[0]));
+
+ if (values == NULL) {
+ SWFDEC_AS_VALUE_SET_NULL (rval);
+ } else {
+ SWFDEC_AS_VALUE_SET_OBJECT (rval, values);
+ }
+ }
+
+ SWFDEC_AS_NATIVE (113, 102, swfdec_style_sheet_parseCSSFontFamily)
+ void
+ swfdec_style_sheet_parseCSSFontFamily (SwfdecAsContext *cx,
+ SwfdecAsObject *object, guint argc, SwfdecAsValue *argv,
+ SwfdecAsValue *rval)
+ {
+ const char *name;
+
+ SWFDEC_AS_CHECK (0, NULL, "s", &name);
+
+ if (!g_ascii_strcasecmp (name, "mono")) {
+ SWFDEC_AS_VALUE_SET_STRING (rval, SWFDEC_AS_STR__typewriter);
+ } else if (!g_ascii_strcasecmp (name, "sans-serif")) {
+ SWFDEC_AS_VALUE_SET_STRING (rval, SWFDEC_AS_STR__sans);
+ } else if (!g_ascii_strcasecmp (name, "serif")) {
+ SWFDEC_AS_VALUE_SET_STRING (rval, SWFDEC_AS_STR__serif);
+ } else {
+ SWFDEC_AS_VALUE_SET_STRING (rval, name);
+ }
+ }
+
+ SWFDEC_AS_NATIVE (113, 103, swfdec_style_sheet_parseColor)
+ void
+ swfdec_style_sheet_parseColor (SwfdecAsContext *cx, SwfdecAsObject *object,
+ guint argc, SwfdecAsValue *argv, SwfdecAsValue *rval)
+ {
+ const char *value;
+ char *tail;
+ gint64 result;
+
+ SWFDEC_AS_VALUE_SET_NULL (rval);
+
+ SWFDEC_AS_CHECK (0, NULL, "s", &value);
+
+ if (strlen(value) != 7)
+ return;
+
+ if (value[0] != '#')
+ return;
+
+ result = g_ascii_strtoll (value + 1, &tail, 16);
+ if (*tail != '\0')
+ return;
+
+ SWFDEC_AS_VALUE_SET_INT (rval, result);
+ }
+
+ SWFDEC_AS_CONSTRUCTOR (113, 0, swfdec_style_sheet_construct, swfdec_style_sheet_get_type)
+ void
+ swfdec_style_sheet_construct (SwfdecAsContext *cx, SwfdecAsObject *object,
+ guint argc, SwfdecAsValue *argv, SwfdecAsValue *ret)
+ {
+ if (!swfdec_as_context_is_constructing (cx)) {
+ SWFDEC_FIXME ("What do we do if not constructing?");
+ return;
+ }
+
+ g_assert (SWFDEC_IS_STYLESHEET (object));
+ }
+
+ static SwfdecTextFormat *
+ swfdec_style_sheet_get_format (SwfdecStyleSheet *style, const char *name)
+ {
+ SwfdecAsObject *styles;
+ SwfdecAsValue val;
+
+ g_return_val_if_fail (SWFDEC_IS_STYLESHEET (style), NULL);
+ g_return_val_if_fail (name != NULL, NULL);
+
+ swfdec_as_object_get_variable (SWFDEC_AS_OBJECT (style),
+ SWFDEC_AS_STR__styles, &val);
+ if (!SWFDEC_AS_VALUE_IS_OBJECT (&val))
+ return NULL;
+ styles = SWFDEC_AS_VALUE_GET_OBJECT (&val);
+
+ swfdec_as_object_get_variable (styles, name, &val);
+ if (!SWFDEC_AS_VALUE_IS_OBJECT (&val))
+ return NULL;
+ if (!SWFDEC_IS_TEXT_FORMAT (SWFDEC_AS_VALUE_GET_OBJECT (&val)))
+ return NULL;
+
+ return SWFDEC_TEXT_FORMAT (SWFDEC_AS_VALUE_GET_OBJECT (&val));
+ }
+
+ SwfdecTextFormat *
+ swfdec_style_sheet_get_tag_format (SwfdecStyleSheet *style, const char *name)
+ {
+ return swfdec_style_sheet_get_format (style, name);
+ }
+
+ SwfdecTextFormat *
+ swfdec_style_sheet_get_class_format (SwfdecStyleSheet *style, const char *name)
+ {
+ char *name_full;
+
+ g_return_val_if_fail (SWFDEC_IS_STYLESHEET (style), NULL);
+ g_return_val_if_fail (name != NULL, NULL);
+
+ name_full = g_malloc (1 + strlen (name) + 1);
+ name_full[0] = '.';
+ memcpy (name_full + 1, name, strlen (name) + 1);
+
+ return swfdec_style_sheet_get_format (style, swfdec_as_context_give_string (
+ SWFDEC_AS_OBJECT (style)->context, name_full));
+ }
diff --cc swfdec/swfdec_text_field_movie.c
index 0000000,84a4001..bad9ac4
mode 000000,100644..100644
--- a/swfdec/swfdec_text_field_movie.c
+++ b/swfdec/swfdec_text_field_movie.c
@@@ -1,0 -1,1627 +1,1950 @@@
+ /* Swfdec
+ * Copyright (C) 2006 Benjamin Otte <otte at gnome.org>
+ * 2007 Pekka Lampila <pekka.lampila at iki.fi>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301 USA
+ */
+
+ #ifdef HAVE_CONFIG_H
+ #include "config.h"
+ #endif
+
+ #include <string.h>
+ #include <math.h>
+ #include <pango/pangocairo.h>
+
+ #include "swfdec_text_field_movie.h"
+ #include "swfdec_as_context.h"
+ #include "swfdec_as_strings.h"
+ #include "swfdec_as_interpret.h"
+ #include "swfdec_debug.h"
+ #include "swfdec_player_internal.h"
+ #include "swfdec_resource.h"
+ #include "swfdec_sandbox.h"
+ #include "swfdec_text_format.h"
+ #include "swfdec_xml.h"
+
+ G_DEFINE_TYPE (SwfdecTextFieldMovie, swfdec_text_field_movie, SWFDEC_TYPE_MOVIE)
+
+ #define EXTRA_MARGIN 2
+ #define BULLET_MARGIN 36
+
+ static void
+ swfdec_text_field_movie_update_extents (SwfdecMovie *movie,
+ SwfdecRect *extents)
+ {
+ swfdec_rect_union (extents, extents,
+ &SWFDEC_GRAPHIC (SWFDEC_TEXT_FIELD_MOVIE (movie)->text)->extents);
+ }
+
+ static void
+ swfdec_text_field_movie_invalidate (SwfdecMovie *movie, const cairo_matrix_t *matrix, gboolean last)
+ {
- SwfdecRect rect;
-
- swfdec_rect_transform (&rect,
- &SWFDEC_GRAPHIC (SWFDEC_TEXT_FIELD_MOVIE (movie)->text)->extents, matrix);
- swfdec_player_invalidate (SWFDEC_PLAYER (SWFDEC_AS_OBJECT (movie)->context), &rect);
++ SwfdecTextFieldMovie *text = SWFDEC_TEXT_FIELD_MOVIE (movie);
++ SwfdecRect rect, extended;
++
++ extended = SWFDEC_GRAPHIC (text->text)->extents;
++
++ // border is drawn partly outside the extents
++ if (text->text->border) {
++ extended.x1 += SWFDEC_TWIPS_TO_DOUBLE (1);
++ extended.y1 += SWFDEC_TWIPS_TO_DOUBLE (1);
++ }
++
++ swfdec_rect_transform (&rect, &extended, matrix);
++ swfdec_player_invalidate (
++ SWFDEC_PLAYER (SWFDEC_AS_OBJECT (movie)->context), &rect);
+ }
+
+ static void
+ swfdec_text_field_movie_ensure_asterisks (SwfdecTextFieldMovie *text,
+ guint length)
+ {
+ g_return_if_fail (SWFDEC_IS_TEXT_FIELD_MOVIE (text));
+
+ if (text->asterisks_length >= length)
+ return;
+
+ if (text->asterisks != NULL)
+ g_free (text->asterisks);
+
+ text->asterisks = g_malloc (length + 1);
+ memset (text->asterisks, '*', length);
+ text->asterisks[length] = 0;
+ text->asterisks_length = length;
+ }
+
+ static void
+ swfdec_text_paragraph_add_attribute (SwfdecParagraph *paragraph,
+ PangoAttribute *attr)
+ {
+ paragraph->attrs = g_slist_prepend (paragraph->attrs, attr);
+ }
+
+ static void
+ swfdec_text_paragraph_add_block (SwfdecParagraph *paragraph, int index_,
+ SwfdecTextFormat *format)
+ {
+ gint32 length, i;
+ SwfdecBlock *block;
+ SwfdecAsValue val;
+
+ block = g_new0 (SwfdecBlock, 1);
+
+ block->index_ = index_;
+
+ switch (format->align) {
+ case SWFDEC_TEXT_ALIGN_LEFT:
+ block->align = PANGO_ALIGN_LEFT;
+ block->justify = FALSE;
+ break;
+ case SWFDEC_TEXT_ALIGN_RIGHT:
+ block->align = PANGO_ALIGN_RIGHT;
+ block->justify = FALSE;
+ break;
+ case SWFDEC_TEXT_ALIGN_CENTER:
+ block->align = PANGO_ALIGN_CENTER;
+ block->justify = FALSE;
+ break;
+ case SWFDEC_TEXT_ALIGN_JUSTIFY:
+ block->align = PANGO_ALIGN_LEFT;
+ block->justify = TRUE;
+ break;
+ default:
+ g_assert_not_reached ();
+ }
+ block->leading = format->leading * 20 * PANGO_SCALE;
+ block->block_indent = format->block_indent * 20;
+ block->left_margin = format->left_margin * 20;
+ block->right_margin = format->right_margin * 20;
+
+ if (format->tab_stops != NULL) {
+ length = swfdec_as_array_get_length (format->tab_stops);
+ block->tab_stops = pango_tab_array_new (length, TRUE);
+ for (i = 0; i < length; i++) {
+ swfdec_as_array_get_value (format->tab_stops, i, &val);
+ g_assert (SWFDEC_AS_VALUE_IS_NUMBER (&val));
+ pango_tab_array_set_tab (block->tab_stops, i, PANGO_TAB_LEFT,
+ SWFDEC_AS_VALUE_GET_NUMBER (&val) * 20);
+ }
+ } else {
+ block->tab_stops = NULL;
+ }
+
+ paragraph->blocks = g_slist_prepend (paragraph->blocks, block);
+ }
+
+ static void
+ swfdec_text_field_movie_generate_paragraph (SwfdecTextFieldMovie *text,
+ SwfdecParagraph *paragraph, guint start_index, guint length)
+ {
+ SwfdecTextFormat *format, *format_prev;
+ guint index_;
+ GSList *iter;
+ PangoAttribute *attr_bold, *attr_color, *attr_font, *attr_italic,
+ *attr_letter_spacing, *attr_size, *attr_underline;
+ // TODO: kerning, display
+
+ g_assert (SWFDEC_IS_TEXT_FIELD_MOVIE (text));
+ g_assert (paragraph != NULL);
+ g_assert (start_index + length <= text->input->len);
+
+ paragraph->index_ = start_index;
+ paragraph->length = length;
+ if (text->input->str[start_index + length - 1] == '\n' ||
+ text->input->str[start_index + length - 1] == '\r') {
+ paragraph->newline = TRUE;
+ } else {
+ paragraph->newline = FALSE;
+ }
+
+ paragraph->blocks = NULL;
+ paragraph->attrs = NULL;
+
+ g_assert (text->formats != NULL);
+ for (iter = text->formats; iter->next != NULL &&
+ ((SwfdecFormatIndex *)(iter->next->data))->index_ <= start_index;
+ iter = iter->next);
+
+ index_ = start_index;
+ format = ((SwfdecFormatIndex *)(iter->data))->format;
+
+ // Paragraph formats
+ paragraph->bullet = format->bullet;
+ paragraph->indent = format->indent * 20 * PANGO_SCALE;
+
+ // Add new block
+ swfdec_text_paragraph_add_block (paragraph, 0, format);
+
+ // Open attributes
+ attr_bold = pango_attr_weight_new (
+ (format->bold ? PANGO_WEIGHT_BOLD : PANGO_WEIGHT_NORMAL));
+ attr_bold->start_index = 0;
+
+ attr_color = pango_attr_foreground_new (SWFDEC_COLOR_R (format->color) * 255,
+ SWFDEC_COLOR_G (format->color) * 255,
+ SWFDEC_COLOR_B (format->color) * 255);
+ attr_color->start_index = 0;
+
+ // FIXME: embed fonts
+ attr_font = pango_attr_family_new (format->font);
+ attr_font->start_index = 0;
+
+ attr_italic = pango_attr_style_new (
+ (format->italic ? PANGO_STYLE_ITALIC : PANGO_STYLE_NORMAL));
+ attr_italic->start_index = 0;
+
+ attr_letter_spacing = pango_attr_letter_spacing_new (
+ format->letter_spacing * 20 * PANGO_SCALE);
+ attr_letter_spacing->start_index = 0;
+
+ attr_size =
+ pango_attr_size_new_absolute (MAX (format->size, 1) * 20 * PANGO_SCALE);
+ attr_size->start_index = 0;
+
+ attr_underline = pango_attr_underline_new (
+ (format->underline ? PANGO_UNDERLINE_SINGLE : PANGO_UNDERLINE_NONE));
+ attr_underline->start_index = 0;
+
+ for (iter = iter->next;
+ iter != NULL &&
+ ((SwfdecFormatIndex *)(iter->data))->index_ < start_index + length;
+ iter = iter->next)
+ {
+ format_prev = format;
+ index_ = ((SwfdecFormatIndex *)(iter->data))->index_;
+ format = ((SwfdecFormatIndex *)(iter->data))->format;
+
+ // Add new block if necessary
+ if (format_prev->align != format->align ||
+ format_prev->bullet != format->bullet ||
+ format_prev->indent != format->indent ||
+ format_prev->leading != format->leading ||
+ format_prev->block_indent != format->block_indent ||
+ format_prev->left_margin != format->left_margin)
+ {
+ swfdec_text_paragraph_add_block (paragraph, index_ - start_index,
+ format);
+ }
+
+ // Change attributes if necessary
+ if (format_prev->bold != format->bold) {
+ attr_bold->end_index = index_ - start_index;
+ swfdec_text_paragraph_add_attribute (paragraph, attr_bold);
+
+ attr_bold = pango_attr_weight_new (
+ (format->bold ? PANGO_WEIGHT_BOLD : PANGO_WEIGHT_NORMAL));
+ attr_bold->start_index = index_ - start_index;
+ }
+
+ if (format_prev->color != format->color) {
+ attr_color->end_index = index_ - start_index;
+ swfdec_text_paragraph_add_attribute (paragraph, attr_color);
+
+ attr_color = pango_attr_foreground_new (
+ SWFDEC_COLOR_R (format->color) * 255,
+ SWFDEC_COLOR_G (format->color) * 255,
+ SWFDEC_COLOR_B (format->color) * 255);
+ attr_color->start_index = index_ - start_index;
+ }
+
+ if (format_prev->font != format->font) {
+ attr_font->end_index = index_ - start_index;
+ swfdec_text_paragraph_add_attribute (paragraph, attr_font);
+
+ // FIXME: embed fonts
+ attr_font = pango_attr_family_new (format->font);
+ attr_font->start_index = index_ - start_index;
+ }
+
+ if (format_prev->italic != format->italic) {
+ attr_italic->end_index = index_ - start_index;
+ swfdec_text_paragraph_add_attribute (paragraph, attr_italic);
+
+ attr_italic = pango_attr_style_new (
+ (format->italic ? PANGO_STYLE_ITALIC : PANGO_STYLE_NORMAL));
+ attr_italic->start_index = index_ - start_index;
+ }
+
+ if (format_prev->letter_spacing != format->letter_spacing) {
+ attr_letter_spacing->end_index = index_ - start_index;
+ swfdec_text_paragraph_add_attribute (paragraph, attr_letter_spacing);
+
+ attr_letter_spacing = pango_attr_letter_spacing_new (
+ format->letter_spacing * 20 * PANGO_SCALE);
+ attr_letter_spacing->start_index = index_ - start_index;
+ }
+
+ if (format_prev->size != format->size) {
+ attr_size->end_index = index_ - start_index;
+ swfdec_text_paragraph_add_attribute (paragraph, attr_size);
+
+ attr_size = pango_attr_size_new_absolute (
+ MAX (1, format->size) * 20 * PANGO_SCALE);
+ attr_size->start_index = index_ - start_index;
+ }
+
+ if (format_prev->underline != format->underline) {
+ attr_underline->end_index = index_ - start_index;
+ swfdec_text_paragraph_add_attribute (paragraph, attr_underline);
+
+ attr_underline = pango_attr_underline_new (
+ (format->underline ? PANGO_UNDERLINE_SINGLE : PANGO_UNDERLINE_NONE));
+ attr_underline->start_index = index_ - start_index;
+ }
+ }
+
+ // Close attributes
+ attr_bold->end_index = length;
+ swfdec_text_paragraph_add_attribute (paragraph, attr_bold);
+ attr_bold = NULL;
+
+ attr_color->end_index = length;
+ swfdec_text_paragraph_add_attribute (paragraph, attr_color);
+ attr_color = NULL;
+
+ attr_font->end_index = length;
+ swfdec_text_paragraph_add_attribute (paragraph, attr_font);
+ attr_font = NULL;
+
+ attr_italic->end_index = length;
+ swfdec_text_paragraph_add_attribute (paragraph, attr_italic);
+ attr_italic = NULL;
+
+ attr_letter_spacing->end_index = length;
+ swfdec_text_paragraph_add_attribute (paragraph, attr_letter_spacing);
+ attr_letter_spacing = NULL;
+
+ attr_size->end_index = length;
+ swfdec_text_paragraph_add_attribute (paragraph, attr_size);
+ attr_size = NULL;
+
+ attr_underline->end_index = length;
+ swfdec_text_paragraph_add_attribute (paragraph, attr_underline);
+ attr_underline = NULL;
+
+ // reverse blocks since we use prepend to add them
+ paragraph->blocks = g_slist_reverse (paragraph->blocks);
+ }
+
+ static SwfdecParagraph *
+ swfdec_text_field_movie_get_paragraphs (SwfdecTextFieldMovie *text, int *num)
+ {
+ GArray *paragraphs;
+ SwfdecParagraph paragraph;
+ const char *p, *end;
+ guint max_length;
+
+ g_assert (SWFDEC_IS_TEXT_FIELD_MOVIE (text));
+
+ paragraphs = g_array_new (TRUE, TRUE, sizeof (SwfdecParagraph));
+
+ max_length = 0;
+ p = text->input->str;
+ while (*p != '\0')
+ {
+ end = strpbrk (p, "\r\n");
+ if (end == NULL) {
+ end = strchr (p, '\0');
+ } else {
+ end++;
+ }
+
+ if ((guint) (end - p) > max_length)
+ max_length = end - p;
+
+ swfdec_text_field_movie_generate_paragraph (text, ¶graph,
+ p - text->input->str, end - p);
+ paragraphs = g_array_append_val (paragraphs, paragraph);
+
+ p = end;
+ }
+
+ if (num != NULL)
+ *num = paragraphs->len;
+
+ if (text->text->password)
+ swfdec_text_field_movie_ensure_asterisks (text, max_length);
+
+ return (SwfdecParagraph *) (void *) g_array_free (paragraphs, FALSE);
+ }
+
+ static void
+ swfdec_text_field_movie_free_paragraphs (SwfdecParagraph *paragraphs)
+ {
+ GSList *iter;
+ int i;
+
+ g_return_if_fail (paragraphs != NULL);
+
+ for (i = 0; paragraphs[i].blocks != NULL; i++)
+ {
+ for (iter = paragraphs[i].blocks; iter != NULL; iter = iter->next) {
+ if (((SwfdecBlock *)(iter->data))->tab_stops)
+ pango_tab_array_free (((SwfdecBlock *)(iter->data))->tab_stops);
+ g_free (iter->data);
+ }
+ g_slist_free (paragraphs[i].blocks);
+
+ for (iter = paragraphs[i].attrs; iter != NULL; iter = iter->next) {
+ pango_attribute_destroy ((PangoAttribute *)(iter->data));
+ }
+ g_slist_free (paragraphs[i].attrs);
+ }
+ g_free (paragraphs);
+ }
+
+ /*
+ * Rendering
+ */
+ static PangoAttrList *
+ swfdec_text_field_movie_paragraph_get_attr_list (
+ const SwfdecParagraph *paragraph, guint index_,
+ const SwfdecColorTransform *trans)
+ {
+ PangoAttrList *attr_list;
+ GSList *iter;
+
+ attr_list = pango_attr_list_new ();
+
+ for (iter = paragraph->attrs; iter != NULL; iter = iter->next)
+ {
+ PangoAttribute *attr;
+
+ if (((PangoAttribute *)iter->data)->end_index <= index_)
+ continue;
+
+ attr = pango_attribute_copy ((PangoAttribute *)iter->data);
+
+ if (attr->klass->type == PANGO_ATTR_FOREGROUND && trans != NULL &&
+ !swfdec_color_transform_is_identity (trans))
+ {
+ SwfdecColor color;
+ PangoColor color_p;
+
+ color_p = ((PangoAttrColor *)attr)->color;
+
+ color = SWFDEC_COLOR_COMBINE (color_p.red >> 8, color_p.green >> 8,
+ color_p.blue >> 8, 255);
+ color = swfdec_color_apply_transform (color, trans);
+
+ color_p.red = SWFDEC_COLOR_R (color) << 8;
+ color_p.green = SWFDEC_COLOR_G (color) << 8;
+ color_p.blue = SWFDEC_COLOR_B (color) << 8;
+ }
+
+ attr->start_index =
+ (attr->start_index > index_ ? attr->start_index - index_ : 0);
+ attr->end_index = attr->end_index - index_;
+ pango_attr_list_insert (attr_list, attr);
+ }
+
+ return attr_list;
+ }
+
-static int
-swfdec_text_field_movie_layout_get_last_line_baseline (PangoLayout *playout)
-{
- int baseline;
- PangoLayoutIter *iter;
-
- g_return_val_if_fail (playout != NULL, 0);
-
- iter = pango_layout_get_iter (playout);
- while (!pango_layout_iter_at_last_line (iter))
- pango_layout_iter_next_line (iter);
-
- baseline = pango_layout_iter_get_baseline (iter) / PANGO_SCALE;
-
- pango_layout_iter_free (iter);
-
- return baseline;
-}
-
+ static void
+ swfdec_text_field_movie_attr_list_get_ascent_descent (PangoAttrList *attr_list,
+ guint pos, int *ascent, int *descent)
+ {
+ PangoAttrIterator *attr_iter;
+ PangoFontDescription *desc;
+ PangoFontMap *fontmap;
+ PangoFont *font;
+ PangoFontMetrics *metrics;
+ PangoContext *pcontext;
+ int end;
+
+ if (ascent != NULL)
+ *ascent = 0;
+ if (descent != NULL)
+ *descent = 0;
+
+ g_return_if_fail (attr_list != NULL);
+
+ attr_iter = pango_attr_list_get_iterator (attr_list);
+ pango_attr_iterator_range (attr_iter, NULL, &end);
+ while ((guint)end < pos && pango_attr_iterator_next (attr_iter)) {
+ pango_attr_iterator_range (attr_iter, NULL, &end);
+ }
+ desc = pango_font_description_new ();
+ pango_attr_iterator_get_font (attr_iter, desc, NULL, NULL);
+ fontmap = pango_cairo_font_map_get_default ();
+ pcontext =
+ pango_cairo_font_map_create_context (PANGO_CAIRO_FONT_MAP (fontmap));
+ font = pango_font_map_load_font (fontmap, pcontext, desc);
+ metrics = pango_font_get_metrics (font, NULL);
+
+ if (ascent != NULL)
+ *ascent = pango_font_metrics_get_ascent (metrics) / PANGO_SCALE;
+ if (descent != NULL)
+ *descent = pango_font_metrics_get_descent (metrics) / PANGO_SCALE;
+
+ g_object_unref (pcontext);
+ pango_font_metrics_unref (metrics);
+ pango_font_description_free (desc);
+ pango_attr_iterator_destroy (attr_iter);
+ }
+
+ static SwfdecLayout *
+ swfdec_text_field_movie_get_layouts (SwfdecTextFieldMovie *text, int *num,
+ cairo_t *cr, const SwfdecParagraph *paragraphs,
+ const SwfdecColorTransform *trans)
+ {
+ GArray *layouts;
+ guint i;
+ SwfdecParagraph *paragraphs_free;
+
+ g_assert (SWFDEC_IS_TEXT_FIELD_MOVIE (text));
+
+ if (cr == NULL)
+ cr = text->cr;
+
+ if (paragraphs == NULL) {
+ paragraphs_free = swfdec_text_field_movie_get_paragraphs (text, NULL);
+ paragraphs = paragraphs_free;
+ } else {
+ paragraphs_free = NULL;
+ }
+
+ layouts = g_array_new (TRUE, TRUE, sizeof (SwfdecLayout));
+
+ for (i = 0; paragraphs[i].blocks != NULL; i++)
+ {
+ GSList *iter;
+ guint skip;
+
+ skip = 0;
+ for (iter = paragraphs[i].blocks; iter != NULL; iter = iter->next)
+ {
+ SwfdecLayout layout;
+ PangoLayout *playout;
+ PangoAttrList *attr_list;
+ SwfdecBlock *block;
+ int width;
+ guint length;
- gboolean end_of_paragraph;
+
+ block = (SwfdecBlock *)iter->data;
+ if (iter->next != NULL) {
+ length =
+ ((SwfdecBlock *)(iter->next->data))->index_ - block->index_;
+ } else {
+ length = paragraphs[i].length - block->index_;
+ if (paragraphs[i].newline)
+ length -= 1;
+ }
+
+ if (skip > length) {
+ skip -= length;
+ continue;
+ }
+
+ // create layout
+ playout = layout.layout = pango_cairo_create_layout (cr);
++ pango_layout_set_single_paragraph_mode (playout, TRUE);
+
+ // set rendering position
+ layout.offset_x = block->left_margin + block->block_indent;
+ if (paragraphs[i].bullet)
+ layout.offset_x += SWFDEC_DOUBLE_TO_TWIPS (BULLET_MARGIN);
+
+ width = SWFDEC_MOVIE (text)->original_extents.x1 -
+ SWFDEC_MOVIE (text)->original_extents.x0 - block->right_margin -
+ layout.offset_x;
+
+ if (block->index_ == 0 && paragraphs[i].indent < 0) {
+ // limit negative indent to not go over leftMargin + blockIndent
+ int indent = MAX (paragraphs[i].indent / PANGO_SCALE,
+ -(block->left_margin + block->block_indent));
+ layout.offset_x += indent;
+ width += -indent;
+ }
+
+ if (text->text->word_wrap) {
+ pango_layout_set_wrap (playout, PANGO_WRAP_WORD_CHAR);
+ pango_layout_set_width (playout, width * PANGO_SCALE);
+ pango_layout_set_alignment (playout, block->align);
+ pango_layout_set_justify (playout, block->justify);
+ } else {
+ pango_layout_set_width (playout, -1);
+ }
+
+ // set paragraph styles
+ if (block->index_ == 0) {
+ pango_layout_set_indent (playout, paragraphs[i].indent);
+ layout.bullet = paragraphs[i].bullet;
+ } else {
+ pango_layout_set_indent (playout, 0);
+ layout.bullet = FALSE;
+ }
+
+ // set block styles
+ pango_layout_set_spacing (playout, block->leading);
+ if (block->tab_stops != NULL)
+ pango_layout_set_tabs (playout, block->tab_stops);
+
+ // set text attributes
+ attr_list = swfdec_text_field_movie_paragraph_get_attr_list (
+ ¶graphs[i], block->index_ + skip, trans);
++
++ // add background for selection
++ layout.index_ = paragraphs[i].index_ + block->index_ + skip;
++ if (text->text->selectable && text->cursor != text->selection_end &&
++ layout.index_ < MAX (text->cursor, text->selection_end)) {
++ SwfdecColor color;
++ PangoAttribute *attr_fg, *attr_bg;
++
++ color = SWFDEC_COLOR_COMBINE (255, 255, 255, 255);
++ if (trans != NULL)
++ color = swfdec_color_apply_transform (color, trans);
++ attr_fg = pango_attr_foreground_new (SWFDEC_COLOR_R (color) << 8,
++ SWFDEC_COLOR_G (color) << 8, SWFDEC_COLOR_B (color) << 8);
++
++ color = SWFDEC_COLOR_COMBINE (0, 0, 0, 255);
++ if (trans != NULL)
++ color = swfdec_color_apply_transform (color, trans);
++ attr_bg = pango_attr_background_new (SWFDEC_COLOR_R (color) << 8,
++ SWFDEC_COLOR_G (color) << 8, SWFDEC_COLOR_B (color) << 8);
++
++ if (MIN (text->cursor, text->selection_end) > layout.index_) {
++ attr_fg->start_index = attr_bg->start_index =
++ MIN (text->cursor, text->selection_end) - layout.index_;
++ } else {
++ attr_fg->start_index = attr_bg->start_index = 0;
++ }
++ attr_bg->end_index = attr_fg->end_index =
++ MAX (text->cursor, text->selection_end) - layout.index_;
++
++ pango_attr_list_insert (attr_list, attr_fg);
++ pango_attr_list_insert (attr_list, attr_bg);
++ }
++
++ // add shape for newline character at the end
++ if (paragraphs[i].newline) {
++ int ascent, descent;
++ PangoRectangle rect;
++ PangoAttribute *attr;
++
++ swfdec_text_field_movie_attr_list_get_ascent_descent (attr_list,
++ paragraphs[i].length - block->index_ - skip, &ascent, &descent);
++
++ rect.x = 0;
++ rect.width = 0;
++ rect.y = -ascent * PANGO_SCALE;
++ rect.height = descent * PANGO_SCALE;
++
++ attr = pango_attr_shape_new (&rect, &rect);
++
++ attr->end_index = paragraphs[i].length - block->index_ - skip;
++ attr->start_index = attr->end_index - 1;
++
++ pango_attr_list_insert (attr_list, attr);
++ }
++
+ pango_layout_set_attributes (playout, attr_list);
+
+ if (text->text->password) {
+ pango_layout_set_text (playout, text->asterisks, paragraphs[i].length -
- block->index_ - skip - (paragraphs[i].newline ? 1 : 0));
++ block->index_ - skip);
+ } else {
+ pango_layout_set_text (playout,
+ text->input->str + paragraphs[i].index_ + block->index_ + skip,
- paragraphs[i].length - block->index_ - skip -
- (paragraphs[i].newline ? 1 : 0));
++ paragraphs[i].length - block->index_ - skip);
+ }
+
- end_of_paragraph = TRUE;
+ if (iter->next != NULL && text->text->word_wrap)
+ {
+ PangoLayoutLine *line;
+ int line_num;
+ guint skip_new;
+
+ pango_layout_index_to_line_x (playout, length - skip, FALSE, &line_num,
+ NULL);
+ if (line_num < pango_layout_get_line_count (playout) - 1) {
- end_of_paragraph = FALSE;
+ line = pango_layout_get_line_readonly (playout, line_num);
+ skip_new = line->start_index + line->length - (length - skip);
+ pango_layout_set_text (playout,
+ text->input->str + paragraphs[i].index_ + block->index_ + skip,
+ length - skip + skip_new);
+ skip = skip_new;
+ }
+ }
+ else
+ {
+ if (!text->text->word_wrap && block->align != PANGO_ALIGN_LEFT) {
+ int line_width;
+ pango_layout_get_pixel_size (playout, &line_width, 0);
+ if (line_width < width) {
+ if (block->align == PANGO_ALIGN_RIGHT) {
+ layout.offset_x += width - line_width;
+ } else if (block->align == PANGO_ALIGN_CENTER) {
+ layout.offset_x += (width - line_width) / 2;
+ } else {
+ g_assert_not_reached ();
+ }
+ }
+ }
+
+ skip = 0;
+ }
+
+ pango_layout_get_pixel_size (playout, &layout.width, &layout.height);
+ layout.width += layout.offset_x + block->right_margin;
- layout.last_line_offset_y = 0;
-
- // figure out if we need to add extra height because of the size of the
- // line break character
- if (end_of_paragraph && paragraphs[i].newline)
- {
- int ascent, descent;
-
- swfdec_text_field_movie_attr_list_get_ascent_descent (attr_list,
- paragraphs[i].length - block->index_ - skip, &ascent, &descent);
-
- if (ascent + descent > layout.height) {
- int baseline =
- swfdec_text_field_movie_layout_get_last_line_baseline (playout);
- layout.last_line_offset_y = ascent - baseline;
- layout.height = ascent + descent;
- }
- }
+
+ pango_attr_list_unref (attr_list);
+
+ // add leading to last line too
+ layout.height += block->leading / PANGO_SCALE;
+
+ layouts = g_array_append_val (layouts, layout);
+
+ if (!text->text->word_wrap)
+ break;
+ }
+ }
+
+ if (paragraphs_free != NULL) {
+ swfdec_text_field_movie_free_paragraphs (paragraphs_free);
+ paragraphs_free = NULL;
+ paragraphs = NULL;
+ }
+
+ if (num != NULL)
+ *num = layouts->len;
+
+ return (SwfdecLayout *) (void *) g_array_free (layouts, FALSE);
+ }
+
+ static void
+ swfdec_text_field_movie_free_layouts (SwfdecLayout *layouts)
+ {
+ int i;
+
+ g_return_if_fail (layouts != NULL);
+
+ for (i = 0; layouts[i].layout != NULL; i++) {
+ g_object_unref (layouts[i].layout);
+ }
+
+ g_free (layouts);
+ }
+
+ static void
++swfdec_text_field_movie_line_position (SwfdecLayout *layouts, int line_num,
++ int *pixels, int *layout_num, int *line_in_layout)
++{
++ int current, i;
++
++ if (pixels != NULL)
++ *pixels = 0;
++
++ if (layout_num != NULL)
++ *layout_num = 0;
++
++ if (line_in_layout != NULL)
++ *line_in_layout = 0;
++
++ g_return_if_fail (layouts != NULL);
++
++ current = 1;
++ for (i = 0; layouts[i].layout != NULL && current < line_num; i++) {
++ current += pango_layout_get_line_count (layouts[i].layout);
++
++ if (pixels != NULL)
++ *pixels += layouts[i].height;
++ }
++
++ if (current > line_num) {
++ PangoLayoutIter *iter_line;
++
++ i--;
++ current -= pango_layout_get_line_count (layouts[i].layout);
++
++ if (pixels != NULL)
++ *pixels -= layouts[i].height;
++
++ iter_line = pango_layout_get_iter (layouts[i].layout);
++
++ while (++current < line_num) {
++ g_assert (!pango_layout_iter_at_last_line (iter_line));
++ pango_layout_iter_next_line (iter_line);
++
++ if (line_in_layout != NULL)
++ (*line_in_layout)++;
++ }
++
++ if (pixels != NULL) {
++ PangoRectangle rect;
++
++ pango_layout_iter_get_line_extents (iter_line, NULL, &rect);
++ pango_extents_to_pixels (NULL, &rect);
++
++ *pixels += rect.y;
++ }
++
++ pango_layout_iter_free (iter_line);
++ }
++
++ if (layout_num != NULL)
++ *layout_num = i;
++}
++
++static void
+ swfdec_text_field_movie_render (SwfdecMovie *movie, cairo_t *cr,
+ const SwfdecColorTransform *trans, const SwfdecRect *inval)
+ {
+ SwfdecTextFieldMovie *text_movie;
+ SwfdecTextField *text;
+ SwfdecLayout *layouts;
+ SwfdecRect limit;
+ SwfdecColor color;
+ SwfdecParagraph *paragraphs;
- int i, y, x, linenum;
++ int i, y, x, skip;
+ gboolean first;
+
+ g_return_if_fail (SWFDEC_IS_TEXT_FIELD_MOVIE (movie));
+ g_return_if_fail (cr != NULL);
+ g_return_if_fail (trans != NULL);
+ g_return_if_fail (inval != NULL);
+
+ /* textfields don't mask */
+ if (swfdec_color_transform_is_mask (trans))
+ return;
+
+ text_movie = SWFDEC_TEXT_FIELD_MOVIE (movie);
+ text = SWFDEC_TEXT_FIELD (movie->graphic);
+
+ paragraphs = swfdec_text_field_movie_get_paragraphs (text_movie, NULL);
+
+ swfdec_rect_intersect (&limit, &movie->original_extents, inval);
+
- cairo_rectangle (cr, limit.x0, limit.y0, limit.x1 - limit.x0,
- limit.y1 - limit.y0);
- cairo_clip (cr);
-
+ if (text->background) {
+ 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);
+ // always use full alpha
+ swfdec_color_set_source (cr, color | SWFDEC_COLOR_COMBINE (0, 0, 0, 255));
+ cairo_fill (cr);
+ }
+
+ if (text->border) {
- // FIXME: border should be partly outside the extents and should not be
- // scaled, but always be 1 pixel width
++ // FIXME: should not be scaled, but always be 1 pixel width
++ // TODO: should clip before to make things faster?
+ 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));
++ SWFDEC_DOUBLE_TO_TWIPS (0.5), movie->original_extents.y0 +
++ SWFDEC_DOUBLE_TO_TWIPS (0.5),
++ movie->original_extents.x1 - movie->original_extents.x0,
++ movie->original_extents.y1 - movie->original_extents.y0);
+ color = swfdec_color_apply_transform (text_movie->border_color, trans);
+ // always use full alpha
+ swfdec_color_set_source (cr, color | SWFDEC_COLOR_COMBINE (0, 0, 0, 255));
+ 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);
+ }
+
++ cairo_rectangle (cr, limit.x0, limit.y0, limit.x1 - limit.x0,
++ limit.y1 - limit.y0);
++ cairo_clip (cr);
++
+ layouts = swfdec_text_field_movie_get_layouts (text_movie, NULL, cr,
+ paragraphs, trans);
+
+ first = TRUE;
- linenum = 0;
- x = movie->original_extents.x0 + EXTRA_MARGIN +
++ x = movie->original_extents.x0 + SWFDEC_DOUBLE_TO_TWIPS (EXTRA_MARGIN) +
+ MIN (text_movie->hscroll, text_movie->hscroll_max);
- y = movie->original_extents.y0 + EXTRA_MARGIN;
++ y = movie->original_extents.y0 + SWFDEC_DOUBLE_TO_TWIPS (EXTRA_MARGIN);
++
++ swfdec_text_field_movie_line_position (layouts,
++ MIN (text_movie->scroll, text_movie->scroll_max), NULL, &i, &skip);
+
- for (i = 0; layouts[i].layout != NULL && y < limit.y1; i++)
++ for (; layouts[i].layout != NULL && y < limit.y1; i++)
+ {
+ SwfdecLayout *layout = &layouts[i];
+ PangoLayoutIter *iter_line;
+ PangoLayoutLine *line;
+ PangoRectangle rect;
+ int skipped;
+
+ iter_line = pango_layout_get_iter (layout->layout);
+
- if (layout->bullet && linenum + 1 >=
- MIN (text_movie->scroll, text_movie->scroll_max)) {
++ if (layout->bullet && skip == 0) {
+ PangoColor color_p;
+ PangoAttribute *attr;
+ PangoAttrIterator *attr_iter;
+
+ pango_layout_iter_get_line_extents (iter_line, NULL, &rect);
+ pango_extents_to_pixels (NULL, &rect);
+
+ cairo_new_sub_path (cr);
+
+ // get current color
+ attr_iter = pango_attr_list_get_iterator (
+ pango_layout_get_attributes (layout->layout));
+ attr = pango_attr_iterator_get (attr_iter, PANGO_ATTR_FOREGROUND);
+ color_p = ((PangoAttrColor *)attr)->color;
+ color = SWFDEC_COLOR_COMBINE (color_p.red >> 8, color_p.green >> 8,
+ color_p.blue >> 8, 255);
+ color = swfdec_color_apply_transform (color, trans);
+ pango_attr_iterator_destroy (attr_iter);
+
+ swfdec_color_set_source (cr, color);
+
+ cairo_arc (cr, x + layout->offset_x +
+ pango_layout_get_indent (layout->layout) -
+ SWFDEC_DOUBLE_TO_TWIPS (BULLET_MARGIN) / 2,
+ y + rect.height / 2, rect.height / 8, 20, 2 * M_PI);
+ cairo_fill (cr);
+ }
+
- skipped = 0;
- do {
- if (++linenum < MIN (text_movie->scroll, text_movie->scroll_max))
- continue;
++ if (skip > 0) {
++ for (skipped = 0; skipped < skip; skipped++) {
++ g_assert (!pango_layout_iter_at_last_line (iter_line));
++ pango_layout_iter_next_line (iter_line);
++ }
+
+ pango_layout_iter_get_line_extents (iter_line, NULL, &rect);
+ pango_extents_to_pixels (NULL, &rect);
+
- if (linenum == MIN (text_movie->scroll, text_movie->scroll_max))
- skipped = rect.y;
++ skipped = rect.y;
++ skip = 0;
++ } else {
++ skipped = 0;
++ }
++
++ do {
++ pango_layout_iter_get_line_extents (iter_line, NULL, &rect);
++ pango_extents_to_pixels (NULL, &rect);
+
+ if (!first && y + rect.y + rect.height > movie->original_extents.y1)
+ break;
+
+ first = FALSE;
+
+ if (y + rect.y > limit.y1)
+ break;
+
+ if (y + rect.y + rect.height < limit.y0 ||
+ x + layout->offset_x + rect.x > limit.x1 ||
+ x + layout->offset_x + rect.x + rect.width < limit.x0)
+ continue;
+
+ cairo_move_to (cr, x, y);
-
- if (pango_layout_iter_at_last_line (iter_line))
- cairo_rel_move_to (cr, 0, layout->last_line_offset_y);
+ cairo_rel_move_to (cr, layout->offset_x + rect.x,
+ pango_layout_iter_get_baseline (iter_line) / PANGO_SCALE - skipped);
+
+ line = pango_layout_iter_get_line_readonly (iter_line);
+ pango_cairo_show_layout_line (cr, line);
+ } while (pango_layout_iter_next_line (iter_line));
+
- if (linenum >= MIN (text_movie->scroll, text_movie->scroll_max)) {
- y += layout->height - skipped;
- skipped = 0;
- }
++ y += layout->height - skipped;
+
+ pango_layout_iter_free (iter_line);
+ }
+
+ swfdec_text_field_movie_free_layouts (layouts);
+
+ swfdec_text_field_movie_free_paragraphs (paragraphs);
+ }
+
+ void
+ swfdec_text_field_movie_update_scroll (SwfdecTextFieldMovie *text,
+ gboolean check_limits)
+ {
+ SwfdecLayout *layouts;
+ int i, num, y, visible, all, height;
+ double width, width_max;
+
+ g_return_if_fail (SWFDEC_IS_TEXT_FIELD_MOVIE (text));
+
+ layouts = swfdec_text_field_movie_get_layouts (text, &num, NULL, NULL, NULL);
+
+ width = SWFDEC_MOVIE (text)->original_extents.x1 -
+ SWFDEC_MOVIE (text)->original_extents.x0;
+ height = SWFDEC_MOVIE (text)->original_extents.y1 -
+ SWFDEC_MOVIE (text)->original_extents.y0;
+
+ width_max = width;
+ y = 0;
+ all = 0;
+ visible = 0;
+
+ for (i = num - 1; i >= 0; i--)
+ {
+ SwfdecLayout *layout = &layouts[i];
+ PangoLayoutIter *iter_line;
+ PangoRectangle rect;
+
+ if (layouts[i].width > width_max)
+ width_max = layouts[i].width;
+
+ y += layout->height;
+
+ iter_line = pango_layout_get_iter (layout->layout);
+
+ do {
+ pango_layout_iter_get_line_extents (iter_line, NULL, &rect);
+ pango_extents_to_pixels (NULL, &rect);
+
+ if (y - rect.y <= height)
+ visible++;
+
+ all++;
+ } while (pango_layout_iter_next_line (iter_line));
+
+ pango_layout_iter_free (iter_line);
+ }
+
+ swfdec_text_field_movie_free_layouts (layouts);
+ layouts = NULL;
+
+ if (text->scroll_max != all - visible + 1) {
+ text->scroll_max = all - visible + 1;
+ text->scroll_changed = TRUE;
+ }
+ if (text->hscroll_max != SWFDEC_TWIPS_TO_DOUBLE (width_max - width)) {
+ text->hscroll_max = SWFDEC_TWIPS_TO_DOUBLE (width_max - width);
+ text->scroll_changed = TRUE;
+ }
+
+ if (check_limits) {
+ if (text->scroll != CLAMP(text->scroll, 1, text->scroll_max)) {
+ text->scroll = CLAMP(text->scroll, 1, text->scroll_max);
+ text->scroll_changed = TRUE;
+ }
+ if (text->scroll_bottom != text->scroll + (visible > 0 ? visible - 1 : 0))
+ {
+ text->scroll_bottom = text->scroll + (visible > 0 ? visible - 1 : 0);
+ text->scroll_changed = TRUE;
+ }
+ if (text->hscroll != CLAMP(text->hscroll, 0, text->hscroll_max)) {
+ text->hscroll = CLAMP(text->hscroll, 0, text->hscroll_max);
+ text->scroll_changed = TRUE;
+ }
+ } else {
+ if (text->scroll_bottom < text->scroll ||
+ text->scroll_bottom > text->scroll_max + visible - 1) {
+ text->scroll_bottom = text->scroll;
+ text->scroll_changed = TRUE;
+ }
+ }
+ }
+
+ void
+ swfdec_text_field_movie_get_text_size (SwfdecTextFieldMovie *text, int *width,
+ int *height)
+ {
+ SwfdecLayout *layouts;
+ int i;
+
+ if (width != NULL)
+ *width = 0;
+ if (height != NULL)
+ *height = 0;
+
+ g_return_if_fail (SWFDEC_IS_TEXT_FIELD_MOVIE (text));
+ g_return_if_fail (width != NULL || height != NULL);
+
+ layouts = swfdec_text_field_movie_get_layouts (text, NULL, NULL, NULL, NULL);
+
+ for (i = 0; layouts[i].layout != NULL; i++) {
+ if (!text->text->word_wrap) {
+ if (width != NULL && layouts[i].width > *width)
+ *width = layouts[i].width;
+ }
+
+ if (height != NULL)
+ *height += layouts[i].height;
+ }
+
+ // align to get integer amount after TWIPS_TO_DOUBLE
+ if (width != NULL && *width % SWFDEC_TWIPS_SCALE_FACTOR != 0)
+ *width += SWFDEC_TWIPS_SCALE_FACTOR - *width % SWFDEC_TWIPS_SCALE_FACTOR;
+ if (height != NULL && *height % SWFDEC_TWIPS_SCALE_FACTOR != 0)
+ *height += SWFDEC_TWIPS_SCALE_FACTOR - *height % SWFDEC_TWIPS_SCALE_FACTOR;
+
+ swfdec_text_field_movie_free_layouts (layouts);
+ }
+
+ gboolean
+ swfdec_text_field_movie_auto_size (SwfdecTextFieldMovie *text)
+ {
+ SwfdecGraphic *graphic;
+ int height, width, diff;
+
+ g_return_val_if_fail (SWFDEC_IS_TEXT_FIELD_MOVIE (text), FALSE);
+
+ graphic = SWFDEC_GRAPHIC (text->text);
+
+ if (text->text->auto_size == SWFDEC_AUTO_SIZE_NONE)
+ return FALSE;
+
+ swfdec_text_field_movie_get_text_size (text, &width, &height);
+ width += SWFDEC_DOUBLE_TO_TWIPS (2 * EXTRA_MARGIN);
+ height += SWFDEC_DOUBLE_TO_TWIPS (2 * EXTRA_MARGIN);
+
+ if ((text->text->word_wrap ||
+ graphic->extents.x1 - graphic->extents.x0 == width) &&
+ graphic->extents.y1 - graphic->extents.y0 == height)
+ return FALSE;
+
+ swfdec_movie_invalidate_next (SWFDEC_MOVIE (text));
+
+ if (!text->text->word_wrap && graphic->extents.x1 -
+ graphic->extents.x0 != width)
+ {
+ switch (text->text->auto_size) {
+ case SWFDEC_AUTO_SIZE_LEFT:
+ graphic->extents.x1 = graphic->extents.x0 + width;
+ break;
+ case SWFDEC_AUTO_SIZE_RIGHT:
+ graphic->extents.x0 = graphic->extents.x1 - width;
+ break;
+ case SWFDEC_AUTO_SIZE_CENTER:
+ diff = (graphic->extents.x1 - graphic->extents.x0) - width;
+ graphic->extents.x0 += floor (diff / 2.0);
+ graphic->extents.x1 = graphic->extents.x0 + width;
+ break;
+ case SWFDEC_AUTO_SIZE_NONE:
+ default:
+ g_return_val_if_reached (FALSE);
+ }
+ }
+
+ if (graphic->extents.y1 - graphic->extents.y0 != height)
+ {
+ graphic->extents.y1 = graphic->extents.y0 + height;
+ }
+
+ swfdec_movie_queue_update (SWFDEC_MOVIE (text),
+ SWFDEC_MOVIE_INVALID_EXTENTS);
+
+ return TRUE;
+ }
+
+ static void
+ swfdec_text_field_movie_dispose (GObject *object)
+ {
+ SwfdecTextFieldMovie *text;
+ GSList *iter;
+
+ text = SWFDEC_TEXT_FIELD_MOVIE (object);
+
+ if (text->asterisks != NULL) {
+ g_free (text->asterisks);
+ text->asterisks = NULL;
+ text->asterisks_length = 0;
+ }
+
- if (SWFDEC_IS_STYLESHEET (text->style_sheet)) {
- g_signal_handlers_disconnect_matched (text->style_sheet,
- G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, text);
- g_object_remove_weak_pointer (G_OBJECT (text->style_sheet),
- (gpointer) &text->style_sheet);
++ if (text->style_sheet) {
++ if (SWFDEC_IS_STYLESHEET (text->style_sheet)) {
++ g_signal_handlers_disconnect_matched (text->style_sheet,
++ G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, text);
++ }
++ text->style_sheet = NULL;
+ }
- text->style_sheet = NULL;
+
+ for (iter = text->formats; iter != NULL; iter = iter->next) {
+ g_free (text->formats->data);
+ text->formats->data = NULL;
+ }
+ g_slist_free (text->formats);
+ text->formats = NULL;
+
+ g_string_free (text->input, TRUE);
+ text->input = NULL;
+
+ cairo_destroy (text->cr);
+ text->cr = NULL;
+ cairo_surface_destroy (text->surface);
+ text->surface = NULL;
+
+ G_OBJECT_CLASS (swfdec_text_field_movie_parent_class)->dispose (object);
+ }
+
+ static void
+ swfdec_text_field_movie_mark (SwfdecAsObject *object)
+ {
+ SwfdecTextFieldMovie *text;
+ GSList *iter;
+
+ text = SWFDEC_TEXT_FIELD_MOVIE (object);
+
+ if (text->variable != NULL)
+ swfdec_as_string_mark (text->variable);
+ swfdec_as_object_mark (SWFDEC_AS_OBJECT (text->format_new));
+ for (iter = text->formats; iter != NULL; iter = iter->next) {
+ swfdec_as_object_mark (
+ SWFDEC_AS_OBJECT (((SwfdecFormatIndex *)(iter->data))->format));
+ }
+ swfdec_as_object_mark (SWFDEC_AS_OBJECT (text->format_new));
+ if (text->style_sheet != NULL)
+ swfdec_as_object_mark (text->style_sheet);
+ if (text->style_sheet_input != NULL)
+ swfdec_as_string_mark (text->style_sheet_input);
+ if (text->restrict_ != NULL)
+ swfdec_as_string_mark (text->restrict_);
+
+ SWFDEC_AS_OBJECT_CLASS (swfdec_text_field_movie_parent_class)->mark (object);
+ }
+
+ static void
+ swfdec_text_field_movie_init_movie (SwfdecMovie *movie)
+ {
+ SwfdecTextFieldMovie *text = SWFDEC_TEXT_FIELD_MOVIE (movie);
+ SwfdecAsContext *cx;
+ SwfdecAsValue val;
+ gboolean needs_unuse;
+
+ needs_unuse = swfdec_sandbox_try_use (movie->resource->sandbox);
+
+ cx = SWFDEC_AS_OBJECT (movie)->context;
+
+ swfdec_text_field_movie_init_properties (cx);
+
+ swfdec_as_object_get_variable (cx->global, SWFDEC_AS_STR_TextField, &val);
+ if (SWFDEC_AS_VALUE_IS_OBJECT (&val)) {
+ swfdec_as_object_set_constructor (SWFDEC_AS_OBJECT (movie),
+ SWFDEC_AS_VALUE_GET_OBJECT (&val));
+ }
+
+ // listen self
+ SWFDEC_AS_VALUE_SET_OBJECT (&val, SWFDEC_AS_OBJECT (movie));
+ swfdec_as_object_call (SWFDEC_AS_OBJECT (movie), SWFDEC_AS_STR_addListener,
+ 1, &val, NULL);
+
+ // format
+ text->format_new =
+ SWFDEC_TEXT_FORMAT (swfdec_text_format_new_no_properties (cx));
+ if (!text->format_new)
+ goto out;
+
+ swfdec_text_format_set_defaults (text->format_new);
+ text->format_new->color = text->text->color;
+ text->format_new->align = text->text->align;
+ if (text->text->font != NULL) {
+ text->format_new->font =
+ swfdec_as_context_get_string (cx, text->text->font);
+ }
+ text->format_new->size = text->text->size / 20;
+ text->format_new->left_margin = text->text->left_margin / 20;
+ text->format_new->right_margin = text->text->right_margin / 20;
+ text->format_new->indent = text->text->indent / 20;
+ text->format_new->leading = text->text->leading / 20;
+
+ text->border_color = SWFDEC_COLOR_COMBINE (0, 0, 0, 0);
+ text->background_color = SWFDEC_COLOR_COMBINE (255, 255, 255, 0);
+
+ // text
+ if (text->text->input != NULL) {
+ swfdec_text_field_movie_set_text (text,
+ swfdec_as_context_get_string (cx, text->text->input),
+ text->text->html);
+ } else {
+ swfdec_text_field_movie_set_text (text, SWFDEC_AS_STR_EMPTY,
+ text->text->html);
+ }
+
+ // variable
+ if (text->text->variable != NULL) {
+ swfdec_text_field_movie_set_listen_variable (text,
+ swfdec_as_context_get_string (cx, text->text->variable));
+ }
+
+ out:
+ if (needs_unuse)
+ swfdec_sandbox_unuse (movie->resource->sandbox);
+ }
+
+ static void
+ swfdec_text_field_movie_finish_movie (SwfdecMovie *movie)
+ {
+ SwfdecTextFieldMovie *text = SWFDEC_TEXT_FIELD_MOVIE (movie);
+
+ swfdec_text_field_movie_set_listen_variable (text, NULL);
+ }
+
+ static void
+ swfdec_text_field_movie_iterate (SwfdecMovie *movie)
+ {
+ SwfdecTextFieldMovie *text = SWFDEC_TEXT_FIELD_MOVIE (movie);
+
+ if (text->scroll_changed) {
+ SwfdecAsValue argv[2];
+
+ SWFDEC_FIXME ("I'm pretty sure this is swfdec_player_add_action()'d");
+ SWFDEC_AS_VALUE_SET_STRING (&argv[0], SWFDEC_AS_STR_onScroller);
+ SWFDEC_AS_VALUE_SET_OBJECT (&argv[1], SWFDEC_AS_OBJECT (movie));
+ swfdec_sandbox_use (movie->resource->sandbox);
+ swfdec_as_object_call (SWFDEC_AS_OBJECT (movie),
+ SWFDEC_AS_STR_broadcastMessage, 2, argv, NULL);
+ swfdec_sandbox_unuse (movie->resource->sandbox);
+
+ /* FIXME: unset this before or after emitting the event? */
+ text->scroll_changed = FALSE;
+ }
+ }
+
++static SwfdecMovie *
++swfdec_text_field_movie_contains (SwfdecMovie *movie, double x, double y,
++ gboolean events)
++{
++ if (events) {
++ /* check for movies in a higher layer that react to events */
++ SwfdecMovie *ret;
++ ret = SWFDEC_MOVIE_CLASS (swfdec_text_field_movie_parent_class)->contains (
++ movie, x, y, TRUE);
++ if (ret && ret != movie && swfdec_movie_get_mouse_events (ret))
++ return ret;
++ }
++
++ return movie;
++}
++
++static SwfdecTextFormat *
++swfdec_text_field_movie_format_for_index (SwfdecTextFieldMovie *text,
++ guint index_)
++{
++ GSList *iter;
++
++ g_return_val_if_fail (SWFDEC_IS_TEXT_FIELD_MOVIE (text), NULL);
++ g_return_val_if_fail (index_ <= text->input->len, NULL);
++
++ if (text->formats == NULL)
++ return NULL;
++
++ // get current format
++ for (iter = text->formats; iter != NULL && iter->next != NULL &&
++ ((SwfdecFormatIndex *)iter->next->data)->index_ < index_;
++ iter = iter->next);
++
++ return ((SwfdecFormatIndex *)iter->data)->format;
++}
++
++static void
++swfdec_text_field_movie_letter_clicked (SwfdecTextFieldMovie *text,
++ guint index_)
++{
++ SwfdecTextFormat *format;
++
++ g_return_if_fail (SWFDEC_IS_TEXT_FIELD_MOVIE (text));
++ g_return_if_fail (index_ <= text->input->len);
++
++ format = swfdec_text_field_movie_format_for_index (text, index_);
++
++ if (format != NULL && format->url != NULL &&
++ format->url != SWFDEC_AS_STR_EMPTY) {
++ swfdec_player_launch (SWFDEC_PLAYER (SWFDEC_AS_OBJECT (text)->context),
++ SWFDEC_LOADER_REQUEST_DEFAULT, format->url, format->target, NULL);
++ }
++}
++
++static gboolean
++swfdec_text_field_movie_xy_to_index (SwfdecTextFieldMovie *text, double x,
++ double y, guint *index_, gboolean *before)
++{
++ SwfdecLayout *layouts;
++ int i, layout_index, trailing, pixels;
++ double layout_y, layout_x;
++ gboolean direct;
++
++ g_return_val_if_fail (index_ != NULL, FALSE);
++ g_return_val_if_fail (SWFDEC_IS_TEXT_FIELD_MOVIE (text), FALSE);
++
++ *index_ = 0;
++ if (before != NULL)
++ *before = FALSE;
++
++ layouts = swfdec_text_field_movie_get_layouts (text, NULL, NULL, NULL, NULL);
++
++ if (layouts[0].layout == NULL)
++ return FALSE;
++
++ layout_y = y - EXTRA_MARGIN - SWFDEC_GRAPHIC (text->text)->extents.y0;
++ layout_x = x - EXTRA_MARGIN - SWFDEC_GRAPHIC (text->text)->extents.x0;
++
++ // take scrolling into account
++ swfdec_text_field_movie_line_position (layouts,
++ MIN (text->scroll, text->scroll_max), &pixels, NULL, NULL);
++ layout_y += pixels;
++ layout_x += MIN (text->hscroll, text->hscroll_max);
++
++ i = 0;
++ while (layout_y > layouts[i].height && layouts[i + 1].layout != NULL) {
++ layout_y -= layouts[i].height;
++ i++;
++ }
++
++ layout_x -= layouts[i].offset_x;
++
++ direct = pango_layout_xy_to_index (layouts[i].layout, layout_x * PANGO_SCALE,
++ layout_y * PANGO_SCALE, &layout_index, &trailing);
++
++ *index_ = layouts[i].index_ + layout_index;
++ if (before)
++ *before = (trailing == 0);
++
++ swfdec_text_field_movie_free_layouts (layouts);
++
++ return direct;
++}
++
++static SwfdecMouseCursor
++swfdec_text_field_movie_mouse_cursor (SwfdecMovie *movie)
++{
++ SwfdecTextFieldMovie *text = SWFDEC_TEXT_FIELD_MOVIE (movie);
++ double x, y;
++ guint index_;
++ SwfdecTextFormat *format;
++
++ swfdec_movie_get_mouse (movie, &x, &y);
++
++ if (swfdec_text_field_movie_xy_to_index (text, x, y, &index_, NULL)) {
++ format = swfdec_text_field_movie_format_for_index (text, index_);
++ } else {
++ format = NULL;
++ }
++
++ if (format != NULL && format->url != NULL &&
++ format->url != SWFDEC_AS_STR_EMPTY) {
++ return SWFDEC_MOUSE_CURSOR_CLICK;
++ } else if (text->text->editable || text->text->selectable) {
++ return SWFDEC_MOUSE_CURSOR_TEXT;
++ } else{
++ return SWFDEC_MOUSE_CURSOR_NORMAL;
++ }
++}
++
++static gboolean
++swfdec_text_field_movie_mouse_events (SwfdecMovie *movie)
++{
++ SwfdecTextFieldMovie *text = SWFDEC_TEXT_FIELD_MOVIE (movie);
++
++ // FIXME: is this correct?
++ return (text->text->editable || text->text->selectable);
++}
++
++static void
++swfdec_text_field_movie_mouse_press (SwfdecMovie *movie, guint button)
++{
++ SwfdecTextFieldMovie *text = SWFDEC_TEXT_FIELD_MOVIE (movie);
++ double x, y;
++ guint index_;
++ gboolean direct, before;
++
++ g_return_if_fail (text->text->editable || text->text->selectable);
++
++ if (button != 0)
++ return;
++
++ swfdec_movie_get_mouse (movie, &x, &y);
++
++ direct = swfdec_text_field_movie_xy_to_index (text, x, y, &index_, &before);
++
++ text->mouse_pressed = TRUE;
++ text->cursor = index_;
++ if (!before && text->cursor < text->input->len)
++ text->cursor++;
++ text->selection_end = text->cursor;
++ swfdec_movie_invalidate_last (SWFDEC_MOVIE (text));
++
++ if (direct) {
++ text->character_pressed = index_ + 1;
++ if (before)
++ text->character_pressed--;
++ } else {
++ text->character_pressed = 0;
++ }
++}
++
++static void
++swfdec_text_field_movie_mouse_move (SwfdecMovie *movie, double x, double y)
++{
++ SwfdecTextFieldMovie *text = SWFDEC_TEXT_FIELD_MOVIE (movie);
++ guint index_;
++ gboolean direct, before;
++
++ g_return_if_fail (text->text->editable || text->text->selectable);
++
++ if (!text->text->selectable)
++ return;
++
++ if (!text->mouse_pressed)
++ return;
++
++ direct = swfdec_text_field_movie_xy_to_index (text, x, y, &index_, &before);
++
++ text->selection_end = index_;
++
++ if (!before && text->selection_end < text->input->len)
++ text->selection_end++;
++
++ swfdec_movie_invalidate_last (SWFDEC_MOVIE (text));
++}
++
++static void
++swfdec_text_field_movie_mouse_release (SwfdecMovie *movie, guint button)
++{
++ SwfdecTextFieldMovie *text = SWFDEC_TEXT_FIELD_MOVIE (movie);
++ double x, y;
++ guint index_;
++ gboolean direct, before;
++
++ g_return_if_fail (text->text->editable || text->text->selectable);
++
++ if (button != 0)
++ return;
++
++ swfdec_movie_get_mouse (movie, &x, &y);
++
++ //FIXME
++ swfdec_text_field_movie_mouse_move (movie, x, y);
++
++ text->mouse_pressed = FALSE;
++
++ direct = swfdec_text_field_movie_xy_to_index (text, x, y, &index_, &before);
++
++ if (text->character_pressed != 0) {
++ if (direct && text->character_pressed == index_ + 1 - (before ? 1 : 0)) {
++ swfdec_text_field_movie_letter_clicked (text,
++ text->character_pressed - 1);
++ }
++
++ text->character_pressed = 0;
++ }
++}
++
+ static void
+ swfdec_text_field_movie_class_init (SwfdecTextFieldMovieClass * g_class)
+ {
+ GObjectClass *object_class = G_OBJECT_CLASS (g_class);
+ SwfdecAsObjectClass *asobject_class = SWFDEC_AS_OBJECT_CLASS (g_class);
+ SwfdecMovieClass *movie_class = SWFDEC_MOVIE_CLASS (g_class);
+
+ object_class->dispose = swfdec_text_field_movie_dispose;
+
+ asobject_class->mark = swfdec_text_field_movie_mark;
+
+ movie_class->init_movie = swfdec_text_field_movie_init_movie;
+ movie_class->finish_movie = swfdec_text_field_movie_finish_movie;
+ movie_class->iterate_start = swfdec_text_field_movie_iterate;
+ movie_class->update_extents = swfdec_text_field_movie_update_extents;
+ movie_class->render = swfdec_text_field_movie_render;
+ movie_class->invalidate = swfdec_text_field_movie_invalidate;
++ movie_class->contains = swfdec_text_field_movie_contains;
++
++ movie_class->mouse_cursor = swfdec_text_field_movie_mouse_cursor;
++ movie_class->mouse_events = swfdec_text_field_movie_mouse_events;
++ movie_class->mouse_press = swfdec_text_field_movie_mouse_press;
++ movie_class->mouse_release = swfdec_text_field_movie_mouse_release;
++ movie_class->mouse_move = swfdec_text_field_movie_mouse_move;
+ }
+
+ static void
+ swfdec_text_field_movie_init (SwfdecTextFieldMovie *text)
+ {
+ text->surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, 1, 1);
+ text->cr = cairo_create (text->surface);
+
+ text->input = g_string_new ("");
+ text->scroll = 1;
+ text->mouse_wheel_enabled = TRUE;
+ }
+
+ void
+ swfdec_text_field_movie_set_text_format (SwfdecTextFieldMovie *text,
+ SwfdecTextFormat *format, guint start_index, guint end_index)
+ {
+ SwfdecFormatIndex *findex, *findex_new, *findex_prev;
+ guint findex_end_index;
+ GSList *iter, *next;
+
+ g_return_if_fail (SWFDEC_IS_TEXT_FIELD_MOVIE (text));
+ g_return_if_fail (SWFDEC_IS_TEXT_FORMAT (format));
+ g_return_if_fail (start_index < end_index);
+ g_return_if_fail (end_index <= text->input->len);
+
+ g_assert (text->formats != NULL);
+ g_assert (text->formats->data != NULL);
+ g_assert (((SwfdecFormatIndex *)text->formats->data)->index_ == 0);
+
+ findex = NULL;
+ for (iter = text->formats; iter != NULL &&
+ ((SwfdecFormatIndex *)iter->data)->index_ < end_index;
+ iter = next)
+ {
+ findex_prev = findex;
+ next = iter->next;
+ findex = iter->data;
+ if (iter->next != NULL) {
+ findex_end_index =
+ ((SwfdecFormatIndex *)iter->next->data)->index_;
+ } else {
+ findex_end_index = text->input->len;
+ }
+
+ if (findex_end_index <= start_index)
+ continue;
+
+ if (swfdec_text_format_equal_or_undefined (findex->format, format))
+ continue;
+
+ if (findex_end_index > end_index) {
+ findex_new = g_new (SwfdecFormatIndex, 1);
+ findex_new->index_ = end_index;
+ findex_new->format = swfdec_text_format_copy (findex->format);
+ if (findex_new->format == NULL) {
+ g_free (findex_new);
+ break;
+ }
+
+ iter = g_slist_insert (iter, findex_new, 1);
+ }
+
+ if (findex->index_ < start_index) {
+ findex_new = g_new (SwfdecFormatIndex, 1);
+ findex_new->index_ = start_index;
+ findex_new->format = swfdec_text_format_copy (findex->format);
+ if (findex_new->format == NULL) {
+ g_free (findex_new);
+ break;
+ }
+ swfdec_text_format_add (findex_new->format, format);
+
+ iter = g_slist_insert (iter, findex_new, 1);
+ findex = findex_new;
+ } else {
+ swfdec_text_format_add (findex->format, format);
+
+ // if current format now equals previous one, remove current
+ if (findex_prev != NULL &&
+ swfdec_text_format_equal (findex->format, findex_prev->format)) {
+ text->formats = g_slist_remove (text->formats, findex);
+ findex = findex_prev;
+ }
+ }
+
+ // if current format now equals the next one, remove current
+ if (findex_end_index <= end_index && next != NULL &&
+ swfdec_text_format_equal (findex->format,
+ ((SwfdecFormatIndex *)next->data)->format))
+ {
+ ((SwfdecFormatIndex *)next->data)->index_ = findex->index_;
+ text->formats = g_slist_remove (text->formats, findex);
+ findex = findex_prev;
+ }
+ }
+ }
+
+ SwfdecTextFormat *
+ swfdec_text_field_movie_get_text_format (SwfdecTextFieldMovie *text,
+ guint start_index, guint end_index)
+ {
+ SwfdecTextFormat *format;
+ GSList *iter;
+
+ g_assert (SWFDEC_IS_TEXT_FIELD_MOVIE (text));
+ g_assert (start_index < end_index);
+ g_assert (end_index <= text->input->len);
+
+ g_assert (text->formats != NULL);
+ g_assert (text->formats->data != NULL);
+ g_assert (((SwfdecFormatIndex *)text->formats->data)->index_ == 0);
+
+ format = NULL;
+ for (iter = text->formats; iter != NULL &&
+ ((SwfdecFormatIndex *)iter->data)->index_ < end_index;
+ iter = iter->next)
+ {
+ if (iter->next != NULL &&
+ ((SwfdecFormatIndex *)iter->next->data)->index_ <= start_index)
+ continue;
+
+ if (format == NULL) {
+ swfdec_text_format_init_properties (SWFDEC_AS_OBJECT (text)->context);
+ format =
+ swfdec_text_format_copy (((SwfdecFormatIndex *)iter->data)->format);
+ } else {
+ swfdec_text_format_remove_different (format,
+ ((SwfdecFormatIndex *)iter->data)->format);
+ }
+ }
+
+ return format;
+ }
+
+ static void
+ swfdec_text_field_movie_parse_listen_variable (SwfdecTextFieldMovie *text,
+ const char *variable, SwfdecAsObject **object, const char **name)
+ {
+ SwfdecAsContext *cx;
+ SwfdecAsObject *parent;
+ const char *p1, *p2;
+
+ g_return_if_fail (SWFDEC_IS_TEXT_FIELD_MOVIE (text));
+ g_return_if_fail (variable != NULL);
+ g_return_if_fail (object != NULL);
+ g_return_if_fail (name != NULL);
+
+ *object = NULL;
+ *name = NULL;
+
+ if (SWFDEC_MOVIE (text)->parent == NULL)
+ return;
+
+ g_assert (SWFDEC_IS_AS_OBJECT (SWFDEC_MOVIE (text)->parent));
+ cx = SWFDEC_AS_OBJECT (text)->context;
+ parent = SWFDEC_AS_OBJECT (SWFDEC_MOVIE (text)->parent);
+
+ p1 = strrchr (variable, '.');
+ p2 = strrchr (variable, ':');
+ if (p1 == NULL && p2 == NULL) {
+ *object = parent;
+ *name = variable;
+ } else {
+ if (p1 == NULL || (p2 != NULL && p2 > p1))
+ p1 = p2;
+ if (strlen (p1) == 1)
+ return;
+ *object = swfdec_action_lookup_object (cx, parent, variable, p1);
+ if (*object == NULL)
+ return;
+ *name = swfdec_as_context_get_string (cx, p1 + 1);
+ }
+ }
+
+ void
+ swfdec_text_field_movie_set_listen_variable_text (SwfdecTextFieldMovie *text,
+ const char *value)
+ {
+ SwfdecAsObject *object;
+ const char *name;
+
+ g_return_if_fail (SWFDEC_IS_TEXT_FIELD_MOVIE (text));
+ g_return_if_fail (text->variable != NULL);
+ g_return_if_fail (value != NULL);
+
+ swfdec_text_field_movie_parse_listen_variable (text, text->variable,
+ &object, &name);
+ if (object != NULL) {
+ SwfdecAsValue val;
+ SWFDEC_AS_VALUE_SET_STRING (&val, value);
+ swfdec_as_object_set_variable (object, name, &val);
+ }
+ }
+
+ static void
+ swfdec_text_field_movie_variable_listener_callback (SwfdecAsObject *object,
+ const char *name, const SwfdecAsValue *val)
+ {
+ SwfdecTextFieldMovie *text;
+
+ g_return_if_fail (SWFDEC_IS_TEXT_FIELD_MOVIE (object));
+
+ text = SWFDEC_TEXT_FIELD_MOVIE (object);
+ swfdec_text_field_movie_set_text (text,
+ swfdec_as_value_to_string (object->context, val), text->text->html);
+ }
+
+ void
+ swfdec_text_field_movie_set_listen_variable (SwfdecTextFieldMovie *text,
+ const char *value)
+ {
+ SwfdecAsObject *object;
+ const char *name;
+
+ // FIXME: case-insensitive when v < 7?
+ if (text->variable == value)
+ return;
+
+ if (text->variable != NULL) {
+ swfdec_text_field_movie_parse_listen_variable (text, text->variable,
+ &object, &name);
+ if (object != NULL && SWFDEC_IS_MOVIE (object)) {
+ swfdec_movie_remove_variable_listener (SWFDEC_MOVIE (object),
+ SWFDEC_AS_OBJECT (text), name,
+ swfdec_text_field_movie_variable_listener_callback);
+ }
+ }
+
+ text->variable = value;
+
+ if (value != NULL) {
+ SwfdecAsValue val;
+
+ swfdec_text_field_movie_parse_listen_variable (text, value, &object,
+ &name);
+ if (object != NULL && swfdec_as_object_get_variable (object, name, &val)) {
+ swfdec_text_field_movie_set_text (text,
+ swfdec_as_value_to_string (SWFDEC_AS_OBJECT (text)->context, &val),
+ text->text->html);
+ }
+ if (object != NULL && SWFDEC_IS_MOVIE (object)) {
+ swfdec_movie_add_variable_listener (SWFDEC_MOVIE (object),
+ SWFDEC_AS_OBJECT (text), name,
+ swfdec_text_field_movie_variable_listener_callback);
+ }
+ }
+ }
+
+ const char *
+ swfdec_text_field_movie_get_text (SwfdecTextFieldMovie *text)
+ {
+ char *str, *p;
+
+ str = g_strdup (text->input->str);
+
+ // if input was orginally html, remove all \r
+ if (text->input_html) {
+ p = str;
+ while ((p = strchr (p, '\r')) != NULL) {
+ memmove (p, p + 1, strlen (p));
+ }
+ }
+
+ // change all \n to \r
+ p = str;
+ while ((p = strchr (p, '\n')) != NULL) {
+ *p = '\r';
+ }
+
+ return swfdec_as_context_give_string (SWFDEC_AS_OBJECT (text)->context, str);
+ }
+
+ void
+ swfdec_text_field_movie_replace_text (SwfdecTextFieldMovie *text,
+ guint start_index, guint end_index, const char *str)
+ {
+ SwfdecFormatIndex *findex;
+ GSList *iter, *prev;
+ gboolean first;
+
+ g_return_if_fail (SWFDEC_IS_TEXT_FIELD_MOVIE (text));
+ g_return_if_fail (end_index <= text->input->len);
+ g_return_if_fail (start_index <= end_index);
+ g_return_if_fail (str != NULL);
+
+ /* if there was a style sheet set when setting the text, modifications are
+ * not allowed */
+ if (text->style_sheet_input)
+ return;
+
+ first = TRUE;
+ prev = NULL;
+ for (iter = text->formats; iter != NULL; iter = iter->next)
+ {
+ findex = iter->data;
+
+ if (findex->index_ >= start_index) {
+ if (end_index == text->input->len ||(iter->next != NULL &&
+ ((SwfdecFormatIndex *)iter->next->data)->index_ <= end_index))
+ {
+ g_free (iter->data);
+ text->formats = g_slist_remove (text->formats, iter->data);
+ iter = (prev != NULL ? prev : text->formats);
+ }
+ else
+ {
+ findex->index_ += strlen (str) - (end_index - start_index);
+ if (first) {
+ findex->index_ -= strlen (str);
+ first = FALSE;
+ }
+ }
+ }
+ prev = iter;
+ }
+
+ if (end_index == text->input->len) {
+ if (SWFDEC_AS_OBJECT (text)->context->version < 8) {
+ SWFDEC_FIXME ("replaceText to the end of the TextField might use wrong text format on version 7");
+ }
+ findex = g_new0 (SwfdecFormatIndex, 1);
+ findex->index_ = start_index;
+ findex->format = swfdec_text_format_copy (
+ ((SwfdecFormatIndex *)text->formats->data)->format);
+ text->formats = g_slist_append (text->formats, findex);
+ }
+
+ text->input = g_string_erase (text->input, start_index,
+ end_index - start_index);
+ text->input = g_string_insert (text->input, start_index, str);
+
+ swfdec_movie_invalidate_last (SWFDEC_MOVIE (text));
+ swfdec_text_field_movie_auto_size (text);
+ swfdec_text_field_movie_update_scroll (text, TRUE);
+ }
+
+ void
+ swfdec_text_field_movie_set_text (SwfdecTextFieldMovie *text, const char *str,
+ gboolean html)
+ {
+ SwfdecFormatIndex *block;
+ GSList *iter;
+
+ g_return_if_fail (SWFDEC_IS_TEXT_FIELD_MOVIE (text));
+ g_return_if_fail (str != NULL);
+
+ if (text->format_new == NULL) {
+ text->input = g_string_truncate (text->input, 0);
+ return;
+ }
+
+ // remove old formatting info
+ iter = text->formats;
+ while (iter) {
+ g_free (iter->data);
+ iter = g_slist_next (iter);
+ }
+ g_slist_free (text->formats);
+ text->formats = NULL;
+
+ // add the default style
+ if (html && SWFDEC_AS_OBJECT (text)->context->version < 8)
+ swfdec_text_format_set_defaults (text->format_new);
+ block = g_new (SwfdecFormatIndex, 1);
+ block->index_ = 0;
+ g_assert (SWFDEC_IS_TEXT_FORMAT (text->format_new));
+ block->format = swfdec_text_format_copy (text->format_new);
+ if (block->format == NULL) {
+ g_free (block);
+ text->input = g_string_truncate (text->input, 0);
+ return;
+ }
+ text->formats = g_slist_prepend (text->formats, block);
+
+ text->input_html = html;
+
+ if (SWFDEC_AS_OBJECT (text)->context->version >= 7 &&
+ text->style_sheet != NULL)
+ {
+ text->style_sheet_input = str;
+ swfdec_text_field_movie_html_parse (text, str);
+ }
+ else
+ {
+ text->style_sheet_input = NULL;
+ if (html) {
+ swfdec_text_field_movie_html_parse (text, str);
+ } else {
+ text->input = g_string_assign (text->input, str);
+ }
+ }
+
+ swfdec_movie_invalidate_last (SWFDEC_MOVIE (text));
+ swfdec_text_field_movie_auto_size (text);
+ swfdec_text_field_movie_update_scroll (text, TRUE);
+ }
diff --cc swfdec/swfdec_text_field_movie.h
index 0000000,07d7a0e..f5d95bd
mode 000000,100644..100644
--- a/swfdec/swfdec_text_field_movie.h
+++ b/swfdec/swfdec_text_field_movie.h
@@@ -1,0 -1,160 +1,173 @@@
+ /* Swfdec
+ * Copyright (C) 2006 Benjamin Otte <otte at gnome.org>
+ * 2007 Pekka Lampila <pekka.lampila at iki.fi>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301 USA
+ */
+
+ #ifndef _SWFDEC_TEXT_FIELD_MOVIE_H_
+ #define _SWFDEC_TEXT_FIELD_MOVIE_H_
+
+ #include <swfdec/swfdec_movie.h>
+ #include <swfdec/swfdec_text_field.h>
+ #include <swfdec/swfdec_style_sheet.h>
+ #include <swfdec/swfdec_text_format.h>
+
+ G_BEGIN_DECLS
+
+
+ typedef struct _SwfdecTextFieldMovie SwfdecTextFieldMovie;
+ typedef struct _SwfdecTextFieldMovieClass SwfdecTextFieldMovieClass;
+
+ #define SWFDEC_TYPE_TEXT_FIELD_MOVIE (swfdec_text_field_movie_get_type())
+ #define SWFDEC_IS_TEXT_FIELD_MOVIE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SWFDEC_TYPE_TEXT_FIELD_MOVIE))
+ #define SWFDEC_IS_TEXT_FIELD_MOVIE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SWFDEC_TYPE_TEXT_FIELD_MOVIE))
+ #define SWFDEC_TEXT_FIELD_MOVIE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SWFDEC_TYPE_TEXT_FIELD_MOVIE, SwfdecTextFieldMovie))
+ #define SWFDEC_TEXT_FIELD_MOVIE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SWFDEC_TYPE_TEXT_FIELD_MOVIE, SwfdecTextFieldMovieClass))
+
+ typedef struct {
- PangoLayout * layout;
- int offset_x;
- int last_line_offset_y;
- int height;
++ PangoLayout * layout; // layout to render
++
++ // the byte offset where this layout's text starts in text->input->str
++ guint index_;
++
++ int offset_x; // x offset to apply before rendering
++
++ // dimensions for this layout, including offset_x, might be bigger than the
++ // rendering of PangoLayout needs
+ int width;
++ int height;
++
++ // whether the layout starts with bullet point to be rendered separately
+ gboolean bullet;
+ } SwfdecLayout;
+
+ typedef struct {
+ guint index_;
+
+ PangoAlignment align;
+ gboolean justify;
+ int leading;
+ int block_indent;
+ int left_margin;
+ int right_margin;
+ PangoTabArray * tab_stops;
+ } SwfdecBlock;
+
+ typedef struct {
+ guint index_;
+ guint length;
+ gboolean newline; // ends in newline
+
+ gboolean bullet;
+ int indent;
+
+ GSList * blocks; // SwfdecBlock
+ GSList * attrs; // PangoAttribute
+ } SwfdecParagraph;
+
+ typedef struct {
+ guint index_;
+ SwfdecTextFormat * format;
+ } SwfdecFormatIndex;
+
+ struct _SwfdecTextFieldMovie {
+ SwfdecMovie movie;
+
+ SwfdecTextField * text; /* the text_field object we render */
+
+ GString * input;
+ char * asterisks; /* bunch of asterisks that we display when password mode is enabled */
+ guint asterisks_length;
+ gboolean input_html; /* whether orginal input was given as HTML */
+
+ const char * variable;
+
+ SwfdecTextFormat * format_new;
+ GSList * formats;
+
+ gboolean condense_white;
+ gboolean embed_fonts;
+
+ SwfdecAsObject * style_sheet;
+ const char * style_sheet_input; /* saved input, so it can be used to apply stylesheet again */
+
+ gboolean scroll_changed; /* if any of the scroll attributes have changed and we haven't fired the event yet */
+ int scroll;
+ int scroll_max;
+ int scroll_bottom;
+ int hscroll;
+ int hscroll_max;
+ gboolean mouse_wheel_enabled;
+
+ const char * restrict_;
+
+ SwfdecColor border_color;
+ SwfdecColor background_color;
+
++ gboolean mouse_pressed;
++ guint cursor;
++ guint selection_end;
++ guint character_pressed;
++
+ // FIXME: Temporary using image surface, until there is a way to get cairo_t
+ // outside the rendering functions
+ cairo_surface_t * surface;
+ cairo_t * cr;
+ };
+
+ struct _SwfdecTextFieldMovieClass {
+ SwfdecMovieClass movie_class;
+ };
+
+ GType swfdec_text_field_movie_get_type (void);
+
+ void swfdec_text_field_movie_set_text (SwfdecTextFieldMovie * movie,
+ const char * str,
+ gboolean html);
+ void swfdec_text_field_movie_get_text_size (SwfdecTextFieldMovie * text,
+ int * width,
+ int * height);
+ gboolean swfdec_text_field_movie_auto_size (SwfdecTextFieldMovie * text);
+ void swfdec_text_field_movie_update_scroll (SwfdecTextFieldMovie * text,
+ gboolean check_limits);
+ void swfdec_text_field_movie_set_text_format (SwfdecTextFieldMovie * text,
+ SwfdecTextFormat * format,
+ guint start_index,
+ guint end_index);
+ SwfdecTextFormat *swfdec_text_field_movie_get_text_format (SwfdecTextFieldMovie * text,
+ guint start_index,
+ guint end_index);
+ const char * swfdec_text_field_movie_get_text (SwfdecTextFieldMovie * text);
+ void swfdec_text_field_movie_set_listen_variable (SwfdecTextFieldMovie * text,
+ const char * value);
+ void swfdec_text_field_movie_set_listen_variable_text (SwfdecTextFieldMovie *text,
+ const char * value);
+ void swfdec_text_field_movie_replace_text (SwfdecTextFieldMovie * text,
+ guint start_index,
+ guint end_index,
+ const char * str);
+
+ /* implemented in swfdec_text_field_movie_as.c */
+ void swfdec_text_field_movie_init_properties (SwfdecAsContext * cx);
+
+ /* implemented in swfdec_html_parser.c */
+ void swfdec_text_field_movie_html_parse (SwfdecTextFieldMovie * text,
+ const char * str);
+ const char * swfdec_text_field_movie_get_html_text (SwfdecTextFieldMovie * text);
+
+ G_END_DECLS
+ #endif
diff --cc swfdec/swfdec_text_field_movie_as.c
index 0000000,7e34120..b76211a
mode 000000,100644..100644
--- a/swfdec/swfdec_text_field_movie_as.c
+++ b/swfdec/swfdec_text_field_movie_as.c
@@@ -1,0 -1,1539 +1,1542 @@@
+ /* Swfdec
+ * Copyright (C) 2007 Benjamin Otte <otte at gnome.org>
+ * 2007 Pekka Lampila <pekka.lampila at iki.fi>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301 USA
+ */
+
+ #ifdef HAVE_CONFIG_H
+ #include "config.h"
+ #endif
+
+ #include <string.h>
+ #include <pango/pangocairo.h>
+
+ #include "swfdec_text_field.h"
+ #include "swfdec_text_field_movie.h"
+ #include "swfdec_as_strings.h"
+ #include "swfdec_debug.h"
+ #include "swfdec_as_native_function.h"
+ #include "swfdec_as_internal.h"
+ #include "swfdec_as_context.h"
+ #include "swfdec_as_object.h"
+ #include "swfdec_as_frame_internal.h"
+ #include "swfdec_internal.h"
+ #include "swfdec_player_internal.h"
+
+ static SwfdecColor
+ swfdec_text_field_movie_int_to_color (SwfdecAsContext *cx, int value)
+ {
+ if (value < 0) {
+ value = (0xffffff + 1) + value % (0xffffff + 1);
+ } else {
+ value = value % (0xffffff + 1);
+ }
+
+ return SWFDEC_COLOR_COMBINE (value >> 16 & 0xff, value >> 8 & 0xff,
+ value & 0xff, 0);
+ }
+
+ // does nothing but calls valueOf
+ static void
+ swfdec_text_field_movie_set_readonly (SwfdecAsContext *cx,
+ SwfdecAsObject *object, guint argc, SwfdecAsValue *argv,
+ SwfdecAsValue *ret)
+ {
+ SwfdecTextFieldMovie *text;
+
+ SWFDEC_AS_CHECK (SWFDEC_TYPE_TEXT_FIELD_MOVIE, &text, "");
+
+ if (argc > 0)
+ swfdec_as_value_to_number (cx, &argv[0]);
+ }
+
+ /*
+ * Native properties: Text
+ */
+ static void
+ swfdec_text_field_movie_do_get_text (SwfdecAsContext *cx,
+ SwfdecAsObject *object, guint argc, SwfdecAsValue *argv,
+ SwfdecAsValue *ret)
+ {
+ SwfdecTextFieldMovie *text;
+
+ SWFDEC_AS_CHECK (SWFDEC_TYPE_TEXT_FIELD_MOVIE, &text, "");
+
+ SWFDEC_AS_VALUE_SET_STRING (ret, swfdec_text_field_movie_get_text (text));
+ }
+
+ static void
+ swfdec_text_field_movie_do_set_text (SwfdecAsContext *cx,
+ SwfdecAsObject *object, guint argc, SwfdecAsValue *argv,
+ SwfdecAsValue *ret)
+ {
+ SwfdecTextFieldMovie *text;
+ const char *value;
+
+ SWFDEC_AS_CHECK (SWFDEC_TYPE_TEXT_FIELD_MOVIE, &text, "s", &value);
+
+ swfdec_text_field_movie_set_text (text, value, FALSE);
+
+ if (text->variable != NULL) {
+ if (text->text->html) {
+ swfdec_text_field_movie_set_listen_variable_text (text,
+ swfdec_text_field_movie_get_html_text (text));
+ } else {
+ swfdec_text_field_movie_set_listen_variable_text (text,
+ swfdec_text_field_movie_get_text (text));
+ }
+ }
+ }
+
+ static void
+ swfdec_text_field_movie_get_html (SwfdecAsContext *cx, SwfdecAsObject *object,
+ guint argc, SwfdecAsValue *argv, SwfdecAsValue *ret)
+ {
+ SwfdecTextFieldMovie *text;
+
+ SWFDEC_AS_CHECK (SWFDEC_TYPE_TEXT_FIELD_MOVIE, &text, "");
+
+ SWFDEC_AS_VALUE_SET_BOOLEAN (ret, text->text->html);
+ }
+
+ static void
+ swfdec_text_field_movie_set_html (SwfdecAsContext *cx, SwfdecAsObject *object,
+ guint argc, SwfdecAsValue *argv, SwfdecAsValue *ret)
+ {
+ SwfdecTextFieldMovie *text;
+ gboolean value;
+
+ SWFDEC_AS_CHECK (SWFDEC_TYPE_TEXT_FIELD_MOVIE, &text, "b", &value);
+
+ swfdec_as_value_to_number (cx, &argv[0]);
+
+ text->text->html = value;
+
+ // FIXME: resize? invalidate?
+ }
+
+ static void
+ swfdec_text_field_movie_get_htmlText (SwfdecAsContext *cx,
+ SwfdecAsObject *object, guint argc, SwfdecAsValue *argv,
+ SwfdecAsValue *ret)
+ {
+ SwfdecTextFieldMovie *text;
+
+ SWFDEC_AS_CHECK (SWFDEC_TYPE_TEXT_FIELD_MOVIE, &text, "");
+
+ if (text->style_sheet_input) {
+ SWFDEC_AS_VALUE_SET_STRING (ret, text->style_sheet_input);
+ } else if (text->text->html) {
+ SWFDEC_AS_VALUE_SET_STRING (ret,
+ swfdec_text_field_movie_get_html_text (text));
+ } else {
+ SWFDEC_AS_VALUE_SET_STRING (ret,
+ swfdec_text_field_movie_get_text (text));
+ }
+ }
+
+ static void
+ swfdec_text_field_movie_set_htmlText (SwfdecAsContext *cx,
+ SwfdecAsObject *object, guint argc, SwfdecAsValue *argv,
+ SwfdecAsValue *ret)
+ {
+ SwfdecTextFieldMovie *text;
+ const char *value;
+
+ SWFDEC_AS_CHECK (SWFDEC_TYPE_TEXT_FIELD_MOVIE, &text, "s", &value);
+
+ swfdec_text_field_movie_set_text (text, value, text->text->html);
+
+ if (text->variable != NULL) {
+ if (text->text->html) {
+ swfdec_text_field_movie_set_listen_variable_text (text,
+ swfdec_text_field_movie_get_html_text (text));
+ } else {
+ swfdec_text_field_movie_set_listen_variable_text (text,
+ swfdec_text_field_movie_get_text (text));
+ }
+ }
+ }
+
+ static void
+ swfdec_text_field_movie_get_length (SwfdecAsContext *cx, SwfdecAsObject *object,
+ guint argc, SwfdecAsValue *argv, SwfdecAsValue *ret)
+ {
+ SwfdecTextFieldMovie *text;
+
+ SWFDEC_AS_CHECK (SWFDEC_TYPE_TEXT_FIELD_MOVIE, &text, "");
+
+ SWFDEC_AS_VALUE_SET_INT (ret, g_utf8_strlen (text->input->str, -1));
+ }
+
+ /*
+ * Native properties: Input
+ */
+ static void
+ swfdec_text_field_movie_get_condenseWhite (SwfdecAsContext *cx,
+ SwfdecAsObject *object, guint argc, SwfdecAsValue *argv,
+ SwfdecAsValue *ret)
+ {
+ SwfdecTextFieldMovie *text;
+
+ SWFDEC_AS_CHECK (SWFDEC_TYPE_TEXT_FIELD_MOVIE, &text, "");
+
+ SWFDEC_AS_VALUE_SET_BOOLEAN (ret, text->condense_white);
+ }
+
+ static void
+ swfdec_text_field_movie_set_condenseWhite (SwfdecAsContext *cx,
+ SwfdecAsObject *object, guint argc, SwfdecAsValue *argv,
+ SwfdecAsValue *ret)
+ {
+ SwfdecTextFieldMovie *text;
+ gboolean value;
+
+ SWFDEC_AS_CHECK (SWFDEC_TYPE_TEXT_FIELD_MOVIE, &text, "b", &value);
+
+ swfdec_as_value_to_number (cx, &argv[0]);
+
+ text->condense_white = value;
+ }
+
+ static void
+ swfdec_text_field_movie_get_maxChars (SwfdecAsContext *cx,
+ SwfdecAsObject *object, guint argc, SwfdecAsValue *argv,
+ SwfdecAsValue *ret)
+ {
+ SwfdecTextFieldMovie *text;
+
+ SWFDEC_AS_CHECK (SWFDEC_TYPE_TEXT_FIELD_MOVIE, &text, "");
+
+ if (text->text->max_chars != 0) {
+ SWFDEC_AS_VALUE_SET_INT (ret, text->text->max_chars);
+ } else {
+ SWFDEC_AS_VALUE_SET_NULL (ret);
+ }
+ }
+
+ static void
+ swfdec_text_field_movie_set_maxChars (SwfdecAsContext *cx,
+ SwfdecAsObject *object, guint argc, SwfdecAsValue *argv,
+ SwfdecAsValue *ret)
+ {
+ SwfdecTextFieldMovie *text;
+
+ SWFDEC_AS_CHECK (SWFDEC_TYPE_TEXT_FIELD_MOVIE, &text, "");
+
+ if (argc < 1)
+ return;
+
+ swfdec_as_value_to_number (cx, &argv[0]);
+ text->text->max_chars = swfdec_as_value_to_integer (cx, &argv[0]);
+ }
+
+ static void
+ swfdec_text_field_movie_get_multiline (SwfdecAsContext *cx,
+ SwfdecAsObject *object, guint argc, SwfdecAsValue *argv,
+ SwfdecAsValue *ret)
+ {
+ SwfdecTextFieldMovie *text;
+
+ SWFDEC_AS_CHECK (SWFDEC_TYPE_TEXT_FIELD_MOVIE, &text, "");
+
+ SWFDEC_AS_VALUE_SET_BOOLEAN (ret, text->text->multiline);
+ }
+
+ static void
+ swfdec_text_field_movie_set_multiline (SwfdecAsContext *cx,
+ SwfdecAsObject *object, guint argc, SwfdecAsValue *argv,
+ SwfdecAsValue *ret)
+ {
+ SwfdecTextFieldMovie *text;
+ gboolean value;
+
+ SWFDEC_AS_CHECK (SWFDEC_TYPE_TEXT_FIELD_MOVIE, &text, "b", &value);
+
+ swfdec_as_value_to_number (cx, &argv[0]);
+
+ text->text->multiline = value;
+ }
+
+ static void
+ swfdec_text_field_movie_get_restrict (SwfdecAsContext *cx,
+ SwfdecAsObject *object, guint argc, SwfdecAsValue *argv,
+ SwfdecAsValue *ret)
+ {
+ SwfdecTextFieldMovie *text;
+
+ SWFDEC_AS_CHECK (SWFDEC_TYPE_TEXT_FIELD_MOVIE, &text, "");
+
+ if (text->restrict_ != NULL) {
+ SWFDEC_AS_VALUE_SET_STRING (ret, text->restrict_);
+ } else {
+ SWFDEC_AS_VALUE_SET_NULL (ret);
+ }
+ }
+
+ static void
+ swfdec_text_field_movie_set_restrict (SwfdecAsContext *cx,
+ SwfdecAsObject *object, guint argc, SwfdecAsValue *argv,
+ SwfdecAsValue *ret)
+ {
+ SwfdecTextFieldMovie *text;
+ const char *value;
+
+ if (argc > 0)
+ swfdec_as_value_to_number (cx, &argv[0]);
+
+ SWFDEC_AS_CHECK (SWFDEC_TYPE_TEXT_FIELD_MOVIE, &text, "s", &value);
+
+ if (SWFDEC_AS_VALUE_IS_UNDEFINED (&argv[0]) ||
+ SWFDEC_AS_VALUE_IS_NULL (&argv[0])) {
+ text->restrict_ = NULL;
+ } else {
+ text->restrict_ = value;
+ }
+ }
+
+ static void
+ swfdec_text_field_movie_get_selectable (SwfdecAsContext *cx,
+ SwfdecAsObject *object, guint argc, SwfdecAsValue *argv,
+ SwfdecAsValue *ret)
+ {
+ SwfdecTextFieldMovie *text;
+
+ SWFDEC_AS_CHECK (SWFDEC_TYPE_TEXT_FIELD_MOVIE, &text, "");
+
+ SWFDEC_AS_VALUE_SET_BOOLEAN (ret, text->text->selectable);
+ }
+
+ static void
+ swfdec_text_field_movie_set_selectable (SwfdecAsContext *cx,
+ SwfdecAsObject *object, guint argc, SwfdecAsValue *argv,
+ SwfdecAsValue *ret)
+ {
+ SwfdecTextFieldMovie *text;
+ gboolean value;
+
+ SWFDEC_AS_CHECK (SWFDEC_TYPE_TEXT_FIELD_MOVIE, &text, "b", &value);
+
+ swfdec_as_value_to_number (cx, &argv[0]);
+
+ text->text->selectable = value;
+
+ // FIXME: invalidate
+ }
+
+ static void
+ swfdec_text_field_movie_do_get_type (SwfdecAsContext *cx,
+ SwfdecAsObject *object, guint argc, SwfdecAsValue *argv,
+ SwfdecAsValue *ret)
+ {
+ SwfdecTextFieldMovie *text;
+
+ SWFDEC_AS_CHECK (SWFDEC_TYPE_TEXT_FIELD_MOVIE, &text, "");
+
+ if (text->text->editable) {
+ SWFDEC_AS_VALUE_SET_STRING (ret, SWFDEC_AS_STR_input);
+ } else {
+ SWFDEC_AS_VALUE_SET_STRING (ret, SWFDEC_AS_STR_dynamic);
+ }
+ }
+
+ static void
+ swfdec_text_field_movie_do_set_type (SwfdecAsContext *cx,
+ SwfdecAsObject *object, guint argc, SwfdecAsValue *argv,
+ SwfdecAsValue *ret)
+ {
+ SwfdecTextFieldMovie *text;
+ const char *value;
+
+ if (argc > 0)
+ swfdec_as_value_to_number (cx, &argv[0]);
+
+ SWFDEC_AS_CHECK (SWFDEC_TYPE_TEXT_FIELD_MOVIE, &text, "s", &value);
+
+ if (!g_strcasecmp (value, SWFDEC_AS_STR_input)) {
+ text->text->editable = TRUE;
+ } else if (!g_strcasecmp (value, SWFDEC_AS_STR_dynamic)) {
+ text->text->editable = FALSE;
+ }
+
+ // FIXME: invalidate
+ }
+
+ static void
+ swfdec_text_field_movie_do_get_variable (SwfdecAsContext *cx,
+ SwfdecAsObject *object, guint argc, SwfdecAsValue *argv,
+ SwfdecAsValue *ret)
+ {
+ SwfdecTextFieldMovie *text;
+
+ SWFDEC_AS_CHECK (SWFDEC_TYPE_TEXT_FIELD_MOVIE, &text, "");
+
+ if (text->variable) {
+ SWFDEC_AS_VALUE_SET_STRING (ret, text->variable);
+ } else {
+ SWFDEC_AS_VALUE_SET_NULL (ret);
+ }
+ }
+
+ static void
+ swfdec_text_field_movie_do_set_variable (SwfdecAsContext *cx,
+ SwfdecAsObject *object, guint argc, SwfdecAsValue *argv,
+ SwfdecAsValue *ret)
+ {
+ SwfdecTextFieldMovie *text;
+ const char *value;
+
+ if (argc > 0)
+ swfdec_as_value_to_number (cx, &argv[0]);
+
+ SWFDEC_AS_CHECK (SWFDEC_TYPE_TEXT_FIELD_MOVIE, &text, "s", &value);
+
+ if (SWFDEC_AS_VALUE_IS_UNDEFINED (&argv[0]) ||
+ SWFDEC_AS_VALUE_IS_NULL (&argv[0]) || value == SWFDEC_AS_STR_EMPTY) {
+ value = NULL;
+ }
+
+ swfdec_text_field_movie_set_listen_variable (text, value);
+ }
+
+ /*
+ * Native properties: Info
+ */
+ static void
+ swfdec_text_field_movie_get_textHeight (SwfdecAsContext *cx,
+ SwfdecAsObject *object, guint argc, SwfdecAsValue *argv,
+ SwfdecAsValue *ret)
+ {
+ SwfdecTextFieldMovie *text;
+ int height;
+
+ SWFDEC_AS_CHECK (SWFDEC_TYPE_TEXT_FIELD_MOVIE, &text, "");
+
+ swfdec_text_field_movie_get_text_size (text, NULL, &height);
+ SWFDEC_AS_VALUE_SET_NUMBER (ret, SWFDEC_TWIPS_TO_DOUBLE (height));
+ }
+
+ static void
+ swfdec_text_field_movie_get_textWidth (SwfdecAsContext *cx,
+ SwfdecAsObject *object, guint argc, SwfdecAsValue *argv,
+ SwfdecAsValue *ret)
+ {
+ SwfdecTextFieldMovie *text;
+ int width;
+
+ SWFDEC_AS_CHECK (SWFDEC_TYPE_TEXT_FIELD_MOVIE, &text, "");
+
+ swfdec_text_field_movie_get_text_size (text, &width, NULL);
+ SWFDEC_AS_VALUE_SET_NUMBER (ret, SWFDEC_TWIPS_TO_DOUBLE (width));
+ }
+
+ /*
+ * Native properties: Background & border
+ */
+ static void
+ swfdec_text_field_movie_get_background (SwfdecAsContext *cx,
+ SwfdecAsObject *object, guint argc, SwfdecAsValue *argv,
+ SwfdecAsValue *ret)
+ {
+ SwfdecTextFieldMovie *text;
+
+ SWFDEC_AS_CHECK (SWFDEC_TYPE_TEXT_FIELD_MOVIE, &text, "");
+
+ SWFDEC_AS_VALUE_SET_BOOLEAN (ret, text->text->background);
+ }
+
+ static void
+ swfdec_text_field_movie_set_background (SwfdecAsContext *cx,
+ SwfdecAsObject *object, guint argc, SwfdecAsValue *argv,
+ SwfdecAsValue *ret)
+ {
+ SwfdecTextFieldMovie *text;
+ gboolean value;
+
+ SWFDEC_AS_CHECK (SWFDEC_TYPE_TEXT_FIELD_MOVIE, &text, "b", &value);
+
+ swfdec_as_value_to_number (cx, &argv[0]);
+
+ if (text->text->background != value) {
+ text->text->background = value;
+ swfdec_movie_invalidate_last (SWFDEC_MOVIE (text));
+ }
+ }
+
+ static void
+ swfdec_text_field_movie_get_backgroundColor (SwfdecAsContext *cx,
+ SwfdecAsObject *object, guint argc, SwfdecAsValue *argv,
+ SwfdecAsValue *ret)
+ {
+ SwfdecTextFieldMovie *text;
+
+ SWFDEC_AS_CHECK (SWFDEC_TYPE_TEXT_FIELD_MOVIE, &text, "");
+
+ SWFDEC_AS_VALUE_SET_NUMBER (ret,
+ SWFDEC_COLOR_R (text->background_color) << 16 |
+ SWFDEC_COLOR_G (text->background_color) << 8 |
+ SWFDEC_COLOR_B (text->background_color));
+ }
+
+ static void
+ swfdec_text_field_movie_set_backgroundColor (SwfdecAsContext *cx,
+ SwfdecAsObject *object, guint argc, SwfdecAsValue *argv,
+ SwfdecAsValue *ret)
+ {
+ SwfdecTextFieldMovie *text;
+ int value;
+ SwfdecColor color;
+
+ SWFDEC_AS_CHECK (SWFDEC_TYPE_TEXT_FIELD_MOVIE, &text, "i", &value);
+
+ color = swfdec_text_field_movie_int_to_color (cx, value);
+ if (text->background_color != color) {
+ text->background_color = color;
+ swfdec_movie_invalidate_last (SWFDEC_MOVIE (text));
+ }
+ }
+
+ static void
+ swfdec_text_field_movie_get_border (SwfdecAsContext *cx,
+ SwfdecAsObject *object, guint argc, SwfdecAsValue *argv,
+ SwfdecAsValue *ret)
+ {
+ SwfdecTextFieldMovie *text;
+
+ SWFDEC_AS_CHECK (SWFDEC_TYPE_TEXT_FIELD_MOVIE, &text, "");
+
+ SWFDEC_AS_VALUE_SET_BOOLEAN (ret, text->text->border);
+ }
+
+ static void
+ swfdec_text_field_movie_set_border (SwfdecAsContext *cx,
+ SwfdecAsObject *object, guint argc, SwfdecAsValue *argv,
+ SwfdecAsValue *ret)
+ {
+ SwfdecTextFieldMovie *text;
+ gboolean value;
+
+ SWFDEC_AS_CHECK (SWFDEC_TYPE_TEXT_FIELD_MOVIE, &text, "b", &value);
+
+ swfdec_as_value_to_number (cx, &argv[0]);
+
+ if (text->text->border != value) {
+ text->text->border = value;
+ swfdec_movie_invalidate_last (SWFDEC_MOVIE (text));
+ }
+ }
+
+ static void
+ swfdec_text_field_movie_get_borderColor (SwfdecAsContext *cx,
+ SwfdecAsObject *object, guint argc, SwfdecAsValue *argv,
+ SwfdecAsValue *ret)
+ {
+ SwfdecTextFieldMovie *text;
+
+ SWFDEC_AS_CHECK (SWFDEC_TYPE_TEXT_FIELD_MOVIE, &text, "");
+
+
+ SWFDEC_AS_VALUE_SET_NUMBER (ret,
+ SWFDEC_COLOR_R (text->border_color) << 16 |
+ SWFDEC_COLOR_G (text->border_color) << 8 |
+ SWFDEC_COLOR_B (text->border_color));
+ }
+
+ static void
+ swfdec_text_field_movie_set_borderColor (SwfdecAsContext *cx,
+ SwfdecAsObject *object, guint argc, SwfdecAsValue *argv,
+ SwfdecAsValue *ret)
+ {
+ SwfdecTextFieldMovie *text;
+ int value;
+ SwfdecColor color;
+
+ SWFDEC_AS_CHECK (SWFDEC_TYPE_TEXT_FIELD_MOVIE, &text, "i", &value);
+
+ color = swfdec_text_field_movie_int_to_color (cx, value);
+ if (text->border_color != color) {
+ text->border_color = color;
+ swfdec_movie_invalidate_last (SWFDEC_MOVIE (text));
+ }
+ }
+
+ /*
+ * Native properties: Scrolling
+ */
+ static void
+ swfdec_text_field_movie_get_bottomScroll (SwfdecAsContext *cx,
+ SwfdecAsObject *object, guint argc, SwfdecAsValue *argv,
+ SwfdecAsValue *ret)
+ {
+ SwfdecTextFieldMovie *text;
+
+ SWFDEC_AS_CHECK (SWFDEC_TYPE_TEXT_FIELD_MOVIE, &text, "");
+
+ SWFDEC_AS_VALUE_SET_NUMBER (ret, text->scroll_bottom);
+ }
+
+ static void
+ swfdec_text_field_movie_do_get_hscroll (SwfdecAsContext *cx,
+ SwfdecAsObject *object, guint argc, SwfdecAsValue *argv,
+ SwfdecAsValue *ret)
+ {
+ SwfdecTextFieldMovie *text;
+
+ SWFDEC_AS_CHECK (SWFDEC_TYPE_TEXT_FIELD_MOVIE, &text, "");
+
+ SWFDEC_AS_VALUE_SET_NUMBER (ret, text->hscroll);
+ }
+
+ static void
+ swfdec_text_field_movie_do_set_hscroll (SwfdecAsContext *cx,
+ SwfdecAsObject *object, guint argc, SwfdecAsValue *argv,
+ SwfdecAsValue *ret)
+ {
+ SwfdecTextFieldMovie *text;
+ int value;
+
+ SWFDEC_AS_CHECK (SWFDEC_TYPE_TEXT_FIELD_MOVIE, &text, "i", &value);
+
+ value = CLAMP (value, 0, text->hscroll_max);
+ if (value != text->hscroll) {
+ text->hscroll = value;
+ text->scroll_changed = TRUE;
+ swfdec_movie_invalidate_last (SWFDEC_MOVIE (text));
+ }
+ }
+
+ static void
+ swfdec_text_field_movie_get_maxhscroll (SwfdecAsContext *cx,
+ SwfdecAsObject *object, guint argc, SwfdecAsValue *argv,
+ SwfdecAsValue *ret)
+ {
+ SwfdecTextFieldMovie *text;
+
+ SWFDEC_AS_CHECK (SWFDEC_TYPE_TEXT_FIELD_MOVIE, &text, "");
+
+ if (!text->text->word_wrap) {
+ SWFDEC_AS_VALUE_SET_NUMBER (ret, text->hscroll_max);
+ } else {
+ SWFDEC_AS_VALUE_SET_NUMBER (ret, 0);
+ }
+ }
+
+ static void
+ swfdec_text_field_movie_get_maxscroll (SwfdecAsContext *cx,
+ SwfdecAsObject *object, guint argc, SwfdecAsValue *argv,
+ SwfdecAsValue *ret)
+ {
+ SwfdecTextFieldMovie *text;
+
+ SWFDEC_AS_CHECK (SWFDEC_TYPE_TEXT_FIELD_MOVIE, &text, "");
+
+ SWFDEC_AS_VALUE_SET_NUMBER (ret, text->scroll_max);
+ }
+
+ static void
+ swfdec_text_field_movie_get_mouseWheelEnabled (SwfdecAsContext *cx,
+ SwfdecAsObject *object, guint argc, SwfdecAsValue *argv,
+ SwfdecAsValue *ret)
+ {
+ SwfdecTextFieldMovie *text;
+
+ SWFDEC_AS_CHECK (SWFDEC_TYPE_TEXT_FIELD_MOVIE, &text, "");
+
+ SWFDEC_AS_VALUE_SET_BOOLEAN (ret, text->mouse_wheel_enabled);
+ }
+
+ static void
+ swfdec_text_field_movie_set_mouseWheelEnabled (SwfdecAsContext *cx,
+ SwfdecAsObject *object, guint argc, SwfdecAsValue *argv,
+ SwfdecAsValue *ret)
+ {
+ SwfdecTextFieldMovie *text;
+ gboolean value;
+
+ SWFDEC_AS_CHECK (SWFDEC_TYPE_TEXT_FIELD_MOVIE, &text, "b", &value);
+
+ swfdec_as_value_to_number (cx, &argv[0]);
+
+ text->mouse_wheel_enabled = value;
+ }
+
+ static void
+ swfdec_text_field_movie_do_get_scroll (SwfdecAsContext *cx,
+ SwfdecAsObject *object, guint argc, SwfdecAsValue *argv,
+ SwfdecAsValue *ret)
+ {
+ SwfdecTextFieldMovie *text;
+
+ SWFDEC_AS_CHECK (SWFDEC_TYPE_TEXT_FIELD_MOVIE, &text, "");
+
+ SWFDEC_AS_VALUE_SET_NUMBER (ret, text->scroll);
+ }
+
+ static void
+ swfdec_text_field_movie_do_set_scroll (SwfdecAsContext *cx,
+ SwfdecAsObject *object, guint argc, SwfdecAsValue *argv,
+ SwfdecAsValue *ret)
+ {
+ SwfdecTextFieldMovie *text;
+ int value;
+
+ SWFDEC_AS_CHECK (SWFDEC_TYPE_TEXT_FIELD_MOVIE, &text, "i", &value);
+
+ value = CLAMP (value, 1, text->scroll_max);
+ if (value != text->scroll) {
+ text->scroll_bottom += value - text->scroll;
+ text->scroll = value;
+ text->scroll_changed = TRUE;
+ swfdec_movie_invalidate_last (SWFDEC_MOVIE (text));
+ }
+ }
+
+ /*
+ * Native properties: Display
+ */
+ static void
+ swfdec_text_field_movie_get_autoSize (SwfdecAsContext *cx,
+ SwfdecAsObject *object, guint argc, SwfdecAsValue *argv,
+ SwfdecAsValue *ret)
+ {
+ SwfdecTextFieldMovie *text;
+
+ SWFDEC_AS_CHECK (SWFDEC_TYPE_TEXT_FIELD_MOVIE, &text, "");
+
+ switch (text->text->auto_size) {
+ case SWFDEC_AUTO_SIZE_NONE:
+ SWFDEC_AS_VALUE_SET_STRING (ret, SWFDEC_AS_STR_none);
+ break;
+ case SWFDEC_AUTO_SIZE_LEFT:
+ SWFDEC_AS_VALUE_SET_STRING (ret, SWFDEC_AS_STR_left);
+ break;
+ case SWFDEC_AUTO_SIZE_RIGHT:
+ SWFDEC_AS_VALUE_SET_STRING (ret, SWFDEC_AS_STR_right);
+ break;
+ case SWFDEC_AUTO_SIZE_CENTER:
+ SWFDEC_AS_VALUE_SET_STRING (ret, SWFDEC_AS_STR_center);
+ break;
+ default:
+ g_assert_not_reached ();
+ }
+ }
+
+ static void
+ swfdec_text_field_movie_set_autoSize (SwfdecAsContext *cx,
+ SwfdecAsObject *object, guint argc, SwfdecAsValue *argv,
+ SwfdecAsValue *ret)
+ {
+ SwfdecTextFieldMovie *text;
+ SwfdecAutoSize old;
+ const char *s;
+
+ SWFDEC_AS_CHECK (SWFDEC_TYPE_TEXT_FIELD_MOVIE, &text, "");
+
+ if (argc < 1)
+ return;
+
+ if (SWFDEC_AS_VALUE_IS_BOOLEAN (&argv[0])) {
+ if (SWFDEC_AS_VALUE_GET_BOOLEAN (&argv[0])) {
+ text->text->auto_size = SWFDEC_AUTO_SIZE_LEFT;
+ } else {
+ text->text->auto_size = SWFDEC_AUTO_SIZE_NONE;
+ }
+ return;
+ }
+
+ swfdec_as_value_to_number (cx, &argv[0]);
+ s = swfdec_as_value_to_string (cx, &argv[0]);
+
+ old = text->text->auto_size;
+ if (!g_ascii_strcasecmp (s, "none")) {
+ text->text->auto_size = SWFDEC_AUTO_SIZE_NONE;
+ } else if (!g_ascii_strcasecmp (s, "left")) {
+ text->text->auto_size = SWFDEC_AUTO_SIZE_LEFT;
+ } else if (!g_ascii_strcasecmp (s, "right")) {
+ text->text->auto_size = SWFDEC_AUTO_SIZE_RIGHT;
+ } else if (!g_ascii_strcasecmp (s, "center")) {
+ text->text->auto_size = SWFDEC_AUTO_SIZE_CENTER;
+ }
+
+ if (text->text->auto_size != old) {
+ swfdec_text_field_movie_auto_size (text);
+ // FIXME: fix scrolling
+ }
+ }
+
+ static void
+ swfdec_text_field_movie_get_password (SwfdecAsContext *cx,
+ SwfdecAsObject *object, guint argc, SwfdecAsValue *argv,
+ SwfdecAsValue *ret)
+ {
+ SwfdecTextFieldMovie *text;
+
+ SWFDEC_AS_CHECK (SWFDEC_TYPE_TEXT_FIELD_MOVIE, &text, "");
+
+ SWFDEC_AS_VALUE_SET_BOOLEAN (ret, text->text->password);
+ }
+
+ static void
+ swfdec_text_field_movie_set_password (SwfdecAsContext *cx,
+ SwfdecAsObject *object, guint argc, SwfdecAsValue *argv,
+ SwfdecAsValue *ret)
+ {
+ SwfdecTextFieldMovie *text;
+ gboolean value;
+
+ SWFDEC_AS_CHECK (SWFDEC_TYPE_TEXT_FIELD_MOVIE, &text, "b", &value);
+
+ swfdec_as_value_to_number (cx, &argv[0]);
+
+ if (text->text->password != value) {
+ text->text->password = value;
+ if (!value && text->asterisks != NULL) {
+ g_free (text->asterisks);
+ text->asterisks = NULL;
+ text->asterisks_length = 0;
+ }
+ swfdec_movie_invalidate_last (SWFDEC_MOVIE (text));
+ }
+ }
+
+ static void
+ swfdec_text_field_movie_get_wordWrap (SwfdecAsContext *cx,
+ SwfdecAsObject *object, guint argc, SwfdecAsValue *argv,
+ SwfdecAsValue *ret)
+ {
+ SwfdecTextFieldMovie *text;
+
+ SWFDEC_AS_CHECK (SWFDEC_TYPE_TEXT_FIELD_MOVIE, &text, "");
+
+ SWFDEC_AS_VALUE_SET_BOOLEAN (ret, text->text->word_wrap);
+ }
+
+ static void
+ swfdec_text_field_movie_set_wordWrap (SwfdecAsContext *cx,
+ SwfdecAsObject *object, guint argc, SwfdecAsValue *argv,
+ SwfdecAsValue *ret)
+ {
+ SwfdecTextFieldMovie *text;
+ gboolean value;
+
+ SWFDEC_AS_CHECK (SWFDEC_TYPE_TEXT_FIELD_MOVIE, &text, "b", &value);
+
+ swfdec_as_value_to_number (cx, &argv[0]);
+
+ if (text->text->word_wrap != value) {
+ text->text->word_wrap = value;
+ swfdec_movie_invalidate_last (SWFDEC_MOVIE (text));
+ swfdec_text_field_movie_auto_size (text);
+ // special case: don't set scrolling
+ }
+ }
+
+ /*
+ * Native properties: Format
+ */
+ static void
+ swfdec_text_field_movie_get_embedFonts (SwfdecAsContext *cx,
+ SwfdecAsObject *object, guint argc, SwfdecAsValue *argv,
+ SwfdecAsValue *ret)
+ {
+ SwfdecTextFieldMovie *text;
+
+ SWFDEC_AS_CHECK (SWFDEC_TYPE_TEXT_FIELD_MOVIE, &text, "");
+
+ SWFDEC_AS_VALUE_SET_BOOLEAN (ret, text->text->embed_fonts);
+ }
+
+ static void
+ swfdec_text_field_movie_set_embedFonts (SwfdecAsContext *cx,
+ SwfdecAsObject *object, guint argc, SwfdecAsValue *argv,
+ SwfdecAsValue *ret)
+ {
+ SwfdecTextFieldMovie *text;
+ gboolean value;
+
+ SWFDEC_AS_CHECK (SWFDEC_TYPE_TEXT_FIELD_MOVIE, &text, "b", &value);
+
+ swfdec_as_value_to_number (cx, &argv[0]);
+
+ if (!text->text->embed_fonts && value)
+ SWFDEC_FIXME ("Using embed fonts in TextField not supported");
+
+ text->text->embed_fonts = value;
+
+ // FIXME: resize
+ }
+
+ static void
+ swfdec_text_field_movie_get_styleSheet (SwfdecAsContext *cx,
+ SwfdecAsObject *object, guint argc, SwfdecAsValue *argv,
+ SwfdecAsValue *ret)
+ {
+ SwfdecTextFieldMovie *text;
+
+ SWFDEC_AS_CHECK (SWFDEC_TYPE_TEXT_FIELD_MOVIE, &text, "");
+
+ if (text->style_sheet != NULL) {
+ SWFDEC_AS_VALUE_SET_OBJECT (ret, SWFDEC_AS_OBJECT (text->style_sheet));
+ } else {
+ SWFDEC_AS_VALUE_SET_UNDEFINED (ret);
+ }
+ }
+
+ static void
+ swfdec_text_field_movie_style_sheet_update (SwfdecTextFieldMovie *text)
+ {
+ if (text->style_sheet_input)
+ swfdec_text_field_movie_set_text (text, text->style_sheet_input, TRUE);
+ }
+
+ static void
+ swfdec_text_field_movie_set_styleSheet (SwfdecAsContext *cx,
+ SwfdecAsObject *object, guint argc, SwfdecAsValue *argv,
+ SwfdecAsValue *ret)
+ {
+ SwfdecTextFieldMovie *text;
+ SwfdecAsObject *value;
+
+ SWFDEC_AS_CHECK (SWFDEC_TYPE_TEXT_FIELD_MOVIE, &text, "");
+
+ if (argc < 1)
+ return;
+
+ swfdec_as_value_to_number (cx, &argv[0]);
+
+ if (SWFDEC_AS_VALUE_IS_OBJECT (&argv[0])) {
+ value = SWFDEC_AS_VALUE_GET_OBJECT (&argv[0]);
+ if (SWFDEC_IS_MOVIE (value))
+ value = NULL;
+ } else {
+ value = NULL;
+ }
+
+ if (text->style_sheet == value)
+ return;
+
+ if (text->style_sheet != NULL && SWFDEC_IS_STYLESHEET (text->style_sheet)) {
+ g_signal_handlers_disconnect_by_func (text->style_sheet,
+ swfdec_text_field_movie_style_sheet_update, text);
+ g_object_remove_weak_pointer (G_OBJECT (text->style_sheet),
+ (gpointer) &text->style_sheet);
+ }
+
+ text->style_sheet = value;
+
+ if (SWFDEC_IS_STYLESHEET (value)) {
+ g_signal_connect_swapped (value, "update",
+ G_CALLBACK (swfdec_text_field_movie_style_sheet_update), text);
+ g_object_add_weak_pointer (G_OBJECT (text->style_sheet),
+ (gpointer) &text->style_sheet);
+
+ swfdec_text_field_movie_style_sheet_update (text);
+ }
+ }
+
+ static void
+ swfdec_text_field_movie_get_textColor (SwfdecAsContext *cx,
+ SwfdecAsObject *object, guint argc, SwfdecAsValue *argv,
+ SwfdecAsValue *ret)
+ {
+ SwfdecTextFieldMovie *text;
+
+ SWFDEC_AS_CHECK (SWFDEC_TYPE_TEXT_FIELD_MOVIE, &text, "");
+
+ SWFDEC_AS_VALUE_SET_NUMBER (ret, text->format_new->color);
+ }
+
+ // This doesn't work the same way as TextFormat's color setting
+ static void
+ swfdec_text_field_movie_set_textColor (SwfdecAsContext *cx,
+ SwfdecAsObject *object, guint argc, SwfdecAsValue *argv,
+ SwfdecAsValue *ret)
+ {
+ SwfdecTextFieldMovie *text;
+ int value;
+
+ SWFDEC_AS_CHECK (SWFDEC_TYPE_TEXT_FIELD_MOVIE, &text, "i", &value);
+
+ text->format_new->color = swfdec_text_field_movie_int_to_color (cx, value);
+ }
+
+ SWFDEC_AS_NATIVE (104, 300, swfdec_text_field_movie_get_gridFitType)
+ void
+ swfdec_text_field_movie_get_gridFitType (SwfdecAsContext *cx,
+ SwfdecAsObject *object, guint argc, SwfdecAsValue *argv,
+ SwfdecAsValue *ret)
+ {
+ SWFDEC_STUB ("TextField.gridFitType (get)");
+ }
+
+ SWFDEC_AS_NATIVE (104, 301, swfdec_text_field_movie_set_gridFitType)
+ void
+ swfdec_text_field_movie_set_gridFitType (SwfdecAsContext *cx,
+ SwfdecAsObject *object, guint argc, SwfdecAsValue *argv,
+ SwfdecAsValue *ret)
+ {
+ SWFDEC_STUB ("TextField.gridFitType (set)");
+ }
+
+ SWFDEC_AS_NATIVE (104, 302, swfdec_text_field_movie_get_antiAliasType)
+ void
+ swfdec_text_field_movie_get_antiAliasType (SwfdecAsContext *cx,
+ SwfdecAsObject *object, guint argc, SwfdecAsValue *argv,
+ SwfdecAsValue *ret)
+ {
+ SWFDEC_STUB ("TextField.antiAliasType (get)");
+ }
+
+ SWFDEC_AS_NATIVE (104, 303, swfdec_text_field_movie_set_antiAliasType)
+ void
+ swfdec_text_field_movie_set_antiAliasType (SwfdecAsContext *cx,
+ SwfdecAsObject *object, guint argc, SwfdecAsValue *argv,
+ SwfdecAsValue *ret)
+ {
+ SWFDEC_STUB ("TextField.antiAliasType (set)");
+ }
+
+ SWFDEC_AS_NATIVE (104, 304, swfdec_text_field_movie_get_thickness)
+ void
+ swfdec_text_field_movie_get_thickness (SwfdecAsContext *cx,
+ SwfdecAsObject *object, guint argc, SwfdecAsValue *argv,
+ SwfdecAsValue *ret)
+ {
+ SWFDEC_STUB ("TextField.thickness (get)");
+ }
+
+ SWFDEC_AS_NATIVE (104, 305, swfdec_text_field_movie_set_thickness)
+ void
+ swfdec_text_field_movie_set_thickness (SwfdecAsContext *cx,
+ SwfdecAsObject *object, guint argc, SwfdecAsValue *argv,
+ SwfdecAsValue *ret)
+ {
+ SWFDEC_STUB ("TextField.thickness (set)");
+ }
+
+ SWFDEC_AS_NATIVE (104, 306, swfdec_text_field_movie_get_sharpness)
+ void
+ swfdec_text_field_movie_get_sharpness (SwfdecAsContext *cx,
+ SwfdecAsObject *object, guint argc, SwfdecAsValue *argv,
+ SwfdecAsValue *ret)
+ {
+ SWFDEC_STUB ("TextField.sharpness (get)");
+ }
+
+ SWFDEC_AS_NATIVE (104, 307, swfdec_text_field_movie_set_sharpness)
+ void
+ swfdec_text_field_movie_set_sharpness (SwfdecAsContext *cx,
+ SwfdecAsObject *object, guint argc, SwfdecAsValue *argv,
+ SwfdecAsValue *ret)
+ {
+ SWFDEC_STUB ("TextField.sharpness (set)");
+ }
+
+ SWFDEC_AS_NATIVE (104, 308, swfdec_text_field_movie_get_filters)
+ void
+ swfdec_text_field_movie_get_filters (SwfdecAsContext *cx,
+ SwfdecAsObject *object, guint argc, SwfdecAsValue *argv,
+ SwfdecAsValue *ret)
+ {
+ SWFDEC_STUB ("TextField.filters (get)");
+ }
+
+ SWFDEC_AS_NATIVE (104, 309, swfdec_text_field_movie_set_filters)
+ void
+ swfdec_text_field_movie_set_filters (SwfdecAsContext *cx,
+ SwfdecAsObject *object, guint argc, SwfdecAsValue *argv,
+ SwfdecAsValue *ret)
+ {
+ SWFDEC_STUB ("TextField.filters (set)");
+ }
+
+ /*
+ * Native functions
+ */
+ SWFDEC_AS_NATIVE (104, 104, swfdec_text_field_movie_getNewTextFormat)
+ void
+ swfdec_text_field_movie_getNewTextFormat (SwfdecAsContext *cx,
+ SwfdecAsObject *object, guint argc, SwfdecAsValue *argv,
+ SwfdecAsValue *ret)
+ {
+ SwfdecTextFieldMovie *text;
+
+ SWFDEC_AS_CHECK (SWFDEC_TYPE_TEXT_FIELD_MOVIE, &text, "");
+
+ swfdec_text_format_init_properties (cx);
+
+ SWFDEC_AS_VALUE_SET_OBJECT (ret,
+ SWFDEC_AS_OBJECT (swfdec_text_format_copy (text->format_new)));
+ }
+
+ SWFDEC_AS_NATIVE (104, 105, swfdec_text_field_movie_setNewTextFormat)
+ void
+ swfdec_text_field_movie_setNewTextFormat (SwfdecAsContext *cx,
+ SwfdecAsObject *object, guint argc, SwfdecAsValue *argv,
+ SwfdecAsValue *ret)
+ {
+ SwfdecTextFieldMovie *text;
+ SwfdecAsObject *obj;
+
+ SWFDEC_AS_CHECK (SWFDEC_TYPE_TEXT_FIELD_MOVIE, &text, "o", &obj);
+
+ if (!SWFDEC_IS_TEXT_FORMAT (obj))
+ return;
+
+ swfdec_text_format_add (text->format_new, SWFDEC_TEXT_FORMAT (obj));
+ }
+
+ SWFDEC_AS_NATIVE (104, 102, swfdec_text_field_movie_setTextFormat)
+ void
+ swfdec_text_field_movie_setTextFormat (SwfdecAsContext *cx,
+ SwfdecAsObject *object, guint argc, SwfdecAsValue *argv,
+ SwfdecAsValue *ret)
+ {
+ SwfdecTextFieldMovie *text;
+ SwfdecTextFormat *format;
+ int val, start_index, end_index;
+ guint i;
+
+ SWFDEC_AS_CHECK (SWFDEC_TYPE_TEXT_FIELD_MOVIE, &text, "");
+
+ if (argc < 1)
+ return;
+
+ i = 0;
+ if (argc <= i + 1) {
+ start_index = 0;
+ end_index = g_utf8_strlen (text->input->str, -1);
+ } else {
+ start_index = val = swfdec_as_value_to_integer (cx, &argv[i++]);
+ start_index = CLAMP (start_index, 0, g_utf8_strlen (text->input->str, -1));
+ if (argc <= i + 1) {
+ if (val < 0) { // fail
+ start_index = end_index = 0;
+ } else{
+ end_index = start_index + 1;
+ }
+ } else {
+ end_index = swfdec_as_value_to_integer (cx, &argv[i++]);
+ }
+ end_index =
+ CLAMP (end_index, start_index, g_utf8_strlen (text->input->str, -1));
+ }
+ if (start_index == end_index)
+ return;
+
+ if (!SWFDEC_AS_VALUE_IS_OBJECT (&argv[i]))
+ return;
+ if (!SWFDEC_IS_TEXT_FORMAT (SWFDEC_AS_VALUE_GET_OBJECT (&argv[i])))
+ return;
+
+ format = SWFDEC_TEXT_FORMAT (SWFDEC_AS_VALUE_GET_OBJECT (&argv[i]));
+
+ swfdec_text_field_movie_set_text_format (text, format,
+ g_utf8_offset_to_pointer (text->input->str, start_index) -
+ text->input->str,
+ g_utf8_offset_to_pointer (text->input->str, end_index) -
+ text->input->str);
+
+ swfdec_movie_invalidate_last (SWFDEC_MOVIE (text));
+ swfdec_text_field_movie_auto_size (text);
+ // special case: update the max values, not the current values
+ swfdec_text_field_movie_update_scroll (text, FALSE);
+ }
+
+ SWFDEC_AS_NATIVE (104, 101, swfdec_text_field_movie_getTextFormat)
+ void
+ swfdec_text_field_movie_getTextFormat (SwfdecAsContext *cx,
+ SwfdecAsObject *object, guint argc, SwfdecAsValue *argv,
+ SwfdecAsValue *ret)
+ {
+ SwfdecTextFieldMovie *text;
+ SwfdecTextFormat *format;
+ int val, start_index, end_index;
+
+ SWFDEC_AS_CHECK (SWFDEC_TYPE_TEXT_FIELD_MOVIE, &text, "");
+
+ if (argc == 0) {
+ start_index = 0;
+ end_index = g_utf8_strlen (text->input->str, -1);
+ } else {
+ start_index = val = swfdec_as_value_to_integer (cx, &argv[0]);
+ start_index = CLAMP (start_index, 0, g_utf8_strlen (text->input->str, -1));
+ if (argc == 1) {
+ if (val < 0) { // fail
+ start_index = end_index = 0;
+ } else{
+ end_index = start_index + 1;
+ }
+ } else {
+ end_index = swfdec_as_value_to_integer (cx, &argv[1]);
+ }
+ end_index =
+ CLAMP (end_index, start_index, g_utf8_strlen (text->input->str, -1));
+ }
+
+ if (start_index == end_index) {
+ format = SWFDEC_TEXT_FORMAT (swfdec_text_format_new (cx));
+ } else {
+ format = swfdec_text_field_movie_get_text_format (text,
+ g_utf8_offset_to_pointer (text->input->str, start_index) -
+ text->input->str,
+ g_utf8_offset_to_pointer (text->input->str, end_index) -
+ text->input->str);
+ }
+
+ SWFDEC_AS_VALUE_SET_OBJECT (ret, SWFDEC_AS_OBJECT (format));
+ }
+
+ SWFDEC_AS_NATIVE (104, 100, swfdec_text_field_movie_replaceSel)
+ void
+ swfdec_text_field_movie_replaceSel (SwfdecAsContext *cx,
+ SwfdecAsObject *object, guint argc, SwfdecAsValue *argv,
+ SwfdecAsValue *ret)
+ {
+ SWFDEC_STUB ("TextField.replaceSel");
+ }
+
+ SWFDEC_AS_NATIVE (104, 107, swfdec_text_field_movie_replaceText)
+ void
+ swfdec_text_field_movie_replaceText (SwfdecAsContext *cx,
+ SwfdecAsObject *object, guint argc, SwfdecAsValue *argv,
+ SwfdecAsValue *ret)
+ {
+ SwfdecTextFieldMovie *text;
+ int start_index, end_index;
+ const char *str;
+
+
+ SWFDEC_AS_CHECK (SWFDEC_TYPE_TEXT_FIELD_MOVIE, &text, "iis", &start_index,
+ &end_index, &str);
+
+ if (start_index < 0)
+ return;
+ if (end_index < start_index)
+ return;
+
+ start_index = MIN (start_index, g_utf8_strlen (text->input->str, -1));
+ end_index = MIN (end_index, g_utf8_strlen (text->input->str, -1));
+
+ swfdec_text_field_movie_replace_text (text,
+ g_utf8_offset_to_pointer (text->input->str, start_index) -
+ text->input->str,
+ g_utf8_offset_to_pointer (text->input->str, end_index) -
+ text->input->str, str);
+ }
+
+ // static
+ SWFDEC_AS_NATIVE (104, 201, swfdec_text_field_movie_getFontList)
+ void
+ swfdec_text_field_movie_getFontList (SwfdecAsContext *cx,
+ SwfdecAsObject *object, guint argc, SwfdecAsValue *argv,
+ SwfdecAsValue *ret)
+ {
+ SwfdecAsArray *array;
+ SwfdecAsValue val;
+ PangoFontFamily **families;
+ int i, n_families;
+
+ pango_font_map_list_families (pango_cairo_font_map_get_default (),
+ &families, &n_families);
+
+ array = SWFDEC_AS_ARRAY (swfdec_as_array_new (cx));
+ for (i = 0; i < n_families; i++) {
+ SWFDEC_AS_VALUE_SET_STRING (&val, swfdec_as_context_get_string (cx,
+ pango_font_family_get_name (families[i])));
+ swfdec_as_array_push (array, &val);
+ }
+ SWFDEC_AS_VALUE_SET_STRING (&val, SWFDEC_AS_STR_Sans);
+ swfdec_as_array_push (array, &val);
+ SWFDEC_AS_VALUE_SET_STRING (&val, SWFDEC_AS_STR_Serif);
+ swfdec_as_array_push (array, &val);
+ SWFDEC_AS_VALUE_SET_STRING (&val, SWFDEC_AS_STR_Monospace);
+ swfdec_as_array_push (array, &val);
+
+ g_free (families);
+
+ SWFDEC_AS_VALUE_SET_OBJECT (ret, SWFDEC_AS_OBJECT (array));
+ }
+
+ SWFDEC_AS_NATIVE (104, 106, swfdec_text_field_movie_getDepth)
+ void
+ swfdec_text_field_movie_getDepth (SwfdecAsContext *cx, SwfdecAsObject *object,
+ guint argc, SwfdecAsValue *argv, SwfdecAsValue *rval)
+ {
+ SwfdecTextFieldMovie *text;
+
+ SWFDEC_AS_CHECK (SWFDEC_TYPE_TEXT_FIELD_MOVIE, &text, "");
+
+ SWFDEC_AS_VALUE_SET_INT (rval, SWFDEC_MOVIE (text)->depth);
+ }
+
+ SWFDEC_AS_NATIVE (104, 103, swfdec_text_field_movie_removeTextField)
+ void
+ swfdec_text_field_movie_removeTextField (SwfdecAsContext *cx,
+ SwfdecAsObject *object, guint argc, SwfdecAsValue *argv,
+ SwfdecAsValue *rval)
+ {
+ SwfdecTextFieldMovie *text;
+ SwfdecMovie *movie;
+
+ SWFDEC_AS_CHECK (SWFDEC_TYPE_TEXT_FIELD_MOVIE, &text, "");
+
+ movie = SWFDEC_MOVIE (text);
+ if (swfdec_depth_classify (movie->depth) == SWFDEC_DEPTH_CLASS_DYNAMIC)
+ swfdec_movie_remove (movie);
+ }
+
+ /*
+ * Creating TextFields
+ */
+ SWFDEC_AS_NATIVE (104, 200, swfdec_text_field_movie_createTextField)
+ void
+ swfdec_text_field_movie_createTextField (SwfdecAsContext *cx,
+ SwfdecAsObject *object, guint argc, SwfdecAsValue *argv,
+ SwfdecAsValue *rval)
+ {
+ SwfdecMovie *movie, *parent;
+ SwfdecTextField *edittext;
+ int depth, x, y, width, height;
+ const char *name;
+ SwfdecAsFunction *fun;
+ SwfdecAsValue val;
+
+ SWFDEC_AS_CHECK (SWFDEC_TYPE_MOVIE, &parent, "siiiii", &name, &depth, &x, &y, &width, &height);
+
+ edittext = g_object_new (SWFDEC_TYPE_TEXT_FIELD, NULL);
+ edittext->html = FALSE;
+ edittext->editable = FALSE;
+ edittext->password = FALSE;
+ edittext->selectable = TRUE;
+ edittext->font = NULL; // FIXME
+ edittext->word_wrap = FALSE;
+ edittext->multiline = FALSE;
+ edittext->auto_size = SWFDEC_AUTO_SIZE_NONE;
+ edittext->border = FALSE;
+ edittext->size = 240; // FIXME: Correct?
+
+ edittext->input = NULL;
+ edittext->variable = NULL;
+ edittext->color = 0;
+ edittext->align = SWFDEC_TEXT_ALIGN_LEFT;
+ edittext->left_margin = 0;
+ edittext->right_margin = 0;
+ edittext->indent = 0;
+ edittext->leading = 0;
+
- SWFDEC_GRAPHIC (edittext)->extents.x0 = SWFDEC_DOUBLE_TO_TWIPS (x);
- SWFDEC_GRAPHIC (edittext)->extents.x1 =
- SWFDEC_GRAPHIC (edittext)->extents.x0 + SWFDEC_DOUBLE_TO_TWIPS (width);
- SWFDEC_GRAPHIC (edittext)->extents.y0 = SWFDEC_DOUBLE_TO_TWIPS (y);
- SWFDEC_GRAPHIC (edittext)->extents.y1 =
- SWFDEC_GRAPHIC (edittext)->extents.y0 + SWFDEC_DOUBLE_TO_TWIPS (height);
++ SWFDEC_GRAPHIC (edittext)->extents.x0 = 0;
++ SWFDEC_GRAPHIC (edittext)->extents.x1 = SWFDEC_DOUBLE_TO_TWIPS (width);
++ SWFDEC_GRAPHIC (edittext)->extents.y0 = 0;
++ SWFDEC_GRAPHIC (edittext)->extents.y1 = SWFDEC_DOUBLE_TO_TWIPS (height);
+
+ movie = swfdec_movie_find (parent, depth);
+ if (movie)
+ swfdec_movie_remove (movie);
+
+ movie = swfdec_movie_new (SWFDEC_PLAYER (cx), depth, parent, parent->resource,
+ SWFDEC_GRAPHIC (edittext), name);
+ g_assert (SWFDEC_IS_TEXT_FIELD_MOVIE (movie));
+ g_object_unref (edittext);
+ swfdec_movie_initialize (movie);
++
++ movie->matrix.x0 = SWFDEC_DOUBLE_TO_TWIPS (x);
++ movie->matrix.y0 = SWFDEC_DOUBLE_TO_TWIPS (y);
++ movie->modified = TRUE;
++
+ swfdec_movie_update (movie);
+
+ swfdec_as_object_get_variable (cx->global, SWFDEC_AS_STR_TextField, &val);
+ if (!SWFDEC_AS_VALUE_IS_OBJECT (&val))
+ return;
+ fun = (SwfdecAsFunction *) SWFDEC_AS_VALUE_GET_OBJECT (&val);
+ if (!SWFDEC_IS_AS_FUNCTION (fun))
+ return;
+
+ /* set initial variables */
+ if (swfdec_as_object_get_variable (SWFDEC_AS_OBJECT (fun),
+ SWFDEC_AS_STR_prototype, &val)) {
+ swfdec_as_object_set_variable_and_flags (SWFDEC_AS_OBJECT (movie),
+ SWFDEC_AS_STR___proto__, &val,
+ SWFDEC_AS_VARIABLE_HIDDEN | SWFDEC_AS_VARIABLE_PERMANENT);
+ }
+ SWFDEC_AS_VALUE_SET_OBJECT (&val, SWFDEC_AS_OBJECT (fun));
+ if (cx->version < 7) {
+ swfdec_as_object_set_variable_and_flags (SWFDEC_AS_OBJECT (movie),
+ SWFDEC_AS_STR_constructor, &val, SWFDEC_AS_VARIABLE_HIDDEN);
+ }
+ swfdec_as_object_set_variable_and_flags (SWFDEC_AS_OBJECT (movie),
+ SWFDEC_AS_STR___constructor__, &val,
+ SWFDEC_AS_VARIABLE_HIDDEN | SWFDEC_AS_VARIABLE_VERSION_6_UP);
+
+ swfdec_as_function_call (fun, SWFDEC_AS_OBJECT (movie), 0, NULL, rval);
+ cx->frame->construct = TRUE;
+ swfdec_as_context_run (cx);
+ }
+
+ void
+ swfdec_text_field_movie_init_properties (SwfdecAsContext *cx)
+ {
+ SwfdecAsValue val;
+ SwfdecAsObject *object, *proto;
+
+ // FIXME: We should only initialize if the prototype Object has not been
+ // initialized by any object's constructor with native properties
+ // (TextField, TextFormat, XML, XMLNode at least)
+
+ g_return_if_fail (SWFDEC_IS_AS_CONTEXT (cx));
+
+ swfdec_as_object_get_variable (cx->global, SWFDEC_AS_STR_TextField, &val);
+ if (!SWFDEC_AS_VALUE_IS_OBJECT (&val))
+ return;
+ object = SWFDEC_AS_VALUE_GET_OBJECT (&val);
+ swfdec_as_object_get_variable (object, SWFDEC_AS_STR_prototype, &val);
+ if (!SWFDEC_AS_VALUE_IS_OBJECT (&val))
+ return;
+ proto = SWFDEC_AS_VALUE_GET_OBJECT (&val);
+
+ // text
+ swfdec_as_object_add_native_variable (proto, SWFDEC_AS_STR_text,
+ swfdec_text_field_movie_do_get_text,
+ swfdec_text_field_movie_do_set_text);
+ swfdec_as_object_add_native_variable (proto, SWFDEC_AS_STR_html,
+ swfdec_text_field_movie_get_html, swfdec_text_field_movie_set_html);
+ swfdec_as_object_add_native_variable (proto, SWFDEC_AS_STR_htmlText,
+ swfdec_text_field_movie_get_htmlText,
+ swfdec_text_field_movie_set_htmlText);
+ swfdec_as_object_add_native_variable (proto, SWFDEC_AS_STR_length,
+ swfdec_text_field_movie_get_length,
+ swfdec_text_field_movie_set_readonly);
+
+ // input
+ swfdec_as_object_add_native_variable (proto, SWFDEC_AS_STR_condenseWhite,
+ swfdec_text_field_movie_get_condenseWhite,
+ swfdec_text_field_movie_set_condenseWhite);
+ swfdec_as_object_add_native_variable (proto, SWFDEC_AS_STR_maxChars,
+ swfdec_text_field_movie_get_maxChars,
+ swfdec_text_field_movie_set_maxChars);
+ swfdec_as_object_add_native_variable (proto, SWFDEC_AS_STR_multiline,
+ swfdec_text_field_movie_get_multiline,
+ swfdec_text_field_movie_set_multiline);
+ swfdec_as_object_add_native_variable (proto, SWFDEC_AS_STR_restrict,
+ swfdec_text_field_movie_get_restrict,
+ swfdec_text_field_movie_set_restrict);
+ swfdec_as_object_add_native_variable (proto, SWFDEC_AS_STR_selectable,
+ swfdec_text_field_movie_get_selectable,
+ swfdec_text_field_movie_set_selectable);
+ swfdec_as_object_add_native_variable (proto, SWFDEC_AS_STR_type,
+ swfdec_text_field_movie_do_get_type,
+ swfdec_text_field_movie_do_set_type);
+ swfdec_as_object_add_native_variable (proto, SWFDEC_AS_STR_variable,
+ swfdec_text_field_movie_do_get_variable,
+ swfdec_text_field_movie_do_set_variable);
+
+ // info
+ swfdec_as_object_add_native_variable (proto, SWFDEC_AS_STR_textHeight,
+ swfdec_text_field_movie_get_textHeight,
+ swfdec_text_field_movie_set_readonly);
+ swfdec_as_object_add_native_variable (proto, SWFDEC_AS_STR_textWidth,
+ swfdec_text_field_movie_get_textWidth,
+ swfdec_text_field_movie_set_readonly);
+
+ // border & background
+ swfdec_as_object_add_native_variable (proto, SWFDEC_AS_STR_background,
+ swfdec_text_field_movie_get_background,
+ swfdec_text_field_movie_set_background);
+ swfdec_as_object_add_native_variable (proto, SWFDEC_AS_STR_backgroundColor,
+ swfdec_text_field_movie_get_backgroundColor,
+ swfdec_text_field_movie_set_backgroundColor);
+ swfdec_as_object_add_native_variable (proto, SWFDEC_AS_STR_border,
+ swfdec_text_field_movie_get_border, swfdec_text_field_movie_set_border);
+ swfdec_as_object_add_native_variable (proto, SWFDEC_AS_STR_borderColor,
+ swfdec_text_field_movie_get_borderColor,
+ swfdec_text_field_movie_set_borderColor);
+
+ // scrolling
+ swfdec_as_object_add_native_variable (proto, SWFDEC_AS_STR_bottomScroll,
+ swfdec_text_field_movie_get_bottomScroll,
+ swfdec_text_field_movie_set_readonly);
+ swfdec_as_object_add_native_variable (proto, SWFDEC_AS_STR_hscroll,
+ swfdec_text_field_movie_do_get_hscroll,
+ swfdec_text_field_movie_do_set_hscroll);
+ swfdec_as_object_add_native_variable (proto, SWFDEC_AS_STR_maxhscroll,
+ swfdec_text_field_movie_get_maxhscroll,
+ swfdec_text_field_movie_set_readonly);
+ swfdec_as_object_add_native_variable (proto, SWFDEC_AS_STR_maxscroll,
+ swfdec_text_field_movie_get_maxscroll,
+ swfdec_text_field_movie_set_readonly);
+ swfdec_as_object_add_native_variable (proto, SWFDEC_AS_STR_mouseWheelEnabled,
+ swfdec_text_field_movie_get_mouseWheelEnabled,
+ swfdec_text_field_movie_set_mouseWheelEnabled);
+ swfdec_as_object_add_native_variable (proto, SWFDEC_AS_STR_scroll,
+ swfdec_text_field_movie_do_get_scroll,
+ swfdec_text_field_movie_do_set_scroll);
+
+ // display
+ swfdec_as_object_add_native_variable (proto, SWFDEC_AS_STR_autoSize,
+ swfdec_text_field_movie_get_autoSize,
+ swfdec_text_field_movie_set_autoSize);
+ swfdec_as_object_add_native_variable (proto, SWFDEC_AS_STR_password,
+ swfdec_text_field_movie_get_password,
+ swfdec_text_field_movie_set_password);
+ swfdec_as_object_add_native_variable (proto, SWFDEC_AS_STR_wordWrap,
+ swfdec_text_field_movie_get_wordWrap,
+ swfdec_text_field_movie_set_wordWrap);
+
+ // format
+ swfdec_as_object_add_native_variable (proto, SWFDEC_AS_STR_embedFonts,
+ swfdec_text_field_movie_get_embedFonts,
+ swfdec_text_field_movie_set_embedFonts);
+ swfdec_as_object_add_native_variable (proto, SWFDEC_AS_STR_styleSheet,
+ swfdec_text_field_movie_get_styleSheet,
+ swfdec_text_field_movie_set_styleSheet);
+ swfdec_as_object_add_native_variable (proto, SWFDEC_AS_STR_textColor,
+ swfdec_text_field_movie_get_textColor,
+ swfdec_text_field_movie_set_textColor);
+
+ // TODO: menu, tabEnabled, tabIndex
+
+ // Version 8 properties have ASnative numbers:
+ // gridFitType, antiAliasType, thickness, sharpness and filters
+ }
+
+ SWFDEC_AS_NATIVE (104, 0, swfdec_text_field_movie_construct)
+ void
+ swfdec_text_field_movie_construct (SwfdecAsContext *cx, SwfdecAsObject *object,
+ guint argc, SwfdecAsValue *argv, SwfdecAsValue *ret)
+ {
+ if (!cx->frame->construct) {
+ SwfdecAsValue val;
+ if (!swfdec_as_context_use_mem (cx, sizeof (SwfdecAsObject)))
+ return;
+ object = g_object_new (SWFDEC_TYPE_AS_OBJECT, NULL);
+ swfdec_as_object_add (object, cx, sizeof (SwfdecAsObject));
+ swfdec_as_object_get_variable (cx->global, SWFDEC_AS_STR_TextField, &val);
+ if (SWFDEC_AS_VALUE_IS_OBJECT (&val)) {
+ swfdec_as_object_set_constructor (object,
+ SWFDEC_AS_VALUE_GET_OBJECT (&val));
+ } else {
+ SWFDEC_INFO ("\"TextField\" is not an object");
+ }
+ }
+
+ swfdec_text_field_movie_init_properties (cx);
+
+ // FIXME: do object.addListener (object);
+
+ SWFDEC_AS_VALUE_SET_OBJECT (ret, object);
+ }
diff --cc swfdec/swfdec_text_field_movie_html.c
index 0000000,b0aa94f..b4b7ddb
mode 000000,100644..100644
--- a/swfdec/swfdec_text_field_movie_html.c
+++ b/swfdec/swfdec_text_field_movie_html.c
@@@ -1,0 -1,777 +1,809 @@@
+ /* Swfdec
+ * Copyright (C) 2007 Pekka Lampila <pekka.lampila at iki.fi>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301 USA
+ */
+
+ #ifdef HAVE_CONFIG_H
+ #include "config.h"
+ #endif
+
+ #include <stdlib.h>
+ #include <string.h>
+
+ #include "swfdec_text_field_movie.h"
+ #include "swfdec_as_strings.h"
+ #include "swfdec_style_sheet.h"
+ #include "swfdec_xml.h"
+ #include "swfdec_debug.h"
+
+ /*
+ * Parsing
+ */
+ typedef struct {
+ const char * name;
+ int name_length;
+ guint index;
+ guint end_index;
+ SwfdecTextFormat *format;
+ } ParserTag;
+
+ typedef struct {
+ SwfdecAsContext *cx;
+ gboolean multiline;
+ gboolean condense_white;
+ SwfdecStyleSheet *style_sheet;
+ GString * text;
+ GSList * tags_open;
+ GSList * tags_closed;
+ } ParserData;
+
+ static void
-swfdec_text_field_movie_html_parse_close_tag (ParserData *data, ParserTag *tag)
++swfdec_text_field_movie_html_parse_close_tag (ParserData *data, ParserTag *tag,
++ gboolean end)
+ {
+ g_return_if_fail (data != NULL);
+ g_return_if_fail (tag != NULL);
+
- if (data->multiline &&
++ if (data->multiline && !end &&
+ ((tag->name_length == 1 && !g_strncasecmp (tag->name, "p", 1)) ||
+ (tag->name_length == 2 && !g_strncasecmp (tag->name, "li", 2))))
+ {
+ GSList *iter;
+
+ for (iter = data->tags_closed; iter != NULL; iter = iter->next) {
+ ParserTag *f = iter->data;
+ if (f->end_index < tag->index)
+ break;
+ if (f->name_length == 4 && !g_strncasecmp (f->name, "font", 4)) {
+ ParserTag *n = g_new0 (ParserTag, 1);
+ n->name = f->name;
+ n->name_length = f->name_length;
+ n->index = data->text->len;
+ n->end_index = n->index + 1;
+ if (f->format != NULL) {
+ n->format = swfdec_text_format_copy (f->format);
+ } else {
+ n->format = NULL;
+ }
+ data->tags_closed = g_slist_prepend (data->tags_closed, n);
+ break;
+ }
+ }
+ data->text = g_string_append_c (data->text, '\n');
+ }
+
+ tag->end_index = data->text->len;
+
+ data->tags_open = g_slist_remove (data->tags_open, tag);
+ data->tags_closed = g_slist_prepend (data->tags_closed, tag);
+ }
+
+ static const char *
+ swfdec_text_field_movie_html_parse_comment (ParserData *data, const char *p)
+ {
+ const char *end;
+
+ g_return_val_if_fail (data != NULL, NULL);
+ g_return_val_if_fail (p != NULL, NULL);
+ g_return_val_if_fail (strncmp (p, "<!--", strlen ("<!--")) == 0, NULL);
+
+ end = strstr (p + strlen ("<!--"), "-->");
+ if (end != NULL)
+ end += strlen("-->");
+
+ // return NULL if no end found
+ return end;
+ }
+
+ static void
+ swfdec_text_field_movie_html_tag_set_attribute (ParserData *data,
+ ParserTag *tag, const char *name, int name_length, const char *value,
+ int value_length)
+ {
+ SwfdecAsValue val;
+ SwfdecAsObject *object;
+
+ g_return_if_fail (data != NULL);
+ g_return_if_fail (tag != NULL);
+ g_return_if_fail (name != NULL);
+ g_return_if_fail (name_length >= 0);
+ g_return_if_fail (value != NULL);
+ g_return_if_fail (value_length >= 0);
+
+ if (!tag->format)
+ return;
+
+ object = SWFDEC_AS_OBJECT (tag->format);
+ SWFDEC_AS_VALUE_SET_STRING (&val, swfdec_as_context_give_string (
+ object->context, g_strndup (value, value_length)));
+
+ if (tag->name_length == 10 && !g_strncasecmp (tag->name, "textformat", 10))
+ {
+ if (name_length == 10 && !g_strncasecmp (name, "leftmargin", 10))
+ {
+ swfdec_as_object_set_variable (object, SWFDEC_AS_STR_leftMargin, &val);
+ }
+ else if (name_length == 11 && !g_strncasecmp (name, "rightmargin", 11))
+ {
+ swfdec_as_object_set_variable (object, SWFDEC_AS_STR_rightMargin, &val);
+ }
+ else if (name_length == 6 && !g_strncasecmp (name, "indent", 6))
+ {
+ swfdec_as_object_set_variable (object, SWFDEC_AS_STR_indent, &val);
+ }
+ else if (name_length == 11 && !g_strncasecmp (name, "blockindent", 11))
+ {
+ swfdec_as_object_set_variable (object, SWFDEC_AS_STR_blockIndent, &val);
+ }
+ else if (name_length == 8 && !g_strncasecmp (name, "tabstops", 8))
+ {
+ // FIXME
+ swfdec_as_object_set_variable (object, SWFDEC_AS_STR_tabStops, &val);
+ }
+ }
+ else if (tag->name_length == 1 && !g_strncasecmp (tag->name, "p", 1))
+ {
+ if (name_length == 5 && !g_strncasecmp (name, "align", 5))
+ {
+ swfdec_as_object_set_variable (object, SWFDEC_AS_STR_align, &val);
+ }
+ }
+ else if (tag->name_length == 4 && !g_strncasecmp (tag->name, "font", 4))
+ {
+ if (name_length == 4 && !g_strncasecmp (name, "face", 4))
+ {
+ swfdec_as_object_set_variable (object, SWFDEC_AS_STR_font, &val);
+ }
+ else if (name_length == 4 && !g_strncasecmp (name, "size", 4))
+ {
+ swfdec_as_object_set_variable (object, SWFDEC_AS_STR_size, &val);
+ }
+ else if (name_length == 5 && !g_strncasecmp (name, "color", 5))
+ {
+ SwfdecAsValue val_number;
+
+ if (value_length != 7 || *value != '#') {
+ SWFDEC_AS_VALUE_SET_NUMBER (&val_number, 0);
+ } else {
+ int number;
+ char *tail;
+
+ number = g_ascii_strtoll (value + 1, &tail, 16);
+ if (tail != value + 7)
+ number = 0;
+ SWFDEC_AS_VALUE_SET_NUMBER (&val_number, number);
+ }
+
+ swfdec_as_object_set_variable (object, SWFDEC_AS_STR_color, &val_number);
+ }
+ else if (name_length == 13 && !g_strncasecmp (name, "letterspacing", 13))
+ {
+ swfdec_as_object_set_variable (object, SWFDEC_AS_STR_letterSpacing,
+ &val);
+ }
+ // special case: Don't parse kerning
+ }
+ else if (tag->name_length == 1 && !g_strncasecmp (tag->name, "a", 1))
+ {
+ if (name_length == 4 && !g_strncasecmp (name, "href", 4))
+ {
+ swfdec_as_object_set_variable (object, SWFDEC_AS_STR_url, &val);
+ }
+ else if (name_length == 6 && !g_strncasecmp (name, "target", 6))
+ {
+ swfdec_as_object_set_variable (object, SWFDEC_AS_STR_target, &val);
+ }
+ }
+
+ if (data->style_sheet &&
+ ((tag->name_length == 2 && !g_strncasecmp (tag->name, "li", 2)) ||
+ (tag->name_length == 4 && !g_strncasecmp (tag->name, "span", 4)) ||
+ (tag->name_length == 1 && !g_strncasecmp (tag->name, "p", 1))))
+ {
+ if (name_length == 5 && !g_strncasecmp (name, "class", 5)) {
+ SwfdecTextFormat *format = swfdec_style_sheet_get_class_format (
+ data->style_sheet, swfdec_as_context_give_string (data->cx,
+ g_strndup (value, value_length)));
+ if (format != NULL)
+ swfdec_text_format_add (tag->format, format);
+ }
+ }
+ }
+
+ static const char *
+ swfdec_text_field_movie_html_parse_attribute (ParserData *data, ParserTag *tag,
+ const char *p)
+ {
+ const char *end, *name, *value;
+ int name_length, value_length;
+
+ g_return_val_if_fail (data != NULL, NULL);
+ g_return_val_if_fail (tag != NULL, NULL);
+ g_return_val_if_fail ((*p != '>' && *p != '\0'), NULL);
+
+ end = p + strcspn (p, "=> \r\n\t");
+ if (end - p <= 0)
+ return NULL; // Correct?
+
+ name = p;
+ name_length = end - p;
+
+ p = end + strspn (end, " \r\n\t");
+ if (*p != '=')
+ return NULL; // FIXME: Correct?
+ p = p + 1;
+ p = p + strspn (p, " \r\n\t");
+
+ if (*p != '"' && *p != '\'')
+ return NULL; // FIXME: Correct?
+
+ end = p + 1;
+ do {
+ end = strchr (end, *p);
+ } while (end != NULL && *(end - 1) == '\\');
+
+ if (end == NULL)
+ return NULL; // FIXME: Correct?
+
+ value = p + 1;
+ value_length = end - (p + 1);
+
+ if (tag != NULL) {
+ swfdec_text_field_movie_html_tag_set_attribute (data, tag, name,
+ name_length, value, value_length);
+ }
+
+ g_return_val_if_fail (end + 1 > p, NULL);
+
+ return end + 1;
+ }
+
+ static const char *
+ swfdec_text_field_movie_html_parse_tag (ParserData *data, const char *p)
+ {
+ ParserTag *tag;
+ const char *name, *end;
+ int name_length;
+ gboolean close;
+
+ g_return_val_if_fail (data != NULL, NULL);
+ g_return_val_if_fail (p != NULL, NULL);
+ g_return_val_if_fail (*p == '<', NULL);
+
+ p++;
+
+ // closing tag or opening tag?
+ if (*p == '/') {
+ close = TRUE;
+ p++;
+ } else {
+ close = FALSE;
+ }
+
+ // find the end of the name
+ end = p + strcspn (p, "> \r\n\t");
+
+ if (*end == '\0')
+ return NULL;
+
+ // don't count trailing / as part of the name if it's followed by >
+ // we still act like it's a normal opening tag even if it has /
+ if (*end == '>' && *(end - 1) == '/')
+ end = end - 1;
+
+ if (end == p) // empty name
+ return NULL;
+
+ name = p;
+ name_length = end - p;
+
+ if (close)
+ {
- if (data->tags_open != NULL) {
- tag = data->tags_open->data;
- if (name_length == tag->name_length &&
- !g_strncasecmp (name, tag->name, name_length))
- swfdec_text_field_movie_html_parse_close_tag (data, tag);
++ if (name_length == 1 && !g_strncasecmp (name, "p", 1)) {
++ GSList *iter, *found;
++
++ found = NULL;
++ iter = data->tags_open;
++ while (iter != NULL) {
++ tag = iter->data;
++ if (tag->name_length == 1 && !g_strncasecmp (tag->name, "p", 1))
++ found = iter;
++ iter = iter->next;
++ }
++
++ if (found != NULL) {
++ iter = data->tags_open;
++ while (iter != found) {
++ tag = iter->data;
++ iter = iter->next;
++ if ((tag->name_length == 2 && !g_strncasecmp (tag->name, "li", 2)) ||
++ (tag->name_length == 10 &&
++ !g_strncasecmp (tag->name, "textformat", 10)))
++ continue;
++ swfdec_text_field_movie_html_parse_close_tag (data, tag, TRUE);
++ }
++ if (data->multiline)
++ data->text = g_string_append_c (data->text, '\n');
++ swfdec_text_field_movie_html_parse_close_tag (data, found->data,
++ TRUE);
++ }
++ } else {
++ if (data->tags_open != NULL) {
++ tag = data->tags_open->data;
++ if (name_length == tag->name_length &&
++ !g_strncasecmp (name, tag->name, name_length))
++ swfdec_text_field_movie_html_parse_close_tag (data, tag, FALSE);
++ }
+ }
+
+ end = strchr (end, '>');
+ if (end != NULL)
+ end += 1;
+ }
+ else
+ {
+ SwfdecAsObject *object;
+ SwfdecAsValue val;
+
+ if (data->multiline) {
+ if (name_length == 2 && !g_strncasecmp (name, "br", 2))
+ {
+ data->text = g_string_append_c (data->text, '\n');
+ }
- else if ((name_length == 1 && !g_strncasecmp (name, "p", 1)) ||
- (name_length == 2 && !g_strncasecmp (name, "li", 2)) ||
- (name_length == 2 && !g_strncasecmp (name, "br", 2)))
++ else if (name_length == 2 && !g_strncasecmp (name, "li", 1))
+ {
- GSList *iter;
-
- for (iter = data->tags_open; iter != NULL; iter = iter->next) {
- ParserTag *f = iter->data;
- if ((f->name_length == 1 && !g_strncasecmp (f->name, "p", 1)) ||
- (f->name_length == 2 && !g_strncasecmp (f->name, "li", 2))) {
- data->text = g_string_append_c (data->text, '\n');
- break;
- }
- }
++ if (data->text->len > 0 &&
++ data->text->str[data->text->len - 1] != '\n' &&
++ data->text->str[data->text->len - 1] != '\r')
++ data->text = g_string_append_c (data->text, '\n');
+ }
+ }
+
+ tag = g_new0 (ParserTag, 1);
+ tag->name = name;
+ tag->name_length = name_length;
+ tag->format = SWFDEC_TEXT_FORMAT (swfdec_text_format_new (data->cx));
+ tag->index = data->text->len;
+
+ data->tags_open = g_slist_prepend (data->tags_open, tag);
+
+ // set format based on tag
+ if (tag->format != NULL) {
+ object = SWFDEC_AS_OBJECT (tag->format);
+ SWFDEC_AS_VALUE_SET_BOOLEAN (&val, TRUE);
+
+ if (tag->name_length == 2 && !g_strncasecmp (tag->name, "li", 2)) {
+ swfdec_as_object_set_variable (object, SWFDEC_AS_STR_bullet, &val);
+ } else if (tag->name_length == 1 && !g_strncasecmp (tag->name, "b", 1)) {
+ swfdec_as_object_set_variable (object, SWFDEC_AS_STR_bold, &val);
+ } else if (tag->name_length == 1 && !g_strncasecmp (tag->name, "i", 1)) {
+ swfdec_as_object_set_variable (object, SWFDEC_AS_STR_italic, &val);
+ } else if (tag->name_length == 1 && !g_strncasecmp (tag->name, "u", 1)) {
+ swfdec_as_object_set_variable (object, SWFDEC_AS_STR_underline, &val);
+ }
+ else if (tag->name_length == 3 && !g_strncasecmp (tag->name, "img", 3))
+ {
+ SWFDEC_FIXME ("IMG tag support for TextField's HTML input missing");
+ }
+ }
+
+ if (data->style_sheet &&
+ ((tag->name_length == 2 && !g_strncasecmp (tag->name, "li", 2)) ||
+ (tag->name_length == 1 && !g_strncasecmp (tag->name, "p", 1)))) {
+ SwfdecTextFormat *format = swfdec_style_sheet_get_tag_format (
+ data->style_sheet, swfdec_as_context_give_string (data->cx,
+ g_strndup (tag->name, tag->name_length)));
+ if (format != NULL)
+ swfdec_text_format_add (tag->format, format);
+ }
+
+ // parse attributes
+ end = end + strspn (end, " \r\n\t");
+ while (*end != '\0' && *end != '>' && (*end != '/' || *(end + 1) != '>')) {
+ end = swfdec_text_field_movie_html_parse_attribute (data, tag, end);
+ if (end == NULL)
+ break;
+ end = end + strspn (end, " \r\n\t");
+ }
+ if (end != NULL) {
+ if (*end == '/')
+ end += 1;
+ if (*end == '>')
+ end += 1;
+ }
+ }
+
+ return end;
+ }
+
+ static const char *
+ swfdec_text_field_movie_html_parse_text (ParserData *data, const char *p)
+ {
+ const char *end;
+ char *unescaped;
+
+ g_return_val_if_fail (data != NULL, NULL);
+ g_return_val_if_fail (p != NULL, NULL);
+ g_return_val_if_fail (*p != '\0' && *p != '<', NULL);
+
++ // condense the space with previous text also, if version >= 8
++ if (data->condense_white && data->cx->version >= 8) {
++ if (data->text->len > 0 &&
++ g_ascii_isspace (data->text->str[data->text->len - 1]))
++ p += strspn (p, " \n\r\t");
++ }
++
+ // get the text
+ // if condense_white: all whitespace blocks are converted to a single space
+ while (*p != '\0' && *p != '<') {
+ if (data->condense_white) {
+ end = p + strcspn (p, "< \n\r\t");
+ } else {
+ end = strchr (p, '<');
+ if (end == NULL)
+ end = strchr (p, '\0');
+ }
+
+ unescaped = swfdec_xml_unescape_len (data->cx, p, end - p, TRUE);
+ data->text = g_string_append (data->text, unescaped);
+ g_free (unescaped);
+
+ if (data->condense_white && g_ascii_isspace (*end)) {
+ data->text = g_string_append_c (data->text, ' ');
+ p = end + strspn (end, " \n\r\t");
+ } else {
+ p = end;
+ }
+ }
+
+ return p;
+ }
+
+ void
+ swfdec_text_field_movie_html_parse (SwfdecTextFieldMovie *text, const char *str)
+ {
+ ParserData data;
+ const char *p;
+
+ g_return_if_fail (SWFDEC_IS_TEXT_FIELD_MOVIE (text));
+ g_return_if_fail (str != NULL);
+
+ text->input = g_string_assign (text->input, "");
+
+ data.cx = SWFDEC_AS_OBJECT (text)->context;
+ data.multiline = (data.cx->version < 7 || text->text->multiline);
+ data.condense_white = text->condense_white;
+ if (text->style_sheet != NULL && SWFDEC_IS_STYLESHEET (text->style_sheet)) {
+ data.style_sheet = SWFDEC_STYLESHEET (text->style_sheet);
+ } else {
+ data.style_sheet = NULL;
+ }
+ data.text = text->input;
+ data.tags_open = NULL;
+ data.tags_closed = NULL;
+
+ p = str;
+ while (p != NULL && *p != '\0') {
+ if (*p == '<') {
+ if (strncmp (p + 1, "!--", strlen ("!--")) == 0) {
+ p = swfdec_text_field_movie_html_parse_comment (&data, p);
+ } else {
+ p = swfdec_text_field_movie_html_parse_tag (&data, p);
+ }
+ } else {
+ p = swfdec_text_field_movie_html_parse_text (&data, p);
+ }
+ }
+
+ // close remaining tags
+ while (data.tags_open != NULL) {
++ swfdec_text_format_add (text->format_new,
++ ((ParserTag *)data.tags_open->data)->format);
+ swfdec_text_field_movie_html_parse_close_tag (&data,
- (ParserTag *)data.tags_open->data);
++ (ParserTag *)data.tags_open->data, TRUE);
+ }
+
+ // add parsed styles
+ while (data.tags_closed != NULL) {
+ ParserTag *tag = (ParserTag *)data.tags_closed->data;
+
+ if (tag->index != tag->end_index && tag->format != NULL) {
+ swfdec_text_field_movie_set_text_format (text, tag->format, tag->index,
+ tag->end_index);
+ }
+
+ g_free (tag);
+ data.tags_closed = g_slist_remove (data.tags_closed, tag);
+ }
+ }
+
+ /*
+ * Generating
+ */
+ static const char *
+ swfdec_text_field_movie_html_text_align_to_string (SwfdecTextAlign align)
+ {
+ switch (align) {
+ case SWFDEC_TEXT_ALIGN_LEFT:
+ return "LEFT";
+ case SWFDEC_TEXT_ALIGN_RIGHT:
+ return "RIGHT";
+ case SWFDEC_TEXT_ALIGN_CENTER:
+ return "CENTER";
+ case SWFDEC_TEXT_ALIGN_JUSTIFY:
+ return "JUSTIFY";
+ default:
+ g_assert_not_reached ();
+ return "";
+ }
+ }
+
+ /*
+ * Order of tags:
+ * TEXTFORMAT / P or LI / FONT / A / B / I / U
+ *
+ * Order of attributes:
+ * TEXTFORMAT:
+ * LEFTMARGIN / RIGHTMARGIN / INDENT / LEADING / BLOCKINDENT / TABSTOPS
+ * P: ALIGN
+ * LI: none
+ * FONT: FACE / SIZE / COLOR / LETTERSPACING / KERNING
+ * A: HREF / TARGET
+ * B: none
+ * I: none
+ * U: none
+ */
+ static GString *
+ swfdec_text_field_movie_html_text_append_paragraph (SwfdecTextFieldMovie *text,
+ GString *string, guint start_index, guint end_index)
+ {
+ SwfdecTextFormat *format, *format_prev, *format_font;
+ GSList *iter, *fonts, *iter_font;
+ guint index_, index_prev;
+ gboolean textformat, bullet, font = FALSE;
+ char *escaped;
+
+ g_return_val_if_fail (SWFDEC_IS_TEXT_FIELD_MOVIE (text), string);
+ g_return_val_if_fail (string != NULL, string);
+ g_return_val_if_fail (start_index <= end_index, string);
+
+ g_return_val_if_fail (text->formats != NULL, string);
+ for (iter = text->formats; iter->next != NULL &&
+ ((SwfdecFormatIndex *)(iter->next->data))->index_ <= start_index;
+ iter = iter->next);
+
+ index_ = start_index;
+ format = ((SwfdecFormatIndex *)(iter->data))->format;
+
+ if (format->left_margin != 0 || format->right_margin != 0 ||
+ format->indent != 0 || format->leading != 0 ||
+ format->block_indent != 0 ||
+ swfdec_as_array_get_length (format->tab_stops) > 0)
+ {
+ string = g_string_append (string, "<TEXTFORMAT");
+ if (format->left_margin) {
+ g_string_append_printf (string, " LEFTMARGIN=\"%i\"",
+ format->left_margin);
+ }
+ if (format->right_margin) {
+ g_string_append_printf (string, " RIGHTMARGIN=\"%i\"",
+ format->right_margin);
+ }
+ if (format->indent)
+ g_string_append_printf (string, " INDENT=\"%i\"", format->indent);
+ if (format->leading)
+ g_string_append_printf (string, " LEADING=\"%i\"", format->leading);
+ if (format->block_indent) {
+ g_string_append_printf (string, " BLOCKINDENT=\"%i\"",
+ format->block_indent);
+ }
+ if (swfdec_as_array_get_length (format->tab_stops) > 0) {
+ SwfdecAsValue val;
+ SWFDEC_AS_VALUE_SET_OBJECT (&val, SWFDEC_AS_OBJECT (format->tab_stops));
+ g_string_append_printf (string, " TABSTOPS=\"%s\"",
+ swfdec_as_value_to_string (SWFDEC_AS_OBJECT
+ (format->tab_stops)->context, &val));
+ }
+ string = g_string_append (string, ">");
+
+ textformat = TRUE;
+ }
+ else
+ {
+ textformat = FALSE;
+ }
+
+ if (format->bullet) {
+ string = g_string_append (string, "<LI>");
+ bullet = TRUE;
+ } else {
+ g_string_append_printf (string, "<P ALIGN=\"%s\">",
+ swfdec_text_field_movie_html_text_align_to_string (format->align));
+ bullet = FALSE;
+ }
+
+ // note we don't escape format->font, even thought it can have evil chars
+ g_string_append_printf (string, "<FONT FACE=\"%s\" SIZE=\"%i\" COLOR=\"#%06X\" LETTERSPACING=\"%i\" KERNING=\"%i\">",
+ format->font, format->size, format->color, (int)format->letter_spacing,
+ (format->kerning ? 1 : 0));
+ fonts = g_slist_prepend (NULL, format);
+
+ if (format->url != SWFDEC_AS_STR_EMPTY)
+ g_string_append_printf (string, "<A HREF=\"%s\" TARGET=\"%s\">",
+ format->url, format->target);
+ if (format->bold)
+ string = g_string_append (string, "<B>");
+ if (format->italic)
+ string = g_string_append (string, "<I>");
+ if (format->underline)
+ string = g_string_append (string, "<U>");
+
+ // special case: use <= instead of < to add some extra markup
+ for (iter = iter->next;
+ iter != NULL && ((SwfdecFormatIndex *)(iter->data))->index_ <= end_index;
+ iter = iter->next)
+ {
+ index_prev = index_;
+ format_prev = format;
+ index_ = ((SwfdecFormatIndex *)(iter->data))->index_;
+ format = ((SwfdecFormatIndex *)(iter->data))->format;
+
+ escaped = swfdec_xml_escape_len (text->input->str + index_prev,
+ index_ - index_prev);
+ string = g_string_append (string, escaped);
+ g_free (escaped);
+ escaped = NULL;
+
+ // Figure out what tags need to be rewritten
+ if (format->font != format_prev->font ||
+ format->size != format_prev->size ||
+ format->color != format_prev->color ||
+ (int)format->letter_spacing != (int)format_prev->letter_spacing ||
+ format->kerning != format_prev->kerning) {
+ font = TRUE;
+ } else if (format->url == format_prev->url &&
+ format->target == format_prev->target &&
+ format->bold == format_prev->bold &&
+ format->italic == format_prev->italic &&
+ format->underline == format_prev->underline) {
+ continue;
+ }
+
+ // Close tags
+ for (iter_font = fonts; iter_font != NULL; iter_font = iter_font->next)
+ {
+ format_font = (SwfdecTextFormat *)iter_font->data;
+ if (format->font == format_font->font &&
+ format->size == format_font->size &&
+ format->color == format_font->color &&
+ (int)format->letter_spacing == (int)format_font->letter_spacing &&
+ format->kerning == format_font->kerning) {
+ break;
+ }
+ }
+ if (format_prev->underline)
+ string = g_string_append (string, "</U>");
+ if (format_prev->italic)
+ string = g_string_append (string, "</I>");
+ if (format_prev->bold)
+ string = g_string_append (string, "</B>");
+ if (format_prev->url != SWFDEC_AS_STR_EMPTY)
+ string = g_string_append (string, "</A>");
+ if (iter_font != NULL) {
+ while (fonts != iter_font) {
+ string = g_string_append (string, "</FONT>");
+ fonts = g_slist_remove (fonts, fonts->data);
+ }
+ }
+
+ // Open tags
+ format_font = (SwfdecTextFormat *)fonts->data;
+ if (font && (format->font != format_font->font ||
+ format->size != format_font->size ||
+ format->color != format_font->color ||
+ (int)format->letter_spacing != (int)format_font->letter_spacing ||
+ format->kerning != format_font->kerning))
+ {
+ fonts = g_slist_prepend (fonts, format);
+
+ string = g_string_append (string, "<FONT");
+ // note we don't escape format->font, even thought it can have evil chars
+ if (format->font != format_font->font)
+ g_string_append_printf (string, " FACE=\"%s\"", format->font);
+ if (format->size != format_font->size)
+ g_string_append_printf (string, " SIZE=\"%i\"", format->size);
+ if (format->color != format_font->color)
+ g_string_append_printf (string, " COLOR=\"#%06X\"", format->color);
+ if ((int)format->letter_spacing != (int)format_font->letter_spacing) {
+ g_string_append_printf (string, " LETTERSPACING=\"%i\"",
+ (int)format->letter_spacing);
+ }
+ if (format->kerning != format_font->kerning) {
+ g_string_append_printf (string, " KERNING=\"%i\"",
+ (format->kerning ? 1 : 0));
+ }
+ string = g_string_append (string, ">");
+ }
+ if (format->url != SWFDEC_AS_STR_EMPTY) {
+ g_string_append_printf (string, "<A HREF=\"%s\" TARGET=\"%s\">",
+ format->url, format->target);
+ }
+ if (format->bold)
+ string = g_string_append (string, "<B>");
+ if (format->italic)
+ string = g_string_append (string, "<I>");
+ if (format->underline)
+ string = g_string_append (string, "<U>");
+ }
+
+ escaped = swfdec_xml_escape_len (text->input->str + index_,
+ end_index - index_);
+ string = g_string_append (string, escaped);
+ g_free (escaped);
+
+ if (format->underline)
+ string = g_string_append (string, "</U>");
+ if (format->italic)
+ string = g_string_append (string, "</I>");
+ if (format->bold)
+ string = g_string_append (string, "</B>");
+ if (format->url != SWFDEC_AS_STR_EMPTY)
+ string = g_string_append (string, "</A>");
+ for (iter = fonts; iter != NULL; iter = iter->next)
+ string = g_string_append (string, "</FONT>");
+ g_slist_free (fonts);
+ if (bullet) {
+ string = g_string_append (string, "</LI>");
+ } else {
+ string = g_string_append (string, "</P>");
+ }
+ if (textformat)
+ string = g_string_append (string, "</TEXTFORMAT>");
+
+ return string;
+ }
+
+ const char *
+ swfdec_text_field_movie_get_html_text (SwfdecTextFieldMovie *text)
+ {
+ const char *p, *end;
+ GString *string;
+
+ g_return_val_if_fail (SWFDEC_IS_TEXT_FIELD_MOVIE (text),
+ SWFDEC_AS_STR_EMPTY);
+
+ if (text->input == NULL)
+ return SWFDEC_AS_STR_EMPTY;
+
+ string = g_string_new ("");
+
+ p = text->input->str;
+ while (*p != '\0') {
+ end = strpbrk (p, "\r\n");
+ if (end == NULL)
+ end = strchr (p, '\0');
+
+ string = swfdec_text_field_movie_html_text_append_paragraph (text, string,
+ p - text->input->str, end - text->input->str);
+
+ p = end;
+ if (*p != '\0') p++;
+ }
+
+ return swfdec_as_context_give_string (SWFDEC_AS_OBJECT (text)->context,
+ g_string_free (string, FALSE));
+ }
commit c4d483472b53a9fb364a9825c1ff8ab8a98c2c76
Merge: b8e9f83... 8f85e93...
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date: Wed Jan 9 14:20:12 2008 +0200
Merge branch 'master' into selection
commit b8e9f83181c4050745d6e2585e76ea983ec12f93
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date: Wed Dec 19 18:07:07 2007 +0200
Fix wrong function name in documentation comment
diff --git a/libswfdec/swfdec_as_types.c b/libswfdec/swfdec_as_types.c
index d4bbfb9..4750798 100644
--- a/libswfdec/swfdec_as_types.c
+++ b/libswfdec/swfdec_as_types.c
@@ -214,7 +214,7 @@ swfdec_as_str_concat (SwfdecAsContext *cx, const char * s1, const char *s2)
}
/**
- * swfdec_as_double_to_string:
+ * swfdec_as_integer_to_string:
* @context: a #SwfdecAsContext
* @i: an integer that fits into 32 bits
*
commit ebb6dc1500759a174441f9952cfe0ee396e766eb
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date: Wed Dec 19 16:43:37 2007 +0200
Add FIXME comment: new load object request should overwrite the old one in v8
diff --git a/libswfdec/swfdec_load_object.c b/libswfdec/swfdec_load_object.c
index 5b659f2..39b4f67 100644
--- a/libswfdec/swfdec_load_object.c
+++ b/libswfdec/swfdec_load_object.c
@@ -208,6 +208,8 @@ swfdec_load_object_new (SwfdecAsObject *target, const char *url,
g_return_val_if_fail (url != NULL, NULL);
g_return_val_if_fail (finish != NULL, NULL);
+ // FIXME: new load object request should overwrite the old one in version 8
+
if (!swfdec_as_context_use_mem (target->context, sizeof (SwfdecLoadObject)))
return NULL;
load_object = SWFDEC_LOAD_OBJECT (g_object_new (
commit 29ac87636842cef54ebd7542c9e1a734dfbf6902
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date: Wed Dec 19 16:24:48 2007 +0200
Add parsecolor and parsecssfontfamily CSS tests for version 8 too
diff --git a/test/trace/Makefile.am b/test/trace/Makefile.am
index 9634405..056e655 100644
--- a/test/trace/Makefile.am
+++ b/test/trace/Makefile.am
@@ -2640,6 +2640,8 @@ EXTRA_DIST = \
stylesheet-parsecolor-6.swf.trace \
stylesheet-parsecolor-7.swf \
stylesheet-parsecolor-7.swf.trace \
+ stylesheet-parsecolor-8.swf \
+ stylesheet-parsecolor-8.swf.trace \
stylesheet-parsecssfontfamily.as \
stylesheet-parsecssfontfamily-5.swf \
stylesheet-parsecssfontfamily-5.swf.trace \
@@ -2647,6 +2649,8 @@ EXTRA_DIST = \
stylesheet-parsecssfontfamily-6.swf.trace \
stylesheet-parsecssfontfamily-7.swf \
stylesheet-parsecssfontfamily-7.swf.trace \
+ stylesheet-parsecssfontfamily-8.swf \
+ stylesheet-parsecssfontfamily-8.swf.trace \
stylesheet-properties.as \
stylesheet-properties-5.swf \
stylesheet-properties-5.swf.trace \
diff --git a/test/trace/stylesheet-parsecolor-5.swf b/test/trace/stylesheet-parsecolor-5.swf
index 4c94d68..05e5d89 100644
Binary files a/test/trace/stylesheet-parsecolor-5.swf and b/test/trace/stylesheet-parsecolor-5.swf differ
diff --git a/test/trace/stylesheet-parsecolor-5.swf.trace b/test/trace/stylesheet-parsecolor-5.swf.trace
index b3c1789..6e742b3 100644
--- a/test/trace/stylesheet-parsecolor-5.swf.trace
+++ b/test/trace/stylesheet-parsecolor-5.swf.trace
@@ -24,16 +24,17 @@ valueOf called with
19: valueOf!
20: valueOf!
21: valueOf!
-21: toString!
22: valueOf!
+22: toString!
23: valueOf!
-23: toString!
24: valueOf!
24: toString!
25: valueOf!
25: toString!
26: valueOf!
26: toString!
+27: valueOf!
+27: toString!
Testing parseColor:
(no param) =
(0) (undefined) =
@@ -56,40 +57,42 @@ Testing parseColor:
(17) Hello World! (string) =
(18) true (string) =
(19) _level0 (string) =
-(20) _level0 (movieclip) =
-(21) [object Object] (object) =
-(22) (undefined) =
-(23) [type Object] (object) =
+(20) äöü (string) =
+(21) _level0 (movieclip) =
+(22) [object Object] (object) =
+(23) (undefined) =
(24) [type Object] (object) =
-(25) [object Object] (object) =
-(26) (object) =
+(25) [type Object] (object) =
+(26) [object Object] (object) =
(27) (object) =
-(28) null (object) =
-(29) true (object) =
-(30) false (object) =
-(31) 0 (object) =
-(32) 1 (object) =
-(33) 0.5 (object) =
-(34) -1 (object) =
-(35) -0.5 (object) =
-(36) Infinity (object) =
-(37) -Infinity (object) =
-(38) NaN (object) =
-(39) (object) =
-(40) 0 (object) =
-(41) -0 (object) =
-(42) 0.0 (object) =
-(43) 1 (object) =
-(44) Hello World! (object) =
-(45) true (object) =
-(46) _level0 (object) =
+(28) (object) =
+(29) null (object) =
+(30) true (object) =
+(31) false (object) =
+(32) 0 (object) =
+(33) 1 (object) =
+(34) 0.5 (object) =
+(35) -1 (object) =
+(36) -0.5 (object) =
+(37) Infinity (object) =
+(38) -Infinity (object) =
+(39) NaN (object) =
+(40) (object) =
+(41) 0 (object) =
+(42) -0 (object) =
+(43) 0.0 (object) =
+(44) 1 (object) =
+(45) Hello World! (object) =
+(46) true (object) =
(47) _level0 (object) =
-(48) [type Object] (object) =
-(49) (object) =
+(48) äöü (object) =
+(49) _level0 (object) =
(50) [type Object] (object) =
-(51) [type Object] (object) =
+(51) (object) =
(52) [type Object] (object) =
(53) [type Object] (object) =
+(54) [type Object] (object) =
+(55) [type Object] (object) =
#FF0000 =
#abcabc =
#FFF =
diff --git a/test/trace/stylesheet-parsecolor-6.swf b/test/trace/stylesheet-parsecolor-6.swf
index f461fec..9eb3c6f 100644
Binary files a/test/trace/stylesheet-parsecolor-6.swf and b/test/trace/stylesheet-parsecolor-6.swf differ
diff --git a/test/trace/stylesheet-parsecolor-6.swf.trace b/test/trace/stylesheet-parsecolor-6.swf.trace
index cf6e101..b20264b 100644
--- a/test/trace/stylesheet-parsecolor-6.swf.trace
+++ b/test/trace/stylesheet-parsecolor-6.swf.trace
@@ -24,7 +24,6 @@ valueOf called with
19: valueOf!
20: valueOf!
21: valueOf!
-21: toString!
22: valueOf!
22: toString!
23: valueOf!
@@ -35,6 +34,8 @@ valueOf called with
25: toString!
26: valueOf!
26: toString!
+27: valueOf!
+27: toString!
Testing parseColor:
(no param) =
(0) (undefined) =
@@ -57,40 +58,42 @@ Testing parseColor:
(17) Hello World! (string) =
(18) true (string) =
(19) _level0 (string) =
-(20) _level0 (movieclip) =
-(21) [object Object] (object) =
-(22) [type Function] (function) =
-(23) [type Object] (object) =
+(20) äöü (string) =
+(21) _level0 (movieclip) =
+(22) [object Object] (object) =
+(23) [type Function] (function) =
(24) [type Object] (object) =
-(25) [object Object] (object) =
-(26) (object) =
+(25) [type Object] (object) =
+(26) [object Object] (object) =
(27) (object) =
-(28) null (object) =
-(29) true (object) =
-(30) false (object) =
-(31) 0 (object) =
-(32) 1 (object) =
-(33) 0.5 (object) =
-(34) -1 (object) =
-(35) -0.5 (object) =
-(36) Infinity (object) =
-(37) -Infinity (object) =
-(38) NaN (object) =
-(39) (object) =
-(40) 0 (object) =
-(41) -0 (object) =
-(42) 0.0 (object) =
-(43) 1 (object) =
-(44) Hello World! (object) =
-(45) true (object) =
-(46) _level0 (object) =
+(28) (object) =
+(29) null (object) =
+(30) true (object) =
+(31) false (object) =
+(32) 0 (object) =
+(33) 1 (object) =
+(34) 0.5 (object) =
+(35) -1 (object) =
+(36) -0.5 (object) =
+(37) Infinity (object) =
+(38) -Infinity (object) =
+(39) NaN (object) =
+(40) (object) =
+(41) 0 (object) =
+(42) -0 (object) =
+(43) 0.0 (object) =
+(44) 1 (object) =
+(45) Hello World! (object) =
+(46) true (object) =
(47) _level0 (object) =
-(48) [type Object] (object) =
-(49) [type Object] (object) =
+(48) äöü (object) =
+(49) _level0 (object) =
(50) [type Object] (object) =
(51) [type Object] (object) =
(52) [type Object] (object) =
(53) [type Object] (object) =
+(54) [type Object] (object) =
+(55) [type Object] (object) =
#FF0000 =
#abcabc =
#FFF =
diff --git a/test/trace/stylesheet-parsecolor-7.swf b/test/trace/stylesheet-parsecolor-7.swf
index 6c219a6..f58168c 100644
Binary files a/test/trace/stylesheet-parsecolor-7.swf and b/test/trace/stylesheet-parsecolor-7.swf differ
diff --git a/test/trace/stylesheet-parsecolor-7.swf.trace b/test/trace/stylesheet-parsecolor-7.swf.trace
index 2f04b73..1f42a06 100644
--- a/test/trace/stylesheet-parsecolor-7.swf.trace
+++ b/test/trace/stylesheet-parsecolor-7.swf.trace
@@ -24,7 +24,6 @@ valueOf called with
19: valueOf!
20: valueOf!
21: valueOf!
-21: toString!
22: valueOf!
22: toString!
23: valueOf!
@@ -35,6 +34,8 @@ valueOf called with
25: toString!
26: valueOf!
26: toString!
+27: valueOf!
+27: toString!
Testing parseColor:
(no param) = null
(0) undefined (undefined) = null
@@ -57,69 +58,72 @@ Testing parseColor:
(17) Hello World! (string) = null
(18) true (string) = null
(19) _level0 (string) = null
-(20) _level0 (movieclip) = null
-(21) [object Object] (object) = null
-(22) [type Function] (function) = null
+(20) äöü (string) = null
+(21) _level0 (movieclip) = null
+(22) [object Object] (object) = null
+(23) [type Function] (function) = null
toString called
-(23) [type Object] (object) = null
-toString called with
(24) [type Object] (object) = null
-(25) [object Object] (object) = null
-(26) undefined (object) = null
-0: toString!
+toString called with
+(25) [type Object] (object) = null
+(26) [object Object] (object) = null
(27) undefined (object) = null
+0: toString!
+(28) undefined (object) = null
1: toString!
-(28) null (object) = null
+(29) null (object) = null
2: toString!
-(29) true (object) = null
+(30) true (object) = null
3: toString!
-(30) false (object) = null
+(31) false (object) = null
4: toString!
-(31) 0 (object) = null
+(32) 0 (object) = null
5: toString!
-(32) 1 (object) = null
+(33) 1 (object) = null
6: toString!
-(33) 0.5 (object) = null
+(34) 0.5 (object) = null
7: toString!
-(34) -1 (object) = null
+(35) -1 (object) = null
8: toString!
-(35) -0.5 (object) = null
+(36) -0.5 (object) = null
9: toString!
-(36) Infinity (object) = null
+(37) Infinity (object) = null
10: toString!
-(37) -Infinity (object) = null
+(38) -Infinity (object) = null
11: toString!
-(38) NaN (object) = null
+(39) NaN (object) = null
12: toString!
-(39) (object) = null
+(40) (object) = null
13: toString!
-(40) 0 (object) = null
+(41) 0 (object) = null
14: toString!
-(41) -0 (object) = null
+(42) -0 (object) = null
15: toString!
-(42) 0.0 (object) = null
+(43) 0.0 (object) = null
16: toString!
-(43) 1 (object) = null
+(44) 1 (object) = null
17: toString!
-(44) Hello World! (object) = null
+(45) Hello World! (object) = null
18: toString!
-(45) true (object) = null
+(46) true (object) = null
19: toString!
-(46) _level0 (object) = null
-20: toString!
(47) _level0 (object) = null
+20: toString!
+(48) äöü (object) = null
21: toString!
-(48) [type Object] (object) = null
+(49) _level0 (object) = null
22: toString!
-(49) [type Object] (object) = null
-23: toString!
(50) [type Object] (object) = null
-24: toString!
+23: toString!
(51) [type Object] (object) = null
-25: toString!
+24: toString!
(52) [type Object] (object) = null
-26: toString!
+25: toString!
(53) [type Object] (object) = null
+26: toString!
+(54) [type Object] (object) = null
+27: toString!
+(55) [type Object] (object) = null
#FF0000 = 16711680
#abcabc = 11258556
#FFF = null
diff --git a/test/trace/stylesheet-parsecolor-8.swf b/test/trace/stylesheet-parsecolor-8.swf
new file mode 100644
index 0000000..235917c
Binary files /dev/null and b/test/trace/stylesheet-parsecolor-8.swf differ
diff --git a/test/trace/stylesheet-parsecolor-8.swf.trace b/test/trace/stylesheet-parsecolor-8.swf.trace
new file mode 100644
index 0000000..1f42a06
--- /dev/null
+++ b/test/trace/stylesheet-parsecolor-8.swf.trace
@@ -0,0 +1,136 @@
+valueOf called
+toString called
+toString called with
+valueOf called with
+0: valueOf!
+1: valueOf!
+2: valueOf!
+3: valueOf!
+4: valueOf!
+5: valueOf!
+6: valueOf!
+7: valueOf!
+8: valueOf!
+9: valueOf!
+10: valueOf!
+11: valueOf!
+12: valueOf!
+13: valueOf!
+14: valueOf!
+15: valueOf!
+16: valueOf!
+17: valueOf!
+18: valueOf!
+19: valueOf!
+20: valueOf!
+21: valueOf!
+22: valueOf!
+22: toString!
+23: valueOf!
+23: toString!
+24: valueOf!
+24: toString!
+25: valueOf!
+25: toString!
+26: valueOf!
+26: toString!
+27: valueOf!
+27: toString!
+Testing parseColor:
+(no param) = null
+(0) undefined (undefined) = null
+(1) null (null) = null
+(2) true (boolean) = null
+(3) false (boolean) = null
+(4) 0 (number) = null
+(5) 1 (number) = null
+(6) 0.5 (number) = null
+(7) -1 (number) = null
+(8) -0.5 (number) = null
+(9) Infinity (number) = null
+(10) -Infinity (number) = null
+(11) NaN (number) = null
+(12) (string) = null
+(13) 0 (string) = null
+(14) -0 (string) = null
+(15) 0.0 (string) = null
+(16) 1 (string) = null
+(17) Hello World! (string) = null
+(18) true (string) = null
+(19) _level0 (string) = null
+(20) äöü (string) = null
+(21) _level0 (movieclip) = null
+(22) [object Object] (object) = null
+(23) [type Function] (function) = null
+toString called
+(24) [type Object] (object) = null
+toString called with
+(25) [type Object] (object) = null
+(26) [object Object] (object) = null
+(27) undefined (object) = null
+0: toString!
+(28) undefined (object) = null
+1: toString!
+(29) null (object) = null
+2: toString!
+(30) true (object) = null
+3: toString!
+(31) false (object) = null
+4: toString!
+(32) 0 (object) = null
+5: toString!
+(33) 1 (object) = null
+6: toString!
+(34) 0.5 (object) = null
+7: toString!
+(35) -1 (object) = null
+8: toString!
+(36) -0.5 (object) = null
+9: toString!
+(37) Infinity (object) = null
+10: toString!
+(38) -Infinity (object) = null
+11: toString!
+(39) NaN (object) = null
+12: toString!
+(40) (object) = null
+13: toString!
+(41) 0 (object) = null
+14: toString!
+(42) -0 (object) = null
+15: toString!
+(43) 0.0 (object) = null
+16: toString!
+(44) 1 (object) = null
+17: toString!
+(45) Hello World! (object) = null
+18: toString!
+(46) true (object) = null
+19: toString!
+(47) _level0 (object) = null
+20: toString!
+(48) äöü (object) = null
+21: toString!
+(49) _level0 (object) = null
+22: toString!
+(50) [type Object] (object) = null
+23: toString!
+(51) [type Object] (object) = null
+24: toString!
+(52) [type Object] (object) = null
+25: toString!
+(53) [type Object] (object) = null
+26: toString!
+(54) [type Object] (object) = null
+27: toString!
+(55) [type Object] (object) = null
+#FF0000 = 16711680
+#abcabc = 11258556
+#FFF = null
+#asdefw = null
+#FFXXFF = null
+ #FF00FF = null
+#FF00FF = null
+xFF00FF = null
+white = null
+16711935
diff --git a/test/trace/stylesheet-parsecssfontfamily-5.swf b/test/trace/stylesheet-parsecssfontfamily-5.swf
index 5d414b1..901c982 100644
Binary files a/test/trace/stylesheet-parsecssfontfamily-5.swf and b/test/trace/stylesheet-parsecssfontfamily-5.swf differ
diff --git a/test/trace/stylesheet-parsecssfontfamily-5.swf.trace b/test/trace/stylesheet-parsecssfontfamily-5.swf.trace
index e08c724..6e1dd50 100644
--- a/test/trace/stylesheet-parsecssfontfamily-5.swf.trace
+++ b/test/trace/stylesheet-parsecssfontfamily-5.swf.trace
@@ -24,16 +24,17 @@ valueOf called with
19: valueOf!
20: valueOf!
21: valueOf!
-21: toString!
22: valueOf!
+22: toString!
23: valueOf!
-23: toString!
24: valueOf!
24: toString!
25: valueOf!
25: toString!
26: valueOf!
26: toString!
+27: valueOf!
+27: toString!
Testing parseCSSFontFamily:
(0) (undefined) =
(1) null (null) =
@@ -55,40 +56,42 @@ Testing parseCSSFontFamily:
(17) Hello World! (string) =
(18) true (string) =
(19) _level0 (string) =
-(20) _level0 (movieclip) =
-(21) [object Object] (object) =
-(22) (undefined) =
-(23) [type Object] (object) =
+(20) äöü (string) =
+(21) _level0 (movieclip) =
+(22) [object Object] (object) =
+(23) (undefined) =
(24) [type Object] (object) =
-(25) [object Object] (object) =
-(26) (object) =
+(25) [type Object] (object) =
+(26) [object Object] (object) =
(27) (object) =
-(28) null (object) =
-(29) true (object) =
-(30) false (object) =
-(31) 0 (object) =
-(32) 1 (object) =
-(33) 0.5 (object) =
-(34) -1 (object) =
-(35) -0.5 (object) =
-(36) Infinity (object) =
-(37) -Infinity (object) =
-(38) NaN (object) =
-(39) (object) =
-(40) 0 (object) =
-(41) -0 (object) =
-(42) 0.0 (object) =
-(43) 1 (object) =
-(44) Hello World! (object) =
-(45) true (object) =
-(46) _level0 (object) =
+(28) (object) =
+(29) null (object) =
+(30) true (object) =
+(31) false (object) =
+(32) 0 (object) =
+(33) 1 (object) =
+(34) 0.5 (object) =
+(35) -1 (object) =
+(36) -0.5 (object) =
+(37) Infinity (object) =
+(38) -Infinity (object) =
+(39) NaN (object) =
+(40) (object) =
+(41) 0 (object) =
+(42) -0 (object) =
+(43) 0.0 (object) =
+(44) 1 (object) =
+(45) Hello World! (object) =
+(46) true (object) =
(47) _level0 (object) =
-(48) [type Object] (object) =
-(49) (object) =
+(48) äöü (object) =
+(49) _level0 (object) =
(50) [type Object] (object) =
-(51) [type Object] (object) =
+(51) (object) =
(52) [type Object] (object) =
(53) [type Object] (object) =
+(54) [type Object] (object) =
+(55) [type Object] (object) =
mono =
sans-serif =
serif =
diff --git a/test/trace/stylesheet-parsecssfontfamily-6.swf b/test/trace/stylesheet-parsecssfontfamily-6.swf
index 2203527..0d9f7a1 100644
Binary files a/test/trace/stylesheet-parsecssfontfamily-6.swf and b/test/trace/stylesheet-parsecssfontfamily-6.swf differ
diff --git a/test/trace/stylesheet-parsecssfontfamily-6.swf.trace b/test/trace/stylesheet-parsecssfontfamily-6.swf.trace
index 86d7ebc..9139fe2 100644
--- a/test/trace/stylesheet-parsecssfontfamily-6.swf.trace
+++ b/test/trace/stylesheet-parsecssfontfamily-6.swf.trace
@@ -24,7 +24,6 @@ valueOf called with
19: valueOf!
20: valueOf!
21: valueOf!
-21: toString!
22: valueOf!
22: toString!
23: valueOf!
@@ -35,6 +34,8 @@ valueOf called with
25: toString!
26: valueOf!
26: toString!
+27: valueOf!
+27: toString!
Testing parseCSSFontFamily:
(0) (undefined) =
(1) null (null) =
@@ -56,40 +57,42 @@ Testing parseCSSFontFamily:
(17) Hello World! (string) =
(18) true (string) =
(19) _level0 (string) =
-(20) _level0 (movieclip) =
-(21) [object Object] (object) =
-(22) [type Function] (function) =
-(23) [type Object] (object) =
+(20) äöü (string) =
+(21) _level0 (movieclip) =
+(22) [object Object] (object) =
+(23) [type Function] (function) =
(24) [type Object] (object) =
-(25) [object Object] (object) =
-(26) (object) =
+(25) [type Object] (object) =
+(26) [object Object] (object) =
(27) (object) =
-(28) null (object) =
-(29) true (object) =
-(30) false (object) =
-(31) 0 (object) =
-(32) 1 (object) =
-(33) 0.5 (object) =
-(34) -1 (object) =
-(35) -0.5 (object) =
-(36) Infinity (object) =
-(37) -Infinity (object) =
-(38) NaN (object) =
-(39) (object) =
-(40) 0 (object) =
-(41) -0 (object) =
-(42) 0.0 (object) =
-(43) 1 (object) =
-(44) Hello World! (object) =
-(45) true (object) =
-(46) _level0 (object) =
+(28) (object) =
+(29) null (object) =
+(30) true (object) =
+(31) false (object) =
+(32) 0 (object) =
+(33) 1 (object) =
+(34) 0.5 (object) =
+(35) -1 (object) =
+(36) -0.5 (object) =
+(37) Infinity (object) =
+(38) -Infinity (object) =
+(39) NaN (object) =
+(40) (object) =
+(41) 0 (object) =
+(42) -0 (object) =
+(43) 0.0 (object) =
+(44) 1 (object) =
+(45) Hello World! (object) =
+(46) true (object) =
(47) _level0 (object) =
-(48) [type Object] (object) =
-(49) [type Object] (object) =
+(48) äöü (object) =
+(49) _level0 (object) =
(50) [type Object] (object) =
(51) [type Object] (object) =
(52) [type Object] (object) =
(53) [type Object] (object) =
+(54) [type Object] (object) =
+(55) [type Object] (object) =
mono =
sans-serif =
serif =
diff --git a/test/trace/stylesheet-parsecssfontfamily-7.swf b/test/trace/stylesheet-parsecssfontfamily-7.swf
index 2fceb56..01a0e7f 100644
Binary files a/test/trace/stylesheet-parsecssfontfamily-7.swf and b/test/trace/stylesheet-parsecssfontfamily-7.swf differ
diff --git a/test/trace/stylesheet-parsecssfontfamily-7.swf.trace b/test/trace/stylesheet-parsecssfontfamily-7.swf.trace
index 2102a1d..7c41b08 100644
--- a/test/trace/stylesheet-parsecssfontfamily-7.swf.trace
+++ b/test/trace/stylesheet-parsecssfontfamily-7.swf.trace
@@ -24,7 +24,6 @@ valueOf called with
19: valueOf!
20: valueOf!
21: valueOf!
-21: toString!
22: valueOf!
22: toString!
23: valueOf!
@@ -35,6 +34,8 @@ valueOf called with
25: toString!
26: valueOf!
26: toString!
+27: valueOf!
+27: toString!
Testing parseCSSFontFamily:
(0) undefined (undefined) = undefined
(1) null (null) = null
@@ -56,69 +57,72 @@ Testing parseCSSFontFamily:
(17) Hello World! (string) = Hello World!
(18) true (string) = true
(19) _level0 (string) = _level0
-(20) _level0 (movieclip) = _level0
-(21) [object Object] (object) = [object Object]
-(22) [type Function] (function) = [type Function]
+(20) äöü (string) = äöü
+(21) _level0 (movieclip) = _level0
+(22) [object Object] (object) = [object Object]
+(23) [type Function] (function) = [type Function]
toString called
-(23) [type Object] (object) = [type Object]
-toString called with
(24) [type Object] (object) = [type Object]
-(25) [object Object] (object) = [object Object]
-(26) undefined (object) = [type Object]
-0: toString!
+toString called with
+(25) [type Object] (object) = [type Object]
+(26) [object Object] (object) = [object Object]
(27) undefined (object) = [type Object]
+0: toString!
+(28) undefined (object) = [type Object]
1: toString!
-(28) null (object) = [type Object]
+(29) null (object) = [type Object]
2: toString!
-(29) true (object) = [type Object]
+(30) true (object) = [type Object]
3: toString!
-(30) false (object) = [type Object]
+(31) false (object) = [type Object]
4: toString!
-(31) 0 (object) = [type Object]
+(32) 0 (object) = [type Object]
5: toString!
-(32) 1 (object) = [type Object]
+(33) 1 (object) = [type Object]
6: toString!
-(33) 0.5 (object) = [type Object]
+(34) 0.5 (object) = [type Object]
7: toString!
-(34) -1 (object) = [type Object]
+(35) -1 (object) = [type Object]
8: toString!
-(35) -0.5 (object) = [type Object]
+(36) -0.5 (object) = [type Object]
9: toString!
-(36) Infinity (object) = [type Object]
+(37) Infinity (object) = [type Object]
10: toString!
-(37) -Infinity (object) = [type Object]
+(38) -Infinity (object) = [type Object]
11: toString!
-(38) NaN (object) = [type Object]
+(39) NaN (object) = [type Object]
12: toString!
-(39) (object) =
+(40) (object) =
13: toString!
-(40) 0 (object) = 0
+(41) 0 (object) = 0
14: toString!
-(41) -0 (object) = -0
+(42) -0 (object) = -0
15: toString!
-(42) 0.0 (object) = 0.0
+(43) 0.0 (object) = 0.0
16: toString!
-(43) 1 (object) = 1
+(44) 1 (object) = 1
17: toString!
-(44) Hello World! (object) = Hello World!
+(45) Hello World! (object) = Hello World!
18: toString!
-(45) true (object) = true
+(46) true (object) = true
19: toString!
-(46) _level0 (object) = _level0
+(47) _level0 (object) = _level0
20: toString!
-(47) _level0 (object) = [type Object]
+(48) äöü (object) = äöü
21: toString!
-(48) [type Object] (object) = [type Object]
+(49) _level0 (object) = [type Object]
22: toString!
-(49) [type Object] (object) = [type Object]
-23: toString!
(50) [type Object] (object) = [type Object]
-24: toString!
+23: toString!
(51) [type Object] (object) = [type Object]
-25: toString!
+24: toString!
(52) [type Object] (object) = [type Object]
-26: toString!
+25: toString!
(53) [type Object] (object) = [type Object]
+26: toString!
+(54) [type Object] (object) = [type Object]
+27: toString!
+(55) [type Object] (object) = [type Object]
mono = _typewriter
sans-serif = _sans
serif = _serif
diff --git a/test/trace/stylesheet-parsecssfontfamily-8.swf b/test/trace/stylesheet-parsecssfontfamily-8.swf
new file mode 100644
index 0000000..da449cc
Binary files /dev/null and b/test/trace/stylesheet-parsecssfontfamily-8.swf differ
diff --git a/test/trace/stylesheet-parsecssfontfamily-8.swf.trace b/test/trace/stylesheet-parsecssfontfamily-8.swf.trace
new file mode 100644
index 0000000..7c41b08
--- /dev/null
+++ b/test/trace/stylesheet-parsecssfontfamily-8.swf.trace
@@ -0,0 +1,132 @@
+valueOf called
+toString called
+toString called with
+valueOf called with
+0: valueOf!
+1: valueOf!
+2: valueOf!
+3: valueOf!
+4: valueOf!
+5: valueOf!
+6: valueOf!
+7: valueOf!
+8: valueOf!
+9: valueOf!
+10: valueOf!
+11: valueOf!
+12: valueOf!
+13: valueOf!
+14: valueOf!
+15: valueOf!
+16: valueOf!
+17: valueOf!
+18: valueOf!
+19: valueOf!
+20: valueOf!
+21: valueOf!
+22: valueOf!
+22: toString!
+23: valueOf!
+23: toString!
+24: valueOf!
+24: toString!
+25: valueOf!
+25: toString!
+26: valueOf!
+26: toString!
+27: valueOf!
+27: toString!
+Testing parseCSSFontFamily:
+(0) undefined (undefined) = undefined
+(1) null (null) = null
+(2) true (boolean) = true
+(3) false (boolean) = false
+(4) 0 (number) = 0
+(5) 1 (number) = 1
+(6) 0.5 (number) = 0.5
+(7) -1 (number) = -1
+(8) -0.5 (number) = -0.5
+(9) Infinity (number) = Infinity
+(10) -Infinity (number) = -Infinity
+(11) NaN (number) = NaN
+(12) (string) =
+(13) 0 (string) = 0
+(14) -0 (string) = -0
+(15) 0.0 (string) = 0.0
+(16) 1 (string) = 1
+(17) Hello World! (string) = Hello World!
+(18) true (string) = true
+(19) _level0 (string) = _level0
+(20) äöü (string) = äöü
+(21) _level0 (movieclip) = _level0
+(22) [object Object] (object) = [object Object]
+(23) [type Function] (function) = [type Function]
+toString called
+(24) [type Object] (object) = [type Object]
+toString called with
+(25) [type Object] (object) = [type Object]
+(26) [object Object] (object) = [object Object]
+(27) undefined (object) = [type Object]
+0: toString!
+(28) undefined (object) = [type Object]
+1: toString!
+(29) null (object) = [type Object]
+2: toString!
+(30) true (object) = [type Object]
+3: toString!
+(31) false (object) = [type Object]
+4: toString!
+(32) 0 (object) = [type Object]
+5: toString!
+(33) 1 (object) = [type Object]
+6: toString!
+(34) 0.5 (object) = [type Object]
+7: toString!
+(35) -1 (object) = [type Object]
+8: toString!
+(36) -0.5 (object) = [type Object]
+9: toString!
+(37) Infinity (object) = [type Object]
+10: toString!
+(38) -Infinity (object) = [type Object]
+11: toString!
+(39) NaN (object) = [type Object]
+12: toString!
+(40) (object) =
+13: toString!
+(41) 0 (object) = 0
+14: toString!
+(42) -0 (object) = -0
+15: toString!
+(43) 0.0 (object) = 0.0
+16: toString!
+(44) 1 (object) = 1
+17: toString!
+(45) Hello World! (object) = Hello World!
+18: toString!
+(46) true (object) = true
+19: toString!
+(47) _level0 (object) = _level0
+20: toString!
+(48) äöü (object) = äöü
+21: toString!
+(49) _level0 (object) = [type Object]
+22: toString!
+(50) [type Object] (object) = [type Object]
+23: toString!
+(51) [type Object] (object) = [type Object]
+24: toString!
+(52) [type Object] (object) = [type Object]
+25: toString!
+(53) [type Object] (object) = [type Object]
+26: toString!
+(54) [type Object] (object) = [type Object]
+27: toString!
+(55) [type Object] (object) = [type Object]
+mono = _typewriter
+sans-serif = _sans
+serif = _serif
+mONo = _typewriter
+SANS-SERIF = _sans
+serif = serif
+_typewriter
commit cf382882c692b8ca7571657b4d05adc1e49dffb5
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date: Wed Dec 19 16:19:14 2007 +0200
Allow empty CSS declarations in version 8. Add stylesheet-parse test for v8
diff --git a/libswfdec/swfdec_style_sheet.c b/libswfdec/swfdec_style_sheet.c
index d17768c..7ccd978 100644
--- a/libswfdec/swfdec_style_sheet.c
+++ b/libswfdec/swfdec_style_sheet.c
@@ -136,7 +136,8 @@ swfdec_style_sheet_parse_selectors (SwfdecAsContext *cx, const char *p,
p = p + strspn (p, " \t\r\n");
// special case: don't allow empty declarations if not totally empty
- if (*(p-1) != '{' && (*p == '\0' || *p == '}'))
+ // except in version 8
+ if (cx->version < 8 && (*(p-1) != '{' && (*p == '\0' || *p == '}')))
return NULL;
return p;
diff --git a/test/trace/Makefile.am b/test/trace/Makefile.am
index ed2a456..9634405 100644
--- a/test/trace/Makefile.am
+++ b/test/trace/Makefile.am
@@ -2631,6 +2631,8 @@ EXTRA_DIST = \
stylesheet-parse-6.swf.trace \
stylesheet-parse-7.swf \
stylesheet-parse-7.swf.trace \
+ stylesheet-parse-8.swf \
+ stylesheet-parse-8.swf.trace \
stylesheet-parsecolor.as \
stylesheet-parsecolor-5.swf \
stylesheet-parsecolor-5.swf.trace \
diff --git a/test/trace/stylesheet-parse-8.swf b/test/trace/stylesheet-parse-8.swf
new file mode 100644
index 0000000..912b32c
Binary files /dev/null and b/test/trace/stylesheet-parse-8.swf differ
diff --git a/test/trace/stylesheet-parse-8.swf.trace b/test/trace/stylesheet-parse-8.swf.trace
new file mode 100644
index 0000000..ee95b23
--- /dev/null
+++ b/test/trace/stylesheet-parse-8.swf.trace
@@ -0,0 +1,132 @@
+Parsing: 'a { a: 1; b: 2; }'
+true
+* 'a'
+a: '1'
+b: '2'
+
+Parsing: 'a { a: 1; b: 2; } a { a: 0; c:3; }'
+true
+* 'a'
+a: '0'
+c: '3'
+
+Parsing: 'a, a { a: 1; }'
+true
+* 'a'
+a: '1'
+
+Parsing: ',a,, ,, c,, { a: 1; }, b, ,,{ b: 2; }'
+true
+* 'a'
+a: '1'
+* 'b'
+b: '2'
+* 'c'
+a: '1'
+
+Parsing: 'a { a: 1 ; }'
+true
+* 'a'
+a: '1 '
+* 'b'
+b: '2'
+* 'c'
+a: '1'
+
+Parsing: 'a { a: 1 } b { b: 2 } c { c: 3}'
+true
+* 'a'
+a: '1 '
+* 'b'
+b: '2 '
+* 'c'
+c: '3'
+
+Parsing: 'a { a: 1; b: 2;; }'
+false
+* 'a'
+a: '1 '
+* 'b'
+b: '2 '
+* 'c'
+c: '3'
+
+Parsing: 'a { a: 1; b: 2; '
+true
+* 'a'
+a: '1'
+b: '2'
+* 'b'
+b: '2 '
+* 'c'
+c: '3'
+
+Parsing: 'a { a: 1; b: 2 '
+false
+* 'a'
+a: '1'
+b: '2'
+* 'b'
+b: '2 '
+* 'c'
+c: '3'
+
+Parsing: 'a , b { a: 1; }'
+true
+* 'a'
+a: '1'
+* 'b'
+a: '1'
+* 'c'
+c: '3'
+
+Parsing: 'a b { a: 1; }'
+false
+* 'a'
+a: '1'
+* 'b'
+a: '1'
+* 'c'
+c: '3'
+
+Parsing: 'a b, c { a: 1; }'
+false
+* 'a'
+a: '1'
+* 'b'
+a: '1'
+* 'c'
+c: '3'
+
+Parsing: 'a { a: 1 } a {}'
+true
+* 'a'
+* 'b'
+a: '1'
+* 'c'
+c: '3'
+
+Parsing: 'a { a: 1 } a { }'
+true
+* 'a'
+* 'b'
+a: '1'
+* 'c'
+c: '3'
+
+Parsing: 'a { a-a: 1; b--b: 2; c-C: 3; d-+: 4; e-: 5; }'
+true
+* 'a'
+aA: '1'
+b-b: '2'
+cC: '3'
+d+: '4'
+e-: '5'
+* 'b'
+a: '1'
+* 'c'
+c: '3'
+
+Test on non-stylesheet object
+true
+1
commit 67fab3aabad4dac54681b2bf8a91c907289fae95
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date: Wed Dec 19 14:07:14 2007 +0200
Fix createTextField's handling of x and y coordinates, fixes rotating at least
diff --git a/libswfdec/swfdec_text_field_movie_as.c b/libswfdec/swfdec_text_field_movie_as.c
index 33578b3..c301349 100644
--- a/libswfdec/swfdec_text_field_movie_as.c
+++ b/libswfdec/swfdec_text_field_movie_as.c
@@ -1328,12 +1328,10 @@ swfdec_text_field_movie_createTextField (SwfdecAsContext *cx,
edittext->indent = 0;
edittext->leading = 0;
- SWFDEC_GRAPHIC (edittext)->extents.x0 = SWFDEC_DOUBLE_TO_TWIPS (x);
- SWFDEC_GRAPHIC (edittext)->extents.x1 =
- SWFDEC_GRAPHIC (edittext)->extents.x0 + SWFDEC_DOUBLE_TO_TWIPS (width);
- SWFDEC_GRAPHIC (edittext)->extents.y0 = SWFDEC_DOUBLE_TO_TWIPS (y);
- SWFDEC_GRAPHIC (edittext)->extents.y1 =
- SWFDEC_GRAPHIC (edittext)->extents.y0 + SWFDEC_DOUBLE_TO_TWIPS (height);
+ SWFDEC_GRAPHIC (edittext)->extents.x0 = 0;
+ SWFDEC_GRAPHIC (edittext)->extents.x1 = SWFDEC_DOUBLE_TO_TWIPS (width);
+ SWFDEC_GRAPHIC (edittext)->extents.y0 = 0;
+ SWFDEC_GRAPHIC (edittext)->extents.y1 = SWFDEC_DOUBLE_TO_TWIPS (height);
movie = swfdec_movie_find (parent, depth);
if (movie)
@@ -1344,6 +1342,11 @@ swfdec_text_field_movie_createTextField (SwfdecAsContext *cx,
g_assert (SWFDEC_IS_TEXT_FIELD_MOVIE (movie));
g_object_unref (edittext);
swfdec_movie_initialize (movie);
+
+ movie->matrix.x0 = SWFDEC_DOUBLE_TO_TWIPS (x);
+ movie->matrix.y0 = SWFDEC_DOUBLE_TO_TWIPS (y);
+ movie->modified = TRUE;
+
swfdec_movie_update (movie);
swfdec_as_object_get_variable (cx->global, SWFDEC_AS_STR_TextField, &val);
commit cc94bf36adba9995af6e262dbd7a7b99cad09aec
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date: Wed Dec 19 12:17:18 2007 +0200
Oops, managed to change update_extents instead of invalidate earlier
diff --git a/libswfdec/swfdec_text_field_movie.c b/libswfdec/swfdec_text_field_movie.c
index 8cb635a..365bb23 100644
--- a/libswfdec/swfdec_text_field_movie.c
+++ b/libswfdec/swfdec_text_field_movie.c
@@ -44,8 +44,15 @@ static void
swfdec_text_field_movie_update_extents (SwfdecMovie *movie,
SwfdecRect *extents)
{
+ swfdec_rect_union (extents, extents,
+ &SWFDEC_GRAPHIC (SWFDEC_TEXT_FIELD_MOVIE (movie)->text)->extents);
+}
+
+static void
+swfdec_text_field_movie_invalidate (SwfdecMovie *movie, const cairo_matrix_t *matrix, gboolean last)
+{
SwfdecTextFieldMovie *text = SWFDEC_TEXT_FIELD_MOVIE (movie);
- SwfdecRect extended;
+ SwfdecRect rect, extended;
extended = SWFDEC_GRAPHIC (text->text)->extents;
@@ -55,17 +62,9 @@ swfdec_text_field_movie_update_extents (SwfdecMovie *movie,
extended.y1 += SWFDEC_TWIPS_TO_DOUBLE (1);
}
- swfdec_rect_union (extents, extents, &extended);
-}
-
-static void
-swfdec_text_field_movie_invalidate (SwfdecMovie *movie, const cairo_matrix_t *matrix, gboolean last)
-{
- SwfdecRect rect;
-
- swfdec_rect_transform (&rect,
- &SWFDEC_GRAPHIC (SWFDEC_TEXT_FIELD_MOVIE (movie)->text)->extents, matrix);
- swfdec_player_invalidate (SWFDEC_PLAYER (SWFDEC_AS_OBJECT (movie)->context), &rect);
+ swfdec_rect_transform (&rect, &extended, matrix);
+ swfdec_player_invalidate (
+ SWFDEC_PLAYER (SWFDEC_AS_OBJECT (movie)->context), &rect);
}
static void
commit f03d1a42c04733369f876790b35369485b87a740
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date: Wed Dec 19 11:20:50 2007 +0200
Enable testing for border in text-field-empty image test
diff --git a/test/image/text-field-empty-6.swf b/test/image/text-field-empty-6.swf
index 274518a..b81607b 100644
Binary files a/test/image/text-field-empty-6.swf 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
index 27310dd..39a0319 100644
Binary files a/test/image/text-field-empty-6.swf.png 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
index cdfbd91..845d93e 100644
Binary files a/test/image/text-field-empty-7.swf 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
index 27310dd..459b329 100644
Binary files a/test/image/text-field-empty-7.swf.png 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
index 7f0bdac..421efd3 100644
Binary files a/test/image/text-field-empty-8.swf 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
index 27310dd..d6d8a1e 100644
Binary files a/test/image/text-field-empty-8.swf.png 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
index b4b4fce..fb27708 100644
--- a/test/image/text-field-empty.as
+++ b/test/image/text-field-empty.as
@@ -7,9 +7,8 @@ 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.border = true;
+t2.borderColor = 0xFF0000;
t2.background = true;
t2.backgroundColor = 0x0000FF;
commit 9692b551894ab2e7579e1a033f94543e6c381189
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date: Wed Dec 19 10:49:20 2007 +0200
Merge fix to swfdec_player_do_mouse_move
diff --git a/libswfdec/swfdec_player.c b/libswfdec/swfdec_player.c
index 3b0eeae..1ec62f1 100644
--- a/libswfdec/swfdec_player.c
+++ b/libswfdec/swfdec_player.c
@@ -1118,11 +1118,11 @@ swfdec_player_do_mouse_move (SwfdecPlayer *player, double x, double y)
swfdec_player_grab_mouse_movie (player);
swfdec_player_update_drag_movie (player);
- if (player->mouse_grab) {
- SwfdecMovieClass *klass = SWFDEC_MOVIE_GET_CLASS (player->mouse_grab);
+ if (priv->mouse_grab) {
+ SwfdecMovieClass *klass = SWFDEC_MOVIE_GET_CLASS (priv->mouse_grab);
if (klass->mouse_move) {
- swfdec_movie_get_mouse (player->mouse_grab, &x, &y);
- klass->mouse_move (player->mouse_grab, x, y);
+ swfdec_movie_get_mouse (priv->mouse_grab, &x, &y);
+ klass->mouse_move (priv->mouse_grab, x, y);
}
}
commit 34431fde9fe543d6db48816f7f15468cca9cb62f
Merge: 6bc7cea... 75044ce...
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date: Wed Dec 19 10:17:14 2007 +0200
Merge branch 'master' into selection
commit 6bc7ceac9ce0557c27065124035c998b0dd4dba1
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date: Wed Dec 19 10:13:07 2007 +0200
Make text field's xy_to_index work right even when text field is not at 0,0
diff --git a/libswfdec/swfdec_text_field_movie.c b/libswfdec/swfdec_text_field_movie.c
index 130ffdf..efd329f 100644
--- a/libswfdec/swfdec_text_field_movie.c
+++ b/libswfdec/swfdec_text_field_movie.c
@@ -1361,8 +1361,8 @@ swfdec_text_field_movie_xy_to_index (SwfdecTextFieldMovie *text, double x,
if (layouts[0].layout == NULL)
return FALSE;
- layout_y = y - EXTRA_MARGIN;
- layout_x = x - EXTRA_MARGIN;
+ layout_y = y - EXTRA_MARGIN - SWFDEC_GRAPHIC (text->text)->extents.y0;
+ layout_x = x - EXTRA_MARGIN - SWFDEC_GRAPHIC (text->text)->extents.x0;
// take scrolling into account
swfdec_text_field_movie_line_position (layouts,
commit 9605b6954af7325ea2d23889f66cd2064ba9d7f3
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date: Tue Dec 18 23:25:29 2007 +0200
Fixes to text field's border drawing
diff --git a/libswfdec/swfdec_text_field_movie.c b/libswfdec/swfdec_text_field_movie.c
index e2ad176..130ffdf 100644
--- a/libswfdec/swfdec_text_field_movie.c
+++ b/libswfdec/swfdec_text_field_movie.c
@@ -44,8 +44,18 @@ static void
swfdec_text_field_movie_update_extents (SwfdecMovie *movie,
SwfdecRect *extents)
{
- swfdec_rect_union (extents, extents,
- &SWFDEC_GRAPHIC (SWFDEC_TEXT_FIELD_MOVIE (movie)->text)->extents);
+ SwfdecTextFieldMovie *text = SWFDEC_TEXT_FIELD_MOVIE (movie);
+ SwfdecRect extended;
+
+ extended = SWFDEC_GRAPHIC (text->text)->extents;
+
+ // border is drawn partly outside the extents
+ if (text->text->border) {
+ extended.x1 += SWFDEC_TWIPS_TO_DOUBLE (1);
+ extended.y1 += SWFDEC_TWIPS_TO_DOUBLE (1);
+ }
+
+ swfdec_rect_union (extents, extents, &extended);
}
static void
@@ -819,10 +829,6 @@ swfdec_text_field_movie_render (SwfdecMovie *movie, cairo_t *cr,
swfdec_rect_intersect (&limit, &movie->original_extents, inval);
- cairo_rectangle (cr, limit.x0, limit.y0, limit.x1 - limit.x0,
- limit.y1 - limit.y0);
- cairo_clip (cr);
-
if (text->background) {
cairo_rectangle (cr, limit.x0, limit.y0, limit.x1 - limit.x0,
limit.y1 - limit.y0);
@@ -833,13 +839,13 @@ swfdec_text_field_movie_render (SwfdecMovie *movie, cairo_t *cr,
}
if (text->border) {
- // FIXME: border should be partly outside the extents and should not be
- // scaled, but always be 1 pixel width
+ // FIXME: should not be scaled, but always be 1 pixel width
+ // TODO: should clip before to make things faster?
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));
+ SWFDEC_DOUBLE_TO_TWIPS (0.5), movie->original_extents.y0 +
+ SWFDEC_DOUBLE_TO_TWIPS (0.5),
+ movie->original_extents.x1 - movie->original_extents.x0,
+ movie->original_extents.y1 - movie->original_extents.y0);
color = swfdec_color_apply_transform (text_movie->border_color, trans);
// always use full alpha
swfdec_color_set_source (cr, color | SWFDEC_COLOR_COMBINE (0, 0, 0, 255));
@@ -849,6 +855,10 @@ swfdec_text_field_movie_render (SwfdecMovie *movie, cairo_t *cr,
cairo_stroke (cr);
}
+ cairo_rectangle (cr, limit.x0, limit.y0, limit.x1 - limit.x0,
+ limit.y1 - limit.y0);
+ cairo_clip (cr);
+
layouts = swfdec_text_field_movie_get_layouts (text_movie, NULL, cr,
paragraphs, trans);
commit 6b65ce0bcdaaeb483385b1cb6147ce5c19603f31
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date: Tue Dec 18 22:56:47 2007 +0200
Fix handling of line ending new lines that I broke with the shape system
diff --git a/libswfdec/swfdec_text_field_movie.c b/libswfdec/swfdec_text_field_movie.c
index 19e4394..e2ad176 100644
--- a/libswfdec/swfdec_text_field_movie.c
+++ b/libswfdec/swfdec_text_field_movie.c
@@ -542,6 +542,7 @@ swfdec_text_field_movie_get_layouts (SwfdecTextFieldMovie *text, int *num,
// create layout
playout = layout.layout = pango_cairo_create_layout (cr);
+ pango_layout_set_single_paragraph_mode (playout, TRUE);
// set rendering position
layout.offset_x = block->left_margin + block->block_indent;
@@ -630,8 +631,8 @@ swfdec_text_field_movie_get_layouts (SwfdecTextFieldMovie *text, int *num,
rect.x = 0;
rect.width = 0;
- rect.y = -descent;
- rect.height = ascent;
+ rect.y = -ascent * PANGO_SCALE;
+ rect.height = descent * PANGO_SCALE;
attr = pango_attr_shape_new (&rect, &rect);
@@ -746,7 +747,7 @@ swfdec_text_field_movie_line_position (SwfdecLayout *layouts, int line_num,
g_return_if_fail (layouts != NULL);
- current = 0;
+ current = 1;
for (i = 0; layouts[i].layout != NULL && current < line_num; i++) {
current += pango_layout_get_line_count (layouts[i].layout);
commit 6b7efbcff5f75c51ba2a6add6defc61800da79a9
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date: Tue Dec 18 22:12:36 2007 +0200
Fix typos in text-field-variable test
diff --git a/test/trace/text-field-variable-5.swf b/test/trace/text-field-variable-5.swf
index 2c8f63b..e494c1c 100644
Binary files a/test/trace/text-field-variable-5.swf and b/test/trace/text-field-variable-5.swf differ
diff --git a/test/trace/text-field-variable-5.swf.trace b/test/trace/text-field-variable-5.swf.trace
index 4248228..ea83fe6 100644
--- a/test/trace/text-field-variable-5.swf.trace
+++ b/test/trace/text-field-variable-5.swf.trace
@@ -2,8 +2,8 @@ undefined
undefined
undefined
3
-undefined
-2
3
-undefined
+5
+6
+6
undefined
diff --git a/test/trace/text-field-variable-6.swf b/test/trace/text-field-variable-6.swf
index 277d1b3..33e8340 100644
Binary files a/test/trace/text-field-variable-6.swf and b/test/trace/text-field-variable-6.swf differ
diff --git a/test/trace/text-field-variable-6.swf.trace b/test/trace/text-field-variable-6.swf.trace
index 2e92da2..e328516 100644
--- a/test/trace/text-field-variable-6.swf.trace
+++ b/test/trace/text-field-variable-6.swf.trace
@@ -1,9 +1,9 @@
1
2
3
-1
-undefined
-3
-3
-undefined
+4
+4
+6
+6
+6
undefined
diff --git a/test/trace/text-field-variable-7.swf b/test/trace/text-field-variable-7.swf
index 83d2875..ed5e508 100644
Binary files a/test/trace/text-field-variable-7.swf and b/test/trace/text-field-variable-7.swf differ
diff --git a/test/trace/text-field-variable-7.swf.trace b/test/trace/text-field-variable-7.swf.trace
index 2e92da2..e328516 100644
--- a/test/trace/text-field-variable-7.swf.trace
+++ b/test/trace/text-field-variable-7.swf.trace
@@ -1,9 +1,9 @@
1
2
3
-1
-undefined
-3
-3
-undefined
+4
+4
+6
+6
+6
undefined
diff --git a/test/trace/text-field-variable-8.swf b/test/trace/text-field-variable-8.swf
index a466b89..37f2db4 100644
Binary files a/test/trace/text-field-variable-8.swf and b/test/trace/text-field-variable-8.swf differ
diff --git a/test/trace/text-field-variable-8.swf.trace b/test/trace/text-field-variable-8.swf.trace
index 2e92da2..e328516 100644
--- a/test/trace/text-field-variable-8.swf.trace
+++ b/test/trace/text-field-variable-8.swf.trace
@@ -1,9 +1,9 @@
1
2
3
-1
-undefined
-3
-3
-undefined
+4
+4
+6
+6
+6
undefined
diff --git a/test/trace/text-field-variable.as b/test/trace/text-field-variable.as
index 68dee49..d73c8f6 100644
--- a/test/trace/text-field-variable.as
+++ b/test/trace/text-field-variable.as
@@ -14,22 +14,22 @@ trace (m.test);
// object
o = new Object();
-o.test = 1;
+o.test = 4;
t.variable = "o.test";
trace (t.text);
-o.test = 2;
-trace (o.text);
-t.text = 3;
+o.test = 5;
+trace (t.text);
+t.text = 6;
trace (o.test);
// nothing
delete n;
-n.test = 1;
+n.test = 7;
t.variable = "n.test";
trace (t.text);
-n.test = 2;
-trace (o.text);
-t.text = 3;
+n.test = 8;
+trace (t.text);
+t.text = 9;
trace (n.test);
loadMovie ("FSCommand:quit", "");
commit 9ca0efb69a0462810bb5473e9e5546fd004afd39
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date: Tue Dec 18 21:44:34 2007 +0200
Fix few small issues in text field code
Earlier commit broke vertical scrolling
Margin's didn't scale
swfdec_text_field_movie_xy_to_index didn't take margins into account
diff --git a/libswfdec/swfdec_text_field_movie.c b/libswfdec/swfdec_text_field_movie.c
index fdbe9a3..19e4394 100644
--- a/libswfdec/swfdec_text_field_movie.c
+++ b/libswfdec/swfdec_text_field_movie.c
@@ -799,7 +799,7 @@ swfdec_text_field_movie_render (SwfdecMovie *movie, cairo_t *cr,
SwfdecRect limit;
SwfdecColor color;
SwfdecParagraph *paragraphs;
- int i, y, x, pixels, skip;
+ int i, y, x, skip;
gboolean first;
g_return_if_fail (SWFDEC_IS_TEXT_FIELD_MOVIE (movie));
@@ -852,13 +852,12 @@ swfdec_text_field_movie_render (SwfdecMovie *movie, cairo_t *cr,
paragraphs, trans);
first = TRUE;
- x = movie->original_extents.x0 + EXTRA_MARGIN +
+ x = movie->original_extents.x0 + SWFDEC_DOUBLE_TO_TWIPS (EXTRA_MARGIN) +
MIN (text_movie->hscroll, text_movie->hscroll_max);
- y = movie->original_extents.y0 + EXTRA_MARGIN;
+ y = movie->original_extents.y0 + SWFDEC_DOUBLE_TO_TWIPS (EXTRA_MARGIN);
swfdec_text_field_movie_line_position (layouts,
- MIN (text_movie->scroll, text_movie->scroll_max), &pixels, &i, &skip);
- y += pixels;
+ MIN (text_movie->scroll, text_movie->scroll_max), NULL, &i, &skip);
for (; layouts[i].layout != NULL && y < limit.y1; i++)
{
@@ -1351,8 +1350,8 @@ swfdec_text_field_movie_xy_to_index (SwfdecTextFieldMovie *text, double x,
if (layouts[0].layout == NULL)
return FALSE;
- layout_y = y;
- layout_x = x;
+ layout_y = y - EXTRA_MARGIN;
+ layout_x = x - EXTRA_MARGIN;
// take scrolling into account
swfdec_text_field_movie_line_position (layouts,
commit 8d1fb9263ba961c1e10cb7febcd9406ea5177197
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date: Tue Dec 18 17:54:54 2007 +0200
Some more fixes to the handling of P tags in TextField's HTML input
diff --git a/libswfdec/swfdec_text_field_movie_html.c b/libswfdec/swfdec_text_field_movie_html.c
index 4f5390b..aff6a50 100644
--- a/libswfdec/swfdec_text_field_movie_html.c
+++ b/libswfdec/swfdec_text_field_movie_html.c
@@ -326,12 +326,20 @@ swfdec_text_field_movie_html_parse_tag (ParserData *data, const char *p)
}
if (found != NULL) {
- while (data->tags_open != found) {
- tag = data->tags_open->data;
+ iter = data->tags_open;
+ while (iter != found) {
+ tag = iter->data;
+ iter = iter->next;
+ if ((tag->name_length == 2 && !g_strncasecmp (tag->name, "li", 2)) ||
+ (tag->name_length == 10 &&
+ !g_strncasecmp (tag->name, "textformat", 10)))
+ continue;
swfdec_text_field_movie_html_parse_close_tag (data, tag, TRUE);
}
+ if (data->multiline)
+ data->text = g_string_append_c (data->text, '\n');
swfdec_text_field_movie_html_parse_close_tag (data, found->data,
- FALSE);
+ TRUE);
}
} else {
if (data->tags_open != NULL) {
diff --git a/test/trace/text-field-html-input-5.swf b/test/trace/text-field-html-input-5.swf
index 6a70b92..a0d642f 100644
Binary files a/test/trace/text-field-html-input-5.swf and b/test/trace/text-field-html-input-5.swf differ
diff --git a/test/trace/text-field-html-input-5.swf.trace b/test/trace/text-field-html-input-5.swf.trace
index 6299e5c..8890a81 100644
--- a/test/trace/text-field-html-input-5.swf.trace
+++ b/test/trace/text-field-html-input-5.swf.trace
@@ -310,3 +310,39 @@ a<u>b</p>c
21: a<u>b</p>c: multiline: 1 condenseWhite: 2
undefined
a<u>b</p>c
+22: a<p>b<li>c</p>d: multiline: 0 condenseWhite: 0
+undefined
+a<p>b<li>c</p>d
+22: a<p>b<li>c</p>d: multiline: 1 condenseWhite: 0
+undefined
+a<p>b<li>c</p>d
+22: a<p>b<li>c</p>d: multiline: 0 condenseWhite: 2
+undefined
+a<p>b<li>c</p>d
+22: a<p>b<li>c</p>d: multiline: 1 condenseWhite: 2
+undefined
+a<p>b<li>c</p>d
+23: a<p>b<textformat indent='10'>c</p>d: multiline: 0 condenseWhite: 0
+undefined
+a<p>b<textformat indent='10'>c</p>d
+23: a<p>b<textformat indent='10'>c</p>d: multiline: 1 condenseWhite: 0
+undefined
+a<p>b<textformat indent='10'>c</p>d
+23: a<p>b<textformat indent='10'>c</p>d: multiline: 0 condenseWhite: 2
+undefined
+a<p>b<textformat indent='10'>c</p>d
+23: a<p>b<textformat indent='10'>c</p>d: multiline: 1 condenseWhite: 2
+undefined
+a<p>b<textformat indent='10'>c</p>d
+24: a<p>b<font size='10'>c</p>d: multiline: 0 condenseWhite: 0
+undefined
+a<p>b<font size='10'>c</p>d
+24: a<p>b<font size='10'>c</p>d: multiline: 1 condenseWhite: 0
+undefined
+a<p>b<font size='10'>c</p>d
+24: a<p>b<font size='10'>c</p>d: multiline: 0 condenseWhite: 2
+undefined
+a<p>b<font size='10'>c</p>d
+24: a<p>b<font size='10'>c</p>d: multiline: 1 condenseWhite: 2
+undefined
+a<p>b<font size='10'>c</p>d
diff --git a/test/trace/text-field-html-input-6.swf b/test/trace/text-field-html-input-6.swf
index a671bec..e7f8193 100644
Binary files a/test/trace/text-field-html-input-6.swf and b/test/trace/text-field-html-input-6.swf differ
diff --git a/test/trace/text-field-html-input-6.swf.trace b/test/trace/text-field-html-input-6.swf.trace
index 409450a..d3b3aaf 100644
--- a/test/trace/text-field-html-input-6.swf.trace
+++ b/test/trace/text-field-html-input-6.swf.trace
@@ -764,3 +764,103 @@ abc
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=true url=
2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=true url=
+22: a<p>b<li>c</p>d: multiline: false condenseWhite: false
+ab
c
d
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">ab</FONT></P><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">c</FONT></LI><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">d</FONT></LI>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+2/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+3/c: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+4/
: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+5/d: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+22: a<p>b<li>c</p>d: multiline: true condenseWhite: false
+ab
c
d
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">ab</FONT></P><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">c</FONT></LI><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">d</FONT></LI>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+2/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+3/c: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+4/
: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+5/d: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+22: a<p>b<li>c</p>d: multiline: false condenseWhite: true
+ab
c
d
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">ab</FONT></P><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">c</FONT></LI><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">d</FONT></LI>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+2/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+3/c: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+4/
: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+5/d: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+22: a<p>b<li>c</p>d: multiline: true condenseWhite: true
+ab
c
d
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">ab</FONT></P><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">c</FONT></LI><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">d</FONT></LI>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+2/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+3/c: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+4/
: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+5/d: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+23: a<p>b<textformat indent='10'>c</p>d: multiline: false condenseWhite: false
+abc
d
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">abc</FONT></P><TEXTFORMAT INDENT="10"><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">d</FONT></P></TEXTFORMAT>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=10 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+3/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=10 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+4/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=10 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+23: a<p>b<textformat indent='10'>c</p>d: multiline: true condenseWhite: false
+abc
d
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">abc</FONT></P><TEXTFORMAT INDENT="10"><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">d</FONT></P></TEXTFORMAT>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=10 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+3/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=10 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+4/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=10 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+23: a<p>b<textformat indent='10'>c</p>d: multiline: false condenseWhite: true
+abc
d
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">abc</FONT></P><TEXTFORMAT INDENT="10"><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">d</FONT></P></TEXTFORMAT>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=10 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+3/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=10 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+4/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=10 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+23: a<p>b<textformat indent='10'>c</p>d: multiline: true condenseWhite: true
+abc
d
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">abc</FONT></P><TEXTFORMAT INDENT="10"><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">d</FONT></P></TEXTFORMAT>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=10 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+3/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=10 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+4/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=10 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+24: a<p>b<font size='10'>c</p>d: multiline: false condenseWhite: false
+abc
d
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">ab<FONT SIZE="10">c</FONT></FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">d</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=10 tabStops= target= underline=false url=
+3/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+4/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+24: a<p>b<font size='10'>c</p>d: multiline: true condenseWhite: false
+abc
d
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">ab<FONT SIZE="10">c</FONT></FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">d</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=10 tabStops= target= underline=false url=
+3/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+4/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+24: a<p>b<font size='10'>c</p>d: multiline: false condenseWhite: true
+abc
d
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">ab<FONT SIZE="10">c</FONT></FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">d</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=10 tabStops= target= underline=false url=
+3/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+4/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+24: a<p>b<font size='10'>c</p>d: multiline: true condenseWhite: true
+abc
d
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">ab<FONT SIZE="10">c</FONT></FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">d</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=10 tabStops= target= underline=false url=
+3/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+4/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
diff --git a/test/trace/text-field-html-input-7.swf b/test/trace/text-field-html-input-7.swf
index 218e0ec..38a97cd 100644
Binary files a/test/trace/text-field-html-input-7.swf and b/test/trace/text-field-html-input-7.swf differ
diff --git a/test/trace/text-field-html-input-7.swf.trace b/test/trace/text-field-html-input-7.swf.trace
index 38c779d..aae712b 100644
--- a/test/trace/text-field-html-input-7.swf.trace
+++ b/test/trace/text-field-html-input-7.swf.trace
@@ -708,3 +708,95 @@ abc
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=true url=
2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=true url=
+22: a<p>b<li>c</p>d: multiline: false condenseWhite: false
+abcd
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">abcd</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+3/d: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+22: a<p>b<li>c</p>d: multiline: true condenseWhite: false
+ab
c
d
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">ab</FONT></P><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">c</FONT></LI><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">d</FONT></LI>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+2/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+3/c: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+4/
: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+5/d: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+22: a<p>b<li>c</p>d: multiline: false condenseWhite: true
+abcd
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">abcd</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+3/d: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+22: a<p>b<li>c</p>d: multiline: true condenseWhite: true
+ab
c
d
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">ab</FONT></P><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">c</FONT></LI><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">d</FONT></LI>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+2/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+3/c: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+4/
: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+5/d: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+23: a<p>b<textformat indent='10'>c</p>d: multiline: false condenseWhite: false
+abcd
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">abcd</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=10 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+3/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=10 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+23: a<p>b<textformat indent='10'>c</p>d: multiline: true condenseWhite: false
+abc
d
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">abc</FONT></P><TEXTFORMAT INDENT="10"><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">d</FONT></P></TEXTFORMAT>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=10 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+3/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=10 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+4/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=10 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+23: a<p>b<textformat indent='10'>c</p>d: multiline: false condenseWhite: true
+abcd
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">abcd</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=10 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+3/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=10 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+23: a<p>b<textformat indent='10'>c</p>d: multiline: true condenseWhite: true
+abc
d
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">abc</FONT></P><TEXTFORMAT INDENT="10"><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">d</FONT></P></TEXTFORMAT>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=10 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+3/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=10 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+4/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=10 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+24: a<p>b<font size='10'>c</p>d: multiline: false condenseWhite: false
+abcd
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">ab<FONT SIZE="10">c</FONT>d</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=10 tabStops= target= underline=false url=
+3/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+24: a<p>b<font size='10'>c</p>d: multiline: true condenseWhite: false
+abc
d
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">ab<FONT SIZE="10">c</FONT></FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">d</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=10 tabStops= target= underline=false url=
+3/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+4/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+24: a<p>b<font size='10'>c</p>d: multiline: false condenseWhite: true
+abcd
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">ab<FONT SIZE="10">c</FONT>d</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=10 tabStops= target= underline=false url=
+3/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+24: a<p>b<font size='10'>c</p>d: multiline: true condenseWhite: true
+abc
d
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">ab<FONT SIZE="10">c</FONT></FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">d</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=10 tabStops= target= underline=false url=
+3/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+4/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
diff --git a/test/trace/text-field-html-input-8.swf b/test/trace/text-field-html-input-8.swf
index 0255924..c7cde07 100644
Binary files a/test/trace/text-field-html-input-8.swf and b/test/trace/text-field-html-input-8.swf differ
diff --git a/test/trace/text-field-html-input-8.swf.trace b/test/trace/text-field-html-input-8.swf.trace
index 2f3d69d..82e685f 100644
--- a/test/trace/text-field-html-input-8.swf.trace
+++ b/test/trace/text-field-html-input-8.swf.trace
@@ -706,3 +706,95 @@ abc
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=true url=
2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=true url=
+22: a<p>b<li>c</p>d: multiline: false condenseWhite: false
+abcd
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">abcd</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+3/d: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+22: a<p>b<li>c</p>d: multiline: true condenseWhite: false
+ab
c
d
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">ab</FONT></P><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">c</FONT></LI><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">d</FONT></LI>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+2/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+3/c: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+4/
: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+5/d: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+22: a<p>b<li>c</p>d: multiline: false condenseWhite: true
+abcd
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">abcd</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+3/d: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+22: a<p>b<li>c</p>d: multiline: true condenseWhite: true
+ab
c
d
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">ab</FONT></P><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">c</FONT></LI><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">d</FONT></LI>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+2/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+3/c: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+4/
: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+5/d: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+23: a<p>b<textformat indent='10'>c</p>d: multiline: false condenseWhite: false
+abcd
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">abcd</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=10 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+3/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=10 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+23: a<p>b<textformat indent='10'>c</p>d: multiline: true condenseWhite: false
+abc
d
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">abc</FONT></P><TEXTFORMAT INDENT="10"><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">d</FONT></P></TEXTFORMAT>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=10 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+3/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=10 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+4/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=10 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+23: a<p>b<textformat indent='10'>c</p>d: multiline: false condenseWhite: true
+abcd
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">abcd</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=10 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+3/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=10 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+23: a<p>b<textformat indent='10'>c</p>d: multiline: true condenseWhite: true
+abc
d
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">abc</FONT></P><TEXTFORMAT INDENT="10"><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">d</FONT></P></TEXTFORMAT>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=10 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+3/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=10 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+4/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=10 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+24: a<p>b<font size='10'>c</p>d: multiline: false condenseWhite: false
+abcd
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">ab<FONT SIZE="10">c</FONT>d</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=10 tabStops= target= underline=false url=
+3/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+24: a<p>b<font size='10'>c</p>d: multiline: true condenseWhite: false
+abc
d
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">ab<FONT SIZE="10">c</FONT></FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">d</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=10 tabStops= target= underline=false url=
+3/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+4/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+24: a<p>b<font size='10'>c</p>d: multiline: false condenseWhite: true
+abcd
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">ab<FONT SIZE="10">c</FONT>d</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=10 tabStops= target= underline=false url=
+3/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+24: a<p>b<font size='10'>c</p>d: multiline: true condenseWhite: true
+abc
d
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">ab<FONT SIZE="10">c</FONT></FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">d</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=10 tabStops= target= underline=false url=
+3/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+4/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
diff --git a/test/trace/text-field-html-input.as b/test/trace/text-field-html-input.as
index dd3922a..296c246 100644
--- a/test/trace/text-field-html-input.as
+++ b/test/trace/text-field-html-input.as
@@ -54,7 +54,10 @@ var texts = [
"a<li>b<p>c</p>d</li>e",
"a<p align='right'>b<p align='center'>c",
"a<p>b<u>c</p>d",
- "a<u>b</p>c"
+ "a<u>b</p>c",
+ "a<p>b<li>c</p>d",
+ "a<p>b<textformat indent='10'>c</p>d",
+ "a<p>b<font size='10'>c</p>d"
];
for (var i = 0; i < texts.length; i++) {
commit 8b70e4c40b5f041ef0d51126f413154e071f83a0
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date: Tue Dec 18 17:36:57 2007 +0200
Fix handling of P tags in TextField's HTML input
And once again text-field-html-input test has been expanded
diff --git a/libswfdec/swfdec_text_field_movie_html.c b/libswfdec/swfdec_text_field_movie_html.c
index 6a79930..4f5390b 100644
--- a/libswfdec/swfdec_text_field_movie_html.c
+++ b/libswfdec/swfdec_text_field_movie_html.c
@@ -313,11 +313,33 @@ swfdec_text_field_movie_html_parse_tag (ParserData *data, const char *p)
if (close)
{
- if (data->tags_open != NULL) {
- tag = data->tags_open->data;
- if (name_length == tag->name_length &&
- !g_strncasecmp (name, tag->name, name_length))
- swfdec_text_field_movie_html_parse_close_tag (data, tag, FALSE);
+ if (name_length == 1 && !g_strncasecmp (name, "p", 1)) {
+ GSList *iter, *found;
+
+ found = NULL;
+ iter = data->tags_open;
+ while (iter != NULL) {
+ tag = iter->data;
+ if (tag->name_length == 1 && !g_strncasecmp (tag->name, "p", 1))
+ found = iter;
+ iter = iter->next;
+ }
+
+ if (found != NULL) {
+ while (data->tags_open != found) {
+ tag = data->tags_open->data;
+ swfdec_text_field_movie_html_parse_close_tag (data, tag, TRUE);
+ }
+ swfdec_text_field_movie_html_parse_close_tag (data, found->data,
+ FALSE);
+ }
+ } else {
+ if (data->tags_open != NULL) {
+ tag = data->tags_open->data;
+ if (name_length == tag->name_length &&
+ !g_strncasecmp (name, tag->name, name_length))
+ swfdec_text_field_movie_html_parse_close_tag (data, tag, FALSE);
+ }
}
end = strchr (end, '>');
@@ -341,19 +363,6 @@ swfdec_text_field_movie_html_parse_tag (ParserData *data, const char *p)
data->text->str[data->text->len - 1] != '\r')
data->text = g_string_append_c (data->text, '\n');
}
- else if (name_length == 1 && !g_strncasecmp (name, "p", 1))
- {
- GSList *iter;
-
- for (iter = data->tags_open; iter != NULL; iter = iter->next) {
- ParserTag *f = iter->data;
- if ((f->name_length == 1 && !g_strncasecmp (f->name, "p", 1)) ||
- (f->name_length == 2 && !g_strncasecmp (f->name, "li", 2))) {
- data->text = g_string_append_c (data->text, '\n');
- break;
- }
- }
- }
}
tag = g_new0 (ParserTag, 1);
diff --git a/test/trace/text-field-html-input-5.swf b/test/trace/text-field-html-input-5.swf
index 4ff80f5..6a70b92 100644
Binary files a/test/trace/text-field-html-input-5.swf and b/test/trace/text-field-html-input-5.swf differ
diff --git a/test/trace/text-field-html-input-5.swf.trace b/test/trace/text-field-html-input-5.swf.trace
index 2dfffb5..6299e5c 100644
--- a/test/trace/text-field-html-input-5.swf.trace
+++ b/test/trace/text-field-html-input-5.swf.trace
@@ -230,3 +230,83 @@ a<li>b<li>c</li>d</li>e
15: a<li>b<li>c</li>d</li>e: multiline: 1 condenseWhite: 2
undefined
a<li>b<li>c</li>d</li>e
+16: a<p>b</p>c
<p>d</p>e
+<p>f</p>g<br><p>h</p>i: multiline: 0 condenseWhite: 0
+undefined
+a<p>b</p>c
<p>d</p>e
+<p>f</p>g<br><p>h</p>i
+16: a<p>b</p>c
<p>d</p>e
+<p>f</p>g<br><p>h</p>i: multiline: 1 condenseWhite: 0
+undefined
+a<p>b</p>c
<p>d</p>e
+<p>f</p>g<br><p>h</p>i
+16: a<p>b</p>c
<p>d</p>e
+<p>f</p>g<br><p>h</p>i: multiline: 0 condenseWhite: 2
+undefined
+a<p>b</p>c
<p>d</p>e
+<p>f</p>g<br><p>h</p>i
+16: a<p>b</p>c
<p>d</p>e
+<p>f</p>g<br><p>h</p>i: multiline: 1 condenseWhite: 2
+undefined
+a<p>b</p>c
<p>d</p>e
+<p>f</p>g<br><p>h</p>i
+17: a<p>b<p>c</p>d</p>e: multiline: 0 condenseWhite: 0
+undefined
+a<p>b<p>c</p>d</p>e
+17: a<p>b<p>c</p>d</p>e: multiline: 1 condenseWhite: 0
+undefined
+a<p>b<p>c</p>d</p>e
+17: a<p>b<p>c</p>d</p>e: multiline: 0 condenseWhite: 2
+undefined
+a<p>b<p>c</p>d</p>e
+17: a<p>b<p>c</p>d</p>e: multiline: 1 condenseWhite: 2
+undefined
+a<p>b<p>c</p>d</p>e
+18: a<li>b<p>c</p>d</li>e: multiline: 0 condenseWhite: 0
+undefined
+a<li>b<p>c</p>d</li>e
+18: a<li>b<p>c</p>d</li>e: multiline: 1 condenseWhite: 0
+undefined
+a<li>b<p>c</p>d</li>e
+18: a<li>b<p>c</p>d</li>e: multiline: 0 condenseWhite: 2
+undefined
+a<li>b<p>c</p>d</li>e
+18: a<li>b<p>c</p>d</li>e: multiline: 1 condenseWhite: 2
+undefined
+a<li>b<p>c</p>d</li>e
+19: a<p align='right'>b<p align='center'>c: multiline: 0 condenseWhite: 0
+undefined
+a<p align='right'>b<p align='center'>c
+19: a<p align='right'>b<p align='center'>c: multiline: 1 condenseWhite: 0
+undefined
+a<p align='right'>b<p align='center'>c
+19: a<p align='right'>b<p align='center'>c: multiline: 0 condenseWhite: 2
+undefined
+a<p align='right'>b<p align='center'>c
+19: a<p align='right'>b<p align='center'>c: multiline: 1 condenseWhite: 2
+undefined
+a<p align='right'>b<p align='center'>c
+20: a<p>b<u>c</p>d: multiline: 0 condenseWhite: 0
+undefined
+a<p>b<u>c</p>d
+20: a<p>b<u>c</p>d: multiline: 1 condenseWhite: 0
+undefined
+a<p>b<u>c</p>d
+20: a<p>b<u>c</p>d: multiline: 0 condenseWhite: 2
+undefined
+a<p>b<u>c</p>d
+20: a<p>b<u>c</p>d: multiline: 1 condenseWhite: 2
+undefined
+a<p>b<u>c</p>d
+21: a<u>b</p>c: multiline: 0 condenseWhite: 0
+undefined
+a<u>b</p>c
+21: a<u>b</p>c: multiline: 1 condenseWhite: 0
+undefined
+a<u>b</p>c
+21: a<u>b</p>c: multiline: 0 condenseWhite: 2
+undefined
+a<u>b</p>c
+21: a<u>b</p>c: multiline: 1 condenseWhite: 2
+undefined
+a<u>b</p>c
diff --git a/test/trace/text-field-html-input-6.swf b/test/trace/text-field-html-input-6.swf
index f750f90..a671bec 100644
Binary files a/test/trace/text-field-html-input-6.swf and b/test/trace/text-field-html-input-6.swf differ
diff --git a/test/trace/text-field-html-input-6.swf.trace b/test/trace/text-field-html-input-6.swf.trace
index 8cc60a3..409450a 100644
--- a/test/trace/text-field-html-input-6.swf.trace
+++ b/test/trace/text-field-html-input-6.swf.trace
@@ -524,3 +524,243 @@ a
b
c
d
e
6/d: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
7/
: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
8/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+16: a<p>b</p>c
<p>d</p>e
+<p>f</p>g<br><p>h</p>i: multiline: false condenseWhite: false
+ab
cd
e
f
g
h
i
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">ab</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">c</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">d</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">e</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">f</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">g</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">h</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">i</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+2/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+3/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+4/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+5/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+6/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+7/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+8/f: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+9/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+10/g: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+11/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+12/h: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+13/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+14/i: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+15/: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+16: a<p>b</p>c
<p>d</p>e
+<p>f</p>g<br><p>h</p>i: multiline: true condenseWhite: false
+ab
cd
e
f
g
h
i
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">ab</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">c</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">d</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">e</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">f</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">g</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">h</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">i</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+2/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+3/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+4/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+5/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+6/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+7/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+8/f: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+9/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+10/g: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+11/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+12/h: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+13/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+14/i: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+15/: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+16: a<p>b</p>c
<p>d</p>e
+<p>f</p>g<br><p>h</p>i: multiline: false condenseWhite: true
+ab
c d
e f
g
h
i
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">ab</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">c d</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">e f</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">g</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">h</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">i</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+2/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+3/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+4/ : align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+5/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+6/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+7/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+8/ : align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+9/f: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+10/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+11/g: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+12/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+13/h: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+14/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+15/i: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+16: a<p>b</p>c
<p>d</p>e
+<p>f</p>g<br><p>h</p>i: multiline: true condenseWhite: true
+ab
c d
e f
g
h
i
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">ab</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">c d</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">e f</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">g</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">h</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">i</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+2/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+3/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+4/ : align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+5/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+6/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+7/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+8/ : align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+9/f: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+10/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+11/g: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+12/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+13/h: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+14/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+15/i: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+17: a<p>b<p>c</p>d</p>e: multiline: false condenseWhite: false
+abc
de
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">abc</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">de</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+3/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+4/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+5/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+17: a<p>b<p>c</p>d</p>e: multiline: true condenseWhite: false
+abc
de
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">abc</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">de</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+3/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+4/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+5/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+17: a<p>b<p>c</p>d</p>e: multiline: false condenseWhite: true
+abc
de
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">abc</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">de</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+3/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+4/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+5/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+17: a<p>b<p>c</p>d</p>e: multiline: true condenseWhite: true
+abc
de
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">abc</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">de</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+3/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+4/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+5/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+18: a<li>b<p>c</p>d</li>e: multiline: false condenseWhite: false
+a
bc
d
e
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">bc</FONT></LI><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">d</FONT></LI><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">e</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+1/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+2/b: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+3/c: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+4/
: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+5/d: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+6/
: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+7/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+18: a<li>b<p>c</p>d</li>e: multiline: true condenseWhite: false
+a
bc
d
e
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">bc</FONT></LI><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">d</FONT></LI><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">e</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+1/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+2/b: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+3/c: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+4/
: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+5/d: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+6/
: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+7/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+18: a<li>b<p>c</p>d</li>e: multiline: false condenseWhite: true
+a
bc
d
e
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">bc</FONT></LI><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">d</FONT></LI><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">e</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+1/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+2/b: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+3/c: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+4/
: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+5/d: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+6/
: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+7/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+18: a<li>b<p>c</p>d</li>e: multiline: true condenseWhite: true
+a
bc
d
e
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">bc</FONT></LI><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">d</FONT></LI><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">e</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+1/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+2/b: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+3/c: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+4/
: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+5/d: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+6/
: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+7/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+19: a<p align='right'>b<p align='center'>c: multiline: false condenseWhite: false
+abc
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">abc</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=right blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=center blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+19: a<p align='right'>b<p align='center'>c: multiline: true condenseWhite: false
+abc
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">abc</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=right blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=center blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+19: a<p align='right'>b<p align='center'>c: multiline: false condenseWhite: true
+abc
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">abc</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=right blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=center blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+19: a<p align='right'>b<p align='center'>c: multiline: true condenseWhite: true
+abc
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">abc</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=right blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=center blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+20: a<p>b<u>c</p>d: multiline: false condenseWhite: false
+abc
d
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">ab<U>c</U></FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">d</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=true url=
+3/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+4/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+20: a<p>b<u>c</p>d: multiline: true condenseWhite: false
+abc
d
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">ab<U>c</U></FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">d</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=true url=
+3/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+4/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+20: a<p>b<u>c</p>d: multiline: false condenseWhite: true
+abc
d
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">ab<U>c</U></FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">d</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=true url=
+3/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+4/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+20: a<p>b<u>c</p>d: multiline: true condenseWhite: true
+abc
d
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">ab<U>c</U></FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">d</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=true url=
+3/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+4/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+21: a<u>b</p>c: multiline: false condenseWhite: false
+abc
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a<U>bc</U></FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=true url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=true url=
+21: a<u>b</p>c: multiline: true condenseWhite: false
+abc
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a<U>bc</U></FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=true url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=true url=
+21: a<u>b</p>c: multiline: false condenseWhite: true
+abc
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a<U>bc</U></FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=true url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=true url=
+21: a<u>b</p>c: multiline: true condenseWhite: true
+abc
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a<U>bc</U></FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=true url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=true url=
diff --git a/test/trace/text-field-html-input-7.swf b/test/trace/text-field-html-input-7.swf
index 8b3873e..218e0ec 100644
Binary files a/test/trace/text-field-html-input-7.swf and b/test/trace/text-field-html-input-7.swf differ
diff --git a/test/trace/text-field-html-input-7.swf.trace b/test/trace/text-field-html-input-7.swf.trace
index da158ed..38c779d 100644
--- a/test/trace/text-field-html-input-7.swf.trace
+++ b/test/trace/text-field-html-input-7.swf.trace
@@ -488,3 +488,223 @@ a
b
c
d
e
6/d: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
7/
: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
8/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+16: a<p>b</p>c
<p>d</p>e
+<p>f</p>g<br><p>h</p>i: multiline: false condenseWhite: false
+abcde
fghi
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">abc</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">de</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">fghi</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+3/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+4/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+5/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+6/f: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+7/g: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+8/h: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+9/i: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+10/: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+16: a<p>b</p>c
<p>d</p>e
+<p>f</p>g<br><p>h</p>i: multiline: true condenseWhite: false
+ab
cd
e
f
g
h
i
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">ab</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">c</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">d</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">e</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">f</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">g</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">h</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">i</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+2/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+3/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+4/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+5/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+6/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+7/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+8/f: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+9/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+10/g: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+11/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+12/h: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+13/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+14/i: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+15/: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+16: a<p>b</p>c
<p>d</p>e
+<p>f</p>g<br><p>h</p>i: multiline: false condenseWhite: true
+abc de fghi
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">abc de fghi</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+3/ : align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+4/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+5/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+6/ : align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+7/f: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+8/g: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+9/h: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+10/i: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+16: a<p>b</p>c
<p>d</p>e
+<p>f</p>g<br><p>h</p>i: multiline: true condenseWhite: true
+ab
c d
e f
g
h
i
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">ab</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">c d</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">e f</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">g</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">h</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">i</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+2/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+3/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+4/ : align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+5/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+6/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+7/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+8/ : align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+9/f: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+10/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+11/g: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+12/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+13/h: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+14/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+15/i: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+17: a<p>b<p>c</p>d</p>e: multiline: false condenseWhite: false
+abcde
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">abcde</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+3/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+4/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+17: a<p>b<p>c</p>d</p>e: multiline: true condenseWhite: false
+abc
de
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">abc</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">de</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+3/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+4/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+5/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+17: a<p>b<p>c</p>d</p>e: multiline: false condenseWhite: true
+abcde
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">abcde</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+3/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+4/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+17: a<p>b<p>c</p>d</p>e: multiline: true condenseWhite: true
+abc
de
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">abc</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">de</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+3/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+4/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+5/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+18: a<li>b<p>c</p>d</li>e: multiline: false condenseWhite: false
+abcde
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">abcde</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+3/d: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+4/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+18: a<li>b<p>c</p>d</li>e: multiline: true condenseWhite: false
+a
bc
d
e
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">bc</FONT></LI><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">d</FONT></LI><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">e</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+1/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+2/b: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+3/c: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+4/
: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+5/d: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+6/
: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+7/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+18: a<li>b<p>c</p>d</li>e: multiline: false condenseWhite: true
+abcde
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">abcde</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+3/d: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+4/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+18: a<li>b<p>c</p>d</li>e: multiline: true condenseWhite: true
+a
bc
d
e
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">bc</FONT></LI><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">d</FONT></LI><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">e</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+1/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+2/b: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+3/c: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+4/
: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+5/d: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+6/
: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+7/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+19: a<p align='right'>b<p align='center'>c: multiline: false condenseWhite: false
+abc
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">abc</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=right blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=center blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+19: a<p align='right'>b<p align='center'>c: multiline: true condenseWhite: false
+abc
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">abc</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=right blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=center blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+19: a<p align='right'>b<p align='center'>c: multiline: false condenseWhite: true
+abc
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">abc</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=right blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=center blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+19: a<p align='right'>b<p align='center'>c: multiline: true condenseWhite: true
+abc
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">abc</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=right blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=center blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+20: a<p>b<u>c</p>d: multiline: false condenseWhite: false
+abcd
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">ab<U>c</U>d</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=true url=
+3/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+20: a<p>b<u>c</p>d: multiline: true condenseWhite: false
+abc
d
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">ab<U>c</U></FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">d</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=true url=
+3/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+4/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+20: a<p>b<u>c</p>d: multiline: false condenseWhite: true
+abcd
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">ab<U>c</U>d</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=true url=
+3/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+20: a<p>b<u>c</p>d: multiline: true condenseWhite: true
+abc
d
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">ab<U>c</U></FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">d</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=true url=
+3/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+4/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+21: a<u>b</p>c: multiline: false condenseWhite: false
+abc
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a<U>bc</U></FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=true url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=true url=
+21: a<u>b</p>c: multiline: true condenseWhite: false
+abc
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a<U>bc</U></FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=true url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=true url=
+21: a<u>b</p>c: multiline: false condenseWhite: true
+abc
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a<U>bc</U></FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=true url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=true url=
+21: a<u>b</p>c: multiline: true condenseWhite: true
+abc
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a<U>bc</U></FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=true url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=true url=
diff --git a/test/trace/text-field-html-input-8.swf b/test/trace/text-field-html-input-8.swf
index 167a047..0255924 100644
Binary files a/test/trace/text-field-html-input-8.swf and b/test/trace/text-field-html-input-8.swf differ
diff --git a/test/trace/text-field-html-input-8.swf.trace b/test/trace/text-field-html-input-8.swf.trace
index ba18ed6..2f3d69d 100644
--- a/test/trace/text-field-html-input-8.swf.trace
+++ b/test/trace/text-field-html-input-8.swf.trace
@@ -486,3 +486,223 @@ a
b
c
d
e
6/d: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
7/
: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
8/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+16: a<p>b</p>c
<p>d</p>e
+<p>f</p>g<br><p>h</p>i: multiline: false condenseWhite: false
+abcde
fghi
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">abc</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">de</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">fghi</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+3/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+4/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+5/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+6/f: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+7/g: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+8/h: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+9/i: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+10/: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+16: a<p>b</p>c
<p>d</p>e
+<p>f</p>g<br><p>h</p>i: multiline: true condenseWhite: false
+ab
cd
e
f
g
h
i
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">ab</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">c</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">d</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">e</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">f</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">g</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">h</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">i</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+2/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+3/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+4/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+5/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+6/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+7/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+8/f: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+9/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+10/g: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+11/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+12/h: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+13/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+14/i: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+15/: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+16: a<p>b</p>c
<p>d</p>e
+<p>f</p>g<br><p>h</p>i: multiline: false condenseWhite: true
+abc de fghi
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">abc de fghi</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+3/ : align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+4/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+5/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+6/ : align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+7/f: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+8/g: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+9/h: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+10/i: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+16: a<p>b</p>c
<p>d</p>e
+<p>f</p>g<br><p>h</p>i: multiline: true condenseWhite: true
+ab
c d
e f
g
h
i
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">ab</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">c d</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">e f</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">g</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">h</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">i</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+2/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+3/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+4/ : align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+5/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+6/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+7/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+8/ : align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+9/f: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+10/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+11/g: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+12/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+13/h: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+14/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+15/i: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+17: a<p>b<p>c</p>d</p>e: multiline: false condenseWhite: false
+abcde
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">abcde</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+3/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+4/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+17: a<p>b<p>c</p>d</p>e: multiline: true condenseWhite: false
+abc
de
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">abc</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">de</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+3/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+4/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+5/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+17: a<p>b<p>c</p>d</p>e: multiline: false condenseWhite: true
+abcde
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">abcde</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+3/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+4/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+17: a<p>b<p>c</p>d</p>e: multiline: true condenseWhite: true
+abc
de
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">abc</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">de</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+3/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+4/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+5/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+18: a<li>b<p>c</p>d</li>e: multiline: false condenseWhite: false
+abcde
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">abcde</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+3/d: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+4/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+18: a<li>b<p>c</p>d</li>e: multiline: true condenseWhite: false
+a
bc
d
e
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">bc</FONT></LI><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">d</FONT></LI><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">e</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+1/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+2/b: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+3/c: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+4/
: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+5/d: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+6/
: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+7/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+18: a<li>b<p>c</p>d</li>e: multiline: false condenseWhite: true
+abcde
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">abcde</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+3/d: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+4/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+18: a<li>b<p>c</p>d</li>e: multiline: true condenseWhite: true
+a
bc
d
e
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">bc</FONT></LI><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">d</FONT></LI><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">e</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+1/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+2/b: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+3/c: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+4/
: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+5/d: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+6/
: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+7/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+19: a<p align='right'>b<p align='center'>c: multiline: false condenseWhite: false
+abc
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">abc</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=right blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=center blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+19: a<p align='right'>b<p align='center'>c: multiline: true condenseWhite: false
+abc
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">abc</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=right blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=center blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+19: a<p align='right'>b<p align='center'>c: multiline: false condenseWhite: true
+abc
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">abc</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=right blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=center blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+19: a<p align='right'>b<p align='center'>c: multiline: true condenseWhite: true
+abc
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">abc</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=right blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=center blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+20: a<p>b<u>c</p>d: multiline: false condenseWhite: false
+abcd
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">ab<U>c</U>d</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=true url=
+3/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+20: a<p>b<u>c</p>d: multiline: true condenseWhite: false
+abc
d
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">ab<U>c</U></FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">d</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=true url=
+3/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+4/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+20: a<p>b<u>c</p>d: multiline: false condenseWhite: true
+abcd
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">ab<U>c</U>d</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=true url=
+3/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+20: a<p>b<u>c</p>d: multiline: true condenseWhite: true
+abc
d
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">ab<U>c</U></FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">d</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=true url=
+3/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+4/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+21: a<u>b</p>c: multiline: false condenseWhite: false
+abc
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a<U>bc</U></FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=true url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=true url=
+21: a<u>b</p>c: multiline: true condenseWhite: false
+abc
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a<U>bc</U></FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=true url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=true url=
+21: a<u>b</p>c: multiline: false condenseWhite: true
+abc
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a<U>bc</U></FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=true url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=true url=
+21: a<u>b</p>c: multiline: true condenseWhite: true
+abc
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a<U>bc</U></FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=true url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=true url=
diff --git a/test/trace/text-field-html-input.as b/test/trace/text-field-html-input.as
index aca8418..dd3922a 100644
--- a/test/trace/text-field-html-input.as
+++ b/test/trace/text-field-html-input.as
@@ -48,7 +48,13 @@ var texts = [
"a<font size='1' color='#ff0000'>b<font size='2' color='#00ff00'>c<font color='#0000ff'>d<u>e",
"a<p>b",
"a<li>b</li>c\r<li>d</li>e\n<li>f</li>g<br><li>h</li>i",
- "a<li>b<li>c</li>d</li>e"
+ "a<li>b<li>c</li>d</li>e",
+ "a<p>b</p>c\r<p>d</p>e\n<p>f</p>g<br><p>h</p>i",
+ "a<p>b<p>c</p>d</p>e",
+ "a<li>b<p>c</p>d</li>e",
+ "a<p align='right'>b<p align='center'>c",
+ "a<p>b<u>c</p>d",
+ "a<u>b</p>c"
];
for (var i = 0; i < texts.length; i++) {
commit ed61439601f3c554e500fdf310009eac02c91719
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date: Tue Dec 18 17:11:11 2007 +0200
LI tag in text field's HTML input adds a line break, if there isn't one already
text-field-html-input test expanded once more
diff --git a/libswfdec/swfdec_text_field_movie_html.c b/libswfdec/swfdec_text_field_movie_html.c
index 7fc1187..6a79930 100644
--- a/libswfdec/swfdec_text_field_movie_html.c
+++ b/libswfdec/swfdec_text_field_movie_html.c
@@ -334,9 +334,14 @@ swfdec_text_field_movie_html_parse_tag (ParserData *data, const char *p)
{
data->text = g_string_append_c (data->text, '\n');
}
- else if ((name_length == 1 && !g_strncasecmp (name, "p", 1)) ||
- (name_length == 2 && !g_strncasecmp (name, "li", 2)) ||
- (name_length == 2 && !g_strncasecmp (name, "br", 2)))
+ else if (name_length == 2 && !g_strncasecmp (name, "li", 1))
+ {
+ if (data->text->len > 0 &&
+ data->text->str[data->text->len - 1] != '\n' &&
+ data->text->str[data->text->len - 1] != '\r')
+ data->text = g_string_append_c (data->text, '\n');
+ }
+ else if (name_length == 1 && !g_strncasecmp (name, "p", 1))
{
GSList *iter;
diff --git a/test/trace/text-field-html-input-5.swf b/test/trace/text-field-html-input-5.swf
index 4a8f49b..4ff80f5 100644
Binary files a/test/trace/text-field-html-input-5.swf and b/test/trace/text-field-html-input-5.swf differ
diff --git a/test/trace/text-field-html-input-5.swf.trace b/test/trace/text-field-html-input-5.swf.trace
index e4efa9b..2dfffb5 100644
--- a/test/trace/text-field-html-input-5.swf.trace
+++ b/test/trace/text-field-html-input-5.swf.trace
@@ -198,3 +198,35 @@ a<p>b
13: a<p>b: multiline: 1 condenseWhite: 2
undefined
a<p>b
+14: a<li>b</li>c
<li>d</li>e
+<li>f</li>g<br><li>h</li>i: multiline: 0 condenseWhite: 0
+undefined
+a<li>b</li>c
<li>d</li>e
+<li>f</li>g<br><li>h</li>i
+14: a<li>b</li>c
<li>d</li>e
+<li>f</li>g<br><li>h</li>i: multiline: 1 condenseWhite: 0
+undefined
+a<li>b</li>c
<li>d</li>e
+<li>f</li>g<br><li>h</li>i
+14: a<li>b</li>c
<li>d</li>e
+<li>f</li>g<br><li>h</li>i: multiline: 0 condenseWhite: 2
+undefined
+a<li>b</li>c
<li>d</li>e
+<li>f</li>g<br><li>h</li>i
+14: a<li>b</li>c
<li>d</li>e
+<li>f</li>g<br><li>h</li>i: multiline: 1 condenseWhite: 2
+undefined
+a<li>b</li>c
<li>d</li>e
+<li>f</li>g<br><li>h</li>i
+15: a<li>b<li>c</li>d</li>e: multiline: 0 condenseWhite: 0
+undefined
+a<li>b<li>c</li>d</li>e
+15: a<li>b<li>c</li>d</li>e: multiline: 1 condenseWhite: 0
+undefined
+a<li>b<li>c</li>d</li>e
+15: a<li>b<li>c</li>d</li>e: multiline: 0 condenseWhite: 2
+undefined
+a<li>b<li>c</li>d</li>e
+15: a<li>b<li>c</li>d</li>e: multiline: 1 condenseWhite: 2
+undefined
+a<li>b<li>c</li>d</li>e
diff --git a/test/trace/text-field-html-input-6.swf b/test/trace/text-field-html-input-6.swf
index eba02b9..f750f90 100644
Binary files a/test/trace/text-field-html-input-6.swf and b/test/trace/text-field-html-input-6.swf differ
diff --git a/test/trace/text-field-html-input-6.swf.trace b/test/trace/text-field-html-input-6.swf.trace
index 56af520..8cc60a3 100644
--- a/test/trace/text-field-html-input-6.swf.trace
+++ b/test/trace/text-field-html-input-6.swf.trace
@@ -388,3 +388,139 @@ ab
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">ab</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+14: a<li>b</li>c
<li>d</li>e
+<li>f</li>g<br><li>h</li>i: multiline: false condenseWhite: false
+a
b
cd
e
f
g
h
i
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">b</FONT></LI><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">c</FONT></P><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">d</FONT></LI><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">e</FONT></P><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">f</FONT></LI><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">g</FONT></P><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">h</FONT></LI><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">i</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+1/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+2/b: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+3/
: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+4/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+5/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+6/
: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+7/e: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+8/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+9/f: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+10/
: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+11/g: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+12/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+13/h: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+14/
: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+15/i: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+16/: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+14: a<li>b</li>c
<li>d</li>e
+<li>f</li>g<br><li>h</li>i: multiline: true condenseWhite: false
+a
b
cd
e
f
g
h
i
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">b</FONT></LI><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">c</FONT></P><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">d</FONT></LI><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">e</FONT></P><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">f</FONT></LI><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">g</FONT></P><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">h</FONT></LI><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">i</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+1/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+2/b: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+3/
: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+4/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+5/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+6/
: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+7/e: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+8/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+9/f: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+10/
: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+11/g: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+12/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+13/h: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+14/
: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+15/i: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+16/: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+14: a<li>b</li>c
<li>d</li>e
+<li>f</li>g<br><li>h</li>i: multiline: false condenseWhite: true
+a
b
c
d
e
f
g
h
i
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">b</FONT></LI><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">c </FONT></P><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">d</FONT></LI><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">e </FONT></P><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">f</FONT></LI><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">g</FONT></P><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">h</FONT></LI><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">i</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+1/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+2/b: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+3/
: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+4/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+5/ : align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+6/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+7/d: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+8/
: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+9/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+10/ : align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+11/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+12/f: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+13/
: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+14/g: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+15/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+16/h: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+17/
: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+18/i: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+14: a<li>b</li>c
<li>d</li>e
+<li>f</li>g<br><li>h</li>i: multiline: true condenseWhite: true
+a
b
c
d
e
f
g
h
i
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">b</FONT></LI><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">c </FONT></P><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">d</FONT></LI><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">e </FONT></P><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">f</FONT></LI><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">g</FONT></P><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">h</FONT></LI><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">i</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+1/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+2/b: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+3/
: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+4/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+5/ : align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+6/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+7/d: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+8/
: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+9/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+10/ : align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+11/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+12/f: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+13/
: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+14/g: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+15/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+16/h: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+17/
: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+18/i: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+15: a<li>b<li>c</li>d</li>e: multiline: false condenseWhite: false
+a
b
c
d
e
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">b</FONT></LI><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">c</FONT></LI><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">d</FONT></LI><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">e</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+1/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+2/b: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+3/
: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+4/c: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+5/
: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+6/d: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+7/
: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+8/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+15: a<li>b<li>c</li>d</li>e: multiline: true condenseWhite: false
+a
b
c
d
e
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">b</FONT></LI><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">c</FONT></LI><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">d</FONT></LI><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">e</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+1/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+2/b: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+3/
: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+4/c: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+5/
: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+6/d: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+7/
: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+8/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+15: a<li>b<li>c</li>d</li>e: multiline: false condenseWhite: true
+a
b
c
d
e
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">b</FONT></LI><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">c</FONT></LI><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">d</FONT></LI><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">e</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+1/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+2/b: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+3/
: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+4/c: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+5/
: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+6/d: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+7/
: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+8/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+15: a<li>b<li>c</li>d</li>e: multiline: true condenseWhite: true
+a
b
c
d
e
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">b</FONT></LI><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">c</FONT></LI><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">d</FONT></LI><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">e</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+1/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+2/b: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+3/
: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+4/c: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+5/
: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+6/d: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+7/
: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+8/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
diff --git a/test/trace/text-field-html-input-7.swf b/test/trace/text-field-html-input-7.swf
index d610926..8b3873e 100644
Binary files a/test/trace/text-field-html-input-7.swf and b/test/trace/text-field-html-input-7.swf differ
diff --git a/test/trace/text-field-html-input-7.swf.trace b/test/trace/text-field-html-input-7.swf.trace
index 7a76c85..da158ed 100644
--- a/test/trace/text-field-html-input-7.swf.trace
+++ b/test/trace/text-field-html-input-7.swf.trace
@@ -374,3 +374,117 @@ ab
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">ab</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+14: a<li>b</li>c
<li>d</li>e
+<li>f</li>g<br><li>h</li>i: multiline: false condenseWhite: false
+abcde
fghi
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">abc</FONT></P><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">de</FONT></LI><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">fghi</FONT></LI>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+3/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+4/e: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+5/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+6/f: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+7/g: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+8/h: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+9/i: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+10/: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+14: a<li>b</li>c
<li>d</li>e
+<li>f</li>g<br><li>h</li>i: multiline: true condenseWhite: false
+a
b
cd
e
f
g
h
i
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">b</FONT></LI><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">c</FONT></P><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">d</FONT></LI><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">e</FONT></P><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">f</FONT></LI><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">g</FONT></P><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">h</FONT></LI><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">i</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+1/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+2/b: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+3/
: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+4/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+5/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+6/
: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+7/e: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+8/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+9/f: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+10/
: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+11/g: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+12/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+13/h: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+14/
: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+15/i: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+16/: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+14: a<li>b</li>c
<li>d</li>e
+<li>f</li>g<br><li>h</li>i: multiline: false condenseWhite: true
+abc de fghi
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">abc de fghi</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+3/ : align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+4/d: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+5/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+6/ : align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+7/f: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+8/g: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+9/h: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+10/i: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+14: a<li>b</li>c
<li>d</li>e
+<li>f</li>g<br><li>h</li>i: multiline: true condenseWhite: true
+a
b
c
d
e
f
g
h
i
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">b</FONT></LI><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">c </FONT></P><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">d</FONT></LI><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">e </FONT></P><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">f</FONT></LI><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">g</FONT></P><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">h</FONT></LI><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">i</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+1/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+2/b: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+3/
: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+4/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+5/ : align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+6/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+7/d: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+8/
: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+9/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+10/ : align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+11/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+12/f: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+13/
: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+14/g: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+15/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+16/h: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+17/
: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+18/i: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+15: a<li>b<li>c</li>d</li>e: multiline: false condenseWhite: false
+abcde
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">abcde</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+3/d: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+4/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+15: a<li>b<li>c</li>d</li>e: multiline: true condenseWhite: false
+a
b
c
d
e
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">b</FONT></LI><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">c</FONT></LI><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">d</FONT></LI><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">e</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+1/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+2/b: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+3/
: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+4/c: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+5/
: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+6/d: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+7/
: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+8/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+15: a<li>b<li>c</li>d</li>e: multiline: false condenseWhite: true
+abcde
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">abcde</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+3/d: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+4/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+15: a<li>b<li>c</li>d</li>e: multiline: true condenseWhite: true
+a
b
c
d
e
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">b</FONT></LI><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">c</FONT></LI><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">d</FONT></LI><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">e</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+1/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+2/b: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+3/
: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+4/c: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+5/
: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+6/d: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+7/
: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+8/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
diff --git a/test/trace/text-field-html-input-8.swf b/test/trace/text-field-html-input-8.swf
index 39ac618..167a047 100644
Binary files a/test/trace/text-field-html-input-8.swf and b/test/trace/text-field-html-input-8.swf differ
diff --git a/test/trace/text-field-html-input-8.swf.trace b/test/trace/text-field-html-input-8.swf.trace
index 0778418..ba18ed6 100644
--- a/test/trace/text-field-html-input-8.swf.trace
+++ b/test/trace/text-field-html-input-8.swf.trace
@@ -372,3 +372,117 @@ ab
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">ab</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+14: a<li>b</li>c
<li>d</li>e
+<li>f</li>g<br><li>h</li>i: multiline: false condenseWhite: false
+abcde
fghi
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">abc</FONT></P><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">de</FONT></LI><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">fghi</FONT></LI>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+3/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+4/e: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+5/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+6/f: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+7/g: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+8/h: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+9/i: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+10/: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+14: a<li>b</li>c
<li>d</li>e
+<li>f</li>g<br><li>h</li>i: multiline: true condenseWhite: false
+a
b
cd
e
f
g
h
i
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">b</FONT></LI><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">c</FONT></P><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">d</FONT></LI><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">e</FONT></P><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">f</FONT></LI><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">g</FONT></P><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">h</FONT></LI><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">i</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+1/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+2/b: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+3/
: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+4/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+5/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+6/
: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+7/e: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+8/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+9/f: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+10/
: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+11/g: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+12/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+13/h: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+14/
: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+15/i: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+16/: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+14: a<li>b</li>c
<li>d</li>e
+<li>f</li>g<br><li>h</li>i: multiline: false condenseWhite: true
+abc de fghi
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">abc de fghi</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+3/ : align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+4/d: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+5/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+6/ : align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+7/f: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+8/g: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+9/h: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+10/i: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+14: a<li>b</li>c
<li>d</li>e
+<li>f</li>g<br><li>h</li>i: multiline: true condenseWhite: true
+a
b
c
d
e
f
g
h
i
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">b</FONT></LI><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">c </FONT></P><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">d</FONT></LI><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">e </FONT></P><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">f</FONT></LI><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">g</FONT></P><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">h</FONT></LI><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">i</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+1/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+2/b: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+3/
: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+4/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+5/ : align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+6/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+7/d: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+8/
: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+9/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+10/ : align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+11/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+12/f: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+13/
: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+14/g: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+15/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+16/h: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+17/
: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+18/i: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+15: a<li>b<li>c</li>d</li>e: multiline: false condenseWhite: false
+abcde
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">abcde</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+3/d: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+4/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+15: a<li>b<li>c</li>d</li>e: multiline: true condenseWhite: false
+a
b
c
d
e
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">b</FONT></LI><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">c</FONT></LI><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">d</FONT></LI><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">e</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+1/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+2/b: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+3/
: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+4/c: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+5/
: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+6/d: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+7/
: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+8/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+15: a<li>b<li>c</li>d</li>e: multiline: false condenseWhite: true
+abcde
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">abcde</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+3/d: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+4/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+15: a<li>b<li>c</li>d</li>e: multiline: true condenseWhite: true
+a
b
c
d
e
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">b</FONT></LI><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">c</FONT></LI><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">d</FONT></LI><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">e</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+1/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+2/b: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+3/
: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+4/c: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+5/
: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+6/d: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+7/
: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+8/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
diff --git a/test/trace/text-field-html-input.as b/test/trace/text-field-html-input.as
index 7a5f8c9..aca8418 100644
--- a/test/trace/text-field-html-input.as
+++ b/test/trace/text-field-html-input.as
@@ -46,7 +46,9 @@ var texts = [
"a\r<br>\nb",
"a<u>b<b>c</b>d</u>e",
"a<font size='1' color='#ff0000'>b<font size='2' color='#00ff00'>c<font color='#0000ff'>d<u>e",
- "a<p>b"
+ "a<p>b",
+ "a<li>b</li>c\r<li>d</li>e\n<li>f</li>g<br><li>h</li>i",
+ "a<li>b<li>c</li>d</li>e"
];
for (var i = 0; i < texts.length; i++) {
commit 000dc3a6e89e1ffb379507a63d3fb07d9eb8dc70
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date: Tue Dec 18 16:51:08 2007 +0200
Don't add newline when closing p and li tags at the end of the input
Expanded text-field-html-input test to check for it
diff --git a/libswfdec/swfdec_text_field_movie_html.c b/libswfdec/swfdec_text_field_movie_html.c
index 4d365b7..7fc1187 100644
--- a/libswfdec/swfdec_text_field_movie_html.c
+++ b/libswfdec/swfdec_text_field_movie_html.c
@@ -52,12 +52,13 @@ typedef struct {
} ParserData;
static void
-swfdec_text_field_movie_html_parse_close_tag (ParserData *data, ParserTag *tag)
+swfdec_text_field_movie_html_parse_close_tag (ParserData *data, ParserTag *tag,
+ gboolean end)
{
g_return_if_fail (data != NULL);
g_return_if_fail (tag != NULL);
- if (data->multiline &&
+ if (data->multiline && !end &&
((tag->name_length == 1 && !g_strncasecmp (tag->name, "p", 1)) ||
(tag->name_length == 2 && !g_strncasecmp (tag->name, "li", 2))))
{
@@ -316,7 +317,7 @@ swfdec_text_field_movie_html_parse_tag (ParserData *data, const char *p)
tag = data->tags_open->data;
if (name_length == tag->name_length &&
!g_strncasecmp (name, tag->name, name_length))
- swfdec_text_field_movie_html_parse_close_tag (data, tag);
+ swfdec_text_field_movie_html_parse_close_tag (data, tag, FALSE);
}
end = strchr (end, '>');
@@ -491,7 +492,7 @@ swfdec_text_field_movie_html_parse (SwfdecTextFieldMovie *text, const char *str)
swfdec_text_format_add (text->format_new,
((ParserTag *)data.tags_open->data)->format);
swfdec_text_field_movie_html_parse_close_tag (&data,
- (ParserTag *)data.tags_open->data);
+ (ParserTag *)data.tags_open->data, TRUE);
}
// add parsed styles
diff --git a/test/trace/text-field-html-input-5.swf b/test/trace/text-field-html-input-5.swf
index a7d1c33..4a8f49b 100644
Binary files a/test/trace/text-field-html-input-5.swf and b/test/trace/text-field-html-input-5.swf differ
diff --git a/test/trace/text-field-html-input-5.swf.trace b/test/trace/text-field-html-input-5.swf.trace
index d95938e..e4efa9b 100644
--- a/test/trace/text-field-html-input-5.swf.trace
+++ b/test/trace/text-field-html-input-5.swf.trace
@@ -186,3 +186,15 @@ a<font size='1' color='#ff0000'>b<font size='2' color='#00ff00'>c<font color='#0
12: a<font size='1' color='#ff0000'>b<font size='2' color='#00ff00'>c<font color='#0000ff'>d<u>e: multiline: 1 condenseWhite: 2
undefined
a<font size='1' color='#ff0000'>b<font size='2' color='#00ff00'>c<font color='#0000ff'>d<u>e
+13: a<p>b: multiline: 0 condenseWhite: 0
+undefined
+a<p>b
+13: a<p>b: multiline: 1 condenseWhite: 0
+undefined
+a<p>b
+13: a<p>b: multiline: 0 condenseWhite: 2
+undefined
+a<p>b
+13: a<p>b: multiline: 1 condenseWhite: 2
+undefined
+a<p>b
diff --git a/test/trace/text-field-html-input-6.swf b/test/trace/text-field-html-input-6.swf
index 0872af7..eba02b9 100644
Binary files a/test/trace/text-field-html-input-6.swf and b/test/trace/text-field-html-input-6.swf differ
diff --git a/test/trace/text-field-html-input-6.swf.trace b/test/trace/text-field-html-input-6.swf.trace
index 66cec8f..56af520 100644
--- a/test/trace/text-field-html-input-6.swf.trace
+++ b/test/trace/text-field-html-input-6.swf.trace
@@ -368,3 +368,23 @@ abcde
2/c: align=left blockIndent=0 bold=false bullet=false color=65280 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=2 tabStops= target= underline=false url=
3/d: align=left blockIndent=0 bold=false bullet=false color=255 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=2 tabStops= target= underline=false url=
4/e: align=left blockIndent=0 bold=false bullet=false color=255 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=2 tabStops= target= underline=true url=
+13: a<p>b: multiline: false condenseWhite: false
+ab
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">ab</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+13: a<p>b: multiline: true condenseWhite: false
+ab
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">ab</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+13: a<p>b: multiline: false condenseWhite: true
+ab
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">ab</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+13: a<p>b: multiline: true condenseWhite: true
+ab
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">ab</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
diff --git a/test/trace/text-field-html-input-7.swf b/test/trace/text-field-html-input-7.swf
index 6773c3a..d610926 100644
Binary files a/test/trace/text-field-html-input-7.swf and b/test/trace/text-field-html-input-7.swf differ
diff --git a/test/trace/text-field-html-input-7.swf.trace b/test/trace/text-field-html-input-7.swf.trace
index 9271f59..7a76c85 100644
--- a/test/trace/text-field-html-input-7.swf.trace
+++ b/test/trace/text-field-html-input-7.swf.trace
@@ -354,3 +354,23 @@ abcde
2/c: align=left blockIndent=0 bold=false bullet=false color=65280 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=2 tabStops= target= underline=false url=
3/d: align=left blockIndent=0 bold=false bullet=false color=255 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=2 tabStops= target= underline=false url=
4/e: align=left blockIndent=0 bold=false bullet=false color=255 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=2 tabStops= target= underline=true url=
+13: a<p>b: multiline: false condenseWhite: false
+ab
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">ab</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+13: a<p>b: multiline: true condenseWhite: false
+ab
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">ab</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+13: a<p>b: multiline: false condenseWhite: true
+ab
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">ab</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+13: a<p>b: multiline: true condenseWhite: true
+ab
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">ab</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
diff --git a/test/trace/text-field-html-input-8.swf b/test/trace/text-field-html-input-8.swf
index da7a74b..39ac618 100644
Binary files a/test/trace/text-field-html-input-8.swf and b/test/trace/text-field-html-input-8.swf differ
diff --git a/test/trace/text-field-html-input-8.swf.trace b/test/trace/text-field-html-input-8.swf.trace
index 4802dc8..0778418 100644
--- a/test/trace/text-field-html-input-8.swf.trace
+++ b/test/trace/text-field-html-input-8.swf.trace
@@ -352,3 +352,23 @@ abcde
2/c: align=left blockIndent=0 bold=false bullet=false color=65280 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=2 tabStops= target= underline=false url=
3/d: align=left blockIndent=0 bold=false bullet=false color=255 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=2 tabStops= target= underline=false url=
4/e: align=left blockIndent=0 bold=false bullet=false color=255 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=2 tabStops= target= underline=true url=
+13: a<p>b: multiline: false condenseWhite: false
+ab
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">ab</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+13: a<p>b: multiline: true condenseWhite: false
+ab
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">ab</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+13: a<p>b: multiline: false condenseWhite: true
+ab
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">ab</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+13: a<p>b: multiline: true condenseWhite: true
+ab
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">ab</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
diff --git a/test/trace/text-field-html-input.as b/test/trace/text-field-html-input.as
index 5707d86..7a5f8c9 100644
--- a/test/trace/text-field-html-input.as
+++ b/test/trace/text-field-html-input.as
@@ -1,4 +1,4 @@
-// makeswf -v 7 -r 1 -o test-7.swf test.as
+// makeswf -v 7 -r 1 -o text-field-html-input-7.swf text-field-html-input.as
var properties = [
"align",
@@ -45,7 +45,8 @@ var texts = [
"a<br><li>b</li>c<p>d</p>e<br>",
"a\r<br>\nb",
"a<u>b<b>c</b>d</u>e",
- "a<font size='1' color='#ff0000'>b<font size='2' color='#00ff00'>c<font color='#0000ff'>d<u>e"
+ "a<font size='1' color='#ff0000'>b<font size='2' color='#00ff00'>c<font color='#0000ff'>d<u>e",
+ "a<p>b"
];
for (var i = 0; i < texts.length; i++) {
commit 83158fa7be87b6e0fd3148495d37fba1cea3c62c
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date: Tue Dec 18 16:40:44 2007 +0200
Add tags that are left open in TextField's HTML input to the new text format
Also added a test
diff --git a/libswfdec/swfdec_text_field_movie_html.c b/libswfdec/swfdec_text_field_movie_html.c
index 2c0288c..4d365b7 100644
--- a/libswfdec/swfdec_text_field_movie_html.c
+++ b/libswfdec/swfdec_text_field_movie_html.c
@@ -488,6 +488,8 @@ swfdec_text_field_movie_html_parse (SwfdecTextFieldMovie *text, const char *str)
// close remaining tags
while (data.tags_open != NULL) {
+ swfdec_text_format_add (text->format_new,
+ ((ParserTag *)data.tags_open->data)->format);
swfdec_text_field_movie_html_parse_close_tag (&data,
(ParserTag *)data.tags_open->data);
}
diff --git a/test/trace/Makefile.am b/test/trace/Makefile.am
index 78f3853..948f4ed 100644
--- a/test/trace/Makefile.am
+++ b/test/trace/Makefile.am
@@ -2757,6 +2757,15 @@ EXTRA_DIST = \
text-field-html-input-7.swf.trace \
text-field-html-input-8.swf \
text-field-html-input-8.swf.trace \
+ text-field-html-new-format.as \
+ text-field-html-new-format-5.swf \
+ text-field-html-new-format-5.swf.trace \
+ text-field-html-new-format-6.swf \
+ text-field-html-new-format-6.swf.trace \
+ text-field-html-new-format-7.swf \
+ text-field-html-new-format-7.swf.trace \
+ text-field-html-new-format-8.swf \
+ text-field-html-new-format-8.swf.trace \
text-field-init.as \
text-field-init-5.swf \
text-field-init-5.swf.trace \
diff --git a/test/trace/text-field-html-new-format-5.swf b/test/trace/text-field-html-new-format-5.swf
new file mode 100644
index 0000000..3794edc
Binary files /dev/null and b/test/trace/text-field-html-new-format-5.swf differ
diff --git a/test/trace/text-field-html-new-format-5.swf.trace b/test/trace/text-field-html-new-format-5.swf.trace
new file mode 100644
index 0000000..15c66d8
--- /dev/null
+++ b/test/trace/text-field-html-new-format-5.swf.trace
@@ -0,0 +1,6 @@
+hello<font size='100'>world
+hello<font size='100'>world
+hello<font size='100'>world
+hello<font size='100'>world
+hello<font size='100'>world
+hello<font size='100'>world
diff --git a/test/trace/text-field-html-new-format-6.swf b/test/trace/text-field-html-new-format-6.swf
new file mode 100644
index 0000000..1cacf1b
Binary files /dev/null and b/test/trace/text-field-html-new-format-6.swf differ
diff --git a/test/trace/text-field-html-new-format-6.swf.trace b/test/trace/text-field-html-new-format-6.swf.trace
new file mode 100644
index 0000000..6990cd3
--- /dev/null
+++ b/test/trace/text-field-html-new-format-6.swf.trace
@@ -0,0 +1,6 @@
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">hello<FONT SIZE="100">world</FONT></FONT></P>
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="100" COLOR="#000000" LETTERSPACING="0" KERNING="0">terve</FONT></P>
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">hello<FONT SIZE="100">world</FONT></FONT></P>
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="50" COLOR="#000000" LETTERSPACING="0" KERNING="0">terve</FONT></P>
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">hello<FONT SIZE="100">world</FONT></FONT></P>
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">hello<FONT SIZE="100">world</FONT></FONT></P>
diff --git a/test/trace/text-field-html-new-format-7.swf b/test/trace/text-field-html-new-format-7.swf
new file mode 100644
index 0000000..9568a76
Binary files /dev/null and b/test/trace/text-field-html-new-format-7.swf differ
diff --git a/test/trace/text-field-html-new-format-7.swf.trace b/test/trace/text-field-html-new-format-7.swf.trace
new file mode 100644
index 0000000..6990cd3
--- /dev/null
+++ b/test/trace/text-field-html-new-format-7.swf.trace
@@ -0,0 +1,6 @@
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">hello<FONT SIZE="100">world</FONT></FONT></P>
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="100" COLOR="#000000" LETTERSPACING="0" KERNING="0">terve</FONT></P>
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">hello<FONT SIZE="100">world</FONT></FONT></P>
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="50" COLOR="#000000" LETTERSPACING="0" KERNING="0">terve</FONT></P>
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">hello<FONT SIZE="100">world</FONT></FONT></P>
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">hello<FONT SIZE="100">world</FONT></FONT></P>
diff --git a/test/trace/text-field-html-new-format-8.swf b/test/trace/text-field-html-new-format-8.swf
new file mode 100644
index 0000000..627aae9
Binary files /dev/null and b/test/trace/text-field-html-new-format-8.swf differ
diff --git a/test/trace/text-field-html-new-format-8.swf.trace b/test/trace/text-field-html-new-format-8.swf.trace
new file mode 100644
index 0000000..a5b1f42
--- /dev/null
+++ b/test/trace/text-field-html-new-format-8.swf.trace
@@ -0,0 +1,6 @@
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">hello<FONT SIZE="100">world</FONT></FONT></P>
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="100" COLOR="#000000" LETTERSPACING="0" KERNING="0">terve</FONT></P>
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">hello<FONT SIZE="100">world</FONT></FONT></P>
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="50" COLOR="#000000" LETTERSPACING="0" KERNING="0">terve</FONT></P>
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">hello<FONT SIZE="100">world</FONT></FONT></P>
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="100" COLOR="#000000" LETTERSPACING="0" KERNING="0">helloworld</FONT></P>
diff --git a/test/trace/text-field-html-new-format.as b/test/trace/text-field-html-new-format.as
new file mode 100644
index 0000000..51e26fd
--- /dev/null
+++ b/test/trace/text-field-html-new-format.as
@@ -0,0 +1,41 @@
+// makeswf -v 7 -r 1 -o text-field-html-new-format-7.swf text-field-html-new-format.as
+
+// open tags in HTML input change the new text format of the text field
+
+var fmt = new TextFormat ();
+fmt.size = 50;
+
+
+this.createTextField ("t", 0, 0, 0, 150, 150);
+t.html = true;
+
+t.htmlText = "hello<font size='100'>world";
+trace (t.htmlText);
+
+t.text = "terve";
+trace (t.htmlText);
+
+
+this.createTextField ("t", 0, 0, 0, 150, 150);
+t.html = true;
+
+t.htmlText = "hello<font size='100'>world";
+trace (t.htmlText);
+
+t.setNewTextFormat (fmt);
+t.text = "terve";
+trace (t.htmlText);
+
+
+this.createTextField ("t", 0, 0, 0, 150, 150);
+t.html = true;
+
+t.htmlText = "hello<font size='100'>world";
+trace (t.htmlText);
+
+t.htmlText = "hello<font size='100'>world";
+trace (t.htmlText);
+
+
+loadMovie ("FSCommand:quit", "");
+
commit d4719a883f8d16151e221f1a765d036ce68460f8
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date: Tue Dec 18 16:28:13 2007 +0200
Fix an oops from last commit, improve the test and add v5 version of it
diff --git a/libswfdec/swfdec_text_field_movie_html.c b/libswfdec/swfdec_text_field_movie_html.c
index 2760e5e..2c0288c 100644
--- a/libswfdec/swfdec_text_field_movie_html.c
+++ b/libswfdec/swfdec_text_field_movie_html.c
@@ -419,7 +419,7 @@ swfdec_text_field_movie_html_parse_text (ParserData *data, const char *p)
// condense the space with previous text also, if version >= 8
if (data->condense_white && data->cx->version >= 8) {
- if (data->text->len > 0
+ if (data->text->len > 0 &&
g_ascii_isspace (data->text->str[data->text->len - 1]))
p += strspn (p, " \n\r\t");
}
diff --git a/test/trace/Makefile.am b/test/trace/Makefile.am
index b8231c0..78f3853 100644
--- a/test/trace/Makefile.am
+++ b/test/trace/Makefile.am
@@ -2749,6 +2749,8 @@ EXTRA_DIST = \
text-field-get-text-format-8.swf \
text-field-get-text-format-8.swf.trace \
text-field-html-input.as \
+ text-field-html-input-5.swf \
+ text-field-html-input-5.swf.trace \
text-field-html-input-6.swf \
text-field-html-input-6.swf.trace \
text-field-html-input-7.swf \
diff --git a/test/trace/text-field-html-input-5.swf b/test/trace/text-field-html-input-5.swf
new file mode 100644
index 0000000..a7d1c33
Binary files /dev/null and b/test/trace/text-field-html-input-5.swf differ
diff --git a/test/trace/text-field-html-input-5.swf.trace b/test/trace/text-field-html-input-5.swf.trace
new file mode 100644
index 0000000..d95938e
--- /dev/null
+++ b/test/trace/text-field-html-input-5.swf.trace
@@ -0,0 +1,188 @@
+0: a: multiline: 0 condenseWhite: 0
+undefined
+a
+0: a: multiline: 1 condenseWhite: 0
+undefined
+a
+0: a: multiline: 0 condenseWhite: 2
+undefined
+a
+0: a: multiline: 1 condenseWhite: 2
+undefined
+a
+1: a
b: multiline: 0 condenseWhite: 0
+undefined
+a
b
+1: a
b: multiline: 1 condenseWhite: 0
+undefined
+a
b
+1: a
b: multiline: 0 condenseWhite: 2
+undefined
+a
b
+1: a
b: multiline: 1 condenseWhite: 2
+undefined
+a
b
+2: a
+
b: multiline: 0 condenseWhite: 0
+undefined
+a
+
b
+2: a
+
b: multiline: 1 condenseWhite: 0
+undefined
+a
+
b
+2: a
+
b: multiline: 0 condenseWhite: 2
+undefined
+a
+
b
+2: a
+
b: multiline: 1 condenseWhite: 2
+undefined
+a
+
b
+3: a
b: multiline: 0 condenseWhite: 0
+undefined
+a
b
+3: a
b: multiline: 1 condenseWhite: 0
+undefined
+a
b
+3: a
b: multiline: 0 condenseWhite: 2
+undefined
+a
b
+3: a
b: multiline: 1 condenseWhite: 2
+undefined
+a
b
+4: a
+
+b: multiline: 0 condenseWhite: 0
+undefined
+a
+
+b
+4: a
+
+b: multiline: 1 condenseWhite: 0
+undefined
+a
+
+b
+4: a
+
+b: multiline: 0 condenseWhite: 2
+undefined
+a
+
+b
+4: a
+
+b: multiline: 1 condenseWhite: 2
+undefined
+a
+
+b
+5: a<p align='right'>b</p>c: multiline: 0 condenseWhite: 0
+undefined
+a<p align='right'>b</p>c
+5: a<p align='right'>b</p>c: multiline: 1 condenseWhite: 0
+undefined
+a<p align='right'>b</p>c
+5: a<p align='right'>b</p>c: multiline: 0 condenseWhite: 2
+undefined
+a<p align='right'>b</p>c
+5: a<p align='right'>b</p>c: multiline: 1 condenseWhite: 2
+undefined
+a<p align='right'>b</p>c
+6: a<p align='right'>ä</p>c: multiline: 0 condenseWhite: 0
+undefined
+a<p align='right'>ä</p>c
+6: a<p align='right'>ä</p>c: multiline: 1 condenseWhite: 0
+undefined
+a<p align='right'>ä</p>c
+6: a<p align='right'>ä</p>c: multiline: 0 condenseWhite: 2
+undefined
+a<p align='right'>ä</p>c
+6: a<p align='right'>ä</p>c: multiline: 1 condenseWhite: 2
+undefined
+a<p align='right'>ä</p>c
+7: a<!-- b -->c: multiline: 0 condenseWhite: 0
+undefined
+a<!-- b -->c
+7: a<!-- b -->c: multiline: 1 condenseWhite: 0
+undefined
+a<!-- b -->c
+7: a<!-- b -->c: multiline: 0 condenseWhite: 2
+undefined
+a<!-- b -->c
+7: a<!-- b -->c: multiline: 1 condenseWhite: 2
+undefined
+a<!-- b -->c
+8: a<!--->b: multiline: 0 condenseWhite: 0
+undefined
+a<!--->b
+8: a<!--->b: multiline: 1 condenseWhite: 0
+undefined
+a<!--->b
+8: a<!--->b: multiline: 0 condenseWhite: 2
+undefined
+a<!--->b
+8: a<!--->b: multiline: 1 condenseWhite: 2
+undefined
+a<!--->b
+9: a<br><li>b</li>c<p>d</p>e<br>: multiline: 0 condenseWhite: 0
+undefined
+a<br><li>b</li>c<p>d</p>e<br>
+9: a<br><li>b</li>c<p>d</p>e<br>: multiline: 1 condenseWhite: 0
+undefined
+a<br><li>b</li>c<p>d</p>e<br>
+9: a<br><li>b</li>c<p>d</p>e<br>: multiline: 0 condenseWhite: 2
+undefined
+a<br><li>b</li>c<p>d</p>e<br>
+9: a<br><li>b</li>c<p>d</p>e<br>: multiline: 1 condenseWhite: 2
+undefined
+a<br><li>b</li>c<p>d</p>e<br>
+10: a
<br>
+b: multiline: 0 condenseWhite: 0
+undefined
+a
<br>
+b
+10: a
<br>
+b: multiline: 1 condenseWhite: 0
+undefined
+a
<br>
+b
+10: a
<br>
+b: multiline: 0 condenseWhite: 2
+undefined
+a
<br>
+b
+10: a
<br>
+b: multiline: 1 condenseWhite: 2
+undefined
+a
<br>
+b
+11: a<u>b<b>c</b>d</u>e: multiline: 0 condenseWhite: 0
+undefined
+a<u>b<b>c</b>d</u>e
+11: a<u>b<b>c</b>d</u>e: multiline: 1 condenseWhite: 0
+undefined
+a<u>b<b>c</b>d</u>e
+11: a<u>b<b>c</b>d</u>e: multiline: 0 condenseWhite: 2
+undefined
+a<u>b<b>c</b>d</u>e
+11: a<u>b<b>c</b>d</u>e: multiline: 1 condenseWhite: 2
+undefined
+a<u>b<b>c</b>d</u>e
+12: a<font size='1' color='#ff0000'>b<font size='2' color='#00ff00'>c<font color='#0000ff'>d<u>e: multiline: 0 condenseWhite: 0
+undefined
+a<font size='1' color='#ff0000'>b<font size='2' color='#00ff00'>c<font color='#0000ff'>d<u>e
+12: a<font size='1' color='#ff0000'>b<font size='2' color='#00ff00'>c<font color='#0000ff'>d<u>e: multiline: 1 condenseWhite: 0
+undefined
+a<font size='1' color='#ff0000'>b<font size='2' color='#00ff00'>c<font color='#0000ff'>d<u>e
+12: a<font size='1' color='#ff0000'>b<font size='2' color='#00ff00'>c<font color='#0000ff'>d<u>e: multiline: 0 condenseWhite: 2
+undefined
+a<font size='1' color='#ff0000'>b<font size='2' color='#00ff00'>c<font color='#0000ff'>d<u>e
+12: a<font size='1' color='#ff0000'>b<font size='2' color='#00ff00'>c<font color='#0000ff'>d<u>e: multiline: 1 condenseWhite: 2
+undefined
+a<font size='1' color='#ff0000'>b<font size='2' color='#00ff00'>c<font color='#0000ff'>d<u>e
diff --git a/test/trace/text-field-html-input-6.swf b/test/trace/text-field-html-input-6.swf
index dec0edb..0872af7 100644
Binary files a/test/trace/text-field-html-input-6.swf and b/test/trace/text-field-html-input-6.swf differ
diff --git a/test/trace/text-field-html-input-6.swf.trace b/test/trace/text-field-html-input-6.swf.trace
index f390a79..66cec8f 100644
--- a/test/trace/text-field-html-input-6.swf.trace
+++ b/test/trace/text-field-html-input-6.swf.trace
@@ -1,188 +1,226 @@
-0: multiline: false condenseWhite: false
+0: a: multiline: false condenseWhite: false
a
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
-0: multiline: true condenseWhite: false
+0: a: multiline: true condenseWhite: false
a
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
-0: multiline: false condenseWhite: true
+0: a: multiline: false condenseWhite: true
a
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
-0: multiline: true condenseWhite: true
+0: a: multiline: true condenseWhite: true
a
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
-1: multiline: false condenseWhite: false
+1: a
b: multiline: false condenseWhite: false
ab
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">b</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
2/: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
-1: multiline: true condenseWhite: false
+1: a
b: multiline: true condenseWhite: false
ab
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">b</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
2/: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
-1: multiline: false condenseWhite: true
+1: a
b: multiline: false condenseWhite: true
a b
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a b</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
1/ : align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
2/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
-1: multiline: true condenseWhite: true
+1: a
b: multiline: true condenseWhite: true
a b
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a b</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
1/ : align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
2/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
-2: multiline: false condenseWhite: false
+2: a
+
b: multiline: false condenseWhite: false
a
b
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0"></FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">b</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
1/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
2/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
3/: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
-2: multiline: true condenseWhite: false
+2: a
+
b: multiline: true condenseWhite: false
a
b
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0"></FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">b</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
1/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
2/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
3/: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
-2: multiline: false condenseWhite: true
+2: a
+
b: multiline: false condenseWhite: true
a b
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a b</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
1/ : align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
2/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
-2: multiline: true condenseWhite: true
+2: a
+
b: multiline: true condenseWhite: true
a b
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a b</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
1/ : align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
2/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
-3: multiline: false condenseWhite: false
+3: a
b: multiline: false condenseWhite: false
ab
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0"></FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">b</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
2/: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
3/: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
-3: multiline: true condenseWhite: false
+3: a
b: multiline: true condenseWhite: false
ab
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0"></FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">b</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
2/: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
3/: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
-3: multiline: false condenseWhite: true
+3: a
b: multiline: false condenseWhite: true
a b
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a b</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
1/ : align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
2/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
-3: multiline: true condenseWhite: true
+3: a
b: multiline: true condenseWhite: true
a b
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a b</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
1/ : align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
2/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
-4: multiline: false condenseWhite: false
+4: a
+
+b: multiline: false condenseWhite: false
+a
b
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0"></FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">b</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+1/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+2/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+3/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+4: a
+
+b: multiline: true condenseWhite: false
+a
b
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0"></FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">b</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+1/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+2/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+3/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+4: a
+
+b: multiline: false condenseWhite: true
+a b
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a b</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+1/ : align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+2/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+4: a
+
+b: multiline: true condenseWhite: true
+a b
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a b</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+1/ : align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+2/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+5: a<p align='right'>b</p>c: multiline: false condenseWhite: false
ab
c
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">ab</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">c</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
1/b: align=right blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
2/
: align=right blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
3/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
-4: multiline: true condenseWhite: false
+5: a<p align='right'>b</p>c: multiline: true condenseWhite: false
ab
c
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">ab</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">c</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
1/b: align=right blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
2/
: align=right blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
3/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
-4: multiline: false condenseWhite: true
+5: a<p align='right'>b</p>c: multiline: false condenseWhite: true
ab
c
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">ab</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">c</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
1/b: align=right blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
2/
: align=right blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
3/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
-4: multiline: true condenseWhite: true
+5: a<p align='right'>b</p>c: multiline: true condenseWhite: true
ab
c
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">ab</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">c</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
1/b: align=right blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
2/
: align=right blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
3/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
-5: multiline: false condenseWhite: false
+6: a<p align='right'>ä</p>c: multiline: false condenseWhite: false
aä
c
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">aä</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">c</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
1/ä: align=right blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
2/
: align=right blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
3/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
-5: multiline: true condenseWhite: false
+6: a<p align='right'>ä</p>c: multiline: true condenseWhite: false
aä
c
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">aä</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">c</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
1/ä: align=right blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
2/
: align=right blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
3/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
-5: multiline: false condenseWhite: true
+6: a<p align='right'>ä</p>c: multiline: false condenseWhite: true
aä
c
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">aä</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">c</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
1/ä: align=right blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
2/
: align=right blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
3/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
-5: multiline: true condenseWhite: true
+6: a<p align='right'>ä</p>c: multiline: true condenseWhite: true
aä
c
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">aä</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">c</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
1/ä: align=right blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
2/
: align=right blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
3/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
-6: multiline: false condenseWhite: false
+7: a<!-- b -->c: multiline: false condenseWhite: false
ac
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">ac</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
1/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
-6: multiline: true condenseWhite: false
+7: a<!-- b -->c: multiline: true condenseWhite: false
ac
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">ac</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
1/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
-6: multiline: false condenseWhite: true
+7: a<!-- b -->c: multiline: false condenseWhite: true
ac
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">ac</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
1/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
-6: multiline: true condenseWhite: true
+7: a<!-- b -->c: multiline: true condenseWhite: true
ac
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">ac</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
1/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
-7: multiline: false condenseWhite: false
+8: a<!--->b: multiline: false condenseWhite: false
a
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
-7: multiline: true condenseWhite: false
+8: a<!--->b: multiline: true condenseWhite: false
a
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
-7: multiline: false condenseWhite: true
+8: a<!--->b: multiline: false condenseWhite: true
a
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
-7: multiline: true condenseWhite: true
+8: a<!--->b: multiline: true condenseWhite: true
a
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
-8: multiline: false condenseWhite: false
+9: a<br><li>b</li>c<p>d</p>e<br>: multiline: false condenseWhite: false
a
b
cd
e
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">b</FONT></LI><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">cd</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">e</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
@@ -194,7 +232,7 @@ a
b
cd
e
6/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
7/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
8/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
-8: multiline: true condenseWhite: false
+9: a<br><li>b</li>c<p>d</p>e<br>: multiline: true condenseWhite: false
a
b
cd
e
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">b</FONT></LI><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">cd</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">e</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
@@ -206,7 +244,7 @@ a
b
cd
e
6/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
7/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
8/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
-8: multiline: false condenseWhite: true
+9: a<br><li>b</li>c<p>d</p>e<br>: multiline: false condenseWhite: true
a
b
cd
e
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">b</FONT></LI><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">cd</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">e</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
@@ -218,7 +256,7 @@ a
b
cd
e
6/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
7/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
8/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
-8: multiline: true condenseWhite: true
+9: a<br><li>b</li>c<p>d</p>e<br>: multiline: true condenseWhite: true
a
b
cd
e
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">b</FONT></LI><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">cd</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">e</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
@@ -230,7 +268,8 @@ a
b
cd
e
6/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
7/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
8/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
-9: multiline: false condenseWhite: false
+10: a
<br>
+b: multiline: false condenseWhite: false
a
b
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0"></FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0"></FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">b</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
@@ -238,7 +277,8 @@ a
b
2/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
3/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
4/: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
-9: multiline: true condenseWhite: false
+10: a
<br>
+b: multiline: true condenseWhite: false
a
b
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0"></FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0"></FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">b</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
@@ -246,7 +286,8 @@ a
b
2/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
3/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
4/: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
-9: multiline: false condenseWhite: true
+10: a
<br>
+b: multiline: false condenseWhite: true
a
b
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a </FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0"> b</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
@@ -254,7 +295,8 @@ a
b
2/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
3/ : align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
4/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
-9: multiline: true condenseWhite: true
+10: a
<br>
+b: multiline: true condenseWhite: true
a
b
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a </FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0"> b</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
@@ -262,7 +304,7 @@ a
b
2/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
3/ : align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
4/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
-10: multiline: false condenseWhite: false
+11: a<u>b<b>c</b>d</u>e: multiline: false condenseWhite: false
abcde
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a<U>b</U><B><U>c</U></B><U>d</U>e</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
@@ -270,7 +312,7 @@ abcde
2/c: align=left blockIndent=0 bold=true bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=true url=
3/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=true url=
4/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
-10: multiline: true condenseWhite: false
+11: a<u>b<b>c</b>d</u>e: multiline: true condenseWhite: false
abcde
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a<U>b</U><B><U>c</U></B><U>d</U>e</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
@@ -278,7 +320,7 @@ abcde
2/c: align=left blockIndent=0 bold=true bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=true url=
3/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=true url=
4/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
-10: multiline: false condenseWhite: true
+11: a<u>b<b>c</b>d</u>e: multiline: false condenseWhite: true
abcde
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a<U>b</U><B><U>c</U></B><U>d</U>e</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
@@ -286,7 +328,7 @@ abcde
2/c: align=left blockIndent=0 bold=true bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=true url=
3/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=true url=
4/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
-10: multiline: true condenseWhite: true
+11: a<u>b<b>c</b>d</u>e: multiline: true condenseWhite: true
abcde
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a<U>b</U><B><U>c</U></B><U>d</U>e</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
@@ -294,3 +336,35 @@ abcde
2/c: align=left blockIndent=0 bold=true bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=true url=
3/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=true url=
4/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+12: a<font size='1' color='#ff0000'>b<font size='2' color='#00ff00'>c<font color='#0000ff'>d<u>e: multiline: false condenseWhite: false
+abcde
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a<FONT SIZE="1" COLOR="#FF0000">b<FONT SIZE="2" COLOR="#00FF00">c<FONT COLOR="#0000FF">d<U>e</U></FONT></FONT></FONT></FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=16711680 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=1 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=65280 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=2 tabStops= target= underline=false url=
+3/d: align=left blockIndent=0 bold=false bullet=false color=255 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=2 tabStops= target= underline=false url=
+4/e: align=left blockIndent=0 bold=false bullet=false color=255 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=2 tabStops= target= underline=true url=
+12: a<font size='1' color='#ff0000'>b<font size='2' color='#00ff00'>c<font color='#0000ff'>d<u>e: multiline: true condenseWhite: false
+abcde
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a<FONT SIZE="1" COLOR="#FF0000">b<FONT SIZE="2" COLOR="#00FF00">c<FONT COLOR="#0000FF">d<U>e</U></FONT></FONT></FONT></FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=16711680 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=1 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=65280 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=2 tabStops= target= underline=false url=
+3/d: align=left blockIndent=0 bold=false bullet=false color=255 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=2 tabStops= target= underline=false url=
+4/e: align=left blockIndent=0 bold=false bullet=false color=255 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=2 tabStops= target= underline=true url=
+12: a<font size='1' color='#ff0000'>b<font size='2' color='#00ff00'>c<font color='#0000ff'>d<u>e: multiline: false condenseWhite: true
+abcde
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a<FONT SIZE="1" COLOR="#FF0000">b<FONT SIZE="2" COLOR="#00FF00">c<FONT COLOR="#0000FF">d<U>e</U></FONT></FONT></FONT></FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=16711680 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=1 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=65280 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=2 tabStops= target= underline=false url=
+3/d: align=left blockIndent=0 bold=false bullet=false color=255 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=2 tabStops= target= underline=false url=
+4/e: align=left blockIndent=0 bold=false bullet=false color=255 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=2 tabStops= target= underline=true url=
+12: a<font size='1' color='#ff0000'>b<font size='2' color='#00ff00'>c<font color='#0000ff'>d<u>e: multiline: true condenseWhite: true
+abcde
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a<FONT SIZE="1" COLOR="#FF0000">b<FONT SIZE="2" COLOR="#00FF00">c<FONT COLOR="#0000FF">d<U>e</U></FONT></FONT></FONT></FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=16711680 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=1 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=65280 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=2 tabStops= target= underline=false url=
+3/d: align=left blockIndent=0 bold=false bullet=false color=255 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=2 tabStops= target= underline=false url=
+4/e: align=left blockIndent=0 bold=false bullet=false color=255 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=2 tabStops= target= underline=true url=
diff --git a/test/trace/text-field-html-input-7.swf b/test/trace/text-field-html-input-7.swf
index f1f1493..6773c3a 100644
Binary files a/test/trace/text-field-html-input-7.swf and b/test/trace/text-field-html-input-7.swf differ
diff --git a/test/trace/text-field-html-input-7.swf.trace b/test/trace/text-field-html-input-7.swf.trace
index aad9945..9271f59 100644
--- a/test/trace/text-field-html-input-7.swf.trace
+++ b/test/trace/text-field-html-input-7.swf.trace
@@ -1,184 +1,222 @@
-0: multiline: false condenseWhite: false
+0: a: multiline: false condenseWhite: false
a
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
-0: multiline: true condenseWhite: false
+0: a: multiline: true condenseWhite: false
a
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
-0: multiline: false condenseWhite: true
+0: a: multiline: false condenseWhite: true
a
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
-0: multiline: true condenseWhite: true
+0: a: multiline: true condenseWhite: true
a
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
-1: multiline: false condenseWhite: false
+1: a
b: multiline: false condenseWhite: false
ab
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">b</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
2/: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
-1: multiline: true condenseWhite: false
+1: a
b: multiline: true condenseWhite: false
ab
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">b</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
2/: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
-1: multiline: false condenseWhite: true
+1: a
b: multiline: false condenseWhite: true
a b
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a b</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
1/ : align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
2/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
-1: multiline: true condenseWhite: true
+1: a
b: multiline: true condenseWhite: true
a b
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a b</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
1/ : align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
2/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
-2: multiline: false condenseWhite: false
+2: a
+
b: multiline: false condenseWhite: false
a
b
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0"></FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">b</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
1/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
2/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
3/: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
-2: multiline: true condenseWhite: false
+2: a
+
b: multiline: true condenseWhite: false
a
b
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0"></FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">b</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
1/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
2/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
3/: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
-2: multiline: false condenseWhite: true
+2: a
+
b: multiline: false condenseWhite: true
a b
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a b</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
1/ : align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
2/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
-2: multiline: true condenseWhite: true
+2: a
+
b: multiline: true condenseWhite: true
a b
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a b</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
1/ : align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
2/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
-3: multiline: false condenseWhite: false
+3: a
b: multiline: false condenseWhite: false
ab
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0"></FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">b</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
2/: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
3/: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
-3: multiline: true condenseWhite: false
+3: a
b: multiline: true condenseWhite: false
ab
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0"></FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">b</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
2/: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
3/: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
-3: multiline: false condenseWhite: true
+3: a
b: multiline: false condenseWhite: true
a b
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a b</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
1/ : align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
2/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
-3: multiline: true condenseWhite: true
+3: a
b: multiline: true condenseWhite: true
a b
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a b</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
1/ : align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
2/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
-4: multiline: false condenseWhite: false
+4: a
+
+b: multiline: false condenseWhite: false
+a
b
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0"></FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">b</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+1/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+2/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+3/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+4: a
+
+b: multiline: true condenseWhite: false
+a
b
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0"></FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">b</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+1/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+2/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+3/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+4: a
+
+b: multiline: false condenseWhite: true
+a b
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a b</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+1/ : align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+2/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+4: a
+
+b: multiline: true condenseWhite: true
+a b
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a b</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+1/ : align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+2/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+5: a<p align='right'>b</p>c: multiline: false condenseWhite: false
abc
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">abc</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
1/b: align=right blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
-4: multiline: true condenseWhite: false
+5: a<p align='right'>b</p>c: multiline: true condenseWhite: false
ab
c
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">ab</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">c</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
1/b: align=right blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
2/
: align=right blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
3/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
-4: multiline: false condenseWhite: true
+5: a<p align='right'>b</p>c: multiline: false condenseWhite: true
abc
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">abc</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
1/b: align=right blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
-4: multiline: true condenseWhite: true
+5: a<p align='right'>b</p>c: multiline: true condenseWhite: true
ab
c
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">ab</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">c</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
1/b: align=right blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
2/
: align=right blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
3/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
-5: multiline: false condenseWhite: false
+6: a<p align='right'>ä</p>c: multiline: false condenseWhite: false
aäc
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">aäc</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
1/ä: align=right blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
-5: multiline: true condenseWhite: false
+6: a<p align='right'>ä</p>c: multiline: true condenseWhite: false
aä
c
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">aä</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">c</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
1/ä: align=right blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
2/
: align=right blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
3/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
-5: multiline: false condenseWhite: true
+6: a<p align='right'>ä</p>c: multiline: false condenseWhite: true
aäc
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">aäc</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
1/ä: align=right blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
-5: multiline: true condenseWhite: true
+6: a<p align='right'>ä</p>c: multiline: true condenseWhite: true
aä
c
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">aä</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">c</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
1/ä: align=right blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
2/
: align=right blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
3/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
-6: multiline: false condenseWhite: false
+7: a<!-- b -->c: multiline: false condenseWhite: false
ac
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">ac</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
1/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
-6: multiline: true condenseWhite: false
+7: a<!-- b -->c: multiline: true condenseWhite: false
ac
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">ac</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
1/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
-6: multiline: false condenseWhite: true
+7: a<!-- b -->c: multiline: false condenseWhite: true
ac
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">ac</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
1/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
-6: multiline: true condenseWhite: true
+7: a<!-- b -->c: multiline: true condenseWhite: true
ac
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">ac</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
1/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
-7: multiline: false condenseWhite: false
+8: a<!--->b: multiline: false condenseWhite: false
a
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
-7: multiline: true condenseWhite: false
+8: a<!--->b: multiline: true condenseWhite: false
a
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
-7: multiline: false condenseWhite: true
+8: a<!--->b: multiline: false condenseWhite: true
a
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
-7: multiline: true condenseWhite: true
+8: a<!--->b: multiline: true condenseWhite: true
a
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
-8: multiline: false condenseWhite: false
+9: a<br><li>b</li>c<p>d</p>e<br>: multiline: false condenseWhite: false
abcde
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">abcde</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
@@ -186,7 +224,7 @@ abcde
2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
3/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
4/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
-8: multiline: true condenseWhite: false
+9: a<br><li>b</li>c<p>d</p>e<br>: multiline: true condenseWhite: false
a
b
cd
e
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">b</FONT></LI><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">cd</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">e</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
@@ -198,7 +236,7 @@ a
b
cd
e
6/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
7/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
8/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
-8: multiline: false condenseWhite: true
+9: a<br><li>b</li>c<p>d</p>e<br>: multiline: false condenseWhite: true
abcde
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">abcde</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
@@ -206,7 +244,7 @@ abcde
2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
3/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
4/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
-8: multiline: true condenseWhite: true
+9: a<br><li>b</li>c<p>d</p>e<br>: multiline: true condenseWhite: true
a
b
cd
e
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">b</FONT></LI><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">cd</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">e</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
@@ -218,14 +256,16 @@ a
b
cd
e
6/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
7/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
8/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
-9: multiline: false condenseWhite: false
+10: a
<br>
+b: multiline: false condenseWhite: false
a
b
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0"></FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">b</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
1/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
2/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
3/: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
-9: multiline: true condenseWhite: false
+10: a
<br>
+b: multiline: true condenseWhite: false
a
b
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0"></FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0"></FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">b</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
@@ -233,14 +273,16 @@ a
b
2/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
3/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
4/: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
-9: multiline: false condenseWhite: true
+10: a
<br>
+b: multiline: false condenseWhite: true
a b
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a b</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
1/ : align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
2/ : align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
3/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
-9: multiline: true condenseWhite: true
+10: a
<br>
+b: multiline: true condenseWhite: true
a
b
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a </FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0"> b</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
@@ -248,7 +290,7 @@ a
b
2/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
3/ : align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
4/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
-10: multiline: false condenseWhite: false
+11: a<u>b<b>c</b>d</u>e: multiline: false condenseWhite: false
abcde
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a<U>b</U><B><U>c</U></B><U>d</U>e</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
@@ -256,7 +298,7 @@ abcde
2/c: align=left blockIndent=0 bold=true bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=true url=
3/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=true url=
4/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
-10: multiline: true condenseWhite: false
+11: a<u>b<b>c</b>d</u>e: multiline: true condenseWhite: false
abcde
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a<U>b</U><B><U>c</U></B><U>d</U>e</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
@@ -264,7 +306,7 @@ abcde
2/c: align=left blockIndent=0 bold=true bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=true url=
3/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=true url=
4/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
-10: multiline: false condenseWhite: true
+11: a<u>b<b>c</b>d</u>e: multiline: false condenseWhite: true
abcde
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a<U>b</U><B><U>c</U></B><U>d</U>e</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
@@ -272,7 +314,7 @@ abcde
2/c: align=left blockIndent=0 bold=true bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=true url=
3/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=true url=
4/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
-10: multiline: true condenseWhite: true
+11: a<u>b<b>c</b>d</u>e: multiline: true condenseWhite: true
abcde
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a<U>b</U><B><U>c</U></B><U>d</U>e</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
@@ -280,3 +322,35 @@ abcde
2/c: align=left blockIndent=0 bold=true bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=true url=
3/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=true url=
4/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+12: a<font size='1' color='#ff0000'>b<font size='2' color='#00ff00'>c<font color='#0000ff'>d<u>e: multiline: false condenseWhite: false
+abcde
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a<FONT SIZE="1" COLOR="#FF0000">b<FONT SIZE="2" COLOR="#00FF00">c<FONT COLOR="#0000FF">d<U>e</U></FONT></FONT></FONT></FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=16711680 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=1 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=65280 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=2 tabStops= target= underline=false url=
+3/d: align=left blockIndent=0 bold=false bullet=false color=255 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=2 tabStops= target= underline=false url=
+4/e: align=left blockIndent=0 bold=false bullet=false color=255 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=2 tabStops= target= underline=true url=
+12: a<font size='1' color='#ff0000'>b<font size='2' color='#00ff00'>c<font color='#0000ff'>d<u>e: multiline: true condenseWhite: false
+abcde
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a<FONT SIZE="1" COLOR="#FF0000">b<FONT SIZE="2" COLOR="#00FF00">c<FONT COLOR="#0000FF">d<U>e</U></FONT></FONT></FONT></FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=16711680 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=1 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=65280 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=2 tabStops= target= underline=false url=
+3/d: align=left blockIndent=0 bold=false bullet=false color=255 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=2 tabStops= target= underline=false url=
+4/e: align=left blockIndent=0 bold=false bullet=false color=255 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=2 tabStops= target= underline=true url=
+12: a<font size='1' color='#ff0000'>b<font size='2' color='#00ff00'>c<font color='#0000ff'>d<u>e: multiline: false condenseWhite: true
+abcde
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a<FONT SIZE="1" COLOR="#FF0000">b<FONT SIZE="2" COLOR="#00FF00">c<FONT COLOR="#0000FF">d<U>e</U></FONT></FONT></FONT></FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=16711680 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=1 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=65280 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=2 tabStops= target= underline=false url=
+3/d: align=left blockIndent=0 bold=false bullet=false color=255 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=2 tabStops= target= underline=false url=
+4/e: align=left blockIndent=0 bold=false bullet=false color=255 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=2 tabStops= target= underline=true url=
+12: a<font size='1' color='#ff0000'>b<font size='2' color='#00ff00'>c<font color='#0000ff'>d<u>e: multiline: true condenseWhite: true
+abcde
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a<FONT SIZE="1" COLOR="#FF0000">b<FONT SIZE="2" COLOR="#00FF00">c<FONT COLOR="#0000FF">d<U>e</U></FONT></FONT></FONT></FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=16711680 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=1 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=65280 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=2 tabStops= target= underline=false url=
+3/d: align=left blockIndent=0 bold=false bullet=false color=255 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=2 tabStops= target= underline=false url=
+4/e: align=left blockIndent=0 bold=false bullet=false color=255 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=2 tabStops= target= underline=true url=
diff --git a/test/trace/text-field-html-input-8.swf b/test/trace/text-field-html-input-8.swf
index 50adb0a..da7a74b 100644
Binary files a/test/trace/text-field-html-input-8.swf and b/test/trace/text-field-html-input-8.swf differ
diff --git a/test/trace/text-field-html-input-8.swf.trace b/test/trace/text-field-html-input-8.swf.trace
index d88ca30..4802dc8 100644
--- a/test/trace/text-field-html-input-8.swf.trace
+++ b/test/trace/text-field-html-input-8.swf.trace
@@ -1,184 +1,222 @@
-0: multiline: false condenseWhite: false
+0: a: multiline: false condenseWhite: false
a
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
-0: multiline: true condenseWhite: false
+0: a: multiline: true condenseWhite: false
a
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
-0: multiline: false condenseWhite: true
+0: a: multiline: false condenseWhite: true
a
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
-0: multiline: true condenseWhite: true
+0: a: multiline: true condenseWhite: true
a
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
-1: multiline: false condenseWhite: false
+1: a
b: multiline: false condenseWhite: false
ab
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">b</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
2/: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
-1: multiline: true condenseWhite: false
+1: a
b: multiline: true condenseWhite: false
ab
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">b</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
2/: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
-1: multiline: false condenseWhite: true
+1: a
b: multiline: false condenseWhite: true
a b
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a b</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
1/ : align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
2/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
-1: multiline: true condenseWhite: true
+1: a
b: multiline: true condenseWhite: true
a b
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a b</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
1/ : align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
2/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
-2: multiline: false condenseWhite: false
+2: a
+
b: multiline: false condenseWhite: false
a
b
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0"></FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">b</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
1/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
2/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
3/: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
-2: multiline: true condenseWhite: false
+2: a
+
b: multiline: true condenseWhite: false
a
b
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0"></FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">b</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
1/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
2/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
3/: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
-2: multiline: false condenseWhite: true
+2: a
+
b: multiline: false condenseWhite: true
a b
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a b</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
1/ : align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
2/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
-2: multiline: true condenseWhite: true
+2: a
+
b: multiline: true condenseWhite: true
a b
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a b</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
1/ : align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
2/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
-3: multiline: false condenseWhite: false
+3: a
b: multiline: false condenseWhite: false
ab
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0"></FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">b</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
2/: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
3/: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
-3: multiline: true condenseWhite: false
+3: a
b: multiline: true condenseWhite: false
ab
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0"></FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">b</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
2/: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
3/: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
-3: multiline: false condenseWhite: true
+3: a
b: multiline: false condenseWhite: true
a b
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a b</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
1/ : align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
2/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
-3: multiline: true condenseWhite: true
+3: a
b: multiline: true condenseWhite: true
a b
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a b</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
1/ : align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
2/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
-4: multiline: false condenseWhite: false
+4: a
+
+b: multiline: false condenseWhite: false
+a
b
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0"></FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">b</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+1/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+2/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+3/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+4: a
+
+b: multiline: true condenseWhite: false
+a
b
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0"></FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">b</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+1/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+2/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+3/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+4: a
+
+b: multiline: false condenseWhite: true
+a b
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a b</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+1/ : align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+2/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+4: a
+
+b: multiline: true condenseWhite: true
+a b
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a b</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+1/ : align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+2/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+5: a<p align='right'>b</p>c: multiline: false condenseWhite: false
abc
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">abc</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
1/b: align=right blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
-4: multiline: true condenseWhite: false
+5: a<p align='right'>b</p>c: multiline: true condenseWhite: false
ab
c
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">ab</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">c</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
1/b: align=right blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
2/
: align=right blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
3/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
-4: multiline: false condenseWhite: true
+5: a<p align='right'>b</p>c: multiline: false condenseWhite: true
abc
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">abc</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
1/b: align=right blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
-4: multiline: true condenseWhite: true
+5: a<p align='right'>b</p>c: multiline: true condenseWhite: true
ab
c
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">ab</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">c</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
1/b: align=right blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
2/
: align=right blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
3/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
-5: multiline: false condenseWhite: false
+6: a<p align='right'>ä</p>c: multiline: false condenseWhite: false
aäc
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">aäc</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
1/ä: align=right blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
-5: multiline: true condenseWhite: false
+6: a<p align='right'>ä</p>c: multiline: true condenseWhite: false
aä
c
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">aä</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">c</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
1/ä: align=right blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
2/
: align=right blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
3/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
-5: multiline: false condenseWhite: true
+6: a<p align='right'>ä</p>c: multiline: false condenseWhite: true
aäc
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">aäc</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
1/ä: align=right blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
-5: multiline: true condenseWhite: true
+6: a<p align='right'>ä</p>c: multiline: true condenseWhite: true
aä
c
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">aä</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">c</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
1/ä: align=right blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
2/
: align=right blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
3/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
-6: multiline: false condenseWhite: false
+7: a<!-- b -->c: multiline: false condenseWhite: false
ac
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">ac</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
1/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
-6: multiline: true condenseWhite: false
+7: a<!-- b -->c: multiline: true condenseWhite: false
ac
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">ac</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
1/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
-6: multiline: false condenseWhite: true
+7: a<!-- b -->c: multiline: false condenseWhite: true
ac
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">ac</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
1/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
-6: multiline: true condenseWhite: true
+7: a<!-- b -->c: multiline: true condenseWhite: true
ac
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">ac</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
1/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
-7: multiline: false condenseWhite: false
+8: a<!--->b: multiline: false condenseWhite: false
a
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
-7: multiline: true condenseWhite: false
+8: a<!--->b: multiline: true condenseWhite: false
a
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
-7: multiline: false condenseWhite: true
+8: a<!--->b: multiline: false condenseWhite: true
a
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
-7: multiline: true condenseWhite: true
+8: a<!--->b: multiline: true condenseWhite: true
a
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
-8: multiline: false condenseWhite: false
+9: a<br><li>b</li>c<p>d</p>e<br>: multiline: false condenseWhite: false
abcde
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">abcde</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
@@ -186,7 +224,7 @@ abcde
2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
3/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
4/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
-8: multiline: true condenseWhite: false
+9: a<br><li>b</li>c<p>d</p>e<br>: multiline: true condenseWhite: false
a
b
cd
e
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">b</FONT></LI><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">cd</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">e</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
@@ -198,7 +236,7 @@ a
b
cd
e
6/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
7/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
8/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
-8: multiline: false condenseWhite: true
+9: a<br><li>b</li>c<p>d</p>e<br>: multiline: false condenseWhite: true
abcde
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">abcde</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
@@ -206,7 +244,7 @@ abcde
2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
3/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
4/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
-8: multiline: true condenseWhite: true
+9: a<br><li>b</li>c<p>d</p>e<br>: multiline: true condenseWhite: true
a
b
cd
e
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">b</FONT></LI><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">cd</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">e</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
@@ -218,14 +256,16 @@ a
b
cd
e
6/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
7/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
8/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
-9: multiline: false condenseWhite: false
+10: a
<br>
+b: multiline: false condenseWhite: false
a
b
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0"></FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">b</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
1/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
2/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
3/: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
-9: multiline: true condenseWhite: false
+10: a
<br>
+b: multiline: true condenseWhite: false
a
b
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0"></FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0"></FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">b</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
@@ -233,20 +273,22 @@ a
b
2/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
3/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
4/: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
-9: multiline: false condenseWhite: true
+10: a
<br>
+b: multiline: false condenseWhite: true
a b
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a b</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
1/ : align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
2/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
-9: multiline: true condenseWhite: true
+10: a
<br>
+b: multiline: true condenseWhite: true
a
b
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a </FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">b</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
1/ : align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
2/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
3/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
-10: multiline: false condenseWhite: false
+11: a<u>b<b>c</b>d</u>e: multiline: false condenseWhite: false
abcde
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a<U>b</U><B><U>c</U></B><U>d</U>e</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
@@ -254,7 +296,7 @@ abcde
2/c: align=left blockIndent=0 bold=true bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=true url=
3/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=true url=
4/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
-10: multiline: true condenseWhite: false
+11: a<u>b<b>c</b>d</u>e: multiline: true condenseWhite: false
abcde
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a<U>b</U><B><U>c</U></B><U>d</U>e</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
@@ -262,7 +304,7 @@ abcde
2/c: align=left blockIndent=0 bold=true bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=true url=
3/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=true url=
4/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
-10: multiline: false condenseWhite: true
+11: a<u>b<b>c</b>d</u>e: multiline: false condenseWhite: true
abcde
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a<U>b</U><B><U>c</U></B><U>d</U>e</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
@@ -270,7 +312,7 @@ abcde
2/c: align=left blockIndent=0 bold=true bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=true url=
3/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=true url=
4/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
-10: multiline: true condenseWhite: true
+11: a<u>b<b>c</b>d</u>e: multiline: true condenseWhite: true
abcde
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a<U>b</U><B><U>c</U></B><U>d</U>e</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
@@ -278,3 +320,35 @@ abcde
2/c: align=left blockIndent=0 bold=true bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=true url=
3/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=true url=
4/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+12: a<font size='1' color='#ff0000'>b<font size='2' color='#00ff00'>c<font color='#0000ff'>d<u>e: multiline: false condenseWhite: false
+abcde
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a<FONT SIZE="1" COLOR="#FF0000">b<FONT SIZE="2" COLOR="#00FF00">c<FONT COLOR="#0000FF">d<U>e</U></FONT></FONT></FONT></FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=16711680 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=1 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=65280 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=2 tabStops= target= underline=false url=
+3/d: align=left blockIndent=0 bold=false bullet=false color=255 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=2 tabStops= target= underline=false url=
+4/e: align=left blockIndent=0 bold=false bullet=false color=255 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=2 tabStops= target= underline=true url=
+12: a<font size='1' color='#ff0000'>b<font size='2' color='#00ff00'>c<font color='#0000ff'>d<u>e: multiline: true condenseWhite: false
+abcde
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a<FONT SIZE="1" COLOR="#FF0000">b<FONT SIZE="2" COLOR="#00FF00">c<FONT COLOR="#0000FF">d<U>e</U></FONT></FONT></FONT></FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=16711680 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=1 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=65280 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=2 tabStops= target= underline=false url=
+3/d: align=left blockIndent=0 bold=false bullet=false color=255 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=2 tabStops= target= underline=false url=
+4/e: align=left blockIndent=0 bold=false bullet=false color=255 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=2 tabStops= target= underline=true url=
+12: a<font size='1' color='#ff0000'>b<font size='2' color='#00ff00'>c<font color='#0000ff'>d<u>e: multiline: false condenseWhite: true
+abcde
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a<FONT SIZE="1" COLOR="#FF0000">b<FONT SIZE="2" COLOR="#00FF00">c<FONT COLOR="#0000FF">d<U>e</U></FONT></FONT></FONT></FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=16711680 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=1 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=65280 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=2 tabStops= target= underline=false url=
+3/d: align=left blockIndent=0 bold=false bullet=false color=255 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=2 tabStops= target= underline=false url=
+4/e: align=left blockIndent=0 bold=false bullet=false color=255 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=2 tabStops= target= underline=true url=
+12: a<font size='1' color='#ff0000'>b<font size='2' color='#00ff00'>c<font color='#0000ff'>d<u>e: multiline: true condenseWhite: true
+abcde
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a<FONT SIZE="1" COLOR="#FF0000">b<FONT SIZE="2" COLOR="#00FF00">c<FONT COLOR="#0000FF">d<U>e</U></FONT></FONT></FONT></FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=16711680 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=1 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=65280 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=2 tabStops= target= underline=false url=
+3/d: align=left blockIndent=0 bold=false bullet=false color=255 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=2 tabStops= target= underline=false url=
+4/e: align=left blockIndent=0 bold=false bullet=false color=255 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=2 tabStops= target= underline=true url=
diff --git a/test/trace/text-field-html-input.as b/test/trace/text-field-html-input.as
index 351d896..5707d86 100644
--- a/test/trace/text-field-html-input.as
+++ b/test/trace/text-field-html-input.as
@@ -30,31 +30,33 @@ function format_to_string (fmt) {
return str;
}
-this.createTextField ("t", 1, 0, 0, 200, 200);
-
var texts = [
"a",
"a\rb",
- "a\r\nb",
+ // causes problems in my scritps, when converting from dos to unix newlines
+ //"a\r\nb",
+ "a\n\rb",
"a\r\rb",
+ "a\n\nb",
"a<p align='right'>b</p>c",
"a<p align='right'>ä</p>c",
"a<!-- b -->c",
"a<!--->b",
"a<br><li>b</li>c<p>d</p>e<br>",
"a\r<br>\nb",
- "a<u>b<b>c</b>d</u>e"
+ "a<u>b<b>c</b>d</u>e",
+ "a<font size='1' color='#ff0000'>b<font size='2' color='#00ff00'>c<font color='#0000ff'>d<u>e"
];
-t.html = true;
-
for (var i = 0; i < texts.length; i++) {
for (var j = 0; j <= 3; j++) {
+ this.createTextField ("t", 1, 0, 0, 200, 200);
+ t.html = true;
t.multiline = j & 1;
t.condenseWhite = j & 2;
t.htmlText = texts[i];
- trace (i + ": multiline: " + t.multiline + " condenseWhite: " + t.condenseWhite);
+ trace (i + ": " + texts[i] + ": multiline: " + t.multiline + " condenseWhite: " + t.condenseWhite);
trace (t.text);
trace (t.htmlText);
commit 3b964f38dec65fbb54899f3c39ee4c417f2348cb
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date: Tue Dec 18 13:29:14 2007 +0200
Fix to condenseWhite in version 8 on TextField's HTML input
In version 8 we take into account if the last character of previously added
text was a space. Expanded text-field-html-input test to check this
diff --git a/libswfdec/swfdec_text_field_movie_html.c b/libswfdec/swfdec_text_field_movie_html.c
index 1a007a9..2760e5e 100644
--- a/libswfdec/swfdec_text_field_movie_html.c
+++ b/libswfdec/swfdec_text_field_movie_html.c
@@ -337,7 +337,7 @@ swfdec_text_field_movie_html_parse_tag (ParserData *data, const char *p)
(name_length == 2 && !g_strncasecmp (name, "li", 2)) ||
(name_length == 2 && !g_strncasecmp (name, "br", 2)))
{
- GSList *iter;
+ GSList *iter;
for (iter = data->tags_open; iter != NULL; iter = iter->next) {
ParserTag *f = iter->data;
@@ -417,6 +417,13 @@ swfdec_text_field_movie_html_parse_text (ParserData *data, const char *p)
g_return_val_if_fail (p != NULL, NULL);
g_return_val_if_fail (*p != '\0' && *p != '<', NULL);
+ // condense the space with previous text also, if version >= 8
+ if (data->condense_white && data->cx->version >= 8) {
+ if (data->text->len > 0
+ g_ascii_isspace (data->text->str[data->text->len - 1]))
+ p += strspn (p, " \n\r\t");
+ }
+
// get the text
// if condense_white: all whitespace blocks are converted to a single space
while (*p != '\0' && *p != '<') {
diff --git a/test/trace/text-field-html-input-6.swf b/test/trace/text-field-html-input-6.swf
index c08f64c..dec0edb 100644
Binary files a/test/trace/text-field-html-input-6.swf and b/test/trace/text-field-html-input-6.swf differ
diff --git a/test/trace/text-field-html-input-6.swf.trace b/test/trace/text-field-html-input-6.swf.trace
index 3093e99..f390a79 100644
--- a/test/trace/text-field-html-input-6.swf.trace
+++ b/test/trace/text-field-html-input-6.swf.trace
@@ -230,3 +230,67 @@ a
b
cd
e
6/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
7/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
8/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+9: multiline: false condenseWhite: false
+a
b
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0"></FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0"></FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">b</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+1/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+2/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+3/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+4/: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+9: multiline: true condenseWhite: false
+a
b
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0"></FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0"></FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">b</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+1/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+2/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+3/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+4/: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+9: multiline: false condenseWhite: true
+a
b
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a </FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0"> b</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+1/ : align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+2/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+3/ : align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+4/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+9: multiline: true condenseWhite: true
+a
b
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a </FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0"> b</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+1/ : align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+2/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+3/ : align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+4/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+10: multiline: false condenseWhite: false
+abcde
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a<U>b</U><B><U>c</U></B><U>d</U>e</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=true url=
+2/c: align=left blockIndent=0 bold=true bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=true url=
+3/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=true url=
+4/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+10: multiline: true condenseWhite: false
+abcde
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a<U>b</U><B><U>c</U></B><U>d</U>e</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=true url=
+2/c: align=left blockIndent=0 bold=true bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=true url=
+3/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=true url=
+4/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+10: multiline: false condenseWhite: true
+abcde
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a<U>b</U><B><U>c</U></B><U>d</U>e</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=true url=
+2/c: align=left blockIndent=0 bold=true bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=true url=
+3/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=true url=
+4/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+10: multiline: true condenseWhite: true
+abcde
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a<U>b</U><B><U>c</U></B><U>d</U>e</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=true url=
+2/c: align=left blockIndent=0 bold=true bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=true url=
+3/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=true url=
+4/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
diff --git a/test/trace/text-field-html-input-7.swf b/test/trace/text-field-html-input-7.swf
index 787d500..f1f1493 100644
Binary files a/test/trace/text-field-html-input-7.swf and b/test/trace/text-field-html-input-7.swf differ
diff --git a/test/trace/text-field-html-input-7.swf.trace b/test/trace/text-field-html-input-7.swf.trace
index acd8f59..aad9945 100644
--- a/test/trace/text-field-html-input-7.swf.trace
+++ b/test/trace/text-field-html-input-7.swf.trace
@@ -218,3 +218,65 @@ a
b
cd
e
6/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
7/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
8/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+9: multiline: false condenseWhite: false
+a
b
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0"></FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">b</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+1/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+2/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+3/: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+9: multiline: true condenseWhite: false
+a
b
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0"></FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0"></FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">b</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+1/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+2/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+3/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+4/: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+9: multiline: false condenseWhite: true
+a b
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a b</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+1/ : align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+2/ : align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+3/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+9: multiline: true condenseWhite: true
+a
b
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a </FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0"> b</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+1/ : align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+2/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+3/ : align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+4/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+10: multiline: false condenseWhite: false
+abcde
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a<U>b</U><B><U>c</U></B><U>d</U>e</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=true url=
+2/c: align=left blockIndent=0 bold=true bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=true url=
+3/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=true url=
+4/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+10: multiline: true condenseWhite: false
+abcde
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a<U>b</U><B><U>c</U></B><U>d</U>e</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=true url=
+2/c: align=left blockIndent=0 bold=true bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=true url=
+3/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=true url=
+4/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+10: multiline: false condenseWhite: true
+abcde
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a<U>b</U><B><U>c</U></B><U>d</U>e</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=true url=
+2/c: align=left blockIndent=0 bold=true bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=true url=
+3/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=true url=
+4/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+10: multiline: true condenseWhite: true
+abcde
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a<U>b</U><B><U>c</U></B><U>d</U>e</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=true url=
+2/c: align=left blockIndent=0 bold=true bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=true url=
+3/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=true url=
+4/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
diff --git a/test/trace/text-field-html-input-8.swf b/test/trace/text-field-html-input-8.swf
index dc640a1..50adb0a 100644
Binary files a/test/trace/text-field-html-input-8.swf and b/test/trace/text-field-html-input-8.swf differ
diff --git a/test/trace/text-field-html-input-8.swf.trace b/test/trace/text-field-html-input-8.swf.trace
index 4e97379..d88ca30 100644
--- a/test/trace/text-field-html-input-8.swf.trace
+++ b/test/trace/text-field-html-input-8.swf.trace
@@ -218,3 +218,63 @@ a
b
cd
e
6/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
7/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
8/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+9: multiline: false condenseWhite: false
+a
b
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0"></FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">b</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+1/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+2/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+3/: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+9: multiline: true condenseWhite: false
+a
b
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0"></FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0"></FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">b</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+1/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+2/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+3/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+4/: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+9: multiline: false condenseWhite: true
+a b
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a b</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+1/ : align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+2/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+9: multiline: true condenseWhite: true
+a
b
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a </FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">b</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+1/ : align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+2/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+3/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+10: multiline: false condenseWhite: false
+abcde
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a<U>b</U><B><U>c</U></B><U>d</U>e</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=true url=
+2/c: align=left blockIndent=0 bold=true bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=true url=
+3/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=true url=
+4/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+10: multiline: true condenseWhite: false
+abcde
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a<U>b</U><B><U>c</U></B><U>d</U>e</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=true url=
+2/c: align=left blockIndent=0 bold=true bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=true url=
+3/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=true url=
+4/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+10: multiline: false condenseWhite: true
+abcde
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a<U>b</U><B><U>c</U></B><U>d</U>e</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=true url=
+2/c: align=left blockIndent=0 bold=true bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=true url=
+3/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=true url=
+4/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+10: multiline: true condenseWhite: true
+abcde
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a<U>b</U><B><U>c</U></B><U>d</U>e</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=true url=
+2/c: align=left blockIndent=0 bold=true bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=true url=
+3/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=true url=
+4/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
diff --git a/test/trace/text-field-html-input.as b/test/trace/text-field-html-input.as
index fc0754c..351d896 100644
--- a/test/trace/text-field-html-input.as
+++ b/test/trace/text-field-html-input.as
@@ -41,7 +41,9 @@ var texts = [
"a<p align='right'>ä</p>c",
"a<!-- b -->c",
"a<!--->b",
- "a<br><li>b</li>c<p>d</p>e<br>"
+ "a<br><li>b</li>c<p>d</p>e<br>",
+ "a\r<br>\nb",
+ "a<u>b<b>c</b>d</u>e"
];
t.html = true;
commit f2d57b2aa18d6b5d00764bac34c67f9f603294da
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date: Tue Dec 18 12:20:18 2007 +0200
Add some comments to SwfdecLayout
diff --git a/libswfdec/swfdec_text_field_movie.h b/libswfdec/swfdec_text_field_movie.h
index cec614f..9c3b222 100644
--- a/libswfdec/swfdec_text_field_movie.h
+++ b/libswfdec/swfdec_text_field_movie.h
@@ -39,11 +39,19 @@ typedef struct _SwfdecTextFieldMovieClass SwfdecTextFieldMovieClass;
#define SWFDEC_TEXT_FIELD_MOVIE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SWFDEC_TYPE_TEXT_FIELD_MOVIE, SwfdecTextFieldMovieClass))
typedef struct {
- PangoLayout * layout;
+ PangoLayout * layout; // layout to render
+
+ // the byte offset where this layout's text starts in text->input->str
guint index_;
- int offset_x;
- int height;
+
+ int offset_x; // x offset to apply before rendering
+
+ // dimensions for this layout, including offset_x, might be bigger than the
+ // rendering of PangoLayout needs
int width;
+ int height;
+
+ // whether the layout starts with bullet point to be rendered separately
gboolean bullet;
} SwfdecLayout;
commit 15063b710094aeacea446f9413fcdd1215ffbab9
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date: Tue Dec 18 12:11:10 2007 +0200
Oops. Didn't mean to commit these...
diff --git a/test/trace/text-field-html-input-6.swf b/test/trace/text-field-html-input-6.swf
index bd7311c..c08f64c 100644
Binary files a/test/trace/text-field-html-input-6.swf and b/test/trace/text-field-html-input-6.swf differ
diff --git a/test/trace/text-field-html-input-6.swf.trace b/test/trace/text-field-html-input-6.swf.trace
index 0db4bea..3093e99 100644
--- a/test/trace/text-field-html-input-6.swf.trace
+++ b/test/trace/text-field-html-input-6.swf.trace
@@ -230,35 +230,3 @@ a
b
cd
e
6/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
7/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
8/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
-9: multiline: false condenseWhite: false
-abcde
-<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a<FONT COLOR="#00FF00">b</FONT>c<FONT COLOR="#0000FF">de</FONT></FONT></P>
-0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
-1/b: align=left blockIndent=0 bold=false bullet=false color=65280 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
-2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
-3/d: align=left blockIndent=0 bold=false bullet=false color=255 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
-4/e: align=left blockIndent=0 bold=false bullet=false color=255 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
-9: multiline: true condenseWhite: false
-abcde
-<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a<FONT COLOR="#00FF00">b</FONT>c<FONT COLOR="#0000FF">de</FONT></FONT></P>
-0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
-1/b: align=left blockIndent=0 bold=false bullet=false color=65280 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
-2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
-3/d: align=left blockIndent=0 bold=false bullet=false color=255 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
-4/e: align=left blockIndent=0 bold=false bullet=false color=255 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
-9: multiline: false condenseWhite: true
-abcde
-<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a<FONT COLOR="#00FF00">b</FONT>c<FONT COLOR="#0000FF">de</FONT></FONT></P>
-0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
-1/b: align=left blockIndent=0 bold=false bullet=false color=65280 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
-2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
-3/d: align=left blockIndent=0 bold=false bullet=false color=255 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
-4/e: align=left blockIndent=0 bold=false bullet=false color=255 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
-9: multiline: true condenseWhite: true
-abcde
-<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a<FONT COLOR="#00FF00">b</FONT>c<FONT COLOR="#0000FF">de</FONT></FONT></P>
-0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
-1/b: align=left blockIndent=0 bold=false bullet=false color=65280 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
-2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
-3/d: align=left blockIndent=0 bold=false bullet=false color=255 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
-4/e: align=left blockIndent=0 bold=false bullet=false color=255 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
diff --git a/test/trace/text-field-html-input-7.swf b/test/trace/text-field-html-input-7.swf
index 769dae9..787d500 100644
Binary files a/test/trace/text-field-html-input-7.swf and b/test/trace/text-field-html-input-7.swf differ
diff --git a/test/trace/text-field-html-input-7.swf.trace b/test/trace/text-field-html-input-7.swf.trace
index 6f70af0..acd8f59 100644
--- a/test/trace/text-field-html-input-7.swf.trace
+++ b/test/trace/text-field-html-input-7.swf.trace
@@ -218,35 +218,3 @@ a
b
cd
e
6/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
7/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
8/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
-9: multiline: false condenseWhite: false
-abcde
-<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a<FONT COLOR="#00FF00">b</FONT>c<FONT COLOR="#0000FF">de</FONT></FONT></P>
-0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
-1/b: align=left blockIndent=0 bold=false bullet=false color=65280 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
-2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
-3/d: align=left blockIndent=0 bold=false bullet=false color=255 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
-4/e: align=left blockIndent=0 bold=false bullet=false color=255 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
-9: multiline: true condenseWhite: false
-abcde
-<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a<FONT COLOR="#00FF00">b</FONT>c<FONT COLOR="#0000FF">de</FONT></FONT></P>
-0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
-1/b: align=left blockIndent=0 bold=false bullet=false color=65280 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
-2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
-3/d: align=left blockIndent=0 bold=false bullet=false color=255 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
-4/e: align=left blockIndent=0 bold=false bullet=false color=255 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
-9: multiline: false condenseWhite: true
-abcde
-<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a<FONT COLOR="#00FF00">b</FONT>c<FONT COLOR="#0000FF">de</FONT></FONT></P>
-0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
-1/b: align=left blockIndent=0 bold=false bullet=false color=65280 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
-2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
-3/d: align=left blockIndent=0 bold=false bullet=false color=255 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
-4/e: align=left blockIndent=0 bold=false bullet=false color=255 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
-9: multiline: true condenseWhite: true
-abcde
-<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a<FONT COLOR="#00FF00">b</FONT>c<FONT COLOR="#0000FF">de</FONT></FONT></P>
-0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
-1/b: align=left blockIndent=0 bold=false bullet=false color=65280 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
-2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
-3/d: align=left blockIndent=0 bold=false bullet=false color=255 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
-4/e: align=left blockIndent=0 bold=false bullet=false color=255 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
diff --git a/test/trace/text-field-html-input-8.swf b/test/trace/text-field-html-input-8.swf
index 986cd75..dc640a1 100644
Binary files a/test/trace/text-field-html-input-8.swf and b/test/trace/text-field-html-input-8.swf differ
diff --git a/test/trace/text-field-html-input-8.swf.trace b/test/trace/text-field-html-input-8.swf.trace
index 0c498d3..4e97379 100644
--- a/test/trace/text-field-html-input-8.swf.trace
+++ b/test/trace/text-field-html-input-8.swf.trace
@@ -218,35 +218,3 @@ a
b
cd
e
6/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
7/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
8/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
-9: multiline: false condenseWhite: false
-abcde
-<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a<FONT COLOR="#00FF00">b</FONT>c<FONT COLOR="#0000FF">de</FONT></FONT></P>
-0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
-1/b: align=left blockIndent=0 bold=false bullet=false color=65280 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
-2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
-3/d: align=left blockIndent=0 bold=false bullet=false color=255 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
-4/e: align=left blockIndent=0 bold=false bullet=false color=255 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
-9: multiline: true condenseWhite: false
-abcde
-<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#0000FF" LETTERSPACING="0" KERNING="0">a<FONT COLOR="#00FF00">b</FONT>cde</FONT></P>
-0/a: align=left blockIndent=0 bold=false bullet=false color=255 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
-1/b: align=left blockIndent=0 bold=false bullet=false color=65280 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
-2/c: align=left blockIndent=0 bold=false bullet=false color=255 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
-3/d: align=left blockIndent=0 bold=false bullet=false color=255 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
-4/e: align=left blockIndent=0 bold=false bullet=false color=255 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
-9: multiline: false condenseWhite: true
-abcde
-<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#0000FF" LETTERSPACING="0" KERNING="0">a<FONT COLOR="#00FF00">b</FONT>cde</FONT></P>
-0/a: align=left blockIndent=0 bold=false bullet=false color=255 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
-1/b: align=left blockIndent=0 bold=false bullet=false color=65280 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
-2/c: align=left blockIndent=0 bold=false bullet=false color=255 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
-3/d: align=left blockIndent=0 bold=false bullet=false color=255 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
-4/e: align=left blockIndent=0 bold=false bullet=false color=255 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
-9: multiline: true condenseWhite: true
-abcde
-<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#0000FF" LETTERSPACING="0" KERNING="0">a<FONT COLOR="#00FF00">b</FONT>cde</FONT></P>
-0/a: align=left blockIndent=0 bold=false bullet=false color=255 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
-1/b: align=left blockIndent=0 bold=false bullet=false color=65280 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
-2/c: align=left blockIndent=0 bold=false bullet=false color=255 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
-3/d: align=left blockIndent=0 bold=false bullet=false color=255 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
-4/e: align=left blockIndent=0 bold=false bullet=false color=255 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
diff --git a/test/trace/text-field-html-input.as b/test/trace/text-field-html-input.as
index 0c61afb..fc0754c 100644
--- a/test/trace/text-field-html-input.as
+++ b/test/trace/text-field-html-input.as
@@ -41,8 +41,7 @@ var texts = [
"a<p align='right'>ä</p>c",
"a<!-- b -->c",
"a<!--->b",
- "a<br><li>b</li>c<p>d</p>e<br>",
- 'a<font color="#00ff00">b</font>c<font color="#0000ff">d<font>e'
+ "a<br><li>b</li>c<p>d</p>e<br>"
];
t.html = true;
commit aa15a8e4353e63dc6b44fae5c67605f23ae0dad4
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date: Tue Dec 18 11:19:15 2007 +0200
Use shape attributes for paragraph ending newline characters in text fields
diff --git a/libswfdec/swfdec_text_field_movie.c b/libswfdec/swfdec_text_field_movie.c
index e368b88..fdbe9a3 100644
--- a/libswfdec/swfdec_text_field_movie.c
+++ b/libswfdec/swfdec_text_field_movie.c
@@ -444,25 +444,6 @@ swfdec_text_field_movie_paragraph_get_attr_list (
return attr_list;
}
-static int
-swfdec_text_field_movie_layout_get_last_line_baseline (PangoLayout *playout)
-{
- int baseline;
- PangoLayoutIter *iter;
-
- g_return_val_if_fail (playout != NULL, 0);
-
- iter = pango_layout_get_iter (playout);
- while (!pango_layout_iter_at_last_line (iter))
- pango_layout_iter_next_line (iter);
-
- baseline = pango_layout_iter_get_baseline (iter) / PANGO_SCALE;
-
- pango_layout_iter_free (iter);
-
- return baseline;
-}
-
static void
swfdec_text_field_movie_attr_list_get_ascent_descent (PangoAttrList *attr_list,
guint pos, int *ascent, int *descent)
@@ -543,7 +524,6 @@ swfdec_text_field_movie_get_layouts (SwfdecTextFieldMovie *text, int *num,
SwfdecBlock *block;
int width;
guint length;
- gboolean end_of_paragraph;
block = (SwfdecBlock *)iter->data;
if (iter->next != NULL) {
@@ -639,19 +619,39 @@ swfdec_text_field_movie_get_layouts (SwfdecTextFieldMovie *text, int *num,
pango_attr_list_insert (attr_list, attr_bg);
}
+ // add shape for newline character at the end
+ if (paragraphs[i].newline) {
+ int ascent, descent;
+ PangoRectangle rect;
+ PangoAttribute *attr;
+
+ swfdec_text_field_movie_attr_list_get_ascent_descent (attr_list,
+ paragraphs[i].length - block->index_ - skip, &ascent, &descent);
+
+ rect.x = 0;
+ rect.width = 0;
+ rect.y = -descent;
+ rect.height = ascent;
+
+ attr = pango_attr_shape_new (&rect, &rect);
+
+ attr->end_index = paragraphs[i].length - block->index_ - skip;
+ attr->start_index = attr->end_index - 1;
+
+ pango_attr_list_insert (attr_list, attr);
+ }
+
pango_layout_set_attributes (playout, attr_list);
if (text->text->password) {
pango_layout_set_text (playout, text->asterisks, paragraphs[i].length -
- block->index_ - skip - (paragraphs[i].newline ? 1 : 0));
+ block->index_ - skip);
} else {
pango_layout_set_text (playout,
text->input->str + paragraphs[i].index_ + block->index_ + skip,
- paragraphs[i].length - block->index_ - skip -
- (paragraphs[i].newline ? 1 : 0));
+ paragraphs[i].length - block->index_ - skip);
}
- end_of_paragraph = TRUE;
if (iter->next != NULL && text->text->word_wrap)
{
PangoLayoutLine *line;
@@ -661,7 +661,6 @@ swfdec_text_field_movie_get_layouts (SwfdecTextFieldMovie *text, int *num,
pango_layout_index_to_line_x (playout, length - skip, FALSE, &line_num,
NULL);
if (line_num < pango_layout_get_line_count (playout) - 1) {
- end_of_paragraph = FALSE;
line = pango_layout_get_line_readonly (playout, line_num);
skip_new = line->start_index + line->length - (length - skip);
pango_layout_set_text (playout,
@@ -691,24 +690,6 @@ swfdec_text_field_movie_get_layouts (SwfdecTextFieldMovie *text, int *num,
pango_layout_get_pixel_size (playout, &layout.width, &layout.height);
layout.width += layout.offset_x + block->right_margin;
- layout.last_line_offset_y = 0;
-
- // figure out if we need to add extra height because of the size of the
- // line break character
- if (end_of_paragraph && paragraphs[i].newline)
- {
- int ascent, descent;
-
- swfdec_text_field_movie_attr_list_get_ascent_descent (attr_list,
- paragraphs[i].length - block->index_ - skip, &ascent, &descent);
-
- if (ascent + descent > layout.height) {
- int baseline =
- swfdec_text_field_movie_layout_get_last_line_baseline (playout);
- layout.last_line_offset_y = ascent - baseline;
- layout.height = ascent + descent;
- }
- }
pango_attr_list_unref (attr_list);
@@ -951,8 +932,6 @@ swfdec_text_field_movie_render (SwfdecMovie *movie, cairo_t *cr,
continue;
cairo_move_to (cr, x, y);
- if (pango_layout_iter_at_last_line (iter_line))
- cairo_rel_move_to (cr, 0, layout->last_line_offset_y);
cairo_rel_move_to (cr, layout->offset_x + rect.x,
pango_layout_iter_get_baseline (iter_line) / PANGO_SCALE - skipped);
diff --git a/libswfdec/swfdec_text_field_movie.h b/libswfdec/swfdec_text_field_movie.h
index ae47fc2..cec614f 100644
--- a/libswfdec/swfdec_text_field_movie.h
+++ b/libswfdec/swfdec_text_field_movie.h
@@ -42,7 +42,6 @@ typedef struct {
PangoLayout * layout;
guint index_;
int offset_x;
- int last_line_offset_y;
int height;
int width;
gboolean bullet;
commit d98e4010cc5677051f23de5fd5728124e9fea284
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date: Tue Dec 18 10:51:22 2007 +0200
Clean up swfdec_text_field_movie_line_position function's code
diff --git a/libswfdec/swfdec_text_field_movie.c b/libswfdec/swfdec_text_field_movie.c
index 053affd..e368b88 100644
--- a/libswfdec/swfdec_text_field_movie.c
+++ b/libswfdec/swfdec_text_field_movie.c
@@ -749,12 +749,10 @@ swfdec_text_field_movie_free_layouts (SwfdecLayout *layouts)
}
static void
-swfdec_text_field_movie_line_position (SwfdecTextFieldMovie *text,
- SwfdecLayout *layouts_, int line_num, int *pixels, int *layout_num,
- int *line_in_layout)
+swfdec_text_field_movie_line_position (SwfdecLayout *layouts, int line_num,
+ int *pixels, int *layout_num, int *line_in_layout)
{
- SwfdecLayout *layouts;
- int linenum, i;
+ int current, i;
if (pixels != NULL)
*pixels = 0;
@@ -765,52 +763,49 @@ swfdec_text_field_movie_line_position (SwfdecTextFieldMovie *text,
if (line_in_layout != NULL)
*line_in_layout = 0;
- g_return_if_fail (SWFDEC_IS_TEXT_FIELD_MOVIE (text));
+ g_return_if_fail (layouts != NULL);
- if (layouts_ != NULL) {
- layouts = layouts_;
- } else {
- layouts =
- swfdec_text_field_movie_get_layouts (text, NULL, NULL, NULL, NULL);
+ current = 0;
+ for (i = 0; layouts[i].layout != NULL && current < line_num; i++) {
+ current += pango_layout_get_line_count (layouts[i].layout);
+
+ if (pixels != NULL)
+ *pixels += layouts[i].height;
}
- linenum = 0;
- for (i = 0; layouts[i].layout != NULL && linenum < line_num; i++)
- {
+ if (current > line_num) {
PangoLayoutIter *iter_line;
- int layout_lines;
+
+ i--;
+ current -= pango_layout_get_line_count (layouts[i].layout);
+
+ if (pixels != NULL)
+ *pixels -= layouts[i].height;
iter_line = pango_layout_get_iter (layouts[i].layout);
- layout_lines = 0;
- do {
- if (++linenum >= line_num) {
- if (pixels != NULL) {
- PangoRectangle rect;
+ while (++current < line_num) {
+ g_assert (!pango_layout_iter_at_last_line (iter_line));
+ pango_layout_iter_next_line (iter_line);
- pango_layout_iter_get_line_extents (iter_line, NULL, &rect);
- pango_extents_to_pixels (NULL, &rect);
+ if (line_in_layout != NULL)
+ (*line_in_layout)++;
+ }
- *pixels += rect.y;
- }
- if (line_in_layout != NULL)
- *line_in_layout = layout_lines;
- break;
- }
- layout_lines++;
- } while (pango_layout_iter_next_line (iter_line));
+ if (pixels != NULL) {
+ PangoRectangle rect;
- if (linenum < line_num && pixels != NULL)
- *pixels += layouts[i].height;
+ pango_layout_iter_get_line_extents (iter_line, NULL, &rect);
+ pango_extents_to_pixels (NULL, &rect);
+
+ *pixels += rect.y;
+ }
pango_layout_iter_free (iter_line);
}
if (layout_num != NULL)
*layout_num = i;
-
- if (layouts_ == NULL)
- swfdec_text_field_movie_free_layouts (layouts);
}
static void
@@ -880,7 +875,7 @@ swfdec_text_field_movie_render (SwfdecMovie *movie, cairo_t *cr,
MIN (text_movie->hscroll, text_movie->hscroll_max);
y = movie->original_extents.y0 + EXTRA_MARGIN;
- swfdec_text_field_movie_line_position (text_movie, layouts,
+ swfdec_text_field_movie_line_position (layouts,
MIN (text_movie->scroll, text_movie->scroll_max), &pixels, &i, &skip);
y += pixels;
@@ -1381,7 +1376,7 @@ swfdec_text_field_movie_xy_to_index (SwfdecTextFieldMovie *text, double x,
layout_x = x;
// take scrolling into account
- swfdec_text_field_movie_line_position (text, layouts,
+ swfdec_text_field_movie_line_position (layouts,
MIN (text->scroll, text->scroll_max), &pixels, NULL, NULL);
layout_y += pixels;
layout_x += MIN (text->hscroll, text->hscroll_max);
commit ddcaf0c7bcfd837c4302096f364fc0b113fa0082
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date: Tue Dec 18 10:30:30 2007 +0200
Use the new swfdec_text_field_movie_line_position in render function also
diff --git a/libswfdec/swfdec_text_field_movie.c b/libswfdec/swfdec_text_field_movie.c
index 183011f..053affd 100644
--- a/libswfdec/swfdec_text_field_movie.c
+++ b/libswfdec/swfdec_text_field_movie.c
@@ -749,6 +749,71 @@ swfdec_text_field_movie_free_layouts (SwfdecLayout *layouts)
}
static void
+swfdec_text_field_movie_line_position (SwfdecTextFieldMovie *text,
+ SwfdecLayout *layouts_, int line_num, int *pixels, int *layout_num,
+ int *line_in_layout)
+{
+ SwfdecLayout *layouts;
+ int linenum, i;
+
+ if (pixels != NULL)
+ *pixels = 0;
+
+ if (layout_num != NULL)
+ *layout_num = 0;
+
+ if (line_in_layout != NULL)
+ *line_in_layout = 0;
+
+ g_return_if_fail (SWFDEC_IS_TEXT_FIELD_MOVIE (text));
+
+ if (layouts_ != NULL) {
+ layouts = layouts_;
+ } else {
+ layouts =
+ swfdec_text_field_movie_get_layouts (text, NULL, NULL, NULL, NULL);
+ }
+
+ linenum = 0;
+ for (i = 0; layouts[i].layout != NULL && linenum < line_num; i++)
+ {
+ PangoLayoutIter *iter_line;
+ int layout_lines;
+
+ iter_line = pango_layout_get_iter (layouts[i].layout);
+
+ layout_lines = 0;
+ do {
+ if (++linenum >= line_num) {
+ if (pixels != NULL) {
+ PangoRectangle rect;
+
+ pango_layout_iter_get_line_extents (iter_line, NULL, &rect);
+ pango_extents_to_pixels (NULL, &rect);
+
+ *pixels += rect.y;
+ }
+ if (line_in_layout != NULL)
+ *line_in_layout = layout_lines;
+ break;
+ }
+ layout_lines++;
+ } while (pango_layout_iter_next_line (iter_line));
+
+ if (linenum < line_num && pixels != NULL)
+ *pixels += layouts[i].height;
+
+ pango_layout_iter_free (iter_line);
+ }
+
+ if (layout_num != NULL)
+ *layout_num = i;
+
+ if (layouts_ == NULL)
+ swfdec_text_field_movie_free_layouts (layouts);
+}
+
+static void
swfdec_text_field_movie_render (SwfdecMovie *movie, cairo_t *cr,
const SwfdecColorTransform *trans, const SwfdecRect *inval)
{
@@ -758,7 +823,7 @@ swfdec_text_field_movie_render (SwfdecMovie *movie, cairo_t *cr,
SwfdecRect limit;
SwfdecColor color;
SwfdecParagraph *paragraphs;
- int i, y, x, linenum;
+ int i, y, x, pixels, skip;
gboolean first;
g_return_if_fail (SWFDEC_IS_TEXT_FIELD_MOVIE (movie));
@@ -811,12 +876,15 @@ swfdec_text_field_movie_render (SwfdecMovie *movie, cairo_t *cr,
paragraphs, trans);
first = TRUE;
- linenum = 0;
x = movie->original_extents.x0 + EXTRA_MARGIN +
MIN (text_movie->hscroll, text_movie->hscroll_max);
y = movie->original_extents.y0 + EXTRA_MARGIN;
- for (i = 0; layouts[i].layout != NULL && y < limit.y1; i++)
+ swfdec_text_field_movie_line_position (text_movie, layouts,
+ MIN (text_movie->scroll, text_movie->scroll_max), &pixels, &i, &skip);
+ y += pixels;
+
+ for (; layouts[i].layout != NULL && y < limit.y1; i++)
{
SwfdecLayout *layout = &layouts[i];
PangoLayoutIter *iter_line;
@@ -826,8 +894,7 @@ swfdec_text_field_movie_render (SwfdecMovie *movie, cairo_t *cr,
iter_line = pango_layout_get_iter (layout->layout);
- if (layout->bullet && linenum + 1 >=
- MIN (text_movie->scroll, text_movie->scroll_max)) {
+ if (layout->bullet && skip == 0) {
PangoColor color_p;
PangoAttribute *attr;
PangoAttrIterator *attr_iter;
@@ -856,16 +923,24 @@ swfdec_text_field_movie_render (SwfdecMovie *movie, cairo_t *cr,
cairo_fill (cr);
}
- skipped = 0;
- do {
- if (++linenum < MIN (text_movie->scroll, text_movie->scroll_max))
- continue;
+ if (skip > 0) {
+ for (skipped = 0; skipped < skip; skipped++) {
+ g_assert (!pango_layout_iter_at_last_line (iter_line));
+ pango_layout_iter_next_line (iter_line);
+ }
pango_layout_iter_get_line_extents (iter_line, NULL, &rect);
pango_extents_to_pixels (NULL, &rect);
- if (linenum == MIN (text_movie->scroll, text_movie->scroll_max))
- skipped = rect.y;
+ skipped = rect.y;
+ skip = 0;
+ } else {
+ skipped = 0;
+ }
+
+ do {
+ pango_layout_iter_get_line_extents (iter_line, NULL, &rect);
+ pango_extents_to_pixels (NULL, &rect);
if (!first && y + rect.y + rect.height > movie->original_extents.y1)
break;
@@ -881,7 +956,6 @@ swfdec_text_field_movie_render (SwfdecMovie *movie, cairo_t *cr,
continue;
cairo_move_to (cr, x, y);
-
if (pango_layout_iter_at_last_line (iter_line))
cairo_rel_move_to (cr, 0, layout->last_line_offset_y);
cairo_rel_move_to (cr, layout->offset_x + rect.x,
@@ -891,10 +965,7 @@ swfdec_text_field_movie_render (SwfdecMovie *movie, cairo_t *cr,
pango_cairo_show_layout_line (cr, line);
} while (pango_layout_iter_next_line (iter_line));
- if (linenum >= MIN (text_movie->scroll, text_movie->scroll_max)) {
- y += layout->height - skipped;
- skipped = 0;
- }
+ y += layout->height - skipped;
pango_layout_iter_free (iter_line);
}
@@ -1285,71 +1356,6 @@ swfdec_text_field_movie_letter_clicked (SwfdecTextFieldMovie *text,
}
}
-static void
-swfdec_text_field_movie_line_position (SwfdecTextFieldMovie *text,
- SwfdecLayout *layouts_, int line_num, int *pixels, int *layout_num,
- int *line_in_layout)
-{
- SwfdecLayout *layouts;
- int linenum, i;
-
- if (pixels != NULL)
- *pixels = 0;
-
- if (layout_num != NULL)
- *layout_num = 0;
-
- if (line_in_layout != NULL)
- *line_in_layout = 0;
-
- g_return_if_fail (SWFDEC_IS_TEXT_FIELD_MOVIE (text));
-
- if (layouts_ != NULL) {
- layouts = layouts_;
- } else {
- layouts =
- swfdec_text_field_movie_get_layouts (text, NULL, NULL, NULL, NULL);
- }
-
- linenum = 0;
- for (i = 0; layouts[i].layout != NULL && linenum < line_num; i++)
- {
- PangoLayoutIter *iter_line;
- int layout_lines;
-
- iter_line = pango_layout_get_iter (layouts[i].layout);
-
- layout_lines = 0;
- do {
- if (++linenum >= line_num) {
- if (pixels != NULL) {
- PangoRectangle rect;
-
- pango_layout_iter_get_line_extents (iter_line, NULL, &rect);
- pango_extents_to_pixels (NULL, &rect);
-
- *pixels += rect.y;
- }
- if (line_in_layout != NULL)
- *line_in_layout = layout_lines;
- break;
- }
- layout_lines++;
- } while (pango_layout_iter_next_line (iter_line));
-
- if (linenum < line_num && pixels != NULL)
- *pixels += layouts[i].height;
-
- pango_layout_iter_free (iter_line);
- }
-
- if (layout_num != NULL)
- *layout_num = i;
-
- if (layouts_ == NULL)
- swfdec_text_field_movie_free_layouts (layouts);
-}
-
static gboolean
swfdec_text_field_movie_xy_to_index (SwfdecTextFieldMovie *text, double x,
double y, guint *index_, gboolean *before)
commit 05279827d7675572a2fdd71422f1b8b9673aa5ba
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date: Tue Dec 18 10:09:08 2007 +0200
Take scrolling into account in swfdec_text_field_movie_xy_to_index
diff --git a/libswfdec/swfdec_text_field_movie.c b/libswfdec/swfdec_text_field_movie.c
index 512cb3a..183011f 100644
--- a/libswfdec/swfdec_text_field_movie.c
+++ b/libswfdec/swfdec_text_field_movie.c
@@ -1285,12 +1285,77 @@ swfdec_text_field_movie_letter_clicked (SwfdecTextFieldMovie *text,
}
}
+static void
+swfdec_text_field_movie_line_position (SwfdecTextFieldMovie *text,
+ SwfdecLayout *layouts_, int line_num, int *pixels, int *layout_num,
+ int *line_in_layout)
+{
+ SwfdecLayout *layouts;
+ int linenum, i;
+
+ if (pixels != NULL)
+ *pixels = 0;
+
+ if (layout_num != NULL)
+ *layout_num = 0;
+
+ if (line_in_layout != NULL)
+ *line_in_layout = 0;
+
+ g_return_if_fail (SWFDEC_IS_TEXT_FIELD_MOVIE (text));
+
+ if (layouts_ != NULL) {
+ layouts = layouts_;
+ } else {
+ layouts =
+ swfdec_text_field_movie_get_layouts (text, NULL, NULL, NULL, NULL);
+ }
+
+ linenum = 0;
+ for (i = 0; layouts[i].layout != NULL && linenum < line_num; i++)
+ {
+ PangoLayoutIter *iter_line;
+ int layout_lines;
+
+ iter_line = pango_layout_get_iter (layouts[i].layout);
+
+ layout_lines = 0;
+ do {
+ if (++linenum >= line_num) {
+ if (pixels != NULL) {
+ PangoRectangle rect;
+
+ pango_layout_iter_get_line_extents (iter_line, NULL, &rect);
+ pango_extents_to_pixels (NULL, &rect);
+
+ *pixels += rect.y;
+ }
+ if (line_in_layout != NULL)
+ *line_in_layout = layout_lines;
+ break;
+ }
+ layout_lines++;
+ } while (pango_layout_iter_next_line (iter_line));
+
+ if (linenum < line_num && pixels != NULL)
+ *pixels += layouts[i].height;
+
+ pango_layout_iter_free (iter_line);
+ }
+
+ if (layout_num != NULL)
+ *layout_num = i;
+
+ if (layouts_ == NULL)
+ swfdec_text_field_movie_free_layouts (layouts);
+}
+
static gboolean
swfdec_text_field_movie_xy_to_index (SwfdecTextFieldMovie *text, double x,
double y, guint *index_, gboolean *before)
{
SwfdecLayout *layouts;
- int i, layout_index, trailing;
+ int i, layout_index, trailing, pixels;
double layout_y, layout_x;
gboolean direct;
@@ -1306,14 +1371,22 @@ swfdec_text_field_movie_xy_to_index (SwfdecTextFieldMovie *text, double x,
if (layouts[0].layout == NULL)
return FALSE;
- i = 0;
layout_y = y;
+ layout_x = x;
+
+ // take scrolling into account
+ swfdec_text_field_movie_line_position (text, layouts,
+ MIN (text->scroll, text->scroll_max), &pixels, NULL, NULL);
+ layout_y += pixels;
+ layout_x += MIN (text->hscroll, text->hscroll_max);
+
+ i = 0;
while (layout_y > layouts[i].height && layouts[i + 1].layout != NULL) {
layout_y -= layouts[i].height;
i++;
}
- layout_x = x - layouts[i].offset_x;
+ layout_x -= layouts[i].offset_x;
direct = pango_layout_xy_to_index (layouts[i].layout, layout_x * PANGO_SCALE,
layout_y * PANGO_SCALE, &layout_index, &trailing);
diff --git a/test/trace/text-field-html-input-6.swf b/test/trace/text-field-html-input-6.swf
index c08f64c..bd7311c 100644
Binary files a/test/trace/text-field-html-input-6.swf and b/test/trace/text-field-html-input-6.swf differ
diff --git a/test/trace/text-field-html-input-6.swf.trace b/test/trace/text-field-html-input-6.swf.trace
index 3093e99..0db4bea 100644
--- a/test/trace/text-field-html-input-6.swf.trace
+++ b/test/trace/text-field-html-input-6.swf.trace
@@ -230,3 +230,35 @@ a
b
cd
e
6/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
7/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
8/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+9: multiline: false condenseWhite: false
+abcde
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a<FONT COLOR="#00FF00">b</FONT>c<FONT COLOR="#0000FF">de</FONT></FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=65280 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+3/d: align=left blockIndent=0 bold=false bullet=false color=255 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+4/e: align=left blockIndent=0 bold=false bullet=false color=255 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+9: multiline: true condenseWhite: false
+abcde
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a<FONT COLOR="#00FF00">b</FONT>c<FONT COLOR="#0000FF">de</FONT></FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=65280 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+3/d: align=left blockIndent=0 bold=false bullet=false color=255 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+4/e: align=left blockIndent=0 bold=false bullet=false color=255 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+9: multiline: false condenseWhite: true
+abcde
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a<FONT COLOR="#00FF00">b</FONT>c<FONT COLOR="#0000FF">de</FONT></FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=65280 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+3/d: align=left blockIndent=0 bold=false bullet=false color=255 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+4/e: align=left blockIndent=0 bold=false bullet=false color=255 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+9: multiline: true condenseWhite: true
+abcde
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a<FONT COLOR="#00FF00">b</FONT>c<FONT COLOR="#0000FF">de</FONT></FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=65280 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+3/d: align=left blockIndent=0 bold=false bullet=false color=255 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+4/e: align=left blockIndent=0 bold=false bullet=false color=255 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
diff --git a/test/trace/text-field-html-input-7.swf b/test/trace/text-field-html-input-7.swf
index 787d500..769dae9 100644
Binary files a/test/trace/text-field-html-input-7.swf and b/test/trace/text-field-html-input-7.swf differ
diff --git a/test/trace/text-field-html-input-7.swf.trace b/test/trace/text-field-html-input-7.swf.trace
index acd8f59..6f70af0 100644
--- a/test/trace/text-field-html-input-7.swf.trace
+++ b/test/trace/text-field-html-input-7.swf.trace
@@ -218,3 +218,35 @@ a
b
cd
e
6/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
7/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
8/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+9: multiline: false condenseWhite: false
+abcde
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a<FONT COLOR="#00FF00">b</FONT>c<FONT COLOR="#0000FF">de</FONT></FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=65280 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+3/d: align=left blockIndent=0 bold=false bullet=false color=255 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+4/e: align=left blockIndent=0 bold=false bullet=false color=255 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+9: multiline: true condenseWhite: false
+abcde
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a<FONT COLOR="#00FF00">b</FONT>c<FONT COLOR="#0000FF">de</FONT></FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=65280 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+3/d: align=left blockIndent=0 bold=false bullet=false color=255 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+4/e: align=left blockIndent=0 bold=false bullet=false color=255 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+9: multiline: false condenseWhite: true
+abcde
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a<FONT COLOR="#00FF00">b</FONT>c<FONT COLOR="#0000FF">de</FONT></FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=65280 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+3/d: align=left blockIndent=0 bold=false bullet=false color=255 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+4/e: align=left blockIndent=0 bold=false bullet=false color=255 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+9: multiline: true condenseWhite: true
+abcde
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a<FONT COLOR="#00FF00">b</FONT>c<FONT COLOR="#0000FF">de</FONT></FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=65280 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+3/d: align=left blockIndent=0 bold=false bullet=false color=255 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+4/e: align=left blockIndent=0 bold=false bullet=false color=255 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
diff --git a/test/trace/text-field-html-input-8.swf b/test/trace/text-field-html-input-8.swf
index dc640a1..986cd75 100644
Binary files a/test/trace/text-field-html-input-8.swf and b/test/trace/text-field-html-input-8.swf differ
diff --git a/test/trace/text-field-html-input-8.swf.trace b/test/trace/text-field-html-input-8.swf.trace
index 4e97379..0c498d3 100644
--- a/test/trace/text-field-html-input-8.swf.trace
+++ b/test/trace/text-field-html-input-8.swf.trace
@@ -218,3 +218,35 @@ a
b
cd
e
6/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
7/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
8/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+9: multiline: false condenseWhite: false
+abcde
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a<FONT COLOR="#00FF00">b</FONT>c<FONT COLOR="#0000FF">de</FONT></FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=65280 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+3/d: align=left blockIndent=0 bold=false bullet=false color=255 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+4/e: align=left blockIndent=0 bold=false bullet=false color=255 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+9: multiline: true condenseWhite: false
+abcde
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#0000FF" LETTERSPACING="0" KERNING="0">a<FONT COLOR="#00FF00">b</FONT>cde</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=255 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=65280 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=255 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+3/d: align=left blockIndent=0 bold=false bullet=false color=255 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+4/e: align=left blockIndent=0 bold=false bullet=false color=255 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+9: multiline: false condenseWhite: true
+abcde
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#0000FF" LETTERSPACING="0" KERNING="0">a<FONT COLOR="#00FF00">b</FONT>cde</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=255 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=65280 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=255 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+3/d: align=left blockIndent=0 bold=false bullet=false color=255 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+4/e: align=left blockIndent=0 bold=false bullet=false color=255 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+9: multiline: true condenseWhite: true
+abcde
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#0000FF" LETTERSPACING="0" KERNING="0">a<FONT COLOR="#00FF00">b</FONT>cde</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=255 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=false color=65280 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=255 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+3/d: align=left blockIndent=0 bold=false bullet=false color=255 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+4/e: align=left blockIndent=0 bold=false bullet=false color=255 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
diff --git a/test/trace/text-field-html-input.as b/test/trace/text-field-html-input.as
index fc0754c..0c61afb 100644
--- a/test/trace/text-field-html-input.as
+++ b/test/trace/text-field-html-input.as
@@ -41,7 +41,8 @@ var texts = [
"a<p align='right'>ä</p>c",
"a<!-- b -->c",
"a<!--->b",
- "a<br><li>b</li>c<p>d</p>e<br>"
+ "a<br><li>b</li>c<p>d</p>e<br>",
+ 'a<font color="#00ff00">b</font>c<font color="#0000ff">d<font>e'
];
t.html = true;
commit ae45f8807445c99248074dbae19417d540b68952
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date: Tue Dec 11 20:12:49 2007 +0200
Oops, fix stupid mistake in last commit
diff --git a/libswfdec/swfdec_text_field_movie.c b/libswfdec/swfdec_text_field_movie.c
index 1a90cb6..512cb3a 100644
--- a/libswfdec/swfdec_text_field_movie.c
+++ b/libswfdec/swfdec_text_field_movie.c
@@ -1254,7 +1254,7 @@ swfdec_text_field_movie_format_for_index (SwfdecTextFieldMovie *text,
GSList *iter;
g_return_val_if_fail (SWFDEC_IS_TEXT_FIELD_MOVIE (text), NULL);
- g_return_val_if_fail (index_ > text->input->len, NULL);
+ g_return_val_if_fail (index_ <= text->input->len, NULL);
if (text->formats == NULL)
return NULL;
@@ -1274,7 +1274,7 @@ swfdec_text_field_movie_letter_clicked (SwfdecTextFieldMovie *text,
SwfdecTextFormat *format;
g_return_if_fail (SWFDEC_IS_TEXT_FIELD_MOVIE (text));
- g_return_if_fail (index_ > text->input->len);
+ g_return_if_fail (index_ <= text->input->len);
format = swfdec_text_field_movie_format_for_index (text, index_);
commit afda13374bd04ea64184bf9650d37708da70cf10
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date: Tue Dec 11 20:11:40 2007 +0200
More work on TextField selecting and link clicking
diff --git a/libswfdec/swfdec_player.c b/libswfdec/swfdec_player.c
index 62c3e38..e675ba4 100644
--- a/libswfdec/swfdec_player.c
+++ b/libswfdec/swfdec_player.c
@@ -1087,6 +1087,14 @@ swfdec_player_do_mouse_move (SwfdecPlayer *player, double x, double y)
swfdec_player_grab_mouse_movie (player);
swfdec_player_update_drag_movie (player);
+ if (player->mouse_grab) {
+ SwfdecMovieClass *klass = SWFDEC_MOVIE_GET_CLASS (player->mouse_grab);
+ if (klass->mouse_move) {
+ swfdec_movie_get_mouse (player->mouse_grab, &x, &y);
+ klass->mouse_move (player->mouse_grab, x, y);
+ }
+ }
+
/* FIXME: allow events to pass through */
return TRUE;
}
diff --git a/libswfdec/swfdec_text_field_movie.c b/libswfdec/swfdec_text_field_movie.c
index 095ab63..1a90cb6 100644
--- a/libswfdec/swfdec_text_field_movie.c
+++ b/libswfdec/swfdec_text_field_movie.c
@@ -542,7 +542,7 @@ swfdec_text_field_movie_get_layouts (SwfdecTextFieldMovie *text, int *num,
PangoAttrList *attr_list;
SwfdecBlock *block;
int width;
- guint length, start_index;
+ guint length;
gboolean end_of_paragraph;
block = (SwfdecBlock *)iter->data;
@@ -608,32 +608,32 @@ swfdec_text_field_movie_get_layouts (SwfdecTextFieldMovie *text, int *num,
¶graphs[i], block->index_ + skip, trans);
// add background for selection
- start_index = paragraphs[i].index_ + block->index_ + skip;
+ layout.index_ = paragraphs[i].index_ + block->index_ + skip;
if (text->text->selectable && text->cursor != text->selection_end &&
- start_index < MAX (text->cursor, text->selection_end)) {
+ layout.index_ < MAX (text->cursor, text->selection_end)) {
SwfdecColor color;
PangoAttribute *attr_fg, *attr_bg;
- color = SWFDEC_COLOR_COMBINE (0, 0, 0, 255);
+ color = SWFDEC_COLOR_COMBINE (255, 255, 255, 255);
if (trans != NULL)
color = swfdec_color_apply_transform (color, trans);
attr_fg = pango_attr_foreground_new (SWFDEC_COLOR_R (color) << 8,
SWFDEC_COLOR_G (color) << 8, SWFDEC_COLOR_B (color) << 8);
- color = SWFDEC_COLOR_COMBINE (255, 255, 255, 255);
+ color = SWFDEC_COLOR_COMBINE (0, 0, 0, 255);
if (trans != NULL)
color = swfdec_color_apply_transform (color, trans);
attr_bg = pango_attr_background_new (SWFDEC_COLOR_R (color) << 8,
SWFDEC_COLOR_G (color) << 8, SWFDEC_COLOR_B (color) << 8);
- if (MIN (text->cursor, text->selection_end) > start_index) {
+ if (MIN (text->cursor, text->selection_end) > layout.index_) {
attr_fg->start_index = attr_bg->start_index =
- MIN (text->cursor, text->selection_end) - start_index;
+ MIN (text->cursor, text->selection_end) - layout.index_;
} else {
attr_fg->start_index = attr_bg->start_index = 0;
}
attr_bg->end_index = attr_fg->end_index =
- MAX (text->cursor, text->selection_end) - start_index;
+ MAX (text->cursor, text->selection_end) - layout.index_;
pango_attr_list_insert (attr_list, attr_fg);
pango_attr_list_insert (attr_list, attr_bg);
@@ -1247,11 +1247,52 @@ swfdec_text_field_movie_contains (SwfdecMovie *movie, double x, double y,
return movie;
}
+static SwfdecTextFormat *
+swfdec_text_field_movie_format_for_index (SwfdecTextFieldMovie *text,
+ guint index_)
+{
+ GSList *iter;
+
+ g_return_val_if_fail (SWFDEC_IS_TEXT_FIELD_MOVIE (text), NULL);
+ g_return_val_if_fail (index_ > text->input->len, NULL);
+
+ if (text->formats == NULL)
+ return NULL;
+
+ // get current format
+ for (iter = text->formats; iter != NULL && iter->next != NULL &&
+ ((SwfdecFormatIndex *)iter->next->data)->index_ < index_;
+ iter = iter->next);
+
+ return ((SwfdecFormatIndex *)iter->data)->format;
+}
+
+static void
+swfdec_text_field_movie_letter_clicked (SwfdecTextFieldMovie *text,
+ guint index_)
+{
+ SwfdecTextFormat *format;
+
+ g_return_if_fail (SWFDEC_IS_TEXT_FIELD_MOVIE (text));
+ g_return_if_fail (index_ > text->input->len);
+
+ format = swfdec_text_field_movie_format_for_index (text, index_);
+
+ if (format != NULL && format->url != NULL &&
+ format->url != SWFDEC_AS_STR_EMPTY) {
+ swfdec_player_launch (SWFDEC_PLAYER (SWFDEC_AS_OBJECT (text)->context),
+ SWFDEC_LOADER_REQUEST_DEFAULT, format->url, format->target, NULL);
+ }
+}
+
static gboolean
swfdec_text_field_movie_xy_to_index (SwfdecTextFieldMovie *text, double x,
double y, guint *index_, gboolean *before)
{
SwfdecLayout *layouts;
+ int i, layout_index, trailing;
+ double layout_y, layout_x;
+ gboolean direct;
g_return_val_if_fail (index_ != NULL, FALSE);
g_return_val_if_fail (SWFDEC_IS_TEXT_FIELD_MOVIE (text), FALSE);
@@ -1262,9 +1303,54 @@ swfdec_text_field_movie_xy_to_index (SwfdecTextFieldMovie *text, double x,
layouts = swfdec_text_field_movie_get_layouts (text, NULL, NULL, NULL, NULL);
+ if (layouts[0].layout == NULL)
+ return FALSE;
+
+ i = 0;
+ layout_y = y;
+ while (layout_y > layouts[i].height && layouts[i + 1].layout != NULL) {
+ layout_y -= layouts[i].height;
+ i++;
+ }
+
+ layout_x = x - layouts[i].offset_x;
+
+ direct = pango_layout_xy_to_index (layouts[i].layout, layout_x * PANGO_SCALE,
+ layout_y * PANGO_SCALE, &layout_index, &trailing);
+
+ *index_ = layouts[i].index_ + layout_index;
+ if (before)
+ *before = (trailing == 0);
+
swfdec_text_field_movie_free_layouts (layouts);
- return TRUE;
+ return direct;
+}
+
+static SwfdecMouseCursor
+swfdec_text_field_movie_mouse_cursor (SwfdecMovie *movie)
+{
+ SwfdecTextFieldMovie *text = SWFDEC_TEXT_FIELD_MOVIE (movie);
+ double x, y;
+ guint index_;
+ SwfdecTextFormat *format;
+
+ swfdec_movie_get_mouse (movie, &x, &y);
+
+ if (swfdec_text_field_movie_xy_to_index (text, x, y, &index_, NULL)) {
+ format = swfdec_text_field_movie_format_for_index (text, index_);
+ } else {
+ format = NULL;
+ }
+
+ if (format != NULL && format->url != NULL &&
+ format->url != SWFDEC_AS_STR_EMPTY) {
+ return SWFDEC_MOUSE_CURSOR_CLICK;
+ } else if (text->text->editable || text->text->selectable) {
+ return SWFDEC_MOUSE_CURSOR_TEXT;
+ } else{
+ return SWFDEC_MOUSE_CURSOR_NORMAL;
+ }
}
static gboolean
@@ -1295,7 +1381,10 @@ swfdec_text_field_movie_mouse_press (SwfdecMovie *movie, guint button)
text->mouse_pressed = TRUE;
text->cursor = index_;
- text->selection_end = index_;
+ if (!before && text->cursor < text->input->len)
+ text->cursor++;
+ text->selection_end = text->cursor;
+ swfdec_movie_invalidate_last (SWFDEC_MOVIE (text));
if (direct) {
text->character_pressed = index_ + 1;
@@ -1307,46 +1396,60 @@ swfdec_text_field_movie_mouse_press (SwfdecMovie *movie, guint button)
}
static void
-swfdec_text_field_movie_mouse_release (SwfdecMovie *movie, guint button)
+swfdec_text_field_movie_mouse_move (SwfdecMovie *movie, double x, double y)
{
SwfdecTextFieldMovie *text = SWFDEC_TEXT_FIELD_MOVIE (movie);
- double x, y;
guint index_;
gboolean direct, before;
g_return_if_fail (text->text->editable || text->text->selectable);
- if (button != 0)
+ if (!text->text->selectable)
return;
- text->mouse_pressed = FALSE;
-
- swfdec_movie_get_mouse (movie, &x, &y);
+ if (!text->mouse_pressed)
+ return;
direct = swfdec_text_field_movie_xy_to_index (text, x, y, &index_, &before);
- if (direct && text->character_pressed == index_ + 1 - (before ? 1 : 0)) {
- SWFDEC_FIXME ("Clicking links in TextFields not implemented");
- }
+ text->selection_end = index_;
+
+ if (!before && text->selection_end < text->input->len)
+ text->selection_end++;
+
+ swfdec_movie_invalidate_last (SWFDEC_MOVIE (text));
}
static void
-swfdec_text_field_movie_mouse_move (SwfdecMovie *movie, double x, double y)
+swfdec_text_field_movie_mouse_release (SwfdecMovie *movie, guint button)
{
SwfdecTextFieldMovie *text = SWFDEC_TEXT_FIELD_MOVIE (movie);
+ double x, y;
guint index_;
+ gboolean direct, before;
g_return_if_fail (text->text->editable || text->text->selectable);
- if (!text->text->selectable)
+ if (button != 0)
return;
- if (!text->mouse_pressed)
- return;
+ swfdec_movie_get_mouse (movie, &x, &y);
- swfdec_text_field_movie_xy_to_index (text, x, y, &index_, NULL);
+ //FIXME
+ swfdec_text_field_movie_mouse_move (movie, x, y);
- text->selection_end = index_;
+ text->mouse_pressed = FALSE;
+
+ direct = swfdec_text_field_movie_xy_to_index (text, x, y, &index_, &before);
+
+ if (text->character_pressed != 0) {
+ if (direct && text->character_pressed == index_ + 1 - (before ? 1 : 0)) {
+ swfdec_text_field_movie_letter_clicked (text,
+ text->character_pressed - 1);
+ }
+
+ text->character_pressed = 0;
+ }
}
static void
@@ -1368,6 +1471,7 @@ swfdec_text_field_movie_class_init (SwfdecTextFieldMovieClass * g_class)
movie_class->invalidate = swfdec_text_field_movie_invalidate;
movie_class->contains = swfdec_text_field_movie_contains;
+ movie_class->mouse_cursor = swfdec_text_field_movie_mouse_cursor;
movie_class->mouse_events = swfdec_text_field_movie_mouse_events;
movie_class->mouse_press = swfdec_text_field_movie_mouse_press;
movie_class->mouse_release = swfdec_text_field_movie_mouse_release;
diff --git a/libswfdec/swfdec_text_field_movie.h b/libswfdec/swfdec_text_field_movie.h
index c016a4b..ae47fc2 100644
--- a/libswfdec/swfdec_text_field_movie.h
+++ b/libswfdec/swfdec_text_field_movie.h
@@ -40,6 +40,7 @@ typedef struct _SwfdecTextFieldMovieClass SwfdecTextFieldMovieClass;
typedef struct {
PangoLayout * layout;
+ guint index_;
int offset_x;
int last_line_offset_y;
int height;
commit 9096e26baeaa47a2b4ac9583f6ed4dea698392ff
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date: Mon Dec 10 20:12:11 2007 +0200
Fix rendering of selection in TextField. Add swfdec_text_field_movie_contains
diff --git a/libswfdec/swfdec_text_field_movie.c b/libswfdec/swfdec_text_field_movie.c
index b7f841c..095ab63 100644
--- a/libswfdec/swfdec_text_field_movie.c
+++ b/libswfdec/swfdec_text_field_movie.c
@@ -542,7 +542,7 @@ swfdec_text_field_movie_get_layouts (SwfdecTextFieldMovie *text, int *num,
PangoAttrList *attr_list;
SwfdecBlock *block;
int width;
- guint length;
+ guint length, start_index;
gboolean end_of_paragraph;
block = (SwfdecBlock *)iter->data;
@@ -608,26 +608,35 @@ swfdec_text_field_movie_get_layouts (SwfdecTextFieldMovie *text, int *num,
¶graphs[i], block->index_ + skip, trans);
// add background for selection
+ start_index = paragraphs[i].index_ + block->index_ + skip;
if (text->text->selectable && text->cursor != text->selection_end &&
- block->index_ + skip < MAX (text->cursor, text->selection_end)) {
+ start_index < MAX (text->cursor, text->selection_end)) {
SwfdecColor color;
- PangoAttribute *attr;
-
- color = SWFDEC_COLOR_COMBINE (0, 0, 255, 255);
- color = swfdec_color_apply_transform (color, trans);
- attr = pango_attr_background_new (SWFDEC_COLOR_R (color),
- SWFDEC_COLOR_G (color), SWFDEC_COLOR_B (color));
-
- if (MIN (text->cursor, text->selection_end) > block->index_ + skip) {
- attr->start_index =
- MIN (text->cursor, text->selection_end) - block->index_ + skip;
+ PangoAttribute *attr_fg, *attr_bg;
+
+ color = SWFDEC_COLOR_COMBINE (0, 0, 0, 255);
+ if (trans != NULL)
+ color = swfdec_color_apply_transform (color, trans);
+ attr_fg = pango_attr_foreground_new (SWFDEC_COLOR_R (color) << 8,
+ SWFDEC_COLOR_G (color) << 8, SWFDEC_COLOR_B (color) << 8);
+
+ color = SWFDEC_COLOR_COMBINE (255, 255, 255, 255);
+ if (trans != NULL)
+ color = swfdec_color_apply_transform (color, trans);
+ attr_bg = pango_attr_background_new (SWFDEC_COLOR_R (color) << 8,
+ SWFDEC_COLOR_G (color) << 8, SWFDEC_COLOR_B (color) << 8);
+
+ if (MIN (text->cursor, text->selection_end) > start_index) {
+ attr_fg->start_index = attr_bg->start_index =
+ MIN (text->cursor, text->selection_end) - start_index;
} else {
- attr->start_index = 0;
+ attr_fg->start_index = attr_bg->start_index = 0;
}
- attr->end_index =
- MAX (text->cursor, text->selection_end) - block->index_ + skip;
+ attr_bg->end_index = attr_fg->end_index =
+ MAX (text->cursor, text->selection_end) - start_index;
- pango_attr_list_insert (attr_list, attr);
+ pango_attr_list_insert (attr_list, attr_fg);
+ pango_attr_list_insert (attr_list, attr_bg);
}
pango_layout_set_attributes (playout, attr_list);
@@ -1222,6 +1231,22 @@ swfdec_text_field_movie_iterate (SwfdecMovie *movie)
}
}
+static SwfdecMovie *
+swfdec_text_field_movie_contains (SwfdecMovie *movie, double x, double y,
+ gboolean events)
+{
+ if (events) {
+ /* check for movies in a higher layer that react to events */
+ SwfdecMovie *ret;
+ ret = SWFDEC_MOVIE_CLASS (swfdec_text_field_movie_parent_class)->contains (
+ movie, x, y, TRUE);
+ if (ret && ret != movie && swfdec_movie_get_mouse_events (ret))
+ return ret;
+ }
+
+ return movie;
+}
+
static gboolean
swfdec_text_field_movie_xy_to_index (SwfdecTextFieldMovie *text, double x,
double y, guint *index_, gboolean *before)
@@ -1341,6 +1366,7 @@ swfdec_text_field_movie_class_init (SwfdecTextFieldMovieClass * g_class)
movie_class->update_extents = swfdec_text_field_movie_update_extents;
movie_class->render = swfdec_text_field_movie_render;
movie_class->invalidate = swfdec_text_field_movie_invalidate;
+ movie_class->contains = swfdec_text_field_movie_contains;
movie_class->mouse_events = swfdec_text_field_movie_mouse_events;
movie_class->mouse_press = swfdec_text_field_movie_mouse_press;
commit 2bd22479fcfb7f76eb4258f0824766f6a7dc948f
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date: Mon Dec 10 16:04:55 2007 +0200
More work on TextField's selection support. Set selection's background color
diff --git a/libswfdec/swfdec_text_field_movie.c b/libswfdec/swfdec_text_field_movie.c
index 16cb0ed..b7f841c 100644
--- a/libswfdec/swfdec_text_field_movie.c
+++ b/libswfdec/swfdec_text_field_movie.c
@@ -606,6 +606,30 @@ swfdec_text_field_movie_get_layouts (SwfdecTextFieldMovie *text, int *num,
// set text attributes
attr_list = swfdec_text_field_movie_paragraph_get_attr_list (
¶graphs[i], block->index_ + skip, trans);
+
+ // add background for selection
+ if (text->text->selectable && text->cursor != text->selection_end &&
+ block->index_ + skip < MAX (text->cursor, text->selection_end)) {
+ SwfdecColor color;
+ PangoAttribute *attr;
+
+ color = SWFDEC_COLOR_COMBINE (0, 0, 255, 255);
+ color = swfdec_color_apply_transform (color, trans);
+ attr = pango_attr_background_new (SWFDEC_COLOR_R (color),
+ SWFDEC_COLOR_G (color), SWFDEC_COLOR_B (color));
+
+ if (MIN (text->cursor, text->selection_end) > block->index_ + skip) {
+ attr->start_index =
+ MIN (text->cursor, text->selection_end) - block->index_ + skip;
+ } else {
+ attr->start_index = 0;
+ }
+ attr->end_index =
+ MAX (text->cursor, text->selection_end) - block->index_ + skip;
+
+ pango_attr_list_insert (attr_list, attr);
+ }
+
pango_layout_set_attributes (playout, attr_list);
if (text->text->password) {
@@ -1200,7 +1224,7 @@ swfdec_text_field_movie_iterate (SwfdecMovie *movie)
static gboolean
swfdec_text_field_movie_xy_to_index (SwfdecTextFieldMovie *text, double x,
- double y, int *index_, gboolean *before)
+ double y, guint *index_, gboolean *before)
{
SwfdecLayout *layouts;
@@ -1232,7 +1256,7 @@ swfdec_text_field_movie_mouse_press (SwfdecMovie *movie, guint button)
{
SwfdecTextFieldMovie *text = SWFDEC_TEXT_FIELD_MOVIE (movie);
double x, y;
- int index_;
+ guint index_;
gboolean direct, before;
g_return_if_fail (text->text->editable || text->text->selectable);
@@ -1249,9 +1273,11 @@ swfdec_text_field_movie_mouse_press (SwfdecMovie *movie, guint button)
text->selection_end = index_;
if (direct) {
- text->character_pressed = index_;
+ text->character_pressed = index_ + 1;
if (before)
text->character_pressed--;
+ } else {
+ text->character_pressed = 0;
}
}
@@ -1260,7 +1286,7 @@ swfdec_text_field_movie_mouse_release (SwfdecMovie *movie, guint button)
{
SwfdecTextFieldMovie *text = SWFDEC_TEXT_FIELD_MOVIE (movie);
double x, y;
- int index_;
+ guint index_;
gboolean direct, before;
g_return_if_fail (text->text->editable || text->text->selectable);
@@ -1268,13 +1294,13 @@ swfdec_text_field_movie_mouse_release (SwfdecMovie *movie, guint button)
if (button != 0)
return;
+ text->mouse_pressed = FALSE;
+
swfdec_movie_get_mouse (movie, &x, &y);
direct = swfdec_text_field_movie_xy_to_index (text, x, y, &index_, &before);
- text->mouse_pressed = FALSE;
-
- if (direct && text->character_pressed == index_ - (before ? 1 : 0)) {
+ if (direct && text->character_pressed == index_ + 1 - (before ? 1 : 0)) {
SWFDEC_FIXME ("Clicking links in TextFields not implemented");
}
}
@@ -1283,7 +1309,7 @@ static void
swfdec_text_field_movie_mouse_move (SwfdecMovie *movie, double x, double y)
{
SwfdecTextFieldMovie *text = SWFDEC_TEXT_FIELD_MOVIE (movie);
- int index_;
+ guint index_;
g_return_if_fail (text->text->editable || text->text->selectable);
diff --git a/libswfdec/swfdec_text_field_movie.h b/libswfdec/swfdec_text_field_movie.h
index 6fd9cf9..c016a4b 100644
--- a/libswfdec/swfdec_text_field_movie.h
+++ b/libswfdec/swfdec_text_field_movie.h
@@ -111,9 +111,9 @@ struct _SwfdecTextFieldMovie {
SwfdecColor background_color;
gboolean mouse_pressed;
- int cursor;
- int selection_end;
- int character_pressed;
+ guint cursor;
+ guint selection_end;
+ guint character_pressed;
// FIXME: Temporary using image surface, until there is a way to get cairo_t
// outside the rendering functions
commit 5f64dd5eb916718af4fbea490f01ab0eb85d8d2e
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date: Mon Dec 10 14:43:24 2007 +0200
Start working on selecting text and handling links in TextFields
diff --git a/libswfdec/swfdec_text_field_movie.c b/libswfdec/swfdec_text_field_movie.c
index 50b7a57..16cb0ed 100644
--- a/libswfdec/swfdec_text_field_movie.c
+++ b/libswfdec/swfdec_text_field_movie.c
@@ -1198,6 +1198,106 @@ swfdec_text_field_movie_iterate (SwfdecMovie *movie)
}
}
+static gboolean
+swfdec_text_field_movie_xy_to_index (SwfdecTextFieldMovie *text, double x,
+ double y, int *index_, gboolean *before)
+{
+ SwfdecLayout *layouts;
+
+ g_return_val_if_fail (index_ != NULL, FALSE);
+ g_return_val_if_fail (SWFDEC_IS_TEXT_FIELD_MOVIE (text), FALSE);
+
+ *index_ = 0;
+ if (before != NULL)
+ *before = FALSE;
+
+ layouts = swfdec_text_field_movie_get_layouts (text, NULL, NULL, NULL, NULL);
+
+ swfdec_text_field_movie_free_layouts (layouts);
+
+ return TRUE;
+}
+
+static gboolean
+swfdec_text_field_movie_mouse_events (SwfdecMovie *movie)
+{
+ SwfdecTextFieldMovie *text = SWFDEC_TEXT_FIELD_MOVIE (movie);
+
+ // FIXME: is this correct?
+ return (text->text->editable || text->text->selectable);
+}
+
+static void
+swfdec_text_field_movie_mouse_press (SwfdecMovie *movie, guint button)
+{
+ SwfdecTextFieldMovie *text = SWFDEC_TEXT_FIELD_MOVIE (movie);
+ double x, y;
+ int index_;
+ gboolean direct, before;
+
+ g_return_if_fail (text->text->editable || text->text->selectable);
+
+ if (button != 0)
+ return;
+
+ swfdec_movie_get_mouse (movie, &x, &y);
+
+ direct = swfdec_text_field_movie_xy_to_index (text, x, y, &index_, &before);
+
+ text->mouse_pressed = TRUE;
+ text->cursor = index_;
+ text->selection_end = index_;
+
+ if (direct) {
+ text->character_pressed = index_;
+ if (before)
+ text->character_pressed--;
+ }
+}
+
+static void
+swfdec_text_field_movie_mouse_release (SwfdecMovie *movie, guint button)
+{
+ SwfdecTextFieldMovie *text = SWFDEC_TEXT_FIELD_MOVIE (movie);
+ double x, y;
+ int index_;
+ gboolean direct, before;
+
+ g_return_if_fail (text->text->editable || text->text->selectable);
+
+ if (button != 0)
+ return;
+
+ swfdec_movie_get_mouse (movie, &x, &y);
+
+ direct = swfdec_text_field_movie_xy_to_index (text, x, y, &index_, &before);
+
+ text->mouse_pressed = FALSE;
+
+ if (direct && text->character_pressed == index_ - (before ? 1 : 0)) {
+ SWFDEC_FIXME ("Clicking links in TextFields not implemented");
+ }
+}
+
+static void
+swfdec_text_field_movie_mouse_move (SwfdecMovie *movie, double x, double y)
+{
+ SwfdecTextFieldMovie *text = SWFDEC_TEXT_FIELD_MOVIE (movie);
+ int index_;
+
+ g_return_if_fail (text->text->editable || text->text->selectable);
+
+ if (!text->text->selectable)
+ return;
+
+ if (!text->mouse_pressed)
+ return;
+
+ swfdec_text_field_movie_xy_to_index (text, x, y, &index_, NULL);
+
+ text->selection_end = index_;
+}
+
static void
swfdec_text_field_movie_class_init (SwfdecTextFieldMovieClass * g_class)
{
@@ -1215,6 +1315,11 @@ swfdec_text_field_movie_class_init (SwfdecTextFieldMovieClass * g_class)
movie_class->update_extents = swfdec_text_field_movie_update_extents;
movie_class->render = swfdec_text_field_movie_render;
movie_class->invalidate = swfdec_text_field_movie_invalidate;
+
+ movie_class->mouse_events = swfdec_text_field_movie_mouse_events;
+ movie_class->mouse_press = swfdec_text_field_movie_mouse_press;
+ movie_class->mouse_release = swfdec_text_field_movie_mouse_release;
+ movie_class->mouse_move = swfdec_text_field_movie_mouse_move;
}
static void
diff --git a/libswfdec/swfdec_text_field_movie.h b/libswfdec/swfdec_text_field_movie.h
index 8d719d3..6fd9cf9 100644
--- a/libswfdec/swfdec_text_field_movie.h
+++ b/libswfdec/swfdec_text_field_movie.h
@@ -110,6 +110,11 @@ struct _SwfdecTextFieldMovie {
SwfdecColor border_color;
SwfdecColor background_color;
+ gboolean mouse_pressed;
+ int cursor;
+ int selection_end;
+ int character_pressed;
+
// FIXME: Temporary using image surface, until there is a way to get cairo_t
// outside the rendering functions
cairo_surface_t * surface;
More information about the Swfdec-commits
mailing list