93 lines
2.0 KiB
Dart
93 lines
2.0 KiB
Dart
import 'package:jadb/_data_ingestion/sql_writable.dart';
|
|
|
|
/// Enum set in the kvg:position attribute, used by `<g>` elements in the KanjiVG SVG files.
|
|
enum KanjiPathGroupPosition {
|
|
bottom,
|
|
kamae,
|
|
kamaec,
|
|
left,
|
|
middle,
|
|
nyo,
|
|
nyoc,
|
|
right,
|
|
tare,
|
|
tarec,
|
|
top,
|
|
}
|
|
|
|
/// Contents of a \<g> element in the KanjiVG SVG files.
|
|
class KanjiPathGroupTreeNode extends SQLWritable {
|
|
final String id;
|
|
final List<KanjiPathGroupTreeNode> children;
|
|
final String? element;
|
|
final String? original;
|
|
final KanjiPathGroupPosition? position;
|
|
final String? radical;
|
|
final int? part;
|
|
|
|
KanjiPathGroupTreeNode({
|
|
required this.id,
|
|
this.children = const [],
|
|
this.element,
|
|
this.original,
|
|
this.position,
|
|
this.radical,
|
|
this.part,
|
|
});
|
|
|
|
@override
|
|
Map<String, Object?> get sqlValue => {
|
|
'id': id,
|
|
'element': element,
|
|
'original': original,
|
|
'position': position?.name,
|
|
'radical': radical,
|
|
'part': part,
|
|
};
|
|
}
|
|
|
|
/// Contents of a `<text>` element in the StrokeNumber's group in the KanjiVG SVG files
|
|
class KanjiStrokeNumber extends SQLWritable {
|
|
final int num;
|
|
final double x;
|
|
final double y;
|
|
|
|
KanjiStrokeNumber(this.num, this.x, this.y);
|
|
|
|
@override
|
|
Map<String, Object?> get sqlValue => {'num': num, 'x': x, 'y': y};
|
|
}
|
|
|
|
/// Contents of a `<path>` element in the KanjiVG SVG files
|
|
class KanjiVGPath extends SQLWritable {
|
|
final String id;
|
|
final String type;
|
|
final String svgPath;
|
|
|
|
KanjiVGPath({required this.id, required this.type, required this.svgPath});
|
|
|
|
@override
|
|
Map<String, Object?> get sqlValue => {
|
|
'id': id,
|
|
'type': type,
|
|
'svgPath': svgPath,
|
|
};
|
|
}
|
|
|
|
class KanjiVGItem extends SQLWritable {
|
|
final String character;
|
|
final List<KanjiVGPath> paths;
|
|
final List<KanjiStrokeNumber> strokeNumbers;
|
|
final List<KanjiPathGroupTreeNode> pathGroups;
|
|
|
|
KanjiVGItem({
|
|
required this.character,
|
|
required this.paths,
|
|
required this.strokeNumbers,
|
|
required this.pathGroups,
|
|
});
|
|
|
|
@override
|
|
Map<String, Object?> get sqlValue => {'character': character};
|
|
}
|