.class public Lcom/example/linechartlibrary/ChartScroller; .super Ljava/lang/Object; .source "ChartScroller.java" # annotations .annotation system Ldalvik/annotation/MemberClasses; value = { Lcom/example/linechartlibrary/ChartScroller$ScrollResult; } .end annotation # instance fields .field private scroller:Landroidx/core/widget/ScrollerCompat; .field private scrollerStartViewport:Lcom/example/linechartlibrary/Viewport; .field private surfaceSizeBuffer:Landroid/graphics/Point; # direct methods .method public constructor (Landroid/content/Context;)V .registers 3 .line 21 invoke-direct {p0}, Ljava/lang/Object;->()V .line 17 new-instance v0, Lcom/example/linechartlibrary/Viewport; invoke-direct {v0}, Lcom/example/linechartlibrary/Viewport;->()V iput-object v0, p0, Lcom/example/linechartlibrary/ChartScroller;->scrollerStartViewport:Lcom/example/linechartlibrary/Viewport; .line 18 new-instance v0, Landroid/graphics/Point; invoke-direct {v0}, Landroid/graphics/Point;->()V iput-object v0, p0, Lcom/example/linechartlibrary/ChartScroller;->surfaceSizeBuffer:Landroid/graphics/Point; .line 22 invoke-static {p1}, Landroidx/core/widget/ScrollerCompat;->create(Landroid/content/Context;)Landroidx/core/widget/ScrollerCompat; move-result-object p1 iput-object p1, p0, Lcom/example/linechartlibrary/ChartScroller;->scroller:Landroidx/core/widget/ScrollerCompat; return-void .end method # virtual methods .method public computeScrollOffset(Lcom/example/linechartlibrary/ChartComputator;)Z .registers 6 .line 82 iget-object v0, p0, Lcom/example/linechartlibrary/ChartScroller;->scroller:Landroidx/core/widget/ScrollerCompat; invoke-virtual {v0}, Landroidx/core/widget/ScrollerCompat;->computeScrollOffset()Z move-result v0 if-eqz v0, :cond_40 .line 86 invoke-virtual {p1}, Lcom/example/linechartlibrary/ChartComputator;->getMaximumViewport()Lcom/example/linechartlibrary/Viewport; move-result-object v0 .line 88 iget-object v1, p0, Lcom/example/linechartlibrary/ChartScroller;->surfaceSizeBuffer:Landroid/graphics/Point; invoke-virtual {p1, v1}, Lcom/example/linechartlibrary/ChartComputator;->computeScrollSurfaceSize(Landroid/graphics/Point;)V .line 90 iget v1, v0, Lcom/example/linechartlibrary/Viewport;->left:F invoke-virtual {v0}, Lcom/example/linechartlibrary/Viewport;->width()F move-result v2 iget-object v3, p0, Lcom/example/linechartlibrary/ChartScroller;->scroller:Landroidx/core/widget/ScrollerCompat; invoke-virtual {v3}, Landroidx/core/widget/ScrollerCompat;->getCurrX()I move-result v3 int-to-float v3, v3 mul-float/2addr v2, v3 iget-object v3, p0, Lcom/example/linechartlibrary/ChartScroller;->surfaceSizeBuffer:Landroid/graphics/Point; iget v3, v3, Landroid/graphics/Point;->x:I int-to-float v3, v3 div-float/2addr v2, v3 add-float/2addr v1, v2 .line 92 iget v2, v0, Lcom/example/linechartlibrary/Viewport;->top:F invoke-virtual {v0}, Lcom/example/linechartlibrary/Viewport;->height()F move-result v0 iget-object v3, p0, Lcom/example/linechartlibrary/ChartScroller;->scroller:Landroidx/core/widget/ScrollerCompat; invoke-virtual {v3}, Landroidx/core/widget/ScrollerCompat;->getCurrY()I move-result v3 int-to-float v3, v3 mul-float/2addr v0, v3 iget-object v3, p0, Lcom/example/linechartlibrary/ChartScroller;->surfaceSizeBuffer:Landroid/graphics/Point; iget v3, v3, Landroid/graphics/Point;->y:I int-to-float v3, v3 div-float/2addr v0, v3 sub-float/2addr v2, v0 .line 95 invoke-virtual {p1, v1, v2}, Lcom/example/linechartlibrary/ChartComputator;->setViewportTopLeft(FF)V const/4 p1, 0x1 return p1 :cond_40 const/4 p1, 0x0 return p1 .end method .method public fling(IILcom/example/linechartlibrary/ChartComputator;)Z .registers 14 .line 105 iget-object v0, p0, Lcom/example/linechartlibrary/ChartScroller;->surfaceSizeBuffer:Landroid/graphics/Point; invoke-virtual {p3, v0}, Lcom/example/linechartlibrary/ChartComputator;->computeScrollSurfaceSize(Landroid/graphics/Point;)V .line 106 iget-object v0, p0, Lcom/example/linechartlibrary/ChartScroller;->scrollerStartViewport:Lcom/example/linechartlibrary/Viewport; invoke-virtual {p3}, Lcom/example/linechartlibrary/ChartComputator;->getCurrentViewport()Lcom/example/linechartlibrary/Viewport; move-result-object v1 invoke-virtual {v0, v1}, Lcom/example/linechartlibrary/Viewport;->set(Lcom/example/linechartlibrary/Viewport;)V .line 108 iget-object v0, p0, Lcom/example/linechartlibrary/ChartScroller;->surfaceSizeBuffer:Landroid/graphics/Point; iget v0, v0, Landroid/graphics/Point;->x:I int-to-float v0, v0 iget-object v1, p0, Lcom/example/linechartlibrary/ChartScroller;->scrollerStartViewport:Lcom/example/linechartlibrary/Viewport; iget v1, v1, Lcom/example/linechartlibrary/Viewport;->left:F invoke-virtual {p3}, Lcom/example/linechartlibrary/ChartComputator;->getMaximumViewport()Lcom/example/linechartlibrary/Viewport; move-result-object v2 iget v2, v2, Lcom/example/linechartlibrary/Viewport;->left:F sub-float/2addr v1, v2 mul-float/2addr v0, v1 .line 109 invoke-virtual {p3}, Lcom/example/linechartlibrary/ChartComputator;->getMaximumViewport()Lcom/example/linechartlibrary/Viewport; move-result-object v1 invoke-virtual {v1}, Lcom/example/linechartlibrary/Viewport;->width()F move-result v1 div-float/2addr v0, v1 float-to-int v2, v0 .line 110 iget-object v0, p0, Lcom/example/linechartlibrary/ChartScroller;->surfaceSizeBuffer:Landroid/graphics/Point; iget v0, v0, Landroid/graphics/Point;->y:I int-to-float v0, v0 invoke-virtual {p3}, Lcom/example/linechartlibrary/ChartComputator;->getMaximumViewport()Lcom/example/linechartlibrary/Viewport; move-result-object v1 iget v1, v1, Lcom/example/linechartlibrary/Viewport;->top:F iget-object v3, p0, Lcom/example/linechartlibrary/ChartScroller;->scrollerStartViewport:Lcom/example/linechartlibrary/Viewport; iget v3, v3, Lcom/example/linechartlibrary/Viewport;->top:F sub-float/2addr v1, v3 mul-float/2addr v0, v1 .line 111 invoke-virtual {p3}, Lcom/example/linechartlibrary/ChartComputator;->getMaximumViewport()Lcom/example/linechartlibrary/Viewport; move-result-object v1 invoke-virtual {v1}, Lcom/example/linechartlibrary/Viewport;->height()F move-result v1 div-float/2addr v0, v1 float-to-int v3, v0 .line 114 iget-object v0, p0, Lcom/example/linechartlibrary/ChartScroller;->scroller:Landroidx/core/widget/ScrollerCompat; invoke-virtual {v0}, Landroidx/core/widget/ScrollerCompat;->abortAnimation()V .line 116 invoke-virtual {p3}, Lcom/example/linechartlibrary/ChartComputator;->getContentRectMinusAllMargins()Landroid/graphics/Rect; move-result-object v0 invoke-virtual {v0}, Landroid/graphics/Rect;->width()I move-result v0 .line 117 invoke-virtual {p3}, Lcom/example/linechartlibrary/ChartComputator;->getContentRectMinusAllMargins()Landroid/graphics/Rect; move-result-object p3 invoke-virtual {p3}, Landroid/graphics/Rect;->height()I move-result p3 .line 118 iget-object v1, p0, Lcom/example/linechartlibrary/ChartScroller;->scroller:Landroidx/core/widget/ScrollerCompat; iget-object v4, p0, Lcom/example/linechartlibrary/ChartScroller;->surfaceSizeBuffer:Landroid/graphics/Point; iget v4, v4, Landroid/graphics/Point;->x:I sub-int/2addr v4, v0 const/4 v0, 0x1 add-int/lit8 v7, v4, 0x1 iget-object v4, p0, Lcom/example/linechartlibrary/ChartScroller;->surfaceSizeBuffer:Landroid/graphics/Point; iget v4, v4, Landroid/graphics/Point;->y:I sub-int/2addr v4, p3 add-int/lit8 v9, v4, 0x1 const/4 v6, 0x0 const/4 v8, 0x0 move v4, p1 move v5, p2 invoke-virtual/range {v1 .. v9}, Landroidx/core/widget/ScrollerCompat;->fling(IIIIIIII)V return v0 .end method .method public scroll(Lcom/example/linechartlibrary/ChartComputator;FFLcom/example/linechartlibrary/ChartScroller$ScrollResult;)Z .registers 15 .line 39 invoke-virtual {p1}, Lcom/example/linechartlibrary/ChartComputator;->getMaximumViewport()Lcom/example/linechartlibrary/Viewport; move-result-object v0 .line 40 invoke-virtual {p1}, Lcom/example/linechartlibrary/ChartComputator;->getVisibleViewport()Lcom/example/linechartlibrary/Viewport; move-result-object v1 .line 41 invoke-virtual {p1}, Lcom/example/linechartlibrary/ChartComputator;->getCurrentViewport()Lcom/example/linechartlibrary/Viewport; move-result-object v2 .line 42 invoke-virtual {p1}, Lcom/example/linechartlibrary/ChartComputator;->getContentRectMinusAllMargins()Landroid/graphics/Rect; move-result-object v3 .line 44 iget v4, v2, Lcom/example/linechartlibrary/Viewport;->left:F iget v5, v0, Lcom/example/linechartlibrary/Viewport;->left:F cmpl-float v4, v4, v5 const/4 v5, 0x0 const/4 v6, 0x1 if-lez v4, :cond_1c move v4, v6 goto :goto_1d :cond_1c move v4, v5 .line 45 :goto_1d iget v7, v2, Lcom/example/linechartlibrary/Viewport;->right:F iget v8, v0, Lcom/example/linechartlibrary/Viewport;->right:F cmpg-float v7, v7, v8 if-gez v7, :cond_27 move v7, v6 goto :goto_28 :cond_27 move v7, v5 .line 46 :goto_28 iget v8, v2, Lcom/example/linechartlibrary/Viewport;->top:F iget v9, v0, Lcom/example/linechartlibrary/Viewport;->top:F cmpg-float v8, v8, v9 if-gez v8, :cond_32 move v8, v6 goto :goto_33 :cond_32 move v8, v5 .line 47 :goto_33 iget v9, v2, Lcom/example/linechartlibrary/Viewport;->bottom:F iget v0, v0, Lcom/example/linechartlibrary/Viewport;->bottom:F cmpl-float v0, v9, v0 if-lez v0, :cond_3d move v0, v6 goto :goto_3e :cond_3d move v0, v5 :goto_3e const/4 v9, 0x0 if-eqz v4, :cond_47 cmpg-float v4, p2, v9 if-gtz v4, :cond_47 :goto_45 move v4, v6 goto :goto_4f :cond_47 if-eqz v7, :cond_4e cmpl-float v4, p2, v9 if-ltz v4, :cond_4e goto :goto_45 :cond_4e move v4, v5 :goto_4f if-eqz v8, :cond_57 cmpg-float v7, p3, v9 if-gtz v7, :cond_57 :goto_55 move v0, v6 goto :goto_5f :cond_57 if-eqz v0, :cond_5e cmpl-float v0, p3, v9 if-ltz v0, :cond_5e goto :goto_55 :cond_5e move v0, v5 :goto_5f if-nez v4, :cond_63 if-eqz v0, :cond_88 .line 66 :cond_63 iget-object v7, p0, Lcom/example/linechartlibrary/ChartScroller;->surfaceSizeBuffer:Landroid/graphics/Point; invoke-virtual {p1, v7}, Lcom/example/linechartlibrary/ChartComputator;->computeScrollSurfaceSize(Landroid/graphics/Point;)V .line 68 invoke-virtual {v1}, Lcom/example/linechartlibrary/Viewport;->width()F move-result v7 mul-float/2addr p2, v7 invoke-virtual {v3}, Landroid/graphics/Rect;->width()I move-result v7 int-to-float v7, v7 div-float/2addr p2, v7 neg-float p3, p3 .line 69 invoke-virtual {v1}, Lcom/example/linechartlibrary/Viewport;->height()F move-result v1 mul-float/2addr p3, v1 invoke-virtual {v3}, Landroid/graphics/Rect;->height()I move-result v1 int-to-float v1, v1 div-float/2addr p3, v1 .line 71 iget v1, v2, Lcom/example/linechartlibrary/Viewport;->left:F add-float/2addr v1, p2 iget p2, v2, Lcom/example/linechartlibrary/Viewport;->top:F add-float/2addr p2, p3 .line 72 invoke-virtual {p1, v1, p2}, Lcom/example/linechartlibrary/ChartComputator;->setViewportTopLeft(FF)V .line 75 :cond_88 iput-boolean v4, p4, Lcom/example/linechartlibrary/ChartScroller$ScrollResult;->canScrollX:Z .line 76 iput-boolean v0, p4, Lcom/example/linechartlibrary/ChartScroller$ScrollResult;->canScrollY:Z if-nez v4, :cond_90 if-eqz v0, :cond_91 :cond_90 move v5, v6 :cond_91 return v5 .end method .method public startScroll(Lcom/example/linechartlibrary/ChartComputator;)Z .registers 3 .line 26 iget-object v0, p0, Lcom/example/linechartlibrary/ChartScroller;->scroller:Landroidx/core/widget/ScrollerCompat; invoke-virtual {v0}, Landroidx/core/widget/ScrollerCompat;->abortAnimation()V .line 27 iget-object v0, p0, Lcom/example/linechartlibrary/ChartScroller;->scrollerStartViewport:Lcom/example/linechartlibrary/Viewport; invoke-virtual {p1}, Lcom/example/linechartlibrary/ChartComputator;->getCurrentViewport()Lcom/example/linechartlibrary/Viewport; move-result-object p1 invoke-virtual {v0, p1}, Lcom/example/linechartlibrary/Viewport;->set(Lcom/example/linechartlibrary/Viewport;)V const/4 p1, 0x1 return p1 .end method