1
0
Fork 0
mirror of https://github.com/geometer/FBReaderJ.git synced 2025-10-05 19:42:17 +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.
java.encoding=utf-8
proguard.config=proguard.cfg
#proguard.config=proguard.cfg
# Project target.
target=android-8

View file

@ -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());
}

View file

@ -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

View file

@ -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();

View file

@ -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());
}

View file

@ -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();

View file

@ -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));
}