srecord noeq G22Tiling
(Img img) {
new L tiles;
// number of pixels covered by all tiles
int pixelsCovered;
// for each pixel: tile index+1 (or 0 for empty)
int[] tileMatrix;
// index = dual log of tile size, value = tile index
//new L tilesBySize;
// yay, extending Rect to save space
sclass Tile extends Rect {
int index;
int color; // tile color as defined by the tiler
*(int *index, int *color, Rect position) {
position(position);
}
Rect position() { this; }
selfType position(Rect r) {
x = r.x; y = r.y; w = r.w; h = r.h;
this;
}
// Lists of neighbors in all 4 directions (index like NESWDirection)
// (If only a corner is touching, it's not a neighbor.)
// Not used yet
//Cl[] neighbors;
}
int w() { ret img.w(); }
int h() { ret img.h(); }
void initTileMatrix {
tileMatrix = new int[w()*h()];
}
int numTiles() { ret l(tiles); }
L get() { ret tiles; }
}