diff --git a/project.properties b/project.properties index 3aa40afdc..c4a39de92 100644 --- a/project.properties +++ b/project.properties @@ -8,6 +8,6 @@ # project structure. java.encoding=utf-8 -proguard.config=proguard.cfg +#proguard.config=proguard.cfg # Project target. target=android-8 diff --git a/src/org/geometerplus/fbreader/fbreader/FBView.java b/src/org/geometerplus/fbreader/fbreader/FBView.java index 115fe6c7d..1c520c80c 100644 --- a/src/org/geometerplus/fbreader/fbreader/FBView.java +++ b/src/org/geometerplus/fbreader/fbreader/FBView.java @@ -363,6 +363,13 @@ public final class FBView extends ZLTextView { return file; } + @Override + public ZLPaintContext.WallpaperMode getWallpaperMode() { + return getWallpaperFile() instanceof ZLResourceFile + ? ZLPaintContext.WallpaperMode.TILE_MIRROR + : ZLPaintContext.WallpaperMode.TILE; + } + @Override public ZLColor getBackgroundColor() { return myReader.getColorProfile().BackgroundOption.getValue(); @@ -448,7 +455,7 @@ public final class FBView extends ZLTextView { public synchronized void paint(ZLPaintContext context) { final ZLFile wallpaper = getWallpaperFile(); if (wallpaper != null) { - context.clear(wallpaper, wallpaper instanceof ZLResourceFile); + context.clear(wallpaper, getWallpaperMode()); } else { context.clear(getBackgroundColor()); } diff --git a/src/org/geometerplus/zlibrary/core/view/DummyPaintContext.java b/src/org/geometerplus/zlibrary/core/view/DummyPaintContext.java index b5bad39a6..4786eaa7b 100644 --- a/src/org/geometerplus/zlibrary/core/view/DummyPaintContext.java +++ b/src/org/geometerplus/zlibrary/core/view/DummyPaintContext.java @@ -30,7 +30,7 @@ final class DummyPaintContext extends ZLPaintContext { } @Override - public void clear(ZLFile wallpaperFile, boolean doMirror) { + public void clear(ZLFile wallpaperFile, WallpaperMode mode) { } @Override @@ -51,14 +51,14 @@ final class DummyPaintContext extends ZLPaintContext { } @Override - public void setLineColor(ZLColor color, int style) { + public void setLineColor(ZLColor color) { } @Override public void setLineWidth(int width) { } @Override - public void setFillColor(ZLColor color, int alpha, int style) { + public void setFillColor(ZLColor color, int alpha) { } @Override diff --git a/src/org/geometerplus/zlibrary/core/view/ZLPaintContext.java b/src/org/geometerplus/zlibrary/core/view/ZLPaintContext.java index d5502f8b3..22f680f1c 100644 --- a/src/org/geometerplus/zlibrary/core/view/ZLPaintContext.java +++ b/src/org/geometerplus/zlibrary/core/view/ZLPaintContext.java @@ -28,20 +28,14 @@ import org.geometerplus.zlibrary.core.image.ZLImageData; abstract public class ZLPaintContext { private final ArrayList myFamilies = new ArrayList(); - public interface LineStyle { - int SOLID_LINE = 0; - int DASH_LINE = 1; - }; - - public interface FillStyle { - int SOLID_FILL = 0; - int HALF_FILL = 1; - }; - protected ZLPaintContext() { } - abstract public void clear(ZLFile wallpaperFile, boolean doMirror); + public static enum WallpaperMode { + TILE, + TILE_MIRROR + } + abstract public void clear(ZLFile wallpaperFile, WallpaperMode mode); abstract public void clear(ZLColor color); abstract public ZLColor getBackgroundColor(); @@ -90,19 +84,13 @@ abstract public class ZLPaintContext { abstract protected void setFontInternal(String family, int size, boolean bold, boolean italic, boolean underline, boolean strikeThrough); abstract public void setTextColor(ZLColor color); - final public void setLineColor(ZLColor color) { - setLineColor(color, LineStyle.SOLID_LINE); - } - abstract public void setLineColor(ZLColor color, int style); + abstract public void setLineColor(ZLColor color); abstract public void setLineWidth(int width); - final public void setFillColor(ZLColor color, int alpha) { - setFillColor(color, alpha, FillStyle.SOLID_FILL); - } final public void setFillColor(ZLColor color) { - setFillColor(color, 0xFF, FillStyle.SOLID_FILL); + setFillColor(color, 0xFF); } - abstract public void setFillColor(ZLColor color, int alpha, int style); + abstract public void setFillColor(ZLColor color, int alpha); abstract public int getWidth(); abstract public int getHeight(); diff --git a/src/org/geometerplus/zlibrary/text/view/ZLTextView.java b/src/org/geometerplus/zlibrary/text/view/ZLTextView.java index 0434e4f59..616acb218 100644 --- a/src/org/geometerplus/zlibrary/text/view/ZLTextView.java +++ b/src/org/geometerplus/zlibrary/text/view/ZLTextView.java @@ -379,7 +379,7 @@ public abstract class ZLTextView extends ZLTextViewBase { myContext = context; final ZLFile wallpaper = getWallpaperFile(); if (wallpaper != null) { - context.clear(wallpaper, wallpaper instanceof ZLResourceFile); + context.clear(wallpaper, getWallpaperMode()); } else { context.clear(getBackgroundColor()); } diff --git a/src/org/geometerplus/zlibrary/text/view/ZLTextViewBase.java b/src/org/geometerplus/zlibrary/text/view/ZLTextViewBase.java index 216947720..24528f464 100644 --- a/src/org/geometerplus/zlibrary/text/view/ZLTextViewBase.java +++ b/src/org/geometerplus/zlibrary/text/view/ZLTextViewBase.java @@ -51,6 +51,7 @@ abstract class ZLTextViewBase extends ZLView { public abstract int getBottomMargin(); public abstract ZLFile getWallpaperFile(); + public abstract ZLPaintContext.WallpaperMode getWallpaperMode(); public abstract ZLColor getBackgroundColor(); public abstract ZLColor getSelectedBackgroundColor(); public abstract ZLColor getSelectedForegroundColor(); diff --git a/src/org/geometerplus/zlibrary/ui/android/view/ZLAndroidPaintContext.java b/src/org/geometerplus/zlibrary/ui/android/view/ZLAndroidPaintContext.java index 6a99b0a8c..bcd89a35c 100644 --- a/src/org/geometerplus/zlibrary/ui/android/view/ZLAndroidPaintContext.java +++ b/src/org/geometerplus/zlibrary/ui/android/view/ZLAndroidPaintContext.java @@ -83,34 +83,39 @@ public final class ZLAndroidPaintContext extends ZLPaintContext { private static ZLFile ourWallpaperFile; private static Bitmap ourWallpaper; @Override - public void clear(ZLFile wallpaperFile, boolean doMirror) { + public void clear(ZLFile wallpaperFile, WallpaperMode mode) { if (!wallpaperFile.equals(ourWallpaperFile)) { ourWallpaperFile = wallpaperFile; ourWallpaper = null; try { final Bitmap fileBitmap = BitmapFactory.decodeStream(wallpaperFile.getInputStream()); - if (doMirror) { - final int w = fileBitmap.getWidth(); - final int h = fileBitmap.getHeight(); - final Bitmap wallpaper = Bitmap.createBitmap(2 * w, 2 * h, fileBitmap.getConfig()); - final Canvas wallpaperCanvas = new Canvas(wallpaper); - final Paint wallpaperPaint = new Paint(); - - Matrix m = new Matrix(); - wallpaperCanvas.drawBitmap(fileBitmap, m, wallpaperPaint); - m.preScale(-1, 1); - m.postTranslate(2 * w, 0); - wallpaperCanvas.drawBitmap(fileBitmap, m, wallpaperPaint); - m.preScale(1, -1); - m.postTranslate(0, 2 * h); - wallpaperCanvas.drawBitmap(fileBitmap, m, wallpaperPaint); - m.preScale(-1, 1); - m.postTranslate(- 2 * w, 0); - wallpaperCanvas.drawBitmap(fileBitmap, m, wallpaperPaint); - ourWallpaper = wallpaper; - } else { - ourWallpaper = fileBitmap; + switch (mode) { + case TILE_MIRROR: + { + final int w = fileBitmap.getWidth(); + final int h = fileBitmap.getHeight(); + final Bitmap wallpaper = Bitmap.createBitmap(2 * w, 2 * h, fileBitmap.getConfig()); + final Canvas wallpaperCanvas = new Canvas(wallpaper); + final Paint wallpaperPaint = new Paint(); + + Matrix m = new Matrix(); + wallpaperCanvas.drawBitmap(fileBitmap, m, wallpaperPaint); + m.preScale(-1, 1); + m.postTranslate(2 * w, 0); + wallpaperCanvas.drawBitmap(fileBitmap, m, wallpaperPaint); + m.preScale(1, -1); + m.postTranslate(0, 2 * h); + wallpaperCanvas.drawBitmap(fileBitmap, m, wallpaperPaint); + m.preScale(-1, 1); + m.postTranslate(- 2 * w, 0); + wallpaperCanvas.drawBitmap(fileBitmap, m, wallpaperPaint); + ourWallpaper = wallpaper; + break; + } + case TILE: + ourWallpaper = fileBitmap; + break; } } catch (Throwable t) { t.printStackTrace(); @@ -240,8 +245,7 @@ public final class ZLAndroidPaintContext extends ZLPaintContext { } @Override - public void setLineColor(ZLColor color, int style) { - // TODO: use style + public void setLineColor(ZLColor color) { myLinePaint.setColor(ZLAndroidColorUtil.rgb(color)); } @Override @@ -250,8 +254,7 @@ public final class ZLAndroidPaintContext extends ZLPaintContext { } @Override - public void setFillColor(ZLColor color, int alpha, int style) { - // TODO: use style + public void setFillColor(ZLColor color, int alpha) { myFillPaint.setColor(ZLAndroidColorUtil.rgba(color, alpha)); }