Fix ASCII rasterizer scaling for CLI

Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
This commit is contained in:
2026-03-16 16:29:08 +01:00
parent 5b417c9182
commit 400720a56e
4 changed files with 40 additions and 22 deletions

View File

@@ -26,22 +26,13 @@ class _WolfFlutterRendererState
@override
Color get scaffoldColor => const Color.fromARGB(255, 4, 64, 64);
@override
void dispose() {
_renderedFrame?.dispose();
super.dispose();
}
@override
void performRender() {
// Avoid overlapping render calls since decodeImageFromPixels is async
if (_isRendering) return;
_isRendering = true;
// 1. Rasterize the frame into the pixel buffer
_rasterizer.render(widget.engine, _frameBuffer);
// 2. Convert raw pixels to a Flutter ui.Image
ui.decodeImageFromPixels(
_frameBuffer.pixels.buffer.asUint8List(),
_frameBuffer.width,
@@ -61,13 +52,16 @@ class _WolfFlutterRendererState
@override
Widget buildViewport(BuildContext context) {
// If we don't have a frame yet, show the loading state
if (_renderedFrame == null) {
return const CircularProgressIndicator(color: Colors.white24);
}
return Padding(
padding: const EdgeInsets.all(16.0),
child: AspectRatio(
aspectRatio: 4 / 3,
child: CustomPaint(
painter: BufferPainter(_renderedFrame),
),
child: CustomPaint(painter: BufferPainter(_renderedFrame)),
),
);
}