Пример #1
0
        internal static void _paintUniformBorderWithRadius(Canvas canvas, Rect rect, BorderSide side,
                                                           BorderRadius borderRadius)
        {
            D.assert(side.style != BorderStyle.none);
            Paint paint = new Paint();

            paint.color = side.color;
            RRect outer = borderRadius.toRRect(rect);
            float width = side.width;

            if (width == 0.0f)
            {
                paint.style       = PaintingStyle.stroke;
                paint.strokeWidth = 0.0f;
                canvas.drawRRect(outer, paint);
            }
            else
            {
                RRect inner = outer.deflate(width);
                canvas.drawDRRect(outer, inner, paint);
            }
        }
Пример #2
0
        public override bool hitTest(Size size, Offset position, TextDirection textDirection)
        {
            D.assert((Offset.zero & size).contains(position));
            switch (shape)
            {
            case BoxShape.rectangle:
                if (borderRadius != null)
                {
                    RRect bounds = borderRadius.toRRect(Offset.zero & size);
                    return(bounds.contains(position));
                }

                return(true);

            case BoxShape.circle:
                Offset center   = size.center(Offset.zero);
                float  distance = (position - center).distance;
                return(distance <= Mathf.Min(size.width, size.height) / 2.0);
            }

            return(false);
        }