-
-
Save mahfuz10/09c25c9573a484c62a3d6d0bd00236f1 to your computer and use it in GitHub Desktop.
Revisions
-
mahfuz10 renamed this gist
Feb 1, 2021 . 1 changed file with 0 additions and 0 deletions.There are no files selected for viewing
File renamed without changes. -
jbxbergdev revised this gist
Jan 15, 2020 . No changes.There are no files selected for viewing
-
jbxbergdev revised this gist
Jan 14, 2020 . 1 changed file with 10 additions and 10 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -19,40 +19,40 @@ class MarkerGenerator { _circleOffset = _markerSize / 2; _outlineCircleWidth = _circleOffset - (_circleStrokeWidth / 2); _fillCircleWidth = _markerSize / 2; final outlineCircleInnerWidth = _markerSize - (2 * _circleStrokeWidth); _iconSize = sqrt(pow(outlineCircleInnerWidth, 2) / 2); final rectDiagonal = sqrt(2 * pow(_markerSize, 2)); final circleDistanceToCorners = (rectDiagonal - outlineCircleInnerWidth) / 2; _iconOffset = sqrt(pow(circleDistanceToCorners, 2) / 2); } /// Creates a BitmapDescriptor from an IconData Future<BitmapDescriptor> createBitmapDescriptorFromIconData(IconData iconData, Color iconColor, Color circleColor, Color backgroundColor) async { final pictureRecorder = PictureRecorder(); final canvas = Canvas(pictureRecorder); _paintCircleFill(canvas, backgroundColor); _paintCircleStroke(canvas, circleColor); _paintIcon(canvas, iconColor, iconData); final picture = pictureRecorder.endRecording(); final image = await picture.toImage(_markerSize.round(), _markerSize.round()); final bytes = await image.toByteData(format: ImageByteFormat.png); return BitmapDescriptor.fromBytes(bytes.buffer.asUint8List()); } /// Paints the icon background void _paintCircleFill(Canvas canvas, Color color) { final paint = Paint() ..style = PaintingStyle.fill ..color = color; canvas.drawCircle(Offset(_circleOffset, _circleOffset), _fillCircleWidth, paint); } /// Paints a circle around the icon void _paintCircleStroke(Canvas canvas, Color color) { final paint = Paint() ..style = PaintingStyle.stroke ..color = color ..strokeWidth = _circleStrokeWidth; -
jbxbergdev revised this gist
Jan 14, 2020 . 1 changed file with 8 additions and 8 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -5,23 +5,23 @@ import 'package:flutter/material.dart'; import 'package:google_maps_flutter/google_maps_flutter.dart'; class MarkerGenerator { final _markerSize; double _circleStrokeWidth; double _circleOffset; double _outlineCircleWidth; double _fillCircleWidth; double _iconSize; double _iconOffset; MarkerGenerator(this._markerSize) { // calculate marker dimensions _circleStrokeWidth = _markerSize / 10.0; _circleOffset = _markerSize / 2; _outlineCircleWidth = _circleOffset - (_circleStrokeWidth / 2); _fillCircleWidth = _markerSize / 2; var outlineCircleInnerWidth = _markerSize - (2 * _circleStrokeWidth); _iconSize = sqrt(pow(outlineCircleInnerWidth, 2) / 2); var rectDiagonal = sqrt(2 * pow(_markerSize, 2)); var circleDistanceToCorners = (rectDiagonal - outlineCircleInnerWidth) / 2; _iconOffset = sqrt(pow(circleDistanceToCorners, 2) / 2); } @@ -36,7 +36,7 @@ class MarkerGenerator { _paintIcon(canvas, iconColor, iconData); var picture = pictureRecorder.endRecording(); var image = await picture.toImage(_markerSize.round(), _markerSize.round()); var bytes = await image.toByteData(format: ImageByteFormat.png); return BitmapDescriptor.fromBytes(bytes.buffer.asUint8List()); -
jbxbergdev created this gist
Jan 14, 2020 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,77 @@ import 'dart:math'; import 'dart:ui'; import 'package:flutter/material.dart'; import 'package:google_maps_flutter/google_maps_flutter.dart'; class MarkerGenerator { final _rectSize; double _circleStrokeWidth; double _circleOffset; double _outlineCircleWidth; double _fillCircleWidth; double _iconSize; double _iconOffset; MarkerGenerator(this._rectSize) { // calculate marker dimensions _circleStrokeWidth = _rectSize / 10.0; _circleOffset = _rectSize / 2; _outlineCircleWidth = _circleOffset - (_circleStrokeWidth / 2); _fillCircleWidth = _rectSize / 2; var outlineCircleInnerWidth = _rectSize - (2 * _circleStrokeWidth); _iconSize = sqrt(pow(outlineCircleInnerWidth, 2) / 2); var rectDiagonal = sqrt(2 * pow(_rectSize, 2)); var circleDistanceToCorners = (rectDiagonal - outlineCircleInnerWidth) / 2; _iconOffset = sqrt(pow(circleDistanceToCorners, 2) / 2); } /// Creates a BitmapDescriptor from an IconData Future<BitmapDescriptor> createBitmapDescriptorFromIconData(IconData iconData, Color iconColor, Color circleColor, Color backgroundColor) async { var pictureRecorder = PictureRecorder(); var canvas = Canvas(pictureRecorder); _paintCircleFill(canvas, backgroundColor); _paintCircleStroke(canvas, circleColor); _paintIcon(canvas, iconColor, iconData); var picture = pictureRecorder.endRecording(); var image = await picture.toImage(_rectSize.round(), _rectSize.round()); var bytes = await image.toByteData(format: ImageByteFormat.png); return BitmapDescriptor.fromBytes(bytes.buffer.asUint8List()); } /// Paints the icon background void _paintCircleFill(Canvas canvas, Color color) { var paint = Paint() ..style = PaintingStyle.fill ..color = color; canvas.drawCircle(Offset(_circleOffset, _circleOffset), _fillCircleWidth, paint); } /// Paints a circle around the icon void _paintCircleStroke(Canvas canvas, Color color) { var paint = Paint() ..style = PaintingStyle.stroke ..color = color ..strokeWidth = _circleStrokeWidth; canvas.drawCircle(Offset(_circleOffset, _circleOffset), _outlineCircleWidth, paint); } /// Paints the icon void _paintIcon(Canvas canvas, Color color, IconData iconData) { final textPainter = TextPainter(textDirection: TextDirection.ltr); textPainter.text = TextSpan( text: String.fromCharCode(iconData.codePoint), style: TextStyle( letterSpacing: 0.0, fontSize: _iconSize, fontFamily: iconData.fontFamily, color: color, ) ); textPainter.layout(); textPainter.paint(canvas, Offset(_iconOffset, _iconOffset)); } }