31 #ifndef vtkPixelTransfer_h
32 #define vtkPixelTransfer_h
34 #include "vtkCommonDataModelModule.h"
36 #include "vtkSetGet.h"
48 static int Blit(
const vtkPixelExtent& ext,
int nComps,
int srcType,
void* srcData,
int destType,
57 void* srcData,
int nDestComps,
int destType,
void* destData);
62 template <
typename SOURCE_TYPE,
typename DEST_TYPE>
65 SOURCE_TYPE* srcData,
int nDestComps, DEST_TYPE* destData);
69 template <
typename SOURCE_TYPE>
72 SOURCE_TYPE* srcData,
int nDestComps,
int destType,
void* destData);
77 const vtkPixelExtent& ext,
int nComps,
int srcType,
void* srcData,
int destType,
void* destData)
80 ext, ext, ext, ext, nComps, srcType, srcData, nComps, destType, destData);
84 template <
typename SOURCE_TYPE>
87 SOURCE_TYPE* srcData,
int nDestComps,
int destType,
void* destData)
93 nSrcComps, srcData, nDestComps, (VTK_TT*)destData););
99 template <
typename SOURCE_TYPE,
typename DEST_TYPE>
102 SOURCE_TYPE* srcData,
int nDestComps, DEST_TYPE* destData)
104 if ((srcData ==
nullptr) || (destData ==
nullptr))
108 if ((srcWholeExt == srcSubset) && (destWholeExt == destSubset) && (nSrcComps == nDestComps))
111 size_t n = srcWholeExt.
Size() * nSrcComps;
112 for (
size_t i = 0; i < n; ++i)
114 destData[i] =
static_cast<DEST_TYPE
>(srcData[i]);
123 srcWholeExt.
Size(tmp);
126 destWholeExt.
Size(tmp);
131 srcExt.
Shift(srcWholeExt);
134 destExt.
Shift(destWholeExt);
142 int nCopyComps = nSrcComps < nDestComps ? nSrcComps : nDestComps;
144 for (
int j = 0; j < nxny[1]; ++j)
146 int sjj = swnx * (srcExt[2] + j) + srcExt[0];
147 int djj = dwnx * (destExt[2] + j) + destExt[0];
148 for (
int i = 0; i < nxny[0]; ++i)
150 int sidx = nSrcComps * (sjj + i);
151 int didx = nDestComps * (djj + i);
153 for (
int p = 0; p < nCopyComps; ++p)
155 destData[didx + p] =
static_cast<DEST_TYPE
>(srcData[sidx + p]);
158 for (
int p = nCopyComps; p < nDestComps; ++p)
160 destData[didx + p] =
static_cast<DEST_TYPE
>(0);
static int Blit(const vtkPixelExtent &ext, int nComps, int srcType, void *srcData, int destType, void *destData)
for memory to memory transfers.
Representation of a cartesian pixel plane and common operations on it.
void Size(T nCells[2]) const
Get the number in each direction.
void Shift()
Shifts by low corner of this, moving to the origin.