@@ -16,14 +16,23 @@ public CanvasPath(android.graphics.Path path) {
1616 public void addLines (@ Size (multiple = 2 , min = 4 ) @ NonNull float [] points ) {
1717 addLines (points , 0 , points .length , false );
1818 }
19+ public void addLinesBuffer (@ NonNull java .nio .FloatBuffer points ) {
20+ addLinesBuffer (points , 0 , points .capacity (), false );
21+ }
1922
2023 public void addLines (@ Size (multiple = 2 , min = 4 ) @ NonNull float [] points , int offset ) {
2124 addLines (points , offset , points .length - offset , false );
2225 }
26+ public void addLinesBuffer (@ NonNull java .nio .FloatBuffer points , int offset ) {
27+ addLinesBuffer (points , offset , points .capacity () - offset , false );
28+ }
2329
2430 public void addLines (@ Size (multiple = 2 , min = 4 ) @ NonNull float [] points , int offset , int length ) {
2531 addLines (points , offset , length , false );
2632 }
33+ public void addLinesBuffer (@ NonNull java .nio .FloatBuffer points , int offset , int length ) {
34+ addLinesBuffer (points , offset , length , false );
35+ }
2736
2837 public void addPath (CanvasPath path ) {
2938 super .addPath (path );
@@ -40,35 +49,73 @@ public void addLines(@Size(multiple = 2, min = 4) @NonNull float[] points, int o
4049 close ();
4150 }
4251 }
52+ public void addLinesBuffer (@ NonNull java .nio .FloatBuffer points , int offset , int length , boolean close ) {
53+ final int l = offset + length ;
54+
55+ moveTo (points .get (offset ), points .get (offset + 1 ));
56+ for (int i = offset + 2 ; i < l ; i += 2 ) {
57+ lineTo (points .get (i ), points .get (i + 1 ));
58+ }
59+ if (close ) {
60+ close ();
61+ }
62+ points .rewind ();
63+ }
4364
4465 public void setLines (@ Size (multiple = 2 , min = 4 ) @ NonNull float [] points ) {
4566 setLines (points , 0 , points .length , false );
4667 }
4768
69+ public void setLinesBuffer (@ NonNull java .nio .FloatBuffer points ) {
70+ setLinesBuffer (points , 0 , points .capacity (), false );
71+ }
72+
4873 public void setLines (@ Size (multiple = 2 , min = 4 ) @ NonNull float [] points , int offset ) {
4974 setLines (points , offset , points .length - offset , false );
5075 }
76+ public void setLinesBuffer (@ NonNull java .nio .FloatBuffer points , int offset ) {
77+ setLinesBuffer (points , offset , points .capacity () - offset , false );
78+ }
5179
5280 public void setLines (@ Size (multiple = 2 , min = 4 ) @ NonNull float [] points , int offset , int length ) {
5381 setLines (points , offset , length , false );
5482 }
5583
84+ public void setLinesBuffer (@ NonNull java .nio .FloatBuffer points , int offset , int length ) {
85+ setLinesBuffer (points , offset , length , false );
86+ }
87+
5688 public void setLines (@ Size (multiple = 2 , min = 4 ) @ NonNull float [] points , int offset , int length , boolean close ) {
5789 reset ();
5890 addLines (points , offset , length , close );
5991 }
92+ public void setLinesBuffer (@ NonNull java .nio .FloatBuffer points , int offset , int length , boolean close ) {
93+ reset ();
94+ addLinesBuffer (points , offset , length , close );
95+ }
6096
6197 public void addCubicLines (@ Size (multiple = 2 , min = 8 ) @ NonNull float [] points ) {
6298 addCubicLines (points , 0 , points .length , false );
6399 }
64100
101+ public void addCubicLinesBuffer (@ NonNull java .nio .FloatBuffer points ) {
102+ addCubicLinesBuffer (points , 0 , points .capacity (), false );
103+ }
104+
65105 public void addCubicLines (@ Size (multiple = 2 , min = 8 ) @ NonNull float [] points , int offset ) {
66106 addCubicLines (points , offset , points .length - offset , false );
67107 }
68108
109+ public void addCubicLinesBuffer (@ NonNull java .nio .FloatBuffer points , int offset ) {
110+ addCubicLinesBuffer (points , offset , points .capacity () - offset , false );
111+ }
112+
69113 public void addCubicLines (@ Size (multiple = 2 , min = 8 ) @ NonNull float [] points , int offset , int length ) {
70114 addCubicLines (points , offset , length , false );
71115 }
116+ public void addCubicLinesBuffer (@ NonNull java .nio .FloatBuffer points , int offset , int length ) {
117+ addCubicLinesBuffer (points , offset , length , false );
118+ }
72119
73120 public void addCubicLines (@ Size (multiple = 2 , min = 8 ) @ NonNull float [] points , int offset , int length ,
74121 boolean close ) {
@@ -81,18 +128,41 @@ public void addCubicLines(@Size(multiple = 2, min = 8) @NonNull float[] points,
81128 close ();
82129 }
83130 }
131+ public void addCubicLinesBuffer (@ NonNull java .nio .FloatBuffer points , int offset , int length ,
132+ boolean close ) {
133+ final int l = length ;
134+ moveTo (points .get (offset ), points .get (offset + 1 ));
135+ for (int i = offset + 2 ; i < l ; i += 6 ) {
136+ cubicTo (points .get (i ), points .get (offset + 1 ), points .get (offset + 2 ), points .get (offset + 3 ), points .get (offset + 4 ), points .get (offset + 5 ));
137+ }
138+ if (close ) {
139+ close ();
140+ }
141+ points .rewind ();
142+ }
84143
85144 public void setCubicLines (@ Size (multiple = 2 , min = 8 ) @ NonNull float [] points ) {
86145 setCubicLines (points , 0 , points .length , false );
87146 }
147+ public void setCubicLinesBuffer (@ NonNull java .nio .FloatBuffer points ) {
148+ setCubicLinesBuffer (points , 0 , points .capacity (), false );
149+ }
88150
89151 public void setCubicLines (@ Size (multiple = 2 , min = 8 ) @ NonNull float [] points , int offset , int length ) {
90152 setCubicLines (points , offset , length , false );
91153 }
154+ public void setCubicLinesBuffer (@ NonNull java .nio .FloatBuffer points , int offset , int length ) {
155+ setCubicLinesBuffer (points , offset , length , false );
156+ }
92157
93158 public void setCubicLines (@ Size (multiple = 2 , min = 8 ) @ NonNull float [] points , int offset , int length ,
94159 boolean close ) {
95160 reset ();
96161 addCubicLines (points , offset , length , close );
97162 }
163+ public void setCubicLinesBuffer (@ NonNull java .nio .FloatBuffer points , int offset , int length ,
164+ boolean close ) {
165+ reset ();
166+ addCubicLinesBuffer (points , offset , length , close );
167+ }
98168}
0 commit comments