[Top][All Lists]
[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
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Gnash-commit] [SCM] Gnash branch, master, updated. 1a914f9298d9a942b2dd80cf088ba6754244137c,
Benjamin Wolsey <=