[Swfdec-commits] 7 commits - swfdec/swfdec_text_field_movie.c swfdec/swfdec_text_format.c swfdec/swfdec_text_format.h
Benjamin Otte
company at kemper.freedesktop.org
Thu Apr 3 07:36:50 PDT 2008
swfdec/swfdec_text_field_movie.c | 102 ++++++++++++-
swfdec/swfdec_text_format.c | 301 ++++++++++++++++++---------------------
swfdec/swfdec_text_format.h | 23 ++
3 files changed, 256 insertions(+), 170 deletions(-)
New commits:
commit 1c356c4f584f26ddb6f43f3c0246bc8e0076c609
Author: Benjamin Otte <otte at gnome.org>
Date: Thu Apr 3 16:35:44 2008 +0200
invalidate on focus in/out
otherwise the cursor might not become visible
diff --git a/swfdec/swfdec_text_field_movie.c b/swfdec/swfdec_text_field_movie.c
index 2590f39..94babd7 100644
--- a/swfdec/swfdec_text_field_movie.c
+++ b/swfdec/swfdec_text_field_movie.c
@@ -1603,13 +1603,19 @@ swfdec_text_field_movie_mouse_release (SwfdecActor *actor, guint button)
static void
swfdec_text_field_movie_focus_in (SwfdecActor *actor)
{
- //SwfdecTextFieldMovie *text = SWFDEC_TEXT_FIELD_MOVIE (actor);
+ SwfdecTextFieldMovie *text = SWFDEC_TEXT_FIELD_MOVIE (actor);
+
+ if (text->editable)
+ swfdec_movie_invalidate_last (SWFDEC_MOVIE (actor));
}
static void
swfdec_text_field_movie_focus_out (SwfdecActor *actor)
{
- //SwfdecTextFieldMovie *text = SWFDEC_TEXT_FIELD_MOVIE (actor);
+ SwfdecTextFieldMovie *text = SWFDEC_TEXT_FIELD_MOVIE (actor);
+
+ if (text->editable)
+ swfdec_movie_invalidate_last (SWFDEC_MOVIE (actor));
}
static void
@@ -1648,13 +1654,17 @@ swfdec_text_field_movie_key_press (SwfdecActor *actor, guint keycode, guint char
if (swfdec_text_field_movie_has_cursor (text)) {
start = BACKWARD (text, start);
}
+ swfdec_sandbox_use (SWFDEC_MOVIE (text)->resource->sandbox);
swfdec_text_field_movie_replace_text (text, start, end, "");
+ swfdec_sandbox_unuse (SWFDEC_MOVIE (text)->resource->sandbox);
return;
case SWFDEC_KEY_DELETE:
if (swfdec_text_field_movie_has_cursor (text)) {
end = FORWARD (text, end);
}
+ swfdec_sandbox_use (SWFDEC_MOVIE (text)->resource->sandbox);
swfdec_text_field_movie_replace_text (text, start, end, "");
+ swfdec_sandbox_unuse (SWFDEC_MOVIE (text)->resource->sandbox);
return;
default:
break;
commit 9aa340472968c459d281251fab76525418995e28
Author: Benjamin Otte <otte at gnome.org>
Date: Thu Apr 3 16:31:34 2008 +0200
implement DELETE and BACKSPACE
diff --git a/swfdec/swfdec_text_field_movie.c b/swfdec/swfdec_text_field_movie.c
index 6eec591..2590f39 100644
--- a/swfdec/swfdec_text_field_movie.c
+++ b/swfdec/swfdec_text_field_movie.c
@@ -1619,6 +1619,8 @@ swfdec_text_field_movie_key_press (SwfdecActor *actor, guint keycode, guint char
char insert[7];
guint len;
gsize start, end;
+#define BACKWARD(text, _index) ((_index) == 0 ? 0 : (gsize) (g_utf8_prev_char ((text)->input->str + (_index)) - (text)->input->str))
+#define FORWARD(text, _index) ((_index) == (text)->input->len ? (_index) : (gsize) (g_utf8_next_char ((text)->input->str + (_index)) - (text)->input->str))
if (!text->editable)
return;
@@ -1628,24 +1630,32 @@ swfdec_text_field_movie_key_press (SwfdecActor *actor, guint keycode, guint char
switch (keycode) {
case SWFDEC_KEY_LEFT:
if (swfdec_text_field_movie_has_cursor (text)) {
- if (start > 0) {
- start = g_utf8_prev_char (text->input->str + start) - text->input->str;
- swfdec_text_field_movie_set_cursor (text, start, start);
- } /* else beep */
+ start = BACKWARD (text, start);
+ swfdec_text_field_movie_set_cursor (text, start, start);
} else {
swfdec_text_field_movie_set_cursor (text, start, start);
}
return;
case SWFDEC_KEY_RIGHT:
if (swfdec_text_field_movie_has_cursor (text)) {
- if (start > 0) {
- start = g_utf8_next_char (text->input->str + start) - text->input->str;
- swfdec_text_field_movie_set_cursor (text, start, start);
- } /* else beep */
+ start = FORWARD (text, start);
+ swfdec_text_field_movie_set_cursor (text, start, start);
} else {
swfdec_text_field_movie_set_cursor (text, end, end);
}
return;
+ case SWFDEC_KEY_BACKSPACE:
+ if (swfdec_text_field_movie_has_cursor (text)) {
+ start = BACKWARD (text, start);
+ }
+ swfdec_text_field_movie_replace_text (text, start, end, "");
+ return;
+ case SWFDEC_KEY_DELETE:
+ if (swfdec_text_field_movie_has_cursor (text)) {
+ end = FORWARD (text, end);
+ }
+ swfdec_text_field_movie_replace_text (text, start, end, "");
+ return;
default:
break;
}
commit 85c07f0858c28370d2acc149310943aa542cb0b4
Author: Benjamin Otte <otte at gnome.org>
Date: Thu Apr 3 16:22:57 2008 +0200
invalidate the movie when setting the cursor
diff --git a/swfdec/swfdec_text_field_movie.c b/swfdec/swfdec_text_field_movie.c
index 07625f5..6eec591 100644
--- a/swfdec/swfdec_text_field_movie.c
+++ b/swfdec/swfdec_text_field_movie.c
@@ -72,9 +72,13 @@ swfdec_text_field_movie_set_cursor (SwfdecTextFieldMovie *text, gsize start, gsi
g_return_if_fail (start <= text->input->len);
g_return_if_fail (end <= text->input->len);
+ if (text->cursor_start == start &&
+ text->cursor_end == end)
+ return;
+
text->cursor_start = start;
text->cursor_end = end;
- /* FIXME: should we invalidate here? */
+ swfdec_movie_invalidate_last (SWFDEC_MOVIE (text));
}
/*** VFUNCS ***/
@@ -1536,7 +1540,6 @@ swfdec_text_field_movie_mouse_press (SwfdecActor *actor, guint button)
if (!before && index_ < text->input->len)
index_++;
swfdec_text_field_movie_set_cursor (text, index_, index_);
- swfdec_movie_invalidate_last (SWFDEC_MOVIE (text));
if (direct) {
text->character_pressed = index_;
@@ -1566,8 +1569,6 @@ swfdec_text_field_movie_mouse_move (SwfdecActor *actor, double x, double y)
index_++;
swfdec_text_field_movie_set_cursor (text, swfdec_text_field_movie_get_cursor (text), index_);
-
- swfdec_movie_invalidate_last (SWFDEC_MOVIE (text));
}
static void
@@ -1634,7 +1635,6 @@ swfdec_text_field_movie_key_press (SwfdecActor *actor, guint keycode, guint char
} else {
swfdec_text_field_movie_set_cursor (text, start, start);
}
- swfdec_movie_invalidate_last (SWFDEC_MOVIE (text));
return;
case SWFDEC_KEY_RIGHT:
if (swfdec_text_field_movie_has_cursor (text)) {
@@ -1645,7 +1645,6 @@ swfdec_text_field_movie_key_press (SwfdecActor *actor, guint keycode, guint char
} else {
swfdec_text_field_movie_set_cursor (text, end, end);
}
- swfdec_movie_invalidate_last (SWFDEC_MOVIE (text));
return;
default:
break;
commit d784f9582d31128a8b1255a522623abc5a04c89e
Author: Benjamin Otte <otte at gnome.org>
Date: Thu Apr 3 16:20:47 2008 +0200
implement backward/forward scrolling with left and right cursor key
diff --git a/swfdec/swfdec_text_field_movie.c b/swfdec/swfdec_text_field_movie.c
index a365bea..07625f5 100644
--- a/swfdec/swfdec_text_field_movie.c
+++ b/swfdec/swfdec_text_field_movie.c
@@ -1619,7 +1619,34 @@ swfdec_text_field_movie_key_press (SwfdecActor *actor, guint keycode, guint char
guint len;
gsize start, end;
+ if (!text->editable)
+ return;
+
+ swfdec_text_field_movie_get_selection (text, &start, &end);
+
switch (keycode) {
+ case SWFDEC_KEY_LEFT:
+ if (swfdec_text_field_movie_has_cursor (text)) {
+ if (start > 0) {
+ start = g_utf8_prev_char (text->input->str + start) - text->input->str;
+ swfdec_text_field_movie_set_cursor (text, start, start);
+ } /* else beep */
+ } else {
+ swfdec_text_field_movie_set_cursor (text, start, start);
+ }
+ swfdec_movie_invalidate_last (SWFDEC_MOVIE (text));
+ return;
+ case SWFDEC_KEY_RIGHT:
+ if (swfdec_text_field_movie_has_cursor (text)) {
+ if (start > 0) {
+ start = g_utf8_next_char (text->input->str + start) - text->input->str;
+ swfdec_text_field_movie_set_cursor (text, start, start);
+ } /* else beep */
+ } else {
+ swfdec_text_field_movie_set_cursor (text, end, end);
+ }
+ swfdec_movie_invalidate_last (SWFDEC_MOVIE (text));
+ return;
default:
break;
}
@@ -1629,7 +1656,6 @@ swfdec_text_field_movie_key_press (SwfdecActor *actor, guint keycode, guint char
len = g_unichar_to_utf8 (character, insert);
insert[len] = 0;
swfdec_sandbox_use (SWFDEC_MOVIE (text)->resource->sandbox);
- swfdec_text_field_movie_get_selection (text, &start, &end);
swfdec_text_field_movie_replace_text (text, start, end, insert);
swfdec_sandbox_unuse (SWFDEC_MOVIE (text)->resource->sandbox);
}
commit 32748b26d47dd8d8eaa404a0566e6134eb397cca
Author: Benjamin Otte <otte at gnome.org>
Date: Thu Apr 3 15:46:19 2008 +0200
set sane properties on cursor
diff --git a/swfdec/swfdec_text_field_movie.c b/swfdec/swfdec_text_field_movie.c
index 110d0c3..a365bea 100644
--- a/swfdec/swfdec_text_field_movie.c
+++ b/swfdec/swfdec_text_field_movie.c
@@ -1006,13 +1006,21 @@ swfdec_text_field_movie_render (SwfdecMovie *movie, cairo_t *cr,
if (layouts[i].index_ <= cursor &&
(layouts[i].index_end > cursor || (layouts[i].index_end == cursor && cursor == text->input->len)) &&
(line == NULL || layouts[i].index_ + line->start_index >= cursor)) {
+ SwfdecTextFormat *format = ((SwfdecFormatIndex *) g_slist_last (text->formats))->format;
PangoRectangle cursor_rect;
+
pango_layout_get_cursor_pos (layouts[i].layout,
swfdec_text_field_movie_get_cursor (text) - layouts[i].index_,
&cursor_rect, NULL);
cairo_save (cr);
- cairo_set_line_width (cr, 1.0);
+ if (format && format->values_set & (1 << SWFDEC_TEXT_FORMAT_COLOR))
+ swfdec_color_set_source (cr, format->color | SWFDEC_COLOR_COMBINE (0, 0, 0, 0xFF));
+ else
+ swfdec_color_set_source (cr, text->format_new->color | SWFDEC_COLOR_COMBINE (0, 0, 0, 0xFF));
+
+ /* FIXME: what's the propwer line width here? */
+ cairo_set_line_width (cr, SWFDEC_DOUBLE_TO_TWIPS (0.5));
cairo_move_to (cr, x + layout->offset_x + rect.x, y - skipped);
cairo_rel_move_to (cr, (double) cursor_rect.x / PANGO_SCALE, (double) cursor_rect.y / PANGO_SCALE);
cairo_rel_line_to (cr, (double) cursor_rect.width / PANGO_SCALE, (double) cursor_rect.height / PANGO_SCALE);
commit db1eb902311874619fead1cf69b41f36c886d6af
Author: Benjamin Otte <otte at gnome.org>
Date: Thu Apr 3 15:46:05 2008 +0200
export the "which property is set" enumeration
diff --git a/swfdec/swfdec_text_format.c b/swfdec/swfdec_text_format.c
index fcc4b85..2f89d68 100644
--- a/swfdec/swfdec_text_format.c
+++ b/swfdec/swfdec_text_format.c
@@ -38,29 +38,6 @@
G_DEFINE_TYPE (SwfdecTextFormat, swfdec_text_format, SWFDEC_TYPE_AS_OBJECT)
-typedef enum {
- PROP_ALIGN = 0,
- PROP_BLOCK_INDENT,
- PROP_BOLD,
- PROP_BULLET,
- PROP_COLOR,
- PROP_DISPLAY,
- PROP_FONT,
- PROP_INDENT,
- PROP_ITALIC,
- PROP_KERNING,
- PROP_LEADING,
- PROP_LEFT_MARGIN,
- PROP_LETTER_SPACING,
- PROP_RIGHT_MARGIN,
- PROP_SIZE,
- PROP_TAB_STOPS,
- PROP_TARGET,
- PROP_UNDERLINE,
- PROP_URL,
- PROP_TOTAL
-} FormatProp;
-
static int property_offsets[] = {
G_STRUCT_OFFSET (SwfdecTextFormat, align),
G_STRUCT_OFFSET (SwfdecTextFormat, block_indent),
@@ -114,28 +91,28 @@ swfdec_text_format_init (SwfdecTextFormat *text_format)
}
static gboolean
-swfdec_text_format_is_set (const SwfdecTextFormat *format, FormatProp property)
+swfdec_text_format_is_set (const SwfdecTextFormat *format, SwfdecTextFormatProperty property)
{
return (format->values_set & (1 << property));
}
static void
swfdec_text_format_mark_set (SwfdecTextFormat *format,
- FormatProp property)
+ SwfdecTextFormatProperty property)
{
format->values_set |= (1 << property);
}
static void
swfdec_text_format_mark_unset (SwfdecTextFormat *format,
- FormatProp property)
+ SwfdecTextFormatProperty property)
{
format->values_set &= ~(1 << property);
}
static void
swfdec_text_format_get_string (SwfdecAsObject *object,
- FormatProp property, SwfdecAsValue *ret)
+ SwfdecTextFormatProperty property, SwfdecAsValue *ret)
{
SwfdecTextFormat *format;
@@ -154,7 +131,7 @@ swfdec_text_format_get_string (SwfdecAsObject *object,
static void
swfdec_text_format_set_string (SwfdecAsObject *object,
- FormatProp property, guint argc, SwfdecAsValue *argv)
+ SwfdecTextFormatProperty property, guint argc, SwfdecAsValue *argv)
{
SwfdecTextFormat *format;
const char *s;
@@ -182,7 +159,7 @@ swfdec_text_format_set_string (SwfdecAsObject *object,
static void
swfdec_text_format_get_boolean (SwfdecAsObject *object,
- FormatProp property, SwfdecAsValue *ret)
+ SwfdecTextFormatProperty property, SwfdecAsValue *ret)
{
SwfdecTextFormat *format;
@@ -204,7 +181,7 @@ swfdec_text_format_get_boolean (SwfdecAsObject *object,
static void
swfdec_text_format_set_boolean (SwfdecAsObject *object,
- FormatProp property, guint argc, SwfdecAsValue *argv)
+ SwfdecTextFormatProperty property, guint argc, SwfdecAsValue *argv)
{
SwfdecTextFormat *format;
@@ -231,7 +208,7 @@ swfdec_text_format_set_boolean (SwfdecAsObject *object,
static void
swfdec_text_format_get_integer (SwfdecAsObject *object,
- FormatProp property, SwfdecAsValue *ret)
+ SwfdecTextFormatProperty property, SwfdecAsValue *ret)
{
SwfdecTextFormat *format;
@@ -290,7 +267,7 @@ swfdec_text_format_value_to_integer (SwfdecAsContext *cx, SwfdecAsValue *val,
static void
swfdec_text_format_set_integer (SwfdecAsObject *object,
- FormatProp property, guint argc, SwfdecAsValue *argv,
+ SwfdecTextFormatProperty property, guint argc, SwfdecAsValue *argv,
gboolean allow_negative)
{
SwfdecTextFormat *format;
@@ -323,7 +300,7 @@ swfdec_text_format_do_get_align (SwfdecAsContext *cx, SwfdecAsObject *object,
return;
format = SWFDEC_TEXT_FORMAT (object);
- if (!swfdec_text_format_is_set (format, PROP_ALIGN)) {
+ if (!swfdec_text_format_is_set (format, SWFDEC_TEXT_FORMAT_ALIGN)) {
SWFDEC_AS_VALUE_SET_NULL (ret);
return;
}
@@ -366,16 +343,16 @@ swfdec_text_format_do_set_align (SwfdecAsContext *cx, SwfdecAsObject *object,
if (!g_ascii_strcasecmp (s, "left")) {
format->align = SWFDEC_TEXT_ALIGN_LEFT;
- swfdec_text_format_mark_set (format, PROP_ALIGN);
+ swfdec_text_format_mark_set (format, SWFDEC_TEXT_FORMAT_ALIGN);
} else if (!g_ascii_strcasecmp (s, "right")) {
format->align = SWFDEC_TEXT_ALIGN_RIGHT;
- swfdec_text_format_mark_set (format, PROP_ALIGN);
+ swfdec_text_format_mark_set (format, SWFDEC_TEXT_FORMAT_ALIGN);
} else if (!g_ascii_strcasecmp (s, "center")) {
format->align = SWFDEC_TEXT_ALIGN_CENTER;
- swfdec_text_format_mark_set (format, PROP_ALIGN);
+ swfdec_text_format_mark_set (format, SWFDEC_TEXT_FORMAT_ALIGN);
} else if (!g_ascii_strcasecmp (s, "justify")) {
format->align = SWFDEC_TEXT_ALIGN_JUSTIFY;
- swfdec_text_format_mark_set (format, PROP_ALIGN);
+ swfdec_text_format_mark_set (format, SWFDEC_TEXT_FORMAT_ALIGN);
}
}
@@ -384,7 +361,7 @@ swfdec_text_format_do_get_block_indent (SwfdecAsContext *cx,
SwfdecAsObject *object, guint argc, SwfdecAsValue *argv,
SwfdecAsValue *ret)
{
- swfdec_text_format_get_integer (object, PROP_BLOCK_INDENT, ret);
+ swfdec_text_format_get_integer (object, SWFDEC_TEXT_FORMAT_BLOCK_INDENT, ret);
}
static void
@@ -392,7 +369,7 @@ swfdec_text_format_do_set_block_indent (SwfdecAsContext *cx,
SwfdecAsObject *object, guint argc, SwfdecAsValue *argv,
SwfdecAsValue *ret)
{
- swfdec_text_format_set_integer (object, PROP_BLOCK_INDENT, argc, argv,
+ swfdec_text_format_set_integer (object, SWFDEC_TEXT_FORMAT_BLOCK_INDENT, argc, argv,
cx->version >= 8);
}
@@ -400,28 +377,28 @@ static void
swfdec_text_format_do_get_bold (SwfdecAsContext *cx, SwfdecAsObject *object,
guint argc, SwfdecAsValue *argv, SwfdecAsValue *ret)
{
- swfdec_text_format_get_boolean (object, PROP_BOLD, ret);
+ swfdec_text_format_get_boolean (object, SWFDEC_TEXT_FORMAT_BOLD, ret);
}
static void
swfdec_text_format_do_set_bold (SwfdecAsContext *cx, SwfdecAsObject *object,
guint argc, SwfdecAsValue *argv, SwfdecAsValue *ret)
{
- swfdec_text_format_set_boolean (object, PROP_BOLD, argc, argv);
+ swfdec_text_format_set_boolean (object, SWFDEC_TEXT_FORMAT_BOLD, argc, argv);
}
static void
swfdec_text_format_do_get_bullet (SwfdecAsContext *cx, SwfdecAsObject *object,
guint argc, SwfdecAsValue *argv, SwfdecAsValue *ret)
{
- swfdec_text_format_get_boolean (object, PROP_BULLET, ret);
+ swfdec_text_format_get_boolean (object, SWFDEC_TEXT_FORMAT_BULLET, ret);
}
static void
swfdec_text_format_do_set_bullet (SwfdecAsContext *cx, SwfdecAsObject *object,
guint argc, SwfdecAsValue *argv, SwfdecAsValue *ret)
{
- swfdec_text_format_set_boolean (object, PROP_BULLET, argc, argv);
+ swfdec_text_format_set_boolean (object, SWFDEC_TEXT_FORMAT_BULLET, argc, argv);
}
static void
@@ -434,7 +411,7 @@ swfdec_text_format_do_get_color (SwfdecAsContext *cx, SwfdecAsObject *object,
return;
format = SWFDEC_TEXT_FORMAT (object);
- if (!swfdec_text_format_is_set (format, PROP_COLOR)) {
+ if (!swfdec_text_format_is_set (format, SWFDEC_TEXT_FORMAT_COLOR)) {
SWFDEC_AS_VALUE_SET_NULL (ret);
return;
}
@@ -457,13 +434,13 @@ swfdec_text_format_do_set_color (SwfdecAsContext *cx, SwfdecAsObject *object,
if (SWFDEC_AS_VALUE_IS_UNDEFINED (&argv[0]) ||
SWFDEC_AS_VALUE_IS_NULL (&argv[0])) {
- swfdec_text_format_mark_unset (format, PROP_COLOR);
+ swfdec_text_format_mark_unset (format, SWFDEC_TEXT_FORMAT_COLOR);
} else {
format->color = (unsigned) swfdec_as_value_to_integer (cx, &argv[0]);
swfdec_as_value_to_integer (cx, &argv[0]);
swfdec_as_value_to_string (cx, &argv[0]);
- swfdec_text_format_mark_set (format, PROP_COLOR);
+ swfdec_text_format_mark_set (format, SWFDEC_TEXT_FORMAT_COLOR);
}
}
@@ -477,7 +454,7 @@ swfdec_text_format_do_get_display (SwfdecAsContext *cx, SwfdecAsObject *object,
return;
format = SWFDEC_TEXT_FORMAT (object);
- if (!swfdec_text_format_is_set (format, PROP_DISPLAY))
+ if (!swfdec_text_format_is_set (format, SWFDEC_TEXT_FORMAT_DISPLAY))
{
SWFDEC_AS_VALUE_SET_NULL (ret);
return;
@@ -522,35 +499,35 @@ swfdec_text_format_do_set_display (SwfdecAsContext *cx, SwfdecAsObject *object,
format->display = SWFDEC_TEXT_DISPLAY_BLOCK;
}
- swfdec_text_format_mark_set (format, PROP_DISPLAY);
+ swfdec_text_format_mark_set (format, SWFDEC_TEXT_FORMAT_DISPLAY);
}
static void
swfdec_text_format_do_get_font (SwfdecAsContext *cx, SwfdecAsObject *object,
guint argc, SwfdecAsValue *argv, SwfdecAsValue *ret)
{
- swfdec_text_format_get_string (object, PROP_FONT, ret);
+ swfdec_text_format_get_string (object, SWFDEC_TEXT_FORMAT_FONT, ret);
}
static void
swfdec_text_format_do_set_font (SwfdecAsContext *cx, SwfdecAsObject *object,
guint argc, SwfdecAsValue *argv, SwfdecAsValue *ret)
{
- swfdec_text_format_set_string (object, PROP_FONT, argc, argv);
+ swfdec_text_format_set_string (object, SWFDEC_TEXT_FORMAT_FONT, argc, argv);
}
static void
swfdec_text_format_do_get_indent (SwfdecAsContext *cx, SwfdecAsObject *object,
guint argc, SwfdecAsValue *argv, SwfdecAsValue *ret)
{
- swfdec_text_format_get_integer (object, PROP_INDENT, ret);
+ swfdec_text_format_get_integer (object, SWFDEC_TEXT_FORMAT_INDENT, ret);
}
static void
swfdec_text_format_do_set_indent (SwfdecAsContext *cx, SwfdecAsObject *object,
guint argc, SwfdecAsValue *argv, SwfdecAsValue *ret)
{
- swfdec_text_format_set_integer (object, PROP_INDENT, argc, argv,
+ swfdec_text_format_set_integer (object, SWFDEC_TEXT_FORMAT_INDENT, argc, argv,
cx->version >= 8);
}
@@ -558,42 +535,42 @@ static void
swfdec_text_format_do_get_italic (SwfdecAsContext *cx, SwfdecAsObject *object,
guint argc, SwfdecAsValue *argv, SwfdecAsValue *ret)
{
- swfdec_text_format_get_boolean (object, PROP_ITALIC, ret);
+ swfdec_text_format_get_boolean (object, SWFDEC_TEXT_FORMAT_ITALIC, ret);
}
static void
swfdec_text_format_do_set_italic (SwfdecAsContext *cx, SwfdecAsObject *object,
guint argc, SwfdecAsValue *argv, SwfdecAsValue *ret)
{
- swfdec_text_format_set_boolean (object, PROP_ITALIC, argc, argv);
+ swfdec_text_format_set_boolean (object, SWFDEC_TEXT_FORMAT_ITALIC, argc, argv);
}
static void
swfdec_text_format_do_get_kerning (SwfdecAsContext *cx, SwfdecAsObject *object,
guint argc, SwfdecAsValue *argv, SwfdecAsValue *ret)
{
- swfdec_text_format_get_boolean (object, PROP_KERNING, ret);
+ swfdec_text_format_get_boolean (object, SWFDEC_TEXT_FORMAT_KERNING, ret);
}
static void
swfdec_text_format_do_set_kerning (SwfdecAsContext *cx, SwfdecAsObject *object,
guint argc, SwfdecAsValue *argv, SwfdecAsValue *ret)
{
- swfdec_text_format_set_boolean (object, PROP_KERNING, argc, argv);
+ swfdec_text_format_set_boolean (object, SWFDEC_TEXT_FORMAT_KERNING, argc, argv);
}
static void
swfdec_text_format_do_get_leading (SwfdecAsContext *cx, SwfdecAsObject *object,
guint argc, SwfdecAsValue *argv, SwfdecAsValue *ret)
{
- swfdec_text_format_get_integer (object, PROP_LEADING, ret);
+ swfdec_text_format_get_integer (object, SWFDEC_TEXT_FORMAT_LEADING, ret);
}
static void
swfdec_text_format_do_set_leading (SwfdecAsContext *cx, SwfdecAsObject *object,
guint argc, SwfdecAsValue *argv, SwfdecAsValue *ret)
{
- swfdec_text_format_set_integer (object, PROP_LEADING, argc, argv,
+ swfdec_text_format_set_integer (object, SWFDEC_TEXT_FORMAT_LEADING, argc, argv,
cx->version >= 8);
}
@@ -602,7 +579,7 @@ swfdec_text_format_do_get_left_margin (SwfdecAsContext *cx,
SwfdecAsObject *object, guint argc, SwfdecAsValue *argv,
SwfdecAsValue *ret)
{
- swfdec_text_format_get_integer (object, PROP_LEFT_MARGIN, ret);
+ swfdec_text_format_get_integer (object, SWFDEC_TEXT_FORMAT_LEFT_MARGIN, ret);
}
static void
@@ -610,7 +587,7 @@ swfdec_text_format_do_set_left_margin (SwfdecAsContext *cx,
SwfdecAsObject *object, guint argc, SwfdecAsValue *argv,
SwfdecAsValue *ret)
{
- swfdec_text_format_set_integer (object, PROP_LEFT_MARGIN, argc, argv, FALSE);
+ swfdec_text_format_set_integer (object, SWFDEC_TEXT_FORMAT_LEFT_MARGIN, argc, argv, FALSE);
}
static void
@@ -624,7 +601,7 @@ swfdec_text_format_do_get_letter_spacing (SwfdecAsContext *cx,
return;
format = SWFDEC_TEXT_FORMAT (object);
- if (!swfdec_text_format_is_set (format, PROP_LETTER_SPACING)) {
+ if (!swfdec_text_format_is_set (format, SWFDEC_TEXT_FORMAT_LETTER_SPACING)) {
SWFDEC_AS_VALUE_SET_NULL (ret);
return;
}
@@ -655,13 +632,13 @@ swfdec_text_format_do_set_letter_spacing (SwfdecAsContext *cx,
SWFDEC_AS_VALUE_IS_NULL (&argv[0]))
{
swfdec_text_format_mark_unset (format,
- PROP_LETTER_SPACING);
+ SWFDEC_TEXT_FORMAT_LETTER_SPACING);
}
else
{
format->letter_spacing = d;
swfdec_text_format_mark_set (format,
- PROP_LETTER_SPACING);
+ SWFDEC_TEXT_FORMAT_LETTER_SPACING);
}
}
@@ -670,7 +647,7 @@ swfdec_text_format_do_get_right_margin (SwfdecAsContext *cx,
SwfdecAsObject *object, guint argc, SwfdecAsValue *argv,
SwfdecAsValue *ret)
{
- swfdec_text_format_get_integer (object, PROP_RIGHT_MARGIN, ret);
+ swfdec_text_format_get_integer (object, SWFDEC_TEXT_FORMAT_RIGHT_MARGIN, ret);
}
static void
@@ -678,7 +655,7 @@ swfdec_text_format_do_set_right_margin (SwfdecAsContext *cx,
SwfdecAsObject *object, guint argc, SwfdecAsValue *argv,
SwfdecAsValue *ret)
{
- swfdec_text_format_set_integer (object, PROP_RIGHT_MARGIN, argc, argv,
+ swfdec_text_format_set_integer (object, SWFDEC_TEXT_FORMAT_RIGHT_MARGIN, argc, argv,
FALSE);
}
@@ -686,14 +663,14 @@ static void
swfdec_text_format_do_get_size (SwfdecAsContext *cx, SwfdecAsObject *object,
guint argc, SwfdecAsValue *argv, SwfdecAsValue *ret)
{
- swfdec_text_format_get_integer (object, PROP_SIZE, ret);
+ swfdec_text_format_get_integer (object, SWFDEC_TEXT_FORMAT_SIZE, ret);
}
static void
swfdec_text_format_do_set_size (SwfdecAsContext *cx, SwfdecAsObject *object,
guint argc, SwfdecAsValue *argv, SwfdecAsValue *ret)
{
- swfdec_text_format_set_integer (object, PROP_SIZE, argc, argv, TRUE);
+ swfdec_text_format_set_integer (object, SWFDEC_TEXT_FORMAT_SIZE, argc, argv, TRUE);
}
static void
@@ -707,7 +684,7 @@ swfdec_text_format_do_get_tab_stops (SwfdecAsContext *cx,
return;
format = SWFDEC_TEXT_FORMAT (object);
- if (!swfdec_text_format_is_set (format, PROP_TAB_STOPS)) {
+ if (!swfdec_text_format_is_set (format, SWFDEC_TEXT_FORMAT_TAB_STOPS)) {
SWFDEC_AS_VALUE_SET_NULL (ret);
return;
}
@@ -738,7 +715,7 @@ swfdec_text_format_do_set_tab_stops (SwfdecAsContext *cx,
SWFDEC_AS_VALUE_IS_NULL (&argv[0]))
{
format->tab_stops = NULL;
- swfdec_text_format_mark_unset (format, PROP_TAB_STOPS);
+ swfdec_text_format_mark_unset (format, SWFDEC_TEXT_FORMAT_TAB_STOPS);
}
else if (SWFDEC_AS_VALUE_IS_OBJECT (&argv[0]) &&
SWFDEC_IS_AS_ARRAY (SWFDEC_AS_VALUE_GET_OBJECT (&argv[0])))
@@ -751,14 +728,14 @@ swfdec_text_format_do_set_tab_stops (SwfdecAsContext *cx,
array = SWFDEC_AS_ARRAY (SWFDEC_AS_VALUE_GET_OBJECT (&argv[0]));
len = swfdec_as_array_get_length (array);
- if (!swfdec_text_format_is_set (format, PROP_TAB_STOPS)) {
+ if (!swfdec_text_format_is_set (format, SWFDEC_TEXT_FORMAT_TAB_STOPS)) {
// special case, if we have null and array is empty, keep it at null
if (len == 0)
return;
format->tab_stops = SWFDEC_AS_ARRAY (swfdec_as_array_new (cx));
if (!format->tab_stops)
return;
- swfdec_text_format_mark_set (format, PROP_TAB_STOPS);
+ swfdec_text_format_mark_set (format, SWFDEC_TEXT_FORMAT_TAB_STOPS);
}
swfdec_as_array_set_length (format->tab_stops, 0);
@@ -780,11 +757,11 @@ swfdec_text_format_do_set_tab_stops (SwfdecAsContext *cx,
if (len == 0) {
format->tab_stops = NULL;
swfdec_text_format_mark_unset (format,
- PROP_TAB_STOPS);
+ SWFDEC_TEXT_FORMAT_TAB_STOPS);
} else {
format->tab_stops = SWFDEC_AS_ARRAY (swfdec_as_array_new (cx));
if (format->tab_stops != NULL) {
- swfdec_text_format_mark_set (format, PROP_TAB_STOPS);
+ swfdec_text_format_mark_set (format, SWFDEC_TEXT_FORMAT_TAB_STOPS);
if (cx->version >= 8) {
SWFDEC_AS_VALUE_SET_INT (&val, -2147483648);
} else {
@@ -794,14 +771,14 @@ swfdec_text_format_do_set_tab_stops (SwfdecAsContext *cx,
swfdec_as_array_push (format->tab_stops, &val);
}
} else {
- swfdec_text_format_mark_unset (format, PROP_TAB_STOPS);
+ swfdec_text_format_mark_unset (format, SWFDEC_TEXT_FORMAT_TAB_STOPS);
}
}
}
- else if (swfdec_text_format_is_set (format, PROP_TAB_STOPS))
+ else if (swfdec_text_format_is_set (format, SWFDEC_TEXT_FORMAT_TAB_STOPS))
{
swfdec_as_array_set_length (format->tab_stops, 0);
- swfdec_text_format_mark_set (format, PROP_TAB_STOPS);
+ swfdec_text_format_mark_set (format, SWFDEC_TEXT_FORMAT_TAB_STOPS);
}
}
@@ -809,14 +786,14 @@ static void
swfdec_text_format_do_get_target (SwfdecAsContext *cx, SwfdecAsObject *object,
guint argc, SwfdecAsValue *argv, SwfdecAsValue *ret)
{
- swfdec_text_format_get_string (object, PROP_TARGET, ret);
+ swfdec_text_format_get_string (object, SWFDEC_TEXT_FORMAT_TARGET, ret);
}
static void
swfdec_text_format_do_set_target (SwfdecAsContext *cx, SwfdecAsObject *object,
guint argc, SwfdecAsValue *argv, SwfdecAsValue *ret)
{
- swfdec_text_format_set_string (object, PROP_TARGET, argc, argv);
+ swfdec_text_format_set_string (object, SWFDEC_TEXT_FORMAT_TARGET, argc, argv);
}
static void
@@ -824,7 +801,7 @@ swfdec_text_format_do_get_underline (SwfdecAsContext *cx,
SwfdecAsObject *object, guint argc, SwfdecAsValue *argv,
SwfdecAsValue *ret)
{
- swfdec_text_format_get_boolean (object, PROP_UNDERLINE, ret);
+ swfdec_text_format_get_boolean (object, SWFDEC_TEXT_FORMAT_UNDERLINE, ret);
}
static void
@@ -832,21 +809,21 @@ swfdec_text_format_do_set_underline (SwfdecAsContext *cx,
SwfdecAsObject *object, guint argc, SwfdecAsValue *argv,
SwfdecAsValue *ret)
{
- swfdec_text_format_set_boolean (object, PROP_UNDERLINE, argc, argv);
+ swfdec_text_format_set_boolean (object, SWFDEC_TEXT_FORMAT_UNDERLINE, argc, argv);
}
static void
swfdec_text_format_do_get_url (SwfdecAsContext *cx, SwfdecAsObject *object,
guint argc, SwfdecAsValue *argv, SwfdecAsValue *ret)
{
- swfdec_text_format_get_string (object, PROP_URL, ret);
+ swfdec_text_format_get_string (object, SWFDEC_TEXT_FORMAT_URL, ret);
}
static void
swfdec_text_format_do_set_url (SwfdecAsContext *cx, SwfdecAsObject *object,
guint argc, SwfdecAsValue *argv, SwfdecAsValue *ret)
{
- swfdec_text_format_set_string (object, PROP_URL, argc, argv);
+ swfdec_text_format_set_string (object, SWFDEC_TEXT_FORMAT_URL, argc, argv);
}
static void
@@ -931,43 +908,43 @@ swfdec_text_format_add (SwfdecTextFormat *format, const SwfdecTextFormat *from)
g_return_if_fail (SWFDEC_IS_TEXT_FORMAT (format));
g_return_if_fail (SWFDEC_IS_TEXT_FORMAT (from));
- if (swfdec_text_format_is_set (from, PROP_ALIGN))
+ if (swfdec_text_format_is_set (from, SWFDEC_TEXT_FORMAT_ALIGN))
format->align = from->align;
- if (swfdec_text_format_is_set (from, PROP_BLOCK_INDENT))
+ if (swfdec_text_format_is_set (from, SWFDEC_TEXT_FORMAT_BLOCK_INDENT))
format->block_indent = from->block_indent;
- if (swfdec_text_format_is_set (from, PROP_BOLD))
+ if (swfdec_text_format_is_set (from, SWFDEC_TEXT_FORMAT_BOLD))
format->bold = from->bold;
- if (swfdec_text_format_is_set (from, PROP_BULLET))
+ if (swfdec_text_format_is_set (from, SWFDEC_TEXT_FORMAT_BULLET))
format->bullet = from->bullet;
- if (swfdec_text_format_is_set (from, PROP_COLOR))
+ if (swfdec_text_format_is_set (from, SWFDEC_TEXT_FORMAT_COLOR))
format->color = from->color;
- if (swfdec_text_format_is_set (from, PROP_DISPLAY))
+ if (swfdec_text_format_is_set (from, SWFDEC_TEXT_FORMAT_DISPLAY))
format->display = from->display;
- if (swfdec_text_format_is_set (from, PROP_FONT))
+ if (swfdec_text_format_is_set (from, SWFDEC_TEXT_FORMAT_FONT))
format->font = from->font;
- if (swfdec_text_format_is_set (from, PROP_INDENT))
+ if (swfdec_text_format_is_set (from, SWFDEC_TEXT_FORMAT_INDENT))
format->indent = from->indent;
- if (swfdec_text_format_is_set (from, PROP_ITALIC))
+ if (swfdec_text_format_is_set (from, SWFDEC_TEXT_FORMAT_ITALIC))
format->italic = from->italic ;
- if (swfdec_text_format_is_set (from, PROP_KERNING))
+ if (swfdec_text_format_is_set (from, SWFDEC_TEXT_FORMAT_KERNING))
format->kerning = from->kerning;
- if (swfdec_text_format_is_set (from, PROP_LEADING))
+ if (swfdec_text_format_is_set (from, SWFDEC_TEXT_FORMAT_LEADING))
format->leading = from->leading;
- if (swfdec_text_format_is_set (from, PROP_LEFT_MARGIN))
+ if (swfdec_text_format_is_set (from, SWFDEC_TEXT_FORMAT_LEFT_MARGIN))
format->left_margin = from->left_margin;
- if (swfdec_text_format_is_set (from, PROP_LETTER_SPACING))
+ if (swfdec_text_format_is_set (from, SWFDEC_TEXT_FORMAT_LETTER_SPACING))
format->letter_spacing = from->letter_spacing;
- if (swfdec_text_format_is_set (from, PROP_RIGHT_MARGIN))
+ if (swfdec_text_format_is_set (from, SWFDEC_TEXT_FORMAT_RIGHT_MARGIN))
format->right_margin = from->right_margin;
- if (swfdec_text_format_is_set (from, PROP_SIZE))
+ if (swfdec_text_format_is_set (from, SWFDEC_TEXT_FORMAT_SIZE))
format->size = from->size;
- if (swfdec_text_format_is_set (from, PROP_TAB_STOPS))
+ if (swfdec_text_format_is_set (from, SWFDEC_TEXT_FORMAT_TAB_STOPS))
format->tab_stops = from->tab_stops;
- if (swfdec_text_format_is_set (from, PROP_TARGET))
+ if (swfdec_text_format_is_set (from, SWFDEC_TEXT_FORMAT_TARGET))
format->target = from->target;
- if (swfdec_text_format_is_set (from, PROP_UNDERLINE))
+ if (swfdec_text_format_is_set (from, SWFDEC_TEXT_FORMAT_UNDERLINE))
format->underline = from->underline;
- if (swfdec_text_format_is_set (from, PROP_URL))
+ if (swfdec_text_format_is_set (from, SWFDEC_TEXT_FORMAT_URL))
format->url = from->url;
format->values_set |= from->values_set;
@@ -984,52 +961,52 @@ swfdec_text_format_remove_different (SwfdecTextFormat *format,
set = format->values_set & from->values_set;
- if (set & (1 << PROP_ALIGN) && format->align != from->align)
- set &= ~(1 << PROP_ALIGN);
- if (set & (1 << PROP_BLOCK_INDENT) &&
+ if (set & (1 << SWFDEC_TEXT_FORMAT_ALIGN) && format->align != from->align)
+ set &= ~(1 << SWFDEC_TEXT_FORMAT_ALIGN);
+ if (set & (1 << SWFDEC_TEXT_FORMAT_BLOCK_INDENT) &&
format->block_indent != from->block_indent) {
- set &= ~(1 << PROP_BLOCK_INDENT);
+ set &= ~(1 << SWFDEC_TEXT_FORMAT_BLOCK_INDENT);
}
- if (set & (1 << PROP_BOLD) && format->bold != from->bold)
- set &= ~(1 << PROP_BOLD);
- if (set & (1 << PROP_BULLET) && format->bullet != from->bullet)
- set &= ~(1 << PROP_BULLET);
- if (set & (1 << PROP_COLOR) && format->color != from->color)
- set &= ~(1 << PROP_COLOR);
- if (set & (1 << PROP_DISPLAY) && format->display != from->display)
- set &= ~(1 << PROP_DISPLAY);
- if (set & (1 << PROP_FONT) && format->font != from->font)
- set &= ~(1 << PROP_FONT);
- if (set & (1 << PROP_INDENT) && format->indent != from->indent)
- set &= ~(1 << PROP_INDENT);
- if (set & (1 << PROP_ITALIC) && format->italic != from->italic)
- set &= ~(1 << PROP_ITALIC);
- if (set & (1 << PROP_KERNING) && format->kerning != from->kerning)
- set &= ~(1 << PROP_KERNING);
- if (set & (1 << PROP_LEADING) && format->leading != from->leading)
- set &= ~(1 << PROP_LEADING);
- if (set & (1 << PROP_LEFT_MARGIN) &&
+ if (set & (1 << SWFDEC_TEXT_FORMAT_BOLD) && format->bold != from->bold)
+ set &= ~(1 << SWFDEC_TEXT_FORMAT_BOLD);
+ if (set & (1 << SWFDEC_TEXT_FORMAT_BULLET) && format->bullet != from->bullet)
+ set &= ~(1 << SWFDEC_TEXT_FORMAT_BULLET);
+ if (set & (1 << SWFDEC_TEXT_FORMAT_COLOR) && format->color != from->color)
+ set &= ~(1 << SWFDEC_TEXT_FORMAT_COLOR);
+ if (set & (1 << SWFDEC_TEXT_FORMAT_DISPLAY) && format->display != from->display)
+ set &= ~(1 << SWFDEC_TEXT_FORMAT_DISPLAY);
+ if (set & (1 << SWFDEC_TEXT_FORMAT_FONT) && format->font != from->font)
+ set &= ~(1 << SWFDEC_TEXT_FORMAT_FONT);
+ if (set & (1 << SWFDEC_TEXT_FORMAT_INDENT) && format->indent != from->indent)
+ set &= ~(1 << SWFDEC_TEXT_FORMAT_INDENT);
+ if (set & (1 << SWFDEC_TEXT_FORMAT_ITALIC) && format->italic != from->italic)
+ set &= ~(1 << SWFDEC_TEXT_FORMAT_ITALIC);
+ if (set & (1 << SWFDEC_TEXT_FORMAT_KERNING) && format->kerning != from->kerning)
+ set &= ~(1 << SWFDEC_TEXT_FORMAT_KERNING);
+ if (set & (1 << SWFDEC_TEXT_FORMAT_LEADING) && format->leading != from->leading)
+ set &= ~(1 << SWFDEC_TEXT_FORMAT_LEADING);
+ if (set & (1 << SWFDEC_TEXT_FORMAT_LEFT_MARGIN) &&
format->left_margin != from->left_margin) {
- set &= ~(1 << PROP_LEFT_MARGIN);
+ set &= ~(1 << SWFDEC_TEXT_FORMAT_LEFT_MARGIN);
}
- if (set & (1 << PROP_LETTER_SPACING) &&
+ if (set & (1 << SWFDEC_TEXT_FORMAT_LETTER_SPACING) &&
format->letter_spacing != from->letter_spacing) {
- set &= ~(1 << PROP_LETTER_SPACING);
+ set &= ~(1 << SWFDEC_TEXT_FORMAT_LETTER_SPACING);
}
- if (set & (1 << PROP_RIGHT_MARGIN) &&
+ if (set & (1 << SWFDEC_TEXT_FORMAT_RIGHT_MARGIN) &&
format->right_margin != from->right_margin) {
- set &= ~(1 << PROP_RIGHT_MARGIN);
+ set &= ~(1 << SWFDEC_TEXT_FORMAT_RIGHT_MARGIN);
}
- if (set & (1 << PROP_SIZE) && format->size != from->size)
- set &= ~(1 << PROP_SIZE);
- if (set & (1 << PROP_TAB_STOPS) && format->tab_stops != from->tab_stops)
- set &= ~(1 << PROP_TAB_STOPS);
- if (set & (1 << PROP_TARGET) && format->target != from->target)
- set &= ~(1 << PROP_TARGET);
- if (set & (1 << PROP_UNDERLINE) && format->underline != from->underline)
- set &= ~(1 << PROP_UNDERLINE);
- if (set & (1 << PROP_URL) && format->url != from->url)
- set &= ~(1 << PROP_URL);
+ if (set & (1 << SWFDEC_TEXT_FORMAT_SIZE) && format->size != from->size)
+ set &= ~(1 << SWFDEC_TEXT_FORMAT_SIZE);
+ if (set & (1 << SWFDEC_TEXT_FORMAT_TAB_STOPS) && format->tab_stops != from->tab_stops)
+ set &= ~(1 << SWFDEC_TEXT_FORMAT_TAB_STOPS);
+ if (set & (1 << SWFDEC_TEXT_FORMAT_TARGET) && format->target != from->target)
+ set &= ~(1 << SWFDEC_TEXT_FORMAT_TARGET);
+ if (set & (1 << SWFDEC_TEXT_FORMAT_UNDERLINE) && format->underline != from->underline)
+ set &= ~(1 << SWFDEC_TEXT_FORMAT_UNDERLINE);
+ if (set & (1 << SWFDEC_TEXT_FORMAT_URL) && format->url != from->url)
+ set &= ~(1 << SWFDEC_TEXT_FORMAT_URL);
format->values_set = set;
}
@@ -1045,45 +1022,45 @@ swfdec_text_format_equal_or_undefined (const SwfdecTextFormat *a,
g_return_val_if_fail (SWFDEC_IS_TEXT_FORMAT (a), FALSE);
g_return_val_if_fail (SWFDEC_IS_TEXT_FORMAT (b), FALSE);
- if (set & (1 << PROP_ALIGN) && a->align != b->align)
+ if (set & (1 << SWFDEC_TEXT_FORMAT_ALIGN) && a->align != b->align)
return FALSE;
- if (set & (1 << PROP_BLOCK_INDENT) && a->block_indent != b->block_indent)
+ if (set & (1 << SWFDEC_TEXT_FORMAT_BLOCK_INDENT) && a->block_indent != b->block_indent)
return FALSE;
- if (set & (1 << PROP_BOLD) && a->bold != b->bold)
+ if (set & (1 << SWFDEC_TEXT_FORMAT_BOLD) && a->bold != b->bold)
return FALSE;
- if (set & (1 << PROP_BULLET) && a->bullet != b->bullet)
+ if (set & (1 << SWFDEC_TEXT_FORMAT_BULLET) && a->bullet != b->bullet)
return FALSE;
- if (set & (1 << PROP_COLOR) && a->color != b->color)
+ if (set & (1 << SWFDEC_TEXT_FORMAT_COLOR) && a->color != b->color)
return FALSE;
- if (set & (1 << PROP_DISPLAY) && a->display != b->display)
+ if (set & (1 << SWFDEC_TEXT_FORMAT_DISPLAY) && a->display != b->display)
return FALSE;
- if (set & (1 << PROP_FONT) && a->font != b->font)
+ if (set & (1 << SWFDEC_TEXT_FORMAT_FONT) && a->font != b->font)
return FALSE;
- if (set & (1 << PROP_INDENT) && a->indent != b->indent)
+ if (set & (1 << SWFDEC_TEXT_FORMAT_INDENT) && a->indent != b->indent)
return FALSE;
- if (set & (1 << PROP_ITALIC) && a->italic != b->italic)
+ if (set & (1 << SWFDEC_TEXT_FORMAT_ITALIC) && a->italic != b->italic)
return FALSE;
- if (set & (1 << PROP_KERNING) && a->kerning != b->kerning)
+ if (set & (1 << SWFDEC_TEXT_FORMAT_KERNING) && a->kerning != b->kerning)
return FALSE;
- if (set & (1 << PROP_LEADING) && a->leading != b->leading)
+ if (set & (1 << SWFDEC_TEXT_FORMAT_LEADING) && a->leading != b->leading)
return FALSE;
- if (set & (1 << PROP_LEFT_MARGIN) && a->left_margin != b->left_margin)
+ if (set & (1 << SWFDEC_TEXT_FORMAT_LEFT_MARGIN) && a->left_margin != b->left_margin)
return FALSE;
- if (set & (1 << PROP_LETTER_SPACING) &&
+ if (set & (1 << SWFDEC_TEXT_FORMAT_LETTER_SPACING) &&
a->letter_spacing != b->letter_spacing) {
return FALSE;
}
- if (set & (1 << PROP_RIGHT_MARGIN) && a->right_margin != b->right_margin)
+ if (set & (1 << SWFDEC_TEXT_FORMAT_RIGHT_MARGIN) && a->right_margin != b->right_margin)
return FALSE;
- if (set & (1 << PROP_SIZE) && a->size != b->size)
+ if (set & (1 << SWFDEC_TEXT_FORMAT_SIZE) && a->size != b->size)
return FALSE;
- if (set & (1 << PROP_TAB_STOPS) && a->tab_stops != b->tab_stops)
+ if (set & (1 << SWFDEC_TEXT_FORMAT_TAB_STOPS) && a->tab_stops != b->tab_stops)
return FALSE;
- if (set & (1 << PROP_TARGET) && a->target != b->target)
+ if (set & (1 << SWFDEC_TEXT_FORMAT_TARGET) && a->target != b->target)
return FALSE;
- if (set & (1 << PROP_UNDERLINE) && a->underline != b->underline)
+ if (set & (1 << SWFDEC_TEXT_FORMAT_UNDERLINE) && a->underline != b->underline)
return FALSE;
- if (set & (1 << PROP_URL) && a->url != b->url)
+ if (set & (1 << SWFDEC_TEXT_FORMAT_URL) && a->url != b->url)
return FALSE;
return TRUE;
@@ -1125,11 +1102,11 @@ swfdec_text_format_set_defaults (SwfdecTextFormat *format)
format->url = SWFDEC_AS_STR_EMPTY;
format->underline = FALSE;
- format->values_set = (1 << PROP_TOTAL) - 1;
+ format->values_set = (1 << SWFDEC_TEXT_FORMAT_TOTAL) - 1;
if (SWFDEC_AS_OBJECT (format)->context->version < 8) {
- swfdec_text_format_mark_unset (format, PROP_KERNING);
- swfdec_text_format_mark_unset (format, PROP_LETTER_SPACING);
+ swfdec_text_format_mark_unset (format, SWFDEC_TEXT_FORMAT_KERNING);
+ swfdec_text_format_mark_unset (format, SWFDEC_TEXT_FORMAT_LETTER_SPACING);
}
}
@@ -1143,7 +1120,7 @@ swfdec_text_format_clear (SwfdecTextFormat *format)
format->values_set = 0;
format->display = SWFDEC_TEXT_DISPLAY_BLOCK;
- swfdec_text_format_mark_set (format, PROP_DISPLAY);
+ swfdec_text_format_mark_set (format, SWFDEC_TEXT_FORMAT_DISPLAY);
}
void
diff --git a/swfdec/swfdec_text_format.h b/swfdec/swfdec_text_format.h
index 34e1e5e..00a7d46 100644
--- a/swfdec/swfdec_text_format.h
+++ b/swfdec/swfdec_text_format.h
@@ -51,6 +51,29 @@ typedef enum {
SWFDEC_TEXT_DISPLAY_BLOCK,
} SwfdecTextDisplay;
+typedef enum {
+ SWFDEC_TEXT_FORMAT_ALIGN = 0,
+ SWFDEC_TEXT_FORMAT_BLOCK_INDENT,
+ SWFDEC_TEXT_FORMAT_BOLD,
+ SWFDEC_TEXT_FORMAT_BULLET,
+ SWFDEC_TEXT_FORMAT_COLOR,
+ SWFDEC_TEXT_FORMAT_DISPLAY,
+ SWFDEC_TEXT_FORMAT_FONT,
+ SWFDEC_TEXT_FORMAT_INDENT,
+ SWFDEC_TEXT_FORMAT_ITALIC,
+ SWFDEC_TEXT_FORMAT_KERNING,
+ SWFDEC_TEXT_FORMAT_LEADING,
+ SWFDEC_TEXT_FORMAT_LEFT_MARGIN,
+ SWFDEC_TEXT_FORMAT_LETTER_SPACING,
+ SWFDEC_TEXT_FORMAT_RIGHT_MARGIN,
+ SWFDEC_TEXT_FORMAT_SIZE,
+ SWFDEC_TEXT_FORMAT_TAB_STOPS,
+ SWFDEC_TEXT_FORMAT_TARGET,
+ SWFDEC_TEXT_FORMAT_UNDERLINE,
+ SWFDEC_TEXT_FORMAT_URL,
+ SWFDEC_TEXT_FORMAT_TOTAL
+} SwfdecTextFormatProperty;
+
struct _SwfdecTextFormat {
SwfdecAsObject object;
commit 4c674d0a545a2bce4389c81935c0f8999f74873d
Author: Benjamin Otte <otte at gnome.org>
Date: Thu Apr 3 13:36:41 2008 +0200
initial attempt at rendering a cursor
diff --git a/swfdec/swfdec_text_field_movie.c b/swfdec/swfdec_text_field_movie.c
index c8fb985..110d0c3 100644
--- a/swfdec/swfdec_text_field_movie.c
+++ b/swfdec/swfdec_text_field_movie.c
@@ -840,6 +840,14 @@ swfdec_text_field_movie_line_position (SwfdecLayout *layouts, int line_num,
*layout_num = i;
}
+static gboolean
+swfdec_text_field_movie_has_focus (SwfdecTextFieldMovie *text)
+{
+ SwfdecPlayer *player = SWFDEC_PLAYER (SWFDEC_AS_OBJECT (text)->context);
+
+ return swfdec_player_has_focus (player, SWFDEC_ACTOR (text));
+}
+
static void
swfdec_text_field_movie_render (SwfdecMovie *movie, cairo_t *cr,
const SwfdecColorTransform *trans, const SwfdecRect *inval)
@@ -851,6 +859,7 @@ swfdec_text_field_movie_render (SwfdecMovie *movie, cairo_t *cr,
SwfdecParagraph *paragraphs;
int i, y, x, skip;
gboolean first;
+ gsize cursor;
g_return_if_fail (SWFDEC_IS_TEXT_FIELD_MOVIE (movie));
g_return_if_fail (cr != NULL);
@@ -908,6 +917,12 @@ swfdec_text_field_movie_render (SwfdecMovie *movie, cairo_t *cr,
swfdec_text_field_movie_line_position (layouts,
MIN (text->scroll, text->scroll_max), NULL, &i, &skip);
+ if (text->editable && swfdec_text_field_movie_has_focus (text) &&
+ swfdec_text_field_movie_has_cursor (text))
+ cursor = swfdec_text_field_movie_get_cursor (text);
+ else
+ cursor = G_MAXSIZE;
+
for (; layouts[i].layout != NULL && y < limit.y1; i++)
{
SwfdecLayout *layout = &layouts[i];
@@ -965,6 +980,7 @@ swfdec_text_field_movie_render (SwfdecMovie *movie, cairo_t *cr,
do {
pango_layout_iter_get_line_extents (iter_line, NULL, &rect);
pango_extents_to_pixels (NULL, &rect);
+ line = pango_layout_iter_get_line_readonly (iter_line);
if (!first && y + rect.y + rect.height > movie->original_extents.y1)
break;
@@ -983,10 +999,27 @@ swfdec_text_field_movie_render (SwfdecMovie *movie, cairo_t *cr,
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);
+ line = NULL;
} while (pango_layout_iter_next_line (iter_line));
+ if (layouts[i].index_ <= cursor &&
+ (layouts[i].index_end > cursor || (layouts[i].index_end == cursor && cursor == text->input->len)) &&
+ (line == NULL || layouts[i].index_ + line->start_index >= cursor)) {
+ PangoRectangle cursor_rect;
+ pango_layout_get_cursor_pos (layouts[i].layout,
+ swfdec_text_field_movie_get_cursor (text) - layouts[i].index_,
+ &cursor_rect, NULL);
+
+ cairo_save (cr);
+ cairo_set_line_width (cr, 1.0);
+ cairo_move_to (cr, x + layout->offset_x + rect.x, y - skipped);
+ cairo_rel_move_to (cr, (double) cursor_rect.x / PANGO_SCALE, (double) cursor_rect.y / PANGO_SCALE);
+ cairo_rel_line_to (cr, (double) cursor_rect.width / PANGO_SCALE, (double) cursor_rect.height / PANGO_SCALE);
+ cairo_stroke (cr);
+ cairo_restore (cr);
+ }
+
y += layout->height - skipped;
pango_layout_iter_free (iter_line);
More information about the Swfdec-commits
mailing list