#4309 Offset text annotations label position slightly to make labels less likely to be obscured by grid

This commit is contained in:
Gaute Lindkvist
2019-04-16 12:55:53 +02:00
parent e0bbda85d9
commit a8bcfefca2
3 changed files with 17 additions and 7 deletions

View File

@@ -19,16 +19,18 @@
#include "RiaApplication.h" #include "RiaApplication.h"
#include "Rim3dView.h" #include "Rim3dView.h"
#include "RimCase.h"
#include "RiuViewer.h" #include "RiuViewer.h"
#include "cafDisplayCoordTransform.h" #include "cafDisplayCoordTransform.h"
#include "cafSelectionManager.h" #include "cafSelectionManager.h"
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// /// zOffsetFactor will be multiplied by characteristic length to yield a z-offset
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
RicVec3dPickEventHandler::RicVec3dPickEventHandler(caf::PdmField<cvf::Vec3d>* vectorField) RicVec3dPickEventHandler::RicVec3dPickEventHandler(caf::PdmField<cvf::Vec3d>* vectorField, double zOffsetFactor)
: m_vectorField(vectorField) : m_vectorField(vectorField)
, m_zOffsetFactor(zOffsetFactor)
{ {
} }
@@ -39,13 +41,20 @@ bool RicVec3dPickEventHandler::handle3dPickEvent(const Ric3dPickEvent& eventObje
{ {
const Rim3dView* rimView = eventObject.m_view; const Rim3dView* rimView = eventObject.m_view;
double zPickOffset = 10.0; cvf::Vec3d pickedPosition = eventObject.m_pickItemInfos.front().globalPickedPoint();
RimCase* ownerCase = nullptr;
rimView->firstAncestorOrThisOfType(ownerCase);
if (ownerCase)
{
double zPickOffset = ownerCase->characteristicCellSize() * m_zOffsetFactor;
pickedPosition.z() += zPickOffset;
}
cvf::ref<caf::DisplayCoordTransform> transForm = rimView->displayCoordTransform(); cvf::ref<caf::DisplayCoordTransform> transForm = rimView->displayCoordTransform();
cvf::Vec3d pickedPositionInUTM = transForm->transformToDomainCoord(eventObject.m_pickItemInfos.front().globalPickedPoint()); cvf::Vec3d pickedPositionInUTM = transForm->transformToDomainCoord(pickedPosition);
pickedPositionInUTM.z() *= -1.0; pickedPositionInUTM.z() *= -1.0;
pickedPositionInUTM.z() -= zPickOffset;
m_vectorField->setValueWithFieldChanged(pickedPositionInUTM); m_vectorField->setValueWithFieldChanged(pickedPositionInUTM);
return true; return true;

View File

@@ -29,7 +29,7 @@ class Rim3dView;
class RicVec3dPickEventHandler : public Ric3dViewPickEventHandler class RicVec3dPickEventHandler : public Ric3dViewPickEventHandler
{ {
public: public:
RicVec3dPickEventHandler(caf::PdmField<cvf::Vec3d>* vectorField); RicVec3dPickEventHandler(caf::PdmField<cvf::Vec3d>* vectorField, double zOffsetFactor = 0.0);
bool handle3dPickEvent(const Ric3dPickEvent& eventObject) override; bool handle3dPickEvent(const Ric3dPickEvent& eventObject) override;
void registerAsPickEventHandler() override; void registerAsPickEventHandler() override;
@@ -37,6 +37,7 @@ public:
private: private:
caf::PdmField<cvf::Vec3d>* m_vectorField; caf::PdmField<cvf::Vec3d>* m_vectorField;
double m_zOffsetFactor;
}; };

View File

@@ -77,7 +77,7 @@ RimTextAnnotation::RimTextAnnotation()
m_nameProxy.xmlCapability()->disableIO(); m_nameProxy.xmlCapability()->disableIO();
m_anchorPointPickEventHandler.reset(new RicVec3dPickEventHandler(&m_anchorPointXyd)); m_anchorPointPickEventHandler.reset(new RicVec3dPickEventHandler(&m_anchorPointXyd));
m_labelPointPickEventHandler.reset(new RicVec3dPickEventHandler(&m_labelPointXyd)); m_labelPointPickEventHandler.reset(new RicVec3dPickEventHandler(&m_labelPointXyd, 0.1));
} }