Last active
February 7, 2022 12:47
-
-
Save sbis04/31d779fe12a47e1d6dbba44604115080 to your computer and use it in GitHub Desktop.
Dash painter
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Created by: Souvik Biswas | |
import 'package:flutter/material.dart'; | |
void main() { | |
runApp(const MyApp()); | |
} | |
class MyApp extends StatelessWidget { | |
const MyApp({Key? key}) : super(key: key); | |
@override | |
Widget build(BuildContext context) { | |
return MaterialApp( | |
title: 'Vikings Dash', | |
theme: ThemeData( | |
primarySwatch: Colors.blue, | |
), | |
home: const HomePage(), | |
); | |
} | |
} | |
class HomePage extends StatefulWidget { | |
const HomePage({Key? key}) : super(key: key); | |
@override | |
State<HomePage> createState() => _HomePageState(); | |
} | |
class _HomePageState extends State<HomePage> | |
with SingleTickerProviderStateMixin { | |
late Animation<double> animationRightWing; | |
late Animation<double> animationLeftWing; | |
late AnimationController controller; | |
@override | |
void initState() { | |
super.initState(); | |
controller = AnimationController( | |
duration: const Duration(seconds: 2), | |
vsync: this, | |
); | |
animationRightWing = Tween<double>( | |
begin: 0, | |
end: -20, | |
).animate(controller) | |
..addListener( | |
() => setState(() {}), | |
) | |
..addStatusListener((status) { | |
if (status == AnimationStatus.completed) { | |
controller.reverse(); | |
} else if (status == AnimationStatus.dismissed) { | |
controller.forward(); | |
} | |
}); | |
animationLeftWing = Tween<double>( | |
begin: -2, | |
end: 2, | |
).animate(controller) | |
..addListener( | |
() => setState(() {}), | |
) | |
..addStatusListener((status) { | |
if (status == AnimationStatus.completed) { | |
controller.reverse(); | |
} else if (status == AnimationStatus.dismissed) { | |
controller.forward(); | |
} | |
}); | |
controller.forward(); | |
} | |
@override | |
void dispose() { | |
controller.dispose(); | |
super.dispose(); | |
} | |
@override | |
Widget build(BuildContext context) { | |
var screenWidth = MediaQuery.of(context).size.width; | |
var screenHeight = MediaQuery.of(context).size.height; | |
var boxSize = screenWidth > screenHeight ? screenHeight : screenWidth; | |
return Scaffold( | |
body: Stack( | |
children: [ | |
Positioned( | |
top: boxSize * 0.33, | |
left: boxSize * 0.1, | |
child: RotationTransition( | |
turns: AlwaysStoppedAnimation(animationRightWing.value / 360), | |
child: CustomPaint( | |
painter: WingLeftPainter(), | |
child: SizedBox( | |
width: boxSize * 0.4, | |
height: boxSize * 0.4, | |
), | |
), | |
), | |
), | |
Positioned( | |
top: boxSize * 0.29 + (animationRightWing.value).abs() * 2, | |
left: 0, | |
child: RotationTransition( | |
turns: AlwaysStoppedAnimation(animationRightWing.value / 360), | |
child: CustomPaint( | |
painter: HornFirstPainter(), | |
child: SizedBox( | |
width: boxSize * 0.26, | |
height: boxSize * 0.26, | |
), | |
), | |
), | |
), | |
Positioned( | |
top: boxSize * 0.33, | |
left: boxSize * 0.1, | |
child: CustomPaint( | |
painter: DashPainter(), | |
child: SizedBox( | |
width: boxSize * 0.4, | |
height: boxSize * 0.4, | |
), | |
), | |
), | |
Positioned( | |
top: boxSize * 0.33, | |
left: boxSize * 0.1, | |
child: RotationTransition( | |
turns: AlwaysStoppedAnimation(animationLeftWing.value / 360), | |
child: CustomPaint( | |
painter: WingRightPainter(), | |
child: SizedBox( | |
width: boxSize * 0.4, | |
height: boxSize * 0.4, | |
), | |
), | |
), | |
), | |
Positioned( | |
top: boxSize * 0.5, | |
left: boxSize * 0.44, | |
child: CustomPaint( | |
painter: EyeLeftPainter(), | |
child: SizedBox( | |
width: boxSize * 0.4, | |
height: boxSize * 0.4, | |
), | |
), | |
), | |
Positioned( | |
top: boxSize * 0.5, | |
left: boxSize * 0.60, | |
child: CustomPaint( | |
painter: EyeRightPainter(), | |
child: SizedBox( | |
width: boxSize * 0.4, | |
height: boxSize * 0.4, | |
), | |
), | |
), | |
Positioned( | |
top: boxSize * 0.335, | |
left: boxSize * 0.11, | |
child: CustomPaint( | |
painter: EyeBallPainter(), | |
child: SizedBox( | |
width: boxSize * 0.4, | |
height: boxSize * 0.4, | |
), | |
), | |
), | |
Positioned( | |
top: boxSize * 0.17, | |
left: boxSize * 0.355, | |
child: RotationTransition( | |
turns: const AlwaysStoppedAnimation(50 / 360), | |
child: CustomPaint( | |
painter: HelmetFirstPainter(), | |
child: SizedBox( | |
width: boxSize * 0.4, | |
height: boxSize * 0.4, | |
), | |
), | |
), | |
), | |
], | |
), | |
); | |
} | |
} | |
class DashPainter extends CustomPainter { | |
@override | |
void paint(Canvas canvas, Size size) { | |
Paint paint = Paint(); | |
Path path = Path(); | |
// Path number 1 | |
// LEG LEFT | |
paint.color = const Color(0xff6A4A35); | |
path = Path(); | |
path.lineTo(size.width * 0.9, size.height * 1.07); | |
path.cubicTo(size.width * 0.9, size.height * 1.07, size.width * 0.9, | |
size.height * 1.17, size.width * 0.9, size.height * 1.17); | |
path.cubicTo(size.width * 0.9, size.height * 1.17, size.width * 0.82, | |
size.height * 1.16, size.width * 0.81, size.height * 1.2); | |
path.cubicTo(size.width * 0.79, size.height * 1.24, size.width * 0.87, | |
size.height * 1.2, size.width * 0.87, size.height * 1.2); | |
path.cubicTo(size.width * 0.87, size.height * 1.2, size.width * 0.84, | |
size.height * 1.26, size.width * 0.86, size.height * 1.27); | |
path.cubicTo(size.width * 0.88, size.height * 1.29, size.width * 0.9, | |
size.height * 1.23, size.width * 0.91, size.height * 1.21); | |
path.cubicTo(size.width * 0.93, size.height * 1.18, size.width * 0.94, | |
size.height * 1.24, size.width * 0.94, size.height * 1.24); | |
path.cubicTo(size.width * 0.94, size.height * 1.24, size.width * 0.95, | |
size.height * 1.26, size.width * 0.97, size.height * 1.25); | |
path.cubicTo(size.width, size.height * 1.24, size.width * 0.97, | |
size.height * 1.22, size.width * 0.97, size.height * 1.22); | |
path.cubicTo(size.width * 0.97, size.height * 1.22, size.width * 0.93, | |
size.height * 1.16, size.width * 0.93, size.height * 1.16); | |
path.cubicTo(size.width * 0.93, size.height * 1.16, size.width * 0.93, | |
size.height * 1.06, size.width * 0.93, size.height * 1.06); | |
path.cubicTo(size.width * 0.93, size.height * 1.06, size.width * 0.9, | |
size.height * 1.05, size.width * 0.9, size.height * 1.05); | |
path.cubicTo(size.width * 0.9, size.height * 1.05, size.width * 0.9, | |
size.height * 1.07, size.width * 0.9, size.height * 1.07); | |
path.cubicTo(size.width * 0.9, size.height * 1.07, size.width * 0.9, | |
size.height * 1.07, size.width * 0.9, size.height * 1.07); | |
path.cubicTo(size.width * 0.9, size.height * 1.07, size.width * 0.9, | |
size.height * 1.07, size.width * 0.9, size.height * 1.07); | |
canvas.drawPath(path, paint); | |
// Path number 2 | |
// LEG RIGHT | |
paint.color = const Color(0xff6A4A35); | |
path = Path(); | |
path.lineTo(size.width * 1.33, size.height * 1.07); | |
path.cubicTo(size.width * 1.33, size.height * 1.07, size.width * 1.33, | |
size.height * 1.17, size.width * 1.33, size.height * 1.17); | |
path.cubicTo(size.width * 1.33, size.height * 1.17, size.width * 1.42, | |
size.height * 1.16, size.width * 1.43, size.height * 1.2); | |
path.cubicTo(size.width * 1.44, size.height * 1.24, size.width * 1.36, | |
size.height * 1.2, size.width * 1.36, size.height * 1.2); | |
path.cubicTo(size.width * 1.36, size.height * 1.2, size.width * 1.39, | |
size.height * 1.26, size.width * 1.37, size.height * 1.27); | |
path.cubicTo(size.width * 1.35, size.height * 1.29, size.width * 1.33, | |
size.height * 1.23, size.width * 1.32, size.height * 1.21); | |
path.cubicTo(size.width * 1.31, size.height * 1.18, size.width * 1.29, | |
size.height * 1.24, size.width * 1.29, size.height * 1.24); | |
path.cubicTo(size.width * 1.29, size.height * 1.24, size.width * 1.28, | |
size.height * 1.26, size.width * 1.26, size.height * 1.25); | |
path.cubicTo(size.width * 1.24, size.height * 1.24, size.width * 1.26, | |
size.height * 1.22, size.width * 1.26, size.height * 1.22); | |
path.cubicTo(size.width * 1.26, size.height * 1.22, size.width * 1.31, | |
size.height * 1.16, size.width * 1.31, size.height * 1.16); | |
path.cubicTo(size.width * 1.31, size.height * 1.16, size.width * 1.31, | |
size.height * 1.06, size.width * 1.31, size.height * 1.06); | |
path.cubicTo(size.width * 1.31, size.height * 1.06, size.width * 1.33, | |
size.height * 1.05, size.width * 1.33, size.height * 1.05); | |
path.cubicTo(size.width * 1.33, size.height * 1.05, size.width * 1.33, | |
size.height * 1.07, size.width * 1.33, size.height * 1.07); | |
path.cubicTo(size.width * 1.33, size.height * 1.07, size.width * 1.33, | |
size.height * 1.07, size.width * 1.33, size.height * 1.07); | |
path.cubicTo(size.width * 1.33, size.height * 1.07, size.width * 1.33, | |
size.height * 1.07, size.width * 1.33, size.height * 1.07); | |
canvas.drawPath(path, paint); | |
// Path number 3 | |
// BODY | |
paint.color = const Color(0xff8ADCF6); | |
path = Path(); | |
path.lineTo(size.width * 0.62, size.height * 0.73); | |
path.cubicTo(size.width * 0.62, size.height * 0.73, size.width * 0.6, | |
size.height * 1.11, size.width * 1.16, size.height * 1.08); | |
path.cubicTo(size.width * 1.71, size.height * 1.06, size.width * 1.62, | |
size.height * 0.73, size.width * 1.62, size.height * 0.73); | |
path.cubicTo(size.width * 1.62, size.height * 0.73, size.width * 1.58, | |
size.height * 0.08, size.width * 1.12, size.height * 0.09); | |
path.cubicTo(size.width * 0.67, size.height * 0.09, size.width * 0.62, | |
size.height * 0.73, size.width * 0.62, size.height * 0.73); | |
path.cubicTo(size.width * 0.62, size.height * 0.73, size.width * 0.62, | |
size.height * 0.73, size.width * 0.62, size.height * 0.73); | |
canvas.drawPath(path, paint); | |
// Path number 7 | |
// Belly | |
paint.color = const Color(0xffE0E2E2); | |
path = Path(); | |
path.lineTo(size.width * 0.75, size.height * 0.73); | |
path.cubicTo(size.width * 0.75, size.height * 0.73, size.width * 0.87, | |
size.height * 0.88, size.width * 1.12, size.height * 0.88); | |
path.cubicTo(size.width * 1.37, size.height * 0.88, size.width * 1.5, | |
size.height * 0.73, size.width * 1.5, size.height * 0.73); | |
path.cubicTo(size.width * 1.5, size.height * 0.73, size.width * 1.56, | |
size.height * 0.84, size.width * 1.5, size.height); | |
path.cubicTo(size.width * 1.5, size.height, size.width * 1.39, | |
size.height * 1.08, size.width * 1.12, size.height * 1.09); | |
path.cubicTo(size.width * 0.82, size.height * 1.09, size.width * 0.75, | |
size.height * 0.98, size.width * 0.75, size.height * 0.98); | |
path.cubicTo(size.width * 0.75, size.height * 0.98, size.width * 0.68, | |
size.height * 0.86, size.width * 0.75, size.height * 0.73); | |
path.cubicTo(size.width * 0.75, size.height * 0.73, size.width * 0.75, | |
size.height * 0.73, size.width * 0.75, size.height * 0.73); | |
canvas.drawPath(path, paint); | |
// Path number 8 | |
// EYE RIGHT - blue | |
paint.color = const Color(0xff40B7ED); | |
path = Path(); | |
path.lineTo(size.width * 1.43, size.height * 0.34); | |
path.cubicTo(size.width * 1.43, size.height * 0.34, size.width * 1.52, | |
size.height * 0.4, size.width * 1.52, size.height * 0.48); | |
path.cubicTo(size.width * 1.52, size.height * 0.55, size.width * 1.47, | |
size.height * 0.66, size.width * 1.37, size.height * 0.68); | |
path.cubicTo(size.width * 1.26, size.height * 0.7, size.width * 1.12, | |
size.height * 0.64, size.width * 1.13, size.height * 0.47); | |
path.cubicTo(size.width * 1.13, size.height * 0.47, size.width * 1.13, | |
size.height * 0.46, size.width * 1.17, size.height * 0.38); | |
path.cubicTo(size.width * 1.17, size.height * 0.38, size.width * 1.43, | |
size.height * 0.34, size.width * 1.43, size.height * 0.34); | |
path.cubicTo(size.width * 1.43, size.height * 0.34, size.width * 1.43, | |
size.height * 0.34, size.width * 1.43, size.height * 0.34); | |
canvas.drawPath(path, paint); | |
// Path number 9 | |
// EYE LEFT - blue | |
paint.color = const Color(0xff40B7ED); | |
path = Path(); | |
path.lineTo(size.width * 0.83, size.height * 0.34); | |
path.cubicTo(size.width * 0.83, size.height * 0.34, size.width * 0.74, | |
size.height * 0.4, size.width * 0.74, size.height * 0.48); | |
path.cubicTo(size.width * 0.74, size.height * 0.55, size.width * 0.79, | |
size.height * 0.66, size.width * 0.89, size.height * 0.68); | |
path.cubicTo(size.width, size.height * 0.7, size.width * 1.14, | |
size.height * 0.64, size.width * 1.13, size.height * 0.47); | |
path.cubicTo(size.width * 1.13, size.height * 0.47, size.width * 1.13, | |
size.height * 0.46, size.width * 1.09, size.height * 0.38); | |
path.cubicTo(size.width * 1.09, size.height * 0.38, size.width * 0.83, | |
size.height * 0.34, size.width * 0.83, size.height * 0.34); | |
path.cubicTo(size.width * 0.83, size.height * 0.34, size.width * 0.83, | |
size.height * 0.34, size.width * 0.83, size.height * 0.34); | |
canvas.drawPath(path, paint); | |
// Path number 18 | |
paint.color = const Color(0xff6A4A35); | |
path = Path(); | |
path.lineTo(size.width * 1.13, size.height * 0.52); | |
path.cubicTo(size.width * 1.13, size.height * 0.52, size.width * 1.06, | |
size.height * 0.53, size.width * 1.06, size.height * 0.59); | |
path.cubicTo(size.width * 1.06, size.height * 0.59, size.width * 1.14, | |
size.height * 0.94, size.width * 1.14, size.height * 0.94); | |
path.cubicTo(size.width * 1.14, size.height * 0.94, size.width * 1.2, | |
size.height * 0.57, size.width * 1.2, size.height * 0.57); | |
path.cubicTo(size.width * 1.2, size.height * 0.57, size.width * 1.18, | |
size.height * 0.52, size.width * 1.13, size.height * 0.52); | |
path.cubicTo(size.width * 1.13, size.height * 0.52, size.width * 1.13, | |
size.height * 0.52, size.width * 1.13, size.height * 0.52); | |
canvas.drawPath(path, paint); | |
} | |
@override | |
bool shouldRepaint(CustomPainter oldDelegate) { | |
return true; | |
} | |
} | |
class WingRightPainter extends CustomPainter { | |
@override | |
void paint(Canvas canvas, Size size) { | |
Paint paint = Paint(); | |
Path path = Path(); | |
paint.color = const Color(0xff40B7EC); | |
path = Path(); | |
path.lineTo(size.width * 1.85, size.height * 0.83); | |
path.cubicTo(size.width * 1.85, size.height * 0.83, size.width * 1.64, | |
size.height * 0.58, size.width * 1.56, size.height * 0.54); | |
path.cubicTo(size.width * 1.48, size.height / 2, size.width * 1.53, | |
size.height * 0.87, size.width * 1.58, size.height * 0.91); | |
path.cubicTo(size.width * 1.63, size.height * 0.95, size.width * 1.63, | |
size.height, size.width * 1.75, size.height); | |
path.cubicTo(size.width * 1.75, size.height, size.width * 1.76, | |
size.height * 1.03, size.width * 1.81, size.height * 1.02); | |
path.cubicTo(size.width * 1.86, size.height, size.width * 1.81, | |
size.height * 0.89, size.width * 1.81, size.height * 0.89); | |
path.cubicTo(size.width * 1.81, size.height * 0.89, size.width * 1.9, | |
size.height * 0.92, size.width * 1.85, size.height * 0.83); | |
path.cubicTo(size.width * 1.85, size.height * 0.83, size.width * 1.85, | |
size.height * 0.83, size.width * 1.85, size.height * 0.83); | |
canvas.drawPath(path, paint); | |
} | |
@override | |
bool shouldRepaint(CustomPainter oldDelegate) { | |
return true; | |
} | |
} | |
class EyeBallPainter extends CustomPainter { | |
@override | |
void paint(Canvas canvas, Size size) { | |
Paint paint = Paint(); | |
Path path = Path(); | |
// Path number 12 | |
paint.color = const Color(0xffFFFFFF); | |
path = Path(); | |
path.lineTo(size.width * 0.94, size.height * 0.45); | |
path.cubicTo(size.width * 0.94, size.height * 0.46, size.width * 0.93, | |
size.height * 0.47, size.width * 0.92, size.height * 0.47); | |
path.cubicTo(size.width * 0.91, size.height * 0.47, size.width * 0.9, | |
size.height * 0.46, size.width * 0.9, size.height * 0.45); | |
path.cubicTo(size.width * 0.9, size.height * 0.44, size.width * 0.91, | |
size.height * 0.44, size.width * 0.92, size.height * 0.44); | |
path.cubicTo(size.width * 0.93, size.height * 0.44, size.width * 0.94, | |
size.height * 0.44, size.width * 0.94, size.height * 0.45); | |
canvas.drawPath(path, paint); | |
// Path number 13 | |
paint.color = const Color(0xffFFFFFF); | |
path = Path(); | |
path.lineTo(size.width * 0.96, size.height / 2); | |
path.cubicTo(size.width * 0.96, size.height * 0.51, size.width * 0.95, | |
size.height * 0.53, size.width * 0.94, size.height * 0.53); | |
path.cubicTo(size.width * 0.92, size.height * 0.53, size.width * 0.91, | |
size.height * 0.51, size.width * 0.91, size.height / 2); | |
path.cubicTo(size.width * 0.91, size.height * 0.49, size.width * 0.92, | |
size.height * 0.47, size.width * 0.94, size.height * 0.47); | |
path.cubicTo(size.width * 0.95, size.height * 0.47, size.width * 0.96, | |
size.height * 0.49, size.width * 0.96, size.height / 2); | |
canvas.drawPath(path, paint); | |
paint.color = const Color(0xffFFFFFF); | |
path = Path(); | |
path.lineTo(size.width * 1.32, size.height * 0.45); | |
path.cubicTo(size.width * 1.32, size.height * 0.46, size.width * 1.31, | |
size.height * 0.47, size.width * 1.3, size.height * 0.47); | |
path.cubicTo(size.width * 1.29, size.height * 0.47, size.width * 1.28, | |
size.height * 0.46, size.width * 1.28, size.height * 0.45); | |
path.cubicTo(size.width * 1.28, size.height * 0.44, size.width * 1.29, | |
size.height * 0.44, size.width * 1.3, size.height * 0.44); | |
path.cubicTo(size.width * 1.31, size.height * 0.44, size.width * 1.32, | |
size.height * 0.44, size.width * 1.32, size.height * 0.45); | |
canvas.drawPath(path, paint); | |
// Path number 17 | |
paint.color = const Color(0xffFFFFFF); | |
path = Path(); | |
path.lineTo(size.width * 1.35, size.height / 2); | |
path.cubicTo(size.width * 1.35, size.height * 0.51, size.width * 1.34, | |
size.height * 0.53, size.width * 1.33, size.height * 0.53); | |
path.cubicTo(size.width * 1.31, size.height * 0.53, size.width * 1.3, | |
size.height * 0.51, size.width * 1.3, size.height / 2); | |
path.cubicTo(size.width * 1.3, size.height * 0.49, size.width * 1.31, | |
size.height * 0.47, size.width * 1.33, size.height * 0.47); | |
path.cubicTo(size.width * 1.34, size.height * 0.47, size.width * 1.35, | |
size.height * 0.49, size.width * 1.35, size.height / 2); | |
canvas.drawPath(path, paint); | |
} | |
@override | |
bool shouldRepaint(CustomPainter oldDelegate) { | |
return true; | |
} | |
} | |
class EyeRightPainter extends CustomPainter { | |
@override | |
void paint(Canvas canvas, Size size) { | |
Paint paint = Paint(); | |
Path path = Path(); | |
// Path number 14 | |
paint.color = const Color(0xff000000); | |
path = Path(); | |
path.lineTo(size.width * 0.1, size.height * 0.17); | |
path.cubicTo(size.width * 0.1, size.height * 0.17, size.width * 0.09, | |
size.height * 0.17, size.width * 0.08, size.height * 0.17); | |
path.cubicTo(size.width * 0.01, size.height * 0.16, 0, size.height * 0.11, | |
0, size.height * 0.07); | |
path.cubicTo(size.width * 0.01, size.height * 0.04, size.width * 0.03, | |
size.height * 0.02, size.width * 0.06, size.height * 0.01); | |
path.cubicTo(size.width * 0.06, size.height * 0.01, size.width * 0.07, | |
size.height * 0.01, size.width * 0.07, size.height * 0.01); | |
path.cubicTo( | |
size.width * 0.08, 0, size.width * 0.09, 0, size.width * 0.09, 0); | |
path.cubicTo(size.width * 0.13, 0, size.width * 0.17, size.height * 0.03, | |
size.width * 0.17, size.height * 0.07); | |
path.cubicTo(size.width * 0.18, size.height * 0.1, size.width * 0.17, | |
size.height * 0.13, size.width * 0.15, size.height * 0.15); | |
path.cubicTo(size.width * 0.14, size.height * 0.17, size.width * 0.12, | |
size.height * 0.17, size.width * 0.1, size.height * 0.17); | |
path.cubicTo(size.width * 0.1, size.height * 0.17, size.width * 0.1, | |
size.height * 0.17, size.width * 0.1, size.height * 0.17); | |
path.cubicTo(size.width * 0.1, size.height * 0.17, size.width * 0.1, | |
size.height * 0.17, size.width * 0.1, size.height * 0.17); | |
canvas.drawPath(path, paint); | |
// Path number 15 | |
paint.color = const Color(0xff00FFC2); | |
path = Path(); | |
path.lineTo(size.width * 0.09, size.height * 0.01); | |
path.cubicTo(size.width * 0.13, size.height * 0.01, size.width * 0.16, | |
size.height * 0.03, size.width * 0.17, size.height * 0.07); | |
path.cubicTo(size.width * 0.18, size.height * 0.12, size.width * 0.16, | |
size.height * 0.17, size.width * 0.1, size.height * 0.17); | |
path.cubicTo(size.width * 0.1, size.height * 0.17, size.width * 0.09, | |
size.height * 0.17, size.width * 0.08, size.height * 0.17); | |
path.cubicTo(size.width * 0.01, size.height * 0.16, 0, size.height * 0.11, | |
size.width * 0.01, size.height * 0.07); | |
path.cubicTo(size.width * 0.01, size.height * 0.05, size.width * 0.03, | |
size.height * 0.02, size.width * 0.06, size.height * 0.01); | |
path.cubicTo(size.width * 0.06, size.height * 0.01, size.width * 0.07, | |
size.height * 0.01, size.width * 0.07, size.height * 0.01); | |
path.cubicTo(size.width * 0.08, size.height * 0.01, size.width * 0.09, | |
size.height * 0.01, size.width * 0.09, size.height * 0.01); | |
path.lineTo(size.width * 0.09, 0); | |
path.cubicTo( | |
size.width * 0.09, 0, size.width * 0.08, 0, size.width * 0.07, 0); | |
path.cubicTo(size.width * 0.07, 0, size.width * 0.06, size.height * 0.01, | |
size.width * 0.06, size.height * 0.01); | |
path.cubicTo(size.width * 0.03, size.height * 0.02, size.width * 0.01, | |
size.height * 0.04, 0, size.height * 0.07); | |
path.cubicTo(0, size.height * 0.1, 0, size.height * 0.12, size.width * 0.01, | |
size.height * 0.13); | |
path.cubicTo(size.width * 0.02, size.height * 0.16, size.width * 0.05, | |
size.height * 0.17, size.width * 0.08, size.height * 0.18); | |
path.cubicTo(size.width * 0.09, size.height * 0.18, size.width * 0.1, | |
size.height * 0.18, size.width * 0.1, size.height * 0.18); | |
path.cubicTo(size.width * 0.12, size.height * 0.18, size.width * 0.14, | |
size.height * 0.17, size.width * 0.16, size.height * 0.15); | |
path.cubicTo(size.width * 0.17, size.height * 0.13, size.width * 0.18, | |
size.height * 0.1, size.width * 0.18, size.height * 0.07); | |
path.cubicTo(size.width * 0.17, size.height * 0.03, size.width * 0.14, 0, | |
size.width * 0.09, 0); | |
path.cubicTo( | |
size.width * 0.09, 0, size.width * 0.09, 0, size.width * 0.09, 0); | |
path.cubicTo( | |
size.width * 0.09, 0, size.width * 0.09, 0, size.width * 0.09, 0); | |
canvas.drawPath(path, paint); | |
} | |
@override | |
bool shouldRepaint(CustomPainter oldDelegate) { | |
return true; | |
} | |
} | |
class EyeLeftPainter extends CustomPainter { | |
@override | |
void paint(Canvas canvas, Size size) { | |
Paint paint = Paint(); | |
Path path = Path(); | |
paint.color = const Color(0xff000000); | |
path = Path(); | |
path.lineTo(size.width * 0.08, size.height * 0.17); | |
path.cubicTo(size.width * 0.05, size.height * 0.17, size.width * 0.04, | |
size.height * 0.17, size.width * 0.02, size.height * 0.15); | |
path.cubicTo(size.width * 0.01, size.height * 0.13, 0, size.height * 0.1, 0, | |
size.height * 0.07); | |
path.cubicTo(size.width * 0.01, size.height * 0.03, size.width * 0.04, 0, | |
size.width * 0.08, 0); | |
path.cubicTo(size.width * 0.09, 0, size.width * 0.1, 0, size.width * 0.11, | |
size.height * 0.01); | |
path.cubicTo(size.width * 0.11, size.height * 0.01, size.width * 0.12, | |
size.height * 0.01, size.width * 0.12, size.height * 0.01); | |
path.cubicTo(size.width * 0.15, size.height * 0.02, size.width * 0.17, | |
size.height * 0.04, size.width * 0.17, size.height * 0.07); | |
path.cubicTo(size.width * 0.18, size.height * 0.11, size.width * 0.17, | |
size.height * 0.16, size.width * 0.1, size.height * 0.17); | |
path.cubicTo(size.width * 0.09, size.height * 0.17, size.width * 0.08, | |
size.height * 0.17, size.width * 0.08, size.height * 0.17); | |
path.cubicTo(size.width * 0.08, size.height * 0.17, size.width * 0.08, | |
size.height * 0.17, size.width * 0.08, size.height * 0.17); | |
canvas.drawPath(path, paint); | |
// Path number 11 | |
paint.color = const Color(0xff00FFC2); | |
path = Path(); | |
path.lineTo(size.width * 0.08, size.height * 0.01); | |
path.cubicTo(size.width * 0.09, size.height * 0.01, size.width * 0.1, | |
size.height * 0.01, size.width * 0.11, size.height * 0.01); | |
path.cubicTo(size.width * 0.11, size.height * 0.01, size.width * 0.12, | |
size.height * 0.01, size.width * 0.12, size.height * 0.01); | |
path.cubicTo(size.width * 0.15, size.height * 0.02, size.width * 0.17, | |
size.height * 0.05, size.width * 0.17, size.height * 0.07); | |
path.cubicTo(size.width * 0.17, size.height * 0.11, size.width * 0.17, | |
size.height * 0.16, size.width * 0.09, size.height * 0.17); | |
path.cubicTo(size.width * 0.09, size.height * 0.17, size.width * 0.08, | |
size.height * 0.17, size.width * 0.08, size.height * 0.17); | |
path.cubicTo(size.width * 0.02, size.height * 0.17, 0, size.height * 0.12, | |
size.width * 0.01, size.height * 0.07); | |
path.cubicTo(size.width * 0.01, size.height * 0.03, size.width * 0.05, | |
size.height * 0.01, size.width * 0.08, size.height * 0.01); | |
path.lineTo(size.width * 0.08, 0); | |
path.cubicTo(size.width * 0.08, 0, size.width * 0.08, size.height * 0.01, | |
size.width * 0.08, size.height * 0.01); | |
path.cubicTo(size.width * 0.08, size.height * 0.01, size.width * 0.08, 0, | |
size.width * 0.08, 0); | |
path.cubicTo( | |
size.width * 0.08, 0, size.width * 0.08, 0, size.width * 0.08, 0); | |
path.cubicTo(size.width * 0.04, 0, size.width * 0.01, size.height * 0.03, 0, | |
size.height * 0.07); | |
path.cubicTo(0, size.height * 0.1, 0, size.height * 0.13, size.width * 0.02, | |
size.height * 0.15); | |
path.cubicTo(size.width * 0.03, size.height * 0.17, size.width * 0.05, | |
size.height * 0.18, size.width * 0.08, size.height * 0.18); | |
path.cubicTo(size.width * 0.08, size.height * 0.18, size.width * 0.09, | |
size.height * 0.18, size.width * 0.1, size.height * 0.18); | |
path.cubicTo(size.width * 0.13, size.height * 0.17, size.width * 0.15, | |
size.height * 0.16, size.width * 0.17, size.height * 0.13); | |
path.cubicTo(size.width * 0.18, size.height * 0.12, size.width * 0.18, | |
size.height * 0.1, size.width * 0.18, size.height * 0.07); | |
path.cubicTo(size.width * 0.17, size.height * 0.04, size.width * 0.15, | |
size.height * 0.02, size.width * 0.12, size.height * 0.01); | |
path.cubicTo(size.width * 0.12, size.height * 0.01, size.width * 0.11, 0, | |
size.width * 0.11, 0); | |
path.cubicTo( | |
size.width * 0.1, 0, size.width * 0.09, 0, size.width * 0.08, 0); | |
path.cubicTo( | |
size.width * 0.08, 0, size.width * 0.08, 0, size.width * 0.08, 0); | |
path.cubicTo( | |
size.width * 0.08, 0, size.width * 0.08, 0, size.width * 0.08, 0); | |
canvas.drawPath(path, paint); | |
} | |
@override | |
bool shouldRepaint(CustomPainter oldDelegate) { | |
return true; | |
} | |
} | |
class HelmetFirstPainter extends CustomPainter { | |
@override | |
void paint(Canvas canvas, Size size) { | |
Paint paint = Paint(); | |
Path path = Path(); | |
// Path number 19 | |
paint.color = const Color(0xffF9CB7A); | |
path = Path(); | |
path.lineTo(size.width * 0.56, size.height * 0.03); | |
path.cubicTo(size.width * 0.56, size.height * 0.03, size.width * 0.78, | |
size.height * 0.07, size.width * 0.75, size.height / 5); | |
path.cubicTo(size.width * 0.75, size.height / 5, size.width * 0.86, | |
size.height * 0.18, size.width * 0.93, size.height * 0.19); | |
path.cubicTo(size.width * 0.93, size.height * 0.19, size.width * 0.95, | |
-0.08, size.width * 0.56, size.height * 0.03); | |
path.cubicTo(size.width * 0.56, size.height * 0.03, size.width * 0.56, | |
size.height * 0.03, size.width * 0.56, size.height * 0.03); | |
canvas.drawPath(path, paint); | |
// Path number 20 | |
paint.color = const Color(0xffF9CB7A); | |
path = Path(); | |
path.lineTo(size.width * 0.01, size.height * 0.65); | |
path.cubicTo(size.width * 0.01, size.height * 0.65, size.width * 0.09, | |
size.height * 0.85, size.width * 0.22, size.height * 0.8); | |
path.cubicTo(size.width * 0.22, size.height * 0.8, size.width / 5, | |
size.height * 0.91, size.width * 0.23, size.height * 0.97); | |
path.cubicTo(size.width * 0.23, size.height * 0.97, -0.04, | |
size.height * 1.04, size.width * 0.01, size.height * 0.65); | |
path.cubicTo(size.width * 0.01, size.height * 0.65, size.width * 0.01, | |
size.height * 0.65, size.width * 0.01, size.height * 0.65); | |
canvas.drawPath(path, paint); | |
// Path number 21 | |
paint.color = const Color(0xff999999); | |
path = Path(); | |
path.lineTo(size.width * 0.24, size.height * 0.79); | |
path.cubicTo(size.width * 0.24, size.height * 0.79, size.width * 0.23, | |
size.height * 0.79, size.width * 0.22, size.height * 0.8); | |
path.cubicTo(size.width * 0.22, size.height * 0.8, size.width * 0.22, | |
size.height * 0.96, size.width * 0.24, size.height * 0.98); | |
path.cubicTo(size.width * 0.27, size.height, size.width * 0.26, size.height, | |
size.width * 0.26, size.height); | |
path.cubicTo(size.width * 0.26, size.height, size.width * 0.22, | |
size.height * 0.92, size.width * 0.24, size.height * 0.79); | |
path.cubicTo(size.width * 0.24, size.height * 0.79, size.width * 0.24, | |
size.height * 0.79, size.width * 0.24, size.height * 0.79); | |
canvas.drawPath(path, paint); | |
// Path number 22 | |
paint.color = const Color(0xff4C4C4C); | |
path = Path(); | |
path.lineTo(size.width * 0.36, size.height * 0.97); | |
path.cubicTo(size.width * 0.36, size.height * 0.97, size.width * 0.29, | |
size.height * 1.04, size.width * 0.26, size.height); | |
path.cubicTo(size.width * 0.22, size.height * 0.95, size.width * 0.22, | |
size.height * 0.81, size.width * 0.24, size.height * 0.79); | |
path.cubicTo(size.width / 4, size.height * 0.77, size.width * 0.29, | |
size.height * 0.74, size.width * 0.29, size.height * 0.74); | |
path.cubicTo(size.width * 0.29, size.height * 0.74, size.width * 0.31, | |
size.height * 0.89, size.width * 0.36, size.height * 0.97); | |
path.cubicTo(size.width * 0.36, size.height * 0.97, size.width * 0.36, | |
size.height * 0.97, size.width * 0.36, size.height * 0.97); | |
canvas.drawPath(path, paint); | |
// Path number 23 | |
paint.color = const Color(0xff999999); | |
path = Path(); | |
path.lineTo(size.width * 0.36, size.height * 0.97); | |
path.cubicTo(size.width * 0.36, size.height * 0.97, size.width * 0.38, | |
size.height * 0.97, size.width * 0.39, size.height * 0.95); | |
path.cubicTo(size.width * 0.39, size.height * 0.95, size.width * 0.3, | |
size.height * 0.81, size.width * 0.31, size.height * 0.73); | |
path.cubicTo(size.width * 0.31, size.height * 0.73, size.width * 0.29, | |
size.height * 0.72, size.width * 0.28, size.height * 0.74); | |
path.cubicTo(size.width * 0.28, size.height * 0.74, size.width * 0.28, | |
size.height * 0.86, size.width * 0.36, size.height * 0.97); | |
path.cubicTo(size.width * 0.36, size.height * 0.97, size.width * 0.36, | |
size.height * 0.97, size.width * 0.36, size.height * 0.97); | |
canvas.drawPath(path, paint); | |
// Path number 24 | |
paint.color = const Color(0xff4C4C4C); | |
path = Path(); | |
path.lineTo(size.width / 3, size.height * 0.56); | |
path.cubicTo(size.width / 3, size.height * 0.56, size.width * 0.24, | |
size.height * 0.79, size.width * 0.4, size.height * 0.98); | |
path.cubicTo(size.width * 0.4, size.height * 0.98, size.width * 0.4, | |
size.height * 0.91, size.width * 0.52, size.height * 0.72); | |
path.cubicTo(size.width * 0.52, size.height * 0.72, size.width / 3, | |
size.height * 0.56, size.width / 3, size.height * 0.56); | |
path.cubicTo(size.width / 3, size.height * 0.56, size.width / 3, | |
size.height * 0.56, size.width / 3, size.height * 0.56); | |
canvas.drawPath(path, paint); | |
// Path number 25 | |
paint.color = const Color(0xff4C4C4C); | |
path = Path(); | |
path.lineTo(size.width * 0.55, size.height * 0.7); | |
path.cubicTo(size.width * 0.55, size.height * 0.7, size.width * 0.38, | |
size.height * 0.96, size.width * 0.41, size.height * 1.05); | |
path.cubicTo(size.width * 0.41, size.height * 1.05, size.width * 0.41, | |
size.height * 1.1, size.width * 0.44, size.height * 1.08); | |
path.cubicTo(size.width * 0.44, size.height * 1.08, size.width * 0.47, | |
size.height * 1.08, size.width * 0.47, size.height * 1.08); | |
path.cubicTo(size.width * 0.47, size.height * 1.08, size.width * 0.52, | |
size.height * 0.88, size.width * 0.61, size.height * 0.78); | |
path.cubicTo(size.width * 0.61, size.height * 0.78, size.width * 0.71, | |
size.height * 0.89, size.width * 0.71, size.height * 0.89); | |
path.cubicTo(size.width * 0.71, size.height * 0.89, size.width * 0.84, | |
size.height * 0.84, size.width * 0.84, size.height * 0.84); | |
path.cubicTo(size.width * 0.84, size.height * 0.84, size.width * 0.86, | |
size.height * 0.81, size.width * 0.86, size.height * 0.81); | |
path.cubicTo(size.width * 0.86, size.height * 0.81, size.width * 0.37, | |
size.height * 0.41, size.width * 0.37, size.height * 0.41); | |
path.cubicTo(size.width * 0.37, size.height * 0.41, size.width * 0.3, | |
size.height * 0.46, size.width * 0.35, size.height * 0.53); | |
path.cubicTo(size.width * 0.35, size.height * 0.53, size.width * 0.55, | |
size.height * 0.7, size.width * 0.55, size.height * 0.7); | |
path.cubicTo(size.width * 0.55, size.height * 0.7, size.width * 0.55, | |
size.height * 0.7, size.width * 0.55, size.height * 0.7); | |
canvas.drawPath(path, paint); | |
// Path number 26 | |
paint.color = const Color(0xff999999); | |
path = Path(); | |
path.lineTo(size.width * 0.41, size.height * 1.05); | |
path.cubicTo(size.width * 0.41, size.height * 1.05, size.width * 0.34, | |
size.height, size.width * 0.52, size.height * 0.72); | |
path.cubicTo(size.width * 0.52, size.height * 0.72, size.width / 3, | |
size.height * 0.56, size.width / 3, size.height * 0.56); | |
path.cubicTo(size.width / 3, size.height * 0.56, size.width / 3, | |
size.height * 0.55, size.width * 0.35, size.height * 0.53); | |
path.cubicTo(size.width * 0.35, size.height * 0.53, size.width * 0.55, | |
size.height * 0.7, size.width * 0.55, size.height * 0.7); | |
path.cubicTo(size.width * 0.55, size.height * 0.7, size.width * 0.39, | |
size.height * 0.94, size.width * 0.41, size.height * 1.05); | |
path.cubicTo(size.width * 0.41, size.height * 1.05, size.width * 0.41, | |
size.height * 1.05, size.width * 0.41, size.height * 1.05); | |
canvas.drawPath(path, paint); | |
// Path number 27 | |
paint.color = const Color(0xff17); | |
path = Path(); | |
path.lineTo(size.width * 0.56, size.height * 0.03); | |
path.cubicTo(size.width * 0.56, size.height * 0.03, size.width * 0.78, | |
size.height * 0.07, size.width * 0.75, size.height / 5); | |
path.cubicTo(size.width * 0.75, size.height / 5, size.width * 0.86, | |
size.height * 0.18, size.width * 0.93, size.height * 0.19); | |
path.cubicTo(size.width * 0.93, size.height * 0.19, size.width * 0.95, | |
-0.08, size.width * 0.56, size.height * 0.03); | |
path.cubicTo(size.width * 0.56, size.height * 0.03, size.width * 0.56, | |
size.height * 0.03, size.width * 0.56, size.height * 0.03); | |
canvas.drawPath(path, paint); | |
// Path number 28 | |
paint.color = const Color(0xff18); | |
path = Path(); | |
path.lineTo(size.width * 0.01, size.height * 0.65); | |
path.cubicTo(size.width * 0.01, size.height * 0.65, size.width * 0.09, | |
size.height * 0.85, size.width * 0.22, size.height * 0.8); | |
path.cubicTo(size.width * 0.22, size.height * 0.8, size.width / 5, | |
size.height * 0.91, size.width * 0.23, size.height * 0.97); | |
path.cubicTo(size.width * 0.23, size.height * 0.97, -0.04, | |
size.height * 1.04, size.width * 0.01, size.height * 0.65); | |
path.cubicTo(size.width * 0.01, size.height * 0.65, size.width * 0.01, | |
size.height * 0.65, size.width * 0.01, size.height * 0.65); | |
canvas.drawPath(path, paint); | |
// Path number 29 | |
paint.color = const Color(0xff999999); | |
path = Path(); | |
path.lineTo(size.width * 0.74, size.height * 0.22); | |
path.cubicTo(size.width * 0.74, size.height * 0.22, size.width * 0.74, | |
size.height * 0.22, size.width * 0.75, size.height / 5); | |
path.cubicTo(size.width * 0.75, size.height / 5, size.width * 0.91, | |
size.height * 0.18, size.width * 0.94, size.height / 5); | |
path.cubicTo(size.width * 0.96, size.height * 0.22, size.width * 0.96, | |
size.height * 0.22, size.width * 0.96, size.height * 0.22); | |
path.cubicTo(size.width * 0.96, size.height * 0.22, size.width * 0.87, | |
size.height * 0.19, size.width * 0.74, size.height * 0.22); | |
path.cubicTo(size.width * 0.74, size.height * 0.22, size.width * 0.74, | |
size.height * 0.22, size.width * 0.74, size.height * 0.22); | |
canvas.drawPath(path, paint); | |
// Path number 30 | |
paint.color = const Color(0xff4C4C4C); | |
path = Path(); | |
path.lineTo(size.width * 0.95, size.height * 0.31); | |
path.cubicTo(size.width * 0.95, size.height * 0.31, size.width, | |
size.height * 0.24, size.width * 0.95, size.height / 5); | |
path.cubicTo(size.width * 0.9, size.height * 0.19, size.width * 0.76, | |
size.height / 5, size.width * 0.74, size.height * 0.22); | |
path.cubicTo(size.width * 0.73, size.height * 0.24, size.width * 0.7, | |
size.height * 0.28, size.width * 0.7, size.height * 0.28); | |
path.cubicTo(size.width * 0.7, size.height * 0.28, size.width * 0.86, | |
size.height * 0.27, size.width * 0.95, size.height * 0.31); | |
path.cubicTo(size.width * 0.95, size.height * 0.31, size.width * 0.95, | |
size.height * 0.31, size.width * 0.95, size.height * 0.31); | |
canvas.drawPath(path, paint); | |
// Path number 31 | |
paint.color = const Color(0xff999999); | |
path = Path(); | |
path.lineTo(size.width * 0.95, size.height * 0.31); | |
path.cubicTo(size.width * 0.95, size.height * 0.31, size.width * 0.95, | |
size.height / 3, size.width * 0.92, size.height * 0.34); | |
path.cubicTo(size.width * 0.92, size.height * 0.34, size.width * 0.77, | |
size.height * 0.28, size.width * 0.69, size.height * 0.3); | |
path.cubicTo(size.width * 0.69, size.height * 0.3, size.width * 0.67, | |
size.height * 0.29, size.width * 0.7, size.height * 0.28); | |
path.cubicTo(size.width * 0.7, size.height * 0.28, size.width * 0.82, | |
size.height * 0.26, size.width * 0.95, size.height * 0.31); | |
path.cubicTo(size.width * 0.95, size.height * 0.31, size.width * 0.95, | |
size.height * 0.31, size.width * 0.95, size.height * 0.31); | |
canvas.drawPath(path, paint); | |
// Path number 32 | |
paint.color = const Color(0xff4C4C4C); | |
path = Path(); | |
path.lineTo(size.width * 0.52, size.height * 0.35); | |
path.cubicTo(size.width * 0.52, size.height * 0.35, size.width * 0.74, | |
size.height * 0.22, size.width * 0.96, size.height * 0.35); | |
path.cubicTo(size.width * 0.96, size.height * 0.35, size.width * 0.89, | |
size.height * 0.36, size.width * 0.71, size.height / 2); | |
path.cubicTo(size.width * 0.71, size.height / 2, size.width * 0.52, | |
size.height * 0.35, size.width * 0.52, size.height * 0.35); | |
path.cubicTo(size.width * 0.52, size.height * 0.35, size.width * 0.52, | |
size.height * 0.35, size.width * 0.52, size.height * 0.35); | |
canvas.drawPath(path, paint); | |
// Path number 33 | |
paint.color = const Color(0xff4C4C4C); | |
path = Path(); | |
path.lineTo(size.width * 0.7, size.height * 0.54); | |
path.cubicTo(size.width * 0.7, size.height * 0.54, size.width * 0.94, | |
size.height * 0.34, size.width * 1.04, size.height * 0.34); | |
path.cubicTo(size.width * 1.04, size.height * 0.34, size.width * 1.09, | |
size.height * 0.34, size.width * 1.08, size.height * 0.37); | |
path.cubicTo(size.width * 1.08, size.height * 0.37, size.width * 1.07, | |
size.height * 0.4, size.width * 1.07, size.height * 0.4); | |
path.cubicTo(size.width * 1.07, size.height * 0.4, size.width * 0.88, | |
size.height * 0.47, size.width * 0.78, size.height * 0.58); | |
path.cubicTo(size.width * 0.78, size.height * 0.58, size.width * 0.91, | |
size.height * 0.65, size.width * 0.91, size.height * 0.65); | |
path.cubicTo(size.width * 0.91, size.height * 0.65, size.width * 0.89, | |
size.height * 0.79, size.width * 0.89, size.height * 0.79); | |
path.cubicTo(size.width * 0.89, size.height * 0.79, size.width * 0.86, | |
size.height * 0.81, size.width * 0.86, size.height * 0.81); | |
path.cubicTo(size.width * 0.86, size.height * 0.81, size.width * 0.37, | |
size.height * 0.41, size.width * 0.37, size.height * 0.41); | |
path.cubicTo(size.width * 0.37, size.height * 0.41, size.width * 0.41, | |
size.height / 3, size.width * 0.49, size.height * 0.37); | |
path.cubicTo(size.width * 0.49, size.height * 0.37, size.width * 0.7, | |
size.height * 0.54, size.width * 0.7, size.height * 0.54); | |
path.cubicTo(size.width * 0.7, size.height * 0.54, size.width * 0.7, | |
size.height * 0.54, size.width * 0.7, size.height * 0.54); | |
canvas.drawPath(path, paint); | |
// Path number 34 | |
paint.color = const Color(0xff999999); | |
path = Path(); | |
path.lineTo(size.width * 1.04, size.height * 0.34); | |
path.cubicTo(size.width * 1.04, size.height * 0.34, size.width, | |
size.height * 0.28, size.width * 0.71, size.height / 2); | |
path.cubicTo(size.width * 0.71, size.height / 2, size.width * 0.52, | |
size.height * 0.35, size.width * 0.52, size.height * 0.35); | |
path.cubicTo(size.width * 0.52, size.height * 0.35, size.width / 2, | |
size.height * 0.35, size.width * 0.49, size.height * 0.37); | |
path.cubicTo(size.width * 0.49, size.height * 0.37, size.width * 0.7, | |
size.height * 0.54, size.width * 0.7, size.height * 0.54); | |
path.cubicTo(size.width * 0.7, size.height * 0.54, size.width * 0.92, | |
size.height * 0.35, size.width * 1.04, size.height * 0.34); | |
path.cubicTo(size.width * 1.04, size.height * 0.34, size.width * 1.04, | |
size.height * 0.34, size.width * 1.04, size.height * 0.34); | |
canvas.drawPath(path, paint); | |
} | |
@override | |
bool shouldRepaint(CustomPainter oldDelegate) { | |
return true; | |
} | |
} | |
class WingLeftPainter extends CustomPainter { | |
@override | |
void paint(Canvas canvas, Size size) { | |
Paint paint = Paint(); | |
Path path = Path(); | |
// Path number 4 | |
// Wing left | |
paint.color = const Color(0xff3FB7EB); | |
path = Path(); | |
path.lineTo(size.width * 0.34, size.height * 0.61); | |
path.cubicTo(size.width * 0.34, size.height * 0.61, size.width / 4, | |
size.height * 0.57, size.width / 4, size.height * 0.61); | |
path.cubicTo(size.width / 4, size.height * 0.66, size.width * 0.23, | |
size.height * 0.68, size.width * 0.34, size.height * 0.79); | |
path.cubicTo(size.width * 0.44, size.height * 0.89, size.width * 0.54, | |
size.height * 0.93, size.width * 0.69, size.height * 0.93); | |
path.cubicTo(size.width * 0.69, size.height * 0.93, size.width * 0.59, | |
size.height * 0.78, size.width * 0.65, size.height * 0.57); | |
path.cubicTo(size.width * 0.65, size.height * 0.57, size.width * 0.55, | |
size.height * 0.45, size.width * 0.55, size.height * 0.41); | |
path.cubicTo(size.width * 0.55, size.height * 0.38, size.width * 0.51, | |
size.height * 0.28, size.width * 0.45, size.height * 0.29); | |
path.cubicTo(size.width * 0.39, size.height * 0.3, size.width * 0.41, | |
size.height * 0.41, size.width * 0.41, size.height * 0.41); | |
path.cubicTo(size.width * 0.41, size.height * 0.41, size.width * 0.35, | |
size.height / 3, size.width * 0.32, size.height * 0.36); | |
path.cubicTo(size.width * 0.28, size.height * 0.38, size.width * 0.27, | |
size.height * 0.52, size.width * 0.34, size.height * 0.61); | |
path.cubicTo(size.width * 0.34, size.height * 0.61, size.width * 0.34, | |
size.height * 0.61, size.width * 0.34, size.height * 0.61); | |
canvas.drawPath(path, paint); | |
// Path number 5 | |
paint.color = const Color(0xff51C6E5); | |
path = Path(); | |
path.lineTo(size.width * 0.46, size.height * 0.52); | |
path.cubicTo(size.width * 0.46, size.height * 0.52, size.width * 0.43, | |
size.height * 0.52, size.width * 0.41, size.height * 0.6); | |
path.cubicTo(size.width * 0.41, size.height * 0.6, size.width * 0.41, | |
size.height * 0.68, size.width * 0.44, size.height * 0.7); | |
path.cubicTo(size.width * 0.48, size.height * 0.73, size.width * 0.55, | |
size.height * 0.66, size.width * 0.54, size.height * 0.61); | |
path.cubicTo(size.width * 0.53, size.height * 0.56, size.width * 0.49, | |
size.height * 0.52, size.width * 0.46, size.height * 0.52); | |
path.cubicTo(size.width * 0.46, size.height * 0.52, size.width * 0.46, | |
size.height * 0.52, size.width * 0.46, size.height * 0.52); | |
canvas.drawPath(path, paint); | |
} | |
@override | |
bool shouldRepaint(CustomPainter oldDelegate) { | |
return true; | |
} | |
} | |
class HornFirstPainter extends CustomPainter { | |
@override | |
void paint(Canvas canvas, Size size) { | |
Paint paint = Paint(); | |
Path path = Path(); | |
paint.color = const Color(0xff055799); | |
path = Path(); | |
path.lineTo(size.width * 0.15, size.height * 0.13); | |
path.cubicTo(size.width * 0.17, size.height * 0.17, size.width / 5, | |
size.height * 0.23, size.width / 4, size.height * 0.29); | |
path.cubicTo(size.width * 0.38, size.height * 0.49, size.width * 0.65, | |
size.height * 0.82, size.width * 1.08, size.height * 1.06); | |
path.cubicTo(size.width * 1.07, size.height * 1.08, size.width * 1.06, | |
size.height * 1.11, size.width * 1.06, size.height * 1.13); | |
path.cubicTo(size.width * 0.78, size.height * 1.09, size.width * 0.38, | |
size.height, size.width * 0.13, size.height * 0.83); | |
path.cubicTo(size.width * 0.1, size.height * 0.73, size.width * 0.03, | |
size.height * 0.48, size.width * 0.15, size.height * 0.13); | |
path.cubicTo(size.width * 0.15, size.height * 0.13, size.width * 0.15, | |
size.height * 0.13, size.width * 0.15, size.height * 0.13); | |
canvas.drawPath(path, paint); | |
paint.color = const Color(0xff055799); | |
path = Path(); | |
path.lineTo(size.width * 1.11, size.height * 1.14); | |
path.cubicTo(size.width * 1.11, size.height * 1.11, size.width * 1.12, | |
size.height * 1.09, size.width * 1.13, size.height * 1.08); | |
path.cubicTo(size.width * 1.18, size.height * 1.1, size.width * 1.23, | |
size.height * 1.13, size.width * 1.29, size.height * 1.15); | |
path.cubicTo(size.width * 1.28, size.height * 1.15, size.width * 1.28, | |
size.height * 1.15, size.width * 1.28, size.height * 1.15); | |
path.cubicTo(size.width * 1.23, size.height * 1.15, size.width * 1.17, | |
size.height * 1.14, size.width * 1.11, size.height * 1.14); | |
path.cubicTo(size.width * 1.11, size.height * 1.14, size.width * 1.11, | |
size.height * 1.14, size.width * 1.11, size.height * 1.14); | |
canvas.drawPath(path, paint); | |
paint.color = const Color(0xff07C6F9); | |
path = Path(); | |
path.lineTo(size.width * 1.07, size.height * 1.13); | |
path.cubicTo(size.width * 1.07, size.height * 1.13, size.width * 1.07, | |
size.height * 1.13, size.width * 1.07, size.height * 1.12); | |
path.cubicTo(size.width * 1.07, size.height * 1.11, size.width * 1.07, | |
size.height * 1.09, size.width * 1.08, size.height * 1.07); | |
path.cubicTo(size.width * 1.09, size.height * 1.07, size.width * 1.09, | |
size.height * 1.06, size.width * 1.09, size.height * 1.06); | |
path.cubicTo(size.width * 1.11, size.height * 1.03, size.width * 1.12, | |
size.height * 1.05, size.width * 1.11, size.height * 1.06); | |
path.cubicTo(size.width * 1.11, size.height * 1.06, size.width * 1.1, | |
size.height * 1.06, size.width * 1.1, size.height * 1.07); | |
path.cubicTo(size.width * 1.1, size.height * 1.07, size.width * 1.1, | |
size.height * 1.07, size.width * 1.1, size.height * 1.08); | |
path.cubicTo(size.width * 1.09, size.height * 1.09, size.width * 1.08, | |
size.height * 1.11, size.width * 1.08, size.height * 1.13); | |
path.cubicTo(size.width * 1.08, size.height * 1.13, size.width * 1.08, | |
size.height * 1.13, size.width * 1.08, size.height * 1.14); | |
path.cubicTo(size.width * 1.08, size.height * 1.14, size.width * 1.08, | |
size.height * 1.15, size.width * 1.08, size.height * 1.15); | |
path.cubicTo(size.width * 1.09, size.height * 1.16, size.width * 1.09, | |
size.height * 1.16, size.width * 1.08, size.height * 1.16); | |
path.cubicTo(size.width * 1.07, size.height * 1.15, size.width * 1.07, | |
size.height * 1.14, size.width * 1.07, size.height * 1.13); | |
path.cubicTo(size.width * 1.07, size.height * 1.13, size.width * 1.07, | |
size.height * 1.13, size.width * 1.07, size.height * 1.13); | |
canvas.drawPath(path, paint); | |
// Path number 4 | |
paint.color = const Color(0xff07C6F9); | |
path = Path(); | |
path.lineTo(size.width * 1.09, size.height * 1.14); | |
path.cubicTo(size.width * 1.09, size.height * 1.13, size.width * 1.09, | |
size.height * 1.13, size.width * 1.09, size.height * 1.13); | |
path.cubicTo(size.width * 1.09, size.height * 1.12, size.width * 1.09, | |
size.height * 1.1, size.width * 1.1, size.height * 1.08); | |
path.cubicTo(size.width * 1.11, size.height * 1.08, size.width * 1.11, | |
size.height * 1.08, size.width * 1.11, size.height * 1.07); | |
path.cubicTo(size.width * 1.13, size.height * 1.05, size.width * 1.14, | |
size.height * 1.06, size.width * 1.13, size.height * 1.07); | |
path.cubicTo(size.width * 1.13, size.height * 1.07, size.width * 1.12, | |
size.height * 1.08, size.width * 1.12, size.height * 1.08); | |
path.cubicTo(size.width * 1.12, size.height * 1.08, size.width * 1.12, | |
size.height * 1.08, size.width * 1.12, size.height * 1.09); | |
path.cubicTo(size.width * 1.11, size.height * 1.1, size.width * 1.1, | |
size.height * 1.11, size.width * 1.1, size.height * 1.13); | |
path.cubicTo(size.width * 1.1, size.height * 1.13, size.width * 1.1, | |
size.height * 1.14, size.width * 1.1, size.height * 1.14); | |
path.cubicTo(size.width * 1.1, size.height * 1.15, size.width * 1.1, | |
size.height * 1.15, size.width * 1.1, size.height * 1.15); | |
path.cubicTo(size.width * 1.11, size.height * 1.16, size.width * 1.11, | |
size.height * 1.17, size.width * 1.1, size.height * 1.16); | |
path.cubicTo(size.width * 1.09, size.height * 1.16, size.width * 1.09, | |
size.height * 1.15, size.width * 1.09, size.height * 1.14); | |
path.cubicTo(size.width * 1.09, size.height * 1.14, size.width * 1.09, | |
size.height * 1.14, size.width * 1.09, size.height * 1.14); | |
canvas.drawPath(path, paint); | |
// Path number 5 | |
paint.color = const Color(0xff055799); | |
path = Path(); | |
path.lineTo(size.width * 0.07, 0); | |
path.cubicTo(size.width * 0.07, 0, size.width * 0.08, size.height * 0.03, | |
size.width * 0.11, size.height * 0.07); | |
path.cubicTo(-0.01, size.height * 0.44, size.width * 0.06, | |
size.height * 0.71, size.width * 0.09, size.height * 0.81); | |
path.cubicTo(size.width * 0.08, size.height * 0.8, size.width * 0.08, | |
size.height * 0.8, size.width * 0.07, size.height * 0.79); | |
path.cubicTo(size.width * 0.07, size.height * 0.79, -0.09, | |
size.height * 0.49, size.width * 0.07, 0); | |
path.cubicTo( | |
size.width * 0.07, 0, size.width * 0.07, 0, size.width * 0.07, 0); | |
canvas.drawPath(path, paint); | |
} | |
@override | |
bool shouldRepaint(CustomPainter oldDelegate) { | |
return true; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment