Merge pull request #1263 from abidrahmank:pyCLAHE_24
[profile/ivi/opencv.git] / modules / java / generator / src / java / core+MatOfPoint3.java
1 package org.opencv.core;
2
3 import java.util.Arrays;
4 import java.util.List;
5
6 public class MatOfPoint3 extends Mat {
7     // 32SC3
8     private static final int _depth = CvType.CV_32S;
9     private static final int _channels = 3;
10
11     public MatOfPoint3() {
12         super();
13     }
14
15     protected MatOfPoint3(long addr) {
16         super(addr);
17         if( !empty() && checkVector(_channels, _depth) < 0 )
18             throw new IllegalArgumentException("Incompatible Mat");
19         //FIXME: do we need release() here?
20     }
21
22     public static MatOfPoint3 fromNativeAddr(long addr) {
23         return new MatOfPoint3(addr);
24     }
25
26     public MatOfPoint3(Mat m) {
27         super(m, Range.all());
28         if( !empty() && checkVector(_channels, _depth) < 0 )
29             throw new IllegalArgumentException("Incompatible Mat");
30         //FIXME: do we need release() here?
31     }
32
33     public MatOfPoint3(Point3...a) {
34         super();
35         fromArray(a);
36     }
37
38     public void alloc(int elemNumber) {
39         if(elemNumber>0)
40             super.create(elemNumber, 1, CvType.makeType(_depth, _channels));
41     }
42
43     public void fromArray(Point3...a) {
44         if(a==null || a.length==0)
45             return;
46         int num = a.length;
47         alloc(num);
48         int buff[] = new int[num * _channels];
49         for(int i=0; i<num; i++) {
50             Point3 p = a[i];
51             buff[_channels*i+0] = (int) p.x;
52             buff[_channels*i+1] = (int) p.y;
53             buff[_channels*i+2] = (int) p.z;
54         }
55         put(0, 0, buff); //TODO: check ret val!
56     }
57
58     public Point3[] toArray() {
59         int num = (int) total();
60         Point3[] ap = new Point3[num];
61         if(num == 0)
62             return ap;
63         int buff[] = new int[num * _channels];
64         get(0, 0, buff); //TODO: check ret val!
65         for(int i=0; i<num; i++)
66             ap[i] = new Point3(buff[i*_channels], buff[i*_channels+1], buff[i*_channels+2]);
67         return ap;
68     }
69
70     public void fromList(List<Point3> lp) {
71         Point3 ap[] = lp.toArray(new Point3[0]);
72         fromArray(ap);
73     }
74
75     public List<Point3> toList() {
76         Point3[] ap = toArray();
77         return Arrays.asList(ap);
78     }
79 }