@@ -4,7 +4,7 @@ import { Component, OnInit, ViewContainerRef } from '@angular/core';
44import { LayerStateService , MorphabilityStatus } from '../services' ;
55import { CanvasType } from '../CanvasType' ;
66import { AvdSerializer , SvgSerializer } from '../scripts/parsers' ;
7- import { AvdTarget , AvdAnimation } from '../scripts/animation' ;
7+ import { AvdTarget , AvdAnimation , ValueType , PropertyName } from '../scripts/animation' ;
88import { DialogService } from '../dialogs' ;
99import { AutoAwesome } from '../scripts/commands' ;
1010import { AnimatorService } from '../services/animator.service' ;
@@ -142,13 +142,13 @@ export class ToolbarComponent implements OnInit {
142142 const duration = this . animatorService . getDuration ( ) ;
143143 const interpolator = this . animatorService . getInterpolator ( ) ;
144144 return new AvdTarget ( startLayer . id ,
145- new AvdAnimation (
145+ [ new AvdAnimation (
146146 fromValue . toString ( ) ,
147147 toValue . toString ( ) ,
148148 duration ,
149149 interpolator . androidRef ,
150150 'rotation' ,
151- 'floatType' ) ) ;
151+ 'floatType' ) ] ) ;
152152 }
153153
154154 private createPathAvdTarget ( ) {
@@ -158,14 +158,40 @@ export class ToolbarComponent implements OnInit {
158158 const toValue = endLayer . pathData . getPathString ( ) ;
159159 const duration = this . animatorService . getDuration ( ) ;
160160 const interpolator = this . animatorService . getInterpolator ( ) ;
161- return new AvdTarget ( startLayer . id ,
162- new AvdAnimation (
163- fromValue ,
164- toValue ,
165- duration ,
166- interpolator . androidRef ,
161+ const createAvdAnimation = ( from : string , to : string , propertyName : PropertyName , valueType : ValueType ) => {
162+ return new AvdAnimation ( from , to , duration , interpolator . androidRef , propertyName , valueType ) ;
163+ } ;
164+ const avdAnimations : AvdAnimation [ ] = [ ] ;
165+ avdAnimations . push (
166+ createAvdAnimation (
167+ startLayer . pathData . getPathString ( ) ,
168+ endLayer . pathData . getPathString ( ) ,
167169 'pathData' ,
168170 'pathType' ) ) ;
171+ if ( startLayer . fillColor && endLayer . fillColor && startLayer . fillColor !== endLayer . fillColor ) {
172+ avdAnimations . push (
173+ createAvdAnimation ( startLayer . fillColor , endLayer . fillColor , 'fillColor' , 'colorType' ) ) ;
174+ }
175+ if ( startLayer . strokeColor && endLayer . strokeColor && startLayer . strokeColor !== endLayer . strokeColor ) {
176+ avdAnimations . push (
177+ createAvdAnimation ( startLayer . strokeColor , endLayer . strokeColor , 'strokeColor' , 'colorType' ) ) ;
178+ }
179+ if ( startLayer . fillAlpha !== endLayer . fillAlpha ) {
180+ avdAnimations . push (
181+ createAvdAnimation (
182+ startLayer . fillAlpha . toString ( ) , endLayer . fillAlpha . toString ( ) , 'fillAlpha' , 'floatType' ) ) ;
183+ }
184+ if ( startLayer . strokeAlpha !== endLayer . strokeAlpha ) {
185+ avdAnimations . push (
186+ createAvdAnimation (
187+ startLayer . strokeAlpha . toString ( ) , endLayer . strokeAlpha . toString ( ) , 'strokeAlpha' , 'floatType' ) ) ;
188+ }
189+ if ( startLayer . strokeWidth !== endLayer . strokeWidth ) {
190+ avdAnimations . push (
191+ createAvdAnimation (
192+ startLayer . strokeWidth . toString ( ) , endLayer . strokeWidth . toString ( ) , 'strokeWidth' , 'floatType' ) ) ;
193+ }
194+ return new AvdTarget ( startLayer . id , avdAnimations ) ;
169195 }
170196
171197 onDemoClick ( ) {
0 commit comments