Commit 33841160 authored by Collin Jackson's avatar Collin Jackson

Style the axis labels

parent 4fc0cbf0
...@@ -7,7 +7,10 @@ library playfair; ...@@ -7,7 +7,10 @@ library playfair;
import 'dart:sky' as sky; import 'dart:sky' as sky;
import 'package:sky/widgets/framework.dart'; import 'package:sky/widgets/framework.dart';
import 'package:sky/widgets/theme.dart';
import 'package:sky/rendering/box.dart'; import 'package:sky/rendering/box.dart';
import 'package:sky/rendering/object.dart'; import 'package:sky/rendering/object.dart';
import 'package:sky/painting/paragraph_painter.dart';
import 'package:sky/theme/typography.dart';
part 'src/base.dart'; part 'src/base.dart';
...@@ -23,6 +23,7 @@ class Chart extends LeafRenderObjectWrapper { ...@@ -23,6 +23,7 @@ class Chart extends LeafRenderObjectWrapper {
void syncRenderObject(Widget old) { void syncRenderObject(Widget old) {
super.syncRenderObject(old); super.syncRenderObject(old);
root.textTheme = Theme.of(this).text;
root.data = data; root.data = data;
} }
} }
...@@ -37,7 +38,7 @@ class RenderChart extends RenderConstrainedBox { ...@@ -37,7 +38,7 @@ class RenderChart extends RenderConstrainedBox {
final ChartPainter _painter; final ChartPainter _painter;
ChartData get data => _painter.data; ChartData get data => _painter.data;
void set data (ChartData value) { void set data(ChartData value) {
assert(value != null); assert(value != null);
if (value == _painter.data) if (value == _painter.data)
return; return;
...@@ -45,6 +46,15 @@ class RenderChart extends RenderConstrainedBox { ...@@ -45,6 +46,15 @@ class RenderChart extends RenderConstrainedBox {
markNeedsPaint(); 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) { void paint(PaintingContext context, Offset offset) {
assert(size.width != null); assert(size.width != null);
assert(size.height != null); assert(size.height != null);
...@@ -58,6 +68,21 @@ class ChartPainter { ...@@ -58,6 +68,21 @@ class ChartPainter {
ChartData data; 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) { Point _convertPointToRectSpace(Point point, Rect rect) {
double x = rect.left + ((point.x - data.startX) / (data.endX - data.startX)) * rect.width; 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; double y = rect.bottom - ((point.y - data.startY) / (data.endY - data.startY)) * rect.height;
...@@ -84,9 +109,13 @@ class ChartPainter { ...@@ -84,9 +109,13 @@ class ChartPainter {
} }
void _paintScale(sky.Canvas canvas, Rect rect) { void _paintScale(sky.Canvas canvas, Rect rect) {
Paint paint = new Paint()..color = const Color(0xFF000000); // TODO(jackson): Generalize this to draw the whole axis
canvas.drawText("${data.startY}", rect.bottomLeft, paint); for(ParagraphPainter painter in labels) {
canvas.drawText("${data.endY}", rect.topLeft, paint); 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) { 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