#ifndef MXBLOCK3_INCLUDED // -*- C++ -*- #define MXBLOCK3_INCLUDED #if !defined(__GNUC__) # pragma once #endif /************************************************************************ MxBlock3 provides typed access to 3D data blocks. Copyright (C) 1998 Michael Garland. See "COPYING.txt" for details. $Id: MxBlock3.h,v 1.5 1998/10/26 21:08:42 garland Exp $ ************************************************************************/ #include "MxBlock.h" template class MxBlock3 : public MxBlock { private: uint W, H, D; protected: MxBlock3() { } void init_block(uint w, uint h, uint d) { W=w; H=h; D=d; MxBlock::init_block(w*h*d); } void resize_block(uint w, uint h, uint d) { W=w; H=h; D=d; MxBlock::resize_block(w*h*d); } void free_block() { MxBlock::free_block(); } T& raw(uint i, uint j, uint k) { return MxBlock::raw(k*W*H + j*W + i); } const T& raw(uint i, uint j, uint k) const { return MxBlock::raw(k*W*H + j*W + i); } #define __MXCK(i,j,k) AssertBound(i