code: public Tile tile (float x, float y, float width, float height) {
      final float tileX = x, tileY = y, tileWidth = width, tileHeight = height;
      return new Tile() {
        @Override public Texture texture () { return Texture.this; }
        @Override public float width () { return tileWidth; }
        @Override public float height () { return tileHeight; }
        @Override public float sx () { return tileX/displayWidth; }
        @Override public float sy () { return tileY/displayHeight; }
        @Override public float tx () { return (tileX+tileWidth)/displayHeight; }
        @Override public float ty () { return (tileY+tileWidth)/displayHeight; }
        @Override public void addToBatch (QuadBatch batch, int tint, AffineTransform tx,
                                          float x, float y, float width, float height) {
          batch.addQuad(texture(), tint, tx, x, y, width, height, tileX, tileY, tileWidth, tileHeight);
        }
        @Override public void addToBatch (QuadBatch batch, int tint, AffineTransform tx,
                                          float dx, float dy, float dw, float dh,
                                          float sx, float sy, float sw, float sh) {
          batch.addQuad(texture(), tint, tx, dx, dy, dw, dh, tileX+sx, tileY+sy, sw, sh);
        }
      };
    }
docs: Returns an instance that can be used to render a sub-region of this texture.