[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gnash-commit] gnash ChangeLog server/sprite_instance.cpp
From: |
Sandro Santilli |
Subject: |
[Gnash-commit] gnash ChangeLog server/sprite_instance.cpp |
Date: |
Thu, 03 Jan 2008 17:50:25 +0000 |
CVSROOT: /sources/gnash
Module name: gnash
Changes by: Sandro Santilli <strk> 08/01/03 17:50:25
Modified files:
. : ChangeLog
server : sprite_instance.cpp
Log message:
beginGradientFill:
Improvements in "box" matrixType parsing.
Still not 100% correct, but translation and scaling
seem good, and rotation does have an effect.
The problem is that translation/scaling and rotation
is happening in the wrong order.
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.5292&r2=1.5293
http://cvs.savannah.gnu.org/viewcvs/gnash/server/sprite_instance.cpp?cvsroot=gnash&r1=1.424&r2=1.425
Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.5292
retrieving revision 1.5293
diff -u -b -r1.5292 -r1.5293
--- ChangeLog 3 Jan 2008 15:46:57 -0000 1.5292
+++ ChangeLog 3 Jan 2008 17:50:24 -0000 1.5293
@@ -1,3 +1,12 @@
+2008-01-03 Sandro Santilli <address@hidden>
+
+ * server/sprite_instance.cpp (beginGradientFill):
+ Improvements in "box" matrixType parsing.
+ Still not 100% correct, but translation and scaling
+ seem good, and rotation does have an effect.
+ The problem is that translation/scaling and rotation
+ is happening in the wrong order.
+
2008-01-03 Benjamin Wolsey <address@hidden>
* gui/gui.{h,cpp}: ^F toggles fullscreen (not in the plugin - no
shortcuts work
Index: server/sprite_instance.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/sprite_instance.cpp,v
retrieving revision 1.424
retrieving revision 1.425
diff -u -b -r1.424 -r1.425
--- server/sprite_instance.cpp 2 Jan 2008 19:08:32 -0000 1.424
+++ server/sprite_instance.cpp 3 Jan 2008 17:50:24 -0000 1.425
@@ -1345,8 +1345,7 @@
// ----------------------------
// Parse matrix
// ----------------------------
- //
- //
+
// TODO: fix this matrix build-up, it is NOT correct
matrix mat;
@@ -1356,33 +1355,59 @@
if ( matrixArg->getMember(keyT).to_string() == "box" )
{
- string_table::key keyX = st.find("x");
- string_table::key keyY = st.find("y");
- string_table::key keyW = st.find("w");
- string_table::key keyH = st.find("h");
- string_table::key keyR = st.find("r");
-
- float valX = matrixArg->getMember(keyX).to_number();
- float valY = matrixArg->getMember(keyY).to_number();
- float valW = matrixArg->getMember(keyW).to_number();
- float valH = matrixArg->getMember(keyH).to_number();
+ // TODO: add to namedStrings.{cpp,h}
+ static const string_table::key keyX = st.find("x");
+ static const string_table::key keyY = st.find("y");
+ static const string_table::key keyW = st.find("w");
+ static const string_table::key keyH = st.find("h");
+ static const string_table::key keyR = st.find("r");
+
+ float valX =
PIXELS_TO_TWIPS(matrixArg->getMember(keyX).to_number());
+ float valY =
PIXELS_TO_TWIPS(matrixArg->getMember(keyY).to_number());
+ float valW =
PIXELS_TO_TWIPS(matrixArg->getMember(keyW).to_number());
+ float valH =
PIXELS_TO_TWIPS(matrixArg->getMember(keyH).to_number());
float valR = matrixArg->getMember(keyR).to_number();
- input_matrix.set_translation( (valX+valW)/2, (valY+valH)/2 );
- input_matrix.set_scale(valW, valH);
- input_matrix.set_rotation(valR);
+ if ( radial )
+ {
+ // Radial gradient is 64x64 twips.
+ input_matrix.set_scale_rotation(64.0f/valW, 64.0f/valH,
-valR);
+
+ // For radial gradients, dunno why translation must be
negative...
+ input_matrix.concatenate_translation( -valX, -valY );
+
+ // TODO: fix the rotation, isn't working as it should
+ // In particular, it seems the origin is wrong
+ // while rotating.
+
+ }
+ else
+ {
+ // Linear gradient is 256x1 twips.
+ //
+ // No idea why we should use the 256 value for Y scale,
but empirically
+ // seems to give closer results. Note that it only
influences rotation,
+ // which is still not correct... TODO: fix it !
+ //
+ input_matrix.set_scale_rotation(256.0f/valW,
256.0f/valH, -valR);
+
+ // For linear gradients, dunno why translation must be
negative...
+ input_matrix.concatenate_translation( -valX, -valY );
+ //cout << "inpt matrix with concatenated translation: "
<< input_matrix << endl;
+ }
- mat.concatenate_scale(20/16384.0);
mat.concatenate(input_matrix);
}
else
{
- string_table::key keyA = st.find("a");
- string_table::key keyB = st.find("b");
- string_table::key keyD = st.find("d");
- string_table::key keyE = st.find("e");
- string_table::key keyG = st.find("g");
- string_table::key keyH = st.find("h");
+ // TODO: add to namedStrings.{cpp,h}
+ static const string_table::key keyA = st.find("a");
+ static const string_table::key keyB = st.find("b");
+ static const string_table::key keyD = st.find("d");
+ static const string_table::key keyE = st.find("e");
+ static const string_table::key keyG = st.find("g");
+ static const string_table::key keyH = st.find("h");
+
float valA = matrixArg->getMember(keyA).to_number() ; // xx
float valB = matrixArg->getMember(keyB).to_number() ; // yx
float valD = matrixArg->getMember(keyD).to_number() ; // xy