@Override public synchronized void renderWay(RenderCallback renderCallback, final RenderContext renderContext, PolylineContainer way) { if (!bitmapCreated) { try { shaderBitmap = createBitmap(relativePathPrefix, src); } catch (IOException ioException) { // no-op } bitmapCreated = true; } Paint strokePaint = getStrokePaint(renderContext.rendererJob.tile.zoomLevel); if (shaderBitmap != null) { strokePaint.setBitmapShader(shaderBitmap); strokePaint.setBitmapShaderShift(way.getUpperLeft().getOrigin()); } Float dyScale = this.dyScaled.get(renderContext.rendererJob.tile.zoomLevel); if (dyScale == null) { dyScale = this.dy; } renderCallback.renderWay(renderContext, strokePaint, dyScale, this.level, way); }
@Test public void isTransparentTest() { Paint paint = new AwtPaint(); Assert.assertFalse(paint.isTransparent()); paint.setColor(Color.TRANSPARENT); Assert.assertTrue(paint.isTransparent()); Bitmap bitmap = org.mapsforge.map.awt.graphics.AwtGraphicFactory.INSTANCE.createBitmap(1, 1); paint.setBitmapShader(bitmap); Assert.assertFalse(paint.isTransparent()); } }
@Override public void renderWay(RenderCallback renderCallback, final RenderContext renderContext, PolylineContainer way) { synchronized (this) { // this needs to be synchronized as we potentially set a shift in the shader and // the shift is particular to the tile when rendered in multi-thread mode Paint fillPaint = getFillPaint(); if (shaderBitmap == null && !bitmapInvalid) { try { shaderBitmap = createBitmap(relativePathPrefix, src); if (shaderBitmap != null) { fillPaint.setBitmapShader(shaderBitmap); shaderBitmap.decrementRefCount(); } } catch (IOException ioException) { bitmapInvalid = true; } } fillPaint.setBitmapShaderShift(way.getUpperLeft().getOrigin()); renderCallback.renderArea(renderContext, fillPaint, getStrokePaint(renderContext.rendererJob.tile.zoomLevel), this.level, way); } }
shaderPaint.setBitmapShader(AndroidGraphicFactory.convertToBitmap(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP ? getDrawable(R.drawable.marker_green) : getResources().getDrawable(R.drawable.marker_green))); AndroidGraphicFactory.INSTANCE.createColor(Color.GREEN), 2, Style.FILL); paintFill2.setBitmapShader(AndroidGraphicFactory.convertToBitmap(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP ? getDrawable(R.drawable.marker_green) : getResources().getDrawable(R.drawable.marker_green))); AndroidGraphicFactory.INSTANCE.createColor(Color.RED), 2, Style.FILL); paintFill3.setBitmapShader(AndroidGraphicFactory.convertToBitmap(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP ? getDrawable(R.drawable.marker_red) : getResources().getDrawable(R.drawable.marker_red)));
@Override public synchronized void renderWay(RenderCallback renderCallback, final RenderContext renderContext, PolylineContainer way) { if (!bitmapCreated) { try { shaderBitmap = createBitmap(relativePathPrefix, src); } catch (IOException ioException) { // no-op } bitmapCreated = true; } Paint strokePaint = getStrokePaint(renderContext.rendererJob.tile.zoomLevel); if (shaderBitmap != null) { strokePaint.setBitmapShader(shaderBitmap); strokePaint.setBitmapShaderShift(way.getUpperLeft().getOrigin()); } Float dyScale = this.dyScaled.get(renderContext.rendererJob.tile.zoomLevel); if (dyScale == null) { dyScale = this.dy; } renderCallback.renderWay(renderContext, strokePaint, dyScale, this.level, way); }
@Override public void renderWay(RenderCallback renderCallback, final RenderContext renderContext, PolylineContainer way) { synchronized (this) { // this needs to be synchronized as we potentially set a shift in the shader and // the shift is particular to the tile when rendered in multi-thread mode Paint fillPaint = getFillPaint(); if (shaderBitmap == null && !bitmapInvalid) { try { shaderBitmap = createBitmap(relativePathPrefix, src); if (shaderBitmap != null) { fillPaint.setBitmapShader(shaderBitmap); shaderBitmap.decrementRefCount(); } } catch (IOException ioException) { bitmapInvalid = true; } } fillPaint.setBitmapShaderShift(way.getUpperLeft().getOrigin()); renderCallback.renderArea(renderContext, fillPaint, getStrokePaint(renderContext.rendererJob.tile.zoomLevel), this.level, way); } }