mirror of
https://github.com/geometer/FBReaderJ.git
synced 2025-10-05 10:49:24 +02:00
ZLPaintContext refactoring: no line/fill styles, WallpaperMode
This commit is contained in:
parent
20f05ffcc7
commit
ac3ca8cbe2
7 changed files with 51 additions and 52 deletions
|
@ -8,6 +8,6 @@
|
|||
# project structure.
|
||||
|
||||
java.encoding=utf-8
|
||||
proguard.config=proguard.cfg
|
||||
#proguard.config=proguard.cfg
|
||||
# Project target.
|
||||
target=android-8
|
||||
|
|
|
@ -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());
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -28,20 +28,14 @@ import org.geometerplus.zlibrary.core.image.ZLImageData;
|
|||
abstract public class ZLPaintContext {
|
||||
private final ArrayList<String> myFamilies = new ArrayList<String>();
|
||||
|
||||
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();
|
||||
|
|
|
@ -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());
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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();
|
||||
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;
|
||||
} else {
|
||||
ourWallpaper = fileBitmap;
|
||||
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));
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue