------------------------------------------------------------------------------
| 1086 | |
| 1087 | //------------------------------------------------------------------------------ |
| 1088 | void vtkVtkJSSceneGraphSerializer::extractRequiredFields( |
| 1089 | Json::Value& extractedFields, vtkMapper* mapper, vtkDataSet* dataSet) |
| 1090 | { |
| 1091 | // FIXME should evolve and support funky mapper which leverage many arrays |
| 1092 | vtkDataArray* pointDataArray = nullptr; |
| 1093 | vtkDataArray* cellDataArray = nullptr; |
| 1094 | if (mapper != nullptr && mapper->IsA("vtkMapper")) |
| 1095 | { |
| 1096 | vtkTypeBool scalarVisibility = mapper->GetScalarVisibility(); |
| 1097 | int arrayAccessMode = mapper->GetArrayAccessMode(); |
| 1098 | |
| 1099 | int scalarMode = mapper->GetScalarMode(); |
| 1100 | if (scalarVisibility && scalarMode == 3) |
| 1101 | { |
| 1102 | pointDataArray = |
| 1103 | (arrayAccessMode == 1 ? dataSet->GetPointData()->GetArray(mapper->GetArrayName()) |
| 1104 | : dataSet->GetPointData()->GetArray(mapper->GetArrayId())); |
| 1105 | |
| 1106 | if (pointDataArray != nullptr) |
| 1107 | { |
| 1108 | Json::Value arrayMeta = this->ToJson(pointDataArray); |
| 1109 | arrayMeta["location"] = "pointData"; |
| 1110 | extractedFields.append(arrayMeta); |
| 1111 | } |
| 1112 | } |
| 1113 | |
| 1114 | if (scalarVisibility && scalarMode == 4) |
| 1115 | { |
| 1116 | cellDataArray = |
| 1117 | (arrayAccessMode == 1 ? dataSet->GetCellData()->GetArray(mapper->GetArrayName()) |
| 1118 | : dataSet->GetCellData()->GetArray(mapper->GetArrayId())); |
| 1119 | if (cellDataArray != nullptr) |
| 1120 | { |
| 1121 | Json::Value arrayMeta = this->ToJson(cellDataArray); |
| 1122 | arrayMeta["location"] = "cellData"; |
| 1123 | extractedFields.append(arrayMeta); |
| 1124 | } |
| 1125 | } |
| 1126 | } |
| 1127 | |
| 1128 | if (pointDataArray == nullptr) |
| 1129 | { |
| 1130 | vtkDataArray* array = dataSet->GetPointData()->GetScalars(); |
| 1131 | if (array != nullptr) |
| 1132 | { |
| 1133 | Json::Value arrayMeta = this->ToJson(array); |
| 1134 | arrayMeta["location"] = "pointData"; |
| 1135 | arrayMeta["registration"] = "setScalars"; |
| 1136 | extractedFields.append(arrayMeta); |
| 1137 | } |
| 1138 | } |
| 1139 | |
| 1140 | if (cellDataArray == nullptr) |
| 1141 | { |
| 1142 | vtkDataArray* array = dataSet->GetCellData()->GetScalars(); |
| 1143 | if (array != nullptr) |
| 1144 | { |
| 1145 | Json::Value arrayMeta = this->ToJson(array); |
no test coverage detected