From b0e67d9f85f69a5cb5c2259d9c61c53a92784bdc Mon Sep 17 00:00:00 2001 From: Marty Oehme Date: Wed, 29 Aug 2018 22:13:13 +0200 Subject: [PATCH] Add getter and setter methods for wrapper !!Need testing --- lib/src/Grid.dart | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/lib/src/Grid.dart b/lib/src/Grid.dart index 540e9e7..e6bf335 100644 --- a/lib/src/Grid.dart +++ b/lib/src/Grid.dart @@ -1,4 +1,5 @@ import 'dart:core'; +import 'dart:math'; import 'package:collection/collection.dart'; @@ -19,4 +20,24 @@ class Grid extends DelegatingList { width = w, height = h, super(l); + + E elementAtPos(int x, int y) { + int i = toIndex(x, y); + if (i >= length) throw RangeError.index(i, this); + _internal[i]; + } + + void setElement(int x, int y, E value) { + int i = toIndex(x, y); + if (i >= length) throw RangeError.index(i, this); + _internal[i] = value; + } + + E get(int x, int y) => elementAtPos(x, y); + + void set(int x, int y, E value) => setElement(x, y, value); + + int toIndex(int x, int y) => y * width + x; + + Point toCoords(int index) => Point(index % width, index ~/ width); }