sub method
Implementation
MathTime sub( dynamic r ){
if( r is MathTime ){
if( _minus != r._minus ){
// this + -r
return add( r.minus() );
}
MathTime ll = dup( this );
ll._update();
MathTime rr = dup( r );
rr._update();
MathTime t = MathTime(
ll._minus,
ll._hour - rr._hour,
ll._min - rr._min,
ll._sec - rr._sec,
ll._frame - rr._frame
);
t.reduce();
return t;
}
double rr = ClipMath.toDouble(r);
if( _minus != (rr < 0.0) ){
// this + -rr
return add( -rr );
}
MathTime ll = dup( this );
ll._update();
MathTime rrr = floatToTime( rr );
MathTime t = MathTime(
ll._minus,
ll._hour - rrr._hour,
ll._min - rrr._min,
ll._sec - rrr._sec,
ll._frame - rrr._frame
);
t.reduce();
return t;
}