Move Companion object of APNGFactory to Utils
This commit is contained in:
parent
524df30d92
commit
da8753e2c5
Binary file not shown.
|
@ -7,7 +7,7 @@ android {
|
|||
minSdkVersion 21
|
||||
targetSdkVersion 26
|
||||
versionCode 1
|
||||
versionName "1.0.1"
|
||||
versionName "1.0.2"
|
||||
|
||||
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
|
||||
|
||||
|
|
|
@ -3,7 +3,8 @@ package oupson.apng
|
|||
import android.graphics.Bitmap
|
||||
import android.graphics.BitmapFactory
|
||||
import android.graphics.Canvas
|
||||
import oupson.apng.ApngFactory.Companion.pngSignature
|
||||
import oupson.apng.Utils.Companion.isApng
|
||||
import oupson.apng.Utils.Companion.pngSignature
|
||||
import oupson.apng.Utils.Companion.to4Bytes
|
||||
import oupson.apng.chunks.IHDR
|
||||
import oupson.apng.chunks.fcTL
|
||||
|
@ -25,7 +26,7 @@ class APNGDisassembler(val byteArray: ByteArray) {
|
|||
var dispose_op : Utils.Companion.dispose_op= Utils.Companion.dispose_op.APNG_DISPOSE_OP_NONE
|
||||
|
||||
init {
|
||||
if (ApngFactory.isApng(byteArray)) {
|
||||
if (isApng(byteArray)) {
|
||||
val ihdr = IHDR()
|
||||
ihdr.parseIHDR(byteArray)
|
||||
maxWidth = ihdr.pngWidth
|
||||
|
|
|
@ -5,6 +5,7 @@ import android.graphics.BitmapFactory
|
|||
import oupson.apng.Utils.Companion.convertImage
|
||||
import oupson.apng.Utils.Companion.getBlend_op
|
||||
import oupson.apng.Utils.Companion.getDispose_op
|
||||
import oupson.apng.Utils.Companion.pngSignature
|
||||
import oupson.apng.Utils.Companion.to2Bytes
|
||||
import oupson.apng.Utils.Companion.to4Bytes
|
||||
import oupson.apng.Utils.Companion.toByteArray
|
||||
|
@ -130,7 +131,7 @@ class Apng {
|
|||
var seq = 0
|
||||
val res = ArrayList<Byte>()
|
||||
// Add PNG signature
|
||||
res.addAll(ApngFactory.pngSignature.toList())
|
||||
res.addAll(pngSignature.toList())
|
||||
|
||||
// Add Image Header
|
||||
res.addAll(generateIhdr().toList())
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package oupson.apng
|
||||
|
||||
import oupson.apng.Utils.Companion.pngSignature
|
||||
import oupson.apng.exceptions.NoFrameException
|
||||
import java.util.zip.CRC32
|
||||
|
||||
|
@ -241,27 +242,6 @@ class ApngFactory {
|
|||
return result
|
||||
}
|
||||
|
||||
companion object {
|
||||
// Return true if png
|
||||
fun isPng(byteArray: ByteArray): Boolean {
|
||||
return byteArray.copyOfRange(0, 8).contentToString() == pngSignature.contentToString()
|
||||
}
|
||||
|
||||
fun isApng(byteArray: ByteArray): Boolean {
|
||||
for (i in 0 until byteArray.size) {
|
||||
// if byteArray contain acTL
|
||||
if (byteArray[i] == 0x66.toByte() && byteArray[i + 1] == 0x63.toByte() && byteArray[i + 2] == 0x54.toByte() && byteArray[i + 3] == 0x4c.toByte()) {
|
||||
// It's an apng
|
||||
return true
|
||||
}
|
||||
}
|
||||
// Else it's not an apng
|
||||
return false
|
||||
}
|
||||
|
||||
// Signature for png
|
||||
val pngSignature: ByteArray = byteArrayOf(0x89.toByte(), 0x50.toByte(), 0x4E.toByte(), 0x47.toByte(), 0x0D.toByte(), 0x0A.toByte(), 0x1A.toByte(), 0x0A.toByte())
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a frame to the Animated PNG
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
package oupson.apng
|
||||
|
||||
import oupson.apng.ApngFactory.Companion.isPng
|
||||
import oupson.apng.Utils.Companion.isPng
|
||||
import oupson.apng.chunks.IDAT
|
||||
import oupson.apng.chunks.IHDR
|
||||
import oupson.apng.exceptions.NotPngException
|
||||
|
|
|
@ -6,6 +6,21 @@ import java.io.ByteArrayOutputStream
|
|||
|
||||
class Utils {
|
||||
companion object {
|
||||
|
||||
// Return true if png
|
||||
fun isPng(byteArray: ByteArray): Boolean {
|
||||
return byteArray.copyOfRange(0, 8).contentToString() == pngSignature.contentToString()
|
||||
}
|
||||
|
||||
fun isApng(byteArray: ByteArray): Boolean {
|
||||
// if byteArray contain acTL
|
||||
return byteArray.toList().containsAll(byteArrayOf(0x66, 0x63, 0x54, 0x4c).toList())
|
||||
}
|
||||
|
||||
// Signature for png
|
||||
val pngSignature: ByteArray = byteArrayOf(0x89.toByte(), 0x50.toByte(), 0x4E.toByte(), 0x47.toByte(), 0x0D.toByte(), 0x0A.toByte(), 0x1A.toByte(), 0x0A.toByte())
|
||||
|
||||
|
||||
enum class dispose_op {
|
||||
APNG_DISPOSE_OP_NONE,
|
||||
APNG_DISPOSE_OP_BACKGROUND,
|
||||
|
|
|
@ -15,7 +15,9 @@ import android.view.View
|
|||
import kotlinx.android.synthetic.main.activity_main2.*
|
||||
import org.jetbrains.anko.sdk27.coroutines.onClick
|
||||
import oupson.apng.ApngAnimator
|
||||
import oupson.apng.Utils.Companion.isApng
|
||||
import oupson.apng.exceptions.NotApngException
|
||||
import java.io.File
|
||||
|
||||
|
||||
class Main2Activity : AppCompatActivity() {
|
||||
|
@ -48,7 +50,12 @@ class Main2Activity : AppCompatActivity() {
|
|||
val uri = intent.data
|
||||
if (uri.toString().contains("file:///")) {
|
||||
try {
|
||||
animator.load(uri.path)
|
||||
if (isApng(File(uri.path).readBytes())) {
|
||||
animator.load(uri.path)
|
||||
} else {
|
||||
imageView3.setImageBitmap(BitmapFactory.decodeFile(uri.path))
|
||||
Snackbar.make(constraint, "Not an APNG, and verified !", Snackbar.LENGTH_LONG).show()
|
||||
}
|
||||
} catch (e : NotApngException) {
|
||||
imageView3.setImageBitmap(BitmapFactory.decodeFile(uri.path))
|
||||
Snackbar.make(constraint, "Not an APNG", Snackbar.LENGTH_LONG).show()
|
||||
|
|
Loading…
Reference in New Issue