Home | History | Annotate | Download | only in ui

Lines Matching refs:tile

52      *  This is the tile state in the CPU side.
53 * Life of a Tile:
88 // The offsets of the (left, top) of the upper-left tile to the (left, top)
99 private final LongSparseArray<Tile> mActiveTiles = new LongSparseArray<Tile>();
131 // The tile returned by this method can be specified this way: Assuming
200 // 1. Decide the tile level we want to use for display.
201 // 2. Decide the tile levels we want to keep as texture (in addition to
210 // The tile levels we want to keep as texture is in the range
218 // We want to keep one more tile level as texture in addition to what
242 // If rotation is transient, don't update the tile.
250 // Recycle unused tiles: if the level of the active tile is outside the
254 Tile tile = mActiveTiles.valueAt(i);
255 int level = tile.mTileLevel;
257 || !range[level - fromLevel].contains(tile.mX, tile.mY)) {
261 recycleTile(tile);
285 Tile tile = mActiveTiles.valueAt(i);
286 recycleTile(tile);
297 // aligned to the tile boundary.
320 // align the rectangle to tile boundary
377 Tile texture = mActiveTiles.valueAt(i);
386 Tile tile = mRecycledQueue.pop();
387 while (tile != null) {
388 tile.recycle();
389 tile = mRecycledQueue.pop();
470 Tile tile = mActiveTiles.valueAt(i);
471 if (!tile.isContentValid()) queueForDecode(tile);
475 void queueForUpload(Tile tile) {
477 mUploadQueue.push(tile);
484 synchronized void queueForDecode(Tile tile) {
485 if (tile.mTileState == STATE_ACTIVATED) {
486 tile.mTileState = STATE_IN_QUEUE;
487 if (mDecodeQueue.push(tile)) notifyAll();
491 boolean decodeTile(Tile tile) {
493 if (tile.mTileState != STATE_IN_QUEUE) return false;
494 tile.mTileState = STATE_DECODING;
496 boolean decodeComplete = tile.decode();
498 if (tile.mTileState == STATE_RECYCLING) {
499 tile.mTileState = STATE_RECYCLED;
500 if (tile.mDecodedTile != null) {
501 GalleryBitmapPool.getInstance().put(tile.mDecodedTile);
502 tile.mDecodedTile = null;
504 mRecycledQueue.push(tile);
507 tile.mTileState = decodeComplete ? STATE_DECODED : STATE_DECODE_FAIL;
512 private synchronized Tile obtainTile(int x, int y, int level) {
513 Tile tile = mRecycledQueue.pop();
514 if (tile != null) {
515 tile.mTileState = STATE_ACTIVATED;
516 tile.update(x, y, level);
517 return tile;
519 return new Tile(x, y, level);
522 synchronized void recycleTile(Tile tile) {
523 if (tile.mTileState == STATE_DECODING) {
524 tile.mTileState = STATE_RECYCLING;
527 tile.mTileState = STATE_RECYCLED;
528 if (tile.mDecodedTile != null) {
529 GalleryBitmapPool.getInstance().put(tile.mDecodedTile);
530 tile.mDecodedTile = null;
532 mRecycledQueue.push(tile);
537 Tile tile = mActiveTiles.get(key);
538 if (tile != null) {
539 if (tile.mTileState == STATE_IN_QUEUE) {
540 tile.mTileState = STATE_ACTIVATED;
544 tile = obtainTile(x, y, level);
545 mActiveTiles.put(key, tile);
548 private Tile getTile(int x, int y, int level) {
568 Tile tile = null;
571 tile = mUploadQueue.pop();
573 if (tile == null) break;
574 if (!tile.isContentValid()) {
575 boolean hasBeenLoaded = tile.isLoaded();
576 Utils.assertTrue(tile.mTileState == STATE_DECODED);
577 tile.updateContent(canvas);
578 if (!hasBeenLoaded) tile.draw(canvas, 0, 0);
582 if (tile == null) mActive.set(false);
583 return tile != null;
587 // Draw the tile to a square at canvas that locates at (x, y) and
596 Tile tile = getTile(tx, ty, level);
597 if (tile != null) {
598 if (!tile.isContentValid()) {
599 if (tile.mTileState == STATE_DECODED) {
602 tile.updateContent(canvas);
606 } else if (tile.mTileState != STATE_DECODE_FAIL){
608 queueForDecode(tile);
611 if (drawTile(tile, canvas, source, target)) return;
624 Tile tile, GLCanvas canvas, RectF source, RectF target) {
626 if (tile.isContentValid()) {
627 canvas.drawTexture(tile, source, target);
631 // Parent can be divided to four quads and tile is one of the four.
632 Tile parent = tile.getParentTile();
634 if (tile.mX == parent.mX) {
641 if (tile.mY == parent.mY) {
648 tile = parent;
652 private class Tile extends UploadedTexture {
656 public Tile mNext;
660 public Tile(int x, int y, int level) {
672 // Get a tile from the original image. The tile is down-scaled
678 Log.w(TAG, "fail to decode tile", t);
701 // size of the tile (which may be small because it is a tile at the
720 public Tile getParentTile() {
730 return String.format("tile(%s, %s, %s / %s)",
736 private Tile mHead;
738 public Tile pop() {
739 Tile tile = mHead;
740 if (tile != null) mHead = tile.mNext;
741 return tile;
744 public boolean push(Tile tile) {
746 tile.mNext = mHead;
747 mHead = tile;
772 Tile tile = null;
774 tile = mDecodeQueue.pop();
775 if (tile == null && !jc.isCancelled()) {
779 if (tile == null) continue;
780 if (decodeTile(tile)) queueForUpload(tile);