core: Add tests for ColorTransform and cleanup code
This commit is contained in:
parent
0dcbd05f5d
commit
ab58cff8b3
|
@ -67,7 +67,6 @@ impl<'gc> ColorTransformObject<'gc> {
|
||||||
gc_context: MutationContext<'gc, '_>,
|
gc_context: MutationContext<'gc, '_>,
|
||||||
proto: Option<Object<'gc>>,
|
proto: Option<Object<'gc>>,
|
||||||
) -> Self {
|
) -> Self {
|
||||||
println!("Create new ct o");
|
|
||||||
ColorTransformObject(GcCell::allocate(
|
ColorTransformObject(GcCell::allocate(
|
||||||
gc_context,
|
gc_context,
|
||||||
ColorTransformData {
|
ColorTransformData {
|
||||||
|
|
|
@ -140,8 +140,6 @@ pub fn set_rgb<'gc>(
|
||||||
this: Object<'gc>,
|
this: Object<'gc>,
|
||||||
args: &[Value<'gc>],
|
args: &[Value<'gc>],
|
||||||
) -> Result<Value<'gc>, Error<'gc>> {
|
) -> Result<Value<'gc>, Error<'gc>> {
|
||||||
log::warn!("ColorTransform.set_rgb");
|
|
||||||
|
|
||||||
let new_rgb = args
|
let new_rgb = args
|
||||||
.get(0)
|
.get(0)
|
||||||
.unwrap_or(&Value::Undefined)
|
.unwrap_or(&Value::Undefined)
|
||||||
|
@ -173,7 +171,6 @@ macro_rules! color_transform_value_accessor {
|
||||||
this: Object<'gc>,
|
this: Object<'gc>,
|
||||||
args: &[Value<'gc>],
|
args: &[Value<'gc>],
|
||||||
) -> Result<Value<'gc>, Error<'gc>> {
|
) -> Result<Value<'gc>, Error<'gc>> {
|
||||||
//TODO: add validation
|
|
||||||
let new_val = args
|
let new_val = args
|
||||||
.get(0)
|
.get(0)
|
||||||
.unwrap_or(&Value::Undefined)
|
.unwrap_or(&Value::Undefined)
|
||||||
|
@ -190,7 +187,6 @@ macro_rules! color_transform_value_accessor {
|
||||||
this: Object<'gc>,
|
this: Object<'gc>,
|
||||||
_args: &[Value<'gc>],
|
_args: &[Value<'gc>],
|
||||||
) -> Result<Value<'gc>, Error<'gc>> {
|
) -> Result<Value<'gc>, Error<'gc>> {
|
||||||
println!("This: {}, {:?}", stringify!($get_ident), this);
|
|
||||||
let ct = this.as_color_transform_object().unwrap();
|
let ct = this.as_color_transform_object().unwrap();
|
||||||
Ok(Value::Number(ct.$get_ident()).into())
|
Ok(Value::Number(ct.$get_ident()).into())
|
||||||
}
|
}
|
||||||
|
@ -219,15 +215,15 @@ pub fn create_proto<'gc>(
|
||||||
let mut object = color_transform_object.as_script_object().unwrap();
|
let mut object = color_transform_object.as_script_object().unwrap();
|
||||||
|
|
||||||
with_color_transform!(object, gc_context,
|
with_color_transform!(object, gc_context,
|
||||||
"rgb" => [get_rgb, set_rgb],
|
"alphaMultiplier" => [get_alpha_multiplier, set_alpha_multiplier],
|
||||||
"redMultiplier" => [get_red_multiplier, set_red_multiplier],
|
"redMultiplier" => [get_red_multiplier, set_red_multiplier],
|
||||||
"greenMultiplier" => [get_green_multiplier, set_green_multiplier],
|
"greenMultiplier" => [get_green_multiplier, set_green_multiplier],
|
||||||
"blueMultiplier" => [get_blue_multiplier, set_blue_multiplier],
|
"blueMultiplier" => [get_blue_multiplier, set_blue_multiplier],
|
||||||
"alphaMultiplier" => [get_alpha_multiplier, set_alpha_multiplier],
|
"alphaOffset" => [get_alpha_offset, set_alpha_offset],
|
||||||
"redOffset" => [get_red_offset, set_red_offset],
|
"redOffset" => [get_red_offset, set_red_offset],
|
||||||
"greenOffset" => [get_green_offset, set_green_offset],
|
"greenOffset" => [get_green_offset, set_green_offset],
|
||||||
"blueOffset" => [get_blue_offset, set_blue_offset],
|
"blueOffset" => [get_blue_offset, set_blue_offset],
|
||||||
"alphaOffset" => [get_alpha_offset, set_alpha_offset],
|
"rgb" => [get_rgb, set_rgb],
|
||||||
);
|
);
|
||||||
|
|
||||||
object.force_set_function(
|
object.force_set_function(
|
||||||
|
@ -299,27 +295,6 @@ fn concat<'gc>(
|
||||||
let alpha_offset = (other_ct.get_alpha_offset() * this_ct.get_alpha_multiplier())
|
let alpha_offset = (other_ct.get_alpha_offset() * this_ct.get_alpha_multiplier())
|
||||||
+ this_ct.get_alpha_offset();
|
+ this_ct.get_alpha_offset();
|
||||||
|
|
||||||
// This appears to do nothing if values are out of range
|
|
||||||
if 0.0 > red_multiplier
|
|
||||||
|| red_multiplier > 1.0
|
|
||||||
|| 0.0 > green_multiplier
|
|
||||||
|| green_multiplier > 1.0
|
|
||||||
|| 0.0 > blue_multiplier
|
|
||||||
|| blue_multiplier > 1.0
|
|
||||||
|| 0.0 > alpha_multiplier
|
|
||||||
|| alpha_multiplier > 1.0
|
|
||||||
|| -255.0 > red_offset
|
|
||||||
|| red_offset > 255.0
|
|
||||||
|| -255.0 > green_offset
|
|
||||||
|| green_offset > 255.0
|
|
||||||
|| -255.0 > blue_offset
|
|
||||||
|| blue_offset > 255.0
|
|
||||||
|| -255.0 > alpha_offset
|
|
||||||
|| alpha_offset > 255.0
|
|
||||||
{
|
|
||||||
return Ok(Value::Undefined);
|
|
||||||
}
|
|
||||||
|
|
||||||
this_ct.set_red_multiplier(context.gc_context, red_multiplier);
|
this_ct.set_red_multiplier(context.gc_context, red_multiplier);
|
||||||
this_ct.set_green_multiplier(context.gc_context, green_multiplier);
|
this_ct.set_green_multiplier(context.gc_context, green_multiplier);
|
||||||
this_ct.set_blue_multiplier(context.gc_context, blue_multiplier);
|
this_ct.set_blue_multiplier(context.gc_context, blue_multiplier);
|
||||||
|
|
|
@ -215,6 +215,7 @@ swf_tests! {
|
||||||
(define_local, "avm1/define_local", 1),
|
(define_local, "avm1/define_local", 1),
|
||||||
(textfield_variable, "avm1/textfield_variable", 8),
|
(textfield_variable, "avm1/textfield_variable", 8),
|
||||||
(error, "avm1/error", 1),
|
(error, "avm1/error", 1),
|
||||||
|
(color_transform, "avm1/color_transform", 1),
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: These tests have some inaccuracies currently, so we use approx_eq to test that numeric values are close enough.
|
// TODO: These tests have some inaccuracies currently, so we use approx_eq to test that numeric values are close enough.
|
||||||
|
|
|
@ -0,0 +1,48 @@
|
||||||
|
ct
|
||||||
|
16718080
|
||||||
|
(redMultiplier=1, greenMultiplier=1, blueMultiplier=1, alphaMultiplier=1, redOffset=255, greenOffset=25, blueOffset=0, alphaOffset=0)
|
||||||
|
(redMultiplier=0, greenMultiplier=0, blueMultiplier=0, alphaMultiplier=1, redOffset=255, greenOffset=0, blueOffset=0, alphaOffset=0)
|
||||||
|
ct2
|
||||||
|
(redMultiplier=0.5, greenMultiplier=0.5, blueMultiplier=0.5, alphaMultiplier=0.5, redOffset=0, greenOffset=255, blueOffset=0, alphaOffset=50)
|
||||||
|
combine
|
||||||
|
(redMultiplier=0.25, greenMultiplier=0.25, blueMultiplier=0.25, alphaMultiplier=0.25, redOffset=35, greenOffset=50, blueOffset=65, alphaOffset=80)
|
||||||
|
oob constructor mult
|
||||||
|
(redMultiplier=1000, greenMultiplier=1000, blueMultiplier=1000, alphaMultiplier=1000, redOffset=1000.1, greenOffset=1000.1, blueOffset=1000.1, alphaOffset=1000.1)
|
||||||
|
(redMultiplier=250, greenMultiplier=250, blueMultiplier=250, alphaMultiplier=250, redOffset=36000.1, greenOffset=51000.1, blueOffset=66000.1, alphaOffset=81000.1)
|
||||||
|
36000.1
|
||||||
|
51000.1
|
||||||
|
66000.1
|
||||||
|
250
|
||||||
|
250
|
||||||
|
250
|
||||||
|
RGB
|
||||||
|
16777215
|
||||||
|
2031615
|
||||||
|
1984255
|
||||||
|
1984080
|
||||||
|
1984080
|
||||||
|
RGB set
|
||||||
|
32
|
||||||
|
48
|
||||||
|
64
|
||||||
|
0
|
||||||
|
0
|
||||||
|
123
|
||||||
|
Bad concat
|
||||||
|
(redMultiplier=1, greenMultiplier=1, blueMultiplier=1, alphaMultiplier=1, redOffset=255, greenOffset=255, blueOffset=255, alphaOffset=255)
|
||||||
|
toString
|
||||||
|
concat
|
||||||
|
rgb
|
||||||
|
blueOffset
|
||||||
|
greenOffset
|
||||||
|
redOffset
|
||||||
|
alphaOffset
|
||||||
|
blueMultiplier
|
||||||
|
greenMultiplier
|
||||||
|
redMultiplier
|
||||||
|
alphaMultiplier
|
||||||
|
Large values
|
||||||
|
(redMultiplier=8589934592, greenMultiplier=1, blueMultiplier=1, alphaMultiplier=1, redOffset=0, greenOffset=0, blueOffset=0, alphaOffset=0)
|
||||||
|
Strange values
|
||||||
|
(redMultiplier=NaN, greenMultiplier=1, blueMultiplier=1, alphaMultiplier=1, redOffset=0, greenOffset=1000, blueOffset=0, alphaOffset=0)
|
||||||
|
(redMultiplier=0, greenMultiplier=0, blueMultiplier=0, alphaMultiplier=1, redOffset=0, greenOffset=0, blueOffset=0, alphaOffset=0)
|
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue