Skip to content

Commit accd743

Browse files
author
roman_tcaregorodtcev
committed
Merge branch 'feature/text' of https://github.com/Omega-R/OmegaEntities into feature/text_core
# Conflicts: # examples/android/build.gradle
2 parents 2dec54b + 2c8a86b commit accd743

File tree

9 files changed

+65
-60
lines changed

9 files changed

+65
-60
lines changed

core/src/androidMain/kotlin/com/omega_r/libs/entities/extensions/OmegaImegaExtensions.kt

Lines changed: 23 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -29,26 +29,21 @@ fun OmegaImage.Format.toCompressFormat(): Bitmap.CompressFormat {
2929
fun ImageView.setImage(
3030
image: OmegaImage?,
3131
placeholderResId: Int = OmegaImage.NO_PLACEHOLDER_RES,
32-
holder: OmegaImageProcessorsHolder = OmegaImageProcessorsHolder.Default,
32+
holder: OmegaImageProcessorsHolder = OmegaImageProcessorsHolder.current,
3333
extractor: OmegaResourceExtractor = OmegaResourceExtractor.Default
3434
) {
35-
val imageView = this
36-
if (image != null) {
37-
val placeholderImage = OmegaImage.from(placeholderResId, image)
38-
holder.getProcessor(placeholderImage)
39-
.applyImage(placeholderImage, imageView, holder, extractor)
35+
val finalImage = image.formatImage(placeholderResId)
36+
if (finalImage == null) {
37+
setImageDrawable(null)
4038
} else {
41-
if (placeholderResId == OmegaImage.NO_PLACEHOLDER_RES) {
42-
setImageDrawable(null)
43-
} else {
44-
setImageResource(placeholderResId)
45-
}
39+
holder.getProcessor(finalImage)
40+
.applyImage(finalImage, this, holder, extractor)
4641
}
4742
}
4843

4944
@JvmOverloads
5045
fun OmegaImage.preload(
51-
holder: OmegaImageProcessorsHolder = OmegaImageProcessorsHolder.Default,
46+
holder: OmegaImageProcessorsHolder = OmegaImageProcessorsHolder.current,
5247
extractor: OmegaResourceExtractor = OmegaResourceExtractor.Default
5348
) {
5449
holder.getProcessor(this).preload(this, extractor)
@@ -58,22 +53,28 @@ fun OmegaImage.preload(
5853
fun View.setBackground(
5954
image: OmegaImage?,
6055
placeholderResId: Int = OmegaImage.NO_PLACEHOLDER_RES,
61-
holder: OmegaImageProcessorsHolder = OmegaImageProcessorsHolder.Default,
56+
holder: OmegaImageProcessorsHolder = OmegaImageProcessorsHolder.current,
6257
extractor: OmegaResourceExtractor = OmegaResourceExtractor.Default
6358
) {
64-
if (image != null) {
65-
val placeholderImage = OmegaImage.from(placeholderResId, image)
66-
holder.getProcessor(placeholderImage)
67-
.applyBackground(placeholderImage, this, holder, extractor)
59+
val finalImage = image.formatImage(placeholderResId)
60+
if (finalImage == null) {
61+
background = null
6862
} else {
69-
if (placeholderResId == OmegaImage.NO_PLACEHOLDER_RES) {
70-
background = null
71-
} else {
72-
setBackgroundResource(placeholderResId)
73-
}
63+
holder.getProcessor(finalImage)
64+
.applyBackground(finalImage, this, holder, extractor)
7465
}
7566
}
7667

68+
private fun OmegaImage?.formatImage(placeholderResId: Int): OmegaImage? {
69+
val image = this
70+
return if (image == null) {
71+
if (placeholderResId == OmegaImage.NO_PLACEHOLDER_RES) null else OmegaImage.from(placeholderResId)
72+
} else {
73+
if (placeholderResId == OmegaImage.NO_PLACEHOLDER_RES) image else OmegaImage.from(placeholderResId, image)
74+
}
75+
}
76+
77+
7778
var TextView.imageStart: OmegaImage?
7879
get() = getImage(0)
7980
set(value) = setImage(0, value)

core/src/androidMain/kotlin/com/omega_r/libs/entities/images/OmegaResourceImage.kt

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,6 @@ import com.omega_r.libs.entities.extensions.toBitmapAndRecycle
99
import com.omega_r.libs.entities.extensions.toInputStream
1010
import com.omega_r.libs.entities.resources.OmegaResource
1111
import com.omega_r.libs.entities.resources.OmegaResourceExtractor
12-
import kotlinx.coroutines.Dispatchers
13-
import kotlinx.coroutines.withContext
1412
import java.io.InputStream
1513

1614
actual data class OmegaResourceImage(actual val resource: OmegaResource.Image) : OmegaImage {
@@ -21,7 +19,7 @@ actual data class OmegaResourceImage(actual val resource: OmegaResource.Image) :
2119
}
2220
}
2321

24-
constructor(@DrawableRes drawableRes: Int): this(OmegaResource.Image(drawableRes))
22+
constructor(@DrawableRes drawableRes: Int) : this(OmegaResource.Image(drawableRes))
2523

2624
class Processor : OmegaBaseImageProcessor<OmegaResourceImage>() {
2725

@@ -60,7 +58,8 @@ actual data class OmegaResourceImage(actual val resource: OmegaResource.Image) :
6058
holder: OmegaImageProcessorsHolder,
6159
extractor: OmegaResourceExtractor
6260
) {
63-
val drawable = extractor.getDrawable(entity.resource)
61+
val id = entity.resource.id
62+
val drawable = if (id == OmegaImage.NO_PLACEHOLDER_RES) null else extractor.getDrawable(entity.resource)
6463
OmegaImageProcessor.applyCompoundDrawable(textView, drawable, index)
6564
}
6665

@@ -69,8 +68,12 @@ actual data class OmegaResourceImage(actual val resource: OmegaResource.Image) :
6968
extractor: OmegaResourceExtractor,
7069
format: OmegaImage.Format,
7170
quality: Int
72-
): InputStream? = extractor.getDrawable(entity.resource)?.toBitmapAndRecycle {
73-
toInputStream(format, quality)
71+
): InputStream? {
72+
return if (entity.resource.id == OmegaImage.NO_PLACEHOLDER_RES) {
73+
null
74+
} else extractor.getDrawable(entity.resource)?.toBitmapAndRecycle {
75+
toInputStream(format, quality)
76+
}
7477
}
7578

7679
}

core/src/androidMain/kotlin/com/omega_r/libs/entities/resources/OmegaResourceExtractor.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ import android.content.ContentResolver
66
import android.content.Context
77
import android.graphics.drawable.Drawable
88
import android.os.Build
9+
import com.omega_r.libs.entities.extensions.NO_PLACEHOLDER_RES
10+
import com.omega_r.libs.entities.images.OmegaImage
911
import java.lang.ref.WeakReference
1012
import java.util.*
1113

@@ -54,6 +56,7 @@ actual open class OmegaResourceExtractor {
5456
}
5557

5658
open fun getDrawable(resource: OmegaResource.Image): Drawable? {
59+
if (resource.id == OmegaImage.NO_PLACEHOLDER_RES) return null
5760
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.L) {
5861
context?.getDrawable(resource.id)
5962
} else {

core/src/androidMain/kotlin/com/omega_r/libs/entities/tools/ImageSizeExtractor.kt

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,10 @@ package com.omega_r.libs.entities.tools
33
import android.view.View
44
import android.view.View.OnAttachStateChangeListener
55
import android.view.ViewTreeObserver.OnPreDrawListener
6+
import com.omega_r.libs.entities.images.OmegaImage
7+
import com.omega_r.libs.entities.images.OmegaImageProcessor
8+
import com.omega_r.libs.entities.images.OmegaImageProcessorsHolder
9+
import kotlinx.coroutines.runBlocking
610
import java.lang.ref.WeakReference
711
import java.util.*
812

@@ -45,9 +49,7 @@ class ImageSizeExtractor<V : View>(target: V, callback: suspend (view: V) -> Uni
4549
vto.removeOnPreDrawListener(this)
4650
this.target.clear()
4751

48-
// ImageProcessors.current.launch {
49-
// callback?.invoke(target)
50-
// }
52+
runBlocking { callback?.invoke(target) }
5153

5254
return true
5355
}

examples/android/build.gradle

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,9 +54,10 @@ android {
5454
dependencies {
5555
implementation fileTree(dir: 'core', include: ['*.jar'])
5656
implementation project(':core')
57+
implementation project(':glide')
5758

58-
api "io.ktor:ktor-client-core:1.3.1"
59-
api "io.ktor:ktor-client-android:1.3.1"
59+
implementation "io.ktor:ktor-client-core:$ktor_version"
60+
implementation "io.ktor:ktor-client-android:$ktor_version"
6061

6162
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
6263
implementation 'androidx.appcompat:appcompat:1.0.2'
Lines changed: 6 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,15 @@
11
package com.omega_r.libs.entities.examples
22

33
import android.content.Intent
4-
import android.graphics.BitmapFactory
5-
import android.graphics.drawable.BitmapDrawable
64
import android.os.Bundle
75
import androidx.appcompat.app.AppCompatActivity
8-
import com.omega_r.libs.entities.files.OmegaFile
6+
import com.omega_r.entities.image.glide.OmegaGlideImageProcessorsHolder
7+
import com.omega_r.libs.entities.extensions.setBackground
98
import com.omega_r.libs.entities.files.OmegaFileProcessorsHolder
109
import com.omega_r.libs.entities.files.url.OmegaUrlFile
1110
import com.omega_r.libs.entities.files.url.OmegaUrlFileProcessor
12-
import com.omega_r.libs.entities.files.url.from
13-
import io.ktor.util.asStream
11+
import com.omega_r.libs.entities.images.OmegaImage
1412
import kotlinx.android.synthetic.main.activity_main.*
15-
import kotlinx.coroutines.Dispatchers
16-
import kotlinx.coroutines.GlobalScope
17-
import kotlinx.coroutines.launch
18-
import kotlinx.coroutines.withContext
1913

2014
class MainActivity : AppCompatActivity() {
2115

@@ -33,21 +27,9 @@ class MainActivity : AppCompatActivity() {
3327

3428
OmegaFileProcessorsHolder.Default.addProcessor(OmegaUrlFile::class, OmegaUrlFileProcessor())
3529

36-
val file: OmegaFile = OmegaFile.from("https://dejagerart.com/wp-content/uploads/2018/09/Test-Logo-Circle-black-transparent.png")
37-
38-
GlobalScope.launch {
39-
val isExist = file.isExist()
40-
if(file.isExist() == true) {
41-
val input = file.getInput()
42-
input?.let {
43-
val bitmap = BitmapFactory.decodeStream(it.asStream())
44-
val drawable = BitmapDrawable(bitmap)
45-
withContext(Dispatchers.Main) {
46-
layout_container.background = drawable
47-
}
48-
}
49-
}
50-
}
30+
val image = OmegaImage.from("https://dejagerart.com/wp-content/uploads/2018/09/Test-Logo-Circle-black-transparent.png")
31+
OmegaGlideImageProcessorsHolder.setAsCurrentImagesProcessor()
32+
layout_container.setBackground(image)
5133
}
5234

5335
}

examples/android/src/main/res/layout/activity_main.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,11 @@
77
android:id="@+id/layout_container"
88
tools:context=".MainActivity">
99

10+
<ImageView
11+
android:id="@+id/imageview"
12+
android:layout_width="match_parent"
13+
android:layout_height="match_parent" />
14+
1015
<ScrollView
1116
android:layout_width="0dp"
1217
android:layout_height="0dp"

glide/src/main/java/com/omega_r/entities/image/glide/OmegaGlideImageProcessorsHolder.kt

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import com.bumptech.glide.request.target.CustomViewTarget
1111
import com.bumptech.glide.request.transition.Transition
1212
import com.omega_r.libs.entities.decoders.BitmapDecoders
1313
import com.omega_r.libs.entities.decoders.SimpleBitmapDecoders
14+
import com.omega_r.libs.entities.extensions.NO_PLACEHOLDER_RES
1415
import com.omega_r.libs.entities.extensions.toInputStream
1516
import com.omega_r.libs.entities.images.*
1617
import com.omega_r.libs.entities.resources.OmegaResourceExtractor
@@ -69,8 +70,14 @@ class OmegaGlideImageProcessorsHolder(
6970
when (val placeholderImage = image.placeholderImage) {
7071
is OmegaUrlImage -> thumbnail(load(placeholderImage.url))
7172
.load(createRequestBuilder(image.finalImage, extractor))
72-
is OmegaResourceImage -> placeholder(placeholderImage.resource.id)
73-
.load(createRequestBuilder(image.finalImage, extractor))
73+
is OmegaResourceImage -> {
74+
if (placeholderImage.resource.id == OmegaImage.NO_PLACEHOLDER_RES) {
75+
createRequestBuilder(image.finalImage, extractor)
76+
} else {
77+
placeholder(placeholderImage.resource.id)
78+
.load(createRequestBuilder(image.finalImage, extractor))
79+
}
80+
}
7481
is OmegaDrawableImage -> placeholder(placeholderImage.drawable)
7582
.load(createRequestBuilder(image.finalImage, extractor))
7683
is OmegaBitmapImage, is OmegaUriImage, is OmegaJavaFileImage, is OmegaByteArrayImage -> {

picasso/src/main/java/com/omega_r/libs/entities/image/picasso/OmegaPicassoProcessorsHolder.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import android.graphics.drawable.Drawable
66
import android.view.View
77
import android.widget.ImageView
88
import android.widget.TextView
9+
import com.omega_r.libs.entities.extensions.NO_PLACEHOLDER_RES
910
import com.omega_r.libs.entities.extensions.toInputStream
1011
import com.omega_r.libs.entities.images.*
1112
import com.omega_r.libs.entities.resources.OmegaResourceExtractor
@@ -61,7 +62,7 @@ class OmegaPicassoProcessorsHolder(
6162
is OmegaPlaceholderImage -> {
6263
val request = createRequestCreator(image.finalImage)
6364
when (val placeholderImage = image.placeholderImage) {
64-
is OmegaResourceImage -> request?.placeholder(placeholderImage.resource.id)
65+
is OmegaResourceImage -> if(placeholderImage.resource.id == OmegaImage.NO_PLACEHOLDER_RES) request else request?.placeholder(placeholderImage.resource.id)
6566
is OmegaDrawableImage -> request?.placeholder(placeholderImage.drawable)
6667
else -> null
6768
}

0 commit comments

Comments
 (0)