// Copyright (c) 2010-2014 SharpDX - Alexandre Mutel // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. using System; using System.Runtime.InteropServices; namespace SharpDX { /// /// Provides access to data organized in 3D. /// [StructLayout(LayoutKind.Sequential)] public struct DataBox { /// /// Initializes a new instance of the struct. /// /// The datapointer. /// The row pitch. /// The slice pitch. public DataBox(IntPtr datapointer, int rowPitch, int slicePitch) { DataPointer = datapointer; RowPitch = rowPitch; SlicePitch = slicePitch; } /// /// Initializes a new instance of the struct. /// /// The data pointer. public DataBox(IntPtr dataPointer) { DataPointer = dataPointer; RowPitch = 0; SlicePitch = 0; } /// /// Pointer to the data. /// public IntPtr DataPointer; /// /// Gets the number of bytes per row. /// public int RowPitch; /// /// Gets the number of bytes per slice (for a 3D texture, a slice is a 2D image) /// public int SlicePitch; /// /// Gets a value indicating whether this instance is empty. /// /// true if this instance is empty; otherwise, false. public bool IsEmpty { get { return DataPointer == IntPtr.Zero && RowPitch == 0 && SlicePitch == 0; } } } }