.class Lcom/airbnb/lottie/parser/KeyframeParser; .super Ljava/lang/Object; .source "KeyframeParser.java" # static fields .field static INTERPOLATOR_NAMES:Lcom/airbnb/lottie/parser/moshi/JsonReader$Options; = null .field private static final LINEAR_INTERPOLATOR:Landroid/view/animation/Interpolator; .field private static final MAX_CP_VALUE:F = 100.0f .field static NAMES:Lcom/airbnb/lottie/parser/moshi/JsonReader$Options; .field private static pathInterpolatorCache:Landroidx/collection/SparseArrayCompat; .annotation system Ldalvik/annotation/Signature; value = { "Landroidx/collection/SparseArrayCompat<", "Ljava/lang/ref/WeakReference<", "Landroid/view/animation/Interpolator;", ">;>;" } .end annotation .end field # direct methods .method static constructor ()V .locals 9 .line 29 new-instance v0, Landroid/view/animation/LinearInterpolator; invoke-direct {v0}, Landroid/view/animation/LinearInterpolator;->()V sput-object v0, Lcom/airbnb/lottie/parser/KeyframeParser;->LINEAR_INTERPOLATOR:Landroid/view/animation/Interpolator; const-string v1, "t" const-string v2, "s" const-string v3, "e" const-string v4, "o" const-string v5, "i" const-string v6, "h" const-string v7, "to" const-string v8, "ti" .line 32 filled-new-array/range {v1 .. v8}, [Ljava/lang/String; move-result-object v0 invoke-static {v0}, Lcom/airbnb/lottie/parser/moshi/JsonReader$Options;->of([Ljava/lang/String;)Lcom/airbnb/lottie/parser/moshi/JsonReader$Options; move-result-object v0 sput-object v0, Lcom/airbnb/lottie/parser/KeyframeParser;->NAMES:Lcom/airbnb/lottie/parser/moshi/JsonReader$Options; const-string v0, "x" const-string v1, "y" .line 42 filled-new-array {v0, v1}, [Ljava/lang/String; move-result-object v0 invoke-static {v0}, Lcom/airbnb/lottie/parser/moshi/JsonReader$Options;->of([Ljava/lang/String;)Lcom/airbnb/lottie/parser/moshi/JsonReader$Options; move-result-object v0 sput-object v0, Lcom/airbnb/lottie/parser/KeyframeParser;->INTERPOLATOR_NAMES:Lcom/airbnb/lottie/parser/moshi/JsonReader$Options; return-void .end method .method constructor ()V .locals 0 .line 22 invoke-direct {p0}, Ljava/lang/Object;->()V return-void .end method .method private static getInterpolator(I)Ljava/lang/ref/WeakReference; .locals 2 .annotation system Ldalvik/annotation/Signature; value = { "(I)", "Ljava/lang/ref/WeakReference<", "Landroid/view/animation/Interpolator;", ">;" } .end annotation const-class v0, Lcom/airbnb/lottie/parser/KeyframeParser; .line 59 monitor-enter v0 .line 60 :try_start_0 invoke-static {}, Lcom/airbnb/lottie/parser/KeyframeParser;->pathInterpolatorCache()Landroidx/collection/SparseArrayCompat; move-result-object v1 invoke-virtual {v1, p0}, Landroidx/collection/SparseArrayCompat;->get(I)Ljava/lang/Object; move-result-object p0 check-cast p0, Ljava/lang/ref/WeakReference; monitor-exit v0 return-object p0 :catchall_0 move-exception p0 .line 61 monitor-exit v0 :try_end_0 .catchall {:try_start_0 .. :try_end_0} :catchall_0 throw p0 .end method .method private static interpolatorFor(Landroid/graphics/PointF;Landroid/graphics/PointF;)Landroid/view/animation/Interpolator; .locals 6 .line 332 iget v0, p0, Landroid/graphics/PointF;->x:F const/high16 v1, -0x40800000 # -1.0f const/high16 v2, 0x3f800000 # 1.0f invoke-static {v0, v1, v2}, Lcom/airbnb/lottie/utils/MiscUtils;->clamp(FFF)F move-result v0 iput v0, p0, Landroid/graphics/PointF;->x:F .line 333 iget v0, p0, Landroid/graphics/PointF;->y:F const/high16 v3, -0x3d380000 # -100.0f const/high16 v4, 0x42c80000 # 100.0f invoke-static {v0, v3, v4}, Lcom/airbnb/lottie/utils/MiscUtils;->clamp(FFF)F move-result v0 iput v0, p0, Landroid/graphics/PointF;->y:F .line 334 iget v0, p1, Landroid/graphics/PointF;->x:F invoke-static {v0, v1, v2}, Lcom/airbnb/lottie/utils/MiscUtils;->clamp(FFF)F move-result v0 iput v0, p1, Landroid/graphics/PointF;->x:F .line 335 iget v0, p1, Landroid/graphics/PointF;->y:F invoke-static {v0, v3, v4}, Lcom/airbnb/lottie/utils/MiscUtils;->clamp(FFF)F move-result v0 iput v0, p1, Landroid/graphics/PointF;->y:F .line 336 iget v0, p0, Landroid/graphics/PointF;->x:F iget v1, p0, Landroid/graphics/PointF;->y:F iget v3, p1, Landroid/graphics/PointF;->x:F iget v4, p1, Landroid/graphics/PointF;->y:F invoke-static {v0, v1, v3, v4}, Lcom/airbnb/lottie/utils/Utils;->hashFor(FFFF)I move-result v0 .line 337 invoke-static {}, Lcom/airbnb/lottie/L;->getDisablePathInterpolatorCache()Z move-result v1 const/4 v3, 0x0 if-eqz v1, :cond_0 move-object v1, v3 goto :goto_0 :cond_0 invoke-static {v0}, Lcom/airbnb/lottie/parser/KeyframeParser;->getInterpolator(I)Ljava/lang/ref/WeakReference; move-result-object v1 :goto_0 if-eqz v1, :cond_1 .line 339 invoke-virtual {v1}, Ljava/lang/ref/WeakReference;->get()Ljava/lang/Object; move-result-object v3 check-cast v3, Landroid/view/animation/Interpolator; :cond_1 if-eqz v1, :cond_2 if-nez v3, :cond_4 .line 343 :cond_2 :try_start_0 iget v1, p0, Landroid/graphics/PointF;->x:F iget v3, p0, Landroid/graphics/PointF;->y:F iget v4, p1, Landroid/graphics/PointF;->x:F iget v5, p1, Landroid/graphics/PointF;->y:F invoke-static {v1, v3, v4, v5}, Landroidx/core/view/animation/PathInterpolatorCompat;->create(FFFF)Landroid/view/animation/Interpolator; move-result-object p0 :try_end_0 .catch Ljava/lang/IllegalArgumentException; {:try_start_0 .. :try_end_0} :catch_0 goto :goto_1 :catch_0 move-exception v1 const-string v3, "The Path cannot loop back on itself." .line 345 invoke-virtual {v1}, Ljava/lang/IllegalArgumentException;->getMessage()Ljava/lang/String; move-result-object v1 invoke-virtual {v3, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z move-result v1 if-eqz v1, :cond_3 .line 349 iget v1, p0, Landroid/graphics/PointF;->x:F invoke-static {v1, v2}, Ljava/lang/Math;->min(FF)F move-result v1 iget p0, p0, Landroid/graphics/PointF;->y:F iget v2, p1, Landroid/graphics/PointF;->x:F const/4 v3, 0x0 invoke-static {v2, v3}, Ljava/lang/Math;->max(FF)F move-result v2 iget p1, p1, Landroid/graphics/PointF;->y:F invoke-static {v1, p0, v2, p1}, Landroidx/core/view/animation/PathInterpolatorCompat;->create(FFFF)Landroid/view/animation/Interpolator; move-result-object p0 goto :goto_1 .line 352 :cond_3 new-instance p0, Landroid/view/animation/LinearInterpolator; invoke-direct {p0}, Landroid/view/animation/LinearInterpolator;->()V :goto_1 move-object v3, p0 .line 355 invoke-static {}, Lcom/airbnb/lottie/L;->getDisablePathInterpolatorCache()Z move-result p0 if-nez p0, :cond_4 .line 357 :try_start_1 new-instance p0, Ljava/lang/ref/WeakReference; invoke-direct {p0, v3}, Ljava/lang/ref/WeakReference;->(Ljava/lang/Object;)V invoke-static {v0, p0}, Lcom/airbnb/lottie/parser/KeyframeParser;->putInterpolator(ILjava/lang/ref/WeakReference;)V :try_end_1 .catch Ljava/lang/ArrayIndexOutOfBoundsException; {:try_start_1 .. :try_end_1} :catch_1 :catch_1 :cond_4 return-object v3 .end method .method static parse(Lcom/airbnb/lottie/parser/moshi/JsonReader;Lcom/airbnb/lottie/LottieComposition;FLcom/airbnb/lottie/parser/ValueParser;ZZ)Lcom/airbnb/lottie/value/Keyframe; .locals 0 .annotation system Ldalvik/annotation/Signature; value = { "(", "Lcom/airbnb/lottie/parser/moshi/JsonReader;", "Lcom/airbnb/lottie/LottieComposition;", "F", "Lcom/airbnb/lottie/parser/ValueParser<", "TT;>;ZZ)", "Lcom/airbnb/lottie/value/Keyframe<", "TT;>;" } .end annotation .annotation system Ldalvik/annotation/Throws; value = { Ljava/io/IOException; } .end annotation if-eqz p4, :cond_0 if-eqz p5, :cond_0 .line 79 invoke-static {p1, p0, p2, p3}, Lcom/airbnb/lottie/parser/KeyframeParser;->parseMultiDimensionalKeyframe(Lcom/airbnb/lottie/LottieComposition;Lcom/airbnb/lottie/parser/moshi/JsonReader;FLcom/airbnb/lottie/parser/ValueParser;)Lcom/airbnb/lottie/value/Keyframe; move-result-object p0 return-object p0 :cond_0 if-eqz p4, :cond_1 .line 81 invoke-static {p1, p0, p2, p3}, Lcom/airbnb/lottie/parser/KeyframeParser;->parseKeyframe(Lcom/airbnb/lottie/LottieComposition;Lcom/airbnb/lottie/parser/moshi/JsonReader;FLcom/airbnb/lottie/parser/ValueParser;)Lcom/airbnb/lottie/value/Keyframe; move-result-object p0 return-object p0 .line 83 :cond_1 invoke-static {p0, p2, p3}, Lcom/airbnb/lottie/parser/KeyframeParser;->parseStaticValue(Lcom/airbnb/lottie/parser/moshi/JsonReader;FLcom/airbnb/lottie/parser/ValueParser;)Lcom/airbnb/lottie/value/Keyframe; move-result-object p0 return-object p0 .end method .method private static parseKeyframe(Lcom/airbnb/lottie/LottieComposition;Lcom/airbnb/lottie/parser/moshi/JsonReader;FLcom/airbnb/lottie/parser/ValueParser;)Lcom/airbnb/lottie/value/Keyframe; .locals 12 .annotation system Ldalvik/annotation/Signature; value = { "(", "Lcom/airbnb/lottie/LottieComposition;", "Lcom/airbnb/lottie/parser/moshi/JsonReader;", "F", "Lcom/airbnb/lottie/parser/ValueParser<", "TT;>;)", "Lcom/airbnb/lottie/value/Keyframe<", "TT;>;" } .end annotation .annotation system Ldalvik/annotation/Throws; value = { Ljava/io/IOException; } .end annotation .line 106 invoke-virtual {p1}, Lcom/airbnb/lottie/parser/moshi/JsonReader;->beginObject()V const/4 v0, 0x0 const/4 v1, 0x0 const/4 v2, 0x0 move-object v3, v0 move-object v5, v3 move-object v10, v5 move-object v11, v10 move v8, v1 move v4, v2 move-object v1, v11 .line 107 :goto_0 invoke-virtual {p1}, Lcom/airbnb/lottie/parser/moshi/JsonReader;->hasNext()Z move-result v6 if-eqz v6, :cond_1 sget-object v6, Lcom/airbnb/lottie/parser/KeyframeParser;->NAMES:Lcom/airbnb/lottie/parser/moshi/JsonReader$Options; .line 108 invoke-virtual {p1, v6}, Lcom/airbnb/lottie/parser/moshi/JsonReader;->selectName(Lcom/airbnb/lottie/parser/moshi/JsonReader$Options;)I move-result v6 const/high16 v7, 0x3f800000 # 1.0f packed-switch v6, :pswitch_data_0 .line 134 invoke-virtual {p1}, Lcom/airbnb/lottie/parser/moshi/JsonReader;->skipValue()V goto :goto_0 .line 131 :pswitch_0 invoke-static {p1, p2}, Lcom/airbnb/lottie/parser/JsonUtils;->jsonToPoint(Lcom/airbnb/lottie/parser/moshi/JsonReader;F)Landroid/graphics/PointF; move-result-object v11 goto :goto_0 .line 128 :pswitch_1 invoke-static {p1, p2}, Lcom/airbnb/lottie/parser/JsonUtils;->jsonToPoint(Lcom/airbnb/lottie/parser/moshi/JsonReader;F)Landroid/graphics/PointF; move-result-object v10 goto :goto_0 .line 125 :pswitch_2 invoke-virtual {p1}, Lcom/airbnb/lottie/parser/moshi/JsonReader;->nextInt()I move-result v4 const/4 v6, 0x1 if-ne v4, v6, :cond_0 move v4, v6 goto :goto_0 :cond_0 move v4, v2 goto :goto_0 .line 122 :pswitch_3 invoke-static {p1, v7}, Lcom/airbnb/lottie/parser/JsonUtils;->jsonToPoint(Lcom/airbnb/lottie/parser/moshi/JsonReader;F)Landroid/graphics/PointF; move-result-object v1 goto :goto_0 .line 119 :pswitch_4 invoke-static {p1, v7}, Lcom/airbnb/lottie/parser/JsonUtils;->jsonToPoint(Lcom/airbnb/lottie/parser/moshi/JsonReader;F)Landroid/graphics/PointF; move-result-object v0 goto :goto_0 .line 116 :pswitch_5 invoke-interface {p3, p1, p2}, Lcom/airbnb/lottie/parser/ValueParser;->parse(Lcom/airbnb/lottie/parser/moshi/JsonReader;F)Ljava/lang/Object; move-result-object v3 goto :goto_0 .line 113 :pswitch_6 invoke-interface {p3, p1, p2}, Lcom/airbnb/lottie/parser/ValueParser;->parse(Lcom/airbnb/lottie/parser/moshi/JsonReader;F)Ljava/lang/Object; move-result-object v5 goto :goto_0 .line 110 :pswitch_7 invoke-virtual {p1}, Lcom/airbnb/lottie/parser/moshi/JsonReader;->nextDouble()D move-result-wide v6 double-to-float v8, v6 goto :goto_0 .line 137 :cond_1 invoke-virtual {p1}, Lcom/airbnb/lottie/parser/moshi/JsonReader;->endObject()V if-eqz v4, :cond_2 sget-object p1, Lcom/airbnb/lottie/parser/KeyframeParser;->LINEAR_INTERPOLATOR:Landroid/view/animation/Interpolator; move-object v7, p1 move-object v6, v5 goto :goto_2 :cond_2 if-eqz v0, :cond_3 if-eqz v1, :cond_3 .line 144 invoke-static {v0, v1}, Lcom/airbnb/lottie/parser/KeyframeParser;->interpolatorFor(Landroid/graphics/PointF;Landroid/graphics/PointF;)Landroid/view/animation/Interpolator; move-result-object p1 goto :goto_1 :cond_3 sget-object p1, Lcom/airbnb/lottie/parser/KeyframeParser;->LINEAR_INTERPOLATOR:Landroid/view/animation/Interpolator; :goto_1 move-object v7, p1 move-object v6, v3 .line 149 :goto_2 new-instance p1, Lcom/airbnb/lottie/value/Keyframe; const/4 v9, 0x0 move-object v3, p1 move-object v4, p0 invoke-direct/range {v3 .. v9}, Lcom/airbnb/lottie/value/Keyframe;->(Lcom/airbnb/lottie/LottieComposition;Ljava/lang/Object;Ljava/lang/Object;Landroid/view/animation/Interpolator;FLjava/lang/Float;)V .line 151 iput-object v10, p1, Lcom/airbnb/lottie/value/Keyframe;->pathCp1:Landroid/graphics/PointF; .line 152 iput-object v11, p1, Lcom/airbnb/lottie/value/Keyframe;->pathCp2:Landroid/graphics/PointF; return-object p1 nop :pswitch_data_0 .packed-switch 0x0 :pswitch_7 :pswitch_6 :pswitch_5 :pswitch_4 :pswitch_3 :pswitch_2 :pswitch_1 :pswitch_0 .end packed-switch .end method .method private static parseMultiDimensionalKeyframe(Lcom/airbnb/lottie/LottieComposition;Lcom/airbnb/lottie/parser/moshi/JsonReader;FLcom/airbnb/lottie/parser/ValueParser;)Lcom/airbnb/lottie/value/Keyframe; .locals 20 .annotation system Ldalvik/annotation/Signature; value = { "(", "Lcom/airbnb/lottie/LottieComposition;", "Lcom/airbnb/lottie/parser/moshi/JsonReader;", "F", "Lcom/airbnb/lottie/parser/ValueParser<", "TT;>;)", "Lcom/airbnb/lottie/value/Keyframe<", "TT;>;" } .end annotation .annotation system Ldalvik/annotation/Throws; value = { Ljava/io/IOException; } .end annotation move-object/from16 v0, p1 move/from16 v1, p2 move-object/from16 v2, p3 .line 178 invoke-virtual/range {p1 .. p1}, Lcom/airbnb/lottie/parser/moshi/JsonReader;->beginObject()V const/4 v3, 0x0 const/4 v6, 0x0 const/4 v7, 0x0 const/4 v8, 0x0 const/4 v9, 0x0 const/4 v10, 0x0 const/4 v11, 0x0 const/4 v12, 0x0 const/4 v13, 0x0 const/4 v14, 0x0 const/4 v15, 0x0 const/16 v16, 0x0 .line 179 :goto_0 invoke-virtual/range {p1 .. p1}, Lcom/airbnb/lottie/parser/moshi/JsonReader;->hasNext()Z move-result v17 if-eqz v17, :cond_11 sget-object v4, Lcom/airbnb/lottie/parser/KeyframeParser;->NAMES:Lcom/airbnb/lottie/parser/moshi/JsonReader$Options; .line 180 invoke-virtual {v0, v4}, Lcom/airbnb/lottie/parser/moshi/JsonReader;->selectName(Lcom/airbnb/lottie/parser/moshi/JsonReader$Options;)I move-result v4 const/4 v5, 0x1 packed-switch v4, :pswitch_data_0 move-object/from16 v19, v3 move v3, v14 move-object/from16 v18, v15 .line 300 invoke-virtual/range {p1 .. p1}, Lcom/airbnb/lottie/parser/moshi/JsonReader;->skipValue()V goto/16 :goto_a .line 297 :pswitch_0 invoke-static/range {p1 .. p2}, Lcom/airbnb/lottie/parser/JsonUtils;->jsonToPoint(Lcom/airbnb/lottie/parser/moshi/JsonReader;F)Landroid/graphics/PointF; move-result-object v3 goto :goto_0 .line 294 :pswitch_1 invoke-static/range {p1 .. p2}, Lcom/airbnb/lottie/parser/JsonUtils;->jsonToPoint(Lcom/airbnb/lottie/parser/moshi/JsonReader;F)Landroid/graphics/PointF; move-result-object v15 goto :goto_0 .line 291 :pswitch_2 invoke-virtual/range {p1 .. p1}, Lcom/airbnb/lottie/parser/moshi/JsonReader;->nextInt()I move-result v4 if-ne v4, v5, :cond_0 move v6, v5 goto :goto_0 :cond_0 const/4 v6, 0x0 goto :goto_0 .line 241 :pswitch_3 invoke-virtual/range {p1 .. p1}, Lcom/airbnb/lottie/parser/moshi/JsonReader;->peek()Lcom/airbnb/lottie/parser/moshi/JsonReader$Token; move-result-object v4 sget-object v5, Lcom/airbnb/lottie/parser/moshi/JsonReader$Token;->BEGIN_OBJECT:Lcom/airbnb/lottie/parser/moshi/JsonReader$Token; if-ne v4, v5, :cond_8 .line 242 invoke-virtual/range {p1 .. p1}, Lcom/airbnb/lottie/parser/moshi/JsonReader;->beginObject()V const/4 v4, 0x0 const/4 v5, 0x0 const/4 v12, 0x0 const/4 v13, 0x0 .line 247 :goto_1 invoke-virtual/range {p1 .. p1}, Lcom/airbnb/lottie/parser/moshi/JsonReader;->hasNext()Z move-result v18 if-eqz v18, :cond_7 move-object/from16 v18, v15 sget-object v15, Lcom/airbnb/lottie/parser/KeyframeParser;->INTERPOLATOR_NAMES:Lcom/airbnb/lottie/parser/moshi/JsonReader$Options; .line 248 invoke-virtual {v0, v15}, Lcom/airbnb/lottie/parser/moshi/JsonReader;->selectName(Lcom/airbnb/lottie/parser/moshi/JsonReader$Options;)I move-result v15 if-eqz v15, :cond_4 move-object/from16 v19, v3 const/4 v3, 0x1 if-eq v15, v3, :cond_1 .line 280 invoke-virtual/range {p1 .. p1}, Lcom/airbnb/lottie/parser/moshi/JsonReader;->skipValue()V :goto_2 move-object/from16 v15, v18 move-object/from16 v3, v19 goto :goto_1 .line 265 :cond_1 invoke-virtual/range {p1 .. p1}, Lcom/airbnb/lottie/parser/moshi/JsonReader;->peek()Lcom/airbnb/lottie/parser/moshi/JsonReader$Token; move-result-object v3 sget-object v5, Lcom/airbnb/lottie/parser/moshi/JsonReader$Token;->NUMBER:Lcom/airbnb/lottie/parser/moshi/JsonReader$Token; if-ne v3, v5, :cond_2 move v3, v14 .line 266 invoke-virtual/range {p1 .. p1}, Lcom/airbnb/lottie/parser/moshi/JsonReader;->nextDouble()D move-result-wide v13 double-to-float v13, v13 move v14, v3 move v5, v13 goto :goto_2 :cond_2 move v3, v14 .line 269 invoke-virtual/range {p1 .. p1}, Lcom/airbnb/lottie/parser/moshi/JsonReader;->beginArray()V .line 270 invoke-virtual/range {p1 .. p1}, Lcom/airbnb/lottie/parser/moshi/JsonReader;->nextDouble()D move-result-wide v13 double-to-float v5, v13 .line 271 invoke-virtual/range {p1 .. p1}, Lcom/airbnb/lottie/parser/moshi/JsonReader;->peek()Lcom/airbnb/lottie/parser/moshi/JsonReader$Token; move-result-object v13 sget-object v14, Lcom/airbnb/lottie/parser/moshi/JsonReader$Token;->NUMBER:Lcom/airbnb/lottie/parser/moshi/JsonReader$Token; if-ne v13, v14, :cond_3 .line 272 invoke-virtual/range {p1 .. p1}, Lcom/airbnb/lottie/parser/moshi/JsonReader;->nextDouble()D move-result-wide v13 double-to-float v13, v13 goto :goto_3 :cond_3 move v13, v5 .line 276 :goto_3 invoke-virtual/range {p1 .. p1}, Lcom/airbnb/lottie/parser/moshi/JsonReader;->endArray()V goto :goto_5 :cond_4 move-object/from16 v19, v3 move v3, v14 .line 250 invoke-virtual/range {p1 .. p1}, Lcom/airbnb/lottie/parser/moshi/JsonReader;->peek()Lcom/airbnb/lottie/parser/moshi/JsonReader$Token; move-result-object v4 sget-object v12, Lcom/airbnb/lottie/parser/moshi/JsonReader$Token;->NUMBER:Lcom/airbnb/lottie/parser/moshi/JsonReader$Token; if-ne v4, v12, :cond_5 .line 251 invoke-virtual/range {p1 .. p1}, Lcom/airbnb/lottie/parser/moshi/JsonReader;->nextDouble()D move-result-wide v14 double-to-float v12, v14 move v14, v3 move v4, v12 goto :goto_2 .line 254 :cond_5 invoke-virtual/range {p1 .. p1}, Lcom/airbnb/lottie/parser/moshi/JsonReader;->beginArray()V .line 255 invoke-virtual/range {p1 .. p1}, Lcom/airbnb/lottie/parser/moshi/JsonReader;->nextDouble()D move-result-wide v14 double-to-float v4, v14 .line 256 invoke-virtual/range {p1 .. p1}, Lcom/airbnb/lottie/parser/moshi/JsonReader;->peek()Lcom/airbnb/lottie/parser/moshi/JsonReader$Token; move-result-object v12 sget-object v14, Lcom/airbnb/lottie/parser/moshi/JsonReader$Token;->NUMBER:Lcom/airbnb/lottie/parser/moshi/JsonReader$Token; if-ne v12, v14, :cond_6 .line 257 invoke-virtual/range {p1 .. p1}, Lcom/airbnb/lottie/parser/moshi/JsonReader;->nextDouble()D move-result-wide v14 double-to-float v12, v14 goto :goto_4 :cond_6 move v12, v4 .line 261 :goto_4 invoke-virtual/range {p1 .. p1}, Lcom/airbnb/lottie/parser/moshi/JsonReader;->endArray()V :goto_5 move v14, v3 goto :goto_2 :cond_7 move-object/from16 v19, v3 move v3, v14 move-object/from16 v18, v15 .line 283 new-instance v14, Landroid/graphics/PointF; invoke-direct {v14, v4, v5}, Landroid/graphics/PointF;->(FF)V .line 284 new-instance v4, Landroid/graphics/PointF; invoke-direct {v4, v12, v13}, Landroid/graphics/PointF;->(FF)V .line 285 invoke-virtual/range {p1 .. p1}, Lcom/airbnb/lottie/parser/moshi/JsonReader;->endObject()V move-object v13, v4 move-object v12, v14 goto/16 :goto_9 :cond_8 move-object/from16 v19, v3 move v3, v14 move-object/from16 v18, v15 .line 287 invoke-static/range {p1 .. p2}, Lcom/airbnb/lottie/parser/JsonUtils;->jsonToPoint(Lcom/airbnb/lottie/parser/moshi/JsonReader;F)Landroid/graphics/PointF; move-result-object v8 goto/16 :goto_a :pswitch_4 move-object/from16 v19, v3 move v3, v14 move-object/from16 v18, v15 .line 191 invoke-virtual/range {p1 .. p1}, Lcom/airbnb/lottie/parser/moshi/JsonReader;->peek()Lcom/airbnb/lottie/parser/moshi/JsonReader$Token; move-result-object v4 sget-object v5, Lcom/airbnb/lottie/parser/moshi/JsonReader$Token;->BEGIN_OBJECT:Lcom/airbnb/lottie/parser/moshi/JsonReader$Token; if-ne v4, v5, :cond_10 .line 192 invoke-virtual/range {p1 .. p1}, Lcom/airbnb/lottie/parser/moshi/JsonReader;->beginObject()V const/4 v4, 0x0 const/4 v5, 0x0 const/4 v9, 0x0 const/4 v11, 0x0 .line 197 :goto_6 invoke-virtual/range {p1 .. p1}, Lcom/airbnb/lottie/parser/moshi/JsonReader;->hasNext()Z move-result v14 if-eqz v14, :cond_f sget-object v14, Lcom/airbnb/lottie/parser/KeyframeParser;->INTERPOLATOR_NAMES:Lcom/airbnb/lottie/parser/moshi/JsonReader$Options; .line 198 invoke-virtual {v0, v14}, Lcom/airbnb/lottie/parser/moshi/JsonReader;->selectName(Lcom/airbnb/lottie/parser/moshi/JsonReader$Options;)I move-result v14 if-eqz v14, :cond_c const/4 v15, 0x1 if-eq v14, v15, :cond_9 .line 230 invoke-virtual/range {p1 .. p1}, Lcom/airbnb/lottie/parser/moshi/JsonReader;->skipValue()V goto :goto_6 .line 215 :cond_9 invoke-virtual/range {p1 .. p1}, Lcom/airbnb/lottie/parser/moshi/JsonReader;->peek()Lcom/airbnb/lottie/parser/moshi/JsonReader$Token; move-result-object v5 sget-object v11, Lcom/airbnb/lottie/parser/moshi/JsonReader$Token;->NUMBER:Lcom/airbnb/lottie/parser/moshi/JsonReader$Token; if-ne v5, v11, :cond_a .line 216 invoke-virtual/range {p1 .. p1}, Lcom/airbnb/lottie/parser/moshi/JsonReader;->nextDouble()D move-result-wide v14 double-to-float v11, v14 move v5, v11 goto :goto_6 .line 219 :cond_a invoke-virtual/range {p1 .. p1}, Lcom/airbnb/lottie/parser/moshi/JsonReader;->beginArray()V .line 220 invoke-virtual/range {p1 .. p1}, Lcom/airbnb/lottie/parser/moshi/JsonReader;->nextDouble()D move-result-wide v14 double-to-float v5, v14 .line 221 invoke-virtual/range {p1 .. p1}, Lcom/airbnb/lottie/parser/moshi/JsonReader;->peek()Lcom/airbnb/lottie/parser/moshi/JsonReader$Token; move-result-object v11 sget-object v14, Lcom/airbnb/lottie/parser/moshi/JsonReader$Token;->NUMBER:Lcom/airbnb/lottie/parser/moshi/JsonReader$Token; if-ne v11, v14, :cond_b .line 222 invoke-virtual/range {p1 .. p1}, Lcom/airbnb/lottie/parser/moshi/JsonReader;->nextDouble()D move-result-wide v14 double-to-float v11, v14 goto :goto_7 :cond_b move v11, v5 .line 226 :goto_7 invoke-virtual/range {p1 .. p1}, Lcom/airbnb/lottie/parser/moshi/JsonReader;->endArray()V goto :goto_6 .line 200 :cond_c invoke-virtual/range {p1 .. p1}, Lcom/airbnb/lottie/parser/moshi/JsonReader;->peek()Lcom/airbnb/lottie/parser/moshi/JsonReader$Token; move-result-object v4 sget-object v9, Lcom/airbnb/lottie/parser/moshi/JsonReader$Token;->NUMBER:Lcom/airbnb/lottie/parser/moshi/JsonReader$Token; if-ne v4, v9, :cond_d .line 201 invoke-virtual/range {p1 .. p1}, Lcom/airbnb/lottie/parser/moshi/JsonReader;->nextDouble()D move-result-wide v14 double-to-float v9, v14 move v4, v9 goto :goto_6 .line 204 :cond_d invoke-virtual/range {p1 .. p1}, Lcom/airbnb/lottie/parser/moshi/JsonReader;->beginArray()V .line 205 invoke-virtual/range {p1 .. p1}, Lcom/airbnb/lottie/parser/moshi/JsonReader;->nextDouble()D move-result-wide v14 double-to-float v4, v14 .line 206 invoke-virtual/range {p1 .. p1}, Lcom/airbnb/lottie/parser/moshi/JsonReader;->peek()Lcom/airbnb/lottie/parser/moshi/JsonReader$Token; move-result-object v9 sget-object v14, Lcom/airbnb/lottie/parser/moshi/JsonReader$Token;->NUMBER:Lcom/airbnb/lottie/parser/moshi/JsonReader$Token; if-ne v9, v14, :cond_e .line 207 invoke-virtual/range {p1 .. p1}, Lcom/airbnb/lottie/parser/moshi/JsonReader;->nextDouble()D move-result-wide v14 double-to-float v9, v14 goto :goto_8 :cond_e move v9, v4 .line 211 :goto_8 invoke-virtual/range {p1 .. p1}, Lcom/airbnb/lottie/parser/moshi/JsonReader;->endArray()V goto :goto_6 .line 233 :cond_f new-instance v14, Landroid/graphics/PointF; invoke-direct {v14, v4, v5}, Landroid/graphics/PointF;->(FF)V .line 234 new-instance v4, Landroid/graphics/PointF; invoke-direct {v4, v9, v11}, Landroid/graphics/PointF;->(FF)V .line 235 invoke-virtual/range {p1 .. p1}, Lcom/airbnb/lottie/parser/moshi/JsonReader;->endObject()V move-object v11, v4 move-object v9, v14 move-object/from16 v15, v18 :goto_9 move v14, v3 goto :goto_a .line 237 :cond_10 invoke-static/range {p1 .. p2}, Lcom/airbnb/lottie/parser/JsonUtils;->jsonToPoint(Lcom/airbnb/lottie/parser/moshi/JsonReader;F)Landroid/graphics/PointF; move-result-object v7 move v14, v3 move-object/from16 v15, v18 goto :goto_a :pswitch_5 move-object/from16 v19, v3 move v3, v14 move-object/from16 v18, v15 .line 188 invoke-interface {v2, v0, v1}, Lcom/airbnb/lottie/parser/ValueParser;->parse(Lcom/airbnb/lottie/parser/moshi/JsonReader;F)Ljava/lang/Object; move-result-object v16 goto :goto_a :pswitch_6 move-object/from16 v19, v3 move v3, v14 move-object/from16 v18, v15 .line 185 invoke-interface {v2, v0, v1}, Lcom/airbnb/lottie/parser/ValueParser;->parse(Lcom/airbnb/lottie/parser/moshi/JsonReader;F)Ljava/lang/Object; move-result-object v10 goto :goto_a :pswitch_7 move-object/from16 v19, v3 move-object/from16 v18, v15 .line 182 invoke-virtual/range {p1 .. p1}, Lcom/airbnb/lottie/parser/moshi/JsonReader;->nextDouble()D move-result-wide v3 double-to-float v14, v3 :goto_a move-object/from16 v3, v19 goto/16 :goto_0 :cond_11 move-object/from16 v19, v3 move v3, v14 move-object/from16 v18, v15 .line 303 invoke-virtual/range {p1 .. p1}, Lcom/airbnb/lottie/parser/moshi/JsonReader;->endObject()V if-eqz v6, :cond_12 sget-object v0, Lcom/airbnb/lottie/parser/KeyframeParser;->LINEAR_INTERPOLATOR:Landroid/view/animation/Interpolator; move-object v11, v10 :goto_b const/4 v12, 0x0 const/4 v13, 0x0 goto :goto_d :cond_12 if-eqz v7, :cond_13 if-eqz v8, :cond_13 .line 310 invoke-static {v7, v8}, Lcom/airbnb/lottie/parser/KeyframeParser;->interpolatorFor(Landroid/graphics/PointF;Landroid/graphics/PointF;)Landroid/view/animation/Interpolator; move-result-object v0 goto :goto_c :cond_13 if-eqz v9, :cond_14 if-eqz v11, :cond_14 if-eqz v12, :cond_14 if-eqz v13, :cond_14 .line 312 invoke-static {v9, v12}, Lcom/airbnb/lottie/parser/KeyframeParser;->interpolatorFor(Landroid/graphics/PointF;Landroid/graphics/PointF;)Landroid/view/animation/Interpolator; move-result-object v0 .line 313 invoke-static {v11, v13}, Lcom/airbnb/lottie/parser/KeyframeParser;->interpolatorFor(Landroid/graphics/PointF;Landroid/graphics/PointF;)Landroid/view/animation/Interpolator; move-result-object v1 move-object v12, v0 move-object v13, v1 move-object/from16 v11, v16 const/4 v0, 0x0 goto :goto_d :cond_14 sget-object v0, Lcom/airbnb/lottie/parser/KeyframeParser;->LINEAR_INTERPOLATOR:Landroid/view/animation/Interpolator; :goto_c move-object/from16 v11, v16 goto :goto_b :goto_d if-eqz v12, :cond_15 if-eqz v13, :cond_15 .line 320 new-instance v0, Lcom/airbnb/lottie/value/Keyframe; const/4 v15, 0x0 move-object v8, v0 move-object/from16 v9, p0 move v14, v3 move-object/from16 v1, v18 invoke-direct/range {v8 .. v15}, Lcom/airbnb/lottie/value/Keyframe;->(Lcom/airbnb/lottie/LottieComposition;Ljava/lang/Object;Ljava/lang/Object;Landroid/view/animation/Interpolator;Landroid/view/animation/Interpolator;FLjava/lang/Float;)V goto :goto_e :cond_15 move-object/from16 v1, v18 .line 322 new-instance v2, Lcom/airbnb/lottie/value/Keyframe; const/4 v14, 0x0 move-object v8, v2 move-object/from16 v9, p0 move-object v12, v0 move v13, v3 invoke-direct/range {v8 .. v14}, Lcom/airbnb/lottie/value/Keyframe;->(Lcom/airbnb/lottie/LottieComposition;Ljava/lang/Object;Ljava/lang/Object;Landroid/view/animation/Interpolator;FLjava/lang/Float;)V move-object v0, v2 .line 325 :goto_e iput-object v1, v0, Lcom/airbnb/lottie/value/Keyframe;->pathCp1:Landroid/graphics/PointF; move-object/from16 v3, v19 .line 326 iput-object v3, v0, Lcom/airbnb/lottie/value/Keyframe;->pathCp2:Landroid/graphics/PointF; return-object v0 :pswitch_data_0 .packed-switch 0x0 :pswitch_7 :pswitch_6 :pswitch_5 :pswitch_4 :pswitch_3 :pswitch_2 :pswitch_1 :pswitch_0 .end packed-switch .end method .method private static parseStaticValue(Lcom/airbnb/lottie/parser/moshi/JsonReader;FLcom/airbnb/lottie/parser/ValueParser;)Lcom/airbnb/lottie/value/Keyframe; .locals 0 .annotation system Ldalvik/annotation/Signature; value = { "(", "Lcom/airbnb/lottie/parser/moshi/JsonReader;", "F", "Lcom/airbnb/lottie/parser/ValueParser<", "TT;>;)", "Lcom/airbnb/lottie/value/Keyframe<", "TT;>;" } .end annotation .annotation system Ldalvik/annotation/Throws; value = { Ljava/io/IOException; } .end annotation .line 371 invoke-interface {p2, p0, p1}, Lcom/airbnb/lottie/parser/ValueParser;->parse(Lcom/airbnb/lottie/parser/moshi/JsonReader;F)Ljava/lang/Object; move-result-object p0 .line 372 new-instance p1, Lcom/airbnb/lottie/value/Keyframe; invoke-direct {p1, p0}, Lcom/airbnb/lottie/value/Keyframe;->(Ljava/lang/Object;)V return-object p1 .end method .method private static pathInterpolatorCache()Landroidx/collection/SparseArrayCompat; .locals 1 .annotation system Ldalvik/annotation/Signature; value = { "()", "Landroidx/collection/SparseArrayCompat<", "Ljava/lang/ref/WeakReference<", "Landroid/view/animation/Interpolator;", ">;>;" } .end annotation sget-object v0, Lcom/airbnb/lottie/parser/KeyframeParser;->pathInterpolatorCache:Landroidx/collection/SparseArrayCompat; if-nez v0, :cond_0 .line 50 new-instance v0, Landroidx/collection/SparseArrayCompat; invoke-direct {v0}, Landroidx/collection/SparseArrayCompat;->()V sput-object v0, Lcom/airbnb/lottie/parser/KeyframeParser;->pathInterpolatorCache:Landroidx/collection/SparseArrayCompat; :cond_0 sget-object v0, Lcom/airbnb/lottie/parser/KeyframeParser;->pathInterpolatorCache:Landroidx/collection/SparseArrayCompat; return-object v0 .end method .method private static putInterpolator(ILjava/lang/ref/WeakReference;)V .locals 2 .annotation system Ldalvik/annotation/Signature; value = { "(I", "Ljava/lang/ref/WeakReference<", "Landroid/view/animation/Interpolator;", ">;)V" } .end annotation const-class v0, Lcom/airbnb/lottie/parser/KeyframeParser; .line 67 monitor-enter v0 :try_start_0 sget-object v1, Lcom/airbnb/lottie/parser/KeyframeParser;->pathInterpolatorCache:Landroidx/collection/SparseArrayCompat; .line 68 invoke-virtual {v1, p0, p1}, Landroidx/collection/SparseArrayCompat;->put(ILjava/lang/Object;)V .line 69 monitor-exit v0 return-void :catchall_0 move-exception p0 monitor-exit v0 :try_end_0 .catchall {:try_start_0 .. :try_end_0} :catchall_0 throw p0 .end method