ImageSizeResolver change (accept async-drawable)
This commit is contained in:
parent
4fec46fb4d
commit
213f5cf281
@ -10,4 +10,6 @@
|
||||
* removed MarkwonPlugin#configureHtmlRenderer -> now part of HtmlPlugin
|
||||
* TagHandler now has `supportedTags()` method
|
||||
* html is moved completely to html-plugin
|
||||
* OnTextAddedListener
|
||||
* OnTextAddedListener
|
||||
* ImageSizeResolver signature change (accept AsyncDrawable)
|
||||
* JLatexMathPlugin builder has vertical & horizontal padding
|
@ -53,7 +53,7 @@ public class AsyncDrawable extends Drawable {
|
||||
}
|
||||
|
||||
/**
|
||||
* @since 3.1.0-SNAPSHOT
|
||||
* @since 4.0.0-SNAPSHOT
|
||||
*/
|
||||
@Nullable
|
||||
public ImageSize getImageSize() {
|
||||
@ -61,7 +61,7 @@ public class AsyncDrawable extends Drawable {
|
||||
}
|
||||
|
||||
/**
|
||||
* @since 3.1.0-SNAPSHOT
|
||||
* @since 4.0.0-SNAPSHOT
|
||||
*/
|
||||
@NonNull
|
||||
public ImageSizeResolver getImageSizeResolver() {
|
||||
@ -69,7 +69,7 @@ public class AsyncDrawable extends Drawable {
|
||||
}
|
||||
|
||||
/**
|
||||
* @since 3.1.0-SNAPSHOT
|
||||
* @since 4.0.0-SNAPSHOT
|
||||
*/
|
||||
public boolean hasKnownDimentions() {
|
||||
return canvasWidth > 0;
|
||||
@ -77,7 +77,7 @@ public class AsyncDrawable extends Drawable {
|
||||
|
||||
/**
|
||||
* @see #hasKnownDimentions()
|
||||
* @since 3.1.0-SNAPSHOT
|
||||
* @since 4.0.0-SNAPSHOT
|
||||
*/
|
||||
public int getLastKnownCanvasWidth() {
|
||||
return canvasWidth;
|
||||
@ -85,7 +85,7 @@ public class AsyncDrawable extends Drawable {
|
||||
|
||||
/**
|
||||
* @see #hasKnownDimentions()
|
||||
* @since 3.1.0-SNAPSHOT
|
||||
* @since 4.0.0-SNAPSHOT
|
||||
*/
|
||||
public float getLastKnowTextSize() {
|
||||
return textSize;
|
||||
@ -285,13 +285,10 @@ public class AsyncDrawable extends Drawable {
|
||||
*/
|
||||
@NonNull
|
||||
private Rect resolveBounds() {
|
||||
|
||||
// @since 2.0.0 previously we were checking if image is greater than canvas width here
|
||||
// but as imageSizeResolver won't be null anymore, we should transfer this logic
|
||||
// there
|
||||
return imageSizeResolver != null
|
||||
? imageSizeResolver.resolveImageSize(imageSize, result.getBounds(), canvasWidth, textSize)
|
||||
: result.getBounds();
|
||||
return imageSizeResolver.resolveImageSize(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -3,7 +3,6 @@ package io.noties.markwon.image;
|
||||
import android.graphics.Rect;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
/**
|
||||
* @since 1.0.1
|
||||
@ -12,19 +11,8 @@ import androidx.annotation.Nullable;
|
||||
public abstract class ImageSizeResolver {
|
||||
|
||||
/**
|
||||
* We do not expose canvas height deliberately. As we cannot rely on this value very much
|
||||
*
|
||||
* @param imageSize {@link ImageSize} parsed from HTML
|
||||
* @param imageBounds original image bounds
|
||||
* @param canvasWidth width of the canvas
|
||||
* @param textSize current font size
|
||||
* @return resolved image bounds
|
||||
* @since 4.0.0-SNAPSHOT
|
||||
*/
|
||||
@NonNull
|
||||
public abstract Rect resolveImageSize(
|
||||
@Nullable ImageSize imageSize,
|
||||
@NonNull Rect imageBounds,
|
||||
int canvasWidth,
|
||||
float textSize
|
||||
);
|
||||
public abstract Rect resolveImageSize(@NonNull AsyncDrawable drawable);
|
||||
}
|
||||
|
@ -17,7 +17,16 @@ public class ImageSizeResolverDef extends ImageSizeResolver {
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public Rect resolveImageSize(
|
||||
public Rect resolveImageSize(@NonNull AsyncDrawable drawable) {
|
||||
return resolveImageSize(
|
||||
drawable.getImageSize(),
|
||||
drawable.getResult().getBounds(),
|
||||
drawable.getLastKnownCanvasWidth(),
|
||||
drawable.getLastKnowTextSize());
|
||||
}
|
||||
|
||||
@NonNull
|
||||
protected Rect resolveImageSize(
|
||||
@Nullable ImageSize imageSize,
|
||||
@NonNull Rect imageBounds,
|
||||
int canvasWidth,
|
||||
|
@ -27,7 +27,6 @@ import io.noties.markwon.image.AsyncDrawable;
|
||||
import io.noties.markwon.image.AsyncDrawableLoader;
|
||||
import io.noties.markwon.image.AsyncDrawableScheduler;
|
||||
import io.noties.markwon.image.AsyncDrawableSpan;
|
||||
import io.noties.markwon.image.ImageSize;
|
||||
import io.noties.markwon.image.ImageSizeResolver;
|
||||
import ru.noties.jlatexmath.JLatexMathDrawable;
|
||||
|
||||
@ -82,7 +81,11 @@ public class JLatexMathPlugin extends AbstractMarkwonPlugin {
|
||||
|
||||
private final boolean fitCanvas;
|
||||
|
||||
private final int padding;
|
||||
// @since 4.0.0-SNAPSHOT
|
||||
private final int paddingHorizontal;
|
||||
// @since 4.0.0-SNAPSHOT
|
||||
|
||||
private final int paddingVertical;
|
||||
|
||||
// @since 4.0.0-SNAPSHOT
|
||||
private final ExecutorService executorService;
|
||||
@ -92,7 +95,8 @@ public class JLatexMathPlugin extends AbstractMarkwonPlugin {
|
||||
this.backgroundProvider = builder.backgroundProvider;
|
||||
this.align = builder.align;
|
||||
this.fitCanvas = builder.fitCanvas;
|
||||
this.padding = builder.padding;
|
||||
this.paddingHorizontal = builder.paddingHorizontal;
|
||||
this.paddingVertical = builder.paddingVertical;
|
||||
|
||||
// @since 4.0.0-SNAPSHOT
|
||||
ExecutorService executorService = builder.executorService;
|
||||
@ -168,7 +172,11 @@ public class JLatexMathPlugin extends AbstractMarkwonPlugin {
|
||||
|
||||
private boolean fitCanvas = true;
|
||||
|
||||
private int padding;
|
||||
// @since 4.0.0-SNAPSHOT
|
||||
private int paddingHorizontal;
|
||||
|
||||
// @since 4.0.0-SNAPSHOT
|
||||
private int paddingVertical;
|
||||
|
||||
// @since 4.0.0-SNAPSHOT
|
||||
private ExecutorService executorService;
|
||||
@ -197,7 +205,18 @@ public class JLatexMathPlugin extends AbstractMarkwonPlugin {
|
||||
|
||||
@NonNull
|
||||
public Builder padding(@Px int padding) {
|
||||
this.padding = padding;
|
||||
this.paddingHorizontal = padding;
|
||||
this.paddingVertical = padding;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @since 4.0.0-SNAPSHOT
|
||||
*/
|
||||
@NonNull
|
||||
public Builder builder(@Px int paddingHorizontal, @Px int paddingVertical) {
|
||||
this.paddingHorizontal = paddingHorizontal;
|
||||
this.paddingVertical = paddingVertical;
|
||||
return this;
|
||||
}
|
||||
|
||||
@ -251,7 +270,11 @@ public class JLatexMathPlugin extends AbstractMarkwonPlugin {
|
||||
.background(config.backgroundProvider.provide())
|
||||
.align(config.align)
|
||||
.fitCanvas(config.fitCanvas)
|
||||
.padding(config.padding)
|
||||
.padding(
|
||||
config.paddingHorizontal,
|
||||
config.paddingVertical,
|
||||
config.paddingHorizontal,
|
||||
config.paddingVertical)
|
||||
.build();
|
||||
|
||||
// we must post to handler, but also have a way to identify the drawable
|
||||
@ -305,11 +328,10 @@ public class JLatexMathPlugin extends AbstractMarkwonPlugin {
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public Rect resolveImageSize(
|
||||
@Nullable ImageSize imageSize,
|
||||
@NonNull Rect imageBounds,
|
||||
int canvasWidth,
|
||||
float textSize) {
|
||||
public Rect resolveImageSize(@NonNull AsyncDrawable drawable) {
|
||||
|
||||
final Rect imageBounds = drawable.getResult().getBounds();
|
||||
final int canvasWidth = drawable.getLastKnownCanvasWidth();
|
||||
|
||||
if (fitCanvas
|
||||
&& imageBounds.width() < canvasWidth) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user