createMissingBitmap method

Future<TilePicture> createMissingBitmap()

Creates a tile bitmap to indicate that the tile is currently being rendered.

This is used as a placeholder until the actual tile data is available.

Implementation

Future<TilePicture> createMissingBitmap() async {
  if (_missing != null) return _missing!.clone();
  double tileSize = MapsforgeSettingsMgr().tileSize;
  var pictureRecorder = ui.PictureRecorder();
  var canvas = ui.Canvas(pictureRecorder);
  var paint = ui.Paint();
  paint.strokeWidth = 1;
  paint.color = const ui.Color(0xffaaaaaa);
  paint.isAntiAlias = true;

  canvas.drawLine(ui.Offset(_margin, _margin), ui.Offset(tileSize - _margin, _margin), paint);
  canvas.drawLine(ui.Offset(_margin, _margin), ui.Offset(_margin, tileSize - _margin), paint);
  canvas.drawLine(ui.Offset(tileSize - _margin, _margin), ui.Offset(tileSize - _margin, tileSize - _margin), paint);
  canvas.drawLine(ui.Offset(_margin, tileSize - _margin), ui.Offset(tileSize - _margin, tileSize - _margin), paint);

  ui.ParagraphBuilder builder = ui.ParagraphBuilder(ui.ParagraphStyle(fontSize: 10.0, textAlign: ui.TextAlign.center))
    ..pushStyle(ui.TextStyle(color: paint.color))
    ..addText("Waiting for rendering...");
  canvas.drawParagraph(builder.build()..layout(ui.ParagraphConstraints(width: tileSize.toDouble())), ui.Offset(0, tileSize / 2));

  var pic = pictureRecorder.endRecording();
  _missing = TilePicture.fromPicture(pic);
  return _missing!;
}