Kaydet (Commit) 91507e8e authored tarafından Tomaž Vajngerl's avatar Tomaž Vajngerl

android: add tileSize parameter to TileProvider

Change-Id: I607dbaa897b17f5b650f10293956c8154da6f43d
üst 594e7290
...@@ -8,6 +8,7 @@ import org.libreoffice.kit.LibreOfficeKit; ...@@ -8,6 +8,7 @@ import org.libreoffice.kit.LibreOfficeKit;
import org.libreoffice.kit.Office; import org.libreoffice.kit.Office;
import org.mozilla.gecko.gfx.BufferedCairoImage; import org.mozilla.gecko.gfx.BufferedCairoImage;
import org.mozilla.gecko.gfx.CairoImage; import org.mozilla.gecko.gfx.CairoImage;
import org.mozilla.gecko.gfx.FloatSize;
import org.mozilla.gecko.gfx.LayerController; import org.mozilla.gecko.gfx.LayerController;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
...@@ -131,7 +132,7 @@ public class LOKitTileProvider implements TileProvider { ...@@ -131,7 +132,7 @@ public class LOKitTileProvider implements TileProvider {
} }
@Override @Override
public CairoImage createTile(float x, float y, float zoom) { public CairoImage createTile(float x, float y, FloatSize tileSize, float zoom) {
ByteBuffer buffer = ByteBuffer.allocateDirect(TILE_SIZE * TILE_SIZE * 4); ByteBuffer buffer = ByteBuffer.allocateDirect(TILE_SIZE * TILE_SIZE * 4);
Bitmap bitmap = Bitmap.createBitmap(TILE_SIZE, TILE_SIZE, Bitmap.Config.ARGB_8888); Bitmap bitmap = Bitmap.createBitmap(TILE_SIZE, TILE_SIZE, Bitmap.Config.ARGB_8888);
......
...@@ -4,6 +4,7 @@ import android.graphics.Bitmap; ...@@ -4,6 +4,7 @@ import android.graphics.Bitmap;
import org.mozilla.gecko.gfx.BufferedCairoImage; import org.mozilla.gecko.gfx.BufferedCairoImage;
import org.mozilla.gecko.gfx.CairoImage; import org.mozilla.gecko.gfx.CairoImage;
import org.mozilla.gecko.gfx.FloatSize;
import org.mozilla.gecko.gfx.LayerController; import org.mozilla.gecko.gfx.LayerController;
public class MockTileProvider implements TileProvider { public class MockTileProvider implements TileProvider {
...@@ -35,7 +36,7 @@ public class MockTileProvider implements TileProvider { ...@@ -35,7 +36,7 @@ public class MockTileProvider implements TileProvider {
@Override @Override
public int getPageHeight() { public int getPageHeight() {
return 630*5; return 630 * 5;
} }
@Override @Override
...@@ -44,7 +45,7 @@ public class MockTileProvider implements TileProvider { ...@@ -44,7 +45,7 @@ public class MockTileProvider implements TileProvider {
} }
@Override @Override
public CairoImage createTile(float x, float y, float zoom) { public CairoImage createTile(float x, float y, FloatSize tileSize, float zoom) {
int tiles = (int) (getPageWidth() / TILE_SIZE) + 1; int tiles = (int) (getPageWidth() / TILE_SIZE) + 1;
int tileNumber = (int) ((y / TILE_SIZE) * tiles + (x / TILE_SIZE)); int tileNumber = (int) ((y / TILE_SIZE) * tiles + (x / TILE_SIZE));
tileNumber %= 9; tileNumber %= 9;
......
...@@ -4,6 +4,7 @@ package org.libreoffice; ...@@ -4,6 +4,7 @@ package org.libreoffice;
import android.graphics.Bitmap; import android.graphics.Bitmap;
import org.mozilla.gecko.gfx.CairoImage; import org.mozilla.gecko.gfx.CairoImage;
import org.mozilla.gecko.gfx.FloatSize;
public interface TileProvider { public interface TileProvider {
int getPageWidth(); int getPageWidth();
...@@ -12,7 +13,7 @@ public interface TileProvider { ...@@ -12,7 +13,7 @@ public interface TileProvider {
boolean isReady(); boolean isReady();
CairoImage createTile(float x, float y, float zoom); CairoImage createTile(float x, float y, FloatSize tileSize, float zoom);
void changePart(int partIndex); void changePart(int partIndex);
......
...@@ -56,11 +56,7 @@ public class MultiTileLayer extends Layer { ...@@ -56,11 +56,7 @@ public class MultiTileLayer extends Layer {
private static int TILE_SIZE = 256; private static int TILE_SIZE = 256;
private final List<SubTile> mTiles = new CopyOnWriteArrayList<SubTile>(); private final List<SubTile> mTiles = new CopyOnWriteArrayList<SubTile>();
private TileProvider tileProvider; private TileProvider tileProvider;
private RectF tileViewPort = new RectF(); private RectF currentViewPort = new RectF();
public MultiTileLayer() {
super();
}
public void invalidate() { public void invalidate() {
for (SubTile layer : mTiles) { for (SubTile layer : mTiles) {
...@@ -211,10 +207,10 @@ public class MultiTileLayer extends Layer { ...@@ -211,10 +207,10 @@ public class MultiTileLayer extends Layer {
} }
public void reevaluateTiles(ImmutableViewportMetrics viewportMetrics) { public void reevaluateTiles(ImmutableViewportMetrics viewportMetrics) {
RectF newTileViewPort = inflate(roundToTileSize(viewportMetrics.getViewport(), TILE_SIZE), TILE_SIZE); RectF newCurrentViewPort = inflate(roundToTileSize(viewportMetrics.getViewport(), TILE_SIZE), TILE_SIZE);
if (tileViewPort != newTileViewPort) { if (currentViewPort != newCurrentViewPort) {
tileViewPort = newTileViewPort; currentViewPort = newCurrentViewPort;
clearMarkedTiles(); clearMarkedTiles();
addNewTiles(viewportMetrics); addNewTiles(viewportMetrics);
markTiles(viewportMetrics); markTiles(viewportMetrics);
...@@ -233,11 +229,11 @@ public class MultiTileLayer extends Layer { ...@@ -233,11 +229,11 @@ public class MultiTileLayer extends Layer {
} }
private void addNewTiles(ImmutableViewportMetrics viewportMetrics) { private void addNewTiles(ImmutableViewportMetrics viewportMetrics) {
for (float y = tileViewPort.top; y < tileViewPort.bottom; y += TILE_SIZE) { for (float y = currentViewPort.top; y < currentViewPort.bottom; y += TILE_SIZE) {
if (y > viewportMetrics.getPageHeight()) { if (y > viewportMetrics.getPageHeight()) {
continue; continue;
} }
for (float x = tileViewPort.left; x < tileViewPort.right; x += TILE_SIZE) { for (float x = currentViewPort.left; x < currentViewPort.right; x += TILE_SIZE) {
if (x > viewportMetrics.getPageWidth()) { if (x > viewportMetrics.getPageWidth()) {
continue; continue;
} }
...@@ -248,7 +244,7 @@ public class MultiTileLayer extends Layer { ...@@ -248,7 +244,7 @@ public class MultiTileLayer extends Layer {
} }
} }
if (!contains) { if (!contains) {
CairoImage image = tileProvider.createTile(x, y, viewportMetrics.zoomFactor); CairoImage image = tileProvider.createTile(x, y, new FloatSize(TILE_SIZE, TILE_SIZE), viewportMetrics.zoomFactor);
SubTile tile = new SubTile(image, (int)x, (int)y, viewportMetrics.zoomFactor); SubTile tile = new SubTile(image, (int)x, (int)y, viewportMetrics.zoomFactor);
tile.beginTransaction(); tile.beginTransaction();
mTiles.add(tile); mTiles.add(tile);
...@@ -261,7 +257,7 @@ public class MultiTileLayer extends Layer { ...@@ -261,7 +257,7 @@ public class MultiTileLayer extends Layer {
for (SubTile tile : mTiles) { for (SubTile tile : mTiles) {
if (FloatUtils.fuzzyEquals(tile.zoom, viewportMetrics.zoomFactor)) { if (FloatUtils.fuzzyEquals(tile.zoom, viewportMetrics.zoomFactor)) {
RectF tileRect = new RectF(tile.x, tile.y, tile.x + TILE_SIZE, tile.y + TILE_SIZE); RectF tileRect = new RectF(tile.x, tile.y, tile.x + TILE_SIZE, tile.y + TILE_SIZE);
if (!RectF.intersects(tileViewPort, tileRect)) { if (!RectF.intersects(currentViewPort, tileRect)) {
tile.markForRemoval(); tile.markForRemoval();
} }
} else { } else {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment