diff --git a/android/gradle.properties b/android/gradle.properties index dfa6ea859d8324f76d1b0eccc01621db70e41cde..7468e09b83af112ffa56bbb3f181e841784b9018 100644 --- a/android/gradle.properties +++ b/android/gradle.properties @@ -1,5 +1,5 @@ org.gradle.jvmargs=-Xmx1536M android.useAndroidX=true android.enableJetifier=true -app.versionName=0.2.0 -app.versionCode=65 +app.versionName=0.2.1 +app.versionCode=66 diff --git a/assets/ui/button_back.png b/assets/ui/button_back.png index cc48ffb1dbb653d9a996f139dfbe02969724bfa5..51d7a01d171f7d7f047ecf9dee2d7ceee23b310d 100644 Binary files a/assets/ui/button_back.png and b/assets/ui/button_back.png differ diff --git a/assets/ui/button_delete_saved_game.png b/assets/ui/button_delete_saved_game.png index 5e4f217689b11e444b7163557d7e5d68f3bbfe7d..4ca5b749c208c4b7eac2a4b141a1bd918d7cb98f 100644 Binary files a/assets/ui/button_delete_saved_game.png and b/assets/ui/button_delete_saved_game.png differ diff --git a/assets/ui/button_resume_game.png b/assets/ui/button_resume_game.png index b2ea0a02d05e42377eb551a4b51428b511a32f5d..2fe433b7d18a39880a14e3f0af18cb75c4ccbaed 100644 Binary files a/assets/ui/button_resume_game.png and b/assets/ui/button_resume_game.png differ diff --git a/assets/ui/button_start.png b/assets/ui/button_start.png index 6845e2f5c21598ab61f1684d2075aeec0334bf23..23c7a4f670de19ffac455d6c510c3c53653a048b 100644 Binary files a/assets/ui/button_start.png and b/assets/ui/button_start.png differ diff --git a/assets/ui/type_pick-image.png b/assets/ui/type_pick-image.png index 216e7d24926beb60c9806f5404a313cb62778ffb..46d5443f799230410d84a3477112b529146dfbfc 100644 Binary files a/assets/ui/type_pick-image.png and b/assets/ui/type_pick-image.png differ diff --git a/assets/ui/type_pick-word.png b/assets/ui/type_pick-word.png index 8c816e62f246aa7fc2762cae52090547b74cb1c2..a3dc27a934b3190251b769601d6ff69f8f02de44 100644 Binary files a/assets/ui/type_pick-word.png and b/assets/ui/type_pick-word.png differ diff --git a/fastlane/metadata/android/en-US/changelogs/66.txt b/fastlane/metadata/android/en-US/changelogs/66.txt new file mode 100644 index 0000000000000000000000000000000000000000..5482b7fa40ca24a8240ec8e571116215a31f6f61 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/66.txt @@ -0,0 +1 @@ +Clean / improve / update code and UI. diff --git a/fastlane/metadata/android/fr-FR/changelogs/66.txt b/fastlane/metadata/android/fr-FR/changelogs/66.txt new file mode 100644 index 0000000000000000000000000000000000000000..8e88019e5d88c4e6e123ad73c0c1c0dce6e4ff70 --- /dev/null +++ b/fastlane/metadata/android/fr-FR/changelogs/66.txt @@ -0,0 +1 @@ +Nettoyage / amélioration / mise à jour de code et de l'interface. diff --git a/lib/config/default_game_settings.dart b/lib/config/default_game_settings.dart index f6ae267b5da3b0be46ecb25da461df11ebddf274..f9ee6777d60654272066be16e012aeba887e194e 100644 --- a/lib/config/default_game_settings.dart +++ b/lib/config/default_game_settings.dart @@ -1,4 +1,4 @@ -import 'package:wordguessing/utils/tools.dart'; +import 'package:wordguessing/utils/tools.dart'; class DefaultGameSettings { // available game parameters codes @@ -42,11 +42,6 @@ class DefaultGameSettings { return []; } - // parameters displayed with assets (instead of painter) - static List<String> displayedWithAssets = [ - parameterCodeGameType, - ]; - static const int itemsCount = 4; static const int recentWordsCount = 20; } diff --git a/lib/config/default_global_settings.dart b/lib/config/default_global_settings.dart index 2b98f69b6fc166bd72410cb1e30bdb8f2bdfe36c..9cb4485bd8809f2910e001f62e9ea0c42dcf0ca7 100644 --- a/lib/config/default_global_settings.dart +++ b/lib/config/default_global_settings.dart @@ -1,4 +1,4 @@ -import 'package:wordguessing/utils/tools.dart'; +import 'package:wordguessing/utils/tools.dart'; class DefaultGlobalSettings { // available global parameters codes @@ -25,9 +25,4 @@ class DefaultGlobalSettings { printlog('Did not find any available value for global parameter "$parameterCode".'); return []; } - - // parameters displayed with assets (instead of painter) - static List<String> displayedWithAssets = [ - // - ]; } diff --git a/lib/ui/game/game_end.dart b/lib/ui/game/game_end.dart index f760ccf5ec901b0fce95c33378004ef401c01ab2..c1b24ba5b7e09f88f96824173af4e136c48613dc 100644 --- a/lib/ui/game/game_end.dart +++ b/lib/ui/game/game_end.dart @@ -25,6 +25,7 @@ class GameEndWidget extends StatelessWidget { padding: const EdgeInsets.all(2), child: Table( defaultColumnWidth: const IntrinsicColumnWidth(), + defaultVerticalAlignment: TableCellVerticalAlignment.bottom, children: [ TableRow( children: [ diff --git a/lib/ui/helpers/styled_button.dart b/lib/ui/helpers/styled_button.dart new file mode 100644 index 0000000000000000000000000000000000000000..729fd5cc5eb75da34035dc70f518dfe2b90a01ab --- /dev/null +++ b/lib/ui/helpers/styled_button.dart @@ -0,0 +1,210 @@ +import 'package:auto_size_text/auto_size_text.dart'; +import 'package:flutter/material.dart'; + +import 'package:wordguessing/utils/color_extensions.dart'; + +class StyledButton extends StatelessWidget { + const StyledButton({ + super.key, + required this.color, + required this.onPressed, + this.onLongPress, + required this.child, + }); + + final Color color; + final VoidCallback? onPressed; + final VoidCallback? onLongPress; + final Widget child; + + factory StyledButton.text({ + Key? key, + required VoidCallback? onPressed, + VoidCallback? onLongPress, + required String caption, + required Color color, + }) { + final Widget captionWidget = AutoSizeText( + caption, + maxLines: 1, + style: TextStyle( + inherit: true, + fontWeight: FontWeight.w900, + color: color.darken(60), + shadows: [ + Shadow( + blurRadius: 5.0, + color: color.lighten(60), + offset: const Offset(2, 2), + ), + Shadow( + blurRadius: 5.0, + color: color.lighten(60), + offset: const Offset(2, -2), + ), + Shadow( + blurRadius: 5.0, + color: color.lighten(60), + offset: const Offset(-2, 2), + ), + Shadow( + blurRadius: 5.0, + color: color.lighten(60), + offset: const Offset(-2, -2), + ), + ], + ), + ); + + return StyledButton( + color: color, + onPressed: onPressed, + onLongPress: onLongPress, + child: captionWidget, + ); + } + + factory StyledButton.icon({ + Key? key, + required VoidCallback? onPressed, + VoidCallback? onLongPress, + required Icon icon, + required Color color, + required double iconSize, + }) { + return StyledButton( + color: color, + onPressed: onPressed, + onLongPress: onLongPress, + child: Icon( + icon.icon, + color: icon.color ?? color.darken(60), + size: iconSize, + shadows: [ + Shadow( + blurRadius: 5.0, + color: color.lighten(60), + offset: const Offset(2, 2), + ), + Shadow( + blurRadius: 5.0, + color: color.lighten(60), + offset: const Offset(2, -2), + ), + Shadow( + blurRadius: 5.0, + color: color.lighten(60), + offset: const Offset(-2, 2), + ), + Shadow( + blurRadius: 5.0, + color: color.lighten(60), + offset: const Offset(-2, -2), + ), + ], + ), + ); + } + + @override + Widget build(BuildContext context) { + const double borderWidth = 4; + final Color borderColor = color.darken(40); + const double borderRadius = 10; + + return Container( + margin: const EdgeInsets.all(2), + padding: const EdgeInsets.all(2), + decoration: BoxDecoration( + color: color, + border: Border.all( + color: borderColor, + width: borderWidth, + ), + borderRadius: BorderRadius.circular(borderRadius), + ), + child: CustomPaint( + painter: StyledButtonPainter( + baseColor: color, + ), + child: MaterialButton( + onPressed: onPressed, + onLongPress: onLongPress, + padding: const EdgeInsets.all(8), + materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, + minWidth: 40, + child: child, + ), + ), + ); + } +} + +class StyledButtonPainter extends CustomPainter { + StyledButtonPainter({ + required this.baseColor, + }); + + final Color baseColor; + + @override + void paint(Canvas canvas, Size size) { + final Color lightColor = baseColor.lighten(20); + final Color darkColor = baseColor.darken(20); + + final Paint paint = Paint()..style = PaintingStyle.fill; + + const double cornerRadius = 6; + + Path topPath = Path() + ..moveTo(cornerRadius, 0) + ..lineTo(size.width - cornerRadius, 0) + ..arcToPoint( + Offset(size.width, cornerRadius), + radius: const Radius.circular(cornerRadius), + ) + ..lineTo(size.width, size.height * .35) + ..quadraticBezierTo( + size.width * .4, + size.height * .1, + 0, + size.height * .3, + ) + ..lineTo(0, cornerRadius) + ..arcToPoint( + const Offset(cornerRadius, 0), + radius: const Radius.circular(cornerRadius), + ); + + Path bottomPath = Path() + ..moveTo(cornerRadius, size.height) + ..lineTo(size.width - cornerRadius, size.height) + ..arcToPoint( + Offset(size.width, size.height - cornerRadius), + radius: const Radius.circular(cornerRadius), + clockwise: false, + ) + ..lineTo(size.width, size.height * .7) + ..quadraticBezierTo( + size.width * .6, + size.height * .9, + 0, + size.height * .7, + ) + ..lineTo(0, size.height - cornerRadius) + ..arcToPoint( + Offset(cornerRadius, size.height), + radius: const Radius.circular(cornerRadius), + clockwise: false, + ); + + paint.color = lightColor; + canvas.drawPath(topPath, paint); + + paint.color = darkColor; + canvas.drawPath(bottomPath, paint); + } + + @override + bool shouldRepaint(CustomPainter oldDelegate) => false; +} diff --git a/lib/ui/layouts/parameters_layout.dart b/lib/ui/layouts/parameters_layout.dart index ff114f36908b371bdd9be1721a844c2be3f6764d..bc6290a01cba30097790a3d91c13306018da65bd 100644 --- a/lib/ui/layouts/parameters_layout.dart +++ b/lib/ui/layouts/parameters_layout.dart @@ -5,8 +5,7 @@ import 'package:wordguessing/config/default_game_settings.dart'; import 'package:wordguessing/config/default_global_settings.dart'; import 'package:wordguessing/cubit/settings_game_cubit.dart'; import 'package:wordguessing/cubit/settings_global_cubit.dart'; -import 'package:wordguessing/ui/parameters/parameter_image.dart'; -import 'package:wordguessing/ui/parameters/parameter_painter.dart'; +import 'package:wordguessing/ui/parameters/parameter_widget.dart'; import 'package:wordguessing/ui/widgets/actions/button_delete_saved_game.dart'; import 'package:wordguessing/ui/widgets/actions/button_game_start_new.dart'; import 'package:wordguessing/ui/widgets/actions/button_resume_saved_game.dart'; @@ -35,21 +34,27 @@ class ParametersLayout extends StatelessWidget { lines.add(SizedBox(height: separatorHeight)); } - lines.add(SizedBox(height: separatorHeight)); + lines.add(Expanded( + child: SizedBox(height: separatorHeight), + )); if (canResume == false) { // Start new game - lines.add(const Expanded( - child: StartNewGameButton(), - )); + lines.add( + const AspectRatio( + aspectRatio: 3, + child: StartNewGameButton(), + ), + ); } else { // Resume game - lines.add(const Expanded( + lines.add(const AspectRatio( + aspectRatio: 3, child: ResumeSavedGameButton(), )); // Delete saved game lines.add(SizedBox.square( - dimension: MediaQuery.of(context).size.width / 4, + dimension: MediaQuery.of(context).size.width / 5, child: const DeleteSavedGameButton(), )); } @@ -102,44 +107,26 @@ class ParametersLayout extends StatelessWidget { ? globalSettingsCubit.getParameterValue(code) : gameSettingsCubit.getParameterValue(code); - final bool isActive = (value == currentValue); + final bool isSelected = (value == currentValue); final double displayWidth = MediaQuery.of(context).size.width; - final double itemWidth = displayWidth / availableValues.length - 26; - - final bool displayedWithAssets = - DefaultGlobalSettings.displayedWithAssets.contains(code) || - DefaultGameSettings.displayedWithAssets.contains(code); - - return TextButton( - child: Container( - child: displayedWithAssets - ? SizedBox.square( - dimension: itemWidth, - child: ParameterImage( - code: code, - value: value, - isSelected: isActive, - ), - ) - : CustomPaint( - size: Size(itemWidth, itemWidth), - willChange: false, - painter: ParameterPainter( - code: code, - value: value, - isSelected: isActive, - gameSettings: gameSettingsState.settings, - globalSettings: globalSettingsState.settings, - ), - isComplex: true, - ), + final double itemWidth = displayWidth / availableValues.length - 4; + + return SizedBox.square( + dimension: itemWidth, + child: ParameterWidget( + code: code, + value: value, + isSelected: isSelected, + size: itemWidth, + gameSettings: gameSettingsState.settings, + globalSettings: globalSettingsState.settings, + onPressed: () { + isGlobal + ? globalSettingsCubit.setParameterValue(code, value) + : gameSettingsCubit.setParameterValue(code, value); + }, ), - onPressed: () { - isGlobal - ? globalSettingsCubit.setParameterValue(code, value) - : gameSettingsCubit.setParameterValue(code, value); - }, ); }, ); diff --git a/lib/ui/parameters/parameter_image.dart b/lib/ui/parameters/parameter_image.dart deleted file mode 100644 index fc4b576f85b01158b74548400d11a4d027c57fbe..0000000000000000000000000000000000000000 --- a/lib/ui/parameters/parameter_image.dart +++ /dev/null @@ -1,38 +0,0 @@ -import 'package:flutter/material.dart'; - -class ParameterImage extends StatelessWidget { - const ParameterImage({ - super.key, - required this.code, - required this.value, - required this.isSelected, - }); - - final String code; - final String value; - final bool isSelected; - - static const Color buttonBackgroundColor = Colors.white; - static const Color buttonBorderColorActive = Colors.blue; - static const Color buttonBorderColorInactive = Colors.white; - static const double buttonBorderWidth = 8.0; - static const double buttonBorderRadius = 8.0; - - @override - Widget build(BuildContext context) { - return Container( - decoration: BoxDecoration( - color: buttonBackgroundColor, - borderRadius: BorderRadius.circular(buttonBorderRadius), - border: Border.all( - color: isSelected ? buttonBorderColorActive : buttonBorderColorInactive, - width: buttonBorderWidth, - ), - ), - child: Image( - image: AssetImage('assets/ui/${code}_$value.png'), - fit: BoxFit.fill, - ), - ); - } -} diff --git a/lib/ui/parameters/parameter_painter.dart b/lib/ui/parameters/parameter_painter.dart index 9fe8daed2b2b33dff467d21e9cdf4404ae3167db..97fb9a064c0220a072f4b2a05ac683038623cf1a 100644 --- a/lib/ui/parameters/parameter_painter.dart +++ b/lib/ui/parameters/parameter_painter.dart @@ -2,7 +2,6 @@ import 'dart:math'; import 'package:flutter/material.dart'; -import 'package:wordguessing/config/default_game_settings.dart'; import 'package:wordguessing/models/settings/settings_game.dart'; import 'package:wordguessing/models/settings/settings_global.dart'; import 'package:wordguessing/utils/tools.dart'; @@ -11,14 +10,12 @@ class ParameterPainter extends CustomPainter { const ParameterPainter({ required this.code, required this.value, - required this.isSelected, required this.gameSettings, required this.globalSettings, }); final String code; final String value; - final bool isSelected; final GameSettings gameSettings; final GlobalSettings globalSettings; @@ -27,26 +24,11 @@ class ParameterPainter extends CustomPainter { // force square final double canvasSize = min(size.width, size.height); - const Color borderColorEnabled = Colors.blue; - const Color borderColorDisabled = Colors.white; - - // "enabled/disabled" border - final paint = Paint(); - paint.style = PaintingStyle.stroke; - paint.color = isSelected ? borderColorEnabled : borderColorDisabled; - paint.strokeJoin = StrokeJoin.round; - paint.strokeWidth = 10; - canvas.drawRect( - Rect.fromPoints(const Offset(0, 0), Offset(canvasSize, canvasSize)), paint); - // content switch (code) { - case DefaultGameSettings.parameterCodeLangValue: - paintLangParameterItem(value, canvas, canvasSize); - break; default: printlog('Unknown parameter: $code/$value'); - paintUnknownParameterItem(value, canvas, canvasSize); + paintUnknownParameterItem(canvas, canvasSize); } } @@ -57,7 +39,6 @@ class ParameterPainter extends CustomPainter { // "unknown" parameter -> simple block with text void paintUnknownParameterItem( - final String value, final Canvas canvas, final double size, ) { @@ -65,12 +46,8 @@ class ParameterPainter extends CustomPainter { paint.strokeJoin = StrokeJoin.round; paint.strokeWidth = 3; - paint.color = Colors.grey; - paint.style = PaintingStyle.fill; - canvas.drawRect(Rect.fromPoints(const Offset(0, 0), Offset(size, size)), paint); - final textSpan = TextSpan( - text: '?\n$value', + text: '$code\n$value', style: const TextStyle( color: Colors.black, fontSize: 18, @@ -91,58 +68,4 @@ class ParameterPainter extends CustomPainter { ), ); } - - void paintLangParameterItem( - final String value, - final Canvas canvas, - final double size, - ) { - Color backgroundColor = Colors.grey; - String text = ''; - - switch (value) { - case DefaultGameSettings.langValueFr: - text = '🇫🇷'; - backgroundColor = Colors.teal; - break; - case DefaultGameSettings.langValueEn: - text = '🇬🇧'; - backgroundColor = Colors.teal; - break; - default: - printlog('Wrong value for lang parameter value: $value'); - } - - final paint = Paint(); - paint.strokeJoin = StrokeJoin.round; - paint.strokeWidth = 3; - - // Colored background - paint.color = backgroundColor; - paint.style = PaintingStyle.fill; - canvas.drawRect(Rect.fromPoints(const Offset(0, 0), Offset(size, size)), paint); - - // centered text value - final textSpan = TextSpan( - text: text, - style: TextStyle( - color: Colors.black, - fontSize: size / 2.6, - fontWeight: FontWeight.bold, - ), - ); - final textPainter = TextPainter( - text: textSpan, - textDirection: TextDirection.ltr, - textAlign: TextAlign.center, - ); - textPainter.layout(); - textPainter.paint( - canvas, - Offset( - (size - textPainter.width) * 0.5, - (size - textPainter.height) * 0.5, - ), - ); - } } diff --git a/lib/ui/parameters/parameter_widget.dart b/lib/ui/parameters/parameter_widget.dart new file mode 100644 index 0000000000000000000000000000000000000000..2d96feb2173adee9bff9b7c10dc6c62b054d9207 --- /dev/null +++ b/lib/ui/parameters/parameter_widget.dart @@ -0,0 +1,114 @@ +import 'package:flutter/material.dart'; + +import 'package:wordguessing/config/default_game_settings.dart'; +import 'package:wordguessing/models/settings/settings_game.dart'; +import 'package:wordguessing/models/settings/settings_global.dart'; +import 'package:wordguessing/ui/helpers/styled_button.dart'; +import 'package:wordguessing/utils/tools.dart'; + +class ParameterWidget extends StatelessWidget { + const ParameterWidget({ + super.key, + required this.code, + required this.value, + required this.isSelected, + required this.size, + required this.gameSettings, + required this.globalSettings, + required this.onPressed, + }); + + final String code; + final String value; + final bool isSelected; + final double size; + final GameSettings gameSettings; + final GlobalSettings globalSettings; + final VoidCallback onPressed; + + static const Color buttonColorActive = Colors.blue; + static const Color buttonColorInactive = Colors.white; + static const double buttonBorderWidth = 4.0; + static const double buttonBorderRadius = 12.0; + + @override + Widget build(BuildContext context) { + Widget content = const SizedBox.shrink(); + + switch (code) { + case DefaultGameSettings.parameterCodeGameType: + content = getGameTypeParameterItem(); + break; + case DefaultGameSettings.parameterCodeLangValue: + content = getLangValueParameterItem(); + break; + default: + printlog('Unknown parameter: $code/$value'); + content = getUnknownParameterItem(); + } + + final Color buttonColor = isSelected ? buttonColorActive : buttonColorInactive; + + return Container( + decoration: BoxDecoration( + color: buttonColor, + borderRadius: BorderRadius.circular(buttonBorderRadius), + border: Border.all( + color: buttonColor, + width: buttonBorderWidth, + ), + ), + child: content, + ); + } + + // "unknown" parameter -> simple block with text + Widget getUnknownParameterItem() { + return StyledButton.text( + caption: '$code / $value', + color: Colors.grey, + onPressed: null, + ); + } + + Widget getGameTypeParameterItem() { + const Color backgroundColor = Colors.teal; + + return StyledButton( + color: backgroundColor, + onPressed: onPressed, + child: Image( + image: AssetImage('assets/ui/${DefaultGameSettings.parameterCodeGameType}_$value.png'), + fit: BoxFit.fill, + ), + ); + } + + Widget getLangValueParameterItem() { + const Color backgroundColor = Colors.teal; + + String text = ''; + + switch (value) { + case DefaultGameSettings.langValueFr: + text = '🇫🇷'; + break; + case DefaultGameSettings.langValueEn: + text = '🇬🇧'; + break; + default: + printlog('Wrong value for lang parameter value: $value'); + } + + return StyledButton( + color: backgroundColor, + onPressed: onPressed, + child: Text( + text, + style: TextStyle( + fontSize: 70, + ), + ), + ); + } +} diff --git a/lib/ui/widgets/actions/button_delete_saved_game.dart b/lib/ui/widgets/actions/button_delete_saved_game.dart index 0bf51b1734d40d31bec6ee6b3c05660b3d916b78..30257309515615e2914459997f09321f931ed4ce 100644 --- a/lib/ui/widgets/actions/button_delete_saved_game.dart +++ b/lib/ui/widgets/actions/button_delete_saved_game.dart @@ -2,20 +2,22 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:wordguessing/cubit/game_cubit.dart'; +import 'package:wordguessing/ui/helpers/styled_button.dart'; class DeleteSavedGameButton extends StatelessWidget { const DeleteSavedGameButton({super.key}); @override Widget build(BuildContext context) { - return TextButton( + return StyledButton( + color: Colors.grey, + onPressed: () { + BlocProvider.of<GameCubit>(context).deleteSavedGame(); + }, child: const Image( image: AssetImage('assets/ui/button_delete_saved_game.png'), fit: BoxFit.fill, ), - onPressed: () { - BlocProvider.of<GameCubit>(context).deleteSavedGame(); - }, ); } } diff --git a/lib/ui/widgets/actions/button_game_quit.dart b/lib/ui/widgets/actions/button_game_quit.dart index db54a2b3ed81c05ab53d990f98d853848a86766a..e31c5293e963789e07992a95512b1c1f5db16862 100644 --- a/lib/ui/widgets/actions/button_game_quit.dart +++ b/lib/ui/widgets/actions/button_game_quit.dart @@ -2,20 +2,22 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:wordguessing/cubit/game_cubit.dart'; +import 'package:wordguessing/ui/helpers/styled_button.dart'; class QuitGameButton extends StatelessWidget { const QuitGameButton({super.key}); @override Widget build(BuildContext context) { - return TextButton( + return StyledButton( + color: Colors.red, + onPressed: () { + BlocProvider.of<GameCubit>(context).quitGame(); + }, child: const Image( image: AssetImage('assets/ui/button_back.png'), fit: BoxFit.fill, ), - onPressed: () { - BlocProvider.of<GameCubit>(context).quitGame(); - }, ); } } diff --git a/lib/ui/widgets/actions/button_game_start_new.dart b/lib/ui/widgets/actions/button_game_start_new.dart index dede701ccd80bc41b5cc3e14154694836cceb50f..008a21c8c7d46492b8aadd8df0c97e13df66ab3b 100644 --- a/lib/ui/widgets/actions/button_game_start_new.dart +++ b/lib/ui/widgets/actions/button_game_start_new.dart @@ -4,6 +4,7 @@ import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:wordguessing/cubit/game_cubit.dart'; import 'package:wordguessing/cubit/settings_game_cubit.dart'; import 'package:wordguessing/cubit/settings_global_cubit.dart'; +import 'package:wordguessing/ui/helpers/styled_button.dart'; class StartNewGameButton extends StatelessWidget { const StartNewGameButton({super.key}); @@ -14,17 +15,18 @@ class StartNewGameButton extends StatelessWidget { builder: (BuildContext context, GameSettingsState gameSettingsState) { return BlocBuilder<GlobalSettingsCubit, GlobalSettingsState>( builder: (BuildContext context, GlobalSettingsState globalSettingsState) { - return TextButton( - child: const Image( - image: AssetImage('assets/ui/button_start.png'), - fit: BoxFit.fill, - ), + return StyledButton( + color: Colors.blue, onPressed: () { BlocProvider.of<GameCubit>(context).startNewGame( gameSettings: gameSettingsState.settings, globalSettings: globalSettingsState.settings, ); }, + child: const Image( + image: AssetImage('assets/ui/button_start.png'), + fit: BoxFit.fill, + ), ); }, ); diff --git a/lib/ui/widgets/actions/button_resume_saved_game.dart b/lib/ui/widgets/actions/button_resume_saved_game.dart index 4e26624a12339a7da2eaf8f801f667d068c049b8..3dde253823439474ecab9dd38e3da3b36468187c 100644 --- a/lib/ui/widgets/actions/button_resume_saved_game.dart +++ b/lib/ui/widgets/actions/button_resume_saved_game.dart @@ -2,20 +2,22 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:wordguessing/cubit/game_cubit.dart'; +import 'package:wordguessing/ui/helpers/styled_button.dart'; class ResumeSavedGameButton extends StatelessWidget { const ResumeSavedGameButton({super.key}); @override Widget build(BuildContext context) { - return TextButton( + return StyledButton( + color: Colors.blue, + onPressed: () { + BlocProvider.of<GameCubit>(context).resumeSavedGame(); + }, child: const Image( image: AssetImage('assets/ui/button_resume_game.png'), fit: BoxFit.fill, ), - onPressed: () { - BlocProvider.of<GameCubit>(context).resumeSavedGame(); - }, ); } } diff --git a/lib/ui/widgets/game/pick_word_game_image.dart b/lib/ui/widgets/game/pick_word_game_image.dart index 705450c37d087f6e4df655d39ce1f9c364bfc00e..78b6290228c1c1455c16e2c1d52806715f1683e6 100644 --- a/lib/ui/widgets/game/pick_word_game_image.dart +++ b/lib/ui/widgets/game/pick_word_game_image.dart @@ -1,6 +1,5 @@ import 'package:flutter/material.dart'; - class PickWordGameImageContainer extends StatelessWidget { const PickWordGameImageContainer({super.key, required this.image}); diff --git a/lib/ui/widgets/global_app_bar.dart b/lib/ui/widgets/global_app_bar.dart index 540f87eeb8d54a47a4be17539dee60b213df0cb6..dc3015ab192ed7a4e9ec5c57b935708d6fa1e260 100644 --- a/lib/ui/widgets/global_app_bar.dart +++ b/lib/ui/widgets/global_app_bar.dart @@ -6,6 +6,7 @@ import 'package:wordguessing/cubit/game_cubit.dart'; import 'package:wordguessing/cubit/nav_cubit.dart'; import 'package:wordguessing/models/game/game.dart'; import 'package:wordguessing/ui/helpers/app_titles.dart'; +import 'package:wordguessing/ui/helpers/styled_button.dart'; class GlobalAppBar extends StatelessWidget implements PreferredSizeWidget { const GlobalAppBar({super.key}); @@ -21,15 +22,16 @@ class GlobalAppBar extends StatelessWidget implements PreferredSizeWidget { final List<Widget> menuActions = []; if (currentGame.isRunning && !currentGame.isFinished) { - menuActions.add(TextButton( - child: const Image( - image: AssetImage('assets/ui/button_back.png'), - fit: BoxFit.fill, - ), + menuActions.add(StyledButton( + color: Colors.red, onPressed: () {}, onLongPress: () { BlocProvider.of<GameCubit>(context).quitGame(); }, + child: const Image( + image: AssetImage('assets/ui/button_back.png'), + fit: BoxFit.fill, + ), )); } else { if (pageIndex == Menu.indexGame) { diff --git a/pubspec.lock b/pubspec.lock index e0ab96ebb656b1260018d45af586d9ec14ba4a7e..229631c1f86719287b9acdfad6debc0e9f46254d 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -17,6 +17,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.11.0" + auto_size_text: + dependency: "direct main" + description: + name: auto_size_text + sha256: "3f5261cd3fb5f2a9ab4e2fc3fba84fd9fcaac8821f20a1d4e71f557521b22599" + url: "https://pub.dev" + source: hosted + version: "3.0.0" bloc: dependency: transitive description: @@ -53,10 +61,10 @@ packages: dependency: transitive description: name: crypto - sha256: ff625774173754681d66daaf4a448684fb04b78f902da9cb3d308c19cc5e8bab + sha256: ec30d999af904f33454ba22ed9a86162b35e52b44ac4807d1d93c288041d7d27 url: "https://pub.dev" source: hosted - version: "3.0.3" + version: "3.0.5" easy_localization: dependency: "direct main" description: @@ -85,18 +93,18 @@ packages: dependency: transitive description: name: ffi - sha256: "493f37e7df1804778ff3a53bd691d8692ddf69702cf4c1c1096a2e41b4779e21" + sha256: "16ed7b077ef01ad6170a3d0c57caa4a112a38d7a2ed5602e0aca9ca6f3d98da6" url: "https://pub.dev" source: hosted - version: "2.1.2" + version: "2.1.3" file: dependency: transitive description: name: file - sha256: "5fc22d7c25582e38ad9a8515372cd9a93834027aacf1801cf01164dac0ffa08c" + sha256: a3b4f84adafef897088c160faf7dfffb7696046cb13ae90b508c2cbc95d3b8d4 url: "https://pub.dev" source: hosted - version: "7.0.0" + version: "7.0.1" flutter: dependency: "direct main" description: flutter @@ -114,10 +122,10 @@ packages: dependency: "direct dev" description: name: flutter_lints - sha256: "3f41d009ba7172d5ff9be5f6e6e6abb4300e263aab8866d2a0842ed2a70f8f0c" + sha256: "5398f14efa795ffb7a33e9b6a08798b26a180edac4ad7db3f231e40f82ce11e1" url: "https://pub.dev" source: hosted - version: "4.0.0" + version: "5.0.0" flutter_localizations: dependency: transitive description: flutter @@ -140,10 +148,10 @@ packages: dependency: transitive description: name: http - sha256: "761a297c042deedc1ffbb156d6e2af13886bb305c2a343a4d972504cd67dd938" + sha256: b9c29a161230ee03d3ccf545097fccd9b87a5264228c5d348202e0f0c28f9010 url: "https://pub.dev" source: hosted - version: "1.2.1" + version: "1.2.2" http_parser: dependency: transitive description: @@ -172,26 +180,26 @@ packages: dependency: transitive description: name: lints - sha256: "976c774dd944a42e83e2467f4cc670daef7eed6295b10b36ae8c85bcbf828235" + sha256: "3315600f3fb3b135be672bf4a178c55f274bebe368325ae18462c89ac1e3b413" url: "https://pub.dev" source: hosted - version: "4.0.0" + version: "5.0.0" material_color_utilities: dependency: transitive description: name: material_color_utilities - sha256: "0e0a020085b65b6083975e499759762399b4475f766c21668c4ecca34ea74e5a" + sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec url: "https://pub.dev" source: hosted - version: "0.8.0" + version: "0.11.1" meta: dependency: transitive description: name: meta - sha256: "7687075e408b093f36e6bbf6c91878cc0d4cd10f409506f7bc996f68220b9136" + sha256: bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7 url: "https://pub.dev" source: hosted - version: "1.12.0" + version: "1.15.0" nested: dependency: transitive description: @@ -204,18 +212,18 @@ packages: dependency: "direct main" description: name: package_info_plus - sha256: b93d8b4d624b4ea19b0a5a208b2d6eff06004bc3ce74c06040b120eeadd00ce0 + sha256: "894f37107424311bdae3e476552229476777b8752c5a2a2369c0cb9a2d5442ef" url: "https://pub.dev" source: hosted - version: "8.0.0" + version: "8.0.3" package_info_plus_platform_interface: dependency: transitive description: name: package_info_plus_platform_interface - sha256: f49918f3433a3146047372f9d4f1f847511f2acd5cd030e1f44fe5a50036b70e + sha256: ac1f4a4847f1ade8e6a87d1f39f5d7c67490738642e2542f559ec38c37489a66 url: "https://pub.dev" source: hosted - version: "3.0.0" + version: "3.0.1" path: dependency: transitive description: @@ -228,18 +236,18 @@ packages: dependency: "direct main" description: name: path_provider - sha256: c9e7d3a4cd1410877472158bee69963a4579f78b68c65a2b7d40d1a7a88bb161 + sha256: fec0d61223fba3154d87759e3cc27fe2c8dc498f6386c6d6fc80d1afdd1bf378 url: "https://pub.dev" source: hosted - version: "2.1.3" + version: "2.1.4" path_provider_android: dependency: transitive description: name: path_provider_android - sha256: "9c96da072b421e98183f9ea7464898428e764bc0ce5567f27ec8693442e72514" + sha256: c464428172cb986b758c6d1724c603097febb8fb855aa265aeecc9280c294d4a url: "https://pub.dev" source: hosted - version: "2.2.5" + version: "2.2.12" path_provider_foundation: dependency: transitive description: @@ -268,10 +276,10 @@ packages: dependency: transitive description: name: path_provider_windows - sha256: "8bc9f22eee8690981c22aa7fc602f5c85b497a6fb2ceb35ee5a5e5ed85ad8170" + sha256: bd6f00dbd873bfb70d0761682da2b3a2c2fccc2b9e84c495821639601d81afe7 url: "https://pub.dev" source: hosted - version: "2.2.1" + version: "2.3.0" platform: dependency: transitive description: @@ -300,58 +308,58 @@ packages: dependency: transitive description: name: shared_preferences - sha256: d3bbe5553a986e83980916ded2f0b435ef2e1893dfaa29d5a7a790d0eca12180 + sha256: "746e5369a43170c25816cc472ee016d3a66bc13fcf430c0bc41ad7b4b2922051" url: "https://pub.dev" source: hosted - version: "2.2.3" + version: "2.3.2" shared_preferences_android: dependency: transitive description: name: shared_preferences_android - sha256: "93d0ec9dd902d85f326068e6a899487d1f65ffcd5798721a95330b26c8131577" + sha256: "3b9febd815c9ca29c9e3520d50ec32f49157711e143b7a4ca039eb87e8ade5ab" url: "https://pub.dev" source: hosted - version: "2.2.3" + version: "2.3.3" shared_preferences_foundation: dependency: transitive description: name: shared_preferences_foundation - sha256: "0a8a893bf4fd1152f93fec03a415d11c27c74454d96e2318a7ac38dd18683ab7" + sha256: "07e050c7cd39bad516f8d64c455f04508d09df104be326d8c02551590a0d513d" url: "https://pub.dev" source: hosted - version: "2.4.0" + version: "2.5.3" shared_preferences_linux: dependency: transitive description: name: shared_preferences_linux - sha256: "9f2cbcf46d4270ea8be39fa156d86379077c8a5228d9dfdb1164ae0bb93f1faa" + sha256: "580abfd40f415611503cae30adf626e6656dfb2f0cee8f465ece7b6defb40f2f" url: "https://pub.dev" source: hosted - version: "2.3.2" + version: "2.4.1" shared_preferences_platform_interface: dependency: transitive description: name: shared_preferences_platform_interface - sha256: "22e2ecac9419b4246d7c22bfbbda589e3acf5c0351137d87dd2939d984d37c3b" + sha256: "57cbf196c486bc2cf1f02b85784932c6094376284b3ad5779d1b1c6c6a816b80" url: "https://pub.dev" source: hosted - version: "2.3.2" + version: "2.4.1" shared_preferences_web: dependency: transitive description: name: shared_preferences_web - sha256: "9aee1089b36bd2aafe06582b7d7817fd317ef05fc30e6ba14bff247d0933042a" + sha256: d2ca4132d3946fec2184261726b355836a82c33d7d5b67af32692aff18a4684e url: "https://pub.dev" source: hosted - version: "2.3.0" + version: "2.4.2" shared_preferences_windows: dependency: transitive description: name: shared_preferences_windows - sha256: "841ad54f3c8381c480d0c9b508b89a34036f512482c407e6df7a9c4aa2ef8f59" + sha256: "94ef0f72b2d71bc3e700e025db3710911bd51a71cefb65cc609dd0d9a982e3c1" url: "https://pub.dev" source: hosted - version: "2.3.2" + version: "2.4.1" sky_engine: dependency: transitive description: flutter @@ -369,18 +377,18 @@ packages: dependency: transitive description: name: string_scanner - sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde" + sha256: "688af5ed3402a4bde5b3a6c15fd768dbf2621a614950b17f04626c431ab3c4c3" url: "https://pub.dev" source: hosted - version: "1.2.0" + version: "1.3.0" synchronized: dependency: transitive description: name: synchronized - sha256: "539ef412b170d65ecdafd780f924e5be3f60032a1128df156adad6c5b373d558" + sha256: "69fe30f3a8b04a0be0c15ae6490fc859a78ef4c43ae2dd5e8a623d45bfcf9225" url: "https://pub.dev" source: hosted - version: "3.1.0+1" + version: "3.3.0+3" term_glyph: dependency: transitive description: @@ -401,10 +409,10 @@ packages: dependency: "direct main" description: name: unicons - sha256: dbfcf93ff4d4ea19b324113857e358e4882115ab85db04417a4ba1c72b17a670 + sha256: f3eab9d87c226415ef857cfd2167e1d12ad81ea1f5783b46cf644224fea4eab7 url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "3.0.0" vector_math: dependency: transitive description: @@ -417,26 +425,26 @@ packages: dependency: transitive description: name: web - sha256: "97da13628db363c635202ad97068d47c5b8aa555808e7a9411963c533b449b27" + sha256: cd3543bd5798f6ad290ea73d210f423502e71900302dde696f8bff84bf89a1cb url: "https://pub.dev" source: hosted - version: "0.5.1" + version: "1.1.0" win32: dependency: transitive description: name: win32 - sha256: a79dbe579cb51ecd6d30b17e0cae4e0ea15e2c0e66f69ad4198f22a6789e94f4 + sha256: "4d45dc9069dba4619dc0ebd93c7cec5e66d8482cb625a370ac806dcc8165f2ec" url: "https://pub.dev" source: hosted - version: "5.5.1" + version: "5.5.5" xdg_directories: dependency: transitive description: name: xdg_directories - sha256: faea9dee56b520b55a566385b84f2e8de55e7496104adada9962e0bd11bcff1d + sha256: "7a3f37b05d989967cdddcbb571f1ea834867ae2faa29725fd085180e0883aa15" url: "https://pub.dev" source: hosted - version: "1.0.4" + version: "1.1.0" sdks: - dart: ">=3.4.0 <4.0.0" - flutter: ">=3.22.0" + dart: ">=3.5.0 <4.0.0" + flutter: ">=3.24.0" diff --git a/pubspec.yaml b/pubspec.yaml index 749d20f0dff6f74571043563b650c6c42013ca0c..4a7d65aef2a1f25ab91416e60ce8147e4d811d82 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -3,7 +3,7 @@ description: A wordguessing game application. publish_to: "none" -version: 0.2.0+65 +version: 0.2.1+66 environment: sdk: "^3.0.0" @@ -13,6 +13,7 @@ dependencies: sdk: flutter # base + auto_size_text: ^3.0.0 easy_localization: ^3.0.1 equatable: ^2.0.5 flutter_bloc: ^8.1.1 @@ -20,20 +21,20 @@ dependencies: hydrated_bloc: ^9.0.0 package_info_plus: ^8.0.0 path_provider: ^2.0.11 - unicons: ^2.1.1 + unicons: ^3.0.0 # specific # (none) dev_dependencies: - flutter_lints: ^4.0.0 + flutter_lints: ^5.0.0 flutter: uses-material-design: true assets: - assets/images/ - - assets/ui/ - assets/translations/ + - assets/ui/ fonts: - family: Nunito @@ -46,4 +47,3 @@ flutter: weight: 400 - asset: assets/fonts/Nunito-Light.ttf weight: 300 - diff --git a/resources/app/build_application_resources.sh b/resources/app/build_application_resources.sh index 6d67b8f4f9eca701d1aed7331ef41dfb0bd44f20..1ace90d0e0029bf1704122d2b60bced59d5ed348 100755 --- a/resources/app/build_application_resources.sh +++ b/resources/app/build_application_resources.sh @@ -1,9 +1,18 @@ #! /bin/bash # Check dependencies -command -v inkscape >/dev/null 2>&1 || { echo >&2 "I require inkscape but it's not installed. Aborting."; exit 1; } -command -v scour >/dev/null 2>&1 || { echo >&2 "I require scour but it's not installed. Aborting."; exit 1; } -command -v optipng >/dev/null 2>&1 || { echo >&2 "I require optipng but it's not installed. Aborting."; exit 1; } +command -v inkscape >/dev/null 2>&1 || { + echo >&2 "I require inkscape but it's not installed. Aborting." + exit 1 +} +command -v scour >/dev/null 2>&1 || { + echo >&2 "I require scour but it's not installed. Aborting." + exit 1 +} +command -v optipng >/dev/null 2>&1 || { + echo >&2 "I require optipng but it's not installed. Aborting." + exit 1 +} CURRENT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)" BASE_DIR="$(dirname "$(dirname "${CURRENT_DIR}")")" @@ -31,14 +40,14 @@ function optimize_svg() { cp ${SVG} ${SVG}.tmp scour \ - --remove-descriptive-elements \ - --enable-id-stripping \ - --enable-viewboxing \ - --enable-comment-stripping \ - --nindent=4 \ - --quiet \ - -i ${SVG}.tmp \ - -o ${SVG} + --remove-descriptive-elements \ + --enable-id-stripping \ + --enable-viewboxing \ + --enable-comment-stripping \ + --nindent=4 \ + --quiet \ + -i ${SVG}.tmp \ + -o ${SVG} rm ${SVG}.tmp } @@ -57,10 +66,10 @@ function build_application_icon() { TARGET_PNG="${TARGET}.png" inkscape \ - --export-width=${ICON_SIZE} \ - --export-height=${ICON_SIZE} \ - --export-filename=${TARGET_PNG} \ - ${SOURCE_ICON} + --export-width=${ICON_SIZE} \ + --export-height=${ICON_SIZE} \ + --export-filename=${TARGET_PNG} \ + ${SOURCE_ICON} optipng ${OPTIPNG_OPTIONS} ${TARGET_PNG} } @@ -76,10 +85,10 @@ function build_fastlane_image() { TARGET_PNG="${TARGET}.png" inkscape \ - --export-width=${WIDTH} \ - --export-height=${HEIGHT} \ - --export-filename=${TARGET_PNG} \ - ${SOURCE_FASTLANE} + --export-width=${WIDTH} \ + --export-height=${HEIGHT} \ + --export-filename=${TARGET_PNG} \ + ${SOURCE_FASTLANE} optipng ${OPTIPNG_OPTIONS} ${TARGET_PNG} } @@ -94,24 +103,24 @@ function build_launch_image() { TARGET_PNG="${TARGET}.png" inkscape \ - --export-width=${ICON_SIZE} \ - --export-height=${ICON_SIZE} \ - --export-filename=${TARGET_PNG} \ - ${SOURCE_LAUNCH_IMAGE} + --export-width=${ICON_SIZE} \ + --export-height=${ICON_SIZE} \ + --export-filename=${TARGET_PNG} \ + ${SOURCE_LAUNCH_IMAGE} optipng ${OPTIPNG_OPTIONS} ${TARGET_PNG} } -build_application_icon 72 ${BASE_DIR}/android/app/src/main/res/mipmap-hdpi/ic_launcher -build_application_icon 48 ${BASE_DIR}/android/app/src/main/res/mipmap-mdpi/ic_launcher -build_application_icon 96 ${BASE_DIR}/android/app/src/main/res/mipmap-xhdpi/ic_launcher +build_application_icon 72 ${BASE_DIR}/android/app/src/main/res/mipmap-hdpi/ic_launcher +build_application_icon 48 ${BASE_DIR}/android/app/src/main/res/mipmap-mdpi/ic_launcher +build_application_icon 96 ${BASE_DIR}/android/app/src/main/res/mipmap-xhdpi/ic_launcher build_application_icon 144 ${BASE_DIR}/android/app/src/main/res/mipmap-xxhdpi/ic_launcher build_application_icon 192 ${BASE_DIR}/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher build_application_icon 512 ${BASE_DIR}/fastlane/metadata/android/en-US/images/icon -build_launch_image 72 ${BASE_DIR}/android/app/src/main/res/mipmap-hdpi/launch_image -build_launch_image 48 ${BASE_DIR}/android/app/src/main/res/mipmap-mdpi/launch_image -build_launch_image 96 ${BASE_DIR}/android/app/src/main/res/mipmap-xhdpi/launch_image +build_launch_image 72 ${BASE_DIR}/android/app/src/main/res/mipmap-hdpi/launch_image +build_launch_image 48 ${BASE_DIR}/android/app/src/main/res/mipmap-mdpi/launch_image +build_launch_image 96 ${BASE_DIR}/android/app/src/main/res/mipmap-xhdpi/launch_image build_launch_image 144 ${BASE_DIR}/android/app/src/main/res/mipmap-xxhdpi/launch_image build_launch_image 192 ${BASE_DIR}/android/app/src/main/res/mipmap-xxxhdpi/launch_image diff --git a/resources/data/01_download_images.sh b/resources/data/01_download_images.sh index b3a802dae89dba9547ef59c7b6faff5ce74e6e15..54ec8eaece0d89a72629ba558818b92bf2eaa900 100755 --- a/resources/data/01_download_images.sh +++ b/resources/data/01_download_images.sh @@ -4,8 +4,14 @@ set -o errexit set -o nounset set -o pipefail -command -v convert >/dev/null 2>&1 || { echo >&2 "I require convert (imagemagick) but it's not installed. Aborting."; exit 1; } -command -v jq >/dev/null 2>&1 || { echo >&2 "I require jq (json parser) but it's not installed. Aborting."; exit 1; } +command -v convert >/dev/null 2>&1 || { + echo >&2 "I require convert (imagemagick) but it's not installed. Aborting." + exit 1 +} +command -v jq >/dev/null 2>&1 || { + echo >&2 "I require jq (json parser) but it's not installed. Aborting." + exit 1 +} CURRENT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)" BASE_DIR="$(dirname "${CURRENT_DIR}")" diff --git a/resources/data/03_optimize_images.sh b/resources/data/03_optimize_images.sh index 6dcc0d0b8a1c4119436c07b950c2b90b7c233e86..7d22444c1b19f3a8009060e70593f365d102fbf7 100755 --- a/resources/data/03_optimize_images.sh +++ b/resources/data/03_optimize_images.sh @@ -1,7 +1,13 @@ #!/usr/bin/env bash -command -v optipng >/dev/null 2>&1 || { echo >&2 "I require optipng but it's not installed. Aborting."; exit 1; } -command -v convert >/dev/null 2>&1 || { echo >&2 "I require convert (imagemagick) but it's not installed. Aborting."; exit 1; } +command -v optipng >/dev/null 2>&1 || { + echo >&2 "I require optipng but it's not installed. Aborting." + exit 1 +} +command -v convert >/dev/null 2>&1 || { + echo >&2 "I require convert (imagemagick) but it's not installed. Aborting." + exit 1 +} CURRENT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)" diff --git a/resources/data/04_build_images_board.sh b/resources/data/04_build_images_board.sh index 2650396a9aec3de574e6e19dc13d9553fccbdd1f..f1ae82430463874bca347c228d32bc18291ef10b 100755 --- a/resources/data/04_build_images_board.sh +++ b/resources/data/04_build_images_board.sh @@ -1,11 +1,13 @@ #!/usr/bin/env bash -command -v jq >/dev/null 2>&1 || { echo >&2 "I require jq (json parser) but it's not installed. Aborting."; exit 1; } +command -v jq >/dev/null 2>&1 || { + echo >&2 "I require jq (json parser) but it's not installed. Aborting." + exit 1 +} CURRENT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)" BASE_DIR="$(dirname "${CURRENT_DIR}")" - IMAGES_CACHE_FOLDER="${CURRENT_DIR}/cache" IMAGES_OPTIMIZED_FOLDER="${IMAGES_CACHE_FOLDER}/optimized" OUTPUT_IMAGES_BOARD_FILE="${IMAGES_CACHE_FOLDER}/images_board.html" @@ -20,34 +22,34 @@ echo "Building images board file..." FILES="$(find "${IMAGES_OPTIMIZED_FOLDER}" -type f -name "*.png" | sed "s|^${IMAGES_OPTIMIZED_FOLDER}/||g" | sort)" KEYWORDS="$(echo "${FILES}" | cut -d'/' -f1 | sort | uniq)" -echo "<!DOCTYPE html>" > "${OUTPUT_IMAGES_BOARD_FILE}" -echo "<html lang=\"en\">" >> "${OUTPUT_IMAGES_BOARD_FILE}" -echo " <head>" >> "${OUTPUT_IMAGES_BOARD_FILE}" -echo " <style>" >> "${OUTPUT_IMAGES_BOARD_FILE}" -echo " table { border-collapse: collapse; border: solid 2px black; width: 100%; }" >> "${OUTPUT_IMAGES_BOARD_FILE}" -echo " tr { }" >> "${OUTPUT_IMAGES_BOARD_FILE}" -echo " td { border: solid 1px black; }" >> "${OUTPUT_IMAGES_BOARD_FILE}" -echo " span { font-weight: bold; }" >> "${OUTPUT_IMAGES_BOARD_FILE}" -echo " img { border: solid 1px grey; }" >> "${OUTPUT_IMAGES_BOARD_FILE}" -echo " </style>" >> "${OUTPUT_IMAGES_BOARD_FILE}" -echo " </head>" >> "${OUTPUT_IMAGES_BOARD_FILE}" -echo " <body>" >> "${OUTPUT_IMAGES_BOARD_FILE}" -echo " <table>" >> "${OUTPUT_IMAGES_BOARD_FILE}" +echo "<!DOCTYPE html>" >"${OUTPUT_IMAGES_BOARD_FILE}" +echo "<html lang=\"en\">" >>"${OUTPUT_IMAGES_BOARD_FILE}" +echo " <head>" >>"${OUTPUT_IMAGES_BOARD_FILE}" +echo " <style>" >>"${OUTPUT_IMAGES_BOARD_FILE}" +echo " table { border-collapse: collapse; border: solid 2px black; width: 100%; }" >>"${OUTPUT_IMAGES_BOARD_FILE}" +echo " tr { }" >>"${OUTPUT_IMAGES_BOARD_FILE}" +echo " td { border: solid 1px black; }" >>"${OUTPUT_IMAGES_BOARD_FILE}" +echo " span { font-weight: bold; }" >>"${OUTPUT_IMAGES_BOARD_FILE}" +echo " img { border: solid 1px grey; }" >>"${OUTPUT_IMAGES_BOARD_FILE}" +echo " </style>" >>"${OUTPUT_IMAGES_BOARD_FILE}" +echo " </head>" >>"${OUTPUT_IMAGES_BOARD_FILE}" +echo " <body>" >>"${OUTPUT_IMAGES_BOARD_FILE}" +echo " <table>" >>"${OUTPUT_IMAGES_BOARD_FILE}" while read -r KEYWORD; do if [[ -n "${KEYWORD}" ]]; then - echo " <tr>" >> "${OUTPUT_IMAGES_BOARD_FILE}" - echo " <td><span>${KEYWORD}</span></td>" >> "${OUTPUT_IMAGES_BOARD_FILE}" + echo " <tr>" >>"${OUTPUT_IMAGES_BOARD_FILE}" + echo " <td><span>${KEYWORD}</span></td>" >>"${OUTPUT_IMAGES_BOARD_FILE}" FILES_KEYWORD="$(echo "${FILES}" | grep -e "^${KEYWORD}/")" - echo " <td>" >> "${OUTPUT_IMAGES_BOARD_FILE}" + echo " <td>" >>"${OUTPUT_IMAGES_BOARD_FILE}" while read -r FILE; do - echo " <img src=\"optimized/${FILE}\">" >> "${OUTPUT_IMAGES_BOARD_FILE}" + echo " <img src=\"optimized/${FILE}\">" >>"${OUTPUT_IMAGES_BOARD_FILE}" done < <(echo "${FILES_KEYWORD}") - echo " </td>" >> "${OUTPUT_IMAGES_BOARD_FILE}" - echo " </tr>" >> "${OUTPUT_IMAGES_BOARD_FILE}" + echo " </td>" >>"${OUTPUT_IMAGES_BOARD_FILE}" + echo " </tr>" >>"${OUTPUT_IMAGES_BOARD_FILE}" fi done < <(echo "${KEYWORDS}") -echo " </table>" >> "${OUTPUT_IMAGES_BOARD_FILE}" -echo " </body>" >> "${OUTPUT_IMAGES_BOARD_FILE}" -echo "</html>" >> "${OUTPUT_IMAGES_BOARD_FILE}" +echo " </table>" >>"${OUTPUT_IMAGES_BOARD_FILE}" +echo " </body>" >>"${OUTPUT_IMAGES_BOARD_FILE}" +echo "</html>" >>"${OUTPUT_IMAGES_BOARD_FILE}" echo "done." diff --git a/resources/data/05_build_assets_list.sh b/resources/data/05_build_assets_list.sh index d46f2e89fbbbf47f859ef049251180f85a8f5b31..93e50019405024ccafe622d113a00ff60d1d6867 100755 --- a/resources/data/05_build_assets_list.sh +++ b/resources/data/05_build_assets_list.sh @@ -1,6 +1,9 @@ #!/usr/bin/env bash -command -v jq >/dev/null 2>&1 || { echo >&2 "I require jq (json parser) but it's not installed. Aborting."; exit 1; } +command -v jq >/dev/null 2>&1 || { + echo >&2 "I require jq (json parser) but it's not installed. Aborting." + exit 1 +} CURRENT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)" BASE_DIR="$(dirname "${CURRENT_DIR}")" @@ -32,8 +35,8 @@ echo "Building words/images assets json file..." FILES="$(find "${SOURCE_IMAGES_OPTIMIZED_FOLDER}" -type f -name "*.png" | sed "s|^${SOURCE_IMAGES_OPTIMIZED_FOLDER}/||g" | sort)" OUTPUT_WORDS_LIST_TMP="${OUTPUT_WORDS_LIST}.tmp" -echo "{" > "${OUTPUT_WORDS_LIST_TMP}" -echo " \"words\": {" >> "${OUTPUT_WORDS_LIST_TMP}" +echo "{" >"${OUTPUT_WORDS_LIST_TMP}" +echo " \"words\": {" >>"${OUTPUT_WORDS_LIST_TMP}" FIRST_WORD=1 while read -r LINE; do if [[ -n "${LINE}" ]]; then @@ -44,14 +47,14 @@ while read -r LINE; do KEY="$(echo "${LINE}" | md5sum | awk '{print $1;}')" if [[ ${FIRST_WORD} -eq 0 ]]; then - echo " ," >> "${OUTPUT_WORDS_LIST_TMP}" + echo " ," >>"${OUTPUT_WORDS_LIST_TMP}" fi - echo " \"${KEY}\": {" >> "${OUTPUT_WORDS_LIST_TMP}" - echo " \"fr\": \"${WORD_FR}\"," >> "${OUTPUT_WORDS_LIST_TMP}" - echo " \"en\": \"${WORD_EN}\"," >> "${OUTPUT_WORDS_LIST_TMP}" - - echo " \"images\": [" >> "${OUTPUT_WORDS_LIST_TMP}" + echo " \"${KEY}\": {" >>"${OUTPUT_WORDS_LIST_TMP}" + echo " \"fr\": \"${WORD_FR}\"," >>"${OUTPUT_WORDS_LIST_TMP}" + echo " \"en\": \"${WORD_EN}\"," >>"${OUTPUT_WORDS_LIST_TMP}" + + echo " \"images\": [" >>"${OUTPUT_WORDS_LIST_TMP}" FOLDER_KEY="${WORD_FR}" FILES_FOR_THIS_WORD="$(echo "${FILES}" | grep -E "^${FOLDER_KEY}/")" @@ -59,9 +62,9 @@ while read -r LINE; do FIRST_FILE=1 while read -r FILE; do if [[ ${FIRST_FILE} -eq 0 ]]; then - echo " ," >> "${OUTPUT_WORDS_LIST_TMP}" + echo " ," >>"${OUTPUT_WORDS_LIST_TMP}" fi - echo " \"$(echo "${FILE}" | sed "s|${FOLDER_KEY}/||g")\"" >> "${OUTPUT_WORDS_LIST_TMP}" + echo " \"$(echo "${FILE}" | sed "s|${FOLDER_KEY}/||g")\"" >>"${OUTPUT_WORDS_LIST_TMP}" FIRST_FILE=0 cp -f "${SOURCE_IMAGES_OPTIMIZED_FOLDER}/${FILE}" "${TARGET_IMAGES_ASSETS_FOLDER}" done < <(echo "${FILES_FOR_THIS_WORD}") @@ -69,18 +72,18 @@ while read -r LINE; do echo "No image found for ${KEY} / ${FOLDER_KEY}" fi - echo " ]" >> "${OUTPUT_WORDS_LIST_TMP}" - echo " }" >> "${OUTPUT_WORDS_LIST_TMP}" + echo " ]" >>"${OUTPUT_WORDS_LIST_TMP}" + echo " }" >>"${OUTPUT_WORDS_LIST_TMP}" FIRST_WORD=0 fi done < <(cat "${SOURCE_CSV_FILE}" | sort | uniq) -echo " }" >> "${OUTPUT_WORDS_LIST_TMP}" -echo "}" >> "${OUTPUT_WORDS_LIST_TMP}" +echo " }" >>"${OUTPUT_WORDS_LIST_TMP}" +echo "}" >>"${OUTPUT_WORDS_LIST_TMP}" # Format json -cat "${OUTPUT_WORDS_LIST_TMP}" | jq > "${OUTPUT_WORDS_LIST}" +cat "${OUTPUT_WORDS_LIST_TMP}" | jq >"${OUTPUT_WORDS_LIST}" rm "${OUTPUT_WORDS_LIST_TMP}" # inject json file in app code diff --git a/resources/ui/build_ui_resources.sh b/resources/ui/build_ui_resources.sh index 4f365ede7d83140ce6309a3083580f2662b30990..4fa137ab1692c96122885777565e947abba99f66 100755 --- a/resources/ui/build_ui_resources.sh +++ b/resources/ui/build_ui_resources.sh @@ -1,9 +1,18 @@ #! /bin/bash # Check dependencies -command -v inkscape >/dev/null 2>&1 || { echo >&2 "I require inkscape but it's not installed. Aborting."; exit 1; } -command -v scour >/dev/null 2>&1 || { echo >&2 "I require scour but it's not installed. Aborting."; exit 1; } -command -v optipng >/dev/null 2>&1 || { echo >&2 "I require optipng but it's not installed. Aborting."; exit 1; } +command -v inkscape >/dev/null 2>&1 || { + echo >&2 "I require inkscape but it's not installed. Aborting." + exit 1 +} +command -v scour >/dev/null 2>&1 || { + echo >&2 "I require scour but it's not installed. Aborting." + exit 1 +} +command -v optipng >/dev/null 2>&1 || { + echo >&2 "I require optipng but it's not installed. Aborting." + exit 1 +} CURRENT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)" BASE_DIR="$(dirname "$(dirname "${CURRENT_DIR}")")" @@ -40,14 +49,14 @@ function optimize_svg() { cp ${SOURCE} ${SOURCE}.tmp scour \ - --remove-descriptive-elements \ - --enable-id-stripping \ - --enable-viewboxing \ - --enable-comment-stripping \ - --nindent=4 \ - --quiet \ - -i ${SOURCE}.tmp \ - -o ${SOURCE} + --remove-descriptive-elements \ + --enable-id-stripping \ + --enable-viewboxing \ + --enable-comment-stripping \ + --nindent=4 \ + --quiet \ + -i ${SOURCE}.tmp \ + -o ${SOURCE} rm ${SOURCE}.tmp } @@ -68,10 +77,10 @@ function build_image() { mkdir -p "$(dirname "${TARGET}")" inkscape \ - --export-width=${ICON_SIZE} \ - --export-height=${ICON_SIZE} \ - --export-filename=${TARGET} \ - "${SOURCE}" + --export-width=${ICON_SIZE} \ + --export-height=${ICON_SIZE} \ + --export-filename=${TARGET} \ + "${SOURCE}" optipng ${OPTIPNG_OPTIONS} "${TARGET}" } @@ -80,8 +89,7 @@ function build_image_for_skin() { SKIN_CODE="$1" # skin images - for SKIN_IMAGE in ${SKIN_IMAGES} - do + for SKIN_IMAGE in ${SKIN_IMAGES}; do build_image ${CURRENT_DIR}/skins/${SKIN_CODE}/${SKIN_IMAGE}.svg ${ASSETS_DIR}/skins/${SKIN_CODE}_${SKIN_IMAGE}.png done } @@ -97,14 +105,11 @@ if [ -d "${ASSETS_DIR}/skins" ]; then fi # build game images -for GAME_IMAGE in ${AVAILABLE_GAME_IMAGES} -do +for GAME_IMAGE in ${AVAILABLE_GAME_IMAGES}; do build_image ${CURRENT_DIR}/images/${GAME_IMAGE}.svg ${ASSETS_DIR}/ui/${GAME_IMAGE}.png done # build skins images -for SKIN in ${AVAILABLE_SKINS} -do +for SKIN in ${AVAILABLE_SKINS}; do build_image_for_skin "${SKIN}" done - diff --git a/resources/ui/images/button_back.svg b/resources/ui/images/button_back.svg index 2622a578dba53ce582afabfc587c2a85a1fb6eaa..018d8b734d2932028fbfce1643c4e888ff1b45b1 100644 --- a/resources/ui/images/button_back.svg +++ b/resources/ui/images/button_back.svg @@ -1,2 +1,2 @@ <?xml version="1.0" encoding="UTF-8"?> -<svg enable-background="new 0 0 100 100" version="1.1" viewBox="0 0 93.665 93.676" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><rect x=".44662" y=".89101" width="92.772" height="91.894" ry="11.689" fill="#e41578" stroke="#fff" stroke-width=".238"/><path d="m59.387 71.362c1.1248 1.1302 4.0012 1.1302 4.0012 0v-45.921c0-1.1316-2.8832-1.1316-4.0121 0l-37.693 20.918c-1.1289 1.1248-1.1479 2.9551-0.02171 4.084z" fill="#fefeff" stroke="#930e4e" stroke-linecap="round" stroke-linejoin="round" stroke-width="8.257"/><path d="m57.857 68.048c0.96243 0.96706 3.4236 0.96706 3.4236 0v-39.292c0-0.96825-2.467-0.96825-3.4329 0l-32.252 17.898c-0.96594 0.96243-0.9822 2.5285-0.01858 3.4945z" fill="#fefeff" stroke="#feffff" stroke-linecap="round" stroke-linejoin="round" stroke-width="4.314"/></svg> +<svg enable-background="new 0 0 100 100" version="1.1" viewBox="0 0 93.665 93.676" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><path transform="matrix(1.3783 .61747 -.61747 1.3783 45.198 93.762)" d="m11.645-14.603-44.77-4.6003 26.369-36.472z" fill="#fff" stroke="#950e4f" stroke-linecap="round" stroke-linejoin="round" stroke-width="7.2832"/></svg> diff --git a/resources/ui/images/button_delete_saved_game.svg b/resources/ui/images/button_delete_saved_game.svg index ac7eefef476f761903fe781b8c86d0c94323550a..c3f872e434052a6b4e7036b530ced8e6233508e4 100644 --- a/resources/ui/images/button_delete_saved_game.svg +++ b/resources/ui/images/button_delete_saved_game.svg @@ -1,2 +1,2 @@ <?xml version="1.0" encoding="UTF-8"?> -<svg enable-background="new 0 0 100 100" version="1.1" viewBox="0 0 93.665 93.676" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><rect x=".44662" y=".89101" width="92.772" height="91.894" ry="11.689" fill="#ee7d49" stroke="#fff" stroke-width=".238"/><path d="m61.07 35.601-1.7399 27.837c-0.13442 2.1535-1.9205 3.8312-4.0781 3.8312h-16.84c-2.1576 0-3.9437-1.6777-4.0781-3.8312l-1.7399-27.837h-2.6176c-0.84621 0-1.5323-0.68613-1.5323-1.5323 0-0.84655 0.68613-1.5323 1.5323-1.5323h33.711c0.84621 0 1.5323 0.68578 1.5323 1.5323 0 0.84621-0.68613 1.5323-1.5323 1.5323zm-3.2617 0h-21.953l1.4715 26.674c0.05985 1.0829 0.95531 1.9305 2.0403 1.9305h14.929c1.085 0 1.9804-0.84757 2.0403-1.9305zm-10.977 3.0647c0.78977 0 1.4301 0.6403 1.4301 1.4301v19.614c0 0.78977-0.6403 1.4301-1.4301 1.4301s-1.4301-0.6403-1.4301-1.4301v-19.614c0-0.78977 0.6403-1.4301 1.4301-1.4301zm-6.1293 0c0.80004 0 1.4588 0.62935 1.495 1.4286l0.89647 19.719c0.03182 0.70016-0.50998 1.2933-1.2101 1.3255-0.01915 7.02e-4 -0.03831 1e-3 -0.05781 1e-3 -0.74462 0-1.3596-0.58215-1.4003-1.3261l-1.0757-19.719c-0.0407-0.74701 0.53188-1.3852 1.2786-1.4259 0.02462-0.0014 0.04926-2e-3 0.07388-2e-3zm12.259 0c0.74804 0 1.3541 0.60609 1.3541 1.3541 0 0.02462-3.28e-4 0.04926-0.0017 0.07388l-1.0703 19.618c-0.04379 0.80106-0.70597 1.4281-1.5081 1.4281-0.74804 0-1.3541-0.60609-1.3541-1.3541 0-0.02462 3.49e-4 -0.04925 0.0017-0.07388l1.0703-19.618c0.04379-0.80106 0.70597-1.4281 1.5081-1.4281zm-10.216-12.259h8.1728c2.2567 0 4.086 1.8293 4.086 4.086v2.0433h-16.344v-2.0433c0-2.2567 1.8293-4.086 4.086-4.086zm0.20453 3.0647c-0.67725 0-1.2259 0.54863-1.2259 1.2259v1.8388h10.215v-1.8388c0-0.67725-0.54863-1.2259-1.2259-1.2259z" fill="#fff" fill-rule="evenodd" stroke="#bd4812" stroke-width=".75383"/></svg> +<svg enable-background="new 0 0 100 100" version="1.1" viewBox="0 0 93.665 93.676" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><path d="m76.652 23.303-3.6441 58.302c-0.28153 4.5103-4.0223 8.0241-8.5413 8.0241h-35.27c-4.5189 0-8.2598-3.5138-8.5413-8.0241l-3.6441-58.302h-5.4824c-1.7723 0-3.2093-1.437-3.2093-3.2093 0-1.773 1.437-3.2093 3.2093-3.2093h70.605c1.7723 0 3.2093 1.4363 3.2093 3.2093 0 1.7723-1.437 3.2093-3.2093 3.2093zm-6.8314 0h-45.979l3.0819 55.867c0.12535 2.268 2.0008 4.0433 4.2732 4.0433h31.268c2.2724 0 4.1478-1.7752 4.2732-4.0433zm-22.99 6.4188c1.6541 0 2.9952 1.3411 2.9952 2.9952v41.08c0 1.6541-1.3411 2.9952-2.9952 2.9952-1.6542 0-2.9952-1.3411-2.9952-2.9952v-41.08c0-1.6541 1.3411-2.9952 2.9952-2.9952zm-12.837 0c1.6756 0 3.0553 1.3181 3.1312 2.9921l1.8776 41.3c0.06665 1.4664-1.0681 2.7087-2.5345 2.7762-0.04011 0.0015-0.08024 0.0021-0.12108 0.0021-1.5595 0-2.8476-1.2193-2.9328-2.7774l-2.253-41.3c-0.08524-1.5646 1.114-2.9012 2.6779-2.9864 0.05157-0.0029 0.10317-0.0042 0.15474-0.0042zm25.675 0c1.5667 0 2.8361 1.2694 2.8361 2.8361 0 0.05156-6.87e-4 0.10317-0.0036 0.15474l-2.2416 41.088c-0.09171 1.6778-1.4786 2.991-3.1586 2.991-1.5667 0-2.8361-1.2694-2.8361-2.8361 0-0.05156 7.31e-4 -0.10315 0.0036-0.15474l2.2417-41.088c0.09172-1.6778 1.4786-2.991 3.1586-2.991zm-21.397-25.675h17.117c4.7265 0 8.5578 3.8313 8.5578 8.5578v4.2795h-34.231v-4.2795c0-4.7265 3.8313-8.5578 8.5578-8.5578zm0.42837 6.4188c-1.4184 0-2.5675 1.1491-2.5675 2.5675v3.8512h21.394v-3.8512c0-1.4184-1.1491-2.5675-2.5675-2.5675z" fill="#fff" fill-rule="evenodd" stroke="#050200"/></svg> diff --git a/resources/ui/images/button_resume_game.svg b/resources/ui/images/button_resume_game.svg index 6ad8b64202d0e70f898c16c520e756fe8a934add..2bf973276aefa564ecff7d6149899298344819f9 100644 --- a/resources/ui/images/button_resume_game.svg +++ b/resources/ui/images/button_resume_game.svg @@ -1,2 +1,2 @@ <?xml version="1.0" encoding="UTF-8"?> -<svg enable-background="new 0 0 100 100" version="1.1" viewBox="0 0 93.665 93.676" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><rect x=".44662" y=".89101" width="92.772" height="91.894" ry="11.689" fill="#49a1ee" stroke="#fff" stroke-width=".238"/><path d="m39.211 31.236c-0.84086-0.84489-2.9911-0.84489-2.9911 0v34.329c0 0.84594 2.1554 0.84594 2.9993 0l28.178-15.637c0.84392-0.84086 0.85812-2.2091 0.01623-3.053z" fill="#fefeff" stroke="#105ca1" stroke-linecap="round" stroke-linejoin="round" stroke-width="6.1726"/><path d="m40.355 33.714c-0.71948-0.72294-2.5594-0.72294-2.5594 0v29.373c0 0.72383 1.8442 0.72383 2.5663 0l24.11-13.38c0.7221-0.71948 0.73426-1.8902 0.01389-2.6124z" fill="#fefeff" stroke="#feffff" stroke-linecap="round" stroke-linejoin="round" stroke-width="3.225"/><path d="m28.369 66.919v-37.591" fill="#105ca2" stroke="#105ca2" stroke-linecap="round" stroke-width="4.0337"/></svg> +<svg enable-background="new 0 0 100 100" version="1.1" viewBox="0 0 93.665 93.676" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><g transform="translate(-5.618)" fill="#fff" stroke="#105ea2" stroke-linecap="round" stroke-linejoin="round"><path transform="matrix(-1.3783 -.61747 .61747 -1.3783 55.567 -.086035)" d="m11.645-14.603-44.77-4.6003 26.369-36.472z" stroke-width="7.2832"/><path d="m15.535 12.852 2e-3 67.973z" stroke-width="11"/></g></svg> diff --git a/resources/ui/images/button_start.svg b/resources/ui/images/button_start.svg index e9d49d2172b9a0305db82779971e3c1e12f34a70..4d7634a9f3fb559e590ee965e1341ae2634bf80f 100644 --- a/resources/ui/images/button_start.svg +++ b/resources/ui/images/button_start.svg @@ -1,2 +1,2 @@ <?xml version="1.0" encoding="UTF-8"?> -<svg enable-background="new 0 0 100 100" version="1.1" viewBox="0 0 93.665 93.676" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><rect x=".44662" y=".89101" width="92.772" height="91.894" ry="11.689" fill="#49a1ee" stroke="#fff" stroke-width=".238"/><path d="m34.852 25.44c-1.1248-1.1302-4.0012-1.1302-4.0012 0v45.921c0 1.1316 2.8832 1.1316 4.0121 0l37.693-20.918c1.1289-1.1248 1.1479-2.9551 0.02171-4.084z" fill="#fefeff" stroke="#105ca1" stroke-linecap="round" stroke-linejoin="round" stroke-width="8.257"/><path d="m36.382 28.754c-0.96243-0.96706-3.4236-0.96706-3.4236 0v39.292c0 0.96825 2.467 0.96825 3.4329 0l32.252-17.898c0.96594-0.96243 0.9822-2.5285 0.01858-3.4945z" fill="#fefeff" stroke="#feffff" stroke-linecap="round" stroke-linejoin="round" stroke-width="4.314"/></svg> +<svg enable-background="new 0 0 100 100" version="1.1" viewBox="0 0 93.665 93.676" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><path transform="matrix(-1.3783 -.61747 .61747 -1.3783 46.954 -.086035)" d="m11.645-14.603-44.77-4.6003 26.369-36.472z" fill="#fff" stroke="#105ea2" stroke-linecap="round" stroke-linejoin="round" stroke-width="7.2832"/></svg> diff --git a/resources/ui/images/type_pick-image.svg b/resources/ui/images/type_pick-image.svg index 4502ae00377c0f9653719f5b0b4c6ec5bae1bab5..6650aecf4027317e4315f27950135b98a793b700 100644 --- a/resources/ui/images/type_pick-image.svg +++ b/resources/ui/images/type_pick-image.svg @@ -1,36 +1,35 @@ <?xml version="1.0" encoding="UTF-8"?> <svg version="1.1" viewBox="0 0 28.747 28.747" xmlns="http://www.w3.org/2000/svg"> - <g transform="translate(0,-1093.8)"> - <rect x="1.0155" y="1094.8" width="26.716" height="26.71" ry="0" fill="#6da6ad" stroke="#417076" stroke-width="1.9636"/> - </g> - <g transform="matrix(.6481 0 0 .6481 11.697 5.0582)"> - <rect x="7.2344" y="14.875" width="6.6486" height="6.6486" ry="2.4123" fill="#fff" stroke="#fff" stroke-width=".581"/> - <path d="m13.313 18.001-2.5559-2.5559c-0.1136-0.11359-0.28399-0.11359-0.3976 0l-1.2212 1.2212v-0.45438c0-0.17039-0.1136-0.28399-0.28399-0.28399s-0.28399 0.1136-0.28399 0.28399v1.0224l-0.76678 0.76678c-0.1136 0.1136-0.1136 0.28399 0 0.3976s0.28399 0.1136 0.3976 0l0.085198-0.0852v2.4424c0 0.17039 0.1136 0.28399 0.28399 0.28399h3.976c0.17039 0 0.28399-0.1136 0.28399-0.28399v-2.4424l0.0852 0.0852c0.1136 0.1136 0.28399 0.1136 0.3976 0s0.1136-0.28399 1e-6 -0.3976zm-3.0388 2.4708v-1.4199h0.56799v1.4199zm1.9879 0h-0.85198v-1.7039c0-0.17039-0.1136-0.28399-0.28399-0.28399h-1.136c-0.17039 0-0.28399 0.1136-0.28399 0.28399v1.7039h-0.85198v-2.7264l1.7039-1.7039 1.7039 1.7039z" fill="#3f51b5" stroke-width=".28399"/> - <path d="m9.6466 7.2228h1.8241c1.3364 0 2.4123 1.0759 2.4123 2.4123v1.8241c0 1.3364-1.0759 2.4123-2.4123 2.4123h-1.8241c-1.3364 0-2.4123-1.0759-2.4123-2.4123v-1.8241c0-1.3364 1.0759-2.4123 2.4123-2.4123z" fill="#fff" stroke="#fff" stroke-width=".581"/> - <g transform="matrix(.23892 0 0 .23892 7.6904 7.6801)" fill="#868686" stroke="#3f51b5"> - <path d="m12 24c-6.617 0-12-5.383-12-12s5.383-12 12-12 12 5.383 12 12-5.383 12-12 12zm0-23c-6.065 0-11 4.935-11 11s4.935 11 11 11 11-4.935 11-11-4.935-11-11-11z"/> - <path d="m11.535 12.184c-1.589-4.01-1.582-8.684 0.017-11.906l0.896 0.444c-1.479 2.98-1.472 7.335 0.017 11.094z"/> - <path d="m2.072 18.249-0.062-0.998c3.321-0.21 7.088-2.393 9.599-5.562l0.784 0.621c-2.68 3.381-6.73 5.712-10.321 5.939z"/> - <path d="m21.543 18.026c-1.842-2.771-5.616-4.942-9.616-5.532l0.146-0.989c4.267 0.629 8.311 2.971 10.302 5.968z"/> - <path d="m6.531 22.544-0.225-0.975c4.2-0.97 8.986-4.549 10.667-7.979l0.898 0.439c-1.797 3.667-6.884 7.487-11.34 8.515z"/> - <path d="m23.135 12.146c-2.941-3.153-8.435-5.512-12.245-5.248l-0.067-0.998c4.073-0.267 9.924 2.22 13.042 5.565z"/> - <path d="m7.306 16.069c-2.276-3.389-3.04-9.704-1.702-14.077l0.956 0.292c-1.261 4.122-0.554 10.056 1.576 13.229z"/> - </g> - <rect x="14.864" y="7.2228" width="6.6486" height="6.6486" ry="2.4123" fill="#fff" stroke="#fff" stroke-width=".581"/> - <switch transform="matrix(.064527 0 0 .064527 14.959 7.324)" fill="#3f51b5" stroke="#3f51b5"> - <g fill="#3f51b5" stroke="#3f51b5"> - <path d="m78.2 66c-0.6 0-13.9-1.2-22.5 6.7-1 0.9-2 2-2.8 3.1v-18.5h1.6c7.1 0 11.9-1.7 14.8-5.1 3.7-4.5 2.9-10.8 2-15.2-2.3-11.3 0.4-15.9 3.2-20.9l1.2-2.1c0.8-1.4 0.2-3.5-1.2-4.3-2.2-1.2-7.8 0.9-13.6 5.2-2.5-6.9-8.8-11.6-9.1-11.8-1.1-0.8-2.5-0.8-3.6 0-0.3 0.2-6.6 4.9-9.2 11.6-5.8-4.3-11.4-6.4-13.6-5.2-1.4 0.8-2 2.9-1.2 4.3l1.2 2.1c2.8 5 5.5 9.6 3.2 20.9-0.9 4.4-1.7 10.7 2 15.2 2.8 3.5 7.7 5.1 14.7 5.1h1.6v18.5c-0.8-1.1-1.7-2.1-2.8-3.1-8.5-7.6-21.8-6.5-22.3-6.5-1.6 0.1-2.7 1.4-2.7 3 0 0.6 0.2 13.9 8.8 21.7 6.6 6 15.9 6.7 20.2 6.7h4c4.3 0 13.6-0.8 20.2-6.7 8.5-7.8 8.7-21.1 8.7-21.7 0-1.5-1.2-2.8-2.8-3zm-28.2-56.6c2.1 1.9 5.3 5.6 6 9.6-2.2 2.1-4.2 4.4-5.9 7-1.7-2.6-3.8-4.9-6-7.1 0.6-3.9 3.8-7.5 5.9-9.5zm-14.7 38.9c-1.5-1.9-1.8-5.2-0.8-10.2 2-9.6 0.7-15.6-1.3-20.1 4 2.5 9.1 6.7 12.8 13 0.5 0.8 0.9 1.6 1.3 2.4 0.5 1 1.5 1.6 2.6 1.6s2.1-0.6 2.6-1.6c0.4-0.8 0.9-1.6 1.3-2.4 3.7-6.2 8.8-10.4 12.8-13-2 4.6-3.3 10.5-1.3 20.1 1 5 0.8 8.3-0.8 10.2s-5 2.9-10.1 2.9l-9.2-0.1c-4.9 0.1-8.3-0.9-9.9-2.8zm-3.5 38c-4.5-4.1-6-10.6-6.5-14.4 3.8 0.1 10.4 1 14.9 5.1s6 10.6 6.5 14.4c-3.8-0.1-10.3-1-14.9-5.1zm36.4 0c-4.5 4.1-11.1 5-14.9 5.1 0.5-3.8 2-10.2 6.6-14.3 4.5-4.1 11.1-5 14.9-5.1-0.6 3.7-2.1 10.2-6.6 14.3z" fill="#3f51b5" stroke="#3f51b5"/> + <g transform="matrix(1.2763 0 0 1.2763 -4.292 -3.9707)"> + <g transform="matrix(.6481 0 0 .6481 11.697 5.0582)"> + <rect x="7.2344" y="14.875" width="6.6486" height="6.6486" ry="2.4123" fill="#fff" stroke="#fff" stroke-width=".581"/> + <path d="m13.313 18.001-2.5559-2.5559c-0.1136-0.11359-0.28399-0.11359-0.3976 0l-1.2212 1.2212v-0.45438c0-0.17039-0.1136-0.28399-0.28399-0.28399s-0.28399 0.1136-0.28399 0.28399v1.0224l-0.76678 0.76678c-0.1136 0.1136-0.1136 0.28399 0 0.3976s0.28399 0.1136 0.3976 0l0.085198-0.0852v2.4424c0 0.17039 0.1136 0.28399 0.28399 0.28399h3.976c0.17039 0 0.28399-0.1136 0.28399-0.28399v-2.4424l0.0852 0.0852c0.1136 0.1136 0.28399 0.1136 0.3976 0s0.1136-0.28399 1e-6 -0.3976zm-3.0388 2.4708v-1.4199h0.56799v1.4199zm1.9879 0h-0.85198v-1.7039c0-0.17039-0.1136-0.28399-0.28399-0.28399h-1.136c-0.17039 0-0.28399 0.1136-0.28399 0.28399v1.7039h-0.85198v-2.7264l1.7039-1.7039 1.7039 1.7039z" fill="#3f51b5" stroke-width=".28399"/> + <path d="m9.6466 7.2228h1.8241c1.3364 0 2.4123 1.0759 2.4123 2.4123v1.8241c0 1.3364-1.0759 2.4123-2.4123 2.4123h-1.8241c-1.3364 0-2.4123-1.0759-2.4123-2.4123v-1.8241c0-1.3364 1.0759-2.4123 2.4123-2.4123z" fill="#fff" stroke="#fff" stroke-width=".581"/> + <g transform="matrix(.23892 0 0 .23892 7.6904 7.6801)" fill="#868686" stroke="#3f51b5"> + <path d="m12 24c-6.617 0-12-5.383-12-12s5.383-12 12-12 12 5.383 12 12-5.383 12-12 12zm0-23c-6.065 0-11 4.935-11 11s4.935 11 11 11 11-4.935 11-11-4.935-11-11-11z"/> + <path d="m11.535 12.184c-1.589-4.01-1.582-8.684 0.017-11.906l0.896 0.444c-1.479 2.98-1.472 7.335 0.017 11.094z"/> + <path d="m2.072 18.249-0.062-0.998c3.321-0.21 7.088-2.393 9.599-5.562l0.784 0.621c-2.68 3.381-6.73 5.712-10.321 5.939z"/> + <path d="m21.543 18.026c-1.842-2.771-5.616-4.942-9.616-5.532l0.146-0.989c4.267 0.629 8.311 2.971 10.302 5.968z"/> + <path d="m6.531 22.544-0.225-0.975c4.2-0.97 8.986-4.549 10.667-7.979l0.898 0.439c-1.797 3.667-6.884 7.487-11.34 8.515z"/> + <path d="m23.135 12.146c-2.941-3.153-8.435-5.512-12.245-5.248l-0.067-0.998c4.073-0.267 9.924 2.22 13.042 5.565z"/> + <path d="m7.306 16.069c-2.276-3.389-3.04-9.704-1.702-14.077l0.956 0.292c-1.261 4.122-0.554 10.056 1.576 13.229z"/> </g> - </switch> - <rect x="14.864" y="14.875" width="6.6486" height="6.6486" ry="2.4123" fill="#fff" stroke="#fff" stroke-width=".581"/> - <path d="m20.434 18.962c0.03938-0.18042 0.06222-0.37015 0.06222-0.57002 0-0.335-0.05822-0.64478-0.16547-0.92189 0.33937-0.63986 0.51574-1.1394 0.54953-1.5628 0.0043-0.05353-0.0141-0.10627-0.05039-0.14572-0.03649-0.03938-0.08776-0.06185-0.14134-0.06185-0.49193 0-0.96478 0.20178-1.4419 0.61032-0.31057-0.14474-0.66651-0.22572-1.058-0.22572s-0.74743 0.08104-1.058 0.22572c-0.47703-0.40861-0.94988-0.61032-1.4419-0.61032-0.0536 0-0.10486 0.02246-0.14129 0.0619-0.03636 0.03932-0.05464 0.09218-0.05039 0.14572 0.03379 0.42331 0.21015 0.92281 0.54953 1.5628-0.10732 0.2771-0.16547 0.58688-0.16547 0.92182 0 0.19988 0.02283 0.38959 0.06222 0.57002-0.1216 0.06277-0.23926 0.14117-0.36873 0.23673-0.08547 0.06308-0.10357 0.1835-0.04056 0.26892 0.03772 0.05113 0.09594 0.07815 0.1549 0.07815 0.03962 0 0.07963-0.01218 0.11397-0.03754 0.09138-0.06744 0.17305-0.12259 0.25371-0.16904 0.04819 0.12006 0.10658 0.23298 0.17292 0.33969-0.14018 0.05612-0.28849 0.14338-0.47162 0.29599-0.08159 0.06818-0.09261 0.18929-0.02461 0.27102 0.03803 0.04567 0.09268 0.06911 0.14781 0.06911 0.04338 0 0.08702-0.01465 0.12301-0.04449 0.19347-0.16122 0.32492-0.22917 0.47217-0.26966 0.40922 0.43919 1.0042 0.69875 1.7124 0.69875 0.70817 0 1.3032-0.25956 1.7124-0.69875 0.14726 0.04049 0.2787 0.10843 0.47217 0.26966 0.03594 0.02984 0.07963 0.04449 0.12301 0.04449 0.05513 0 0.10978-0.02344 0.14781-0.06911 0.068-0.08172 0.05698-0.20282-0.02462-0.27102-0.18307-0.15261-0.33144-0.23982-0.47162-0.29599 0.06627-0.10671 0.12474-0.21969 0.17291-0.33969 0.08067 0.04646 0.16234 0.1016 0.25371 0.16904 0.03434 0.02535 0.07433 0.03754 0.11397 0.03754 0.05896 0 0.11716-0.02702 0.15495-0.07815 0.06301-0.08547 0.04486-0.20584-0.04056-0.26892-0.12953-0.09557-0.24713-0.17397-0.36873-0.23673zm-3.2069-0.57002c-0.21211 0-0.3846-0.17261-0.3846-0.3846 0-0.21211 0.17249-0.3846 0.3846-0.3846s0.3846 0.17249 0.3846 0.3846c0 0.21199-0.17249 0.3846-0.3846 0.3846zm1.3077 0.42866-0.30165 0.32092c-0.02461 0.02621-0.06455 0.02621-0.08917 0l-0.30165-0.32092c-0.08196-0.0872-0.02394-0.23636 0.09199-0.23636h0.50842c0.116 0 0.17409 0.1491 0.09206 0.23636zm0.61531-0.42866c-0.21211 0-0.3846-0.17261-0.3846-0.3846 0-0.21211 0.17249-0.3846 0.3846-0.3846s0.3846 0.17249 0.3846 0.3846c0 0.21199-0.17249 0.3846-0.3846 0.3846z" fill="#3f51b5" stroke-width=".061538"/> - </g> - <g transform="matrix(1.3564 0 0 1.3564 -16.431 -4.2139)" fill="#fff" stroke-width=".27865" aria-label="ABC"> - <path d="m16.161 14.415h-0.74887l-0.10304 0.35121h-0.67195l0.79966-2.1276h0.71694l0.79966 2.1276h-0.68791zm-0.13787-0.46006-0.23511-0.76483-0.23366 0.76483z"/> - <path d="m17.166 12.638h1.2307q0.30768 0 0.47167 0.15239 0.16545 0.15239 0.16545 0.37734 0 0.18867-0.11755 0.32364-0.07837 0.08998-0.2293 0.14223 0.2293 0.05515 0.3367 0.19012 0.10885 0.13352 0.10885 0.3367 0 0.16545-0.07692 0.29752t-0.21044 0.20899q-0.08272 0.04789-0.24962 0.06966-0.22205 0.02903-0.29461 0.02903h-1.1349zm0.66324 0.83449h0.2859q0.15384 0 0.21334-0.05225 0.06095-0.0537 0.06095-0.15384 0-0.09288-0.06095-0.14513-0.0595-0.05225-0.20899-0.05225h-0.29026zm0 0.83594h0.33525q0.1698 0 0.23946-0.0595 0.06966-0.06095 0.06966-0.16254 0-0.09433-0.06966-0.15093-0.06821-0.05805-0.24092-0.05805h-0.3338z"/> - <path d="m20.892 13.897 0.57616 0.17416q-0.05805 0.24237-0.18286 0.40491t-0.31058 0.24527q-0.18432 0.08272-0.47022 0.08272-0.34686 0-0.56746-0.10014-0.21915-0.10159-0.37879-0.35557t-0.15964-0.65018q0-0.52827 0.2801-0.81127 0.28155-0.28445 0.79531-0.28445 0.40201 0 0.63131 0.16254 0.23076 0.16254 0.34251 0.49924l-0.58052 0.12916q-0.03048-0.09724-0.06386-0.14223-0.05515-0.07547-0.13497-0.1161-0.07982-0.04064-0.17851-0.04064-0.2235 0-0.34251 0.17996-0.08998 0.13352-0.08998 0.41942 0 0.35412 0.1074 0.48618 0.1074 0.13062 0.30187 0.13062 0.18867 0 0.28445-0.10594 0.09724-0.10594 0.14078-0.30767z"/> - </g> - <g transform="matrix(-.0023678 0 0 -.0023678 15.557 15.557)" fill="#fff"> - <path d="m380.5 100.5-350 350c-27.3 27.3-27.3 71.6 0 99l350 350c27.3 27.3 71.6 27.3 99 0 27.3-27.3 27.3-71.6 0-99l-230.5-230.5h671c38.7 0 70-31.3 70-70s-31.3-70-70-70h-671l230.5-230.5c13.7-13.7 20.5-31.6 20.5-49.5s-6.8-35.8-20.5-49.5c-27.4-27.3-71.7-27.3-99 0z" fill="#fff"/> + <rect x="14.864" y="7.2228" width="6.6486" height="6.6486" ry="2.4123" fill="#fff" stroke="#fff" stroke-width=".581"/> + <switch transform="matrix(.064527 0 0 .064527 14.959 7.324)" fill="#3f51b5" stroke="#3f51b5"> + <g fill="#3f51b5" stroke="#3f51b5"> + <path d="m78.2 66c-0.6 0-13.9-1.2-22.5 6.7-1 0.9-2 2-2.8 3.1v-18.5h1.6c7.1 0 11.9-1.7 14.8-5.1 3.7-4.5 2.9-10.8 2-15.2-2.3-11.3 0.4-15.9 3.2-20.9l1.2-2.1c0.8-1.4 0.2-3.5-1.2-4.3-2.2-1.2-7.8 0.9-13.6 5.2-2.5-6.9-8.8-11.6-9.1-11.8-1.1-0.8-2.5-0.8-3.6 0-0.3 0.2-6.6 4.9-9.2 11.6-5.8-4.3-11.4-6.4-13.6-5.2-1.4 0.8-2 2.9-1.2 4.3l1.2 2.1c2.8 5 5.5 9.6 3.2 20.9-0.9 4.4-1.7 10.7 2 15.2 2.8 3.5 7.7 5.1 14.7 5.1h1.6v18.5c-0.8-1.1-1.7-2.1-2.8-3.1-8.5-7.6-21.8-6.5-22.3-6.5-1.6 0.1-2.7 1.4-2.7 3 0 0.6 0.2 13.9 8.8 21.7 6.6 6 15.9 6.7 20.2 6.7h4c4.3 0 13.6-0.8 20.2-6.7 8.5-7.8 8.7-21.1 8.7-21.7 0-1.5-1.2-2.8-2.8-3zm-28.2-56.6c2.1 1.9 5.3 5.6 6 9.6-2.2 2.1-4.2 4.4-5.9 7-1.7-2.6-3.8-4.9-6-7.1 0.6-3.9 3.8-7.5 5.9-9.5zm-14.7 38.9c-1.5-1.9-1.8-5.2-0.8-10.2 2-9.6 0.7-15.6-1.3-20.1 4 2.5 9.1 6.7 12.8 13 0.5 0.8 0.9 1.6 1.3 2.4 0.5 1 1.5 1.6 2.6 1.6s2.1-0.6 2.6-1.6c0.4-0.8 0.9-1.6 1.3-2.4 3.7-6.2 8.8-10.4 12.8-13-2 4.6-3.3 10.5-1.3 20.1 1 5 0.8 8.3-0.8 10.2s-5 2.9-10.1 2.9l-9.2-0.1c-4.9 0.1-8.3-0.9-9.9-2.8zm-3.5 38c-4.5-4.1-6-10.6-6.5-14.4 3.8 0.1 10.4 1 14.9 5.1s6 10.6 6.5 14.4c-3.8-0.1-10.3-1-14.9-5.1zm36.4 0c-4.5 4.1-11.1 5-14.9 5.1 0.5-3.8 2-10.2 6.6-14.3 4.5-4.1 11.1-5 14.9-5.1-0.6 3.7-2.1 10.2-6.6 14.3z" fill="#3f51b5" stroke="#3f51b5"/> + </g> + </switch> + <rect x="14.864" y="14.875" width="6.6486" height="6.6486" ry="2.4123" fill="#fff" stroke="#fff" stroke-width=".581"/> + <path d="m20.434 18.962c0.03938-0.18042 0.06222-0.37015 0.06222-0.57002 0-0.335-0.05822-0.64478-0.16547-0.92189 0.33937-0.63986 0.51574-1.1394 0.54953-1.5628 0.0043-0.05353-0.0141-0.10627-0.05039-0.14572-0.03649-0.03938-0.08776-0.06185-0.14134-0.06185-0.49193 0-0.96478 0.20178-1.4419 0.61032-0.31057-0.14474-0.66651-0.22572-1.058-0.22572s-0.74743 0.08104-1.058 0.22572c-0.47703-0.40861-0.94988-0.61032-1.4419-0.61032-0.0536 0-0.10486 0.02246-0.14129 0.0619-0.03636 0.03932-0.05464 0.09218-0.05039 0.14572 0.03379 0.42331 0.21015 0.92281 0.54953 1.5628-0.10732 0.2771-0.16547 0.58688-0.16547 0.92182 0 0.19988 0.02283 0.38959 0.06222 0.57002-0.1216 0.06277-0.23926 0.14117-0.36873 0.23673-0.08547 0.06308-0.10357 0.1835-0.04056 0.26892 0.03772 0.05113 0.09594 0.07815 0.1549 0.07815 0.03962 0 0.07963-0.01218 0.11397-0.03754 0.09138-0.06744 0.17305-0.12259 0.25371-0.16904 0.04819 0.12006 0.10658 0.23298 0.17292 0.33969-0.14018 0.05612-0.28849 0.14338-0.47162 0.29599-0.08159 0.06818-0.09261 0.18929-0.02461 0.27102 0.03803 0.04567 0.09268 0.06911 0.14781 0.06911 0.04338 0 0.08702-0.01465 0.12301-0.04449 0.19347-0.16122 0.32492-0.22917 0.47217-0.26966 0.40922 0.43919 1.0042 0.69875 1.7124 0.69875 0.70817 0 1.3032-0.25956 1.7124-0.69875 0.14726 0.04049 0.2787 0.10843 0.47217 0.26966 0.03594 0.02984 0.07963 0.04449 0.12301 0.04449 0.05513 0 0.10978-0.02344 0.14781-0.06911 0.068-0.08172 0.05698-0.20282-0.02462-0.27102-0.18307-0.15261-0.33144-0.23982-0.47162-0.29599 0.06627-0.10671 0.12474-0.21969 0.17291-0.33969 0.08067 0.04646 0.16234 0.1016 0.25371 0.16904 0.03434 0.02535 0.07433 0.03754 0.11397 0.03754 0.05896 0 0.11716-0.02702 0.15495-0.07815 0.06301-0.08547 0.04486-0.20584-0.04056-0.26892-0.12953-0.09557-0.24713-0.17397-0.36873-0.23673zm-3.2069-0.57002c-0.21211 0-0.3846-0.17261-0.3846-0.3846 0-0.21211 0.17249-0.3846 0.3846-0.3846s0.3846 0.17249 0.3846 0.3846c0 0.21199-0.17249 0.3846-0.3846 0.3846zm1.3077 0.42866-0.30165 0.32092c-0.02461 0.02621-0.06455 0.02621-0.08917 0l-0.30165-0.32092c-0.08196-0.0872-0.02394-0.23636 0.09199-0.23636h0.50842c0.116 0 0.17409 0.1491 0.09206 0.23636zm0.61531-0.42866c-0.21211 0-0.3846-0.17261-0.3846-0.3846 0-0.21211 0.17249-0.3846 0.3846-0.3846s0.3846 0.17249 0.3846 0.3846c0 0.21199-0.17249 0.3846-0.3846 0.3846z" fill="#3f51b5" stroke-width=".061538"/> + </g> + <g transform="matrix(1.3564,0,0,1.3564,-16.431,-4.2139)" fill="#fff" stroke-width=".27865" aria-label="ABC"> + <path d="m16.161 14.415h-0.74887l-0.10304 0.35121h-0.67195l0.79966-2.1276h0.71694l0.79966 2.1276h-0.68791zm-0.13787-0.46006-0.23511-0.76483-0.23366 0.76483z"/> + <path d="m17.166 12.638h1.2307q0.30768 0 0.47167 0.15239 0.16545 0.15239 0.16545 0.37734 0 0.18867-0.11755 0.32364-0.07837 0.08998-0.2293 0.14223 0.2293 0.05515 0.3367 0.19012 0.10885 0.13352 0.10885 0.3367 0 0.16545-0.07692 0.29752t-0.21044 0.20899q-0.08272 0.04789-0.24962 0.06966-0.22205 0.02903-0.29461 0.02903h-1.1349zm0.66324 0.83449h0.2859q0.15384 0 0.21334-0.05225 0.06095-0.0537 0.06095-0.15384 0-0.09288-0.06095-0.14513-0.0595-0.05225-0.20899-0.05225h-0.29026zm0 0.83594h0.33525q0.1698 0 0.23946-0.0595 0.06966-0.06095 0.06966-0.16254 0-0.09433-0.06966-0.15093-0.06821-0.05805-0.24092-0.05805h-0.3338z"/> + <path d="m20.892 13.897 0.57616 0.17416q-0.05805 0.24237-0.18286 0.40491t-0.31058 0.24527q-0.18432 0.08272-0.47022 0.08272-0.34686 0-0.56746-0.10014-0.21915-0.10159-0.37879-0.35557t-0.15964-0.65018q0-0.52827 0.2801-0.81127 0.28155-0.28445 0.79531-0.28445 0.40201 0 0.63131 0.16254 0.23076 0.16254 0.34251 0.49924l-0.58052 0.12916q-0.03048-0.09724-0.06386-0.14223-0.05515-0.07547-0.13497-0.1161-0.07982-0.04064-0.17851-0.04064-0.2235 0-0.34251 0.17996-0.08998 0.13352-0.08998 0.41942 0 0.35412 0.1074 0.48618 0.1074 0.13062 0.30187 0.13062 0.18867 0 0.28445-0.10594 0.09724-0.10594 0.14078-0.30767z"/> + </g> + <g transform="matrix(-.0023678 0 0 -.0023678 15.557 15.557)" fill="#fff"> + <path d="m380.5 100.5-350 350c-27.3 27.3-27.3 71.6 0 99l350 350c27.3 27.3 71.6 27.3 99 0 27.3-27.3 27.3-71.6 0-99l-230.5-230.5h671c38.7 0 70-31.3 70-70s-31.3-70-70-70h-671l230.5-230.5c13.7-13.7 20.5-31.6 20.5-49.5s-6.8-35.8-20.5-49.5c-27.4-27.3-71.7-27.3-99 0z" fill="#fff"/> + </g> </g> </svg> diff --git a/resources/ui/images/type_pick-word.svg b/resources/ui/images/type_pick-word.svg index 6714b7a99dcf3455a35004ed807ad50238a12765..56ce77a54933f967c5a7c661c84bd344183daf48 100644 --- a/resources/ui/images/type_pick-word.svg +++ b/resources/ui/images/type_pick-word.svg @@ -1,36 +1,35 @@ <?xml version="1.0" encoding="UTF-8"?> <svg version="1.1" viewBox="0 0 28.747 28.747" xmlns="http://www.w3.org/2000/svg"> - <g transform="translate(0,-1093.8)"> - <rect x="1.0155" y="1094.8" width="26.716" height="26.71" ry="0" fill="#6da6ad" stroke="#417076" stroke-width="1.9636"/> - </g> - <g transform="matrix(.6481 0 0 .6481 -1.4195 5.0582)"> - <rect x="7.2344" y="14.875" width="6.6486" height="6.6486" ry="2.4123" fill="#fff" stroke="#fff" stroke-width=".581"/> - <path d="m13.313 18.001-2.5559-2.5559c-0.1136-0.11359-0.28399-0.11359-0.3976 0l-1.2212 1.2212v-0.45438c0-0.17039-0.1136-0.28399-0.28399-0.28399s-0.28399 0.1136-0.28399 0.28399v1.0224l-0.76678 0.76678c-0.1136 0.1136-0.1136 0.28399 0 0.3976s0.28399 0.1136 0.3976 0l0.085198-0.0852v2.4424c0 0.17039 0.1136 0.28399 0.28399 0.28399h3.976c0.17039 0 0.28399-0.1136 0.28399-0.28399v-2.4424l0.0852 0.0852c0.1136 0.1136 0.28399 0.1136 0.3976 0s0.1136-0.28399 1e-6 -0.3976zm-3.0388 2.4708v-1.4199h0.56799v1.4199zm1.9879 0h-0.85198v-1.7039c0-0.17039-0.1136-0.28399-0.28399-0.28399h-1.136c-0.17039 0-0.28399 0.1136-0.28399 0.28399v1.7039h-0.85198v-2.7264l1.7039-1.7039 1.7039 1.7039z" fill="#3f51b5" stroke-width=".28399"/> - <path d="m9.6466 7.2228h1.8241c1.3364 0 2.4123 1.0759 2.4123 2.4123v1.8241c0 1.3364-1.0759 2.4123-2.4123 2.4123h-1.8241c-1.3364 0-2.4123-1.0759-2.4123-2.4123v-1.8241c0-1.3364 1.0759-2.4123 2.4123-2.4123z" fill="#fff" stroke="#fff" stroke-width=".581"/> - <g transform="matrix(.23892 0 0 .23892 7.6904 7.6801)" fill="#868686" stroke="#3f51b5"> - <path d="m12 24c-6.617 0-12-5.383-12-12s5.383-12 12-12 12 5.383 12 12-5.383 12-12 12zm0-23c-6.065 0-11 4.935-11 11s4.935 11 11 11 11-4.935 11-11-4.935-11-11-11z"/> - <path d="m11.535 12.184c-1.589-4.01-1.582-8.684 0.017-11.906l0.896 0.444c-1.479 2.98-1.472 7.335 0.017 11.094z"/> - <path d="m2.072 18.249-0.062-0.998c3.321-0.21 7.088-2.393 9.599-5.562l0.784 0.621c-2.68 3.381-6.73 5.712-10.321 5.939z"/> - <path d="m21.543 18.026c-1.842-2.771-5.616-4.942-9.616-5.532l0.146-0.989c4.267 0.629 8.311 2.971 10.302 5.968z"/> - <path d="m6.531 22.544-0.225-0.975c4.2-0.97 8.986-4.549 10.667-7.979l0.898 0.439c-1.797 3.667-6.884 7.487-11.34 8.515z"/> - <path d="m23.135 12.146c-2.941-3.153-8.435-5.512-12.245-5.248l-0.067-0.998c4.073-0.267 9.924 2.22 13.042 5.565z"/> - <path d="m7.306 16.069c-2.276-3.389-3.04-9.704-1.702-14.077l0.956 0.292c-1.261 4.122-0.554 10.056 1.576 13.229z"/> - </g> - <rect x="14.864" y="7.2228" width="6.6486" height="6.6486" ry="2.4123" fill="#fff" stroke="#fff" stroke-width=".581"/> - <switch transform="matrix(.064527 0 0 .064527 14.959 7.324)" fill="#3f51b5" stroke="#3f51b5"> - <g fill="#3f51b5" stroke="#3f51b5"> - <path d="m78.2 66c-0.6 0-13.9-1.2-22.5 6.7-1 0.9-2 2-2.8 3.1v-18.5h1.6c7.1 0 11.9-1.7 14.8-5.1 3.7-4.5 2.9-10.8 2-15.2-2.3-11.3 0.4-15.9 3.2-20.9l1.2-2.1c0.8-1.4 0.2-3.5-1.2-4.3-2.2-1.2-7.8 0.9-13.6 5.2-2.5-6.9-8.8-11.6-9.1-11.8-1.1-0.8-2.5-0.8-3.6 0-0.3 0.2-6.6 4.9-9.2 11.6-5.8-4.3-11.4-6.4-13.6-5.2-1.4 0.8-2 2.9-1.2 4.3l1.2 2.1c2.8 5 5.5 9.6 3.2 20.9-0.9 4.4-1.7 10.7 2 15.2 2.8 3.5 7.7 5.1 14.7 5.1h1.6v18.5c-0.8-1.1-1.7-2.1-2.8-3.1-8.5-7.6-21.8-6.5-22.3-6.5-1.6 0.1-2.7 1.4-2.7 3 0 0.6 0.2 13.9 8.8 21.7 6.6 6 15.9 6.7 20.2 6.7h4c4.3 0 13.6-0.8 20.2-6.7 8.5-7.8 8.7-21.1 8.7-21.7 0-1.5-1.2-2.8-2.8-3zm-28.2-56.6c2.1 1.9 5.3 5.6 6 9.6-2.2 2.1-4.2 4.4-5.9 7-1.7-2.6-3.8-4.9-6-7.1 0.6-3.9 3.8-7.5 5.9-9.5zm-14.7 38.9c-1.5-1.9-1.8-5.2-0.8-10.2 2-9.6 0.7-15.6-1.3-20.1 4 2.5 9.1 6.7 12.8 13 0.5 0.8 0.9 1.6 1.3 2.4 0.5 1 1.5 1.6 2.6 1.6s2.1-0.6 2.6-1.6c0.4-0.8 0.9-1.6 1.3-2.4 3.7-6.2 8.8-10.4 12.8-13-2 4.6-3.3 10.5-1.3 20.1 1 5 0.8 8.3-0.8 10.2s-5 2.9-10.1 2.9l-9.2-0.1c-4.9 0.1-8.3-0.9-9.9-2.8zm-3.5 38c-4.5-4.1-6-10.6-6.5-14.4 3.8 0.1 10.4 1 14.9 5.1s6 10.6 6.5 14.4c-3.8-0.1-10.3-1-14.9-5.1zm36.4 0c-4.5 4.1-11.1 5-14.9 5.1 0.5-3.8 2-10.2 6.6-14.3 4.5-4.1 11.1-5 14.9-5.1-0.6 3.7-2.1 10.2-6.6 14.3z" fill="#3f51b5" stroke="#3f51b5"/> + <g transform="matrix(1.273 0 0 1.273 -3.8507 -3.9246)"> + <g transform="matrix(.6481 0 0 .6481 -1.4195 5.0582)"> + <rect x="7.2344" y="14.875" width="6.6486" height="6.6486" ry="2.4123" fill="#fff" stroke="#fff" stroke-width=".581"/> + <path d="m13.313 18.001-2.5559-2.5559c-0.1136-0.11359-0.28399-0.11359-0.3976 0l-1.2212 1.2212v-0.45438c0-0.17039-0.1136-0.28399-0.28399-0.28399s-0.28399 0.1136-0.28399 0.28399v1.0224l-0.76678 0.76678c-0.1136 0.1136-0.1136 0.28399 0 0.3976s0.28399 0.1136 0.3976 0l0.085198-0.0852v2.4424c0 0.17039 0.1136 0.28399 0.28399 0.28399h3.976c0.17039 0 0.28399-0.1136 0.28399-0.28399v-2.4424l0.0852 0.0852c0.1136 0.1136 0.28399 0.1136 0.3976 0s0.1136-0.28399 1e-6 -0.3976zm-3.0388 2.4708v-1.4199h0.56799v1.4199zm1.9879 0h-0.85198v-1.7039c0-0.17039-0.1136-0.28399-0.28399-0.28399h-1.136c-0.17039 0-0.28399 0.1136-0.28399 0.28399v1.7039h-0.85198v-2.7264l1.7039-1.7039 1.7039 1.7039z" fill="#3f51b5" stroke-width=".28399"/> + <path d="m9.6466 7.2228h1.8241c1.3364 0 2.4123 1.0759 2.4123 2.4123v1.8241c0 1.3364-1.0759 2.4123-2.4123 2.4123h-1.8241c-1.3364 0-2.4123-1.0759-2.4123-2.4123v-1.8241c0-1.3364 1.0759-2.4123 2.4123-2.4123z" fill="#fff" stroke="#fff" stroke-width=".581"/> + <g transform="matrix(.23892 0 0 .23892 7.6904 7.6801)" fill="#868686" stroke="#3f51b5"> + <path d="m12 24c-6.617 0-12-5.383-12-12s5.383-12 12-12 12 5.383 12 12-5.383 12-12 12zm0-23c-6.065 0-11 4.935-11 11s4.935 11 11 11 11-4.935 11-11-4.935-11-11-11z"/> + <path d="m11.535 12.184c-1.589-4.01-1.582-8.684 0.017-11.906l0.896 0.444c-1.479 2.98-1.472 7.335 0.017 11.094z"/> + <path d="m2.072 18.249-0.062-0.998c3.321-0.21 7.088-2.393 9.599-5.562l0.784 0.621c-2.68 3.381-6.73 5.712-10.321 5.939z"/> + <path d="m21.543 18.026c-1.842-2.771-5.616-4.942-9.616-5.532l0.146-0.989c4.267 0.629 8.311 2.971 10.302 5.968z"/> + <path d="m6.531 22.544-0.225-0.975c4.2-0.97 8.986-4.549 10.667-7.979l0.898 0.439c-1.797 3.667-6.884 7.487-11.34 8.515z"/> + <path d="m23.135 12.146c-2.941-3.153-8.435-5.512-12.245-5.248l-0.067-0.998c4.073-0.267 9.924 2.22 13.042 5.565z"/> + <path d="m7.306 16.069c-2.276-3.389-3.04-9.704-1.702-14.077l0.956 0.292c-1.261 4.122-0.554 10.056 1.576 13.229z"/> </g> - </switch> - <rect x="14.864" y="14.875" width="6.6486" height="6.6486" ry="2.4123" fill="#fff" stroke="#fff" stroke-width=".581"/> - <path d="m20.434 18.962c0.03938-0.18042 0.06222-0.37015 0.06222-0.57002 0-0.335-0.05822-0.64478-0.16547-0.92189 0.33937-0.63986 0.51574-1.1394 0.54953-1.5628 0.0043-0.05353-0.0141-0.10627-0.05039-0.14572-0.03649-0.03938-0.08776-0.06185-0.14134-0.06185-0.49193 0-0.96478 0.20178-1.4419 0.61032-0.31057-0.14474-0.66651-0.22572-1.058-0.22572s-0.74743 0.08104-1.058 0.22572c-0.47703-0.40861-0.94988-0.61032-1.4419-0.61032-0.0536 0-0.10486 0.02246-0.14129 0.0619-0.03636 0.03932-0.05464 0.09218-0.05039 0.14572 0.03379 0.42331 0.21015 0.92281 0.54953 1.5628-0.10732 0.2771-0.16547 0.58688-0.16547 0.92182 0 0.19988 0.02283 0.38959 0.06222 0.57002-0.1216 0.06277-0.23926 0.14117-0.36873 0.23673-0.08547 0.06308-0.10357 0.1835-0.04056 0.26892 0.03772 0.05113 0.09594 0.07815 0.1549 0.07815 0.03962 0 0.07963-0.01218 0.11397-0.03754 0.09138-0.06744 0.17305-0.12259 0.25371-0.16904 0.04819 0.12006 0.10658 0.23298 0.17292 0.33969-0.14018 0.05612-0.28849 0.14338-0.47162 0.29599-0.08159 0.06818-0.09261 0.18929-0.02461 0.27102 0.03803 0.04567 0.09268 0.06911 0.14781 0.06911 0.04338 0 0.08702-0.01465 0.12301-0.04449 0.19347-0.16122 0.32492-0.22917 0.47217-0.26966 0.40922 0.43919 1.0042 0.69875 1.7124 0.69875 0.70817 0 1.3032-0.25956 1.7124-0.69875 0.14726 0.04049 0.2787 0.10843 0.47217 0.26966 0.03594 0.02984 0.07963 0.04449 0.12301 0.04449 0.05513 0 0.10978-0.02344 0.14781-0.06911 0.068-0.08172 0.05698-0.20282-0.02462-0.27102-0.18307-0.15261-0.33144-0.23982-0.47162-0.29599 0.06627-0.10671 0.12474-0.21969 0.17291-0.33969 0.08067 0.04646 0.16234 0.1016 0.25371 0.16904 0.03434 0.02535 0.07433 0.03754 0.11397 0.03754 0.05896 0 0.11716-0.02702 0.15495-0.07815 0.06301-0.08547 0.04486-0.20584-0.04056-0.26892-0.12953-0.09557-0.24713-0.17397-0.36873-0.23673zm-3.2069-0.57002c-0.21211 0-0.3846-0.17261-0.3846-0.3846 0-0.21211 0.17249-0.3846 0.3846-0.3846s0.3846 0.17249 0.3846 0.3846c0 0.21199-0.17249 0.3846-0.3846 0.3846zm1.3077 0.42866-0.30165 0.32092c-0.02461 0.02621-0.06455 0.02621-0.08917 0l-0.30165-0.32092c-0.08196-0.0872-0.02394-0.23636 0.09199-0.23636h0.50842c0.116 0 0.17409 0.1491 0.09206 0.23636zm0.61531-0.42866c-0.21211 0-0.3846-0.17261-0.3846-0.3846 0-0.21211 0.17249-0.3846 0.3846-0.3846s0.3846 0.17249 0.3846 0.3846c0 0.21199-0.17249 0.3846-0.3846 0.3846z" fill="#3f51b5" stroke-width=".061538"/> - </g> - <g transform="matrix(1.3564 0 0 1.3564 -3.5693 -4.2139)" fill="#fff" stroke-width=".27865" aria-label="ABC"> - <path d="m16.161 14.415h-0.74887l-0.10304 0.35121h-0.67195l0.79966-2.1276h0.71694l0.79966 2.1276h-0.68791zm-0.13787-0.46006-0.23511-0.76483-0.23366 0.76483z"/> - <path d="m17.166 12.638h1.2307q0.30768 0 0.47167 0.15239 0.16545 0.15239 0.16545 0.37734 0 0.18867-0.11755 0.32364-0.07837 0.08998-0.2293 0.14223 0.2293 0.05515 0.3367 0.19012 0.10885 0.13352 0.10885 0.3367 0 0.16545-0.07692 0.29752t-0.21044 0.20899q-0.08272 0.04789-0.24962 0.06966-0.22205 0.02903-0.29461 0.02903h-1.1349zm0.66324 0.83449h0.2859q0.15384 0 0.21334-0.05225 0.06095-0.0537 0.06095-0.15384 0-0.09288-0.06095-0.14513-0.0595-0.05225-0.20899-0.05225h-0.29026zm0 0.83594h0.33525q0.1698 0 0.23946-0.0595 0.06966-0.06095 0.06966-0.16254 0-0.09433-0.06966-0.15093-0.06821-0.05805-0.24092-0.05805h-0.3338z"/> - <path d="m20.892 13.897 0.57616 0.17416q-0.05805 0.24237-0.18286 0.40491t-0.31058 0.24527q-0.18432 0.08272-0.47022 0.08272-0.34686 0-0.56746-0.10014-0.21915-0.10159-0.37879-0.35557t-0.15964-0.65018q0-0.52827 0.2801-0.81127 0.28155-0.28445 0.79531-0.28445 0.40201 0 0.63131 0.16254 0.23076 0.16254 0.34251 0.49924l-0.58052 0.12916q-0.03048-0.09724-0.06386-0.14223-0.05515-0.07547-0.13497-0.1161-0.07982-0.04064-0.17851-0.04064-0.2235 0-0.34251 0.17996-0.08998 0.13352-0.08998 0.41942 0 0.35412 0.1074 0.48618 0.1074 0.13062 0.30187 0.13062 0.18867 0 0.28445-0.10594 0.09724-0.10594 0.14078-0.30767z"/> - </g> - <g transform="matrix(-.0023678 0 0 -.0023678 15.557 15.557)" fill="#fff"> - <path d="m380.5 100.5-350 350c-27.3 27.3-27.3 71.6 0 99l350 350c27.3 27.3 71.6 27.3 99 0 27.3-27.3 27.3-71.6 0-99l-230.5-230.5h671c38.7 0 70-31.3 70-70s-31.3-70-70-70h-671l230.5-230.5c13.7-13.7 20.5-31.6 20.5-49.5s-6.8-35.8-20.5-49.5c-27.4-27.3-71.7-27.3-99 0z" fill="#fff"/> + <rect x="14.864" y="7.2228" width="6.6486" height="6.6486" ry="2.4123" fill="#fff" stroke="#fff" stroke-width=".581"/> + <switch transform="matrix(.064527 0 0 .064527 14.959 7.324)" fill="#3f51b5" stroke="#3f51b5"> + <g fill="#3f51b5" stroke="#3f51b5"> + <path d="m78.2 66c-0.6 0-13.9-1.2-22.5 6.7-1 0.9-2 2-2.8 3.1v-18.5h1.6c7.1 0 11.9-1.7 14.8-5.1 3.7-4.5 2.9-10.8 2-15.2-2.3-11.3 0.4-15.9 3.2-20.9l1.2-2.1c0.8-1.4 0.2-3.5-1.2-4.3-2.2-1.2-7.8 0.9-13.6 5.2-2.5-6.9-8.8-11.6-9.1-11.8-1.1-0.8-2.5-0.8-3.6 0-0.3 0.2-6.6 4.9-9.2 11.6-5.8-4.3-11.4-6.4-13.6-5.2-1.4 0.8-2 2.9-1.2 4.3l1.2 2.1c2.8 5 5.5 9.6 3.2 20.9-0.9 4.4-1.7 10.7 2 15.2 2.8 3.5 7.7 5.1 14.7 5.1h1.6v18.5c-0.8-1.1-1.7-2.1-2.8-3.1-8.5-7.6-21.8-6.5-22.3-6.5-1.6 0.1-2.7 1.4-2.7 3 0 0.6 0.2 13.9 8.8 21.7 6.6 6 15.9 6.7 20.2 6.7h4c4.3 0 13.6-0.8 20.2-6.7 8.5-7.8 8.7-21.1 8.7-21.7 0-1.5-1.2-2.8-2.8-3zm-28.2-56.6c2.1 1.9 5.3 5.6 6 9.6-2.2 2.1-4.2 4.4-5.9 7-1.7-2.6-3.8-4.9-6-7.1 0.6-3.9 3.8-7.5 5.9-9.5zm-14.7 38.9c-1.5-1.9-1.8-5.2-0.8-10.2 2-9.6 0.7-15.6-1.3-20.1 4 2.5 9.1 6.7 12.8 13 0.5 0.8 0.9 1.6 1.3 2.4 0.5 1 1.5 1.6 2.6 1.6s2.1-0.6 2.6-1.6c0.4-0.8 0.9-1.6 1.3-2.4 3.7-6.2 8.8-10.4 12.8-13-2 4.6-3.3 10.5-1.3 20.1 1 5 0.8 8.3-0.8 10.2s-5 2.9-10.1 2.9l-9.2-0.1c-4.9 0.1-8.3-0.9-9.9-2.8zm-3.5 38c-4.5-4.1-6-10.6-6.5-14.4 3.8 0.1 10.4 1 14.9 5.1s6 10.6 6.5 14.4c-3.8-0.1-10.3-1-14.9-5.1zm36.4 0c-4.5 4.1-11.1 5-14.9 5.1 0.5-3.8 2-10.2 6.6-14.3 4.5-4.1 11.1-5 14.9-5.1-0.6 3.7-2.1 10.2-6.6 14.3z" fill="#3f51b5" stroke="#3f51b5"/> + </g> + </switch> + <rect x="14.864" y="14.875" width="6.6486" height="6.6486" ry="2.4123" fill="#fff" stroke="#fff" stroke-width=".581"/> + <path d="m20.434 18.962c0.03938-0.18042 0.06222-0.37015 0.06222-0.57002 0-0.335-0.05822-0.64478-0.16547-0.92189 0.33937-0.63986 0.51574-1.1394 0.54953-1.5628 0.0043-0.05353-0.0141-0.10627-0.05039-0.14572-0.03649-0.03938-0.08776-0.06185-0.14134-0.06185-0.49193 0-0.96478 0.20178-1.4419 0.61032-0.31057-0.14474-0.66651-0.22572-1.058-0.22572s-0.74743 0.08104-1.058 0.22572c-0.47703-0.40861-0.94988-0.61032-1.4419-0.61032-0.0536 0-0.10486 0.02246-0.14129 0.0619-0.03636 0.03932-0.05464 0.09218-0.05039 0.14572 0.03379 0.42331 0.21015 0.92281 0.54953 1.5628-0.10732 0.2771-0.16547 0.58688-0.16547 0.92182 0 0.19988 0.02283 0.38959 0.06222 0.57002-0.1216 0.06277-0.23926 0.14117-0.36873 0.23673-0.08547 0.06308-0.10357 0.1835-0.04056 0.26892 0.03772 0.05113 0.09594 0.07815 0.1549 0.07815 0.03962 0 0.07963-0.01218 0.11397-0.03754 0.09138-0.06744 0.17305-0.12259 0.25371-0.16904 0.04819 0.12006 0.10658 0.23298 0.17292 0.33969-0.14018 0.05612-0.28849 0.14338-0.47162 0.29599-0.08159 0.06818-0.09261 0.18929-0.02461 0.27102 0.03803 0.04567 0.09268 0.06911 0.14781 0.06911 0.04338 0 0.08702-0.01465 0.12301-0.04449 0.19347-0.16122 0.32492-0.22917 0.47217-0.26966 0.40922 0.43919 1.0042 0.69875 1.7124 0.69875 0.70817 0 1.3032-0.25956 1.7124-0.69875 0.14726 0.04049 0.2787 0.10843 0.47217 0.26966 0.03594 0.02984 0.07963 0.04449 0.12301 0.04449 0.05513 0 0.10978-0.02344 0.14781-0.06911 0.068-0.08172 0.05698-0.20282-0.02462-0.27102-0.18307-0.15261-0.33144-0.23982-0.47162-0.29599 0.06627-0.10671 0.12474-0.21969 0.17291-0.33969 0.08067 0.04646 0.16234 0.1016 0.25371 0.16904 0.03434 0.02535 0.07433 0.03754 0.11397 0.03754 0.05896 0 0.11716-0.02702 0.15495-0.07815 0.06301-0.08547 0.04486-0.20584-0.04056-0.26892-0.12953-0.09557-0.24713-0.17397-0.36873-0.23673zm-3.2069-0.57002c-0.21211 0-0.3846-0.17261-0.3846-0.3846 0-0.21211 0.17249-0.3846 0.3846-0.3846s0.3846 0.17249 0.3846 0.3846c0 0.21199-0.17249 0.3846-0.3846 0.3846zm1.3077 0.42866-0.30165 0.32092c-0.02461 0.02621-0.06455 0.02621-0.08917 0l-0.30165-0.32092c-0.08196-0.0872-0.02394-0.23636 0.09199-0.23636h0.50842c0.116 0 0.17409 0.1491 0.09206 0.23636zm0.61531-0.42866c-0.21211 0-0.3846-0.17261-0.3846-0.3846 0-0.21211 0.17249-0.3846 0.3846-0.3846s0.3846 0.17249 0.3846 0.3846c0 0.21199-0.17249 0.3846-0.3846 0.3846z" fill="#3f51b5" stroke-width=".061538"/> + </g> + <g transform="matrix(1.3564,0,0,1.3564,-3.5693,-4.2139)" fill="#fff" stroke-width=".27865" aria-label="ABC"> + <path d="m16.161 14.415h-0.74887l-0.10304 0.35121h-0.67195l0.79966-2.1276h0.71694l0.79966 2.1276h-0.68791zm-0.13787-0.46006-0.23511-0.76483-0.23366 0.76483z"/> + <path d="m17.166 12.638h1.2307q0.30768 0 0.47167 0.15239 0.16545 0.15239 0.16545 0.37734 0 0.18867-0.11755 0.32364-0.07837 0.08998-0.2293 0.14223 0.2293 0.05515 0.3367 0.19012 0.10885 0.13352 0.10885 0.3367 0 0.16545-0.07692 0.29752t-0.21044 0.20899q-0.08272 0.04789-0.24962 0.06966-0.22205 0.02903-0.29461 0.02903h-1.1349zm0.66324 0.83449h0.2859q0.15384 0 0.21334-0.05225 0.06095-0.0537 0.06095-0.15384 0-0.09288-0.06095-0.14513-0.0595-0.05225-0.20899-0.05225h-0.29026zm0 0.83594h0.33525q0.1698 0 0.23946-0.0595 0.06966-0.06095 0.06966-0.16254 0-0.09433-0.06966-0.15093-0.06821-0.05805-0.24092-0.05805h-0.3338z"/> + <path d="m20.892 13.897 0.57616 0.17416q-0.05805 0.24237-0.18286 0.40491t-0.31058 0.24527q-0.18432 0.08272-0.47022 0.08272-0.34686 0-0.56746-0.10014-0.21915-0.10159-0.37879-0.35557t-0.15964-0.65018q0-0.52827 0.2801-0.81127 0.28155-0.28445 0.79531-0.28445 0.40201 0 0.63131 0.16254 0.23076 0.16254 0.34251 0.49924l-0.58052 0.12916q-0.03048-0.09724-0.06386-0.14223-0.05515-0.07547-0.13497-0.1161-0.07982-0.04064-0.17851-0.04064-0.2235 0-0.34251 0.17996-0.08998 0.13352-0.08998 0.41942 0 0.35412 0.1074 0.48618 0.1074 0.13062 0.30187 0.13062 0.18867 0 0.28445-0.10594 0.09724-0.10594 0.14078-0.30767z"/> + </g> + <g transform="matrix(-.0023678 0 0 -.0023678 15.557 15.557)" fill="#fff"> + <path d="m380.5 100.5-350 350c-27.3 27.3-27.3 71.6 0 99l350 350c27.3 27.3 71.6 27.3 99 0 27.3-27.3 27.3-71.6 0-99l-230.5-230.5h671c38.7 0 70-31.3 70-70s-31.3-70-70-70h-671l230.5-230.5c13.7-13.7 20.5-31.6 20.5-49.5s-6.8-35.8-20.5-49.5c-27.4-27.3-71.7-27.3-99 0z" fill="#fff"/> + </g> </g> </svg>