Commit 33841160 authored by Collin Jackson's avatar Collin Jackson

Style the axis labels

parent 4fc0cbf0
......@@ -7,7 +7,10 @@ library playfair;
import 'dart:sky' as sky;
import 'package:sky/widgets/framework.dart';
import 'package:sky/widgets/theme.dart';
import 'package:sky/rendering/box.dart';
import 'package:sky/rendering/object.dart';
import 'package:sky/painting/paragraph_painter.dart';
import 'package:sky/theme/typography.dart';
part 'src/base.dart';
......@@ -23,6 +23,7 @@ class Chart extends LeafRenderObjectWrapper {
void syncRenderObject(Widget old) {
super.syncRenderObject(old);
root.textTheme = Theme.of(this).text;
root.data = data;
}
}
......@@ -37,7 +38,7 @@ class RenderChart extends RenderConstrainedBox {
final ChartPainter _painter;
ChartData get data => _painter.data;
void set data (ChartData value) {
void set data(ChartData value) {
assert(value != null);
if (value == _painter.data)
return;
......@@ -45,6 +46,15 @@ class RenderChart extends RenderConstrainedBox {
markNeedsPaint();
}
TextTheme get textTheme => _painter.textTheme;
void set textTheme(TextTheme value) {
assert(value != null);
if (value == _painter.textTheme)
return;
_painter.textTheme = value;
markNeedsPaint();
}
void paint(PaintingContext context, Offset offset) {
assert(size.width != null);
assert(size.height != null);
......@@ -58,6 +68,21 @@ class ChartPainter {
ChartData data;
TextTheme _textTheme;
TextTheme get textTheme => _textTheme;
void set textTheme(TextTheme value) {
assert(value != null);
if (_textTheme == value)
return;
_textTheme = value;
labels = [
new ParagraphPainter(new StyledTextSpan(_textTheme.body1, [new PlainTextSpan("${data.startY}")])),
new ParagraphPainter(new StyledTextSpan(_textTheme.body1, [new PlainTextSpan("${data.endY}")])),
];
}
List<ParagraphPainter> labels;
Point _convertPointToRectSpace(Point point, Rect rect) {
double x = rect.left + ((point.x - data.startX) / (data.endX - data.startX)) * rect.width;
double y = rect.bottom - ((point.y - data.startY) / (data.endY - data.startY)) * rect.height;
......@@ -84,9 +109,13 @@ class ChartPainter {
}
void _paintScale(sky.Canvas canvas, Rect rect) {
Paint paint = new Paint()..color = const Color(0xFF000000);
canvas.drawText("${data.startY}", rect.bottomLeft, paint);
canvas.drawText("${data.endY}", rect.topLeft, paint);
// TODO(jackson): Generalize this to draw the whole axis
for(ParagraphPainter painter in labels) {
painter.maxWidth = rect.width;
painter.layout();
}
labels[0].paint(canvas, rect.bottomLeft.toOffset());
labels[1].paint(canvas, rect.topLeft.toOffset());
}
void paint(sky.Canvas canvas, Rect rect) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment