App
TTransform.cpp
Go to the documentation of this file.
1 /*
2  * TTRansform.cpp
3  *
4  * Created on: Apr 5, 2013
5  * Author: xxx
6  */
7 
8 #include "TTransform.hpp"
9 
10 namespace app {
11 
14 
17 
20 
21 template <typename TPIXEL, typename TCHANNEL, typename TINTERPOLATOR>
23 
24 }
25 
26 template <typename TPIXEL, typename TCHANNEL, typename TINTERPOLATOR>
28 
29  TPIXEL * const srcData = src.getData();
30  if (srcData == NULL) {
31  return 1;
32  }
33 
34  TPIXEL * const dstData = dst.getData();
35  if (dstData == NULL) {
36  return 2;
37  }
38 
39 
40  TINTERPOLATOR i(src);
41 
42  if (!i.isInitOk()) {
43  return 3;
44  }
45 
46  TPIXEL * dPtr = dstData;
47  int dstWidth = dst.getWidth();
48  int dstHeight = dst.getHeight();
49  TPIXEL * dPtrRowEnd = dstData + dstWidth;
50  TPIXEL * dPtrEnd = dstData + dstWidth * dstHeight;
51 
53 
54  double x = 0;
55  double y = 0;
56 
57  double factor;
58 
59  // Potencionalni optimalizace - deleni neni v nekterych pripadech nutne...
60  y = 0.5;
61  while (dPtr < dPtrEnd) {
62  x = 0.5;
63  while (dPtr < dPtrRowEnd) {
64  factor = 1 / (T.a13 * x + T.a23 * y + T.a33);
65  *dPtr = i.getAt((x * T.a11 + y * T.a21 + T.a31) * factor, (x * T.a12 + y * T.a22 + T.a32) * factor);
66  dPtr++;
67  x += 1;
68  }
69  dPtrRowEnd += dstWidth;
70  y += 1;
71  }
72 
73  return 0;
74 }
75 
76 } /* namespace app */