ImageSizeResolver change (accept async-drawable)
This commit is contained in:
		
							parent
							
								
									4fec46fb4d
								
							
						
					
					
						commit
						213f5cf281
					
				| @ -11,3 +11,5 @@ | ||||
| * TagHandler now has `supportedTags()` method | ||||
| * html is moved completely to html-plugin | ||||
| * 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
	 Dimitry Ivanov
						Dimitry Ivanov