@Override public void draw(Canvas canvas, Point origin, Matrix matrix, Filter filter) { matrix.reset(); // We cast to int for pixel perfect positioning matrix.translate((int) (this.xy.x - origin.x + boundary.left), (int) (this.xy.y - origin.y + boundary.top)); if (theta != 0 && alignCenter) { matrix.rotate(theta, (float) -boundary.left, (float) -boundary.top); } else { matrix.rotate(theta); } canvas.drawBitmap(this.symbol, matrix, filter); } }
static void mergeSameSized(HillshadingBitmap center, HillshadingBitmap neighbor, HillshadingBitmap.Border border, int padding, Canvas copyCanvas) { HillshadingBitmap sink; HillshadingBitmap source; if (border == HillshadingBitmap.Border.EAST) { sink = center; source = neighbor; copyCanvas.setBitmap(sink); copyCanvas.setClip(sink.getWidth() - padding, padding, padding, sink.getHeight() - 2 * padding); copyCanvas.drawBitmap(source, (source.getWidth() - 2 * padding), 0); } else if (border == HillshadingBitmap.Border.WEST) { sink = center; source = neighbor; copyCanvas.setBitmap(sink); copyCanvas.setClip(0, padding, padding, sink.getHeight() - 2 * padding); copyCanvas.drawBitmap(source, 2 * padding - (source.getWidth()), 0); } else if (border == HillshadingBitmap.Border.NORTH) { sink = center; source = neighbor; copyCanvas.setBitmap(sink); copyCanvas.setClip(padding, 0, sink.getWidth() - 2 * padding, padding); copyCanvas.drawBitmap(source, 0, 2 * padding - (source.getHeight())); } else if (border == HillshadingBitmap.Border.SOUTH) { sink = center; source = neighbor; copyCanvas.setBitmap(sink); copyCanvas.setClip(padding, sink.getHeight() - padding, sink.getWidth() - 2 * padding, padding); copyCanvas.drawBitmap(source, 0, (source.getHeight() - 2 * padding)); } }
private void drawParentTileBitmap(Canvas canvas, Point point, Tile tile) { Tile cachedParentTile = getCachedParentTile(tile, 4); if (cachedParentTile != null) { Bitmap bitmap = this.tileCache.getImmediately(createJob(cachedParentTile)); if (bitmap != null) { int tileSize = this.displayModel.getTileSize(); long translateX = tile.getShiftX(cachedParentTile) * tileSize; long translateY = tile.getShiftY(cachedParentTile) * tileSize; byte zoomLevelDiff = (byte) (tile.zoomLevel - cachedParentTile.zoomLevel); float scaleFactor = (float) Math.pow(2, zoomLevelDiff); int x = (int) Math.round(point.x); int y = (int) Math.round(point.y); this.matrix.reset(); this.matrix.translate(x - translateX, y - translateY); this.matrix.scale(scaleFactor, scaleFactor); canvas.setClip(x, y, this.displayModel.getTileSize(), this.displayModel.getTileSize()); canvas.drawBitmap(bitmap, this.matrix, this.displayModel.getFilter()); canvas.resetClip(); bitmap.decrementRefCount(); } } }
canvas.drawBitmap(bitmap, (int) Math.round(point.x), (int) Math.round(point.y), this.displayModel.getFilter()); bitmap.decrementRefCount();
@Override public synchronized void draw(BoundingBox boundingBox, byte zoomLevel, Canvas canvas, Point topLeftPoint) { if (this.latLong == null || this.bitmap == null || this.bitmap.isDestroyed()) { return; } long mapSize = MercatorProjection.getMapSize(zoomLevel, this.displayModel.getTileSize()); double pixelX = MercatorProjection.longitudeToPixelX(this.latLong.longitude, mapSize); double pixelY = MercatorProjection.latitudeToPixelY(this.latLong.latitude, mapSize); int halfBitmapWidth = this.bitmap.getWidth() / 2; int halfBitmapHeight = this.bitmap.getHeight() / 2; int left = (int) (pixelX - topLeftPoint.x - halfBitmapWidth + this.horizontalOffset); int top = (int) (pixelY - topLeftPoint.y - halfBitmapHeight + this.verticalOffset); int right = left + this.bitmap.getWidth(); int bottom = top + this.bitmap.getHeight(); Rectangle bitmapRectangle = new Rectangle(left, top, right, bottom); Rectangle canvasRectangle = new Rectangle(0, 0, canvas.getWidth(), canvas.getHeight()); if (!canvasRectangle.intersects(bitmapRectangle)) { return; } canvas.drawBitmap(this.bitmap, left, top); }
@Override public void draw(Canvas canvas, Point origin, Matrix matrix, Filter filter) { matrix.reset(); // We cast to int for pixel perfect positioning matrix.translate((int) (this.xy.x - origin.x + boundary.left), (int) (this.xy.y - origin.y + boundary.top)); if (theta != 0 && alignCenter) { matrix.rotate(theta, (float) -boundary.left, (float) -boundary.top); } else { matrix.rotate(theta); } canvas.drawBitmap(this.symbol, matrix, filter); } }
static void mergeSameSized(HillshadingBitmap center, HillshadingBitmap neighbor, HillshadingBitmap.Border border, int padding, Canvas copyCanvas) { HillshadingBitmap sink; HillshadingBitmap source; if (border == HillshadingBitmap.Border.EAST) { sink = center; source = neighbor; copyCanvas.setBitmap(sink); copyCanvas.setClip(sink.getWidth() - padding, padding, padding, sink.getHeight() - 2 * padding); copyCanvas.drawBitmap(source, (source.getWidth() - 2 * padding), 0); } else if (border == HillshadingBitmap.Border.WEST) { sink = center; source = neighbor; copyCanvas.setBitmap(sink); copyCanvas.setClip(0, padding, padding, sink.getHeight() - 2 * padding); copyCanvas.drawBitmap(source, 2 * padding - (source.getWidth()), 0); } else if (border == HillshadingBitmap.Border.NORTH) { sink = center; source = neighbor; copyCanvas.setBitmap(sink); copyCanvas.setClip(padding, 0, sink.getWidth() - 2 * padding, padding); copyCanvas.drawBitmap(source, 0, 2 * padding - (source.getHeight())); } else if (border == HillshadingBitmap.Border.SOUTH) { sink = center; source = neighbor; copyCanvas.setBitmap(sink); copyCanvas.setClip(padding, sink.getHeight() - padding, sink.getWidth() - 2 * padding, padding); copyCanvas.drawBitmap(source, 0, (source.getHeight() - 2 * padding)); } }
private void drawParentTileBitmap(Canvas canvas, Point point, Tile tile) { Tile cachedParentTile = getCachedParentTile(tile, 4); if (cachedParentTile != null) { Bitmap bitmap = this.tileCache.getImmediately(createJob(cachedParentTile)); if (bitmap != null) { int tileSize = this.displayModel.getTileSize(); long translateX = tile.getShiftX(cachedParentTile) * tileSize; long translateY = tile.getShiftY(cachedParentTile) * tileSize; byte zoomLevelDiff = (byte) (tile.zoomLevel - cachedParentTile.zoomLevel); float scaleFactor = (float) Math.pow(2, zoomLevelDiff); int x = (int) Math.round(point.x); int y = (int) Math.round(point.y); this.matrix.reset(); this.matrix.translate(x - translateX, y - translateY); this.matrix.scale(scaleFactor, scaleFactor); canvas.setClip(x, y, this.displayModel.getTileSize(), this.displayModel.getTileSize()); canvas.drawBitmap(bitmap, this.matrix, this.displayModel.getFilter()); canvas.resetClip(); bitmap.decrementRefCount(); } } }
canvas.drawBitmap(bitmap, (int) Math.round(point.x), (int) Math.round(point.y), this.displayModel.getFilter()); bitmap.decrementRefCount();
canvas.drawBitmap(cluster.getClusterManager().markerIconBmps .get(markerType).getBitmap(isSelected), (int) left, (int) top); cluster.getClusterManager().markerIconBmps .get(markerType).getPaint()); canvas.drawBitmap(bubble, (int) (left + halfBitmapWidth - bubble.getWidth() / 2), (int) (top - bubble.getHeight()));
canvas.drawBitmap(this.getBitmap(), left, top);
@Override public synchronized void draw(BoundingBox boundingBox, byte zoomLevel, Canvas canvas, Point topLeftPoint) { if (this.latLong == null || this.bitmap == null || this.bitmap.isDestroyed()) { return; } long mapSize = MercatorProjection.getMapSize(zoomLevel, this.displayModel.getTileSize()); double pixelX = MercatorProjection.longitudeToPixelX(this.latLong.longitude, mapSize); double pixelY = MercatorProjection.latitudeToPixelY(this.latLong.latitude, mapSize); int halfBitmapWidth = this.bitmap.getWidth() / 2; int halfBitmapHeight = this.bitmap.getHeight() / 2; int left = (int) (pixelX - topLeftPoint.x - halfBitmapWidth + this.horizontalOffset); int top = (int) (pixelY - topLeftPoint.y - halfBitmapHeight + this.verticalOffset); int right = left + this.bitmap.getWidth(); int bottom = top + this.bitmap.getHeight(); Rectangle bitmapRectangle = new Rectangle(left, top, right, bottom); Rectangle canvasRectangle = new Rectangle(0, 0, canvas.getWidth(), canvas.getHeight()); if (!canvasRectangle.intersects(bitmapRectangle)) { return; } canvas.drawBitmap(this.bitmap, left, top); }
@Override public void draw(BoundingBox boundingBox, byte zoomLevel, Canvas canvas, Point topLeftPoint) { if (this.getLatLong() == null || this.getBitmap() == null || this.getBitmap().isDestroyed()) { return; } long mapSize = MercatorProjection.getMapSize(zoomLevel, this.displayModel.getTileSize()); double pixelX = MercatorProjection.longitudeToPixelX(this.getLatLong().longitude, mapSize); double pixelY = MercatorProjection.latitudeToPixelY(this.getLatLong().latitude, mapSize); int halfBitmapWidth = this.getBitmap().getWidth() / 2; int halfBitmapHeight = this.getBitmap().getHeight() / 2; int left = (int) (pixelX - topLeftPoint.x - halfBitmapWidth + this.getHorizontalOffset()); int top = (int) (pixelY - topLeftPoint.y - halfBitmapHeight + this.getVerticalOffset()); int right = left + this.getBitmap().getWidth(); int bottom = top + this.getBitmap().getHeight(); Rectangle bitmapRectangle = new Rectangle(left, top, right, bottom); Rectangle canvasRectangle = new Rectangle(0, 0, canvas.getWidth(), canvas.getHeight()); if (!canvasRectangle.intersects(bitmapRectangle)) { return; } canvas.drawBitmap(this.getBitmap(), left, top); if (this.paintText != null) { String text = String.valueOf(this.children.size()); canvas.drawText(text, left + halfBitmapWidth - 5, top + halfBitmapHeight + 5, this.paintText); } }