X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FMEDCalc%2Fcmp%2FMEDPresentationScalarMap.cxx;h=2f969abb07d160a53deb49248d8f8f5f9f76aa6d;hb=9a9f81053e1e8fa736b90baf2843b49e6df8af81;hp=a09da3febeeeb5a73181ac06d8b8c4e1f0b03e14;hpb=b93b64f594b76acc150329fe0d4d2be34738c674;p=modules%2Fmed.git diff --git a/src/MEDCalc/cmp/MEDPresentationScalarMap.cxx b/src/MEDCalc/cmp/MEDPresentationScalarMap.cxx index a09da3feb..2f969abb0 100644 --- a/src/MEDCalc/cmp/MEDPresentationScalarMap.cxx +++ b/src/MEDCalc/cmp/MEDPresentationScalarMap.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2016 CEA/DEN, EDF R&D +// Copyright (C) 2016-2021 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -17,34 +17,74 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // +#include "MEDPyLockWrapper.hxx" + #include "MEDPresentationScalarMap.hxx" +#include "MEDPresentationException.hxx" + +#include +#undef LOG // should be fixed in KERNEL - double definition +#include + +#include + +const std::string MEDPresentationScalarMap::TYPE_NAME = "MEDPresentationScalarMap"; + +MEDPresentationScalarMap::MEDPresentationScalarMap(const MEDCALC::ScalarMapParameters& params, + const MEDCALC::ViewModeType viewMode) : + MEDPresentation(params.fieldHandlerId, TYPE_NAME, viewMode, params.colorMap, params.scalarBarRange), _params(params) +{ +} void MEDPresentationScalarMap::internalGeneratePipeline() { - PyGILState_STATE _gil_state = PyGILState_Ensure(); - - std::string cmd = std::string("import pvsimple as pvs;"); - cmd += getRenderViewCommand(_params.viewMode); // define __view1 - - cmd += std::string("__obj1 = pvs.MEDReader(FileName='") + _fileName + std::string("');"); - cmd += std::string("__disp1 = pvs.Show(__obj1, __view1);"); - cmd += std::string("pvs.ColorBy(__disp1, ('") + _fieldType + std::string("', '") + _fieldName + std::string("'));"); - cmd += std::string("__disp1.SetScalarBarVisibility(__view1, True);"); - cmd += std::string("__disp1.RescaleTransferFunctionToDataRangeOverTime();"); - cmd += std::string("__lut = pvs.GetColorTransferFunction('")+_fieldName+std::string("');"); - cmd += std::string("__lut.ApplyPreset('")+getColorMapCommand(_params.colorMap)+std::string("',True);"); - cmd += std::string("pvs.Render();"); - - cmd += getResetCameraCommand(); - - //std::cerr << "Python command:" << std::endl; - //std::cerr << cmd << std::endl; - PyRun_SimpleString(cmd.c_str()); - // Retrieve Python object for internal storage: - PyObject* obj = getPythonObjectFromMain("__obj1"); - PyObject* disp = getPythonObjectFromMain("__disp1"); - pushInternal(obj, disp); - - PyGILState_Release(_gil_state); + MEDPresentation::internalGeneratePipeline(); + + MEDPyLockWrapper lock; + + setOrCreateRenderView(); // instantiate __viewXXX + createSource(); + setTimestamp(); + + // Populate internal array of available components: + fillAvailableFieldComponents(); + + // Nothing to do in a scalar map, obj = source: + pushAndExecPyLine(_objVar + " = " + _srcObjVar); + + showObject(); + + colorBy(); + showScalarBar(); + selectColorMap(); + rescaleTransferFunction(); + resetCameraAndRender(); + pushAndExecPyLine(_dispVar+".SetRepresentationType('Surface')"); +} + +void +MEDPresentationScalarMap::updatePipeline(const MEDCALC::ScalarMapParameters& params) +{ + if (params.fieldHandlerId != _params.fieldHandlerId) + throw KERNEL::createSalomeException("Unexpected updatePipeline error! Mismatching fieldHandlerId!"); + + if (params.colorMap != _params.colorMap) + updateColorMap(params.colorMap); + + if (std::string(params.displayedComponent) != std::string(_params.displayedComponent)) + updateComponent(std::string(params.displayedComponent)); + if (params.scalarBarRange != _params.scalarBarRange || + params.hideDataOutsideCustomRange != _params.hideDataOutsideCustomRange || + params.scalarBarRangeArray[0] != _params.scalarBarRangeArray[0] || + params.scalarBarRangeArray[1] != _params.scalarBarRangeArray[1] ) + updateScalarBarRange(params.scalarBarRange, + params.hideDataOutsideCustomRange, + params.scalarBarRangeArray[0], + params.scalarBarRangeArray[1]); + if (params.visibility != _params.visibility) + updateVisibility(params.visibility); + if (params.scalarBarVisibility != _params.scalarBarVisibility) + updateScalarBarVisibility(params.scalarBarVisibility); } +