Files
flame/packages/flame_test/test/debug_text_formatter_test.dart
Luan Nico a1cb9a06ad refactor!: Kill TextRenderer, Long Live TextRenderer (#2683)
This will:

    kill the TextRenderer inheritance chain
    incorporate the functionality of the base TextRenderer in the base TextFormatter
    rename TextFormatter to TextRenderer and appropriate references

That is because both essentially do the same job; encompass the style (or "how") information about how to render text, but using two slightly different interfaces. While that could allow for more flexibility, it is a faux choice that needlessly complicates the pipeline. By having a single interface to comply with, we still allow for custom renders while at the same time making all the code downstream simpler to use and understand.
2023-08-27 21:47:01 +02:00

57 lines
1.8 KiB
Dart

import 'dart:ui';
import 'package:flame/components.dart';
import 'package:flame/text.dart';
import 'package:flame_test/flame_test.dart';
import 'package:flutter_test/flutter_test.dart';
void main() {
group('DebugTextFormatter', () {
testGolden(
'Render debug text',
(game) async {
game.add(
TextElementsComponent([
DebugTextRenderer().format('one two three')..translate(5, 5),
DebugTextRenderer().format(' x ')..translate(5, 25),
DebugTextRenderer().format(' ')..translate(5, 45),
DebugTextRenderer().format('')..translate(25, 45),
DebugTextRenderer(color: const Color(0xFFFF88AA))
.format('Flame Engine')
..translate(5, 65),
DebugTextRenderer(fontWeight: FontWeight.bold).format('Blue Fire')
..translate(5, 85),
DebugTextRenderer(fontWeight: FontWeight.w900).format('Blue Fire')
..translate(5, 105),
DebugTextRenderer(fontStyle: FontStyle.italic).format('Blue Fire')
..translate(5, 125),
DebugTextRenderer(
fontWeight: FontWeight.bold,
fontStyle: FontStyle.italic,
color: const Color(0xFF0088FF),
).format('a b c d e f g h i')
..translate(5, 145),
DebugTextRenderer(fontSize: 10).format('www.flame-engine.org')
..translate(5, 165),
]),
);
},
goldenFile: 'golden_debug_text.png',
size: Vector2(300, 200),
);
});
}
class TextElementsComponent extends PositionComponent {
TextElementsComponent(this.elements);
final List<TextElement> elements;
@override
void render(Canvas canvas) {
for (final element in elements) {
element.draw(canvas);
}
}
}