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, '_>,
|
||||
proto: Option<Object<'gc>>,
|
||||
) -> Self {
|
||||
println!("Create new ct o");
|
||||
ColorTransformObject(GcCell::allocate(
|
||||
gc_context,
|
||||
ColorTransformData {
|
||||
|
|
|
@ -140,8 +140,6 @@ pub fn set_rgb<'gc>(
|
|||
this: Object<'gc>,
|
||||
args: &[Value<'gc>],
|
||||
) -> Result<Value<'gc>, Error<'gc>> {
|
||||
log::warn!("ColorTransform.set_rgb");
|
||||
|
||||
let new_rgb = args
|
||||
.get(0)
|
||||
.unwrap_or(&Value::Undefined)
|
||||
|
@ -173,7 +171,6 @@ macro_rules! color_transform_value_accessor {
|
|||
this: Object<'gc>,
|
||||
args: &[Value<'gc>],
|
||||
) -> Result<Value<'gc>, Error<'gc>> {
|
||||
//TODO: add validation
|
||||
let new_val = args
|
||||
.get(0)
|
||||
.unwrap_or(&Value::Undefined)
|
||||
|
@ -190,7 +187,6 @@ macro_rules! color_transform_value_accessor {
|
|||
this: Object<'gc>,
|
||||
_args: &[Value<'gc>],
|
||||
) -> Result<Value<'gc>, Error<'gc>> {
|
||||
println!("This: {}, {:?}", stringify!($get_ident), this);
|
||||
let ct = this.as_color_transform_object().unwrap();
|
||||
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();
|
||||
|
||||
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],
|
||||
"greenMultiplier" => [get_green_multiplier, set_green_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],
|
||||
"greenOffset" => [get_green_offset, set_green_offset],
|
||||
"blueOffset" => [get_blue_offset, set_blue_offset],
|
||||
"alphaOffset" => [get_alpha_offset, set_alpha_offset],
|
||||
"rgb" => [get_rgb, set_rgb],
|
||||
);
|
||||
|
||||
object.force_set_function(
|
||||
|
@ -299,27 +295,6 @@ fn concat<'gc>(
|
|||
let alpha_offset = (other_ct.get_alpha_offset() * this_ct.get_alpha_multiplier())
|
||||
+ 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_green_multiplier(context.gc_context, green_multiplier);
|
||||
this_ct.set_blue_multiplier(context.gc_context, blue_multiplier);
|
||||
|
|
|
@ -215,6 +215,7 @@ swf_tests! {
|
|||
(define_local, "avm1/define_local", 1),
|
||||
(textfield_variable, "avm1/textfield_variable", 8),
|
||||
(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.
|
||||
|
|
|
@ -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