Implemented 4 missing Mat::ptr methods
authorAndrey Kamaev <no@email>
Tue, 24 May 2011 16:14:23 +0000 (16:14 +0000)
committerAndrey Kamaev <no@email>
Tue, 24 May 2011 16:14:23 +0000 (16:14 +0000)
modules/core/include/opencv2/core/mat.hpp

index 885fed5..624f0d4 100644 (file)
@@ -466,6 +466,22 @@ inline const uchar* Mat::ptr(int i0, int i1) const
     return data + i0*step.p[0] + i1*step.p[1];
 }
 
+template<typename _Tp> inline _Tp* Mat::ptr(int i0, int i1)
+{
+    CV_DbgAssert( dims >= 2 && data &&
+                  (unsigned)i0 < (unsigned)size.p[0] &&
+                  (unsigned)i1 < (unsigned)size.p[1] );
+    return (_Tp*)(data + i0*step.p[0] + i1*step.p[1]);
+}
+
+template<typename _Tp> inline const _Tp* Mat::ptr(int i0, int i1) const
+{
+    CV_DbgAssert( dims >= 2 && data &&
+                  (unsigned)i0 < (unsigned)size.p[0] &&
+                  (unsigned)i1 < (unsigned)size.p[1] );
+    return (const _Tp*)(data + i0*step.p[0] + i1*step.p[1]);
+}
+
 inline uchar* Mat::ptr(int i0, int i1, int i2)
 {
     CV_DbgAssert( dims >= 3 && data &&
@@ -484,6 +500,24 @@ inline const uchar* Mat::ptr(int i0, int i1, int i2) const
     return data + i0*step.p[0] + i1*step.p[1] + i2*step.p[2];
 }
 
+template<typename _Tp> inline _Tp* Mat::ptr(int i0, int i1, int i2)
+{
+    CV_DbgAssert( dims >= 3 && data &&
+                  (unsigned)i0 < (unsigned)size.p[0] &&
+                  (unsigned)i1 < (unsigned)size.p[1] &&
+                  (unsigned)i2 < (unsigned)size.p[2] );
+    return (_Tp*)(data + i0*step.p[0] + i1*step.p[1] + i2*step.p[2]);
+}
+
+template<typename _Tp> inline const _Tp* Mat::ptr(int i0, int i1, int i2) const
+{
+    CV_DbgAssert( dims >= 3 && data &&
+                  (unsigned)i0 < (unsigned)size.p[0] &&
+                  (unsigned)i1 < (unsigned)size.p[1] &&
+                  (unsigned)i2 < (unsigned)size.p[2] );
+    return (const _Tp*)(data + i0*step.p[0] + i1*step.p[1] + i2*step.p[2]);
+}
+
 inline uchar* Mat::ptr(const int* idx)
 {    
     int i, d = dims;