RNSVGRenderableManager.smali
.class public Lcom/horcrux/svg/RNSVGRenderableManager;
.super Lcom/facebook/react/bridge/ReactContextBaseJavaModule;
.source "RNSVGRenderableManager.java"
# direct methods
.method static constructor <clinit>()V
.registers 1
return-void
.end method
.method public constructor <init>(Lcom/facebook/react/bridge/ReactApplicationContext;)V
.registers 2
invoke-direct {p0, p1}, Lcom/facebook/react/bridge/ReactContextBaseJavaModule;-><init>(Lcom/facebook/react/bridge/ReactApplicationContext;)V
return-void
.end method
# virtual methods
.method public getBBox(ILcom/facebook/react/bridge/ReadableMap;)Lcom/facebook/react/bridge/WritableMap;
.registers 8
.annotation runtime Lcom/facebook/react/bridge/ReactMethod;
isBlockingSynchronousMethod = true
.end annotation
invoke-static {p1}, Lcom/horcrux/svg/RenderableViewManager;->getRenderableViewByTag(I)Lcom/horcrux/svg/RenderableView;
move-result-object p1
const/4 v0, 0x0
if-nez p1, :cond_8
return-object v0
:cond_8
const-string v1, "fill"
invoke-interface {p2, v1}, Lcom/facebook/react/bridge/ReadableMap;->getBoolean(Ljava/lang/String;)Z
move-result v1
const-string/jumbo v2, "stroke"
invoke-interface {p2, v2}, Lcom/facebook/react/bridge/ReadableMap;->getBoolean(Ljava/lang/String;)Z
move-result v2
const-string v3, "markers"
invoke-interface {p2, v3}, Lcom/facebook/react/bridge/ReadableMap;->getBoolean(Ljava/lang/String;)Z
move-result v3
const-string v4, "clipped"
invoke-interface {p2, v4}, Lcom/facebook/react/bridge/ReadableMap;->getBoolean(Ljava/lang/String;)Z
move-result p2
invoke-virtual {p1, v0, v0}, Lcom/horcrux/svg/RenderableView;->getPath(Landroid/graphics/Canvas;Landroid/graphics/Paint;)Landroid/graphics/Path;
iget v0, p1, Lcom/horcrux/svg/VirtualView;->mScale:F
invoke-virtual {p1}, Lcom/horcrux/svg/RenderableView;->initBounds()V
new-instance v4, Landroid/graphics/RectF;
invoke-direct {v4}, Landroid/graphics/RectF;-><init>()V
if-eqz v1, :cond_35
iget-object v1, p1, Lcom/horcrux/svg/VirtualView;->mFillBounds:Landroid/graphics/RectF;
invoke-virtual {v4, v1}, Landroid/graphics/RectF;->union(Landroid/graphics/RectF;)V
:cond_35
if-eqz v2, :cond_3c
iget-object v1, p1, Lcom/horcrux/svg/VirtualView;->mStrokeBounds:Landroid/graphics/RectF;
invoke-virtual {v4, v1}, Landroid/graphics/RectF;->union(Landroid/graphics/RectF;)V
:cond_3c
if-eqz v3, :cond_43
iget-object v1, p1, Lcom/horcrux/svg/VirtualView;->mMarkerBounds:Landroid/graphics/RectF;
invoke-virtual {v4, v1}, Landroid/graphics/RectF;->union(Landroid/graphics/RectF;)V
:cond_43
if-eqz p2, :cond_4c
iget-object p1, p1, Lcom/horcrux/svg/VirtualView;->mClipBounds:Landroid/graphics/RectF;
if-eqz p1, :cond_4c
invoke-virtual {v4, p1}, Landroid/graphics/RectF;->intersect(Landroid/graphics/RectF;)Z
:cond_4c
invoke-static {}, Lcom/facebook/react/bridge/Arguments;->createMap()Lcom/facebook/react/bridge/WritableMap;
move-result-object p1
iget p2, v4, Landroid/graphics/RectF;->left:F
div-float/2addr p2, v0
float-to-double v1, p2
const-string/jumbo p2, "x"
invoke-interface {p1, p2, v1, v2}, Lcom/facebook/react/bridge/WritableMap;->putDouble(Ljava/lang/String;D)V
iget p2, v4, Landroid/graphics/RectF;->top:F
div-float/2addr p2, v0
float-to-double v1, p2
const-string/jumbo p2, "y"
invoke-interface {p1, p2, v1, v2}, Lcom/facebook/react/bridge/WritableMap;->putDouble(Ljava/lang/String;D)V
invoke-virtual {v4}, Landroid/graphics/RectF;->width()F
move-result p2
div-float/2addr p2, v0
float-to-double v1, p2
const-string/jumbo p2, "width"
invoke-interface {p1, p2, v1, v2}, Lcom/facebook/react/bridge/WritableMap;->putDouble(Ljava/lang/String;D)V
invoke-virtual {v4}, Landroid/graphics/RectF;->height()F
move-result p2
div-float/2addr p2, v0
float-to-double v0, p2
const-string p2, "height"
invoke-interface {p1, p2, v0, v1}, Lcom/facebook/react/bridge/WritableMap;->putDouble(Ljava/lang/String;D)V
return-object p1
.end method
.method public getCTM(I)Lcom/facebook/react/bridge/WritableMap;
.registers 7
.annotation runtime Lcom/facebook/react/bridge/ReactMethod;
isBlockingSynchronousMethod = true
.end annotation
invoke-static {p1}, Lcom/horcrux/svg/RenderableViewManager;->getRenderableViewByTag(I)Lcom/horcrux/svg/RenderableView;
move-result-object p1
if-nez p1, :cond_8
const/4 p1, 0x0
return-object p1
:cond_8
iget v0, p1, Lcom/horcrux/svg/VirtualView;->mScale:F
new-instance v1, Landroid/graphics/Matrix;
iget-object v2, p1, Lcom/horcrux/svg/VirtualView;->mCTM:Landroid/graphics/Matrix;
invoke-direct {v1, v2}, Landroid/graphics/Matrix;-><init>(Landroid/graphics/Matrix;)V
invoke-virtual {p1}, Lcom/horcrux/svg/VirtualView;->getSvgView()Lcom/horcrux/svg/SvgView;
move-result-object p1
iget-object p1, p1, Lcom/horcrux/svg/SvgView;->mInvViewBoxMatrix:Landroid/graphics/Matrix;
invoke-virtual {v1, p1}, Landroid/graphics/Matrix;->preConcat(Landroid/graphics/Matrix;)Z
const/16 p1, 0x9
new-array p1, p1, [F
invoke-virtual {v1, p1}, Landroid/graphics/Matrix;->getValues([F)V
invoke-static {}, Lcom/facebook/react/bridge/Arguments;->createMap()Lcom/facebook/react/bridge/WritableMap;
move-result-object v1
const/4 v2, 0x0
aget v2, p1, v2
float-to-double v2, v2
const-string v4, "a"
invoke-interface {v1, v4, v2, v3}, Lcom/facebook/react/bridge/WritableMap;->putDouble(Ljava/lang/String;D)V
const/4 v2, 0x3
aget v2, p1, v2
float-to-double v2, v2
const-string v4, "b"
invoke-interface {v1, v4, v2, v3}, Lcom/facebook/react/bridge/WritableMap;->putDouble(Ljava/lang/String;D)V
const/4 v2, 0x1
aget v2, p1, v2
float-to-double v2, v2
const-string v4, "c"
invoke-interface {v1, v4, v2, v3}, Lcom/facebook/react/bridge/WritableMap;->putDouble(Ljava/lang/String;D)V
const/4 v2, 0x4
aget v2, p1, v2
float-to-double v2, v2
const-string v4, "d"
invoke-interface {v1, v4, v2, v3}, Lcom/facebook/react/bridge/WritableMap;->putDouble(Ljava/lang/String;D)V
const/4 v2, 0x2
aget v2, p1, v2
div-float/2addr v2, v0
float-to-double v2, v2
const-string v4, "e"
invoke-interface {v1, v4, v2, v3}, Lcom/facebook/react/bridge/WritableMap;->putDouble(Ljava/lang/String;D)V
const/4 v2, 0x5
aget p1, p1, v2
div-float/2addr p1, v0
float-to-double v2, p1
const-string p1, "f"
invoke-interface {v1, p1, v2, v3}, Lcom/facebook/react/bridge/WritableMap;->putDouble(Ljava/lang/String;D)V
return-object v1
.end method
.method public getName()Ljava/lang/String;
.registers 2
.annotation runtime Ljavax/annotation/Nonnull;
.end annotation
const-string v0, "RNSVGRenderableManager"
return-object v0
.end method
.method public getPointAtLength(ILcom/facebook/react/bridge/ReadableMap;)Lcom/facebook/react/bridge/WritableMap;
.registers 10
.annotation runtime Lcom/facebook/react/bridge/ReactMethod;
isBlockingSynchronousMethod = true
.end annotation
invoke-static {p1}, Lcom/horcrux/svg/RenderableViewManager;->getRenderableViewByTag(I)Lcom/horcrux/svg/RenderableView;
move-result-object p1
const/4 v0, 0x0
if-nez p1, :cond_8
return-object v0
:cond_8
invoke-virtual {p1, v0, v0}, Lcom/horcrux/svg/RenderableView;->getPath(Landroid/graphics/Canvas;Landroid/graphics/Paint;)Landroid/graphics/Path;
move-result-object v0
new-instance v1, Landroid/graphics/PathMeasure;
const/4 v2, 0x0
invoke-direct {v1, v0, v2}, Landroid/graphics/PathMeasure;-><init>(Landroid/graphics/Path;Z)V
const-string v0, "length"
invoke-interface {p2, v0}, Lcom/facebook/react/bridge/ReadableMap;->getDouble(Ljava/lang/String;)D
move-result-wide v3
double-to-float p2, v3
iget p1, p1, Lcom/horcrux/svg/VirtualView;->mScale:F
const/4 v0, 0x2
new-array v3, v0, [F
new-array v0, v0, [F
const/4 v4, 0x0
invoke-virtual {v1}, Landroid/graphics/PathMeasure;->getLength()F
move-result v5
invoke-static {p2, v5}, Ljava/lang/Math;->min(FF)F
move-result p2
invoke-static {v4, p2}, Ljava/lang/Math;->max(FF)F
move-result p2
invoke-virtual {v1, p2, v3, v0}, Landroid/graphics/PathMeasure;->getPosTan(F[F[F)Z
const/4 p2, 0x1
aget v1, v0, p2
float-to-double v4, v1
aget v0, v0, v2
float-to-double v0, v0
invoke-static {v4, v5, v0, v1}, Ljava/lang/Math;->atan2(DD)D
move-result-wide v0
invoke-static {}, Lcom/facebook/react/bridge/Arguments;->createMap()Lcom/facebook/react/bridge/WritableMap;
move-result-object v4
aget v2, v3, v2
div-float/2addr v2, p1
float-to-double v5, v2
const-string/jumbo v2, "x"
invoke-interface {v4, v2, v5, v6}, Lcom/facebook/react/bridge/WritableMap;->putDouble(Ljava/lang/String;D)V
aget p2, v3, p2
div-float/2addr p2, p1
float-to-double p1, p2
const-string/jumbo v2, "y"
invoke-interface {v4, v2, p1, p2}, Lcom/facebook/react/bridge/WritableMap;->putDouble(Ljava/lang/String;D)V
const-string p1, "angle"
invoke-interface {v4, p1, v0, v1}, Lcom/facebook/react/bridge/WritableMap;->putDouble(Ljava/lang/String;D)V
return-object v4
.end method
.method public getScreenCTM(I)Lcom/facebook/react/bridge/WritableMap;
.registers 7
.annotation runtime Lcom/facebook/react/bridge/ReactMethod;
isBlockingSynchronousMethod = true
.end annotation
invoke-static {p1}, Lcom/horcrux/svg/RenderableViewManager;->getRenderableViewByTag(I)Lcom/horcrux/svg/RenderableView;
move-result-object p1
if-nez p1, :cond_8
const/4 p1, 0x0
return-object p1
:cond_8
const/16 v0, 0x9
new-array v0, v0, [F
iget-object v1, p1, Lcom/horcrux/svg/VirtualView;->mCTM:Landroid/graphics/Matrix;
invoke-virtual {v1, v0}, Landroid/graphics/Matrix;->getValues([F)V
iget p1, p1, Lcom/horcrux/svg/VirtualView;->mScale:F
invoke-static {}, Lcom/facebook/react/bridge/Arguments;->createMap()Lcom/facebook/react/bridge/WritableMap;
move-result-object v1
const/4 v2, 0x0
aget v2, v0, v2
float-to-double v2, v2
const-string v4, "a"
invoke-interface {v1, v4, v2, v3}, Lcom/facebook/react/bridge/WritableMap;->putDouble(Ljava/lang/String;D)V
const/4 v2, 0x3
aget v2, v0, v2
float-to-double v2, v2
const-string v4, "b"
invoke-interface {v1, v4, v2, v3}, Lcom/facebook/react/bridge/WritableMap;->putDouble(Ljava/lang/String;D)V
const/4 v2, 0x1
aget v2, v0, v2
float-to-double v2, v2
const-string v4, "c"
invoke-interface {v1, v4, v2, v3}, Lcom/facebook/react/bridge/WritableMap;->putDouble(Ljava/lang/String;D)V
const/4 v2, 0x4
aget v2, v0, v2
float-to-double v2, v2
const-string v4, "d"
invoke-interface {v1, v4, v2, v3}, Lcom/facebook/react/bridge/WritableMap;->putDouble(Ljava/lang/String;D)V
const/4 v2, 0x2
aget v2, v0, v2
div-float/2addr v2, p1
float-to-double v2, v2
const-string v4, "e"
invoke-interface {v1, v4, v2, v3}, Lcom/facebook/react/bridge/WritableMap;->putDouble(Ljava/lang/String;D)V
const/4 v2, 0x5
aget v0, v0, v2
div-float/2addr v0, p1
float-to-double v2, v0
const-string p1, "f"
invoke-interface {v1, p1, v2, v3}, Lcom/facebook/react/bridge/WritableMap;->putDouble(Ljava/lang/String;D)V
return-object v1
.end method
.method public getTotalLength(I)F
.registers 5
.annotation runtime Lcom/facebook/react/bridge/ReactMethod;
isBlockingSynchronousMethod = true
.end annotation
invoke-static {p1}, Lcom/horcrux/svg/RenderableViewManager;->getRenderableViewByTag(I)Lcom/horcrux/svg/RenderableView;
move-result-object p1
if-nez p1, :cond_8
const/4 p1, 0x0
return p1
:cond_8
const/4 v0, 0x0
invoke-virtual {p1, v0, v0}, Lcom/horcrux/svg/RenderableView;->getPath(Landroid/graphics/Canvas;Landroid/graphics/Paint;)Landroid/graphics/Path;
move-result-object v0
new-instance v1, Landroid/graphics/PathMeasure;
const/4 v2, 0x0
invoke-direct {v1, v0, v2}, Landroid/graphics/PathMeasure;-><init>(Landroid/graphics/Path;Z)V
invoke-virtual {v1}, Landroid/graphics/PathMeasure;->getLength()F
move-result v0
iget p1, p1, Lcom/horcrux/svg/VirtualView;->mScale:F
div-float/2addr v0, p1
return v0
.end method
.method public isPointInFill(ILcom/facebook/react/bridge/ReadableMap;)Z
.registers 8
.annotation runtime Lcom/facebook/react/bridge/ReactMethod;
isBlockingSynchronousMethod = true
.end annotation
invoke-static {p1}, Lcom/horcrux/svg/RenderableViewManager;->getRenderableViewByTag(I)Lcom/horcrux/svg/RenderableView;
move-result-object p1
const/4 v0, 0x0
if-nez p1, :cond_8
return v0
:cond_8
iget v1, p1, Lcom/horcrux/svg/VirtualView;->mScale:F
const-string/jumbo v2, "x"
invoke-interface {p2, v2}, Lcom/facebook/react/bridge/ReadableMap;->getDouble(Ljava/lang/String;)D
move-result-wide v2
double-to-float v2, v2
mul-float v2, v2, v1
const-string/jumbo v3, "y"
invoke-interface {p2, v3}, Lcom/facebook/react/bridge/ReadableMap;->getDouble(Ljava/lang/String;)D
move-result-wide v3
double-to-float p2, v3
mul-float p2, p2, v1
const/4 v1, 0x2
new-array v1, v1, [F
aput v2, v1, v0
const/4 v2, 0x1
aput p2, v1, v2
invoke-virtual {p1, v1}, Lcom/horcrux/svg/RenderableView;->hitTest([F)I
move-result p1
const/4 p2, -0x1
if-eq p1, p2, :cond_2e
const/4 v0, 0x1
:cond_2e
return v0
.end method
.method public isPointInStroke(ILcom/facebook/react/bridge/ReadableMap;)Z
.registers 9
.annotation runtime Lcom/facebook/react/bridge/ReactMethod;
isBlockingSynchronousMethod = true
.end annotation
invoke-static {p1}, Lcom/horcrux/svg/RenderableViewManager;->getRenderableViewByTag(I)Lcom/horcrux/svg/RenderableView;
move-result-object p1
const/4 v0, 0x0
if-nez p1, :cond_8
return v0
:cond_8
const/4 v1, 0x0
invoke-virtual {p1, v1, v1}, Lcom/horcrux/svg/RenderableView;->getPath(Landroid/graphics/Canvas;Landroid/graphics/Paint;)Landroid/graphics/Path;
invoke-virtual {p1}, Lcom/horcrux/svg/RenderableView;->initBounds()V
iget v1, p1, Lcom/horcrux/svg/VirtualView;->mScale:F
const-string/jumbo v2, "x"
invoke-interface {p2, v2}, Lcom/facebook/react/bridge/ReadableMap;->getDouble(Ljava/lang/String;)D
move-result-wide v2
float-to-double v4, v1
invoke-static {v4, v5}, Ljava/lang/Double;->isNaN(D)Z
mul-double v2, v2, v4
double-to-int v1, v2
const-string/jumbo v2, "y"
invoke-interface {p2, v2}, Lcom/facebook/react/bridge/ReadableMap;->getDouble(Ljava/lang/String;)D
move-result-wide v2
invoke-static {v4, v5}, Ljava/lang/Double;->isNaN(D)Z
mul-double v2, v2, v4
double-to-int p2, v2
iget-object p1, p1, Lcom/horcrux/svg/VirtualView;->mStrokeRegion:Landroid/graphics/Region;
if-eqz p1, :cond_37
invoke-virtual {p1, v1, p2}, Landroid/graphics/Region;->contains(II)Z
move-result p1
if-eqz p1, :cond_37
const/4 v0, 0x1
:cond_37
return v0
.end method