| // Copyright 2013 The Flutter Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| import 'package:flutter/foundation.dart' show immutable; |
| |
| import 'types.dart'; |
| |
| /// Cap that can be applied at the start or end vertex of a [Polyline]. |
| @immutable |
| class Cap { |
| const Cap._(this._json); |
| |
| /// Cap that is squared off exactly at the start or end vertex of a [Polyline] |
| /// with solid stroke pattern, equivalent to having no additional cap beyond |
| /// the start or end vertex. |
| /// |
| /// This is the default cap type at start and end vertices of Polylines with |
| /// solid stroke pattern. |
| static const Cap buttCap = Cap._(<Object>['buttCap']); |
| |
| /// Cap that is a semicircle with radius equal to half the stroke width, |
| /// centered at the start or end vertex of a [Polyline] with solid stroke |
| /// pattern. |
| static const Cap roundCap = Cap._(<Object>['roundCap']); |
| |
| /// Cap that is squared off after extending half the stroke width beyond the |
| /// start or end vertex of a [Polyline] with solid stroke pattern. |
| static const Cap squareCap = Cap._(<Object>['squareCap']); |
| |
| /// Constructs a new CustomCap with a bitmap overlay centered at the start or |
| /// end vertex of a [Polyline], orientated according to the direction of the line's |
| /// first or last edge and scaled with respect to the line's stroke width. |
| /// |
| /// CustomCap can be applied to [Polyline] with any stroke pattern. |
| /// |
| /// [bitmapDescriptor] must not be null. |
| /// |
| /// [refWidth] is the reference stroke width (in pixels) - the stroke width for which |
| /// the cap bitmap at its native dimension is designed. Must be positive. Default value |
| /// is 10 pixels. |
| static Cap customCapFromBitmap( |
| BitmapDescriptor bitmapDescriptor, { |
| double refWidth = 10, |
| }) { |
| assert(refWidth > 0.0); |
| return Cap._(<Object>['customCap', bitmapDescriptor.toJson(), refWidth]); |
| } |
| |
| final Object _json; |
| |
| /// Converts this object to something serializable in JSON. |
| Object toJson() => _json; |
| } |