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.
|
# 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
|
||||||
|
|
|
@ -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());
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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();
|
||||||
|
|
|
@ -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());
|
||||||
}
|
}
|
||||||
|
|
|
@ -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();
|
||||||
|
|
|
@ -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));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue