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. 1a914f9298d9a942b2dd


From: Benjamin Wolsey
Subject: [Gnash-commit] [SCM] Gnash branch, master, updated. 1a914f9298d9a942b2dd80cf088ba6754244137c
Date: Mon, 30 Aug 2010 08:04:48 +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  1a914f9298d9a942b2dd80cf088ba6754244137c (commit)
       via  18f48c76974fddd27e38dbe815eaca87462adbb5 (commit)
       via  b0edc5e8532a5103ff0a15956f80a0f6ef2a6096 (commit)
       via  fb48a1d8691a0709c2ea0fc654af718a605c785a (commit)
       via  4647eec5752bcc45991980a32bc2a520423c4d3b (commit)
       via  4d587af62a9ecad71b8591b805d9a94f2d04f84f (commit)
      from  c1848f9588ed157683f763a490806c452bf0544d (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=1a914f9298d9a942b2dd80cf088ba6754244137c


commit 1a914f9298d9a942b2dd80cf088ba6754244137c
Author: Benjamin Wolsey <address@hidden>
Date:   Mon Aug 30 09:56:12 2010 +0200

    Handle unprocessed colour values.

diff --git a/librender/Renderer_agg_style.h b/librender/Renderer_agg_style.h
index abb91e8..7542459 100644
--- a/librender/Renderer_agg_style.h
+++ b/librender/Renderer_agg_style.h
@@ -368,10 +368,19 @@ public:
     void generate_span(agg::rgba8* span, int x, int y, unsigned len)
     {
         m_sg.generate(span, x, y, len);
-        if (m_cx == SWFCxForm()) return;
+
+        const bool transform = (m_cx != SWFCxForm());
+
         for (size_t i = 0; i < len; ++i) {
-            m_cx.transform(span->r, span->g, span->b, span->a);
-            span->premultiply();
+            // We must always do this because dynamic bitmaps (BitmapData)
+            // can have any values. Loaded bitmaps are handled when loaded.
+            span->r = std::min(span->r, span->a);
+            span->g = std::min(span->g, span->a);
+            span->b = std::min(span->b, span->a);
+            if (transform) {
+                m_cx.transform(span->r, span->g, span->b, span->a);
+                span->premultiply();
+            }
             ++span;
         }  
     }

http://git.savannah.gnu.org/cgit//commit/?id=18f48c76974fddd27e38dbe815eaca87462adbb5


commit 18f48c76974fddd27e38dbe815eaca87462adbb5
Author: Benjamin Wolsey <address@hidden>
Date:   Mon Aug 30 09:05:48 2010 +0200

    Const correct.

diff --git a/libcore/asobj/flash/display/BitmapData_as.cpp 
b/libcore/asobj/flash/display/BitmapData_as.cpp
index 5186ba6..6560bf3 100644
--- a/libcore/asobj/flash/display/BitmapData_as.cpp
+++ b/libcore/asobj/flash/display/BitmapData_as.cpp
@@ -856,7 +856,7 @@ bitmapdata_ctor(const fn_call& fn)
 
     size_t width = toInt(fn.arg(0));
     size_t height = toInt(fn.arg(1));
-    bool transparent = fn.nargs > 2 ? fn.arg(2).to_bool() : true;
+    const bool transparent = fn.nargs > 2 ? fn.arg(2).to_bool() : true;
     boost::uint32_t fillColor = fn.nargs > 3 ? toInt(fn.arg(3)) : 0xffffffff;
     
     if (width > 2880 || height > 2880 || width < 1 || height < 1) {

http://git.savannah.gnu.org/cgit//commit/?id=b0edc5e8532a5103ff0a15956f80a0f6ef2a6096


commit b0edc5e8532a5103ff0a15956f80a0f6ef2a6096
Author: Benjamin Wolsey <address@hidden>
Date:   Mon Aug 30 09:05:15 2010 +0200

    Add comments about premultiplication.

diff --git a/libbase/GnashImage.cpp b/libbase/GnashImage.cpp
index e2bf206..4822af4 100644
--- a/libbase/GnashImage.cpp
+++ b/libbase/GnashImage.cpp
@@ -131,8 +131,9 @@ ImageRGBA::mergeAlpha(const_iterator alphaData, const 
size_t bufferLength)
     // Point to the first alpha byte
     iterator p = begin();
 
-    // Set each 4th byte to the correct alpha value and adjust the
-    // other values.
+    // Premultiplication is also done at rendering time (at least by the
+    // agg renderer).
+    // TODO: use BitmapData.loadBitmap to check whether it's also done here.
     for (size_t i = 0; i < bufferLength; ++i, ++alphaData) {
         *p = std::min(*p, *alphaData);
         ++p;

http://git.savannah.gnu.org/cgit//commit/?id=fb48a1d8691a0709c2ea0fc654af718a605c785a


commit fb48a1d8691a0709c2ea0fc654af718a605c785a
Author: Benjamin Wolsey <address@hidden>
Date:   Sun Aug 29 11:08:21 2010 +0200

    Fix swapped pixel size values.

diff --git a/librender/Renderer_agg.cpp b/librender/Renderer_agg.cpp
index 0f9b3e0..ba6161a 100644
--- a/librender/Renderer_agg.cpp
+++ b/librender/Renderer_agg.cpp
@@ -889,10 +889,10 @@ public:
 
       switch (im.type()) {
           case GNASH_IMAGE_RGB:
-                in.reset(new Renderer_agg<typename RGB::PixelFormat>(32));
+                in.reset(new Renderer_agg<typename RGB::PixelFormat>(24));
               break;
           case GNASH_IMAGE_RGBA:
-                in.reset(new Renderer_agg<typename RGBA::PixelFormat>(24));
+                in.reset(new Renderer_agg<typename RGBA::PixelFormat>(32));
               break;
       }
  

http://git.savannah.gnu.org/cgit//commit/?id=4647eec5752bcc45991980a32bc2a520423c4d3b


commit 4647eec5752bcc45991980a32bc2a520423c4d3b
Author: Benjamin Wolsey <address@hidden>
Date:   Sun Aug 29 10:58:27 2010 +0200

    Fix handling of transparency; tests pass.

diff --git a/libcore/asobj/flash/display/BitmapData_as.cpp 
b/libcore/asobj/flash/display/BitmapData_as.cpp
index 4e73f0e..5186ba6 100644
--- a/libcore/asobj/flash/display/BitmapData_as.cpp
+++ b/libcore/asobj/flash/display/BitmapData_as.cpp
@@ -857,7 +857,7 @@ bitmapdata_ctor(const fn_call& fn)
     size_t width = toInt(fn.arg(0));
     size_t height = toInt(fn.arg(1));
     bool transparent = fn.nargs > 2 ? fn.arg(2).to_bool() : true;
-    boost::uint32_t fillColor = fn.nargs > 3 ? toInt(fn.arg(3)) : 0xffffff;
+    boost::uint32_t fillColor = fn.nargs > 3 ? toInt(fn.arg(3)) : 0xffffffff;
     
     if (width > 2880 || height > 2880 || width < 1 || height < 1) {
         IF_VERBOSE_ASCODING_ERRORS(
@@ -875,8 +875,13 @@ bitmapdata_ctor(const fn_call& fn)
         im.reset(new ImageRGB(width, height));
     }
 
+    // There is one special case for completely transparent colours. This
+    // might be a part of a more general pre-treatment as other colours
+    // vary slightly, but we haven't worked it out yet.
+    if (transparent && !(fillColor & 0xff000000)) fillColor = 0;
+
     std::fill(image::begin<image::ARGB>(*im), image::end<image::ARGB>(*im),
-            fillColor | (0xff << 24));
+            fillColor);
 
     ptr->setRelay(new BitmapData_as(ptr, im));
 
diff --git a/testsuite/actionscript.all/BitmapData.as 
b/testsuite/actionscript.all/BitmapData.as
index a10d1d5..ed7d782 100644
--- a/testsuite/actionscript.all/BitmapData.as
+++ b/testsuite/actionscript.all/BitmapData.as
@@ -578,25 +578,25 @@ bm = new flash.display.BitmapData(10, 10, true, 
0x5010eeff);
 xcheck_equals(bm.getPixel32(5, 5), 0x5010efff);
 
 bm = new flash.display.BitmapData(10, 10, true, 0xee11efff);
-xcheck_equals(bm.getPixel32(5, 5), -300814337);
+check_equals(bm.getPixel32(5, 5), -300814337);
 
 bm = new flash.display.BitmapData(10, 10, true, 0x00011010);
-xcheck_equals(bm.getPixel32(5, 5), 0x00000000);
+check_equals(bm.getPixel32(5, 5), 0x00000000);
 
 bm = new flash.display.BitmapData(10, 10, true, 0x0000ffff);
-xcheck_equals(bm.getPixel32(5, 5), 0x00000000);
+check_equals(bm.getPixel32(5, 5), 0x00000000);
 
 bm = new flash.display.BitmapData(10, 10, true, 0x000000ff);
-xcheck_equals(bm.getPixel32(5, 5), 0x00000000);
+check_equals(bm.getPixel32(5, 5), 0x00000000);
 
 bm = new flash.display.BitmapData(10, 10, true, 0x010000ff);
-xcheck_equals(bm.getPixel32(5, 5), 0x010000ff);
+check_equals(bm.getPixel32(5, 5), 0x010000ff);
 
 bm = new flash.display.BitmapData(10, 10, true, 0x300000ff);
-xcheck_equals(bm.getPixel32(5, 5), 0x300000ff);
+check_equals(bm.getPixel32(5, 5), 0x300000ff);
 
 bm = new flash.display.BitmapData(10, 10, true, 0x30ffffff);
-xcheck_equals(bm.getPixel32(5, 5), 0x30ffffff);
+check_equals(bm.getPixel32(5, 5), 0x30ffffff);
 
 //-------------------------------------------------------------
 // END OF TEST

http://git.savannah.gnu.org/cgit//commit/?id=4d587af62a9ecad71b8591b805d9a94f2d04f84f


commit 4d587af62a9ecad71b8591b805d9a94f2d04f84f
Author: Benjamin Wolsey <address@hidden>
Date:   Sun Aug 29 10:51:27 2010 +0200

    Add tests for alpha fill colour.

diff --git a/testsuite/actionscript.all/BitmapData.as 
b/testsuite/actionscript.all/BitmapData.as
index 3f4c5d4..a10d1d5 100644
--- a/testsuite/actionscript.all/BitmapData.as
+++ b/testsuite/actionscript.all/BitmapData.as
@@ -574,10 +574,34 @@ xcheck(near(bm, 23, 15, 0x00ff00));
 xcheck(near(bm, 25, 15, 0x0000ff));
 check(near(bm, 25, 25, 0xffffff));
 
+bm = new flash.display.BitmapData(10, 10, true, 0x5010eeff);
+xcheck_equals(bm.getPixel32(5, 5), 0x5010efff);
+
+bm = new flash.display.BitmapData(10, 10, true, 0xee11efff);
+xcheck_equals(bm.getPixel32(5, 5), -300814337);
+
+bm = new flash.display.BitmapData(10, 10, true, 0x00011010);
+xcheck_equals(bm.getPixel32(5, 5), 0x00000000);
+
+bm = new flash.display.BitmapData(10, 10, true, 0x0000ffff);
+xcheck_equals(bm.getPixel32(5, 5), 0x00000000);
+
+bm = new flash.display.BitmapData(10, 10, true, 0x000000ff);
+xcheck_equals(bm.getPixel32(5, 5), 0x00000000);
+
+bm = new flash.display.BitmapData(10, 10, true, 0x010000ff);
+xcheck_equals(bm.getPixel32(5, 5), 0x010000ff);
+
+bm = new flash.display.BitmapData(10, 10, true, 0x300000ff);
+xcheck_equals(bm.getPixel32(5, 5), 0x300000ff);
+
+bm = new flash.display.BitmapData(10, 10, true, 0x30ffffff);
+xcheck_equals(bm.getPixel32(5, 5), 0x30ffffff);
+
 //-------------------------------------------------------------
 // END OF TEST
 //-------------------------------------------------------------
 
-totals(218);
+totals(226);
 
 #endif // OUTPUT_VERSION >= 8

-----------------------------------------------------------------------

Summary of changes:
 libbase/GnashImage.cpp                        |    5 ++-
 libcore/asobj/flash/display/BitmapData_as.cpp |   11 +++++++--
 librender/Renderer_agg.cpp                    |    4 +-
 librender/Renderer_agg_style.h                |   15 +++++++++++--
 testsuite/actionscript.all/BitmapData.as      |   26 ++++++++++++++++++++++++-
 5 files changed, 50 insertions(+), 11 deletions(-)


hooks/post-receive
-- 
Gnash



reply via email to

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