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