PhotoFace.smali
.class public Lim/tpelyyftgw/ui/components/paint/PhotoFace;
.super Ljava/lang/Object;
.source "PhotoFace.java"
# instance fields
.field private angle:F
.field private chinPoint:Lim/tpelyyftgw/ui/components/Point;
.field private eyesCenterPoint:Lim/tpelyyftgw/ui/components/Point;
.field private eyesDistance:F
.field private foreheadPoint:Lim/tpelyyftgw/ui/components/Point;
.field private mouthPoint:Lim/tpelyyftgw/ui/components/Point;
.field private width:F
# direct methods
.method static constructor <clinit>()V
.registers 1
return-void
.end method
.method public constructor <init>(Lcom/google/android/gms/vision/face/Face;Landroid/graphics/Bitmap;Lim/tpelyyftgw/ui/components/Size;Z)V
.registers 21
.param p1, "face" # Lcom/google/android/gms/vision/face/Face;
.param p2, "sourceBitmap" # Landroid/graphics/Bitmap;
.param p3, "targetSize" # Lim/tpelyyftgw/ui/components/Size;
.param p4, "sideward" # Z
.line 27
move-object/from16 v0, p0
move-object/from16 v1, p2
move-object/from16 v2, p3
move/from16 v3, p4
invoke-direct/range {p0 .. p0}, Ljava/lang/Object;-><init>()V
.line 28
invoke-virtual/range {p1 .. p1}, Lcom/google/android/gms/vision/face/Face;->getLandmarks()Ljava/util/List;
move-result-object v4
.line 30
.local v4, "landmarks":Ljava/util/List;, "Ljava/util/List<Lcom/google/android/gms/vision/face/Landmark;>;"
const/4 v5, 0x0
.line 31
.local v5, "leftEyePoint":Lim/tpelyyftgw/ui/components/Point;
const/4 v6, 0x0
.line 33
.local v6, "rightEyePoint":Lim/tpelyyftgw/ui/components/Point;
const/4 v7, 0x0
.line 34
.local v7, "leftMouthPoint":Lim/tpelyyftgw/ui/components/Point;
const/4 v8, 0x0
.line 36
.local v8, "rightMouthPoint":Lim/tpelyyftgw/ui/components/Point;
invoke-interface {v4}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v9
:goto_17
invoke-interface {v9}, Ljava/util/Iterator;->hasNext()Z
move-result v10
if-eqz v10, :cond_4f
invoke-interface {v9}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v10
check-cast v10, Lcom/google/android/gms/vision/face/Landmark;
.line 37
.local v10, "landmark":Lcom/google/android/gms/vision/face/Landmark;
invoke-virtual {v10}, Lcom/google/android/gms/vision/face/Landmark;->getPosition()Landroid/graphics/PointF;
move-result-object v11
.line 39
.local v11, "point":Landroid/graphics/PointF;
invoke-virtual {v10}, Lcom/google/android/gms/vision/face/Landmark;->getType()I
move-result v12
const/4 v13, 0x4
if-eq v12, v13, :cond_49
const/4 v13, 0x5
if-eq v12, v13, :cond_44
const/16 v13, 0xa
if-eq v12, v13, :cond_3f
const/16 v13, 0xb
if-eq v12, v13, :cond_3a
goto :goto_4e
.line 56
:cond_3a
invoke-direct {v0, v11, v1, v2, v3}, Lim/tpelyyftgw/ui/components/paint/PhotoFace;->transposePoint(Landroid/graphics/PointF;Landroid/graphics/Bitmap;Lim/tpelyyftgw/ui/components/Size;Z)Lim/tpelyyftgw/ui/components/Point;
move-result-object v8
goto :goto_4e
.line 46
:cond_3f
invoke-direct {v0, v11, v1, v2, v3}, Lim/tpelyyftgw/ui/components/paint/PhotoFace;->transposePoint(Landroid/graphics/PointF;Landroid/graphics/Bitmap;Lim/tpelyyftgw/ui/components/Size;Z)Lim/tpelyyftgw/ui/components/Point;
move-result-object v6
.line 48
goto :goto_4e
.line 51
:cond_44
invoke-direct {v0, v11, v1, v2, v3}, Lim/tpelyyftgw/ui/components/paint/PhotoFace;->transposePoint(Landroid/graphics/PointF;Landroid/graphics/Bitmap;Lim/tpelyyftgw/ui/components/Size;Z)Lim/tpelyyftgw/ui/components/Point;
move-result-object v7
.line 53
goto :goto_4e
.line 41
:cond_49
invoke-direct {v0, v11, v1, v2, v3}, Lim/tpelyyftgw/ui/components/paint/PhotoFace;->transposePoint(Landroid/graphics/PointF;Landroid/graphics/Bitmap;Lim/tpelyyftgw/ui/components/Size;Z)Lim/tpelyyftgw/ui/components/Point;
move-result-object v5
.line 43
nop
.line 60
.end local v10 # "landmark":Lcom/google/android/gms/vision/face/Landmark;
.end local v11 # "point":Landroid/graphics/PointF;
:goto_4e
goto :goto_17
.line 62
:cond_4f
const/high16 v10, 0x3f000000 # 0.5f
if-eqz v5, :cond_e1
if-eqz v6, :cond_e1
.line 63
iget v11, v5, Lim/tpelyyftgw/ui/components/Point;->x:F
iget v12, v6, Lim/tpelyyftgw/ui/components/Point;->x:F
cmpg-float v11, v11, v12
if-gez v11, :cond_60
.line 64
move-object v11, v5
.line 65
.local v11, "temp":Lim/tpelyyftgw/ui/components/Point;
move-object v5, v6
.line 66
move-object v6, v11
.line 68
.end local v11 # "temp":Lim/tpelyyftgw/ui/components/Point;
:cond_60
new-instance v11, Lim/tpelyyftgw/ui/components/Point;
iget v12, v5, Lim/tpelyyftgw/ui/components/Point;->x:F
mul-float v12, v12, v10
iget v13, v6, Lim/tpelyyftgw/ui/components/Point;->x:F
mul-float v13, v13, v10
add-float/2addr v12, v13
iget v13, v5, Lim/tpelyyftgw/ui/components/Point;->y:F
mul-float v13, v13, v10
iget v14, v6, Lim/tpelyyftgw/ui/components/Point;->y:F
mul-float v14, v14, v10
add-float/2addr v13, v14
invoke-direct {v11, v12, v13}, Lim/tpelyyftgw/ui/components/Point;-><init>(FF)V
iput-object v11, v0, Lim/tpelyyftgw/ui/components/paint/PhotoFace;->eyesCenterPoint:Lim/tpelyyftgw/ui/components/Point;
.line 70
iget v11, v6, Lim/tpelyyftgw/ui/components/Point;->x:F
iget v12, v5, Lim/tpelyyftgw/ui/components/Point;->x:F
sub-float/2addr v11, v12
float-to-double v11, v11
iget v13, v6, Lim/tpelyyftgw/ui/components/Point;->y:F
iget v14, v5, Lim/tpelyyftgw/ui/components/Point;->y:F
sub-float/2addr v13, v14
float-to-double v13, v13
invoke-static {v11, v12, v13, v14}, Ljava/lang/Math;->hypot(DD)D
move-result-wide v11
double-to-float v11, v11
iput v11, v0, Lim/tpelyyftgw/ui/components/paint/PhotoFace;->eyesDistance:F
.line 71
const-wide v11, 0x400921fb54442d18L # Math.PI
iget v13, v6, Lim/tpelyyftgw/ui/components/Point;->y:F
iget v14, v5, Lim/tpelyyftgw/ui/components/Point;->y:F
sub-float/2addr v13, v14
float-to-double v13, v13
iget v15, v6, Lim/tpelyyftgw/ui/components/Point;->x:F
iget v10, v5, Lim/tpelyyftgw/ui/components/Point;->x:F
sub-float/2addr v15, v10
float-to-double v9, v15
invoke-static {v13, v14, v9, v10}, Ljava/lang/Math;->atan2(DD)D
move-result-wide v9
add-double/2addr v9, v11
invoke-static {v9, v10}, Ljava/lang/Math;->toDegrees(D)D
move-result-wide v9
double-to-float v9, v9
iput v9, v0, Lim/tpelyyftgw/ui/components/paint/PhotoFace;->angle:F
.line 73
iget v10, v0, Lim/tpelyyftgw/ui/components/paint/PhotoFace;->eyesDistance:F
const v11, 0x40166666 # 2.35f
mul-float v11, v11, v10
iput v11, v0, Lim/tpelyyftgw/ui/components/paint/PhotoFace;->width:F
.line 75
const v11, 0x3f4ccccd # 0.8f
mul-float v10, v10, v11
.line 76
.local v10, "foreheadHeight":F
const/high16 v11, 0x42b40000 # 90.0f
sub-float/2addr v9, v11
float-to-double v11, v9
invoke-static {v11, v12}, Ljava/lang/Math;->toRadians(D)D
move-result-wide v11
double-to-float v9, v11
.line 77
.local v9, "upAngle":F
new-instance v11, Lim/tpelyyftgw/ui/components/Point;
iget-object v12, v0, Lim/tpelyyftgw/ui/components/paint/PhotoFace;->eyesCenterPoint:Lim/tpelyyftgw/ui/components/Point;
iget v12, v12, Lim/tpelyyftgw/ui/components/Point;->x:F
float-to-double v13, v9
invoke-static {v13, v14}, Ljava/lang/Math;->cos(D)D
move-result-wide v13
double-to-float v13, v13
mul-float v13, v13, v10
add-float/2addr v12, v13
iget-object v13, v0, Lim/tpelyyftgw/ui/components/paint/PhotoFace;->eyesCenterPoint:Lim/tpelyyftgw/ui/components/Point;
iget v13, v13, Lim/tpelyyftgw/ui/components/Point;->y:F
float-to-double v14, v9
.line 78
invoke-static {v14, v15}, Ljava/lang/Math;->sin(D)D
move-result-wide v14
double-to-float v14, v14
mul-float v14, v14, v10
add-float/2addr v13, v14
invoke-direct {v11, v12, v13}, Lim/tpelyyftgw/ui/components/Point;-><init>(FF)V
iput-object v11, v0, Lim/tpelyyftgw/ui/components/paint/PhotoFace;->foreheadPoint:Lim/tpelyyftgw/ui/components/Point;
.line 81
.end local v9 # "upAngle":F
.end local v10 # "foreheadHeight":F
:cond_e1
if-eqz v7, :cond_13e
if-eqz v8, :cond_13e
.line 82
iget v9, v7, Lim/tpelyyftgw/ui/components/Point;->x:F
iget v10, v8, Lim/tpelyyftgw/ui/components/Point;->x:F
cmpg-float v9, v9, v10
if-gez v9, :cond_f0
.line 83
move-object v9, v7
.line 84
.local v9, "temp":Lim/tpelyyftgw/ui/components/Point;
move-object v7, v8
.line 85
move-object v8, v9
.line 87
.end local v9 # "temp":Lim/tpelyyftgw/ui/components/Point;
:cond_f0
new-instance v9, Lim/tpelyyftgw/ui/components/Point;
iget v10, v7, Lim/tpelyyftgw/ui/components/Point;->x:F
const/high16 v11, 0x3f000000 # 0.5f
mul-float v10, v10, v11
iget v12, v8, Lim/tpelyyftgw/ui/components/Point;->x:F
mul-float v12, v12, v11
add-float/2addr v10, v12
iget v12, v7, Lim/tpelyyftgw/ui/components/Point;->y:F
mul-float v12, v12, v11
iget v13, v8, Lim/tpelyyftgw/ui/components/Point;->y:F
mul-float v13, v13, v11
add-float/2addr v12, v13
invoke-direct {v9, v10, v12}, Lim/tpelyyftgw/ui/components/Point;-><init>(FF)V
iput-object v9, v0, Lim/tpelyyftgw/ui/components/paint/PhotoFace;->mouthPoint:Lim/tpelyyftgw/ui/components/Point;
.line 90
const v9, 0x3f333333 # 0.7f
iget v10, v0, Lim/tpelyyftgw/ui/components/paint/PhotoFace;->eyesDistance:F
mul-float v10, v10, v9
.line 91
.local v10, "chinDepth":F
iget v9, v0, Lim/tpelyyftgw/ui/components/paint/PhotoFace;->angle:F
const/high16 v11, 0x42b40000 # 90.0f
add-float/2addr v9, v11
float-to-double v11, v9
invoke-static {v11, v12}, Ljava/lang/Math;->toRadians(D)D
move-result-wide v11
double-to-float v9, v11
.line 92
.local v9, "downAngle":F
new-instance v11, Lim/tpelyyftgw/ui/components/Point;
iget-object v12, v0, Lim/tpelyyftgw/ui/components/paint/PhotoFace;->mouthPoint:Lim/tpelyyftgw/ui/components/Point;
iget v12, v12, Lim/tpelyyftgw/ui/components/Point;->x:F
float-to-double v13, v9
invoke-static {v13, v14}, Ljava/lang/Math;->cos(D)D
move-result-wide v13
double-to-float v13, v13
mul-float v13, v13, v10
add-float/2addr v12, v13
iget-object v13, v0, Lim/tpelyyftgw/ui/components/paint/PhotoFace;->mouthPoint:Lim/tpelyyftgw/ui/components/Point;
iget v13, v13, Lim/tpelyyftgw/ui/components/Point;->y:F
float-to-double v14, v9
.line 93
invoke-static {v14, v15}, Ljava/lang/Math;->sin(D)D
move-result-wide v14
double-to-float v14, v14
mul-float v14, v14, v10
add-float/2addr v13, v14
invoke-direct {v11, v12, v13}, Lim/tpelyyftgw/ui/components/Point;-><init>(FF)V
iput-object v11, v0, Lim/tpelyyftgw/ui/components/paint/PhotoFace;->chinPoint:Lim/tpelyyftgw/ui/components/Point;
.line 95
.end local v9 # "downAngle":F
.end local v10 # "chinDepth":F
:cond_13e
return-void
.end method
.method private transposePoint(Landroid/graphics/PointF;Landroid/graphics/Bitmap;Lim/tpelyyftgw/ui/components/Size;Z)Lim/tpelyyftgw/ui/components/Point;
.registers 11
.param p1, "point" # Landroid/graphics/PointF;
.param p2, "sourceBitmap" # Landroid/graphics/Bitmap;
.param p3, "targetSize" # Lim/tpelyyftgw/ui/components/Size;
.param p4, "sideward" # Z
.line 102
if-eqz p4, :cond_7
invoke-virtual {p2}, Landroid/graphics/Bitmap;->getHeight()I
move-result v0
goto :goto_b
:cond_7
invoke-virtual {p2}, Landroid/graphics/Bitmap;->getWidth()I
move-result v0
:goto_b
int-to-float v0, v0
.line 103
.local v0, "bitmapW":F
if-eqz p4, :cond_13
invoke-virtual {p2}, Landroid/graphics/Bitmap;->getWidth()I
move-result v1
goto :goto_17
:cond_13
invoke-virtual {p2}, Landroid/graphics/Bitmap;->getHeight()I
move-result v1
:goto_17
int-to-float v1, v1
.line 104
.local v1, "bitmapH":F
new-instance v2, Lim/tpelyyftgw/ui/components/Point;
iget v3, p3, Lim/tpelyyftgw/ui/components/Size;->width:F
iget v4, p1, Landroid/graphics/PointF;->x:F
mul-float v3, v3, v4
div-float/2addr v3, v0
iget v4, p3, Lim/tpelyyftgw/ui/components/Size;->height:F
iget v5, p1, Landroid/graphics/PointF;->y:F
mul-float v4, v4, v5
div-float/2addr v4, v1
invoke-direct {v2, v3, v4}, Lim/tpelyyftgw/ui/components/Point;-><init>(FF)V
return-object v2
.end method
# virtual methods
.method public getAngle()F
.registers 2
.line 140
iget v0, p0, Lim/tpelyyftgw/ui/components/paint/PhotoFace;->angle:F
return v0
.end method
.method public getPointForAnchor(I)Lim/tpelyyftgw/ui/components/Point;
.registers 3
.param p1, "anchor" # I
.line 109
if-eqz p1, :cond_16
const/4 v0, 0x1
if-eq p1, v0, :cond_13
const/4 v0, 0x2
if-eq p1, v0, :cond_10
const/4 v0, 0x3
if-eq p1, v0, :cond_d
.line 127
const/4 v0, 0x0
return-object v0
.line 123
:cond_d
iget-object v0, p0, Lim/tpelyyftgw/ui/components/paint/PhotoFace;->chinPoint:Lim/tpelyyftgw/ui/components/Point;
return-object v0
.line 119
:cond_10
iget-object v0, p0, Lim/tpelyyftgw/ui/components/paint/PhotoFace;->mouthPoint:Lim/tpelyyftgw/ui/components/Point;
return-object v0
.line 115
:cond_13
iget-object v0, p0, Lim/tpelyyftgw/ui/components/paint/PhotoFace;->eyesCenterPoint:Lim/tpelyyftgw/ui/components/Point;
return-object v0
.line 111
:cond_16
iget-object v0, p0, Lim/tpelyyftgw/ui/components/paint/PhotoFace;->foreheadPoint:Lim/tpelyyftgw/ui/components/Point;
return-object v0
.end method
.method public getWidthForAnchor(I)F
.registers 3
.param p1, "anchor" # I
.line 133
const/4 v0, 0x1
if-ne p1, v0, :cond_6
.line 134
iget v0, p0, Lim/tpelyyftgw/ui/components/paint/PhotoFace;->eyesDistance:F
return v0
.line 136
:cond_6
iget v0, p0, Lim/tpelyyftgw/ui/components/paint/PhotoFace;->width:F
return v0
.end method
.method public isSufficient()Z
.registers 2
.line 98
iget-object v0, p0, Lim/tpelyyftgw/ui/components/paint/PhotoFace;->eyesCenterPoint:Lim/tpelyyftgw/ui/components/Point;
if-eqz v0, :cond_6
const/4 v0, 0x1
goto :goto_7
:cond_6
const/4 v0, 0x0
:goto_7
return v0
.end method