YARP
Yet Another Robot Platform
PointCloudTypes.h
Go to the documentation of this file.
1 /*
2  * SPDX-FileCopyrightText: 2006-2021 Istituto Italiano di Tecnologia (IIT)
3  * SPDX-FileCopyrightText: 2010 Willow Garage Inc.
4  * SPDX-FileCopyrightText: 2012 Open Perception Inc.
5  * SPDX-License-Identifier: BSD-3-Clause
6  */
7 
8 
9 #ifndef YARP_SIG_POINTCLOUDTYPES_H
10 #define YARP_SIG_POINTCLOUDTYPES_H
11 
12 #include <yarp/conf/system.h>
13 
14 #include <yarp/os/Bottle.h>
15 #include <yarp/os/LogStream.h>
16 #include <yarp/os/NetInt32.h>
17 #include <yarp/sig/Vector.h>
18 
19 namespace yarp {
20 namespace sig {
21 
22 
23 // Plain xy point is not supported for now ... does it make sense to have it?
24 // How to let the user to add his own type?
25 
26 // Define a bit for each piece of information we want to carry
27 // Is enum better?? Define some helper to get a string from number
31 enum PointCloudBasicType : std::int32_t {
32  PC_XY_DATA = (1 << 0) ,
33  PC_XYZ_DATA = (1 << 1) ,
34  PC_RGBA_DATA = (1 << 2) ,
35  PC_INTENSITY_DATA = (1 << 3) ,
36  PC_INTEREST_DATA = (1 << 4) , // in PCL this field is also called strength
37  PC_NORMAL_DATA = (1 << 5) ,
38  PC_CURVATURE_DATA = (1 << 6) ,
39  PC_RANGE_DATA = (1 << 7) ,
40  PC_VIEWPOINT_DATA = (1 << 8) ,
41  PC_MOMENT_INV_DATA = (1 << 9) ,
42  PC_RADII_RSD_DATA = (1 << 10),
43  PC_BOUNDARY_DATA = (1 << 11),
48  PC_NARF_36_DATA = (1 << 16),
49  PC_BORDER_DATA = (1 << 17),
51  PC_HISTOGRAM_DATA = (1 << 19),
52  PC_SCALE_DATA = (1 << 20),
53  PC_CONFIDENCE_DATA = (1 << 21),
54  PC_RADIUS_DATA = (1 << 22),
55  PC_USER_DEFINED = (1 << 23),
56  PC_PADDING2 = (1 << 24),
57  PC_PADDING3 = (1 << 25)
58 };
62 enum PointCloudCompositeType : std::int32_t {
63 // Shortcuts names for matching PCL predefined types
71  PCL_POINT_XYZ_NORMAL_RGBA = (PC_XYZ_DATA | PC_RGBA_DATA | PC_NORMAL_DATA | PC_CURVATURE_DATA | PC_PADDING2), // Actually PCL has PointXYZRGBNormal, not RGBA, but downgrade from rgba to rgb can be done while casting
88 };
89 
90 // Defined as in PCL pointTypes.h file for better compatibility
91 enum PointCloudBorderTrait : std::int32_t
92 {
108 };
109 
110 // Definition of single fields data structures
112 struct DataXY
113 {
114  union
115  {
116  float _xy[2];
117  struct
118  {
119  float x;
120  float y;
121  };
122  };
123  std::string toString(int precision, int width) const
124  {
125  std::string ret = "";
126  char tmp[128];
127  if (width < 0) {
128  snprintf(tmp, 128, "% .*lf % .*lf\t", precision, x,
129  precision, y);
130  ret += tmp;
131 
132  } else {
133  snprintf(tmp, 128, "% *.*lf % *.*lf", width, precision, x,
134  width, precision, y);
135  ret += tmp;
136  }
137  return ret;
138  }
140  {
142  ret.addFloat64(x);
143  ret.addFloat64(y);
144  return ret;
145  }
146  void fromBottle(const yarp::os::Bottle& bt, size_t i)
147  {
148  yarp::os::Bottle* intBt = bt.get(static_cast<int>(i)).asList();
149  x = static_cast<float>(intBt->get(0).asFloat64());
150  y = static_cast<float>(intBt->get(1).asFloat64());
151  return;
152  }
153 };
155 
156 // xyz
158 struct DataXYZ
159 {
160  union
161  {
162  float _xyz[4];
163  struct
164  {
165  float x;
166  float y;
167  float z;
168  };
169  };
170  std::string toString(int precision, int width) const
171  {
172  std::string ret = "";
173  char tmp[128];
174  if (width < 0) {
175  snprintf(tmp, 128, "% .*lf % .*lf % .*lf\t", precision, x,
176  precision, y,
177  precision, z);
178  ret += tmp;
179 
180  } else {
181  snprintf(tmp, 128, "% *.*lf % *.*lf % *.*lf", width, precision, x,
182  width, precision, y,
183  width, precision, z);
184  ret += tmp;
185  }
186  return ret;
187  }
189  {
191  ret.addFloat64(x);
192  ret.addFloat64(y);
193  ret.addFloat64(z);
194  return ret;
195  }
197  {
198  yarp::sig::Vector v(3);
199  v[0] = x;
200  v[1] = y;
201  v[2] = z;
202  return v;
203  }
205  {
206  yarp::sig::Vector v(4);
207  v[0] = x;
208  v[1] = y;
209  v[2] = z;
210  v[3] = 1;
211  return v;
212  }
213  void fromBottle(const yarp::os::Bottle& bt, size_t i)
214  {
215  yarp::os::Bottle* intBt = bt.get(static_cast<int>(i)).asList();
216 
217  if (!intBt) {
218  return;
219  }
220 
221  x = static_cast<float>(intBt->get(0).asFloat64());
222  y = static_cast<float>(intBt->get(1).asFloat64());
223  z = static_cast<float>(intBt->get(2).asFloat64());
224  return;
225  }
226 };
228 
229 // RGBA fields - quite useless alone
231 struct DataRGBA
232 {
233  union
234  {
235  struct
236  {
237  unsigned char b;
238  unsigned char g;
239  unsigned char r;
240  unsigned char a;
241  };
243 // float data_c[4];
244  };
245  std::string toString(int precision, int width) const
246  {
247  YARP_UNUSED(precision);
248  YARP_UNUSED(width);
249  std::string ret = "";
250  char tmp[128];
251  snprintf(tmp, 128, "%d %d %d %d\t", r, g, b, a);
252  ret += tmp;
253  return ret;
254  }
256  {
258  ret.addInt32(r);
259  ret.addInt32(g);
260  ret.addInt32(b);
261  ret.addInt32(a);
262  return ret;
263  }
264  void fromBottle(const yarp::os::Bottle& bt, size_t i)
265  {
266  yarp::os::Bottle* intBt = bt.get(static_cast<int>(i)).asList();
267  r = intBt->get(0).asInt32();
268  g = intBt->get(1).asInt32();
269  b = intBt->get(2).asInt32();
270  a = intBt->get(3).asInt32();
271  return;
272  }
273 };
275 
276 // Normal
279 {
280  union
281  {
282  float filler_n[4];
283  float normal[3];
284  struct
285  {
286  float normal_x;
287  float normal_y;
288  float normal_z;
289  };
290  };
291  union
292  {
293  struct
294  {
295  float curvature;
296  };
297  float data_c[4];
298  };
299  std::string toString(int precision, int width) const
300  {
301  std::string ret = "";
302  char tmp[128];
303  if (width < 0) {
304  snprintf(tmp, 128, "% .*lf % .*lf % .*lf % .*lf\t", precision, normal_x,
305  precision, normal_y,
306  precision, normal_z,
307  precision, curvature);
308  ret += tmp;
309 
310  } else {
311  snprintf(tmp, 128, "% *.*lf % *.*lf % *.*lf % *.*lf", width, precision, normal_x,
312  width, precision, normal_y,
313  width, precision, normal_z,
314  width, precision, curvature);
315  ret += tmp;
316  }
317  return ret;
318  }
320  {
322  ret.addFloat64(normal_x);
323  ret.addFloat64(normal_y);
324  ret.addFloat64(normal_z);
325  ret.addFloat64(curvature);
326  return ret;
327  }
328  void fromBottle(const yarp::os::Bottle& bt, size_t i)
329  {
330  yarp::os::Bottle* intBt = bt.get(static_cast<int>(i)).asList();
331 
332  if (!intBt) {
333  return;
334  }
335 
336  normal_x = static_cast<float>(intBt->get(0).asFloat64());
337  normal_y = static_cast<float>(intBt->get(1).asFloat64());
338  normal_z = static_cast<float>(intBt->get(2).asFloat64());
339  curvature = static_cast<float>(intBt->get(3).asFloat64());
340  return;
341  }
342 };
344 
347 {
348  union
349  {
350  float filler_n[4];
351  float normal[3];
352  struct
353  {
354  float normal_x;
355  float normal_y;
356  float normal_z;
357  };
358  };
359  std::string toString(int precision, int width) const
360  {
361  std::string ret = "";
362  char tmp[128];
363  if (width < 0) {
364  snprintf(tmp, 128, "% .*lf % .*lf % .*lf\t", precision, normal_x,
365  precision, normal_y,
366  precision, normal_z);
367  ret += tmp;
368 
369  } else {
370  snprintf(tmp, 128, "% *.*lf % *.*lf % *.*lf", width, precision, normal_x,
371  width, precision, normal_y,
372  width, precision, normal_z);
373  ret += tmp;
374  }
375  return ret;
376  }
378  {
380  ret.addFloat64(normal_x);
381  ret.addFloat64(normal_y);
382  ret.addFloat64(normal_z);
383  return ret;
384  }
385  void fromBottle(const yarp::os::Bottle& bt, size_t i)
386  {
387  yarp::os::Bottle* intBt = bt.get(static_cast<int>(i)).asList();
388 
389  if (!intBt) {
390  return;
391  }
392 
393  normal_x = static_cast<float>(intBt->get(0).asFloat64());
394  normal_y = static_cast<float>(intBt->get(1).asFloat64());
395  normal_z = static_cast<float>(intBt->get(2).asFloat64());
396  return;
397  }
398 };
400 
401 // curvature
404 {
405  union
406  {
407  struct
408  {
409  float curvature;
410  };
411  };
412 };
414 // Range
415 typedef float Range;
416 
417 // viewPoint
420 {
421  union
422  {
423  float _xyz[4];
424  struct
425  {
426  float vp_x;
427  float vp_y;
428  float vp_z;
429  };
430  };
431  std::string toString(int precision, int width) const
432  {
433  std::string ret = "";
434  char tmp[128];
435  if (width < 0) {
436  snprintf(tmp, 128, "% .*lf % .*lf % .*lf\t", precision, vp_x,
437  precision, vp_y,
438  precision, vp_z);
439  ret += tmp;
440 
441  } else {
442  snprintf(tmp, 128, "% *.*lf % *.*lf % *.*lf", width, precision, vp_x,
443  width, precision, vp_y,
444  width, precision, vp_z);
445  ret += tmp;
446  }
447  return ret;
448  }
450  {
452  ret.addFloat64(vp_x);
453  ret.addFloat64(vp_y);
454  ret.addFloat64(vp_z);
455  return ret;
456  }
457  void fromBottle(const yarp::os::Bottle& bt, size_t i)
458  {
459  yarp::os::Bottle* intBt = bt.get(static_cast<int>(i)).asList();
460 
461  if (!intBt) {
462  return;
463  }
464 
465  vp_x = static_cast<float>(intBt->get(0).asFloat64());
466  vp_y = static_cast<float>(intBt->get(1).asFloat64());
467  vp_z = static_cast<float>(intBt->get(2).asFloat64());
468  return;
469  }
470 };
472 
473 // TBD: many others ...
474 
475 
476 //
477 // Definition of packed types - PCL style
478 //
479 
480 // xyz + rgba - most common type
483 {
484  union
485  {
486  float _xyz[4];
487  struct
488  {
489  float x;
490  float y;
491  float z;
492  float xyz_padding;
493  };
494  };
495 
496  union
497  {
498  struct
499  {
500  unsigned char b;
501  unsigned char g;
502  unsigned char r;
503  unsigned char a;
504  };
506  float rgba_padding[4];
507  };
508  std::string toString(int precision, int width) const
509  {
510  std::string ret = "";
511  char tmp[128];
512  if (width < 0) {
513  snprintf(tmp, 128, "% .*lf % .*lf % .*lf ", precision, x,
514  precision, y,
515  precision, z);
516  ret += tmp;
517 
518  } else {
519  snprintf(tmp, 128, "% *.*lf % *.*lf % *.*lf ", width, precision, x,
520  width, precision, y,
521  width, precision, z);
522  ret += tmp;
523  }
524  snprintf(tmp, 128, "%d %d %d %d\t", r, g, b, a);
525  ret += tmp;
526  return ret;
527  }
529  {
531  ret.addFloat64(x);
532  ret.addFloat64(y);
533  ret.addFloat64(z);
534  ret.addInt32(r);
535  ret.addInt32(g);
536  ret.addInt32(b);
537  ret.addInt32(a);
538  return ret;
539  }
540  void fromBottle(const yarp::os::Bottle& bt, size_t i)
541  {
542  yarp::os::Bottle* intBt = bt.get(static_cast<int>(i)).asList();
543 
544  if (!intBt) {
545  return;
546  }
547 
548  x = static_cast<float>(intBt->get(0).asFloat64());
549  y = static_cast<float>(intBt->get(1).asFloat64());
550  z = static_cast<float>(intBt->get(2).asFloat64());
551  r = intBt->get(3).asInt32();
552  g = intBt->get(4).asInt32();
553  b = intBt->get(5).asInt32();
554  a = intBt->get(6).asInt32();
555  return;
556  }
557 };
559 
560 // xyz + intensity
562 struct DataXYZI
563 {
564  union
565  {
566  float _xyz[4];
567  struct
568  {
569  float x;
570  float y;
571  float z;
572  };
573  };
574 
575  union
576  {
577  struct
578  {
579  float intensity;
580  };
582  };
583  std::string toString(int precision, int width) const
584  {
585  std::string ret = "";
586  char tmp[128];
587  if (width < 0) {
588  snprintf(tmp, 128, "% .*lf % .*lf % .*lf % .*lf\t", precision, x,
589  precision, y,
590  precision, z,
591  precision, intensity);
592  ret += tmp;
593 
594  } else {
595  snprintf(tmp, 128, "% *.*lf % *.*lf % *.*lf % *.*lf", width, precision, x,
596  width, precision, y,
597  width, precision, z,
598  width, precision, intensity);
599  ret += tmp;
600  }
601  return ret;
602  }
604  {
606  ret.addFloat64(x);
607  ret.addFloat64(y);
608  ret.addFloat64(z);
609  ret.addFloat64(intensity);
610  return ret;
611  }
612  void fromBottle(const yarp::os::Bottle& bt, size_t i)
613  {
614  yarp::os::Bottle* intBt = bt.get(static_cast<int>(i)).asList();
615 
616  if (!intBt) {
617  return;
618  }
619 
620  x = static_cast<float>(intBt->get(0).asFloat64());
621  y = static_cast<float>(intBt->get(1).asFloat64());
622  z = static_cast<float>(intBt->get(2).asFloat64());
623  intensity = static_cast<float>(intBt->get(3).asFloat64());
624  return;
625  }
626 };
628 
629 // interest point -> xyz + strength
632 {
633  union
634  {
635  float _xyz[4];
636  struct
637  {
638  float x;
639  float y;
640  float z;
641  };
642  };
643 
644  union
645  {
646  struct
647  {
648  float strength;
649  };
651  };
652  std::string toString(int precision, int width) const
653  {
654  std::string ret = "";
655  char tmp[128];
656  if (width < 0) {
657  snprintf(tmp, 128, "% .*lf % .*lf % .*lf % .*lf\t", precision, x,
658  precision, y,
659  precision, z,
660  precision, strength);
661  ret += tmp;
662 
663  } else {
664  snprintf(tmp, 128, "% *.*lf % *.*lf % *.*lf % *.*lf", width, precision, x,
665  width, precision, y,
666  width, precision, z,
667  width, precision, strength);
668  ret += tmp;
669  }
670  return ret;
671  }
673  {
675  ret.addFloat64(x);
676  ret.addFloat64(y);
677  ret.addFloat64(z);
678  ret.addFloat64(strength);
679  return ret;
680  }
681  void fromBottle(const yarp::os::Bottle& bt, size_t i)
682  {
683  yarp::os::Bottle* intBt = bt.get(static_cast<int>(i)).asList();
684 
685  if (!intBt) {
686  return;
687  }
688 
689  x = static_cast<float>(intBt->get(0).asFloat64());
690  y = static_cast<float>(intBt->get(1).asFloat64());
691  z = static_cast<float>(intBt->get(2).asFloat64());
692  strength = static_cast<float>(intBt->get(3).asFloat64());
693  return;
694  }
695 };
697 
698 
699 // point xyz + normals
702 {
703  union
704  {
705  float data[4];
706  struct
707  {
708  float x;
709  float y;
710  float z;
711  };
712  };
713  union
714  {
715  float filler_n[4];
716  float normal[3];
717  struct
718  {
719  float normal_x;
720  float normal_y;
721  float normal_z;
722  };
723  };
724  union
725  {
726  struct
727  {
728  float curvature;
729  };
730  float filler_c[4];
731  };
732  std::string toString(int precision, int width) const
733  {
734  std::string ret = "";
735  char tmp[128];
736  if (width < 0) {
737  snprintf(tmp, 128, "% .*lf % .*lf % .*lf ", precision, x,
738  precision, y,
739  precision, z);
740  ret += tmp;
741  snprintf(tmp, 128, "% .*lf % .*lf % .*lf % .*lf\t", precision, normal_x,
742  precision, normal_y,
743  precision, normal_z,
744  precision, curvature);
745  ret += tmp;
746 
747  } else {
748  snprintf(tmp, 128, "% *.*lf % *.*lf % *.*lf ", width, precision, x,
749  width, precision, y,
750  width, precision, z);
751  ret += tmp;
752  snprintf(tmp, 128, "% *.*lf % *.*lf % *.*lf % *.*lf", width, precision, normal_x,
753  width, precision, normal_y,
754  width, precision, normal_z,
755  width, precision, curvature);
756  ret += tmp;
757  }
758  return ret;
759  }
761  {
763  ret.addFloat64(x);
764  ret.addFloat64(y);
765  ret.addFloat64(z);
766  ret.addFloat64(normal_x);
767  ret.addFloat64(normal_y);
768  ret.addFloat64(normal_z);
769  ret.addFloat64(curvature);
770  return ret;
771  }
772  void fromBottle(const yarp::os::Bottle& bt, size_t i)
773  {
774  yarp::os::Bottle* intBt = bt.get(static_cast<int>(i)).asList();
775 
776  if (!intBt) {
777  return;
778  }
779 
780  x = static_cast<float>(intBt->get(0).asFloat64());
781  y = static_cast<float>(intBt->get(1).asFloat64());
782  z = static_cast<float>(intBt->get(2).asFloat64());
783  normal_x = static_cast<float>(intBt->get(3).asFloat64());
784  normal_y = static_cast<float>(intBt->get(4).asFloat64());
785  normal_z = static_cast<float>(intBt->get(5).asFloat64());
786  curvature = static_cast<float>(intBt->get(6).asFloat64());
787  return;
788  }
789 };
791 
792 // point xyz + normals + RGBA
795 {
796  union
797  {
798  float data[4];
799  struct
800  {
801  float x;
802  float y;
803  float z;
804  };
805  };
806  union
807  {
808  float filler_n[4];
809  float normal[3];
810  struct
811  {
812  float normal_x;
813  float normal_y;
814  float normal_z;
815  };
816  };
817  union
818  {
819  struct
820  {
821  // PCL here uses float rgb, probably for ROS compatibility as stated for PointXYZRGB
822  // Check compatibility, it should be ok if rgb component are in the right place and we drop 'a'
823  union
824  {
825  struct
826  {
827  unsigned char b;
828  unsigned char g;
829  unsigned char r;
830  unsigned char a;
831  };
833  };
834  float curvature;
835  };
836  float filler_others[4];
837  };
838  std::string toString(int precision, int width) const
839  {
840  std::string ret = "";
841  char tmp[128];
842  if (width < 0) {
843  snprintf(tmp, 128, "% .*lf % .*lf % .*lf ", precision, x,
844  precision, y,
845  precision, z);
846  ret += tmp;
847  snprintf(tmp, 128, "% .*lf % .*lf % .*lf % .*lf ", precision, normal_x,
848  precision, normal_y,
849  precision, normal_z,
850  precision, curvature);
851  ret += tmp;
852 
853  } else {
854  snprintf(tmp, 128, "% *.*lf % *.*lf % *.*lf ", width, precision, x,
855  width, precision, y,
856  width, precision, z);
857  ret += tmp;
858  snprintf(tmp, 128, "% *.*lf % *.*lf % *.*lf % *.*lf ", width, precision, normal_x,
859  width, precision, normal_y,
860  width, precision, normal_z,
861  width, precision, curvature);
862  ret += tmp;
863  }
864  snprintf(tmp, 128, "%d %d %d %d\t", r, g, b, a);
865  ret += tmp;
866  return ret;
867  }
869  {
871  ret.addFloat64(x);
872  ret.addFloat64(y);
873  ret.addFloat64(z);
874  ret.addFloat64(normal_x);
875  ret.addFloat64(normal_y);
876  ret.addFloat64(normal_z);
877  ret.addFloat64(curvature);
878  ret.addInt32(r);
879  ret.addInt32(g);
880  ret.addInt32(b);
881  ret.addInt32(a);
882  return ret;
883  }
884  void fromBottle(const yarp::os::Bottle& bt, size_t i)
885  {
886  yarp::os::Bottle* intBt = bt.get(static_cast<int>(i)).asList();
887 
888  if (!intBt) {
889  return;
890  }
891 
892  x = static_cast<float>(intBt->get(0).asFloat64());
893  y = static_cast<float>(intBt->get(1).asFloat64());
894  z = static_cast<float>(intBt->get(2).asFloat64());
895  normal_x = static_cast<float>(intBt->get(3).asFloat64());
896  normal_y = static_cast<float>(intBt->get(4).asFloat64());
897  normal_z = static_cast<float>(intBt->get(5).asFloat64());
898  curvature = static_cast<float>(intBt->get(6).asFloat64());
899  r = intBt->get(7).asInt32();
900  g = intBt->get(8).asInt32();
901  b = intBt->get(9).asInt32();
902  a = intBt->get(10).asInt32();
903  return;
904  }
905 };
907 
908 // TBD: many others ...
909 
910 } // namespace sig
911 } // namespace yarp
912 
913 
914 #endif // YARP_SIG_POINTCLOUDTYPES_H
bool ret
contains the definition of a Vector type
A simple collection of objects that can be described and transmitted in a portable way.
Definition: Bottle.h:74
Value & get(size_type index) const
Reads a Value v from a certain part of the list.
Definition: Bottle.cpp:246
virtual yarp::conf::float64_t asFloat64() const
Get 64-bit floating point value.
Definition: Value.cpp:222
virtual std::int32_t asInt32() const
Get 32-bit integer value.
Definition: Value.cpp:204
virtual Bottle * asList() const
Get list value.
Definition: Value.cpp:240
std::int32_t NetInt32
Definition of the NetInt32 type.
Definition: NetInt32.h:30
PointCloudBasicType
The PointCloudBasicTypes enum.
@ PC_VFH_SIGNAT_308_DATA
@ PC_PRINCIPAL_CURVATURE_DATA
@ PC_FPFH_SIGNAT_33_DATA
@ PC_PFH_SIGNAT_125_DATA
@ PC_INTENSITY_GRAD_DATA
PointCloudCompositeType
The PointCloudCompositeType enum.
@ PCL_MOMENT_INVARIANTS
@ PCL_POINT_XYZ_I_NORMAL
@ PCL_PRINCIPAL_CURVATURES
@ PCL_POINT_XYZ_VIEWPOINT
@ PCL_INTEREST_POINT_XYZ
@ PCL_INTENSITY_GRADIENT
@ PCL_PRINCIPAL_RADII_RSD
@ PCL_POINT_XYZ_SURFEL
@ PCL_POINT_XYZ_NORMAL
@ PCL_POINT_XYZ_NORMAL_RGBA
@ BORDER_TRAIT__OBSTACLE_BORDER
@ BORDER_TRAIT__SHADOW_BORDER
@ BORDER_TRAIT__VEIL_POINT_LEFT
@ BORDER_TRAIT__VEIL_POINT_BOTTOM
@ BORDER_TRAIT__VEIL_POINT
@ BORDER_TRAIT__OBSTACLE_BORDER_LEFT
@ BORDER_TRAIT__SHADOW_BORDER_BOTTOM
@ BORDER_TRAIT__VEIL_POINT_RIGHT
@ BORDER_TRAIT__OBSTACLE_BORDER_TOP
@ BORDER_TRAIT__SHADOW_BORDER_LEFT
@ BORDER_TRAIT__SHADOW_BORDER_TOP
@ BORDER_TRAIT__OBSTACLE_BORDER_RIGHT
@ BORDER_TRAIT__SHADOW_BORDER_RIGHT
@ BORDER_TRAIT__OBSTACLE_BORDER_BOTTOM
@ BORDER_TRAIT__VEIL_POINT_TOP
The main, catch-all namespace for YARP.
Definition: dirs.h:16
void fromBottle(const yarp::os::Bottle &bt, size_t i)
std::string toString(int precision, int width) const
yarp::os::Bottle toBottle() const
yarp::os::Bottle toBottle() const
std::string toString(int precision, int width) const
void fromBottle(const yarp::os::Bottle &bt, size_t i)
void fromBottle(const yarp::os::Bottle &bt, size_t i)
yarp::os::Bottle toBottle() const
std::string toString(int precision, int width) const
yarp::os::Bottle toBottle() const
std::string toString(int precision, int width) const
yarp::os::NetInt32 rgba
void fromBottle(const yarp::os::Bottle &bt, size_t i)
std::string toString(int precision, int width) const
void fromBottle(const yarp::os::Bottle &bt, size_t i)
yarp::os::Bottle toBottle() const
std::string toString(int precision, int width) const
yarp::os::Bottle toBottle() const
void fromBottle(const yarp::os::Bottle &bt, size_t i)
std::string toString(int precision, int width) const
yarp::os::Bottle toBottle() const
void fromBottle(const yarp::os::Bottle &bt, size_t i)
void fromBottle(const yarp::os::Bottle &bt, size_t i)
yarp::os::Bottle toBottle() const
std::string toString(int precision, int width) const
yarp::os::NetInt32 rgba
std::string toString(int precision, int width) const
void fromBottle(const yarp::os::Bottle &bt, size_t i)
yarp::os::Bottle toBottle() const
yarp::sig::Vector toVector4() const
yarp::os::Bottle toBottle() const
void fromBottle(const yarp::os::Bottle &bt, size_t i)
std::string toString(int precision, int width) const
yarp::sig::Vector toVector3() const
void fromBottle(const yarp::os::Bottle &bt, size_t i)
yarp::os::Bottle toBottle() const
std::string toString(int precision, int width) const
#define YARP_END_PACK
Ends 1 byte packing for structs/classes.
Definition: system.h:191
#define YARP_BEGIN_PACK
Starts 1 byte packing for structs/classes.
Definition: system.h:190
#define YARP_UNUSED(var)
Definition: api.h:162