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.util.ZLColor;
import org.geometerplus.zlibrary.core.library.ZLibrary; import org.geometerplus.zlibrary.core.library.ZLibrary;
import org.geometerplus.zlibrary.core.view.ZLPaintContext; 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.model.ZLTextModel;
import org.geometerplus.zlibrary.text.view.*; import org.geometerplus.zlibrary.text.view.*;
@ -377,6 +379,11 @@ public final class FBView extends ZLTextView {
return myReader.BottomMarginOption.getValue(); return myReader.BottomMarginOption.getValue();
} }
@Override
public ZLFile getWallpaperFile() {
return ZLFile.createFileByPath("/sdcard/Wallpapers/FonSepiaSandstone.jpg");
}
@Override @Override
public ZLColor getBackgroundColor() { public ZLColor getBackgroundColor() {
return myReader.getColorProfile().BackgroundOption.getValue(); return myReader.getColorProfile().BackgroundOption.getValue();
@ -467,7 +474,12 @@ public final class FBView extends ZLTextView {
final String infoString = info.toString(); final String infoString = info.toString();
final int infoWidth = context.getStringWidth(infoString); 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 // draw info text
context.setTextColor(fgColor); context.setTextColor(fgColor);

View file

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

View file

@ -20,8 +20,9 @@
package org.geometerplus.zlibrary.core.view; package org.geometerplus.zlibrary.core.view;
import java.util.*; 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; import org.geometerplus.zlibrary.core.image.ZLImageData;
abstract public class ZLPaintContext { abstract public class ZLPaintContext {
@ -40,6 +41,7 @@ abstract public class ZLPaintContext {
protected ZLPaintContext() { protected ZLPaintContext() {
} }
abstract public void clear(ZLFile wallpaperFile);
abstract public void clear(ZLColor color); abstract public void clear(ZLColor color);
private boolean myResetFont = true; 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.application.ZLApplication;
import org.geometerplus.zlibrary.core.view.ZLPaintContext; 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.model.*;
import org.geometerplus.zlibrary.text.hyphenation.*; import org.geometerplus.zlibrary.text.hyphenation.*;
import org.geometerplus.zlibrary.text.view.style.ZLTextStyleCollection; import org.geometerplus.zlibrary.text.view.style.ZLTextStyleCollection;
@ -252,7 +254,12 @@ public abstract class ZLTextView extends ZLTextViewBase {
@Override @Override
public synchronized void paint(ZLPaintContext context, int viewPage) { public synchronized void paint(ZLPaintContext context, int viewPage) {
myContext = context; myContext = context;
final ZLFile wallpaper = getWallpaperFile();
if (wallpaper != null) {
context.clear(wallpaper);
} else {
context.clear(getBackgroundColor()); context.clear(getBackgroundColor());
}
if ((myModel == null) || (myModel.getParagraphsNumber() == 0)) { if ((myModel == null) || (myModel.getParagraphsNumber() == 0)) {
return; 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.util.ZLColor;
import org.geometerplus.zlibrary.core.view.ZLView; import org.geometerplus.zlibrary.core.view.ZLView;
import org.geometerplus.zlibrary.core.view.ZLPaintContext; 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.ZLTextStyleCollection;
import org.geometerplus.zlibrary.text.view.style.ZLTextStyleDecoration; import org.geometerplus.zlibrary.text.view.style.ZLTextStyleDecoration;
@ -47,6 +48,7 @@ abstract class ZLTextViewBase extends ZLView {
public abstract int getTopMargin(); public abstract int getTopMargin();
public abstract int getBottomMargin(); public abstract int getBottomMargin();
public abstract ZLFile getWallpaperFile();
public abstract ZLColor getBackgroundColor(); public abstract ZLColor getBackgroundColor();
public abstract ZLColor getSelectedBackgroundColor(); public abstract ZLColor getSelectedBackgroundColor();
public abstract ZLColor getTextColor(byte hyperlinkType); 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.image.ZLImageData;
import org.geometerplus.zlibrary.core.util.ZLColor; import org.geometerplus.zlibrary.core.util.ZLColor;
import org.geometerplus.zlibrary.core.view.ZLPaintContext; 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.image.ZLAndroidImageData;
import org.geometerplus.zlibrary.ui.android.util.ZLAndroidColorUtil; 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)); myOutlinePaint.setMaskFilter(new EmbossMaskFilter(new float[] {1, 1, 1}, .4f, 6f, 3.5f));
} }
private ZLFile myWallpaperFile;
private Bitmap myWallpaper; private Bitmap myWallpaper;
public void clear(ZLColor color) { @Override
myFillPaint.setColor(ZLAndroidColorUtil.rgb(color)); public void clear(ZLFile wallpaperFile) {
myCanvas.drawRect(0, 0, myWidth + myScrollbarWidth, myHeight, myFillPaint); if (!wallpaperFile.equals(myWallpaperFile)) {
if (myWallpaper == null) { myWallpaperFile = wallpaperFile;
myWallpaper = new BitmapFactory().decodeFile("/sdcard/Wallpapers/test.png"); try {
myWallpaper = new BitmapFactory().decodeStream(wallpaperFile.getInputStream());
} catch (Throwable t) {
myWallpaper = null;
}
} }
if (myWallpaper != null) { if (myWallpaper != null) {
final int w = myWallpaper.getWidth(); final int w = myWallpaper.getWidth();
@ -78,9 +84,17 @@ public final class ZLAndroidPaintContext extends ZLPaintContext {
myCanvas.drawBitmap(myWallpaper, cw, ch, myFillPaint); 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[]) { public void drawOutline(int[] xs, int ys[]) {
final int last = xs.length - 1; final int last = xs.length - 1;
int xStart = (xs[0] + xs[last]) / 2; int xStart = (xs[0] + xs[last]) / 2;