1
0
Fork 0
mirror of https://github.com/geometer/FBReaderJ.git synced 2025-10-05 10:49:24 +02:00

Wallpapers from file (FBView.getWallpaperFile() is not implemented yet)

This commit is contained in:
Nikolay Pultsin 2011-01-18 23:53:13 +00:00
parent 1a9d72da3c
commit eea5ca3430
6 changed files with 50 additions and 9 deletions

View file

@ -23,6 +23,8 @@ import org.geometerplus.zlibrary.core.application.ZLApplication;
import org.geometerplus.zlibrary.core.util.ZLColor;
import org.geometerplus.zlibrary.core.library.ZLibrary;
import org.geometerplus.zlibrary.core.view.ZLPaintContext;
import org.geometerplus.zlibrary.core.filesystem.ZLFile;
import org.geometerplus.zlibrary.text.model.ZLTextModel;
import org.geometerplus.zlibrary.text.view.*;
@ -377,6 +379,11 @@ public final class FBView extends ZLTextView {
return myReader.BottomMarginOption.getValue();
}
@Override
public ZLFile getWallpaperFile() {
return ZLFile.createFileByPath("/sdcard/Wallpapers/FonSepiaSandstone.jpg");
}
@Override
public ZLColor getBackgroundColor() {
return myReader.getColorProfile().BackgroundOption.getValue();
@ -467,7 +474,12 @@ public final class FBView extends ZLTextView {
final String infoString = info.toString();
final int infoWidth = context.getStringWidth(infoString);
context.clear(bgColor);
final ZLFile wallpaper = getWallpaperFile();
if (wallpaper != null) {
context.clear(wallpaper);
} else {
context.clear(getBackgroundColor());
}
// draw info text
context.setTextColor(fgColor);

View file

@ -20,14 +20,18 @@
package org.geometerplus.zlibrary.core.view;
import java.util.*;
import org.geometerplus.zlibrary.core.util.*;
import org.geometerplus.zlibrary.core.util.ZLColor;
import org.geometerplus.zlibrary.core.filesystem.ZLFile;
import org.geometerplus.zlibrary.core.image.ZLImageData;
final class DummyPaintContext extends ZLPaintContext {
DummyPaintContext() {
}
public void clear(ZLFile wallpaperFile) {
}
public void clear(ZLColor color) {
}

View file

@ -20,8 +20,9 @@
package org.geometerplus.zlibrary.core.view;
import java.util.*;
import org.geometerplus.zlibrary.core.util.*;
import org.geometerplus.zlibrary.core.util.ZLColor;
import org.geometerplus.zlibrary.core.filesystem.ZLFile;
import org.geometerplus.zlibrary.core.image.ZLImageData;
abstract public class ZLPaintContext {
@ -40,6 +41,7 @@ abstract public class ZLPaintContext {
protected ZLPaintContext() {
}
abstract public void clear(ZLFile wallpaperFile);
abstract public void clear(ZLColor color);
private boolean myResetFont = true;

View file

@ -23,6 +23,8 @@ import java.util.*;
import org.geometerplus.zlibrary.core.application.ZLApplication;
import org.geometerplus.zlibrary.core.view.ZLPaintContext;
import org.geometerplus.zlibrary.core.filesystem.ZLFile;
import org.geometerplus.zlibrary.text.model.*;
import org.geometerplus.zlibrary.text.hyphenation.*;
import org.geometerplus.zlibrary.text.view.style.ZLTextStyleCollection;
@ -252,7 +254,12 @@ public abstract class ZLTextView extends ZLTextViewBase {
@Override
public synchronized void paint(ZLPaintContext context, int viewPage) {
myContext = context;
context.clear(getBackgroundColor());
final ZLFile wallpaper = getWallpaperFile();
if (wallpaper != null) {
context.clear(wallpaper);
} else {
context.clear(getBackgroundColor());
}
if ((myModel == null) || (myModel.getParagraphsNumber() == 0)) {
return;

View file

@ -22,6 +22,7 @@ package org.geometerplus.zlibrary.text.view;
import org.geometerplus.zlibrary.core.util.ZLColor;
import org.geometerplus.zlibrary.core.view.ZLView;
import org.geometerplus.zlibrary.core.view.ZLPaintContext;
import org.geometerplus.zlibrary.core.filesystem.ZLFile;
import org.geometerplus.zlibrary.text.view.style.ZLTextStyleCollection;
import org.geometerplus.zlibrary.text.view.style.ZLTextStyleDecoration;
@ -47,6 +48,7 @@ abstract class ZLTextViewBase extends ZLView {
public abstract int getTopMargin();
public abstract int getBottomMargin();
public abstract ZLFile getWallpaperFile();
public abstract ZLColor getBackgroundColor();
public abstract ZLColor getSelectedBackgroundColor();
public abstract ZLColor getTextColor(byte hyperlinkType);

View file

@ -27,6 +27,7 @@ import android.graphics.*;
import org.geometerplus.zlibrary.core.image.ZLImageData;
import org.geometerplus.zlibrary.core.util.ZLColor;
import org.geometerplus.zlibrary.core.view.ZLPaintContext;
import org.geometerplus.zlibrary.core.filesystem.ZLFile;
import org.geometerplus.zlibrary.ui.android.image.ZLAndroidImageData;
import org.geometerplus.zlibrary.ui.android.util.ZLAndroidColorUtil;
@ -63,12 +64,17 @@ public final class ZLAndroidPaintContext extends ZLPaintContext {
myOutlinePaint.setMaskFilter(new EmbossMaskFilter(new float[] {1, 1, 1}, .4f, 6f, 3.5f));
}
private ZLFile myWallpaperFile;
private Bitmap myWallpaper;
public void clear(ZLColor color) {
myFillPaint.setColor(ZLAndroidColorUtil.rgb(color));
myCanvas.drawRect(0, 0, myWidth + myScrollbarWidth, myHeight, myFillPaint);
if (myWallpaper == null) {
myWallpaper = new BitmapFactory().decodeFile("/sdcard/Wallpapers/test.png");
@Override
public void clear(ZLFile wallpaperFile) {
if (!wallpaperFile.equals(myWallpaperFile)) {
myWallpaperFile = wallpaperFile;
try {
myWallpaper = new BitmapFactory().decodeStream(wallpaperFile.getInputStream());
} catch (Throwable t) {
myWallpaper = null;
}
}
if (myWallpaper != null) {
final int w = myWallpaper.getWidth();
@ -78,9 +84,17 @@ public final class ZLAndroidPaintContext extends ZLPaintContext {
myCanvas.drawBitmap(myWallpaper, cw, ch, myFillPaint);
}
}
} else {
clear(new ZLColor(128, 128, 128));
}
}
@Override
public void clear(ZLColor color) {
myFillPaint.setColor(ZLAndroidColorUtil.rgb(color));
myCanvas.drawRect(0, 0, myWidth + myScrollbarWidth, myHeight, myFillPaint);
}
public void drawOutline(int[] xs, int ys[]) {
final int last = xs.length - 1;
int xStart = (xs[0] + xs[last]) / 2;