drawSpecialPoint static method

void drawSpecialPoint(
  1. Canvas canvas,
  2. PointModel pointModel,
  3. Offset centerPointOffset
)

Implementation

static void drawSpecialPoint(
    Canvas canvas, PointModel pointModel, Offset centerPointOffset) {
  if (pointModel.cellPointSet.pointType == PointType.PlacehoderImage) {
    if (pointModel.cellPointSet.placehoderImage == null) {
      return;
    }

    var placeImageSize = pointModel.cellPointSet.placeImageSize;
    canvas.drawImageRect(
      pointModel.cellPointSet.placehoderImage!,
      Rect.fromLTWH(
          0,
          0,
          pointModel.cellPointSet.placehoderImage!.width.toDouble(),
          pointModel.cellPointSet.placehoderImage!.height.toDouble()),
      Rect.fromLTWH(
          pointModel.offset.dx -
              placeImageSize.width / 2 +
              centerPointOffset.dx,
          pointModel.offset.dy -
              placeImageSize.height / 2 +
              centerPointOffset.dy,
          placeImageSize.width,
          placeImageSize.height),
      Paint(),
    );
  } else {
    var centerOffset = Offset(pointModel.offset.dx + centerPointOffset.dx,
        pointModel.offset.dy + centerPointOffset.dy);
    var rect = Rect.fromLTRB(
      centerOffset.dx - pointModel.cellPointSet.pointSize.width / 2,
      centerOffset.dy - pointModel.cellPointSet.pointSize.height / 2,
      centerOffset.dx + pointModel.cellPointSet.pointSize.width / 2,
      centerOffset.dy + pointModel.cellPointSet.pointSize.height / 2,
    );
    var paint = Paint()
      ..isAntiAlias = true
      ..strokeWidth = 1.0
      ..strokeCap = StrokeCap.round
      ..style = PaintingStyle.fill
      ..shader = LinearGradient(
              begin: Alignment.topCenter,
              end: Alignment.bottomCenter,
              tileMode: TileMode.mirror,
              colors: pointModel.cellPointSet.pointShaderColors ??
                  [defaultColor, defaultColor.withOpacity(0.3)])
          .createShader(rect);
    canvas
      ..drawDRRect(
          RRect.fromRectAndCorners(rect,
              topLeft: pointModel.cellPointSet.pointRadius,
              topRight: pointModel.cellPointSet.pointRadius,
              bottomLeft: pointModel.cellPointSet.pointRadius,
              bottomRight: pointModel.cellPointSet.pointRadius),
          RRect.zero,
          paint);
  }
}