.class public Lcom/forum/im/utils/GifOpenHelper; .super Ljava/lang/Object; .source "GifOpenHelper.java" # annotations .annotation system Ldalvik/annotation/MemberClasses; value = { Lcom/forum/im/utils/GifOpenHelper$GifFrame; } .end annotation # static fields .field protected static final MaxStackSize:I = 0x1000 .field public static final STATUS_FORMAT_ERROR:I = 0x1 .field public static final STATUS_OK:I = 0x0 .field public static final STATUS_OPEN_ERROR:I = 0x2 # instance fields .field protected act:[I .field protected bgColor:I .field protected bgIndex:I .field protected block:[B .field protected blockSize:I .field protected delay:I .field protected dispose:I .field protected frameCount:I .field protected frameindex:I .field protected frames:Ljava/util/Vector; .annotation system Ldalvik/annotation/Signature; value = { "Ljava/util/Vector<", "Lcom/forum/im/utils/GifOpenHelper$GifFrame;", ">;" } .end annotation .end field .field protected gct:[I .field protected gctFlag:Z .field protected gctSize:I .field protected height:I .field protected ih:I .field protected image:Landroid/graphics/Bitmap; .field protected in:Ljava/io/InputStream; .field protected interlace:Z .field protected iw:I .field protected ix:I .field protected iy:I .field protected lastBgColor:I .field protected lastDispose:I .field protected lastImage:Landroid/graphics/Bitmap; .field protected lct:[I .field protected lctFlag:Z .field protected lctSize:I .field protected loopCount:I .field protected lrh:I .field protected lrw:I .field protected lrx:I .field protected lry:I .field protected pixelAspect:I .field protected pixelStack:[B .field protected pixels:[B .field protected prefix:[S .field protected status:I .field protected suffix:[B .field protected transIndex:I .field protected transparency:Z .field protected width:I # direct methods .method public constructor ()V .registers 3 .line 10 invoke-direct {p0}, Ljava/lang/Object;->()V const/4 v0, 0x1 .line 38 iput v0, p0, Lcom/forum/im/utils/GifOpenHelper;->loopCount:I const/4 v0, 0x0 .line 57 iput v0, p0, Lcom/forum/im/utils/GifOpenHelper;->frameindex:I const/16 v1, 0x100 .line 70 new-array v1, v1, [B iput-object v1, p0, Lcom/forum/im/utils/GifOpenHelper;->block:[B .line 71 iput v0, p0, Lcom/forum/im/utils/GifOpenHelper;->blockSize:I .line 74 iput v0, p0, Lcom/forum/im/utils/GifOpenHelper;->dispose:I .line 76 iput v0, p0, Lcom/forum/im/utils/GifOpenHelper;->lastDispose:I .line 77 iput-boolean v0, p0, Lcom/forum/im/utils/GifOpenHelper;->transparency:Z .line 78 iput v0, p0, Lcom/forum/im/utils/GifOpenHelper;->delay:I return-void .end method # virtual methods .method protected decodeImageData()V .registers 25 move-object/from16 v0, p0 .line 256 iget v1, v0, Lcom/forum/im/utils/GifOpenHelper;->iw:I iget v2, v0, Lcom/forum/im/utils/GifOpenHelper;->ih:I mul-int/2addr v1, v2 .line 259 iget-object v2, v0, Lcom/forum/im/utils/GifOpenHelper;->pixels:[B if-eqz v2, :cond_e array-length v2, v2 if-ge v2, v1, :cond_12 .line 260 :cond_e new-array v2, v1, [B iput-object v2, v0, Lcom/forum/im/utils/GifOpenHelper;->pixels:[B .line 262 :cond_12 iget-object v2, v0, Lcom/forum/im/utils/GifOpenHelper;->prefix:[S const/16 v3, 0x1000 if-nez v2, :cond_1c .line 263 new-array v2, v3, [S iput-object v2, v0, Lcom/forum/im/utils/GifOpenHelper;->prefix:[S .line 265 :cond_1c iget-object v2, v0, Lcom/forum/im/utils/GifOpenHelper;->suffix:[B if-nez v2, :cond_24 .line 266 new-array v2, v3, [B iput-object v2, v0, Lcom/forum/im/utils/GifOpenHelper;->suffix:[B .line 268 :cond_24 iget-object v2, v0, Lcom/forum/im/utils/GifOpenHelper;->pixelStack:[B if-nez v2, :cond_2e const/16 v2, 0x1001 .line 269 new-array v2, v2, [B iput-object v2, v0, Lcom/forum/im/utils/GifOpenHelper;->pixelStack:[B .line 272 :cond_2e invoke-virtual/range {p0 .. p0}, Lcom/forum/im/utils/GifOpenHelper;->read()I move-result v2 const/4 v4, 0x1 shl-int v5, v4, v2 add-int/lit8 v6, v5, 0x1 add-int/lit8 v7, v5, 0x2 add-int/2addr v2, v4 shl-int v8, v4, v2 sub-int/2addr v8, v4 const/4 v9, 0x0 move v10, v9 :goto_3f if-ge v10, v5, :cond_4d .line 280 iget-object v11, v0, Lcom/forum/im/utils/GifOpenHelper;->prefix:[S aput-short v9, v11, v10 .line 281 iget-object v11, v0, Lcom/forum/im/utils/GifOpenHelper;->suffix:[B int-to-byte v12, v10 aput-byte v12, v11, v10 add-int/lit8 v10, v10, 0x1 goto :goto_3f :cond_4d move v14, v2 move/from16 v16, v8 move v11, v9 move v12, v11 move v13, v12 move v15, v13 move/from16 v17, v15 move/from16 v18, v17 move/from16 v19, v18 move/from16 v20, v19 const/4 v3, -0x1 move v9, v7 :goto_5e if-ge v11, v1, :cond_12a if-nez v12, :cond_104 if-ge v13, v14, :cond_80 if-nez v17, :cond_70 .line 292 invoke-virtual/range {p0 .. p0}, Lcom/forum/im/utils/GifOpenHelper;->readBlock()I move-result v17 if-gtz v17, :cond_6e goto/16 :goto_12a :cond_6e const/16 v18, 0x0 .line 298 :cond_70 iget-object v10, v0, Lcom/forum/im/utils/GifOpenHelper;->block:[B aget-byte v10, v10, v18 and-int/lit16 v10, v10, 0xff shl-int/2addr v10, v13 add-int/2addr v15, v10 add-int/lit8 v13, v13, 0x8 add-int/lit8 v18, v18, 0x1 const/4 v10, -0x1 add-int/lit8 v17, v17, -0x1 goto :goto_5e :cond_80 const/4 v10, -0x1 and-int v4, v15, v16 shr-int/2addr v15, v14 sub-int/2addr v13, v14 if-gt v4, v9, :cond_12a if-ne v4, v6, :cond_8b goto/16 :goto_12a :cond_8b if-ne v4, v5, :cond_94 move v14, v2 move v9, v7 move/from16 v16, v8 move v3, v10 :goto_92 const/4 v4, 0x1 goto :goto_5e :cond_94 if-ne v3, v10, :cond_a9 .line 322 iget-object v3, v0, Lcom/forum/im/utils/GifOpenHelper;->pixelStack:[B add-int/lit8 v10, v12, 0x1 move/from16 v21, v2 iget-object v2, v0, Lcom/forum/im/utils/GifOpenHelper;->suffix:[B aget-byte v2, v2, v4 aput-byte v2, v3, v12 move v3, v4 move/from16 v19, v3 move v12, v10 move/from16 v2, v21 goto :goto_92 :cond_a9 move/from16 v21, v2 if-ne v4, v9, :cond_bb .line 329 iget-object v2, v0, Lcom/forum/im/utils/GifOpenHelper;->pixelStack:[B add-int/lit8 v10, v12, 0x1 move/from16 v22, v4 move/from16 v4, v19 int-to-byte v4, v4 aput-byte v4, v2, v12 move v2, v3 move v12, v10 goto :goto_bf :cond_bb move/from16 v22, v4 move/from16 v2, v22 :goto_bf if-le v2, v5, :cond_d5 .line 333 iget-object v4, v0, Lcom/forum/im/utils/GifOpenHelper;->pixelStack:[B add-int/lit8 v10, v12, 0x1 move/from16 v19, v5 iget-object v5, v0, Lcom/forum/im/utils/GifOpenHelper;->suffix:[B aget-byte v5, v5, v2 aput-byte v5, v4, v12 .line 334 iget-object v4, v0, Lcom/forum/im/utils/GifOpenHelper;->prefix:[S aget-short v2, v4, v2 move v12, v10 move/from16 v5, v19 goto :goto_bf :cond_d5 move/from16 v19, v5 .line 336 iget-object v4, v0, Lcom/forum/im/utils/GifOpenHelper;->suffix:[B aget-byte v2, v4, v2 and-int/lit16 v2, v2, 0xff const/16 v5, 0x1000 if-lt v9, v5, :cond_e2 goto :goto_12a .line 341 :cond_e2 iget-object v5, v0, Lcom/forum/im/utils/GifOpenHelper;->pixelStack:[B add-int/lit8 v10, v12, 0x1 move/from16 v23, v6 int-to-byte v6, v2 aput-byte v6, v5, v12 .line 342 iget-object v5, v0, Lcom/forum/im/utils/GifOpenHelper;->prefix:[S int-to-short v3, v3 aput-short v3, v5, v9 .line 343 aput-byte v6, v4, v9 add-int/lit8 v9, v9, 0x1 and-int v3, v9, v16 const/16 v5, 0x1000 if-nez v3, :cond_100 if-ge v9, v5, :cond_100 add-int/lit8 v14, v14, 0x1 add-int v16, v16, v9 :cond_100 move v12, v10 move/from16 v3, v22 goto :goto_10f :cond_104 move/from16 v21, v2 move/from16 v23, v6 move/from16 v4, v19 move/from16 v19, v5 const/16 v5, 0x1000 move v2, v4 :goto_10f const/4 v4, -0x1 add-int/2addr v12, v4 .line 355 iget-object v6, v0, Lcom/forum/im/utils/GifOpenHelper;->pixels:[B add-int/lit8 v10, v20, 0x1 iget-object v4, v0, Lcom/forum/im/utils/GifOpenHelper;->pixelStack:[B aget-byte v4, v4, v12 aput-byte v4, v6, v20 add-int/lit8 v11, v11, 0x1 move/from16 v20, v10 move/from16 v5, v19 move/from16 v6, v23 const/4 v4, 0x1 move/from16 v19, v2 move/from16 v2, v21 goto/16 :goto_5e :cond_12a :goto_12a move/from16 v2, v20 :goto_12c if-ge v2, v1, :cond_136 .line 359 iget-object v3, v0, Lcom/forum/im/utils/GifOpenHelper;->pixels:[B const/4 v4, 0x0 aput-byte v4, v3, v2 add-int/lit8 v2, v2, 0x1 goto :goto_12c :cond_136 return-void .end method .method protected err()Z .registers 2 .line 364 iget v0, p0, Lcom/forum/im/utils/GifOpenHelper;->status:I if-eqz v0, :cond_6 const/4 v0, 0x1 goto :goto_7 :cond_6 const/4 v0, 0x0 :goto_7 return v0 .end method .method public getDelay(I)I .registers 3 const/4 v0, -0x1 .line 110 iput v0, p0, Lcom/forum/im/utils/GifOpenHelper;->delay:I if-ltz p1, :cond_15 .line 111 iget v0, p0, Lcom/forum/im/utils/GifOpenHelper;->frameCount:I if-ge p1, v0, :cond_15 .line 112 iget-object v0, p0, Lcom/forum/im/utils/GifOpenHelper;->frames:Ljava/util/Vector; invoke-virtual {v0, p1}, Ljava/util/Vector;->elementAt(I)Ljava/lang/Object; move-result-object p1 check-cast p1, Lcom/forum/im/utils/GifOpenHelper$GifFrame; iget p1, p1, Lcom/forum/im/utils/GifOpenHelper$GifFrame;->delay:I iput p1, p0, Lcom/forum/im/utils/GifOpenHelper;->delay:I .line 114 :cond_15 iget p1, p0, Lcom/forum/im/utils/GifOpenHelper;->delay:I return p1 .end method .method public getFrame(I)Landroid/graphics/Bitmap; .registers 3 if-ltz p1, :cond_11 .line 212 iget v0, p0, Lcom/forum/im/utils/GifOpenHelper;->frameCount:I if-ge p1, v0, :cond_11 .line 213 iget-object v0, p0, Lcom/forum/im/utils/GifOpenHelper;->frames:Ljava/util/Vector; invoke-virtual {v0, p1}, Ljava/util/Vector;->elementAt(I)Ljava/lang/Object; move-result-object p1 check-cast p1, Lcom/forum/im/utils/GifOpenHelper$GifFrame; iget-object p1, p1, Lcom/forum/im/utils/GifOpenHelper$GifFrame;->image:Landroid/graphics/Bitmap; goto :goto_12 :cond_11 const/4 p1, 0x0 :goto_12 return-object p1 .end method .method public getFrameCount()I .registers 2 .line 118 iget v0, p0, Lcom/forum/im/utils/GifOpenHelper;->frameCount:I return v0 .end method .method public getFrameindex()I .registers 2 .line 60 iget v0, p0, Lcom/forum/im/utils/GifOpenHelper;->frameindex:I return v0 .end method .method public getHeigh()I .registers 2 .line 99 iget v0, p0, Lcom/forum/im/utils/GifOpenHelper;->height:I return v0 .end method .method public getImage()Landroid/graphics/Bitmap; .registers 2 const/4 v0, 0x0 .line 122 invoke-virtual {p0, v0}, Lcom/forum/im/utils/GifOpenHelper;->getFrame(I)Landroid/graphics/Bitmap; move-result-object v0 return-object v0 .end method .method public getLoopCount()I .registers 2 .line 126 iget v0, p0, Lcom/forum/im/utils/GifOpenHelper;->loopCount:I return v0 .end method .method public getWidth()I .registers 2 .line 95 iget v0, p0, Lcom/forum/im/utils/GifOpenHelper;->width:I return v0 .end method .method public init()V .registers 2 const/4 v0, 0x0 .line 369 iput v0, p0, Lcom/forum/im/utils/GifOpenHelper;->status:I .line 370 iput v0, p0, Lcom/forum/im/utils/GifOpenHelper;->frameCount:I .line 371 new-instance v0, Ljava/util/Vector; invoke-direct {v0}, Ljava/util/Vector;->()V iput-object v0, p0, Lcom/forum/im/utils/GifOpenHelper;->frames:Ljava/util/Vector; const/4 v0, 0x0 .line 372 iput-object v0, p0, Lcom/forum/im/utils/GifOpenHelper;->gct:[I .line 373 iput-object v0, p0, Lcom/forum/im/utils/GifOpenHelper;->lct:[I return-void .end method .method public nextBitmap()Landroid/graphics/Bitmap; .registers 3 .line 219 iget v0, p0, Lcom/forum/im/utils/GifOpenHelper;->frameindex:I add-int/lit8 v0, v0, 0x1 iput v0, p0, Lcom/forum/im/utils/GifOpenHelper;->frameindex:I .line 220 iget-object v1, p0, Lcom/forum/im/utils/GifOpenHelper;->frames:Ljava/util/Vector; invoke-virtual {v1}, Ljava/util/Vector;->size()I move-result v1 add-int/lit8 v1, v1, -0x1 if-le v0, v1, :cond_13 const/4 v0, 0x0 .line 221 iput v0, p0, Lcom/forum/im/utils/GifOpenHelper;->frameindex:I .line 223 :cond_13 iget-object v0, p0, Lcom/forum/im/utils/GifOpenHelper;->frames:Ljava/util/Vector; iget v1, p0, Lcom/forum/im/utils/GifOpenHelper;->frameindex:I invoke-virtual {v0, v1}, Ljava/util/Vector;->elementAt(I)Ljava/lang/Object; move-result-object v0 check-cast v0, Lcom/forum/im/utils/GifOpenHelper$GifFrame; iget-object v0, v0, Lcom/forum/im/utils/GifOpenHelper$GifFrame;->image:Landroid/graphics/Bitmap; return-object v0 .end method .method public nextDelay()I .registers 3 .line 227 iget-object v0, p0, Lcom/forum/im/utils/GifOpenHelper;->frames:Ljava/util/Vector; iget v1, p0, Lcom/forum/im/utils/GifOpenHelper;->frameindex:I invoke-virtual {v0, v1}, Ljava/util/Vector;->elementAt(I)Ljava/lang/Object; move-result-object v0 check-cast v0, Lcom/forum/im/utils/GifOpenHelper$GifFrame; iget v0, v0, Lcom/forum/im/utils/GifOpenHelper$GifFrame;->delay:I return v0 .end method .method protected read()I .registers 2 .line 379 :try_start_0 iget-object v0, p0, Lcom/forum/im/utils/GifOpenHelper;->in:Ljava/io/InputStream; invoke-virtual {v0}, Ljava/io/InputStream;->read()I move-result v0 :try_end_6 .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_6} :catch_7 goto :goto_b :catch_7 const/4 v0, 0x1 .line 381 iput v0, p0, Lcom/forum/im/utils/GifOpenHelper;->status:I const/4 v0, 0x0 :goto_b return v0 .end method .method public read(Ljava/io/InputStream;)I .registers 3 .line 232 invoke-virtual {p0}, Lcom/forum/im/utils/GifOpenHelper;->init()V if-eqz p1, :cond_1b .line 234 iput-object p1, p0, Lcom/forum/im/utils/GifOpenHelper;->in:Ljava/io/InputStream; .line 236 invoke-virtual {p0}, Lcom/forum/im/utils/GifOpenHelper;->readHeader()V .line 237 invoke-virtual {p0}, Lcom/forum/im/utils/GifOpenHelper;->err()Z move-result v0 if-nez v0, :cond_1e .line 238 invoke-virtual {p0}, Lcom/forum/im/utils/GifOpenHelper;->readContents()V .line 239 iget v0, p0, Lcom/forum/im/utils/GifOpenHelper;->frameCount:I if-gez v0, :cond_1e const/4 v0, 0x1 .line 240 iput v0, p0, Lcom/forum/im/utils/GifOpenHelper;->status:I goto :goto_1e :cond_1b const/4 v0, 0x2 .line 244 iput v0, p0, Lcom/forum/im/utils/GifOpenHelper;->status:I .line 247 :cond_1e :goto_1e :try_start_1e invoke-virtual {p1}, Ljava/io/InputStream;->close()V :try_end_21 .catch Ljava/lang/Exception; {:try_start_1e .. :try_end_21} :catch_22 goto :goto_26 :catch_22 move-exception p1 .line 249 invoke-virtual {p1}, Ljava/lang/Exception;->printStackTrace()V .line 251 :goto_26 iget p1, p0, Lcom/forum/im/utils/GifOpenHelper;->status:I return p1 .end method .method protected readBlock()I .registers 5 .line 387 invoke-virtual {p0}, Lcom/forum/im/utils/GifOpenHelper;->read()I move-result v0 iput v0, p0, Lcom/forum/im/utils/GifOpenHelper;->blockSize:I const/4 v1, 0x0 if-lez v0, :cond_27 .line 392 :goto_9 :try_start_9 iget v0, p0, Lcom/forum/im/utils/GifOpenHelper;->blockSize:I if-ge v1, v0, :cond_20 .line 393 iget-object v2, p0, Lcom/forum/im/utils/GifOpenHelper;->in:Ljava/io/InputStream; iget-object v3, p0, Lcom/forum/im/utils/GifOpenHelper;->block:[B sub-int/2addr v0, v1 invoke-virtual {v2, v3, v1, v0}, Ljava/io/InputStream;->read([BII)I move-result v0 :try_end_16 .catch Ljava/lang/Exception; {:try_start_9 .. :try_end_16} :catch_1c const/4 v2, -0x1 if-ne v0, v2, :cond_1a goto :goto_20 :cond_1a add-int/2addr v1, v0 goto :goto_9 :catch_1c move-exception v0 .line 400 invoke-virtual {v0}, Ljava/lang/Exception;->printStackTrace()V .line 402 :cond_20 :goto_20 iget v0, p0, Lcom/forum/im/utils/GifOpenHelper;->blockSize:I if-ge v1, v0, :cond_27 const/4 v0, 0x1 .line 403 iput v0, p0, Lcom/forum/im/utils/GifOpenHelper;->status:I :cond_27 return v1 .end method .method protected readColorTable(I)[I .registers 11 mul-int/lit8 v0, p1, 0x3 .line 413 new-array v1, v0, [B const/4 v2, 0x0 .line 416 :try_start_5 iget-object v3, p0, Lcom/forum/im/utils/GifOpenHelper;->in:Ljava/io/InputStream; invoke-virtual {v3, v1}, Ljava/io/InputStream;->read([B)I move-result v3 :try_end_b .catch Ljava/lang/Exception; {:try_start_5 .. :try_end_b} :catch_c goto :goto_11 :catch_c move-exception v3 .line 418 invoke-virtual {v3}, Ljava/lang/Exception;->printStackTrace()V move v3, v2 :goto_11 if-ge v3, v0, :cond_18 const/4 p1, 0x1 .line 421 iput p1, p0, Lcom/forum/im/utils/GifOpenHelper;->status:I const/4 p1, 0x0 goto :goto_41 :cond_18 const/16 v0, 0x100 .line 423 new-array v0, v0, [I move v3, v2 :goto_1d if-ge v2, p1, :cond_40 add-int/lit8 v4, v3, 0x1 .line 427 aget-byte v5, v1, v3 and-int/lit16 v5, v5, 0xff add-int/lit8 v6, v3, 0x2 .line 428 aget-byte v4, v1, v4 and-int/lit16 v4, v4, 0xff add-int/lit8 v3, v3, 0x3 .line 429 aget-byte v6, v1, v6 and-int/lit16 v6, v6, 0xff add-int/lit8 v7, v2, 0x1 shl-int/lit8 v5, v5, 0x10 const/high16 v8, -0x1000000 or-int/2addr v5, v8 shl-int/lit8 v4, v4, 0x8 or-int/2addr v4, v5 or-int/2addr v4, v6 .line 430 aput v4, v0, v2 move v2, v7 goto :goto_1d :cond_40 move-object p1, v0 :goto_41 return-object p1 .end method .method protected readContents()V .registers 6 const/4 v0, 0x0 move v1, v0 :cond_2 :goto_2 if-nez v1, :cond_6d .line 440 invoke-virtual {p0}, Lcom/forum/im/utils/GifOpenHelper;->err()Z move-result v2 if-nez v2, :cond_6d .line 441 invoke-virtual {p0}, Lcom/forum/im/utils/GifOpenHelper;->read()I move-result v2 if-eqz v2, :cond_2 const/16 v3, 0x21 if-eq v2, v3, :cond_26 const/16 v3, 0x2c if-eq v2, v3, :cond_22 const/16 v3, 0x3b const/4 v4, 0x1 if-eq v2, v3, :cond_20 .line 477 iput v4, p0, Lcom/forum/im/utils/GifOpenHelper;->status:I goto :goto_2 :cond_20 move v1, v4 goto :goto_2 .line 444 :cond_22 invoke-virtual {p0}, Lcom/forum/im/utils/GifOpenHelper;->readImage()V goto :goto_2 .line 447 :cond_26 invoke-virtual {p0}, Lcom/forum/im/utils/GifOpenHelper;->read()I move-result v2 const/16 v3, 0xf9 if-eq v2, v3, :cond_69 const/16 v3, 0xff if-eq v2, v3, :cond_36 .line 466 invoke-virtual {p0}, Lcom/forum/im/utils/GifOpenHelper;->skip()V goto :goto_2 .line 454 :cond_36 invoke-virtual {p0}, Lcom/forum/im/utils/GifOpenHelper;->readBlock()I .line 456 const-string v2, "" move v3, v0 :goto_3c const/16 v4, 0xb if-ge v3, v4, :cond_59 .line 457 new-instance v4, Ljava/lang/StringBuilder; invoke-direct {v4}, Ljava/lang/StringBuilder;->()V invoke-virtual {v4, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v2 iget-object v4, p0, Lcom/forum/im/utils/GifOpenHelper;->block:[B aget-byte v4, v4, v3 int-to-char v4, v4 invoke-virtual {v2, v4}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder; move-result-object v2 invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v2 add-int/lit8 v3, v3, 0x1 goto :goto_3c .line 459 :cond_59 const-string v3, "NETSCAPE2.0" invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z move-result v2 if-eqz v2, :cond_65 .line 460 invoke-virtual {p0}, Lcom/forum/im/utils/GifOpenHelper;->readNetscapeExt()V goto :goto_2 .line 462 :cond_65 invoke-virtual {p0}, Lcom/forum/im/utils/GifOpenHelper;->skip()V goto :goto_2 .line 450 :cond_69 invoke-virtual {p0}, Lcom/forum/im/utils/GifOpenHelper;->readGraphicControlExt()V goto :goto_2 :cond_6d return-void .end method .method protected readGraphicControlExt()V .registers 4 .line 483 invoke-virtual {p0}, Lcom/forum/im/utils/GifOpenHelper;->read()I .line 484 invoke-virtual {p0}, Lcom/forum/im/utils/GifOpenHelper;->read()I move-result v0 and-int/lit8 v1, v0, 0x1c shr-int/lit8 v1, v1, 0x2 .line 485 iput v1, p0, Lcom/forum/im/utils/GifOpenHelper;->dispose:I const/4 v2, 0x1 if-nez v1, :cond_12 .line 487 iput v2, p0, Lcom/forum/im/utils/GifOpenHelper;->dispose:I :cond_12 and-int/2addr v0, v2 if-eqz v0, :cond_16 goto :goto_17 :cond_16 const/4 v2, 0x0 .line 489 :goto_17 iput-boolean v2, p0, Lcom/forum/im/utils/GifOpenHelper;->transparency:Z .line 490 invoke-virtual {p0}, Lcom/forum/im/utils/GifOpenHelper;->readShort()I move-result v0 mul-int/lit8 v0, v0, 0xa iput v0, p0, Lcom/forum/im/utils/GifOpenHelper;->delay:I .line 491 invoke-virtual {p0}, Lcom/forum/im/utils/GifOpenHelper;->read()I move-result v0 iput v0, p0, Lcom/forum/im/utils/GifOpenHelper;->transIndex:I .line 492 invoke-virtual {p0}, Lcom/forum/im/utils/GifOpenHelper;->read()I return-void .end method .method protected readHeader()V .registers 4 .line 498 const-string v0, "" const/4 v1, 0x0 :goto_3 const/4 v2, 0x6 if-ge v1, v2, :cond_1f .line 499 new-instance v2, Ljava/lang/StringBuilder; invoke-direct {v2}, Ljava/lang/StringBuilder;->()V invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v0 invoke-virtual {p0}, Lcom/forum/im/utils/GifOpenHelper;->read()I move-result v2 int-to-char v2, v2 invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder; move-result-object v0 invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v0 add-int/lit8 v1, v1, 0x1 goto :goto_3 .line 501 :cond_1f const-string v1, "GIF" invoke-virtual {v0, v1}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z move-result v0 if-nez v0, :cond_2b const/4 v0, 0x1 .line 502 iput v0, p0, Lcom/forum/im/utils/GifOpenHelper;->status:I return-void .line 505 :cond_2b invoke-virtual {p0}, Lcom/forum/im/utils/GifOpenHelper;->readLSD()V .line 506 iget-boolean v0, p0, Lcom/forum/im/utils/GifOpenHelper;->gctFlag:Z if-eqz v0, :cond_46 invoke-virtual {p0}, Lcom/forum/im/utils/GifOpenHelper;->err()Z move-result v0 if-nez v0, :cond_46 .line 507 iget v0, p0, Lcom/forum/im/utils/GifOpenHelper;->gctSize:I invoke-virtual {p0, v0}, Lcom/forum/im/utils/GifOpenHelper;->readColorTable(I)[I move-result-object v0 iput-object v0, p0, Lcom/forum/im/utils/GifOpenHelper;->gct:[I .line 508 iget v1, p0, Lcom/forum/im/utils/GifOpenHelper;->bgIndex:I aget v0, v0, v1 iput v0, p0, Lcom/forum/im/utils/GifOpenHelper;->bgColor:I :cond_46 return-void .end method .method protected readImage()V .registers 6 .line 514 invoke-virtual {p0}, Lcom/forum/im/utils/GifOpenHelper;->readShort()I move-result v0 iput v0, p0, Lcom/forum/im/utils/GifOpenHelper;->ix:I .line 516 invoke-virtual {p0}, Lcom/forum/im/utils/GifOpenHelper;->readShort()I move-result v0 iput v0, p0, Lcom/forum/im/utils/GifOpenHelper;->iy:I .line 518 invoke-virtual {p0}, Lcom/forum/im/utils/GifOpenHelper;->readShort()I move-result v0 iput v0, p0, Lcom/forum/im/utils/GifOpenHelper;->iw:I .line 520 invoke-virtual {p0}, Lcom/forum/im/utils/GifOpenHelper;->readShort()I move-result v0 iput v0, p0, Lcom/forum/im/utils/GifOpenHelper;->ih:I .line 523 invoke-virtual {p0}, Lcom/forum/im/utils/GifOpenHelper;->read()I move-result v0 and-int/lit16 v1, v0, 0x80 const/4 v2, 0x1 const/4 v3, 0x0 if-eqz v1, :cond_24 move v1, v2 goto :goto_25 :cond_24 move v1, v3 .line 524 :goto_25 iput-boolean v1, p0, Lcom/forum/im/utils/GifOpenHelper;->lctFlag:Z and-int/lit8 v4, v0, 0x40 if-eqz v4, :cond_2d move v4, v2 goto :goto_2e :cond_2d move v4, v3 .line 528 :goto_2e iput-boolean v4, p0, Lcom/forum/im/utils/GifOpenHelper;->interlace:Z and-int/lit8 v0, v0, 0x7 const/4 v4, 0x2 shl-int v0, v4, v0 .line 531 iput v0, p0, Lcom/forum/im/utils/GifOpenHelper;->lctSize:I if-eqz v1, :cond_42 .line 533 invoke-virtual {p0, v0}, Lcom/forum/im/utils/GifOpenHelper;->readColorTable(I)[I move-result-object v0 iput-object v0, p0, Lcom/forum/im/utils/GifOpenHelper;->lct:[I .line 534 iput-object v0, p0, Lcom/forum/im/utils/GifOpenHelper;->act:[I goto :goto_4e .line 536 :cond_42 iget-object v0, p0, Lcom/forum/im/utils/GifOpenHelper;->gct:[I iput-object v0, p0, Lcom/forum/im/utils/GifOpenHelper;->act:[I .line 537 iget v0, p0, Lcom/forum/im/utils/GifOpenHelper;->bgIndex:I iget v1, p0, Lcom/forum/im/utils/GifOpenHelper;->transIndex:I if-ne v0, v1, :cond_4e .line 538 iput v3, p0, Lcom/forum/im/utils/GifOpenHelper;->bgColor:I .line 542 :cond_4e :goto_4e iget-boolean v0, p0, Lcom/forum/im/utils/GifOpenHelper;->transparency:Z if-eqz v0, :cond_5b .line 543 iget-object v0, p0, Lcom/forum/im/utils/GifOpenHelper;->act:[I iget v1, p0, Lcom/forum/im/utils/GifOpenHelper;->transIndex:I aget v4, v0, v1 .line 544 aput v3, v0, v1 move v3, v4 .line 546 :cond_5b iget-object v0, p0, Lcom/forum/im/utils/GifOpenHelper;->act:[I if-nez v0, :cond_61 .line 547 iput v2, p0, Lcom/forum/im/utils/GifOpenHelper;->status:I .line 549 :cond_61 invoke-virtual {p0}, Lcom/forum/im/utils/GifOpenHelper;->err()Z move-result v0 if-eqz v0, :cond_68 return-void .line 552 :cond_68 invoke-virtual {p0}, Lcom/forum/im/utils/GifOpenHelper;->decodeImageData()V .line 553 invoke-virtual {p0}, Lcom/forum/im/utils/GifOpenHelper;->skip()V .line 554 invoke-virtual {p0}, Lcom/forum/im/utils/GifOpenHelper;->err()Z move-result v0 if-eqz v0, :cond_75 return-void .line 557 :cond_75 iget v0, p0, Lcom/forum/im/utils/GifOpenHelper;->frameCount:I add-int/2addr v0, v2 iput v0, p0, Lcom/forum/im/utils/GifOpenHelper;->frameCount:I .line 559 iget v0, p0, Lcom/forum/im/utils/GifOpenHelper;->width:I iget v1, p0, Lcom/forum/im/utils/GifOpenHelper;->height:I sget-object v2, Landroid/graphics/Bitmap$Config;->ARGB_4444:Landroid/graphics/Bitmap$Config; invoke-static {v0, v1, v2}, Landroid/graphics/Bitmap;->createBitmap(IILandroid/graphics/Bitmap$Config;)Landroid/graphics/Bitmap; move-result-object v0 iput-object v0, p0, Lcom/forum/im/utils/GifOpenHelper;->image:Landroid/graphics/Bitmap; .line 561 invoke-virtual {p0}, Lcom/forum/im/utils/GifOpenHelper;->setPixels()V .line 562 iget-object v0, p0, Lcom/forum/im/utils/GifOpenHelper;->frames:Ljava/util/Vector; new-instance v1, Lcom/forum/im/utils/GifOpenHelper$GifFrame; iget-object v2, p0, Lcom/forum/im/utils/GifOpenHelper;->image:Landroid/graphics/Bitmap; iget v4, p0, Lcom/forum/im/utils/GifOpenHelper;->delay:I invoke-direct {v1, p0, v2, v4}, Lcom/forum/im/utils/GifOpenHelper$GifFrame;->(Lcom/forum/im/utils/GifOpenHelper;Landroid/graphics/Bitmap;I)V invoke-virtual {v0, v1}, Ljava/util/Vector;->addElement(Ljava/lang/Object;)V .line 564 iget-boolean v0, p0, Lcom/forum/im/utils/GifOpenHelper;->transparency:Z if-eqz v0, :cond_a1 .line 565 iget-object v0, p0, Lcom/forum/im/utils/GifOpenHelper;->act:[I iget v1, p0, Lcom/forum/im/utils/GifOpenHelper;->transIndex:I aput v3, v0, v1 .line 567 :cond_a1 invoke-virtual {p0}, Lcom/forum/im/utils/GifOpenHelper;->resetFrame()V return-void .end method .method protected readLSD()V .registers 3 .line 573 invoke-virtual {p0}, Lcom/forum/im/utils/GifOpenHelper;->readShort()I move-result v0 iput v0, p0, Lcom/forum/im/utils/GifOpenHelper;->width:I .line 574 invoke-virtual {p0}, Lcom/forum/im/utils/GifOpenHelper;->readShort()I move-result v0 iput v0, p0, Lcom/forum/im/utils/GifOpenHelper;->height:I .line 576 invoke-virtual {p0}, Lcom/forum/im/utils/GifOpenHelper;->read()I move-result v0 and-int/lit16 v1, v0, 0x80 if-eqz v1, :cond_16 const/4 v1, 0x1 goto :goto_17 :cond_16 const/4 v1, 0x0 .line 577 :goto_17 iput-boolean v1, p0, Lcom/forum/im/utils/GifOpenHelper;->gctFlag:Z and-int/lit8 v0, v0, 0x7 const/4 v1, 0x2 shl-int v0, v1, v0 .line 580 iput v0, p0, Lcom/forum/im/utils/GifOpenHelper;->gctSize:I .line 581 invoke-virtual {p0}, Lcom/forum/im/utils/GifOpenHelper;->read()I move-result v0 iput v0, p0, Lcom/forum/im/utils/GifOpenHelper;->bgIndex:I .line 582 invoke-virtual {p0}, Lcom/forum/im/utils/GifOpenHelper;->read()I move-result v0 iput v0, p0, Lcom/forum/im/utils/GifOpenHelper;->pixelAspect:I return-void .end method .method protected readNetscapeExt()V .registers 4 .line 587 :cond_0 invoke-virtual {p0}, Lcom/forum/im/utils/GifOpenHelper;->readBlock()I .line 588 iget-object v0, p0, Lcom/forum/im/utils/GifOpenHelper;->block:[B const/4 v1, 0x0 aget-byte v1, v0, v1 const/4 v2, 0x1 if-ne v1, v2, :cond_19 .line 590 aget-byte v1, v0, v2 and-int/lit16 v1, v1, 0xff const/4 v2, 0x2 .line 591 aget-byte v0, v0, v2 and-int/lit16 v0, v0, 0xff shl-int/lit8 v0, v0, 0x8 or-int/2addr v0, v1 .line 592 iput v0, p0, Lcom/forum/im/utils/GifOpenHelper;->loopCount:I .line 594 :cond_19 iget v0, p0, Lcom/forum/im/utils/GifOpenHelper;->blockSize:I if-lez v0, :cond_23 invoke-virtual {p0}, Lcom/forum/im/utils/GifOpenHelper;->err()Z move-result v0 if-eqz v0, :cond_0 :cond_23 return-void .end method .method protected readShort()I .registers 3 .line 600 invoke-virtual {p0}, Lcom/forum/im/utils/GifOpenHelper;->read()I move-result v0 invoke-virtual {p0}, Lcom/forum/im/utils/GifOpenHelper;->read()I move-result v1 shl-int/lit8 v1, v1, 0x8 or-int/2addr v0, v1 return v0 .end method .method protected resetFrame()V .registers 2 .line 604 iget v0, p0, Lcom/forum/im/utils/GifOpenHelper;->dispose:I iput v0, p0, Lcom/forum/im/utils/GifOpenHelper;->lastDispose:I .line 605 iget v0, p0, Lcom/forum/im/utils/GifOpenHelper;->ix:I iput v0, p0, Lcom/forum/im/utils/GifOpenHelper;->lrx:I .line 606 iget v0, p0, Lcom/forum/im/utils/GifOpenHelper;->iy:I iput v0, p0, Lcom/forum/im/utils/GifOpenHelper;->lry:I .line 607 iget v0, p0, Lcom/forum/im/utils/GifOpenHelper;->iw:I iput v0, p0, Lcom/forum/im/utils/GifOpenHelper;->lrw:I .line 608 iget v0, p0, Lcom/forum/im/utils/GifOpenHelper;->ih:I iput v0, p0, Lcom/forum/im/utils/GifOpenHelper;->lrh:I .line 609 iget-object v0, p0, Lcom/forum/im/utils/GifOpenHelper;->image:Landroid/graphics/Bitmap; iput-object v0, p0, Lcom/forum/im/utils/GifOpenHelper;->lastImage:Landroid/graphics/Bitmap; .line 610 iget v0, p0, Lcom/forum/im/utils/GifOpenHelper;->bgColor:I iput v0, p0, Lcom/forum/im/utils/GifOpenHelper;->lastBgColor:I const/4 v0, 0x0 .line 611 iput v0, p0, Lcom/forum/im/utils/GifOpenHelper;->dispose:I .line 612 iput-boolean v0, p0, Lcom/forum/im/utils/GifOpenHelper;->transparency:Z .line 613 iput v0, p0, Lcom/forum/im/utils/GifOpenHelper;->delay:I const/4 v0, 0x0 .line 614 iput-object v0, p0, Lcom/forum/im/utils/GifOpenHelper;->lct:[I return-void .end method .method public setFrameindex(I)V .registers 2 .line 64 iput p1, p0, Lcom/forum/im/utils/GifOpenHelper;->frameindex:I .line 65 iget-object p1, p0, Lcom/forum/im/utils/GifOpenHelper;->frames:Ljava/util/Vector; invoke-virtual {p1}, Ljava/util/Vector;->size()I return-void .end method .method protected setPixels()V .registers 15 .line 130 iget v0, p0, Lcom/forum/im/utils/GifOpenHelper;->width:I iget v1, p0, Lcom/forum/im/utils/GifOpenHelper;->height:I mul-int/2addr v0, v1 new-array v0, v0, [I .line 132 iget v1, p0, Lcom/forum/im/utils/GifOpenHelper;->lastDispose:I const/4 v9, 0x3 const/4 v10, 0x0 const/4 v11, 0x2 if-lez v1, :cond_58 if-ne v1, v9, :cond_21 .line 135 iget v1, p0, Lcom/forum/im/utils/GifOpenHelper;->frameCount:I add-int/lit8 v2, v1, -0x2 if-lez v2, :cond_1e sub-int/2addr v1, v9 .line 137 invoke-virtual {p0, v1}, Lcom/forum/im/utils/GifOpenHelper;->getFrame(I)Landroid/graphics/Bitmap; move-result-object v1 iput-object v1, p0, Lcom/forum/im/utils/GifOpenHelper;->lastImage:Landroid/graphics/Bitmap; goto :goto_21 :cond_1e const/4 v1, 0x0 .line 139 iput-object v1, p0, Lcom/forum/im/utils/GifOpenHelper;->lastImage:Landroid/graphics/Bitmap; .line 142 :cond_21 :goto_21 iget-object v1, p0, Lcom/forum/im/utils/GifOpenHelper;->lastImage:Landroid/graphics/Bitmap; if-eqz v1, :cond_58 .line 143 iget v7, p0, Lcom/forum/im/utils/GifOpenHelper;->width:I const/4 v6, 0x0 iget v8, p0, Lcom/forum/im/utils/GifOpenHelper;->height:I const/4 v3, 0x0 const/4 v5, 0x0 move-object v2, v0 move v4, v7 invoke-virtual/range {v1 .. v8}, Landroid/graphics/Bitmap;->getPixels([IIIIIII)V .line 145 iget v1, p0, Lcom/forum/im/utils/GifOpenHelper;->lastDispose:I if-ne v1, v11, :cond_58 .line 148 iget-boolean v1, p0, Lcom/forum/im/utils/GifOpenHelper;->transparency:Z if-nez v1, :cond_3c .line 149 iget v1, p0, Lcom/forum/im/utils/GifOpenHelper;->lastBgColor:I goto :goto_3d :cond_3c move v1, v10 :goto_3d move v2, v10 .line 151 :goto_3e iget v3, p0, Lcom/forum/im/utils/GifOpenHelper;->lrh:I if-ge v2, v3, :cond_58 .line 152 iget v3, p0, Lcom/forum/im/utils/GifOpenHelper;->lry:I add-int/2addr v3, v2 iget v4, p0, Lcom/forum/im/utils/GifOpenHelper;->width:I mul-int/2addr v3, v4 iget v4, p0, Lcom/forum/im/utils/GifOpenHelper;->lrx:I add-int/2addr v3, v4 .line 153 iget v4, p0, Lcom/forum/im/utils/GifOpenHelper;->lrw:I add-int/2addr v4, v3 :goto_4e if-ge v3, v4, :cond_55 .line 155 aput v1, v0, v3 add-int/lit8 v3, v3, 0x1 goto :goto_4e :cond_55 add-int/lit8 v2, v2, 0x1 goto :goto_3e :cond_58 const/4 v1, 0x1 const/16 v2, 0x8 move v4, v1 move v3, v10 .line 166 :goto_5d iget v5, p0, Lcom/forum/im/utils/GifOpenHelper;->ih:I if-ge v10, v5, :cond_af .line 168 iget-boolean v6, p0, Lcom/forum/im/utils/GifOpenHelper;->interlace:Z if-eqz v6, :cond_7b if-lt v3, v5, :cond_78 add-int/lit8 v4, v4, 0x1 const/4 v5, 0x4 if-eq v4, v11, :cond_77 if-eq v4, v9, :cond_74 if-eq v4, v5, :cond_71 goto :goto_78 :cond_71 move v3, v1 move v2, v11 goto :goto_78 :cond_74 move v2, v5 move v3, v11 goto :goto_78 :cond_77 move v3, v5 :cond_78 :goto_78 add-int v5, v3, v2 goto :goto_7d :cond_7b move v5, v3 move v3, v10 .line 187 :goto_7d iget v6, p0, Lcom/forum/im/utils/GifOpenHelper;->iy:I add-int/2addr v3, v6 .line 188 iget v6, p0, Lcom/forum/im/utils/GifOpenHelper;->height:I if-ge v3, v6, :cond_ab .line 189 iget v6, p0, Lcom/forum/im/utils/GifOpenHelper;->width:I mul-int/2addr v3, v6 .line 190 iget v7, p0, Lcom/forum/im/utils/GifOpenHelper;->ix:I add-int/2addr v7, v3 .line 191 iget v8, p0, Lcom/forum/im/utils/GifOpenHelper;->iw:I add-int v12, v7, v8 add-int v13, v3, v6 if-ge v13, v12, :cond_94 add-int v12, v3, v6 :cond_94 mul-int/2addr v8, v10 :goto_95 if-ge v7, v12, :cond_ab .line 198 iget-object v3, p0, Lcom/forum/im/utils/GifOpenHelper;->pixels:[B add-int/lit8 v6, v8, 0x1 aget-byte v3, v3, v8 and-int/lit16 v3, v3, 0xff .line 199 iget-object v8, p0, Lcom/forum/im/utils/GifOpenHelper;->act:[I aget v3, v8, v3 if-eqz v3, :cond_a7 .line 201 aput v3, v0, v7 :cond_a7 add-int/lit8 v7, v7, 0x1 move v8, v6 goto :goto_95 :cond_ab add-int/lit8 v10, v10, 0x1 move v3, v5 goto :goto_5d .line 207 :cond_af iget v1, p0, Lcom/forum/im/utils/GifOpenHelper;->width:I iget v2, p0, Lcom/forum/im/utils/GifOpenHelper;->height:I sget-object v3, Landroid/graphics/Bitmap$Config;->ARGB_4444:Landroid/graphics/Bitmap$Config; invoke-static {v0, v1, v2, v3}, Landroid/graphics/Bitmap;->createBitmap([IIILandroid/graphics/Bitmap$Config;)Landroid/graphics/Bitmap; move-result-object v0 iput-object v0, p0, Lcom/forum/im/utils/GifOpenHelper;->image:Landroid/graphics/Bitmap; return-void .end method .method protected skip()V .registers 2 .line 622 :cond_0 invoke-virtual {p0}, Lcom/forum/im/utils/GifOpenHelper;->readBlock()I .line 623 iget v0, p0, Lcom/forum/im/utils/GifOpenHelper;->blockSize:I if-lez v0, :cond_d invoke-virtual {p0}, Lcom/forum/im/utils/GifOpenHelper;->err()Z move-result v0 if-eqz v0, :cond_0 :cond_d return-void .end method