示例#1
0
  private Bitmap extentSnapshot(int doc, int gs, int spaceAround, boolean transparent) {
    final LogHelper log = new LogHelper();
    final Rect extent = getDisplayExtent();

    if (!extent.isEmpty()) {
      extent.inset(-spaceAround, -spaceAround);
      extent.intersect(0, 0, mView.getView().getWidth(), mView.getView().getHeight());
    }
    if (extent.isEmpty()) {
      return null;
    }

    final Bitmap viewBitmap = mView.snapshot(doc, gs, transparent);
    if (viewBitmap == null) {
      return null;
    }

    if (extent.width() == mView.getView().getWidth()
        && extent.height() == mView.getView().getHeight()) {
      log.r(viewBitmap.getByteCount());
      return viewBitmap;
    }

    final Bitmap realBitmap =
        Bitmap.createBitmap(viewBitmap, extent.left, extent.top, extent.width(), extent.height());

    viewBitmap.recycle();
    log.r(realBitmap.getByteCount());
    return realBitmap;
  }
示例#2
0
  @Override
  public Bitmap snapshot(boolean transparent) {
    final GiCoreView v = mView.coreView();
    int doc, gs;

    synchronized (v) {
      doc = v.acquireFrontDoc();
      gs = v.acquireGraphics(mView.viewAdapter());
    }
    try {
      final LogHelper log = new LogHelper();
      final Bitmap bitmap = mView.snapshot(doc, gs, transparent);
      log.r(bitmap != null ? bitmap.getByteCount() : 0);
      return bitmap;
    } finally {
      GiCoreView.releaseDoc(doc);
      v.releaseGraphics(gs);
    }
  }