+
+bool XGUI_Displayer::customizeObject(ObjectPtr theObject)
+{
+ AISObjectPtr anAISObj = getAISObject(theObject);
+ // correct the result's color it it has the attribute
+ ResultPtr aResult = std::dynamic_pointer_cast<ModelAPI_Result>(theObject);
+
+ // Customization of presentation
+ GeomCustomPrsPtr aCustomPrs;
+ FeaturePtr aFeature = ModelAPI_Feature::feature(theObject);
+ if (aFeature.get() != NULL) {
+ GeomCustomPrsPtr aCustPrs = std::dynamic_pointer_cast<GeomAPI_ICustomPrs>(aFeature);
+ if (aCustPrs.get() != NULL)
+ aCustomPrs = aCustPrs;
+ }
+ if (aCustomPrs.get() == NULL) {
+ GeomPresentablePtr aPrs = std::dynamic_pointer_cast<GeomAPI_IPresentable>(theObject);
+ // we ignore presentable not customized objects
+ if (aPrs.get() == NULL)
+ aCustomPrs = myCustomPrs;
+ }
+ bool isCustomized = aCustomPrs.get() &&
+ aCustomPrs->customisePresentation(aResult, anAISObj, myCustomPrs);
+ return isCustomized;
+}
+
+
+QColor XGUI_Displayer::setObjectColor(ObjectPtr theObject, const QColor& theColor, bool theUpdateViewer)
+{
+ if (!isVisible(theObject))
+ return Qt::black;
+
+ AISObjectPtr anAISObj = getAISObject(theObject);
+ int aR, aG, aB;
+ anAISObj->getColor(aR, aG, aB);
+ anAISObj->setColor(theColor.red(), theColor.green(), theColor.blue());
+ if (theUpdateViewer)
+ updateViewer();
+ return QColor(aR, aG, aB);
+}
+
+void XGUI_Displayer::appendResultObject(ObjectPtr theObject, AISObjectPtr theAIS)
+{
+ myResult2AISObjectMap[theObject] = theAIS;
+
+#ifdef DEBUG_DISPLAY
+ std::ostringstream aPtrStr;
+ aPtrStr << theObject.get();
+ qDebug(QString("display object: %1").arg(aPtrStr.str().c_str()).toStdString().c_str());
+ qDebug(getResult2AISObjectMapInfo().c_str());
+#endif
+}
+
+std::string XGUI_Displayer::getResult2AISObjectMapInfo() const
+{
+ QStringList aContent;
+ foreach (ObjectPtr aObj, myResult2AISObjectMap.keys()) {
+ AISObjectPtr aAISObj = myResult2AISObjectMap[aObj];
+ std::ostringstream aPtrStr;
+ aPtrStr << "aObj = " << aObj.get() << ":";
+ aPtrStr << "anAIS = " << aAISObj.get() << ":";
+ aPtrStr << "[" << ModuleBase_Tools::objectInfo(aObj).toStdString().c_str() << "]";
+
+ aContent.append(aPtrStr.str().c_str());
+ }
+ return QString("myResult2AISObjectMap: size = %1\n%2\n").arg(myResult2AISObjectMap.size()).
+ arg(aContent.join("\n")).toStdString().c_str();
+}