ContactChipSpan.smali

.class public Lcom/rey/material/text/style/ContactChipSpan;
.super Landroid/text/style/ReplacementSpan;
.source "ContactChipSpan.java"


# instance fields
.field private mBackgroundColor:I

.field private mBitmap:Landroid/graphics/Bitmap;

.field private mBitmapShader:Landroid/graphics/BitmapShader;

.field private mBoringLayout:Landroid/text/BoringLayout;

.field private mContactName:Ljava/lang/CharSequence;

.field private mHeight:I

.field private mMatrix:Landroid/graphics/Matrix;

.field private mPaddingLeft:I

.field private mPaddingRight:I

.field private mPaint:Landroid/graphics/Paint;

.field private mRect:Landroid/graphics/RectF;

.field private mTextPaint:Landroid/text/TextPaint;

.field private mWidth:I


# direct methods
.method public constructor <init>(Ljava/lang/CharSequence;IIIILandroid/graphics/Typeface;III)V
    .registers 29

    move-object/from16 v0, p0

    move-object/from16 v1, p1

    move/from16 v2, p2

    move/from16 v3, p4

    move/from16 v4, p5

    .line 38
    invoke-direct/range {p0 .. p0}, Landroid/text/style/ReplacementSpan;-><init>()V

    .line 39
    new-instance v5, Landroid/graphics/Paint;

    const/4 v6, 0x1

    invoke-direct {v5, v6}, Landroid/graphics/Paint;-><init>(I)V

    iput-object v5, v0, Lcom/rey/material/text/style/ContactChipSpan;->mPaint:Landroid/graphics/Paint;

    .line 40
    sget-object v6, Landroid/graphics/Paint$Style;->FILL:Landroid/graphics/Paint$Style;

    invoke-virtual {v5, v6}, Landroid/graphics/Paint;->setStyle(Landroid/graphics/Paint$Style;)V

    .line 41
    iget-object v5, v0, Lcom/rey/material/text/style/ContactChipSpan;->mPaint:Landroid/graphics/Paint;

    move/from16 v6, p7

    invoke-virtual {v5, v6}, Landroid/graphics/Paint;->setColor(I)V

    .line 42
    iget-object v5, v0, Lcom/rey/material/text/style/ContactChipSpan;->mPaint:Landroid/graphics/Paint;

    move-object/from16 v6, p6

    invoke-virtual {v5, v6}, Landroid/graphics/Paint;->setTypeface(Landroid/graphics/Typeface;)Landroid/graphics/Typeface;

    .line 43
    iget-object v5, v0, Lcom/rey/material/text/style/ContactChipSpan;->mPaint:Landroid/graphics/Paint;

    move/from16 v6, p8

    int-to-float v6, v6

    invoke-virtual {v5, v6}, Landroid/graphics/Paint;->setTextSize(F)V

    .line 45
    new-instance v5, Landroid/text/TextPaint;

    iget-object v6, v0, Lcom/rey/material/text/style/ContactChipSpan;->mPaint:Landroid/graphics/Paint;

    invoke-direct {v5, v6}, Landroid/text/TextPaint;-><init>(Landroid/graphics/Paint;)V

    iput-object v5, v0, Lcom/rey/material/text/style/ContactChipSpan;->mTextPaint:Landroid/text/TextPaint;

    .line 48
    new-instance v5, Landroid/graphics/RectF;

    invoke-direct {v5}, Landroid/graphics/RectF;-><init>()V

    iput-object v5, v0, Lcom/rey/material/text/style/ContactChipSpan;->mRect:Landroid/graphics/RectF;

    .line 50
    new-instance v5, Landroid/graphics/Matrix;

    invoke-direct {v5}, Landroid/graphics/Matrix;-><init>()V

    iput-object v5, v0, Lcom/rey/material/text/style/ContactChipSpan;->mMatrix:Landroid/graphics/Matrix;

    .line 52
    iput-object v1, v0, Lcom/rey/material/text/style/ContactChipSpan;->mContactName:Ljava/lang/CharSequence;

    .line 53
    iput v3, v0, Lcom/rey/material/text/style/ContactChipSpan;->mPaddingLeft:I

    .line 54
    iput v4, v0, Lcom/rey/material/text/style/ContactChipSpan;->mPaddingRight:I

    move/from16 v5, p9

    .line 55
    iput v5, v0, Lcom/rey/material/text/style/ContactChipSpan;->mBackgroundColor:I

    .line 56
    iput v2, v0, Lcom/rey/material/text/style/ContactChipSpan;->mHeight:I

    move/from16 v5, p3

    int-to-float v5, v5

    .line 57
    iget-object v6, v0, Lcom/rey/material/text/style/ContactChipSpan;->mPaint:Landroid/graphics/Paint;

    invoke-interface/range {p1 .. p1}, Ljava/lang/CharSequence;->length()I

    move-result v7

    const/4 v8, 0x0

    invoke-virtual {v6, v1, v8, v7}, Landroid/graphics/Paint;->measureText(Ljava/lang/CharSequence;II)F

    move-result v1

    int-to-float v3, v3

    add-float/2addr v1, v3

    int-to-float v3, v4

    add-float/2addr v1, v3

    int-to-float v2, v2

    add-float/2addr v1, v2

    invoke-static {v5, v1}, Ljava/lang/Math;->min(FF)F

    move-result v1

    invoke-static {v1}, Ljava/lang/Math;->round(F)I

    move-result v1

    iput v1, v0, Lcom/rey/material/text/style/ContactChipSpan;->mWidth:I

    .line 59
    iget v2, v0, Lcom/rey/material/text/style/ContactChipSpan;->mPaddingLeft:I

    sub-int/2addr v1, v2

    iget v2, v0, Lcom/rey/material/text/style/ContactChipSpan;->mPaddingRight:I

    sub-int/2addr v1, v2

    iget v2, v0, Lcom/rey/material/text/style/ContactChipSpan;->mHeight:I

    sub-int/2addr v1, v2

    invoke-static {v8, v1}, Ljava/lang/Math;->max(II)I

    move-result v18

    .line 60
    iget-object v1, v0, Lcom/rey/material/text/style/ContactChipSpan;->mTextPaint:Landroid/text/TextPaint;

    invoke-virtual {v1}, Landroid/text/TextPaint;->getFontMetricsInt()Landroid/graphics/Paint$FontMetricsInt;

    move-result-object v1

    .line 61
    new-instance v15, Landroid/text/BoringLayout$Metrics;

    invoke-direct {v15}, Landroid/text/BoringLayout$Metrics;-><init>()V

    .line 62
    iget-object v2, v0, Lcom/rey/material/text/style/ContactChipSpan;->mTextPaint:Landroid/text/TextPaint;

    iget-object v3, v0, Lcom/rey/material/text/style/ContactChipSpan;->mContactName:Ljava/lang/CharSequence;

    invoke-interface {v3}, Ljava/lang/CharSequence;->length()I

    move-result v4

    invoke-virtual {v2, v3, v8, v4}, Landroid/text/TextPaint;->measureText(Ljava/lang/CharSequence;II)F

    move-result v2

    const/high16 v3, 0x3f000000    # 0.5f

    add-float/2addr v2, v3

    invoke-static {v2}, Ljava/lang/Math;->round(F)I

    move-result v2

    iput v2, v15, Landroid/text/BoringLayout$Metrics;->width:I

    .line 63
    iget v2, v1, Landroid/graphics/Paint$FontMetricsInt;->ascent:I

    iput v2, v15, Landroid/text/BoringLayout$Metrics;->ascent:I

    .line 64
    iget v2, v1, Landroid/graphics/Paint$FontMetricsInt;->bottom:I

    iput v2, v15, Landroid/text/BoringLayout$Metrics;->bottom:I

    .line 65
    iget v2, v1, Landroid/graphics/Paint$FontMetricsInt;->descent:I

    iput v2, v15, Landroid/text/BoringLayout$Metrics;->descent:I

    .line 66
    iget v2, v1, Landroid/graphics/Paint$FontMetricsInt;->top:I

    iput v2, v15, Landroid/text/BoringLayout$Metrics;->top:I

    .line 67
    iget v1, v1, Landroid/graphics/Paint$FontMetricsInt;->leading:I

    iput v1, v15, Landroid/text/BoringLayout$Metrics;->leading:I

    .line 68
    iget-object v9, v0, Lcom/rey/material/text/style/ContactChipSpan;->mContactName:Ljava/lang/CharSequence;

    iget-object v10, v0, Lcom/rey/material/text/style/ContactChipSpan;->mTextPaint:Landroid/text/TextPaint;

    sget-object v12, Landroid/text/Layout$Alignment;->ALIGN_NORMAL:Landroid/text/Layout$Alignment;

    sget-object v17, Landroid/text/TextUtils$TruncateAt;->END:Landroid/text/TextUtils$TruncateAt;

    const/high16 v13, 0x3f800000    # 1.0f

    const/high16 v14, 0x3f800000    # 1.0f

    const/16 v16, 0x1

    move/from16 v11, v18

    invoke-static/range {v9 .. v18}, Landroid/text/BoringLayout;->make(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;FFLandroid/text/BoringLayout$Metrics;ZLandroid/text/TextUtils$TruncateAt;I)Landroid/text/BoringLayout;

    move-result-object v1

    iput-object v1, v0, Lcom/rey/material/text/style/ContactChipSpan;->mBoringLayout:Landroid/text/BoringLayout;

    return-void
.end method


# virtual methods
.method public draw(Landroid/graphics/Canvas;Ljava/lang/CharSequence;IIFIIILandroid/graphics/Paint;)V
    .registers 16

    .line 101
    invoke-virtual {p1}, Landroid/graphics/Canvas;->save()I

    int-to-float p2, p6

    .line 103
    invoke-virtual {p1, p5, p2}, Landroid/graphics/Canvas;->translate(FF)V

    .line 105
    iget p2, p0, Lcom/rey/material/text/style/ContactChipSpan;->mHeight:I

    int-to-float p2, p2

    const/high16 p3, 0x40000000    # 2.0f

    div-float/2addr p2, p3

    .line 106
    iget-object p4, p0, Lcom/rey/material/text/style/ContactChipSpan;->mPaint:Landroid/graphics/Paint;

    const/4 p5, 0x0

    invoke-virtual {p4, p5}, Landroid/graphics/Paint;->setShader(Landroid/graphics/Shader;)Landroid/graphics/Shader;

    .line 107
    iget-object p4, p0, Lcom/rey/material/text/style/ContactChipSpan;->mPaint:Landroid/graphics/Paint;

    iget p5, p0, Lcom/rey/material/text/style/ContactChipSpan;->mBackgroundColor:I

    invoke-virtual {p4, p5}, Landroid/graphics/Paint;->setColor(I)V

    .line 108
    iget-object p4, p0, Lcom/rey/material/text/style/ContactChipSpan;->mRect:Landroid/graphics/RectF;

    iget p5, p0, Lcom/rey/material/text/style/ContactChipSpan;->mHeight:I

    add-int/lit8 p6, p5, 0x1

    int-to-float p6, p6

    int-to-float p5, p5

    const/high16 p7, 0x3f800000    # 1.0f

    const/4 p8, 0x0

    invoke-virtual {p4, p7, p8, p6, p5}, Landroid/graphics/RectF;->set(FFFF)V

    .line 109
    iget-object v1, p0, Lcom/rey/material/text/style/ContactChipSpan;->mRect:Landroid/graphics/RectF;

    iget-object v5, p0, Lcom/rey/material/text/style/ContactChipSpan;->mPaint:Landroid/graphics/Paint;

    const/high16 v2, 0x42b40000    # 90.0f

    const/high16 v3, 0x43340000    # 180.0f

    const/4 v4, 0x1

    move-object v0, p1

    invoke-virtual/range {v0 .. v5}, Landroid/graphics/Canvas;->drawArc(Landroid/graphics/RectF;FFZLandroid/graphics/Paint;)V

    .line 110
    iget-object p4, p0, Lcom/rey/material/text/style/ContactChipSpan;->mRect:Landroid/graphics/RectF;

    iget p5, p0, Lcom/rey/material/text/style/ContactChipSpan;->mWidth:I

    iget p6, p0, Lcom/rey/material/text/style/ContactChipSpan;->mHeight:I

    sub-int p7, p5, p6

    int-to-float p7, p7

    int-to-float p5, p5

    int-to-float p6, p6

    invoke-virtual {p4, p7, p8, p5, p6}, Landroid/graphics/RectF;->set(FFFF)V

    .line 111
    iget-object v1, p0, Lcom/rey/material/text/style/ContactChipSpan;->mRect:Landroid/graphics/RectF;

    iget-object v5, p0, Lcom/rey/material/text/style/ContactChipSpan;->mPaint:Landroid/graphics/Paint;

    const/high16 v2, 0x43870000    # 270.0f

    invoke-virtual/range {v0 .. v5}, Landroid/graphics/Canvas;->drawArc(Landroid/graphics/RectF;FFZLandroid/graphics/Paint;)V

    .line 112
    iget-object p4, p0, Lcom/rey/material/text/style/ContactChipSpan;->mRect:Landroid/graphics/RectF;

    iget p5, p0, Lcom/rey/material/text/style/ContactChipSpan;->mWidth:I

    int-to-float p5, p5

    sub-float/2addr p5, p2

    iget p6, p0, Lcom/rey/material/text/style/ContactChipSpan;->mHeight:I

    int-to-float p6, p6

    invoke-virtual {p4, p2, p8, p5, p6}, Landroid/graphics/RectF;->set(FFFF)V

    .line 113
    iget-object p4, p0, Lcom/rey/material/text/style/ContactChipSpan;->mRect:Landroid/graphics/RectF;

    iget-object p5, p0, Lcom/rey/material/text/style/ContactChipSpan;->mPaint:Landroid/graphics/Paint;

    invoke-virtual {p1, p4, p5}, Landroid/graphics/Canvas;->drawRect(Landroid/graphics/RectF;Landroid/graphics/Paint;)V

    .line 115
    iget-object p4, p0, Lcom/rey/material/text/style/ContactChipSpan;->mBitmap:Landroid/graphics/Bitmap;

    if-eqz p4, :cond_6f

    .line 116
    iget-object p4, p0, Lcom/rey/material/text/style/ContactChipSpan;->mPaint:Landroid/graphics/Paint;

    iget-object p5, p0, Lcom/rey/material/text/style/ContactChipSpan;->mBitmapShader:Landroid/graphics/BitmapShader;

    invoke-virtual {p4, p5}, Landroid/graphics/Paint;->setShader(Landroid/graphics/Shader;)Landroid/graphics/Shader;

    .line 117
    iget-object p4, p0, Lcom/rey/material/text/style/ContactChipSpan;->mPaint:Landroid/graphics/Paint;

    invoke-virtual {p1, p2, p2, p2, p4}, Landroid/graphics/Canvas;->drawCircle(FFFLandroid/graphics/Paint;)V

    .line 120
    :cond_6f
    iget-object p2, p0, Lcom/rey/material/text/style/ContactChipSpan;->mContactName:Ljava/lang/CharSequence;

    if-eqz p2, :cond_8c

    iget-object p2, p0, Lcom/rey/material/text/style/ContactChipSpan;->mBoringLayout:Landroid/text/BoringLayout;

    if-eqz p2, :cond_8c

    .line 121
    iget p4, p0, Lcom/rey/material/text/style/ContactChipSpan;->mHeight:I

    iget p5, p0, Lcom/rey/material/text/style/ContactChipSpan;->mPaddingLeft:I

    add-int/2addr p5, p4

    int-to-float p5, p5

    invoke-virtual {p2}, Landroid/text/BoringLayout;->getHeight()I

    move-result p2

    sub-int/2addr p4, p2

    int-to-float p2, p4

    div-float/2addr p2, p3

    invoke-virtual {p1, p5, p2}, Landroid/graphics/Canvas;->translate(FF)V

    .line 122
    iget-object p2, p0, Lcom/rey/material/text/style/ContactChipSpan;->mBoringLayout:Landroid/text/BoringLayout;

    invoke-virtual {p2, p1}, Landroid/text/BoringLayout;->draw(Landroid/graphics/Canvas;)V

    .line 125
    :cond_8c
    invoke-virtual {p1}, Landroid/graphics/Canvas;->restore()V

    return-void
.end method

.method public getSize(Landroid/graphics/Paint;Ljava/lang/CharSequence;IILandroid/graphics/Paint$FontMetricsInt;)I
    .registers 6

    if-eqz p5, :cond_38

    .line 89
    iget p1, p5, Landroid/graphics/Paint$FontMetricsInt;->ascent:I

    iget p2, p5, Landroid/graphics/Paint$FontMetricsInt;->descent:I

    add-int/2addr p1, p2

    div-int/lit8 p1, p1, 0x2

    .line 90
    iget p2, p5, Landroid/graphics/Paint$FontMetricsInt;->ascent:I

    iget p3, p0, Lcom/rey/material/text/style/ContactChipSpan;->mHeight:I

    div-int/lit8 p3, p3, 0x2

    sub-int p3, p1, p3

    invoke-static {p2, p3}, Ljava/lang/Math;->min(II)I

    move-result p2

    iput p2, p5, Landroid/graphics/Paint$FontMetricsInt;->ascent:I

    .line 91
    iget p2, p5, Landroid/graphics/Paint$FontMetricsInt;->descent:I

    iget p3, p0, Lcom/rey/material/text/style/ContactChipSpan;->mHeight:I

    div-int/lit8 p3, p3, 0x2

    add-int/2addr p1, p3

    invoke-static {p2, p1}, Ljava/lang/Math;->max(II)I

    move-result p1

    iput p1, p5, Landroid/graphics/Paint$FontMetricsInt;->descent:I

    .line 92
    iget p1, p5, Landroid/graphics/Paint$FontMetricsInt;->top:I

    iget p2, p5, Landroid/graphics/Paint$FontMetricsInt;->ascent:I

    invoke-static {p1, p2}, Ljava/lang/Math;->min(II)I

    move-result p1

    iput p1, p5, Landroid/graphics/Paint$FontMetricsInt;->top:I

    .line 93
    iget p1, p5, Landroid/graphics/Paint$FontMetricsInt;->bottom:I

    iget p2, p5, Landroid/graphics/Paint$FontMetricsInt;->descent:I

    invoke-static {p1, p2}, Ljava/lang/Math;->max(II)I

    move-result p1

    iput p1, p5, Landroid/graphics/Paint$FontMetricsInt;->bottom:I

    .line 96
    :cond_38
    iget p1, p0, Lcom/rey/material/text/style/ContactChipSpan;->mWidth:I

    return p1
.end method

.method public setImage(Landroid/graphics/Bitmap;)V
    .registers 7

    .line 72
    iget-object v0, p0, Lcom/rey/material/text/style/ContactChipSpan;->mBitmap:Landroid/graphics/Bitmap;

    if-eq v0, p1, :cond_5f

    .line 73
    iput-object p1, p0, Lcom/rey/material/text/style/ContactChipSpan;->mBitmap:Landroid/graphics/Bitmap;

    if-eqz p1, :cond_5f

    .line 75
    new-instance p1, Landroid/graphics/BitmapShader;

    iget-object v0, p0, Lcom/rey/material/text/style/ContactChipSpan;->mBitmap:Landroid/graphics/Bitmap;

    sget-object v1, Landroid/graphics/Shader$TileMode;->CLAMP:Landroid/graphics/Shader$TileMode;

    sget-object v2, Landroid/graphics/Shader$TileMode;->CLAMP:Landroid/graphics/Shader$TileMode;

    invoke-direct {p1, v0, v1, v2}, Landroid/graphics/BitmapShader;-><init>(Landroid/graphics/Bitmap;Landroid/graphics/Shader$TileMode;Landroid/graphics/Shader$TileMode;)V

    iput-object p1, p0, Lcom/rey/material/text/style/ContactChipSpan;->mBitmapShader:Landroid/graphics/BitmapShader;

    .line 76
    iget-object p1, p0, Lcom/rey/material/text/style/ContactChipSpan;->mMatrix:Landroid/graphics/Matrix;

    invoke-virtual {p1}, Landroid/graphics/Matrix;->reset()V

    .line 77
    iget p1, p0, Lcom/rey/material/text/style/ContactChipSpan;->mHeight:I

    int-to-float p1, p1

    iget-object v0, p0, Lcom/rey/material/text/style/ContactChipSpan;->mBitmap:Landroid/graphics/Bitmap;

    invoke-virtual {v0}, Landroid/graphics/Bitmap;->getWidth()I

    move-result v0

    iget-object v1, p0, Lcom/rey/material/text/style/ContactChipSpan;->mBitmap:Landroid/graphics/Bitmap;

    invoke-virtual {v1}, Landroid/graphics/Bitmap;->getHeight()I

    move-result v1

    invoke-static {v0, v1}, Ljava/lang/Math;->min(II)I

    move-result v0

    int-to-float v0, v0

    div-float/2addr p1, v0

    .line 78
    iget-object v0, p0, Lcom/rey/material/text/style/ContactChipSpan;->mMatrix:Landroid/graphics/Matrix;

    const/4 v1, 0x0

    invoke-virtual {v0, p1, p1, v1, v1}, Landroid/graphics/Matrix;->setScale(FFFF)V

    .line 79
    iget-object v0, p0, Lcom/rey/material/text/style/ContactChipSpan;->mMatrix:Landroid/graphics/Matrix;

    iget v1, p0, Lcom/rey/material/text/style/ContactChipSpan;->mHeight:I

    int-to-float v1, v1

    iget-object v2, p0, Lcom/rey/material/text/style/ContactChipSpan;->mBitmap:Landroid/graphics/Bitmap;

    invoke-virtual {v2}, Landroid/graphics/Bitmap;->getWidth()I

    move-result v2

    int-to-float v2, v2

    mul-float v2, v2, p1

    sub-float/2addr v1, v2

    const/high16 v2, 0x40000000    # 2.0f

    div-float/2addr v1, v2

    iget v3, p0, Lcom/rey/material/text/style/ContactChipSpan;->mHeight:I

    int-to-float v3, v3

    iget-object v4, p0, Lcom/rey/material/text/style/ContactChipSpan;->mBitmap:Landroid/graphics/Bitmap;

    invoke-virtual {v4}, Landroid/graphics/Bitmap;->getHeight()I

    move-result v4

    int-to-float v4, v4

    mul-float v4, v4, p1

    sub-float/2addr v3, v4

    div-float/2addr v3, v2

    invoke-virtual {v0, v1, v3}, Landroid/graphics/Matrix;->postTranslate(FF)Z

    .line 81
    iget-object p1, p0, Lcom/rey/material/text/style/ContactChipSpan;->mBitmapShader:Landroid/graphics/BitmapShader;

    iget-object v0, p0, Lcom/rey/material/text/style/ContactChipSpan;->mMatrix:Landroid/graphics/Matrix;

    invoke-virtual {p1, v0}, Landroid/graphics/BitmapShader;->setLocalMatrix(Landroid/graphics/Matrix;)V

    :cond_5f
    return-void
.end method