public ArrayView2D <TElem, TDim> SubView(DimTuple2 offset, DimTuple2 extent) { if (offset.X < 0 || offset.X + extent.X >= Extent.X || offset.Y < 0 || offset.Y + extent.Y >= Extent.Y) { // throw new IndexOutOfRangeException(); } var linearIdx = offset.X * Stride.X + offset.Y * Stride.Y; var data = Data.GetSubView(linearIdx); return(new ArrayView2D <TElem, TDim>(data, extent, Dim)); }
public ref TElem this[DimTuple2 idx] { get { if (idx.X < 0 || idx.X >= Extent.X || idx.Y < 0 || idx.Y >= Extent.Y) { // throw new IndexOutOfRangeException(); } unsafe { var linearIdx = idx.X * Stride.X + idx.Y * Stride.Y; return(ref Data[linearIdx]); } } }
internal ArrayView2D(ILGPU.ArrayView <TElem> data, DimTuple2 extent, TDim dim) { Data = data; Extent = extent; Dim = dim; }
public Stride2DGeneral(DimTuple2 stride) { Stride = stride; }