From 9183c67d51367f4cb6c2a0ddd665086dde40580a Mon Sep 17 00:00:00 2001 From: MELLATI Fatah Date: Wed, 21 Dec 2022 17:26:29 +0100 Subject: [PATCH 1/4] update git config --- .github/workflows/config.yaml | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/.github/workflows/config.yaml b/.github/workflows/config.yaml index 7b30920..96903d8 100644 --- a/.github/workflows/config.yaml +++ b/.github/workflows/config.yaml @@ -3,7 +3,10 @@ name: test on: pull_request: branches: - - master + - main + - dev + push: + - dev jobs: flutter_test: @@ -20,9 +23,10 @@ jobs: - run: | flutter doctor flutter pub get + flutter test # flutter test --coverage # bash <(curl -s https://codecov.io/bash) - - run: | - flutter test - working-directory: ./example + # - run: | + # flutter test + # working-directory: ./example From af165780d4f885ee7f95c6dae5703218bb3a3201 Mon Sep 17 00:00:00 2001 From: MELLATI Fatah Date: Sun, 15 Jan 2023 12:47:57 +0100 Subject: [PATCH 2/4] add example and fix bugs --- example/README.md | 50 +- .../ex_01_shape_layout.dart | 44 + .../ex_02_color_and_gradient.dart | 63 + .../lib/ex_001_basic_shapes/ex_03_shadow.dart | 64 + .../ex_04_child_alignment.dart | 75 ++ .../ex_05_clip_behaviour.dart | 136 +++ .../ex_06_clip_behaviour_image.dart | 131 ++ .../ex_001_basic_shapes/ex_07_background.dart | 94 ++ .../ex_001_basic_shapes/ex_08_foreground.dart | 86 ++ .../ex_09_oval_and_circle.dart | 196 +++ .../lib/ex_001_basic_shapes/ex_10_dating.dart | 247 ++++ example/lib/main.dart | 286 ++++- example/lib/main1.dart | 1085 ---------------- example/lib/main2.dart | 1012 --------------- example/test/flutter_logo_image.png | Bin 0 -> 9061 bytes lib/shape_builder.dart | 13 +- lib/src/base_render_shape.dart | 239 ++-- lib/src/base_single_child_render_shape.dart | 168 ++- lib/src/colorize.dart | 5 +- lib/src/flex_spacer.dart | 49 - lib/src/gradient_color.dart | 6 +- .../fitted_box_render copy.dart | 470 ------- .../layout_arranger/fitted_box_render.dart | 473 ------- lib/src/layout_arranger/inherited_layout.dart | 68 -- lib/src/layout_arranger/inherited_size.dart | 50 - lib/src/layout_arranger/query.dart | 55 - .../scaffold_inherited_layout.dart | 223 ---- lib/src/oval.dart | 187 ++- lib/src/rectangle.dart | 181 ++- lib/src/rounded_rectangle.dart | 231 +++- lib/src/shape_builder.dart | 523 ++------ lib/src/stack_render_shape.dart | 215 ++++ test/build_test.dart | 372 ++++++ test/circle_test.dart | 440 +++++-- test/goldens/circle/circle_0001.png | Bin 0 -> 3267 bytes test/goldens/circle/circle_0014.png | Bin 0 -> 28659 bytes test/goldens/circle/circle_019.png | Bin 14546 -> 11242 bytes test/goldens/circle/circle_024.png | Bin 18986 -> 18991 bytes test/goldens/circle/circle_026.png | Bin 0 -> 34463 bytes test/goldens/circle/circle_027.png | Bin 0 -> 16745 bytes test/goldens/circle/circle_028.png | Bin 0 -> 16745 bytes test/goldens/circle/circle_029.png | Bin 0 -> 16745 bytes test/goldens/circle/circle_030.png | Bin 0 -> 4117 bytes test/goldens/oval/oval_0001.png | Bin 0 -> 10778 bytes test/goldens/oval/oval_014.png | Bin 22557 -> 30394 bytes test/goldens/oval/oval_019.png | Bin 17308 -> 12272 bytes test/goldens/oval/oval_024.png | Bin 10957 -> 13176 bytes test/goldens/oval/oval_025bis.png | Bin 0 -> 36967 bytes test/goldens/oval/oval_026.png | Bin 0 -> 36967 bytes test/goldens/oval/oval_027.png | Bin 0 -> 10160 bytes test/goldens/oval/oval_028.png | Bin 0 -> 6853 bytes test/goldens/oval/oval_029.png | Bin 0 -> 13834 bytes test/goldens/oval/oval_030.png | Bin 0 -> 5451 bytes test/goldens/rcapsule/rcapsule_0001.png | Bin 0 -> 10277 bytes test/goldens/rcapsule/rcapsule_014.png | Bin 22069 -> 29961 bytes test/goldens/rcapsule/rcapsule_019.png | Bin 15403 -> 11478 bytes test/goldens/rcapsule/rcapsule_023.png | Bin 18854 -> 18846 bytes test/goldens/rcapsule/rcapsule_024.png | Bin 10726 -> 12984 bytes test/goldens/rcapsule/rcapsule_026.png | Bin 0 -> 37273 bytes test/goldens/rcapsule/rcapsule_027.png | Bin 0 -> 9743 bytes test/goldens/rcapsule/rcapsule_028.png | Bin 0 -> 5974 bytes test/goldens/rcapsule/rcapsule_029.png | Bin 0 -> 11129 bytes test/goldens/rcapsule/rcapsule_030.png | Bin 0 -> 4000 bytes test/goldens/rectangle/rectangle_0001.png | Bin 0 -> 3267 bytes test/goldens/rectangle/rectangle_013.png | Bin 7373 -> 7706 bytes test/goldens/rectangle/rectangle_014.png | Bin 11562 -> 15292 bytes test/goldens/rectangle/rectangle_019.png | Bin 8899 -> 6505 bytes test/goldens/rectangle/rectangle_023.png | Bin 9383 -> 9417 bytes test/goldens/rectangle/rectangle_024.png | Bin 6247 -> 7038 bytes test/goldens/rectangle/rectangle_025.png | Bin 0 -> 28821 bytes test/goldens/rectangle/rectangle_026.png | Bin 0 -> 28821 bytes test/goldens/rectangle/rectangle_027.png | Bin 0 -> 5281 bytes test/goldens/rectangle/rectangle_028.png | Bin 0 -> 4277 bytes test/goldens/rectangle/rectangle_029.png | Bin 0 -> 7454 bytes test/goldens/rectangle/rectangle_030.png | Bin 0 -> 3464 bytes test/goldens/rrectangle/rrectangle_0001.png | Bin 0 -> 5033 bytes test/goldens/rrectangle/rrectangle_014.png | Bin 13967 -> 18938 bytes test/goldens/rrectangle/rrectangle_019.png | Bin 10471 -> 7764 bytes test/goldens/rrectangle/rrectangle_023.png | Bin 11646 -> 11747 bytes test/goldens/rrectangle/rrectangle_024.png | Bin 7395 -> 8578 bytes test/goldens/rrectangle/rrectangle_29.png | Bin 0 -> 31278 bytes test/goldens/rrectangle/rrectangle_30.png | Bin 0 -> 6547 bytes test/goldens/rrectangle/rrectangle_31.png | Bin 0 -> 4630 bytes test/goldens/rrectangle/rrectangle_32.png | Bin 0 -> 8238 bytes test/goldens/rrectangle/rrectangle_33.png | Bin 0 -> 4000 bytes test/goldens/rsquare/rsquare_0001.png | Bin 0 -> 3267 bytes test/goldens/rsquare/rsquare_014.png | Bin 16850 -> 17989 bytes test/goldens/rsquare/rsquare_019.png | Bin 9884 -> 7755 bytes test/goldens/rsquare/rsquare_023.png | Bin 11646 -> 11747 bytes test/goldens/rsquare/rsquare_024.png | Bin 7395 -> 8578 bytes test/goldens/rsquare/rsquare_029.png | Bin 0 -> 29168 bytes test/goldens/rsquare/rsquare_030.png | Bin 0 -> 13390 bytes test/goldens/rsquare/rsquare_031.png | Bin 0 -> 13390 bytes test/goldens/rsquare/rsquare_032.png | Bin 0 -> 13390 bytes test/goldens/rsquare/rsquare_33.png | Bin 0 -> 4015 bytes test/goldens/square/square_0001.png | Bin 0 -> 3295 bytes test/goldens/square/square_014.png | Bin 11596 -> 13869 bytes test/goldens/square/square_019.png | Bin 8190 -> 6534 bytes test/goldens/square/square_023.png | Bin 9383 -> 9417 bytes test/goldens/square/square_024.png | Bin 6247 -> 7038 bytes test/goldens/square/square_026.png | Bin 0 -> 26722 bytes test/goldens/square/square_027.png | Bin 0 -> 11856 bytes test/goldens/square/square_028.png | Bin 0 -> 11856 bytes test/goldens/square/square_029.png | Bin 0 -> 5710 bytes test/goldens/square/square_030.png | Bin 0 -> 3585 bytes test/oval_test.dart | 448 ++++++- test/r_capsule_test.dart | 398 +++++- test/r_rectangle_test.dart | 419 ++++++- test/r_square_test.dart | 404 +++++- test/rectangle_.dart | 1088 ----------------- test/rectangle_test.dart | 440 ++++++- test/square_test.dart | 419 ++++++- 112 files changed, 5392 insertions(+), 5761 deletions(-) create mode 100644 example/lib/ex_001_basic_shapes/ex_01_shape_layout.dart create mode 100644 example/lib/ex_001_basic_shapes/ex_02_color_and_gradient.dart create mode 100644 example/lib/ex_001_basic_shapes/ex_03_shadow.dart create mode 100644 example/lib/ex_001_basic_shapes/ex_04_child_alignment.dart create mode 100644 example/lib/ex_001_basic_shapes/ex_05_clip_behaviour.dart create mode 100644 example/lib/ex_001_basic_shapes/ex_06_clip_behaviour_image.dart create mode 100644 example/lib/ex_001_basic_shapes/ex_07_background.dart create mode 100644 example/lib/ex_001_basic_shapes/ex_08_foreground.dart create mode 100644 example/lib/ex_001_basic_shapes/ex_09_oval_and_circle.dart create mode 100644 example/lib/ex_001_basic_shapes/ex_10_dating.dart delete mode 100644 example/lib/main1.dart delete mode 100644 example/lib/main2.dart create mode 100644 example/test/flutter_logo_image.png delete mode 100644 lib/src/flex_spacer.dart delete mode 100644 lib/src/layout_arranger/fitted_box_render copy.dart delete mode 100644 lib/src/layout_arranger/fitted_box_render.dart delete mode 100644 lib/src/layout_arranger/inherited_layout.dart delete mode 100644 lib/src/layout_arranger/inherited_size.dart delete mode 100644 lib/src/layout_arranger/query.dart delete mode 100644 lib/src/layout_arranger/scaffold_inherited_layout.dart create mode 100644 lib/src/stack_render_shape.dart create mode 100644 test/build_test.dart create mode 100644 test/goldens/circle/circle_0001.png create mode 100644 test/goldens/circle/circle_0014.png create mode 100644 test/goldens/circle/circle_026.png create mode 100644 test/goldens/circle/circle_027.png create mode 100644 test/goldens/circle/circle_028.png create mode 100644 test/goldens/circle/circle_029.png create mode 100644 test/goldens/circle/circle_030.png create mode 100644 test/goldens/oval/oval_0001.png create mode 100644 test/goldens/oval/oval_025bis.png create mode 100644 test/goldens/oval/oval_026.png create mode 100644 test/goldens/oval/oval_027.png create mode 100644 test/goldens/oval/oval_028.png create mode 100644 test/goldens/oval/oval_029.png create mode 100644 test/goldens/oval/oval_030.png create mode 100644 test/goldens/rcapsule/rcapsule_0001.png create mode 100644 test/goldens/rcapsule/rcapsule_026.png create mode 100644 test/goldens/rcapsule/rcapsule_027.png create mode 100644 test/goldens/rcapsule/rcapsule_028.png create mode 100644 test/goldens/rcapsule/rcapsule_029.png create mode 100644 test/goldens/rcapsule/rcapsule_030.png create mode 100644 test/goldens/rectangle/rectangle_0001.png create mode 100644 test/goldens/rectangle/rectangle_025.png create mode 100644 test/goldens/rectangle/rectangle_026.png create mode 100644 test/goldens/rectangle/rectangle_027.png create mode 100644 test/goldens/rectangle/rectangle_028.png create mode 100644 test/goldens/rectangle/rectangle_029.png create mode 100644 test/goldens/rectangle/rectangle_030.png create mode 100644 test/goldens/rrectangle/rrectangle_0001.png create mode 100644 test/goldens/rrectangle/rrectangle_29.png create mode 100644 test/goldens/rrectangle/rrectangle_30.png create mode 100644 test/goldens/rrectangle/rrectangle_31.png create mode 100644 test/goldens/rrectangle/rrectangle_32.png create mode 100644 test/goldens/rrectangle/rrectangle_33.png create mode 100644 test/goldens/rsquare/rsquare_0001.png create mode 100644 test/goldens/rsquare/rsquare_029.png create mode 100644 test/goldens/rsquare/rsquare_030.png create mode 100644 test/goldens/rsquare/rsquare_031.png create mode 100644 test/goldens/rsquare/rsquare_032.png create mode 100644 test/goldens/rsquare/rsquare_33.png create mode 100644 test/goldens/square/square_0001.png create mode 100644 test/goldens/square/square_026.png create mode 100644 test/goldens/square/square_027.png create mode 100644 test/goldens/square/square_028.png create mode 100644 test/goldens/square/square_029.png create mode 100644 test/goldens/square/square_030.png delete mode 100644 test/rectangle_.dart diff --git a/example/README.md b/example/README.md index 2b3fce4..e612fb2 100644 --- a/example/README.md +++ b/example/README.md @@ -1,16 +1,48 @@ -# example -A new Flutter project. +# shape_builder examples ## Getting Started +First, make sure you have installed `shape_builder` package. +
-This project is a starting point for a Flutter application. -A few resources to get you started if this is your first Flutter project: +## Objective -- [Lab: Write your first Flutter app](https://docs.flutter.dev/get-started/codelab) -- [Cookbook: Useful Flutter samples](https://docs.flutter.dev/cookbook) +In these examples, you will learn how to draw different shapes from basic to more advanced ones. + + +## Layout logics + +- [01: Shape layout logics](https://github.com/GIfatahTH/shape_builder/blob/dev/example/lib/ex_001_basic_shapes/ex_01_shape_layout.dart) +
Description: + Shapes Size is determined following the following logics + * If the Shape has no child, no `height`, no `width`, and `shouldExpand` parameter is set to false (the default value), then Shape tries to size as small as possible. + * If the Shape has no `height`, no `width`, and `shouldExpand` parameter is set to false, then Shape tries to size as big as possible. + * If the Shape has child, but no `height`, no `width`, then Shape tries to size so to fit its child. + * If the Shape has `height` or `width`, then Shape tries take the given `height` or `width` respecting the constraint coming form parent. + +- [02: Shape color and gradient](https://github.com/GIfatahTH/shape_builder/blob/dev/example/lib/ex_001_basic_shapes/ex_02_color_and_gradient.dart) +
Description: + This example demonstrate how to color shapes and how to add gradients. + +- [03: Add shadow to a shape](https://github.com/GIfatahTH/shape_builder/blob/dev/example/lib/ex_001_basic_shapes/ex_03_shadow.dart) +
Description: + This example demonstrate how to add shaw to shapes. + +- [04: Child to Shape alignment](https://github.com/GIfatahTH/shape_builder/blob/dev/example/lib/ex_001_basic_shapes/ex_04_child_alignment.dart) +
Description: + This example demonstrate the logic of alignment of the child to the Shape. + +- [05: Use shapes as clipper](https://github.com/GIfatahTH/shape_builder/blob/dev/example/lib/ex_001_basic_shapes/ex_05_clip_behaviour.dart) +
Description: + This example demonstrate to use Shapes to clip widgets. + +- [06: Use shapes to clipper images](https://github.com/GIfatahTH/shape_builder/blob/dev/example/lib/ex_001_basic_shapes/ex_06_clip_behaviour_image.dart) +
Description: + This example demonstrate to use Shapes to clip images. + + + +## Questions & Suggestions +Please feel free to post an issue or PR. As always, your feedback makes this library become better and better. -For help getting started with Flutter development, view the -[online documentation](https://docs.flutter.dev/), which offers tutorials, -samples, guidance on mobile development, and a full API reference. diff --git a/example/lib/ex_001_basic_shapes/ex_01_shape_layout.dart b/example/lib/ex_001_basic_shapes/ex_01_shape_layout.dart new file mode 100644 index 0000000..33b4642 --- /dev/null +++ b/example/lib/ex_001_basic_shapes/ex_01_shape_layout.dart @@ -0,0 +1,44 @@ +import 'package:flutter/material.dart'; +import 'package:shape_builder/shape_builder.dart'; + +void main(List args) { + runApp(const _MyApp()); +} + +class _MyApp extends StatelessWidget { + const _MyApp(); + + @override + Widget build(BuildContext context) { + return const MaterialApp( + home: _MyHomePage(), + ); + } +} + +class _MyHomePage extends StatelessWidget { + const _MyHomePage(); + + @override + Widget build(BuildContext context) { + return Scaffold( + body: Center( + // shapes trie to size itself, in the following order: + // * to honor the `width`, `height`, + // * to be as big as possible if the parameter "shouldExpand" is set to true, + // * to ba as small as it child if the latter is defined, + // * to be as small as possible. + // + // TO TRY: + // Use RRectangle or Oval instead of Rectangle and try different combination + // of width, height, child and shouldExpand + child: Rectangle( + shouldExpand: true, + // width: 200, + // height: 200, + // child: Text('Child'), + ), + ), + ); + } +} diff --git a/example/lib/ex_001_basic_shapes/ex_02_color_and_gradient.dart b/example/lib/ex_001_basic_shapes/ex_02_color_and_gradient.dart new file mode 100644 index 0000000..2df7fe2 --- /dev/null +++ b/example/lib/ex_001_basic_shapes/ex_02_color_and_gradient.dart @@ -0,0 +1,63 @@ +import 'package:flutter/material.dart'; +import 'package:shape_builder/shape_builder.dart'; + +void main(List args) { + runApp(const _MyApp()); +} + +class _MyApp extends StatelessWidget { + const _MyApp(); + + @override + Widget build(BuildContext context) { + return const MaterialApp( + home: _MyHomePage(), + ); + } +} + +class _MyHomePage extends StatelessWidget { + const _MyHomePage(); + + @override + Widget build(BuildContext context) { + return Scaffold( + body: Center( + child: SingleChildScrollView( + child: Column( + children: [ + // color defaults to the primary color + Rectangle( + width: 200, + height: 200, + ), + const Divider(), + // to set the color use the color parameter + RRectangle( + color: Colors.amber, + width: 200, + height: 200, + ), + const Divider(), + // ColorWithGradient class to set a gradient + Oval( + color: ColorWithGradient( + const LinearGradient(colors: [Colors.blue, Colors.amber]), + ), + width: 200, + height: 200, + ), + const Divider(), + Oval.circle( + color: ColorWithGradient( + const RadialGradient(colors: [Colors.blue, Colors.amber]), + ), + radius: 200 / 2, + ), + ], + ), + ), + ), + ); + } +} diff --git a/example/lib/ex_001_basic_shapes/ex_03_shadow.dart b/example/lib/ex_001_basic_shapes/ex_03_shadow.dart new file mode 100644 index 0000000..3ee877c --- /dev/null +++ b/example/lib/ex_001_basic_shapes/ex_03_shadow.dart @@ -0,0 +1,64 @@ +import 'package:flutter/material.dart'; +import 'package:shape_builder/shape_builder.dart'; + +void main(List args) { + runApp(const _MyApp()); +} + +class _MyApp extends StatelessWidget { + const _MyApp(); + + @override + Widget build(BuildContext context) { + return const MaterialApp( + home: _MyHomePage(), + ); + } +} + +class _MyHomePage extends StatelessWidget { + const _MyHomePage(); + + @override + Widget build(BuildContext context) { + return Scaffold( + body: Center( + child: Column( + children: [ + // Use box shadow to add a shadow + Oval.circle( + radius: 100, + boxShadow: const [ + BoxShadow( + color: Colors.grey, + spreadRadius: 7, + blurRadius: 7, + offset: Offset(10, 10), + ) + ], + ), + const Divider(), + Oval.circle( + radius: 100, + swipeAngle: 4, + boxShadow: const [ + BoxShadow( + color: Colors.grey, + spreadRadius: 7, + blurRadius: 7, + ) + ], + ), + const Divider(), + // You can use BoxShadowWithElevation to add shadow from elevation + Oval.circle( + radius: 100, + swipeAngle: 4, + boxShadow: BoxShadowWithElevation(12, color: Colors.amber), + ), + ], + ), + ), + ); + } +} diff --git a/example/lib/ex_001_basic_shapes/ex_04_child_alignment.dart b/example/lib/ex_001_basic_shapes/ex_04_child_alignment.dart new file mode 100644 index 0000000..8c84b2f --- /dev/null +++ b/example/lib/ex_001_basic_shapes/ex_04_child_alignment.dart @@ -0,0 +1,75 @@ +import 'package:flutter/material.dart'; +import 'package:shape_builder/shape_builder.dart'; + +void main(List args) { + runApp(const _MyApp()); +} + +class _MyApp extends StatelessWidget { + const _MyApp(); + + @override + Widget build(BuildContext context) { + return const MaterialApp( + home: _MyHomePage(), + ); + } +} + +class _MyHomePage extends StatelessWidget { + const _MyHomePage(); + + @override + Widget build(BuildContext context) { + return Scaffold( + body: Center( + child: Column( + children: [ + // FIRST CASE: Child is grater than Shape dimension + // + // Default alignment is Alignment.center + Rectangle.square( + child: const Text('This is a ME'), + ), + const Divider(), + // + // Because child size is greater than shape size the shape is aligned + // to the child + Rectangle.square( + alignment: Alignment.topLeft, + child: const Text('This is a ME'), + ), + const Divider(), + Rectangle.square( + side: 50, + alignment: Alignment.centerRight, + child: const Text('This is a ME'), + ), + const Divider(), + // Second CASE: Shape size is greater than child size + // + // Default alignment is Alignment.center + Rectangle.square( + side: 150, + child: const Text('This is a ME'), + ), + const Divider(), + // Because of the shape size is greater than child size the child is aligned + // to the shape + Rectangle.square( + side: 150, + alignment: Alignment.topLeft, + child: const Text('This is a ME'), + ), + const Divider(), + Rectangle.square( + side: 150, + alignment: Alignment.bottomRight, + child: const Text('This is a ME'), + ), + ], + ), + ), + ); + } +} diff --git a/example/lib/ex_001_basic_shapes/ex_05_clip_behaviour.dart b/example/lib/ex_001_basic_shapes/ex_05_clip_behaviour.dart new file mode 100644 index 0000000..7599e01 --- /dev/null +++ b/example/lib/ex_001_basic_shapes/ex_05_clip_behaviour.dart @@ -0,0 +1,136 @@ +import 'package:flutter/material.dart'; +import 'package:shape_builder/shape_builder.dart'; + +void main(List args) { + runApp(const _MyApp()); +} + +class _MyApp extends StatelessWidget { + const _MyApp(); + + @override + Widget build(BuildContext context) { + return const MaterialApp( + home: _MyHomePage(), + ); + } +} + +class _MyHomePage extends StatelessWidget { + const _MyHomePage(); + + @override + Widget build(BuildContext context) { + return Scaffold( + body: Center( + child: SingleChildScrollView( + child: Column( + children: [ + // Text without clipping + Rectangle( + // Default to Clip.none + clipBehavior: Clip.none, + child: const Text('This is a TEXT'), + ), + const Divider(), + // Text with clipping + Rectangle( + width: 50, + shrinkToClippedSize: false, + clipBehavior: Clip.antiAlias, + child: const Text('This is a TEXT'), + ), + const Divider(), + // By default the The shape size collapses to the clipped size + Container( + // We add a red container to see the size of the shape + // and compare it to the size of the clipped zone + color: Colors.red, + padding: const EdgeInsets.all(4), + child: Rectangle( + width: 50, + clipBehavior: Clip.antiAlias, + child: const Text('This is a TEXT'), + ), + ), + const Divider(), + Container( + color: Colors.red, + padding: const EdgeInsets.all(4), + child: Rectangle( + width: 50, + clipBehavior: Clip.antiAlias, + // if we set shrinkToClippedSize is set to false, + // the size of the shape is equal to the size of the child + shrinkToClippedSize: false, + child: const Text('This is a TEXT'), + ), + ), + const Divider(), + // Clip an image inside a circle + // TRY RESIZE THE WINDOW OF THE APP, and see the the image keeps + // its aspect ration + Oval.circle( + radius: 100, + clipBehavior: Clip.antiAlias, + child: Image.network( + 'https://placebear.com/1200/300', + fit: BoxFit.cover, + ), + ), + const Divider(), + // Clip an image inside an Oval and add Border using PaintStyle + Oval( + width: 200, + height: 120, + clipBehavior: Clip.antiAlias, + paintStyle: PaintStyle( + style: PaintingStyle.stroke, + strokeWidth: 8, + ), + childIsInTheForeground: false, + child: Image.network( + 'https://placebear.com/1200/300', + fit: BoxFit.cover, + ), + ), + const Divider(), + // Clip an image inside a rounded rectangle. + // Here we add a gradient from black to transparent. + // This is a common use case where the image may have a white color + // and we want to ensure texts are readable. + RRectangle( + width: 200, + height: 120, + clipBehavior: Clip.antiAlias, + childIsInTheForeground: false, + color: ColorWithGradient( + LinearGradient( + colors: [Colors.black.withOpacity(0.8), Colors.transparent], + begin: Alignment.bottomCenter, + end: Alignment.topCenter, + ), + ), + child: Image.network( + 'https://placebear.com/400/240', + fit: BoxFit.cover, + width: 400, + height: 240, + ), + ) + .foreground( + alignment: const Alignment(0, .8), + ) + .build( + const Text( + 'Bear', + style: TextStyle(color: Colors.white), + ), + ) + ], + ), + ), + ), + ); + } +} diff --git a/example/lib/ex_001_basic_shapes/ex_06_clip_behaviour_image.dart b/example/lib/ex_001_basic_shapes/ex_06_clip_behaviour_image.dart new file mode 100644 index 0000000..6f8638e --- /dev/null +++ b/example/lib/ex_001_basic_shapes/ex_06_clip_behaviour_image.dart @@ -0,0 +1,131 @@ +import 'package:flutter/material.dart'; +import 'package:shape_builder/shape_builder.dart'; + +void main(List args) { + runApp(const _MyApp()); +} + +class _MyApp extends StatelessWidget { + const _MyApp(); + + @override + Widget build(BuildContext context) { + return const MaterialApp( + home: Scaffold( + body: Padding( + padding: EdgeInsets.all(8.0), + child: _MyHomePage(), + )), + ); + } +} + +class _MyHomePage extends StatefulWidget { + const _MyHomePage({super.key}); + + @override + State<_MyHomePage> createState() => __MyHomePageState(); +} + +class __MyHomePageState extends State<_MyHomePage> { + double _alignmentX = 0.0; + double _alignmentY = 0.0; + bool _shrinkClippedZone = true; + bool _shouldExpand = false; + bool _expandToFullWidth = false; + @override + Widget build(BuildContext context) { + return Column( + children: [ + ..._Sliders(), + const Divider(), + SizedBox( + width: _expandToFullWidth ? double.infinity : null, + child: Rectangle( + width: 120, + height: 100, + clipBehavior: Clip.antiAlias, + alignment: Alignment(_alignmentX, _alignmentY), + shrinkToClippedSize: _shrinkClippedZone, + shouldExpand: _shouldExpand, + inkWell: InkWell(onTap: () {}), + child: Image.network( + 'https://placebear.com/600/240', + fit: BoxFit.cover, + width: 600, + height: 240, + ), + ).colorize(), + ), + ], + ); + } + + List _Sliders() { + return [ + Row( + children: [ + const Text('X alignment'), + Expanded( + child: Slider( + min: -1.0, + max: 1.0, + value: _alignmentX, + onChanged: (value) => setState(() { + _alignmentX = value; + }), + ), + ), + ], + ), + Row( + children: [ + const Text('Y alignment'), + Expanded( + child: Slider( + min: -1.0, + max: 1.0, + value: _alignmentY, + onChanged: (value) => setState(() { + _alignmentY = value; + }), + ), + ), + ], + ), + Row( + children: [ + const Text('Shrink clipped zone'), + Checkbox( + value: _shrinkClippedZone, + onChanged: (value) => setState( + () { + _shrinkClippedZone = value!; + }, + ), + ), + const Spacer(), + const Text('Should Expand'), + Checkbox( + value: _shouldExpand, + onChanged: (value) => setState( + () { + _shouldExpand = value!; + }, + ), + ), + const Spacer(), + const Text('Fill width'), + Checkbox( + value: _expandToFullWidth, + onChanged: (value) => setState( + () { + _expandToFullWidth = value!; + }, + ), + ) + ], + ), + ]; + } +} diff --git a/example/lib/ex_001_basic_shapes/ex_07_background.dart b/example/lib/ex_001_basic_shapes/ex_07_background.dart new file mode 100644 index 0000000..d501d5e --- /dev/null +++ b/example/lib/ex_001_basic_shapes/ex_07_background.dart @@ -0,0 +1,94 @@ +import 'package:flutter/material.dart'; +import 'package:shape_builder/shape_builder.dart'; + +void main(List args) { + runApp(const _MyApp()); +} + +class _MyApp extends StatelessWidget { + const _MyApp(); + + @override + Widget build(BuildContext context) { + return const MaterialApp( + home: Scaffold( + body: Padding( + padding: EdgeInsets.all(8.0), + child: _MyHomePage(), + )), + ); + } +} + +class _MyHomePage extends StatelessWidget { + const _MyHomePage({super.key}); + + @override + Widget build(BuildContext context) { + return Column( + children: [ + Oval.circle( + color: Colors.purple, + radius: 35, + ) + .background(color: Colors.blue) + .buildCircle(radius: 55) + .background( + color: Colors.amber, + clipBehavior: Clip.antiAlias, + ) + .buildCircle(radius: 75), + const Divider(), + const Text('4') + .background(color: Colors.red) + .buildSquare(50) + .background(color: Colors.black, alignment: Alignment.topLeft) + .buildSquare(100) + .background(color: Colors.blue, alignment: Alignment.bottomRight) + .buildSquare(150), + const Divider(), + const Icon( + Icons.favorite, + size: 48, + color: Colors.white, + ) + .background( + clipBehavior: Clip.antiAlias, + boxShadow: BoxShadowWithElevation( + 8, + color: const Color.fromARGB(122, 4, 4, 4), + ), + color: ColorWithGradient( + LinearGradient( + colors: [Colors.blue.shade300, Colors.blue.shade900], + ), + ), + ) + .buildCircle(radius: 100) + .background( + alignment: const Alignment(1, 1) / 1.1, + ) + .build( + Padding( + padding: const EdgeInsets.all(12), + child: Text( + '5', + style: Theme.of(context).textTheme.titleLarge!.copyWith( + color: Colors.white, + ), + ), + ) + .background( + clipBehavior: Clip.antiAliasWithSaveLayer, + color: Colors.blue.shade900, + boxShadow: BoxShadowWithElevation( + 12, + color: Colors.white, + ), + ) + .buildCircle(), + ), + ], + ); + } +} diff --git a/example/lib/ex_001_basic_shapes/ex_08_foreground.dart b/example/lib/ex_001_basic_shapes/ex_08_foreground.dart new file mode 100644 index 0000000..61bc738 --- /dev/null +++ b/example/lib/ex_001_basic_shapes/ex_08_foreground.dart @@ -0,0 +1,86 @@ +import 'package:flutter/material.dart'; +import 'package:shape_builder/shape_builder.dart'; + +void main(List args) { + runApp(const _MyApp()); +} + +class _MyApp extends StatelessWidget { + const _MyApp(); + + @override + Widget build(BuildContext context) { + return const MaterialApp( + home: Scaffold( + body: Padding( + padding: EdgeInsets.all(8.0), + child: _MyHomePage(), + )), + ); + } +} + +class _MyHomePage extends StatelessWidget { + const _MyHomePage({super.key}); + + @override + Widget build(BuildContext context) { + return Column( + children: [ + Oval.circle(color: Colors.amber, radius: 75) + .foreground(color: Colors.blue) + .buildCircle(radius: 55) + .foreground(color: Colors.purple) + .buildCircle(radius: 35), + const Divider(), + Rectangle.square( + side: 150, + ) + .foreground(color: Colors.black, alignment: Alignment.bottomRight) + .buildSquare(100) + .foreground(color: Colors.red) + .buildSquare(50) + .foreground(color: Colors.blue) + .build(const Text('4')), + const Divider(), + const Icon( + Icons.favorite, + size: 48, + color: Colors.white, + ) + .background( + boxShadow: BoxShadowWithElevation( + 8, + color: const Color.fromARGB(122, 4, 4, 4), + ), + color: ColorWithGradient( + LinearGradient( + colors: [Colors.blue.shade300, Colors.blue.shade900], + ), + ), + ) + .buildCircle(radius: 100) + .foreground(alignment: const Alignment(1, 1) / 1.1) + .build( + Padding( + padding: const EdgeInsets.all(12), + child: Text( + '5', + style: Theme.of(context).textTheme.titleLarge!.copyWith( + color: Colors.white, + ), + ), + ) + .background( + color: Colors.blue.shade900, + boxShadow: BoxShadowWithElevation( + 12, + color: Colors.white, + ), + ) + .buildCircle(), + ), + ], + ); + } +} diff --git a/example/lib/ex_001_basic_shapes/ex_09_oval_and_circle.dart b/example/lib/ex_001_basic_shapes/ex_09_oval_and_circle.dart new file mode 100644 index 0000000..58ebdba --- /dev/null +++ b/example/lib/ex_001_basic_shapes/ex_09_oval_and_circle.dart @@ -0,0 +1,196 @@ +import 'dart:math'; + +import 'package:flutter/material.dart'; +import 'package:shape_builder/shape_builder.dart'; + +void main(List args) { + runApp(const _MyApp()); +} + +class _MyApp extends StatelessWidget { + const _MyApp(); + + @override + Widget build(BuildContext context) { + return const MaterialApp( + home: Scaffold( + body: Padding( + padding: EdgeInsets.all(16.0), + child: _MyHomePage(), + ), + ), + ); + } +} + +class _MyHomePage extends StatefulWidget { + const _MyHomePage({super.key}); + + @override + State<_MyHomePage> createState() => _MyHomePageState(); +} + +class _MyHomePageState extends State<_MyHomePage> { + double _value1 = 10; + double _value2 = 10; + double _value3 = 10; + double _strokeWidth = 4.0; + bool _shouldClosePathToCenter = true; + bool _useStroke = false; + @override + Widget build(BuildContext context) { + return Column( + children: [ + ..._sliders(), + const Divider(), + Expanded( + child: Oval.circle( + shouldClosePathToCenter: _shouldClosePathToCenter, + radius: 100, + startAngle: 0, + swipeAngle: _getSwipeAngle(_value1), + inkWell: InkWell( + onTap: () {}, + ), + paintStyle: _useStroke + ? PaintStyle( + style: PaintingStyle.stroke, + strokeWidth: _strokeWidth, + ) + : null, + ) + .foreground( + color: Colors.amber, + paintStyle: _useStroke + ? PaintStyle( + style: PaintingStyle.stroke, + strokeWidth: _strokeWidth, + ) + : null, + ) + .inkWell( + InkWell( + onTap: () {}, + ), + ) + .buildCircle( + startAngle: _getSwipeAngle(_value1), + swipeAngle: _getSwipeAngle(_value2), + shouldClosePathToCenter: _shouldClosePathToCenter, + ) + .foreground( + color: Colors.green, + paintStyle: _useStroke + ? PaintStyle( + style: PaintingStyle.stroke, + strokeWidth: _strokeWidth, + ) + : null, + ) + .buildCircle( + startAngle: _getSwipeAngle(_value1) + _getSwipeAngle(_value2), + swipeAngle: _getSwipeAngle(_value3), + shouldClosePathToCenter: _shouldClosePathToCenter, + ), + ), + ], + ); + } + + double _getSwipeAngle(double value) { + final total = _value1 + _value2 + _value3; + if (total == 0) return 0; + return 2 * pi * value / total; + } + + List _sliders() { + return [ + Row( + children: [ + const Text('value 1'), + Expanded( + child: Slider( + min: 0, + max: 100, + value: _value1, + onChanged: (value) => setState(() { + _value1 = value; + }), + ), + ), + ], + ), + Row( + children: [ + const Text('value 2'), + Expanded( + child: Slider( + min: 0, + max: 100, + value: _value2, + activeColor: Colors.amber, + onChanged: (value) => setState(() { + _value2 = value; + }), + ), + ), + ], + ), + Row( + children: [ + const Text('value 3'), + Expanded( + child: Slider( + min: 0, + max: 100, + value: _value3, + activeColor: Colors.green, + onChanged: (value) => setState(() { + _value3 = value; + }), + ), + ), + ], + ), + Row( + children: [ + const Text('Close Path To Center'), + Checkbox( + value: _shouldClosePathToCenter, + onChanged: (v) => setState( + () { + _shouldClosePathToCenter = v!; + }, + ), + ), + const Spacer(), + const Text('Use stroke'), + Checkbox( + value: _useStroke, + onChanged: (v) => setState( + () { + _useStroke = v!; + }, + ), + ) + ], + ), + if (_useStroke) + Row( + children: [ + const Text('Stroke width'), + Expanded( + child: Slider( + min: 0, + max: 100, + value: _strokeWidth, + onChanged: (value) => setState(() { + _strokeWidth = value; + }), + ), + ), + ], + ), + ]; + } +} diff --git a/example/lib/ex_001_basic_shapes/ex_10_dating.dart b/example/lib/ex_001_basic_shapes/ex_10_dating.dart new file mode 100644 index 0000000..893851f --- /dev/null +++ b/example/lib/ex_001_basic_shapes/ex_10_dating.dart @@ -0,0 +1,247 @@ +import 'package:flutter/material.dart'; +import 'package:shape_builder/shape_builder.dart'; + +void main(List args) { + runApp(const _MyApp()); +} + +class _MyHomePage extends StatelessWidget { + const _MyHomePage(); + + @override + Widget build(BuildContext context) { + final User user = fakeUser; + return Scaffold( + body: Padding( + padding: const EdgeInsets.all(8.0), + child: Column( + children: [ + RRectangle( + height: MediaQuery.of(context).size.height / 1.4, + width: MediaQuery.of(context).size.width, + borderRadius: const BorderRadius.all(Radius.circular(8.0)), + color: ColorWithGradient( + const LinearGradient( + colors: [ + Color.fromARGB(200, 0, 0, 0), + Color.fromARGB(0, 0, 0, 0) + ], + begin: Alignment.bottomCenter, + end: Alignment.center, + ), + ), + boxShadow: [ + BoxShadow( + color: Colors.grey.withOpacity(.5), + spreadRadius: 4, + blurRadius: 4, + offset: const Offset(3, 3), + ) + ], + clipBehavior: Clip.antiAlias, + childIsInTheForeground: false, + child: Image.network( + user.imageUrls[0], + fit: BoxFit.cover, + ), + ) + .foreground( + alignment: const Alignment(-.7, .8), + ) + .build( + Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + '${user.name}, ${user.age}', + style: Theme.of(context) + .textTheme + .headline3! + .copyWith(color: Colors.white), + ), + Text( + user.jobTitle, + style: Theme.of(context).textTheme.headline6!.copyWith( + color: Colors.white, fontWeight: FontWeight.normal), + ), + const SizedBox(height: 16), + SizedBox( + height: 70, + child: ListView.builder( + shrinkWrap: true, + scrollDirection: Axis.horizontal, + itemCount: user.imageUrls.length + 1, + itemBuilder: (builder, index) { + return (index < user.imageUrls.length) + ? Image.network( + user.imageUrls[index], + ) + .background( + boxShadow: BoxShadowWithElevation( + 2, + color: Colors.white60, + ), + ) + .buildRRect() + .padding + .right() + : Icon( + Icons.info_outline, + size: 25, + color: Theme.of(context).primaryColor, + ) + .background(color: Colors.white) + .buildCircle(radius: 30); + }, + ), + ), + ], + ), + ), + const SizedBox(height: 16), + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + const ChoiceButton( + color: Color(0xFFE84545), + icon: Icons.clear_rounded, + ), + const ChoiceButton( + width: 80, + height: 80, + size: 30, + color: Colors.white, + hasGradient: true, + icon: Icons.favorite, + ).padding.horizontal(), + const ChoiceButton( + color: Color(0xFF2B2E4A), + icon: Icons.watch_later, + ), + ], + ) + ], + ), + ), + ); + } +} + +class ChoiceButton extends StatelessWidget { + final double width; + final double height; + final double size; + final bool hasGradient; + final Color? color; + final IconData icon; + + const ChoiceButton({ + Key? key, + this.width = 60, + this.height = 60, + this.size = 25, + this.hasGradient = false, + required this.color, + required this.icon, + }) : super(key: key); + + @override + Widget build(BuildContext context) { + return Icon( + icon, + size: size, + color: color, + ) + .background( + color: hasGradient + ? ColorWithGradient( + const LinearGradient( + colors: [ + Color(0xFF2B2E4A), + Color(0xFFE84545), + ], + begin: Alignment.centerLeft, + end: Alignment.centerRight, + ), + ) + : Colors.white, + boxShadow: [ + BoxShadow( + color: Colors.grey.withOpacity(0.5), + spreadRadius: 4, + blurRadius: 4, + offset: const Offset(3, 3), + ), + ], + clipBehavior: Clip.antiAlias, + ) + .inkWell( + InkWell( + onTap: () { + print('ontap'); + }, + onDoubleTap: () { + print('doubletap'); + }, + ), + ) + .buildOval( + width: width, + height: height, + ); + } +} + +class _MyApp extends StatelessWidget { + const _MyApp(); + + @override + Widget build(BuildContext context) { + return const MaterialApp( + home: _MyHomePage(), + ); + } +} + +class User { + final String? id; + final String name; + final int age; + final String gender; + final List imageUrls; + final List interests; + final String bio; + final String jobTitle; + final String location; + User({ + this.id, + required this.name, + required this.age, + required this.gender, + required this.imageUrls, + required this.interests, + required this.bio, + required this.jobTitle, + required this.location, + }); +} + +final fakeUser = User( + id: '1', + name: 'John', + age: 25, + gender: 'Male', + imageUrls: [ + 'https://images.unsplash.com/photo-1595623238469-fc58b3839cf6?ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&ixlib=rb-1.2.1&auto=format&fit=crop&w=755&q=80', + 'https://images.unsplash.com/photo-1595623238469-fc58b3839cf6?ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&ixlib=rb-1.2.1&auto=format&fit=crop&w=755&q=80', + 'https://images.unsplash.com/photo-1595623238469-fc58b3839cf6?ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&ixlib=rb-1.2.1&auto=format&fit=crop&w=755&q=80', + 'https://images.unsplash.com/photo-1595623238469-fc58b3839cf6?ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&ixlib=rb-1.2.1&auto=format&fit=crop&w=755&q=80', + 'https://images.unsplash.com/photo-1595623238469-fc58b3839cf6?ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&ixlib=rb-1.2.1&auto=format&fit=crop&w=755&q=80', + ], + jobTitle: 'Job Title Here', + interests: ['Music', 'Economics', 'Football'], + bio: + 'Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo.', + location: 'Milan', +); diff --git a/example/lib/main.dart b/example/lib/main.dart index c6a974a..4376341 100644 --- a/example/lib/main.dart +++ b/example/lib/main.dart @@ -27,70 +27,236 @@ class MyHomeBody extends StatelessWidget { return SingleChildScrollView( child: Column( children: [ - Rectangle( - child: const Text('This is A Rectangle').padding.all(), - ), - const SizedBox(height: 8), - const Text('This is A Rounded Rectangle') - .padding - .all() - .background() - .buildRRect(), - const SizedBox(height: 8), - RRectangle.capsule( - width: double.infinity, - child: const Text('This is A Capsule').padding.all(), - ), - const SizedBox(height: 8), - const Text('This is An Oval') - .padding - .all() - .background() - .buildOval(width: double.infinity), - const SizedBox(height: 8), - Rectangle.square( - color: Colors.amber, - side: 150, - child: const Text('This is A Square').padding.all(), - ), - const SizedBox(height: 8), - const Text('This is A Circle') - .background(color: Colors.amber) - .buildCircle(radius: 75, swipeAngle: 5), - const SizedBox(height: 8), - const Text('This is A Circle') - .background( - color: Colors.amber, - paintStyle: PaintStyle( - style: PaintingStyle.stroke, - strokeWidth: 4, + // MyStack( + // children: [ + // Rectangle(child: Text('1')), + // Text('2'), + // ], + // ) + // IconButton( + // hoverColor: Colors.yellow, + // onPressed: () {}, + // iconSize: 80, + // icon: Icon( + // Icons.favorite, + // // size: 80, + // ), + // ), + // const Divider(), + + // Material( + // color: Colors.transparent, + // child: InkWell( + // hoverColor: Colors.yellow, + // onTap: () {}, + // child: Material( + // color: Colors.grey, + // type: MaterialType.circle, + // // shape: BoxShape.circle, + // // decoration: BoxDecoration( + // // ), + // child: SizedBox( + // width: 80, + // height: 80, + // child: Icon(Icons.favorite), + // ), + // ), + // ), + // ), + // const Divider(), + // Material( + // color: Colors.transparent, + // child: InkWell( + // hoverColor: Colors.yellow, + // onTap: () {}, + // child: Oval.circle( + // radius: 40, + // color: Colors.grey, + // childIsInTheForeground: true, + // child: Icon(Icons.favorite), + // ), + // ), + // ), + // const Divider(), + + // Material( + // color: Colors.teal[900], + // child: Center( + // child: Ink( + // color: Colors.yellow, + // width: 200.0, + // height: 100.0, + // child: InkWell( + // hoverColor: Colors.red, + // onTap: () {/* ... */}, + // child: const Center( + // child: Icon( + // Icons.favorite, + // size: 36, + // ), + // )), + // ), + // ), + // ), + Icon(Icons.favorite) + .foreground( + clipBehavior: Clip.antiAlias, + color: ColorWithGradient( + LinearGradient(colors: [Colors.red, Colors.transparent]), ), ) - .buildCircle( - radius: 75, - swipeAngle: 5, - shouldClosePathToCenter: true, - ), - const SizedBox(height: 8), - const Text('This is A Circle') - .background( - color: ColorWithGradient( - const RadialGradient(colors: [Colors.white, Colors.amber]), + .inkWell( + InkWell( + // hoverColor: Colors.red, + onTap: () {}, ), ) - .buildCircle(radius: 75), - const SizedBox(height: 8), - Oval.circle( - radius: 75, - boxShadow: const [BoxShadow(offset: Offset(4, 4), blurRadius: 6)], - child: const Text('This is A Rectangle'), - ), - const SizedBox(height: 8), - Oval.circle( - radius: 75, - boxShadow: BoxShadowWithElevation(7, color: Colors.amber), - child: const Text('This is A Rectangle'), - ), + .buildOval(width: 80, height: 80) + // .colorize(), + + // Oval.circle( + // radius: 40, + // color: Colors.grey.withOpacity(.2), + // childIsInTheForeground: false, + // clipBehavior: Clip.antiAlias, + // inkWell: InkWell( + // splashColor: Colors.yellow, + // onTap: () {}, + // ), + // child: Icon(Icons.favorite), + // ), + // Oval.circle( + // radius: 40, + // clipBehavior: Clip.antiAlias, + // // inkWell: InkWell( + // // hoverColor: Colors.yellow, + // // onTap: () {}, + // // ), + // child: Image.network( + // 'https://placebear.com/600/240', + // fit: BoxFit.cover, + // ), + // ) + // .background( + // color: Colors.transparent, + // // clipBehavior: Clip.antiAlias, + // ) + // .inkWell( + // InkWell( + // splashColor: Colors.yellow, + // onTap: () {}, + // ), + // ) + // .buildCircle( + // radius: 40, + // ), + // Container( + // color: Colors.teal[900], + // child: Center( + // child: Ink( + // color: Colors.yellow, + // width: 200.0, + // height: 100.0, + // child: InkWell( + // onTap: () {/* ... */}, + // child: const Center( + // child: Text('YELLOW'), + // )), + // ), + // ), + // ), + // Material( + // color: Colors.grey[800], + // child: Center( + // child: Ink.image( + // image: const NetworkImage('https://placebear.com/600/240'), + // fit: BoxFit.cover, + // width: 300.0, + // height: 200.0, + // child: InkWell( + // onTap: () {/* ... */}, + // child: const Align( + // alignment: Alignment.topLeft, + // child: Padding( + // padding: EdgeInsets.all(10.0), + // child: Text( + // 'KITTEN', + // style: TextStyle( + // fontWeight: FontWeight.w900, + // color: Colors.white, + // ), + // ), + // ), + // ), + // ), + // ), + // ), + // ), + ///////////////////////////// + // Rectangle( + // child: const Text('This is A Rectangle').padding.all(), + // ), + // const SizedBox(height: 8), + // const Text('This is A Rounded Rectangle') + // .padding + // .all() + // .background() + // .buildRRect(), + // const SizedBox(height: 8), + // RRectangle.capsule( + // width: double.infinity, + // child: const Text('This is A Capsule').padding.all(), + // ), + // const SizedBox(height: 8), + // const Text('This is An Oval') + // .padding + // .all() + // .background() + // .buildOval(width: double.infinity), + // const SizedBox(height: 8), + // Rectangle.square( + // color: Colors.amber, + // side: 150, + // child: const Text('This is A Square').padding.all(), + // ), + // const SizedBox(height: 8), + // const Text('This is A Circle') + // .background(color: Colors.amber) + // .buildCircle(radius: 75, swipeAngle: 5), + // const SizedBox(height: 8), + // const Text('This is A Circle') + // .background( + // color: Colors.amber, + // paintStyle: PaintStyle( + // style: PaintingStyle.stroke, + // strokeWidth: 4, + // ), + // ) + // .buildCircle( + // radius: 75, + // swipeAngle: 5, + // shouldClosePathToCenter: true, + // ), + // const SizedBox(height: 8), + // const Text('This is A Circle') + // .background( + // color: ColorWithGradient( + // const RadialGradient(colors: [Colors.white, Colors.amber]), + // ), + // ) + // .buildCircle(radius: 75), + // const SizedBox(height: 8), + // Oval.circle( + // radius: 75, + // boxShadow: const [BoxShadow(offset: Offset(4, 4), blurRadius: 6)], + // child: const Text('This is A Rectangle'), + // ), + // const SizedBox(height: 8), + // Oval.circle( + // radius: 75, + // boxShadow: BoxShadowWithElevation(7, color: Colors.amber), + // child: const Text('This is A Rectangle'), + // ), ], ).padding.all(), ); diff --git a/example/lib/main1.dart b/example/lib/main1.dart deleted file mode 100644 index f9fcea5..0000000 --- a/example/lib/main1.dart +++ /dev/null @@ -1,1085 +0,0 @@ -import 'dart:ui'; - -import 'package:flutter/material.dart'; -import 'package:shape_builder/shape_builder.dart'; - -void main() { - runApp(const MyApp()); -} - -class MyApp extends StatelessWidget { - const MyApp({super.key}); - - // This widget is the root of your application. - @override - Widget build(BuildContext context) { - return MaterialApp( - debugShowCheckedModeBanner: false, - title: 'Flutter Demo', - theme: ThemeData( - primarySwatch: Colors.blue, - ), - home: // - // const Example1(), - // const TextFliedExample(), - // const fromParent.width(), - // AdaptiveLayout(), - // WelcomePage(), - AdaptiveExample(), - // FixedExample(), - ); - } -} - -class AdaptiveExample extends StatelessWidget { - AdaptiveExample({super.key}) { - InheritedLayout.scaleFactor = 1; - ScaffoldInheritedLayout.query = [ - Query.constant(step: 800), - Query.linear(step: 1000), - Query.constant(), - ]; - } - - @override - Widget build(BuildContext context) { - const example = 1; - return ScaffoldInheritedLayout.singleChildScrollView( - builder: (_, __) => Builder( - builder: (context) { - if (example == 6) { - return Scaffold( - appBar: AppBar( - title: const Text('Title'), - // centerTitle: true, - ), - body: const Center( - child: Text('Center text1'), - ), - ).resize().adaptive(); - } - return Scaffold( - body: Builder( - builder: (context) { - if (example == 1) { - return Row( - children: [ - const Text( - 'This is a text', - style: TextStyle(fontSize: 48), - ), - ], - ).resizeAdaptive().colorize(); - } - if (example == 2) { - return Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - const Text( - 'This is a text', - style: TextStyle(fontSize: 48), - ).resize().adaptive(), - const Text( - 'This is a text', - style: TextStyle(fontSize: 22), - ).resize().adaptive(), - Checkbox(value: true, onChanged: (_) {}), - Checkbox(value: true, onChanged: (_) {}) - .resize() - .adaptive(), - Checkbox(value: true, onChanged: (_) {}) - .resize() - .adaptive(2) - ], - ); - } - if (example == 3) { - return Padding( - padding: const EdgeInsets.all(8.0), - child: SingleChildScrollView( - child: Column( - children: [ - CheckboxListTile( - value: true, - onChanged: (_) {}, - title: const Text('This is the 0.25 title'), - ).resize().adaptive(.25).colorize(), - CheckboxListTile( - value: true, - onChanged: (_) {}, - title: const Text('This is the 0.50 title'), - ).resize().adaptive(.5), - CheckboxListTile( - value: true, - onChanged: (_) {}, - title: const Text('This is the 0.75 title'), - ).resize().adaptive(.75), - CheckboxListTile( - value: true, - onChanged: (_) {}, - title: const Text('This is the 1.00 refrence'), - ).resize().adaptive(), - CheckboxListTile( - value: true, - onChanged: (_) {}, - title: const Text('This is the 1.25 title'), - ).resize().adaptive(1.25), - CheckboxListTile( - value: true, - onChanged: (_) {}, - title: const Text('This is the 1.50 title'), - ).resize().adaptive(1.5), - CheckboxListTile( - value: true, - onChanged: (_) {}, - title: const Text('This is the 1.75 title'), - ).resize().adaptive(1.75), - CheckboxListTile( - value: true, - onChanged: (_) {}, - title: const Text('This is the 2.00 title'), - ).resize().adaptive(2), - CheckboxListTile( - value: true, - onChanged: (_) {}, - title: const Text('This is the 2.25 title'), - ).resize().adaptive(2.25), - CheckboxListTile( - value: true, - onChanged: (_) {}, - title: const Text('This is the 2.50 title'), - ).resize().adaptive(2.5), - CheckboxListTile( - value: true, - onChanged: (_) {}, - title: const Text('This is the 2.75 title'), - ).resize().adaptive(2.75), - CheckboxListTile( - value: true, - onChanged: (_) {}, - title: const Text('This is the 3.00 title'), - ).resize().adaptive(3), - ], - ).resize().adaptive(), - ), - ); - } - - if (example == 4) { - return Padding( - padding: const EdgeInsets.all(8.0), - child: Center( - child: SizedBox( - // width: 400, - child: SingleChildScrollView( - child: Column( - children: [ - const TextField( - decoration: InputDecoration( - label: Text('This is a text Fliend'), - ), - ).resize().adaptive(0.25), - const TextField( - decoration: InputDecoration( - label: Text('This is a text Fliend'), - ), - ).resize().adaptive(0.5), - const TextField( - decoration: InputDecoration( - label: Text('This is a text Fliend'), - ), - ).resize().adaptive(0.75), - const TextField( - decoration: InputDecoration( - label: Text('This is a text Fliend'), - ), - ), - const TextField( - decoration: InputDecoration( - label: Text('This is a text Fliend'), - ), - ).resize().adaptive(1.25), - const TextField( - decoration: InputDecoration( - label: Text('This is a text Fliend'), - ), - ).resize().adaptive(1.5), - const TextField( - decoration: InputDecoration( - icon: Icon(Icons.abc), - suffixIcon: Icon(Icons.ac_unit_sharp), - label: Text('This is a text Fliend'), - ), - ).resize().adaptive(1.75), - const TextField( - decoration: InputDecoration( - label: Text('This is a text Fliend'), - ), - ).resize().adaptive(2), - ], - ), - ), - ), - ), - ); - } - - if (example == 5) { - return SizedBox( - width: 600, - child: Row( - mainAxisSize: MainAxisSize.min, - children: [ - // const Expanded(child: Text('This is text 1')), - const Text('This is text 22'), - const Text('This is text 3'), - const Text('This is text 4'), - const Text('This is text 5'), - ], - ), - ).resize().adaptive(); - } - - return Column( - children: [ - const Text('No example'), - ], - ); - }, - ), - // body: Text( - // 'This is a text', - // style: TextStyle(fontSize: 48), - // ).resize().adaptiveTest(), - // body: Column( - // // mainAxisSize: MainAxisSize.min, - // children: [ - // Text( - // 'HI', - // ), - // // ListTile( - // // title: Text('Title'), - // // ) - // ], - // ).colorize().resize().adaptiveTest(), - ); - }, - ), - ); - } -} - -class FixedExample extends StatelessWidget { - const FixedExample({super.key}); - - @override - Widget build(BuildContext context) { - final example = 1; - return Scaffold( - body: Builder(builder: (context) { - if (example == 1) { - return Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - const Text('This is me, and that is you'), - const Text('This is me, and that is you') - .resize() - .fixed(width: 2), - const Text('ljl'), - ], - ); - } - return const Text('NO EXAMPLE'); - }), - ); - } -} - -class AdaptiveLayout extends StatelessWidget { - AdaptiveLayout({super.key}) { - InheritedLayout.scaleFactor = .1; - ScaffoldInheritedLayout.query = [ - Query.constant(step: 600), - Query.linear(step: 1000), - Query.constant(), - ]; - } - - @override - Widget build(BuildContext context) { - return Scaffold( - body: ScaffoldInheritedLayout( - builder: (context, size) { - return Column( - children: [ - Text('${MediaQuery.of(context).size}') - .resizeWithFlex() - .fromDevice - .width(width: .5), - const Text('PARENT').resizeWithFlex().fromParent.width(width: .5), - Text('$size').resizeWithFlex().fromEffectiveWidth(.5, null), - ], - ); - }, - ), - ); - } -} - -class FromParentWidth extends StatelessWidget { - const FromParentWidth({super.key}); - - @override - Widget build(BuildContext context) { - const example = 5; - return Scaffold( - body: Builder( - builder: (context) { - if (example == 0) { - return Column( - children: [ - const Text('lskdjf').resize().fixed(), - ], - ); - } - if (example == 1) { - return SizedBox( - width: 200, - height: 100, - child: const Text('From device screen') - .resize(fitTheShortestSide: false) - .fromDevice - .width(width: .1, height: .1) - .colorize(), - ); - } - if (example == 2) { - return SizedBox( - width: 200, - height: 100, - child: const Text('From parent size') - .resize(fitTheShortestSide: false) - .fromParent - .width(width: 1, height: 1) - .colorize(), - ); - } - if (example == 3) { - return const Text('This is me From parent') - .resize(fitTheShortestSide: true) - .fromParent - .width( - width: 1, - height: 1, - ) - .colorize(); - } - if (example == 4) { - return SizedBox( - // width: 500, - // height: 100, - child: Column( - children: [ - const Text('This is Normal Text 1'), - const Flexible(child: Text('This is Normal Flex text')), - const Text('This is me From parent') - .resize() - .fromParent - .width(), - Flexible( - child: const Text('This is me From parent') - .resize() - .fromParent - .width(), - ), - Flexible( - flex: 10, - fit: FlexFit.tight, - child: const Text( - 'This is me From parent', - // style: TextStyle(f), - ).resize().fromParent.width(width: 0.1), - ), - const Text('This is me From parent') - .resize() - .fromParent - .width(width: 0.2) - .colorize(), - const Text('This is me From parent') - .resize() - .fromParent - .width(width: 0.3) - .colorize(), - const Text('This is me From parent') - .resize() - .fromParent - .width(width: 0.4) - .colorize(), - const Text('This is me From parent') - .resize() - .fromParent - .width(width: 0.5) - .colorize(), - const Text('This is me From parent') - .resize() - .fromParent - .width(width: 0.6) - .colorize(), - const Text('This is me From parent') - .resize() - .fromParent - .width(width: 0.7) - .colorize(), - const Text('This is me From parent') - .resize() - .fromParent - .width(width: 0.8) - .colorize(), - const Text('This is me From parent') - .resize() - .fromParent - .width(width: 0.9) - .colorize(), - const Text('This is me From parent') - .resize() - .fromParent - .width(width: 1) - .colorize(), - - // Text('This is me From parent') - // .resize() - // .fromParent.width(height: 0.1), - // Flexible( - // child: Text('This is me From parent') - // .resize() - // .fromParent.width(height: 0.1), - // ), - // Flexible( - // child: Text('This is me From parent') - // .resize() - // .fromParent.width(height: 0.4), - // ), - // Flexible( - // flex: 2, - // child: Text('This is me From parent') - // .resize() - // .fromParent.width(height: 0.4), - // ), - ], - ), - ); - } - - if (example == 5) { - return Padding( - padding: const EdgeInsets.all(8.0), - child: SizedBox( - // width: 500, - // height: 100, - child: SingleChildScrollView( - child: Column( - children: [ - const TextField( - decoration: InputDecoration( - labelText: 'Lable text', - border: OutlineInputBorder(), - ), - ).resize().fromParent.width(height: 0.04), - const SizedBox().resize().fromParent.width(height: .02), - const TextField( - decoration: InputDecoration( - labelText: 'Lable text', - border: OutlineInputBorder(), - ), - ).resize().fromParent.width(height: 0.06), - const SizedBox().resize().fromParent.width(height: .02), - const TextField( - decoration: InputDecoration( - labelText: 'Lable text', - border: OutlineInputBorder(), - ), - ).resize().fromParent.width(height: 0.08), - const SizedBox().resize().fromParent.width(height: .02), - const TextField( - decoration: InputDecoration( - labelText: 'Lable text', - border: OutlineInputBorder(), - ), - ).resize().fromParent.width(height: 0.1), - const SizedBox().resize().fromParent.width(height: .02), - const TextField( - decoration: InputDecoration( - labelText: 'Lable text', - border: OutlineInputBorder(), - ), - ).resize().fromParent.width(height: 0.12), - const SizedBox().resize().fromParent.width(height: .02), - const TextField( - decoration: InputDecoration( - labelText: 'Lable text', - border: OutlineInputBorder(), - ), - ).resize().fromParent.width(height: 0.14), - const SizedBox().resize().fromParent.width(height: .02), - const TextField( - decoration: InputDecoration( - labelText: 'Lable text', - border: OutlineInputBorder(), - ), - ).resize().fromParent.width(height: 0.16), - const SizedBox().resize().fromParent.width(height: .02), - const TextField( - decoration: InputDecoration( - labelText: 'Lable text', - border: OutlineInputBorder(), - ), - ).resize().fromParent.width(height: 0.18), - ], - ), - ), - ), - ); - } - return const Text('NO example'); - }, - ), - ); - } -} - -class FromDeviceWidthExample extends StatelessWidget { - const FromDeviceWidthExample({super.key}); - @override - Widget build(BuildContext context) { - const example = 1; - return Scaffold( - body: Builder(builder: (context) { - if (example == 1) { - return Column( - // mainAxisSize: MainAxisSize.min, - children: [ - Row( - children: [ - Center( - child: const SizedBox( - width: 100, - height: 110, - child: Text('From W and H'), - ) - .colorize() - .resize() - .fromDevice - .widthAndHeight(width: 0.2, height: 0.2) - .colorize(Colors.amber.withOpacity(0.5)), - ), - Center( - child: const SizedBox( - width: 100, - height: 110, - child: Text('From W'), - ) - .colorize() - .resize() - .fromDevice - .width(width: 0.2, height: 0.2) - .colorize(Colors.amber.withOpacity(0.5)), - ), - ], - ), - Center( - child: const SizedBox( - width: 120, - height: 110, - child: Text('From H'), - ) - .colorize() - .resize(fitTheShortestSide: true) - .fromDevice - .height(height: 0.2) - .colorize(Colors.amber.withOpacity(0.5)), - ), - ], - ); - } - return Column( - children: [ - // SizedBox( - // width: 1, - // height: 1, - // ).colorize().resize().fromDevice.width(), - // SizedBox( - // width: 1, - // height: 1, - // ).colorize().resize().fromDevice.width(widthFraction: 0.2), - // SizedBox(height: 8), - // SizedBox( - // width: 1, - // height: 2, - // ) - // .colorize() - // .resize() - // .fromDevice.width(widthFraction: .2, heightFraction: 0.4), - // SizedBox(height: 8), - const SizedBox( - width: 2, - height: 1, - ) - .colorize() - .resize() - .fromDevice - .height(width: .4, height: 0.2) - .colorize(), - - // SizedBox( - // width: 1, - // height: 2, - // ) - // .colorize() - // .resize() - // .fromDevice.widthAndHeight(widthFraction: .2, heightFraction: 0.4), - ], - ); - }), - ); - } -} - -class Example1 extends StatelessWidget { - const Example1({super.key}); - - @override - Widget build(BuildContext context) { - const example = 3; - return Directionality( - textDirection: TextDirection.ltr, - child: Scaffold( - // WITH COLUMN - body: Builder(builder: (context) { - if (example == 0) { - return Column( - children: [ - const Text('This is you').resize().fixed(width: 50, height: 10), - const SizedBox( - height: 50, - child: FittedBox( - fit: BoxFit.fill, - child: Text( - 'This is FITTED', - overflow: TextOverflow.ellipsis, - ), - ), - ).colorize(Colors.amber), - const Text( - 'This is you', - overflow: TextOverflow.ellipsis, - ).resize().fixed(height: 50), - const Text( - 'This is you', - overflow: TextOverflow.ellipsis, - ).resize(fitTheShortestSide: true).fixed(height: 50).colorize(), - const Text( - 'This is you', - overflow: TextOverflow.ellipsis, - ).resize().fixed(height: 50, width: 2000), - const Text( - 'This is you', - overflow: TextOverflow.ellipsis, - ) - .resize(fitTheShortestSide: true) - .fixed(height: 50, width: 2000) - .colorize(), - const Center(child: Text('This is Center')) - .resize() - .fixed(height: 50), - ], - ); - } - if (example == 1) { - return Column( - children: [ - const SizedBox( - width: 500, - height: 100, - child: FittedBox( - child: Text('This is FITTED'), - ), - ).colorize(Colors.amber), - const Text('This is RESIZ') - .resize() - .fixed(width: 500, height: 100) - .colorize(), - const Text('This is RESIZ') - .resize(fitTheShortestSide: true) - .fixed(width: 500, height: 100) - .colorize(), - const SizedBox(height: 20), - const SizedBox( - width: 50, - height: 10, - child: FittedBox( - child: Text('This is you'), - ), - ).colorize(Colors.amber), - const Text('This is you') - .resize() - .fixed(width: 50, height: 10) - .colorize(), - ], - ); - } - if (example == 2) { - return SizedBox( - width: 200, - height: 100, - child: const Text('This is you') - .colorize() - .resize() - .fixed(width: 300, height: double.infinity), - ); - } - if (example == 3) { - // try resize the window - return SingleChildScrollView( - child: Column( - children: [ - ListTile( - title: const Text( - 'This is me', - overflow: TextOverflow.ellipsis, - ), - subtitle: const Text( - 'Yes, this is Normal tile', - // overflow: TextOverflow.ellipsis, - ), - leading: const Text('L'), - trailing: Material( - child: InkWell( - onTap: () {}, - child: const Text('T'), - ), - ), - ), - ListTile( - title: const Text( - 'This is me', - overflow: TextOverflow.ellipsis, - ), - subtitle: const Text( - 'Yes, this is biggest', - overflow: TextOverflow.ellipsis, - ), - leading: const Text('L'), - trailing: Material( - child: InkWell( - onTap: () {}, - child: const Text('T'), - ), - ), - ) - .colorize() // - .resize(fitTheShortestSide: true) - .fixed(height: 206) - .colorize(Colors.amber), - const Text('GGGGGG'), - ListTile( - title: const Text( - 'This is me', - overflow: TextOverflow.ellipsis, - ), - subtitle: const Text('Yes, this is Smaller'), - leading: const Text('L'), - trailing: Material( - child: InkWell( - onTap: () {}, - child: const Text('T'), - ), - ), - ) - .colorize() // - .resize() - .fixed(height: 60), - const Text('GGGGGG'), - ListTile( - title: const Text( - 'This is me', - overflow: TextOverflow.ellipsis, - ), - subtitle: const Text('Yes, this is Smallest'), - leading: const Text('L'), - trailing: Material( - child: InkWell( - onTap: () {}, - child: const Text('T'), - ), - ), - ) - .colorize() // - .resize() - .fixed(height: 30), - ], - ), - ); - } - - if (example == 4) { - return Column( - children: [ - Center( - child: TextButton.icon( - // style: TextButton.styleFr, - onPressed: () {}, - icon: const Icon(Icons.favorite), - label: const Text('Respect A R '), - ) - .colorize(Colors.amber) // - .resize(fitTheShortestSide: true) - .fixed(height: 70, width: 300) - // .background(clipBehavior: Clip.antiAlias) - // .buildCapsule(), - ), - const Text('HHHHHHH'), - Center( - child: TextButton.icon( - // style: TextButton.styleFr, - onPressed: () {}, - icon: const Icon(Icons.favorite), - label: const Text('NO Respect '), - ) - .colorize(Colors.amber) // - .resize() - .fixed(height: 70, width: 300) - // .background(clipBehavior: Clip.antiAlias) - // .buildCapsule(), - ), - const Text('HHHHHHH'), - Center( - child: TextButton.icon( - // style: TextButton.styleFr, - onPressed: () {}, - icon: const Icon(Icons.favorite), - label: const Text('Respect A R '), - ) - .colorize(Colors.amber) // - .resize() - .fixed(height: 70) - // .background(clipBehavior: Clip.antiAlias) - // .buildCapsule(), - ), - const Text('HHHHHHH'), - Center( - child: TextButton.icon( - // style: TextButton.styleFr, - onPressed: () {}, - icon: const Icon(Icons.favorite), - label: const Text('NO Respect '), - ) - .colorize(Colors.amber) // - .resize() - .fixed(height: 70) - // .background(clipBehavior: Clip.antiAlias) - // .buildCapsule(), - ), - const Text('HHHHHHH'), - Center( - child: TextButton.icon( - // style: TextButton.styleFr, - onPressed: () {}, - icon: const Icon(Icons.favorite), - label: const Text('Respect A R '), - ) - .colorize(Colors.amber) // - .resize() - .fixed(width: 370) - // .background(clipBehavior: Clip.antiAlias) - // .buildCapsule(), - ), - const Text('HHHHHHH'), - Center( - child: TextButton.icon( - // style: TextButton.styleFr, - onPressed: () {}, - icon: const Icon(Icons.favorite), - label: const Text('NO Respect A R '), - ) - .colorize(Colors.amber) // - .resize() - .fixed(width: 370) - // .background(clipBehavior: Clip.antiAlias) - // .buildCapsule(), - ), - const Text('HHHHHHH'), - // Center( - // child: TextButton.icon( - // // style: TextButton.styleFr, - // onPressed: () {}, - // icon: const Icon(Icons.favorite), - // label: const Text('KAOUTHAR '), - // ) - // .colorize(Colors.amber) // - // .resize() - // .fixed(width: 400) - // .background(clipBehavior: Clip.antiAlias) - // .buildCapsule(), - // ), - // Center( - // child: TextButton.icon( - // // style: TextButton.styleFr, - // onPressed: () {}, - // icon: const Icon(Icons.favorite), - // label: const Text('KAOUTHAR '), - // ) - // .colorize(Colors.transparent) // - // .resize() - // .fixed(width: 50) - // // .background( - // // color: Colors.transparent, - // // clipBehavior: Clip.antiAlias) - // // .buildCapsule(), - // ) - ], - ); - } - - return Column( - children: [ - const Text('normal'), - const Text('fixed()').resize().fixed(), - const Text('fixed(width: 40)') - .colorize() - .resize() - .fixed(width: 60), - const Text('ixed(width: 140)') - .colorize() - .resize() - .fixed(width: 140), - Row( - mainAxisAlignment: MainAxisAlignment.spaceEvenly, - children: [ - const Text('Inside Row'), - const Text('fixed(height: 10)') - .colorize() - .resize() - .fixed(height: 10), - const Text('fixed(height: 70') - .colorize() - .resize() - .fixed(height: 70), - const SizedBox( - // width: double.infinity, - - // height: 50, - ) - .resize() - .fixed(), - ], - ), - const Text('This is Him') - .colorize() - .resize() - .fixed(width: 40, height: 10), - const SizedBox().colorize().resize().fixed(), - ], - ); - }), - ), - ); - } -} - -class TextFliedExample extends StatelessWidget { - const TextFliedExample({super.key}); - - @override - Widget build(BuildContext context) { - return Scaffold( - body: Padding( - padding: const EdgeInsets.all(8.0), - child: Column( - children: [ - const TextField(), - const TextField().resize().fixed(height: 60), - const TextField().resize().fixed(height: 160), - ], - ).resize().fixed(width: 600, height: double.infinity), - ), - ); - } -} - -class WelcomePage extends StatefulWidget { - const WelcomePage({Key? key}) : super(key: key); - static const routeName = '/welcome-page'; - - @override - State createState() => _WelcomePageState(); -} - -class _WelcomePageState extends State { - @override - Widget build(BuildContext context) { - InheritedLayout.scaleFactor = 2; - ScaffoldInheritedLayout.query = [ - Query.constant(step: 600), - Query.linear(step: 1000), - Query.constant(), - ]; - return Material( - child: - // Image.asset( - // 'assets/welcome_image_bg.jpg', - // fit: BoxFit.cover, - // ) - - const SizedBox().foreground(color: Colors.blue.shade200).build( - const _Foreground(), - ), - ); - } -} - -class _Foreground extends StatelessWidget { - const _Foreground({super.key}); - final factor = 20; - @override - Widget build(BuildContext context) { - return ScaffoldInheritedLayout(builder: (context, size) { - return Column( - children: [ - const FlexSpacer() * factor, - const Text( - 'بِسْمِ اللَّـهِ الرَّحْمَـٰنِ الرَّحِيمِ ', - textAlign: TextAlign.center, - ).resize().fromEffectiveWidth(null, .05), - const FlexSpacer() * factor * 4, - const Text( - 'إِنَّهُ لَقُرْآنٌ كَرِيمٌ', - ).resize().fromEffectiveWidth(null, .1), - const FlexSpacer() * factor * 4, - const Text( - 'اللهم اجعلنا من أهل القرآن حفظاً وعلماً وعملاً', - textAlign: TextAlign.center, - ).resize().fromEffectiveWidth(null, .05), - const FlexSpacer.expand() * factor, - - // Spacer(), - - Padding( - padding: const EdgeInsets.all(8.0), - child: ElevatedButton( - onPressed: () { - // navigator.toReplacement('/'); - }, - - // child: Text('lksdjf'), - child: const Text( - 'إبدأ', - ) - .background(color: Colors.transparent) - .buildRect(width: double.infinity), - ).resize(fitTheShortestSide: true).fromEffectiveWidth(null, .1), - ) - ], - ); - }); - } -} diff --git a/example/lib/main2.dart b/example/lib/main2.dart deleted file mode 100644 index 3afb836..0000000 --- a/example/lib/main2.dart +++ /dev/null @@ -1,1012 +0,0 @@ -// ignore_for_file: prefer_const_constructors, prefer_const_literals_to_create_immutables - -import 'package:flutter/material.dart'; -import 'package:shape_builder/shape_builder.dart'; - -void main() { - runApp(const MyApp()); -} - -class MyApp extends StatelessWidget { - const MyApp({super.key}); - - // This widget is the root of your application. - @override - Widget build(BuildContext context) { - return MaterialApp( - debugShowCheckedModeBanner: false, - title: 'Flutter Demo', - theme: ThemeData( - primarySwatch: Colors.blue, - ), - - // home: const WorkShop(), - // home: const FrameExample(), - // home: const FrameExample1(), - // home: const OverlayExample(), - // home: const CircleExample(), - // home: const RectangleExample(), - // home: const RRectangleExample(), - // home: const FavoriteExample(), - // home: const ClipExample(), - home: const ImageClipper(), - // home: const GradientColorExample(), - // home: const MyCoranWidget(), - // home: const AdaptiveLayout(), - ); - } -} - -class AdaptiveLayout extends StatelessWidget { - const AdaptiveLayout({super.key}); - - @override - Widget build(BuildContext context) { - return Scaffold( - body: // - // Column( - // children: [ - // SizedBox( - // width: 280, - // height: 180, - // child: FittedBox( - // fit: BoxFit.contain, - // child: LimitedBox( - // // maxHeight: height ?? constraints.maxHeight, - // // maxWidth: width ?? constraints.maxWidth, - // child: Text('lh'), - // ), - // ).colorize(), - // ), - // Text('lh').resize().fixed(width: 280, height: 180).colorize(), - - // ], - // ), - // Column( - // children: [ - // SizedBox( - // height: 150, - // child: TextField().colorize(Colors.amber.withOpacity(0.2))), - // SizedBox( - // height: 12, - // ), - // Padding( - // padding: const EdgeInsets.all(80.0), - // child: TextField() - // .colorize(Colors.red) - // .resize(respectAspectRatio: true) - // .fixed( - // // width: 250, - // height: 180, - // ) - // // .colorize(), - // ).colorize(Colors.amber), - // Text('l44'), - // ], - // ) - // .resize(respectAspectRatio: true) // - // .fixed() - // .colorize(Colors.amber), - // - // - - Column( - children: [ - SizedBox( - width: 600, - height: 200, - child: FittedBox( - fit: BoxFit.contain, - child: LimitedBox( - // maxHeight: height ?? constraints.maxHeight, - // maxWidth: width ?? constraints.maxWidth, - child: Text('This is me'), - ), - ).colorize(), - ), - Text('This is me1') - .resize() - .fixed(height: 200, width: double.infinity), - ], - ), - // ListTile(title: Text('lskdjfsldkj').colorize()) - // .resize(respectAspectRatio: true) - // .fixed(), - // - // - // SizedBox( - // // height: 30, - // child: Column( - // children: [ - // Text('This isme'), - // ], - // ).colorize().resize().fixed( - // // - // width: 200), - // ) // - ); - } -} - -class WorkShop extends StatelessWidget { - const WorkShop({super.key}); - - @override - Widget build(BuildContext context) { - return Scaffold( - body: Padding( - padding: const EdgeInsets.all(10.0), - child: SizedBox( - // width: double.infinity, - // height: double.infinity, - child: RRectangle.square( - // isOverlay: true, - // side: 500, - // width: double.infinity, - // // height: double.infinity, - // height: 80, - // radius: 250, - // width: double.infinity, - // height: double.infinity, - child: SizedBox( - child: Text('GI lskdjfls d lsdkfj sldf lksdfkj sdlkf sdlkf ')), - alignment: Alignment.bottomRight, - ), - ), - ).colorize(Color.fromARGB(70, 255, 193, 7)), - ); - } -} - -class GradientColorExample extends StatelessWidget { - const GradientColorExample({super.key}); - - @override - Widget build(BuildContext context) { - return Scaffold( - body: Column( - children: [ - Rectangle.square( - color: ColorWithGradient( - LinearGradient(colors: [Colors.red, Colors.blue])), - ), - ], - ), - ); - } -} - -class MyCoranWidget extends StatelessWidget { - const MyCoranWidget({super.key}); - - @override - Widget build(BuildContext context) { - return Scaffold( - body: Column( - children: [ - Expanded( - flex: 10, - child: RRectangle( - width: double.infinity, - outerVBorderRadius: BorderRadius.only( - bottomRight: Radius.circular(50), - ), - child: const Text('This is yours'), - ), - ), - Spacer( - flex: 6, - ), - ], - ).foreground().build( - Column( - children: [ - Spacer( - flex: 10, - ), - Expanded( - flex: 4, - child: RRectangle( - width: double.infinity, - boxShadow: [BoxShadow(blurRadius: 5, spreadRadius: 0.5)], - borderRadius: BorderRadius.only( - topRight: Radius.elliptical(50, 50), - bottomLeft: Radius.elliptical(50, 50), - ), - outerVBorderRadius: BorderRadius.only( - topLeft: Radius.elliptical(50, 50), - bottomRight: Radius.elliptical(50, 50), - ), - color: Colors.amber, - child: Text('This is you'), - ), - ), - Expanded( - flex: 2, - child: Center(child: Text('This is me')), - ), - ], - ), - ), - ); - } -} - -class ImageClipper extends StatelessWidget { - const ImageClipper({super.key}); - - @override - Widget build(BuildContext context) { - return Scaffold( - // body: Image.network( - // 'https://twistedsifter.com/wp-content/uploads/2010/11/funny-splash-mountain-28.jpg', - // // fit: BoxFit.scaleDown, - // fit: BoxFit.cover, - // ) - // .foreground( - // color: Colors.green.withOpacity(0.1), - // // clipBehavior: Clip.antiAlias, - // alignment: Alignment.center, - // ) - // .buildCircle(radius: 300), - // .buildRect(), - body: true - ? Center( - child: SizedBox( - // height: 500, - // width: 500, - child: Rectangle( - width: 705, - height: 400, - clipBehavior: Clip.antiAlias, - alignment: Alignment(0, -1), - boxShadow: BoxShadowWithElevation(6), - // isOverlay: false, - child: Image.network( - 'https://freequranlearning.com/images/alquran/30/536.jpg', - fit: BoxFit.cover, - width: 805, - // height: 700, - alignment: Alignment.center, - // fit: BoxFit.cover, - ), - ).colorize(Colors.green).colorize(), - ), - ) - : Container( - child: Column( - children: [ - const SizedBox(height: 16), - Expanded( - child: Rectangle( - // width: 405, - // height: 400, - clipBehavior: Clip.antiAlias, - alignment: Alignment.center, - boxShadow: BoxShadowWithElevation(6), - paintStyle: PaintStyle( - style: PaintingStyle.stroke, - strokeWidth: 8, - ), - isOverlay: false, - child: Image.network( - 'https://freequranlearning.com/images/alquran/30/536.jpg', - fit: BoxFit.cover, - // width: 805, - // height: 700, - alignment: Alignment.center, - // fit: BoxFit.cover, - ), - ).colorize(Colors.green).colorize(), - ), - - // DecoratedBox( - // decoration: BoxDecoration( - // color: Colors.blue, - // shape: BoxShape.circle, - // // backgroundBlendMode: BlendMode, - // image: DecorationImage( - // fit: BoxFit.none, - // image: NetworkImage( - // 'https://twistedsifter.com/wp-content/uploads/2010/11/funny-splash-mountain-28.jpg', - // ), - // ), - // ), - // ), - // child: SizedBox.square( - // dimension: 300, - // ), - // ), - // SizedBox( - // width: 600, - // height: 400, - // child: Image.network( - // 'https://twistedsifter.com/wp-content/uploads/2010/11/funny-splash-mountain-28.jpg', - // fit: BoxFit.none, - // // fit: BoxFit.cover, - // )), - // SizedBox( - // width: 600, - // height: 400, - // child: Image.network( - // 'https://twistedsifter.com/wp-content/uploads/2010/11/funny-splash-mountain-28.jpg', - // fit: BoxFit.none, - // // fit: BoxFit.cover, - // ), - // ) - // .foreground( - // alignment: Alignment.topLeft, - // // color: Colors.red, - // color: Colors.transparent, - // // color: ColorWithGradient( - // // LinearGradient(colors: [Colors.transparent, Colors.blue]), - // // blendMode: BlendMode.difference, - // // ), - - // clipBehavior: Clip.antiAlias, - // // alignment: Alignment.bottomRight, - // ) - // .buildCircle(radius: 150) - // .colorize(), - - // SizedBox( - // width: 600, - // height: 400, - // child: Image.network( - // 'https://twistedsifter.com/wp-content/uploads/2010/11/funny-splash-mountain-28.jpg', - // fit: BoxFit.cover, - // // fit: BoxFit.cover, - // )) - // .foreground( - // alignment: Alignment.bottomRight, - // color: Colors.transparent, - // // color: ColorWithBlendMode(Colors.red, BlendMode.colorBurn), - // // color: ColorWithGradient( - // // LinearGradient(colors: [Colors.transparent, Colors.blue]), - // // blendMode: BlendMode.difference, - // // ), - // clipBehavior: Clip.antiAlias, - // // alignment: Alignment.bottomRight, - // ) - // .buildCircle(radius: 150) - // .colorize(), - - // // .background( - // // alignment: Alignment.topLeft, - // // clipBehavior: Clip.antiAlias, - // // ) - // // .buildCircle(radius: 100) - - // // .buildCapsule(height: 300), - // Image.network( - // 'https://twistedsifter.com/wp-content/uploads/2010/11/funny-splash-mountain-28.jpg', - // // fit: BoxFit.scaleDown, - // fit: BoxFit.cover, - // // colorBlendMode: BlendMode.colorBurn, - // ) - // .foreground( - // color: Colors.red.withOpacity(.3), - // clipBehavior: Clip.antiAlias, - // alignment: Alignment.center, - // ) - // .buildCapsule(height: 300, width: 600), - - // // .buildOval(height: 80, width: 150), - ], - ), - ), - ); - } -} - -class FrameExample extends StatelessWidget { - const FrameExample({super.key}); - - @override - Widget build(BuildContext context) { - return Directionality( - textDirection: TextDirection.ltr, - child: Scaffold( - // body: Center( - // child: Padding( - // padding: const EdgeInsets.all(8.0), - // child: Stack( - // children: [ - // // Text('Hi this is me') - // // .frame( - // // alignment: Alignment.bottomRight, - // // elevation: 10, - // // shadowColor: Colors.red, - // // ) - // // .buildRRect(height: 100, width: double.infinity) - // // .frame( - // // isOverlay: true, - // // color: Colors.red, - // // alignment: Alignment.topLeft, - // // ) - // // .buildRect(width: 10, height: 10), - // Ovel.circle(), - // Text('That is not me') - // .frame(elevation: 4) - // .buildRSquare(side: 50), - // Text('This is me') - // .frame( - // alignment: Alignment.topLeft, - // elevation: 6, - // // clipBehaviour: Clip.antiAlias, - // ) - // .buildCircle(swipAngle: 5) - // .colorize(Colors.red), - // // SizedBox(height: 10), - // // Row( - // // children: [ - // // Text('This is me') - // // .frame(alignment: Alignment.center) - // // .buildSquare(50), - // // // SizedBox(height: 10), - // // Text('This is me') - // // .frame(alignment: Alignment.center) - // // .buildRSquare(side: 50, radius: Radius.zero), - // // ], - // // ) - // // RRectangle( - // // height: 100, - // // width: double.infinity, - // // alignment: Alignment.bottomRight, - // // elevation: 10, - // // shadowColor: Colors.red, - // // child: Text('Hi this is me'), - // // ), - // // SizedBox(height: 10), - // // RRectangle( - // // height: 100, - // // width: double.infinity, - // // elevation: 10, - // // shadowColor: Colors.red, - // // ) - // // .overlay( - // // Alignment.bottomRight, - // // ) - // // .build( - // // Text('Hi this is me'), - // // ), - // ], - // ), - // ), - // ), - - body: Center( - child: const Text('Hello, world') - .background(color: Colors.red) - .buildRRect() - .background(color: Colors.orange) - .buildRRect(height: 100) - .background(color: Colors.purple) - .buildRRect(width: 150) - .background(color: Colors.pink, alignment: Alignment.center) - .buildRRect(width: double.infinity) - .background(color: Colors.green) - .buildRRect(height: 400) - .background(color: Colors.yellow, alignment: Alignment.center) - .buildRRect(height: double.infinity), - )), - ); - } -} - -class FrameExample1 extends StatelessWidget { - const FrameExample1({super.key}); - - @override - Widget build(BuildContext context) { - final shadow = [ - BoxShadow( - color: Colors.red, - offset: Offset(1, 1), - spreadRadius: 10, - blurRadius: 5, - ), - BoxShadow( - color: Colors.green, - offset: Offset(10, 10), - spreadRadius: 10, - blurRadius: 10, - ) - ]; - return Scaffold( - body: Padding( - padding: const EdgeInsets.all(8.0), - child: Column(children: [ - DecoratedBox( - decoration: BoxDecoration( - boxShadow: shadow, - color: Colors.white, - shape: BoxShape.circle, - ), - child: SizedBox.square( - dimension: 88, - ), - ), - // Material( - // shape: CircleBorder(), - // elevation: 8, - // color: Colors.red, - // child: Padding( - // padding: const EdgeInsets.all(8.0), - // child: Text('XXXXX'), - // ), - // ), - Padding(padding: const EdgeInsets.all(8.0), child: Text('101234566')) - .background( - boxShadow: shadow, - ) - .buildCapsule(width: 88, height: 50), - // SizedBox(height: 8), - // Padding(padding: const EdgeInsets.all(8.0), child: Text('101234566')) - // .background( - // shadow: shadow, - // color: Colors.white, - // ) - // .buildRSquare( - // side: 88, - // ), - Padding( - padding: const EdgeInsets.symmetric(vertical: 26, horizontal: 10), - child: Text('XXXXXX'), - ) - .background( - alignment: Alignment.bottomCenter, - boxShadow: shadow, - color: ColorWithGradient( - RadialGradient(colors: [Colors.white, Colors.blue]))) - .buildCircle(startAngle: 1, swipeAngle: 5), - // Padding( - // padding: const EdgeInsets.symmetric(vertical: 26, horizontal: 10), - // child: Text('XXXXXX'), - // ).background( - // alignment: Alignment.bottomCenter, - // shadow: [BoxShadowWithElevation(12)], - // ).buildCircle(startAngle: 1, swipeAngle: 5), - ]), - ), - ); - } -} - -class CircleExample extends StatelessWidget { - const CircleExample({super.key}); - - @override - Widget build(BuildContext context) { - const double elevation = 10; - return Scaffold( - body: Column( - children: [ - RRectangle( - height: 100, - width: 150, - ), - Oval.circle( - radius: 100, - startAngle: 1, - swipeAngle: 6, - color: Colors.white, - boxShadow: BoxShadowWithElevation(elevation), - ), - Oval.circle( - radius: 100, - color: Colors.red, - ), - Oval( - boxShadow: BoxShadowWithElevation(5), - color: Colors.white, - width: 100, - height: 50, - startAngle: 0, - swipeAngle: 6, - ), - Oval.circle( - radius: 100, - boxShadow: BoxShadowWithElevation(1), - - color: ColorWithGradient( - const RadialGradient( - colors: [Colors.yellow, Colors.white], - ), - ), - // color: Colors.yellow, - ) - ], - ), - ); - } -} - -class RectangleExample extends StatelessWidget { - const RectangleExample({super.key}); - - @override - Widget build(BuildContext context) { - return Scaffold( - body: SingleChildScrollView( - child: Column( - children: [ - // Rectangle.square().frame().buildSquare(100), - // Rectangle( - // color: Colors.red, - // height: 100, - // ), - Rectangle( - color: ColorWithGradient( - LinearGradient(colors: [Colors.red, Colors.blue])), - width: 200, - height: 100, - ), - Rectangle.square( - side: 100, - color: Colors.white, - boxShadow: BoxShadowWithElevation(10, color: Colors.yellow), - ), - SizedBox(height: 8), - Rectangle( - height: 150, - width: 150, - ).foreground(alignment: Alignment.bottomRight).build( - Rectangle( - height: 100, - width: 100, - color: Colors.black, - ).foreground(alignment: Alignment.topLeft).build( - Rectangle( - height: 50, - width: 50, - color: Colors.red, - child: Text('4'), - ), - ), - ), - SizedBox(height: 8), - Rectangle( - height: 50, - width: 50, - color: Colors.red, - ) - .background(alignment: Alignment.topLeft) - .build( - Rectangle( - height: 100, - width: 100, - color: Colors.black, - ), - ) - .background(alignment: Alignment.bottomRight) - .build( - Rectangle( - height: 150, - width: 150, - ), - ), - ], - ), - ), - ); - } -} - -class RRectangleExample extends StatelessWidget { - const RRectangleExample({super.key}); - - @override - Widget build(BuildContext context) { - return Scaffold( - body: Center( - child: Padding( - padding: const EdgeInsets.all(8.0), - child: Column( - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - // Card( - // shape: RoundedRectangleBorder( - // borderRadius: BorderRadius.circular(12)), - // child: SizedBox.square( - // dimension: 100, - // ), - // ), - // RRectangle.square( - // side: 100, - // ), - RRectangle.square( - side: 100, - borderRadius: BorderRadius.all(Radius.elliptical(20, 40)), - ), - // RRectangle.square( - // side: 100, - // color: Colors.yellow, - // radius: RadiusCorners( - // topLeft: Radius.circular(100), - // ), - // ), - Text('this is me').background(color: Colors.yellow).buildRect(), - RRectangle.capsule( - // height: 20, - color: Colors.green, - child: Padding( - padding: const EdgeInsets.all(18.0), - child: Text('lksjdflksdkjjhkjhkhkhkhklf\n lskdjfldskj'), - ), - ), - Rectangle( - boxShadow: BoxShadowWithElevation(5), - color: ColorWithGradient( - LinearGradient(colors: [Colors.green, Colors.greenAccent])), - width: 200, - alignment: Alignment.topLeft, - child: Text('ldkfj'), - ) - // RRectangle( - // height: 150, - // width: 150, - // color: Colors.red, - // ).overlay(Alignment.bottomRight).build( - // RRectangle( - // height: 100, - // width: 100, - // color: Colors.black, - // ).overlay(Alignment.topLeft).build( - // RRectangle( - // height: 50, - // width: 50, - // ), - // ), - // ), - ], - ), - ), - ), - ); - } -} - -class OverlayExample extends StatelessWidget { - const OverlayExample({super.key}); - - @override - Widget build(BuildContext context) { - return Scaffold( - body: Center( - child: Column( - children: [ - Text('Hello world') // - .background(color: Color.fromARGB(129, 33, 149, 243)) - .buildSquare(100) // - .foreground(color: Colors.red, alignment: Alignment.topLeft) - .buildCircle(radius: 20), - Text('Hello world') // - .background(color: Color.fromARGB(129, 33, 149, 243)) - .buildSquare(100) // - .background(color: Colors.red, alignment: Alignment.topLeft) - .buildCircle(radius: 20), - // .background() - // .build(Ovel.circle(color: Colors.blue)), - // , - SizedBox(height: 8), - // SizedBox( - // width: 100, - // height: 100, - // ) // - // .colorize() // - // .foreground(alignment: Alignment.bottomRight) - // .build(Text('HI')), - - // SizedBox( - // width: 100, - // height: 100, - // ) // - // .colorize() // - // .overlay( - // Column( - // crossAxisAlignment: CrossAxisAlignment.start, - // children: [ - // Text('HI nn nn '), - // Circle(radius: 20), - // ], - // ), - // alignment: Alignment.topLeft), - Oval.circle( - radius: 120, - clipBehavior: Clip.antiAlias, - ).foreground().build( - Oval.circle( - radius: 100, - color: Colors.amber, - ), - ), - ], - ) // - // .frame(height: 120, width: 120) // - // .background(Circle( - // color: Colors.red, - // )) - , - ), - ); - } -} - -class FavoriteExample extends StatelessWidget { - const FavoriteExample({super.key}); - - @override - Widget build(BuildContext context) { - return Scaffold( - body: Center( - child: Column( - children: [ - Icon( - Icons.favorite, - size: 48, - color: Colors.white, - ) - .background( - boxShadow: BoxShadowWithElevation(8, - color: Color.fromARGB(122, 4, 4, 4)), - color: ColorWithGradient( - LinearGradient( - colors: [Colors.blue.shade300, Colors.blue.shade900], - ), - ), - ) - .buildCircle(radius: 100) - - // - .foreground(alignment: Alignment(1, 1) / 1.1) - .build( - Padding( - padding: const EdgeInsets.all(12), - child: Text( - '5', - style: Theme.of(context).textTheme.titleLarge!.copyWith( - color: Colors.white, - ), - ), - ) - .background( - color: Colors.blue.shade900, - boxShadow: - BoxShadowWithElevation(12, color: Colors.white), - ) - .buildCircle(), - ), - // Icon( - // Icons.favorite, - // size: 40, - // color: Colors.white, - // ) - // .frame( - // elevation: 6, - // shadowColor: Color.fromARGB(123, 13, 72, 161), - // color: GradientColor( - // LinearGradient( - // colors: [Colors.blue.shade300, Colors.blue.shade900], - // ), - // ), - // ) - // .buildCircle(radius: 100) - // .overlay(Alignment.bottomRight) - // .build( - // Padding( - // padding: const EdgeInsets.all(8.0), - // child: Text( - // '5', - // style: Theme.of(context).textTheme.titleMedium!.copyWith( - // color: Colors.white, - // ), - // ), - // ) - // .background() // - // .build(Ovel.circle( - // color: Colors.blue.shade900, - // elevation: 12, - // shadowColor: Colors.white, - // )), - // ), - ], - ), - ), - ); - } -} - -class ClipExample extends StatelessWidget { - const ClipExample({super.key}); - - @override - Widget build(BuildContext context) { - return Scaffold( - body: Padding( - padding: const EdgeInsets.all(8.0), - child: Center( - child: Column( - children: [ - Material( - color: Colors.blue, - shape: CircleBorder(), - child: Align( - alignment: Alignment.bottomLeft, child: Text('Fhis is me')), - ), - Padding( - padding: const EdgeInsets.all(18.0), - child: Text('Shis is me'), - ) - .background(clipBehavior: Clip.hardEdge) // - .buildSquare(), - - Text('This is me').background().buildCircle(), - - Material( - color: Colors.red, - child: InkWell( - onTap: () => print('Tap'), - child: SizedBox( - width: double.infinity, - height: 100, - child: Center(child: Text('TAP')), - ), - ), - ) - .background( - clipBehavior: Clip.antiAlias, - ) - .buildCapsule( - // width: double.infinity, - // height: 100, - ), - Expanded( - child: Text('This is me') - .background(alignment: Alignment.center) - .build(Oval.circle()), - ), - // - // - // RRectangle.capsule( - // clipBehavior: Clip.antiAlias, - // elevation: 5, - // color: GradientColor( - // LinearGradient(colors: [Colors.red, Colors.blue]), - // ), - // child: Rectangle( - // color: Colors.yellow, - // height: 100, - // ), - // ).frame().buildRect(), - // Ovel( - // clipBehavior: Clip.hardEdge, - // elevation: 5, - // color: GradientColor( - // LinearGradient(colors: [Colors.red, Colors.blue]), - // ), - // child: Text('Hi there All'), - // ), - // Ovel( - // clipBehavior: Clip.antiAlias, - // elevation: 5, - // color: GradientColor( - // LinearGradient(colors: [Colors.red, Colors.blue]), - // ), - // child: Text('Hi there All'), - // ), - // Ovel( - // clipBehavior: Clip.antiAliasWithSaveLayer, - // elevation: 5, - // color: GradientColor( - // LinearGradient(colors: [Colors.red, Colors.blue]), - // ), - // child: Text('Hi there All'), - // ), - ], - ), - ), - ), - ); - } -} diff --git a/example/test/flutter_logo_image.png b/example/test/flutter_logo_image.png new file mode 100644 index 0000000000000000000000000000000000000000..78463db3b920414dfeb1a6a2c37baa94cadec40e GIT binary patch literal 9061 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 boxShadow, required Clip clipBehavior, - required bool clipShrink, + required bool shrinkToClippedSize, required this.buildContext, - required bool isOverlay, + required bool childIsInTheForeground, required AlignmentGeometry alignment, required DecorationImage? decorationImage, required double? squareSide, required Size? imageSize, required PaintStyle? paintStyle, + required this.isConstraintTransparent, }) : _color = color, _width = width, _height = height, + _shouldExpand = shouldExpand, _boxShadow = boxShadow, _clipBehavior = clipBehavior, - _clipShrink = clipShrink, - _isOverlay = isOverlay, + _shrinkToClippedSize = shrinkToClippedSize, + _childIsInTheForeground = childIsInTheForeground, _alignment = alignment, - _decorationImage = decorationImage, _squareSide = squareSide, _imageSize = imageSize, _paintStyle = paintStyle, super(textDirection: TextDirection.ltr); final BuildContext buildContext; + final bool isConstraintTransparent; List _boxShadow; set boxShadow(List value) { @@ -80,14 +89,14 @@ abstract class _BaseRenderShape extends RenderAligningShiftedBox { markNeedsPaint(); } - bool _clipShrink; - set clipShrink(bool value) { - if (value == _clipShrink) { + bool _shrinkToClippedSize; + set shrinkToClippedSize(bool value) { + if (value == _shrinkToClippedSize) { return; } - _clipShrink = value; + _shrinkToClippedSize = value; resetPainters(); - markNeedsPaint(); + markNeedsLayout(); } double? _width; @@ -97,7 +106,7 @@ abstract class _BaseRenderShape extends RenderAligningShiftedBox { } _width = value; resetPainters(); - markNeedsPaint(); + markNeedsLayout(); } double? _height; @@ -107,15 +116,25 @@ abstract class _BaseRenderShape extends RenderAligningShiftedBox { } _height = value; resetPainters(); + markNeedsLayout(); + } + + bool _shouldExpand; + set shouldExpand(bool value) { + if (value == _shouldExpand) { + return; + } + _shouldExpand = value; + resetPainters(); markNeedsPaint(); } - bool _isOverlay; - set isOverlay(bool value) { - if (value == _isOverlay) { + bool _childIsInTheForeground; + set childIsInTheForeground(bool value) { + if (value == _childIsInTheForeground) { return; } - _isOverlay = value; + _childIsInTheForeground = value; resetPainters(); markNeedsPaint(); } @@ -142,17 +161,6 @@ abstract class _BaseRenderShape extends RenderAligningShiftedBox { markNeedsPaint(); } - DecorationImage? _decorationImage; - set decorationImage(DecorationImage? value) { - if (value == _decorationImage) { - return; - } - _decorationImage = value; - - resetPainters(); - markNeedsPaint(); - } - double? _squareSide; set squareSide(double? value) { if (value == _squareSide) { @@ -173,8 +181,8 @@ abstract class _BaseRenderShape extends RenderAligningShiftedBox { markNeedsPaint(); } - double offsetX = 0.0; - double offsetY = 0.0; + double centerX = 0.0; + double centerY = 0.0; _ShapePainter? _painter; @@ -213,6 +221,15 @@ abstract class _BaseRenderShape extends RenderAligningShiftedBox { BoxConstraints c, { required bool parentUseSize, }) { + if (isConstraintTransparent) { + assert(child != null); + child!.layout(c, parentUsesSize: true); + return child!.size; + } + _width ??= _shouldExpand ? double.infinity : _width; + _height ??= _shouldExpand ? double.infinity : _height; + _squareSide ??= + _squareSide != null && _shouldExpand ? double.infinity : _squareSide; var width = c.hasTightWidth ? c.minWidth : _width; var height = c.hasTightHeight ? c.minHeight : _height; Size? drySize; @@ -223,56 +240,27 @@ abstract class _BaseRenderShape extends RenderAligningShiftedBox { _imageSize!.height != -1 ? _imageSize!.height : height ?? c.maxHeight, ), ); - - // if (_squareSide != null && !c.isTight) { - // dd = Size.square( - // c.hasTightWidth - // ? c.maxWidth - // : c.hasTightHeight - // ? c.maxHeight - // : dd.shortestSide, - // ); - // } - - // var constraints = c.tighten( - // width: dd.width, - // height: dd.height, - // ); - - // final w = _imageSize!.width == -1 - // ? constraints.maxWidth - // : min(_imageSize!.width, c.maxWidth); - // final h = _imageSize!.height == -1 - // ? constraints.maxHeight - // : min(_imageSize!.height, c.maxHeight); child!.layout( - // _imageSize == const Size(-1, -1) || true - // ? BoxConstraints( - // minWidth: w, - // maxWidth: w, - // minHeight: h, - // maxHeight: h, - // ) - // : - BoxConstraints.tight(dd), + _imageSize == const Size(-1, -1) + ? dd.isFinite + ? BoxConstraints.tight(dd) + : BoxConstraints.loose(dd) // Test me + : BoxConstraints( + maxWidth: _imageSize!.width != -1 ? dd.width : c.maxWidth, + minWidth: width != null ? dd.width : c.minWidth, + maxHeight: _imageSize!.height != -1 ? dd.height : c.maxHeight, + minHeight: height != null ? dd.height : c.minHeight, + ), parentUsesSize: true, ); drySize = child!.size; - // if (width == null) { - // width = drySize.width; - // _imageSize = Size(width, _imageSize!.height); - // } - // if (height == null) { - // height = drySize.height; - // _imageSize = Size(_imageSize!.width, height); - // } if (_imageSize == const Size(-1, -1)) { sizeToPaint = drySize; } else { final widthFactor = _imageSize!.width == -1 ? 1 : drySize.width / _imageSize!.width; - final heightFactor = - _imageSize!.height == -1 ? 1 : drySize.height / _imageSize!.height; + // final heightFactor = + // _imageSize!.height == -1 ? 1 : drySize.height / _imageSize!.height; sizeToPaint = Size( _width != null ? _width! * widthFactor : drySize.width, _height != null ? _height! * widthFactor : drySize.height, @@ -288,8 +276,7 @@ abstract class _BaseRenderShape extends RenderAligningShiftedBox { } } } else { - var dd = c - .constrain(Size(width ?? double.infinity, height ?? double.infinity)); + var dd = c.constrain(Size(width ?? 0.0, height ?? 0.0)); if (_squareSide != null && !c.isTight) { dd = Size.square( @@ -339,7 +326,7 @@ abstract class _BaseRenderShape extends RenderAligningShiftedBox { ); this.drySize = drySize; - return _clipBehavior == Clip.none || !_clipShrink + return _clipBehavior == Clip.none || !_shrinkToClippedSize ? drySize : Size( c.hasTightWidth ? c.minWidth : sizeToPaint.width, @@ -364,6 +351,10 @@ abstract class _BaseRenderShape extends RenderAligningShiftedBox { @override void paint(PaintingContext context, Offset offset) { if (size == Size.zero) return; + if (isConstraintTransparent) { + context.paintChild(child!, offset); + return; + } final effectiveRect = getEffectiveRect(offset); bool recreate = _painter == null || effectiveRect != _painter!.effectiveRect; @@ -396,29 +387,21 @@ abstract class _BaseRenderShape extends RenderAligningShiftedBox { Rect getEffectiveRect(Offset offset) { double width = sizeToPaint.width; double height = sizeToPaint.height; - // print(child!.size); - // final s = _clipBehavior == Clip.none ? size : (child?.size ?? size); - // final s = _clipBehavior == Clip.none ? size : drySize; - final s = size; _resolvedAlignment = _alignment.resolve(Directionality.maybeOf(buildContext)); - final x = _resolvedAlignment!.x; - offsetX = (s.width * x + s.width + -x.sign * width) / 2; - final y = _resolvedAlignment!.y; - offsetY = (s.height * y + s.height - y.sign * height) / 2; - - if (child != null && _clipShrink) { + if (child != null && _shrinkToClippedSize) { alignChild(); } - return Rect.fromCenter( - center: offset + Offset(offsetX, offsetY), - // center: offset, - width: width, - height: height, + final rect = _resolvedAlignment!.inscribe( + Size(width, height), + Rect.fromLTWH(offset.dx, offset.dy, size.width, size.height), ); + centerX = rect.center.dx - offset.dx; + centerY = rect.center.dy - offset.dy; + return rect; } } @@ -442,28 +425,30 @@ class _ShapePainter { } painter.shader = (color as ColorWithGradient).gradient.createShader(effectiveRect); - } else { - if (color is ColorWithBlendMode) { + } else if (color is ColorWithBlendMode) { + painter.color = (color as ColorWithBlendMode).blendColor; + if ((color as ColorWithBlendMode).blendMode != null) { painter.blendMode = (color as ColorWithBlendMode).blendMode!; } + } else { painter.color = color; - if (paintStyle?.style != null) { - painter.style = paintStyle!.style!; - } - if (paintStyle?.strokeWidth != null) { - painter.strokeWidth = paintStyle!.strokeWidth!; - } + } + if (paintStyle?.style != null) { + painter.style = paintStyle!.style!; + } + if (paintStyle?.strokeWidth != null) { + painter.strokeWidth = paintStyle!.strokeWidth!; + } - if (paintStyle?.strokeCap != null) { - painter.strokeCap = paintStyle!.strokeCap!; - } + if (paintStyle?.strokeCap != null) { + painter.strokeCap = paintStyle!.strokeCap!; + } - if (paintStyle?.strokeMiterLimit != null) { - painter.strokeMiterLimit = paintStyle!.strokeMiterLimit!; - } - if (paintStyle?.strokeJoin != null) { - painter.strokeJoin = paintStyle!.strokeJoin!; - } + if (paintStyle?.strokeMiterLimit != null) { + painter.strokeMiterLimit = paintStyle!.strokeMiterLimit!; + } + if (paintStyle?.strokeJoin != null) { + painter.strokeJoin = paintStyle!.strokeJoin!; } } @@ -578,40 +563,33 @@ class _ShapePainter { DecorationImagePainter? _imagePainter; void _paintBackgroundImageOrChild(PaintingContext context) { - final image = renderShape._decorationImage; final child = renderShape.child; - if (image == null) { - if (child != null) { - if (renderShape._clipShrink) { - final BoxParentData childParentData = - child.parentData! as BoxParentData; - context.paintChild(child, childParentData.offset + offset); - return; - } - context.paintChild(child, offset); - } + if (child == null) { return; } - _imagePainter ??= image.createPainter(onChanged); - _imagePainter!.paint( - context.canvas, - effectiveRect, - pathToPaint, - createLocalImageConfiguration( - renderShape.buildContext, - size: renderShape.size, - ), - ); + if (renderShape._shrinkToClippedSize) { + final BoxParentData childParentData = child.parentData! as BoxParentData; + context.paintChild(child, childParentData.offset + offset); + return; + } + context.paintChild(child, offset); } void dispose() { _imagePainter?.dispose(); } - void _performPaint(PaintingContext context, Offset _) { - _paintShadows(context.canvas); - if (renderShape._isOverlay) { + void _performPaint( + PaintingContext context, + Offset _, [ + bool paintShadow = false, + ]) { + if (paintShadow) { + // TODO Test me + _paintShadows(context.canvas); + } + if (!renderShape._childIsInTheForeground) { _paintBackgroundImageOrChild(context); } @@ -628,15 +606,16 @@ class _ShapePainter { context.canvas.drawPath(pathToPaint!, painter); } - if (!renderShape._isOverlay) { + if (renderShape._childIsInTheForeground) { _paintBackgroundImageOrChild(context); } } void paint(PaintingContext context, Offset offset) { if (renderShape._clipBehavior == Clip.none) { - _performPaint(context, offset); + _performPaint(context, offset, true); } else { + _paintShadows(context.canvas); if (rectToPaint != null) { context.clipRectAndPaint( rectToPaint!, diff --git a/lib/src/base_single_child_render_shape.dart b/lib/src/base_single_child_render_shape.dart index 1fe1cbf..e421d75 100644 --- a/lib/src/base_single_child_render_shape.dart +++ b/lib/src/base_single_child_render_shape.dart @@ -1,65 +1,154 @@ part of 'base_render_shape.dart'; +bool shouldExpandImage(Widget? child, double? width, double? height) { + if (child is! Image) return false; + if (child.width == null && width == null || + child.height == null && height == null) { + return false; + } + return child.width != null || child.height != null; +} + +Widget _wrapWithImage(Image child, AlignmentGeometry alignment) => Image( + image: child.image, + alignment: alignment, + centerSlice: child.centerSlice, + color: child.color, + colorBlendMode: child.colorBlendMode, + errorBuilder: child.errorBuilder, + excludeFromSemantics: child.excludeFromSemantics, + filterQuality: child.filterQuality, + fit: child.fit, + frameBuilder: child.frameBuilder, + gaplessPlayback: child.gaplessPlayback, + height: child.height, + isAntiAlias: child.isAntiAlias, + key: child.key, + loadingBuilder: child.loadingBuilder, + matchTextDirection: child.matchTextDirection, + opacity: child.opacity, + repeat: child.repeat, + semanticLabel: child.semanticLabel, + width: child.width, + ); + +// Widget _wrapWithInkWell(InkWell inkWell, Widget child, double? width, +// double? height, AlignmentGeometry alignment) { +// final ink = InkResponse( +// containedInkWell: true, +// highlightShape: BoxShape.rectangle, +// key: inkWell.key, +// onTap: inkWell.onTap, +// onTapDown: inkWell.onTapDown, +// onTapUp: inkWell.onTapUp, +// onTapCancel: inkWell.onTapCancel, +// onDoubleTap: inkWell.onDoubleTap, +// onLongPress: inkWell.onLongPress, +// onHighlightChanged: inkWell.onHighlightChanged, +// onHover: inkWell.onHover, +// mouseCursor: inkWell.mouseCursor, +// radius: inkWell.radius, +// borderRadius: inkWell.borderRadius, +// customBorder: inkWell.customBorder, +// focusColor: inkWell.focusColor, +// hoverColor: inkWell.hoverColor, +// highlightColor: inkWell.highlightColor, +// overlayColor: inkWell.overlayColor, +// splashColor: inkWell.splashColor, +// splashFactory: inkWell.splashFactory, +// enableFeedback: inkWell.enableFeedback, +// excludeFromSemantics: inkWell.excludeFromSemantics, +// focusNode: inkWell.focusNode, +// canRequestFocus: inkWell.canRequestFocus, +// onFocusChange: inkWell.onFocusChange, +// autofocus: inkWell.autofocus, +// statesController: inkWell.statesController, +// child: child is Image +// ? null +// : Align( +// widthFactor: 1, +// heightFactor: 1, +// alignment: alignment, +// child: child, +// ), +// ); +// return Material( +// type: MaterialType.transparency, +// child: ConstrainedBox( +// constraints: BoxConstraints( +// minWidth: width ?? 0.0, +// minHeight: height ?? 0.0, +// ), +// child: child is Image +// ? Builder( +// builder: (context) { +// return Ink.image( +// image: child.image, +// fit: child.fit, +// centerSlice: child.centerSlice, +// alignment: alignment, +// width: child.width, +// height: child.height, +// repeat: child.repeat, +// onImageError: child.errorBuilder != null +// ? (e, s) => child.errorBuilder!(context, e, s) +// : null, +// child: ink, +// ); +// }, +// ) +// : ink, +// ), +// ); +// } + class _BaseSingleChildRenderObjectShape extends SingleChildRenderObjectWidget { final Color? color; final double? width, height, squareSide; + final bool shouldExpand; final List shadow; final Clip clipBehavior; - final bool clipShrink; - final bool isOverlay; + final bool shrinkToClippedSize; + final bool childIsInTheForeground; final AlignmentGeometry alignment; final DecorationImage? decorationImage = null; final Size? imageSize; final PaintStyle? paintStyle; + final bool isConstraintTransparent; + final InkWell? inkWell; _BaseSingleChildRenderObjectShape({ required this.color, required this.width, required this.height, required this.squareSide, + required this.shouldExpand, required this.shadow, - required this.isOverlay, + required this.childIsInTheForeground, required this.clipBehavior, - required this.clipShrink, + required this.shrinkToClippedSize, required this.alignment, required this.paintStyle, required Widget? child, + required this.isConstraintTransparent, required super.key, + this.inkWell, }) : imageSize = child is Image && clipBehavior != Clip.none ? Size((child).width ?? -1, child.height ?? -1) : null, super( - child: child is Image - ? Image( - image: child.image, - alignment: alignment, - centerSlice: child.centerSlice, - color: child.color, - colorBlendMode: child.colorBlendMode, - errorBuilder: child.errorBuilder, - excludeFromSemantics: child.excludeFromSemantics, - filterQuality: child.filterQuality, - fit: child.fit, - frameBuilder: child.frameBuilder, - gaplessPlayback: child.gaplessPlayback, - height: child.height, - isAntiAlias: child.isAntiAlias, - key: child.key, - loadingBuilder: child.loadingBuilder, - matchTextDirection: child.matchTextDirection, - opacity: child.opacity, - repeat: child.repeat, - semanticLabel: child.semanticLabel, - width: child.width, - ) - : child != null - ? Align( - widthFactor: 1, - heightFactor: 1, - alignment: alignment, - child: child, - ) - : null, + child: isConstraintTransparent + ? child + : child is Image + ? _wrapWithImage(child, alignment) + : child != null + ? Align( + widthFactor: 1, + heightFactor: 1, + alignment: alignment, + child: child, + ) + : const SizedBox.shrink(), ); @override @@ -68,11 +157,11 @@ class _BaseSingleChildRenderObjectShape extends SingleChildRenderObjectWidget { ..color = color ..width = width ..height = height + ..shouldExpand = shouldExpand ..clipBehavior = clipBehavior - ..clipShrink = clipShrink - ..isOverlay = isOverlay + ..shrinkToClippedSize = shrinkToClippedSize + ..childIsInTheForeground = childIsInTheForeground ..boxShadow = shadow - ..decorationImage = decorationImage ..alignment = alignment ..imageSize = imageSize ..paintStyle = paintStyle; @@ -85,7 +174,8 @@ class _BaseSingleChildRenderObjectShape extends SingleChildRenderObjectWidget { properties.add(DiagnosticsProperty('width', width)); properties.add(DiagnosticsProperty('height', height)); properties.add(DiagnosticsProperty>('shadow', shadow)); - properties.add(DiagnosticsProperty('clipShrink', clipShrink)); + properties.add( + DiagnosticsProperty('shrinkToClippedSize', shrinkToClippedSize)); properties.add(DiagnosticsProperty('clipBehavior', clipBehavior)); properties .add(DiagnosticsProperty('alignment', alignment)); diff --git a/lib/src/colorize.dart b/lib/src/colorize.dart index bd6b30a..fa1e046 100644 --- a/lib/src/colorize.dart +++ b/lib/src/colorize.dart @@ -1,7 +1,4 @@ -import 'package:flutter/material.dart'; -import 'package:flutter/rendering.dart'; - -import 'gradient_color.dart'; +part of 'base_render_shape.dart'; class Colorize extends SingleChildRenderObjectWidget { /// Creates a widget that paints its area with the specified [Color]. diff --git a/lib/src/flex_spacer.dart b/lib/src/flex_spacer.dart deleted file mode 100644 index 7fdb41b..0000000 --- a/lib/src/flex_spacer.dart +++ /dev/null @@ -1,49 +0,0 @@ -import 'package:flutter/material.dart'; -import 'shape_builder.dart'; - -class FlexSpacer extends StatelessWidget { - const FlexSpacer._(this.space, num multiplier, bool shouldExpand) - : _multiplier = multiplier, - _shouldExpand = shouldExpand; - const FlexSpacer([this.space = 8.0]) - : _multiplier = 1.0, - _shouldExpand = false; - - const FlexSpacer.expand([this.space = 8]) - : _multiplier = 1.0, - _shouldExpand = true; - final bool _shouldExpand; - final double space; - final num _multiplier; - int get f => _multiplier * space ~/ 8; - - static bool _debugSpacer = false; - static set debugSpacer(bool value) { - assert(() { - _debugSpacer = value; - return true; - }()); - } - - @override - Widget build(BuildContext context) { - Widget child = const SizedBox(); - if (_debugSpacer) { - child = const SizedBox( - child: Placeholder(), - ).colorize(Colors.blueGrey.withOpacity(0.4)); - } - return Resize( - child: child, - fitTheShortestSide: false, - flex: f + 1, - shouldExpand: _shouldExpand, - ).fixed( - height: _multiplier * space, - width: _multiplier * space, - ); - } - - FlexSpacer operator *(num operand) => - FlexSpacer._(space, _multiplier * operand, _shouldExpand); -} diff --git a/lib/src/gradient_color.dart b/lib/src/gradient_color.dart index 16077e7..0585c54 100644 --- a/lib/src/gradient_color.dart +++ b/lib/src/gradient_color.dart @@ -32,8 +32,10 @@ class ColorWithGradient extends Color { } class ColorWithBlendMode extends Color { - ColorWithBlendMode(Color color, this.blendMode) : super(color.value); - + ColorWithBlendMode(Color color, this.blendMode) + : blendColor = color, + super(color.value); + final Color blendColor; final BlendMode? blendMode; @override diff --git a/lib/src/layout_arranger/fitted_box_render copy.dart b/lib/src/layout_arranger/fitted_box_render copy.dart deleted file mode 100644 index abbbf86..0000000 --- a/lib/src/layout_arranger/fitted_box_render copy.dart +++ /dev/null @@ -1,470 +0,0 @@ -import 'dart:math'; - -import 'package:flutter/material.dart'; -import 'package:flutter/rendering.dart'; - -class MyFittedBox extends SingleChildRenderObjectWidget { - const MyFittedBox({ - required this.width, - required this.height, - this.inheritedFraction = 1.0, - required this.fitTheShortestSide, - super.key, - super.child, - }); - final double? width, height; - final double inheritedFraction; - final bool fitTheShortestSide; - @override - MyRenderFittedBox createRenderObject(BuildContext context) { - return MyRenderFittedBox( - width: width, - height: height, - inheritedFraction: inheritedFraction, - fitTheShortestSide: fitTheShortestSide, - ); - } - - @override - void updateRenderObject( - BuildContext context, MyRenderFittedBox renderObject) { - renderObject - ..width = width - ..height = height - ..fitTheShortestSide = fitTheShortestSide - ..inheritedFraction = inheritedFraction; - } - - @override - void debugFillProperties(DiagnosticPropertiesBuilder properties) { - super.debugFillProperties(properties); - } -} - -class MyRenderFittedBox extends RenderProxyBox { - MyRenderFittedBox({ - required double? width, - required double? height, - required bool fitTheShortestSide, - required double inheritedFraction, - }) : _width = width, - _height = height, - _fitTheShortestSide = fitTheShortestSide, - _inheritedFraction = inheritedFraction; - - double? _width; - set width(double? value) { - if (value == _width) { - return; - } - _width = value; - // _transform = null; - markNeedsLayout(); - } - - double? _height; - set height(double? value) { - if (value == _height) { - return; - } - _height = value; - - markNeedsLayout(); - } - - double _inheritedFraction; - set inheritedFraction(double value) { - if (value == _width) { - return; - } - _inheritedFraction = value; - // _transform = null; - markNeedsLayout(); - } - - bool _fitTheShortestSide; - set fitTheShortestSide(bool value) { - if (value == _fitTheShortestSide) { - return; - } - _fitTheShortestSide = value; - - markNeedsLayout(); - } - - // TODO(ianh): The intrinsic dimensions of this box are wrong. - - @override - Size computeDryLayout(BoxConstraints constraints) { - if (child != null) { - final w = min(_width ?? double.infinity, constraints.maxWidth); - final h = min(_height ?? double.infinity, constraints.maxHeight); - constraints = BoxConstraints.tight(Size(w, h)); - - final Size childSize = child!.getDryLayout( - constraints.loosen(), - ); - - bool invalidChildSize = false; - assert(() { - if (RenderObject.debugCheckingIntrinsics && - childSize.width * childSize.height == 0.0) { - invalidChildSize = true; - } - return true; - }()); - if (invalidChildSize) { - assert(debugCannotComputeDryLayout( - reason: 'Child provided invalid size of $childSize.', - )); - return Size.zero; - } - return constraints - .constrainSizeAndAttemptToPreserveAspectRatio(childSize); - } else { - return constraints.smallest; - } - } - - BoxConstraints? _constraints; - @override - BoxConstraints get constraints { - if (_constraints != null) return _constraints!; - _constraints = super.constraints; - _width ??= double.infinity; - _height ??= double.infinity; - - _boxFit = _fitTheShortestSide ? BoxFit.contain : BoxFit.fill; - - _boxFit = _width != double.infinity && _height != double.infinity - ? _boxFit - : _width != double.infinity - ? BoxFit.fitWidth - : _height != double.infinity - ? BoxFit.fitHeight - : _boxFit; - final w = _constraints!.constrainWidth(_width!); - final h = _constraints!.constrainHeight(_height!); - - final ss = _fitTheShortestSide && - _width != double.infinity && - _height != double.infinity - ? _constraints!.constrainSizeAndAttemptToPreserveAspectRatio( - Size(_width!, _height!), - ) - : _constraints!.constrainSizeAndAttemptToPreserveAspectRatio( - Size(w, h), - ); - - final RenderFlex? renderFlexParent = - parent is RenderFlex ? (parent as RenderFlex) : null; - - _constraints = BoxConstraints( - minWidth: _width!.isFinite && ss.width.isFinite ? ss.width : 0, - minHeight: _height!.isFinite && ss.height.isFinite ? ss.height : 0, - maxWidth: ss.width.isFinite ? ss.width : double.infinity, - maxHeight: ss.height.isFinite ? ss.height : double.infinity, - ); - - // if (_renderParent == null && - // renderFlexParent != null && - // renderFlexParent.parent is! RenderSliver) { - // _renderParent = renderFlexParent.parent as RenderBox; - // if (_renderParent!.hasSize) { - // final axis = renderFlexParent.direction; - // if (axis == Axis.vertical && - // _constraints!.maxHeight == double.infinity) { - // _constraints = - // _constraints!.copyWith(maxHeight: _renderParent!.size.height); - // } - // if (axis == Axis.horizontal && - // _constraints!.maxWidth == double.infinity) { - // _constraints = - // _constraints!.copyWith(maxWidth: _renderParent!.size.width); - // } - // } - // } - return _constraints!; - } - - Size? _applyLayout(BoxConstraints c) { - try { - child!.layout(c, parentUsesSize: true); - } catch (e) { - print(child!.size); - } - final childSize = child!.size; - final constrainedSize = childSize.isFinite && !childSize.isEmpty - ? constraints.constrainSizeAndAttemptToPreserveAspectRatio(childSize) - : null; - return constrainedSize; - } - - Size? constrainedSize; - @override - void performLayout() { - _constraints = null; - constrainedSize = null; - if (child != null) { - final maxWidth = super.constraints.maxWidth; - final maxHeight = super.constraints.maxHeight; - - if (_inheritedFraction != 1) { - final loosenConstraints = BoxConstraints( - maxWidth: 500, - maxHeight: maxHeight, - ); - constrainedSize = _applyLayout(loosenConstraints); - // print(child!.getMaxIntrinsicHeight(loosenConstraints.maxWidth)); - // print(child!.getMaxIntrinsicWidth(loosenConstraints.maxHeight)); - // print(child!.getDryLayout(BoxConstraints())); - var childSize = child!.size; - var widthRatio = (childSize.width) / constrainedSize!.width; - var heightRatio = (childSize.height) / constrainedSize!.height; - if (widthRatio == 1 || heightRatio == 1) { - // final widthFactor = - // false && (widthRatio != 1 || constrainedSize!.width == 500) - // ? 1 - // : _inheritedFraction; - // final heightFactor = (heightRatio != 1 || - // constrainedSize!.height == constraints.maxHeight) - // ? 1 - // : _inheritedFraction; - constrainedSize = constraints.constrain( - Size( - // constrainedSize!.width * widthFactor, - // constrainedSize!.height * heightFactor, - constrainedSize!.width * _inheritedFraction, - constrainedSize!.height * _inheritedFraction, - ), - ); - - // var widthRatio = (childSize.width) / constrainedSize!.width; - // var heightRatio = (childSize.height) / constrainedSize!.height; - _applyLayout( - constraints.copyWith( - maxWidth: constrainedSize!.width / _inheritedFraction, - maxHeight: constrainedSize!.height / _inheritedFraction, - ), - ); - childSize = child!.size; - _boxFit = BoxFit.contain; - } - // if (widthRatio == 1 && heightRatio != 1) { - // } else if (heightRatio == 1 && widthRatio != 1) { - // _applyLayout( - // constraints.copyWith( - // maxHeight: constraints.maxHeight * widthRatio, - // ), - // ); - // childSize = child!.size; - // _boxFit = BoxFit.contain; - // } else if (widthRatio == 1 && heightRatio == 1) { - - // } - - size = constrainedSize!; - _clearPaintData(); - return; - } - - final loosenConstraints = BoxConstraints( - maxWidth: maxWidth + 0.1, - maxHeight: maxHeight + 0.1, - ); - - constrainedSize = _applyLayout(loosenConstraints); - var childSize = child!.size; - final childCanBeGreaterThenWidth = - childSize.width > loosenConstraints.maxWidth - 0.1; - final childCanBeGreaterThenHeight = - childSize.height > loosenConstraints.maxHeight - 0.1; - - if (constrainedSize == null) { - child!.layout(constraints, parentUsesSize: true); - size = child!.size; - constrainedSize = size; - _clearPaintData(); - return; - } - - if (_fitTheShortestSide) { - _boxFit1 = BoxFit.contain; - } else { - _boxFit1 = BoxFit.fill; - } - if (_boxFit == BoxFit.fitHeight) { - final heightRatio = childSize.height / constrainedSize!.height; - // heightRation less than one means it will scale up the child - // and - // childSize.width greater the the ss.width time the heightRation it - // means it will overflow - - if (heightRatio > 1) { - // TODO find use case - // if (childCanBeGreaterThenHeight) { - // constrainedSize = _applyLayout(constraints); - // } - if (childCanBeGreaterThenWidth) { - constrainedSize = _applyLayout(loosenConstraints.copyWith( - maxWidth: constraints.maxWidth * heightRatio, - )); - _boxFit1 = BoxFit.fill; - } - childSize = child!.size; - } else if (heightRatio < 1 && - childSize.width > constrainedSize!.width * heightRatio) { - _applyLayout( - loosenConstraints.copyWith( - maxWidth: constrainedSize!.width * heightRatio, - ), - ); - childSize = child!.size; - _boxFit1 = BoxFit.fitWidth; - } - } else if (_boxFit == BoxFit.fitWidth) { - final widthRatio = childSize.width / constrainedSize!.width; - if (widthRatio > 1 && childCanBeGreaterThenWidth) { - constrainedSize = _applyLayout(constraints); - childSize = child!.size; - } - // TODO find use CASE - else if (widthRatio < 1 && - childSize.height > constrainedSize!.height * widthRatio) { - // _applyLayout( - // loosenConstraints.copyWith( - // maxHeight: constraints.maxHeight * widthRatio, - // ), - // ); - // child!.layout( - // loosenConstraints.copyWith( - // maxHeight: constraints.maxHeight * widthRatio), - // parentUsesSize: true, - // ); - - childSize = child!.size; - _boxFit1 = BoxFit.contain; - } - } - - size = constrainedSize!; - _clearPaintData(); - } else { - size = constraints.smallest; - } - } - - bool? _hasVisualOverflow; - Matrix4? _transform; - BoxFit _boxFit = BoxFit.contain; - BoxFit _boxFit1 = BoxFit.contain; - - void _clearPaintData() { - _hasVisualOverflow = null; - _transform = null; - } - - void _updatePaintData() { - if (_transform != null) { - return; - } - - if (child == null) { - _hasVisualOverflow = false; - _transform = Matrix4.identity(); - } else { - final Size childSize = child!.size; - final FittedSizes sizes = - applyBoxFit(_boxFit1, childSize, constrainedSize!); - final double scaleX = sizes.destination.width / sizes.source.width; - final double scaleY = sizes.destination.height / sizes.source.height; - - final Rect sourceRect = - Alignment.center.inscribe(sizes.source, Offset.zero & childSize); - final Rect destinationRect = - Alignment.center.inscribe(sizes.destination, Offset.zero & size); - _hasVisualOverflow = sourceRect.width.toInt() < childSize.width.toInt() || - sourceRect.height.toInt() < childSize.height.toInt(); - // assert(!_hasVisualOverflow); - // // if (_hasVisualOverflow!) { - // // print("_hasVisualOverflow"); - // // } - - _transform = Matrix4.translationValues( - destinationRect.left, destinationRect.top, 0.0) - ..scale(scaleX, scaleY, 1.0) - ..translate(-sourceRect.left, -sourceRect.top); - assert(_transform!.storage.every((double value) => value.isFinite)); - } - } - - TransformLayer? _paintChildWithTransform( - PaintingContext context, Offset offset) { - final Offset? childOffset = MatrixUtils.getAsTranslation(_transform!); - if (childOffset == null) { - return context.pushTransform( - needsCompositing, - offset, - _transform!, - super.paint, - oldLayer: layer is TransformLayer ? layer! as TransformLayer : null, - ); - } else { - super.paint(context, offset + childOffset); - } - return null; - } - - @override - void paint(PaintingContext context, Offset offset) { - if (child == null || size.isEmpty || child!.size.isEmpty) { - return; - } - _updatePaintData(); - assert(child != null); - if (_hasVisualOverflow!) { - // throw Exception('******* has visual over flow *****'); - layer = context.pushClipRect( - needsCompositing, - offset, - Offset.zero & size, - _paintChildWithTransform, - oldLayer: layer is ClipRectLayer ? layer! as ClipRectLayer : null, - clipBehavior: Clip.antiAlias, - ); - } else { - layer = _paintChildWithTransform(context, offset); - } - } - - @override - bool hitTestChildren(BoxHitTestResult result, {required Offset position}) { - if (size.isEmpty || (child?.size.isEmpty ?? false)) { - return false; - } - _updatePaintData(); - return result.addWithPaintTransform( - transform: _transform, - position: position, - hitTest: (BoxHitTestResult result, Offset position) { - return super.hitTestChildren(result, position: position); - }, - ); - } - - @override - bool paintsChild(RenderBox child) { - assert(child.parent == this); - return !size.isEmpty && !child.size.isEmpty; - } - - @override - void applyPaintTransform(RenderBox child, Matrix4 transform) { - if (!paintsChild(child)) { - transform.setZero(); - } else { - _updatePaintData(); - transform.multiply(_transform!); - } - } -} diff --git a/lib/src/layout_arranger/fitted_box_render.dart b/lib/src/layout_arranger/fitted_box_render.dart deleted file mode 100644 index 7febdbb..0000000 --- a/lib/src/layout_arranger/fitted_box_render.dart +++ /dev/null @@ -1,473 +0,0 @@ -import 'dart:math'; - -import 'package:flutter/material.dart'; -import 'package:flutter/rendering.dart'; -import 'package:shape_builder/shape_builder.dart'; - -class MyFittedBox extends SingleChildRenderObjectWidget { - const MyFittedBox({ - required this.width, - required this.height, - this.inheritedFraction, - required this.fitTheShortestSide, - this.respectAspectRation = true, - super.key, - super.child, - }); - final double? width, height, inheritedFraction; - - final bool fitTheShortestSide, respectAspectRation; - @override - MyRenderFittedBox createRenderObject(BuildContext context) { - return MyRenderFittedBox( - width: width, - height: height, - inheritedFraction: inheritedFraction, - fitTheShortestSide: fitTheShortestSide, - respectAspectRation: respectAspectRation, - ); - } - - @override - void updateRenderObject( - BuildContext context, MyRenderFittedBox renderObject) { - renderObject - ..width = width - ..height = height - ..fitTheShortestSide = fitTheShortestSide - ..inheritedFraction = inheritedFraction - ..respectAspectRation = respectAspectRation; - } - - @override - void debugFillProperties(DiagnosticPropertiesBuilder properties) { - super.debugFillProperties(properties); - } -} - -// class MyRenderFittedBox extends MyRenderFittedBoxBase { -// MyRenderFittedBox({ -// required super.width, -// required super.height, -// required super.fitTheShortestSide, -// required super.inheritedFraction, -// }); - -// @override -// void performLayout() { -// if (child != null) { -// if (_inheritedFraction != 1) { -// final loosenConstraints = BoxConstraints( -// maxWidth: 500, -// maxHeight: constraints.maxHeight, -// ); -// late Size childSize; -// if (cachedChildSize != null && -// cachedLoosenConstraints?.maxHeight == loosenConstraints.maxHeight) { -// childSize = cachedChildSize!; -// } else { -// print('************CREATE LaYOUT*************'); -// _constraints = constraints; -// cachedLoosenConstraints = loosenConstraints; - -// child!.layout(cachedLoosenConstraints!, parentUsesSize: true); -// childSize = child!.size; -// cachedChildSize = childSize; -// } - -// constrainedSize = childSize.isFinite && !childSize.isEmpty -// ? constraints -// .constrainSizeAndAttemptToPreserveAspectRatio(childSize) -// : null; - -// if (childSize.width == 500) { -// constrainedSize = constraints.constrain( -// Size( -// constraints.maxWidth, -// constrainedSize!.height * _inheritedFraction * (_width ?? 1), -// ), -// ); - -// final double scaleY = constrainedSize!.height / childSize.height; - -// child!.layout( -// loosenConstraints.copyWith( -// maxWidth: constrainedSize!.width / (scaleY > 0 ? scaleY : 1), -// ), -// parentUsesSize: true, -// ); - -// _boxFit1 = BoxFit.fill; - -// constrainedSize = constrainedSize!; -// } else { -// final constrainedSize1 = constraints.constrain( -// Size( -// constrainedSize!.width * _inheritedFraction * (_width ?? 1), -// constrainedSize!.height * _inheritedFraction * (_width ?? 1), -// ), -// ); - -// constrainedSize = constrainedSize1; -// _boxFit1 = BoxFit.cover; -// } -// } - -// size = constrainedSize!; -// _clearPaintData(); -// } else { -// size = constraints.smallest; -// } -// } -// } - -class MyRenderFittedBox extends MyRenderFittedBoxBase { - MyRenderFittedBox({ - required super.width, - required super.height, - required super.fitTheShortestSide, - required super.inheritedFraction, - required bool respectAspectRation, - }) : _respectAspectRation = respectAspectRation; - - bool _respectAspectRation; - set respectAspectRation(bool value) { - if (value == _respectAspectRation) { - return; - } - _respectAspectRation = value; - - markNeedsLayout(); - } - - @override - void performLayout() { - assert(child != null); - - final maxWidth = _inheritedFraction != null - ? Resize.adaptiveWidth - : this.constraints.maxWidth; - - final loosenConstraints = BoxConstraints( - maxWidth: maxWidth, - maxHeight: this.constraints.maxHeight, - ); - Size childSize; - if (cachedChildSize != null && - cachedLoosenConstraints?.maxHeight == loosenConstraints.maxHeight) { - print('****CachedChildSize****'); - childSize = cachedChildSize!; - } else { - print('************CREATE LaYOUT*************'); - - cachedLoosenConstraints = loosenConstraints; - - child!.layout(cachedLoosenConstraints!, parentUsesSize: true); - childSize = child!.size; - cachedChildSize = childSize; - } - - final constraints = this.constraints.loosen(); - constrainedSize = childSize.isFinite && !childSize.isEmpty - ? constraints.constrainSizeAndAttemptToPreserveAspectRatio(childSize) - : null; - if (childSize.width == maxWidth) { - constrainedSize = childSize.height == constraints.maxHeight - ? childSize - : !_respectAspectRation && childSize.width > constraints.maxWidth - ? constraints.constrain(Size( - (_inheritedFraction ?? 1) * Resize.adaptiveWidth, - childSize.height * (_inheritedFraction ?? 1) * (_width ?? 1), - )) - : constraints.constrainSizeAndAttemptToPreserveAspectRatio( - Size( - constraints.maxWidth, - constrainedSize!.height * - (_inheritedFraction ?? 1) * - (_width ?? 1), - ), - ); - - constrainedSize = constraints.constrain(constrainedSize!); - - final double scaleY = constrainedSize!.height / childSize.height; - - child!.layout( - loosenConstraints.copyWith( - maxWidth: constrainedSize!.width / (scaleY > 0 ? scaleY : 1), - maxHeight: constrainedSize!.height / (scaleY > 0 ? scaleY : 1), - ), - parentUsesSize: true, - ); - childSize = child!.size; - - _boxFit1 = BoxFit.cover; - - constrainedSize = constrainedSize!; - } else { - constrainedSize = - constraints.constrainSizeAndAttemptToPreserveAspectRatio( - Size( - constrainedSize!.width * (_inheritedFraction ?? 1) * (_width ?? 1), - constrainedSize!.height * (_inheritedFraction ?? 1) * (_width ?? 1), - ), - ); - if (constrainedSize!.width == constraints.maxWidth) { - if (childSize.width > constraints.maxWidth) { - // child!.layout( - // cachedLoosenConstraints!.copyWith(maxWidth: constraints.maxWidth), - // parentUsesSize: true); - // childSize = child!.size; - // constrainedSize = constraints.constrain(childSize); - cachedChildSize = null; - } else { - // child!.layout( - // cachedLoosenConstraints!.copyWith(maxWidth: constraints.maxWidth), - // parentUsesSize: true); - // childSize = child!.size; - // constrainedSize = constraints.constrain(childSize); - - cachedChildSize = null; - } - } else { - cachedChildSize = null; - } - - _boxFit1 = BoxFit.cover; - // cachedChildSize = null; - } - - size = constrainedSize!; - _clearPaintData(); - } -} - -class MyRenderFittedBoxBase extends RenderProxyBox { - MyRenderFittedBoxBase({ - required double? width, - required double? height, - required bool fitTheShortestSide, - required double? inheritedFraction, - }) : _width = width, - _height = height, - _fitTheShortestSide = fitTheShortestSide, - _inheritedFraction = inheritedFraction; - - double? _width; - set width(double? value) { - if (value == _width) { - return; - } - _width = value; - // _transform = null; - _constraints = null; - markNeedsLayout(); - } - - double? _height; - set height(double? value) { - if (value == _height) { - return; - } - _height = value; - - markNeedsLayout(); - } - - double? _inheritedFraction; - set inheritedFraction(double? value) { - if (value == _width) { - return; - } - _inheritedFraction = value; - // _transform = null; - markNeedsLayout(); - } - - bool _fitTheShortestSide; - set fitTheShortestSide(bool value) { - if (value == _fitTheShortestSide) { - return; - } - _fitTheShortestSide = value; - - markNeedsLayout(); - } - - // TODO(ianh): The intrinsic dimensions of this box are wrong. - - @override - Size computeDryLayout(BoxConstraints constraints) { - if (child != null) { - final w = min(_width ?? double.infinity, constraints.maxWidth); - final h = min(_height ?? double.infinity, constraints.maxHeight); - constraints = BoxConstraints.tight(Size(w, h)); - - final Size childSize = child!.getDryLayout( - constraints.loosen(), - ); - - bool invalidChildSize = false; - assert(() { - if (RenderObject.debugCheckingIntrinsics && - childSize.width * childSize.height == 0.0) { - invalidChildSize = true; - } - return true; - }()); - if (invalidChildSize) { - assert(debugCannotComputeDryLayout( - reason: 'Child provided invalid size of $childSize.', - )); - return Size.zero; - } - return constraints - .constrainSizeAndAttemptToPreserveAspectRatio(childSize); - } else { - return constraints.smallest; - } - } - - BoxConstraints? _constraints; - @override - BoxConstraints get constraints { - return super.constraints; - } - - Size? constrainedSize; - Size? cachedChildSize; - BoxConstraints? cachedLoosenConstraints; - - @override - set child(RenderBox? value) { - cachedLoosenConstraints = null; - super.child = value; - } - - @override - // TODO: implement isRepaintBoundary - bool get isRepaintBoundary => super.isRepaintBoundary; - - bool? _hasVisualOverflow; - Matrix4? _transform; - BoxFit _boxFit = BoxFit.contain; - BoxFit _boxFit1 = BoxFit.contain; - - void _clearPaintData() { - _hasVisualOverflow = null; - _transform = null; - } - - void _updatePaintData() { - if (_transform != null) { - return; - } - - if (child == null) { - _hasVisualOverflow = false; - _transform = Matrix4.identity(); - } else { - final Size childSize = child!.size; - - final FittedSizes sizes = - applyBoxFit(_boxFit1, childSize, constrainedSize!); - final double scaleX = sizes.destination.width / sizes.source.width; - final double scaleY = sizes.destination.height / sizes.source.height; - - // final double scaleX = constrainedSize!.width / childSize.width; - // final double scaleY = constrainedSize!.height / childSize.height; - - final Rect sourceRect = - Alignment.center.inscribe(childSize, Offset.zero & childSize); - final Rect destinationRect = - Alignment.center.inscribe(constrainedSize!, Offset.zero & size); - _hasVisualOverflow = sourceRect.width.toInt() < childSize.width.toInt() || - sourceRect.height.toInt() < childSize.height.toInt(); - // assert(!_hasVisualOverflow); - // // if (_hasVisualOverflow!) { - // // print("_hasVisualOverflow"); - // // } - - // _transform = Matrix4.translationValues( - // destinationRect.left, destinationRect.top, 0.0) - // ..scale(scaleX, scaleY, 1.0) - // // ..translate(-sourceRect.left, -sourceRect.top) - // ; - - _transform = Matrix4.identity()..scale(scaleX, scaleY, 1.0) - // ..translate(-sourceRect.left, -sourceRect.top) - ; - assert(_transform!.storage.every((double value) => value.isFinite)); - } - } - - TransformLayer? _paintChildWithTransform( - PaintingContext context, Offset offset) { - final Offset? childOffset = MatrixUtils.getAsTranslation(_transform!); - if (childOffset == null) { - return context.pushTransform( - needsCompositing, - offset, - _transform!, - super.paint, - oldLayer: layer is TransformLayer ? layer! as TransformLayer : null, - ); - } else { - super.paint(context, offset + childOffset); - } - return null; - } - - @override - void paint(PaintingContext context, Offset offset) { - if (child == null || size.isEmpty || child!.size.isEmpty) { - return; - } - _updatePaintData(); - assert(child != null); - if (_hasVisualOverflow!) { - throw Exception('******* has visual over flow *****'); - layer = context.pushClipRect( - needsCompositing, - offset, - Offset.zero & size, - _paintChildWithTransform, - oldLayer: layer is ClipRectLayer ? layer! as ClipRectLayer : null, - clipBehavior: Clip.antiAlias, - ); - } else { - layer = _paintChildWithTransform(context, offset); - } - } - - @override - bool hitTestChildren(BoxHitTestResult result, {required Offset position}) { - if (size.isEmpty || (child?.size.isEmpty ?? false)) { - return false; - } - _updatePaintData(); - return result.addWithPaintTransform( - transform: _transform, - position: position, - hitTest: (BoxHitTestResult result, Offset position) { - return super.hitTestChildren(result, position: position); - }, - ); - } - - @override - bool paintsChild(RenderBox child) { - assert(child.parent == this); - return !size.isEmpty && !child.size.isEmpty; - } - - @override - void applyPaintTransform(RenderBox child, Matrix4 transform) { - if (!paintsChild(child)) { - transform.setZero(); - } else { - _updatePaintData(); - transform.multiply(_transform!); - } - } -} diff --git a/lib/src/layout_arranger/inherited_layout.dart b/lib/src/layout_arranger/inherited_layout.dart deleted file mode 100644 index 4717e04..0000000 --- a/lib/src/layout_arranger/inherited_layout.dart +++ /dev/null @@ -1,68 +0,0 @@ -import 'package:flutter/material.dart'; - -import 'inherited_size.dart'; -import 'scaffold_inherited_layout.dart'; - -class InheritedLayout extends StatelessWidget { - const InheritedLayout({ - Key? key, - required this.builder, - this.inheritedWidth, - }) : super(key: key); - final Widget Function(BuildContext, InheritedSize) builder; - final double? inheritedWidth; - static double _scaleFactor = 1.0; - static double get scaleFactor => _scaleFactor; - static set scaleFactor(double v) { - _scaleFactor = v; - } - - static InheritedSize of(BuildContext context) { - _InheritedLayoutWidget? r = - context.dependOnInheritedWidgetOfExactType<_InheritedLayoutWidget>(); - if (r == null) { - return ScaffoldInheritedLayout.of(context); - } - - return InheritedSize( - r.size.width, - r.size.height, - ); - } - - @override - Widget build(BuildContext context) { - return LayoutBuilder( - builder: (context, constraints) { - return _InheritedLayoutWidget( - size: InheritedSize( - inheritedWidth ?? constraints.maxWidth, - constraints.maxHeight, - ), - context: context, - child: Builder( - builder: (context) { - final size = of(context); - return builder(context, size); - }, - ), - ); - }, - ); - } -} - -class _InheritedLayoutWidget extends InheritedWidget { - const _InheritedLayoutWidget({ - required super.child, - required this.size, - required this.context, - }) : super(); - final InheritedSize size; - final BuildContext context; - - @override - bool updateShouldNotify(covariant InheritedWidget oldWidget) { - return true; - } -} diff --git a/lib/src/layout_arranger/inherited_size.dart b/lib/src/layout_arranger/inherited_size.dart deleted file mode 100644 index 6646c33..0000000 --- a/lib/src/layout_arranger/inherited_size.dart +++ /dev/null @@ -1,50 +0,0 @@ -import 'dart:math' as math; -import 'package:flutter/rendering.dart'; - -import 'inherited_layout.dart'; - -class InheritedSize extends Size { - InheritedSize(super.width, super.height); - double maxSide( - double fraction, { - double min = 0.0, - double max = double.infinity, - }) { - return _clamp(math.max(width, height), fraction, min, max); - } - - double minSide( - double fraction, { - double min = 0.0, - double max = double.infinity, - }) { - return _clamp(math.min(width, height), fraction, min, max); - } - - double widthFraction( - double fraction, { - double min = 0.0, - double max = double.infinity, - }) { - return _clamp(width, fraction, min, max); - } - - double heightFraction( - double fraction, { - double min = 0.0, - double max = double.infinity, - }) { - return _clamp(height, fraction, min, max); - } - - double _clamp(double value, double fraction, double min, double max) { - // assert(fraction >= 0.0 && fraction <= 1.0); - - return (value * fraction).clamp( - min * InheritedLayout.scaleFactor, max * InheritedLayout.scaleFactor); - } - - InheritedSize copyWith({double? width, double? height}) { - return InheritedSize(width ?? this.width, height ?? this.height); - } -} diff --git a/lib/src/layout_arranger/query.dart b/lib/src/layout_arranger/query.dart deleted file mode 100644 index 0196fe3..0000000 --- a/lib/src/layout_arranger/query.dart +++ /dev/null @@ -1,55 +0,0 @@ -class Query { - final double step, scale; - final double? w0, y0; - final bool isLinear; - - Query.internal({ - required this.step, - required this.scale, - required this.isLinear, - required this.w0, - required this.y0, - }); - - factory Query.constant({ - double step = double.infinity, - double scale = 1, - }) { - return Query.internal( - step: step, - scale: scale, - w0: null, - y0: null, - isLinear: false, - ); - } - - double fn(width, q) { - if (!isLinear) { - final s = step == double.infinity ? 420 : step; - final r = (q.w0 ?? s) * scale; - // print('r linear = $r'); - return r; - } - // print('scale = $scale'); - // print('width = $width'); - // print('q.w0 = ${q.w0}'); - // print('q.y0 = ${q.y0}'); - final r = scale * (width - (q.y0 ?? 0)) + (q.w0 ?? 0); - // print('r = $r'); - return r; - } - - factory Query.linear({ - double step = double.infinity, - double scale = 1, - }) { - return Query.internal( - step: step, - scale: scale, - w0: null, - y0: null, - isLinear: true, - ); - } -} diff --git a/lib/src/layout_arranger/scaffold_inherited_layout.dart b/lib/src/layout_arranger/scaffold_inherited_layout.dart deleted file mode 100644 index 0568404..0000000 --- a/lib/src/layout_arranger/scaffold_inherited_layout.dart +++ /dev/null @@ -1,223 +0,0 @@ -import 'dart:io'; -import 'dart:ui' as ui; - -import 'package:flutter/material.dart'; - -import 'inherited_layout.dart'; -import 'inherited_size.dart'; -import 'query.dart'; - -class ScaffoldInheritedLayout extends StatelessWidget { - factory ScaffoldInheritedLayout.singleChildScrollView({ - Key? key, - required Widget Function(BuildContext, InheritedSize) builder, - - /// Should be the same as [Scaffold.resizeToAvoidBottomInset]. - bool resizeToAvoidBottomInset = true, - - /// Should be the same as [SingleChildScrollView.physics]. - final ScrollPhysics? physics, - }) { - return ScaffoldInheritedLayout( - builder: (context, size) => _SingleChildScrollViewHolder( - mediaQuery: MediaQuery.of(context), - resizeToAvoidBottomInset: resizeToAvoidBottomInset, - physics: physics, - child: builder(context, size), - ), - key: key, - ); - } - const ScaffoldInheritedLayout({ - Key? key, - required this.builder, - }) : super(key: key); - final Widget Function(BuildContext, InheritedSize) builder; - - static final List _query = []; - static set query(List qs) { - for (var i = 0; i < qs.length; i++) { - final q = qs[i]; - if (i == 0) { - _query.add(q); - } else { - final lastQ = _query[i - 1]; - _query.add( - Query.internal( - step: q.step, - scale: q.scale, - isLinear: q.isLinear, - y0: lastQ.step, - w0: lastQ.fn(lastQ.step, lastQ), - ), - ); - } - - if (i == qs.length - 1) { - final q = _query[i]; - - _query.add( - Query.internal( - step: double.infinity, - scale: 1, - y0: q.step, - isLinear: true, - w0: q.fn(q.step, q), - ), - ); - } - } - } - - static InheritedSize of(BuildContext context) { - _ScaffoldInheritedLayoutWidget? r = context - .dependOnInheritedWidgetOfExactType<_ScaffoldInheritedLayoutWidget>(); - - assert(r != null); - - bool isLandscape = (Platform.isAndroid || Platform.isIOS) && - MediaQuery.of(context).orientation == Orientation.landscape; - var width = isLandscape ? r!.size.height : r!.size.width; - final height = isLandscape ? r.size.width : r.size.height; - - if (_query.isNotEmpty) { - for (var i = 0; i < _query.length; i++) { - final q = _query[i]; - - if (width < q.step) { - width = q.fn(width, q); - break; - } - } - } - - late double newWidth; - - newWidth = screenWidthResized?.call(width) ?? width; - - final size = InheritedSize( - newWidth, - screenHeightResized?.call(height) ?? height, - ); - // final size = InheritedSize( - // screenWidthResized != null - // ? screenWidthResized!.call(width) ?? width - // : width, - // screenHeightResized != null - // ? screenHeightResized!.call(height) * height - // : height, - // ); - - return InheritedSize( - size.width * InheritedLayout.scaleFactor, - size.height * InheritedLayout.scaleFactor, - ); - } - - static double Function(double width)? screenWidthResized; - static double Function(double height)? screenHeightResized; - static double adaptiveWidth = 0.0; - @override - Widget build(BuildContext context) { - // assert(Scaffold.maybeOf(context) == null, - // 'ScaffoldInheritedLayout must be in top of Scaffold. Also consider to put SafeAria in top of it'); - return LayoutBuilder( - builder: (context, constraints) { - return _ScaffoldInheritedLayoutWidget( - size: InheritedSize( - constraints.maxWidth, - constraints.maxHeight, - ), - context: context, - child: Builder( - builder: (context) { - final size = of(context); - adaptiveWidth = size.width; - return builder(context, size); - }, - ), - ); - }, - ); - } -} - -class _ScaffoldInheritedLayoutWidget extends InheritedWidget { - const _ScaffoldInheritedLayoutWidget({ - required super.child, - required this.size, - required this.context, - }); - final InheritedSize size; - final BuildContext context; - - @override - bool updateShouldNotify(covariant InheritedWidget oldWidget) { - return true; - } -} - -class _SingleChildScrollViewHolder extends StatefulWidget { - const _SingleChildScrollViewHolder({ - Key? key, - required this.child, - required this.mediaQuery, - required this.resizeToAvoidBottomInset, - this.physics, - }) : super(key: key); - final Widget child; - final MediaQueryData mediaQuery; - - /// Should be the same as [Scaffold.resizeToAvoidBottomInset]. - final bool resizeToAvoidBottomInset; - - /// Should be the same as [SingleChildScrollView.physics]. - final ScrollPhysics? physics; - @override - State<_SingleChildScrollViewHolder> createState() => - _SingleChildScrollViewHolderState(); -} - -class _SingleChildScrollViewHolderState - extends State<_SingleChildScrollViewHolder> { - double? maxHeight; - Size _screenSize = ui.window.physicalSize; - - @override - void didUpdateWidget(covariant _SingleChildScrollViewHolder oldWidget) { - if (_screenSize != ui.window.physicalSize) { - _screenSize = ui.window.physicalSize; - maxHeight = null; - } - - super.didUpdateWidget(oldWidget); - } - - @override - Widget build(BuildContext context) { - return LayoutBuilder( - builder: (context, constraints) { - maxHeight ??= Platform.isAndroid || Platform.isIOS - ? widget.mediaQuery.orientation == Orientation.portrait - ? constraints.maxHeight + - // take the keyboard height into account - (widget.resizeToAvoidBottomInset - ? ui.window.viewInsets.bottom / - ui.window.devicePixelRatio - : 0) - : constraints.maxWidth - : constraints.maxHeight; - return SingleChildScrollView( - physics: widget.physics, - child: ConstrainedBox( - constraints: BoxConstraints( - maxHeight: maxHeight!, - ), - child: widget.child, - ), - ); - }, - ); - ; - } -} diff --git a/lib/src/oval.dart b/lib/src/oval.dart index dd52de4..1106c8c 100644 --- a/lib/src/oval.dart +++ b/lib/src/oval.dart @@ -1,5 +1,40 @@ part of 'base_render_shape.dart'; +Widget _wrapWithInkWell(InkWell inkWell, [Widget? child]) { + final ink = InkResponse( + containedInkWell: true, + highlightShape: BoxShape.rectangle, + key: inkWell.key, + onTap: inkWell.onTap, + onTapDown: inkWell.onTapDown, + onTapUp: inkWell.onTapUp, + onTapCancel: inkWell.onTapCancel, + onDoubleTap: inkWell.onDoubleTap, + onLongPress: inkWell.onLongPress, + onHighlightChanged: inkWell.onHighlightChanged, + onHover: inkWell.onHover, + mouseCursor: inkWell.mouseCursor, + radius: inkWell.radius, + borderRadius: inkWell.borderRadius, + customBorder: inkWell.customBorder, + focusColor: inkWell.focusColor, + hoverColor: inkWell.hoverColor, + highlightColor: inkWell.highlightColor, + overlayColor: inkWell.overlayColor, + splashColor: inkWell.splashColor, + splashFactory: inkWell.splashFactory, + enableFeedback: inkWell.enableFeedback, + excludeFromSemantics: inkWell.excludeFromSemantics, + focusNode: inkWell.focusNode, + canRequestFocus: inkWell.canRequestFocus, + onFocusChange: inkWell.onFocusChange, + autofocus: inkWell.autofocus, + statesController: inkWell.statesController, + child: child, + ); + return Material(type: MaterialType.transparency, child: ink); +} + class Oval extends _BaseSingleChildRenderObjectShape { Oval._({ this.startAngle, @@ -8,15 +43,18 @@ class Oval extends _BaseSingleChildRenderObjectShape { super.color, super.width, super.height, + required super.shouldExpand, super.squareSide, super.child, super.shadow = const [], - super.isOverlay = true, + super.childIsInTheForeground = true, super.clipBehavior = Clip.none, - super.clipShrink = true, + super.shrinkToClippedSize = true, super.alignment = Alignment.center, required super.paintStyle, required this.shouldClosePath, + super.isConstraintTransparent = false, + super.inkWell, super.key, }); @@ -28,16 +66,20 @@ class Oval extends _BaseSingleChildRenderObjectShape { Color? color, double? width, double? height, + bool shouldExpand = false, List boxShadow = const [], Widget? child, AlignmentGeometry alignment = Alignment.center, Clip clipBehavior = Clip.none, - bool clipShrink = true, - bool isOverlay = true, + bool shrinkToClippedSize = true, + bool childIsInTheForeground = true, PaintStyle? paintStyle, + InkWell? inkWell, Key? key, }) { - return Oval._( + final expandImage = shouldExpandImage(child, width, height); + + final widget = Oval._( startAngle: startAngle, swipeAngle: swipeAngle, shouldClosePath: shouldClosePathToCenter, @@ -47,78 +89,165 @@ class Oval extends _BaseSingleChildRenderObjectShape { width: width, height: height, - + shouldExpand: expandImage ? false : shouldExpand, shadow: boxShadow, clipBehavior: clipBehavior, - clipShrink: clipShrink, - isOverlay: !isOverlay, + shrinkToClippedSize: shrinkToClippedSize, + childIsInTheForeground: childIsInTheForeground, alignment: alignment, paintStyle: paintStyle, + // inkWell: inkWell, child: child, ); + + final c = expandImage + ? Oval._( + isConstraintTransparent: true, + shouldExpand: false, + shrinkToClippedSize: false, + paintStyle: null, + shouldClosePath: false, + color: Colors.transparent, + child: SizedBox( + width: shouldExpand ? (child as Image).width : null, + child: FittedBox( + child: widget, + ), + ), + ) + : widget; + + // return c; + if (inkWell != null) { + return Oval._( + isConstraintTransparent: true, + shouldExpand: false, + shrinkToClippedSize: false, + paintStyle: null, + shouldClosePath: false, + color: Colors.transparent, + child: MyStack( + children: [ + c, + Oval._( + key: key, + color: Colors.transparent, + width: width, + height: height, + shouldExpand: false, + startAngle: startAngle, + swipeAngle: swipeAngle, + clipBehavior: Clip.antiAlias, + shouldClosePath: shouldClosePathToCenter, + paintStyle: paintStyle, + child: _wrapWithInkWell(inkWell), + ) + ], + ), + ); + } + return c; } - factory Oval.circle({ + static Widget circle({ Color? color, double? radius, + bool shouldExpand = false, double? startAngle, double? swipeAngle, bool? shouldClosePathToCenter, List boxShadow = const [], Widget? child, Clip clipBehavior = Clip.none, - bool clipShrink = true, + bool shrinkToClippedSize = true, AlignmentGeometry alignment = Alignment.center, - bool isOverlay = true, + bool childIsInTheForeground = true, PaintStyle? paintStyle, + InkWell? inkWell, Key? key, }) { - return Oval._( + final expandImage = shouldExpandImage(child, radius, radius); + final widget = Oval._( key: key, color: color, width: radius != null ? radius * 2 : null, height: radius != null ? radius * 2 : null, squareSide: radius ?? -1, + shouldExpand: expandImage ? false : shouldExpand, startAngle: startAngle, swipeAngle: swipeAngle, shouldClosePath: shouldClosePathToCenter, shadow: boxShadow, clipBehavior: clipBehavior, - clipShrink: clipShrink, - isOverlay: !isOverlay, + shrinkToClippedSize: shrinkToClippedSize, + childIsInTheForeground: childIsInTheForeground, alignment: alignment, paintStyle: paintStyle, + // inkWell: inkWell, child: child, ); + + final c = expandImage + ? SizedBox( + width: shouldExpand ? (child as Image).width : null, + child: FittedBox( + child: widget, + ), + ) + : widget; + if (inkWell != null) { + return MyStack( + children: [ + c, + Oval._( + key: key, + color: Colors.transparent, + width: radius != null ? radius * 2 : null, + height: radius != null ? radius * 2 : null, + squareSide: radius ?? -1, + shouldExpand: false, + startAngle: startAngle, + swipeAngle: swipeAngle, + clipBehavior: Clip.antiAlias, + shouldClosePath: shouldClosePathToCenter, + paintStyle: paintStyle, + child: _wrapWithInkWell(inkWell), + ) + ], + ); + } + return c; } final double? startAngle, swipeAngle; final bool? shouldClosePath; @override RenderObject createRenderObject(BuildContext context) { - return _RenderCircle( + return _RenderOval( color: color, width: width, height: height, + shouldExpand: shouldExpand, side: squareSide, startAngle: startAngle, swipeAngle: swipeAngle, boxShadow: shadow, buildContext: context, clipBehavior: clipBehavior, - clipShrink: clipShrink, - isOverlay: isOverlay, + shrinkToClippedSize: shrinkToClippedSize, + childIsInTheForeground: childIsInTheForeground, shouldClosePath: shouldClosePath, alignment: alignment, decorationImage: decorationImage, imageSize: imageSize, paintStyle: paintStyle, + isConstraintTransparent: isConstraintTransparent, ); } @override void updateRenderObject(BuildContext context, RenderObject renderObject) { super.updateRenderObject(context, renderObject); - (renderObject as _RenderCircle) + (renderObject as _RenderOval) ..startAngle = startAngle ..squareSide = squareSide ..swipeAngle = swipeAngle @@ -134,24 +263,26 @@ class Oval extends _BaseSingleChildRenderObjectShape { } } -class _RenderCircle extends _BaseRenderShape { - _RenderCircle({ +class _RenderOval extends _BaseRenderShape { + _RenderOval({ required double? side, required double? startAngle, required double? swipeAngle, required bool? shouldClosePath, required super.width, required super.height, + required super.shouldExpand, required super.color, required super.boxShadow, required super.clipBehavior, - required super.clipShrink, + required super.shrinkToClippedSize, required super.buildContext, - required super.isOverlay, + required super.childIsInTheForeground, required super.alignment, required super.decorationImage, required super.imageSize, required super.paintStyle, + required super.isConstraintTransparent, }) : _startAngle = startAngle, _swipeAngle = swipeAngle, _shouldClosePath = shouldClosePath, @@ -191,9 +322,8 @@ class _RenderCircle extends _BaseRenderShape { @override Rect? getCircleToPaint(Rect rect) { - final start = (_startAngle ?? 0) - pi / 2; final swipe = _swipeAngle ?? (2 * pi - (_startAngle ?? 0)); - if ((swipe - start) < 2 * pi) { + if (swipe < 2 * pi) { return null; } if (_squareSide != null) { @@ -207,11 +337,14 @@ class _RenderCircle extends _BaseRenderShape { Path? getPathToPaint(Rect rect, Offset offset, bool shouldClosePath) { final start = (_startAngle ?? 0) - pi / 2; final swipe = _swipeAngle ?? (2 * pi - (_startAngle ?? 0)); - if ((swipe - start) >= 2 * pi) { + if (swipe >= 2 * pi) { return null; } final path = Path(); + if (swipe == 0) { + return path; + } path.addArc( rect, start, @@ -219,11 +352,11 @@ class _RenderCircle extends _BaseRenderShape { ); if (_shouldClosePath != null) { if (_shouldClosePath!) { - path.lineTo(offset.dx + offsetX, offset.dy + offsetY); + path.lineTo(offset.dx + centerX, offset.dy + centerY); path.close(); } } else if (shouldClosePath) { - path.lineTo(offset.dx + offsetX, offset.dy + offsetY); + path.lineTo(offset.dx + centerX, offset.dy + centerY); path.close(); } return path; diff --git a/lib/src/rectangle.dart b/lib/src/rectangle.dart index 60ac3df..79d5694 100644 --- a/lib/src/rectangle.dart +++ b/lib/src/rectangle.dart @@ -1,69 +1,108 @@ part of 'base_render_shape.dart'; +/// {@macro rectangle} class Rectangle extends _BaseSingleChildRenderObjectShape { Rectangle._({ super.squareSide, super.color, super.width, super.height, + required super.shouldExpand, super.child, super.shadow = const [], - super.isOverlay = false, + super.childIsInTheForeground = true, super.clipBehavior = Clip.none, - super.clipShrink = true, + super.shrinkToClippedSize = true, super.alignment = Alignment.center, required super.paintStyle, + super.isConstraintTransparent = false, + super.inkWell, super.key, }); /// Similar to [Rectangle] but it draws a square of side equal to the give - /// side parameter - factory Rectangle.square({ + /// `side` parameter + /// + /// + static Widget square({ double? side, // + bool shouldExpand = false, Color? color, List boxShadow = const [], PaintStyle? paintStyle, // Widget? child, AlignmentGeometry alignment = Alignment.center, - bool isOverlay = true, + bool childIsInTheForeground = true, // Clip clipBehavior = Clip.none, - bool clipShrink = true, + bool shrinkToClippedSize = true, + InkWell? inkWell, Key? key, - }) => - Rectangle._( - key: key, - color: color, - shadow: boxShadow, - width: side, - height: side, - squareSide: side ?? -1, - clipBehavior: clipBehavior, - clipShrink: clipShrink, - isOverlay: !isOverlay, - alignment: alignment, - paintStyle: paintStyle, - child: child, + }) { + final expandImage = shouldExpandImage(child, side, side); + + final widget = Rectangle._( + key: key, + color: color, + shadow: boxShadow, + width: side, + height: side, + squareSide: side ?? -1, + shouldExpand: expandImage ? false : shouldExpand, + clipBehavior: clipBehavior, + shrinkToClippedSize: shrinkToClippedSize, + childIsInTheForeground: childIsInTheForeground, + alignment: alignment, + paintStyle: paintStyle, + // inkWell: inkWell, + child: child, + ); + + final c = expandImage + ? SizedBox( + width: shouldExpand ? (child as Image).width : null, + child: FittedBox( + child: widget, + ), + ) + : widget; + if (inkWell != null) { + return MyStack( + children: [ + c, + Rectangle._( + key: key, + color: Colors.transparent, + width: side, + height: side, + squareSide: side ?? -1, + shouldExpand: false, + clipBehavior: Clip.antiAlias, + paintStyle: paintStyle, + child: _wrapWithInkWell(inkWell), + ) + ], ); + } + return c; + } + /// {@template rectangle} /// A Rectangle shape. /// /// See: [Rectangle.square], [RRectangle] and [Oval] + + /// ## Shape layout + /// shapes trie to size itself, in the following order: + /// * to honor the `width`, `height`, + /// * to be as big as possible if the parameter `shouldExpand` is set to true, + /// (FILL PARENT), + /// * to ba as small as it child if the latter is defined (WRAP CHILD), + /// * to be as small as possible. /// - /// ## Size of the shape - /// * If no child is provided, The shape tends to expand to fill the max - /// constraints imposed by its parent widget (FILL PARENT). - /// * If child is provided, the shape takes the size of the child - /// (WRAP CHILD) - /// * If width or height are provided, the shape fits the given width and - /// height. - /// - /// You can set the width and/or height to double.infinity so that the - /// shape takes all available space. - /// - /// ## Color, gradient and shadow of the Rectangle + /// ## Color, gradient and shadow of the Shapes /// * The color defaults to Primary color. /// * To use gradient set the color property to [ColorWithGradient] . /// @@ -88,12 +127,12 @@ class Rectangle extends _BaseSingleChildRenderObjectShape { /// return Rectangle( /// width: 100, /// height: 80, - /// boxShadow: BoxShadowWithElevation(3), + /// boxShadow: BoxShadowWithElevation(3), /// ); /// ``` /// ## Painting Style /// You can define the style to use when drawing Shapes by defining the - /// paintStyle parameter. + /// [paintStyle] parameter. /// /// Example: /// ``` @@ -107,45 +146,93 @@ class Rectangle extends _BaseSingleChildRenderObjectShape { /// ); /// ``` /// ## child, alignment and overlay - /// Use the child parameter to define the Widget to be displayed inside the + /// Use the [child] parameter to define the Widget to be displayed inside the /// shape and align it using the alignment parameter. /// /// By default the the child is displayed if the foreground of the shape. But - /// if you set isOverlay parameter to false, the child is displayed in the + /// if you set [childIsInTheForeground] parameter to false, the child is displayed in the /// background /// /// ## Clip the chid /// Use clipBehavior parameter to clip the child to the shape. /// + /// {@endtemplate} factory Rectangle({ double? width, double? height, // + bool shouldExpand = false, Color? color, List boxShadow = const [], PaintStyle? paintStyle, // Widget? child, AlignmentGeometry alignment = Alignment.center, - bool isOverlay = true, + bool childIsInTheForeground = true, // Clip clipBehavior = Clip.none, - bool clipShrink = true, + bool shrinkToClippedSize = true, + InkWell? inkWell, Key? key, }) { - return Rectangle._( + final expandImage = shouldExpandImage(child, width, height); + + final widget = Rectangle._( key: key, color: color, shadow: boxShadow, width: width, height: height, + shouldExpand: expandImage ? false : shouldExpand, clipBehavior: clipBehavior, - clipShrink: clipShrink, - isOverlay: !isOverlay, + shrinkToClippedSize: shrinkToClippedSize, + childIsInTheForeground: childIsInTheForeground, alignment: alignment, paintStyle: paintStyle, + // inkWell: inkWell, child: child, ); + + final c = expandImage + ? Rectangle._( + isConstraintTransparent: true, + shouldExpand: false, + shrinkToClippedSize: false, + paintStyle: null, + color: Colors.transparent, + child: SizedBox( + width: shouldExpand ? (child as Image).width : null, + child: FittedBox( + child: widget, + ), + ), + ) + : widget; + + if (inkWell != null) { + return Rectangle._( + isConstraintTransparent: true, + shouldExpand: false, + shrinkToClippedSize: false, + paintStyle: null, + color: Colors.transparent, + child: MyStack( + children: [ + c, + Rectangle._( + key: key, + color: Colors.transparent, + width: width, + height: height, + shouldExpand: false, + paintStyle: paintStyle, + child: _wrapWithInkWell(inkWell), + ) + ], + ), + ); + } + return c; } @override @@ -156,14 +243,16 @@ class Rectangle extends _BaseSingleChildRenderObjectShape { width: width, height: height, squareSide: squareSide, + shouldExpand: shouldExpand, buildContext: context, clipBehavior: clipBehavior, - clipShrink: clipShrink, - isOverlay: isOverlay, + shrinkToClippedSize: shrinkToClippedSize, + childIsInTheForeground: childIsInTheForeground, alignment: alignment, decorationImage: decorationImage, imageSize: imageSize, paintStyle: paintStyle, + isConstraintTransparent: isConstraintTransparent, ); } @@ -185,16 +274,18 @@ class _RenderRectangle extends _BaseRenderShape { required super.squareSide, required super.width, required super.height, + required super.shouldExpand, required super.color, required super.boxShadow, required super.clipBehavior, - required super.clipShrink, + required super.shrinkToClippedSize, required super.buildContext, - required super.isOverlay, + required super.childIsInTheForeground, required super.alignment, required super.decorationImage, required super.imageSize, required super.paintStyle, + required super.isConstraintTransparent, }); // double? _squareSide; diff --git a/lib/src/rounded_rectangle.dart b/lib/src/rounded_rectangle.dart index d815905..5acb1da 100644 --- a/lib/src/rounded_rectangle.dart +++ b/lib/src/rounded_rectangle.dart @@ -10,76 +10,156 @@ class RRectangle extends _BaseSingleChildRenderObjectShape { super.color, super.width, super.height, + required super.shouldExpand, super.child, super.shadow = const [], - super.isOverlay = false, + super.childIsInTheForeground = true, super.clipBehavior = Clip.none, - required super.clipShrink, + required super.shrinkToClippedSize, super.alignment = Alignment.center, required super.paintStyle, + super.isConstraintTransparent = false, + super.inkWell, super.key, }); - factory RRectangle.square({ + static Widget square({ BorderRadiusGeometry? borderRadius, BorderRadiusGeometry? outerVBorderRadius, BorderRadiusGeometry? outerHBorderRadius, double? side, + bool shouldExpand = false, Color? color, List boxShadow = const [], Widget? child, AlignmentGeometry alignment = Alignment.center, Clip clipBehavior = Clip.none, - bool clipShrink = true, - bool isOverlay = true, + bool shrinkToClippedSize = true, + bool childIsInTheForeground = true, PaintStyle? paintStyle, + InkWell? inkWell, Key? key, - }) => - RRectangle._( - key: key, - radius: borderRadius, - outerVRadius: outerVBorderRadius, - outerHRadius: outerHBorderRadius, - color: color, - shadow: boxShadow, - width: side, - height: side, - squareSide: side ?? -1, - clipBehavior: clipBehavior, - clipShrink: clipShrink, - isOverlay: !isOverlay, - alignment: alignment, - paintStyle: paintStyle, - child: child, + }) { + final expandImage = shouldExpandImage(child, side, side); + + final widget = RRectangle._( + key: key, + radius: borderRadius, + outerVRadius: outerVBorderRadius, + outerHRadius: outerHBorderRadius, + color: color, + shadow: boxShadow, + width: side, + height: side, + squareSide: side ?? -1, + shouldExpand: expandImage ? false : shouldExpand, + clipBehavior: clipBehavior, + shrinkToClippedSize: shrinkToClippedSize, + childIsInTheForeground: childIsInTheForeground, + alignment: alignment, + paintStyle: paintStyle, + // inkWell: inkWell, + child: child, + ); + + final c = expandImage + ? SizedBox( + width: shouldExpand ? (child as Image).width : null, + child: FittedBox( + child: widget, + ), + ) + : widget; + + if (inkWell != null) { + return MyStack( + children: [ + c, + RRectangle._( + key: key, + color: Colors.transparent, + width: side, + height: side, + squareSide: side ?? -1, + radius: borderRadius, + outerVRadius: outerVBorderRadius, + outerHRadius: outerHBorderRadius, + shouldExpand: false, + clipBehavior: Clip.antiAlias, + shrinkToClippedSize: shrinkToClippedSize, + paintStyle: paintStyle, + child: _wrapWithInkWell(inkWell), + ) + ], ); + } + return c; + } - factory RRectangle.capsule({ + static Widget capsule({ double? width, double? height, + bool shouldExpand = false, Color? color, List boxShadow = const [], Widget? child, AlignmentGeometry alignment = Alignment.center, Clip clipBehavior = Clip.none, - bool clipShrink = true, - bool isOverlay = true, + bool shrinkToClippedSize = true, + bool childIsInTheForeground = true, PaintStyle? paintStyle, + InkWell? inkWell, Key? key, - }) => - RRectangle._( - key: key, - radius: _RadiusCapsule(), - color: color, - shadow: boxShadow, - width: width, - height: height, - clipBehavior: clipBehavior, - clipShrink: clipShrink, - isOverlay: !isOverlay, - alignment: alignment, - paintStyle: paintStyle, - child: child, + }) { + final expandImage = shouldExpandImage(child, width, height); + + final widget = RRectangle._( + key: key, + radius: _RadiusCapsule(), + color: color, + shadow: boxShadow, + width: width, + height: height, + shouldExpand: expandImage ? false : shouldExpand, + clipBehavior: clipBehavior, + shrinkToClippedSize: shrinkToClippedSize, + childIsInTheForeground: childIsInTheForeground, + alignment: alignment, + paintStyle: paintStyle, + // inkWell: inkWell, + child: child, + ); + + final c = expandImage + ? SizedBox( + width: shouldExpand ? (child as Image).width : null, + child: FittedBox( + child: widget, + ), + ) + : widget; + + if (inkWell != null) { + return MyStack( + children: [ + c, + RRectangle._( + key: key, + color: Colors.transparent, + width: width, + height: height, + radius: _RadiusCapsule(), + shouldExpand: false, + clipBehavior: Clip.antiAlias, + shrinkToClippedSize: shrinkToClippedSize, + paintStyle: paintStyle, + child: _wrapWithInkWell(inkWell), + ) + ], ); + } + return c; + } factory RRectangle({ Color? color, @@ -88,31 +168,82 @@ class RRectangle extends _BaseSingleChildRenderObjectShape { List boxShadow = const [], double? width, double? height, + bool shouldExpand = false, BorderRadiusGeometry? borderRadius, Widget? child, AlignmentGeometry alignment = Alignment.center, Clip clipBehavior = Clip.none, - bool clipShrink = true, - bool isOverlay = true, + bool shrinkToClippedSize = true, + bool childIsInTheForeground = true, PaintStyle? paintStyle, + InkWell? inkWell, Key? key, }) { - return RRectangle._( + final expandImage = shouldExpandImage(child, width, height); + + final widget = RRectangle._( key: key, color: color, shadow: boxShadow, width: width, height: height, + shouldExpand: expandImage ? false : shouldExpand, radius: borderRadius, outerVRadius: outerVBorderRadius, outerHRadius: outerHBorderRadius, clipBehavior: clipBehavior, - clipShrink: clipShrink, - isOverlay: !isOverlay, + shrinkToClippedSize: shrinkToClippedSize, + childIsInTheForeground: childIsInTheForeground, alignment: alignment, paintStyle: paintStyle, + // inkWell: inkWell, child: child, ); + final c = expandImage + ? RRectangle._( + isConstraintTransparent: true, + shouldExpand: false, + shrinkToClippedSize: false, + paintStyle: null, + color: Colors.transparent, + child: SizedBox( + width: shouldExpand ? (child as Image).width : null, + child: FittedBox( + child: widget, + ), + ), + ) + : widget; + + if (inkWell != null) { + return RRectangle._( + isConstraintTransparent: true, + shouldExpand: false, + shrinkToClippedSize: false, + paintStyle: null, + color: Colors.transparent, + child: MyStack( + children: [ + c, + RRectangle._( + key: key, + color: Colors.transparent, + width: width, + height: height, + radius: borderRadius, + outerVRadius: outerVBorderRadius, + outerHRadius: outerHBorderRadius, + shouldExpand: false, + clipBehavior: Clip.antiAlias, + shrinkToClippedSize: shrinkToClippedSize, + paintStyle: paintStyle, + child: _wrapWithInkWell(inkWell), + ) + ], + ), + ); + } + return c; } final BorderRadiusGeometry? radius, outerVRadius, outerHRadius; @@ -125,17 +256,19 @@ class RRectangle extends _BaseSingleChildRenderObjectShape { width: width, height: height, squareSide: squareSide, + shouldExpand: shouldExpand, buildContext: context, radius: radius, outerVRadius: outerVRadius, outerHRadius: outerHRadius, clipBehavior: clipBehavior, - clipShrink: clipShrink, - isOverlay: isOverlay, + shrinkToClippedSize: shrinkToClippedSize, + childIsInTheForeground: childIsInTheForeground, alignment: alignment, decorationImage: decorationImage, imageSize: imageSize, paintStyle: paintStyle, + isConstraintTransparent: isConstraintTransparent, ); } @@ -169,16 +302,18 @@ class _RenderRRectangle extends _BaseRenderShape { required super.squareSide, required super.width, required super.height, + required super.shouldExpand, required super.color, required super.boxShadow, required super.clipBehavior, - required super.clipShrink, + required super.shrinkToClippedSize, required super.buildContext, - required super.isOverlay, + required super.childIsInTheForeground, required super.alignment, required super.decorationImage, required super.imageSize, required super.paintStyle, + required super.isConstraintTransparent, }) : _radius = radius, _outerVRadius = outerVRadius, _outerHRadius = outerHRadius; diff --git a/lib/src/shape_builder.dart b/lib/src/shape_builder.dart index a2ea90f..08ce257 100644 --- a/lib/src/shape_builder.dart +++ b/lib/src/shape_builder.dart @@ -1,16 +1,22 @@ -// ignore_for_file: public_member_api_docs, sort_constructors_first -import 'dart:math'; - -import 'package:flutter/material.dart'; -import 'package:flutter/rendering.dart'; -import 'package:shape_builder/shape_builder.dart'; -import 'package:shape_builder/src/layout_arranger/scaffold_inherited_layout.dart'; - -import 'base_render_shape.dart'; -import 'colorize.dart'; -import 'gradient_color.dart'; -import 'layout_arranger/fitted_box_render.dart'; -import 'paint_style.dart'; +part of 'base_render_shape.dart'; + +class _ShapeBuilderWithInkWell extends ShapeBuilder { + _ShapeBuilderWithInkWell( + {required super.color, + required super.alignment, + required super.child, + required super.shadow, + required super.clipBehavior, + required super.shrinkToClippedSize, + required super.childIsInTheForeground, + required super.shouldExpand, + required super.paintStyle}); + + ShapeBuilder inkWell(InkWell inkWell) { + _inkWell = inkWell; + return this; + } +} class ShapeBuilder { final Color? color; @@ -18,90 +24,87 @@ class ShapeBuilder { final Widget child; final List shadow; final PaintStyle? paintStyle; - final Clip clipBehavior; - final bool clipShrink; - final bool isOverlay; + final bool shrinkToClippedSize; + final bool shouldExpand; + final bool childIsInTheForeground; ShapeBuilder({ required this.color, required this.alignment, required this.child, required this.shadow, required this.clipBehavior, - required this.clipShrink, - required this.isOverlay, + required this.shrinkToClippedSize, + required this.childIsInTheForeground, + required this.shouldExpand, required this.paintStyle, }); + InkWell? _inkWell; + /// Build a Widget Widget build(Widget widget) { - if (widget is! Image) { - widget = Align(alignment: alignment, child: widget); - } - if (!isOverlay) { - return Stack( - alignment: alignment, - children: [ - child is Image ? SizedBox.expand(child: child) : child, - Positioned( - top: 0, - left: 0, - right: 0, - bottom: 0, - child: widget, - ), - ], - ); + var firstChild = childIsInTheForeground ? widget : child; + var secondChild = !childIsInTheForeground ? widget : child; + if (_inkWell != null) { + if (childIsInTheForeground) { + firstChild = MyStack( + children: [ + firstChild, + _wrapWithInkWell(_inkWell!), + ], + ); + } else { + secondChild = MyStack( + children: [ + secondChild, + _wrapWithInkWell(_inkWell!), + ], + ); + } } - return Stack( + return MyStack( alignment: alignment, - fit: StackFit.loose, + isLastPositioned: false, children: [ - widget, - Positioned( - top: 0, - left: 0, - right: 0, - bottom: 0, - child: Align( - widthFactor: 1, - heightFactor: 1, - alignment: alignment, - child: widget, - ), - ), + firstChild, + secondChild, ], ); } - Rectangle buildRect({ + Widget buildRect({ double? width, double? height, }) { return Rectangle( + color: color, + boxShadow: shadow, width: width, height: height, - alignment: alignment, - boxShadow: shadow, - color: color, + shouldExpand: shouldExpand, clipBehavior: clipBehavior, - clipShrink: clipShrink, - isOverlay: isOverlay, + shrinkToClippedSize: shrinkToClippedSize, + childIsInTheForeground: childIsInTheForeground, + alignment: alignment, paintStyle: paintStyle, + inkWell: _inkWell, child: child, ); } - Rectangle buildSquare([double? side]) { + Widget buildSquare([double? side]) { return Rectangle.square( side: side, + shouldExpand: shouldExpand, alignment: alignment, boxShadow: shadow, color: color, clipBehavior: clipBehavior, - clipShrink: clipShrink, - isOverlay: isOverlay, + shrinkToClippedSize: shrinkToClippedSize, + childIsInTheForeground: childIsInTheForeground, paintStyle: paintStyle, + inkWell: _inkWell, child: child, ); } @@ -118,18 +121,20 @@ class ShapeBuilder { outerVBorderRadius: outerVBorderRadius, height: height, width: width, + shouldExpand: shouldExpand, boxShadow: shadow, alignment: alignment, color: color, clipBehavior: clipBehavior, - clipShrink: clipShrink, - isOverlay: isOverlay, + shrinkToClippedSize: shrinkToClippedSize, + childIsInTheForeground: childIsInTheForeground, paintStyle: paintStyle, + inkWell: _inkWell, child: child, ); } - RRectangle buildRSquare({ + Widget buildRSquare({ BorderRadiusGeometry? borderRadius, double? side, BorderRadiusGeometry? outerHBorderRadius, @@ -140,28 +145,32 @@ class ShapeBuilder { outerHBorderRadius: outerHBorderRadius, outerVBorderRadius: outerVBorderRadius, side: side, + shouldExpand: shouldExpand, boxShadow: shadow, alignment: alignment, color: color, clipBehavior: clipBehavior, - clipShrink: clipShrink, - isOverlay: isOverlay, + shrinkToClippedSize: shrinkToClippedSize, + childIsInTheForeground: childIsInTheForeground, paintStyle: paintStyle, + inkWell: _inkWell, child: child, ); } - RRectangle buildCapsule({double? height, double? width}) { + Widget buildCapsule({double? height, double? width}) { return RRectangle.capsule( height: height, width: width, + shouldExpand: shouldExpand, alignment: alignment, boxShadow: shadow, color: color, clipBehavior: clipBehavior, - clipShrink: clipShrink, - isOverlay: isOverlay, + shrinkToClippedSize: shrinkToClippedSize, + childIsInTheForeground: childIsInTheForeground, paintStyle: paintStyle, + inkWell: _inkWell, child: child, ); } @@ -176,6 +185,7 @@ class ShapeBuilder { return Oval( height: height, width: width, + shouldExpand: shouldExpand, startAngle: startAngle, swipeAngle: swipeAngle, shouldClosePathToCenter: shouldClosePathToCenter, @@ -183,14 +193,15 @@ class ShapeBuilder { alignment: alignment, color: color, clipBehavior: clipBehavior, - clipShrink: clipShrink, - isOverlay: isOverlay, + shrinkToClippedSize: shrinkToClippedSize, + childIsInTheForeground: childIsInTheForeground, paintStyle: paintStyle, + inkWell: _inkWell, child: child, ); } - Oval buildCircle({ + Widget buildCircle({ double? radius, double? startAngle, double? swipeAngle, @@ -198,6 +209,7 @@ class ShapeBuilder { }) { return Oval.circle( radius: radius, + shouldExpand: shouldExpand, startAngle: startAngle, swipeAngle: swipeAngle, shouldClosePathToCenter: shouldClosePathToCenter, @@ -205,9 +217,10 @@ class ShapeBuilder { alignment: alignment, color: color, clipBehavior: clipBehavior, - clipShrink: clipShrink, - isOverlay: isOverlay, + shrinkToClippedSize: shrinkToClippedSize, + childIsInTheForeground: childIsInTheForeground, paintStyle: paintStyle, + inkWell: _inkWell, child: child, ); } @@ -218,23 +231,25 @@ extension ShapeBuilderX on Widget { /// /// Alignment parameter align the foreground Widget with respect to /// the background widget - ShapeBuilder background({ + _ShapeBuilderWithInkWell background({ Color? color, AlignmentGeometry? alignment, List boxShadow = const [], Clip clipBehavior = Clip.none, - bool clipShrink = true, + bool shrinkToClippedSize = true, + bool shouldExpand = false, PaintStyle? paintStyle, }) { - return ShapeBuilder( + return _ShapeBuilderWithInkWell( shadow: boxShadow, alignment: alignment ?? Alignment.center, color: color, child: this, clipBehavior: clipBehavior, - clipShrink: clipShrink, + shrinkToClippedSize: shrinkToClippedSize, + shouldExpand: shouldExpand, paintStyle: paintStyle, - isOverlay: true, + childIsInTheForeground: true, ); } @@ -242,24 +257,26 @@ extension ShapeBuilderX on Widget { /// /// Alignment parameter align the foreground Widget with respect to /// the background widget - ShapeBuilder foreground({ + _ShapeBuilderWithInkWell foreground({ Color? color, AlignmentGeometry? alignment, double elevation = 0.0, List boxShadow = const [], Color? shadowColor, Clip clipBehavior = Clip.none, - bool clipShrink = true, + bool shrinkToClippedSize = true, + bool shouldExpand = false, PaintStyle? paintStyle, }) { - return ShapeBuilder( + return _ShapeBuilderWithInkWell( shadow: boxShadow, alignment: alignment ?? Alignment.center, color: color, child: this, clipBehavior: clipBehavior, - clipShrink: clipShrink, - isOverlay: false, + shrinkToClippedSize: shrinkToClippedSize, + shouldExpand: shouldExpand, + childIsInTheForeground: false, paintStyle: paintStyle, ); } @@ -274,353 +291,11 @@ extension ShapeBuilderX on Widget { child: this, ); - // if it Flex widget it is better to set fitTheShortestSide to false - Resize resize({bool fitTheShortestSide = true}) => - Resize(child: this, fitTheShortestSide: fitTheShortestSide, flex: null); - Widget resizeAdaptive([double? scale]) => - Resize(child: this, fitTheShortestSide: true, flex: null).adaptive(scale); - - Widget adaptiveResize( - {bool fitTheShortestSide = true, double? width, double? height}) => - Resize(child: this, fitTheShortestSide: fitTheShortestSide, flex: null) - .adaptiveTest1(width: width, height: height); - - Widget adaptiveFlexResize( - {bool fitTheShortestSide = true, - int flex = 1, - double? width, - double? height}) => - Resize(child: this, fitTheShortestSide: fitTheShortestSide, flex: flex) - .adaptiveTest1(width: width, height: height); - - /// This should be the first child of a Flex widget (Column or Row) - /// Text('').resizeWithFlex().fixed().padding is not allowed - Resize resizeWithFlex({ - bool fitTheShortestSide = true, - double flex = 1, - bool shouldExpand = false, - }) => - Resize( - child: this, - fitTheShortestSide: fitTheShortestSide, - flex: (flex * 10).toInt(), - shouldExpand: shouldExpand, - ); - _Padding get padding => _Padding(child: this); _PaddingDirectional get paddingDirectional => _PaddingDirectional(child: this); } -class Resize { - late final Widget _child; - final bool _fitTheShortestSide, _shouldExpand; - final int? _flex; - - static double ofAdaptive(BuildContext context) { - final inheritedWidth = InheritedLayout.of(context).width / adaptiveWidth; - return inheritedWidth; - } - - Resize({ - required Widget child, - required int? flex, - required bool fitTheShortestSide, - bool shouldExpand = false, - }) : _flex = flex, - _fitTheShortestSide = fitTheShortestSide, - _shouldExpand = shouldExpand { - // if (child is Flex) { - // _child = child - // ..children.add( - // child.direction == Axis.vertical - // ? const SizedBox( - // width: double.infinity, - // ) - // : const SizedBox(height: double.infinity), - // ); - // } else { - // _child = child; - // } - _child = child; - } - - static double adaptiveWidth = 500; - Widget adaptiveTest1({double? width, double? height}) { - final widget = Builder(builder: (context) { - final inheritedWidth = InheritedLayout.of(context).width / adaptiveWidth; - - return MyFittedBox( - width: width != null ? width * inheritedWidth : null, - height: height != null ? height * inheritedWidth : null, - fitTheShortestSide: _fitTheShortestSide, - child: _child, - ); - }); - if (_flex != null) { - return Flexible( - flex: _flex ?? 1, - fit: _shouldExpand ? FlexFit.tight : FlexFit.loose, - child: widget, - ); - } - return widget; - } - - Widget adaptive([double? scale]) { - final widget = Builder( - builder: (context) { - final inheritedWidth = - InheritedLayout.of(context).width / adaptiveWidth; - - return MyFittedBox( - width: scale, - height: scale, - fitTheShortestSide: _fitTheShortestSide, - inheritedFraction: inheritedWidth, - child: _child, - ); - }, - ); - if (_flex != null) { - return Flexible( - flex: _flex ?? 1, - fit: _shouldExpand ? FlexFit.tight : FlexFit.loose, - child: widget, - ); - } - return widget; - } - - Widget fixedTest({double? width, double? height}) { - // if (_child is Flex) { - // return SizedBox( - // width: width, - // height: height, - // child: _child, - // ); - // } - final widget = MyFittedBox( - width: width, - height: height, - fitTheShortestSide: _fitTheShortestSide, - child: _child, - inheritedFraction: null, - ); - if (_flex != null) { - return Flexible( - flex: _flex ?? 1, - fit: _shouldExpand ? FlexFit.tight : FlexFit.loose, - child: widget, - ); - } - return widget; - } - - Widget fixed({double? width, double? height}) { - // if (_child is Flex) { - // return SizedBox( - // width: width, - // height: height, - // child: _child, - // ); - // } - final widget = MyFittedBox( - width: width, - height: height, - fitTheShortestSide: _fitTheShortestSide, - child: _child, - ); - if (_flex != null) { - return Flexible( - flex: _flex ?? 1, - fit: _shouldExpand ? FlexFit.tight : FlexFit.loose, - child: widget, - ); - } - return widget; - } -// Sizer climp(double? min, double?max){ - -// return -// } - Widget fromEffectiveWidth(double? widthFraction, double? heightFraction) { - // assert(widthFraction == null || widthFraction >= 0 && widthFraction <= 1); - // assert( - // heightFraction == null || heightFraction >= 0 && heightFraction <= 1); - final widget = Builder(builder: (context) { - final inheritedWidth = InheritedLayout.of(context).width; - print('inheritedWidth: $inheritedWidth'); - return InheritedLayout( - inheritedWidth: inheritedWidth * (widthFraction ?? 1), - builder: (context, size) { - return MyFittedBox( - width: - widthFraction != null ? inheritedWidth * widthFraction : null, - height: - heightFraction != null ? inheritedWidth * heightFraction : null, - fitTheShortestSide: _fitTheShortestSide, - child: _child, - ); - }, - ); - }); - - if (_flex != null) { - return Flexible( - flex: _flex ?? 1, - child: widget, - ); - } - return widget; - } - - _FromDevice get fromDevice => _FromDevice( - child: _child, - flex: _flex, - fitTheShortestSide: _fitTheShortestSide, - ); - _FromParent get fromParent => _FromParent( - child: _child, - flex: _flex, - fitTheShortestSide: _fitTheShortestSide, - ); -} - -class _FromDevice { - final Widget _child; - final bool _fitTheShortestSide; - final int? _flex; - const _FromDevice({ - required Widget child, - required int? flex, - required bool fitTheShortestSide, - }) : _flex = flex, - _child = child, - _fitTheShortestSide = fitTheShortestSide; - - Widget width({double? width, double? height}) { - assert(width == null || width >= 0 && width <= 1); - assert(height == null || height >= 0 && height <= 1); - final widget = Builder(builder: (context) { - final deviceWidth = MediaQuery.of(context).size.width; - return MyFittedBox( - width: width != null ? deviceWidth * width : null, - height: height != null ? deviceWidth * height : null, - fitTheShortestSide: _fitTheShortestSide, - child: _child, - ); - }); - - if (_flex != null) { - return Flexible( - flex: _flex ?? 1, - child: widget, - ); - } - return widget; - } - - Widget height({double? width, double? height}) { - assert(width == null || width >= 0 && width <= 1); - assert(height == null || height >= 0 && height <= 1); - final widget = Builder(builder: (context) { - final deviceHeight = MediaQuery.of(context).size.height; - return MyFittedBox( - width: width != null ? deviceHeight * width : null, - height: height != null ? deviceHeight * height : null, - fitTheShortestSide: _fitTheShortestSide, - child: _child, - ); - }); - if (_flex != null) { - return Flexible( - flex: _flex ?? 1, - child: widget, - ); - } - return widget; - } - - Widget widthAndHeight({double? width, double? height}) { - assert(width == null || width >= 0 && width <= 1); - assert(height == null || height >= 0 && height <= 1); - final widget = Builder(builder: (context) { - final deviceWidth = MediaQuery.of(context).size.width; - final deviceHeight = MediaQuery.of(context).size.height; - return MyFittedBox( - width: width != null ? deviceWidth * width : null, - height: height != null ? deviceHeight * height : null, - fitTheShortestSide: _fitTheShortestSide, - child: _child, - ); - }); - if (_flex != null) { - return Flexible( - flex: _flex ?? 1, - child: widget, - ); - } - return widget; - } -} - -class _FromParent { - final Widget _child; - final bool _fitTheShortestSide; - final int? _flex; - const _FromParent({ - required Widget child, - required int? flex, - required bool fitTheShortestSide, - }) : _flex = flex, - _child = child, - _fitTheShortestSide = fitTheShortestSide; - Widget height({double? width, double? height}) { - // assert(width == null || width >= 0 && width <= 1); - // assert(height == null || height >= 0 && height <= 1); - final widget = LayoutBuilder(builder: (context, constraints) { - final parentHeight = constraints.maxHeight; - return MyFittedBox( - width: width != null ? parentHeight * width : null, - height: height != null ? parentHeight * height : null, - fitTheShortestSide: _fitTheShortestSide, - child: _child, - ); - }); - - if (_flex != null) { - return Flexible( - flex: _flex ?? 1, - child: widget, - ); - } - return widget; - } - - Widget width({double? width, double? height}) { - // assert(width == null || width >= 0 && width <= 1); - // assert(height == null || height >= 0 && height <= 1); - final widget = LayoutBuilder(builder: (context, constraints) { - final parentWidth = constraints.maxWidth; - return MyFittedBox( - width: width != null ? parentWidth * width : null, - height: height != null ? parentWidth * height : null, - fitTheShortestSide: _fitTheShortestSide, - child: _child, - ); - }); - - if (_flex != null) { - return Flexible( - flex: _flex ?? 1, - child: widget, - ); - } - return widget; - } -} - class _Padding { final Widget _child; // final bool _fitTheShortestSide, _shouldExpand; diff --git a/lib/src/stack_render_shape.dart b/lib/src/stack_render_shape.dart new file mode 100644 index 0000000..766b772 --- /dev/null +++ b/lib/src/stack_render_shape.dart @@ -0,0 +1,215 @@ +import 'package:flutter/material.dart'; +import 'package:flutter/rendering.dart'; +import 'dart:math' as math; + +/// Parent data for use with [RenderStack]. +class _StackParentData extends ContainerBoxParentData { + bool isPositioned = false; +} + +class _RenderStack extends RenderBox + with + ContainerRenderObjectMixin, + RenderBoxContainerDefaultsMixin { + _RenderStack( + {AlignmentGeometry? alignment, + required this.isLastPositioned, + required this.buildContext}) + : _alignment = alignment; + + final bool isLastPositioned; + final BuildContext buildContext; + AlignmentGeometry? _alignment; + + set alignment(AlignmentGeometry? value) { + if (value == _alignment) { + return; + } + _alignment = value; + _resolvedAlignment = null; + markNeedsPaint(); + } + + @override + void setupParentData(RenderBox child) { + if (child.parentData is! _StackParentData) { + child.parentData = _StackParentData(); + } + } + + static double getIntrinsicDimension(RenderBox? firstChild, + double Function(RenderBox child) mainChildSizeGetter) { + double extent = 0.0; + RenderBox? child = firstChild; + while (child != null) { + final _StackParentData childParentData = + child.parentData! as _StackParentData; + extent = math.max(extent, mainChildSizeGetter(child)); + assert(child.parentData == childParentData); + child = childParentData.nextSibling; + } + return extent; + } + + @override + double computeMinIntrinsicWidth(double height) { + return getIntrinsicDimension( + firstChild, (RenderBox child) => child.getMinIntrinsicWidth(height)); + } + + @override + double computeMaxIntrinsicWidth(double height) { + return getIntrinsicDimension( + firstChild, (RenderBox child) => child.getMaxIntrinsicWidth(height)); + } + + @override + double computeMinIntrinsicHeight(double width) { + return getIntrinsicDimension( + firstChild, + (RenderBox child) => child.getMinIntrinsicHeight(width), + ); + } + + @override + double computeMaxIntrinsicHeight(double width) { + return getIntrinsicDimension( + firstChild, (RenderBox child) => child.getMaxIntrinsicHeight(width)); + } + + @override + double? computeDistanceToActualBaseline(TextBaseline baseline) { + return defaultComputeDistanceToHighestActualBaseline(baseline); + } + + @override + Size computeDryLayout(BoxConstraints constraints) { + firstChild!.layout( + constraints, + parentUsesSize: false, + ); + if (isLastPositioned) return firstChild!.size; + lastChild!.layout( + constraints, + parentUsesSize: false, + ); + return Size( + math.max(firstChild!.size.width, lastChild!.size.width), + math.max(firstChild!.size.height, lastChild!.size.height), + ); + } + + @override + void performLayout() { + assert(childCount == 2); + firstChild!.layout( + constraints, + parentUsesSize: true, + ); + if (isLastPositioned) { + size = firstChild!.size; + lastChild!.layout( + constraints.tighten(width: size.width, height: size.height), + parentUsesSize: true, + ); + } else { + lastChild!.layout( + constraints.loosen(), + parentUsesSize: true, + ); + + size = Size( + math.max(firstChild!.size.width, lastChild!.size.width), + math.max(firstChild!.size.height, lastChild!.size.height), + ); + + _resolve(); + final rect1 = _resolvedAlignment!.inscribe( + firstChild!.size, + Rect.fromLTWH(0, 0, size.width, size.height), + ); + (firstChild!.parentData as _StackParentData).offset = rect1.topLeft; + final rect2 = _resolvedAlignment!.inscribe( + lastChild!.size, + Rect.fromLTWH(0, 0, size.width, size.height), + ); + (lastChild!.parentData as _StackParentData).offset = rect2.topLeft; + } + } + + Alignment? _resolvedAlignment; + + void _resolve() { + if (_resolvedAlignment != null) { + return; + } + _resolvedAlignment = + _alignment?.resolve(Directionality.maybeOf(buildContext)); + } + + @override + bool hitTestChildren(BoxHitTestResult result, {required Offset position}) { + RenderBox? child = lastChild; + bool isHit = false; + while (child != null) { + final childParentData = child.parentData! as _StackParentData; + isHit = result.addWithPaintOffset( + offset: childParentData.offset, + position: position, + hitTest: (BoxHitTestResult result, Offset transformed) { + assert(transformed == position - childParentData.offset); + return child!.hitTest(result, position: transformed); + }, + ); + child = childParentData.previousSibling; + } + return isHit; + } + + @override + void paint(PaintingContext context, Offset offset) { + context.paintChild(firstChild!, + offset + (firstChild!.parentData as _StackParentData).offset); + context.paintChild(lastChild!, + offset + (lastChild!.parentData as _StackParentData).offset); + } +} + +class MyStack extends MultiChildRenderObjectWidget { + MyStack({ + super.key, + super.children, + this.alignment, + this.isLastPositioned = true, + }); + final AlignmentGeometry? alignment; + final bool isLastPositioned; + + @override + RenderObject createRenderObject(BuildContext context) { + return _RenderStack( + alignment: alignment, + isLastPositioned: isLastPositioned, + buildContext: context, + ); + } + + @override + void updateRenderObject( + BuildContext context, covariant _RenderStack renderObject) { + renderObject.alignment = alignment; + } +} + +// class MyPositioned extends ParentDataWidget<_StackParentData> { +// const MyPositioned({super.key, required super.child}); + +// @override +// void applyParentData(RenderObject renderObject) { +// final data = renderObject.parentData as _StackParentData; +// data.isPositioned = true; +// } + +// @override +// Type get debugTypicalAncestorWidgetClass => MyStack; +// } diff --git a/test/build_test.dart b/test/build_test.dart new file mode 100644 index 0000000..535f638 --- /dev/null +++ b/test/build_test.dart @@ -0,0 +1,372 @@ +import 'dart:io'; + +import 'package:flutter/material.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:golden_toolkit/golden_toolkit.dart'; +import 'package:shape_builder/shape_builder.dart'; +import 'package:path/path.dart' as path; + +void main() { + testGoldens('build with different size', (tester) async { + await tester.pumpWidgetBuilder( + Center( + child: Column( + children: [ + Row( + children: [ + Rectangle.square( + side: 100, + color: Colors.blue.withOpacity(.5), + ).background().build( + Rectangle.square( + color: Colors.red, + side: 10, + ), + ), + Rectangle.square( + side: 100, + color: Colors.blue.withOpacity(.5), + ).background(alignment: const Alignment(-1, -1)).build( + Rectangle.square( + color: Colors.red, + side: 10, + ), + ), + Rectangle.square( + side: 100, + color: Colors.blue.withOpacity(.5), + ).background(alignment: const Alignment(1, 1)).build( + Rectangle.square( + color: Colors.red, + side: 10, + ), + ), + Rectangle.square( + side: 100, + color: Colors.blue.withOpacity(.5), + ).background(alignment: const Alignment(.8, .8)).build( + Rectangle.square( + color: Colors.red, + side: 10, + ), + ), + ], + ), + const SizedBox(height: 8), + Row( + children: [ + Rectangle.square( + side: 100, + color: Colors.blue, + ).foreground().build( + Rectangle.square( + color: Colors.red, + side: 10, + ), + ), + Rectangle.square( + side: 100, + color: Colors.blue, + ).foreground(alignment: const Alignment(-1, -1)).build( + Rectangle.square( + color: Colors.red, + side: 10, + ), + ), + Rectangle.square( + side: 100, + color: Colors.blue, + ).foreground(alignment: const Alignment(1, 1)).build( + Rectangle.square( + color: Colors.red, + side: 10, + ), + ), + Rectangle.square( + side: 100, + color: Colors.blue, + ).foreground(alignment: const Alignment(.8, .8)).build( + Rectangle.square( + color: Colors.red, + side: 10, + ), + ), + ], + ), + const SizedBox(height: 8), + Row( + children: [ + Rectangle( + width: 100, + height: 50, + color: Colors.blue, + ).foreground().build( + Rectangle( + width: 50, + height: 100, + color: Colors.red, + ), + ), + Rectangle( + width: 100, + height: 50, + color: Colors.blue, + ).foreground(alignment: const Alignment(-1, -1)).build( + Rectangle( + width: 50, + height: 100, + color: Colors.red, + ), + ), + Rectangle( + width: 100, + height: 50, + color: Colors.blue, + ).foreground(alignment: const Alignment(1, 1)).build( + Rectangle( + width: 50, + height: 100, + color: Colors.red, + ), + ), + Rectangle( + width: 100, + height: 50, + color: Colors.blue, + ).foreground(alignment: const Alignment(.8, .8)).build( + Rectangle( + width: 50, + height: 100, + color: Colors.red, + ), + ), + ], + ), + const SizedBox(height: 8), + Row( + children: [ + Rectangle( + width: 100, + height: 50, + color: Colors.blue, + ).background().build( + Rectangle( + width: 50, + height: 100, + color: Colors.red, + ), + ), + Rectangle( + width: 100, + height: 50, + color: Colors.blue, + ).background(alignment: const Alignment(-1, -1)).build( + Rectangle( + width: 50, + height: 100, + color: Colors.red, + ), + ), + Rectangle( + width: 100, + height: 50, + color: Colors.blue, + ).background(alignment: const Alignment(1, 1)).build( + Rectangle( + width: 50, + height: 100, + color: Colors.red, + ), + ), + Rectangle( + width: 100, + height: 50, + color: Colors.blue, + ).background(alignment: const Alignment(.8, .8)).build( + Rectangle( + width: 50, + height: 100, + color: Colors.red, + ), + ), + ], + ), + ], + ), + ), + wrapper: materialAppWrapper( + theme: ThemeData.light(), + platform: TargetPlatform.android, + ), + ); + await screenMatchesGolden(tester, 'build/build_001'); + }); + + testGoldens( + '2- with image without constraints 1', + (tester) async { + final file = File( + path.join(Directory.current.path, 'test', 'flutter_logo_image.png'), + ); + final data = file.readAsBytesSync(); + await tester.pumpWidgetBuilder( + Center( + child: Column( + children: [ + Image.memory( + data, + fit: BoxFit.cover, + ).foreground().build( + Rectangle( + width: 100, + height: 100, + ), + ), + ], + ), + ), + wrapper: materialAppWrapper( + theme: ThemeData.light(), + platform: TargetPlatform.android, + ), + ); + await screenMatchesGolden(tester, 'build/build_002'); + }, + ); + + testGoldens( + '3- with image without constraints 2', + (tester) async { + final file = File( + path.join(Directory.current.path, 'test', 'flutter_logo_image.png'), + ); + final data = file.readAsBytesSync(); + await tester.pumpWidgetBuilder( + Center( + child: Column( + children: [ + Rectangle( + width: 100, + height: 100, + ).background().build( + Image.memory( + data, + fit: BoxFit.cover, + ), + ), + ], + ), + ), + wrapper: materialAppWrapper( + theme: ThemeData.light(), + platform: TargetPlatform.android, + ), + ); + await screenMatchesGolden(tester, 'build/build_003'); + }, + ); + + testGoldens( + '4- with image when rect is greater then image', + (tester) async { + final file = File( + path.join(Directory.current.path, 'test', 'flutter_logo_image.png'), + ); + final data = file.readAsBytesSync(); + await tester.pumpWidgetBuilder( + Center( + child: Column( + children: [ + Rectangle( + width: 100, + height: 100, + ).foreground().build( + SizedBox( + width: 50, + height: 50, + child: Image.memory( + data, + fit: BoxFit.cover, + ), + ), + ), + ], + ), + ), + wrapper: materialAppWrapper( + theme: ThemeData.light(), + platform: TargetPlatform.android, + ), + ); + await screenMatchesGolden(tester, 'build/build_004'); + }, + ); + + testGoldens( + '5- with inkWell', + (tester) async { + final file = File( + path.join(Directory.current.path, 'test', 'flutter_logo_image.png'), + ); + final data = file.readAsBytesSync(); + await tester.pumpWidgetBuilder( + Center( + child: Column( + children: [ + Rectangle( + width: 100, + height: 100, + ) + .foreground() + .inkWell( + InkWell( + splashColor: Colors.red, + onTap: () {}, + ), + ) + .build( + SizedBox( + width: 50, + height: 50, + child: Image.memory( + data, + fit: BoxFit.cover, + ), + ), + ), + Rectangle( + width: 100, + height: 100, + color: Colors.blue.withOpacity(.5), + ) + .background() + .inkWell( + InkWell( + splashColor: Colors.red, + onTap: () {}, + ), + ) + .build( + SizedBox( + width: 50, + height: 50, + child: Image.memory( + data, + fit: BoxFit.cover, + ), + ), + ), + ], + ), + ), + wrapper: materialAppWrapper( + theme: ThemeData.light(), + platform: TargetPlatform.android, + ), + ); + await tester.press(find.byType(Image).first); + await tester.press(find.byType(Image).last); + await screenMatchesGolden(tester, 'build/build_005'); + }, + ); +} diff --git a/test/circle_test.dart b/test/circle_test.dart index 503fcdc..36ae3ec 100644 --- a/test/circle_test.dart +++ b/test/circle_test.dart @@ -12,7 +12,7 @@ void main() { 'Circle', () { testGoldens( - '1- Expands to take the max available space if both height and width' + '1- Shrink to take the min available space if both height and width' 'are not specified and the child is null', (tester) async { await tester.pumpWidgetBuilder( @@ -22,6 +22,24 @@ void main() { platform: TargetPlatform.android, ), ); + await screenMatchesGolden(tester, 'circle/circle_0001'); + }, + ); + + testGoldens( + '1- Expands to take the max available space if both height and width' + 'are not specified and the child is null', + (tester) async { + await tester.pumpWidgetBuilder( + Center( + child: Oval.circle( + shouldExpand: true, + )), + wrapper: materialAppWrapper( + theme: ThemeData.light(), + platform: TargetPlatform.android, + ), + ); await screenMatchesGolden(tester, 'circle/circle_001'); }, ); @@ -270,7 +288,7 @@ void main() { .foreground( color: Colors.blue.withOpacity(.3), alignment: Alignment.center, - clipShrink: true, + shrinkToClippedSize: true, clipBehavior: Clip.antiAlias, ) .buildCircle( @@ -281,7 +299,7 @@ void main() { .foreground( color: Colors.blue.withOpacity(.3), alignment: Alignment.centerRight, - clipShrink: true, + shrinkToClippedSize: true, clipBehavior: Clip.antiAlias, ) .buildCircle( @@ -293,7 +311,7 @@ void main() { color: Colors.blue.withOpacity(.3), alignment: Alignment.centerLeft, clipBehavior: Clip.antiAlias, - clipShrink: false, + shrinkToClippedSize: false, ) .buildCircle( radius: 25, @@ -303,7 +321,7 @@ void main() { .foreground( color: Colors.blue.withOpacity(.3), alignment: Alignment.center, - clipShrink: false, + shrinkToClippedSize: false, clipBehavior: Clip.antiAlias, ) .buildCircle( @@ -314,7 +332,7 @@ void main() { .foreground( color: Colors.blue.withOpacity(.3), alignment: Alignment.centerRight, - clipShrink: false, + shrinkToClippedSize: false, clipBehavior: Clip.antiAlias, ) .buildCircle( @@ -540,85 +558,168 @@ void main() { Center( child: Column( children: [ - Image.memory( - data, - fit: BoxFit.cover, - width: 200, - height: 100, - ), - const SizedBox(height: 8), - Image.memory( - data, - fit: BoxFit.cover, - width: 200, - height: 100, - ) - .foreground( - color: Colors.blue.withOpacity(.3), - alignment: Alignment.center, - clipBehavior: Clip.antiAlias, - ) - .buildCircle( - radius: 50, + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Image.memory( + data, + fit: BoxFit.cover, + width: 200, + height: 100, + ), + const SizedBox(width: 8), + Image.memory( + data, + fit: BoxFit.cover, + width: 200, + height: 100, ) - .colorize(Colors.amber), + .background( + alignment: Alignment.center, + clipBehavior: Clip.antiAlias, + ) + .buildCircle( + radius: 30, + ) + .colorize(Colors.amber), + ], + ), + const SizedBox(width: 8), Row( mainAxisSize: MainAxisSize.min, children: [ SizedBox( - width: 200, - height: 100, + width: 150, + // height: 200, + child: Oval.circle( + radius: 30, + alignment: Alignment.center, + clipBehavior: Clip.antiAlias, + child: Image.memory( + data, + fit: BoxFit.cover, + width: 200, + height: 100, + ), + ).colorize(Colors.amber), + ), + SizedBox( + width: 150, + // height: 200, child: Image.memory( data, fit: BoxFit.cover, width: 200, height: 100, ) - .foreground( - color: Colors.blue.withOpacity(.3), + .background( alignment: Alignment.center, clipBehavior: Clip.antiAlias, ) .buildCircle( - radius: 50, + radius: 30, ) .colorize(Colors.amber), ), SizedBox( - width: 150, - height: 90, + width: 80, + // height: 200, child: Image.memory( data, fit: BoxFit.cover, width: 200, height: 100, ) - .foreground( - color: Colors.blue.withOpacity(.3), + .background( alignment: Alignment.center, clipBehavior: Clip.antiAlias, ) .buildCircle( - radius: 50, + radius: 30, ) .colorize(Colors.amber), ), SizedBox( - width: 100 * .8, - height: 80 * .8, + width: 50, + // height: 80 * .8, + child: Image.memory( + data, + fit: BoxFit.cover, + width: 200, + height: 100, + ) + .background( + alignment: Alignment.center, + clipBehavior: Clip.antiAlias, + ) + .buildCircle( + radius: 30, + ) + .colorize(Colors.amber), + ), + ], + ), + const SizedBox(height: 8), + Row( + mainAxisSize: MainAxisSize.min, + children: [ + ConstrainedBox( + constraints: const BoxConstraints( + maxWidth: 300, + // maxHeight: 200, + ), + child: Image.memory( + data, + fit: BoxFit.cover, + width: 200, + height: 100, + ) + .background( + alignment: Alignment.center, + clipBehavior: Clip.antiAlias, + ) + .buildCircle( + radius: 30, + ) + .colorize(Colors.amber), + ), + ConstrainedBox( + constraints: const BoxConstraints( + maxWidth: 80, + // maxHeight: 50, + ), + child: Image.memory( + data, + fit: BoxFit.cover, + width: 200, + height: 100, + ) + .background( + alignment: Alignment.center, + clipBehavior: Clip.antiAlias, + ) + .buildCircle( + radius: 30, + ) + .colorize(Colors.amber), + ), + ConstrainedBox( + constraints: const BoxConstraints( + maxWidth: 50, + // maxHeight: 25, + ), child: Image.memory( data, fit: BoxFit.cover, width: 200, height: 100, ) - .foreground( - color: Colors.blue.withOpacity(.3), + .background( alignment: Alignment.center, clipBehavior: Clip.antiAlias, ) .buildCircle( - radius: 50, + radius: 30, ) .colorize(Colors.amber), ), @@ -630,8 +731,8 @@ void main() { children: [ ConstrainedBox( constraints: const BoxConstraints( - maxWidth: 200, - maxHeight: 100, + maxWidth: 300, + // maxHeight: 200, ), child: Image.memory( data, @@ -639,20 +740,20 @@ void main() { width: 200, height: 100, ) - .foreground( - color: Colors.blue.withOpacity(.3), + .background( + shouldExpand: true, alignment: Alignment.center, clipBehavior: Clip.antiAlias, ) .buildCircle( - radius: 50, + radius: 30, ) .colorize(Colors.amber), ), ConstrainedBox( constraints: const BoxConstraints( - maxWidth: 150, - maxHeight: 90, + maxWidth: 80, + // maxHeight: 50, ), child: Image.memory( data, @@ -660,20 +761,20 @@ void main() { width: 200, height: 100, ) - .foreground( - color: Colors.blue.withOpacity(.3), + .background( + shouldExpand: true, alignment: Alignment.center, clipBehavior: Clip.antiAlias, ) .buildCircle( - radius: 50, + radius: 30, ) .colorize(Colors.amber), ), ConstrainedBox( constraints: const BoxConstraints( - maxWidth: 100 * .8, - maxHeight: 80 * .8, + maxWidth: 50, + // maxHeight: 25, ), child: Image.memory( data, @@ -681,13 +782,13 @@ void main() { width: 200, height: 100, ) - .foreground( - color: Colors.blue.withOpacity(.3), + .background( + shouldExpand: true, alignment: Alignment.center, clipBehavior: Clip.antiAlias, ) .buildCircle( - radius: 50, + radius: 30, ) .colorize(Colors.amber), ), @@ -699,56 +800,51 @@ void main() { children: [ ConstrainedBox( constraints: const BoxConstraints( - maxWidth: 200, - maxHeight: 100, + maxWidth: 300, + maxHeight: 200, ), child: Image.memory( data, fit: BoxFit.cover, ) - .foreground( - color: Colors.blue.withOpacity(.3), + .background( alignment: Alignment.center, clipBehavior: Clip.antiAlias, ) .buildCircle( - radius: 50, + radius: 30, ) .colorize(Colors.amber), ), ConstrainedBox( constraints: const BoxConstraints( - maxWidth: 150, - maxHeight: 90, + maxWidth: 100, + maxHeight: 50, ), child: Image.memory( data, fit: BoxFit.cover, ) - .foreground( - color: Colors.blue.withOpacity(.3), + .background( alignment: Alignment.center, clipBehavior: Clip.antiAlias, ) - .buildCircle( - radius: 50, - )), + .buildCircle(radius: 40)), ConstrainedBox( constraints: const BoxConstraints( - maxWidth: 100 * .8, - maxHeight: 80 * .8, + maxWidth: 50, + maxHeight: 25, ), child: Image.memory( data, fit: BoxFit.cover, ) - .foreground( - color: Colors.blue.withOpacity(.3), + .background( alignment: Alignment.center, clipBehavior: Clip.antiAlias, ) .buildCircle( - radius: 50, + radius: 30, ) .colorize(Colors.amber), ), @@ -762,7 +858,7 @@ void main() { platform: TargetPlatform.android, ), ); - await screenMatchesGolden(tester, 'circle/circle_014'); + await screenMatchesGolden(tester, 'circle/circle_0014'); }, ); @@ -1357,6 +1453,200 @@ void main() { await screenMatchesGolden(tester, 'circle/circle_025'); }, ); + + testGoldens( + '26- with clipBehavior with infinite sized width. case shouldExpand is true', + (tester) async { + final file = File( + path.join(Directory.current.path, 'test', 'flutter_logo_image.png'), + ); + final data = file.readAsBytesSync(); + await tester.pumpWidgetBuilder( + Center( + child: SizedBox( + width: double.infinity, + child: Image.memory( + data, + fit: BoxFit.cover, + width: 300, + height: 300, + ) + .background( + shouldExpand: true, + clipBehavior: Clip.antiAlias, + alignment: Alignment.center, + ) + .buildCircle( + radius: 40, + ) + .colorize(Colors.amber), + )), + wrapper: materialAppWrapper( + theme: ThemeData.light(), + platform: TargetPlatform.android, + ), + ); + await screenMatchesGolden(tester, 'circle/circle_026'); + }, + ); + + testGoldens( + '27- with clipBehavior case shouldExpand is true', + (tester) async { + final file = File( + path.join(Directory.current.path, 'test', 'flutter_logo_image.png'), + ); + final data = file.readAsBytesSync(); + await tester.pumpWidgetBuilder( + Center( + child: Image.memory( + data, + fit: BoxFit.cover, + width: 300, + height: 300, + ) + .background( + shouldExpand: true, + clipBehavior: Clip.antiAlias, + alignment: Alignment.center, + ) + .buildCircle( + radius: 40, + ) + .colorize(Colors.amber), + ), + wrapper: materialAppWrapper( + theme: ThemeData.light(), + platform: TargetPlatform.android, + ), + ); + await screenMatchesGolden(tester, 'circle/circle_027'); + }, + ); + + testGoldens( + '28- with clipBehavior case shouldExpand is true, shape width = null', + (tester) async { + final file = File( + path.join(Directory.current.path, 'test', 'flutter_logo_image.png'), + ); + final data = file.readAsBytesSync(); + await tester.pumpWidgetBuilder( + Center( + child: Image.memory( + data, + fit: BoxFit.cover, + width: 300, + height: 300, + ) + .background( + shouldExpand: true, + clipBehavior: Clip.antiAlias, + alignment: Alignment.center, + ) + .buildCircle( + radius: 40, + ) + .colorize(Colors.amber), + ), + wrapper: materialAppWrapper( + theme: ThemeData.light(), + platform: TargetPlatform.android, + ), + ); + await screenMatchesGolden(tester, 'circle/circle_028'); + }, + ); + + testGoldens( + '29- with clipBehavior case shouldExpand is true, shape hight = null', + (tester) async { + final file = File( + path.join(Directory.current.path, 'test', 'flutter_logo_image.png'), + ); + final data = file.readAsBytesSync(); + await tester.pumpWidgetBuilder( + Center( + child: Image.memory( + data, + fit: BoxFit.cover, + width: 300, + height: 300, + ) + .background( + shouldExpand: true, + clipBehavior: Clip.antiAlias, + alignment: Alignment.center, + ) + .buildCircle( + radius: 40, + + // height: 80, + ) + .colorize(Colors.amber), + ), + wrapper: materialAppWrapper( + theme: ThemeData.light(), + platform: TargetPlatform.android, + ), + ); + await screenMatchesGolden(tester, 'circle/circle_029'); + }, + ); + }, + ); + + testGoldens( + '30- inkWell', + (tester) async { + final file = File( + path.join(Directory.current.path, 'test', 'flutter_logo_image.png'), + ); + final data = file.readAsBytesSync(); + dynamic message; + await tester.pumpWidgetBuilder( + Center( + child: Column( + children: [ + const Text('build background') + .background() + .inkWell( + InkWell( + splashColor: Colors.red, + onTap: () { + message = 'onTap'; + }, + ), + ) + .buildCircle(), + const Text('build foreground') + .foreground() + .inkWell( + InkWell( + splashColor: Colors.red, + onTap: () { + message = 'onTap'; + }, + ), + ) + .buildCircle(), + ], + ), + ), + wrapper: materialAppWrapper( + theme: ThemeData.light(), + platform: TargetPlatform.android, + ), + ); + expect(message, null); + await tester.tap(find.text('build background')); + await tester.pump(); + expect(message, 'onTap'); + message = null; + await tester.press(find.text('build background')); + await tester.press(find.text('build foreground')); + + await screenMatchesGolden(tester, 'circle/circle_030'); }, ); } diff --git a/test/goldens/circle/circle_0001.png b/test/goldens/circle/circle_0001.png new file mode 100644 index 0000000000000000000000000000000000000000..1d413c832901c9cb38572d5fb6e35c84c9041b4f GIT binary patch literal 3267 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 LDpM@|{QZ9cFw{W) literal 0 HcmV?d00001 diff --git a/test/goldens/circle/circle_019.png b/test/goldens/circle/circle_019.png index 55032f2ad564dd9d6a2d4cd01e133430c33958cc..6804ac5cc65b173c9aa225ab5a629f06839ff47c 100644 GIT binary patch literal 11242 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 Hc|u9h(_WqQ~z_WHQr z_m$D2OF@^(qhqlpc9@Rs;O$6kuY3!K9*L za2V{o7zPFl{DR#8ulfHl`QH@cT9>Mip$pU?&`1kQhR(U)!)NvbgLj=!_8r8{GtEGm%c|8_vb!(Z28$wJ@D94 zA6>n>j`4M^+mgf_Ile*f>Jh_~UCX_c>X<9U;tNCQ5G3m&G;~X3q8Dqy{d^vB8;!_i#>V1;%DQopdQB zeC&1eqzJk>Q>nOYuiL+!W`D0JnS>MlEz9qEJEwl-b$#~ru$l!&1zx+11>q@)$zX+R z8(r}zePfM1UOak;lv^Cr5Z7OFh`%uZ0%5^@xN5l6Z!VwCT2%MY$)cK)gj2U8pQV=G zk=xnVFlRhkjoi3;n9>36Dsnb-sgLe( z?o5@tbm4V*Q&+TiWpWy^@a|A1;Iihavo|+g^xHA>@K!^nqbS(+U zJ7BWfW^3$3h4iPx+_)ZVm`_?8#MA>A?oZx?2vueJtBskc3DVXTXP5c4=eF@-c28F&vr zVj*N$@SMVJUe5Ewr2!3^QTDgYsF$m_P%HSgBOJ{|am%ED?o~=pR&4kV=}EVJC^4ty zyuAs&bG)yrnjDqLS^TFi9dE9dS*c5T-iz5m(IM0(c{XO&c|G@BOq*aRJue4BL-xg5 zd2ys-@Xm6M&W5uz*POA+vVwRNAu$v3!#C#T}lFG$DzEv}!&bK4-eY ziCX-kqBXT~1-0CX-@hZ`=V%BQkAw}qK8~l$qG;;$bb>lx-RVUK>`LE%OL;`c&U^ z%xKNnUDC4M#XyWVcRnkOucgQGc+HQ|#srxFBSNRSf$T8f)^I6_GFrTzeEOhAJ_*hj z4uc<~w8W2whn4wDr#+)T?aAV~M39Tp)TE8jv65*q9p#!&@H~OFmAm%g@9i@cigB%y zPD|QIJzb-aj(<|hiQ@UO$SvDkXSwB+#_=)O;^kk~-cVOlNGpx3XXXiKfi8RgI(S_8 zLfFrM!uSrK6a#`Bd+IM8^x&o~^)k%#2qy5w@wS;r$q~9a!G)ThEp+=uBP(TTmKY$1 zzDMoCDcrrFvA5m{!70pPZ%~f^{%Xx8^PR?`qRkPsRBLUwYYg$Yf0x5mj42Buc8I3$ z-Mi#jxG#dkh(6Cf8_kh|6W>&wIj^xdFsw6^mm`xn&||5t7GR~$U2SAww3nvEKH~o| zh$frse+2R>mmS-5COT84g)v;Ig+gTJPm3-2*J;E{>eG&h*eDqMladl|$8|TW^}3S* z0+QcO=I0&_p$jWNls-%eu-MGPE$v@EbJ6D%i&O#(e*U#$wX~2=LqB=40_a9I5;b+}xgr*fE6GhzT;^HScg8x1&@Ak!_2Rkm} zInjQA^QLo*ORZXM&A2p~S>dHAL09+qn{rY@IpGLsudaC?*o+jeH&^#=@}vC;HBkPk zHO~%~Ta6&b09S~^HRMt%rDqOr-NcCP;mk0E3@1Vv-IvGOrq;-+!Y__)U-le2WKcts z&$Weza0_Fsf!!$0#TO!IT4|xt#F&t!CET5<@>>pNhi0eXpF}W$+5!V}hiUb zhv|V~&}M*pNFSx_t1ScG1Vg|Fn<@_XD zxULuK)mpyP0keAml>oU>JjF^yWZ%R?7#x2sapa(Zv!C$NTkjm9BhVV|Kn#ApClKWL)nu0}DprvQbfD84U8E_`* zG$#;>i3FHmPJfSS9}$txH5Z@b0l!QSjU5NyA6b zjjV?Xt`R&vMQwqL0~<#fJ0E3k9{>8Yn)0A^h8L{z*;r{CBk;Z4=lMM)QpO(h2-2!9 zS7jo!D3#_`8>URS77Rm*U@~ZpVRT^wuSg<0l1UfAdFKr!c?P0}tydncDm3!Pp(7a6 z(0k8;d9}304Xf@xIh!pcb`+pM6+j6FoLpAPwb2Ud#rZH-x%Cu-mGr}j2<(D(cP}A= zSwL`Nsg|vjiT*;D1uOQKsI(WUyixo78dJoDr(95L?vv`~igq`2k^WqC68R1_Mf50*l5 z=BwvCo?xh@PnZF=Cq{eJ9iVTh%absUbJ){pB2WImqEdO5ji&k+rgE+bj895C!0FL@@s)R%dj(VCgq<0xa zxtK=mBKR1J+?DwHxppzX=hRb%NUK0N7c9S})qK1#Hb3MdzCK+C-MJ{HoqYqc~>XtY*iqVjXK zc-}9s*mShL)cK8|#`i0=zAN@dL|C-l(NJArGrcok8K%a{i&Ar1&IH=I*g8S3#aQtv$y z{7x?-K;jEp<=9Pb6oP@na&}OjkXQliP6wntphu>o(Pi5Z4SnNX`CjwNY#CFLp`y_G zH-`$U>~x-*f3QvgF%le*j11)EAf08sjVoI$4$rUbvB4BwZMKeLzp?q~bXVFrjb;o3 znkVDBz7kL)W56ftsI=?L7xJ-u;gE6%y)to`4lO86X?P|uNbue^!BNJ%=l8%N21<(- z`3x=MJ^A9Gb45OOBAGGo$&w4fm5R(LJ3b}1yY;YlBX9>)`Bet3!f%15LE(uipAmn2 zT5dP%&yjR|a4iG6mNO=O?s@#JYEkdYB?Hil2q!Lx`PjH)FUAee#N(vC0`FxXu)uJ| zK|>(O;P?ca>lHY54c7fA?h#uMhu{!4t1OuW!|_rKen9c)tKi};g3R=8e!U|sf*3km0cYEb0!`-r)xC7=v zL$(mJW5XAYT~{lP*Ugigppa&KImSud_~|%m@0|10^?WRDKSK;APY3xqOzidrG6?{u zVmiCItpm4#$8jUXiTPwA%HUG##M*)Kua?Od~9J}L0i>m&8y?iJ#)42_Fn|E#iqpWbbYKxB69#`*0frjvn7 z7Q>7W@ZV&)@Vff($lq1kheCH{z1FBlKi!|>_@JycJM&b>(o8E1k2kuxQlHP zTrXVM@PS+hM^eFW4H&gC9m4=Nat6xx*jYp_*l+qUX?24k znm^YlBl|LnoyFubvInl)Y-}=yn-5nkv*d|c>|vW|`7CI&Ho|C~xSQh3)bn(jW%t6| z*nXRp+U-^sOVFBlV%P2k%PE(T00RajFI)sbYpTnx-EuL@0SqgP)a@Oh$8^183*qOdf0B(Pk z8Rp7BXa)z?Zf0VwgAtf-uJ0a@&iLqjrZbEZw{hK+F%+Y+IxL+r>5T0RGrMM1v|_(a zK$`#3UQ8gys!tVu0a9J~IRDQ#x_3kexuSqK0NXcQ3*Sx#o^&>l z6KBu`t9*UtJ-?}%>E-QSl}O$`yX1f1495=3+iP*)1*9~;Hm@@JS560Xz)bC{|3Uv9 zkd)uUjG0+_>&k<&JxAdA^`3be*Ht&la|^p}ExpJVs|;sy+D_YkY0kQml&$XO3I(YS zJOlTQ$wm9{=4m6q@yF1mV(2#oVwx;-PzDTICAF#9_kBH_^OtnJa`Dx+=z8+WW@+M zJHQgTP)$e_Y~^K<7DvZ%t8_dI|9NP6!?M}8<=H~;S9VT8LN^?&;z0*UGO>i%4hV{~Qk zJNtAtfUAQ`8ca$O&>Aft%j54})L^o0D`Slfgq9Lk-h3B2vM$YJs6e|cK-0RLBiX*b zw%_yDC}$v71jL?ucLec7cfRCY&;N!2JYIAhQJB-{ZPV54Gj2nEZiCC@9X$5p{rHLb*{$T4 znTiIo&(=2t9T97{O?0y=yU)v}5By~*n{$-`Wj?*h+hV$1H2Q1yP(9W8wVW{0$Y7g1 z^Kuc{vTNoIj;?RsCiXu3JF=vIE3xJ=EmTN4dq`E`dUI)1%6<;tQGP0mqZOva%uhgKJ=#wEj6tA4( z6*%vfJ~qE^_g1TQ0$gH}Z>MfcHEs&8`bh|`Z{r(^c2TD-KB`6c>%YFctu`Nh1O>f_ zffA)>bkh3-Q5*ZqRb11&{_;OFWsme_Q4De6U-eo&`?-86YTdvm20%=z`{%=-k8s-F8ERq!J2wdAn>uArB<8(@9uQupKXKmAOS{yR{8@k^pK ziWIMlm^5+l8@l)V0Z3J{zm{3U;vN!7t9`dJM_->$cD@8S6H@=<2;EZ{6@00h*gqk6 z+CrIa;?q+9-mNr~Z_XZozxnboQ}RC97n`5M5F#N3MPZb$+!-^@qjDLo@#%c6%SGRE zk|XI-?W021B08q0HtH)8nHNngSxIjtF{uL|tT7&>&DO8A-UpON6#&k_bqIptgM@C@vrk04i>w z%J#!cc55_yJ*B|4Jqu|0QBi1{GkFcG_w$zn>J6Qz)V(T# zA@Jm$hc3~mC;Gi|@2C_l8s0|l#lYPw_ZNzlb3oD7Bnk-M$e^-Fneqw{v`;=N%k01DM6z(sypP7?_~AaOM% zTnzlD4b`#stl7;ETsAg27(qo6v18INU;LYE|;RD3_pt=Z&Zx;|JZp2#65aWZVCZLV!%cwsG5 z2a1_5^n;&VAf%M$ztyy3SJ~Lx+=NB&Wfi>B@Gjy&L4hhOK=io)nPTFqvQn2T1b1vB zf&NyGP1ym|N8il5C~asb(s$h!Tm;dq$n`|?&=1Xv8oPUvh+J})a*2&f)3VuVw{G(K z^8xcjq8hkGC?e<^QxGbRli=wt@Y=i^Q}gf0AQTX+p(^UU|JbW|x>PuwFBNe#o?h`R z%iDUL@H|jH8CYs@beIuQ{>fxSczTj+1d#~>EcRA7@!|Eu94dI;^WSZDJ^B7AVHV_1 zdw_F{i0uj|_FgT_1SJ~hU(QSfxtTb5Q{~TM2vJ1Dp%}XPuu0KyDQE{|=y3`gKAy&+ zAK_WfOQ4$#g4y&4p7zn9a|lkUh(h5uQS>J!mB%9Urz4mQ-ObRVLyg!K-LtOb zEM=#YPc8&vA}n|1YtkOYAg-p;C)#>Bq|#vz93Fs(@E&_*5zrVk*z*nL!8!x3emR*~UX{+blw=D%0F?x*1rV!0 z%xy$aVCE0=k#*2kcnxa9O$v{l3B>3Lv?g=Vx&%xjIBD`Ji$!Ogq;2&;Gvwxz<2B>( zQO)3`HqIBCve7cBdGEIj)NdzaMZW_wiRVIDrHxpRaelxGZoWvvZRH;uZxLm%*@74r zoq`Y61NS-*pNf4(Epf01Y#^FuC_hiQNa%cY0j$|I^m6VhN19F!3&Qr(;V-RX=n6wB z;3#XL=i6-buUL6FQ>Ch(_{iob&2t)OrXx72&K&@&dG^=MY2qm=w%`%B`Bcq9NX03k z^BQ_C5gdI+_n~Eh0yjZ!9o!AG!kH4Q?Y4Y}B9(TNgZ!T|<^$B-+BTP;3o)Aq!5$1% z9w@v=4$_KN1Lh|WZRR$0z&H^0VDHyIUwFw?6`G5DZ-vo(eHB1ScqpMyJE|7<9@7rQ zoUyFj>bJS#6hM_frcaP7_!lS}PeZ<$;Rz;|0`kHm++e2FMU6AJBRC?Bi~(Kbn(0ni zXs&J`Cgh?FT1fdsfW#u-Q!%vEw>%*0NRRG0`&;fb8gyL_EJ!{}n=R%h8LSsziAmb`VKk%H+8zbP703HPn?@iO@6~ptw_TVMCS`H9c+E;$ihV)?? zT(9eiV=}0hP!Z{;=UVe~&t4+LKD-3Mu+jL)YN?hZ4-RKiVmOldd;>sXei-}nG}sL< zg2Ry*^^NJTFJC>uKlxU%(j#dz+y!mN1GdxuELb7Q@LZ2Rm$;^fOP_iJ5?6WTw7EYu zAGe;|LBeV-->Gr84346H!%6*QABqE7Ak4(#IF__A>+oA=^034i#3ab7B`LnL0#V`N zzc^||we=K7zj62f4gfJBkZBKRUR*bpTog7k`Zes!8N^Y2gEwNeG+V-K$ZXxu{&Y?H zdBVkDw%dMA@+0_(jkLAEB&4w6NhqqE2=iB61kYNWM$hiPwVC`VNm=>DQM|g=5fPg? z*a3ct$c4>~q zv^oA3oj!q^sh6geYWgU~q^e)|WR9W|3=ntA~B<%yDda$LLOWY^gA$a;*3u3Y{jB-EoDhom}3V{@1 z`?*f%%gq7m8TgY+xDz9)8{C$XJg}fnXC@YYXP|GCcnS(Q6(iB$-X{l9*V8x#yuaTe{MPI_ zseM;vQ-lWJ53v1V$383#Nc@!uNtm_DU8ugiHP;CCFHVppE+yeMW)QIRm{o9fHejzXb8xdy#;Ia z39w%X&hIH+Sd^z~Ji_5QU<_wPyPWj8>q{h6FTA@r5cq=cN&;Qd+DUd*y)jp+QN+4{ zA8StQAGv1VT|3hYxQ7jcA)){m#imL+ea(a{=HmLI;27{afj3wXFTsDbsm0u=QHvAk zPl`7uero_gmLyj|9E0_Ns*7R?UKG)SV@Lpa`F!j-z2Kg1&qBf6TJ#K^Z}iBMcd|m! z#Ep+O17})*cNi-BbC3pK5XS_jL4ibYUpWb+2HVqG!R{jn+N1Z=S1Zr7KpBJ0k0r+G zlgai{Ak0b4Pu!ora-E^ik8QyP0S_0-{;3a-t8%4oiYme z5S8Qfuv;_r8rho{GgiT%m%!;YSF?}yedT@y^4x{_dY}HSBlEwbO`aYS8M(_Ir5y;< znH1@C za1ube13Pb4l3jlhR~+~V)J|}MI3EEN#$GIaA5z3eg%>rdrnr>;wBd5iFwX(V$Y|{e zvkNa(4Ef+pJa&*CmxYuo&Q)?EABTannxdaT)8Mp|UUY1Ga$CQk-@UvNR&!8U8VRlj ze&hV@#jLJLX@5zIxt~IC_CCH)HC+%Z&3S0l_if}X`ymnK7lc#y)$6)Xm|=bZzz&+# z{u!wNDDrz>h)0~u;zq4?G?BhPG7JM!I3%tOA^~JYkwv3xH}}NB^?^c^CV~`y2><o7r6<8cIX2 zQ(4Jd$8R`xCQENB4EX+qUSw5u)GjCY7Kr^&OvjgF-^cr}-vRf$7L3Y1 z8#z$^1YWMy1-*09o-2wz$2m1&b*!6n6lwx` zMr&Rks$H{q8R(vh=7P}0kxH!`J~LDAl8%{b(k`os2{f(o7n$l79ylyXBuS1eB)cuX z2jL>alZoZ*t%eI$;e!W9xS$gm_Gk#=sGbO|>tz;h&^}8{LPGRf5soy4irAX9*W}dP z$^lvDZp9~{7>%|3=2Hqir<(lnLO?FEBeX)$2^Z9itv=AzF@28L?|S(t-=s<`()GRS z?6S<}Ro;NE#EI~eKivA_FR(Y)eWT3=W6ur!vun7LiAlWtN49KZz}r7IZVjL8uMidP z7YDQ1tA2Bv>mpGD273`$TA2lMI>Pjgq@<|CwUP+pvgHbI>6$%S3LSX7f{96^g2|{B zT=>)4Dt&JSthME14@sM8uX@X%53)B28)&@|yD=}auH@*!Wh(uRx3PJpc%VXgvp;o9 zW~PE{;irGr%@Y2%+Vcxkt3dl|`);)HxOU%Ck~Hew-F)i5X;@lXbj<7At3`H{##@B% z`pcxPg)+@4CxyuWY7XCQ7Y-6mfv16s8lS#~$Ij$r2};)WRn8%Q`F$1oe(bD%3|Yg& zw^w%|GA2gw^=Q=Ae4ha+*^Z-F1xfj@C{Z1%h$!jU@OMEO@rv+POQA)Rc!i5j&Znz2 zIqtWRQQ-^tv*bH;_vxOU64J5pmUs>lrF%;!FKVkmd;6NbZ5W3|4s$zN3-kc91iZm3sJ;y{I0Xo|7y4` zRmQ-xKtZ!$GAd%UdS&ZR3buKtNc3?XB(Bs-gPvo$Nqi!|$dn-mv+Ha)F4G%uuC6ra z{epr>dm*{4vHe>k9zqBHr`9viB3$vP_6=?nGGzBz-Q8H)r8l>3|9hY-iO+MvBN)55 z!_0F$l}A)RJoX`3?B5P=TU&pwz5$?8V!GJiKY0o}z!{re*M8oPR1lPQn|oAJLaX;F zx9X6^d@Jf3uz0aM;MuzNhb-Xbx9g~l{Jap4RP|aC>A2%dvH~|YIG!MdHEQ+i;9u_Q z^BfdJe#pA?-&hoQLnT+Xq6NUyJW$8;siL-R^l+)u82tK*7PEM}P@)>SVT>0~`iUi{ zTP>gYaan8!%KUVwy63}qdZfL@me=@=JLX{shR;5XathTew~}2EfAPB9tmxuFUO}jg z`ntvDDgU*c4wXygq5th~bH&5$&m6HaE#E3K;oE$E?xe+2FN z2HbsS`O}`*r5@ePE+n#a{BaO%)M~zo{ubKBzDSV?M{RGJ)9k-gtWPoe1-TW z;h0{_3azUvMoJPRTE*HJ(&4GA>+4Sb?PAL9w-x38``LzF&1_O#l$Bp=P>8?P9LVXn z>vHX`j#P-Te}1P~tFf|gU^LAn8*%jnT2ya;?Ay&wry?(|zE6ziSP&@EbR@;I9;XmaOMK zeypuCs2eF=c~mj=sifjt*UcS#twF7y0C?Pgfqe<@G^@GaxJSjl1sYZZyPD|S z^r@%O{NF5($Gw`hOBZ4~$CY+y)>Z~ZM+aE#XFf^jxktvDQ7HEoRvR_jVGaf<5i$Q7 zyo@~Ukxe04EgRSP4vsc<)J=A2*C{W8sy+s4oU5gv*p*SQK09V`Qh36X`R-FN9D?n?13n(($eIUUnnruaqOfv$nZb>F!|Ry7^bqd z+72$oI_M}jN=RByeW(32i?k~TKPb+v}Yt(&o)caRUKa|8i zL5g&ja!JR)y-?2T%El-LJW8FhmQ@O}W)l8cfz zWkwWVb1GlobRP0t@wVw+pgpMN;5oO$+1MSRf5)xnav<&m(uWR~yeYnR@?vCEY%f{t z)*sl_tKJf)O>j0jP9s+P~ps*2OQ=0|?T&sWUF&ap>!yqBR8a5CUWC7?I~iFCV3 z?F$e8+Fx55%g||>vem;N*&FMj^ZrcFH3lNb^FNwjEyptu*VV0|u%>}ytlG$*p2V$% zn%xI>q7Nt4&IfNnpp5mF;#NNgY)xf*r>(tnO{+!UaOfyn^)g5uqJj67k$e7Hns3C& zp_Q)J*QdCPD#)*bN?p1ic+~apc^H20K+rXCqDp1_AnVF+CmZm?Eb!9>7!2dUf`Gvc x`Qc13*b}`#@Y}6y`slZ+lFxGIgH!oxPVo{;_^K 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 delta 14904 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 Uo)}=90r1ZWy;HhHI_Dz(2Pgi=`v3p{ diff --git a/test/goldens/circle/circle_026.png b/test/goldens/circle/circle_026.png new file mode 100644 index 0000000000000000000000000000000000000000..e187633ab84e5ddf256cd45bb498c22e8c5055e5 GIT binary patch literal 34463 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 CFUJi4 literal 0 HcmV?d00001 diff --git a/test/goldens/circle/circle_028.png b/test/goldens/circle/circle_028.png new file mode 100644 index 0000000000000000000000000000000000000000..9a70ce69a1fe2538ff8c6ab15d574548ab90958d GIT binary patch literal 16745 zcmeIaX*^YJ8$P^DnG%sXZ8DUE%ppT6V<=^tDf1A*HqT`!ndg+D3}xELY#WMDWMj*a zSz_D9Oqs%at?v7N?wfh zzBuNHdcNh2-QQnCi?C3*!RN)~p_@{olFL|~qZP<<&ixI%Os zq;&8#m@5drP#h&91sBCT6rAv1iLXHL-E=I(6yOr{mQE2|Akr|17+g3n{O{5KndyHn z@xRDnpv6E?af+8Hvj?T^mFyp}vz3?QQO!*%ZXPYVO@W3hI$yq(>{iBCUslg4IZ)DI zwA#-v49IWCE+FOn`%5;T@^gGYP>W9-O#G2%(Y0+xVq#5D6yBf@EF}$K!%!bbvv%-r@Df zY{HI}+<%WWtfEHdKXRzITNjX|r2<9fUMa;OyPem4c^!&RNiZkCWitXP`Ac)6QfLYU3h7JbPG?D?0a4Od<|_2L%- zv&spW79n1oxpD-%otxoshKP(PXVf?J#7<3yo~gf%tkC`g^YiHHlkkqLf+`rK<)Qn1 zl0gDRNKK5vq{lq;w!1YPO6x{4btS&aS@v|`h?|TC9Z?W_TeSwHAD;b#Xut80EJ?>` zhsTjbAU!6EpD=r>`hKIV!-=MM*!E`)r>^pu^|!5>-K^TsUvIn!T_v56B)UU`raEQI z&ad6kn(Hr}-LkLzP)#Ctebu9i)+ymgQ=Z5J3aE$`RA1!O!hx_GCYz=;5<@7HUdk96 zdzKU?X77WaUMeDuEAN!L=GDdwp<{SaoW%M{W=$n~O+`(jhhfac!?(4scbv(=P$_R6 zWuf623v{m79Ym+u0h7Jo>88Kx1Zm9u6&nT^cp>P0DvlUQMzQ7Qo#cuN0SAPGo=u-1yO;SCdB@40&#BB@i7kNMZ-rHub-0?oA*iOpB-AIc~ zz1GaAGwxm1y$O%2<(|*`93Ey;VopG|>;PEAd4879qTR!96n}16Gxs}RRbJy#VzTt1 zCOu|kUAdv`2MfkW_DjyI7e)#N<$I<#`S%ouW+25mmUqN-29ZYY(Wx#fN2KybZ()4P zaf-O5VA9oLU9k(vWYDp|esa!umg@PF%INjD7!3Er@V%&G8>}-7OJh4;vXNFqk7S4` zf>iI07L5iqxT-jF+-^+cML(RjHDrefR&lGglf|Od3C-HUe2Pn*0RpgWfnI;CD4xm6VVefw4*nRok zu{W-k_s{Y#ElLb$CMdfq?{~@~Oi~qiYMnlOJ!qE@`QBTqK@^nym0pI9=w^KgmRc{p zP->Y8OS_3FE7Y`OmcPy%9wX(;+bnG5Ldh`~fKr4|=}B<{%_=sJSv|Y_EYyb++_jgM zv22X=OWu~HNgxiIRhfd&*C3)E-GiJ}qutwIU6j!>H#!oiC_VAh2VB`4PnQiZniVF+ zozGYx>v078aGH~fTc4M4ss~ey;LBr z;Lz(UPu{CCaqBB?Ws?wRO-Bu1*_D=6-=4dnraiBr>YFT!z?3ULK2~@CRLGR(o_OP- zIJW^*M@&SjsA9xgt8_B#^i}sR}nug~FYn0{KyLZN;{%)rOjU8W039evQF2s{% zO}jjzQ*7V$+8;Te=2;qYW`+TWF6#AXj||gsqRnAn@e}XsDMs|`cl%Z>{M>_WKM;D1 zA}IQn&Sizci)vsxBHUKyPWWl`gI-5zyR$O^g7zgQ#e+W_RZ!M=TFdE6RZ!MC07a-o zP&+;ZYUO?&DAjl;(;CHIJ{%`fXY+RMNBvFb$k6plw($yWypx<31yPR+z>zX-Ap3>? z#Cw@nUulh$6|Jdk=U}bR)@DHCDUV*sNJ(ubJK`=KTYBLd0|VUITjF8j&S8U)6kT{Jk4Fm;0^mWwO;sc z)Uhp%hic5KA5L|}Y5EwB9$w@EMxDe+2UY!eeRyFi`=Ph8I*T1Amt!{z$0v>InJB8x zbXsE7^`em2$H6gSCR9*8cVjk*tx?P_?LtXH(=~WL%h>kc{MzIqK7VZB1D_n@kAN^b z;;dp9a#BU3-Lc)n7iVyX7DHBd(#_kV^l5la@D_nuY#&*9k5c0=pIzLKG?i_*Y{VBR zx2OY63T``GgBsThS<+Po)#ELTx6;c9A*t&Gu=%YuR_o}!oM@eZoMXWCH zgRM$fSz)OoNK7R({*sHL(4;$Tz^R*ucjcb$J}vEhE7Kaujv0QQ?9`3Hw%=Et&tC6k z3iD9-WG)j_1xhPjUD6=Br#3!=n*C4Tr4)Kz&1l+A+#>{bTS>y6mQYxx(kw)>a6)W3 ze@xJh5G|h_SG4fp+t+3GqdVCR?>z(3EJ7hAfC=c>gr0jg{^qS9=J~tH7%C7#c_g;v zeuLz65l`wuzxTfTGrto4<(^Sxg+Hq3mDoNS0cTdcx|)tqoK!zIXK~<3f#5jrG@9BU z9oZ{KqFjxS^07e4%UqKr5PqUpI@+l3rVw*J*j}dPya8f3_V9Uf{Ljh0$L7lOQ5r_R zIUpr^Zqz<}sK$hq#SSPnVaI%)(-Cvt2UZH+&23`<=Ct}IgV?D-xyAHO1!R->EANn| z$7oen_H@5cf`WnjQhaJ(m_YJZN-T<&9?OUmb=hj}e-QvmBkm54jQ)*^4f}XS40z`a z_?_F+Z8kNo<1b)XAs!oBWfOU9Hg{xAIdld~PL#9mBFLc_3+!s>1YF!A-|QIXXwkzs z%(}}h^}6yqC`-lRL`n4e<+ZtUS1^cKZ&N6kGYGQHkEhyAY&`D4svn-}(m8WQ&CaHz z_u#pByx9D!_1?-nr+p?3!XMc;SN>+;b@iMUuwSv!wajQxFvc*KhX*VYv(|h2!+iP{ zA40a$z~z#6z)Z#C#+kuevs2@AGAcxPmp-yBb*W>@o$xKdO*X@%mMjpYiW&f-R*?E4 z(gkMJLPIKqZBU1?z0r{ie)sX*GCoy@^m|}EfNN(Fz=rkxSh$-KED^yfpAHfPe%FJ_L?24DACbL*bGvKN?TWVm(Cc03`iEh|xj~I* zhkU@7QCwi2c|M;5Q+*K}eAb{w8sTsp{>t12gJd6D$D}CNR8X+%Gms!?KqQ&KbFc#? z%U|M$Du~o5`iw+vRm>aZEyoKWQgbgcUk}>GYM0XzXXS$}NHe!uX?e0*hU5P)&L~iH z2dun&HGw!NZ`*HQV9_6yTH|7Ylof?B%UFigd{pnwTO&uojfI(K2N&SUQi92{djK?m z@1qSdIfCT3&Ka+%s8o^p?2J;$l)ad0IdyVna&{^Zt&@ECoTSDDxQo=H=aOEt5K*D! zfBGP;@x-?-)MaS&BK+dD_NeX)KK)#mxUIe}hZg=_=`CrC+6I&q^l(I@7r>3~0{L0a zZHI#(^3Qqww{%E>EVS7ZE{i=j83xjS(Fpfu(^P-qu{+KW&rV_q$n${u^TaItLL4p~8S zbnyGu24@rQrUW@WV&!K@sLIO)5Vv|J=SAY4L>rneC)W|UH9dr)0IOdBZms_-P6z3v zoIcsBw9RD@Wy6qBLQ-3>f5odZa9cSa=VQ!9jsk-cLj+58l z+>fT~a^6-Q;)UiQF#5{eYyY6J7)gu&;!7b8dy|r;?}_i5{JL>#UpT~s7(EH5=_zas z-Y7FFOv7iw$>p2HVLbd3b2kOb>H=Y3UkuPUpb#LPbpF?jM!FOP=D7go>1Bjc7!Ln0 zsZ8-%?Zpiv_>EEEjmCY~#+0_QHQz@X2_e+gWqqT5;B(@h-&9Dat;h#}>9guMy$35a zd;)B)gg^RVrc~qY8`P(U`|erYbK^8Hzaj;<)}}}W@WRZSAK0?G=Cu(@Xg{O0^HKeO z%VfclQot|kI3e_7h;T$jHTtLWq z>(Qb9*$R~JxVt>yr3i3G>Xf5rXIm{d>7+fdqTWtRn{&8{(l=f?X2~DtJ>@-YqUen; zs)WllO-+QF5C=&DRq}q)nTAX%Ovs1-^s>8}2a0DRoc%7q%U}h|7~F5zXXTGOhKc;3 z?xiEowba2jR{hSF$0l*j_yUnkKk$i`5D2XV5q+<7mI{zuq(2RE%=PQTY01mySjLhQ z!gQ7gSujdcHA9DmzwG_KMF>*d^OAN+ZAzlJJX#}C$ibTJdn8iw)flyY2rcRfjZ}k? z48nsE8YWY4fMR(7bU!cLrlJ)4ALX-|yzaUr!Ona#`)&$Rmge`qBaj+y`bW#%6gvL@ zz;vbS!OP-i)*Qqbxgssf_qv9F}kC8n`SdlcS-sL z@N}iCKucLHVMEYjLePw2PK)+#hIMi)GKdz|{1_~G7WIB61%?#jiU>D>g1$%kcmkIj zRQG}X<0I>s*d6iMMEX171OTOG}+VLdqcSp1X-z2z80s(Tj^7CixPHh5s$vMd z4=45zU5rvXLPEc2ahDylDh0wev{RQ5?uP7>uyf*Hv>$k7iZN1P@;DAD0dR2o(SFRV z0T{)iL#`4dwQ%ehA0@&zI6rN}-hfTepy5U$6FZt37kB;glf0}*D_YV=Y+%io7X!t^ z;}-nBP2;-c01=J~6LX>sA(ItPNcv_pxZ~x4oxiRogRz|%DHXto9DX|t8Fx514JJt% zxe}*HD%ZQM2+VM)TlHzp$j(JjwQJ1SuGc9lO_Ov<-b#q>R_pFEh)T-IPfJ?*{+(;p zfb=ROFw29X!y1u{IC^C^Rn-wOW%700@_A-#uU})5edB`P^VDh?lXz@Ov3=rzm?~S)>%I{PtocY6d{jxqrxZB-(x8(PnUyVVc(1#f%k37#yeXgIn zBSMajQynI&;L%MZY0-;`i5@@dzKZ||s9iI`9hhanhCJ7wyBdLdW9wdU*5tK*mvH{{ zmi%~RHxH)|5U<`}aBB!4r20!GqFK(Av0X=(&f59=CzrSzasi z5L)pGOU*j{I4#DpxOe%6Tk@5@a&FeQ;K%~1~y5(;!xVF>hP9G%UFx-u#-3 zjDv23jqubN!;dv4IUe!TUSM@hI%bMPGC zNXN@2X}|=H9%(cvSEtU4x}MwOqhm6Rs69Yv4lFH=>WCnKExGqJUcX zS~aHyoh6uK;WYJAF%!__M31S5|B8t@*X^3ycNgb5cyX6nsjrfPoeH|?dv=jtsT#L4 zli235jbT>Dd9~UHBhV!dpHF>#cOMqg6-hrifFiGyvNjs` z&R-g!%{w{(2-8bUEcq2hf>0_t7im&Vm8q*J4hu4ssV-7-phAbPHyGGmc21?ygUbe|V~UcO!? z*}m_KvKhMe2kk?j5EJsdr=|gD5lo}hT&GS7UU0vLpWaxzg{k+b^cW>3dKnCelmIU* zW&J^()NAGF+R!~zCCRxqDZd}%lcw%4+iXwH@cWvAmTv=0R@Msr|fsb%Es6(Bfkjo-lPMA)T1`7p=t0~YlnF%%)?nM8&d4GzRZ>F>aAwJ3nfR=Wp%a-_ zE((iBua_yDiTXC@m$d^jxKz%s48HkwEz~XgXjR(-DLM~IfT6%sZ=bl|`gy;^WM&%3 zdUpUSh1nGGOqjS~ymCrQdoGoQo?sFH97I77>_(AE*!I8kHUZQYzlAn*n}CpC{f+oG z0VMTisQ^h37N|BoB03pB#}h7g5E2LN@?YNq;4_9fu7mPm_;MD6ds129YJ_fRnE+%< z1%PT5v)FQ8`)mc~exsBCjm=d&iKfj=#&CnN`>$k;l83Uqf!m+>T&Q!2(Svazc_YV9 zX*fX)sEW3n1Y*iBBwe#czNnd`ZE;JAZ1kkD^{bj$! zKY;VunIDP(4hz&9CTFC(F=M+^YC-T61N_|MVctd-)dl2ziTI>29UVU9ZN+uXft)9d zgxkGQCYt>$7~&u#=y2J}x=gnfd038O+h@f=>c_T5pipi0_bvk%VMXwRU~MFbVy?HI zse*S=6fIy4B0P#8MC*8wcq~d|4tT)G?XD=3^mCw8o0P9nB3`gn;CUTkMlIL|%ih)V zgi?(fq2Jt>d^d895=a%+Wv)+VQVPLl?|2XHq?%A+MDK~%z)2FC1EN%V_0Qq{-(2{^ zDch>2X}asGhGyXv&?xn}c;U#Z7zZ7~eHKiQvukF>HGWoSX}q zhjfh`UUi>?is2xv( zC7SG4Q}o=tE`J8qQjGTR=o=LrvKVZ=UJNum^Kp=Hg41KLH%h`l7zTj~^JvcTx*b;| z?{@_$Yvb*q->|qB8OW4>C*FQmANE^1=NHdGq`@nPidPpa+OO=mF?6QKn1I%(Bumt{ zNSzF7KE?6|;LT}eyS??YqWb2G1r{eid;Y6%-V+l(vWo|r%40R7KAZ_z_J}L)M#nxI zP)w>mrfvMJM-|Mqq4^w~7CZ1gciJb9P{7~SaGrh;V5ZYyhp3cT%??hhh=`WFD% z1P^)i+Gl9aMz_$=amox45uN@z8zjRiG97)?>3Z!ek1cD^!N`G2t(2~th2E9isQJpsuI{w^mbAV0M0z^(sKGCKsEG-91490V^Ke znY%|OdkW66?Wv`PWv*(2R$5F9H= zIS%+C7|dH@SRLmF|H9;KOWkTfA36xxlUpNC%e|YcW5QOVdgcl8RRr*|pY+;G9uKVp zC5ddEBkvF$7ajfPyhcbhx~R~DZ$nGwjtwyaA2b4pB^d_TPk0GBp=E_mxW#ThXekQD zzVhq)d4B1z_y#IuWnqIs_4;uekb!57KsGaVnVSA1E+(73_3Q?07=o~H?cgc=l2;#+ z^iKd{#%6TiLQhyIJO+m4J=a%wHYu6ICaf64*BE~~R1Evhb>g0khSpEIxh50|LOD?G>SV@4U%C19+JvE%kFSsW8SH9q&g>8b~o}DV|{|5Jq|{* zE8uI;cTJD!<0ZIu6^sHUyLe#zDQQ-D842;#Pd+~se^+{8umV6+s9q;%?F_BOU0(J> z3I9+CvV93|?yL3lhs%DQp< zL!*Q9Ge$oy8mlj-APiWF%8}l&p+o2;5SXs^Y+8dcerrFdk*HONXn_Ec)J@2EmXMKI z&1Mvv=YVW<7ry%fQ+7ynl>wNWw4v|Rqklxml=JzX>qw{izi~OYUhi8lFO#2_h^~IF zv@VhRryl$dK;G3sFMs;sJ}qY*jI0~He+>T~6i%J&jPy=CPoM|ZtHrnN08n}CU5Mzy z45DX~Suhdwz-)7%3?6r%S*-kT(q01N0`B8ib_+cQiHzZ>)9~%)&{CWpB)C|@D*eSqJy}Bj#aA{x!$_!Xa z4MxDM_gC92n6ErO&jI)4nq9?4+fYAodW@=X)@o9z#vgi*3;5XOJqIg~Hvn1!=|+hG z7cAWEP3vw{8Ro1X_f|N**Y~eG9}jEPU6j=TK`Wt~V0yk5+fIl_)y|p%aDUtp#NeNN z4X8+vm5{&uB7KjQsi1~-SG|j6>1|rf>57M$^qCS65T|))u!jaiyjdF82XgTE+*{W? zE$_dX%^2P!_$lH@#xuiV84@G_&Rd!NwNGAwE}qHc?`b`Ne=(v*=t!aPS%GL;VnCzx z2c))AfP#JOzql$<{Kj-xHw$!(h%|`D&UW{S;pBOVfe#&m$!2KvZfryEPHOIYu)ua> z33-EXsL7EaNg(BXulv}k00b;l>eDoopO%jk*1m{Gv%l!PBW?Xh>@fHM0P0Z&D>1FU zn?ZK7DB3w!y#;`~Pfe@C{iF02dR~RJt&K1S9;N__@WL+s;2|G#0cbHDyHTWZ<_V}8 z*VWQq8}zH4s!8_I4ezqJt4EX-1pu(I6#+L0Dx+i3?Q~xfn<{%(KI9mc}gObT0YNDq)ZVl(8fc^S)Qw?7oXYA-)|L^L?H5r6H zSselz2ix&hqSaoQkn|DsLWAiv`*WBz(CaRBJSJ#^BzBbiegB93%yR)ip$E#Tv%~bZ zN{bK?mrvz+If?bQxOX~ozz6sP#`n75b+&_ukJziJ%UJsWT))G%?tmT`G^WHZ;`yUhqp>^ z7KaCO611FQ>J-+?wZV_i`F+Ceyk*MGN`>VY%C?URoO;hML=tT&M{<|KRyA)hm zptqT|l?(LG9wM*=B=5nz4R|Fei}|?w=`jrJ&h;J=)$fNG2bQlKG|>P>mE!?uFzJTn zHGL3LP2mUS9S~OcJRZ%@Me{tgMOW%2RlxKL0JAF^4qHET15rl#4~ea25bb5pys#>= zegmE)C$LFjvY=evA1-qLVF!&}1&^GV!=|}f-E9|7`Jhb}^rhBLJ!l{V46W%Ab*Lfu zz0Y1{tysMJo6z$Zref2xY9I@lkGWq9s$BCoi+QiW0wiJ?@U`>XwA9@qCbOLhxD$V4 zJ-3XEFto@%m5rmooI}0Y65e0wh#0#7Iat_NvIVY?p=#eJ)aC_tx$R*cG+y*a)n_Q_MMA5C+ipR11HsIbpjt*SV^H*cK|*}TL|=8~B+Y^{`k;xj zaM}&Y+<|-ooamwcCGt{Ju*8LCB_A8F;?o?@%48%hHd_n|%c+rK5@o1p_U5nBLF^#t zOP$W=R5yVfeCXCY|Iw}x{HZnKc7fXp$wE7P3m_Z6ZYiO*BKY0{zG^={k6UZ@uAOQt zVVXzI94Rroy9CC&pAB<|EJlqvJ#(&xeLv@pd3NSv)ANQ66?d$Pjg(VzQUQ@yZgAnx zyr90OcT+zXDVSmQm=~3`x9Uj#md1js!T;0eoLlQig*2eUR-_fx?jiIJG!umLXE9o; zF0~BJWT>JePw-G0kUS>CtTbW>KWm*sO_XyCYUxA_%4Ou8-Cf7$XUGb_IEdF4yKBtN z)alxNjIxjzKcN#Og=tu0fgc8*l*R918lYOzCCYp%86ZBRQXh|jdEW$pPYW01XeTua zggljI2_cgl?}5?#w^iWKPJw&-R3J6yl^@ELn3H`nTeiNA9DB1G|_*u5JgVW?xB$Gz@qp?DI#ac|o z8Bfc0r=IrVr+|1Qu8gpL{ zOa;ruhK95EmI{TO|D0Q!Tj{COWAe39`q(jITevZvXMxCZ_gi4XwhI82<&{lw!0n2< z8y*-=solzj19mRUvb(zL(nywTi~f);FL)qXH7Ul0w}EUP=~H~q-48pDI8zMJR@Xq< zo{jMr%BN;;q)y)J@gCZPdenha3YJ@ay(QzhdV9zUMJAB1pCXi4to6x=BfSdr3rq@L z6S8$0-7ni%i8PGfpVmhyy}VnxOYDn)3?snS<$9zCX8x)wy{kn@LdYVmPe7>DzHX#h zv2C`Hq`kqEvY3`K(i=RlyRWsF848pNAy_xj$&)V(hMWD$D$mSZsqx)ihH}!5?$+<@ z>pZ4q5rY;pb*JDRXjuxm&4yB{`(m@S_XSMY6`pX)IYi%kR%Mxi1(<9qh&XO$o+)k< zcz3X)(Rdqe#JHf7@1%Ps2$f4-(9}Lo9;65oC8>Gm`&TuzZ1?5E!xV1JL{+mCq^J!`y7`Kb z)^FQ8w!OU^(%(tFw9e32iDuA28zrIVLMpUF^^3h6wF19!SQ1VuPJ--BY%^azEcwIC zjelQL9dtzQ)~<_8DXC%(*w=VDp8 zP$?tfytz@-f2$8^!#uJT?lWQPeu*;~m>8ts!-&ny{vFLs*vYEVliI@UV6~)&&GZuzEJ5nt|+$S27 zI%t5B1yqlxtc3`yLBkuCpSLgzl{m_L<6g@AJ(SXLKZrXnKZt?@JUR!;&Fe3{b7P#Z zcL5uuwJAQh+dTh8dh3ec8GC(ZC8l}Ys16==|K+zUl@mP=Pmy0H3W)(8DtJ^gP(*YP z=l@3pHShG5BNfgWnw-U$#A({546vfD0H(XC+TqHhq}xRrAm^W% zEsoYQib^gL()}#KtHdXX5lJ^XN zogW_V*2wO#i8%~7R0)E0 zqh_5btHFKT(+!I2`^en)$^o!?iojg#pf%imPfG~9T$tga@wA&eoQGf$$C1cp%ei%qK3dT)Ool6=Sbew9y zm>Edtnzh6O&L5}17DoeBq^E3{aA(T=iVWt?=BJ{5Prjmz%or>PjTti+5&uRf-Bs3h zLz-hpiRVz4TBx(K9iMI|7UUkjCKw_5?l_!|-+W>WWc+;ck(C(~mZNN%EdAKo*_z%3l+4l&LiW-|ABR>_+e61fC!jo>%UM zQx@9bU%KP7S=o>U=Rqw_o;zvMd1sSsKmW&f9Agj~u%sTw>;6cLSwJ-(){j5dm#Y!z z*#M3q1XuiizP5FLvFLHR)Tc3N{;zt~T1;2FcM4Ike`N0zR7VA3LGO#`D*xv5pR36V z{YKR|2P+sr9bP14jHFvF&WHU`xZ-GC0m%!%teVQrRkmj^K;qQk(LuPB?-57@y?Hy; z&kev0Oonx&%Bx~!4P?qWbJX0CodGgTQtO6mOO(a6G6qp&Z*@3jexp*<13Y3*9TcN6 z{6yiGUNh%;)#OTCYefHJ>B1FFLpc#giJOkYDdFe>>bhCGy~k2Z+*9dA zMy;sFo_6rEU}l9-$#M9q>I9Y4M&)b@pwW11pq@S@GsW1G2@Gz&mKEXF9g{=H%hqjtyv9&YU_VRM4FMdVu zZ(%NjV7xH#S1>NV)KaaNd=>LF9Ch(PAAH83cn9qKqeMV9Xfo@(HM=*p28*;9iyIXj zH@B?{^*RKF=u667yV-;XiX${|N@E_aI&~|1K3TiI0REbU(|}S?k!n~xK!%us#?`)l zGzL8=UUp&Id+USZ^-IeR2M0gn*)agng@Rxu%#g{8w%mzKyr6T=`ZIfqs7Q9=;8W(l za8PgKw#f}d1KBlHB47&C3fj(e1_HuXN!I97oo_(DP;;X31jT-5NfXDK9p6(JMjf@jz}vpN@91? z&Pf+>B7^k6C;pEhVXYMt*QnBeiMfZ$U!f1GP7b{n6_*FNuO(Cxi)40A#id`p89>)-RQ zTwJfp3as9C-t21Aw&PEx!aV-~UM*^!_(bDr>dj^&l`}b}{c&yCK4*WZW#DK)D3ch5QW2j))8@GPv(d&eSWxa3^2$5RtESaOl8fy5JAmE|6{5fT2u`_ZvL8(;q8 z02X~?pqaP+VcCy9AO0$-MV-?vwma@cGfxO|BH7FHMEOdE$n`ymInmYR5Di(1qtz0B4Q2Lcne!`8x93*g%M z*Xb`C?$~-UVinK7ZJvX62 zhfQw9-`~)mMkngtBsbSK+jI~hx)Q(Jm9zZFY=18Z_|40pKTj!}4v|6N_vqOF4lx6M z1b)H5w&3^w<5};?L+7UGU%PN*$Ee#}&wvzqtE>n?K~eBb*onX)b4g-wru-f$DFh8s zfWzjc$H7$ZaC1WchuwG>z=sD*-h=;Nfd4x!!1rZi>DVWOhb6!aklHn^t7xS=5B?v> CFUJi4 literal 0 HcmV?d00001 diff --git a/test/goldens/circle/circle_029.png b/test/goldens/circle/circle_029.png new file mode 100644 index 0000000000000000000000000000000000000000..9a70ce69a1fe2538ff8c6ab15d574548ab90958d GIT binary patch literal 16745 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 CFUJi4 literal 0 HcmV?d00001 diff --git a/test/goldens/circle/circle_030.png b/test/goldens/circle/circle_030.png new file mode 100644 index 0000000000000000000000000000000000000000..0384e513b1df4ed245e2c3aca0ec22dea0a88dfa GIT binary patch literal 4117 zcmeHK{a4ym7{B0ab51*}vE>Vzt^Lq^NzTT|*PNSqJc2oo+F1zgOx;pp3+F^pnI4b1 zr5?|+`uYNOI?HN~nXLJOh`F3Kzk<#X6!49dlpz_4B3~h>+~3d-++Xf? zoLiehOz_z)O@E|8`n&t4^8R(B^W4z0f{+`Na!vHR#mZl*&ZR;kf+mlmIgHMbB-Q3MT|b zE-XkXclAKLoWDOac=**?)wf?}4w#!Bgar>*W8dBQl&Di~hRJ@6WO7@N>6wi1Ev5wW z^YQWFdd5D3A)H~p%8ORA_Vi8?4#)56`s+?>3&dP%%E&1wC^&~3HuW>Nc%}*RT&sST zIil<}N}=gD>0CmDh-Gdwna)=*9+Yhhykx!sucoYwfYNnQ_P+DU4Hpw zoz=K4ER|_yg<8WSx{k{oFz)!4S*x@U0>S770~P|E_aaLa_ZYvg*I0w1Ez+H2ytr`$ z%SoUMPAK=YvtNq^nSU&+1j{Q`Ta@*661KmBHY?2Yz@w?tFL;APC5vlFh%dX z%IPulf|c&<>|^#@jdWHNgrb_g1Hkb@%?#(FD_eJ(4LarZmt5Hec4=JEE_odX^08=V zc6I&kl4|eBxPd-!qFu}tEviXvF)laC zv*36H3O$(ZXM;vS7Dqo99{gw(G1*1N#;(`U7|1+(S5}Immi85{Jbk9Ve-k7W!ikmsL~qFmueVgl3<49`T_B2 zEd?rjgA2oOZ4w@CMT)abn-c`4@$0-D*78Hz+K0J-=VHTwd8=?P$ne{ZGX6;)9Ak~! zpr;V<<}EQYZ?0L+9U;LUbYDSv61wvx7J{;&?$b9CSXBL-S}i)?QfC)^ZK^9c@L3~3 zQNP-Z>W0s`@sRGLBtJP`TS}WAssoutcBgY9x8>P-7Hf7UAHMB|RXpGD-4pmvU97L@GH!RIG1c&}1W&o=08%2Pnq9+WDt2$@-%JuysFWblRp*01AL` zv@-y|xO)Q-5EScBIvnCi21g+{I)kGtIvByhh7LA#u%Uwu|2J%iyiBaUOwR6T?67_9 NLE;%=JTHz~`8O~}zmNa` literal 0 HcmV?d00001 diff --git a/test/goldens/oval/oval_0001.png b/test/goldens/oval/oval_0001.png new file mode 100644 index 0000000000000000000000000000000000000000..03b734f0385b573dc6c96e6a9dbfbfa161c432e4 GIT binary patch literal 10778 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 Z73QgAqf3KlyWtRpbhY#~(=@F7{|9Tmi(UW# literal 0 HcmV?d00001 diff --git a/test/goldens/oval/oval_014.png b/test/goldens/oval/oval_014.png index b07423a64263349e1efc94cb85435f0d37fd58b1..1cbced0b237d1fbaeaff57f64dc431c1a83b5335 100644 GIT binary patch literal 30394 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 rDzu0m<1 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 S;A^<$ju; literal 22557 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 bhE{K8`^WB^M}KDkkOm!hJLO7oxp?a@((nh5 diff --git a/test/goldens/oval/oval_019.png b/test/goldens/oval/oval_019.png index 16a41d6271593827d5dd1bc2a4ba3b7b8761b258..dacabfbe708722828968aa796bf57df66724c817 100644 GIT binary patch literal 12272 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 literal 17308 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 diff --git a/test/goldens/oval/oval_024.png b/test/goldens/oval/oval_024.png index 8599f0c54a7a3806d3a19d2113fee366f67444d4..5a2047cd742e7a450dd2d36363c81af27d9ac49a 100644 GIT binary patch literal 13176 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 literal 10957 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 literal 0 HcmV?d00001 diff --git a/test/goldens/oval/oval_026.png b/test/goldens/oval/oval_026.png new file mode 100644 index 0000000000000000000000000000000000000000..59a26ccc2c27de354f5c7f0b08cd9273a1c28af4 GIT binary patch literal 36967 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 literal 0 HcmV?d00001 diff --git a/test/goldens/oval/oval_027.png b/test/goldens/oval/oval_027.png new file mode 100644 index 0000000000000000000000000000000000000000..9eb8ec6004db994631544a59b24ae1bf96a89bf2 GIT binary patch literal 10160 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 literal 0 HcmV?d00001 diff --git a/test/goldens/oval/oval_028.png b/test/goldens/oval/oval_028.png new file mode 100644 index 0000000000000000000000000000000000000000..d4097375aea623838fc7e6aa79869d1afc33d360 GIT binary patch literal 6853 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 literal 0 HcmV?d00001 diff --git a/test/goldens/oval/oval_029.png b/test/goldens/oval/oval_029.png new file mode 100644 index 0000000000000000000000000000000000000000..1c60332b21ef87cdf36748a9af62e42e9e84beb0 GIT binary patch literal 13834 zcmYj&c|6qX_xO8;GObJ$*#=W_D@55DlVpmDN~wfybQK{&jKOqM*+)eZGKG*WS<-^K zVWecqE~%j`SsLqDX8g{3^!dJi{nOjCoagM%Ip;YOW_5_NW~KB>1VPs9-)DLRL4*_# z1bYIv97gW@{(A}j!(2W>F+uV^$qvFF!k10G0FXb z?K3?c^J_jVE0s`JKvpR3omD!Od*U=Un@a^7T9j)c=^xStKd`qs3xW&qiiPBv~d+@L6%gO)77752IY=|gJ{%lNN zCK*wd^daEW1Zix3cHtcUgOTwq^`~=l{we(za`N&@u$e`TthH(KS63IC{XBbtonJjW zD00?qI^~P(l$6x+w0jq>Uv3L>oBS`;^Zel3d*us+M+N1&zZ2f~bOwCg zXM}BVUW385D3i~(u@4$c=YI;?v_+J!?D=8R)UxN7j77ZTY_V}zqWZ$Ak7fMCWe4}Q ztPsm2VX#^XePMos-|8#hc8yh(JUd(zkzMCE@`J+u?Yg+VIzDCKgR|8dtnd>{ zI(ZFF%y&HMTCnl4IPre_2G{2f_5NzO2Gc}b> zuGm@KGuy>k=yr&T*g2CSFG9!Q6_E99(g_hquh6!llb+uEPtCnw&g?Wj)Xm8{AN4UE zR*}SEl`jf!HZdiN$RgdN#s2~|&6?$NUIXOhb2_v5ivyJ5Y_@hz5>*RSyR|D~NUGxYn*+Y<{Vp9?ho zm8Mh>iG6g$x>9Ft;I12Ar_T4Ni68hI1crXodK)N58Cde}Clg0kGOJM}@4f1mJi=(y zxjeIAlJv6oXch}$B3NOC%k_lW1FiE$oj!f-BE7T3l>J7_5u%L6L@*A*w+DRh@re?AJHYo&ABN!D626HUqg+)^K~ z7z{Qh%tLnWysX}ISr$trnaC<{Gg3r00&_Q(>Rt{`ADbO$`C?QdCh0tC2}rn!DIlAl z1F5Z}o-2BST1RKCa}GS%2Q%~NOe@I4W-LhepXvqAvXq2^hkjF|H&eAVQ z7_j#_8${LYXng|)e-O!tIh*~F=dM2{1RHDj!bY;IlbV|BVic@tz1~~#w=s^qA16j% z=l5N;VyK)!dU=kj^y%wD1R$&cD&l2dCLIa5sDL`8$qO;3VeBl7CB^s58DvqAOe5fK zLxOE^N4AZSx8Er9XaTYg^f3%LcB#uBt0OmW^}6Br)(zyXAf8*2W0ONIOuNod?)8jB zj%C~8v7y6=iv=Co^gC(~Au4s^%47M|{IW+v}crDU*@q1L_Q;SZYXTyE;jmH(Z?|vQrGfE5gLj z;zW{D?<~DYhJd%xP75xXa^w+K(nCR5LWQ*9;Dbgcs^04ei9uTYc>WsUH$K9+HwbD2 z-F_sbyOLsR8hJ?fuH+dqI-b)#%Q(ug^0#BLj-|LPq@ESQo}qwB)aL|EI^=Wk_~W~g z<)(CG@|K0je0~hKwDv~`!UO!~YSORqjycgxOOwRTh%HzP58MG($d*oksU1GKm&JOl z&R7UNCPpWLvIL%;N)4V{Pe7r~)mfU+Nl)h*jd_ubgXjPSz+Y`)@TE*?rYDwR29%BE zFf0F=N;O`-o{(5>I8MAat3baGhOx}{9xt?o@$VXal2TsIzonAGOurx#ti;FM{wi}k zA@NJ}S}Q{g)=J^|1IcaYXr>`ujhHzy9g(ORqIlj03gNWy&17UHprd;(j1d|tl^j}M z6106v0*M3GuJro;vm%iiVy<$Gc6uuD;5J)iFM8~W1VcQff9!yf*>tTG0gsntiL&0e zhJhVh|BGN$-gL}5956DOu9YSv^3^59u@WXgQKpurBy04w`jphkZ2{m)lOAxhJvDwF zVPIlFJsVOBb!>S9d)IOb25oZxMJ5lxmh*kBi(98~9kr;g$ji*BA7vnd#X^)ZU-jqQ zP#g*z2%3D;_^SK8CMl1a`J+dVtPc7gFI(1?oYYJF@78Oi3|MaGHR;~(1x_fsZ`r^D z1T$a)Hs&7m;Yyl3aoaJJc1g2}Zdh!GEaXUGdF7=YUB$>?9qXeK&6tOdFj zPhSzkkTU?en_GVN#8X3>viATZ7OH+GG*XL#Q-X^^RRq#*szfoWye9 z&x{QDhebmm3Q{rWGdP2q8|bE?g&uPwlfPPwfU~5Y-xrZ0uMV~-y&tt(kkuWu}CkjG%3GUDEg zkMi41Xu}uXE~*_WIfOc+NiZvty*^j;2*XO6?dY*c?R7rFK&+_X4+!EDV-|o$D1*ma z;(}ng{Ocf}>)i972SVDOBGaIV)0cetl1CXaN!)=*bZ832cZm_;YQF7EZGZ2i@}+;qG!F{9@T@FbX1#?LiVo^W43O{s8FB6*@+YU zsX1{o;WFfWVVsp~{=xp)L*?9>wu+vbi3A~)a0KJxHt={Jj?>`WdVXimtkGp;?>Yst z+mF)4J+wX#w~L=h01fuqt|}z#H!`7AQheG)u+0gu^VifMjZa~6GdIkW>H6ZZ>!2LX zW(eP@M0(P%exqU=aN|8rjCohPI+~^WSv-r?9?#9pYz*@QPXN}t0)uUCnoSt5z!FJM zMl9;aEP<+ZKvnv)u|+XL%Zy*)mwE+q1q!0}HQ>|y?#06ZFp?NBaF+}%O`A?0ft^bF z0{Fzih_mM$Q1X<>Icz*Cgc*WRqj;jzdsdqn!Jv8(a8__(WhS>ymSs^&qq&*+lF~n@ z8!*dJQC#-sUmC*a;R#bEyMibnpyh{P)C)qIX5wigDKwPZd))uQe)?`P1#)gu3aW;9 zMUvlV$;9ca$dnS9e(Gdmpu-TpQl!mav&r}la%~fg>Fo*#XsVYaT%4({aRUXEQUQXi zA#}gD(PD=6fO|%H&$~UI&wP|XXhK9Xy|Z-3Z1Q`OE$wN%u}7H>a8EGm=g2m;7=OXO z##>uEJ zMu<|+5%sMk0r=}653(ddqRPyhxfV3RpZA5XMpC&QH9(dF(TvX(W9(>FyJQ-#>H~Xz zOgRd@>2Tm$_1i}(s zj-E6GCtcWk5e{CBo&?Dcvx(Xb2TP$RJppYyH}w(@jtPg^IGBA#?SR>R?_qB(>^<4- z4tvx70m$b7a*jI+x%SQfW|Ps`*z14x-quGUtH_{`LHjq`Ne58o9k!8F9$x>BDqI7~ zhBTcmod$dN(X7l^kCogL$M_ODbWOlxbMB$CfS!CjA-1s~E0j^@sB-G_yzx6k4}}zU z;7dt=KAe1hC+YDGqBOBEi-j2gCR;ase{t;<|2~%)SyD|g?awI1^nqmJAYP`mIfw(W zX>NN_TjA;$@WR%g#@oBDEc{|$(}WmM$v5~e#%l|iUaM!!d$T6^AfOabMXCH$uSo`v zZl#y)c*SlerAp*nkpo<$Iifv=rB?;vS={G)x?UrT8wjz74d5niykCB0hY)6U3<##b zVR!^|S|!7`m&mSj-pDiuNPp$tdU0=~%sN8s5oK7fu~SV9dyu@Ghxn1Z>#TGOC5+@W__Uk@*kkrh#C@(6REXa#>-cVw~HBy4gW z+{hnNXCw^7$Y+BN2*r)xbVZ%o>Cdhx#&y)kS6x7l)3>jYGdIGTnrfh@>kX=jF;4+n zs;S~x%Jl!(L?!m!3-!CKQ~{aDJGtUn6uL>TrkMxw?1*~pb=K9HJ=+A>gV`h;Tr3k=x~SMl_7j)RuIUdawztH0K7gvmcJ@JbOn&w zWoFn#_5p?0yjwj6>ATj>P=KJTA6!~NKz5J;g%BIIAHYc1UB!AFrBSborr?<&g}Ki& z0LDgdfU%w7UwzdDtYkB-U{)xL!rXEM0_{q0_{-<7B7sU|gn2NFEhOOmis*0YJx5qK zQ~j8y{pYN5Dt3mp$17it=0FRG5!y#elq<|9Ds$AmrV^oE3ZC@pV)E1aWJE z01N&up=Vc6H-odbN?<$Qc}1pg1&GsXl{7&2o@O;A1cp$wrVl+I-EV|lf20*iJ0Tx{ zxaJ+0jC}loA{DiwUO&bd zgLU$_Fkm%=uQ`E6ZyJW0Xt3~Lg_uGxDn^B)dR4#zFb43D18}W8^F^ay@?$T^m~-*< zhA}z-VI(^jTs!%OR}_Su=_~$>x@ou{GQuXj*CQcMz}K9dpZFPYltDIoB1Y)XAb^a> zmclrs*y=hL$;6^i-ur=*t|7;<9o<@YiuN6(BUTrVg^LQ<(Yhqo&Bv>_AXHuOzD5wU zSRYy6E5uwWjEl)NcJEH13Y$L};s{C!IK&QuD{J$XUZT=jH$M_=fB|yJ18)&rSF<80 zzuJKyXJFtb_=Epry&&^g4 z#)qDd^b;&ao*iRxk(y*+&X0BfQL``8Wbc<5EggtBWqd-}y7MPXCq_N^UrbEgOO^=g z2VyoqXSUtp`rYYjxO#ep81hVkl-IBAtzd%{rZ<<_34wPaSTW% z4=0A0ThI_|1_Gg8r3hIIaJ8_kM)^+&WAJk8=8TZO{lL1dpsAg};B-acza{Yhlyn7g z3MX-Z=KXVE;d?U?@rJA&qEjSO6oVxnf#vpqR`L=fS1OUHmp!Y;mMK8EM&ASn83B^Z z57Ch3cp!A5>L&!7SLH()?4=7Akpp(Gj^rXB=^bKhAvz8uIv|kfKn!<)QGBvOlD+`Q z&zaMZrw|V?Jt{?zEB-!dI-w`z}XxZMCMnGLK$zn zqzoPaE242?3fm;lf@p_LXlVt8)6*zTkmf>gh9SQK(v9#0#2egpgBA=x3KJ9eITtRB zH^9;05>8KU=PT4ZXqE9D6*9^fvGJ>3Q;HUbI;>j=o?H3ai*IY0

9~7iEkGEr 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 literal 0 HcmV?d00001 diff --git a/test/goldens/rcapsule/rcapsule_014.png b/test/goldens/rcapsule/rcapsule_014.png index cac5d063c095eddbfaf9406a17fdd8bd24212b65..de538a53a1747218aec365295a48cf5c484516ad 100644 GIT binary patch literal 29961 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 literal 22069 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 diff --git a/test/goldens/rcapsule/rcapsule_019.png b/test/goldens/rcapsule/rcapsule_019.png index 8bd9c4e53aedbbe907957c7d2d1813806fdec47b..c943575dcdfc00ce12d146ba7e15ac63e610554e 100644 GIT binary patch literal 11478 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 OQ3v*$8|N50UHLzwu%kf$ literal 15403 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 diff --git a/test/goldens/rcapsule/rcapsule_023.png b/test/goldens/rcapsule/rcapsule_023.png index 01d1dba88d54de97056b58c1ddf50f1d9d141065..83617485f0a16ab2e339b731e022f4c838eb1692 100644 GIT binary patch literal 18846 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 literal 18854 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 diff --git a/test/goldens/rcapsule/rcapsule_024.png b/test/goldens/rcapsule/rcapsule_024.png index 6e9d96468149cb8328e33c630c420f266262e1e6..ea4e2eee9bb768eaf3e8134b60d046889654d2bf 100644 GIT binary patch literal 12984 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­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 l{7*OjXDR<5u3(nME@<~Cd%a6H{~xl!uf+fW literal 10726 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Ê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

!ZeJqJ>zL`-!ky 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%0D%T*Ge_K}JdkeW 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 literal 0 HcmV?d00001 diff --git a/test/goldens/rcapsule/rcapsule_028.png b/test/goldens/rcapsule/rcapsule_028.png new file mode 100644 index 0000000000000000000000000000000000000000..6d37d6309a48227c99d16e849123af2f5a36042d GIT binary patch literal 5974 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 literal 0 HcmV?d00001 diff --git a/test/goldens/rcapsule/rcapsule_030.png b/test/goldens/rcapsule/rcapsule_030.png new file mode 100644 index 0000000000000000000000000000000000000000..99cd9c43200fd6173d6d245fd13bb49a60400dcc GIT binary patch literal 4000 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 literal 7373 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 i;h%i?|Hy|Cz(V_P+p)>C&VC diff --git a/test/goldens/rectangle/rectangle_014.png b/test/goldens/rectangle/rectangle_014.png index b29f02675e9efb668d245b70d04348fd25e42d3e..0411dfe7c4f0940c536f348f215be9ea6eaf3abc 100644 GIT binary patch literal 15292 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 Q2>hKeJY$ffXLI}i0krO|1poj5 literal 11562 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 YBRj05v6&zU4PM05@VG&~zQb?-2P_@?wg3PC diff --git a/test/goldens/rectangle/rectangle_019.png b/test/goldens/rectangle/rectangle_019.png index 91a15398b73ab8af913dbea89ab8c7ce6009c519..573d7be03ab6de3d024fb55f34b7749c8f31983f 100644 GIT binary patch literal 6505 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 H}O`pbSLK~N4582%;w?alHjZC7+wMAN73KuO( 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 literal 9383 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 BYdin| diff --git a/test/goldens/rectangle/rectangle_024.png b/test/goldens/rectangle/rectangle_024.png index e6794c3b69839be54d58e6f550596eb3fac50664..49c047c08e4971f0191957e35bb6faaa29a9435e 100644 GIT binary patch literal 7038 zcmeHLYe3A||2{L_MrCy&$z`T;>4H*()HIUPY-%=b+FWWkgheQHnKEu&B$I7WONo@M zTaqPop)!_4N(m{Ilv{?>DC+l|nSJ+v^?$#;>CET*oacPb`JVH6p7Tu*c)AVMG}0u5 z40T`N;!TJOhY+S8OC6Cvx9;4Ce~eIXH)nFbYD_17sD?Vb`>^mQWUYuNWVD&P%UqxE zqwgE@_#N|9g69 z%!T^j^17a6WTjQVu8NB3waJo&JGhgRSI&DpQaR-o&2IIxTISw)#H#D$+nN1b_wVD1 zw@He7(tfhn{b+pQWvCYCZbI=eQYtKW;~tPPN@JL+nambbwv6%6ioq1jk{uAsNyjn5 zFiVx+aT5~BToD=07q*#l$z5X}(HzhHq{}8Nbva~@F8gczFwrNLj%a7RSXi#XOH*a> zjKSNYlDQPLL_sUCV=y1uDrn6>+i^faTMOE57X|Gb&_;3;v|B)XQ%S&Os&bN*P5>r4hSZIC)hK2o(Mdnfr&h_z#P!ukPm+Us>&)Y#ZMEwM}|I|xIF9V zC!{+oRvx}>PWIs!UH!w)JbU8axuYif7&B9wsTwF+8!x_c;Z%20)4P-R*gesIJa*i? zjUOOiakFckh&OJhnzc1D;!-}O+PzRjw0Fx%rYgG90kg5%Nf=1tA|lg0ghXJ3&1fcL z@DlLKcToV|K@xgOJOFS3z#ae=07C�pKzi4uYW;3_g@$G){>*07(Gsp#U%(1Vb$t zd?>>l0EPgd1%Mg==fJQB3!3 zqr~Esbfc&B_|eg95_kt|^10r-ukIeE?f?=m1Qwsq={`6zBqt?H@?p-;ALlZ1V{zE# z4wcFJH}L}oAKwp)a43vE!uq8u?S8Qr5#V^}oINC$ze$`~({(<2ID6!kknjGxC%3=r z{3){Aqv;eei<@*@MfERp?(!1*+1=L?pQUtHeJQ&VT5#!44UmySUM+r z<*w4@@GNE3y2esWx+cw4G~@RvTziwY)h#N`;qAJCN&ZRV{j3Hr zA*ozt!l*m>h4x-ju2Cwi9A9drJ%MXKPpl(jSUW8mlHBmHCCj#!g~dsnc9>kZvr#P* zv}V~BC?d9LE-JI=U8g~MK?xp7|>I47T~qbWqBEfS6DagCSzEnE*8@@aIEv^Da>5K`B1&N8LD zw6k-itX;#ral1u=Si9=^G=6Wog?wz=DrLTCF@sC>Wf_t*+guUqZaM&d+K>{jv za3jsWFDQ~>VSQ5GaaPf>q|%D_GS-lt{#@}ecqc>Cu1((2Mtcg>ZMCt7We0vX#fFuX z4ObbyKse^_b#xW;Q-ege;>Dc?bd3e$QnUp+vT4t5P?EbV4ly*1x$QF*0~C7L@)+gP zmYn%mYqKK}>K$ovzZW;@!oIStCXRaSGjFlhr1qwVN_WTmVG}zW_c?V&Fuqq4iWVK$8s`CTcszqb~h>u&doITZ8lc}PuAQ;c2XRdZ*; zM?H${c_^KKC*RI0BztC+V+!}`-|3IWXNOuH9cheX${}hx#);2v+&EZuENbGi>wgz@ zZPjH`4HK|*ZA#Y2rak@MRXDQhlr%$V*Z4&C%}De}A%MvZITg~muQR|hL2;gqYt}D+ z!5^9NBDzXC#)ZX;pr_sC&aX!fTV-o`4TiNJ6z{5X+|G5J>P+@hWu4&6-E7Itad@|O zbAN@8mlGZhjK$bYjBTxpM^#QU`e(DvvxDZi>{jaXhC90Xgy2-(P@N3oh@AX}iI$g`0 zg1gGYkDf1iI7{vlnl(h;DgN;`eq*xctRWeQ{pm zM+u^Bul6{}m$P}NxQpu=1s#enuvS_MynHi>LSrRRGVDTyQ-Kg^nkp>CE9jz{(mmKfC7hLt zUx=5%P#TSOpbb{g3b?5KrV83zx~CEpw6&n^<|&;DXm=_En->iNjuHyNXPGF*`hpk# zFY5*f(0%0q$U87e*&K@ILS=I-nnRV%DX=<9gR~kx;*N3(Psj6!jWX}8$Xi8Z^|QE8&kWZclJU5ArWMSF+gxrfh${7L=i)Dh%X9+-);ofATS?+Lo@&t z3;Y# z=ELg1-3F#3a0O}9!7e0w16mG=2H+M>@(zfW3*Mv3L@tT{ySkS_I@}ndOimB4TpbzmCjbEJZI%WAs$^yu z0J;DeAysuStObJw7;?doOBw6{@TLGTXo6ua7%ae$3x-_EuoVD301UvO2?l>!d%&<7 z4DkFUa|Qqc3IGEW4E|uiVIr%+U`83X0H6baF;-0tCQ}=)1f`n zvt@I~mXTK`b*8_K3wgad7==bZ*lkT&(Uj8l6LmQY-cvL3xwEBJ66G(7t~B9^d|R?i zo%dtXIkrjU_d0)Jn9H4NI1pK-X{pg=BlcL`{9|&Gdf$b4*8MH*eFeJqHPu}-!;miw zi=|#5FeXQjbLn`6TW~H_HiMw4jIHZeuwswjb_-suhy>d(wmL?xl6a;s9q1b72wOw7 zI&aLSA$e~r$C^9J8uWjJ@;$lmg(}`X+jJ6j)UhZWZX@fm5glPhyMD81J``}wh07Fj z#`ZXIOPvJ&BJ`(J$#J99Qd_R#QQ~PwD)ro);mw9_;Pmr6M^pG@bBfr$gA8B%^C=b5 zwwXp^>6hpFS$q*!a2^dd6gvo1+{lxKHdFmWzEt) z?oHX+1hHhpvLWu~BSssa7m~B$HEOGQ3uV>jUtZ!)5Li@c$$PbSpV)H^9k}j6In(EC zJIsq7H6*cVYPmjIFeGzmmSYxa3639X$*NgQ-GX1cL8i@=+isKW=`)8EEy009Fe@X_ zFO$7$WTxJ{cyZM=>N2{e-Atdr1+wa26dhyI0z|ilPUG4aDjq&iRT;kSj;#70MNjQj zhSm$h#b%Lt*6c zEQ{>*j(q?6L3YwVo=t9yKvd_4Sq~a*`AyLsE3SQB(KP9F{q3kFo%fG@oBUl~*pwqJ z{=V+orbWkN{u5J2Ng3lpi|01F>=UDMP# zhnk$J4n_S(#k1pe6xVoWLUNg%RRB!OKxd^TTO&PcKp44nHyI8I9M0b@Z1WX*L_B%i z){}TTBLhkks(-om_eT9`6qpU|7%VN+E z3%R8_H0*sXZzi{WU2OHfdZ!7_BytA!rhy?RySwh7dt`I>S*w7>mu%fT@5bGG@Zs&^ zMSTOm&sh_-6&Pk-zlhZ;#pbeB_CMZ!51m4gD6t z-EMMk#PND7uSe~--wal58fdFEYbp3LH2>Zh<9p#$dL)Ec33;^h;cWE_-gRp?IE&K)^jjuf?+in%)k)HQg|H=G7p75 z5E=n=a>;c$qx4~i}nAn*=)WDZ7@bm^a^aygEvDmsXv+aUyg2?*#S zkd1%=4eUi=6asq?I79*7q_(5cU|75)@If9reBqm(H&9Kdr*AHq|Irdu93r=eh)RUxHYTBnO30~ zzW@cwB4QR8vCS)%583oeB~y6FD3Eso#a)*s^Fy6cAg6DyxXPYpQd{<$iZ-ta z#odk0`kLQ*(d~nn^--GCo1j95kuOwwGo4s&$`|$3KBoblK(i^DJd3xBFBVtXD4?q< z7)FbJ6owg4g%mjb_`}2Gr}&28MOp3qLPf5%M(p%fs)hw+Csd|q;@ia-g=9?e9hPuk5>`%W!w4~cIQF%wX8V?8_Nb4_Yz77;cdls>2;JDhGl{ zTOO+Fo4AXY`tP0lv}&MlN!Lk9PguoGssGrOVe(_~_Nkz1zzH-SW4W^yQ!sI(vlj*6q_c}$nE=lX4?PY`(u9b%=_~`@AI7JoacGYN%Qh#swnCx zB7{`7xHG&Fk}*Jt;7gPT6FZdo$_i$|Jou@IyA5zQuK0+?CvRjF{ zDx%!q&q8b6#qSafy){*rRGHH(H~Hn7yJlaoFZa|nV|W~8#`I1H-?|$(|7`!s#g5Xr zq>0H56Qj|!ao@*LXz{UecA~o zA7>jsc?xzU2Wl`il3uNy3&(=j+f5NrK2I#%@jVOG79y;YEf(^`h@6Ko^CGEP0%pF% zG(Q98IjQ*rm|0RY9Zas&g*MQ3KxM)*?xko!70fMl_2Z8M$|80bll|lb3|)*Lj^c;x*PtY-Q_%Q* zk~+Kk_Q$qutSK4`MX1BTp5CKEt?nK0i;NLytN99O5}d!hjfHGhV}w=@0MY@l+78=q z4uCfR4{!h&wN?Po0jLI`17}zO;156|0D2xQ)VU0RQ#hbufX251unvF{0LBbx=tim- z1?-b0qGpa7>fORd5g7ms0zfjPqIQTJIQ=up02!OX&lNP}29sv}CrBuVY`8jt;l>A~ zzvhF5-(3z5au&QwE8mTI$wM&dYx(yr&l@d#nEg9);h*x|^*0qJIO6xSiVNS%toWdA z#m?@ z0SbPgU;zrDpa9v0%1nR|0EAvppo4-RC@6wLC@4Tmp|V3jFu)0*KnI038XGNvy|r0N zkPW~`+DeW=(5}s_qUT)k*yue4G!HA4sWPPQkGB-??wm9UFJ!bV`u?sYSEd7l5JYe6 z3CAUQ#G|P6(UoE|dR}y2SNU$_rHT=9%H3looPMjNirdTtXu`LzAu-EgIdjBH}o&(mTdCu`=o zD6+#-sW!cim{pdGBWKdo*z?*M=t!?0>o}wRIbWgmcP^8?Hf$}`$tZZ82#atu)(F_{ z$Kz!Z`{9s`1Z^W+{@qtlv1XbGyE?hX0!whXCKhtn!ntfc$lc1Wc1R$et!rb393>f1 z(bAA$g8#?tX4A;=Yp-3B$3kh;n z6oLB5BNEXt?hbaLm4=~UIH1NAPLOXgNwM~a6GjYH$E94{iFq40Y&y~_g~Pkoy&Mim znTy-XR&4r5bx~cBpD}}lrXD!TIr1}LmR&pd;dXCxj>h$xg z-3Fqq_)N8THxo4`Tz0)*XZJaScQ@%eY752_pj+@fPW9I5Gd&s4iVXRSwzZVTy*-kvLy`{wVE-NKT!S{`YEF z6s?~d!akM8dp)R!Pr!1sZ)NlEzrBeMi?R6ylb`zY-kz4;Var5bPk-N|w#B63!aCc( zmnW=5dUQ5Y7M__X;fGAzvCbTFnDThrC>m*spDA51Sr8SvaCnOkbLwJTQ_#6>KpkKB z#K}6OzcG1L(iFdMSTORMvxl!aM75?PMKefD1NzdqsktV{d469|^yG&tldeQszbuhv z$Y`INPUrp6vsfygej^r#lyGbQ^Ve0(JOi?rLtHE734SCQv3*Nrtn|2@C!$ zQ{tXcR>vlo9E$xC_mqLR!kGrqDnQPllLoI=FR&w|J~VpF&ob^659p7Ccc zvk7xmPef^Vv_KD1T~5=`SrqyC$PX@~#zv~+>LdbQC1H!0?OoB%BHM{*YIviw1B2N5 z9(B}; zeD1$7CeC)eUH2?OEl1QW=cR=AqLE$vrmbW8X@$p_tQU`3bbq4EdNyB`Ur1HRoQh(= z>Ko$wx_VZR8pJIxyu2|Ag$3#n{9{zs zLQFH@FyLEg59iFw2_tk8MHo#5mMa5mO8~4usn#BVp8(j3131G5fO-Iw0Jsbc8z`l%zXA{qz|UB$OTn!eaBCdW)Av$F`7%UXUq3t?G}Qm7xju12Jdi})q8{`aO`6SR+hN}@5`dNTGES~`Z+pG!Q z80x$EDHwslh?TJXVfbJI4yZt=&w->p+%UY1U^fkbPz8h_oB$(LU{U8hfj|d>3=j|y ztby3*T-~@Ud{FCcW0(dt$ddtpUELp8b&*GIVr;*gjEOqI+(smbMes$r>-AKkz4eQPxN#}W{NowFh z3mN4XWxDqop_=}T7qr*51(JG>q?;g@`eDI?S- z=t$jDv>|d#vuoW|#!gXW#et-_aAhkU%Iy3$3+m2V-G*9X^xlEi4|64rYU#sGE78wm@V z^N_`K$Fb`tTplZxE_%-m+&z%iuxyputtBYI6fRhOekm>QXPB|i^IZol>F5Hy9dtT9 z0E^=>I$}%XCV)R#_#|+tENueLgmD-zYnjWZc9l!9yW2OG&eapK&=j}=y4R3C2u5$m z3-1q1ZhPPpC1m2dh+Jv20f*+1h}AWYGkx;64hPW!yhz~Eep$ebKJ>! z?k*DEmAu0QBeU@EYSM~)CwLT^JlC`Lz@9k+-W{j(ntRkkhnL-6q|ZJ7qww~!oI$gN z`GO~+V?(o|o*d_iqJ8uEyLTjRcpg0`{Bx{bT!12q;X(8puJkzJ{=1RCNt7GWBHeDa z#ZR&RH|x*J{S#EOdwufwo4(-#rAdcJ`L90r*{5^z8LYSEYHf9K1J@oqz1!fBHXNg8 zLkK+$OYE@wBs@>1kTN~dZ|%`=|Gv@0xp}ctn#35-KkE^2$Jbn4AuudpSw8P^|PzF?hbM4`nG>^y0DC5Lj zZUM~X8>_-@JNod$6?i$+nma2<>)G9RSnGcwkss8bLA8)Ltrp`(U!EV%-$)BuAbv&i zx_#*1H$vms;L}Wa@-{v|WmW`Pwv4qV<*NUW;_k(xS6PE<&q<<}pSJJ1t%v@68SjK< zb?o4Z4Yev@2VU}^xDP-fsa*vF_rbhlE8ywk20%Cf9C)I<0tPG+e<)<*ae-oQYzi+H zIBafV1>*Qb9g*|UGrzlG)6<=U`{ne@)i(3g^#dp(}e# zs7~p49+D|R6gEd__9ZRJW)&3n{(rMlWVe91h3kvD`YoZ_wBG0^Ah)B%qOK-e_=$8k zuSV>^U_NuSf8F)rs-Xc0k0XI#v&$vXULan6HUGBiRn|i4`0o%ark-& lz9z%hO7OKJ{$Ja{=Adh_AwdZKwzzsSuFwNc{|_<*LTLa1 diff --git a/test/goldens/rectangle/rectangle_025.png b/test/goldens/rectangle/rectangle_025.png new file mode 100644 index 0000000000000000000000000000000000000000..eb95a5f4a123c4b7204ae9e90897edf4ab9de12e GIT binary patch literal 28821 zcmbVVc|276`#+WJIiGVrpJ#bL?`N57`;GM$h^!Pr5M+UY z{%%tQ5s*O;{zJlZ;a?)$FP(+|@SQi+(?L?oRJ!Pr|iRDSEYdmY!e*bhCeTJCu5 zsR?cD?Fo`f;*?m6oHl-&ahr1f#hpdg556+y(jsf8UW_q@-8c-wu%;-2OzH%iz2?qi z`fj2rGYyuIw*@bBv^Sk&wAbEr@77TloiP!_uVX52)M%=HYRFHW$FL&s7{Ul*V?BQ% z&R=I`C{w$S^VxN&a&jzw?4aN!A!>~-!iU(2&T*1mp&R@~#DwrBj(kYyy`u>sKGbiS zzgaAUk6N>P`a7>>LSMGV++;q!eba$`TAZ5_))bdX$B${Qvi-{V30W^Fjv!h4=bNsG z!|NNhBIg09Y~@tf+|AJR{k@A6xrf9h22c-1SDfR`J6tS;=@1-gc#i z?2SmsFQUjuSwvn^*3Blzy%$2pE+hO%!Ls6-lNk zqStGLo!_1B&RW_}*{9&40UwLKBA-+}`&mS5YLOO#bUkR`6+bwtM9PkcGpDz`aU{kZ zty*xTL!>}OhKe8+yVe8*$&UpLO)v*2t5x&e-GVO_cU>(LLby`s3rN4E1#Fk3VhmwVU;PzC6x@u-pr&-G*+rcgv9uc{jork*h%=vR%hp z2IR~uo^#3Tue&KA_19n*v`l{2qXivcmlTy~jqMPLu&~K_ODC=o*Fw(7p}UZ}KC140 zRZw1GP0E|Zp{=PJyt@{Yhv%E#nw*PdNuUowT@qzm4PNj@nn0~D`j9pTcjRQ;xGehN4!ybM zSG0#N`i0A_e@x=5m6-lmzn{|XmNa1+VaANT6K`JO+E$elqtl#B+B%G+84AlFNN#Wg zZ(|I@Sl&KzOnT@d`H+_gb19n{s)9rQx<|gdc|s=Lfc=p7^#Qp~@P>$qW<+tjKtcan zI4#b*b2mX6A_{3i_8loj_Di@&o_o!s1ribW73e#jx~+!WY1SKONKDUgaBJ}Fb1*xT zz2>nsU#%PZgpmgNtufbqTPX~#8m{O@DoH9~G&#A~M*% zt~fm9N&qo+4=7kdAd%f|E>-0n)?=$BBmYmCsWvxCqX%6( z{cj0TRi`C-iPxbQduec3t!=UM@GC~Y8b~NBYDir>+9*;`zYBz_W!`Iy)6UgEU&L3N zka;fwcOf8^bmL&>F`Em6Ta(Arm&dN1Sb*f}e*4CJn}oMP^ULI;>NHk9KRclVOQz2d&v73GZoqo!lN?W;5WfPwuo)-SG z`W*Y~WcJ>BV#uF&z)i?y%5l}g$kpoXh@OA4xz?Rs@~Xfa+g6=_LD^?G#G zi=kV)UfX1ow;R$eif+`T?0Fr(s_?A@GVXycKe-3%tVbQcecn$o(_XpM_x6Zli zrYnLI3MC&h6mqM`{lcQVt}r9?Q+^smsD9Ijy-rMlm^k!=xPx+ESzAuPPc!k-o4AB^ z2OeAT6_leUh~q!{XlSdv25-j-eVm?l)mulR*RZ@GoWb~f_^ai8X@dI@_gE?iRI;1$ z?msO$GQN8H8-Xu-%y_q69_~1pqbDF)){L6-!2%g%T>jg~v#53f19cp^UI!wnA1aBd zCqr>7)K|@YFEmMt3{G>OgD|eZaeJOW*SRkBU|%>h_O@)Ca`L5{tD>5uB*vWkt|!7) z;HOssiP$#Q6MOqp;=op%{?*U~8KYZ@Bzw@V@s;1cfOX&p(d};f_5QlSOnUs;&SRD@ zdR*%SeU>}h=yd)efv9W1<#wGNWqJ!GF0h%b&B>Nhsx~<*CGI&3D-aQmI;b6$CTTkQ z=%MY7W~GU;BG)!YqR^&ae)R>dL?WfZG^7ok>x>a$MsplL=?O4~Tvf=N)9_Ab3We4P z{`rlN*$g?SVS14}vmEy+)E)HRzZy#az^heQO)!p#4!OvPGShBjR^8fIos6`^fw@N1 zHW9ihzwR|57|&%E9jM3{tTVUC6S)YxtP}u$)z0I6aE|otmB@GBZcGdE>MJSA7%V>; ze4VR`P{UE<(0h4#t}z_beRD$Q1?97?<0Q+Rq;+ER`3oFT-FDZR_S~bf{f`ILa0y`L zZWwwHy1PoQ?q;t>Yy{BFSn^PvFEJ+7=Dob;HcyrL5n|&x>T8bli6Ay&=*OY6op!Dw zdKwCF8Y?E;Obv!UjNBEAef9QWaJ+taN(K+y#J79ES>lsPMtddSH;ctp$(}az9IMIo#|?+gny~MET$uja8Z|B zVWk~O5#%vhX`F7>qdNh7Ww)4>}=F7W>(Fr{dse<+8a+J~aS+z5b2 zJ!W6yloMkOHlYaZO@fDBK)zMZ(QZDZJ`nEUx&6h^fjxdSGp72m#wP)G+ThaIP0Tn2 zCj#=(P(pu&g*0MPQ?wu+TWN7+pGK79%c$qJk-{U^$$2K6(4*T<`7jaj)>C+`Yuq z?z`3LyFp+$QK-O79q6Yl-9%Y!#yqk`>Vx)B9WnLIiT%9iLobWrE0X9}7{h7jLh*pF zUKOFi8D}I!{e(~#U38aOAdaFr2tivwwL;b+`Rf>bEiRKp(+nkjNWktDP+K*ZC zPHolK9a{w#FGODkca(!S_dR~rg7=}nvLIl{!@e)+rut99$mmYgLi+tOi`PabSD?G8 zxf_kYZ1W=EKAbblm2smUUOI(!@Q|la%@Ughqfw)#<(`Zcdr_mbQN6IvNvf)2#gZ$> zC-&o=F6{|Oz!@DMZc!!vrm!h+*eTev$_bt8smBkFVD@pH8?Pn&Taq`_rBHbg^w z(V(X3m)Rg%i#>=$%Z*urFC=m~dKW6T&qm78=*VR^&7u? zJlx?yFa{&HGQ6Mip)y458gnPo!h`p))0>X9XF6*XR@mu*gR@DfQ;IX#04###94S>o zo|-(ju};wivn}#NE4+se@b0Y32Mlf)D!6`rDaAU6RBS3h06?VZ& zvGW(O^qU$Ww(R%5ucD2+axc8%h36c^(+GV>Q!GT@l8L^6VZc&CQkP`eh#^?72C!b* zB5PxC5F{hHvaknd5*v7rE-7yukKk1n3{dVbkWvTVBz%vfEeuXz`Wv@qJMCyq^dxj= zaoSXAFp&jeo|wTGQlW{y$674a)|!HyjxL(zu)Eg5n{W?d#9rTgx(2W@dlDBC64mIy zDA)s3ZDZ1c@ZN)K4&Z@ySOrq$y%{6+`UWdBAk6)fRZ-p)XD>l+80Gdqs_<|m?$ZF^ za0$)|{mKb$jlqWZ2b+%(f)^^7Xh*CiWivksAk)N$RuJY{PxB2L!QZhe?+v@GbNP`o z3aIKn#9&pBwD)ifoa;IwICHLO=hrw0FP$lU-7<4-Rf++$`bI|BfC+Qj(<)RFpmFM{Wf-(dK|lD3f}aCt zv*PZOaM+QDF?=@Sj#5yOhi0KwklZ<_9X^VQ(2!mp&{E~6UIfc^!nS!0@#5UVuyNx zDJ?9$9#unMQ)o6)1sRt>pFsdC&Yp%1RP-&eHGA{|x{N6HVNYX|0$VJ?6yf}gZnl2e zB3_;O!RJF;lN*M2I9(#lS5gblcZ+_#tow1*ve_p6RowHZs1LUzn=Op5?eB z!8I4$lfbzV_Qc8Ib>H?W*`%ZqOx>z}yO z-4c?W{uca|3Iyzmjl4%Oa=68D=K+eZM4w?%$2@&0pJ4|Jpl8yLR8U%)JLb)EBmzw+ z1}{Mio$a_i32@wM3YhfxU-w8QvF!UCOtVi<`fjADXvY**1<7uMKz!P%_uj{%RS+d` z>UO69H_S+@Ah{6sP-%;>Xq9O)BJJl{5c#)nux6uGklbakNOBl9t%9_$V6V?4&jQgr zonW7=wqVgJ1&&~dYvpGZSniw9v4 z&+^@5BoA4hD*3MGpV^InS zL}}pJwS)3o08aHZ$7W2w!3!G_796KK?LqiBf6Ri=3fw^&JYBIg+pY%H?B}z=aU=%- zR?BNFI6e&=T0TOYiwVaOcL<~l(n~Sn_+R(Hg5%SKLb)sk9FHEr8<09vgZ$?9K4kqo z5p)k8w*)Kh9!m)!Gj8`+Pu96JvxlZavigPB)@pQmFsCNxPbtD9|#8~ z?K$Ly{FmV&Ph=h48NP6HOmiOJeoyhL>K;B{8g(4DqY(`;uoQU=pp zp)pxyP5X;49T#gB*LU(f=E)$DyRqYZt@6gyI2Q%KNk$yE$R}aw0(;zMEVuTt?Uw3= z3I&Rrh~?Y?Lb;}B%a&PEHSVWtyt>zr;!286D3BTq{S@QR;0utW<{ zzlOp8QTxtD?d|ky@E9Wx$ee53OAIu&4QFpo9rs&KwW}d3Xq2WX!`?G)oAiBR1HlL} z!Ux{nnn=iTPHmo>sP89$_yBKOnqle2+8b^^=;}IPUmSiSq5i`Jq{0TMNEenhtCbEc zBL$7`WDIbN@@i5DO0o6kdabKRQJ^-pcNXecYidi)Lg{d?LD$r)O+}r$Bm41kRAdUs z^#aCX3@?|Z8%ed!qWR_wi&PI6CV04n-7A_~f-7JEMZyW1En@Y_>Tl>cU1cRrOs+{$ z?4Ou;Z#tIM{lWeI$2pNAu%sq-eB+bZJ^rRBJT8?)%Ic?B$Cea53l;4&6zMDo0jxW! zhh;*u^cKp9g#@XLXy&@Jj1M32MgFV>hz~qu7?1mQwbf2ENH%IME6O-m)0Q!B?5Bp@ z%Vn<>5TBY7(oJL2dw5(;ax?F_zS4a^8=#cxBsg5KypyH?;`cuZS0ue>Cb3-GGU*4N zu&<<@n}h1AhXUJuLt~uYT+K!|youO+-@{`c`j6&qx-Z~q38&(>DVB3UmvJ`Vc8nI( z1|07~Q}GoO6+m4Qdhl0+?ghw6f%tTeFumkyQ!gO1DOxDRIrHbDSW#A2x^X0hVx!MU z(3_iD$30BWwt6A?w0lRUs5&s{RH51E@rkT{l?M;|a^2lB&yJ3^HB|-QJCTrT7}Yk1 zlMBmA!@1rnEYjW}Rn63vQceZ*V?8%CNDcR^I>K$3s0&ZYPqyAMMXmw%yfOA*PG3af zPL3&DxL(5&Gc5|brWkJfjA`Ce$lHY+##1sJueAzswxR1`X2!36CHHj)U5Kj7^ZmdZ zjWF&@dCgKlQ4v*jmbh-rfyKMd+D1yxb^z8{x5tB!zuBj++gZ0$z;l71c*_EeY#X)j ziGGmir*f}scejsYW2`>ldx`thsYHlGo6=_SDAY--6e)GZq4qYL?9=Cw&+GgHflo$} z5$6hqm!Ue{l9LH{N@#Y@yX2M^oKkPBT543|KhBrC5WVXE(JX6amzqg$mUmzGAFWJt zd}h6?gJc)rhv^Gv&gy8{CgT~OKc8Sb62p_#aFX_epPf1idAAF9R*0f|Qi74&tCikK zRo_RbYnbBHncq`9y5%=tBo8on6BPrNQuBM-74_s2jc7qV)dLjkhOc$3PDlbnnZX34 z1KiPQ_t1>2lIT(wdBRj_b&M|QH+posObikC-@1k0=lS;R{mJ}%JC zwMS-iV|cH@&t7XLBBfX4I#iu%E#%4P4QbEiL(y9A-C6i5s;`yDz5SK$HaXdrJ1FC* z{eJ(nswS@dGk=#7zi`^ISt20se&0SrVzY(feZTA;X^RwRW@4keQS0j3xq{+$SF!UH zc4`@p;iaio>?F6=@io-VQiQt9-#G$Zn&^6e#FQ01;QgL-AX z^2v4|F3L0Mv(fCPP>d4XYyRk#NLv6q8it*jrsi9^0mK z6{K9U7Qm*S!$4qZ8q3(OFUNP9fZ4aQWn`0p9lw4}D9sIBZ#FWei_uZ{vTd6Qp+7EA zMMzw8+w(5CLA_L~Ma95@smQ z{g{2eGMDtV$Gj(#9(dJ|$o}A5lt{9xU-a!l3=og)nyLYnTFKhZ%(mNIXh#Nr;+;M} z^~#axl>JNQ@iD$LkQ7hbfW^N9s>@kTi&b$Wq*wvl>N?;^jFRl9KtjJ43`E6w45k*8 zZ+&BOY<(y>TzbVgxl^(%)hhL9V+y73deNMVXgbbY@yDG}+Ie9at#SaM7%5rsW9=nH zodMhn-p4sfMo|Hxopf%Q&h55apFO)rDw}4&8$RLKnr=cZQHv9xtyC!P z!;E>m(%m{AdgXknp;tQ+CB?#1z>M8Im{VW{F`SJyX7vykkpC*2Z5Y(*eas$my(Nol zwxBr^ZQk>9+~Mem!5DlnkZoNw(gCr!^aP zCXy#Rp)hf?Fb+YJ7fP_5NiqvW7$<#|Icm65yM%%ud0r?>5!XSuhviHN0Oy;l*7*~i z#x}#U-&|2JY|5#{v!uW)TzZ_B$k&xQ5{aT$gEad!7Q8s@K9R)%YLw3P|1gE~+T#+Nv{i-KesfLDmyRlyME#GhR_%|w>ZR@L}` zlw<7+kx#N{rx@RHHm5RW!xbDd2{oadeLv=ls8ax!)Nf%YT)XJzoeCDE{U5|EIXnh$Td_Q&*y>h}w};15H(mMF0DChLFD8zECm`2(mZ#PA0hDiP2AP?H&;z3m4_lL{en5DS8v;#Ct4@)P3;Z;2m1)03 zSzdkO^x61iZqgT&Mm~aFUwJ+ z6Nwap%~b-ZXWDrz_3Y>l`%A`iCw)!l+%PoJdwA#>f0|TXW@$%FGMSZqc2Zm`Y$2}C z^5`gE%T6%(j71ncc$!pyRVH1t-^XEO>_BImBR(@{88LO5Rp#hp7nq__BSAlrebS8u zb<=?W(kX|>>R64}%Y>+%5ZFs!o4FbhBR)cMp>Bku|35JgN~DaP)X`fnby5BRV!wiQ z80i!{tM+-tC+gYHtWxbrO0hjzRqxML4a@i;p7R97bL|2C)Fgf}v^O;fF^#a$F1led za8tzRnfvPx0$NeYYLf5kGZ{9S0L?w0lS7UB-0#=T;S37Pcvb-@pSdu>fy%tmtZs77pu;jG7ko@p21Wvo+ILH!_*Hw%`w6jBQYL$C^=-Bgm8gZhymtp9 z0Sn%xp`&YkX5x@*BcSTQ3${69xo125GZm23Yse*4ERJ_}uT--KmRyX%^=n1B(Own3 zFATX!*G0K9_0X~@Ygl_utALi6xE3cKn;8BM+u820jq@NB%OEz8=vGsjmE@~#lr_ts z)uf~>TZr>(xUlkEdN0?FeLfedkQ5Z}&BZR+qDJP}er2*y-Y2R*8&U`N$PUj)2X_de z3I5&;>|DZ`tL}a0cy0=$OvU?}g28dG^m4+M`%ZT%xZ7Zm&IRtzAy@%LPi*Xgs_j(v zhki@zJpSpW?*B8VGy$hk_JeA~T@CvwH%pQtdMeCOD5zAO_dHy&ZnYNFnLPw|ga&`^ z#uyps+GSq+=RUfR^;Ihzsu5*p_mR^Z$Qs2sWb7t#DLMSd10lFAUw{tDzP#1x%V8jN~6LM zJ9k$>q?ZvNhp{7A<~@>SN|ubFX^zT60qTm->WaLj808uD$8JeWzKa?HhVbd|Fugw1 zq%Y;JCsKPvP@HS}!_Eke{<`8Y(tl}NAlLDO?Ya+c+mf#JQ z&OaI>;~U>{rV+U4kRTVj@iT?glY9kM+K9FiR_V`~pw(K^vN)%H zKhM4-BgrRW`!tcpDCo{t3^(mun77UjGLnQqxcT!Zy0trA2=yy+;Fv z%)LAP=kvEDucfxUo~;IjTc2Hj`Fhq+9g78BJ3$vrb~%U9@)dn zySx5vz>tYY^?(B;na!n_Xo~~K^N(@0?a^I}J zsBGYGkWOYDwdG^`!5pu#CqyW`+u=s|lqm;&HJU)EF`E&T+_imT8SiL8Ot#&@I1St< znm%bvhV}`x8>i*t?=u%B7koJsTQp~=Q=OEPea2^^+Z`HE6lA3lPB~Dk;h%SAIhN(3>lX);gilU!>9h=ZsWB%Ow?~n>VYH#0H`JWIJ2~+mG3LR&lDQ zOn1n=FLgSVB&|q_JD4Mt;Lg_)B|~i~0qF9-Gu|w=dk1SXQZNNpS1#lScm}i==#uUC zor>RT>Slp-Xf5!#<3CcPmd-_5oK&pRtcp{lPL69jC$`O@5|W>Ilei&G$nYN19)-pw zaMFHIt?jofpFc9kCtqlC#^Y2CuLikq**cC;ZPBN_2Hqxy84?t7k&E`z=DLRxQ*|J& ztX(+5u4D23#(RHT%iZAom5!sm_U2p53{K_CCE3K|cbtV!rbB_MOhnN7= zVo1zVGFstRn(1G3B9hWzDCx9N1}e%c(V{#E{W#As`g{tqikAeJW>vX7OQhtV<(v4^ zAGNSSVra9p2t=1x(*i&B)!C+6LU^lgoxL}~UCp?Uzu-I^of?GGGq;JLPTJ*Llz5`2 ztVlP4La}noCV6caMbM1ls4-U4=a*u>_9KIppC+%?q|}iYIhJq*kVr5Tw^f$>I%6d= zq*JkA9p{{|jEnU@$sQq|hXsRG{{iuhpvwbWegf0l$rAO~2yYL-qlOqPLD2V3;+)m!s!O0UF1oSacbNkOwoQnV|Z zt-rL#0?FEyr~lqDl+8_g8dO(1SiKR&iy0D}j`QXZ$TXqC&vwC4gP0gT~XT zhqhF0r_-yI?%QTS?MW%KCZ*p3Ej%%S$Hc0|#8RU?9awL+0?jd(7w(+r??QquuphqX z`#osBB3e1iUBK6_n7!c6U$p=Wei;;uy$P*gbcmlm{&bqa85q2L8Dj7HwI*7M^~Q|G z_(5Lb9PYi2_#W*^gzCG7+8g~3G)gOKk(N93Km0Irhj1nNjtg~QR1VFA@SJlT#7VW%g27v6>jRsG1TXlqhKhD4 zV0Lw5u?=W7+D9GiYPQ;ieRUm!bh710ZX=oC{1;1Ss^)BWw4*NkJYSc#9u>F{AikMz0Wi6F!_D^)ESC(Jj9CWSl_rXgm`|_vgW0TPvZ^~>EkxeUl zJ0(L$^s}s%XgiA!EO{BdYN6hcKGU@NZ7+r8T=csDBEw(oFMmmSbF3>TG&^+u6jVGY7EC>D8D$Y3ltxSBZN`dlt=1#ju` zZTk08GRF9+`Q7gT8an&bv&{Qosz(Inom$nyp@hQ-Lb-uF)%L1q?a;{a-pYN*V~oU& zghcyaG|`lu^JfmKqdlf(1B3q#DHAJeE0Z9I3$8T;Vb>3@m{O`!qExgbcfUA=zFzKTWXe(3J|J&GhX z-=a}G(weVJEyT>7`7q=y`8ek>v^A+_YQDB4=l5N2yM$0()=(Q_f(wftaYQ>A3m|r` zzvhzTO}kY5k~rN<{<9eF*$qfSt*Sb)ffUc=JqEsUK`XSHg8v+W4#_>*b*rE?rg;Rq z!Ej%t)gj%w$O7$+i7wwq;EjIJ?_?LZxY6=gGR`(ZcQ=rJ1we}V9tcLKQ&h1g3!-eK z=EteR%ocg4yp@t{FLV}3*R#{~{Ri%8=43moQ>@Jh3tl)Gc_gQ{%|Ti&EP{*sDf3N7 zJvDAO{Tf%(7X9jpOP)7j{>qf;ku+T|C7;b6z8g>M!e|`h_nICDjg!A zHF~E6#Bc+$+5=z4qilb@6e;F|H~pm(1&C64*1j~09-C@r@Oc_EMi-MrF)bWQ$ zlZRY?;+7QUXs{VV+Ddwpz4DsVgAeS~%By{Rfkv zLEck^<3ub6s`hMe2psCvV_~Mugep=&r16%~Rh-hZQ=m{U+^Pn616imzShN42VjxJWA>rT@++HD6%{-r^qJn74XP9&NO{(f?w;=eKN>?$ARo zsfn*{edQ_frA9=1R>~6xN#ra;Sf&|zh5mtBHOTQ7tF}84+qk{muPXvSO*Mr#nOs^p zmoRa6DYSZ`2r(=q2tT4Z{?VMK0wr9U2r}|3GAIUB67?yv0t1xX)m}Ai6YIM)ztRo6 z&gAk}c*qW%yBmvlBRD%Sps9#b&q{cshEvahWOt|Hqe;*vDv&NjQQkRXo>Oh2(pHaFqWe5X5;3)~+uv*@L7iG59v-3a~6q{fX|Hhi$2@!a5C zv^70)0i4s&2i}g=U)$R{iZvB3DeF%yK)B|o@?R$z)jv*gWSk`=gE{N0entwF0#jDd z_OS#p74$O>4Vs_7l9$xjJd%5MGL_rwV13q3yx_}eCKT?u{gy={vGOMzD&Y$^uL&V7 zi~5|AO+V_Tq-&h#it_}ITaQ-LiR(1CjTZS&ZpSDp>jqzioOnhXK zU$Etq>$Y3;@grl$K>b{{_4r90#|U^pPBEhG@-yH5nBouEbKr6qc_ zueizHB;!>;vf^N5S~lWpAL8{M4Z0Rf8ljcky7- zs@^^$`8ebby#(j1h0`cOpzwXCnY!V<6q~pN3m3V`-fp|J?kk*j5v}ImVxNXAqnX9S zyrwwdaT6ytRX-eZBCeJcM7XS~`7)a*zlt!P8_WFE7rAoaJY{7w(TWbH`HR&)lM$n*@flY=Ei z348D+P)6RvWdWlOJ#au^AY;Z&bKc zT0D5D;^*$x=sEiQ5oP7M`iOo@+agg!t6AeW^gaET5^REERgbZUcXXZYwMvZ?^S{zF zJ%7bJ<$6Bbp~m`f#5$ug)VjRGJ(Pwx^PB@`^1!|YB`=WiV!^;3^;NK;osg8@ z@udWg)XzfDK6r8!(nYV1l{MPl4M6PaZAC{&PoY9|LJu8ZLd#O2E`1qwuw$Kn>YjXu zkr550`%?-UIV&YsFBeSHh`4*b;|4qHR(xg{R99^W^LE{4uMlFl%E@DPed_LNZOgb* zCeJ?D?cJb4m^jU(L9-!ZXXWIA+%nO669CSBI}G*m>lKpf=b`iZB4LKxGPeloeRJki z<8Op#_M#RFTdEcBhk)&`cW^{iV^-|f!*m-OceDA8usJp)fc=0PD2Th>!w4;+Ex4?GFhq(3OL!O&VjXwC?ch z2Y;ChGtEXcK-7xzg@O$FDUT=K;}}!?T|Y-rJx53V&a*vlDbk1pzTZ6J%g%LirV275 zE{|%?`K{!u%r=Q%;mECGiG1s)7T5&4WY^(FtLXj@xF_$c*u*6h+tzAKPe__rb};&v z+eu|g5w;f0q5!t%8Xt#!Q4aRiW9`RC`6IUm`~*XmZV=scT`=({`!x6E>x1>cmQ>Sc z)@q*x9Z!c|4m?G?Q*Of0LFI{$dnH53hwr60is3wx&GZbH+?;y9@A|gPK|#~qn_?67 zCo^4To@@|>F;02&WWb#!4t+k;(%ROzzN;~EYAEnP#n1y2J(16<6hNd-U?C5#BdIn` z-Ly*dOMSgW0I7d? zE&p?Oc37Ewl@}lubHish;@0`oPgzVEDoR z-4t@X?la5G3%L;7)nqC=?tAaCPkmCZG@NPVG+$)rJ6EHPb9_CO~_|d#ZpF72t-yqvW5W<*OU$9>lPBrF2WX4#V+SzBi zwb5|>n&jT?H>#FjPTUHdth6e%SWc#`@ELS6;V@LOk` zi53`%m=|08UyYCn`6piNETwEuJ-$u!y8ZFhI+m5CsSglpq-O;xD7>94mtE}F`rcdb z*xbAX+A-Y!Qp;8yolF&7{?OnCZ+DCV416-hD@=SXVn&e~-QvGU>lA60R0YczY<1Im zxJC6uhq3Ugrw9_n))tu6zsuv6=k|=p7meL|*}!|AVszr!$EbC-h65CXR2^$u=BltI zC!99|e5&#{(VF{G4cAsEhnrey_#JpYZMwoJeGizDp|{+v8qdc3&Wp*ONVoy^XFffB zT)DK_hId|RXnUS+bnrsN(@bo!*5H5}R=DbXI8Was^;0r8@m74OW)6On5C1vk=H7IA zs$aa4_l8PM(!k}VFJBq-vu^3av>&G!zV(dlWe@&1Tt^<3*T{qb{S;Bi-(2;w92)zs zXH_zij3YARt4#4*jO0WIe9_@$0w;p}#&=E_goV+9*N&O3r!D0DQDcK3(uF4l^hIzn zP--%z0!?Kua`}DTZX#=iY~6r?AL!mV@iAiZOdQ=iv!nY}p>i^m8|SiOgo4X*`JOh- z+sYdrKC(!8DGh?vS9PO;$Hmnty$fKp%fJO7DuR5(q(d5bhrX`b;foWjICavL1;UmR z7f5bZ_aG3qXWb8OC`xLy@YPB`jnPZ{B%X60$KF~o5;+@X$Z`)U%ViTl686T19 z>L`|5$74&x_=5G>3XbJZKzIoJ*u%jRy;G*Ea9`ynPHiO_1j)XZ=@1BTO-<7*$*$E$M+c?@Pc-Ss8RjjfN_4zXKcSw@GkxC%k!Dr7U9<*)UR2;A=|i13!$Bm1O+Z=e0)4Qb5 z&Y;PEQ&zHLBlo;n!#fn>g5ucOUrO|%h<%ff)fddWz4V~a`nq!mE&4B~t${=(UByBt zYCbbwAvqt3PJIYu4e3<2V_fN57$qwjMX|2Q=cD&Zf0b+em9iyoXhWWetB--pA>*en z8U>M2^LwH)-$<(n7~HsBTDeR?=|1i~1R+3!L}`MY;D++`Pa z@JLIz(|Rh%c^luVRD@gql>b(w&3h{tB4tE(H>tkfY4Z6aE1SVR{LnAEY2KzwS3?>) z*9F3G*f)FlzeU$2s)tyWQ8w=_tL)j5WhTp-CY}R#BNwSLS>62~3jevh>oQzcagtw{ zv5K#j-|f!inTg;Q^DVT^`*6&FA$yof^(on1g-ZUkAb8mLmy)GME0<~SLfy#t4p|w* z{q}EWZqkGlNA^Qy+8rQ%63EBXZr0~HjGX!{**SnxId7{MZg>2p&kzjComo$XIOa9k zMJc|lXtNRF+~|%iMxCML171IUJkc|;+(1NjllOtf_Jcu%Oj__XZfJ%{h<2xxKl#A) zs;Zz^&Ji1BdduxTV98j#*xy5EhZzi9lZG~1wHQqO>WjLY5~~+-GL&UL`Mv+Y9r%l&2%i{pH9*Tfs^TPJtE zuYdB(dW4G3u2nyrY!GN{39ed>77FOec88{c2f?{2OJSU9_DO78=GKkv;hOfzt2x;b9o2nf*v_%SGmtA0p zf%;+8=iX9uga8YMOX{7sn$-4|9H5LRJ#VP$p?hrzIlO=Kc$+x$x{VHul2d>!FxjK5 z6rozlX#PM?DLTB#XR}dFrU~It<^{h&<@Nfe`=o+Tml_>@v83?IW`qhm%(=W9#!lvx zk!$vbhr)11NdmY|9|4Px8edGtGTI&4G$pqAFFl6d6UN1M$#)kbwdkY{SOsL*QT_CN zqRkG?h_C7NoH8?a!Qczwkw@IZqE7Pa75th`=Epx1UdrS{Zlf)T4NtEJ|F`U`=hXem z;GX`M=v(iT3q+=eMAur%Hrtu&`FU@5G)jOlSo5&wNE^)7E|wNMHN4)i)L4I!kNj=p ztD~pLI*1)aeaM+i{9eB-UwuwenDMfBF*b0CgKD@T3&CKaJBI8p=5oIuzb?BVF!}+g zNde@PkXp-sc`PQ`GzE`~V%~a*f9f!@=I`>3j*g@zFRp6Lxr@i8EAxsWGE=4znYtY> z1;t$Q!q*wRT(7H?bdS<~;4iP#3qyaY$;`VW8gIKy=*EVA?xC-WbUR4mBApZe;dv;! zE{kF>{vNg&sa*t{Y8Ce{_rgW(pd2o}TG=trpXz&P0B~*(QRgVfSoo?4-}KDQGof!{ zbD(g4pF*?y@R3%iB7ZA~qZv3+dZU&e-bZA{7;M$&X&tfdxjcWlA5u^TN~W1G2$5k2j`uP;UWUI z1cwO={#Lhq={aEoTCg@pQ5c|tXZG|p(}X$q#pi2!`Dc7{IfUX|3BKco?Zdew`S`Ca zZm`9dh&T50O@W?hDS^}I%2em$HRy+D0z!g`xqvOFv|zMG-=gpf-ag;3Wq==wEe(bF zsB$n&J(~E?t1|c6hf!b~!c&Q8x;{2pd; zuM}I^87f&8^a(uN7YSMqUt+EmnVI!Q&sQPA~*dU{k7x4`0 zc_J+OA|FeXd$|v1jK?vSOjHen5UbyBKZ-vrh-5(>eL>7N-dvdAUqwIch~ENacu8Rn z4x%FMFP>u-CQmbZFE6c3Sj#5=;&7se59Z-g^-jo|)2;^fSY~fDlIuts`n*YM#p88!caMu7 zyDf?(Y2qOx+Q;Qlaj}3jljqs3jZuLxiQX_I2u2|rR(Wk8nMv*@}b$jVPQ|`m; zk_731IJGqfGC^<&G%9(Xz2Vgi?G+i_8QfFEoshL?n)Bf7LPN{N1JYSD0m0T zEI{E_!LsS^8*xo}k0Gi^fR2Kjp9s9Wnem5vNJwuMIH`vjz8luh9k_h?&+r8Q@#gNv!zePai1uYY6v_#mZGmkxlx3onCBG@X)CZ zo`ayB_GbsMG0tn1(i*0kEt4)@6V4r@1;4c1Duq;tfuN5l&H!-K_=SBBcwb>1_KoOp zNgdxA#fxZKyI)_38VSevT(UHQ$7Zu~hu8U6WjKr+PxdTJS7^A(;9mKgb#DW?8a;t! z-D~f#LN;$vTcgWO)W=Kx5e4vsst4zBRtb$&#@4)~TjCGjCB%w$R>8O~bbHgbekbYb zF#4Wqdvaz;f3ou=-D-_3S!Z99(5*xiWCuaxVN1gAWFf`xzzm;?Q{L6}-w zjON{QbC_cMGvGLW&s|qa%R;8J=k0h$r2dnjIMow#&|%`qR{GpyPwh!??luZh>e@~ zov^C}!G`6KXM!@(;e*~yiV{^54&M3-7mV7J=Wc?o*EClUs^$&f344ocr+|;dOu~Kx zgniTsL)f#7z8Cfp^qE|AF_DbO`15}w`qbumD;`T!K_~$O9^k4W_(6>~{%^b>fQoqm z+18$YC!nY_Z12C#`a0!5&3YOiyozC|+~9Y@ekPs44gH(2Pk_%2ZugU+$M~7kY`1Ct zmsKw~nC^W$?u1{W|l66jdyJ@x$Yu?u19vZw_dwL^Wa25v_ ztmmD-lLWShWGETOjW z;=rZ-JBm`CkhkWA$_20eBy~9d;WJ^T)=|S{$T(2#X|HCM^)~`J$Nwhl=)6MrL&umT z7}7GG&QF7Uif%_pP+6=B;fslg`s43qJqn#7qOY8+6JVg4$$pCdxJ6uQ9nHdKN5arW zQn--c0eg|VUp`;Ci(liK8L8@0wDvY6+@Wz(iWvc+uI?#IG83?|HKaO1$enE}PC5L+ zu_qRMC+hhy7%>xSr@-Kyv|Z3Da(*4D8V~|h>EHa6 zHSWL6gFsb!-4SVH`(EL?NZOxftekwY5DKc#%OoXWUt=|$}zO3joFcvkLWYWF2 z{a_qm(!}?ueH1!-JqsVAKQPfocQ5}}D6RQ$OVT4cxXbmtA8(FL(q4I9Wj8JGbM=_2!^lU zKrybK2#91;g!1M~R~|0mN8smSJayj1&M4|N}&}vI($)h9nRd{rD=90?DF@ zx5H+%y)8Q|#ql5-o{F?s4Q6u7!nyLl4{ylxl{=nhu}_Ga0Db+i3>uzNSpEMt>gp79 zAWZPT<5Ly;KjTw%dvruen8}-}D!NyX-rNLxR)2}*=liFK1z$!DH5JAZdVp8;+)?tH z{1lqU;TIXWzs^X@h&>fbYy1wY7c4<%t~|QQj7r8W&P|Gg?AoquNXrBJ1VIr@(fK=q zp(cRI<^DPoA@jIyP8RKNSl#m|I<@3?a@6MU0Srg^@krhblHP${@;w`K8K!t;9G*$i z(Re_kVz*Lg`AW!TSpqw9x<4f7uwz8#q{Zrjs?4T&2kum-UjF@C8m87Ac2o#k(vf>h zt3tV_p+}Ffe|ZgljldhovP18yr(k7xM%kD5>%X*vYDGe&j z&Np(>yr;a+g#D=xr2qg$_6xrB255PF!>*7{YCtrXuSfa z58LeuGkNx%s3Z9uN_lBrQ7Ile*IQcGOIDSvMaDpt&QP&Lof`GzI{@PidwWJ-Do)c% zb3G*2JIiGVrpJ#bL?`N57`;GM$h^!Pr5M+UY z{%%tQ5s*O;{zJlZ;a?)$FP(+|@SQi+(?L?oRJ!Pr|iRDSEYdmY!e*bhCeTJCu5 zsR?cD?Fo`f;*?m6oHl-&ahr1f#hpdg556+y(jsf8UW_q@-8c-wu%;-2OzH%iz2?qi z`fj2rGYyuIw*@bBv^Sk&wAbEr@77TloiP!_uVX52)M%=HYRFHW$FL&s7{Ul*V?BQ% z&R=I`C{w$S^VxN&a&jzw?4aN!A!>~-!iU(2&T*1mp&R@~#DwrBj(kYyy`u>sKGbiS zzgaAUk6N>P`a7>>LSMGV++;q!eba$`TAZ5_))bdX$B${Qvi-{V30W^Fjv!h4=bNsG z!|NNhBIg09Y~@tf+|AJR{k@A6xrf9h22c-1SDfR`J6tS;=@1-gc#i z?2SmsFQUjuSwvn^*3Blzy%$2pE+hO%!Ls6-lNk zqStGLo!_1B&RW_}*{9&40UwLKBA-+}`&mS5YLOO#bUkR`6+bwtM9PkcGpDz`aU{kZ zty*xTL!>}OhKe8+yVe8*$&UpLO)v*2t5x&e-GVO_cU>(LLby`s3rN4E1#Fk3VhmwVU;PzC6x@u-pr&-G*+rcgv9uc{jork*h%=vR%hp z2IR~uo^#3Tue&KA_19n*v`l{2qXivcmlTy~jqMPLu&~K_ODC=o*Fw(7p}UZ}KC140 zRZw1GP0E|Zp{=PJyt@{Yhv%E#nw*PdNuUowT@qzm4PNj@nn0~D`j9pTcjRQ;xGehN4!ybM zSG0#N`i0A_e@x=5m6-lmzn{|XmNa1+VaANT6K`JO+E$elqtl#B+B%G+84AlFNN#Wg zZ(|I@Sl&KzOnT@d`H+_gb19n{s)9rQx<|gdc|s=Lfc=p7^#Qp~@P>$qW<+tjKtcan zI4#b*b2mX6A_{3i_8loj_Di@&o_o!s1ribW73e#jx~+!WY1SKONKDUgaBJ}Fb1*xT zz2>nsU#%PZgpmgNtufbqTPX~#8m{O@DoH9~G&#A~M*% zt~fm9N&qo+4=7kdAd%f|E>-0n)?=$BBmYmCsWvxCqX%6( z{cj0TRi`C-iPxbQduec3t!=UM@GC~Y8b~NBYDir>+9*;`zYBz_W!`Iy)6UgEU&L3N zka;fwcOf8^bmL&>F`Em6Ta(Arm&dN1Sb*f}e*4CJn}oMP^ULI;>NHk9KRclVOQz2d&v73GZoqo!lN?W;5WfPwuo)-SG z`W*Y~WcJ>BV#uF&z)i?y%5l}g$kpoXh@OA4xz?Rs@~Xfa+g6=_LD^?G#G zi=kV)UfX1ow;R$eif+`T?0Fr(s_?A@GVXycKe-3%tVbQcecn$o(_XpM_x6Zli zrYnLI3MC&h6mqM`{lcQVt}r9?Q+^smsD9Ijy-rMlm^k!=xPx+ESzAuPPc!k-o4AB^ z2OeAT6_leUh~q!{XlSdv25-j-eVm?l)mulR*RZ@GoWb~f_^ai8X@dI@_gE?iRI;1$ z?msO$GQN8H8-Xu-%y_q69_~1pqbDF)){L6-!2%g%T>jg~v#53f19cp^UI!wnA1aBd zCqr>7)K|@YFEmMt3{G>OgD|eZaeJOW*SRkBU|%>h_O@)Ca`L5{tD>5uB*vWkt|!7) z;HOssiP$#Q6MOqp;=op%{?*U~8KYZ@Bzw@V@s;1cfOX&p(d};f_5QlSOnUs;&SRD@ zdR*%SeU>}h=yd)efv9W1<#wGNWqJ!GF0h%b&B>Nhsx~<*CGI&3D-aQmI;b6$CTTkQ z=%MY7W~GU;BG)!YqR^&ae)R>dL?WfZG^7ok>x>a$MsplL=?O4~Tvf=N)9_Ab3We4P z{`rlN*$g?SVS14}vmEy+)E)HRzZy#az^heQO)!p#4!OvPGShBjR^8fIos6`^fw@N1 zHW9ihzwR|57|&%E9jM3{tTVUC6S)YxtP}u$)z0I6aE|otmB@GBZcGdE>MJSA7%V>; ze4VR`P{UE<(0h4#t}z_beRD$Q1?97?<0Q+Rq;+ER`3oFT-FDZR_S~bf{f`ILa0y`L zZWwwHy1PoQ?q;t>Yy{BFSn^PvFEJ+7=Dob;HcyrL5n|&x>T8bli6Ay&=*OY6op!Dw zdKwCF8Y?E;Obv!UjNBEAef9QWaJ+taN(K+y#J79ES>lsPMtddSH;ctp$(}az9IMIo#|?+gny~MET$uja8Z|B zVWk~O5#%vhX`F7>qdNh7Ww)4>}=F7W>(Fr{dse<+8a+J~aS+z5b2 zJ!W6yloMkOHlYaZO@fDBK)zMZ(QZDZJ`nEUx&6h^fjxdSGp72m#wP)G+ThaIP0Tn2 zCj#=(P(pu&g*0MPQ?wu+TWN7+pGK79%c$qJk-{U^$$2K6(4*T<`7jaj)>C+`Yuq z?z`3LyFp+$QK-O79q6Yl-9%Y!#yqk`>Vx)B9WnLIiT%9iLobWrE0X9}7{h7jLh*pF zUKOFi8D}I!{e(~#U38aOAdaFr2tivwwL;b+`Rf>bEiRKp(+nkjNWktDP+K*ZC zPHolK9a{w#FGODkca(!S_dR~rg7=}nvLIl{!@e)+rut99$mmYgLi+tOi`PabSD?G8 zxf_kYZ1W=EKAbblm2smUUOI(!@Q|la%@Ughqfw)#<(`Zcdr_mbQN6IvNvf)2#gZ$> zC-&o=F6{|Oz!@DMZc!!vrm!h+*eTev$_bt8smBkFVD@pH8?Pn&Taq`_rBHbg^w z(V(X3m)Rg%i#>=$%Z*urFC=m~dKW6T&qm78=*VR^&7u? zJlx?yFa{&HGQ6Mip)y458gnPo!h`p))0>X9XF6*XR@mu*gR@DfQ;IX#04###94S>o zo|-(ju};wivn}#NE4+se@b0Y32Mlf)D!6`rDaAU6RBS3h06?VZ& zvGW(O^qU$Ww(R%5ucD2+axc8%h36c^(+GV>Q!GT@l8L^6VZc&CQkP`eh#^?72C!b* zB5PxC5F{hHvaknd5*v7rE-7yukKk1n3{dVbkWvTVBz%vfEeuXz`Wv@qJMCyq^dxj= zaoSXAFp&jeo|wTGQlW{y$674a)|!HyjxL(zu)Eg5n{W?d#9rTgx(2W@dlDBC64mIy zDA)s3ZDZ1c@ZN)K4&Z@ySOrq$y%{6+`UWdBAk6)fRZ-p)XD>l+80Gdqs_<|m?$ZF^ za0$)|{mKb$jlqWZ2b+%(f)^^7Xh*CiWivksAk)N$RuJY{PxB2L!QZhe?+v@GbNP`o z3aIKn#9&pBwD)ifoa;IwICHLO=hrw0FP$lU-7<4-Rf++$`bI|BfC+Qj(<)RFpmFM{Wf-(dK|lD3f}aCt zv*PZOaM+QDF?=@Sj#5yOhi0KwklZ<_9X^VQ(2!mp&{E~6UIfc^!nS!0@#5UVuyNx zDJ?9$9#unMQ)o6)1sRt>pFsdC&Yp%1RP-&eHGA{|x{N6HVNYX|0$VJ?6yf}gZnl2e zB3_;O!RJF;lN*M2I9(#lS5gblcZ+_#tow1*ve_p6RowHZs1LUzn=Op5?eB z!8I4$lfbzV_Qc8Ib>H?W*`%ZqOx>z}yO z-4c?W{uca|3Iyzmjl4%Oa=68D=K+eZM4w?%$2@&0pJ4|Jpl8yLR8U%)JLb)EBmzw+ z1}{Mio$a_i32@wM3YhfxU-w8QvF!UCOtVi<`fjADXvY**1<7uMKz!P%_uj{%RS+d` z>UO69H_S+@Ah{6sP-%;>Xq9O)BJJl{5c#)nux6uGklbakNOBl9t%9_$V6V?4&jQgr zonW7=wqVgJ1&&~dYvpGZSniw9v4 z&+^@5BoA4hD*3MGpV^InS zL}}pJwS)3o08aHZ$7W2w!3!G_796KK?LqiBf6Ri=3fw^&JYBIg+pY%H?B}z=aU=%- zR?BNFI6e&=T0TOYiwVaOcL<~l(n~Sn_+R(Hg5%SKLb)sk9FHEr8<09vgZ$?9K4kqo z5p)k8w*)Kh9!m)!Gj8`+Pu96JvxlZavigPB)@pQmFsCNxPbtD9|#8~ z?K$Ly{FmV&Ph=h48NP6HOmiOJeoyhL>K;B{8g(4DqY(`;uoQU=pp zp)pxyP5X;49T#gB*LU(f=E)$DyRqYZt@6gyI2Q%KNk$yE$R}aw0(;zMEVuTt?Uw3= z3I&Rrh~?Y?Lb;}B%a&PEHSVWtyt>zr;!286D3BTq{S@QR;0utW<{ zzlOp8QTxtD?d|ky@E9Wx$ee53OAIu&4QFpo9rs&KwW}d3Xq2WX!`?G)oAiBR1HlL} z!Ux{nnn=iTPHmo>sP89$_yBKOnqle2+8b^^=;}IPUmSiSq5i`Jq{0TMNEenhtCbEc zBL$7`WDIbN@@i5DO0o6kdabKRQJ^-pcNXecYidi)Lg{d?LD$r)O+}r$Bm41kRAdUs z^#aCX3@?|Z8%ed!qWR_wi&PI6CV04n-7A_~f-7JEMZyW1En@Y_>Tl>cU1cRrOs+{$ z?4Ou;Z#tIM{lWeI$2pNAu%sq-eB+bZJ^rRBJT8?)%Ic?B$Cea53l;4&6zMDo0jxW! zhh;*u^cKp9g#@XLXy&@Jj1M32MgFV>hz~qu7?1mQwbf2ENH%IME6O-m)0Q!B?5Bp@ z%Vn<>5TBY7(oJL2dw5(;ax?F_zS4a^8=#cxBsg5KypyH?;`cuZS0ue>Cb3-GGU*4N zu&<<@n}h1AhXUJuLt~uYT+K!|youO+-@{`c`j6&qx-Z~q38&(>DVB3UmvJ`Vc8nI( z1|07~Q}GoO6+m4Qdhl0+?ghw6f%tTeFumkyQ!gO1DOxDRIrHbDSW#A2x^X0hVx!MU z(3_iD$30BWwt6A?w0lRUs5&s{RH51E@rkT{l?M;|a^2lB&yJ3^HB|-QJCTrT7}Yk1 zlMBmA!@1rnEYjW}Rn63vQceZ*V?8%CNDcR^I>K$3s0&ZYPqyAMMXmw%yfOA*PG3af zPL3&DxL(5&Gc5|brWkJfjA`Ce$lHY+##1sJueAzswxR1`X2!36CHHj)U5Kj7^ZmdZ zjWF&@dCgKlQ4v*jmbh-rfyKMd+D1yxb^z8{x5tB!zuBj++gZ0$z;l71c*_EeY#X)j ziGGmir*f}scejsYW2`>ldx`thsYHlGo6=_SDAY--6e)GZq4qYL?9=Cw&+GgHflo$} z5$6hqm!Ue{l9LH{N@#Y@yX2M^oKkPBT543|KhBrC5WVXE(JX6amzqg$mUmzGAFWJt zd}h6?gJc)rhv^Gv&gy8{CgT~OKc8Sb62p_#aFX_epPf1idAAF9R*0f|Qi74&tCikK zRo_RbYnbBHncq`9y5%=tBo8on6BPrNQuBM-74_s2jc7qV)dLjkhOc$3PDlbnnZX34 z1KiPQ_t1>2lIT(wdBRj_b&M|QH+posObikC-@1k0=lS;R{mJ}%JC zwMS-iV|cH@&t7XLBBfX4I#iu%E#%4P4QbEiL(y9A-C6i5s;`yDz5SK$HaXdrJ1FC* z{eJ(nswS@dGk=#7zi`^ISt20se&0SrVzY(feZTA;X^RwRW@4keQS0j3xq{+$SF!UH zc4`@p;iaio>?F6=@io-VQiQt9-#G$Zn&^6e#FQ01;QgL-AX z^2v4|F3L0Mv(fCPP>d4XYyRk#NLv6q8it*jrsi9^0mK z6{K9U7Qm*S!$4qZ8q3(OFUNP9fZ4aQWn`0p9lw4}D9sIBZ#FWei_uZ{vTd6Qp+7EA zMMzw8+w(5CLA_L~Ma95@smQ z{g{2eGMDtV$Gj(#9(dJ|$o}A5lt{9xU-a!l3=og)nyLYnTFKhZ%(mNIXh#Nr;+;M} z^~#axl>JNQ@iD$LkQ7hbfW^N9s>@kTi&b$Wq*wvl>N?;^jFRl9KtjJ43`E6w45k*8 zZ+&BOY<(y>TzbVgxl^(%)hhL9V+y73deNMVXgbbY@yDG}+Ie9at#SaM7%5rsW9=nH zodMhn-p4sfMo|Hxopf%Q&h55apFO)rDw}4&8$RLKnr=cZQHv9xtyC!P z!;E>m(%m{AdgXknp;tQ+CB?#1z>M8Im{VW{F`SJyX7vykkpC*2Z5Y(*eas$my(Nol zwxBr^ZQk>9+~Mem!5DlnkZoNw(gCr!^aP zCXy#Rp)hf?Fb+YJ7fP_5NiqvW7$<#|Icm65yM%%ud0r?>5!XSuhviHN0Oy;l*7*~i z#x}#U-&|2JY|5#{v!uW)TzZ_B$k&xQ5{aT$gEad!7Q8s@K9R)%YLw3P|1gE~+T#+Nv{i-KesfLDmyRlyME#GhR_%|w>ZR@L}` zlw<7+kx#N{rx@RHHm5RW!xbDd2{oadeLv=ls8ax!)Nf%YT)XJzoeCDE{U5|EIXnh$Td_Q&*y>h}w};15H(mMF0DChLFD8zECm`2(mZ#PA0hDiP2AP?H&;z3m4_lL{en5DS8v;#Ct4@)P3;Z;2m1)03 zSzdkO^x61iZqgT&Mm~aFUwJ+ z6Nwap%~b-ZXWDrz_3Y>l`%A`iCw)!l+%PoJdwA#>f0|TXW@$%FGMSZqc2Zm`Y$2}C z^5`gE%T6%(j71ncc$!pyRVH1t-^XEO>_BImBR(@{88LO5Rp#hp7nq__BSAlrebS8u zb<=?W(kX|>>R64}%Y>+%5ZFs!o4FbhBR)cMp>Bku|35JgN~DaP)X`fnby5BRV!wiQ z80i!{tM+-tC+gYHtWxbrO0hjzRqxML4a@i;p7R97bL|2C)Fgf}v^O;fF^#a$F1led za8tzRnfvPx0$NeYYLf5kGZ{9S0L?w0lS7UB-0#=T;S37Pcvb-@pSdu>fy%tmtZs77pu;jG7ko@p21Wvo+ILH!_*Hw%`w6jBQYL$C^=-Bgm8gZhymtp9 z0Sn%xp`&YkX5x@*BcSTQ3${69xo125GZm23Yse*4ERJ_}uT--KmRyX%^=n1B(Own3 zFATX!*G0K9_0X~@Ygl_utALi6xE3cKn;8BM+u820jq@NB%OEz8=vGsjmE@~#lr_ts z)uf~>TZr>(xUlkEdN0?FeLfedkQ5Z}&BZR+qDJP}er2*y-Y2R*8&U`N$PUj)2X_de z3I5&;>|DZ`tL}a0cy0=$OvU?}g28dG^m4+M`%ZT%xZ7Zm&IRtzAy@%LPi*Xgs_j(v zhki@zJpSpW?*B8VGy$hk_JeA~T@CvwH%pQtdMeCOD5zAO_dHy&ZnYNFnLPw|ga&`^ z#uyps+GSq+=RUfR^;Ihzsu5*p_mR^Z$Qs2sWb7t#DLMSd10lFAUw{tDzP#1x%V8jN~6LM zJ9k$>q?ZvNhp{7A<~@>SN|ubFX^zT60qTm->WaLj808uD$8JeWzKa?HhVbd|Fugw1 zq%Y;JCsKPvP@HS}!_Eke{<`8Y(tl}NAlLDO?Ya+c+mf#JQ z&OaI>;~U>{rV+U4kRTVj@iT?glY9kM+K9FiR_V`~pw(K^vN)%H zKhM4-BgrRW`!tcpDCo{t3^(mun77UjGLnQqxcT!Zy0trA2=yy+;Fv z%)LAP=kvEDucfxUo~;IjTc2Hj`Fhq+9g78BJ3$vrb~%U9@)dn zySx5vz>tYY^?(B;na!n_Xo~~K^N(@0?a^I}J zsBGYGkWOYDwdG^`!5pu#CqyW`+u=s|lqm;&HJU)EF`E&T+_imT8SiL8Ot#&@I1St< znm%bvhV}`x8>i*t?=u%B7koJsTQp~=Q=OEPea2^^+Z`HE6lA3lPB~Dk;h%SAIhN(3>lX);gilU!>9h=ZsWB%Ow?~n>VYH#0H`JWIJ2~+mG3LR&lDQ zOn1n=FLgSVB&|q_JD4Mt;Lg_)B|~i~0qF9-Gu|w=dk1SXQZNNpS1#lScm}i==#uUC zor>RT>Slp-Xf5!#<3CcPmd-_5oK&pRtcp{lPL69jC$`O@5|W>Ilei&G$nYN19)-pw zaMFHIt?jofpFc9kCtqlC#^Y2CuLikq**cC;ZPBN_2Hqxy84?t7k&E`z=DLRxQ*|J& ztX(+5u4D23#(RHT%iZAom5!sm_U2p53{K_CCE3K|cbtV!rbB_MOhnN7= zVo1zVGFstRn(1G3B9hWzDCx9N1}e%c(V{#E{W#As`g{tqikAeJW>vX7OQhtV<(v4^ zAGNSSVra9p2t=1x(*i&B)!C+6LU^lgoxL}~UCp?Uzu-I^of?GGGq;JLPTJ*Llz5`2 ztVlP4La}noCV6caMbM1ls4-U4=a*u>_9KIppC+%?q|}iYIhJq*kVr5Tw^f$>I%6d= zq*JkA9p{{|jEnU@$sQq|hXsRG{{iuhpvwbWegf0l$rAO~2yYL-qlOqPLD2V3;+)m!s!O0UF1oSacbNkOwoQnV|Z zt-rL#0?FEyr~lqDl+8_g8dO(1SiKR&iy0D}j`QXZ$TXqC&vwC4gP0gT~XT zhqhF0r_-yI?%QTS?MW%KCZ*p3Ej%%S$Hc0|#8RU?9awL+0?jd(7w(+r??QquuphqX z`#osBB3e1iUBK6_n7!c6U$p=Wei;;uy$P*gbcmlm{&bqa85q2L8Dj7HwI*7M^~Q|G z_(5Lb9PYi2_#W*^gzCG7+8g~3G)gOKk(N93Km0Irhj1nNjtg~QR1VFA@SJlT#7VW%g27v6>jRsG1TXlqhKhD4 zV0Lw5u?=W7+D9GiYPQ;ieRUm!bh710ZX=oC{1;1Ss^)BWw4*NkJYSc#9u>F{AikMz0Wi6F!_D^)ESC(Jj9CWSl_rXgm`|_vgW0TPvZ^~>EkxeUl zJ0(L$^s}s%XgiA!EO{BdYN6hcKGU@NZ7+r8T=csDBEw(oFMmmSbF3>TG&^+u6jVGY7EC>D8D$Y3ltxSBZN`dlt=1#ju` zZTk08GRF9+`Q7gT8an&bv&{Qosz(Inom$nyp@hQ-Lb-uF)%L1q?a;{a-pYN*V~oU& zghcyaG|`lu^JfmKqdlf(1B3q#DHAJeE0Z9I3$8T;Vb>3@m{O`!qExgbcfUA=zFzKTWXe(3J|J&GhX z-=a}G(weVJEyT>7`7q=y`8ek>v^A+_YQDB4=l5N2yM$0()=(Q_f(wftaYQ>A3m|r` zzvhzTO}kY5k~rN<{<9eF*$qfSt*Sb)ffUc=JqEsUK`XSHg8v+W4#_>*b*rE?rg;Rq z!Ej%t)gj%w$O7$+i7wwq;EjIJ?_?LZxY6=gGR`(ZcQ=rJ1we}V9tcLKQ&h1g3!-eK z=EteR%ocg4yp@t{FLV}3*R#{~{Ri%8=43moQ>@Jh3tl)Gc_gQ{%|Ti&EP{*sDf3N7 zJvDAO{Tf%(7X9jpOP)7j{>qf;ku+T|C7;b6z8g>M!e|`h_nICDjg!A zHF~E6#Bc+$+5=z4qilb@6e;F|H~pm(1&C64*1j~09-C@r@Oc_EMi-MrF)bWQ$ zlZRY?;+7QUXs{VV+Ddwpz4DsVgAeS~%By{Rfkv zLEck^<3ub6s`hMe2psCvV_~Mugep=&r16%~Rh-hZQ=m{U+^Pn616imzShN42VjxJWA>rT@++HD6%{-r^qJn74XP9&NO{(f?w;=eKN>?$ARo zsfn*{edQ_frA9=1R>~6xN#ra;Sf&|zh5mtBHOTQ7tF}84+qk{muPXvSO*Mr#nOs^p zmoRa6DYSZ`2r(=q2tT4Z{?VMK0wr9U2r}|3GAIUB67?yv0t1xX)m}Ai6YIM)ztRo6 z&gAk}c*qW%yBmvlBRD%Sps9#b&q{cshEvahWOt|Hqe;*vDv&NjQQkRXo>Oh2(pHaFqWe5X5;3)~+uv*@L7iG59v-3a~6q{fX|Hhi$2@!a5C zv^70)0i4s&2i}g=U)$R{iZvB3DeF%yK)B|o@?R$z)jv*gWSk`=gE{N0entwF0#jDd z_OS#p74$O>4Vs_7l9$xjJd%5MGL_rwV13q3yx_}eCKT?u{gy={vGOMzD&Y$^uL&V7 zi~5|AO+V_Tq-&h#it_}ITaQ-LiR(1CjTZS&ZpSDp>jqzioOnhXK zU$Etq>$Y3;@grl$K>b{{_4r90#|U^pPBEhG@-yH5nBouEbKr6qc_ zueizHB;!>;vf^N5S~lWpAL8{M4Z0Rf8ljcky7- zs@^^$`8ebby#(j1h0`cOpzwXCnY!V<6q~pN3m3V`-fp|J?kk*j5v}ImVxNXAqnX9S zyrwwdaT6ytRX-eZBCeJcM7XS~`7)a*zlt!P8_WFE7rAoaJY{7w(TWbH`HR&)lM$n*@flY=Ei z348D+P)6RvWdWlOJ#au^AY;Z&bKc zT0D5D;^*$x=sEiQ5oP7M`iOo@+agg!t6AeW^gaET5^REERgbZUcXXZYwMvZ?^S{zF zJ%7bJ<$6Bbp~m`f#5$ug)VjRGJ(Pwx^PB@`^1!|YB`=WiV!^;3^;NK;osg8@ z@udWg)XzfDK6r8!(nYV1l{MPl4M6PaZAC{&PoY9|LJu8ZLd#O2E`1qwuw$Kn>YjXu zkr550`%?-UIV&YsFBeSHh`4*b;|4qHR(xg{R99^W^LE{4uMlFl%E@DPed_LNZOgb* zCeJ?D?cJb4m^jU(L9-!ZXXWIA+%nO669CSBI}G*m>lKpf=b`iZB4LKxGPeloeRJki z<8Op#_M#RFTdEcBhk)&`cW^{iV^-|f!*m-OceDA8usJp)fc=0PD2Th>!w4;+Ex4?GFhq(3OL!O&VjXwC?ch z2Y;ChGtEXcK-7xzg@O$FDUT=K;}}!?T|Y-rJx53V&a*vlDbk1pzTZ6J%g%LirV275 zE{|%?`K{!u%r=Q%;mECGiG1s)7T5&4WY^(FtLXj@xF_$c*u*6h+tzAKPe__rb};&v z+eu|g5w;f0q5!t%8Xt#!Q4aRiW9`RC`6IUm`~*XmZV=scT`=({`!x6E>x1>cmQ>Sc z)@q*x9Z!c|4m?G?Q*Of0LFI{$dnH53hwr60is3wx&GZbH+?;y9@A|gPK|#~qn_?67 zCo^4To@@|>F;02&WWb#!4t+k;(%ROzzN;~EYAEnP#n1y2J(16<6hNd-U?C5#BdIn` z-Ly*dOMSgW0I7d? zE&p?Oc37Ewl@}lubHish;@0`oPgzVEDoR z-4t@X?la5G3%L;7)nqC=?tAaCPkmCZG@NPVG+$)rJ6EHPb9_CO~_|d#ZpF72t-yqvW5W<*OU$9>lPBrF2WX4#V+SzBi zwb5|>n&jT?H>#FjPTUHdth6e%SWc#`@ELS6;V@LOk` zi53`%m=|08UyYCn`6piNETwEuJ-$u!y8ZFhI+m5CsSglpq-O;xD7>94mtE}F`rcdb z*xbAX+A-Y!Qp;8yolF&7{?OnCZ+DCV416-hD@=SXVn&e~-QvGU>lA60R0YczY<1Im zxJC6uhq3Ugrw9_n))tu6zsuv6=k|=p7meL|*}!|AVszr!$EbC-h65CXR2^$u=BltI zC!99|e5&#{(VF{G4cAsEhnrey_#JpYZMwoJeGizDp|{+v8qdc3&Wp*ONVoy^XFffB zT)DK_hId|RXnUS+bnrsN(@bo!*5H5}R=DbXI8Was^;0r8@m74OW)6On5C1vk=H7IA zs$aa4_l8PM(!k}VFJBq-vu^3av>&G!zV(dlWe@&1Tt^<3*T{qb{S;Bi-(2;w92)zs zXH_zij3YARt4#4*jO0WIe9_@$0w;p}#&=E_goV+9*N&O3r!D0DQDcK3(uF4l^hIzn zP--%z0!?Kua`}DTZX#=iY~6r?AL!mV@iAiZOdQ=iv!nY}p>i^m8|SiOgo4X*`JOh- z+sYdrKC(!8DGh?vS9PO;$Hmnty$fKp%fJO7DuR5(q(d5bhrX`b;foWjICavL1;UmR z7f5bZ_aG3qXWb8OC`xLy@YPB`jnPZ{B%X60$KF~o5;+@X$Z`)U%ViTl686T19 z>L`|5$74&x_=5G>3XbJZKzIoJ*u%jRy;G*Ea9`ynPHiO_1j)XZ=@1BTO-<7*$*$E$M+c?@Pc-Ss8RjjfN_4zXKcSw@GkxC%k!Dr7U9<*)UR2;A=|i13!$Bm1O+Z=e0)4Qb5 z&Y;PEQ&zHLBlo;n!#fn>g5ucOUrO|%h<%ff)fddWz4V~a`nq!mE&4B~t${=(UByBt zYCbbwAvqt3PJIYu4e3<2V_fN57$qwjMX|2Q=cD&Zf0b+em9iyoXhWWetB--pA>*en z8U>M2^LwH)-$<(n7~HsBTDeR?=|1i~1R+3!L}`MY;D++`Pa z@JLIz(|Rh%c^luVRD@gql>b(w&3h{tB4tE(H>tkfY4Z6aE1SVR{LnAEY2KzwS3?>) z*9F3G*f)FlzeU$2s)tyWQ8w=_tL)j5WhTp-CY}R#BNwSLS>62~3jevh>oQzcagtw{ zv5K#j-|f!inTg;Q^DVT^`*6&FA$yof^(on1g-ZUkAb8mLmy)GME0<~SLfy#t4p|w* z{q}EWZqkGlNA^Qy+8rQ%63EBXZr0~HjGX!{**SnxId7{MZg>2p&kzjComo$XIOa9k zMJc|lXtNRF+~|%iMxCML171IUJkc|;+(1NjllOtf_Jcu%Oj__XZfJ%{h<2xxKl#A) zs;Zz^&Ji1BdduxTV98j#*xy5EhZzi9lZG~1wHQqO>WjLY5~~+-GL&UL`Mv+Y9r%l&2%i{pH9*Tfs^TPJtE zuYdB(dW4G3u2nyrY!GN{39ed>77FOec88{c2f?{2OJSU9_DO78=GKkv;hOfzt2x;b9o2nf*v_%SGmtA0p zf%;+8=iX9uga8YMOX{7sn$-4|9H5LRJ#VP$p?hrzIlO=Kc$+x$x{VHul2d>!FxjK5 z6rozlX#PM?DLTB#XR}dFrU~It<^{h&<@Nfe`=o+Tml_>@v83?IW`qhm%(=W9#!lvx zk!$vbhr)11NdmY|9|4Px8edGtGTI&4G$pqAFFl6d6UN1M$#)kbwdkY{SOsL*QT_CN zqRkG?h_C7NoH8?a!Qczwkw@IZqE7Pa75th`=Epx1UdrS{Zlf)T4NtEJ|F`U`=hXem z;GX`M=v(iT3q+=eMAur%Hrtu&`FU@5G)jOlSo5&wNE^)7E|wNMHN4)i)L4I!kNj=p ztD~pLI*1)aeaM+i{9eB-UwuwenDMfBF*b0CgKD@T3&CKaJBI8p=5oIuzb?BVF!}+g zNde@PkXp-sc`PQ`GzE`~V%~a*f9f!@=I`>3j*g@zFRp6Lxr@i8EAxsWGE=4znYtY> z1;t$Q!q*wRT(7H?bdS<~;4iP#3qyaY$;`VW8gIKy=*EVA?xC-WbUR4mBApZe;dv;! zE{kF>{vNg&sa*t{Y8Ce{_rgW(pd2o}TG=trpXz&P0B~*(QRgVfSoo?4-}KDQGof!{ zbD(g4pF*?y@R3%iB7ZA~qZv3+dZU&e-bZA{7;M$&X&tfdxjcWlA5u^TN~W1G2$5k2j`uP;UWUI z1cwO={#Lhq={aEoTCg@pQ5c|tXZG|p(}X$q#pi2!`Dc7{IfUX|3BKco?Zdew`S`Ca zZm`9dh&T50O@W?hDS^}I%2em$HRy+D0z!g`xqvOFv|zMG-=gpf-ag;3Wq==wEe(bF zsB$n&J(~E?t1|c6hf!b~!c&Q8x;{2pd; zuM}I^87f&8^a(uN7YSMqUt+EmnVI!Q&sQPA~*dU{k7x4`0 zc_J+OA|FeXd$|v1jK?vSOjHen5UbyBKZ-vrh-5(>eL>7N-dvdAUqwIch~ENacu8Rn z4x%FMFP>u-CQmbZFE6c3Sj#5=;&7se59Z-g^-jo|)2;^fSY~fDlIuts`n*YM#p88!caMu7 zyDf?(Y2qOx+Q;Qlaj}3jljqs3jZuLxiQX_I2u2|rR(Wk8nMv*@}b$jVPQ|`m; zk_731IJGqfGC^<&G%9(Xz2Vgi?G+i_8QfFEoshL?n)Bf7LPN{N1JYSD0m0T zEI{E_!LsS^8*xo}k0Gi^fR2Kjp9s9Wnem5vNJwuMIH`vjz8luh9k_h?&+r8Q@#gNv!zePai1uYY6v_#mZGmkxlx3onCBG@X)CZ zo`ayB_GbsMG0tn1(i*0kEt4)@6V4r@1;4c1Duq;tfuN5l&H!-K_=SBBcwb>1_KoOp zNgdxA#fxZKyI)_38VSevT(UHQ$7Zu~hu8U6WjKr+PxdTJS7^A(;9mKgb#DW?8a;t! z-D~f#LN;$vTcgWO)W=Kx5e4vsst4zBRtb$&#@4)~TjCGjCB%w$R>8O~bbHgbekbYb zF#4Wqdvaz;f3ou=-D-_3S!Z99(5*xiWCuaxVN1gAWFf`xzzm;?Q{L6}-w zjON{QbC_cMGvGLW&s|qa%R;8J=k0h$r2dnjIMow#&|%`qR{GpyPwh!??luZh>e@~ zov^C}!G`6KXM!@(;e*~yiV{^54&M3-7mV7J=Wc?o*EClUs^$&f344ocr+|;dOu~Kx zgniTsL)f#7z8Cfp^qE|AF_DbO`15}w`qbumD;`T!K_~$O9^k4W_(6>~{%^b>fQoqm z+18$YC!nY_Z12C#`a0!5&3YOiyozC|+~9Y@ekPs44gH(2Pk_%2ZugU+$M~7kY`1Ct zmsKw~nC^W$?u1{W|l66jdyJ@x$Yu?u19vZw_dwL^Wa25v_ ztmmD-lLWShWGETOjW z;=rZ-JBm`CkhkWA$_20eBy~9d;WJ^T)=|S{$T(2#X|HCM^)~`J$Nwhl=)6MrL&umT z7}7GG&QF7Uif%_pP+6=B;fslg`s43qJqn#7qOY8+6JVg4$$pCdxJ6uQ9nHdKN5arW zQn--c0eg|VUp`;Ci(liK8L8@0wDvY6+@Wz(iWvc+uI?#IG83?|HKaO1$enE}PC5L+ zu_qRMC+hhy7%>xSr@-Kyv|Z3Da(*4D8V~|h>EHa6 zHSWL6gFsb!-4SVH`(EL?NZOxftekwY5DKc#%OoXWUt=|$}zO3joFcvkLWYWF2 z{a_qm(!}?ueH1!-JqsVAKQPfocQ5}}D6RQ$OVT4cxXbmtA8(FL(q4I9Wj8JGbM=_2!^lU zKrybK2#91;g!1M~R~|0mN8smSJayj1&M4|N}&}vI($)h9nRd{rD=90?DF@ zx5H+%y)8Q|#ql5-o{F?s4Q6u7!nyLl4{ylxl{=nhu}_Ga0Db+i3>uzNSpEMt>gp79 zAWZPT<5Ly;KjTw%dvruen8}-}D!NyX-rNLxR)2}*=liFK1z$!DH5JAZdVp8;+)?tH z{1lqU;TIXWzs^X@h&>fbYy1wY7c4<%t~|QQj7r8W&P|Gg?AoquNXrBJ1VIr@(fK=q zp(cRI<^DPoA@jIyP8RKNSl#m|I<@3?a@6MU0Srg^@krhblHP${@;w`K8K!t;9G*$i z(Re_kVz*Lg`AW!TSpqw9x<4f7uwz8#q{Zrjs?4T&2kum-UjF@C8m87Ac2o#k(vf>h zt3tV_p+}Ffe|ZgljldhovP18yr(k7xM%kD5>%X*vYDGe&j z&Np(>yr;a+g#D=xr2qg$_6xrB255PF!>*7{YCtrXuSfa z58LeuGkNx%s3Z9uN_lBrQ7Ile*IQcGOIDSvMaDpt&QP&Lof`GzI{@PidwWJ-Do)c% zb3G*2X)PK>Q7Zz9rbvOlO2vU0N{!W6t5^*}>q;e}0@gu@QHqcvk>Kpd&8*e`VAiZ9Kfuj-`|PvN zIrp7=!_I|q(QYoIT?ip=bKja1Pl$tv5LV_i0+v$6)(re%GUKCX6ZKV}E_@JV&Yqj# zgr6Lzl{*M|A!hEJHxjbSAKZ*7^0~KVTl>lALlYP6TET2c9lKjsHo3gQZDsr5*1?w4 zZvwv&KQD6@I=XBmu1cZc_})(O;S2e9{Z>zUZkJ2c{LI6vPaRZQZ{NT1sUZBHffh?c z_N7}!qcMS3;2-0QKb?^reh0DwLUwqF2$2*JhL9BkCqjf{C4_L^3`@w5PC`ONZ$5)Q ztH84g{I4s}Vfosf=s_mNO-ZrpRA#&-`h%)7Pde0Ra!;Bb&NZZU<@e0% z&P$f|=R|(Ie4uCB$KUt&Bs_g={H2mxb^1irss48j%G*`ep(R>tyH=YWnUnfM`k1)Q z-RqSv6wKp@_^W$8JCik zYlFg)pT5}kcjJpX6K2J>Qe17wWuL!>}EOKp1Si0dkv)Veo+AZ%}Xu zBD2BqBS=LOvLjH-N>GwnngDVTX8mQe3-=OmDTuDyjTjoSmTe0{!e1g`xi9qmjD%~7 z2-CI(Ty?v!n8+{qTD%R`j8_0&0^T+u7B9oAZQ-96`Ebuz1WP^-e)-Rfb-b51f=Yw1 zko|e_A@7w6a10jWk%;v*f|elpwsrghIkp8LM|~_uet!|!bWD&CNasiUG*m_MDPh)J zMRMa9w&^qDizEhpcjGg80fxQ20ma_~Nj1}8_ymS^A_*x4h1^Zxq-#SEnJ2@F#o+!G zq^^39)xyUCTII(8k@JvXK)iX#d_aBxWD4Rq@GJp<5I~w;7`A3Pq^9m6O!GuwPrSvE zR9@2(Y?_dZyc1gS@(Og|S7#yThN{T#!+QkOiFxmh@Gh9ck)!2s8Vd~pe7AN0;=)&F z5+JjA2sZoC9e{iZx&Z71$w*cp9}f+k==o$mfjIbVp<&NRruf` zQ_mK|z_)#Ce|=!tt%}(4Vb>y(iFlCzeffgKqJxWVgY5}VA8A$BG^$GW?&m}1h9h}> z^?9$#6Ig*rZ&vM(UQl&=R<4)t+3abCfvC@ivTC~@E7-{1v7>}56o$s_%Mxtna|ymT ztF6_ImDzopx;)qC?;Kr#HVR6TERS*&7R|^-w)1NZ)xNQofq`EtSsA)7lq(EZdX0vW z{mKjV-Bb64d+4&Agxp^aBw2bNnJ<^QbJfT>I8bZ4V0LNCMpETDFU4sTS($`q*$ zwR}%Wn6OthRZCHTQT`HAc*(4K39syV6n(5%YpRE93S6gv70t+)#R}T?*=b$@O(dnc zd5|!545cZI=EzOXm^c;Xug5K86m%BhZQTIMbwR^wi@H_= zz8mmCL=8ath$@aiBxg-k9z+Jg978=XVXRE0>4`8Ka(*(ad?EdHhFzEt2y-SJZxdNxAT{M~dV zO+82p(lTDc#Rk)wVP@8>#im1IspwjWJ>5Vjp*)j%dSe8K)KkLaFbC5(-WXIN=cpM? zkbBzE`w6qSfr>p2b1gM@ViIHS@;#8avjW*GwC+~uR?&7efp75z%9jUGF0^WW<0RY# zTGysB!e9;$bEJc#fMx?pn8ADkzn25Bd>B9)orR*y!!pQHP^CP7x#M?TO?imgTl&%)FO2$O; z0en0a$q#7tN}6;g`n{CaO^i+R9twcnLE?e_D@DKMA<|u^B>dn$gGqsw@H1N{rBdY1 ztU#=Nzca#DYHR5}Y`xy78ft-Z5yLh>_@hm#Q%}D#*;?Z)#YL4fbK^G$CRRMwF-{($ zrgH4)er1BqvVGC_{asPEJM9S{#3?KztGi88PBO$#?Xw1ol*__Z*2-%~@~nVZ-!|k| zCZ?CqUp8b?pXn(L^&|QPoCE`4cnmgHh1W$GS_d1WY>(QXJ}oP1RZ0_Mr^hDxYm;vM z%>&>V3VuDj+IkO~hPpJ5vj#rW&eZ;^^ziER*|)z-E_BqLelNIb2U@KxPqYo5OZe!? z&r!De{8N1&X-f~Q{1YvmIjURg%RbL>Gn|EM(82w?yWUA1yaVLZpQ3Di*N((B{_%8Z zZBRWcisU4o5SNp;)Y7etwft7}n#tdHfyG#S-!>z2GU@1e|KoEgQ}0hkO{j0gQ0JlW zx@FZly*)wv!wC|(T#I3K_kz*Tn)}GyQ192%Q$E9spmE}wS^g=~ikq7hwMD!oqe7=U zv-zZ{vGvA*r0E%DMniaqjOgFsV8)d#Z;fL5x5*9aKLYF7He6X;%`G3qP%{ zkCQMjDNO3e-Zy;yYhYN1mVu37UwyY)`lKY8$#BJyl^jo>*126Dq1!gj{sdPCxx>EF zqz8QMV)=tomQ7V{-Mk;S69_>n9 zMITA|Q}vr#nvVImc|^8z%GF^Ue+R0mIc9gl>nUIUrJgcGsTt03&ou3gdNc{QD9*89 zCjD>^-0YjmVGUe#ghaNTGULqJn?{r4Z)JW-G`GIH8{CCWTZW}b79hl%DbnhcLPvi3 zl>EbJu%I%1?H=x8PfgYR;Chz-uIqEaXlUT=xV9AP%_arvd$HsAsEj!&(vzzT9mOFy zNCYX;`c+uJM%TUKde*xrdIo>QH9)ldb(~Gx^y(nq_f-i=yJVhp1!mVVtt3>g_?)M~ ztu=#as#YCH9v;PEoY627VN>@b766z9=trtVx5mm=tL;wvx=hDA~JN zoBq%g>R$PE(Q)S@<>HEiv6ian#B`})+0YkfU-LbeCbis9oAwkRxgBOSR1{BAnyt3Z zCE??}jStOc{Yg)J@4vIM%Yl&LtMjve0z9k0vkLs*RAA8etoxjOr&BjQ#QRI;M#arh I&z5if4^~fzk^lez literal 0 HcmV?d00001 diff --git a/test/goldens/rectangle/rectangle_028.png b/test/goldens/rectangle/rectangle_028.png new file mode 100644 index 0000000000000000000000000000000000000000..19b8eefe52945508ed44eac1d733ea104dd0e07d GIT binary patch literal 4277 zcmeHK`%jZs7(Oj^Eucb6oa5S3ECdm3>4sM-)YguH)G}@~-slEMGiyI41(Fev>0}75j#0o*7Wkq>cG}AJtA9Yx59d4Qd7t-r-*bDD zPq`;iu*%KH4FIqz?sHxe04_8D@TsJaAkt8DS_(h7!XyC~wDkK;!U>^}8<$LiO-9OA z0N|M!$BRua)=WPcD9_IIN1nHjGfhm_b!iF(DZ=c(+4u0zVbX~dX|1nxqCX$?xkcHp zze0}XGu>97PoP8|%z489H9K;0@*nM>cI(T|0hhZ=U-D006z=s;gpCM5%viOU3geo0 z%3<$~!vl~_AOWBz)1Yye6LfBf^D;Oeg0nJwP*tqohH!v>Kee#}#eSJ=8yM*ngoryA z{yHkN{LtApTb5h#_Hcmd`N##`7p-M)nWOp=Ync4$x){;RfbA!uN?%9sC>k|BP?@ml zKeUxXZNS^h(;Z90S<U1+@Il7^8IQe&6Y?xz$9y!N%&-K13)p-N!!ZUc7{Xx~l+J z?25Mep*RC9GeD{=UQcso~`h9}fr#!{;=Ft(mRV){E`>~-}NtsfU} z8F!ISdD0A@I>J3>#K=PxcC|xXIp_#+sDc7;71 zg;p2P!j)~vbw|QR$GNm5eH1frET+!rwjdE z4~iGAuIU~zBrmRTA0gOsXVu=uiibitI*Nsq8f{0`qPQEE;_xZEZNbcZ8OT3SBOkKo zQ%I&78tQ{Z)wTs98AhV6$l{u6-$xd7lbllGQ~1kn=~+$kAy3;fY;HAm>qTq+bNkHV zCK5Ol_`&X}=Z?=*qBE*Y@7B_(ky=SDR(BBt_Z~@b&4Jt&p*@N8oS)=-$$|SqI2Jlb zev_SP_*HB*+=Ki7AWkY=goI;S0csGWRsXR`|7r^`3_T#Xk5O#A&_g= zW4g16lHtZ6o;^i2>zJWwn)Tk~TS%0QHqzglBEL06SeL!RZWFDhnq@EcNkfZd*=ySz z(b``_&xQxvE;J%ZMxq?voIH2(t#cUGi-;E&J%q>^Ml=djZs3UJrau^0|7x$OoxVcNr0Hasdm)y((xT z*F9pf>Zl~uhjaSPK7o*uXJ#?Goat%m+!+93LDAEIBfWcj7|QMIxt)9h$j)Vq=bYkdF0ldG(mXKAPxrfHw8LI>MDCaSQW z&eDbd3nc*ZirJ&K9^e3gg$sZlk|zMPpcp6U+z{twa6SZQW%%%_xI`?beiM=>-IxV` O{y`i+k=Mc%o&FcmcmlEj literal 0 HcmV?d00001 diff --git a/test/goldens/rectangle/rectangle_029.png b/test/goldens/rectangle/rectangle_029.png new file mode 100644 index 0000000000000000000000000000000000000000..c3300229ff020a2e7dfe538addbfef5a1ece1e5a GIT binary patch literal 7454 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 F_b-}Xk<|bI literal 0 HcmV?d00001 diff --git a/test/goldens/rrectangle/rrectangle_014.png b/test/goldens/rrectangle/rrectangle_014.png index f20b3ef1b51f8e3dd886f6f8ca646718b97e76ae..b3d5f7a020732c235ad6f38b344b6074d67da1d0 100644 GIT binary patch literal 18938 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 RGJ~K?+E=s+G;ja)e*j6gUe5pk diff --git a/test/goldens/rrectangle/rrectangle_019.png b/test/goldens/rrectangle/rrectangle_019.png index d1c8d90cde9289156a2d24742aae3b1464af9d42..b08487910bdc67bf201e1ef0a0c3b1ac55d06c9d 100644 GIT binary patch literal 7764 zcmeHM`9G9f{6911%P2CF!c`hOt++)b%$*1!Zbd>U6%k!)Vq}!c&b@6&C@NW#7P8*5 zv{TuVB~+F~lVt`m-_P?re*J#`g6sA2@_s(g=e$4f^Eu}{=bVpdo1LcOi)0regv8Cw zjCUajjNe6w;09w`1S^F37fVN(x9AtX0%Zv4ld;I!{u zR&kxYlkHshsl(51dRz#2{$lCsHP?rzTA4Z9&(^Xe!pv>?@6IgFE3;RZov>TxyCiUf zp-NS)Ua3!#aAo%SRUP&}ukLEd9q*7mtGw4xmwa0HvU*i?E^C*QZT7SMqobeiI#o4} zyc#*4F8DYgGi*^r%(|}+Rg!d^gsAt9{!sI z|HooDa($S@iSqKI=dGaUeLJIDyfr6eCC5(hVYT$!wDZJ(Vo>OS(4}t$g@qxHgto1# znz-IqRMu@IHOA(`tsY0C(y=6kUm zsWh4EdpP;)41PN<$LAH#elm*QCNZ+%XDYhrJOAQAX;80q|BstJG5hzrtpAxxrks5==0BR>jr&^u)35boO8Niy~nolr;6&kUuujF22!YE1F8YZ5tH-9!To=a)fF~m zNHUPP-^8cC+b8+{+ zL^AjnbSnhRmMmn`-a9AKcgFgcxl{M-P_Ai&9Zml3wt*${+ehYV$LhPQj;nDVc6`i; z-JfVAjhTU`|6~J2{|BaU8$-ZuaYIR;n;MK5$G85h%x&OohtA*hKVS9vlmutVmXObP zbWaRg*d~(VRhX`eu1tk(SRyC5l-qzZ70)LKVnSK2JIEB(`=GFv+jA#G46O;8EAHV1 ztV=$PB1FZcrW!sPO^R<$6QYIA`g5nO!<2*<&*rWAAKAKc_2ilr5(Wc*mZQ#qU_nH1 z|Mh{~RYI~RoSNj;*@nKiN*TGp=lK;t44z9)y?ssy@`%|iA>akyA6Ce8bFN;>&Eg5$ zCca%{J@T!NE0UXjqq3X*!>EC~(R#0e@FozUg=HpqBFo5eQl@FOQPoQB)$mGsTWel= z_VlS)%0p~qRvH9n4{K#^tTol^Q)+vA#&qjt>3Vsl>k61`tQIAvdsL!d zt*Q3Pjjo|s3z&U{A(TN1_s;}=&YMm{Ym3P5FhLJghOb*RZX zb0~t|{ekz=HW3x58NQ%1CO@^4vP5Yzy~Fd3b_V48seE-)cJp~Rk+@dJ{re|Htx>il z<4cr8rg<8PB!3Nii>#EGuCT~#tcCXy#s!Jko%g-+} zShQm)P$bUyi$(OpROfyTU9!q12BX?^#*Heb#ze`hu@0aPCI@M5?8{ooCEY)ZNUo|F zm5_%diOlpRtnrAHsZRKsaga?MuE$%2iPTx_i%NzZ9Z7jKl1x~Ex1EmrKE`;p3CIGt zoPfpvwFn4%isphZ@M`K1)*S$)2x!Scch?heCs_Z%Lr`gGI}OVY$BInh%woNi;5fn# z%_FS(qBJxrkEIClmdc|}JX?qd!lJ0$KmXw)8Q_vPT(p#dU<^13c&0hu0WKjRmkL&b zmWx>l_#Cs+@nFv}D*=ZvD-m}Hvl8$cT^_B+M;hrvTn9@mP3Q#;tSY#$FVIYi;Jrto zGGAizON4onOvyCCv+t?{Rtwx(GlKaNydR)H;skFA@X8Xre&BG9AcF~=8G$p%UqK`f z89aB-Fjr$-LaqWpe9%y?5j4BT|k6PL?B0BHIwN z#l{GtZO5Z!rh{H9q8DM12U$XI2uzISL{eukNQgWFd00-Q?<)og-y@K-=LFeFAXCJn zd8m@eNrd!N3l36Va0RZ7s(2z_gWe-%xbzOt`zi|8dmr>BlL!V(FEKaoCnA#ig0DFT zEmOo9zC-615xhabt4~aq@4y>GWalyPTAJe_9&ZEq2LVk05@e4}0WSCgZ`^_}=#5+O zwc?;-+wf-4UnM+Eh)$-s5{t?;7LiINaJ8R;$dpeT@KsmSMWNPs;|bx+LT)w_&7Q(w z(-Tmb8B0=~z57a-m0c{Ckn;^C2d&D}m3n zvNvUZ$3mJuf=_HhzH(+OCN|5lR>Wp+>rxv>OvBsteL^`K^F(u0uz?wr;*y%LO;Vb1 zQ30`hlv)!*_B6r9^sxzioDW!$9)LzVqf60{qgtHHalocjq7R+Hd~d%Otyd)64jm>v z_|e`Sy{evbR>}UK#`@o@Z=swdZ5IrC!V}r&ypS}vmP!y z9f&7AP+^^u#N+A|zu-7XD)5%#PY;XVa5^Lv9uX>5>^sU-ilTAfYQwjEt(Uk*+y>Jq zykGZIT7)<4kXABgWBuxQ6Cxyg+k#FA-tSsRif=wkCHhr(_baE~(?616ykZ~7%zB{3 zBGTxUub;{7Sf+rdvB|`4RnsDGEF7e9aE+IQN4)AnxPX)vk^4I&7s5S$Gb7}1+noL` zlCL`*!B>Y|!sNM`N>hNZNn4Teue`l&{YBl3JqA1aqv4C+D&OP~n2-bmezqm5QQ%>4 zd9R4C?_ru?ER~vanU6~A)=(S@66o(P^7)&MoDw%OI%Ag5f0yHu{!;r!^QhcnVs@dg z|Mgm4{W)q%9Qa?kL=9lcDP|9Gi%lZqV4v;Gct8!GQVAswH=OxPxr+$Z||Wi zc*iELSNuF*D^laps??;HLVwqaxr{0sqKED#U4T6%QCl>ib)8c7T5j>p zZ;(w??`})JrV~pYa$p}D@{EK%>$&|E=D?-6q{8}!%Y`OUe3YDaNtAY2G5Z^|S&Ox~ z<>pQ9yn6xCf5I~qYcjO&8hVtX%BpRcd!Wq%C2#CA(1{dfFnD;!(zv9%{&wm$VR4cQ zeQsO5qrqTvPJ5ANZ4OXeI2wXc_~q~7&_|`gVT)Bf=5RT1(cSouFdie8?-h;N=;9-r zNrbHMX)5?o794ycDpBrn={>!VrYG9?Mu&g{RyA_la&ONhB}-eu@L{t7CS}CF0IhGz z=C|)^dsz(6$MzK=@wQrcegx4`iF+M+ll_H$H;esPl+SmMkYsbkp{K*x+mrbY9AVGh z>|=M<02gz^H>u169Wo5Zd!P$_F7YGDX20eZtE|OdYUl6goEv1ZkEH}+9U8W;MB+_1 z`R%{wVN5OePLVtdV}UpTf4lErq}}=jRN%x0_D_+vilNVkqu9%tyD=nBGj^v}2i9`( zpqx;19AC!g9scB|BGeqkZ|^R}Mq>E6gK&;0SF7qfCcgPfiNR;bPMXNxu4b3&G(hp->7 zned+t;bs`>F+#t>fwoMlyL_3u;8S@0c#puGJ-Rkr%IljVCG!nzigku%E|Hdb)$G+f ztA8AHnsZe-NaH?{*cn6Pq{7~%EzeSIbE#UU<`S%B$anpc5WazhhT&V=97+AH=PrM+ zi~nu0k?wC9vl2kMVzh{qvjTQUCB;LbPy70PG%6Iq9Zq7+an#=mu^?fy^#%+#ngW`H z!-A(-WM^LWFQ2rTsS}S3#(f`2JL~<{2%$S*Q`1&q`Fw~=RJgKV+-Lr1&hcu$-_z%E zsiYhs2;io8XrtlIQ(m*7hKdIdosXh%La-)nU#LSa9dU`iW7DN=*NPQbC>M5J+00n_ zyXpy_w8sX9^~cV2>lg{v)5$igN#rKl{+Oisnso1j*$rVEF|7~ zjyhCbzMPS_ab|PpZ_9a=Cl3A9Zy7};CF?=kzpN6H3izcued&q%r>{3<1)r~M-)usy zc?E|fDUXAZopi>wo-t`^gsAfkX?hR)%bu;X9|abXaDstzTePalGhKJXhuZDa&~om^ z@%f(J+>tSmybnUJe-{a%L$!8>&6WFlH@`1@7}n!rC?;I#eC*ZhI@ePhge#+t|6&5y zY2ZrPVrnMntJ9sFH0u12l6c@&@UpSYw%C8!8ah&64{ElR4_u6)lGLp^=)R4dQg%4^ zVA?7Wr*V7DFZJ$!oiv0O`xh7MGR{mpi-lxqd|s-64nrR<=kAVN=Of7|(MgVNw@-$P zGW*!8M(-7JCnOaRe!9)u7P-#3g63W|e{Hs*!F5n#RP%LKuv?+@ipAr_-7Zn_XQy9V zzyX?+qxfk^j7JCgWhed{GQTU&!47;#no6S2#)Uo z%;ofZ!3R$BlUwC=8Uxn7X_y(Uvmeu_bv;$+5zuKBiALfOX)x*)6(;3aXH4R|&HwO1 zpdZp+7K@7?dL0;FZMQKlp*)(#!H@0Fqmr(2eZ93u9qI3@+{e7rhwL34;vU?r1Bt2? zDHY0evZfpit5!)|Qr%+dzLD{s=u6%j<+9^ep+(Z)V#j^Mcn6(&N@TvxUF)%Q{s(43 z8pO}sXZ)=1?6~h#+1SWndZKe}!C-rdOrFGqTUgtZudhGDszIu-w6^3Pf@JA3+^coE z#RquVwemjB&VgY^wd{CPZehImtIt=kB2iqC-bXo3-wxoM22L+W9=r2M9ItOhtiNwq zY z$Ef|s2R3E+cJTY$B@Ic4{>urHiUe*pp%BP*!9q_RM>tT9O;LXiZUb9#FhI>9pwlM}b&lH!X z7*lK3C#*zblh5ZW`CV!u+|7d7S>K_EI{U72ukqqCOH1fH+^XUxc!s|-1mE`x{@i-k zt9bZNS?fqRiJ3NPiiZ*j?&FHt zE9vC>a36P7C9H5uuX#oIN`Y_6Qk+2?yYRoC4Z#Wy3K;$CPYcC@w$o=sE-GWD$pON2 zW2{^#MiQDOgqFvX~UlGfuZ zlKMx6P|}-}B)>FKQtEb24fVE0g)J0X959W$G!o=AQ=#l}`Eo{42*pF2zAJ%xN1|bg zj1_oFRPjRbS_rOVp%!xB)TFUf>AhW0;R(Sh3jANb)T$1-0p*ld3iVk3@L8h*tm=YO zy_pHsur(kzr=tk(l~og8a!omJuK>_?0(ZBzmc0gVDNC`On-#v7?#4=k1tDTN z1|+gu@Q?3}dkx3|G1S$jk)M6@Ib6PSfXo5zO^L2wvuzCc=uSMly(Ufg@xZ0F#s)@Z zP~otaLvO}h=Tq)DLx0btOhMrA$V=Z}uikGCXV2Z?txXe#ZMKH`NaR_F!2Z~;IfkvS zI11F}JyjbGp1Fh~dYw-Hk6WsX0sZ!yDyK;q)copBiALze21_QVhGIB1wb9q-WZAG5 z%87f}hM&wYP9 zmW1+}Y1p&HdP11`6=7?Sxng=#s}JMI#& zdka(K+Ll?rt?c>Oh3cS4LdMCC6sTk931;?=@hc=;{m7J{LGX^d)Ryk+wuKqHe_vM= zhQA6eqRHFTKrOZYoy+_U(+TqZrm`}OuO1T=~)Q)Ff)LB`{=j81ljDWLU!Si&aM z5<@$dFH>e_W_EY@tuz`Bcs2J!RDs;&3VB)SZ^Tx_;t#Ny2gsBot}r1mm;8z;%e1N= zb}ju#^A7K}ANx2(0Wu6GovqK(g{$DHSl zY2YTswX-d_8nL%y5c_(+*)Zd6$$T`m>!HY2vZ z(q?iK2aynZS1KxpkQsc~5oZ&b@*n&!5C2Vq|7S6TFJ|jE-P`T6^CtYS6`7mtG%jSh Gp8j7S@uJHB literal 10471 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 diff --git a/test/goldens/rrectangle/rrectangle_023.png b/test/goldens/rrectangle/rrectangle_023.png index 015a335735472b57890c9fb55745c52ec488c8d5..e27bbd6adc2931ddc8659b511e89f7178194f8f8 100644 GIT binary patch literal 11747 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 W?qx}9TSO!9_qVozR*t6at^WfJwWHDi diff --git a/test/goldens/rrectangle/rrectangle_024.png b/test/goldens/rrectangle/rrectangle_024.png index c104068fbfa90d170a2524e9e28d63b6e9db9113..fe17fd97feb434cc04414cc5d13c2baa80218efe 100644 GIT binary patch literal 8578 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 ag9)+QwinHk&IVx!ew#LIv(L8kIsJbM3z`uC diff --git a/test/goldens/rrectangle/rrectangle_29.png b/test/goldens/rrectangle/rrectangle_29.png new file mode 100644 index 0000000000000000000000000000000000000000..835fa1b06210d39aeb87fb1030c16cd4cfc3193e GIT binary patch literal 31278 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�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 D`%W+( literal 0 HcmV?d00001 diff --git a/test/goldens/rrectangle/rrectangle_31.png b/test/goldens/rrectangle/rrectangle_31.png new file mode 100644 index 0000000000000000000000000000000000000000..23830030e700acc22c8c9e66dab8dd8299431901 GIT binary patch literal 4630 zcmeHLeN<9u8hCu@?OEPdGaQ(eXlsi}wB2+xKQbLbuI8pG zr8`!BWW%01r*_s%(_`8A5fzH#IJzBo3?~$q>&H$VLv#cbk-bRM-+Rvf3xB-a-}C(5 z=j*=Dd+&QM{r;2Kjjmp<0Dz5gA4eYqz<~+?hKF-TCH1+*XVE_>`(SJ&xIaYx2?dVX zk#UD`=ue0flmS4L#YO-2P+r5FYPkHSL8Q>BKNa-02OReBcKdtkr^GY3t3fv-GHw+_ zF~&*={|RRN^FZ!+i3)E1Th$(%VB}zzOXiMt#Lw*DdHwTml}T|Uf7z3HAvrbW=Rs4$ z>~i-BDxtV2gkC=!t_?38`wfL6-2ebAyC$Nbkqkz`=(q*K03dM00Z>Jx0uZs!F0>cK zz8LI{VBZ=3r(LnG(ZmKyX@OLdX)p>@;tp;6CiNV$voO;nP;tf#{%;I5;@y4UF>;e0 zX`_@CjYs;J-#qjlX18nOVG)tKqv&qoayw_u{IvZT(sYAE31M5F<>|lP`ITs3M5f3$ zza?2#UzH-av8En@`NY~v`l|WlT%U(!j+E489?~kB7*80v2JNa&&0e0s7IfhP^M2*Y zof?1BEHPO0YDLBHlNN14BC^z(v^vGmB)No$MU29nc;S5AW~uly)$&k=qVwg+F~bKD zAHy=giSD%l=8Ar}??sqef7+jYeJk5Yi+y=tay!GqEs;gD+>2aT9l5EJ40De9^u2N; z?}~Af+p{#1nY9$67da6KXiAUL*HqgmvsCMBX5;PDBYoo4r4WP2nV>`;LZ+L+z!EDA ziWP$Sz(PM)Z^N3dCxnOBJs|6z#*76i*$~FtV8VCx=X+|B!ZjBHK5OHf9C2x?KWbZr zLF=^Y)}t*VjAL!R)jyaFa>VV}ZdE|Cqb>yge(N*`c#%Mr<;WFTax9qjkAS}}tDG*w zgWyOQj1VZ_5h>vKRRG;tj}qj$VH}k#n~7>Ss_f3Cb@Fv;1pK|*Iyoo?1~>eyDFNP> z0NQQKpk)_?Nn5W1m<+`c_;j1U8Y|gmxr2*wfnr(Ik($LV+HDX2JwunSK}rUMxp&dX8}ia19F7+vEi|81Eeq5& z_tf#RojRmuld)nWxA#~Je0V+6?C{H#clT->u+PX4_IK9O55@>VX}=$YJ@6h41VPyN z_h@hzgpGTThFB1GJz?v-RQ@ga0?k^985$dI-;p4DYV$&*$m(l9oTOR{UHP~S&;NYT zLw3=2d70~ZmT=-DFGL~EPG*^}iB7hj&?E(G9C+K>oX8u9S(!FOA8{i8nwV8+LwgpT z$Yf$x?mALp+?~mO#DzQ?a-}a2uw#EO>2Iik=Q;RkfHnV}5N1LMCn6zr= zd&M{+r40=*u`Y}smU4xl+qqc>rPck}Au+iRRb`{9(K-hITuQl3H7Juqjk}^sY|(qB zY~nR-k1aFSRv1Cbsn_t~SEt^ocF%0$b#IS(rxGl{2b7WTREa5gr6lZ^St%>o>50C_Dy*CrsHBEoDa#qajhzuTxcQ3r3jyn^OOAIAMfZ;)$W`3(RU=?} z(_Of4LbnR88<}ARC1rTHjebq`ui&kbDX5jUePt+xlI`MsK4%V=I#J5}w+cp4<}tK1 z)7JK{cJVemd&#Pm_PP;63xo~z{*iLUbPL+?od|-=arT3T7jMohjNfMXT&eVF&?0ih z>|VnUF|&nN=SQX9kXtB z>7GC66rWa~1`yq~x%q;GFs{ASSrF zKelpLQW@RDD`X!J)Yz#}FRN#CH>dP1y-Y91*GkmIPVT1pHIh~=4E5m^DZVl5NKZOM zp*^~vNg-8$K?>Kb68MWFBh5~=kdVt?_sA9|?v1E0MS?5F?#Q6o`hFz8_`m)=!0-S7 literal 0 HcmV?d00001 diff --git a/test/goldens/rrectangle/rrectangle_32.png b/test/goldens/rrectangle/rrectangle_32.png new file mode 100644 index 0000000000000000000000000000000000000000..3832affcadbb649523de2e260f73ca3f604c9194 GIT binary patch literal 8238 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 P9K^%bOK^c7u=D=_t>i>W literal 0 HcmV?d00001 diff --git a/test/goldens/rrectangle/rrectangle_33.png b/test/goldens/rrectangle/rrectangle_33.png new file mode 100644 index 0000000000000000000000000000000000000000..99cd9c43200fd6173d6d245fd13bb49a60400dcc GIT binary patch literal 4000 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9jkefq~!4)5S5QV$R#U{@rt*GPXZVPs_RGIeT)aQ}Pt44HMkFXR%Cf;@0#q zD-CYCe|YLg>mTV)@2$NZuqQ`p5{Zx|0`S#K;Y*z@&I@gwGc=jYWv`uOqM z=kvY7(d_B|jA3&a7?)K&J#(@!ZiqdGw?Fxp@rQCvP&R2`L;9d0)55yqal^NxHxc*9L~* zJ3p?7e>muKPQjp?fsuj1h>2y!BX|DwXMsA-O0uL00(G3XdG(Fi*s}S6&O5sUCj0mN zTYghGLDjPQfDcgdv$NmV_rIMRy*d4W*Ufu7P4CtG|Mf=l0GF`BfsplaJGGn?Htj9W z-c$AT6;QORI^!Edg6Z40Z+n&9`+D~G8S3r%e!MX4{`TW9+xMH>S$(=Gg})cR z|9AcMw9`)``V6mKfA>y4*?b7={ zzl%S<7%ktsxPHG`-S?OF$EMz`@7=hwUgqW<`)}WD*jZ*c13kNDJ^&yROXj?yDf%_rs<0?>^4175#qr{?XF%`n$&@lCyg@mX_3fJhAWN zYH#uVf3E)8#qY>ayyG`R@Z7pjM=E~*>3-aL^xYfH4-VCd8?Eoz{eNWf_etl?;0953 zhlZ7Ub8O7`*593H%N%y-;nv%a51mZjoX()_*T8UjPtChMKN@a;M4uKvhey}W{@8;e z=j03~1LLmZyMCU%!DM5OGmqXe`+RIa|L))G%*OToKmjEO28M~e*`V0kx$}-pe#|ZlU>Z6E zOhZ>+hv#<)bli!_>$|@G-V9sjh(e(Lq}tlrIaZ}vI^xogxANOdyuWjEmMy1T29TCo zU;E==gr3>4mBGu80l^#316@(K@811tDsjO4SpN3!$F}a*J>C~BT$9>eoBepD`?X{K z{T2HKe>@XVU|?`K7Oey%-5MAe7$g~)7#LDmI2afv2!fi1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9jkefq^I2)5S5QV$R#^hKvUk1P&Ys`rlR0D4zJh&+*!tnK$Jb7#tq#mj&wE zbGQLWN-{GsFr@HsFfdFoQ~=5y8xj9ipg6S)J^I(<{o>QrRk7NM+CL%BYY{ z2RYe$ukUr}HQt}!uRo6GxbN$}p7(v-*LqxcfjU}hd*~0)BM7qR{5fSk1fk?c5DF98 zUGOBz^)Dy*gTm>lDIr-+2S?zB3a515fENDYX|Dz#2sd(G`HX>k%tWvK)2nXYm}Sd_ zIgKUx^AZ$1jUikWK}05s0F$nVH5Ob99F7OO-R*g`7;Zku4ct>4+#Gkc>eFP7_B+wr zw`{B*P%(?C)-KBONEaWJrh0IA?DXSMs{0rvzRNE*+;MShE3@s5j7!U! zOwaNf+ng$mZjWsE%q-zMr2eSL7fYkMqy*=xDh(E0+K3+qT)tZ(jc1L1mrMw z8A%YLVj?`I!yqRE5egk%A|)XijYZUX@yJ(YAVLR3qJRj81iayA#v--npw9^O5eI5m zc(I#EiTt4DMyQz;ke~D@sst=hH`hc^f&tSgq!e0G&|;9cIce{tkOT)m##8SL4my|h zhWgIkkuoZ}=GZvw(1mtxFAF7Iwd1wAlFT~SV%;a0Fbf?I(qYVRu9jUwqn+)VPoqUQ z8%op_X)pAt1N(_1PkB^>-#Y3=R*CKV}vtG{VexfBm3xqu}9OV^mWv&Gcb3L zr#~j>l{Y<*L4AhhU^ug!Aksjm!-k@|43p?`MT>9(I#V(!r0&L1JcTLk_-p#ir5DWH z)D*N8{C>i)--xw3t>H zTTg(1gbLtw*oUc7DNt0lCyDop#00R0wA@&0I!vp-3@RNcA2`3m9Z>!%y~EwneOQ9( z4rPNjgHBFFOhj`JMsbT2D_t5hc4>Gr%-?9eYAW{ym%(S;?e@t4%aSVJ3kiy9(2Ysq z`w=`tN*a!$^#MZB8aMq&glH|T8OxktLB*8t!!P^}9j5BWXbiHzM?i9q;1e$_b7<+4 zs8R($#13m-GNAwS8YVq=;hV8$bVF2?4}+ogXnFo6*vJF3p?jV7#^@`(ogr;uL2RF%P&%j29#L866eTNw zorAd<43YQ`?UPRsij&`^|Jw*h2NTG;Un#06l||uxOREej3fAyIW&o33^{ZL6DN9YC zzd3`|4}ES!D`cg+!nc%JJ4h;?nYhqvJ|(5SGa!P7)lwc}RthpTP{=9BOTfDdHP$3e zi^n84(P33#Rr>^a5`U{)-S80i?2>dOm0(-c2(vhQC*fGOW-Mb zo;1Jkh61+dm37mTMOhxW+Z!50MT%5ukl@{8XV2LY`Sj-p^p*uJ4Tp!;7+)}7#z8+s zVKqH)IeRH(zrqQX<0AgyvysdRTCm?y8;tqMoC+sAL`9At{bHjFLA1p9 z2ch--OE3W|U8m*Nr{0a?-o<+Fic*0Mc<%&sJH!6GQf<>!OXXOe9A$qQyzZE+Zb~c3 zXGrA)VY_@y`W9hXb!}myX$(%@l1gSE|v8yitz1G+JvXHLw)!HegUZetguCWKd0v z&0OB3tW*`L`` z^qso;$&6CWN9!YnV1>7$7^@ufC9|d&1=jG*kLAHzYt3P`+M7=lMZ9o`EeFg2x6u8E zku50$W93_F=p0wS;r@-zZ_A%7S(OkD47|q*`NR9>8Y!Qx@GLxW<$d*LZ#-9M{CeA# zPLnF?t2Bu3N7!Z(De=LM>wTC@dk-0pWcfdgUzOycA`HMxTI*b=jg(n1#}7X7{qSpI z^BgVeG6UJn2=Vzf#CV=6E7V>7J;!q?ezWEEjDGoMjg=HVL6vNfY-4y51@O0+WKR{* z2QX1!ACY@;s*$PP!q2(ApLTYc{p~gK(M4))p3Ku~iV`id0zK7ruF^(&Om?~t^=W5s zB#~0p@|)wmGW{QJy&xr{2w)DM@ha6f;F@ds%GX9dmcR5`z?d3)A0N=Slx0&~X!c`5 zWMfYF*iP^rm$<=)BIZR(w!93Z;?>}O+(7c!UOug{C>zo@*G|D@OwC7qh0G; zxYWPbb#M=bx{cilBO88e7ta$#nSBMk(2gCfGwStDyVvpcTE#_=MY4j>-b!_!dko$* zX{or~{$hO?_%F20?Ve~f3qV2|do9facW2z|_gNkK*?68^4$lJV+uT=WD}4$x$(NV5N9P zj;Y053UnXVQ*M8KScW+>;GUe-(ClK9Rr_z_{jOOG(_ht(xpx4R2IGn=U=j$bGQB)k!%{x`??_h2o*dfQB#iY{|B z?)R0;nexuTPh+a@t`vT;98;~{Xm%N_(l$AqZ0m4hfaGXj6T22<)(~q_!qQUbdt`6S zYD)K-56(~~t)UHk3;MMcvb9Yu4W+369ws-~`5eEPPHi=;81uWfF3iQcjgLs(K))VDnpk^>_`PU-Z^CaYK}lX)zd{;n9N?={&uo3}BX&N+PaTBmuaFkYEK${2AuO!z7& zkmcn&UOM>P`pWR=w<*=?c!m7My$eY^SsyFh8?@fUM*EV=)|(nJt(6VR$4chUIu8^r zEtNK2$GMajs{dFmJdl58m_8wkis=BK*QH$J zQSQfZdX!$gFhQ0XYwMSE$gQ?DbIYr_{k>bN_fg%bVSc_o+y!BaXM-vGLWgR~_g|2k zELk_k8EU3AvtoPcxKCET7hSp4JR*)pTgrb6_4TQSZ@nm95Yl43dJ!Bt8_U_wFTPU7 zZTkMOUd3cbF~}8Ibu^LQ3J?1DDJtI7>w#yC|J<2FFXD^weVeNObD~ihSFhnDn<`fl z-W7J4E#5~$?uHYS7PXF9bWM9QY^?{VSOr}d_|eqpd+`%#*l`#ZBY+lX$YU6p5vowR zKf!^D$!=m?Ps+8~;-XW*K9{Z__(3-q<{Dhf;`OxIoe*{ho0{8l!FclxM@-&O(8p*o z<2K!-!k_}rJaDUN{7k!Z94gCytG9kSuoRK1b}cLYr5%pddEpkSHA4SwYUzSMj{V*R zZ6gLB7drO+2WwU<3k%h?PZ!>>tPDo+=T{};A$4b9FCH>LUsK%5`DsX`0y{C;v?r* z=t=iZ7;pbY=E0N8N%a(eaWYbvFp9n%FNT8lA!p6ypvzgvC|KLu zKoSikH)y#l>RFnE{;HJ0o~GljIQNIVD2l4%)Su?yDCMc_P+SE+?&S`}uM8BlVl4i+ zpaiGAUk}2y*iLh@E#LKuOug+#R|cBY)oWrNw*1S{^>bfL<@)y}jq360;rtsa)$4bv zvm%WeG{UaEhp>dZ;@S4lqmthJSsioh@y((oGEIGpfzo1%?Cn#wHKOY(0VD-;7MhkB6z_Eg`?SWxl&;z zzZtC-fBACI43l_y2M$@LPdy5sfOsK*atQplv@{x<7fJuCiFbswu7 z3)kI<)?ze_Si0I5+IagD8||gSHC(=aHa~Lto78C&umL3)XGGtXMbyU_4iD$?XfSfe7x19W351oO2zUC*yNK_CCz`A{+0Cak38x}~xVWFDG@O7tR=88%xfAjaZ_}zCP?z!{*-FXwzRTygN@tysav1jx8IKBm5pP$M zxSQ`QHwEoUziqj_sz-~-_qBI>)6~PJ#^}qxccNUTZ%s$ah?y1xx*Ox&HcU78>4|pD z@j4$t{%$p^l}Vg+*9k%JBlo~}0soOKm1@e>qYd`Xi@z*G&q^@QWQn>xrp3V8l`nkG zWOO{(<%^5y-DvCBm=>;kYp5eavz{<)PK@C#sFaB`Ab0*&6(8sy8R))bESvMRLgg3D z9!wC;krQHB>vWQXPLXWx&$l*ZR^)ntGCy9J;aT#>g~p$ z(HO-jE#kU$HkZAJi-Sx`=v`$Q>fLsKCRyk{NGa93y05W}wntG^cGaw~TZLnuoR`EW zVwVXY>9}>6|6Z}xZU^E)ND~dY>hyRtmGY zZi|Z=ZuqEXtb+oN3?uZQCyB|TsE#H()ch2U4_lsQZo7E+M?@hnAAUZ?Y3~XXHbH6B zh+%WMFjr-uFe?7XQ(2sf>hf=G;z4lpuqv&Y9P2+L?P9s~jfaCmroY8E(F|Px4pOa& z>z1;olkd13i;2#dKr5^=D{%W#&>r5=h$ja3Vy2e$#J3)GO$0>7D5_`>4+ilNu$9~U zmskJ!v@VrDPB09i2-IUprrjZ3DZ>J!skXHqnFrDAraHkj{B{Wan#*xtg(?-(xsXa3 z6&+~-VE?(&GJ&57%gyu8qI}74vPkm2|BjaXA?=PV!F2yJl+OOHa5fV95_YzOU-;(i z(HP?!@h@*t&_31pv&GbWWidK?QB>-QPFiS|rccn74x_^b54LqI?BUmn!18m1;)u?F zSbnOF+!fdV&x6D>@ZjH%YNAOz3lDUqQ)uZ)S7B&B#&f|4h4s$H+97%_9HF58hlZtv z|C}-Y%8_J#-pLNhRc{oU>%30FLd{RvW6Z4gS}t!3QKP0Re!OjktXLzos->EZY_@o= zg%Pl4b|#oSJ;o%y-I&NWhiX2OY?xm~fc#$x$bXdW=qX&AI|zu1e|Uqsz`!?L+ln_f zh>EHHq7g$G&eB^ed?mL|*4eXg{P>N$1)L$xu-)3u%q;=gJSGZ0G?rTp2x8pNmj->* z3Kxnm!iFrD`u9$a}F_)-B+vRoo>RyJU36l!}St@gIH5h>2`fs-H=ktjIsU zI_OVxJh`0o!wBE+Qfe6=pH(-9%<~Z{n0CB@$aKGO4RxNOt8xRNgB?AJoiBA?&9L$; zuUvT|5Fd6vL&B~ppo;LPvE^!(lW(nc&MABN{unA5MIeQDkYRF=Z_6J3G`uepq{TtzKG+ zQC-|{aTj(J9ICOOA0>K0U0fm!KW{MCefElNz*4Ry@cD$$l6PaBrR%A^6Am>m1575i zwQtYu>IYm?)r=UyrJPgWMr*qrVgjOvdE*p(ld|94^vs-dw%yYF*12^#5&bK{go5@K zukfyZShcAPqY2?ftWD+4S)5zlQnJp@k^`S=a<^>OM~$SnYA@mpSqEjQ(?VKu z6jly=*`K;E+@u2w`c(Uv>!3|p$$^yan^Sx9kA!9mYR(R*CofoVY{KHOu|D8Umd#^kzI#Y@?%Wp4>vbS zaWH=6W0k|XHF!2-X1*qL%R7mArqy5Tm`7ca&T!DXr>v0pxz9wTO#kwlJ|IBX~1t&;t&N-a5ni5HK}^`JW2n(egNvEqRLNz{U9V&jb~ zYe2A0KKRu~f8^}$&2&7O0QQx?ncRHAgQdkC6!O*tjnQCW4UtWPzIr9yn%HB`I<~B* zu=K=qxqb+(lt+)5YvJ3XC8rt=WD3>%JR`(JsxrUSXufAS?ZWGRwR9q%ggWj1q58V4 zNKg6Ugh^-F1HXo z%;3Q~1-aHGgX8$CyXbiC-4BO*&fO$MsZoBEH7~?}^rR|XZmy8Z6{m)_VTX;${{7N^ z29o%zr*`vH`Gt4Ktpt{wqT`@M`PJ$$^l?!SG)87jh#PO@8fn$pH?J!nJH5WBDaT_7 zTQpRuJ|Q+d=|R5;9!pKmK#4m#pZUb)p2ba7teFL7FU2jje~q*f8?6`+85nSO zj#<2WI{&zAY(OB%7gXY%;q>;cJ6^(*C6k{ua*g@GSIjBE|2j3bd3)n=cjny9v(q2T zKdcPi@bR2z$zo}GS(FTTg`g?uSeLT##(s>Auffm)Jo@YW zd|Cb9g2vp;SGw4JD!xeRT#B1alk}g%3o&KuN;f|*qyXjQ*A-=(%hI&_>paDbvS1AR z%aK1Jkc*R=;4b#WPt*hV&YnsHvA%*A*v$f5FUu7G0XWvV~&yp z-Ts%J&@RUG^V9>M=*wm7v%X7q1}#rH-l&PT_!?y7Z^Lkz3ETqyT&wAXC>`!NJC%}| z`vBs2H5e8po1zuTL9|!t5bESTgo5sTE{A-oEPH@}8G7lUUCoyz1II_US>GcX+r}32 zk9yzPbD0BZ@h$+ZQ4{XCTPo|l-TVW4XwvhQP8yG-&zhq`l)!^9NFtMA4R~)geKRZg zMQVrax1H!v4E#EEBQh(aI@}hP3|U=Ik_y$0BS`ezjB#rT%7(|`OFmN%9A&@PXjqgE zljecOCLA^tg~vhv^BDX*Di`v1tN+hqFgFe0PH`Eq(pMXb?268Km!DXE6fy#6unw<_ zU{^%kzFY9Q<}&VD7Lr~)#}jhCH~8Z{^&G7EFRQnOrq=M3>@L`%5y*N@ebsz1is*!v48xD)ZFOX zyNOpY`weN_!D*?zs>&}i=+(Wmo=qt{|FVHfY(O&|AQq|h9}J$b(xNbC5K#q%0b8IH zOzH0M&BlKdG;%0E)fc79*kg(_jJR^knx9sodfXxd>aD$XeVp&vF$L>x|H=K--X-~* z)>54P*fTkmGj}tk&g3v#MsJ||z`9d#%^QyO`;;q}zE8~aVM4rZCMQ;kAWhZ^S&Amm zvq#L1g?V;`SWUa{(dTX|-nQ!GRQW;o$@aCrT64peuebIqDq*w=> z;c-Jqv82Q9pzIAOD46X19h`ygm+lTV41ad@gDD!K&?ji;mN297DATpBx2_s0AvZ6= z#y75k!4IIQ5QKyC5EFu2zD4!_`6cU9!ii%dYB7#(gZ=Wop%K-JL4(PM&~6jm%Muab zMYCNu6;~`>@jhwqi#iAX`^n0A?_x+!w8nYyTC7Lsh)JN!r=6rk?44!`pMsN?xePF? zZ^GEWIIG3NLh^XFZ~&#jgK#4Cfh#cQGs_>F>t04rg#`q-`6lTH)-10%U?%PMX)Cx` z_V}!8qS2vUmXH9Kg?z*TA`E3$&Ji9UeP^!Md35|Vq^ZA!Y+Mq&9E}Lx=i|om0rOu2CSqRX?)hgRzaF&A{Jnje(%%+)Z@DBgXqTY{(ykfmR+nF z68Sac(ERM0W7v{HYiJu4gxpuF8M^Kz{9Oy6W|`|z={`H8@BAeP6ZB~jeTgjr)LFu! z!or>RY=fF)Qf-ml1LI%H4?MWeKXA!%@-SKfveZ6f5oVY^=?`1O(#2~TIcr4YuqzqJ zXHtczj#rxH67N)vd&{B}@4#h~_D6 z#@CReGl)BlqHo=4V(E_~d~@GLEqLw^5!NP@D(NCi0`jMap)^hX0~#W+pW?f($Kd#F;^|IGyum?d3g<)-jQ@t6e_8H+H(a}L-vkK|GePJ4AA>zWY$r^(S6 zN{F&i9oT=T@H=3~=CA)yr6(aHP!RCrMx_A=w;yBCEzdd7SCH-$v{$R$P~% z;zU?W4x&m%>%}MG)f=YoPd7Fmv4@t0gR88eTQgsr^<}A?ogBy~pg)_2*wmH^I(BV_ zS#?Z5`c(X4GtSHm^lZ=MUhaz&v^ri=69IbcgOSe1KS$@4zwU5=_`pzOYosdEz1K%g zk#HUI+Ff7PK0KQ^Rx2@R@>I&+H~(hq^rQW`FE(2qn9U?}f&(D~^TreMj-#2SRIvYa zM89{Ni|-sgCUSzUr5~3ujXDY04Y34yw!z3(Y`@%&eHh3dZzPqazbp6MsBr3k;s#NH znTBuw1oP>XOA}E|UKz-D02mp#n`_+pr&LxB?ao|&&>!7gJYv|@zcTW1sW257_^|yc zGv4hBKHe|9QK{hAUEZw%TzVY;tPj3D@1omn-tB;T<+RF!@CKurc_05d0d0jtPb?zt z?wU5Bc^k+JU#`pk%aD%Td}%wLcHL6hDyURTwiGY5B;s>=1I@xpT@FU?(t#XWYUwBY ztj4+=j^<5r1f7km*H%A30#PNy+?9nN_bHceE5df=2il_ zD7@4yp*y0KBfMjEJ~2}k1CB~}!3K4LELk!ZV+*CiPP=R+=byhK9ygLN*l#E91312Q zf20>@emPCu`^EBR*CvI|9$BzoP!%Ly z4Cce3dI~dDo#xtU*4p2c7EmQ;HnTx0(c_Hp^}0K6)^`Ba0v|Qu;gq^L2^5DSrfN5Z5!n~KL)e9IwIT6*MGTe;F~?+LYR39?VWz8omh_ZpnJ7a#8b+$Ys>S-Siko5JS% z>5u$ic{jT`+r#jQObWcbdmEZ-#=mTdk?X<$b~z5k4fS^s3f3R7U7U3mvpNThRwm2x zZ$PH5cooKXhJvT?WB8I^)W2d~b0g16^&f&(51A-*D1q@-G6Xy?99E<0wX{&G38|JR zHiuRc%3(P$o>zqX?o=()le(Q-`n;W2S?jEB)Wu$Nq(}J9Ehp{zodW0(8T_@rlDu_x zd0o94;N!u&`Y)ZdEZ;NVj1A8(6`PoTM21G8V9grp6OX>35S6O%?7U$d?H>+F@U7Jm zhn}q%?c!H3UaofWYR*2z2|GD9a5*|Ia2@rMKsxv#(>+`ty49YXa!DvgB7kK#sjA?{ zRGItwPtun@1|$!1v-C2#BrboP>N8IwUWZ%(*Cbj}2$h7F&%p=Q*Ho4NSn6kK+OKQ~ z2~1h9Zh_BzRLFgUd(Sbp_W{55Z5hK0#=MV6XKkW!zU(8SWxllePKuJiQ?O6gpgOST z0_QF!V`&?vv`a*J?F}wYB=I~9N!}X0?@Kdk=Y(&@yDr4LD0G0k(RIVv(d$aC942~O zEu@cUBA1yYWoQ`}Ts_m4Zqkz&UWxe6WyX~JEImm`pY}l;RD|8+O1nrjC*5mo&2%b@ zyoupM62AzUJS5kVf)jRp)cImbW$AsI}SW_hIgZRED?ZVBBqh!tvA@L~qu8tnLf%|dH0Ba;&z9mDv zxA|@ww0)Gz5GBD5^1jaO#w<;prcdZe8^^Mrl~N-N5O-I5Ps;VW|BRVF<2#n^)HlS3 zVcyf{MmS1tZ^;gyyeb?cB?E<;haiY|C}c*nJ-d}aXDm&V0QeVyUJowP511NKrHc6D zkaUR62=uz}Y!qGw>A=Naax3zM2wYSP#Zc-9j0Pig`tZa7yzFyND`m(f0?6TW#Djz) z&@ubK8`~)YCDWNSIDp#s5}rT|MDY-TF`|^9U^5bWL23kfO768?2KtKJCQXLoDVF@? zHWk!fu{5D-BR3_LII6!OB+ z&t2%3$oZv_$7|&yYt^nHe4W4U-9^M3N|4NSq_z7Y9vWCAZQ*^0jn0dC+S_#)pa6Y{ zqO#~r&&>yG^%?wDq=$D0prD|`dnh)?X%qLnJP*HA7?aPCpg1*%x@85`Bs7)@P8QU? zX{F9XD!xqbMYpQRm@*m-NRW3p{+0khbq8O>2X{W-x^mFt8%Ej9&T*4-*IR0`ulHtd zW>6~E%5?c$9~to7%jGlnt9&;mS`M(_nd&{5CYyW6een8jaqq@Bdfes17&?);ot`!m z*}AmM(Ew<0;M{Jc>S(a7xpO|BL$) zd`e0vM{}qQglFNr?EcSu>>?D{b^;Loq&~d5@$K?17|Fi2;+&JsIJWH?afnGKIyDa zxW4GffD;RtQsPnnY3H?e*E%vhJ3nnR@O3kKu$0loTJr9+xYYicZ^rgH=$wL{ zP&b8#s>?58JBsFVB5Qt8H65bN8@jeXH5Lj?i1(f*vVmp$H=3hd?76MQNy+m0f`pDR z*mK2Y3V+=9CsxY=0q6b>>P$;`9)+R4+l3w+r8i&@EhNnqd%7+WyT8g$!Kl5&at zjB>9MPD`2C+LaBJQT`HN0MuTyHQgPB(h_x$5({=?KA*XI)8zztcteJRQ$Zu79y6An zTIfv@R#OlR-^Nryup<(k`oXASJE)S60wpW7hf>0RO^+)2r(6$^ zSSV&mPg?ul_PAoSD5`T||BU;qZH41n{8ZPWnP4~f?}S#EPCb?;FQJ%}GXUp8%t-bt z55v}cUg>e*9~k!TH<0^%|F+An^oUs8PgZ76wf=8YJTy)Fr>UdQiGh4S#>>&*)1KV< z67FqWI|ORZ)L%OFT_DQufvKb?VY#T7E|34y5#a55Kw(27{$U-a%!6DHr2Eg5`Qx}9 zq1uM+zjRrkfSo?&zjSqBXq|tWJU1q;vs#)2rUeGbxq3`f8oR3^^zX}@MDTAu(UUA? zkKmu4U;ga~y3#tkiL4Lb+~F6SRv0ttS z(p;=c1PI|`t`P^1i#iSQz1|jv@)9uH5ab;9LqNb}V2L9DNxPHIX+M_rJwy(FE0;<8 z)76X@Em^BK++xD0HEjZsA*G#__)L$nl+zDYSqv|+oj)5!RK` zO@7F@E@a2EnJW?N-WhlM$;P0l9Onbq`~e;1H?F*F&x@TMWCqScA@u{sr)w4Qwl0JA zQd-rTIJ9Yf)H;8sNxZ2Y%oqTHCp8p8L(_$L+=5+}t z&ejW9N}#plN>4ODVMZ6*nB{n#8ZfpHuf=r}YMo9{zvbCp1k>%8}P`)R(iCdGXIGhZRb(2ZQ<*D$S!^Y_8z>KE#Ei88Sci?Bn;sG|H7a9rxcJu>rbdX zNuY&$)T`Gpqt!NLy@58}y-w4w55$$QINx?&dvHb%QVtV-56@KAeX2=%;aqy=a>y~c zgu9?`PIrebTW-E$w)D(m7LE;IeqQA4dXY9Q=#m=5!%K!o@K^5x%;~C-w^mHq0a>pD zs>G7^Pe~5=`QL!nevm`=m$rsVeBnLE3b?NMLB+++mt`sNArj|k_n*X*@1bC{P*;lX zvLFV(Z3RhD+m2=~6n!+OyhQF5yI*X182_i%sc19VY+u z9J7c0zKRMcKcj`|z7QMW7494k z|HE9){B*ZJW5UTy*Y1p?iQ_g~Zw~qcr;<~03EhaLz(nDZ# zp`{cGZm-qMJ4ji@2j`^nlHyvjdx53uth-ryrfqaZ*Tq^TH>+_qdlnl5i5LjRq!r zGMwVh7w)hbr3EoyBY2a#p*wt%L#A^U5!+wc-2a#HNrL+Hojr#$gSP3DY_1#~$Zd}( zWhF&gQhKEBw6 z*TTzNIJxu{%HXf1V8T#q8kvcC;&F}4Ln{S1%j!f+4(v7X7W76<$dj`Ab5Toey*}8~ zx!vVBkut#wOz3_W5%Pq4-`uT#lQ>x3H+4V;F@)gZysgsqJZ)U_pDWISBYx>*cf$CA za15!DwZ-e2KQ5M$USI0eqf%A#c2i!4ZYTY_CYMNfKtQ%U?1zz%@8Up~gtG^bCpDuQe_ zEH9P_x5jnbw-WGGFIk#`^;5QQad3MDZjB#o-@XSJzd$R0{CEeK|J+R4?QMb{X)>nEMatR}vqzb9S4%bf%4Ap#y{tertQtiMytJRTTx%%() z-ioo#WL4F$G?DQ@4eB*LM01Fi)}X@wS3rmEqR}l4qWmQx)|TM1N{`RsXe0~tG4*)t zaj)H{lAYqpSb|0d1!JcAN7ey4bfRZ7sDK(Es4{^}Pu45Y_7}xB47}C_tYMMbCmd_c z&tyvrus^p-$!|f90)`&+!gJL4bD!UrAM8!d*-uL)8LX20m>#n>S$cWrU~;3sTT>D; zVc(!>;?@=phe5P%+%6qFqQchHE>~E>P$4-SR$AT~?`tPBP^Bh2^OEne znjt8O_tf_vmbRc3ee|9E=N4QK6{d7x5bPwVjE4a0hFWX)T7GU;C}f%GR+F2N)27E5 zK4)!dK1RZvsrB%mgVz|SYcU>YL~*;per}lP_wnI?~zM^1&m6M`P5K;TV_m?{Cl9*Uln>fWol0 zn#vrKE8ASHJPS5q;}=jfCdykK$B!?sj=j!3(f1m14r(wdrUiBNwF4+k*Wh> zc4ljem+_Wely{fDE~=n2&Pb7<1N@n|${O|6-0`0q?$i?Z?(v_i>X-gqPlMe9TGTl+ zBKO4P_bSKcU$Q*(q((^%ac^_~IWp`Ib^_$eP8qoyMK)AqVA*-~5u<}#fMAToIdSiU z+s(+2YC{<(mUN2|$rihO+&Y6Q_kMOGUM-8?wcChuo`Q^`aLgE<2`w&(p82cLXgt!P zW_9G^3sXpVb&btU;bTfVLU(^bues$}kqpX~_Fy5?ZA*Z}n7Y(JYf|omwOPCB>Y|## z!iWIhtyryf#s0-R6|DN10p1dsFXDr2RfO4+$x5Z#va=;<1RajQQ-p4La?`g@sy!&p z2-0i6yBV;nI{@^Z?F2R))Ppqke}8ArJV3fXbOlQ1wubVhWNcmJ%Ac^WDeE-S@HC?* z{I$YzjDXVQ+ENprX;loHZ0#c_CI_c?m* z=m=5Hkb<7*4M+w;}Ay8RHc0}}5%ui?Tz zBQ;^#?Sp)Ww3|UiK^2sT2k!1IxTY;xr8fNRbf$FiVLv3XTF3+m6y}2<3BUZYZP{{) zYwAn2>ypd+4Y^X5952^mGb(H!Iqzq3k<7#HI@PVtDnVXoZ!Tp#@md;jfdKY!dIQ8q z0IJW#78w{oLcruj=Z{O2I!us`J9F(pxbx8yc;q2ha~~3jR>(7o*q}^!ZsSA%_t7ll z^Cs%8c=G@f$n@upV)GC}_vhv^F0K)!&X2#9d324Y;)i(vQ-X43-4E5i^7mVg_|cmw zgHmBVtlE}6r@OrEe`3nV=Vo4uc5~*eWs`jRx6_nQm6tnAxz?7%O)QTs!egN zWUVd}rCkTy4~mRVqU^wi2;QB}$t_u&ikDyQTJCJ$v*kUtsV*Rr>9FqD?$Ev9<7zs184fHxp zMC+T^rsAhjVm^R3({saIjBkLo{7h8xLu5GBmN^z|G(PZ7mg44BT>FTFkletyyDzV; z|IQGwatP>!v-F=~iH6R>fN;k6`kG)Wax2_Mo8V_~1b@r8lV~kbNmJnt=z0A&!QCzC z{^3`aBqOFFqXp-lhlacP0kp1rFNkf*dymZoXBp0?LPqLKf4PXCd9i)=a;19z6tJU8 ziUhd5>X<l6NBcz3yX^i*^yr(%G! zi^A%JT6uQ-Ew%LyZ(&Z6d8sEhq(Rg6&8&9E=xNkLOmiwi-F1s7YrD+h`Y3L{8*#mB zqZ6=`O-0L#?xa?d*l63}?p6l{&n~dp4g|1t* zP=$Jtc4fHESL&H-bIt5}!!KWEC1mzdUj_^I>>g9;DR!lF2!}g2Lm@sVv-Bc9wr{%M zkBRUtX-S>>E4Ip~t1Xx3aN9Im+k9{Lt#tM&7PZCkcdqL9r00$VbP~OUtzV_nOK<=U?TVG z?Vy0-soCbuPUEKPoF@YGa_Y|G)icuaO9nhkdvw%B%I#3C9SOVVLN!#YUvJIk3(tw? zm`#l3E8KQ8FDdx2_}oGHPBHphXrWsOhmz~of^^9iwm~~zwK!g3FGiXpXKYewk~1L; z()y3>1^j@B@5@cvA#1i!o=5YLBCcaO*+L7#g1fTGr%d- zRw#&k7;r|Z{;IP4A}1y^O@a|25o1V4@t^bPUMnpT~eu>)s1HJ5A4@Z zZ7A?iC4h+{_(6cj&o_{>HD`IcKQtiYMEz*P)jP@jujIa^H}G!2I@F~3j}*9XG`%d# zCM&R7=u~}+MT!44XZY5tnw9rxy_TVA>_n-zA=}7>_~q{I)w1+)%=Uk6L6ynK^WYSH9wq0TK6M2||4~_-;5xlBq ziT%=+4Rt>p66=}X6_jKa?@EA!O4!P>+501prmTy3hC=g0mX5qiWtttYu@b@3RxEz# zn#i-cPC)g{JW6sOvdL3eNTc>YiHa(LBG2p2 z<8}7ztN_!@EP3ayw4cYfZP^cVVLvbYajg`T@Ji%YcMn^bK!LpHQc77#yf`fwnMAVbGEfp`h%kzr0ZOH<6tC#qfW|0KTc;BIApOt>9e9d z_n2%F)yfth6%1Ze)L*==TZ+cRBRthy_oti=a6 z$Ij@-Uq(!#J%;B;qzl$DR+8Xb%>F_oE0`?Y=N)UUih&S|9TXw3b8SR#oAD!17jb2A zfHH^lvC4V8yI;^tpPu|T;4~vwSZ6Tf(^4U%_32*Pic^MZFG^W!?2%en3jgdH4Q3BqF^K` zK~bWP&`o9lNg^-;0+QM$brbuo!}xvQ{qB49s&3V-dVkzERa2Z^XYaN1UhDT;>lkiw z)?oViXjMxIrk=zJof(cCj7y8{9&Mjtx&){|e>nmtrT)%X$2WC#CE(6!Pr$dE1U>NIPA} zW^(_D><>Yd)VX&=UvKoJM;_<&Fg9j-Xr~*;9c;Y$e3>%+seLtdlzGfJtIySk6ES5p z3`|xh^^}_xl%~Hg##XsoO499+H}~xOw;~zc)m+HQU1CVCAqj~&jN$lL2!iW7#SnRM zJYpD$V6I{q7{cQX+{kD+57M@efP`^_KotaooFR?eJ3}7x;t<=DA;_0R79!@%u_5C* zXz&9KN2KsbEogWt02R_Ua1+R3Jje`aaMB?mCL5sSCMc;VPC#VOfoOiU)iV{(VGWa!*j9P$HQjoftZIyt=mOaye? zId!vr$}?Qd@zcPZ!or#jg*+o8Uy36>rKCIbuF3IzPlL- zT%L>UW0`gBR>Y5#xs+pH_r^>L)^HJyKvy20*1-EeKxfB9ME?!qB%j9$GjtV(Rk?s} z=U0b^vK+e67CWF*PWvNSV*-cKVI0{Eb?cPz{+&W->!s+HAI9ReR`p>>FI8bkyna-J zmdj{QvW?-y5U_(;4$n|c^J1{2^9>oTMe3-gK^l&2H1ucyMVO#4do>0x5F!YrJ)q+k1hWxh`%zHCbvH|FI&ke$B-t#rq- zrteg+%*{pRto(2GCuq$;Pa0C8u~TSc&!Dj^gTW76qDjkF>#Qi#TY{~e6m-^{ADreC zGl0n$X$y<#Y?WkuyF-~{Z|}Ps>?qH&s2;5Kdz4I66|8YPkxMc4XucdgPliSRQjy4uBA%ATg5*=zn- z4vMXySK@YFaiYP#p~d9@q8b0V&2jzQogyki`b2Ni;ZjNGX-TX&BHiU!(wl=@Uw?WQwohMo^qW=mwQ{D2SN#?KL2I zIx|ZM+v=$M;>a!swWxXbxy65Uxd|V*cOs^5|A3L;a`$YpZ{2T#04uP=u-30xQvNV3;{HUZKq|In_6+4cBzxkG*iW z30KZ7s53^~!YShOLO3ke%(YD7Z2969cbAFf^HzL_92Rc9#2c1ESzRlpM#T|j0{NFo zb4JCFv0cH+(9H8qhsdVdq3WC#n%*pJ={V9z6TLy!w#w=*0;poa>; zP+f=t!ArCRS_PWB0M}Q>7+L}Z^`PSdszV+Gbx@@qbUZ?JxPag!DgYgiP#w8w3A766 zc!cVhL`#4m8+1HEb;yF?6I96t9lKE-P9Qjr3P8thR7W;i0<8i%cB4AR(GnmS2OYan z9SR_5Mvboo*eP&1UJ8N9vWrmOfq0C<^bll~}uf5Xe|<~MrX{KAf= zf^U)b6t#o@-&$WQ^0Dpz2V38J`dhp|(GN>L^_nw0#{4Mhfs^lsxnE9mTxVfW!CX;80CKNwPjT0ixlfqNJy6w=sp46U0xW5_mSb!o5MJEj&g7z1})e z+sGc@9CF!rlvl;w$(z-CT_lMg2Uao5eXXU{vC*q$P}@MVv|@+jVX&5|ts{5oTB8;8 z_p+jE^XZ~NvB)r0bZ1DEh9S63jZM5kuAb}$k0UIM zwbJ#lkN1x+qa5q*3zfQ$-W0G|PH>+NHQINV&>%{>d$*f6x(G)$k1bh8 zfae?daG6N^&a>T12+2){%ivQ-K(OlBcba~RL_P3s3+g@>IM=YkW>=LoRd-E=o2FE} zmj?|_;lzm#?-RQM8&ammEj&G``ZoTv z_Z;0sDLstV>MnIdw5HA62kS7XP~FA(@he=AXW!u}BvrL%JKLg( zJRze0#69&gcb7Q19s7t{*h05k!7f1~c}hz2qdyh4gzz2Ru6Ut3+`D?MtCaCLxa~yG zH>c_!$wCFs;`#%lv_AONjqY$^o2T?GeCl>*)covY?A(){=`;E3yYKf(#S~31S4oYm zCbWO9Dpk%-x!w`|oHPopd$^)Obk=<#_4Tug!^j9$>_Y!7w}tG%kMAh@0n1!NGm(mQ z0S6kEezR8MYf+d<`3T@4Begv`oQ8c76{a(uVJ=SY7n4yfvTWrzn1eH&5Rp z_LdRHn;?$R`W%~(#&`K-Ei)}q)XdYL<-VL`C=FEB(P^*<`44E@SX0`_C68^~j~c(9 zcBAmRt;MtU{!zuiV%>kdlN+o~uHvJ;tJMB+5kr{YymNnSPv=`D|0cH@-JJJq&zwCt zE#5r)>iP62kRQm~f{Z_TPqzt?Ua**d&)VB2#%NV(bwb?|V_!Wm9d+rCL=0>GXTM+w zm($2soZ}m{d(p!M`{wcBnk=7r#{c9Yn0Rt*IQ7>nZ>|JelJ0Ki2P8y!r`i@Xj$Kw{oQ&Hx_@Wm;HGD-m@XPG5@YgJDK(Ie5%p3b3v?r^{QI) zs@99Isp|fNgs4#W?T64PWazVojNHd#^RSoH{*RHahgA zD1F_^mrwQr(j`HTMdaySg*5saxczV3iyL zR*45*bBl>^Y%q_7&a?};MNM_F^+%Xjo)+W;xs=az5&ehA2l6(FX+e>AmYCxGcPq1v z^rBj#nOu_N5f8sytrc=!9gvu_Y z$?=Luev?}=CS5QX#__yIf$Ps3p8$sU`r~eaTu5P&bf_RN?n^j4+q^jv`gqsB&x3FD zLIr<6+Z0?3eT@ArFR%+0{QYbr*c1S)45(7>D;Uj+c&^sJ*Fa&(K}qFSPiYm?W4SCm z_j_<@IX0`vV6gBZh06N*V%LW=sIPQH4F8gsXx7m#QlW0;yP7bV-PO0Vmy5O5n>JoO zdGC8y!7tymUSij$RQJBq+PvhXq0a;AU&8XFE~KzB&PG{YJg}TKIgq^7IyJU?>CNj<57tg?=2&?1!nPl4_QPTj|*ZzIml`0ri-D$4z zzdCmT=VKy6&Ci~wtq$0d1 z_z@vnvWdgH$0kbauWD>cq~~V;`EYj*JZV0O^{$ zJ!nTdc%8=eCg`2TM*`d?xDTH$Rc2>GH+;&U37EMwj#f5EwG3*^Pwey@D=`qQ<^Y>Tx~5%S(kH0>&RCaK(R;%_z1w^D?R4gIrs$lWos z0;bhmmjrG+xatmDNqT-9jY&LueY#sB8&Bkt;!p$lGLI%9%Y#~`NShYXA_x{79=^`mH&2>^8t+RX&Z1( z$6L24M<1E&?l=>CgqPN$?@9a>n|fTJ?D7@uYaalO=FWdxYj75fUJMBZt5k4ULW<1t zrJFg_aGki)qTcz2Xh!$Dr5gQ?KWMrqN}{^^qVf_z%{Yl_FFblXo>HjeJ}HUspB;87 zKh#0K<4_vj@A{zHz;8}7`iK$f+nkvSW3cX-_Uk@FZJj7fX`kHH*;QDMT#yqdRUw1+E662`HRd;R+S#0!);qJCw;+KG_I|si0qk%#9+{4s- z(+9)q@dY`<$5y9X?OyY?y>32lTr>S5J@Sk;J85{&MtN~UhD|50_$8WwaX+j`c9vRn z+(>uFsRw&$%HDD1Zk5iS8Fc5MA99RAwYBLLTC!`U+$(8JB=^pj89@?KuUTVtfIST6 zqjoSn^BpFgr0+~`R`TvhZ*7kC3T`RsDw7$mlOcAMRPkf`J`_fM&~`2VFO=PBFf0tZN4j&rlGD`wTK$$i0PDwzS_9j>i0 zZ@l-K;ui2Eo0xHIkahVl#`4bMCXuqsb^g=>*di@(McdFnrE&(++v!$;!a0jSWNhf? z2QDq)O0h+Gu_$e&*%rmnwYKDD!yKr%Ii2-ks-=;&?z$#zKmFP619wlrO$Q5RTg$d$ zg_lL2qQ7vQ`T{B!V#ix~o&Bg5?yFgqErqs(2(1sGqn>w^YabNuYXJ1RVDFTTa> z!HN;A3!^A$^T6$1l_m-p)PCV-%P-K=kFgme_)feObO`JDYR3si>U?AMHkzB{n)V{IIkAA8*%MEwqS9UDHSw;*hvsV?D!7g{r4C^ z?@Ufoh-U)7M>6Wy%xsQdpOatu(&(b5If0!7QVyF+kwyaBX;k zO4;jcw1Ve&rnxX_(ebe0X?BymXoUv*15lO8ts>W}^{RXaJ~BmOr$Ei4N#m#;yZaxi zk*S*LiQ(sq{9fC>>SPcZlQ``?Eou_3YpIGf2ljl~jMc8qLYfTS>UT^BpWsnyLC|1$ zl2_osm-J(T_j!b)XD=1_-na1iKB_@%8dKd9)CxmWSgKhb9M-~_GfO3#wM;j90?7DL z0Z|=bdgAAY&tw%`m!e;k|Dq8jpSC)g)w=w4hG;#&s}{V{u&5AGy;{MWUPmf+tQazX zfnWZR_$}DC>Gebuxw`RQYoZ9wau-euretr`RDUJCY}B@lHvzX?)wvpo`0bb;ilXk_k1)z7T(JNA`#NJ$glt)1AfZmNx5 z6aZlzGnO&6$$$eMIiOTMIh9ANbfim5R!4SpiGKil->2_VqI>Rno|Vz90Ekj!^;16h z5{=yYb~>m;}SjD*c1x@2J_ssA>v(_A*QDsEsR_gCnb^(ibYs$MfB8oM?JY(CM;Wa9a>eQ$U>Y`lEN z)PYvI6Gt9f7_kuC$`&Sj94s7bp)ZE#41Mo)JLMIqNDmUrKQ<@#s-NpoT+vlbP65{j z^91>Ye?t}c?%vsgUp`X*E%2}qiV(11Wp9HuKoQhqh#mM#r3L&G`++BZGJPul*XXkm ziQ%e!ABs0dETkZWOWaWS;0ty@|7mjxGWT^6tz9izEJOCd-FZEf88Chzaj}#Lg8e`^M}zfnRx#780je+ms>xa zIfri~atmlG3$zRj2$hwZ@NZSNxjUBFb4ajgD63WEk_YZ&CiaivQ4S=c`MU3`a@mx7 zC8KxMNNV}ty#4wc%v=49TQyaW3bbhdx*MkMBiN^(!k+zh-K%AF@!Kn3&C!Kh+lKy= zm|-n5&rDM$(t_JfocHf~aeAYeGdS4c78Ohfl`7de|6B*-e`6JFS)$o!&=KYToMGo*4RK_W6===w$LYTynZ!j*2ygzyTWmHVp8wV6G&in|^D6 z{_`IawkXAM&5GoyKax4rC@qwwrIhCHDgVxt+L`*-f8+v$3Ij8>gI=nVAFy_2frJor zghO}mxo3(nR=Y}-ex%Qt?7K{UZ}T6KkqbcCLo9{3Ve9{6TxC7nVlWzjy z^um2`P28teL1buu961Dmu`NR#BRn+=kr9i}OU}Y=RDm%OHt=D9pV*dK&aGSssa4Uxh_`N{*hS>VR7@$j6(_)jvjEdGnyILbLFF)Ax<}? zJwxoiXyFmDgAfalhrq6w)_REFu$s1!%o{AyWX4`vp*h$a46y^|y%_AuTY;pXacb3T z?N{0?37;$~8M-TtJjZZs7MFL;m3N|1+a*;-*;gDUjP-pQj7Q#Ugv=cJbK}iumbv49 ztY}!6`kSdNbS7T}zldz~l*IqK5Y$q4!p%C!;A&OF zt?S4$z^h`_G$(J%*?EgWV(CL`Qq*D7Xi8XExTy-t+jM(1b*WhJp%L(mg=$(oO6sAD zTUgPa*gMNO9h_`U`W8$KR;2t7giFTd4csQqgG9S_NllyO`Ks8dRQ)xg*(!v&sdB+u z&kekv77K=qgST`eoYGODJoE0qQ!e$VLXfvo_|EwGxW5~ez26F(k-5fzDRnX+&B-*# zJxRDR>7=wSYyZXZRstX4P{{aGu7@JF=)y;!S(*SA_?GRB=1^(@$RiH_TYs!D>0ESmFLfx`Kzv(@?5k$K71xT4o= zpA!SBgk6&fn@$;%b{qFm^I@i{t9gR6O<;p60s95dvLM?Q*o&Nm*?R?jeKpjRzfcn7 z`jT!e3Dk#oAaYXq&yA1bVW=8p%OUwh!V{vAOU4hp&sX!ljxM@%tLn2 z>7H!NT}gD_JC?$ELVolVV(!9H{{9(99;rY=(ts1Wt%7AQB@M1t;QRyHyE`DG<|9P= zO!f|DnWMx(OI1&Jd(mbE`|TB1A%5mu6vsJsK6Owsvz%xK_>aOu#wc21NZ`vWq+vUh z?(i!uWhhMsh6$nZ&X0oC2Hy3Dz2lx14`nIH7$NnaUY|fr;e5ZJpcMuB?Vsqrs9P=K zCNN!4FM$``|NYYn!K+6ClM9EvK>V}W{laKVJ>8WB%Hbg{Di=G5f%y`fx9g)aXuT&= z=0ET9XXK^(18cGN76tCpEq5j>usDKck1_`CgpqFvGs#_r6w7%?_s|OFhpI_=ye4~b zAH>;b9^MPMWAZUxikrx(pp^pPR& z@+#yn6r|F=0x-@V2Y@`nMazJLil(O2KZUHAGCxI*t4CYT=&f`%dk)k_Qs$GUbywO3 zb}TT3>|1EYt0hUkUi${`m)NrRm8BQtT$}S~qzw#|&J0{3A$G*bjk`_120#N#+y6U# zQFaF>r1Ww=%5r<=0B5t=Qa~h6MwH9j5S`OH^ssX%`i(;Yq(6DI5zAjOG!vI0S93d`qb<0Y?5m=SK8&Jlx=0B#J8+O zMKWzEx@5O=3(bZc=DXCFRVTkmjH@OfZiD%!H$&!t0(BQ?2Xdt$1;{+;H+`WM9k+mP zmXiBn_hZ9+*LbGG|D_`~#3*4n9@S@HA6$ggCTX2EKvp&Ua>Cv%w6yc9!GUTLXXnT0>nD{k%^)+qb>RNBX@)$mHHn9H*{pL8~+x$uF8{2R5_GbJWJxWHlNf zd?HO_3dOKM)a=5x1kX&5sY;fT^*xixVfN@lN)Rid%~Fc+7r>lTuLiWlA=yYbC_twW zF8S|+L@gk?1w4i2!V7X9I&dvpT4@L9=u6mi(FgcEmIFqPGQZzr_7#oX*j9=UIShxr zxHIB+ZdIKm{$4>pG!4vD+?Vc-;hcw@!E`6A@-A#y5M9NC|9H6h-(tThiC&j#)(z(K zcleN}abwb3uD*(sc)Fj_`tV}tBPIO3zFDOKe+ARTVZBX?Zrb=SOhtZi$yPG|G%G97 zTEs!osiu)ykSJokG@k=IV1m=|k8rE!NPLO9P6R|;t{WKk3`)WP;&P8f$IbQRQyqA! zzZ6yNlIgvpO`Dapl`1V*9`ax)Rd@kd>Df6I{+7R7T?YbgO7oMit67t`Z+C5sIn4Eh zGmi1?LbZ@WgbtNPx-Oh(^^Rre-$J`3h-G|kIM#VRZ7N#``|w36V=!m2s@SUNEw)$n zh{UJh9Y{DN#>p8<{+l0GP`XI*vT`Wn_~*}E6}A{#nWptbu^bmhEXqOo!%AA%?hJVw zH)gk0ObD2ZmN(cx-mwy=btN3iF28owCCz`=ZkUv~gXHGxDq12x8)WhRo5(SRH3quX zzAA&Sf{WMWLU<;A6A$}US63XAtK5)y*`5Y|fSp3Kmcpy2{(2xY1ClF4cVabE*D-;_p_Kf-K#4oh0}N9YCM7}^AB zkNt-u88d5=qxkVO_5gK-N780?nSOGm5@UX)#;O@vGAjmlR9O5XoQJ0X`zn9c_}a0* zo0|w~MdFWu@}`pTogujw=cKn^_0j`Y)GBmX04LL8?~(fTDYf7%yN-WkkSNlSmNZ4Z zcjZ1MCRbE0M0Teb;b4VlHp^{q)!Z^qjiXx9);&80Yri-r^>x9~J)a&RzoU|LI6j9` zlVvul4FsOON~t9I{TM%8h*c?B7?_LHL+Z@ixz0!-_ZG4w>Rxh92dke=e;j?V{&S74F`Q_Ml#D4SgHgQs$djMISM;38Q!l$NuaUJ{^)1iGxE6|r#r6;v#*VnM`WES7~34G7k`T9xt*EljKsETpZInn_3Wy#&8#^ zeH-6x3OL)P68)C>Pjk0B>jY;X55W?0ZECf3c6{rLq`1m!i|xktg*6@3t({k_lmzrs zbO^W=!K`+d>ZC|D>Rjh`ckdx{31&s7dS{)t%sNC0W{8A;!x2&sf1UDX7;of^ ziFFg9Qx)+?l79wPlDh7=j~fL{-_h4SEa<_jNB+R>(qeu9DEhajq*cHeKe70OO}12~ z`{3)W#c^wxcz;`ia_~44uUm>FoN!#BuPPVTHS*| z{X!4$e2SH!FA{VcQ=OQwjg-Fj^J>~x6<(dpE}ECgD*GXG-kOKN2T3Y=g;6mH+OtZSff9?O;@w7c6CV}0~ z={_0ng{6N2U+EgQra@{HP%n4SRp*?P5fN8pe_wTfuIAm5ire0| zk*zW?n02hQNgsBphuI9?XPcoQ_K#`+E;F$H*IcG28&Kv!R%gc=R2wnUrjg{e_}of* z!g@Ll8>7j(KDLWzeA=*(Fu@seYrV=8NpYXC!tACBZxR86WwjpVP4=nMrrYH@{>^=q^)q0o@dIab3%$qu z74|VXu}6ImP)jwFtg*Jm9J~}(94#!Es)8m!%A*)h8PX9LZT;*A0P>3axsT5M3?TaF z6K#D*9Qs_H+RIw2{&3;@{3l$PX}PH}m~|1d|~hW7diq zu|$qJ!Dgh*2H+)1w=(??OEkMW=>^RC7Ry|26*;-~=bvDkfl?d#%Bh{sx{PF?&9|d$ zwif%jdig}Nde8K5MT%V>pZNW?AuX7b=m|r!D+=K7=-jJ4g}pWQaF$7G)T1SxR;_{msV;J>a=D7{F0ZF?0RLaG zm{dZI{*0^lwL`v~gPi`dF9%Jwz&6fuK<$(2mCvR2&XNj!e~0lkk8MR>LGm9$uwR+} ze_;?B9U=8UdrDW+hV9(v+q9W^ukb@hSc96H&1pG$9P;sI%02$Q^$_q*AWi>|`54#q zI!YkH*iocX4FINZU9jeIbJs0%EHVfATqlxn-~%`lTP{*)alQGq?t1eDZZpg7^Zn_O zkcl#z4q0)#Q;CES-Tz9%+-3>5AI-?DDafO@1ROyAR>N>?yYbHJMwHd;6{Xg~lXYJq zz0!SEh6u9$)0mJ-b#9TpU)R$;YYbfXU2f`zL`?U-S+(3Hue02LjC4pje>8JT)VDMNUx_vT*lHv5F?-agMO0rSFFQmTd;ubs5 z{O86u5rx$>65zx`9ekpjd+ACW4MQOY`|)h?tkv<-`n@=ruUN&@U;0P4Cm0`|+>C(? zN6e;$)voMi``jo7R;grksQ%!f(#H4(DXvr9XXtvR6C~i`FI=^oJqR6KX$}d z&I_epa0`Blb!U?&0#+!gKdJiy5|K^zJlr3T*@36`@=HIZcu3M_m4W@95fpL_E@qE< zQQSq1eKL_+xX;JdF8b$U3ilC^%oQLpQi-=B)V<%DUler?IferNY{=TEAl|CadkM)4 z7rz&5Lcic}%9CZB+o*>t;}8=7;0#cHaR29SKBVqt_huo?56Ye_A!7TOq($OK@WRGBhj1A;sFlIW^DGiF1QtxiKRKFv4 z9Mhvin(rVNvs?`g>0q%A1B;iN zR|;eXe?2Q1t=OHxQLfDKRvh{>Ni;)qKq3cNtzTTLUMd6uCl8JKDRS;VDrrtQ7zRUF zPNRe+3YDFj7wuGhMf1u_?~_>TyM2qXWi!ejM9WswTx7PWd3*Jq@2NJZ{x%S(x+-E$ zxa$|ULG}!3w?Pjr-##DwtJ+FD2e~@?N!d~RZVBD^k@{DuB7fWmZiG00h zw28T_ELe6q*N}oS!CM`?eQFo3=G@(a9EsAYS7)VSF+tw9bB}V1yc9<32$ab_&fTHT zWq9WxkI4ZTclKfLi&B?FZ|;cM6hH{62cF~Fq^t;i`Cfq>nuTt%8OlUiK7$1@;d`e; z_zA0X$UANa(TorWc@U2tv-ZRD&o`r-F9okiW)xQ&xbH1HWncw442BO6?lL*`ySf)X zBpc-uqW>*_$a~|3q=URBvcF$rMhP7~pza>L4#2m4*TA7)4`l2Hbzv0Gy=5HZf0=IC ze+))I&2PIlx#cAH6F$&%l_eb&EdY2{bo;x^XZPgwIDG3E~VwxNqYR{nGtt=(XCC`*b zTOM5aCxn^spScsfIKsOvzY4j&TtYu7=~S#!8yzHmUyaTk(h71FfRnSdDX$VCw$ ztzPSner?tJuRZx8D}2rk+rIQ?V3liyn(Dl(wO8pst2R#`I1L#B%ZWRbz2~!nm3aGH ztBYjXBCFsdot8n9D{heDpr(U17`ct(u1RB_iiz_CIp+A#kY(@@=5yEX*!ZAF5Zmtb zci|E!d(5^k?L9NfP;>&FJB)CL@%~GJlaQ^j|ACF$liOd%)pYIwo`AH~T)4l#5|0^? z8WV=oVlsg%(5Cb`fv~eBe}aVQosZ5tY;xLJ&+rcbtNNjjv>h`J22T%qhO-k~qEQEOj8t$9%m#UbL(JLO4M zbam6X!6Di`NP%{!oa3XBkh`X-d8#IUJ{1R(;kzR#U|cqSUfEYQ;GQdsqQ-W*sO5r& z`0Dtv`3sXlOCP%DX46l)oQAnl>ii|Bk zwq86{&LUT7vKh~l>8G4dBH`I1okA}wqz1EIq{IH;m*T@=D9bK@4cDBjfr?Bdc{3M70vbj0r?*mG5VxN=4ANU8_>U>KCki79V;`u z107ZJyYD8P&Dd24J)oC=#p2`)<#fCQm(s$< zs75b@l7pTEVP{GrcNo#}3^PXC`GN2;eKgf~VPt!2+Fr`EAXjwQ&J6By5=Y#dJidbK zNpjC$eE+!0LwlyC+4S?&gXkE3ycctkDCo~FTMT4M`Qz++e=aJ{H65USHuZ6|eyH=oT!~lQJ*#zPqt7G#+5A{+ zUt;Q1^$4?zPM(9sC-d(RiGZZu`=ugS4)ha)xCi#3KeC|ERMuHjeS^8(6KAIy$mSvzAFY;dZ^4QaM8P7RJgHyX;G?zog>iZ$ zWqQVX=ubDfD{fFTprMA=##PztqVG^F;E*N6zdE?enV(;NwtxAyqpB{q37%ua%Umgm zVZcpqY$u%x`mcP{h~}J!ub+B6MsYPxJl-V&5X=??vT36O>2cDO?SlT&% zzmhYczb8OPq0b~&ZJ?bQd`REmUhq+Cw{O~ePQ3VRtgBqI^}44 zv}+c&HO!7(qS;7<1DmFwML(Cp9iU^{-pgA^_gND= zYw3M1rE)S;cSusA&pnsXZd}6{#ix9o;_raJ!jNNBA0R-e11Mt(-(CWY>QA&1#%e8sze-@g|6Oe^~B>X=BY-_rBH$i!#gKQe~U=kB1n=<)=P3n5tf zt5@v=7caRm)H|OT_wzbD@5KV2DMU`J^!@y;_M%SVUYhL0Y^>f>=~b3uP_Ba})}Y06 zsKzX3{(*l}r@lq$lkbT@~kM@M~dCV)$?RfJl40!_b^`@}88hN3H{7n3PT_ zmbCSJn$&&!EA~fFE@sAlV)K_yH1(vQB@iEd!?ots4gP0>I4rfm^r3f(ox8U@vLs0e zx!lWql}?GIb_Ki8GIVR}3&VC&vhhEQ=l8p2b8t~>b*_ISH2X+PXCd`vbNKd1jp(<* z*%}ljf+z~Tx{C}-8J`m_dhGtu#{Tg{{b-rUf60_t2RH)7hg3A^^T5LxgH0 z!4JH$ZMpRxzwG*W3yGQMUR8+c6$NL@;gNf`019O5OJ!`?7t|EeU%HBod?Id%*#^GU z6ErLhuqN9mKxagoKcScR!G8F>SQyZkolD^ozqj1!Q28K*{BLbx=T&w*7Nr6%N_o5) ziik;?e>8zl_kgYew#! zpW=90{lxR*-}(K^MU1cUZZ&!bH80NIEbI%2H>Ifh1 zxi8dEs(~7!Kl{=QfArIr@9w=$Z$?of*V1Q4P|32|oc&8pd&^Km7jD5y^&3ECfkX`g0?K z*n)=#&;NpH_|y}L5m^8F@qbl3Dosv>e>1=q{dWQWw<^pU+=#{W7ofoag;|Uhn7qocAWd!OnW|!W9b< z1X*me!*VZzNN6Ak(TOAtmh9m3r{ISWwAY%2l(eW0!GmNF%f^uee-R|lcmz?Kw6U~s z481nmvnx4w;4EJ>@VqZ=+aB${9T}_kIPUD&=)>HTvM?pizq@eleM5Ic71`}E{z)cD zra2=5+m5(l>Ems-)h9fj7++7_f5WCbO!LVlrBt>?$*OGQJ^O7E3linGTr>!(R$lT% zb0F~7etK)j*(h_S(#}uq5(`3GriXt#_`b-hpxp$N$v@vrhaU$y0ue#}q-Y=rbH#t~ zzdZa`1pmv&kmVbOaLr5ft&)``s{S*_e-T!F9|1xMy`*GzM9o7zgYUecqyYk^N@+lD4BIY^GFjxRmGCkj-}VZz(3{MzYq}N>22= z882;22$^$UbVVs-a`*@#dM-#xlJ9=}m>c#`GVkRD|+xm zbm;IUrEGNxZ#EMB6q47dz+-exC?lfAveu@jUoAU4kSG1w>d52Cao*gnt?d)!4Zjh=w%0)5q#Erej!xmkAY+q_M zn=@a#qU&IG-k(3t^$BCdkF;#<%c^uzBlSvLrz2D!%mhMSZQh-iT6Pvj-;hq+Z5eTS zd>xhASZBI1KFgvb{lp9Z^VKABQ6uy^VD_PhEr(zxPwhLc$)M3v%|oA;-FKi6h#8?j zqDwc^i6c8AE_Y;zoxH3q=#W~$hnV@IA&UE9LBX|>CTq*a=ad`c7P|1p{a7eXz50uL zhe!RDM(Zsu$(;D|FH!+3^IDs={DwBSMK+wn)ueOdrT(p?n0V~Fb_Dv9*(R?vi>ZcA^uJm}? zB*lZbGL;gn_=?G9w(6FK8sAU@5s@hzl9{ZJ2DmXQ+b1M77&|`)MOgBk9V7_EdPg*d zI+dv=NkaB%F`iPWOg9o4DP%=l)?%<3F!3+d!K}StO$3eca$FAhHbJyTnYM#ONj43F z2qXp#fb9XWfi(oIkrd2V8X#Q(gNi7`t=a%xaH|mtajO-;1dPF99gtaKyhT|E!QEO= zpeiD~vSTB+bwztp#RypgIk63uh;)K3qgALxq+$UX8Pmj|3P2+=8kQXn&>suHegTjM zJzL2@?rAd-GF2);jy<}7%zlbRt#6SeF`KZc?wg2`+`U-T4O<9A2Td$0Uk%`L9MS<& zaHs-s0S?Uo5^zW*5Zi(05Ii@>@MvpS?Agh8Bl^)5Ctk&F%SWgR9G2Gt5Z zE8GUwSj@Vc1HL%#RXtz`z?DS;Zv)1waSRBTqq0XE-X3Ba1xoVh!p@k7|KEyD;8uFq8-BZcH6L#ySU!F znFzrf*XwNzdN*LoykS~y)4<@MG(a*AmjFa?s7N5D?Z%{6TeFdscr<@`4a5dlRs(W~ zxT_I?xZxOYl_b?)#!8bJ1$x)uC2$V(#^Jq~2kUv_O8mtdUh=K+Zg7pD0f<*gc2|@1BmT!OXyEd&nBhGyg)c?#E#*SPlP$U|oj8pJ4rhGyGV^WV_dnze$qX%&_hz5=W&n6>^c_~NNyABPYFI75dvlWm9dZUTop zc;NNGuo7d?NJj{!)>th(HtL!{kQ&I@5G&$-%~DZ^Tz1|c)I5{BQ!3032(%m~L%l{` z+%U!MXU=P<`|T4ed%h1f#E5U%SBTAx9F|qM6LK}siQ$YhhZFN&6n*7(D!UVn&Z&k8 zEv0xR_cbb@Ku;jyz0P-mH#W-@C5e&l=RU+kHmHoxGzR9)I$RB;3+sY3pDj7`Gp>56EkpDNxU#v$c~4(>EdQRstr; zzIYS&wdLd5Mr#+ChmAXzw}sI@8Hx5Ni3k&yGNezRCsC;7Xe(!5rq?S~D1TJC!Og{k zmse=v3M0L03Ay|B#o~RGKA_rWV`v$V^~&d$7lho`1HgeswkiK7huPG*R67%MSld-d8rmB%JKGTMu`PB4 z){)B043gvTizzQB#ZEdbZJ0BSymX1Ly*IIDN|_AxNB`Kck~K8a!GHl zi4lI@B*{_7fHkuMb+H0nUI$h>Tu&wqg+~-CX!=4M&te9{GLiT90d^nsl<&bcMui~rlq3|a_ ze$f|{W2)t|WMzXZBUFUHST-2Z!GK_g3D3~hpZw__*I~}?dI*2_NIu+?%1IE?xvS7YLgdu1e$G!q4L(h zxtuEnN%mWY()1L2u`eWWYHQ5Uh(Da$k;U@V9~J88JC)+&Y-yKDqtp=Da~&bK-iLp$ zHJR*7>ByQc5Npy zYhZo3Le@-wyOtqsJTHF9vEyaV^|&>D`+L9_>9&GJJf8IC%>hwBMW(BQCgQgeR(Pw} z6MmJUt6Czy_Zv_Z$eQ@Nza#dYZ>8Av+Vt4>ko(_Ie>1h#Br>}bwr9GlSpJ8TIJ*8d zD|%;ot~~hBJrp`OOq1j;hGjP?A+20&@-sI#e>y(i&&)Cwxf=sJhN^5W&(LGK4DHB% zp{ojfqR3`@HgcMoLfLfxo9neI1BUjA3lEn>&6@$w9_XKzPh#4~jPHWy6?N3E62E{x zkC(xG!9e6dd537WZk`Hm1aRBt6Ay0B-tu_1W-ddOJQtW~k!(%aCl$6*{!ygre}Ogj zyhSYX3D#S+S3J^k*D6)72jx7O79Eqska0IH7V;0em-@Ufwz!F>UEwl%eZkaM-v{Fb z5a&w*nY{?2G|Z4S8@_i6JvLvDdemIRpLlag^kSVRP15}{beVT%3#(HooH1&RI6=C= zvKIMI9_>}sME0Q@K5i1_A5F%++52u9lEEVRn0WD&ua{uD_eVao-U+SkVUE}DP-|UubgQw#&G9=M^VAwcZ~sg=LX+gKhb`Pbzr?g@HGxNW zvjOF1kU`m|YbmeaWT_Ph{lP&M96bEu)25$g3f>vlRh*4Tu9$r&9lj;e_*W2Vtg^15 z$|*O;rKZV;3bB_%?1AiL+&w8uzDsBNw}(V)QL2}8*(P&^XEOaq`}%bc)R?dJ^@R-0 zLx!ZXfqfV3n`&3^x-(Lz-#BeCp#rONYs=D<)EXG0pRfzec$^HCCw@OFUj0*J+MRrJ z+@S3K1|=Zuv@6R#ditGhEHaXd5Q=tK#lB1A3>Wb4(xzszB5wy@_c;3t%x^k4 z;3Ysqn?`8(uYb<_d?cjz3JCD5t{Eb%K57okqJF=FAw267k@92RF`pWoX7~>)1H6@C zSohJ5jMG5`dhD{N1b)fj+%i91+VY|if;*W8o*J!6{Uz!TbWq*HiIVJizDsN|kN0x2 z{Ynp7KF=;*@NEy6k1oIXL}e?^l#LKRT(O~f&Iy`K=B6|grS-&oN14%oRYmLXpU^Kqvqt;#3Jwd zb0yfikyC>jb07Y)nC+dPY^V(EjYwWXbuu%`bb%?)7Y?{@XKJYVDf4jEuwl$>L+`}u zTpbnyb_KCa-9&|eQ}@l@atDDXSp?PMPNV&)N+G_28F|A-%HC8G!Dkf{;V;7>%%6Ni z9Ks%+uYg0?!}ASr2on)s35Oa0jWIX_hh2wQ(i-bnBofZ5tF2-$Yq8i5;4HLs73(QQ zlSzfcY@&i@Up$$65|!r> z@JNIiTe#L}aSf{(qI^)N{dw(yWxR{j8M1~$bX=2Cjyk~zqz-M1<>NOUq2izBC&DE8 zzmeA57^WOOXaT27NB7{4Uri|AUIkGPYJGYnIQl%*&X6vh2KN}NN?c~f3$59H z32A}V%9`uG)V-V_G3C*_nUSYojL^FokWx-6E8xPxY;C}Y?qR#Dzbk-PmxQ!CneS62 zx?E3&Ez(Fpq7%2ywq$}RZ5oJT#qw<(G9P+x_W5E(OuQP^H+MK{u3s3n!d~^qk(iG9 zPp;wPM`wpr;6AHBX>Lg0d_~lJx||`snci|O%Fr$^e5#Xka_hK7Ob4%QxC;yDpS_v-K5il0xV7o@p4HP^ zuV+M;b|{lgN)kN@$@7IB|ERG8}goAf+c!c^b$>4QRX zYu@SZWvAf(DepXP-&fXYrK=d2pW7La)C7WxjpM=_0=VgmY?ZmahCn=V9I645Yjov( zs2)~V0c=IH@S#zsFkzL+*|9fQ)pC8pRJl#k1?}GNCdl=tU(^LgUFvc^6l(hZ+=q1= z!#`z(P7JowN*A2&ifd|eIy;ZmiDJ#`&&>wZrDxT+wJ=&-NA|npa8-w1$OViJqIb}o zWl@pbTnK5VsOXk_v3I`VuOmZbxFjY@uI`@+Z1grfdi<=ac~q}Ybjgpm*3tp){@CSq zkgdJML>xjuke8t(H3ZoKpE$zaOqBc&{+EaUis1kF80M*7wlAmeeRPvW;Lm2eon;Bj H{rvv`!}MEK literal 9884 zcmeHt`6JY8^#6OtlxZ_FsHB(~yHaQ)GR9EW5ZV+eEy`_^r5KEitQjsv%2E=yLTQRf zbTeorq*A!i#SofogYY@;dApxqzkk5@(=SfXbKbABJm);;InOiEj`o&|<}1!e5M+_H zm4y?6NYM}kzneH0M$-H*oQ6NRvrd*Qq~P5OA^eAMmSycignw+}p(q5QA=VaVF6XZI zx7x<3e+>Tg?d;@+b*d z-%?9+XSZdyhP#hS9~-i1RSolw*UcUNTo!ojiNScyS0A+;fxGT%-CO*k-L0QEPYJ}h z2fwHG9v?65{usKUJh-pB(WBp4_~}7eL#wx?vrXB89|J01Y>Nw;)~;6^=&-lhKW=S$ zV&AW86D)SDWX`p%X)N;&)t&m?9GW~Ju5aJgw`w3>%~WJ&LArN)IHKaRCPT(2 z@~O~<^ueia-!BoTa@t0ZY}oHb#o@E(krlFgkxgeO2X6)NX2ORnBTcspKjPr~ z9W^y(8`}cut&hhog#!W8!8!XaIh9^`LUrCs=DV-c#==*@6+t7-EA##o({37dbOs(> z!%n#35d5f!OrhzeAz}JH(zW9wH4UF9Lrh!G{vN%TxpXUqYT**V-ZyyZZ9s!tZisPy zX6V|!?!~~r{Ot|SP#-TRi5f&#Ixlvpk`_dfRAS_*+Bv>;qA!h!kuz%PzdtPy{+{sk zBS{-Qmm$XK56aYf2+tXvZ+FfRWf_9j?>jnag_+YK6SZ~I(_cw~&|KKpU`0r%= zxsfq?Pb}fu7R5_;DxGPwY^biu*k-(n`d5%vy(^xu^7Qzp+{Pf%OwN~lEqgY3yK{$U zPex~P?wIoQYhRe_Q=ZTN6A63s?yKmWt5`4?m?ABRCaD~EWiQMx)VUS0|My9wvo)Q5 zq&coNi)9b_{(6?%AmWAQ3>>I8>j;lZQ>1=0o)#6}N*XiSF{YQbgFrm=>s7d^-B|mi zRqKna@G5D_BRb>aK*d<%FpS>|Qm9wN6V{$?SnLO$Yq~8~2>jb9JF|&#F+TM7D*KuXo92;I-@kih*&uLWIFIS|(7<1A zQM?AliNV5nQo< zjNC&8r8+u~G|x?qN5bZ%Kj}O}%5aVo(^N!f?gz!U56p?sn}fs4mHG@;w9`>d@Z(d#qA;!KDKS zm|g|GQIQYY8g0Yo?KnufxEIm;Q-z?ML)Uxta@fG6}2B(i!`aCklj>kF{17;GuP=3}sK0J~EHi@^6R$@i6O z;G-CcE~hWSN9Gb;N)mxI!^o=$PSHU^8m0n?p(&ggY5#=(-`Y!0+Ebqn*j5F zV^F_jX-sTAm?3yV9u|s@i*WcR8wpfiJc2te2_?kEmV-RPzPbab=>8E+;;bbQ9g`(K za0J#EOzl^IN|E@8c^*(DX^3+q;qWfAsGz_~47CYRFJq{^fcgVNRUi-(E=y3!kqE8` zLp?~LF_&PdoAHFyYuJ1eg6onb7E-0o_Jf?SQBodZ|3F}g4(q>^-5QqdU zP7-2~FeWzdBTFMoN(YX4628ZRC+`9hmWJ8wvW3IEgt6XHV`gD-fb5W?IZ9y)$P$S1 z8j|&Lj6uRKV5~N>G)K(G%wu@M{8`j+BrFC)Z30xueosPr0aXR_h997!$1!jL5l#yj zDmelPi^EV=D71uV%=7Evq=2DDS#c__WAitmAWLK4*Aj?ttR!xs8R78jFjg--4)2Tw zl-GP9XGdkBiq4Lvp(o>Qk~sK2wBMa79@n^QdFrmDT!dj8@c8e@k8_1}buzumb5}!+ zUtjF;TmjYJlF=cRwHb%^j3V8nP{*T4oIoO30rs(IajhjAX|m)X>p2(+X-d#!{Gw2i z5jh$X22~G26cUQ2B}(LpktlPRSCh;?fEwT-fu=!(lA|QwSE(_P3uK9i5(1Hlbf{8A zI5MPD-c@W~lZhP1zJE&tQbhvwmJTEhB`rF;6{|sTghcTBdus-!*;3i#^Ke>FQ6WN( zC{RiFnoVS*U~`q1d~Bi0@bJMCvJg~1nxY8T2qkZ^9I67?s%L`3JJSD~dWcR*9Dq(4 z!xZknsUeuUiV2M(r9#rzVgk3anaW_j+<$!IVD&=O>Ts_r>F?@Hq)TEAXhAc@;bDzu zwfI1$A?svkwQy8|DXIURlBFTA)|i5hprGEI|E3O0N-XO0_faG*SQa~`#B9)F4;=aL zD9FNrz7-~@1BJL|t`IF`g6IMcfkLmD!MHLaxUIJIKhdAdgi!m*PhxU(12 z{Y|$cs4G|G5g3bB|@<4e*kp{vk|(Vx}n=#8tu zP}{Lvch(Q9)~7&b?@{ZcOQOruJ>m#tGDlFPGs~d89&}*oq#d3`u)LuJyT&2Wy(_aK zOA*(0$JUJrq;I6^-hiFIsp@80B#eoUP73=@jW#Y% zArSRbHE*QDRBeY5Rg_rQSvT4k&_0lx?9}pAF^YWrXb5){wxe~iKmGuh%#4h9i}cl4 zc}eFfE!#LuWXTsH2z@qv#B}OQ%7pZE2JwbWm$?@#oY`()O;yIP@ri3w!-8&7JdaLc zS$CQB%*ElucC%|B`t4+?<|>*(e)$v6a2-(U zowl!;kFuf*)v#uJ*Rm`KWd82frP5&6M%1&%B1^lMW<7z?eQrzVp`)m>$2N*^Zy^4p zlb`K|U6l|0rG?eHXp)CJ91m_bZGqIweTzCEZ3`RO1P6(PJG#ms2>MA7w6H^}7OGi| ziysBTUkI0X(Fvcbq!VCKWnKmAqhk`|Q(^2H99UlYZAZs^P`=$&(vHx>DQz4SM4*|l zPnC6$Ol3l=?ECfJ(q-trer6rTNmqn(vF0Go`~N`GqsB|+mU4$wUK)aPvPs(SD;fJ{ zVYR12O3RFc>{9Xm94qO*oHljX{{Ex<@?pCm&!_!~o zmLhx!TfMZRdop{pAVUmo%^L^qcXbBGNauqILM!+nNS+pkmzPGqpASxZo8O8&=}sMd zdmiA|_%o4}8jN2L<<>$GY63M~tk^D=+&5d<2-I`55`2)OH&Uof0@M$DNA?QJ+GQe~ z1r(#Ta@2pL6GXGEloh+llDonVS|r$>?W!!NENbE0L52pPmdUQ7v;3n;w3V=pYlso1%CnrHb?psVI960tLV7<0B%7k^_ikQM|4m8!o7*4Q*0#mE{oMgjFS7 zuLkYW{EqA=E$C-nihxKLy=R|@C5v$DL0BqB?8SR*5hX^_Y&ggY7Mt(Th)UZAJsdO- z{U4f80gWJ=Qe`>0VKoW~9TzlT*~V$IC?qsp_j%%;j2?;#gR>DT-bV_xb@2w2aU;lv z`ss>lbqOlBEOnopIywPIx1Pz%&>NIR&VwFZ0M*538gjwUq$82Tm}) ze~LYva#TPkH#(E^jzYD&+lw-$U~SpMJ1bE{v>jV0dj8Z0MJ%-fL>i-3eHSYEE;L<% z9pPWQE`iOy&{jc*=6HDzY9-p4HOo?6PP70bf+u)si_El>wgSW_=m(l9)MWqN0KxGF zh?O1TrExI;aT?l4{zY-t$w?IAE86G53F@E%==+ZcU__W2T^{Uj(kmP*o)Es7nGPw< z34Jnf1K~mwwo~j7dQ?C7_Z4@zP~oS}JvLd^zRh7q;Ls4Q8?r9lSQl>JL8qN1hpoAe z6|G{iz0r8XU&&53rkkehjYPUzh?OIti=qnGD1Y@rr-`KT&YbW7 z#;6<}b%8#Gby=pY|F}E_@0*S~i|ZKCDn8fc%C;LxQm6;r{iNfgxuu^wOG9WS|~^SjKf0#GzCj#_h4+)yBeI&kku4df=Sk8$&#>2A+g+2<_Jhji{UqO&+l&?XtGSva%!EOGF8s-r|};a{NELq&I+q4Wa&&} z2*n`_;>W#xBaPCb8&9#{R4A#iIFI3|WzD_so&V7xMJASKSM0it#YIlQA$2q=;pFn_ zn%8na*xyZK0{GNea@JwUMn4NHgZ}E8Mmd4y1{tm7^8LN)6g)o`!F{si`o4B8%v@tK z;u|=gV<0o0G-t5fh(pA+upk?mT;CTT#OKC2;?x|2l_z0E_+bc6!HmoQqQ`LGq{Udd z_U-nk*}u<$J)*-DJe*5#3g%pXBMKQjDI9)vquA|jc4>bCb!He?{?)V~)>}dLl2vZG z6@a3-&Nkr*p#Q-DO$#pa7M@QuXsnh428`)HbQxXFzqH!6!x!i!4@>3N=K_J{lcS8= z>!z_`=t(^0tK7N@zV#KpTp^t> z*~ZlI?}jk}W1c6cX)q4hc>HHjGg?{W6iUq}Akzv^$WKZ=a*lnG(P=o^RFE}oBJiG$;aI2Bl@t5FGo z`8gq_;woq1_mVFKML(E?XJfrcT{M{nPeuue#J_65mF0@mMoZT6_ztBlTqF_Nm~YR& z>|?H7PH}1m|Es^-UKaV%Uw%-Y%3n@*h)H1GqobGLlz5#zn^V(?+MWiCXTfLL+?KGs z(|U63-o6T{%rAy1_Us+pWDo3K?S4mY_@?ND<8HCMYgEI`=~L|L>~qU|o@B-($f9Ue zlESwhr&iUhMHW^Ynw?DDem6fCZEvEDf_=}#XP0+3WY4&AU0y1p_xhZe=!B<#S6LqZ zr7Q>vch_CC#D8XNS78NYra}7>I`a%1>kWgx`M@osx`mapfxz;Frpt!zko@O*MoX49 zc-#mu7ySNEy@}!!W?*0dw~Jg2rbk?C$~*Li(}Mfv=tMeiKv`hiGt%JkAZ21#w&(EJ zb>hoYL6fXjb51>U1@GYn1JDm!)czq+wks*Ww14H;_NU?QHsKNOy}GM!JwK?ssM?|? zL`6;4TN*B_JmN^@W72S2x>ebQ^lTJRn#(r+Qy;u zA~)dj({t)~lJIZ1uRKuCQaQAC=m(oWs@2vuFtlPSN6`8+Rn-VKt)a5}9~>;#Oy!{$ ztayUVnbCeKYKRRtt~hN%*kO=iSJ+CX;uhSfl;}4lh~S?M_H`LPp~{-Qvo)-O_mcx) zkieq$`A%n3w~6W`;iF@x%8p-Zy|YYb)G72leI#Y+s!Q=urhnX9cG?h!k2DPVhF&XQ zk)s z6Wq!~B8%#DUK+0>z24)DuF=lXlMn7_qxLj@2Ck+rqcUW}IJgP_Iyyl8XhJZ`>Z25a zISn&`D&_vaj{1?*Gb!)a_T)6}@9E!KlbG{^l+>-pn!Vmmt!(Xn)|KBQ|NaBu|u8Wa~}e(KcrF~z4(9UT(JW#{u3Ts)*f%MUOLk) zC(NCs8j?OOO;Q*h%@7)v@+bAq+urmvrTDD#ma>EHQ@***^s2k*(oxAF85Gl!Em~eNc-v(CO*ROV@XH#ELC9OG?3j@Dg6SgH) zTwn9Y2s}wCH8v3;S%Qk)7AsB3zb~4kjk8)9Mac#C@^7VIR)4P_Rb?7MDI z-=;TkI~2F1*nL|~#>_tS)hTTWeX>)P_wsJX&x#z#%YNmnL5EMMpBOB^dR^$N&5Adf zdBQIlIS$8>>a{QaUJ<`l@q}a_SHU-Pkl0>x9R+&O{|UfGnEUZ>EOL(n|*t^Ne}Y2NbD}`y2RTv zy_yskzdO_|zpz6@%e!93wmW*i1bna|Np5cPF z59#swj~3T-&8@#k{0yG(XV4zPbIZgA(Cbp!9TmxasYbxeLl_x(0M~Z$H18S)4aL zDiv@mcY3_=cIVwyex$<(mp+~lej3WWHXb$vufdt;E$Wqzc;{6n+M3!FZyvLC-)VKm zuOD3xgE4{SmL-9ZR%63=^7qEyf*k8mExFy#efs3d)syE3Qm*^YS*-7Az6Fhgv5MdK zyIEQVzTAD6cxOo0>x$@STWb~umh&GLrLJlBQFD7X;?=^?FiN|vO({AvAuXIvp^j#d z@)ABTU)l7f&5o3Al(@!ptWP-d@Klq@3Zq*t+f9}O5mpAKZde!&pIB`DkVmLfBIqf-d zt%i4W>ZzX1Rc1eU4CY*6ra(*|K@wae(z0!y1l z>DqT~Yb-;z`1ts^(; z44 zi6CPTZp_dJcAGi1A>ALTwx`-B#@Fwjba6HDPucsZ_DBZ09Tb*dcIs`FSIh=L{!*n? zw(bjS!+f^ZeqNB$D6l>1JoxuRVMahm;p1%IIm9@)$~SxL@6@7vi(kIZYH+--;pY`vah|CPu zQcCam8MgO|v#aZmoE&$XRqu4*g-P-go0IFM|L^BE|M%k~^8f3nSToex{_XlMq4kOI QYb?Zii@ikw%j3fT00r=u<^TWy diff --git a/test/goldens/rsquare/rsquare_023.png b/test/goldens/rsquare/rsquare_023.png index 015a335735472b57890c9fb55745c52ec488c8d5..e27bbd6adc2931ddc8659b511e89f7178194f8f8 100644 GIT binary patch literal 11747 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 W?qx}9TSO!9_qVozR*t6at^WfJwWHDi diff --git a/test/goldens/rsquare/rsquare_024.png b/test/goldens/rsquare/rsquare_024.png index c104068fbfa90d170a2524e9e28d63b6e9db9113..fe17fd97feb434cc04414cc5d13c2baa80218efe 100644 GIT binary patch literal 8578 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 ag9)+QwinHk&IVx!ew#LIv(L8kIsJbM3z`uC diff --git a/test/goldens/rsquare/rsquare_029.png b/test/goldens/rsquare/rsquare_029.png new file mode 100644 index 0000000000000000000000000000000000000000..0f080798463091cf85304635e2f873f8812c7ffc GIT binary patch literal 29168 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 RHKq#S^K|z+*6bRS{ZISU%IE+9 literal 0 HcmV?d00001 diff --git a/test/goldens/rsquare/rsquare_030.png b/test/goldens/rsquare/rsquare_030.png new file mode 100644 index 0000000000000000000000000000000000000000..ce51f76c34e1f51384bf7d8d7adfda48bfe9ad0f GIT binary patch literal 13390 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 KFn7QG#s2~0#-FkP literal 0 HcmV?d00001 diff --git a/test/goldens/rsquare/rsquare_031.png b/test/goldens/rsquare/rsquare_031.png new file mode 100644 index 0000000000000000000000000000000000000000..ce51f76c34e1f51384bf7d8d7adfda48bfe9ad0f GIT binary patch literal 13390 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 KFn7QG#s2~0#-FkP literal 0 HcmV?d00001 diff --git a/test/goldens/rsquare/rsquare_032.png b/test/goldens/rsquare/rsquare_032.png new file mode 100644 index 0000000000000000000000000000000000000000..ce51f76c34e1f51384bf7d8d7adfda48bfe9ad0f GIT binary patch literal 13390 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 KFn7QG#s2~0#-FkP literal 0 HcmV?d00001 diff --git a/test/goldens/rsquare/rsquare_33.png b/test/goldens/rsquare/rsquare_33.png new file mode 100644 index 0000000000000000000000000000000000000000..4d28888d4386496fea81114adca5aeaf711e77b4 GIT binary patch literal 4015 zcmeHI|5MUu9DhVpYE$Rjat#b`?dEnix#?1y`6bdZ&r@f$taQpvr7cXjF+hxOSKC=x zIcsVkbsv9l>h0VirAUN_eJet196`~AG%&pr2g ze|cT}GMgB<Uar5iTS3bHNbh_@0DQr)IragCH=$e_(mw9^p0~PI>av{bkPr%9d zH!nihu_ua(6rX{cVzHRLHb!Li%}!0-fS|UvHeYEI#I}vbpDHaaB{toaw@9#x@1i-5 z0k%n)81HsbH#b#mYjDF->$-}ix0>wCcsf@VE6|8+d3!-nU3W)0lm~M-!y7lCtq?<9 zB(4Q9ZqM=WfA7r*P%vSuX>OW`tXHhwL8QS+e6%eRMXKHY2IyTg`8r0!qar0-HzEzw z0p{7kP#@9XerS;Y!pPNS#{ukal%F8WJ>N?;4eu13&k_L9@0Pj#lwWlB|5X9l<%8;P z*Sep#a;H%=5%O-_`idiEs^Mc0&;)!)nJIjO>Vdyt@DLK))}Z5^I;Kw6+SfZNIMpy! z(Orf7W(Ae~vJ2nN_}3+aI#dc-RFi>)q_`)XV`|1$qnNd*^k!R|p?*=TCg^W#J1s zto)Ew?WCStKtu35Y$SnF;{dq zIBd%!E)$;L*uq&Ea6ZYxl~<19Q&RSIc^1Y;9*$Aq;#_%90QbK_rj>BH?qwbhB^a{G zCa*|c7QCD>$6u*+YIjlFeMMZ99{~3^#BT%ea|qJgshKncupb! literal 0 HcmV?d00001 diff --git a/test/goldens/square/square_0001.png b/test/goldens/square/square_0001.png new file mode 100644 index 0000000000000000000000000000000000000000..3e9477b2579beba2bbb6711c3b0d5fe46e85c12b GIT binary patch literal 3295 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9jkefq|#f)5S5QV$R#^o`Ot<3=9VgG@@b`u$8P`ARKn=z}%S4W8HV z?mLuQ-}C!l%v?r>55ao3Gh?=Ye#K+gx0;!Oq2Yg`1CZ=tWMp74Vq;-oI3Xdxz@U&k zDmWS-qlsZOBaD^|qov|#jWAjpj@E{wwc%)OI9eNGuMP8q9`emivgQ2>?4&Swy85}S Ib4q9e0F9&ZUH||9 literal 0 HcmV?d00001 diff --git a/test/goldens/square/square_014.png b/test/goldens/square/square_014.png index 49e033366a3668ba68fcd2b86adeca4106ba5087..7dac9c6284a7e498c95b06629e9867ce29607ee4 100644 GIT binary patch literal 13869 zcmZu%c|6qJ_y5cwYYb76jI}IfDG6!Jqp~G?X|Y8qWet%AQ**deMGz)Y z1i>C>TL&$1m#@3QKa7W|juw(tFFXt%%pO{L=4|jsVmlLxAfkxg!N1IX5`Ohu3_nA? zf~Tby_&WGH_@vj~V!tWE$&n&xohkF#PDSgC#7QabpyThZAG8xc-p^rs?5c_U#_KF9 zH!%SnJe>PJQWoZ=?m(`=QC zkGs*lyQRhN#fW9^Tww{`Ha2ef%ayB-)R$LA5&~Mz+uPd#s7k!XViG#rG6gV4Z(Hb{{XPn6;eG~7TNfQKhgAQb2~pDi~&4c9rO_rwtK# zJ|e>XiP4%)w*eH9ex$&SAz<7G%b4F>f!{h4M;J8tmY1IrbIV7Xe0^0F&B-@~r7 zdLFM&u~$m1XIFH>vMHXI35hb@8@9s@2hVoZiX4M$prmNlPnC= z4<{VZ{lmu?)RET5i#`2%B$c6{bR>f1Pyd4ZSBd+22qx_7AvPH=Ga1I5YGCJ9Uf3OU zzW_GMMzfy@$k`1<@{?R%tJU{YJUO zo(D(jcf}v3qy*&Ger{L_Rm03~gFWpw{!4ChlTC~R?b%y&?7}%ivKUCZu&{4?(|UY# z+TIwI=;htp;k=3>`_J2(op8M1;b_*O2@4IIxG_fsR6qL<5qiaJ{b^@*LT%_rQ`+l* zAI#`wlPqE7A}e>xMc!F<5!gS5U9R3(o%Y()dyUh5B7!-8A}PM6#y|dWe9g+k4axlI z^e(Z@(T1 zY2cL2YD(zd)zo61vyHbiwS_;}t^8QV7hdV6{Ea;Qxbrx&llHSAt19Q<+=Cl7>YMxK zHwEBU7q;|8@GK>*7LS)>k`+Pm!=_wfXm`NU{Gx>2B1avbH1J{an#~3+Wau^+?a6(u zPm~zza96*Tm0JN5KdtNnCT7N~Sp9!#PJ0+5{5q&PIK;kB99F2x^Iu(Q)2fzA>k|7O zSRx;UG!np~OnxCz<=bt-U3nUI@@^-TpcL_~PW41%Vc{TE3hDfv8>i&!Sf|jbc@vMh4LoR*`!s!(G3N5Qa z!>OxE1>YOQiziCw`U6)D*f7azV4KJ|)HXgdH9B=!)l!#9^`2h*_gbQ3!!5+Md2MJR zAkG7rJ=z1ziY7>;#WyxD=RSU5zW@2B>O1a8`;kV~w3Lqb;-EV}_%Y0vpr`{18u-3> z1Fx=@N>6va@YoINDs9K?M?PIJs9v;|;MGFTSD?;ve4{v$I6r065&q`XjOI$?R715l zVX-n)@KCsTT8huF5_^87%$0rGN?Q*ZSQpjggxf3)pBk83jY&H3^CDs_57Lyp4t#n{ z4G@eB_;ENU==Nc(?m+{clwYSZZogFV4cB5rSmBnDJYRylG&GN|8dz&gu~cnx8G7Fx;N7);^5)#i-X6d5 z2Qz9G(e^zn8?c^+$mv($V1@U6v)bMqO7m_wGB8)7+2h5eTXH*Fd#Pvd?fwRvP?x@IP9=^(^wbM^0SN=GjagnkHc;@5OPYTdvapYe83-2zeLBYxXu zGfz<_%oI5~<*URd>qxdp4XJb`X-58`S zStcQUXPe!tvMZgJ66MIIY@%GPo-YIwUR$EdIOo?35cQaG>qZ9ajJXWW>rtJv5~v(# zkQF#HtrlOwKWL4rP~(?{=!?U~7`v@!lodRcSbNl$zaH}&uJ=S^uC(<(I7BtEY>n!b zww<w;#a>;LwF**T{iA>k|gY33k!aG6qNK zKm@zvASFQsgx-hX;er`mvE&`#yKm7)Zd(3UtNd;o@4Zk}HLAV;Opad6jjzv*3LT|d zk3Cov8i)>!za1~7n}}dX4=cs0#AY0JJ|gate`%$mzn*m)uTpJN%YFzcawdP~3x@Cgj+uWIR2y`WUa zs%Va7b7Q9)ZKDJUIRF#OHbJ$fcY0#kaJ*oO0~8X_8e=icFi-&cN*0FP`pO|_zRX8V zcB31}gqJ}6!Y*p8NN4s8%;GY{gi6~QobJaseN!e9R!`mCXkVSBU>7L@-W zI$t?izmUk8%+QF;&~puz3m5EcNZahhTTAlI~{*EO&6 zIFvdrhgZndNqGOGNo}by@Ls#VDCuQ{#8{DE>TI>Bi>{N8b+Z$}1$dD>wqn9}Gg9nD`}ts|l@ z0o;RmV&TYMqwl*g{V<9|bba-m=t_0Gu@HuNoi1Z0G9i%)8qwOc<8R%#rTB=pw)7=< za@UR)8mcRLb%;bff@R|hrJtbmyBBD>*CsGC?4pXef6V#AO!Y=3o2Vl4Uk&V{QELB~ zcuFRr{3DxaRL%>*ms5Y;s}&HS*b@?YR8=v|yK>*S5rU}CO0LNE7mphaEM0UJRf*_` z-m`q}*1o*_=@{M4Mh@y5IE0%N4!#umxhO5qNBFUUU<=;q%=z<`-*k+0mKFx?wa0cy zj?I?E9a-(L+jcKB`r6pOnui(6N7CwozHej0qZ<5X#(k=74ExAa#6Q_(^y7`5u&l?S zL$p{Uig275nW!CdjLUy|dUo67bgAn_{lxqy;-uPiH|{!KqUeSLa_a)7%&qgPxuO~E zQVGE}vwD&k zq{H|2{5d5bwyuMf-<071g0A54jEZs}PVn;PsNM9L9wfE$$at_YpZue1ahf{*DD9ck z5ebof``x9OAAIL!-ie;3oDCdQ<&3xt{9cR74TK*T6|^lb}bdOP9DhMEm=xCEfClv z(yR$5ePkl1Pg_H3z{DeXN?m1JSDroQ)&^p-7-PD_awLsQvXMt-7yUiwbv`}0mXT?< zu(fSHtbA!6O@+#|cVd-j;1Y9~19_2IMsj z4%41}7t|{7b-lM7Hq1f24;NnC+60W29u}7ANTuVNX12)H%caRBn1R>0z}RVtt?Ek= z-P76{H*igD9|~-&4J=e|gtip(Af|b51T~oZH1Ff^Pd84tTR9lAWACrOF?FQ7$EPuD5V`TVTVZo<;j?wWd0yzigOs?FWu> z5!?&MB^;|P{8b}Xf0Z~@?yNr6A3Bm$q+~Ij`YQv0a6Vw^hlz%luh3qR_~j2a^PjoL zotb6_Em&%m-j>bh85#{(6z{p|af&y<*I{wBx#+P#eaX!0{F*}+d7?A!`&#{6^AfKm z_*9h1ha6K4_+6_^SZF*}_*N+*^w-t9tJ9;B@=pW0W|O%x-B!LobRg!U>>lXgKa&W%+kZaZQ_55K8#{4(C3uUy09> zGjh>hHlfY13e6*R#7da~I4fd&0zVcMuysN+HtPr=_v?=E9^!+GHL+ zwnXoxlY#gnQl&%A&L1!02kegZQBs<;*?0+}t|A|C<#Gv{E0Ao@YZ^JYL_R!s@ddFv z1m;7 zFSD*KmDtVY;U(kIl4uTF`5{i6RO;rVZ1%D#?4y?qPNCZJSG{Gf!pww;nl30|dtBp* zjOp{rZw36JJXMyz>MV1&$4r=B~#>P9g}~-+J%y0x*hE_ z5b5AQ1fc>)#f)@+KF~Kp+K1D zY4i??lU>(#R3Nm^jU;uueN!QjRa;v9yh;`C4|cT76>|4UN~*TvajrbVw6K1q?4e$Q zYH`s}!1Ott$*;qKR(@OJB|eowj+2sjakTLbt4%^x_I@S5OhJvO_0((&EqH7Jz7LPyq=e=R+$w3DiAXeC>=`}+pHWsx2DFp$)9vb1&ek!^|4i^YoT09?j z@^jKikh}0h_Q-))1#%I%s8?xyHwzqlJJgLJL?1Az*r{^}XWPz<(>3p-n|#VHt0`AK zjMg}!<332Xw%%mB7aWsxw4Ixklt5_pW=%EctfoC8hn9FWRl?@FRl`iGcCRzO0bWTj z6GXDJ^tYH)1Oy!D({Wb>2^lG&kt^-ey;q99WA6WjTnl=7k}K=tCzk$6>3-Le)BKuO zy!_)2LKtu%t9Pcrq}8Gg*$7Ts+*Dy*+nx&Sq!0h3<|<9Ua8c)Xmsnhe=b(lK@&yO( zE}uVeM9B2od)aj*%LSp)wX-+ZQjXWmxSQej4hEd77-8DcXq zZ--dJYtWcMyg;}+k8)7~E{`8?3>?wVCnlhI%0oGFf+}81C&Zd7ORf^@j%FOWb&yOQ zK(2A$H-*MjMk5>ymMB&X^T}f;K{b93x@s+BwF1NiX54ub^dKzkz)>wBIk~#q0&xV7 zBbB--aO7tSLr{x-7Sc2*%)Zl@%i17@q3i`ENK+uZQ#OD-Um(pG&59C2ND{~&7}M-< zO_gf*D*xo|e5@{n6zfg6T(q~)*X~BIVpyI{yba7@PfBjSsVeL7SRgRwayfR7rN1rg z9ZZ zkhMO?5xJ@;1ugz%jIyd8E2=H?m=vH$D~Yj#Ou{3-;KU z+h{41z@%K3&%ZHQusgemVWXoZAt+PG0JcHsFnVll^%UR2lse!Tme2UFa}?sG3i)c! zcOR?Bvwl?dKv;x&Gy>AA&fe7}xLavFtqe)!ohQ21}``4Dfu$ zW|Jcy@4eyKtH&)}LPsJ(-_H(7-=2?H7sZl((RRY{QBu`Ti+Y#ygPQ4p z)}6i>-FN_AQ{UG4IF7K0`l*W&mGry9V_x_ENn|>+R{MAJHZya~!GUk+vmCe2KCz|p zj{ApdrpCPh<7&yoPwMN9_&M(HuV{(!PvqIJdNY%`th!URzqf0o&uL<`BXmn-t`8Am zcjMfs=rgCef2YH45tCkDg}FO7n%MBw7MnQnNUECy^E!o@xuWyFs9xR$BNV-tMknW+ zIMwKx&Y;DPQWr31V@eZ8yR*%_t{6R+L9ZobKQAHfo<4Qp6GR@!?7$B8MkY#%nvIWa z#6*tDZQ9pU%O_ddBX>&?tAipPq@wmiO1|-%6MLf=#oh<~JrK^`c!y7AU|;kr>tGLZ zrP@WTXL3*-%~0y41x5IqZGsx+*>)-NDg#{a=4@wSOnQ05z!5Cx0f1Vm+m2|Ltx9P+)XT4_JXHC?9+~D&NF1Okl^5)HuM}syRBp&N7+|HQNBH+_yZ;L1MNb^cqjBUAw06_k8LoN7 z;i|++nXh{M@6cVXV56nq5E~>MBn-jjbC*>Qo%>A9NawO{KAc(07*p!@g#4Qetw>)1E0?8I;iDe_1k84z>*R{_^*b7m!?_lejlRJokbT z+-J414b6rXCZOc4$u z_+hf&+nmkW%DFN|`$^^tmabitl-D*&Ruo}rfHhv-P}w^GMT^1wph$iE$S+xv`453+ zID9ZJzo0$bg1bPb0g{#iOV>6^%B3slINMW!+0j@s-!>|p2xpO~$?cGe89qq*fjmvHJWFvHIE`W%iE;SxJ z5U#dfJtOSyBkVqq17o9;gcbb45#=vXXxKNMzd3u<`)ZRhOz+DKwowz^wlYpta#JdU z2O!dwZ{;KkfyTP9nE50#!dF-&k0Ru$J-sO6DoPGX>ELfScU5-22s) zRXqD-;v=crLSm(}F2$!|J=CxPEU_)MmP;5Ry}FS*IU5~0*Bu3r4w=NBDRW^xf(U#; z-vWp#8go#;K6c|KwgHAF8tm~C@Ze+~K(@lm)Vu%)ZQKNq7=WVc;3d$aG1Fr=!>w@P zOdmn6VT@JNxr03rQ-C#o05Es}*qcL)ti)i0h9+n98AEj=5bS2tHF8NZ(cvF*z{7ag z$j<^fV7{m%6hhs+#{Cj-@0T|asP6zs1<8lt)qQog!%@RWpJofF3vx*u`d4UYDS`7a z@)HQU`5}4gqcAA>9bOH5ib6-39%cRnGeXn=2oVLu1p!bV^C<{g4nTqZ3=uSc42PW$ zfUVM~X9`$J1GL2*h)sYP1zn@SI4HP|(M9>7NUP*Ql*Y`FSr_Fa2zuOPfJ6#@C?1B3{2B-tg*lv$g&(!)-0Y30e(mvc@NmFHm6f~<(bsxd zOR_IWkOB!rKRC5~U?E#2*}DiU=!M(@V|+uP>6eu&M;OM54jY7^Vh`H#8@hz} z>zii+AwY{e=wvAINPU0L3?2Qh)@ezkqu&n_K2Pdb9H~ydkh}%N5P<&Oo}2FnYvxxK zy$OmpLr<@i_joMo3vW?a_4>iG7mfFktH!DgU6*NsX=!Dw==LM4@z+nmtBa>l_HGX@ zyV4uPL-u@binY|HXt)ANrzHl{{ukpn#P(zhnFQ()8uAHXdmINfe*=MzoL8Cw*KC4% z_uMNSfh=a4%^a5IX7~bN>Sr)MES2&56O_kwIjB$dX-EiIF)W4NjJ_c;<`4ETg{lrX zezKi(!o3%S^6G_S6;;P7-kg*7+moX}*r0Ue8%tGHN@!9^es8t)8W__hgfA#m$TIe#WGsk9tm0I6`X`?_96-YRC0+4cgs4FDsd_LKHQk?F6(3%xedG zG&OtE+Uw}(w6Kj8L@D#InFN(Vk!U;Gdo&E(K9Tktj<-KGJ%~q87G5&!V06+x9dHba z%*~m=pzmM;0iS$f%7uUKNx1#;{VxuE*iC`x)S!(K3!bM4e~QsjSCodi%T@wJc!xM^ zta_vDJr>IqQa1ncT!YTi=ZB7#x~F40?oQp)T^W80paTbg{bLPy_rL~_^P^Ldv>5Oc zcbc1Hxm3vs9dT8Uqdiyu4vvK5_t*f-7PUWk>IC(jIALztQDdn|`R3wc*Zr~&UJVj- z+<1_WNPa1k(4d|tFc}~4dMjZl5|Ga_wfhj5z0OtX<;HVRH|@{!pR8eB1|YY29;&jU zhf%=<{ABhcKElE_QtfsU!V8kbKvF}d4Hy2vIO(YY9kPa(3&dmm_2;6^RgE6f8NY&C z>kO1Y9+X`X3PP2<26YbNMxcR`*IzJ*%G3^*hNRIS5=Oa0H?C}cNAQ%g=Ts+-N$Z(!xWA6fZ`qzsP{Oz`;{;Vy3P;;a6RC^4UTo_nN0Tn56%>g z^gT>f7fnTjpsadExz0u)Vv2ry5o*C@HRB(Q1qME4dk8 zARYtOTg8|mNj`sEfZ#u-Z9$ObpgQ6J@%|H^ih_y%0u#R|n`hddo^!gdB|fXX+JDRB z{cxRM-Iw*99hcscw&M=W?HWJsjb~E%r3q z+pDCI-ksAqhd~^>PN;eh+MhbA>fLqpL}zEH=A{dKn(kf!pI82YsXugE%zxhgu78uu z=-joEU12`sbzQEzXrmoPnzL~dJ;EE%!xDSZxo|7^9|d0*zr~sx6DAMdWn-r|YpqPi zqcEdmw~y28xc}hxeT8}Jr9nl!Vtpggubb{UF70B!Hnj4<1D zFzRs)qz^w)#9a5`ZhroQ6jJMFPTr*XW=GQS@Mi<6y*=OL=)7Y>H%=>L+doh-@n=G6 zGPvV6t=oB%mU|_~7FQ&#AHKo&@N2Ex{tswOD|sg^uuyFXwpge=D$e{m|Y%&U4$``)QYl zXgUFx`Hd0@$Bjk4>?GdM-m>LUYvBFmMAmJSzxk3%P=7MsHt$pSnX}7+@G~efkvscf z_bZjKjG!n4K&Mki+qbtuU|F`?!QzPgsA*|kbRG>MX*F8d+6=4-8 zmlBT#Poa6C`8!VPJ(`74-NyQn7h%KAjup8#mTfV%CJ;8GW={;BI@?DnlugrN6GL7} zLjbJ}wi6GYD&TLX$6A6>iNPKe`>ww@sb1#ev4k*V16Fbz1mJA2vS0Y?M@-?HUONUu z#z`l%rN(k2P+X2ugZ?8R743(>?o%vCQ{kX`$)quruE6(w^c$F>-%#Iz*mwS={8~Q= z!fVjuSPVlCTW|P=H9dx3`v$-85cYh_IZB~?r6>K#D}>-l(OPTYx=_B&jF4EVsmmgb z-Zy2mw*Qd7q}y%tp3qNq;U~z-Ff6itZ<-&T1DUQ8!0C2(WgS(`erlNy?N=<{@~7s%ipFDxEUL6YIchwia@ zP`A*2;Ww<~Qf6CZe`~oPo*nUe_71Dpc|tYd?3?iv$F?+!YV}v;a=fbpH=}*1GbwJo z?4msIJoNKsy57^3RyhTJg9FZO+TqKk$ZNn>^fud}Gn!t=QsbX2#&50M+7R_=Sw%AW=yySx8v3|{r~tN*%SW$5MF_GQVT~)Jk3$)cRS@2_ z4Z)Irj5eo#f^!=RFPs0ZFAX(7CN6+2!37tp9gwGg0tofikWzT%zz*~iiUpXHscyZG z#ORuCOSiJ`bL{J<7UICp8D3R0{qgMhgWW z$cYRWHTCy7`X@wT@bad9s#%Br3GYQw7c|v!mi~#Vq!K)}D2Y{4G#of#PX z&YfaL5JAa?O#q3nf#Hx1{Q)Yh$JZsNxoVj89_C-2u6vY@O+I1G!kL`bHFhGhn&A6% zyc{9FymEmP1u_s6=Fnzk7Cqoictyew7Ux~%<{*zj68CUemc;ekGuwbC3XYAagq8I? zt+6CO*^`GjpdrN^#hzz{QDpYtfH^~?A-2*0D@VP*TUPy7Tillg1Wjcf%c@r{oxmeq z3Aq?PDblDy%nZiu&hEX$>p_vrgRcpQ{NU*NC_##SK>kY}@`?Iy2stwC%#c7 zimy@q@Yu$xOPUmy0ndDC=|pNx52@D+t9(E%mfo!u!c7ljqA^ulOOyU=$&vBbMnu?o=Xla z=WqTq(6gaKAerUQKps@(SMp`mulwxJ@=tc;?JW81qE6EABlO3tPW9VN_2y+&bYi~% za*tbr3>qnnh5H_wC^DF8+nwwPsNM#>N$;)fA z+|i<{@@RQ#J7NC0>g-D^MnGoq91lxFLv6pblx47FsF>+Z;w~u1~Xt_*h@b`?D073RB z+m-3&q+2r?t^H+_<=M-LIBaA1wEtlY{|gri$(rpmV5l!SpnOFkR1v| zedY+u$?29Xc^^_#}?&Db#KKcfW(I7`kF^B1(rVKKH0u-lLhS>ldQ}${#x6{Lnw{<6?>#$PgbCTv({~(UIX>%0SfPED z9G)4SDN(yZxpmA^K1gHsZ;8Wx1O#4OA-gu;(M-z-dEtzv=+Sq{GYN4L2#fHAWL~g>P{wm%{nrru#7|F=@ zG|je^*6}_5md?*wVc?2&g60QaYPOoth(&f~mB5X;B@HoV(Ez}`wPrcQ210$7R#$o~ zKJdEht?N+Nxc&L3zJY~yhf`At7*q91(MH#3b~-iKRbRKF7AXT6yJr+dF`3T6FA}U*xvGw_CNiTyypw zyf?pp2!OkXehorgiz5-U$5Z9Wp$arDc2l F{{UP<-kSgb literal 11596 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 diff --git a/test/goldens/square/square_019.png b/test/goldens/square/square_019.png index 29385dc630d8fd80c85cbcdb81c936c84753d290..e3c1d00f2acd5e2a32f5a8d163cab3dce72ae457 100644 GIT binary patch literal 6534 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 XPrkiTUPEUKJfq0b)>&|a?{nzCHS3L7 literal 8190 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 literal 9383 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 BYdin| diff --git a/test/goldens/square/square_024.png b/test/goldens/square/square_024.png index e6794c3b69839be54d58e6f550596eb3fac50664..49c047c08e4971f0191957e35bb6faaa29a9435e 100644 GIT binary patch literal 7038 zcmeHLYe3A||2{L_MrCy&$z`T;>4H*()HIUPY-%=b+FWWkgheQHnKEu&B$I7WONo@M zTaqPop)!_4N(m{Ilv{?>DC+l|nSJ+v^?$#;>CET*oacPb`JVH6p7Tu*c)AVMG}0u5 z40T`N;!TJOhY+S8OC6Cvx9;4Ce~eIXH)nFbYD_17sD?Vb`>^mQWUYuNWVD&P%UqxE zqwgE@_#N|9g69 z%!T^j^17a6WTjQVu8NB3waJo&JGhgRSI&DpQaR-o&2IIxTISw)#H#D$+nN1b_wVD1 zw@He7(tfhn{b+pQWvCYCZbI=eQYtKW;~tPPN@JL+nambbwv6%6ioq1jk{uAsNyjn5 zFiVx+aT5~BToD=07q*#l$z5X}(HzhHq{}8Nbva~@F8gczFwrNLj%a7RSXi#XOH*a> zjKSNYlDQPLL_sUCV=y1uDrn6>+i^faTMOE57X|Gb&_;3;v|B)XQ%S&Os&bN*P5>r4hSZIC)hK2o(Mdnfr&h_z#P!ukPm+Us>&)Y#ZMEwM}|I|xIF9V zC!{+oRvx}>PWIs!UH!w)JbU8axuYif7&B9wsTwF+8!x_c;Z%20)4P-R*gesIJa*i? zjUOOiakFckh&OJhnzc1D;!-}O+PzRjw0Fx%rYgG90kg5%Nf=1tA|lg0ghXJ3&1fcL z@DlLKcToV|K@xgOJOFS3z#ae=07C�pKzi4uYW;3_g@$G){>*07(Gsp#U%(1Vb$t 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 diff --git a/test/goldens/square/square_026.png b/test/goldens/square/square_026.png new file mode 100644 index 0000000000000000000000000000000000000000..302e8acccb18b8d60c4eb9945cd4d6bfcae8bb0f GIT binary patch literal 26722 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 S1%((0V!GRMSB9bUx&H%Yz|(&K literal 0 HcmV?d00001 diff --git a/test/goldens/square/square_027.png b/test/goldens/square/square_027.png new file mode 100644 index 0000000000000000000000000000000000000000..ffc9210c2ea1fca46bd96f71374f350a145edf36 GIT binary patch literal 11856 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 Um)4z403F26+R=(>>HWw50nkrmaR2}S literal 0 HcmV?d00001 diff --git a/test/goldens/square/square_028.png b/test/goldens/square/square_028.png new file mode 100644 index 0000000000000000000000000000000000000000..ffc9210c2ea1fca46bd96f71374f350a145edf36 GIT binary patch literal 11856 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 Um)4z403F26+R=(>>HWw50nkrmaR2}S literal 0 HcmV?d00001 diff --git a/test/goldens/square/square_029.png b/test/goldens/square/square_029.png new file mode 100644 index 0000000000000000000000000000000000000000..0722a78208d21a4d53e88c975251b2c44995d9c6 GIT binary patch literal 5710 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 literal 0 HcmV?d00001 diff --git a/test/oval_test.dart b/test/oval_test.dart index ae3cbd2..d9713be 100644 --- a/test/oval_test.dart +++ b/test/oval_test.dart @@ -11,12 +11,32 @@ void main() { group( 'Oval', () { + testGoldens( + '1- Shrink to take the min available space if both height and width' + 'are not specified and the child is null', + (tester) async { + await tester.pumpWidgetBuilder( + Center( + child: Oval( + shouldExpand: true, + )), + wrapper: materialAppWrapper( + theme: ThemeData.light(), + platform: TargetPlatform.android, + ), + ); + await screenMatchesGolden(tester, 'oval/oval_0001'); + }, + ); testGoldens( '1- Expands to take the max available space if both height and width' 'are not specified and the child is null', (tester) async { await tester.pumpWidgetBuilder( - Center(child: Oval()), + Center( + child: Oval( + shouldExpand: true, + )), wrapper: materialAppWrapper( theme: ThemeData.light(), platform: TargetPlatform.android, @@ -32,6 +52,7 @@ void main() { Center( child: Oval( width: 100, + shouldExpand: true, color: Colors.red, ), ), @@ -51,6 +72,7 @@ void main() { Center( child: Oval( height: 100, + shouldExpand: true, color: ColorWithGradient( const LinearGradient(colors: [Colors.red, Colors.blue])), ), @@ -269,7 +291,7 @@ void main() { const Text('1 12 123 1234') .background( alignment: Alignment.center, - clipShrink: true, + shrinkToClippedSize: true, clipBehavior: Clip.antiAlias, ) .buildOval( @@ -280,7 +302,7 @@ void main() { const Text('1 12 123 1234') .background( alignment: Alignment.centerRight, - clipShrink: true, + shrinkToClippedSize: true, clipBehavior: Clip.antiAlias, ) .buildOval( @@ -292,7 +314,7 @@ void main() { .background( alignment: Alignment.centerLeft, clipBehavior: Clip.antiAlias, - clipShrink: false, + shrinkToClippedSize: false, ) .buildOval( width: 100, @@ -302,7 +324,7 @@ void main() { const Text('1 12 123 1234') .background( alignment: Alignment.center, - clipShrink: false, + shrinkToClippedSize: false, clipBehavior: Clip.antiAlias, ) .buildOval( @@ -313,7 +335,7 @@ void main() { const Text('1 12 123 1234') .background( alignment: Alignment.centerRight, - clipShrink: false, + shrinkToClippedSize: false, clipBehavior: Clip.antiAlias, ) .buildOval( @@ -540,34 +562,56 @@ void main() { Center( child: Column( children: [ - Image.memory( - data, - fit: BoxFit.cover, - width: 200, - height: 100, - ), - const SizedBox(height: 8), - Image.memory( - data, - fit: BoxFit.cover, - width: 200, - height: 100, - ) - .background( - alignment: Alignment.center, - clipBehavior: Clip.antiAlias, - ) - .buildOval( - width: 100, - height: 80, + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Image.memory( + data, + fit: BoxFit.cover, + width: 200, + height: 100, + ), + const SizedBox(width: 8), + Image.memory( + data, + fit: BoxFit.cover, + width: 200, + height: 100, ) - .colorize(Colors.amber), + .background( + alignment: Alignment.center, + clipBehavior: Clip.antiAlias, + ) + .buildOval( + width: 100, + height: 80, + ) + .colorize(Colors.amber), + ], + ), + const SizedBox(width: 8), Row( mainAxisSize: MainAxisSize.min, children: [ SizedBox( - width: 200, - height: 100, + width: 150, + // height: 200, + child: Oval( + width: 100, + height: 80, + alignment: Alignment.center, + clipBehavior: Clip.antiAlias, + child: Image.memory( + data, + fit: BoxFit.cover, + width: 200, + height: 100, + ), + ).colorize(Colors.amber), + ), + SizedBox( + width: 150, + // height: 200, child: Image.memory( data, fit: BoxFit.cover, @@ -585,8 +629,8 @@ void main() { .colorize(Colors.amber), ), SizedBox( - width: 150, - height: 90, + width: 80, + // height: 200, child: Image.memory( data, fit: BoxFit.cover, @@ -604,8 +648,8 @@ void main() { .colorize(Colors.amber), ), SizedBox( - width: 100 * .8, - height: 80 * .8, + width: 50, + // height: 80 * .8, child: Image.memory( data, fit: BoxFit.cover, @@ -630,8 +674,8 @@ void main() { children: [ ConstrainedBox( constraints: const BoxConstraints( - maxWidth: 200, - maxHeight: 100, + maxWidth: 300, + // maxHeight: 200, ), child: Image.memory( data, @@ -651,8 +695,8 @@ void main() { ), ConstrainedBox( constraints: const BoxConstraints( - maxWidth: 150, - maxHeight: 90, + maxWidth: 80, + // maxHeight: 50, ), child: Image.memory( data, @@ -672,8 +716,8 @@ void main() { ), ConstrainedBox( constraints: const BoxConstraints( - maxWidth: 100 * .8, - maxHeight: 80 * .8, + maxWidth: 50, + // maxHeight: 25, ), child: Image.memory( data, @@ -699,8 +743,80 @@ void main() { children: [ ConstrainedBox( constraints: const BoxConstraints( - maxWidth: 200, - maxHeight: 100, + maxWidth: 300, + // maxHeight: 200, + ), + child: Image.memory( + data, + fit: BoxFit.cover, + width: 200, + height: 100, + ) + .background( + shouldExpand: true, + alignment: Alignment.center, + clipBehavior: Clip.antiAlias, + ) + .buildOval( + width: 100, + height: 80, + ) + .colorize(Colors.amber), + ), + ConstrainedBox( + constraints: const BoxConstraints( + maxWidth: 80, + // maxHeight: 50, + ), + child: Image.memory( + data, + fit: BoxFit.cover, + width: 200, + height: 100, + ) + .background( + shouldExpand: true, + alignment: Alignment.center, + clipBehavior: Clip.antiAlias, + ) + .buildOval( + width: 100, + height: 80, + ) + .colorize(Colors.amber), + ), + ConstrainedBox( + constraints: const BoxConstraints( + maxWidth: 50, + // maxHeight: 25, + ), + child: Image.memory( + data, + fit: BoxFit.cover, + width: 200, + height: 100, + ) + .background( + shouldExpand: true, + alignment: Alignment.center, + clipBehavior: Clip.antiAlias, + ) + .buildOval( + width: 100, + height: 80, + ) + .colorize(Colors.amber), + ), + ], + ), + const SizedBox(height: 8), + Row( + mainAxisSize: MainAxisSize.min, + children: [ + ConstrainedBox( + constraints: const BoxConstraints( + maxWidth: 300, + maxHeight: 200, ), child: Image.memory( data, @@ -718,8 +834,8 @@ void main() { ), ConstrainedBox( constraints: const BoxConstraints( - maxWidth: 150, - maxHeight: 90, + maxWidth: 100, + maxHeight: 50, ), child: Image.memory( data, @@ -735,8 +851,8 @@ void main() { )), ConstrainedBox( constraints: const BoxConstraints( - maxWidth: 100 * .8, - maxHeight: 80 * .8, + maxWidth: 50, + maxHeight: 25, ), child: Image.memory( data, @@ -1323,20 +1439,6 @@ void main() { ), ], ) - // Image.memory( - // data, - // fit: BoxFit.cover, - // width: 300, - // height: 300, - // ) - // .background() - // .buildOval( - // startAngle: 1, - // swipeAngle: 1, - // width: 150, - // height: 150, - // ) - // .colorize(Colors.amber), ], ), ), @@ -1348,6 +1450,234 @@ void main() { await screenMatchesGolden(tester, 'oval/oval_025'); }, ); + + testGoldens( + '25- with clipBehavior with infinite sized width', + (tester) async { + final file = File( + path.join(Directory.current.path, 'test', 'flutter_logo_image.png'), + ); + final data = file.readAsBytesSync(); + await tester.pumpWidgetBuilder( + Center( + child: SizedBox( + width: double.infinity, + child: Image.memory( + data, + fit: BoxFit.cover, + width: 300, + height: 300, + ) + .background( + clipBehavior: Clip.antiAlias, + alignment: Alignment.center, + ) + .buildOval( + width: 100, + height: 80, + ) + .colorize(Colors.amber), + )), + wrapper: materialAppWrapper( + theme: ThemeData.light(), + platform: TargetPlatform.android, + ), + ); + await screenMatchesGolden(tester, 'oval/oval_025bis'); + }, + ); + + testGoldens( + '26- with clipBehavior with infinite sized width. case shouldExpand is true', + (tester) async { + final file = File( + path.join(Directory.current.path, 'test', 'flutter_logo_image.png'), + ); + final data = file.readAsBytesSync(); + await tester.pumpWidgetBuilder( + Center( + child: SizedBox( + width: double.infinity, + child: Image.memory( + data, + fit: BoxFit.cover, + width: 300, + height: 300, + ) + .background( + shouldExpand: true, + clipBehavior: Clip.antiAlias, + alignment: Alignment.center, + ) + .buildOval( + width: 100, + height: 80, + ) + .colorize(Colors.amber), + )), + wrapper: materialAppWrapper( + theme: ThemeData.light(), + platform: TargetPlatform.android, + ), + ); + await screenMatchesGolden(tester, 'oval/oval_026'); + }, + ); + + testGoldens( + '27- with clipBehavior case shouldExpand is true', + (tester) async { + final file = File( + path.join(Directory.current.path, 'test', 'flutter_logo_image.png'), + ); + final data = file.readAsBytesSync(); + await tester.pumpWidgetBuilder( + Center( + child: Image.memory( + data, + fit: BoxFit.cover, + width: 300, + height: 300, + ) + .background( + shouldExpand: true, + clipBehavior: Clip.antiAlias, + alignment: Alignment.center, + ) + .buildOval( + width: 100, + height: 80, + ) + .colorize(Colors.amber), + ), + wrapper: materialAppWrapper( + theme: ThemeData.light(), + platform: TargetPlatform.android, + ), + ); + await screenMatchesGolden(tester, 'oval/oval_027'); + }, + ); + + testGoldens( + '28- with clipBehavior case shouldExpand is true, shape width = null', + (tester) async { + final file = File( + path.join(Directory.current.path, 'test', 'flutter_logo_image.png'), + ); + final data = file.readAsBytesSync(); + await tester.pumpWidgetBuilder( + Center( + child: Image.memory( + data, + fit: BoxFit.cover, + width: 300, + height: 300, + ) + .background( + shouldExpand: true, + clipBehavior: Clip.antiAlias, + alignment: Alignment.center, + ) + .buildOval( + // width: 100, + height: 80, + ) + .colorize(Colors.amber), + ), + wrapper: materialAppWrapper( + theme: ThemeData.light(), + platform: TargetPlatform.android, + ), + ); + await screenMatchesGolden(tester, 'oval/oval_028'); + }, + ); + + testGoldens( + '29- with clipBehavior case shouldExpand is true, shape hight = null', + (tester) async { + final file = File( + path.join(Directory.current.path, 'test', 'flutter_logo_image.png'), + ); + final data = file.readAsBytesSync(); + await tester.pumpWidgetBuilder( + Center( + child: Image.memory( + data, + fit: BoxFit.cover, + width: 300, + height: 300, + ) + .background( + shouldExpand: true, + clipBehavior: Clip.antiAlias, + alignment: Alignment.center, + ) + .buildOval( + width: 100, + // height: 80, + ) + .colorize(Colors.amber), + ), + wrapper: materialAppWrapper( + theme: ThemeData.light(), + platform: TargetPlatform.android, + ), + ); + await screenMatchesGolden(tester, 'oval/oval_029'); + }, + ); + }, + ); + + testGoldens( + '30- inkWell', + (tester) async { + dynamic message; + await tester.pumpWidgetBuilder( + Center( + child: Column( + children: [ + const Text('build background') + .background() + .inkWell( + InkWell( + splashColor: Colors.red, + onTap: () { + message = 'onTap'; + }, + ), + ) + .buildOval(), + const Text('build foreground') + .foreground() + .inkWell( + InkWell( + splashColor: Colors.red, + onTap: () { + message = 'onTap'; + }, + ), + ) + .buildOval(), + ], + ), + ), + wrapper: materialAppWrapper( + theme: ThemeData.light(), + platform: TargetPlatform.android, + ), + ); + expect(message, null); + await tester.tap(find.text('build background')); + await tester.pump(); + expect(message, 'onTap'); + message = null; + await tester.press(find.text('build background')); + await tester.press(find.text('build foreground')); + + await screenMatchesGolden(tester, 'oval/oval_030'); }, ); } diff --git a/test/r_capsule_test.dart b/test/r_capsule_test.dart index 2876182..8ad72a7 100644 --- a/test/r_capsule_test.dart +++ b/test/r_capsule_test.dart @@ -11,12 +11,32 @@ void main() { group( 'rectangle', () { + testGoldens( + '1- Shrink to take the min available space if both height and width' + 'are not specified and the child is null', + (tester) async { + await tester.pumpWidgetBuilder( + Center( + child: RRectangle.capsule( + shouldExpand: true, + )), + wrapper: materialAppWrapper( + theme: ThemeData.light(), + platform: TargetPlatform.android, + ), + ); + await screenMatchesGolden(tester, 'rcapsule/rcapsule_0001'); + }, + ); testGoldens( '1- Expands to take the max available space if both height and width' 'are not specified and the child is null', (tester) async { await tester.pumpWidgetBuilder( - Center(child: RRectangle.capsule()), + Center( + child: RRectangle.capsule( + shouldExpand: true, + )), wrapper: materialAppWrapper( theme: ThemeData.light(), platform: TargetPlatform.android, @@ -32,6 +52,7 @@ void main() { Center( child: RRectangle.capsule( width: 100, + shouldExpand: true, color: Colors.red, ), ), @@ -51,6 +72,7 @@ void main() { Center( child: RRectangle.capsule( height: 100, + shouldExpand: true, color: ColorWithGradient( const LinearGradient(colors: [Colors.red, Colors.blue])), ), @@ -269,7 +291,7 @@ void main() { const Text('1 12 123 1234') .background( alignment: Alignment.center, - clipShrink: true, + shrinkToClippedSize: true, clipBehavior: Clip.antiAlias, ) .buildCapsule( @@ -280,7 +302,7 @@ void main() { const Text('1 12 123 1234') .background( alignment: Alignment.centerRight, - clipShrink: true, + shrinkToClippedSize: true, clipBehavior: Clip.antiAlias, ) .buildCapsule( @@ -292,7 +314,7 @@ void main() { .background( alignment: Alignment.centerLeft, clipBehavior: Clip.antiAlias, - clipShrink: false, + shrinkToClippedSize: false, ) .buildCapsule( width: 100, @@ -302,7 +324,7 @@ void main() { const Text('1 12 123 1234') .background( alignment: Alignment.center, - clipShrink: false, + shrinkToClippedSize: false, clipBehavior: Clip.antiAlias, ) .buildCapsule( @@ -313,7 +335,7 @@ void main() { const Text('1 12 123 1234') .background( alignment: Alignment.centerRight, - clipShrink: false, + shrinkToClippedSize: false, clipBehavior: Clip.antiAlias, ) .buildCapsule( @@ -540,34 +562,56 @@ void main() { Center( child: Column( children: [ - Image.memory( - data, - fit: BoxFit.cover, - width: 200, - height: 100, - ), - const SizedBox(height: 8), - Image.memory( - data, - fit: BoxFit.cover, - width: 200, - height: 100, - ) - .background( - alignment: Alignment.center, - clipBehavior: Clip.antiAlias, - ) - .buildCapsule( - width: 100, - height: 80, + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Image.memory( + data, + fit: BoxFit.cover, + width: 200, + height: 100, + ), + const SizedBox(width: 8), + Image.memory( + data, + fit: BoxFit.cover, + width: 200, + height: 100, ) - .colorize(Colors.amber), + .background( + alignment: Alignment.center, + clipBehavior: Clip.antiAlias, + ) + .buildCapsule( + width: 100, + height: 80, + ) + .colorize(Colors.amber), + ], + ), + const SizedBox(width: 8), Row( mainAxisSize: MainAxisSize.min, children: [ SizedBox( - width: 200, - height: 100, + width: 150, + // height: 200, + child: RRectangle.capsule( + width: 100, + height: 80, + alignment: Alignment.center, + clipBehavior: Clip.antiAlias, + child: Image.memory( + data, + fit: BoxFit.cover, + width: 200, + height: 100, + ), + ).colorize(Colors.amber), + ), + SizedBox( + width: 150, + // height: 200, child: Image.memory( data, fit: BoxFit.cover, @@ -585,8 +629,8 @@ void main() { .colorize(Colors.amber), ), SizedBox( - width: 150, - height: 90, + width: 80, + // height: 200, child: Image.memory( data, fit: BoxFit.cover, @@ -604,8 +648,8 @@ void main() { .colorize(Colors.amber), ), SizedBox( - width: 100 * .8, - height: 80 * .8, + width: 50, + // height: 80 * .8, child: Image.memory( data, fit: BoxFit.cover, @@ -630,8 +674,8 @@ void main() { children: [ ConstrainedBox( constraints: const BoxConstraints( - maxWidth: 200, - maxHeight: 100, + maxWidth: 300, + // maxHeight: 200, ), child: Image.memory( data, @@ -651,8 +695,8 @@ void main() { ), ConstrainedBox( constraints: const BoxConstraints( - maxWidth: 150, - maxHeight: 90, + maxWidth: 80, + // maxHeight: 50, ), child: Image.memory( data, @@ -672,8 +716,8 @@ void main() { ), ConstrainedBox( constraints: const BoxConstraints( - maxWidth: 100 * .8, - maxHeight: 80 * .8, + maxWidth: 50, + // maxHeight: 25, ), child: Image.memory( data, @@ -699,8 +743,80 @@ void main() { children: [ ConstrainedBox( constraints: const BoxConstraints( - maxWidth: 200, - maxHeight: 100, + maxWidth: 300, + // maxHeight: 200, + ), + child: Image.memory( + data, + fit: BoxFit.cover, + width: 200, + height: 100, + ) + .background( + shouldExpand: true, + alignment: Alignment.center, + clipBehavior: Clip.antiAlias, + ) + .buildCapsule( + width: 100, + height: 80, + ) + .colorize(Colors.amber), + ), + ConstrainedBox( + constraints: const BoxConstraints( + maxWidth: 80, + // maxHeight: 50, + ), + child: Image.memory( + data, + fit: BoxFit.cover, + width: 200, + height: 100, + ) + .background( + shouldExpand: true, + alignment: Alignment.center, + clipBehavior: Clip.antiAlias, + ) + .buildCapsule( + width: 100, + height: 80, + ) + .colorize(Colors.amber), + ), + ConstrainedBox( + constraints: const BoxConstraints( + maxWidth: 50, + // maxHeight: 25, + ), + child: Image.memory( + data, + fit: BoxFit.cover, + width: 200, + height: 100, + ) + .background( + shouldExpand: true, + alignment: Alignment.center, + clipBehavior: Clip.antiAlias, + ) + .buildCapsule( + width: 100, + height: 80, + ) + .colorize(Colors.amber), + ), + ], + ), + const SizedBox(height: 8), + Row( + mainAxisSize: MainAxisSize.min, + children: [ + ConstrainedBox( + constraints: const BoxConstraints( + maxWidth: 300, + maxHeight: 200, ), child: Image.memory( data, @@ -718,8 +834,8 @@ void main() { ), ConstrainedBox( constraints: const BoxConstraints( - maxWidth: 150, - maxHeight: 90, + maxWidth: 100, + maxHeight: 50, ), child: Image.memory( data, @@ -735,8 +851,8 @@ void main() { )), ConstrainedBox( constraints: const BoxConstraints( - maxWidth: 100 * .8, - maxHeight: 80 * .8, + maxWidth: 50, + maxHeight: 25, ), child: Image.memory( data, @@ -1206,6 +1322,198 @@ void main() { await screenMatchesGolden(tester, 'rcapsule/rcapsule_024'); }, ); + + testGoldens( + '26- with clipBehavior with infinite sized width. case shouldExpand is true', + (tester) async { + final file = File( + path.join(Directory.current.path, 'test', 'flutter_logo_image.png'), + ); + final data = file.readAsBytesSync(); + await tester.pumpWidgetBuilder( + Center( + child: SizedBox( + width: double.infinity, + child: Image.memory( + data, + fit: BoxFit.cover, + width: 300, + height: 300, + ) + .background( + shouldExpand: true, + clipBehavior: Clip.antiAlias, + alignment: Alignment.center, + ) + .buildCapsule( + width: 100, + height: 80, + ) + .colorize(Colors.amber), + )), + wrapper: materialAppWrapper( + theme: ThemeData.light(), + platform: TargetPlatform.android, + ), + ); + await screenMatchesGolden(tester, 'rcapsule/rcapsule_026'); + }, + ); + + testGoldens( + '27- with clipBehavior case shouldExpand is true', + (tester) async { + final file = File( + path.join(Directory.current.path, 'test', 'flutter_logo_image.png'), + ); + final data = file.readAsBytesSync(); + await tester.pumpWidgetBuilder( + Center( + child: Image.memory( + data, + fit: BoxFit.cover, + width: 300, + height: 300, + ) + .background( + shouldExpand: true, + clipBehavior: Clip.antiAlias, + alignment: Alignment.center, + ) + .buildCapsule( + width: 100, + height: 80, + ) + .colorize(Colors.amber), + ), + wrapper: materialAppWrapper( + theme: ThemeData.light(), + platform: TargetPlatform.android, + ), + ); + await screenMatchesGolden(tester, 'rcapsule/rcapsule_027'); + }, + ); + + testGoldens( + '28- with clipBehavior case shouldExpand is true, shape width = null', + (tester) async { + final file = File( + path.join(Directory.current.path, 'test', 'flutter_logo_image.png'), + ); + final data = file.readAsBytesSync(); + await tester.pumpWidgetBuilder( + Center( + child: Image.memory( + data, + fit: BoxFit.cover, + width: 300, + height: 300, + ) + .background( + shouldExpand: true, + clipBehavior: Clip.antiAlias, + alignment: Alignment.center, + ) + .buildCapsule( + // width: 100, + height: 80, + ) + .colorize(Colors.amber), + ), + wrapper: materialAppWrapper( + theme: ThemeData.light(), + platform: TargetPlatform.android, + ), + ); + await screenMatchesGolden(tester, 'rcapsule/rcapsule_028'); + }, + ); + + testGoldens( + '29- with clipBehavior case shouldExpand is true, shape hight = null', + (tester) async { + final file = File( + path.join(Directory.current.path, 'test', 'flutter_logo_image.png'), + ); + final data = file.readAsBytesSync(); + await tester.pumpWidgetBuilder( + Center( + child: Image.memory( + data, + fit: BoxFit.cover, + width: 300, + height: 300, + ) + .background( + shouldExpand: true, + clipBehavior: Clip.antiAlias, + alignment: Alignment.center, + ) + .buildCapsule( + width: 100, + // height: 80, + ) + .colorize(Colors.amber), + ), + wrapper: materialAppWrapper( + theme: ThemeData.light(), + platform: TargetPlatform.android, + ), + ); + await screenMatchesGolden(tester, 'rcapsule/rcapsule_029'); + }, + ); + }, + ); + + testGoldens( + '30- inkWell', + (tester) async { + dynamic message; + await tester.pumpWidgetBuilder( + Center( + child: Column( + children: [ + const Text('build background') + .background() + .inkWell( + InkWell( + splashColor: Colors.red, + onTap: () { + message = 'onTap'; + }, + ), + ) + .buildCapsule(), + const Text('build foreground') + .foreground() + .inkWell( + InkWell( + splashColor: Colors.red, + onTap: () { + message = 'onTap'; + }, + ), + ) + .buildCapsule(), + ], + ), + ), + wrapper: materialAppWrapper( + theme: ThemeData.light(), + platform: TargetPlatform.android, + ), + ); + expect(message, null); + await tester.tap(find.text('build background')); + await tester.pump(); + expect(message, 'onTap'); + message = null; + await tester.press(find.text('build background')); + await tester.press(find.text('build foreground')); + + await screenMatchesGolden(tester, 'rcapsule/rcapsule_030'); }, ); } diff --git a/test/r_rectangle_test.dart b/test/r_rectangle_test.dart index 4f4fcd1..8f599f7 100644 --- a/test/r_rectangle_test.dart +++ b/test/r_rectangle_test.dart @@ -9,14 +9,34 @@ import 'package:path/path.dart' as path; void main() { group( - 'rectangle', + 'rrectangle', () { + testGoldens( + '1- Shrink to take the min available space if both height and width' + 'are not specified and the child is null', + (tester) async { + await tester.pumpWidgetBuilder( + Center( + child: RRectangle( + shouldExpand: true, + )), + wrapper: materialAppWrapper( + theme: ThemeData.light(), + platform: TargetPlatform.android, + ), + ); + await screenMatchesGolden(tester, 'rrectangle/rrectangle_0001'); + }, + ); testGoldens( '1- Expands to take the max available space if both height and width' 'are not specified and the child is null', (tester) async { await tester.pumpWidgetBuilder( - Center(child: RRectangle()), + Center( + child: RRectangle( + shouldExpand: true, + )), wrapper: materialAppWrapper( theme: ThemeData.light(), platform: TargetPlatform.android, @@ -32,6 +52,7 @@ void main() { Center( child: RRectangle( width: 100, + shouldExpand: true, color: Colors.red, ), ), @@ -51,6 +72,7 @@ void main() { Center( child: RRectangle( height: 100, + shouldExpand: true, color: ColorWithGradient( const LinearGradient(colors: [Colors.red, Colors.blue])), ), @@ -269,7 +291,7 @@ void main() { const Text('1 12 123 1234') .background( alignment: Alignment.center, - clipShrink: true, + shrinkToClippedSize: true, clipBehavior: Clip.antiAlias, ) .buildRRect( @@ -280,7 +302,7 @@ void main() { const Text('1 12 123 1234') .background( alignment: Alignment.centerRight, - clipShrink: true, + shrinkToClippedSize: true, clipBehavior: Clip.antiAlias, ) .buildRRect( @@ -292,7 +314,7 @@ void main() { .background( alignment: Alignment.centerLeft, clipBehavior: Clip.antiAlias, - clipShrink: false, + shrinkToClippedSize: false, ) .buildRRect( width: 100, @@ -302,7 +324,7 @@ void main() { const Text('1 12 123 1234') .background( alignment: Alignment.center, - clipShrink: false, + shrinkToClippedSize: false, clipBehavior: Clip.antiAlias, ) .buildRRect( @@ -313,7 +335,7 @@ void main() { const Text('1 12 123 1234') .background( alignment: Alignment.centerRight, - clipShrink: false, + shrinkToClippedSize: false, clipBehavior: Clip.antiAlias, ) .buildRRect( @@ -540,34 +562,56 @@ void main() { Center( child: Column( children: [ - Image.memory( - data, - fit: BoxFit.cover, - width: 200, - height: 100, - ), - const SizedBox(height: 8), - Image.memory( - data, - fit: BoxFit.cover, - width: 200, - height: 100, - ) - .background( - alignment: Alignment.center, - clipBehavior: Clip.antiAlias, - ) - .buildRRect( - width: 100, - height: 80, + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Image.memory( + data, + fit: BoxFit.cover, + width: 200, + height: 100, + ), + const SizedBox(width: 8), + Image.memory( + data, + fit: BoxFit.cover, + width: 200, + height: 100, ) - .colorize(Colors.amber), + .background( + alignment: Alignment.center, + clipBehavior: Clip.antiAlias, + ) + .buildRRect( + width: 100, + height: 80, + ) + .colorize(Colors.amber), + ], + ), + const SizedBox(width: 8), Row( mainAxisSize: MainAxisSize.min, children: [ SizedBox( - width: 200, - height: 100, + width: 150, + // height: 200, + child: RRectangle( + width: 100, + height: 80, + alignment: Alignment.center, + clipBehavior: Clip.antiAlias, + child: Image.memory( + data, + fit: BoxFit.cover, + width: 200, + height: 100, + ), + ).colorize(Colors.amber), + ), + SizedBox( + width: 150, + // height: 200, child: Image.memory( data, fit: BoxFit.cover, @@ -585,8 +629,8 @@ void main() { .colorize(Colors.amber), ), SizedBox( - width: 150, - height: 90, + width: 80, + // height: 200, child: Image.memory( data, fit: BoxFit.cover, @@ -604,8 +648,8 @@ void main() { .colorize(Colors.amber), ), SizedBox( - width: 100 * .8, - height: 80 * .8, + width: 50, + // height: 80 * .8, child: Image.memory( data, fit: BoxFit.cover, @@ -630,8 +674,8 @@ void main() { children: [ ConstrainedBox( constraints: const BoxConstraints( - maxWidth: 200, - maxHeight: 100, + maxWidth: 300, + // maxHeight: 200, ), child: Image.memory( data, @@ -651,8 +695,8 @@ void main() { ), ConstrainedBox( constraints: const BoxConstraints( - maxWidth: 150, - maxHeight: 90, + maxWidth: 80, + // maxHeight: 50, ), child: Image.memory( data, @@ -672,8 +716,8 @@ void main() { ), ConstrainedBox( constraints: const BoxConstraints( - maxWidth: 100 * .8, - maxHeight: 80 * .8, + maxWidth: 50, + // maxHeight: 25, ), child: Image.memory( data, @@ -699,8 +743,80 @@ void main() { children: [ ConstrainedBox( constraints: const BoxConstraints( - maxWidth: 200, - maxHeight: 100, + maxWidth: 300, + // maxHeight: 200, + ), + child: Image.memory( + data, + fit: BoxFit.cover, + width: 200, + height: 100, + ) + .background( + shouldExpand: true, + alignment: Alignment.center, + clipBehavior: Clip.antiAlias, + ) + .buildRRect( + width: 100, + height: 80, + ) + .colorize(Colors.amber), + ), + ConstrainedBox( + constraints: const BoxConstraints( + maxWidth: 80, + // maxHeight: 50, + ), + child: Image.memory( + data, + fit: BoxFit.cover, + width: 200, + height: 100, + ) + .background( + shouldExpand: true, + alignment: Alignment.center, + clipBehavior: Clip.antiAlias, + ) + .buildRRect( + width: 100, + height: 80, + ) + .colorize(Colors.amber), + ), + ConstrainedBox( + constraints: const BoxConstraints( + maxWidth: 50, + // maxHeight: 25, + ), + child: Image.memory( + data, + fit: BoxFit.cover, + width: 200, + height: 100, + ) + .background( + shouldExpand: true, + alignment: Alignment.center, + clipBehavior: Clip.antiAlias, + ) + .buildRRect( + width: 100, + height: 80, + ) + .colorize(Colors.amber), + ), + ], + ), + const SizedBox(height: 8), + Row( + mainAxisSize: MainAxisSize.min, + children: [ + ConstrainedBox( + constraints: const BoxConstraints( + maxWidth: 300, + maxHeight: 200, ), child: Image.memory( data, @@ -718,8 +834,8 @@ void main() { ), ConstrainedBox( constraints: const BoxConstraints( - maxWidth: 150, - maxHeight: 90, + maxWidth: 100, + maxHeight: 50, ), child: Image.memory( data, @@ -735,8 +851,8 @@ void main() { )), ConstrainedBox( constraints: const BoxConstraints( - maxWidth: 100 * .8, - maxHeight: 80 * .8, + maxWidth: 50, + maxHeight: 25, ), child: Image.memory( data, @@ -765,7 +881,6 @@ void main() { await screenMatchesGolden(tester, 'rrectangle/rrectangle_014'); }, ); - testGoldens( '15- with clipBehavior and image with both image w and h and rect w and h are null', (tester) async { @@ -1295,13 +1410,13 @@ void main() { height: 150, child: Center( child: RRectangle( - child: const FlutterLogo( - size: 100, - ), borderRadius: BorderRadius.circular(30), outerVBorderRadius: const BorderRadius.all( Radius.elliptical(20, 40), ), + child: const FlutterLogo( + size: 100, + ), ).colorize(Colors.amber), ), ).colorize(Colors.green), @@ -1370,13 +1485,13 @@ void main() { height: 150, child: Center( child: RRectangle( - child: const FlutterLogo( - size: 100, - ), borderRadius: BorderRadius.circular(30), outerHBorderRadius: const BorderRadius.all( Radius.elliptical(20, 40), ), + child: const FlutterLogo( + size: 100, + ), ).colorize(Colors.amber), ), ).colorize(Colors.green), @@ -1445,9 +1560,6 @@ void main() { height: 150, child: Center( child: RRectangle( - child: const FlutterLogo( - size: 100, - ), borderRadius: BorderRadius.circular(30), outerHBorderRadius: const BorderRadius.all( Radius.elliptical(20, 40), @@ -1455,6 +1567,9 @@ void main() { outerVBorderRadius: const BorderRadius.all( Radius.elliptical(20, 40), ), + child: const FlutterLogo( + size: 100, + ), ).colorize(Colors.amber), ), ).colorize(Colors.green), @@ -1512,6 +1627,198 @@ void main() { await screenMatchesGolden(tester, 'rrectangle/rrectangle_028'); }, ); + + testGoldens( + '29- with clipBehavior with infinite sized width. case shouldExpand is true', + (tester) async { + final file = File( + path.join(Directory.current.path, 'test', 'flutter_logo_image.png'), + ); + final data = file.readAsBytesSync(); + await tester.pumpWidgetBuilder( + Center( + child: SizedBox( + width: double.infinity, + child: Image.memory( + data, + fit: BoxFit.cover, + width: 300, + height: 300, + ) + .background( + shouldExpand: true, + clipBehavior: Clip.antiAlias, + alignment: Alignment.center, + ) + .buildRRect( + width: 100, + height: 80, + ) + .colorize(Colors.amber), + )), + wrapper: materialAppWrapper( + theme: ThemeData.light(), + platform: TargetPlatform.android, + ), + ); + await screenMatchesGolden(tester, 'rrectangle/rrectangle_29'); + }, + ); + + testGoldens( + '30- with clipBehavior case shouldExpand is true', + (tester) async { + final file = File( + path.join(Directory.current.path, 'test', 'flutter_logo_image.png'), + ); + final data = file.readAsBytesSync(); + await tester.pumpWidgetBuilder( + Center( + child: Image.memory( + data, + fit: BoxFit.cover, + width: 300, + height: 300, + ) + .background( + shouldExpand: true, + clipBehavior: Clip.antiAlias, + alignment: Alignment.center, + ) + .buildRRect( + width: 100, + height: 80, + ) + .colorize(Colors.amber), + ), + wrapper: materialAppWrapper( + theme: ThemeData.light(), + platform: TargetPlatform.android, + ), + ); + await screenMatchesGolden(tester, 'rrectangle/rrectangle_30'); + }, + ); + + testGoldens( + '32- with clipBehavior case shouldExpand is true, shape width = null', + (tester) async { + final file = File( + path.join(Directory.current.path, 'test', 'flutter_logo_image.png'), + ); + final data = file.readAsBytesSync(); + await tester.pumpWidgetBuilder( + Center( + child: Image.memory( + data, + fit: BoxFit.cover, + width: 300, + height: 300, + ) + .background( + shouldExpand: true, + clipBehavior: Clip.antiAlias, + alignment: Alignment.center, + ) + .buildRRect( + // width: 100, + height: 80, + ) + .colorize(Colors.amber), + ), + wrapper: materialAppWrapper( + theme: ThemeData.light(), + platform: TargetPlatform.android, + ), + ); + await screenMatchesGolden(tester, 'rrectangle/rrectangle_31'); + }, + ); + + testGoldens( + '32- with clipBehavior case shouldExpand is true, shape hight = null', + (tester) async { + final file = File( + path.join(Directory.current.path, 'test', 'flutter_logo_image.png'), + ); + final data = file.readAsBytesSync(); + await tester.pumpWidgetBuilder( + Center( + child: Image.memory( + data, + fit: BoxFit.cover, + width: 300, + height: 300, + ) + .background( + shouldExpand: true, + clipBehavior: Clip.antiAlias, + alignment: Alignment.center, + ) + .buildRRect( + width: 100, + // height: 80, + ) + .colorize(Colors.amber), + ), + wrapper: materialAppWrapper( + theme: ThemeData.light(), + platform: TargetPlatform.android, + ), + ); + await screenMatchesGolden(tester, 'rrectangle/rrectangle_32'); + }, + ); + }, + ); + + testGoldens( + '33- inkWell', + (tester) async { + dynamic message; + await tester.pumpWidgetBuilder( + Center( + child: Column( + children: [ + const Text('build background') + .background() + .inkWell( + InkWell( + splashColor: Colors.red, + onTap: () { + message = 'onTap'; + }, + ), + ) + .buildRRect(borderRadius: BorderRadius.circular(50)), + const Text('build foreground') + .foreground() + .inkWell( + InkWell( + splashColor: Colors.red, + onTap: () { + message = 'onTap'; + }, + ), + ) + .buildRRect(borderRadius: BorderRadius.circular(50)), + ], + ), + ), + wrapper: materialAppWrapper( + theme: ThemeData.light(), + platform: TargetPlatform.android, + ), + ); + expect(message, null); + await tester.tap(find.text('build background')); + await tester.pump(); + expect(message, 'onTap'); + message = null; + await tester.press(find.text('build background')); + await tester.press(find.text('build foreground')); + + await screenMatchesGolden(tester, 'rrectangle/rrectangle_33'); }, ); } diff --git a/test/r_square_test.dart b/test/r_square_test.dart index 0bea7b0..f38f5a7 100644 --- a/test/r_square_test.dart +++ b/test/r_square_test.dart @@ -12,7 +12,7 @@ void main() { 'rectangle', () { testGoldens( - '1- Expands to take the max available space if both height and width' + '1- Shrink to take the min available space if both height and width' 'are not specified and the child is null', (tester) async { await tester.pumpWidgetBuilder( @@ -22,6 +22,23 @@ void main() { platform: TargetPlatform.android, ), ); + await screenMatchesGolden(tester, 'rsquare/rsquare_0001'); + }, + ); + testGoldens( + '1- Expands to take the max available space if both height and width' + 'are not specified and the child is null', + (tester) async { + await tester.pumpWidgetBuilder( + Center( + child: RRectangle.square( + shouldExpand: true, + )), + wrapper: materialAppWrapper( + theme: ThemeData.light(), + platform: TargetPlatform.android, + ), + ); await screenMatchesGolden(tester, 'rsquare/rsquare_001'); }, ); @@ -262,7 +279,7 @@ void main() { const Text('1 12 123 1234') .background( alignment: Alignment.center, - clipShrink: true, + shrinkToClippedSize: true, clipBehavior: Clip.antiAlias, ) .buildRSquare( @@ -272,7 +289,7 @@ void main() { const Text('1 12 123 1234') .background( alignment: Alignment.centerRight, - clipShrink: true, + shrinkToClippedSize: true, clipBehavior: Clip.antiAlias, ) .buildRSquare( @@ -283,7 +300,7 @@ void main() { .background( alignment: Alignment.centerLeft, clipBehavior: Clip.antiAlias, - clipShrink: false, + shrinkToClippedSize: false, ) .buildRSquare( side: 80, @@ -292,7 +309,7 @@ void main() { const Text('1 12 123 1234') .background( alignment: Alignment.center, - clipShrink: false, + shrinkToClippedSize: false, clipBehavior: Clip.antiAlias, ) .buildRSquare( @@ -302,7 +319,7 @@ void main() { const Text('1 12 123 1234') .background( alignment: Alignment.centerRight, - clipShrink: false, + shrinkToClippedSize: false, clipBehavior: Clip.antiAlias, ) .buildRSquare( @@ -518,33 +535,54 @@ void main() { Center( child: Column( children: [ - Image.memory( - data, - fit: BoxFit.cover, - width: 200, - height: 100, - ), - const SizedBox(height: 8), - Image.memory( - data, - fit: BoxFit.cover, - width: 200, - height: 100, - ) - .background( - alignment: Alignment.center, - clipBehavior: Clip.antiAlias, - ) - .buildRSquare( - side: 100, + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Image.memory( + data, + fit: BoxFit.cover, + width: 200, + height: 100, + ), + const SizedBox(width: 8), + Image.memory( + data, + fit: BoxFit.cover, + width: 200, + height: 100, ) - .colorize(Colors.amber), + .background( + alignment: Alignment.center, + clipBehavior: Clip.antiAlias, + ) + .buildRSquare( + side: 60, + ) + .colorize(Colors.amber), + ], + ), + const SizedBox(width: 8), Row( mainAxisSize: MainAxisSize.min, children: [ SizedBox( - width: 200, - height: 100, + width: 150, + // height: 200, + child: RRectangle.square( + side: 60, + alignment: Alignment.center, + clipBehavior: Clip.antiAlias, + child: Image.memory( + data, + fit: BoxFit.cover, + width: 200, + height: 100, + ), + ).colorize(Colors.amber), + ), + SizedBox( + width: 150, + // height: 200, child: Image.memory( data, fit: BoxFit.cover, @@ -556,13 +594,13 @@ void main() { clipBehavior: Clip.antiAlias, ) .buildRSquare( - side: 100, + side: 60, ) .colorize(Colors.amber), ), SizedBox( - width: 150, - height: 90, + width: 80, + // height: 200, child: Image.memory( data, fit: BoxFit.cover, @@ -574,13 +612,79 @@ void main() { clipBehavior: Clip.antiAlias, ) .buildRSquare( - side: 100, + side: 60, ) .colorize(Colors.amber), ), SizedBox( - width: 100 * .8, - height: 80 * .8, + width: 50, + // height: 80 * .8, + child: Image.memory( + data, + fit: BoxFit.cover, + width: 200, + height: 100, + ) + .background( + alignment: Alignment.center, + clipBehavior: Clip.antiAlias, + ) + .buildRSquare( + side: 60, + ) + .colorize(Colors.amber), + ), + ], + ), + const SizedBox(height: 8), + Row( + mainAxisSize: MainAxisSize.min, + children: [ + ConstrainedBox( + constraints: const BoxConstraints( + maxWidth: 300, + // maxHeight: 200, + ), + child: Image.memory( + data, + fit: BoxFit.cover, + width: 200, + height: 100, + ) + .background( + alignment: Alignment.center, + clipBehavior: Clip.antiAlias, + ) + .buildRSquare( + side: 60, + ) + .colorize(Colors.amber), + ), + ConstrainedBox( + constraints: const BoxConstraints( + maxWidth: 80, + // maxHeight: 50, + ), + child: Image.memory( + data, + fit: BoxFit.cover, + width: 200, + height: 100, + ) + .background( + alignment: Alignment.center, + clipBehavior: Clip.antiAlias, + ) + .buildRSquare( + side: 60, + ) + .colorize(Colors.amber), + ), + ConstrainedBox( + constraints: const BoxConstraints( + maxWidth: 50, + // maxHeight: 25, + ), child: Image.memory( data, fit: BoxFit.cover, @@ -592,7 +696,7 @@ void main() { clipBehavior: Clip.antiAlias, ) .buildRSquare( - side: 100, + side: 60, ) .colorize(Colors.amber), ), @@ -604,8 +708,8 @@ void main() { children: [ ConstrainedBox( constraints: const BoxConstraints( - maxWidth: 200, - maxHeight: 100, + maxWidth: 300, + // maxHeight: 200, ), child: Image.memory( data, @@ -614,18 +718,19 @@ void main() { height: 100, ) .background( + shouldExpand: true, alignment: Alignment.center, clipBehavior: Clip.antiAlias, ) .buildRSquare( - side: 100, + side: 60, ) .colorize(Colors.amber), ), ConstrainedBox( constraints: const BoxConstraints( - maxWidth: 150, - maxHeight: 90, + maxWidth: 80, + // maxHeight: 50, ), child: Image.memory( data, @@ -634,18 +739,19 @@ void main() { height: 100, ) .background( + shouldExpand: true, alignment: Alignment.center, clipBehavior: Clip.antiAlias, ) .buildRSquare( - side: 100, + side: 60, ) .colorize(Colors.amber), ), ConstrainedBox( constraints: const BoxConstraints( - maxWidth: 100 * .8, - maxHeight: 80 * .8, + maxWidth: 50, + // maxHeight: 25, ), child: Image.memory( data, @@ -654,11 +760,12 @@ void main() { height: 100, ) .background( + shouldExpand: true, alignment: Alignment.center, clipBehavior: Clip.antiAlias, ) .buildRSquare( - side: 100, + side: 60, ) .colorize(Colors.amber), ), @@ -670,8 +777,8 @@ void main() { children: [ ConstrainedBox( constraints: const BoxConstraints( - maxWidth: 200, - maxHeight: 100, + maxWidth: 300, + maxHeight: 200, ), child: Image.memory( data, @@ -682,14 +789,14 @@ void main() { clipBehavior: Clip.antiAlias, ) .buildRSquare( - side: 100, + side: 60, ) .colorize(Colors.amber), ), ConstrainedBox( constraints: const BoxConstraints( - maxWidth: 150, - maxHeight: 90, + maxWidth: 100, + maxHeight: 50, ), child: Image.memory( data, @@ -699,13 +806,11 @@ void main() { alignment: Alignment.center, clipBehavior: Clip.antiAlias, ) - .buildRSquare( - side: 100, - )), + .buildRSquare(side: 60)), ConstrainedBox( constraints: const BoxConstraints( - maxWidth: 100 * .8, - maxHeight: 80 * .8, + maxWidth: 50, + maxHeight: 25, ), child: Image.memory( data, @@ -716,7 +821,7 @@ void main() { clipBehavior: Clip.antiAlias, ) .buildRSquare( - side: 100, + side: 60, ) .colorize(Colors.amber), ), @@ -1471,6 +1576,195 @@ void main() { await screenMatchesGolden(tester, 'rsquare/rsquare_028'); }, ); + + testGoldens( + '29- with clipBehavior with infinite sized width. case shouldExpand is true', + (tester) async { + final file = File( + path.join(Directory.current.path, 'test', 'flutter_logo_image.png'), + ); + final data = file.readAsBytesSync(); + await tester.pumpWidgetBuilder( + Center( + child: SizedBox( + width: double.infinity, + child: Image.memory( + data, + fit: BoxFit.cover, + width: 300, + height: 300, + ) + .background( + shouldExpand: true, + clipBehavior: Clip.antiAlias, + alignment: Alignment.center, + ) + .buildRSquare( + side: 80, + ) + .colorize(Colors.amber), + )), + wrapper: materialAppWrapper( + theme: ThemeData.light(), + platform: TargetPlatform.android, + ), + ); + await screenMatchesGolden(tester, 'rsquare/rsquare_029'); + }, + ); + + testGoldens( + '30- with clipBehavior case shouldExpand is true', + (tester) async { + final file = File( + path.join(Directory.current.path, 'test', 'flutter_logo_image.png'), + ); + final data = file.readAsBytesSync(); + await tester.pumpWidgetBuilder( + Center( + child: Image.memory( + data, + fit: BoxFit.cover, + width: 300, + height: 300, + ) + .background( + shouldExpand: true, + clipBehavior: Clip.antiAlias, + alignment: Alignment.center, + ) + .buildRSquare( + side: 80, + ) + .colorize(Colors.amber), + ), + wrapper: materialAppWrapper( + theme: ThemeData.light(), + platform: TargetPlatform.android, + ), + ); + await screenMatchesGolden(tester, 'rsquare/rsquare_030'); + }, + ); + + testGoldens( + '31- with clipBehavior case shouldExpand is true, shape width = null', + (tester) async { + final file = File( + path.join(Directory.current.path, 'test', 'flutter_logo_image.png'), + ); + final data = file.readAsBytesSync(); + await tester.pumpWidgetBuilder( + Center( + child: Image.memory( + data, + fit: BoxFit.cover, + width: 300, + height: 300, + ) + .background( + shouldExpand: true, + clipBehavior: Clip.antiAlias, + alignment: Alignment.center, + ) + .buildRSquare( + side: 80, + ) + .colorize(Colors.amber), + ), + wrapper: materialAppWrapper( + theme: ThemeData.light(), + platform: TargetPlatform.android, + ), + ); + await screenMatchesGolden(tester, 'rsquare/rsquare_031'); + }, + ); + + testGoldens( + '32- with clipBehavior case shouldExpand is true, shape hight = null', + (tester) async { + final file = File( + path.join(Directory.current.path, 'test', 'flutter_logo_image.png'), + ); + final data = file.readAsBytesSync(); + await tester.pumpWidgetBuilder( + Center( + child: Image.memory( + data, + fit: BoxFit.cover, + width: 300, + height: 300, + ) + .background( + shouldExpand: true, + clipBehavior: Clip.antiAlias, + alignment: Alignment.center, + ) + .buildRSquare( + side: 80, + + // height: 80, + ) + .colorize(Colors.amber), + ), + wrapper: materialAppWrapper( + theme: ThemeData.light(), + platform: TargetPlatform.android, + ), + ); + await screenMatchesGolden(tester, 'rsquare/rsquare_032'); + }, + ); + }, + ); + testGoldens( + '33- inkWell', + (tester) async { + dynamic message; + await tester.pumpWidgetBuilder( + Center( + child: Column( + children: [ + const Text('build background') + .background() + .inkWell( + InkWell( + splashColor: Colors.red, + onTap: () { + message = 'onTap'; + }, + ), + ) + .buildRSquare(borderRadius: BorderRadius.circular(50)), + const Text('build foreground') + .foreground() + .inkWell( + InkWell( + splashColor: Colors.red, + onTap: () { + message = 'onTap'; + }, + ), + ) + .buildRSquare(borderRadius: BorderRadius.circular(50)), + ], + ), + ), + wrapper: materialAppWrapper( + theme: ThemeData.light(), + platform: TargetPlatform.android, + ), + ); + expect(message, null); + await tester.tap(find.text('build background')); + await tester.pump(); + expect(message, 'onTap'); + message = null; + await tester.press(find.text('build background')); + await tester.press(find.text('build foreground')); + + await screenMatchesGolden(tester, 'rsquare/rsquare_33'); }, ); } diff --git a/test/rectangle_.dart b/test/rectangle_.dart deleted file mode 100644 index bf8a68d..0000000 --- a/test/rectangle_.dart +++ /dev/null @@ -1,1088 +0,0 @@ -import 'dart:io'; - -import 'package:flutter/material.dart'; -import 'package:flutter_test/flutter_test.dart'; -import 'package:golden_toolkit/golden_toolkit.dart'; - -import 'package:shape_builder/shape_builder.dart'; -import 'package:path/path.dart' as path; - -void main() { - group( - 'rectangle', - () { - testGoldens( - 'Expands to take the max available space if both height and width' - 'are not specified and the child is null', - (tester) async { - await tester.pumpWidgetBuilder( - Center(child: Rectangle()), - wrapper: materialAppWrapper( - theme: ThemeData.light(), - platform: TargetPlatform.android, - ), - ); - await screenMatchesGolden(tester, 'rectangle/rectangle_001'); - }, - ); - testGoldens( - 'Takes the width is specified', - (tester) async { - await tester.pumpWidgetBuilder( - Center( - child: Rectangle( - width: 100, - color: Colors.red, - ), - ), - wrapper: materialAppWrapper( - theme: ThemeData.light(), - platform: TargetPlatform.android, - ), - ); - await screenMatchesGolden(tester, 'rectangle/rectangle_002'); - }, - ); - - testGoldens( - 'Takes the height is specified', - (tester) async { - await tester.pumpWidgetBuilder( - Center( - child: Rectangle( - height: 100, - color: ColorWithGradient( - const LinearGradient(colors: [Colors.red, Colors.blue])), - ), - ), - wrapper: materialAppWrapper( - theme: ThemeData.light(), - platform: TargetPlatform.android, - ), - ); - await screenMatchesGolden(tester, 'rectangle/rectangle_003'); - }, - ); - testGoldens( - 'Takes the both width and height are specified', - (tester) async { - await tester.pumpWidgetBuilder( - Center( - child: Rectangle( - height: 100, - width: 100, - color: ColorWithGradient( - const RadialGradient(colors: [Colors.red, Colors.blue])), - ), - ), - wrapper: materialAppWrapper( - theme: ThemeData.light(), - platform: TargetPlatform.android, - ), - ); - await screenMatchesGolden(tester, 'rectangle/rectangle_004'); - }, - ); - - testGoldens( - 'Takes the child specified', - (tester) async { - await tester.pumpWidgetBuilder( - Center( - child: Rectangle( - color: ColorWithGradient( - const RadialGradient(colors: [Colors.red, Colors.blue])), - child: const Text('Hi this is me'), - ), - ), - wrapper: materialAppWrapper( - theme: ThemeData.light(), - platform: TargetPlatform.android, - ), - ); - await screenMatchesGolden(tester, 'rectangle/rectangle_005'); - }, - ); - - testGoldens( - 'the child, width and height are specified', - (tester) async { - await tester.pumpWidgetBuilder( - Center( - child: Rectangle( - width: 100, - height: 100, - boxShadow: BoxShadowWithElevation(5, color: Colors.red), - child: const Text('Hi this is me'), - ), - ), - wrapper: materialAppWrapper( - theme: ThemeData.light(), - platform: TargetPlatform.android, - ), - ); - await screenMatchesGolden(tester, 'rectangle/rectangle_006'); - }, - ); - - testGoldens( - 'the child, with Sized box', - (tester) async { - await tester.pumpWidgetBuilder( - Center( - child: SizedBox( - width: 100, - height: 100, - child: Rectangle( - child: const Text('Hi this is me'), - boxShadow: const [ - BoxShadow( - offset: Offset(4, 4), - spreadRadius: 5, - blurRadius: 3, - ) - ], - ), - ), - ), - wrapper: materialAppWrapper( - theme: ThemeData.light(), - platform: TargetPlatform.android, - ), - ); - await screenMatchesGolden(tester, 'rectangle/rectangle_007'); - }, - ); - - testGoldens( - 'with child, with width double. infinity', - (tester) async { - await tester.pumpWidgetBuilder( - Center( - child: Rectangle( - width: double.infinity, - alignment: Alignment.centerRight, - child: const Text('Hi this is me'), - ), - ), - wrapper: materialAppWrapper( - theme: ThemeData.light(), - platform: TargetPlatform.android, - ), - ); - await screenMatchesGolden(tester, 'rectangle/rectangle_008'); - }, - ); - testGoldens( - 'with child, with height double. infinity', - (tester) async { - await tester.pumpWidgetBuilder( - Center( - child: Rectangle( - height: double.infinity, - alignment: Alignment.bottomCenter, - child: const Text('Hi this is me'), - ), - ), - wrapper: materialAppWrapper( - theme: ThemeData.light(), - platform: TargetPlatform.android, - ), - ); - await screenMatchesGolden(tester, 'rectangle/rectangle_009'); - }, - ); - testGoldens( - 'with child, with width and height = double. infinity', - (tester) async { - await tester.pumpWidgetBuilder( - Center( - child: Rectangle( - width: double.infinity, - height: double.infinity, - alignment: Alignment.bottomRight, - child: const Text('Hi this is me'), - ), - ), - wrapper: materialAppWrapper( - theme: ThemeData.light(), - platform: TargetPlatform.android, - ), - ); - await screenMatchesGolden(tester, 'rectangle/rectangle_010'); - }, - ); - - testGoldens( - ' with paintStyle', - (tester) async { - await tester.pumpWidgetBuilder( - Center( - child: Rectangle( - width: 200, - height: 200, - paintStyle: PaintStyle( - style: PaintingStyle.stroke, - strokeWidth: 10, - strokeJoin: StrokeJoin.round, - strokeCap: StrokeCap.square, - strokeMiterLimit: 20, - ), - child: const Text('Hi this is me'), - ), - ), - wrapper: materialAppWrapper( - theme: ThemeData.light(), - platform: TargetPlatform.android, - ), - ); - await screenMatchesGolden(tester, 'rectangle/rectangle_011'); - }, - ); - - testGoldens( - ' with clipBehavior', - (tester) async { - await tester.pumpWidgetBuilder( - Center( - child: Column( - children: [ - const Text('1 12 123 1234'), - Rectangle( - width: 100, - height: 50, - alignment: Alignment.centerLeft, - clipBehavior: Clip.antiAlias, - child: const Text('1 12 123 1234'), - ).colorize(Colors.amber), - Rectangle( - width: 100, - height: 50, - alignment: Alignment.center, - clipShrink: true, - clipBehavior: Clip.antiAlias, - child: const Text('1 12 123 1234'), - ).colorize(Colors.amber), - Rectangle( - width: 100, - height: 50, - alignment: Alignment.centerRight, - clipShrink: true, - clipBehavior: Clip.antiAlias, - child: const Text('1 12 123 1234'), - ).colorize(Colors.amber), - Rectangle( - width: 100, - height: 50, - alignment: Alignment.centerLeft, - clipBehavior: Clip.antiAlias, - clipShrink: false, - child: const Text('1 12 123 1234'), - ).colorize(Colors.amber), - Rectangle( - width: 100, - height: 50, - alignment: Alignment.center, - clipShrink: false, - clipBehavior: Clip.antiAlias, - child: const Text('1 12 123 1234'), - ).colorize(Colors.amber), - Rectangle( - width: 100, - height: 50, - alignment: Alignment.centerRight, - clipShrink: false, - clipBehavior: Clip.antiAlias, - child: const Text('1 12 123 1234'), - ).colorize(Colors.amber), - ], - ), - ), - wrapper: materialAppWrapper( - theme: ThemeData.light(), - platform: TargetPlatform.android, - ), - ); - await screenMatchesGolden(tester, 'rectangle/rectangle_012'); - }, - ); - testGoldens( - '13- with clipBehavior and image', - (tester) async { - final file = File( - path.join(Directory.current.path, 'test', 'flutter_logo_image.png'), - ); - final data = file.readAsBytesSync(); - await tester.pumpWidgetBuilder( - Center( - child: Column( - children: [ - Image.memory( - data, - fit: BoxFit.cover, - width: 200, - height: 100, - ), - const SizedBox(height: 8), - Rectangle( - width: 100, - height: 50, - alignment: Alignment.topLeft, - clipBehavior: Clip.antiAlias, - child: Image.memory( - data, - fit: BoxFit.cover, - ), - ).colorize(Colors.amber), - const SizedBox(height: 8), - Row( - mainAxisSize: MainAxisSize.min, - children: [ - Rectangle( - width: 100, - height: 50, - alignment: Alignment.topLeft, - clipBehavior: Clip.antiAlias, - child: Image.memory( - data, - fit: BoxFit.cover, - width: 200, - height: 100, - ), - ).colorize(Colors.amber), - Rectangle( - width: 100, - height: 50, - alignment: Alignment.topCenter, - clipBehavior: Clip.hardEdge, - child: Image.memory( - data, - fit: BoxFit.cover, - width: 200, - height: 100, - ), - ).colorize(Colors.amber), - Rectangle( - width: 100, - height: 50, - alignment: Alignment.topRight, - clipBehavior: Clip.hardEdge, - child: Image.memory( - data, - fit: BoxFit.cover, - width: 200, - height: 100, - ), - ).colorize(Colors.amber), - ], - ), - const SizedBox(height: 8), - Row( - mainAxisSize: MainAxisSize.min, - children: [ - Rectangle( - width: 100, - height: 50, - alignment: Alignment.centerLeft, - clipBehavior: Clip.antiAlias, - child: Image.memory( - data, - fit: BoxFit.cover, - width: 200, - height: 100, - ), - ).colorize(Colors.amber), - Rectangle( - width: 100, - height: 50, - alignment: Alignment.center, - clipBehavior: Clip.hardEdge, - child: Image.memory( - data, - fit: BoxFit.cover, - width: 200, - height: 100, - ), - ).colorize(Colors.amber), - Rectangle( - width: 100, - height: 50, - alignment: Alignment.centerRight, - clipBehavior: Clip.hardEdge, - child: Image.memory( - data, - fit: BoxFit.cover, - width: 200, - height: 100, - ), - ).colorize(Colors.amber), - ], - ), - const SizedBox(height: 8), - Row( - mainAxisSize: MainAxisSize.min, - children: [ - Rectangle( - width: 100, - height: 50, - alignment: Alignment.bottomLeft, - clipBehavior: Clip.antiAlias, - child: Image.memory( - data, - fit: BoxFit.cover, - width: 200, - height: 100, - ), - ).colorize(Colors.amber), - Rectangle( - width: 100, - height: 50, - alignment: Alignment.bottomCenter, - clipBehavior: Clip.hardEdge, - child: Image.memory( - data, - fit: BoxFit.cover, - width: 200, - height: 100, - ), - ).colorize(Colors.amber), - Rectangle( - width: 100, - height: 50, - alignment: Alignment.bottomRight, - clipBehavior: Clip.hardEdge, - child: Image.memory( - data, - fit: BoxFit.cover, - width: 200, - height: 100, - ), - ).colorize(Colors.amber), - ], - ), - const SizedBox(height: 4), - ], - ), - ), - wrapper: materialAppWrapper( - theme: ThemeData.light(), - platform: TargetPlatform.android, - ), - ); - await screenMatchesGolden(tester, 'rectangle/rectangle_013'); - }, - ); - - testGoldens( - '14 - with clipBehavior and image with sized box', - (tester) async { - final file = File( - path.join(Directory.current.path, 'test', 'flutter_logo_image.png'), - ); - final data = file.readAsBytesSync(); - await tester.pumpWidgetBuilder( - Center( - child: Column( - children: [ - Image.memory( - data, - fit: BoxFit.cover, - width: 200, - height: 100, - ), - const SizedBox(height: 8), - Rectangle( - width: 100, - height: 80, - alignment: Alignment.center, - clipBehavior: Clip.antiAlias, - child: Image.memory( - data, - fit: BoxFit.cover, - width: 200, - height: 100, - ), - ).colorize(Colors.amber), - Row( - mainAxisSize: MainAxisSize.min, - children: [ - SizedBox( - width: 200, - height: 100, - child: Rectangle( - width: 100, - height: 80, - alignment: Alignment.center, - clipBehavior: Clip.antiAlias, - child: Image.memory( - data, - fit: BoxFit.cover, - width: 200, - height: 100, - ), - ).colorize(Colors.amber), - ), - SizedBox( - width: 150, - height: 90, - child: Rectangle( - width: 100, - height: 80, - alignment: Alignment.center, - clipBehavior: Clip.antiAlias, - child: Image.memory( - data, - fit: BoxFit.cover, - width: 200, - height: 100, - ), - ).colorize(Colors.amber), - ), - SizedBox( - width: 100 * .8, - height: 80 * .8, - child: Rectangle( - width: 100, - height: 80, - alignment: Alignment.center, - clipBehavior: Clip.antiAlias, - child: Image.memory( - data, - fit: BoxFit.cover, - width: 200, - height: 100, - ), - ).colorize(Colors.amber), - ), - ], - ), - const SizedBox(height: 8), - Row( - mainAxisSize: MainAxisSize.min, - children: [ - ConstrainedBox( - constraints: const BoxConstraints( - maxWidth: 200, - maxHeight: 100, - ), - child: Rectangle( - width: 100, - height: 80, - alignment: Alignment.center, - clipBehavior: Clip.antiAlias, - child: Image.memory( - data, - fit: BoxFit.cover, - width: 200, - height: 100, - ), - ).colorize(Colors.amber), - ), - ConstrainedBox( - constraints: const BoxConstraints( - maxWidth: 150, - maxHeight: 90, - ), - child: Rectangle( - width: 100, - height: 80, - alignment: Alignment.center, - clipBehavior: Clip.antiAlias, - child: Image.memory( - data, - fit: BoxFit.cover, - width: 200, - height: 100, - ), - ).colorize(Colors.amber), - ), - ConstrainedBox( - constraints: const BoxConstraints( - maxWidth: 100 * .8, - maxHeight: 80 * .8, - ), - child: Rectangle( - width: 100, - height: 80, - alignment: Alignment.center, - clipBehavior: Clip.antiAlias, - child: Image.memory( - data, - fit: BoxFit.cover, - width: 200, - height: 100, - ), - ).colorize(Colors.amber), - ), - ], - ), - const SizedBox(height: 8), - Row( - mainAxisSize: MainAxisSize.min, - children: [ - ConstrainedBox( - constraints: const BoxConstraints( - maxWidth: 200, - maxHeight: 100, - ), - child: Rectangle( - width: 100, - height: 80, - alignment: Alignment.center, - clipBehavior: Clip.antiAlias, - child: Image.memory( - data, - fit: BoxFit.cover, - ), - ).colorize(Colors.amber), - ), - ConstrainedBox( - constraints: const BoxConstraints( - maxWidth: 150, - maxHeight: 90, - ), - child: Rectangle( - width: 100, - height: 80, - alignment: Alignment.center, - clipBehavior: Clip.antiAlias, - child: Image.memory( - data, - fit: BoxFit.cover, - ), - ).colorize(Colors.amber), - ), - ConstrainedBox( - constraints: const BoxConstraints( - maxWidth: 100 * .8, - maxHeight: 80 * .8, - ), - child: Rectangle( - width: 100, - height: 80, - alignment: Alignment.center, - clipBehavior: Clip.antiAlias, - child: Image.memory( - data, - fit: BoxFit.cover, - ), - ).colorize(Colors.amber), - ), - ], - ), - ], - ), - ), - wrapper: materialAppWrapper( - theme: ThemeData.light(), - platform: TargetPlatform.android, - ), - ); - await screenMatchesGolden(tester, 'rectangle/rectangle_014'); - }, - ); - - testGoldens( - ' with clipBehavior and image with both image w and h and rect w and h are null', - (tester) async { - final file = File( - path.join(Directory.current.path, 'test', 'flutter_logo_image.png'), - ); - final data = file.readAsBytesSync(); - await tester.pumpWidgetBuilder( - Rectangle( - clipBehavior: Clip.antiAlias, - child: Image.memory( - data, - fit: BoxFit.cover, - ), - ).colorize(Colors.amber), - wrapper: materialAppWrapper( - theme: ThemeData.light(), - platform: TargetPlatform.android, - ), - ); - await screenMatchesGolden(tester, 'rectangle/rectangle_015'); - }, - ); - - testGoldens( - ' with clipBehavior and image with both image w and h and rect w and h are null' - 'Case inside sized box', - (tester) async { - final file = File( - path.join(Directory.current.path, 'test', 'flutter_logo_image.png'), - ); - final data = file.readAsBytesSync(); - await tester.pumpWidgetBuilder( - Center( - child: SizedBox( - width: 400, - height: 400, - child: Rectangle( - clipBehavior: Clip.antiAlias, - child: Image.memory( - data, - fit: BoxFit.cover, - ), - ).colorize(Colors.amber), - ), - ), - wrapper: materialAppWrapper( - theme: ThemeData.light(), - platform: TargetPlatform.android, - ), - ); - await screenMatchesGolden(tester, 'rectangle/rectangle_016'); - }, - ); - - testGoldens( - ' with clipBehavior and image with both only rect w is given', - (tester) async { - final file = File( - path.join(Directory.current.path, 'test', 'flutter_logo_image.png'), - ); - final data = file.readAsBytesSync(); - await tester.pumpWidgetBuilder( - Center( - child: Rectangle( - width: 400, - clipBehavior: Clip.antiAlias, - child: Image.memory( - data, - fit: BoxFit.cover, - ), - ).colorize(Colors.amber), - ), - wrapper: materialAppWrapper( - theme: ThemeData.light(), - platform: TargetPlatform.android, - ), - ); - await screenMatchesGolden(tester, 'rectangle/rectangle_017'); - }, - ); - testGoldens( - ' with clipBehavior and image with both only rect w is given' - 'With alignment to top left', - (tester) async { - final file = File( - path.join(Directory.current.path, 'test', 'flutter_logo_image.png'), - ); - final data = file.readAsBytesSync(); - await tester.pumpWidgetBuilder( - Center( - child: Rectangle( - width: 400, - clipBehavior: Clip.antiAlias, - alignment: Alignment.topLeft, - child: Image.memory( - data, - fit: BoxFit.cover, - ), - ).colorize(Colors.amber), - ), - wrapper: materialAppWrapper( - theme: ThemeData.light(), - platform: TargetPlatform.android, - ), - ); - await screenMatchesGolden(tester, 'rectangle/rectangle_018'); - }, - ); - - testGoldens( - ' with clipBehavior and image with both only image w is given', - (tester) async { - final file = File( - path.join(Directory.current.path, 'test', 'flutter_logo_image.png'), - ); - final data = file.readAsBytesSync(); - await tester.pumpWidgetBuilder( - Center( - child: Rectangle( - clipBehavior: Clip.antiAlias, - alignment: Alignment.center, - child: Image.memory( - data, - width: 400, - fit: BoxFit.cover, - ), - ).colorize(Colors.amber), - ), - wrapper: materialAppWrapper( - theme: ThemeData.light(), - platform: TargetPlatform.android, - ), - ); - await screenMatchesGolden(tester, 'rectangle/rectangle_019'); - }, - ); - - testGoldens( - ' with clipBehavior and image with both only rect h is given', - (tester) async { - final file = File( - path.join(Directory.current.path, 'test', 'flutter_logo_image.png'), - ); - final data = file.readAsBytesSync(); - await tester.pumpWidgetBuilder( - Center( - child: Rectangle( - height: 400, - clipBehavior: Clip.antiAlias, - child: Image.memory( - data, - fit: BoxFit.cover, - ), - ).colorize(Colors.amber), - ), - wrapper: materialAppWrapper( - theme: ThemeData.light(), - platform: TargetPlatform.android, - ), - ); - await screenMatchesGolden(tester, 'rectangle/rectangle_020'); - }, - ); - - testGoldens( - '21- with clipBehavior and image with both only image h is given', - (tester) async { - final file = File( - path.join(Directory.current.path, 'test', 'flutter_logo_image.png'), - ); - final data = file.readAsBytesSync(); - await tester.pumpWidgetBuilder( - Center( - child: Rectangle( - clipBehavior: Clip.antiAlias, - alignment: Alignment.center, - child: Image.memory( - data, - height: 40, - fit: BoxFit.cover, - ), - ).colorize(Colors.amber), - ), - wrapper: materialAppWrapper( - theme: ThemeData.light(), - platform: TargetPlatform.android, - ), - ); - await screenMatchesGolden(tester, 'rectangle/rectangle_021'); - }, - ); - - testGoldens( - '22- with clipBehavior and image without any dimension and with different sized box', - (tester) async { - final file = File( - path.join(Directory.current.path, 'test', 'flutter_logo_image.png'), - ); - final data = file.readAsBytesSync(); - await tester.pumpWidgetBuilder( - Center( - child: Column( - children: [ - ConstrainedBox( - constraints: const BoxConstraints( - maxWidth: 300, - maxHeight: 300, - ), - // width: 300, - // height: 300, - child: Rectangle( - clipBehavior: Clip.antiAlias, - alignment: Alignment.center, - child: Image.memory( - data, - fit: BoxFit.cover, - ), - ).colorize(Colors.amber), - ), - SizedBox( - width: 200, - height: 200, - child: Rectangle( - clipBehavior: Clip.antiAlias, - alignment: Alignment.center, - child: Image.memory( - data, - fit: BoxFit.cover, - ), - ).colorize(Colors.amber), - ), - SizedBox( - width: 100, - height: 100, - child: Rectangle( - clipBehavior: Clip.antiAlias, - alignment: Alignment.center, - child: Image.memory( - data, - fit: BoxFit.cover, - ), - ).colorize(Colors.amber), - ), - ], - ), - ), - wrapper: materialAppWrapper( - theme: ThemeData.light(), - platform: TargetPlatform.android, - ), - ); - await screenMatchesGolden(tester, 'rectangle/rectangle_022'); - }, - ); - - testGoldens( - '23- with clipBehavior and image without img dimension and with different sized box', - (tester) async { - final file = File( - path.join(Directory.current.path, 'test', 'flutter_logo_image.png'), - ); - final data = file.readAsBytesSync(); - await tester.pumpWidgetBuilder( - Center( - child: Column( - children: [ - ConstrainedBox( - constraints: const BoxConstraints( - maxWidth: 300, - maxHeight: 300, - ), - // width: 300, - // height: 300, - child: Rectangle( - clipBehavior: Clip.antiAlias, - alignment: Alignment.center, - child: Image.memory( - data, - width: 250, - height: 250, - fit: BoxFit.cover, - ), - ).colorize(Colors.amber), - ), - SizedBox( - width: 200, - height: 200, - child: Rectangle( - clipBehavior: Clip.antiAlias, - alignment: Alignment.center, - child: Image.memory( - data, - fit: BoxFit.cover, - width: 250, - height: 250, - ), - ).colorize(Colors.amber), - ), - SizedBox( - width: 100, - height: 100, - child: Rectangle( - clipBehavior: Clip.antiAlias, - alignment: Alignment.center, - child: Image.memory( - data, - fit: BoxFit.cover, - width: 250, - height: 250, - ), - ).colorize(Colors.amber), - ), - ], - ), - ), - wrapper: materialAppWrapper( - theme: ThemeData.light(), - platform: TargetPlatform.android, - ), - ); - await screenMatchesGolden(tester, 'rectangle/rectangle_023'); - }, - ); - - testGoldens( - '24- with clipBehavior and image without rect dimension and with different sized box', - (tester) async { - final file = File( - path.join(Directory.current.path, 'test', 'flutter_logo_image.png'), - ); - final data = file.readAsBytesSync(); - await tester.pumpWidgetBuilder( - Center( - child: Column( - children: [ - ConstrainedBox( - constraints: const BoxConstraints( - maxWidth: 300, - maxHeight: 300, - ), - child: Rectangle( - width: 150, - height: 150, - clipBehavior: Clip.antiAlias, - alignment: Alignment.center, - child: Image.memory( - data, - fit: BoxFit.cover, - width: 300, - height: 300, - ), - ).colorize(Colors.amber), - ), - ConstrainedBox( - constraints: const BoxConstraints( - maxWidth: 200, - maxHeight: 200, - ), - child: Rectangle( - clipBehavior: Clip.antiAlias, - alignment: Alignment.center, - width: 150, - height: 150, - child: Image.memory( - data, - fit: BoxFit.cover, - width: 300, - height: 300, - ), - ).colorize(Colors.amber), - ), - ConstrainedBox( - constraints: const BoxConstraints( - maxWidth: 100, - maxHeight: 100, - ), - child: Rectangle( - clipBehavior: Clip.antiAlias, - alignment: Alignment.center, - width: 150, - height: 150, - child: Image.memory( - data, - fit: BoxFit.cover, - width: 300, - height: 300, - ), - ).colorize(Colors.amber), - ), - ], - ), - ), - wrapper: materialAppWrapper( - theme: ThemeData.light(), - platform: TargetPlatform.android, - ), - ); - await screenMatchesGolden(tester, 'rectangle/rectangle_024'); - }, - ); - }, - ); -} diff --git a/test/rectangle_test.dart b/test/rectangle_test.dart index a1635b4..ddc9dcf 100644 --- a/test/rectangle_test.dart +++ b/test/rectangle_test.dart @@ -12,7 +12,7 @@ void main() { 'rectangle', () { testGoldens( - '1- Expands to take the max available space if both height and width' + '1- Shrink to take the min available space if both height and width' 'are not specified and the child is null', (tester) async { await tester.pumpWidgetBuilder( @@ -22,6 +22,23 @@ void main() { platform: TargetPlatform.android, ), ); + await screenMatchesGolden(tester, 'rectangle/rectangle_0001'); + }, + ); + testGoldens( + '1- Expands to take the max available space if both height and width' + 'are not specified and the child is null', + (tester) async { + await tester.pumpWidgetBuilder( + Center( + child: Rectangle( + shouldExpand: true, + )), + wrapper: materialAppWrapper( + theme: ThemeData.light(), + platform: TargetPlatform.android, + ), + ); await screenMatchesGolden(tester, 'rectangle/rectangle_001'); }, ); @@ -32,6 +49,7 @@ void main() { Center( child: Rectangle( width: 100, + shouldExpand: true, color: Colors.red, ), ), @@ -51,6 +69,7 @@ void main() { Center( child: Rectangle( height: 100, + shouldExpand: true, color: ColorWithGradient( const LinearGradient(colors: [Colors.red, Colors.blue])), ), @@ -269,7 +288,7 @@ void main() { const Text('1 12 123 1234') .background( alignment: Alignment.center, - clipShrink: true, + shrinkToClippedSize: true, clipBehavior: Clip.antiAlias, ) .buildRect( @@ -280,7 +299,7 @@ void main() { const Text('1 12 123 1234') .background( alignment: Alignment.centerRight, - clipShrink: true, + shrinkToClippedSize: true, clipBehavior: Clip.antiAlias, ) .buildRect( @@ -292,7 +311,7 @@ void main() { .background( alignment: Alignment.centerLeft, clipBehavior: Clip.antiAlias, - clipShrink: false, + shrinkToClippedSize: false, ) .buildRect( width: 100, @@ -302,7 +321,7 @@ void main() { const Text('1 12 123 1234') .background( alignment: Alignment.center, - clipShrink: false, + shrinkToClippedSize: false, clipBehavior: Clip.antiAlias, ) .buildRect( @@ -313,7 +332,7 @@ void main() { const Text('1 12 123 1234') .background( alignment: Alignment.centerRight, - clipShrink: false, + shrinkToClippedSize: false, clipBehavior: Clip.antiAlias, ) .buildRect( @@ -355,7 +374,7 @@ void main() { fit: BoxFit.cover, ) .background( - alignment: Alignment.topLeft, + alignment: Alignment.center, clipBehavior: Clip.antiAlias, ) .buildRect( @@ -540,34 +559,56 @@ void main() { Center( child: Column( children: [ - Image.memory( - data, - fit: BoxFit.cover, - width: 200, - height: 100, - ), - const SizedBox(height: 8), - Image.memory( - data, - fit: BoxFit.cover, - width: 200, - height: 100, - ) - .background( - alignment: Alignment.center, - clipBehavior: Clip.antiAlias, - ) - .buildRect( - width: 100, - height: 80, + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Image.memory( + data, + fit: BoxFit.cover, + width: 200, + height: 100, + ), + const SizedBox(width: 8), + Image.memory( + data, + fit: BoxFit.cover, + width: 200, + height: 100, ) - .colorize(Colors.amber), + .background( + alignment: Alignment.center, + clipBehavior: Clip.antiAlias, + ) + .buildRect( + width: 100, + height: 80, + ) + .colorize(Colors.amber), + ], + ), + const SizedBox(width: 8), Row( mainAxisSize: MainAxisSize.min, children: [ SizedBox( - width: 200, - height: 100, + width: 150, + // height: 200, + child: Rectangle( + width: 100, + height: 80, + alignment: Alignment.center, + clipBehavior: Clip.antiAlias, + child: Image.memory( + data, + fit: BoxFit.cover, + width: 200, + height: 100, + ), + ).colorize(Colors.amber), + ), + SizedBox( + width: 150, + // height: 200, child: Image.memory( data, fit: BoxFit.cover, @@ -585,8 +626,8 @@ void main() { .colorize(Colors.amber), ), SizedBox( - width: 150, - height: 90, + width: 80, + // height: 200, child: Image.memory( data, fit: BoxFit.cover, @@ -604,8 +645,77 @@ void main() { .colorize(Colors.amber), ), SizedBox( - width: 100 * .8, - height: 80 * .8, + width: 50, + // height: 80 * .8, + child: Image.memory( + data, + fit: BoxFit.cover, + width: 200, + height: 100, + ) + .background( + alignment: Alignment.center, + clipBehavior: Clip.antiAlias, + ) + .buildRect( + width: 100, + height: 80, + ) + .colorize(Colors.amber), + ), + ], + ), + const SizedBox(height: 8), + Row( + mainAxisSize: MainAxisSize.min, + children: [ + ConstrainedBox( + constraints: const BoxConstraints( + maxWidth: 300, + // maxHeight: 200, + ), + child: Image.memory( + data, + fit: BoxFit.cover, + width: 200, + height: 100, + ) + .background( + alignment: Alignment.center, + clipBehavior: Clip.antiAlias, + ) + .buildRect( + width: 100, + height: 80, + ) + .colorize(Colors.amber), + ), + ConstrainedBox( + constraints: const BoxConstraints( + maxWidth: 80, + // maxHeight: 50, + ), + child: Image.memory( + data, + fit: BoxFit.cover, + width: 200, + height: 100, + ) + .background( + alignment: Alignment.center, + clipBehavior: Clip.antiAlias, + ) + .buildRect( + width: 100, + height: 80, + ) + .colorize(Colors.amber), + ), + ConstrainedBox( + constraints: const BoxConstraints( + maxWidth: 50, + // maxHeight: 25, + ), child: Image.memory( data, fit: BoxFit.cover, @@ -630,8 +740,8 @@ void main() { children: [ ConstrainedBox( constraints: const BoxConstraints( - maxWidth: 200, - maxHeight: 100, + maxWidth: 300, + // maxHeight: 200, ), child: Image.memory( data, @@ -640,6 +750,7 @@ void main() { height: 100, ) .background( + shouldExpand: true, alignment: Alignment.center, clipBehavior: Clip.antiAlias, ) @@ -651,8 +762,8 @@ void main() { ), ConstrainedBox( constraints: const BoxConstraints( - maxWidth: 150, - maxHeight: 90, + maxWidth: 80, + // maxHeight: 50, ), child: Image.memory( data, @@ -661,6 +772,7 @@ void main() { height: 100, ) .background( + shouldExpand: true, alignment: Alignment.center, clipBehavior: Clip.antiAlias, ) @@ -672,8 +784,8 @@ void main() { ), ConstrainedBox( constraints: const BoxConstraints( - maxWidth: 100 * .8, - maxHeight: 80 * .8, + maxWidth: 50, + // maxHeight: 25, ), child: Image.memory( data, @@ -682,6 +794,7 @@ void main() { height: 100, ) .background( + shouldExpand: true, alignment: Alignment.center, clipBehavior: Clip.antiAlias, ) @@ -699,8 +812,8 @@ void main() { children: [ ConstrainedBox( constraints: const BoxConstraints( - maxWidth: 200, - maxHeight: 100, + maxWidth: 300, + maxHeight: 200, ), child: Image.memory( data, @@ -718,8 +831,8 @@ void main() { ), ConstrainedBox( constraints: const BoxConstraints( - maxWidth: 150, - maxHeight: 90, + maxWidth: 100, + maxHeight: 50, ), child: Image.memory( data, @@ -735,8 +848,8 @@ void main() { )), ConstrainedBox( constraints: const BoxConstraints( - maxWidth: 100 * .8, - maxHeight: 80 * .8, + maxWidth: 50, + maxHeight: 25, ), child: Image.memory( data, @@ -899,6 +1012,7 @@ void main() { data, fit: BoxFit.cover, width: 400, + // height: 400, ) .background( clipBehavior: Clip.antiAlias, @@ -1135,7 +1249,7 @@ void main() { ConstrainedBox( constraints: const BoxConstraints( maxWidth: 300, - maxHeight: 300, + // maxHeight: 300, ), child: Image.memory( data, @@ -1156,7 +1270,7 @@ void main() { ConstrainedBox( constraints: const BoxConstraints( maxWidth: 200, - maxHeight: 200, + // maxHeight: 200, ), child: Image.memory( data, @@ -1177,7 +1291,7 @@ void main() { ConstrainedBox( constraints: const BoxConstraints( maxWidth: 100, - maxHeight: 100, + // maxHeight: 100, ), child: Image.memory( data, @@ -1206,6 +1320,234 @@ void main() { await screenMatchesGolden(tester, 'rectangle/rectangle_024'); }, ); + + testGoldens( + '25- with clipBehavior with infinite sized width', + (tester) async { + final file = File( + path.join(Directory.current.path, 'test', 'flutter_logo_image.png'), + ); + final data = file.readAsBytesSync(); + await tester.pumpWidgetBuilder( + Center( + child: SizedBox( + width: double.infinity, + child: Image.memory( + data, + fit: BoxFit.cover, + width: 300, + height: 300, + ) + .background( + clipBehavior: Clip.antiAlias, + alignment: Alignment.center, + ) + .buildRect( + width: 100, + height: 80, + ) + .colorize(Colors.amber), + )), + wrapper: materialAppWrapper( + theme: ThemeData.light(), + platform: TargetPlatform.android, + ), + ); + await screenMatchesGolden(tester, 'rectangle/rectangle_025'); + }, + ); + + testGoldens( + '26- with clipBehavior with infinite sized width. case shouldExpand is true', + (tester) async { + final file = File( + path.join(Directory.current.path, 'test', 'flutter_logo_image.png'), + ); + final data = file.readAsBytesSync(); + await tester.pumpWidgetBuilder( + Center( + child: SizedBox( + width: double.infinity, + child: Image.memory( + data, + fit: BoxFit.cover, + width: 300, + height: 300, + ) + .background( + shouldExpand: true, + clipBehavior: Clip.antiAlias, + alignment: Alignment.center, + ) + .buildRect( + width: 100, + height: 80, + ) + .colorize(Colors.amber), + )), + wrapper: materialAppWrapper( + theme: ThemeData.light(), + platform: TargetPlatform.android, + ), + ); + await screenMatchesGolden(tester, 'rectangle/rectangle_026'); + }, + ); + + testGoldens( + '27- with clipBehavior case shouldExpand is true', + (tester) async { + final file = File( + path.join(Directory.current.path, 'test', 'flutter_logo_image.png'), + ); + final data = file.readAsBytesSync(); + await tester.pumpWidgetBuilder( + Center( + child: Image.memory( + data, + fit: BoxFit.cover, + width: 300, + height: 300, + ) + .background( + shouldExpand: true, + clipBehavior: Clip.antiAlias, + alignment: Alignment.center, + ) + .buildRect( + width: 100, + height: 80, + ) + .colorize(Colors.amber), + ), + wrapper: materialAppWrapper( + theme: ThemeData.light(), + platform: TargetPlatform.android, + ), + ); + await screenMatchesGolden(tester, 'rectangle/rectangle_027'); + }, + ); + + testGoldens( + '28- with clipBehavior case shouldExpand is true, shape width = null', + (tester) async { + final file = File( + path.join(Directory.current.path, 'test', 'flutter_logo_image.png'), + ); + final data = file.readAsBytesSync(); + await tester.pumpWidgetBuilder( + Center( + child: Image.memory( + data, + fit: BoxFit.cover, + width: 300, + height: 300, + ) + .background( + shouldExpand: true, + clipBehavior: Clip.antiAlias, + alignment: Alignment.center, + ) + .buildRect( + // width: 100, + height: 80, + ) + .colorize(Colors.amber), + ), + wrapper: materialAppWrapper( + theme: ThemeData.light(), + platform: TargetPlatform.android, + ), + ); + await screenMatchesGolden(tester, 'rectangle/rectangle_028'); + }, + ); + + testGoldens( + '29- with clipBehavior case shouldExpand is true, shape hight = null', + (tester) async { + final file = File( + path.join(Directory.current.path, 'test', 'flutter_logo_image.png'), + ); + final data = file.readAsBytesSync(); + await tester.pumpWidgetBuilder( + Center( + child: Image.memory( + data, + fit: BoxFit.cover, + width: 300, + height: 300, + ) + .background( + shouldExpand: true, + clipBehavior: Clip.antiAlias, + alignment: Alignment.center, + ) + .buildRect( + width: 100, + // height: 80, + ) + .colorize(Colors.amber), + ), + wrapper: materialAppWrapper( + theme: ThemeData.light(), + platform: TargetPlatform.android, + ), + ); + await screenMatchesGolden(tester, 'rectangle/rectangle_029'); + }, + ); + + testGoldens( + '30- inkWell', + (tester) async { + dynamic message; + await tester.pumpWidgetBuilder( + Center( + child: Column( + children: [ + const Text('build Rect background') + .background() + .inkWell( + InkWell( + splashColor: Colors.red, + onTap: () { + message = 'onTap'; + }, + ), + ) + .buildRect(), + const Text('build Rect foreground') + .foreground() + .inkWell( + InkWell( + splashColor: Colors.red, + onTap: () { + message = 'onTap'; + }, + ), + ) + .buildRect(), + ], + ), + ), + wrapper: materialAppWrapper( + theme: ThemeData.light(), + platform: TargetPlatform.android, + ), + ); + expect(message, null); + await tester.tap(find.text('build Rect background')); + await tester.pump(); + expect(message, 'onTap'); + message = null; + await tester.press(find.text('build Rect background')); + await tester.press(find.text('build Rect foreground')); + + await screenMatchesGolden(tester, 'rectangle/rectangle_030'); + }, + ); }, ); } diff --git a/test/square_test.dart b/test/square_test.dart index 70bf773..e9ce545 100644 --- a/test/square_test.dart +++ b/test/square_test.dart @@ -11,12 +11,33 @@ void main() { group( 'rectangle', () { + testGoldens( + '1- Shrink to take the min available space if both height and width' + 'are not specified and the child is null', + (tester) async { + await tester.pumpWidgetBuilder( + Center( + child: Rectangle.square( + shouldExpand: true, + )), + wrapper: materialAppWrapper( + theme: ThemeData.light(), + platform: TargetPlatform.android, + ), + ); + await screenMatchesGolden(tester, 'square/square_0001'); + }, + ); + testGoldens( '1- Expands to take the max available space if both height and width' 'are not specified and the child is null', (tester) async { await tester.pumpWidgetBuilder( - Center(child: Rectangle.square()), + Center( + child: Rectangle.square( + shouldExpand: true, + )), wrapper: materialAppWrapper( theme: ThemeData.light(), platform: TargetPlatform.android, @@ -233,7 +254,7 @@ void main() { const Text('1 12 123 1234') .background( alignment: Alignment.center, - clipShrink: true, + shrinkToClippedSize: true, clipBehavior: Clip.antiAlias, ) .buildSquare(80) @@ -241,7 +262,7 @@ void main() { const Text('1 12 123 1234') .background( alignment: Alignment.centerRight, - clipShrink: true, + shrinkToClippedSize: true, clipBehavior: Clip.antiAlias, ) .buildSquare(80) @@ -250,14 +271,14 @@ void main() { .background( alignment: Alignment.centerLeft, clipBehavior: Clip.antiAlias, - clipShrink: false, + shrinkToClippedSize: false, ) .buildSquare(80) .colorize(Colors.amber), const Text('1 12 123 1234') .background( alignment: Alignment.center, - clipShrink: false, + shrinkToClippedSize: false, clipBehavior: Clip.antiAlias, ) .buildSquare(80) @@ -265,7 +286,7 @@ void main() { const Text('1 12 123 1234') .background( alignment: Alignment.centerRight, - clipShrink: false, + shrinkToClippedSize: false, clipBehavior: Clip.antiAlias, ) .buildSquare(80) @@ -459,31 +480,54 @@ void main() { Center( child: Column( children: [ - Image.memory( - data, - fit: BoxFit.cover, - width: 200, - height: 100, - ), - const SizedBox(height: 8), - Image.memory( - data, - fit: BoxFit.cover, - width: 200, - height: 100, - ) - .background( - alignment: Alignment.center, - clipBehavior: Clip.antiAlias, + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Image.memory( + data, + fit: BoxFit.cover, + width: 200, + height: 100, + ), + const SizedBox(width: 8), + Image.memory( + data, + fit: BoxFit.cover, + width: 200, + height: 100, ) - .buildSquare(80) - .colorize(Colors.amber), + .background( + alignment: Alignment.center, + clipBehavior: Clip.antiAlias, + ) + .buildSquare( + 60, + ) + .colorize(Colors.amber), + ], + ), + const SizedBox(width: 8), Row( mainAxisSize: MainAxisSize.min, children: [ SizedBox( - width: 200, - height: 100, + width: 150, + // height: 200, + child: Rectangle.square( + side: 60, + alignment: Alignment.center, + clipBehavior: Clip.antiAlias, + child: Image.memory( + data, + fit: BoxFit.cover, + width: 200, + height: 100, + ), + ).colorize(Colors.amber), + ), + SizedBox( + width: 150, + // height: 200, child: Image.memory( data, fit: BoxFit.cover, @@ -494,12 +538,14 @@ void main() { alignment: Alignment.center, clipBehavior: Clip.antiAlias, ) - .buildSquare(80) + .buildSquare( + 60, + ) .colorize(Colors.amber), ), SizedBox( - width: 150, - height: 90, + width: 80, + // height: 200, child: Image.memory( data, fit: BoxFit.cover, @@ -510,12 +556,14 @@ void main() { alignment: Alignment.center, clipBehavior: Clip.antiAlias, ) - .buildSquare(80) + .buildSquare( + 60, + ) .colorize(Colors.amber), ), SizedBox( - width: 100 * .8, - height: 80 * .8, + width: 50, + // height: 80 * .8, child: Image.memory( data, fit: BoxFit.cover, @@ -526,7 +574,9 @@ void main() { alignment: Alignment.center, clipBehavior: Clip.antiAlias, ) - .buildSquare(80) + .buildSquare( + 60, + ) .colorize(Colors.amber), ), ], @@ -537,8 +587,8 @@ void main() { children: [ ConstrainedBox( constraints: const BoxConstraints( - maxWidth: 200, - maxHeight: 100, + maxWidth: 300, + // maxHeight: 200, ), child: Image.memory( data, @@ -550,13 +600,15 @@ void main() { alignment: Alignment.center, clipBehavior: Clip.antiAlias, ) - .buildSquare(80) + .buildSquare( + 60, + ) .colorize(Colors.amber), ), ConstrainedBox( constraints: const BoxConstraints( - maxWidth: 150, - maxHeight: 90, + maxWidth: 80, + // maxHeight: 50, ), child: Image.memory( data, @@ -568,13 +620,15 @@ void main() { alignment: Alignment.center, clipBehavior: Clip.antiAlias, ) - .buildSquare(80) + .buildSquare( + 60, + ) .colorize(Colors.amber), ), ConstrainedBox( constraints: const BoxConstraints( - maxWidth: 100 * .8, - maxHeight: 80 * .8, + maxWidth: 50, + // maxHeight: 25, ), child: Image.memory( data, @@ -586,7 +640,9 @@ void main() { alignment: Alignment.center, clipBehavior: Clip.antiAlias, ) - .buildSquare(80) + .buildSquare( + 60, + ) .colorize(Colors.amber), ), ], @@ -597,39 +653,77 @@ void main() { children: [ ConstrainedBox( constraints: const BoxConstraints( - maxWidth: 200, - maxHeight: 100, + maxWidth: 300, + // maxHeight: 200, ), child: Image.memory( data, fit: BoxFit.cover, + width: 200, + height: 100, ) .background( + shouldExpand: true, alignment: Alignment.center, clipBehavior: Clip.antiAlias, ) - .buildSquare(80) + .buildSquare( + 60, + ) .colorize(Colors.amber), ), ConstrainedBox( constraints: const BoxConstraints( - maxWidth: 150, - maxHeight: 90, + maxWidth: 80, + // maxHeight: 50, ), child: Image.memory( data, fit: BoxFit.cover, + width: 200, + height: 100, ) .background( + shouldExpand: true, alignment: Alignment.center, clipBehavior: Clip.antiAlias, ) - .buildSquare(80), + .buildSquare( + 60, + ) + .colorize(Colors.amber), ), ConstrainedBox( constraints: const BoxConstraints( - maxWidth: 100 * .8, - maxHeight: 80 * .8, + maxWidth: 50, + // maxHeight: 25, + ), + child: Image.memory( + data, + fit: BoxFit.cover, + width: 200, + height: 100, + ) + .background( + shouldExpand: true, + alignment: Alignment.center, + clipBehavior: Clip.antiAlias, + ) + .buildSquare( + 60, + ) + .colorize(Colors.amber), + ), + ], + ), + const SizedBox(height: 8), + Row( + mainAxisSize: MainAxisSize.min, + children: [ + ConstrainedBox( + constraints: const BoxConstraints( + maxWidth: 300, + maxHeight: 200, ), child: Image.memory( data, @@ -639,7 +733,41 @@ void main() { alignment: Alignment.center, clipBehavior: Clip.antiAlias, ) - .buildSquare(80) + .buildSquare( + 60, + ) + .colorize(Colors.amber), + ), + ConstrainedBox( + constraints: const BoxConstraints( + maxWidth: 100, + maxHeight: 50, + ), + child: Image.memory( + data, + fit: BoxFit.cover, + ) + .background( + alignment: Alignment.center, + clipBehavior: Clip.antiAlias, + ) + .buildSquare(80)), + ConstrainedBox( + constraints: const BoxConstraints( + maxWidth: 50, + maxHeight: 25, + ), + child: Image.memory( + data, + fit: BoxFit.cover, + ) + .background( + alignment: Alignment.center, + clipBehavior: Clip.antiAlias, + ) + .buildSquare( + 60, + ) .colorize(Colors.amber), ), ], @@ -1089,6 +1217,195 @@ void main() { ); }, ); + + testGoldens( + '26- with clipBehavior with infinite sized width. case shouldExpand is true', + (tester) async { + final file = File( + path.join(Directory.current.path, 'test', 'flutter_logo_image.png'), + ); + final data = file.readAsBytesSync(); + await tester.pumpWidgetBuilder( + Center( + child: SizedBox( + width: double.infinity, + child: Image.memory( + data, + fit: BoxFit.cover, + width: 300, + height: 300, + ) + .background( + shouldExpand: true, + clipBehavior: Clip.antiAlias, + alignment: Alignment.center, + ) + .buildSquare( + 80, + ) + .colorize(Colors.amber), + )), + wrapper: materialAppWrapper( + theme: ThemeData.light(), + platform: TargetPlatform.android, + ), + ); + await screenMatchesGolden(tester, 'square/square_026'); + }, + ); + + testGoldens( + '27- with clipBehavior case shouldExpand is true', + (tester) async { + final file = File( + path.join(Directory.current.path, 'test', 'flutter_logo_image.png'), + ); + final data = file.readAsBytesSync(); + await tester.pumpWidgetBuilder( + Center( + child: Image.memory( + data, + fit: BoxFit.cover, + width: 300, + height: 300, + ) + .background( + shouldExpand: true, + clipBehavior: Clip.antiAlias, + alignment: Alignment.center, + ) + .buildSquare( + 80, + ) + .colorize(Colors.amber), + ), + wrapper: materialAppWrapper( + theme: ThemeData.light(), + platform: TargetPlatform.android, + ), + ); + await screenMatchesGolden(tester, 'square/square_027'); + }, + ); + + testGoldens( + '28- with clipBehavior case shouldExpand is true, shape width = null', + (tester) async { + final file = File( + path.join(Directory.current.path, 'test', 'flutter_logo_image.png'), + ); + final data = file.readAsBytesSync(); + await tester.pumpWidgetBuilder( + Center( + child: Image.memory( + data, + fit: BoxFit.cover, + width: 300, + height: 300, + ) + .background( + shouldExpand: true, + clipBehavior: Clip.antiAlias, + alignment: Alignment.center, + ) + .buildSquare( + 80, + ) + .colorize(Colors.amber), + ), + wrapper: materialAppWrapper( + theme: ThemeData.light(), + platform: TargetPlatform.android, + ), + ); + await screenMatchesGolden(tester, 'square/square_028'); + }, + ); + + testGoldens( + '29- with clipBehavior case shouldExpand is true, shape hight = null', + (tester) async { + final file = File( + path.join(Directory.current.path, 'test', 'flutter_logo_image.png'), + ); + final data = file.readAsBytesSync(); + await tester.pumpWidgetBuilder( + Center( + child: Image.memory( + data, + fit: BoxFit.cover, + width: 300, + height: 300, + ) + .background( + shouldExpand: true, + clipBehavior: Clip.antiAlias, + alignment: Alignment.center, + ) + .buildSquare( + 100, + // height: 80, + ) + .colorize(Colors.amber), + ), + wrapper: materialAppWrapper( + theme: ThemeData.light(), + platform: TargetPlatform.android, + ), + ); + await screenMatchesGolden(tester, 'square/square_029'); + }, + ); + + testGoldens( + '30- inkWell', + (tester) async { + dynamic message; + await tester.pumpWidgetBuilder( + Center( + child: Column( + children: [ + const Text('build background') + .background() + .inkWell( + InkWell( + splashColor: Colors.red, + onTap: () { + message = 'onTap'; + }, + ), + ) + .buildSquare(), + const Text('build foreground') + .foreground() + .inkWell( + InkWell( + splashColor: Colors.red, + onTap: () { + message = 'onTap'; + }, + ), + ) + .buildSquare(), + ], + ), + ), + wrapper: materialAppWrapper( + theme: ThemeData.light(), + platform: TargetPlatform.android, + ), + ); + expect(message, null); + await tester.tap(find.text('build background')); + await tester.pump(); + expect(message, 'onTap'); + message = null; + await tester.press(find.text('build background')); + await tester.press(find.text('build foreground')); + + await screenMatchesGolden(tester, 'square/square_030'); + }, + ); } class _CustomClipper extends CustomClipper { From 83568ab2449299d40afaef9b686fb62146c9f01e Mon Sep 17 00:00:00 2001 From: MELLATI Fatah Date: Sat, 27 May 2023 10:21:38 +0100 Subject: [PATCH 3/4] and inkwell --- .../lib/ex_001_basic_shapes/ex_10_dating.dart | 4 +- example/lib/main.dart | 278 +++--------------- lib/src/base_render_shape.dart | 8 +- lib/src/base_single_child_render_shape.dart | 27 +- lib/src/oval.dart | 20 +- lib/src/rectangle.dart | 14 +- lib/src/rounded_rectangle.dart | 53 ++-- lib/src/shape_builder.dart | 40 ++- lib/src/stack_render_shape.dart | 2 +- 9 files changed, 155 insertions(+), 291 deletions(-) diff --git a/example/lib/ex_001_basic_shapes/ex_10_dating.dart b/example/lib/ex_001_basic_shapes/ex_10_dating.dart index 893851f..c4de500 100644 --- a/example/lib/ex_001_basic_shapes/ex_10_dating.dart +++ b/example/lib/ex_001_basic_shapes/ex_10_dating.dart @@ -84,7 +84,7 @@ class _MyHomePage extends StatelessWidget { ), ) .buildRRect() - .padding + .paddingInsets .right() : Icon( Icons.info_outline, @@ -114,7 +114,7 @@ class _MyHomePage extends StatelessWidget { color: Colors.white, hasGradient: true, icon: Icons.favorite, - ).padding.horizontal(), + ).paddingInsets.horizontal(), const ChoiceButton( color: Color(0xFF2B2E4A), icon: Icons.watch_later, diff --git a/example/lib/main.dart b/example/lib/main.dart index 4376341..809d160 100644 --- a/example/lib/main.dart +++ b/example/lib/main.dart @@ -24,241 +24,49 @@ class MyHomeBody extends StatelessWidget { @override Widget build(BuildContext context) { - return SingleChildScrollView( - child: Column( - children: [ - // MyStack( - // children: [ - // Rectangle(child: Text('1')), - // Text('2'), - // ], - // ) - // IconButton( - // hoverColor: Colors.yellow, - // onPressed: () {}, - // iconSize: 80, - // icon: Icon( - // Icons.favorite, - // // size: 80, - // ), - // ), - // const Divider(), - - // Material( - // color: Colors.transparent, - // child: InkWell( - // hoverColor: Colors.yellow, - // onTap: () {}, - // child: Material( - // color: Colors.grey, - // type: MaterialType.circle, - // // shape: BoxShape.circle, - // // decoration: BoxDecoration( - // // ), - // child: SizedBox( - // width: 80, - // height: 80, - // child: Icon(Icons.favorite), - // ), - // ), - // ), - // ), - // const Divider(), - // Material( - // color: Colors.transparent, - // child: InkWell( - // hoverColor: Colors.yellow, - // onTap: () {}, - // child: Oval.circle( - // radius: 40, - // color: Colors.grey, - // childIsInTheForeground: true, - // child: Icon(Icons.favorite), - // ), - // ), - // ), - // const Divider(), - - // Material( - // color: Colors.teal[900], - // child: Center( - // child: Ink( - // color: Colors.yellow, - // width: 200.0, - // height: 100.0, - // child: InkWell( - // hoverColor: Colors.red, - // onTap: () {/* ... */}, - // child: const Center( - // child: Icon( - // Icons.favorite, - // size: 36, - // ), - // )), - // ), - // ), - // ), - Icon(Icons.favorite) - .foreground( - clipBehavior: Clip.antiAlias, - color: ColorWithGradient( - LinearGradient(colors: [Colors.red, Colors.transparent]), - ), - ) - .inkWell( - InkWell( - // hoverColor: Colors.red, - onTap: () {}, - ), - ) - .buildOval(width: 80, height: 80) - // .colorize(), - - // Oval.circle( - // radius: 40, - // color: Colors.grey.withOpacity(.2), - // childIsInTheForeground: false, - // clipBehavior: Clip.antiAlias, - // inkWell: InkWell( - // splashColor: Colors.yellow, - // onTap: () {}, - // ), - // child: Icon(Icons.favorite), - // ), - // Oval.circle( - // radius: 40, - // clipBehavior: Clip.antiAlias, - // // inkWell: InkWell( - // // hoverColor: Colors.yellow, - // // onTap: () {}, - // // ), - // child: Image.network( - // 'https://placebear.com/600/240', - // fit: BoxFit.cover, - // ), - // ) - // .background( - // color: Colors.transparent, - // // clipBehavior: Clip.antiAlias, - // ) - // .inkWell( - // InkWell( - // splashColor: Colors.yellow, - // onTap: () {}, - // ), - // ) - // .buildCircle( - // radius: 40, - // ), - // Container( - // color: Colors.teal[900], - // child: Center( - // child: Ink( - // color: Colors.yellow, - // width: 200.0, - // height: 100.0, - // child: InkWell( - // onTap: () {/* ... */}, - // child: const Center( - // child: Text('YELLOW'), - // )), - // ), - // ), - // ), - // Material( - // color: Colors.grey[800], - // child: Center( - // child: Ink.image( - // image: const NetworkImage('https://placebear.com/600/240'), - // fit: BoxFit.cover, - // width: 300.0, - // height: 200.0, - // child: InkWell( - // onTap: () {/* ... */}, - // child: const Align( - // alignment: Alignment.topLeft, - // child: Padding( - // padding: EdgeInsets.all(10.0), - // child: Text( - // 'KITTEN', - // style: TextStyle( - // fontWeight: FontWeight.w900, - // color: Colors.white, - // ), - // ), - // ), - // ), - // ), - // ), - // ), - // ), - ///////////////////////////// - // Rectangle( - // child: const Text('This is A Rectangle').padding.all(), - // ), - // const SizedBox(height: 8), - // const Text('This is A Rounded Rectangle') - // .padding - // .all() - // .background() - // .buildRRect(), - // const SizedBox(height: 8), - // RRectangle.capsule( - // width: double.infinity, - // child: const Text('This is A Capsule').padding.all(), - // ), - // const SizedBox(height: 8), - // const Text('This is An Oval') - // .padding - // .all() - // .background() - // .buildOval(width: double.infinity), - // const SizedBox(height: 8), - // Rectangle.square( - // color: Colors.amber, - // side: 150, - // child: const Text('This is A Square').padding.all(), - // ), - // const SizedBox(height: 8), - // const Text('This is A Circle') - // .background(color: Colors.amber) - // .buildCircle(radius: 75, swipeAngle: 5), - // const SizedBox(height: 8), - // const Text('This is A Circle') - // .background( - // color: Colors.amber, - // paintStyle: PaintStyle( - // style: PaintingStyle.stroke, - // strokeWidth: 4, - // ), - // ) - // .buildCircle( - // radius: 75, - // swipeAngle: 5, - // shouldClosePathToCenter: true, - // ), - // const SizedBox(height: 8), - // const Text('This is A Circle') - // .background( - // color: ColorWithGradient( - // const RadialGradient(colors: [Colors.white, Colors.amber]), - // ), - // ) - // .buildCircle(radius: 75), - // const SizedBox(height: 8), - // Oval.circle( - // radius: 75, - // boxShadow: const [BoxShadow(offset: Offset(4, 4), blurRadius: 6)], - // child: const Text('This is A Rectangle'), - // ), - // const SizedBox(height: 8), - // Oval.circle( - // radius: 75, - // boxShadow: BoxShadowWithElevation(7, color: Colors.amber), - // child: const Text('This is A Rectangle'), - // ), - ], - ).padding.all(), + return SizedBox( + width: double.infinity, + child: FittedBox( + child: Stack( + children: [ + Column( + children: [ + const Icon( + Icons.add, + size: 162, + ).paddingInsets.all(16), + const Icon( + Icons.add, + size: 262, + ).paddingInsets.all(16), + ], + ), + Row( + children: [ + const Icon( + Icons.edit, + size: 162, + ).paddingInsets.all(16), + const Icon( + Icons.edit, + size: 262, + ).paddingInsets.all(16) + ], + ) + ], + ) + .foreground( + color: Colors.amber.withOpacity(.5), + // shouldExpand: true, + clipBehavior: Clip.antiAlias, + // alignment: Alignment.topCenter, + // fit: BoxFit.fitHeight, + ) + .buildRRect( + // height: 300, + width: 160, + ), + ), ); } } diff --git a/lib/src/base_render_shape.dart b/lib/src/base_render_shape.dart index 6dc8ad5..c9942bd 100644 --- a/lib/src/base_render_shape.dart +++ b/lib/src/base_render_shape.dart @@ -1,23 +1,17 @@ // ignore_for_file: public_member_api_docs, sort_constructors_first import 'dart:math'; -import 'dart:ui'; import 'package:flutter/foundation.dart'; -import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; import 'package:flutter/rendering.dart'; import 'package:shape_builder/shape_builder.dart'; -import 'package:shape_builder/src/paint_style.dart'; - -import 'gradient_color.dart'; -import 'stack_render_shape.dart'; part 'base_single_child_render_shape.dart'; +part 'colorize.dart'; part 'oval.dart'; part 'rectangle.dart'; part 'rounded_rectangle.dart'; part 'shape_builder.dart'; -part 'colorize.dart'; abstract class _BaseRenderShape extends RenderAligningShiftedBox { _BaseRenderShape({ diff --git a/lib/src/base_single_child_render_shape.dart b/lib/src/base_single_child_render_shape.dart index e421d75..e2c9c68 100644 --- a/lib/src/base_single_child_render_shape.dart +++ b/lib/src/base_single_child_render_shape.dart @@ -116,7 +116,7 @@ class _BaseSingleChildRenderObjectShape extends SingleChildRenderObjectWidget { final Size? imageSize; final PaintStyle? paintStyle; final bool isConstraintTransparent; - final InkWell? inkWell; + final BoxFit fit; _BaseSingleChildRenderObjectShape({ required this.color, required this.width, @@ -132,7 +132,7 @@ class _BaseSingleChildRenderObjectShape extends SingleChildRenderObjectWidget { required Widget? child, required this.isConstraintTransparent, required super.key, - this.inkWell, + required this.fit, }) : imageSize = child is Image && clipBehavior != Clip.none ? Size((child).width ?? -1, child.height ?? -1) : null, @@ -142,12 +142,23 @@ class _BaseSingleChildRenderObjectShape extends SingleChildRenderObjectWidget { : child is Image ? _wrapWithImage(child, alignment) : child != null - ? Align( - widthFactor: 1, - heightFactor: 1, - alignment: alignment, - child: child, - ) + ? fit != BoxFit.none + ? SizedBox( + width: width, + height: height, + child: FittedBox( + fit: fit, + alignment: alignment, + clipBehavior: clipBehavior, + child: child, + ), + ) + : Align( + widthFactor: 1, + heightFactor: 1, + alignment: alignment, + child: child, + ) : const SizedBox.shrink(), ); diff --git a/lib/src/oval.dart b/lib/src/oval.dart index 1106c8c..7d760e0 100644 --- a/lib/src/oval.dart +++ b/lib/src/oval.dart @@ -54,7 +54,7 @@ class Oval extends _BaseSingleChildRenderObjectShape { required super.paintStyle, required this.shouldClosePath, super.isConstraintTransparent = false, - super.inkWell, + required super.fit, super.key, }); @@ -75,6 +75,7 @@ class Oval extends _BaseSingleChildRenderObjectShape { bool childIsInTheForeground = true, PaintStyle? paintStyle, InkWell? inkWell, + BoxFit fit = BoxFit.none, Key? key, }) { final expandImage = shouldExpandImage(child, width, height); @@ -95,7 +96,7 @@ class Oval extends _BaseSingleChildRenderObjectShape { shrinkToClippedSize: shrinkToClippedSize, childIsInTheForeground: childIsInTheForeground, alignment: alignment, paintStyle: paintStyle, - // inkWell: inkWell, + fit: fit, child: child, ); @@ -107,6 +108,7 @@ class Oval extends _BaseSingleChildRenderObjectShape { paintStyle: null, shouldClosePath: false, color: Colors.transparent, + fit: BoxFit.none, child: SizedBox( width: shouldExpand ? (child as Image).width : null, child: FittedBox( @@ -125,6 +127,7 @@ class Oval extends _BaseSingleChildRenderObjectShape { paintStyle: null, shouldClosePath: false, color: Colors.transparent, + fit: BoxFit.none, child: MyStack( children: [ c, @@ -139,6 +142,8 @@ class Oval extends _BaseSingleChildRenderObjectShape { clipBehavior: Clip.antiAlias, shouldClosePath: shouldClosePathToCenter, paintStyle: paintStyle, + fit: BoxFit.none, + alignment: alignment, child: _wrapWithInkWell(inkWell), ) ], @@ -163,14 +168,17 @@ class Oval extends _BaseSingleChildRenderObjectShape { bool childIsInTheForeground = true, PaintStyle? paintStyle, InkWell? inkWell, + BoxFit fit = BoxFit.none, Key? key, }) { + radius = radius != null ? radius * 2 : null; final expandImage = shouldExpandImage(child, radius, radius); + final widget = Oval._( key: key, color: color, - width: radius != null ? radius * 2 : null, - height: radius != null ? radius * 2 : null, + width: radius, + height: radius, squareSide: radius ?? -1, shouldExpand: expandImage ? false : shouldExpand, startAngle: startAngle, @@ -182,7 +190,7 @@ class Oval extends _BaseSingleChildRenderObjectShape { childIsInTheForeground: childIsInTheForeground, alignment: alignment, paintStyle: paintStyle, - // inkWell: inkWell, + fit: fit, child: child, ); @@ -210,6 +218,8 @@ class Oval extends _BaseSingleChildRenderObjectShape { clipBehavior: Clip.antiAlias, shouldClosePath: shouldClosePathToCenter, paintStyle: paintStyle, + fit: BoxFit.none, + alignment: alignment, child: _wrapWithInkWell(inkWell), ) ], diff --git a/lib/src/rectangle.dart b/lib/src/rectangle.dart index 79d5694..dc5a451 100644 --- a/lib/src/rectangle.dart +++ b/lib/src/rectangle.dart @@ -16,7 +16,7 @@ class Rectangle extends _BaseSingleChildRenderObjectShape { super.alignment = Alignment.center, required super.paintStyle, super.isConstraintTransparent = false, - super.inkWell, + required super.fit, super.key, }); @@ -39,6 +39,7 @@ class Rectangle extends _BaseSingleChildRenderObjectShape { Clip clipBehavior = Clip.none, bool shrinkToClippedSize = true, InkWell? inkWell, + BoxFit fit = BoxFit.none, Key? key, }) { final expandImage = shouldExpandImage(child, side, side); @@ -56,7 +57,7 @@ class Rectangle extends _BaseSingleChildRenderObjectShape { childIsInTheForeground: childIsInTheForeground, alignment: alignment, paintStyle: paintStyle, - // inkWell: inkWell, + fit: fit, child: child, ); @@ -81,6 +82,8 @@ class Rectangle extends _BaseSingleChildRenderObjectShape { shouldExpand: false, clipBehavior: Clip.antiAlias, paintStyle: paintStyle, + fit: BoxFit.none, + alignment: alignment, child: _wrapWithInkWell(inkWell), ) ], @@ -173,6 +176,7 @@ class Rectangle extends _BaseSingleChildRenderObjectShape { Clip clipBehavior = Clip.none, bool shrinkToClippedSize = true, InkWell? inkWell, + BoxFit fit = BoxFit.none, Key? key, }) { final expandImage = shouldExpandImage(child, width, height); @@ -189,7 +193,7 @@ class Rectangle extends _BaseSingleChildRenderObjectShape { childIsInTheForeground: childIsInTheForeground, alignment: alignment, paintStyle: paintStyle, - // inkWell: inkWell, + fit: fit, child: child, ); @@ -200,6 +204,7 @@ class Rectangle extends _BaseSingleChildRenderObjectShape { shrinkToClippedSize: false, paintStyle: null, color: Colors.transparent, + fit: BoxFit.none, child: SizedBox( width: shouldExpand ? (child as Image).width : null, child: FittedBox( @@ -216,6 +221,7 @@ class Rectangle extends _BaseSingleChildRenderObjectShape { shrinkToClippedSize: false, paintStyle: null, color: Colors.transparent, + fit: BoxFit.none, child: MyStack( children: [ c, @@ -226,6 +232,8 @@ class Rectangle extends _BaseSingleChildRenderObjectShape { height: height, shouldExpand: false, paintStyle: paintStyle, + fit: BoxFit.none, + alignment: alignment, child: _wrapWithInkWell(inkWell), ) ], diff --git a/lib/src/rounded_rectangle.dart b/lib/src/rounded_rectangle.dart index 5acb1da..fc34b86 100644 --- a/lib/src/rounded_rectangle.dart +++ b/lib/src/rounded_rectangle.dart @@ -19,7 +19,7 @@ class RRectangle extends _BaseSingleChildRenderObjectShape { super.alignment = Alignment.center, required super.paintStyle, super.isConstraintTransparent = false, - super.inkWell, + required super.fit, super.key, }); @@ -38,6 +38,7 @@ class RRectangle extends _BaseSingleChildRenderObjectShape { bool childIsInTheForeground = true, PaintStyle? paintStyle, InkWell? inkWell, + BoxFit fit = BoxFit.none, Key? key, }) { final expandImage = shouldExpandImage(child, side, side); @@ -58,7 +59,7 @@ class RRectangle extends _BaseSingleChildRenderObjectShape { childIsInTheForeground: childIsInTheForeground, alignment: alignment, paintStyle: paintStyle, - // inkWell: inkWell, + fit: fit, child: child, ); @@ -88,6 +89,8 @@ class RRectangle extends _BaseSingleChildRenderObjectShape { clipBehavior: Clip.antiAlias, shrinkToClippedSize: shrinkToClippedSize, paintStyle: paintStyle, + fit: BoxFit.none, + alignment: alignment, child: _wrapWithInkWell(inkWell), ) ], @@ -109,6 +112,7 @@ class RRectangle extends _BaseSingleChildRenderObjectShape { bool childIsInTheForeground = true, PaintStyle? paintStyle, InkWell? inkWell, + BoxFit fit = BoxFit.none, Key? key, }) { final expandImage = shouldExpandImage(child, width, height); @@ -126,7 +130,7 @@ class RRectangle extends _BaseSingleChildRenderObjectShape { childIsInTheForeground: childIsInTheForeground, alignment: alignment, paintStyle: paintStyle, - // inkWell: inkWell, + fit: fit, child: child, ); @@ -153,6 +157,8 @@ class RRectangle extends _BaseSingleChildRenderObjectShape { clipBehavior: Clip.antiAlias, shrinkToClippedSize: shrinkToClippedSize, paintStyle: paintStyle, + fit: BoxFit.none, + alignment: alignment, child: _wrapWithInkWell(inkWell), ) ], @@ -177,6 +183,7 @@ class RRectangle extends _BaseSingleChildRenderObjectShape { bool childIsInTheForeground = true, PaintStyle? paintStyle, InkWell? inkWell, + BoxFit fit = BoxFit.none, Key? key, }) { final expandImage = shouldExpandImage(child, width, height); @@ -196,7 +203,7 @@ class RRectangle extends _BaseSingleChildRenderObjectShape { childIsInTheForeground: childIsInTheForeground, alignment: alignment, paintStyle: paintStyle, - // inkWell: inkWell, + fit: fit, child: child, ); final c = expandImage @@ -206,9 +213,12 @@ class RRectangle extends _BaseSingleChildRenderObjectShape { shrinkToClippedSize: false, paintStyle: null, color: Colors.transparent, + fit: BoxFit.none, child: SizedBox( - width: shouldExpand ? (child as Image).width : null, + width: + shouldExpand && expandImage ? (child as Image).width : null, child: FittedBox( + // fit: fit, child: widget, ), ), @@ -222,23 +232,28 @@ class RRectangle extends _BaseSingleChildRenderObjectShape { shrinkToClippedSize: false, paintStyle: null, color: Colors.transparent, + fit: BoxFit.none, child: MyStack( children: [ c, - RRectangle._( - key: key, - color: Colors.transparent, - width: width, - height: height, - radius: borderRadius, - outerVRadius: outerVBorderRadius, - outerHRadius: outerHBorderRadius, - shouldExpand: false, - clipBehavior: Clip.antiAlias, - shrinkToClippedSize: shrinkToClippedSize, - paintStyle: paintStyle, - child: _wrapWithInkWell(inkWell), - ) + Align( + alignment: alignment, + child: RRectangle._( + key: key, + color: Colors.transparent, + width: width, + height: height, + radius: borderRadius, + outerVRadius: outerVBorderRadius, + outerHRadius: outerHBorderRadius, + shouldExpand: false, + clipBehavior: Clip.antiAlias, + shrinkToClippedSize: shrinkToClippedSize, + paintStyle: paintStyle, + fit: BoxFit.none, + child: _wrapWithInkWell(inkWell), + ), + ), ], ), ); diff --git a/lib/src/shape_builder.dart b/lib/src/shape_builder.dart index 08ce257..6ee735d 100644 --- a/lib/src/shape_builder.dart +++ b/lib/src/shape_builder.dart @@ -1,16 +1,18 @@ part of 'base_render_shape.dart'; class _ShapeBuilderWithInkWell extends ShapeBuilder { - _ShapeBuilderWithInkWell( - {required super.color, - required super.alignment, - required super.child, - required super.shadow, - required super.clipBehavior, - required super.shrinkToClippedSize, - required super.childIsInTheForeground, - required super.shouldExpand, - required super.paintStyle}); + _ShapeBuilderWithInkWell({ + required super.color, + required super.alignment, + required super.child, + required super.shadow, + required super.clipBehavior, + required super.shrinkToClippedSize, + required super.childIsInTheForeground, + required super.shouldExpand, + required super.paintStyle, + required super.fit, + }); ShapeBuilder inkWell(InkWell inkWell) { _inkWell = inkWell; @@ -20,6 +22,7 @@ class _ShapeBuilderWithInkWell extends ShapeBuilder { class ShapeBuilder { final Color? color; + final BoxFit fit; final AlignmentGeometry alignment; final Widget child; final List shadow; @@ -38,12 +41,16 @@ class ShapeBuilder { required this.childIsInTheForeground, required this.shouldExpand, required this.paintStyle, + required this.fit, }); InkWell? _inkWell; /// Build a Widget Widget build(Widget widget) { + if (fit != BoxFit.none) { + // TODO + } var firstChild = childIsInTheForeground ? widget : child; var secondChild = !childIsInTheForeground ? widget : child; if (_inkWell != null) { @@ -89,6 +96,7 @@ class ShapeBuilder { alignment: alignment, paintStyle: paintStyle, inkWell: _inkWell, + fit: fit, child: child, ); } @@ -105,6 +113,7 @@ class ShapeBuilder { childIsInTheForeground: childIsInTheForeground, paintStyle: paintStyle, inkWell: _inkWell, + fit: fit, child: child, ); } @@ -130,6 +139,7 @@ class ShapeBuilder { childIsInTheForeground: childIsInTheForeground, paintStyle: paintStyle, inkWell: _inkWell, + fit: fit, child: child, ); } @@ -154,6 +164,7 @@ class ShapeBuilder { childIsInTheForeground: childIsInTheForeground, paintStyle: paintStyle, inkWell: _inkWell, + fit: fit, child: child, ); } @@ -171,6 +182,7 @@ class ShapeBuilder { childIsInTheForeground: childIsInTheForeground, paintStyle: paintStyle, inkWell: _inkWell, + fit: fit, child: child, ); } @@ -197,6 +209,7 @@ class ShapeBuilder { childIsInTheForeground: childIsInTheForeground, paintStyle: paintStyle, inkWell: _inkWell, + fit: fit, child: child, ); } @@ -221,6 +234,7 @@ class ShapeBuilder { childIsInTheForeground: childIsInTheForeground, paintStyle: paintStyle, inkWell: _inkWell, + fit: fit, child: child, ); } @@ -239,6 +253,7 @@ extension ShapeBuilderX on Widget { bool shrinkToClippedSize = true, bool shouldExpand = false, PaintStyle? paintStyle, + BoxFit fit = BoxFit.none, }) { return _ShapeBuilderWithInkWell( shadow: boxShadow, @@ -250,6 +265,7 @@ extension ShapeBuilderX on Widget { shouldExpand: shouldExpand, paintStyle: paintStyle, childIsInTheForeground: true, + fit: fit, ); } @@ -267,6 +283,7 @@ extension ShapeBuilderX on Widget { bool shrinkToClippedSize = true, bool shouldExpand = false, PaintStyle? paintStyle, + BoxFit fit = BoxFit.none, }) { return _ShapeBuilderWithInkWell( shadow: boxShadow, @@ -278,6 +295,7 @@ extension ShapeBuilderX on Widget { shouldExpand: shouldExpand, childIsInTheForeground: false, paintStyle: paintStyle, + fit: fit, ); } @@ -291,7 +309,7 @@ extension ShapeBuilderX on Widget { child: this, ); - _Padding get padding => _Padding(child: this); + _Padding get paddingInsets => _Padding(child: this); _PaddingDirectional get paddingDirectional => _PaddingDirectional(child: this); } diff --git a/lib/src/stack_render_shape.dart b/lib/src/stack_render_shape.dart index 766b772..0551f58 100644 --- a/lib/src/stack_render_shape.dart +++ b/lib/src/stack_render_shape.dart @@ -27,7 +27,7 @@ class _RenderStack extends RenderBox } _alignment = value; _resolvedAlignment = null; - markNeedsPaint(); + markNeedsLayout(); } @override From 375503171bd3fde000fdd7a732d00cbf8e91f085 Mon Sep 17 00:00:00 2001 From: MELLATI Fatah Date: Sat, 27 May 2023 10:23:37 +0100 Subject: [PATCH 4/4] update version number --- CHANGELOG.md | 3 ++ example/pubspec.lock | 100 +++++++++++++++++++++++++++--------------- pubspec.yaml | 4 +- test/circle_test.dart | 8 ++-- test/oval_test.dart | 8 ++-- 5 files changed, 77 insertions(+), 46 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4fd2cf3..9a46fa7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,6 @@ +## 0.0.2 +* add inkWell to shapes + ## 0.0.1 * Initial release diff --git a/example/pubspec.lock b/example/pubspec.lock index 1ad2468..5972960 100644 --- a/example/pubspec.lock +++ b/example/pubspec.lock @@ -5,49 +5,56 @@ packages: dependency: transitive description: name: async - url: "https://pub.dartlang.org" + sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" + url: "https://pub.dev" source: hosted - version: "2.9.0" + version: "2.11.0" boolean_selector: dependency: transitive description: name: boolean_selector - url: "https://pub.dartlang.org" + sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" + url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.1" characters: dependency: transitive description: name: characters - url: "https://pub.dartlang.org" + sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" + url: "https://pub.dev" source: hosted - version: "1.2.1" + version: "1.3.0" clock: dependency: transitive description: name: clock - url: "https://pub.dartlang.org" + sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf + url: "https://pub.dev" source: hosted version: "1.1.1" collection: dependency: transitive description: name: collection - url: "https://pub.dartlang.org" + sha256: "4a07be6cb69c84d677a6c3096fcf960cc3285a8330b4603e0d463d15d9bd934c" + url: "https://pub.dev" source: hosted - version: "1.16.0" + version: "1.17.1" cupertino_icons: dependency: "direct main" description: name: cupertino_icons - url: "https://pub.dartlang.org" + sha256: e35129dc44c9118cee2a5603506d823bab99c68393879edb440e0090d07586be + url: "https://pub.dev" source: hosted version: "1.0.5" fake_async: dependency: transitive description: name: fake_async - url: "https://pub.dartlang.org" + sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78" + url: "https://pub.dev" source: hosted version: "1.3.1" flutter: @@ -59,7 +66,8 @@ packages: dependency: "direct dev" description: name: flutter_lints - url: "https://pub.dartlang.org" + sha256: aeb0b80a8b3709709c9cc496cdc027c5b3216796bc0af0ce1007eaf24464fd4c + url: "https://pub.dev" source: hosted version: "2.0.1" flutter_test: @@ -67,48 +75,61 @@ packages: description: flutter source: sdk version: "0.0.0" + js: + dependency: transitive + description: + name: js + sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3 + url: "https://pub.dev" + source: hosted + version: "0.6.7" lints: dependency: transitive description: name: lints - url: "https://pub.dartlang.org" + sha256: "5e4a9cd06d447758280a8ac2405101e0e2094d2a1dbdd3756aec3fe7775ba593" + url: "https://pub.dev" source: hosted version: "2.0.1" matcher: dependency: transitive description: name: matcher - url: "https://pub.dartlang.org" + sha256: "6501fbd55da300384b768785b83e5ce66991266cec21af89ab9ae7f5ce1c4cbb" + url: "https://pub.dev" source: hosted - version: "0.12.12" + version: "0.12.15" material_color_utilities: dependency: transitive description: name: material_color_utilities - url: "https://pub.dartlang.org" + sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724 + url: "https://pub.dev" source: hosted - version: "0.1.5" + version: "0.2.0" meta: dependency: transitive description: name: meta - url: "https://pub.dartlang.org" + sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3" + url: "https://pub.dev" source: hosted - version: "1.8.0" + version: "1.9.1" path: dependency: transitive description: name: path - url: "https://pub.dartlang.org" + sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917" + url: "https://pub.dev" source: hosted - version: "1.8.2" + version: "1.8.3" shape_builder: dependency: "direct main" description: path: ".." relative: true source: path - version: "0.0.1" + version: "0.0.2" sky_engine: dependency: transitive description: flutter @@ -118,51 +139,58 @@ packages: dependency: transitive description: name: source_span - url: "https://pub.dartlang.org" + sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250 + url: "https://pub.dev" source: hosted - version: "1.9.0" + version: "1.9.1" stack_trace: dependency: transitive description: name: stack_trace - url: "https://pub.dartlang.org" + sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5 + url: "https://pub.dev" source: hosted - version: "1.10.0" + version: "1.11.0" stream_channel: dependency: transitive description: name: stream_channel - url: "https://pub.dartlang.org" + sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8" + url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.1" string_scanner: dependency: transitive description: name: string_scanner - url: "https://pub.dartlang.org" + sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde" + url: "https://pub.dev" source: hosted - version: "1.1.1" + version: "1.2.0" term_glyph: dependency: transitive description: name: term_glyph - url: "https://pub.dartlang.org" + sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 + url: "https://pub.dev" source: hosted version: "1.2.1" test_api: dependency: transitive description: name: test_api - url: "https://pub.dartlang.org" + sha256: eb6ac1540b26de412b3403a163d919ba86f6a973fe6cc50ae3541b80092fdcfb + url: "https://pub.dev" source: hosted - version: "0.4.12" + version: "0.5.1" vector_math: dependency: transitive description: name: vector_math - url: "https://pub.dartlang.org" + sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" + url: "https://pub.dev" source: hosted - version: "2.1.2" + version: "2.1.4" sdks: - dart: ">=2.18.2 <3.0.0" + dart: ">=3.0.0-0 <4.0.0" flutter: ">=1.17.0" diff --git a/pubspec.yaml b/pubspec.yaml index fe5646f..817fc8c 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,10 +1,10 @@ name: shape_builder description: Create the shape you want, decorate it the way you want and put it where you wantn -version: 0.0.1 +version: 0.0.2 homepage: https://github.com/GIfatahTH/shape_builder environment: - sdk: '>=2.18.2 <3.0.0' + sdk: '>=2.18.2 <4.0.0' flutter: ">=1.17.0" dependencies: diff --git a/test/circle_test.dart b/test/circle_test.dart index 36ae3ec..b3ac38f 100644 --- a/test/circle_test.dart +++ b/test/circle_test.dart @@ -1599,10 +1599,10 @@ void main() { testGoldens( '30- inkWell', (tester) async { - final file = File( - path.join(Directory.current.path, 'test', 'flutter_logo_image.png'), - ); - final data = file.readAsBytesSync(); + // final file = File( + // path.join(Directory.current.path, 'test', 'flutter_logo_image.png'), + // ); + // final data = file.readAsBytesSync(); dynamic message; await tester.pumpWidgetBuilder( Center( diff --git a/test/oval_test.dart b/test/oval_test.dart index d9713be..eccaa04 100644 --- a/test/oval_test.dart +++ b/test/oval_test.dart @@ -1326,10 +1326,10 @@ void main() { testGoldens( '25- test start and swipe angles', (tester) async { - final file = File( - path.join(Directory.current.path, 'test', 'flutter_logo_image.png'), - ); - final data = file.readAsBytesSync(); + // final file = File( + // path.join(Directory.current.path, 'test', 'flutter_logo_image.png'), + // ); + // final data = file.readAsBytesSync(); await tester.pumpWidgetBuilder( Center( child: Column(