.class public Lcom/google/android/material/shape/ShapePath; .super Ljava/lang/Object; .source "ShapePath.java" # annotations .annotation system Ldalvik/annotation/MemberClasses; value = { Lcom/google/android/material/shape/ShapePath$PathCubicOperation;, Lcom/google/android/material/shape/ShapePath$PathArcOperation;, Lcom/google/android/material/shape/ShapePath$PathQuadOperation;, Lcom/google/android/material/shape/ShapePath$PathLineOperation;, Lcom/google/android/material/shape/ShapePath$PathOperation;, Lcom/google/android/material/shape/ShapePath$ArcShadowOperation;, Lcom/google/android/material/shape/ShapePath$LineShadowOperation;, Lcom/google/android/material/shape/ShapePath$ShadowCompatOperation; } .end annotation # static fields .field protected static final ANGLE_LEFT:F = 180.0f .field private static final ANGLE_UP:F = 270.0f # instance fields .field private containsIncompatibleShadowOp:Z .field public currentShadowAngle:F .annotation runtime Ljava/lang/Deprecated; .end annotation .end field .field public endShadowAngle:F .annotation runtime Ljava/lang/Deprecated; .end annotation .end field .field public endX:F .annotation runtime Ljava/lang/Deprecated; .end annotation .end field .field public endY:F .annotation runtime Ljava/lang/Deprecated; .end annotation .end field .field private final operations:Ljava/util/List; .annotation system Ldalvik/annotation/Signature; value = { "Ljava/util/List<", "Lcom/google/android/material/shape/ShapePath$PathOperation;", ">;" } .end annotation .end field .field private final shadowCompatOperations:Ljava/util/List; .annotation system Ldalvik/annotation/Signature; value = { "Ljava/util/List<", "Lcom/google/android/material/shape/ShapePath$ShadowCompatOperation;", ">;" } .end annotation .end field .field public startX:F .annotation runtime Ljava/lang/Deprecated; .end annotation .end field .field public startY:F .annotation runtime Ljava/lang/Deprecated; .end annotation .end field # direct methods .method public constructor ()V .locals 1 .line 94 invoke-direct {p0}, Ljava/lang/Object;->()V .line 90 new-instance v0, Ljava/util/ArrayList; invoke-direct {v0}, Ljava/util/ArrayList;->()V iput-object v0, p0, Lcom/google/android/material/shape/ShapePath;->operations:Ljava/util/List; .line 91 new-instance v0, Ljava/util/ArrayList; invoke-direct {v0}, Ljava/util/ArrayList;->()V iput-object v0, p0, Lcom/google/android/material/shape/ShapePath;->shadowCompatOperations:Ljava/util/List; const/4 v0, 0x0 .line 95 invoke-virtual {p0, v0, v0}, Lcom/google/android/material/shape/ShapePath;->reset(FF)V return-void .end method .method public constructor (FF)V .locals 1 .line 98 invoke-direct {p0}, Ljava/lang/Object;->()V .line 90 new-instance v0, Ljava/util/ArrayList; invoke-direct {v0}, Ljava/util/ArrayList;->()V iput-object v0, p0, Lcom/google/android/material/shape/ShapePath;->operations:Ljava/util/List; .line 91 new-instance v0, Ljava/util/ArrayList; invoke-direct {v0}, Ljava/util/ArrayList;->()V iput-object v0, p0, Lcom/google/android/material/shape/ShapePath;->shadowCompatOperations:Ljava/util/List; .line 99 invoke-virtual {p0, p1, p2}, Lcom/google/android/material/shape/ShapePath;->reset(FF)V return-void .end method .method private addConnectingShadowIfNecessary(F)V .locals 6 .line 293 invoke-direct {p0}, Lcom/google/android/material/shape/ShapePath;->getCurrentShadowAngle()F move-result v0 cmpl-float v0, v0, p1 if-nez v0, :cond_0 return-void .line 297 :cond_0 invoke-direct {p0}, Lcom/google/android/material/shape/ShapePath;->getCurrentShadowAngle()F move-result v0 sub-float v0, p1, v0 const/high16 v1, 0x43b40000 # 360.0f add-float/2addr v0, v1 rem-float/2addr v0, v1 const/high16 v1, 0x43340000 # 180.0f cmpl-float v1, v0, v1 if-lez v1, :cond_1 return-void .line 302 :cond_1 new-instance v1, Lcom/google/android/material/shape/ShapePath$PathArcOperation; .line 303 invoke-virtual {p0}, Lcom/google/android/material/shape/ShapePath;->getEndX()F move-result v2 invoke-virtual {p0}, Lcom/google/android/material/shape/ShapePath;->getEndY()F move-result v3 invoke-virtual {p0}, Lcom/google/android/material/shape/ShapePath;->getEndX()F move-result v4 invoke-virtual {p0}, Lcom/google/android/material/shape/ShapePath;->getEndY()F move-result v5 invoke-direct {v1, v2, v3, v4, v5}, Lcom/google/android/material/shape/ShapePath$PathArcOperation;->(FFFF)V .line 304 invoke-direct {p0}, Lcom/google/android/material/shape/ShapePath;->getCurrentShadowAngle()F move-result v2 invoke-static {v1, v2}, Lcom/google/android/material/shape/ShapePath$PathArcOperation;->access$600(Lcom/google/android/material/shape/ShapePath$PathArcOperation;F)V .line 305 invoke-static {v1, v0}, Lcom/google/android/material/shape/ShapePath$PathArcOperation;->access$700(Lcom/google/android/material/shape/ShapePath$PathArcOperation;F)V .line 306 iget-object v0, p0, Lcom/google/android/material/shape/ShapePath;->shadowCompatOperations:Ljava/util/List; new-instance v2, Lcom/google/android/material/shape/ShapePath$ArcShadowOperation; invoke-direct {v2, v1}, Lcom/google/android/material/shape/ShapePath$ArcShadowOperation;->(Lcom/google/android/material/shape/ShapePath$PathArcOperation;)V invoke-interface {v0, v2}, Ljava/util/List;->add(Ljava/lang/Object;)Z .line 307 invoke-direct {p0, p1}, Lcom/google/android/material/shape/ShapePath;->setCurrentShadowAngle(F)V return-void .end method .method private addShadowCompatOperation(Lcom/google/android/material/shape/ShapePath$ShadowCompatOperation;FF)V .locals 0 .line 275 invoke-direct {p0, p2}, Lcom/google/android/material/shape/ShapePath;->addConnectingShadowIfNecessary(F)V .line 276 iget-object p2, p0, Lcom/google/android/material/shape/ShapePath;->shadowCompatOperations:Ljava/util/List; invoke-interface {p2, p1}, Ljava/util/List;->add(Ljava/lang/Object;)Z .line 277 invoke-direct {p0, p3}, Lcom/google/android/material/shape/ShapePath;->setCurrentShadowAngle(F)V return-void .end method .method private getCurrentShadowAngle()F .locals 1 .line 327 iget v0, p0, Lcom/google/android/material/shape/ShapePath;->currentShadowAngle:F return v0 .end method .method private getEndShadowAngle()F .locals 1 .line 331 iget v0, p0, Lcom/google/android/material/shape/ShapePath;->endShadowAngle:F return v0 .end method .method private setCurrentShadowAngle(F)V .locals 0 .line 351 iput p1, p0, Lcom/google/android/material/shape/ShapePath;->currentShadowAngle:F return-void .end method .method private setEndShadowAngle(F)V .locals 0 .line 355 iput p1, p0, Lcom/google/android/material/shape/ShapePath;->endShadowAngle:F return-void .end method .method private setEndX(F)V .locals 0 .line 343 iput p1, p0, Lcom/google/android/material/shape/ShapePath;->endX:F return-void .end method .method private setEndY(F)V .locals 0 .line 347 iput p1, p0, Lcom/google/android/material/shape/ShapePath;->endY:F return-void .end method .method private setStartX(F)V .locals 0 .line 335 iput p1, p0, Lcom/google/android/material/shape/ShapePath;->startX:F return-void .end method .method private setStartY(F)V .locals 0 .line 339 iput p1, p0, Lcom/google/android/material/shape/ShapePath;->startY:F return-void .end method # virtual methods .method public addArc(FFFFFF)V .locals 4 .line 211 new-instance v0, Lcom/google/android/material/shape/ShapePath$PathArcOperation; invoke-direct {v0, p1, p2, p3, p4}, Lcom/google/android/material/shape/ShapePath$PathArcOperation;->(FFFF)V .line 212 invoke-static {v0, p5}, Lcom/google/android/material/shape/ShapePath$PathArcOperation;->access$600(Lcom/google/android/material/shape/ShapePath$PathArcOperation;F)V .line 213 invoke-static {v0, p6}, Lcom/google/android/material/shape/ShapePath$PathArcOperation;->access$700(Lcom/google/android/material/shape/ShapePath$PathArcOperation;F)V .line 214 iget-object v1, p0, Lcom/google/android/material/shape/ShapePath;->operations:Ljava/util/List; invoke-interface {v1, v0}, Ljava/util/List;->add(Ljava/lang/Object;)Z .line 216 new-instance v1, Lcom/google/android/material/shape/ShapePath$ArcShadowOperation; invoke-direct {v1, v0}, Lcom/google/android/material/shape/ShapePath$ArcShadowOperation;->(Lcom/google/android/material/shape/ShapePath$PathArcOperation;)V add-float v0, p5, p6 const/4 v2, 0x0 cmpg-float p6, p6, v2 if-gez p6, :cond_0 const/4 p6, 0x1 goto :goto_0 :cond_0 const/4 p6, 0x0 :goto_0 const/high16 v2, 0x43b40000 # 360.0f const/high16 v3, 0x43340000 # 180.0f if-eqz p6, :cond_1 add-float/2addr p5, v3 rem-float/2addr p5, v2 :cond_1 if-eqz p6, :cond_2 add-float/2addr v3, v0 rem-float/2addr v3, v2 goto :goto_1 :cond_2 move v3, v0 .line 222 :goto_1 invoke-direct {p0, v1, p5, v3}, Lcom/google/android/material/shape/ShapePath;->addShadowCompatOperation(Lcom/google/android/material/shape/ShapePath$ShadowCompatOperation;FF)V add-float p5, p1, p3 const/high16 p6, 0x3f000000 # 0.5f mul-float/2addr p5, p6 sub-float/2addr p3, p1 const/high16 p1, 0x40000000 # 2.0f div-float/2addr p3, p1 float-to-double v0, v0 .line 229 invoke-static {v0, v1}, Ljava/lang/Math;->toRadians(D)D move-result-wide v2 invoke-static {v2, v3}, Ljava/lang/Math;->cos(D)D move-result-wide v2 double-to-float v2, v2 mul-float/2addr p3, v2 add-float/2addr p5, p3 .line 227 invoke-direct {p0, p5}, Lcom/google/android/material/shape/ShapePath;->setEndX(F)V add-float p3, p2, p4 mul-float/2addr p3, p6 sub-float/2addr p4, p2 div-float/2addr p4, p1 .line 232 invoke-static {v0, v1}, Ljava/lang/Math;->toRadians(D)D move-result-wide p1 invoke-static {p1, p2}, Ljava/lang/Math;->sin(D)D move-result-wide p1 double-to-float p1, p1 mul-float/2addr p4, p1 add-float/2addr p3, p4 .line 230 invoke-direct {p0, p3}, Lcom/google/android/material/shape/ShapePath;->setEndY(F)V return-void .end method .method public applyToPath(Landroid/graphics/Matrix;Landroid/graphics/Path;)V .locals 3 .line 242 iget-object v0, p0, Lcom/google/android/material/shape/ShapePath;->operations:Ljava/util/List; invoke-interface {v0}, Ljava/util/List;->size()I move-result v0 const/4 v1, 0x0 :goto_0 if-ge v1, v0, :cond_0 .line 243 iget-object v2, p0, Lcom/google/android/material/shape/ShapePath;->operations:Ljava/util/List; invoke-interface {v2, v1}, Ljava/util/List;->get(I)Ljava/lang/Object; move-result-object v2 check-cast v2, Lcom/google/android/material/shape/ShapePath$PathOperation; .line 244 invoke-virtual {v2, p1, p2}, Lcom/google/android/material/shape/ShapePath$PathOperation;->applyToPath(Landroid/graphics/Matrix;Landroid/graphics/Path;)V add-int/lit8 v1, v1, 0x1 goto :goto_0 :cond_0 return-void .end method .method containsIncompatibleShadowOp()Z .locals 1 .line 285 iget-boolean v0, p0, Lcom/google/android/material/shape/ShapePath;->containsIncompatibleShadowOp:Z return v0 .end method .method createShadowCompatOperation(Landroid/graphics/Matrix;)Lcom/google/android/material/shape/ShapePath$ShadowCompatOperation; .locals 2 .line 255 invoke-direct {p0}, Lcom/google/android/material/shape/ShapePath;->getEndShadowAngle()F move-result v0 invoke-direct {p0, v0}, Lcom/google/android/material/shape/ShapePath;->addConnectingShadowIfNecessary(F)V .line 256 new-instance v0, Landroid/graphics/Matrix; invoke-direct {v0, p1}, Landroid/graphics/Matrix;->(Landroid/graphics/Matrix;)V .line 257 new-instance p1, Ljava/util/ArrayList; iget-object v1, p0, Lcom/google/android/material/shape/ShapePath;->shadowCompatOperations:Ljava/util/List; invoke-direct {p1, v1}, Ljava/util/ArrayList;->(Ljava/util/Collection;)V .line 258 new-instance v1, Lcom/google/android/material/shape/ShapePath$1; invoke-direct {v1, p0, p1, v0}, Lcom/google/android/material/shape/ShapePath$1;->(Lcom/google/android/material/shape/ShapePath;Ljava/util/List;Landroid/graphics/Matrix;)V return-object v1 .end method .method public cubicToPoint(FFFFFF)V .locals 8 .line 189 new-instance v7, Lcom/google/android/material/shape/ShapePath$PathCubicOperation; move-object v0, v7 move v1, p1 move v2, p2 move v3, p3 move v4, p4 move v5, p5 move v6, p6 invoke-direct/range {v0 .. v6}, Lcom/google/android/material/shape/ShapePath$PathCubicOperation;->(FFFFFF)V .line 191 iget-object p1, p0, Lcom/google/android/material/shape/ShapePath;->operations:Ljava/util/List; invoke-interface {p1, v7}, Ljava/util/List;->add(Ljava/lang/Object;)Z const/4 p1, 0x1 .line 193 iput-boolean p1, p0, Lcom/google/android/material/shape/ShapePath;->containsIncompatibleShadowOp:Z .line 195 invoke-direct {p0, p5}, Lcom/google/android/material/shape/ShapePath;->setEndX(F)V .line 196 invoke-direct {p0, p6}, Lcom/google/android/material/shape/ShapePath;->setEndY(F)V return-void .end method .method getEndX()F .locals 1 .line 319 iget v0, p0, Lcom/google/android/material/shape/ShapePath;->endX:F return v0 .end method .method getEndY()F .locals 1 .line 323 iget v0, p0, Lcom/google/android/material/shape/ShapePath;->endY:F return v0 .end method .method getStartX()F .locals 1 .line 311 iget v0, p0, Lcom/google/android/material/shape/ShapePath;->startX:F return v0 .end method .method getStartY()F .locals 1 .line 315 iget v0, p0, Lcom/google/android/material/shape/ShapePath;->startY:F return v0 .end method .method public lineTo(FF)V .locals 4 .line 130 new-instance v0, Lcom/google/android/material/shape/ShapePath$PathLineOperation; invoke-direct {v0}, Lcom/google/android/material/shape/ShapePath$PathLineOperation;->()V .line 131 invoke-static {v0, p1}, Lcom/google/android/material/shape/ShapePath$PathLineOperation;->access$002(Lcom/google/android/material/shape/ShapePath$PathLineOperation;F)F .line 132 invoke-static {v0, p2}, Lcom/google/android/material/shape/ShapePath$PathLineOperation;->access$102(Lcom/google/android/material/shape/ShapePath$PathLineOperation;F)F .line 133 iget-object v1, p0, Lcom/google/android/material/shape/ShapePath;->operations:Ljava/util/List; invoke-interface {v1, v0}, Ljava/util/List;->add(Ljava/lang/Object;)Z .line 135 new-instance v1, Lcom/google/android/material/shape/ShapePath$LineShadowOperation; invoke-virtual {p0}, Lcom/google/android/material/shape/ShapePath;->getEndX()F move-result v2 invoke-virtual {p0}, Lcom/google/android/material/shape/ShapePath;->getEndY()F move-result v3 invoke-direct {v1, v0, v2, v3}, Lcom/google/android/material/shape/ShapePath$LineShadowOperation;->(Lcom/google/android/material/shape/ShapePath$PathLineOperation;FF)V .line 140 invoke-virtual {v1}, Lcom/google/android/material/shape/ShapePath$LineShadowOperation;->getAngle()F move-result v0 const/high16 v2, 0x43870000 # 270.0f add-float/2addr v0, v2 .line 141 invoke-virtual {v1}, Lcom/google/android/material/shape/ShapePath$LineShadowOperation;->getAngle()F move-result v3 add-float/2addr v3, v2 .line 138 invoke-direct {p0, v1, v0, v3}, Lcom/google/android/material/shape/ShapePath;->addShadowCompatOperation(Lcom/google/android/material/shape/ShapePath$ShadowCompatOperation;FF)V .line 143 invoke-direct {p0, p1}, Lcom/google/android/material/shape/ShapePath;->setEndX(F)V .line 144 invoke-direct {p0, p2}, Lcom/google/android/material/shape/ShapePath;->setEndY(F)V return-void .end method .method public quadToPoint(FFFF)V .locals 1 .line 160 new-instance v0, Lcom/google/android/material/shape/ShapePath$PathQuadOperation; invoke-direct {v0}, Lcom/google/android/material/shape/ShapePath$PathQuadOperation;->()V .line 161 invoke-static {v0, p1}, Lcom/google/android/material/shape/ShapePath$PathQuadOperation;->access$200(Lcom/google/android/material/shape/ShapePath$PathQuadOperation;F)V .line 162 invoke-static {v0, p2}, Lcom/google/android/material/shape/ShapePath$PathQuadOperation;->access$300(Lcom/google/android/material/shape/ShapePath$PathQuadOperation;F)V .line 163 invoke-static {v0, p3}, Lcom/google/android/material/shape/ShapePath$PathQuadOperation;->access$400(Lcom/google/android/material/shape/ShapePath$PathQuadOperation;F)V .line 164 invoke-static {v0, p4}, Lcom/google/android/material/shape/ShapePath$PathQuadOperation;->access$500(Lcom/google/android/material/shape/ShapePath$PathQuadOperation;F)V .line 165 iget-object p1, p0, Lcom/google/android/material/shape/ShapePath;->operations:Ljava/util/List; invoke-interface {p1, v0}, Ljava/util/List;->add(Ljava/lang/Object;)Z const/4 p1, 0x1 .line 167 iput-boolean p1, p0, Lcom/google/android/material/shape/ShapePath;->containsIncompatibleShadowOp:Z .line 169 invoke-direct {p0, p3}, Lcom/google/android/material/shape/ShapePath;->setEndX(F)V .line 170 invoke-direct {p0, p4}, Lcom/google/android/material/shape/ShapePath;->setEndY(F)V return-void .end method .method public reset(FF)V .locals 2 const/high16 v0, 0x43870000 # 270.0f const/4 v1, 0x0 .line 107 invoke-virtual {p0, p1, p2, v0, v1}, Lcom/google/android/material/shape/ShapePath;->reset(FFFF)V return-void .end method .method public reset(FFFF)V .locals 0 .line 112 invoke-direct {p0, p1}, Lcom/google/android/material/shape/ShapePath;->setStartX(F)V .line 113 invoke-direct {p0, p2}, Lcom/google/android/material/shape/ShapePath;->setStartY(F)V .line 114 invoke-direct {p0, p1}, Lcom/google/android/material/shape/ShapePath;->setEndX(F)V .line 115 invoke-direct {p0, p2}, Lcom/google/android/material/shape/ShapePath;->setEndY(F)V .line 116 invoke-direct {p0, p3}, Lcom/google/android/material/shape/ShapePath;->setCurrentShadowAngle(F)V add-float/2addr p3, p4 const/high16 p1, 0x43b40000 # 360.0f rem-float/2addr p3, p1 .line 117 invoke-direct {p0, p3}, Lcom/google/android/material/shape/ShapePath;->setEndShadowAngle(F)V .line 118 iget-object p1, p0, Lcom/google/android/material/shape/ShapePath;->operations:Ljava/util/List; invoke-interface {p1}, Ljava/util/List;->clear()V .line 119 iget-object p1, p0, Lcom/google/android/material/shape/ShapePath;->shadowCompatOperations:Ljava/util/List; invoke-interface {p1}, Ljava/util/List;->clear()V const/4 p1, 0x0 .line 120 iput-boolean p1, p0, Lcom/google/android/material/shape/ShapePath;->containsIncompatibleShadowOp:Z return-void .end method