dissolve app/ into repo root (D-056)
Single Flutter package at the repo root. All code, tests, assets, and platform directories moved from app/ to root. Package renamed from clide_app to clide — all imports rewritten. Merged pubspec combines core (ffi) and app (flutter, yaml, xterm) dependencies. Makefile simplified: no APP_PRESENT conditionals, no cd, no daemon lifecycle. 317 tests pass. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
import 'package:clide/kernel/src/theme/controller.dart';
|
||||
import 'package:flutter/widgets.dart';
|
||||
|
||||
/// Stateless painter producing a single-color icon. Every icon in
|
||||
/// [icons/] subclasses this; widgets wrap with [ClideIcon] for size +
|
||||
/// color-from-theme.
|
||||
abstract class ClideIconPainter {
|
||||
const ClideIconPainter();
|
||||
|
||||
/// Paint the icon into a unit square (0,0 .. 1,1).
|
||||
void paint(Canvas canvas, Color color);
|
||||
}
|
||||
|
||||
class ClideIcon extends StatelessWidget {
|
||||
const ClideIcon(
|
||||
this.painter, {
|
||||
super.key,
|
||||
this.size = 14,
|
||||
this.color,
|
||||
});
|
||||
|
||||
final ClideIconPainter painter;
|
||||
final double size;
|
||||
final Color? color;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final resolved = color ?? ClideTheme.of(context).surface.globalForeground;
|
||||
return SizedBox(
|
||||
width: size,
|
||||
height: size,
|
||||
child: CustomPaint(
|
||||
size: Size(size, size),
|
||||
painter: _IconPainterAdapter(painter: painter, color: resolved),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
class _IconPainterAdapter extends CustomPainter {
|
||||
_IconPainterAdapter({required this.painter, required this.color});
|
||||
|
||||
final ClideIconPainter painter;
|
||||
final Color color;
|
||||
|
||||
@override
|
||||
void paint(Canvas canvas, Size size) {
|
||||
canvas.save();
|
||||
canvas.scale(size.width, size.height);
|
||||
painter.paint(canvas, color);
|
||||
canvas.restore();
|
||||
}
|
||||
|
||||
@override
|
||||
bool shouldRepaint(covariant _IconPainterAdapter old) =>
|
||||
old.painter != painter || old.color != color;
|
||||
}
|
||||
Reference in New Issue
Block a user