Files
packages.dart/deprecated/image_resizer/lib/src/template.dart
T
2026-01-15 17:36:22 -08:00

191 lines
3.9 KiB
Dart

import 'package:meta/meta.dart';
/// Template for Icon
abstract class IconTemplate {
const IconTemplate(this.size);
final int size;
String get filename;
}
/// web/icons/Icon-512.png
class WebIcon extends IconTemplate {
const WebIcon({
@required int size,
this.prefix = 'Icon-',
this.ext = 'png',
}) : super(size);
final String prefix;
final String ext;
WebIcon copyWith({
int size,
String prefix,
String ext,
}) {
return WebIcon(
prefix: prefix ?? this.prefix,
size: size ?? this.size,
ext: ext ?? this.ext,
);
}
Map<String, dynamic> toJson([String folder = "icons"]) {
return {
"src": "$folder/$filename",
"sizes": "$size" + "x" + "$size",
"type": "image/$ext"
};
}
@override
String get filename => '$prefix$size.$ext';
}
/// web/icons/Icon-512.png
class WebFavicon extends IconTemplate {
const WebFavicon({
int size = 16,
this.name = 'favicon',
this.ext = 'png',
}) : super(size);
final String name;
final String ext;
WebFavicon copyWith({
int size,
String name,
String ext,
}) {
return WebFavicon(
size: size ?? this.size,
ext: ext ?? this.ext,
name: name ?? this.name,
);
}
@override
String get filename => '$name.$ext';
}
/// ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png
class IosIcon extends IconTemplate {
const IosIcon({
@required int size,
this.ext = 'png',
this.prefix = 'Icon-App-',
this.scale = 1,
this.point5 = false,
}) : super(size);
final String prefix;
final int scale;
final String ext;
final bool point5;
IosIcon copyWith({
int size,
String prefix,
int scale,
String ext,
bool point5,
}) {
return IosIcon(
size: size ?? this.size,
prefix: prefix ?? this.prefix,
scale: scale ?? this.scale,
ext: ext ?? this.ext,
point5: point5 ?? this.point5,
);
}
Map<String, dynamic> toJson() {
return {
"size": "${size}x${size}",
"idiom": "ios-marketing",
"filename": filename,
"scale": "${scale}x"
};
}
double get adjustedSize => point5 ? (size.toDouble() + 0.5) : size.toDouble();
@override
String get filename =>
"$prefix${adjustedSize}x${adjustedSize}@${scale}x.$ext";
}
/// android/app/src/main/res/mipmap-hdpi/ic_launcher.png
class AndroidIcon extends IconTemplate {
const AndroidIcon({
@required int size,
this.name = 'ic_launcher',
this.ext = 'png',
this.folderSuffix = 'mipmap-',
this.folder = 'hdpi',
}) : super(size);
final String name;
final String folder;
final String folderSuffix;
final String ext;
AndroidIcon copyWith({
String name,
String folder,
String folderSuffix,
String ext,
int size,
}) {
return AndroidIcon(
name: name ?? this.name,
size: size ?? this.size,
folder: folder ?? this.folder,
folderSuffix: folderSuffix ?? this.folderSuffix,
ext: ext ?? this.ext,
);
}
@override
String get filename => "$name.$ext";
}
/// macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png
class MacOSIcon extends IconTemplate {
const MacOSIcon({
@required int size,
this.prefix = 'app_icon_',
this.ext = 'png',
this.scale = 1,
this.name = '16',
}) : super(size);
final String prefix;
final int scale;
final String ext;
final String name;
MacOSIcon copyWith({
int size,
String prefix,
int scale,
String ext,
}) {
return MacOSIcon(
size: size ?? this.size,
prefix: prefix ?? this.prefix,
scale: scale ?? this.scale,
ext: ext ?? this.ext,
);
}
Map<String, dynamic> toJson() {
return {
"size": "$size" + "x" + "$size",
"idiom": "mac",
"filename": "$prefix$name.$ext",
"scale": "${scale}x"
};
}
@override
String get filename => "$prefix$name.$ext";
}