#include "stdafx.h" #include "DataLayer.h" DataLayer::DataLayer(int length, int depthBits) : depthBits(depthBits), depthBitsPlusFour(depthBits + 4) { data = byteArray(length >> 1); } DataLayer::DataLayer(byteArray data, int depthBits) : depthBits(depthBits), depthBitsPlusFour(depthBits + 4) { this->data = data; } DataLayer::~DataLayer() { delete[] data.data; } int DataLayer::get(int x, int y, int z) { int pos = (x << depthBitsPlusFour | z << depthBits | y); int slot = pos >> 1; int part = pos & 1; if (part == 0) { return data[slot] & 0xf; } else { return (data[slot] >> 4) & 0xf; } } void DataLayer::set(int x, int y, int z, int val) { int pos = (x << depthBitsPlusFour | z << depthBits | y); int slot = pos >> 1; int part = pos & 1; if (part == 0) { data[slot] = (byte) ((data[slot] & 0xf0) | (val & 0xf)); } else { data[slot] = (byte) ((data[slot] & 0x0f) | ((val & 0xf) << 4)); } } bool DataLayer::isValid() { return data.data != NULL; } void DataLayer::setAll(int br) { byte val = (byte) (br & (br << 4)); for (unsigned int i = 0; i < data.length; i++) { data[i] = val; } }