gnash-commit
[Top][All Lists]
Advanced

[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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]