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; }
@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); } }