4 #include <iCub/data3D/SurfaceMeshWithBoundingBox.h> 6 namespace iCub {
namespace data3D {
7 bool SurfaceMeshWithBoundingBox::read_mesh(yarp::os::idl::WireReader& reader) {
8 if (!reader.read(mesh)) {
14 bool SurfaceMeshWithBoundingBox::nested_read_mesh(yarp::os::idl::WireReader& reader) {
15 if (!reader.readNested(mesh)) {
21 bool SurfaceMeshWithBoundingBox::read_boundingBox(yarp::os::idl::WireReader& reader) {
22 if (!reader.read(boundingBox)) {
28 bool SurfaceMeshWithBoundingBox::nested_read_boundingBox(yarp::os::idl::WireReader& reader) {
29 if (!reader.readNested(boundingBox)) {
35 bool SurfaceMeshWithBoundingBox::read(yarp::os::idl::WireReader& reader) {
36 if (!read_mesh(reader))
return false;
37 if (!read_boundingBox(reader))
return false;
38 return !reader.isError();
41 bool SurfaceMeshWithBoundingBox::read(yarp::os::ConnectionReader& connection) {
42 yarp::os::idl::WireReader reader(connection);
43 if (!reader.readListHeader(6))
return false;
47 bool SurfaceMeshWithBoundingBox::write_mesh(yarp::os::idl::WireWriter& writer) {
48 if (!writer.write(mesh))
return false;
51 bool SurfaceMeshWithBoundingBox::nested_write_mesh(yarp::os::idl::WireWriter& writer) {
52 if (!writer.writeNested(mesh))
return false;
55 bool SurfaceMeshWithBoundingBox::write_boundingBox(yarp::os::idl::WireWriter& writer) {
56 if (!writer.write(boundingBox))
return false;
59 bool SurfaceMeshWithBoundingBox::nested_write_boundingBox(yarp::os::idl::WireWriter& writer) {
60 if (!writer.writeNested(boundingBox))
return false;
63 bool SurfaceMeshWithBoundingBox::write(yarp::os::idl::WireWriter& writer) {
64 if (!write_mesh(writer))
return false;
65 if (!write_boundingBox(writer))
return false;
66 return !writer.isError();
69 bool SurfaceMeshWithBoundingBox::write(yarp::os::ConnectionWriter& connection) {
70 yarp::os::idl::WireWriter writer(connection);
71 if (!writer.writeListHeader(6))
return false;
74 bool SurfaceMeshWithBoundingBox::Editor::write(yarp::os::ConnectionWriter& connection) {
75 if (!isValid())
return false;
76 yarp::os::idl::WireWriter writer(connection);
77 if (!writer.writeListHeader(dirty_count+1))
return false;
78 if (!writer.writeString(
"patch"))
return false;
80 if (!writer.writeListHeader(3))
return false;
81 if (!writer.writeString(
"set"))
return false;
82 if (!writer.writeString(
"mesh"))
return false;
83 if (!obj->nested_write_mesh(writer))
return false;
85 if (is_dirty_boundingBox) {
86 if (!writer.writeListHeader(3))
return false;
87 if (!writer.writeString(
"set"))
return false;
88 if (!writer.writeString(
"boundingBox"))
return false;
89 if (!obj->nested_write_boundingBox(writer))
return false;
91 return !writer.isError();
93 bool SurfaceMeshWithBoundingBox::Editor::read(yarp::os::ConnectionReader& connection) {
94 if (!isValid())
return false;
95 yarp::os::idl::WireReader reader(connection);
96 reader.expectAccept();
97 if (!reader.readListHeader())
return false;
98 int len = reader.getLength();
100 yarp::os::idl::WireWriter writer(reader);
101 if (writer.isNull())
return true;
102 if (!writer.writeListHeader(1))
return false;
103 writer.writeString(
"send: 'help' or 'patch (param1 val1) (param2 val2)'");
106 yarp::os::ConstString tag;
107 if (!reader.readString(tag))
return false;
109 yarp::os::idl::WireWriter writer(reader);
110 if (writer.isNull())
return true;
111 if (!writer.writeListHeader(2))
return false;
112 if (!writer.writeTag(
"many",1, 0))
return false;
113 if (reader.getLength()>0) {
114 yarp::os::ConstString field;
115 if (!reader.readString(field))
return false;
117 if (!writer.writeListHeader(1))
return false;
118 if (!writer.writeString(
"SurfaceMesh mesh"))
return false;
120 if (field==
"boundingBox") {
121 if (!writer.writeListHeader(1))
return false;
122 if (!writer.writeString(
"Box3D boundingBox"))
return false;
125 if (!writer.writeListHeader(3))
return false;
126 writer.writeString(
"*** Available fields:");
127 writer.writeString(
"mesh");
128 writer.writeString(
"boundingBox");
132 bool have_act =
false;
134 if ((len-1)%2 != 0)
return false;
135 len = 1 + ((len-1)/2);
139 for (
int i=1; i<len; i++) {
140 if (nested && !reader.readListHeader(3))
return false;
141 yarp::os::ConstString act;
142 yarp::os::ConstString key;
146 if (!reader.readString(act))
return false;
148 if (!reader.readString(key))
return false;
152 if (!obj->nested_read_mesh(reader))
return false;
154 }
else if (key ==
"boundingBox") {
155 will_set_boundingBox();
156 if (!obj->nested_read_boundingBox(reader))
return false;
157 did_set_boundingBox();
163 yarp::os::idl::WireWriter writer(reader);
164 if (writer.isNull())
return true;
165 writer.writeListHeader(1);
166 writer.writeVocab(VOCAB2(
'o',
'k'));
170 yarp::os::ConstString SurfaceMeshWithBoundingBox::toString() {