Fix wrong fitCanvas config for JLatexMathPlugin
This commit is contained in:
		
							parent
							
								
									6ed641fa47
								
							
						
					
					
						commit
						d630039196
					
				| @ -1,5 +1,6 @@ | ||||
| package io.noties.markwon.ext.latex; | ||||
| 
 | ||||
| import android.graphics.Rect; | ||||
| import android.graphics.drawable.Drawable; | ||||
| import android.os.Handler; | ||||
| import android.os.Looper; | ||||
| @ -27,6 +28,7 @@ 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; | ||||
| 
 | ||||
| /** | ||||
| @ -102,10 +104,12 @@ public class JLatexMathPlugin extends AbstractMarkwonPlugin { | ||||
|     } | ||||
| 
 | ||||
|     private final JLatextAsyncDrawableLoader jLatextAsyncDrawableLoader; | ||||
|     private final JLatexImageSizeResolver jLatexImageSizeResolver; | ||||
| 
 | ||||
|     @SuppressWarnings("WeakerAccess") | ||||
|     JLatexMathPlugin(@NonNull Config config) { | ||||
|         this.jLatextAsyncDrawableLoader = new JLatextAsyncDrawableLoader(config); | ||||
|         this.jLatexImageSizeResolver = new JLatexImageSizeResolver(config.fitCanvas); | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
| @ -132,10 +136,8 @@ public class JLatexMathPlugin extends AbstractMarkwonPlugin { | ||||
|                         new AsyncDrawable( | ||||
|                                 latex, | ||||
|                                 jLatextAsyncDrawableLoader, | ||||
|                                 configuration.imageSizeResolver(), | ||||
|                                 new ImageSize( | ||||
|                                         new ImageSize.Dimension(100, "%"), | ||||
|                                         null)), | ||||
|                                 jLatexImageSizeResolver, | ||||
|                                 null), | ||||
|                         AsyncDrawableSpan.ALIGN_BOTTOM, | ||||
|                         false); | ||||
| 
 | ||||
| @ -290,4 +292,32 @@ public class JLatexMathPlugin extends AbstractMarkwonPlugin { | ||||
|             return null; | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     // we must make drawable fit canvas (if specified), but do not keep the ratio whilst scaling up | ||||
|     // @since 4.0.0-SNAPSHOT | ||||
|     private static class JLatexImageSizeResolver extends ImageSizeResolver { | ||||
| 
 | ||||
|         private final boolean fitCanvas; | ||||
| 
 | ||||
|         JLatexImageSizeResolver(boolean fitCanvas) { | ||||
|             this.fitCanvas = fitCanvas; | ||||
|         } | ||||
| 
 | ||||
|         @NonNull | ||||
|         @Override | ||||
|         public Rect resolveImageSize( | ||||
|                 @Nullable ImageSize imageSize, | ||||
|                 @NonNull Rect imageBounds, | ||||
|                 int canvasWidth, | ||||
|                 float textSize) { | ||||
| 
 | ||||
|             if (fitCanvas | ||||
|                     && imageBounds.width() < canvasWidth) { | ||||
|                 // we increase only width (keep height as-is) | ||||
|                 return new Rect(0, 0, canvasWidth, imageBounds.height()); | ||||
|             } | ||||
| 
 | ||||
|             return imageBounds; | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | ||||
| @ -12,6 +12,7 @@ import androidx.annotation.Nullable; | ||||
| import io.noties.markwon.Markwon; | ||||
| import io.noties.markwon.ext.latex.JLatexMathPlugin; | ||||
| import io.noties.markwon.sample.R; | ||||
| import ru.noties.jlatexmath.JLatexMathDrawable; | ||||
| 
 | ||||
| public class LatexActivity extends Activity { | ||||
| 
 | ||||
| @ -50,13 +51,18 @@ public class LatexActivity extends Activity { | ||||
|                 .usePlugin(JLatexMathPlugin.create(textView.getTextSize(), new JLatexMathPlugin.BuilderConfigure() { | ||||
|                     @Override | ||||
|                     public void configureBuilder(@NonNull JLatexMathPlugin.Builder builder) { | ||||
|                         builder.backgroundProvider(new JLatexMathPlugin.BackgroundProvider() { | ||||
|                             @NonNull | ||||
|                             @Override | ||||
|                             public Drawable provide() { | ||||
|                                 return new ColorDrawable(0x40ff0000); | ||||
|                             } | ||||
|                         }); | ||||
|                         builder | ||||
|                                 .backgroundProvider(new JLatexMathPlugin.BackgroundProvider() { | ||||
|                                     @NonNull | ||||
|                                     @Override | ||||
|                                     public Drawable provide() { | ||||
|                                         return new ColorDrawable(0x40ff0000); | ||||
|                                     } | ||||
|                                 }) | ||||
|                                 .fitCanvas(true) | ||||
|                                 .align(JLatexMathDrawable.ALIGN_LEFT) | ||||
|                                 .padding(48) | ||||
|                         ; | ||||
|                     } | ||||
|                 })) | ||||
|                 .build(); | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Dimitry Ivanov
						Dimitry Ivanov