diff --git a/packages/app/assets/logo.svg b/packages/app/assets/logo.svg
deleted file mode 120000
index 4228c63504d..00000000000
--- a/packages/app/assets/logo.svg
+++ /dev/null
@@ -1 +0,0 @@
-../../../assets/logo.svg
\ No newline at end of file
diff --git a/packages/app/assets/logo.svg.vec b/packages/app/assets/logo.svg.vec
new file mode 100644
index 00000000000..081aa56640d
Binary files /dev/null and b/packages/app/assets/logo.svg.vec differ
diff --git a/packages/app/lib/branding.dart b/packages/app/lib/branding.dart
index 13382f2fad3..0a13a7cd633 100644
--- a/packages/app/lib/branding.dart
+++ b/packages/app/lib/branding.dart
@@ -1,19 +1,21 @@
import 'dart:ui';
-import 'package:flutter_svg/flutter_svg.dart';
import 'package:neon/theme.dart';
+import 'package:vector_graphics/vector_graphics.dart';
-final neonTheme = NeonTheme(
+const neonTheme = NeonTheme(
branding: branding,
colorScheme: colorScheme,
);
-final branding = Branding(
+const branding = Branding(
name: 'Nextcloud Neon',
- logo: SvgPicture.asset(
- 'assets/logo.svg',
+ logo: VectorGraphic(
width: 100,
height: 100,
+ loader: AssetBytesLoader(
+ 'assets/logo.svg.vec',
+ ),
),
legalese: 'Copyright © 2023, provokateurin\nUnder GPLv3 license',
);
diff --git a/packages/app/pubspec.lock b/packages/app/pubspec.lock
index 0cf02efdca2..362d763dfb6 100644
--- a/packages/app/pubspec.lock
+++ b/packages/app/pubspec.lock
@@ -367,7 +367,7 @@ packages:
source: hosted
version: "2.0.16"
flutter_svg:
- dependency: "direct main"
+ dependency: transitive
description:
name: flutter_svg
sha256: "8c5d68a82add3ca76d792f058b186a0599414f279f00ece4830b9b231b570338"
@@ -1232,7 +1232,7 @@ packages:
source: hosted
version: "3.0.7"
vector_graphics:
- dependency: transitive
+ dependency: "direct main"
description:
name: vector_graphics
sha256: "670f6e07aca990b4a2bcdc08a784193c4ccdd1932620244c3a86bb72a0eac67f"
diff --git a/packages/app/pubspec.yaml b/packages/app/pubspec.yaml
index 8c95f97a7ac..060afa09d61 100644
--- a/packages/app/pubspec.yaml
+++ b/packages/app/pubspec.yaml
@@ -9,7 +9,6 @@ environment:
dependencies:
flutter:
sdk: flutter
- flutter_svg: ^2.0.7
neon:
git:
url: https://github.com/nextcloud/neon
@@ -30,6 +29,7 @@ dependencies:
git:
url: https://github.com/nextcloud/neon
path: packages/neon/neon_notifications
+ vector_graphics: ^1.1.7
dev_dependencies:
flutter_material_design_icons: ^1.1.7296
diff --git a/packages/neon/neon/assets/logo_nextcloud.svg b/packages/neon/neon/assets/logo_nextcloud.svg
deleted file mode 100644
index 7910fc000c4..00000000000
--- a/packages/neon/neon/assets/logo_nextcloud.svg
+++ /dev/null
@@ -1,77 +0,0 @@
-
-
-
-
\ No newline at end of file
diff --git a/packages/neon/neon/assets/logo_nextcloud.svg.vec b/packages/neon/neon/assets/logo_nextcloud.svg.vec
new file mode 100644
index 00000000000..af812c8245d
Binary files /dev/null and b/packages/neon/neon/assets/logo_nextcloud.svg.vec differ
diff --git a/packages/neon/neon/lib/src/models/app_implementation.dart b/packages/neon/neon/lib/src/models/app_implementation.dart
index 5051d0e6d85..7b0c628d58b 100644
--- a/packages/neon/neon/lib/src/models/app_implementation.dart
+++ b/packages/neon/neon/lib/src/models/app_implementation.dart
@@ -1,6 +1,5 @@
import 'package:collection/collection.dart';
import 'package:flutter/material.dart';
-import 'package:flutter_svg/flutter_svg.dart';
import 'package:go_router/go_router.dart';
import 'package:meta/meta.dart';
import 'package:neon/l10n/localizations.dart';
@@ -12,6 +11,7 @@ import 'package:neon/src/settings/models/storage.dart';
import 'package:neon/src/widgets/drawer_destination.dart';
import 'package:provider/provider.dart';
import 'package:rxdart/rxdart.dart';
+import 'package:vector_graphics/vector_graphics.dart';
@immutable
abstract class AppImplementation {
@@ -95,13 +95,15 @@ abstract class AppImplementation
final Color? color,
}) =>
Builder(
- builder: (final context) => SizedBox.fromSize(
- size: size,
- child: SvgPicture.asset(
- 'assets/app.svg',
- package: 'neon_$id',
- colorFilter: ColorFilter.mode(color ?? Theme.of(context).colorScheme.primary, BlendMode.srcIn),
+ builder: (final context) => VectorGraphic(
+ width: size.width,
+ height: size.height,
+ colorFilter: ColorFilter.mode(color ?? Theme.of(context).colorScheme.primary, BlendMode.srcIn),
+ loader: AssetBytesLoader(
+ 'assets/app.svg.vec',
+ packageName: 'neon_$id',
),
+ semanticsLabel: AppLocalizations.of(context).nextcloudLogo,
),
);
diff --git a/packages/neon/neon/lib/src/widgets/nextcloud_logo.dart b/packages/neon/neon/lib/src/widgets/nextcloud_logo.dart
index bd11a90fb8f..c6324ca397d 100644
--- a/packages/neon/neon/lib/src/widgets/nextcloud_logo.dart
+++ b/packages/neon/neon/lib/src/widgets/nextcloud_logo.dart
@@ -1,6 +1,6 @@
import 'package:flutter/widgets.dart';
-import 'package:flutter_svg/flutter_svg.dart';
import 'package:neon/l10n/localizations.dart';
+import 'package:vector_graphics/vector_graphics.dart';
class NextcloudLogo extends StatelessWidget {
const NextcloudLogo({
@@ -8,11 +8,13 @@ class NextcloudLogo extends StatelessWidget {
});
@override
- Widget build(final BuildContext context) => SvgPicture.asset(
- 'assets/logo_nextcloud.svg',
- package: 'neon',
+ Widget build(final BuildContext context) => VectorGraphic(
width: 100,
height: 100,
+ loader: const AssetBytesLoader(
+ 'assets/logo_nextcloud.svg.vec',
+ packageName: 'neon',
+ ),
semanticsLabel: AppLocalizations.of(context).nextcloudLogo,
);
}
diff --git a/packages/neon/neon_files/assets/app.svg b/packages/neon/neon_files/assets/app.svg
deleted file mode 100644
index 7f84d1de9df..00000000000
--- a/packages/neon/neon_files/assets/app.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/neon/neon_files/assets/app.svg.vec b/packages/neon/neon_files/assets/app.svg.vec
new file mode 100644
index 00000000000..51f4d00dd88
Binary files /dev/null and b/packages/neon/neon_files/assets/app.svg.vec differ
diff --git a/packages/neon/neon_files/pubspec.yaml b/packages/neon/neon_files/pubspec.yaml
index c090f568adc..1d6d4d6ce41 100644
--- a/packages/neon/neon_files/pubspec.yaml
+++ b/packages/neon/neon_files/pubspec.yaml
@@ -39,6 +39,7 @@ dev_dependencies:
git:
url: https://github.com/nextcloud/neon
path: packages/neon_lints
+ vector_graphics_compiler: ^1.1.7
flutter:
uses-material-design: true
diff --git a/packages/neon/neon_news/assets/app.svg b/packages/neon/neon_news/assets/app.svg
deleted file mode 100644
index c27cae23689..00000000000
--- a/packages/neon/neon_news/assets/app.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
diff --git a/packages/neon/neon_news/assets/app.svg.vec b/packages/neon/neon_news/assets/app.svg.vec
new file mode 100644
index 00000000000..b63e37c1516
Binary files /dev/null and b/packages/neon/neon_news/assets/app.svg.vec differ
diff --git a/packages/neon/neon_news/pubspec.yaml b/packages/neon/neon_news/pubspec.yaml
index 81199c8b967..2f978b18499 100644
--- a/packages/neon/neon_news/pubspec.yaml
+++ b/packages/neon/neon_news/pubspec.yaml
@@ -31,6 +31,7 @@ dev_dependencies:
git:
url: https://github.com/nextcloud/neon
path: packages/neon_lints
+ vector_graphics_compiler: ^1.1.7
flutter:
uses-material-design: true
diff --git a/packages/neon/neon_notes/assets/app.svg b/packages/neon/neon_notes/assets/app.svg
deleted file mode 100644
index a7a15434bb6..00000000000
--- a/packages/neon/neon_notes/assets/app.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/neon/neon_notes/assets/app.svg.vec b/packages/neon/neon_notes/assets/app.svg.vec
new file mode 100644
index 00000000000..d9dd7244e73
Binary files /dev/null and b/packages/neon/neon_notes/assets/app.svg.vec differ
diff --git a/packages/neon/neon_notes/pubspec.yaml b/packages/neon/neon_notes/pubspec.yaml
index f70f0e12f45..23a04f820ca 100644
--- a/packages/neon/neon_notes/pubspec.yaml
+++ b/packages/neon/neon_notes/pubspec.yaml
@@ -31,6 +31,7 @@ dev_dependencies:
git:
url: https://github.com/nextcloud/neon
path: packages/neon_lints
+ vector_graphics_compiler: ^1.1.7
flutter:
uses-material-design: true
diff --git a/packages/neon/neon_notifications/assets/app.svg b/packages/neon/neon_notifications/assets/app.svg
deleted file mode 100644
index 51507f365ba..00000000000
--- a/packages/neon/neon_notifications/assets/app.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/neon/neon_notifications/assets/app.svg.vec b/packages/neon/neon_notifications/assets/app.svg.vec
new file mode 100644
index 00000000000..5bf96834311
Binary files /dev/null and b/packages/neon/neon_notifications/assets/app.svg.vec differ
diff --git a/packages/neon/neon_notifications/pubspec.yaml b/packages/neon/neon_notifications/pubspec.yaml
index 2d80ae744ee..95239eeea1f 100644
--- a/packages/neon/neon_notifications/pubspec.yaml
+++ b/packages/neon/neon_notifications/pubspec.yaml
@@ -25,6 +25,7 @@ dev_dependencies:
git:
url: https://github.com/nextcloud/neon
path: packages/neon_lints
+ vector_graphics_compiler: ^1.1.7
flutter:
uses-material-design: true
diff --git a/tool/generate-app.sh b/tool/generate-app.sh
deleted file mode 100755
index afa487d450c..00000000000
--- a/tool/generate-app.sh
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/bin/bash
-set -euxo pipefail
-cd "$(dirname "$0")/.."
-
-function export_mipmap_icon() {
- source="$1"
- name="$2"
- size="$3"
- dpi="$4"
- inkscape "$source" -o "android/app/src/main/res/mipmap-${dpi}dpi/$name.png" -w "$size" -h "$size"
-}
-
-function export_mipmap_icon_all() {
- source="$1"
- name="$2"
- export_mipmap_icon "$source" "$name" 72 h &
- export_mipmap_icon "$source" "$name" 48 m &
- export_mipmap_icon "$source" "$name" 96 xh &
- export_mipmap_icon "$source" "$name" 144 xxh &
- export_mipmap_icon "$source" "$name" 192 xxxh &
- wait
-}
-
-(
- cd packages/app
-
- # Splash screens
- inkscape assets/logo.svg -o img/splash_icon.png -w 768 -h 768 # 768px at xxxhdpi is 192dp
- convert -size 1152x1152 xc:none img/splash_icon.png -gravity center -composite img/splash_icon_android_12.png # 1152px at xxxhdpi is 288dp
- exiftool -overwrite_original -all= img/splash_icon_android_12.png # To remove timestamps
-
- # Android launcher icons
- export_mipmap_icon_all "assets/logo.svg" "ic_launcher" &
- for id in files news notes notifications; do
- export_mipmap_icon_all "../neon/neon_$id/assets/app.svg" "app_$id" &
- done
- wait
-
- fvm dart run flutter_native_splash:create
-)
diff --git a/tool/generate-assets.sh b/tool/generate-assets.sh
index f82d3ae7368..07d72075d9f 100755
--- a/tool/generate-assets.sh
+++ b/tool/generate-assets.sh
@@ -4,5 +4,100 @@ cd "$(dirname "$0")/.."
color="#f37736"
+rm -rf /tmp/nextcloud-neon
+mkdir -p /tmp/nextcloud-neon
+
+function copy_app_svg() {
+ id="$1"
+ path="$2"
+ target="packages/neon/neon_$id/assets/app.svg"
+ if [ -f "$path/img/app.svg" ]; then
+ cp "$path/img/app.svg" "$target"
+ elif [ -f "$path/img/$id.svg" ]; then
+ cp "$path/img/$id.svg" "$target"
+ else
+ echo "Can not find icon for $id in $path"
+ exit 1
+ fi
+ sed -i "s/fill=\"#[^\"]*\"/fill=\"$color\"/g" "$target"
+}
+
+function export_mipmap_icon() {
+ source="$1"
+ name="$2"
+ size="$3"
+ dpi="$4"
+ inkscape "$source" -o "android/app/src/main/res/mipmap-${dpi}dpi/$name.png" -w "$size" -h "$size"
+}
+
+function export_mipmap_icon_all() {
+ source="$1"
+ name="$2"
+ export_mipmap_icon "$source" "$name" 72 h &
+ export_mipmap_icon "$source" "$name" 48 m &
+ export_mipmap_icon "$source" "$name" 96 xh &
+ export_mipmap_icon "$source" "$name" 144 xxh &
+ export_mipmap_icon "$source" "$name" 192 xxxh &
+ wait
+}
+
+function precompile_assets() {
+ fvm dart run vector_graphics_compiler --input-dir assets/
+ find assets/ -name "*.svg" -exec rm {} \;
+}
+
wget https://raw.githubusercontent.com/Templarian/MaterialDesign/master/svg/cable-data.svg -O assets/logo.svg
sed -i "s/