[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gnash-commit] [SCM] Gnash branch, master, updated. release_0_8_9_final-
From: |
Bastiaan Jacques |
Subject: |
[Gnash-commit] [SCM] Gnash branch, master, updated. release_0_8_9_final-1683-gd1ac254 |
Date: |
Tue, 23 Jul 2013 15:54:17 +0000 |
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Gnash".
The branch, master has been updated
via d1ac254c420d1f10c50b8a96721eaeedd87d8e42 (commit)
from 51959a760e5ca622f88373f5476031d75bfb8a3e (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
http://git.savannah.gnu.org/cgit//commit/?id=d1ac254c420d1f10c50b8a96721eaeedd87d8e42
commit d1ac254c420d1f10c50b8a96721eaeedd87d8e42
Author: Bastiaan Jacques <address@hidden>
Date: Tue Jul 23 17:52:03 2013 +0200
Use mostly integers to match the pp's precision, and test for precise
numbers.
Make the wrapping slightly different for v8, which gives a few more passing
tests.
diff --git a/libcore/asobj/TextFormat_as.cpp b/libcore/asobj/TextFormat_as.cpp
index d540e8c..129a298 100644
--- a/libcore/asobj/TextFormat_as.cpp
+++ b/libcore/asobj/TextFormat_as.cpp
@@ -542,7 +542,6 @@ textformat_align(const fn_call& fn)
return ret;
}
-
/// Return various dimensions of a theoretical run of text
//
/// The TextFormat's format values are used to calculate what the dimensions
@@ -573,12 +572,12 @@ textformat_getTextExtent(const fn_call& fn)
bool limitWidth = (fn.nargs > 1);
// Everything must be in twips here.
- const double tfw = limitWidth ?
+ const int tfw = limitWidth ?
pixelsToTwips(toNumber(fn.arg(1), getVM(fn)) - 4) : 0;
const bool bold = relay->bold() ? *relay->bold() : false;
const bool italic = relay->italic() ? *relay->italic() : false;
- const double size = relay->size() ? *relay->size() : 240;
+ const int size = relay->size() ? *relay->size() : 240;
// Note: currently leading is never defined for device fonts, and since
// getTextExtent currently only takes account of device fonts we don't
@@ -615,14 +614,15 @@ textformat_getTextExtent(const fn_call& fn)
/// 240 twips for a size 12.
const double scale = size / static_cast<double>(f->unitsPerEM(em));
- double width = 0;
- double curr = 0;
+ int width = 0;
+ int curr = 0;
- const double ascent = f->ascent(em) * scale;
- const double descent = f->descent(em) * scale;
+ const int ascent = f->ascent(em) * scale;
+ const int descent = f->descent(em) * scale;
+
// If the text is empty, height is 0. Otherwise we start with the font
// size.
- double height = s.empty() ? 0 : ascent + descent;
+ int height = s.empty() ? 0 : ascent + descent;
bool limitWidthSet = true;
if (version < 8 && limitWidth) {
@@ -634,13 +634,16 @@ textformat_getTextExtent(const fn_call& fn)
it != e; ++it) {
const int index = f->get_glyph_index(*it, em);
- double advance = f->get_advance(index, em) * scale;
+ int advance = f->get_advance(index, em) * scale;
// Snap advance to the nearest pixel boundary.
- advance = ((int)advance + 19) / 20 * 20;
+ advance = (advance + 19) / 20 * 20;
- if (limitWidth && (curr + advance > tfw) && it != s.begin() ) {
- curr = 0;
- height += ascent + descent;
+ if (limitWidth && it != s.begin() ) {
+ bool wrap = version < 8 ? (curr + advance > tfw) : (curr + advance
>= tfw);
+ if (wrap) {
+ curr = 0;
+ height += ascent + descent;
+ }
}
curr += advance;
width = std::max(width, curr);
diff --git a/testsuite/actionscript.all/TextFormat.as
b/testsuite/actionscript.all/TextFormat.as
index da36113..90c2235 100644
--- a/testsuite/actionscript.all/TextFormat.as
+++ b/testsuite/actionscript.all/TextFormat.as
@@ -332,30 +332,34 @@ check(te.hasOwnProperty("textFieldHeight"));
check(te.hasOwnProperty("width"));
check(te.hasOwnProperty("height"));
-check_equals(Math.round(te.textFieldWidth), 37);
-check_equals(Math.round(te.width), 33);
-check_equals(Math.round(te.ascent), 11);
+check_equals(te.textFieldWidth, 37);
+check_equals(te.width, 33);
+#if OUTPUT_VERSION > 7
+check_equals(te.ascent, 11.1);
+#else
+check_equals(te.ascent, 11);
+#endif
#if OUTPUT_VERSION > 7
- check_equals(Math.round(te.textFieldHeight), 18);
- check_equals(Math.round(te.descent), 3);
+ check_equals(te.textFieldHeight, 17.9);
+ check_equals(te.descent, 2.8);
#else
- check_equals(Math.round(te.textFieldHeight), 17);
+ check_equals(te.textFieldHeight, 17);
check_equals(te.descent, 2);
#endif
te = tf2.getTextExtent("a");
-check_equals(Math.round(te.width), 8);
+check_equals(te.width, 8);
te = tf2.getTextExtent("aa");
-check_equals(Math.round(te.width), 16);
+check_equals(te.width, 16);
te = tf2.getTextExtent("aaa");
-check_equals(Math.round(te.width), 24);
+check_equals(te.width, 24);
te = tf2.getTextExtent("Hello", 10);
#if OUTPUT_VERSION > 7
- check_equals(Math.round(te.textFieldHeight), 74);
+ check_equals(te.textFieldHeight, 73.5);
#else
- check_equals(Math.round(te.textFieldHeight), 17);
+ check_equals(te.textFieldHeight, 17);
#endif
#if OUTPUT_VERSION == 7
@@ -376,34 +380,38 @@ te = tf2.getTextExtent("Hello", 10);
check_equals(te.textFieldWidth, 10);
#if OUTPUT_VERSION > 7
-check_equals(Math.round(te.width), 9);
+check_equals(te.width, 9);
#else
-check_equals(Math.round(te.width), 33);
+check_equals(te.width, 33);
#endif
te = tf2.getTextExtent("Hello", 5);
#if OUTPUT_VERSION < 8
- check_equals(Math.round(te.textFieldHeight), 17);
+ check_equals(te.textFieldHeight, 17);
check_equals(te.descent, 2);
#else
- check_equals(Math.round(te.textFieldHeight), 74);
- check_equals(Math.round(te.descent), 3);
+ check_equals(te.textFieldHeight, 73.5);
+ check_equals(te.descent, 2.8);
#endif
check_equals(te.textFieldWidth, 5);
-check_equals(Math.round(te.ascent), 11);
+#if OUTPUT_VERSION > 7
+check_equals(te.ascent, 11.1);
+#else
+check_equals(te.ascent, 11);
+#endif
#if OUTPUT_VERSION > 7
-// Width of largest character in version 8?
-check_equals(Math.round(te.width), 9);
+// Text is wrapped in v8; 'advance' of largest character.
+check_equals(te.width, 9);
#else
-check_equals(Math.round(te.width), 33);
+check_equals(te.width, 33);
#endif
te = tf2.getTextExtent("Longer sentence with more words.", 30);
check_equals(te.textFieldWidth, 30);
-check_equals(Math.round(te.width), 25);
+check_equals(te.width, 25);
#if OUTPUT_VERSION > 7
xcheck_equals(te.height, 152.9);
#else
@@ -413,44 +421,52 @@ xcheck_equals(te.height, 152);
te = tf2.getTextExtent("Longersentencewithoneword", 30);
check_equals(te.textFieldWidth, 30);
#if OUTPUT_VERSION > 7
-xcheck_equals(te.height, 125.1);
-xcheck_equals(Math.round(te.width), 25);
+check_equals(te.height, 125.1);
+check_equals(Math.round(te.width), 25);
#else
check_equals(te.width, 26);
check_equals(te.height, 111);
#endif
te = tf2.getTextExtent("o");
-check_equals(Math.round(te.textFieldWidth), 12);
-check_equals(Math.round(te.ascent), 11);
+check_equals(te.textFieldWidth, 12);
+#if OUTPUT_VERSION > 7
+check_equals(te.ascent, 11.1);
+#else
+check_equals(te.ascent, 11);
+#endif
#if OUTPUT_VERSION < 8
- check_equals(Math.round(te.textFieldHeight), 17);
+ check_equals(te.textFieldHeight, 17);
check_equals(te.descent, 2);
#else
- check_equals(Math.round(te.textFieldHeight), 18);
- check_equals(Math.round(te.descent), 3);
+ check_equals(te.textFieldHeight, 17.9);
+ check_equals(te.descent, 2.8);
#endif
te = tf2.getTextExtent("oo");
check_equals(Math.round(te.textFieldWidth), 20);
check_equals(Math.round(te.ascent), 11);
#if OUTPUT_VERSION < 8
- check_equals(Math.round(te.textFieldHeight), 17);
+ check_equals(te.textFieldHeight, 17);
check_equals(te.descent, 2);
#else
- check_equals(Math.round(te.textFieldHeight), 18);
- check_equals(Math.round(te.descent), 3);
+ check_equals(te.textFieldHeight, 17.9);
+ check_equals(te.descent, 2.8);
#endif
te = tf2.getTextExtent("ool");
-check_equals(Math.round(te.textFieldWidth), 24);
-check_equals(Math.round(te.ascent), 11);
+check_equals(te.textFieldWidth, 24);
+#if OUTPUT_VERSION > 7
+check_equals(te.ascent, 11.1);
+#else
+check_equals(te.ascent, 11);
+#endif
#if OUTPUT_VERSION < 8
- check_equals(Math.round(te.textFieldHeight), 17);
+ check_equals(te.textFieldHeight, 17);
check_equals(te.descent, 2);
#else
- check_equals(Math.round(te.textFieldHeight), 18);
- check_equals(Math.round(te.descent), 3);
+ check_equals(te.textFieldHeight, 17.9);
+ check_equals(te.descent, 2.8);
#endif
tf2.size = 20;
@@ -461,8 +477,8 @@ check_equals(Math.round(te.textFieldWidth), 36);
check_equals(te.ascent, 18);
check_equals(te.descent, 4);
#else
- check_equals(Math.round(te.ascent), 19);
- check_equals(Math.round(te.descent), 5);
+ check_equals(te.ascent, 18.55);
+ check_equals(te.descent, 4.7);
#endif
#endif
-----------------------------------------------------------------------
Summary of changes:
libcore/asobj/TextFormat_as.cpp | 29 +++++----
testsuite/actionscript.all/TextFormat.as | 92 +++++++++++++++++------------
2 files changed, 70 insertions(+), 51 deletions(-)
hooks/post-receive
--
Gnash
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Gnash-commit] [SCM] Gnash branch, master, updated. release_0_8_9_final-1683-gd1ac254,
Bastiaan Jacques <=