1
0
Fork 0
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:
Nikolay Pultsin 2012-05-05 12:29:53 +01:00
parent 20f05ffcc7
commit ac3ca8cbe2
7 changed files with 51 additions and 52 deletions

View file

@ -8,6 +8,6 @@
# project structure. # project structure.
java.encoding=utf-8 java.encoding=utf-8
proguard.config=proguard.cfg #proguard.config=proguard.cfg
# Project target. # Project target.
target=android-8 target=android-8

View file

@ -363,6 +363,13 @@ public final class FBView extends ZLTextView {
return file; return file;
} }
@Override
public ZLPaintContext.WallpaperMode getWallpaperMode() {
return getWallpaperFile() instanceof ZLResourceFile
? ZLPaintContext.WallpaperMode.TILE_MIRROR
: ZLPaintContext.WallpaperMode.TILE;
}
@Override @Override
public ZLColor getBackgroundColor() { public ZLColor getBackgroundColor() {
return myReader.getColorProfile().BackgroundOption.getValue(); return myReader.getColorProfile().BackgroundOption.getValue();
@ -448,7 +455,7 @@ public final class FBView extends ZLTextView {
public synchronized void paint(ZLPaintContext context) { public synchronized void paint(ZLPaintContext context) {
final ZLFile wallpaper = getWallpaperFile(); final ZLFile wallpaper = getWallpaperFile();
if (wallpaper != null) { if (wallpaper != null) {
context.clear(wallpaper, wallpaper instanceof ZLResourceFile); context.clear(wallpaper, getWallpaperMode());
} else { } else {
context.clear(getBackgroundColor()); context.clear(getBackgroundColor());
} }

View file

@ -30,7 +30,7 @@ final class DummyPaintContext extends ZLPaintContext {
} }
@Override @Override
public void clear(ZLFile wallpaperFile, boolean doMirror) { public void clear(ZLFile wallpaperFile, WallpaperMode mode) {
} }
@Override @Override
@ -51,14 +51,14 @@ final class DummyPaintContext extends ZLPaintContext {
} }
@Override @Override
public void setLineColor(ZLColor color, int style) { public void setLineColor(ZLColor color) {
} }
@Override @Override
public void setLineWidth(int width) { public void setLineWidth(int width) {
} }
@Override @Override
public void setFillColor(ZLColor color, int alpha, int style) { public void setFillColor(ZLColor color, int alpha) {
} }
@Override @Override

View file

@ -28,20 +28,14 @@ import org.geometerplus.zlibrary.core.image.ZLImageData;
abstract public class ZLPaintContext { abstract public class ZLPaintContext {
private final ArrayList<String> myFamilies = new ArrayList<String>(); 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() { 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 void clear(ZLColor color);
abstract public ZLColor getBackgroundColor(); 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 protected void setFontInternal(String family, int size, boolean bold, boolean italic, boolean underline, boolean strikeThrough);
abstract public void setTextColor(ZLColor color); abstract public void setTextColor(ZLColor color);
final public void setLineColor(ZLColor color) { abstract public void setLineColor(ZLColor color);
setLineColor(color, LineStyle.SOLID_LINE);
}
abstract public void setLineColor(ZLColor color, int style);
abstract public void setLineWidth(int width); 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) { 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 getWidth();
abstract public int getHeight(); abstract public int getHeight();

View file

@ -379,7 +379,7 @@ public abstract class ZLTextView extends ZLTextViewBase {
myContext = context; myContext = context;
final ZLFile wallpaper = getWallpaperFile(); final ZLFile wallpaper = getWallpaperFile();
if (wallpaper != null) { if (wallpaper != null) {
context.clear(wallpaper, wallpaper instanceof ZLResourceFile); context.clear(wallpaper, getWallpaperMode());
} else { } else {
context.clear(getBackgroundColor()); context.clear(getBackgroundColor());
} }

View file

@ -51,6 +51,7 @@ abstract class ZLTextViewBase extends ZLView {
public abstract int getBottomMargin(); public abstract int getBottomMargin();
public abstract ZLFile getWallpaperFile(); public abstract ZLFile getWallpaperFile();
public abstract ZLPaintContext.WallpaperMode getWallpaperMode();
public abstract ZLColor getBackgroundColor(); public abstract ZLColor getBackgroundColor();
public abstract ZLColor getSelectedBackgroundColor(); public abstract ZLColor getSelectedBackgroundColor();
public abstract ZLColor getSelectedForegroundColor(); public abstract ZLColor getSelectedForegroundColor();

View file

@ -83,34 +83,39 @@ public final class ZLAndroidPaintContext extends ZLPaintContext {
private static ZLFile ourWallpaperFile; private static ZLFile ourWallpaperFile;
private static Bitmap ourWallpaper; private static Bitmap ourWallpaper;
@Override @Override
public void clear(ZLFile wallpaperFile, boolean doMirror) { public void clear(ZLFile wallpaperFile, WallpaperMode mode) {
if (!wallpaperFile.equals(ourWallpaperFile)) { if (!wallpaperFile.equals(ourWallpaperFile)) {
ourWallpaperFile = wallpaperFile; ourWallpaperFile = wallpaperFile;
ourWallpaper = null; ourWallpaper = null;
try { try {
final Bitmap fileBitmap = final Bitmap fileBitmap =
BitmapFactory.decodeStream(wallpaperFile.getInputStream()); BitmapFactory.decodeStream(wallpaperFile.getInputStream());
if (doMirror) { switch (mode) {
final int w = fileBitmap.getWidth(); case TILE_MIRROR:
final int h = fileBitmap.getHeight(); {
final Bitmap wallpaper = Bitmap.createBitmap(2 * w, 2 * h, fileBitmap.getConfig()); final int w = fileBitmap.getWidth();
final Canvas wallpaperCanvas = new Canvas(wallpaper); final int h = fileBitmap.getHeight();
final Paint wallpaperPaint = new Paint(); final Bitmap wallpaper = Bitmap.createBitmap(2 * w, 2 * h, fileBitmap.getConfig());
final Canvas wallpaperCanvas = new Canvas(wallpaper);
Matrix m = new Matrix(); final Paint wallpaperPaint = new Paint();
wallpaperCanvas.drawBitmap(fileBitmap, m, wallpaperPaint);
m.preScale(-1, 1); Matrix m = new Matrix();
m.postTranslate(2 * w, 0); wallpaperCanvas.drawBitmap(fileBitmap, m, wallpaperPaint);
wallpaperCanvas.drawBitmap(fileBitmap, m, wallpaperPaint); m.preScale(-1, 1);
m.preScale(1, -1); m.postTranslate(2 * w, 0);
m.postTranslate(0, 2 * h); wallpaperCanvas.drawBitmap(fileBitmap, m, wallpaperPaint);
wallpaperCanvas.drawBitmap(fileBitmap, m, wallpaperPaint); m.preScale(1, -1);
m.preScale(-1, 1); m.postTranslate(0, 2 * h);
m.postTranslate(- 2 * w, 0); wallpaperCanvas.drawBitmap(fileBitmap, m, wallpaperPaint);
wallpaperCanvas.drawBitmap(fileBitmap, m, wallpaperPaint); m.preScale(-1, 1);
ourWallpaper = wallpaper; m.postTranslate(- 2 * w, 0);
} else { wallpaperCanvas.drawBitmap(fileBitmap, m, wallpaperPaint);
ourWallpaper = fileBitmap; ourWallpaper = wallpaper;
break;
}
case TILE:
ourWallpaper = fileBitmap;
break;
} }
} catch (Throwable t) { } catch (Throwable t) {
t.printStackTrace(); t.printStackTrace();
@ -240,8 +245,7 @@ public final class ZLAndroidPaintContext extends ZLPaintContext {
} }
@Override @Override
public void setLineColor(ZLColor color, int style) { public void setLineColor(ZLColor color) {
// TODO: use style
myLinePaint.setColor(ZLAndroidColorUtil.rgb(color)); myLinePaint.setColor(ZLAndroidColorUtil.rgb(color));
} }
@Override @Override
@ -250,8 +254,7 @@ public final class ZLAndroidPaintContext extends ZLPaintContext {
} }
@Override @Override
public void setFillColor(ZLColor color, int alpha, int style) { public void setFillColor(ZLColor color, int alpha) {
// TODO: use style
myFillPaint.setColor(ZLAndroidColorUtil.rgba(color, alpha)); myFillPaint.setColor(ZLAndroidColorUtil.rgba(color, alpha));
} }