Home | History | Annotate | Download | only in ui

Lines Matching refs:tile

53      *  This is the tile state in the CPU side.
54 * Life of a Tile:
89 // The offsets of the (left, top) of the upper-left tile to the (left, top)
100 private final LongSparseArray<Tile> mActiveTiles = new LongSparseArray<Tile>();
132 // The tile returned by this method can be specified this way: Assuming
201 // 1. Decide the tile level we want to use for display.
202 // 2. Decide the tile levels we want to keep as texture (in addition to
211 // The tile levels we want to keep as texture is in the range
219 // We want to keep one more tile level as texture in addition to what
243 // If rotation is transient, don't update the tile.
251 // Recycle unused tiles: if the level of the active tile is outside the
255 Tile tile = mActiveTiles.valueAt(i);
256 int level = tile.mTileLevel;
258 || !range[level - fromLevel].contains(tile.mX, tile.mY)) {
262 recycleTile(tile);
286 Tile tile = mActiveTiles.valueAt(i);
287 recycleTile(tile);
298 // aligned to the tile boundary.
321 // align the rectangle to tile boundary
378 Tile texture = mActiveTiles.valueAt(i);
387 Tile tile = mRecycledQueue.pop();
388 while (tile != null) {
389 tile.recycle();
390 tile = mRecycledQueue.pop();
471 Tile tile = mActiveTiles.valueAt(i);
472 if (!tile.isContentValid()) queueForDecode(tile);
476 void queueForUpload(Tile tile) {
478 mUploadQueue.push(tile);
485 synchronized void queueForDecode(Tile tile) {
486 if (tile.mTileState == STATE_ACTIVATED) {
487 tile.mTileState = STATE_IN_QUEUE;
488 if (mDecodeQueue.push(tile)) notifyAll();
492 boolean decodeTile(Tile tile) {
494 if (tile.mTileState != STATE_IN_QUEUE) return false;
495 tile.mTileState = STATE_DECODING;
497 boolean decodeComplete = tile.decode();
499 if (tile.mTileState == STATE_RECYCLING) {
500 tile.mTileState = STATE_RECYCLED;
501 if (tile.mDecodedTile != null) {
502 GalleryBitmapPool.getInstance().put(tile.mDecodedTile);
503 tile.mDecodedTile = null;
505 mRecycledQueue.push(tile);
508 tile.mTileState = decodeComplete ? STATE_DECODED : STATE_DECODE_FAIL;
513 private synchronized Tile obtainTile(int x, int y, int level) {
514 Tile tile = mRecycledQueue.pop();
515 if (tile != null) {
516 tile.mTileState = STATE_ACTIVATED;
517 tile.update(x, y, level);
518 return tile;
520 return new Tile(x, y, level);
523 synchronized void recycleTile(Tile tile) {
524 if (tile.mTileState == STATE_DECODING) {
525 tile.mTileState = STATE_RECYCLING;
528 tile.mTileState = STATE_RECYCLED;
529 if (tile.mDecodedTile != null) {
530 GalleryBitmapPool.getInstance().put(tile.mDecodedTile);
531 tile.mDecodedTile = null;
533 mRecycledQueue.push(tile);
538 Tile tile = mActiveTiles.get(key);
539 if (tile != null) {
540 if (tile.mTileState == STATE_IN_QUEUE) {
541 tile.mTileState = STATE_ACTIVATED;
545 tile = obtainTile(x, y, level);
546 mActiveTiles.put(key, tile);
549 private Tile getTile(int x, int y, int level) {
569 Tile tile = null;
572 tile = mUploadQueue.pop();
574 if (tile == null) break;
575 if (!tile.isContentValid()) {
576 boolean hasBeenLoaded = tile.isLoaded();
577 Utils.assertTrue(tile.mTileState == STATE_DECODED);
578 tile.updateContent(canvas);
579 if (!hasBeenLoaded) tile.draw(canvas, 0, 0);
583 if (tile == null) mActive.set(false);
584 return tile != null;
588 // Draw the tile to a square at canvas that locates at (x, y) and
597 Tile tile = getTile(tx, ty, level);
598 if (tile != null) {
599 if (!tile.isContentValid()) {
600 if (tile.mTileState == STATE_DECODED) {
603 tile.updateContent(canvas);
607 } else if (tile.mTileState != STATE_DECODE_FAIL){
609 queueForDecode(tile);
612 if (drawTile(tile, canvas, source, target)) return;
625 Tile tile, GLCanvas canvas, RectF source, RectF target) {
627 if (tile.isContentValid()) {
628 canvas.drawTexture(tile, source, target);
632 // Parent can be divided to four quads and tile is one of the four.
633 Tile parent = tile.getParentTile();
635 if (tile.mX == parent.mX) {
642 if (tile.mY == parent.mY) {
649 tile = parent;
653 private class Tile extends UploadedTexture {
657 public Tile mNext;
661 public Tile(int x, int y, int level) {
673 // Get a tile from the original image. The tile is down-scaled
679 Log.w(TAG, "fail to decode tile", t);
702 // size of the tile (which may be small because it is a tile at the
721 public Tile getParentTile() {
731 return String.format("tile(%s, %s, %s / %s)",
737 private Tile mHead;
739 public Tile pop() {
740 Tile tile = mHead;
741 if (tile != null) mHead = tile.mNext;
742 return tile;
745 public boolean push(Tile tile) {
747 tile.mNext = mHead;
748 mHead = tile;
773 Tile tile = null;
775 tile = mDecodeQueue.pop();
776 if (tile == null && !jc.isCancelled()) {
780 if (tile == null) continue;
781 if (decodeTile(tile)) queueForUpload(tile);