mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#4309 Offset text annotations label position slightly to make labels less likely to be obscured by grid
This commit is contained in:
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -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));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user