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 "Rim3dView.h"
|
||||
#include "RimCase.h"
|
||||
#include "RiuViewer.h"
|
||||
|
||||
#include "cafDisplayCoordTransform.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_zOffsetFactor(zOffsetFactor)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -39,13 +41,20 @@ bool RicVec3dPickEventHandler::handle3dPickEvent(const Ric3dPickEvent& eventObje
|
||||
{
|
||||
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::Vec3d pickedPositionInUTM = transForm->transformToDomainCoord(eventObject.m_pickItemInfos.front().globalPickedPoint());
|
||||
cvf::Vec3d pickedPositionInUTM = transForm->transformToDomainCoord(pickedPosition);
|
||||
|
||||
pickedPositionInUTM.z() *= -1.0;
|
||||
pickedPositionInUTM.z() -= zPickOffset;
|
||||
|
||||
m_vectorField->setValueWithFieldChanged(pickedPositionInUTM);
|
||||
return true;
|
||||
|
||||
@@ -29,7 +29,7 @@ class Rim3dView;
|
||||
class RicVec3dPickEventHandler : public Ric3dViewPickEventHandler
|
||||
{
|
||||
public:
|
||||
RicVec3dPickEventHandler(caf::PdmField<cvf::Vec3d>* vectorField);
|
||||
RicVec3dPickEventHandler(caf::PdmField<cvf::Vec3d>* vectorField, double zOffsetFactor = 0.0);
|
||||
bool handle3dPickEvent(const Ric3dPickEvent& eventObject) override;
|
||||
|
||||
void registerAsPickEventHandler() override;
|
||||
@@ -37,6 +37,7 @@ public:
|
||||
|
||||
private:
|
||||
caf::PdmField<cvf::Vec3d>* m_vectorField;
|
||||
double m_zOffsetFactor;
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -77,7 +77,7 @@ RimTextAnnotation::RimTextAnnotation()
|
||||
m_nameProxy.xmlCapability()->disableIO();
|
||||
|
||||
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