Janitor: Several code hygiene adjustments (#9981)

* Include all libraries in APP_FWK_LIBRARIES
* Several fixes detected by Static Code Analysis
* Remove unused code
* Add .clang.tidy
* Use QElapsedTimer
* Use horizontalAdvance
* Avoid | between enum of different classes
* Avoid illegal character
* Renaming and reorder of constructor initialization
This commit is contained in:
Magne Sjaastad 2023-03-23 15:49:06 +01:00 committed by GitHub
parent 2abfd08bd9
commit d23c6b4bb6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
34 changed files with 114 additions and 124 deletions

View File

@ -610,10 +610,7 @@ add_subdirectory(Fwk/AppFwk/cafVizExtensions)
option(CAF_CVF_SCRIPTING "" ON)
add_subdirectory(Fwk/AppFwk/cafPdmScripting)
set_property(TARGET cafPdmScripting PROPERTY FOLDER "AppFwk")
add_subdirectory(Fwk/AppFwk/cafCommandFeatures)
set_property(TARGET cafCommandFeatures PROPERTY FOLDER "AppFwk")
add_subdirectory(Fwk/AppFwk/cafTensor)
add_subdirectory(Fwk/AppFwk/cafHexInterpolator)
@ -665,6 +662,7 @@ list(
CommonCode
cafVizExtensions
cafPdmScripting
cafCommandFeatures
)
set_property(TARGET ${APP_FWK_LIBRARIES} PROPERTY FOLDER "AppFwk")
@ -675,30 +673,31 @@ mark_as_advanced(FORCE RESINSIGHT_INCLUDE_APPFWK_TESTS)
if(RESINSIGHT_INCLUDE_APPFWK_TESTS)
# Unit Tests
add_subdirectory(Fwk/AppFwk/cafProjectDataModel/cafProjectDataModel_UnitTests)
set_property(
TARGET cafProjectDataModel_UnitTests PROPERTY FOLDER "AppFwkTests"
)
add_subdirectory(
Fwk/AppFwk/cafProjectDataModel/cafPdmCore/cafPdmCore_UnitTests
)
set_property(TARGET cafPdmCore_UnitTests PROPERTY FOLDER "AppFwkTests")
add_subdirectory(Fwk/AppFwk/cafProjectDataModel/cafPdmXml/cafPdmXml_UnitTests)
set_property(TARGET cafPdmXml_UnitTests PROPERTY FOLDER "AppFwkTests")
add_subdirectory(Fwk/AppFwk/cafPdmScripting/cafPdmScripting_UnitTests)
set_property(TARGET cafPdmScripting_UnitTests PROPERTY FOLDER "AppFwkTests")
add_subdirectory(Fwk/AppFwk/cafUserInterface/cafUserInterface_UnitTests)
set_property(TARGET cafUserInterface_UnitTests PROPERTY FOLDER "AppFwkTests")
# Executables
add_subdirectory(Fwk/AppFwk/cafTests/cafTestApplication)
set_property(TARGET cafTestApplication PROPERTY FOLDER "AppFwkTests")
add_subdirectory(Fwk/AppFwk/cafTests/cafTestCvfApplication)
set_property(TARGET cafTestCvfApplication PROPERTY FOLDER "AppFwkTests")
list(
APPEND
APP_FWK_TEST_PROJECTS
cafProjectDataModel_UnitTests
cafPdmCore_UnitTests
cafPdmXml_UnitTests
cafPdmScripting_UnitTests
cafUserInterface_UnitTests
cafTestApplication
cafTestCvfApplication
)
set_property(TARGET ${APP_FWK_TEST_PROJECTS} PROPERTY FOLDER "AppFwkTests")
endif()
# ##############################################################################
@ -802,8 +801,8 @@ if(MSVC AND RESINSIGHT_ENABLE_STATIC_ANALYSIS)
)
set(TARGETS_FOR_STATIC_ANALYSIS
${APP_FWK_LIBRARIES} ApplicationLibCode Commands ResultStatisticsCache
RigGeoMechDataModel
${APP_FWK_LIBRARIES} ${APP_FWK_TEST_PROJECTS} ApplicationLibCode Commands
ResultStatisticsCache RigGeoMechDataModel
)
foreach(TARGET_PROJECT ${TARGETS_FOR_STATIC_ANALYSIS})

4
Fwk/AppFwk/.clang-tidy Normal file
View File

@ -0,0 +1,4 @@
---
Checks: '-*,modernize-use-override,modernize-use-nullptr,modernize-deprecated-headers,bugprone-bool-pointer-implicit-conversion,bugprone-parent-virtual-call,bugprone-redundant-branch-condition,bugprone-suspicious-semicolon,bugprone-suspicious-string-compare'
WarningsAsErrors: ''
FormatStyle: 'file'

View File

@ -249,11 +249,10 @@ void CmdFieldChangeExec::readFieldValueFromValidXmlDocument( QXmlStreamReader& x
{
// See PdmObject::readFields and friends to match token count for reading field values
// The stream is supposed to be pointing at the first token of field content when calling readFieldData()
QXmlStreamReader::TokenType tt;
int tokenCount = 3;
int tokenCount = 3;
for ( int i = 0; i < tokenCount; i++ )
{
tt = xmlStream.readNext();
xmlStream.readNext();
}
xmlFieldHandle->readFieldData( xmlStream, PdmDefaultObjectFactory::instance() );
xmlFieldHandle->resolveReferences();

View File

@ -329,7 +329,8 @@ private:
private:
EnumMapper()
: m_defaultValueIsSet( false )
: m_defaultValue( T() )
, m_defaultValueIsSet( false )
{
}

View File

@ -72,7 +72,11 @@ public:
};
typedef DataType FieldDataType;
PdmDataValueField() {}
PdmDataValueField()
: m_fieldValue( DataType() )
, m_defaultFieldValue( DataType() )
{
}
PdmDataValueField( const PdmDataValueField& other ) { m_fieldValue = other.m_fieldValue; }
explicit PdmDataValueField( const DataType& fieldValue ) { m_fieldValue = fieldValue; }
~PdmDataValueField() override {}

View File

@ -66,8 +66,8 @@ IconProvider::IconProvider( const QString& iconResourceString, const QSize& pref
//--------------------------------------------------------------------------------------------------
caf::IconProvider::IconProvider( const QPixmap& pixmap )
: m_active( true )
, m_pixmap( new QPixmap( pixmap ) )
, m_preferredSize( pixmap.size() )
, m_pixmap( new QPixmap( pixmap ) )
{
}

View File

@ -47,6 +47,7 @@ namespace caf
///
//--------------------------------------------------------------------------------------------------
PdmUi3dObjectEditorHandle::PdmUi3dObjectEditorHandle()
: m_isInComparisonView( false )
{
}

View File

@ -83,7 +83,9 @@ void PdmUiFieldHandle::notifyFieldChanged( const QVariant& oldFieldValue, const
{
PdmUiEditorHandle* editorContainingThisField = editorForThisField->topMostContainingEditor();
bool editorContainingThisFieldIsNotUpdated = !uiObjHandle->hasEditor( editorContainingThisField );
bool editorContainingThisFieldIsNotUpdated = false;
if ( uiObjHandle )
editorContainingThisFieldIsNotUpdated = !uiObjHandle->hasEditor( editorContainingThisField );
if ( noOwnerObject || editorContainingThisFieldIsNotUpdated )
{

View File

@ -61,6 +61,7 @@ PdmUiItemInfo::PdmUiItemInfo( const QString& uiName,
, m_isReadOnly( false )
, m_labelAlignment( LEFT )
, m_isCustomContextMenuEnabled( false )
, m_notifyAllFieldsInMultiFieldChangedEvents( -1 )
{
}
@ -84,6 +85,7 @@ PdmUiItemInfo::PdmUiItemInfo( const QString& uiName,
, m_isReadOnly( false )
, m_labelAlignment( LEFT )
, m_isCustomContextMenuEnabled( false )
, m_notifyAllFieldsInMultiFieldChangedEvents( -1 )
{
}

View File

@ -9,10 +9,9 @@ namespace caf
//--------------------------------------------------------------------------------------------------
void PdmFieldIOHelper::skipCharactersAndComments( QXmlStreamReader& xmlStream )
{
QXmlStreamReader::TokenType type;
while ( !xmlStream.atEnd() && xmlStream.isCharacters() || xmlStream.isComment() )
while ( !xmlStream.atEnd() && ( xmlStream.isCharacters() || xmlStream.isComment() ) )
{
type = xmlStream.readNext();
xmlStream.readNext();
}
}
@ -21,10 +20,9 @@ void PdmFieldIOHelper::skipCharactersAndComments( QXmlStreamReader& xmlStream )
//--------------------------------------------------------------------------------------------------
void PdmFieldIOHelper::skipComments( QXmlStreamReader& xmlStream )
{
QXmlStreamReader::TokenType type;
while ( !xmlStream.atEnd() && xmlStream.isComment() )
{
type = xmlStream.readNext();
xmlStream.readNext();
}
}

View File

@ -290,8 +290,11 @@ void caf::PdmFieldXmlCap<caf::PdmChildField<DataType*>>::readFieldData( QXmlStre
std::cout << "Line " << xmlStream.lineNumber()
<< ": Warning: Unknown object type with class name: " << className.toLatin1().data()
<< " found while reading the field : " << m_field->keyword().toLatin1().data() << std::endl;
std::cout << " Expected class name: " << xmlObject->classKeyword().toLatin1().data()
<< std::endl;
if ( xmlObject )
{
std::cout << " Expected class name: " << xmlObject->classKeyword().toLatin1().data();
}
std::cout << std::endl;
xmlStream.skipCurrentElement(); // Skip to the endelement of the object we was supposed to read
xmlStream.skipCurrentElement(); // Skip to the endelement of this field

View File

@ -16,8 +16,7 @@ void PdmFieldReader<QString>::readFieldData( QString& field, QXmlStreamReader& x
field = xmlStream.text().toString();
// Make stream point to end of element
QXmlStreamReader::TokenType type;
type = xmlStream.readNext();
xmlStream.readNext();
PdmFieldIOHelper::skipCharactersAndComments( xmlStream );
}

View File

@ -84,8 +84,7 @@ void PdmXmlObjectHandle::readFields( QXmlStreamReader& xmlStream, PdmObjectFacto
// readFieldData assumes that the xmlStream points to first token of field content.
// After reading, the xmlStream is supposed to point to the first token after the field
// content. (typically an "endElement")
QXmlStreamReader::TokenType tt;
tt = xmlStream.readNext();
xmlStream.readNext();
xmlFieldHandle->readFieldData( xmlStream, objectFactory );
}
else
@ -179,9 +178,8 @@ void PdmXmlObjectHandle::readObjectFromXmlString( const QString& xmlString, PdmO
QXmlStreamReader inputStream( xmlString );
QXmlStreamReader::TokenType tt;
tt = inputStream.readNext(); // Start of document
tt = inputStream.readNext();
inputStream.readNext(); // Start of document
inputStream.readNext();
QString classKeyword = inputStream.name().toString();
CAF_ASSERT( classKeyword == this->classKeyword() );
@ -197,9 +195,8 @@ PdmObjectHandle* PdmXmlObjectHandle::readUnknownObjectFromXmlString( const QStri
{
QXmlStreamReader inputStream( xmlString );
QXmlStreamReader::TokenType tt;
tt = inputStream.readNext(); // Start of document
tt = inputStream.readNext();
inputStream.readNext(); // Start of document
inputStream.readNext();
QString classKeyword = inputStream.name().toString();
PdmObjectHandle* newObject = objectFactory->create( classKeyword );
@ -243,9 +240,8 @@ caf::PdmObjectHandle* PdmXmlObjectHandle::copyAndCastByXmlSerialization( const Q
QXmlStreamReader inputStream( xmlString );
QXmlStreamReader::TokenType tt;
tt = inputStream.readNext(); // Start of document
tt = inputStream.readNext();
inputStream.readNext(); // Start of document
inputStream.readNext();
QString classKeyword = inputStream.name().toString();
CAF_ASSERT( classKeyword == sourceClassKeyword );

View File

@ -66,8 +66,9 @@ namespace caf
//--------------------------------------------------------------------------------------------------
CustomObjectEditor::CustomObjectEditor()
{
m_columnCount = 3;
m_rowCount = 2;
m_columnCount = 3;
m_rowCount = 2;
m_currentCellId = -1;
}
//--------------------------------------------------------------------------------------------------
@ -155,8 +156,6 @@ void CustomObjectEditor::recursivelyConfigureAndUpdateTopLevelUiOrdering(const P
{
resetCellId();
QWidget* previousTabOrderWidget = nullptr;
const std::vector<PdmUiOrdering::FieldAndLayout>& topLevelUiItems = topLevelUiOrdering.uiItemsWithLayout();
for (size_t i = 0; i < topLevelUiItems.size(); ++i)

View File

@ -993,8 +993,6 @@ public:
group1->add(&m_doubleField);
caf::PdmUiGroup* group2 = uiOrdering.addNewGroup("Name2");
group2->add(&m_intField);
caf::PdmUiGroup* group3 = group2->addNewGroup("Name3");
// group3->add(&m_textField);
uiOrdering.skipRemainingFields();
}
@ -1557,8 +1555,7 @@ void MainWindow::slotSimpleSelectionChanged()
{
std::vector<caf::PdmUiItem*> selection;
m_pdmUiTreeView->selectedUiItems(selection);
caf::PdmObjectHandle* obj = nullptr;
caf::PdmChildArrayFieldHandle* listField = nullptr;
caf::PdmObjectHandle* obj = nullptr;
if (selection.size())
{
@ -1576,7 +1573,6 @@ void MainWindow::slotShowTableView()
{
std::vector<caf::PdmUiItem*> selection;
m_pdmUiTreeView2->selectedUiItems(selection);
caf::PdmObjectHandle* obj = nullptr;
caf::PdmUiFieldHandle* uiFieldHandle = nullptr;
caf::PdmChildArrayFieldHandle* childArrayFieldHandle = nullptr;

View File

@ -46,7 +46,10 @@
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
MenuItemProducer::MenuItemProducer() {}
MenuItemProducer::MenuItemProducer()
: m_textPosition(0)
{
}
//--------------------------------------------------------------------------------------------------
///

View File

@ -208,7 +208,7 @@ void QMinimizePanel::enableFrame( bool showFrame )
{
if ( showFrame )
{
this->setFrameStyle( QFrame::StyledPanel | QFrame::Plain );
this->setFrameStyle( static_cast<int>( QFrame::StyledPanel ) | static_cast<int>( QFrame::Plain ) );
m_titleFrame->show();
m_titleLabel->show();
m_collapseButton->show();
@ -384,7 +384,7 @@ void QMinimizePanel::toggleExpanded()
//--------------------------------------------------------------------------------------------------
void QMinimizePanel::initialize( const QString& title )
{
this->setFrameStyle( QFrame::StyledPanel | QFrame::Plain );
this->setFrameStyle( static_cast<int>( QFrame::StyledPanel ) | static_cast<int>( QFrame::Plain ) );
QVBoxLayout* fullLayout = new QVBoxLayout( this );
fullLayout->setContentsMargins( 0, 0, 0, 0 );
@ -403,7 +403,7 @@ void QMinimizePanel::initialize( const QString& title )
{
m_titleLabel = new QLabel( title );
QPalette titleLabelPalette = m_titleLabel->palette();
titleLabelPalette.setBrush( QPalette::Foreground, titleLabelPalette.windowText() );
titleLabelPalette.setBrush( QPalette::WindowText, titleLabelPalette.windowText() );
m_titleLabel->setPalette( titleLabelPalette );
titleLayout->addWidget( m_titleLabel, 1, Qt::AlignLeft );
}

View File

@ -76,7 +76,8 @@ void PdmUiActionPushButtonEditor::configureAndUpdateUi( const QString& uiConfigN
{
m_pushButton->setText( uiField()->uiName( uiConfigName ) );
QFontMetrics fontMetr = m_pushButton->fontMetrics();
m_pushButton->setMaximumWidth( fontMetr.width( m_pushButton->text() ) + 2 * fontMetr.width( "M" ) );
m_pushButton->setMaximumWidth( fontMetr.horizontalAdvance( m_pushButton->text() ) +
2 * fontMetr.horizontalAdvance( "M" ) );
}
QVariant variantFieldValue = uiField()->uiValue();

View File

@ -204,7 +204,7 @@ QWidget* PdmUiTreeViewEditor::createWidget( QWidget* parent )
m_treeView->setModel( m_filterModel );
m_treeView->installEventFilter( this );
m_delegate = new PdmUiTreeViewItemDelegate( this, m_filterModel );
m_delegate = new PdmUiTreeViewItemDelegate( this );
m_treeView->setItemDelegate( m_delegate );

View File

@ -62,10 +62,9 @@ namespace caf
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
PdmUiTreeViewItemDelegate::PdmUiTreeViewItemDelegate( PdmUiTreeViewEditor* parent, QAbstractItemModel* model )
PdmUiTreeViewItemDelegate::PdmUiTreeViewItemDelegate( PdmUiTreeViewEditor* parent )
: QStyledItemDelegate( parent->treeView() )
, m_treeView( parent )
, m_model( model )
{
}

View File

@ -57,7 +57,7 @@ class PdmUiTreeViewEditor;
class PdmUiTreeViewItemDelegate : public QStyledItemDelegate
{
public:
PdmUiTreeViewItemDelegate( PdmUiTreeViewEditor* parent, QAbstractItemModel* model );
PdmUiTreeViewItemDelegate( PdmUiTreeViewEditor* parent );
void clearTags( QModelIndex index );
void clearAllTags();
void addTag( QModelIndex index, std::unique_ptr<PdmUiTreeViewItemAttribute::Tag> tag );
@ -77,7 +77,6 @@ protected:
private:
PdmUiTreeViewEditor* m_treeView;
QAbstractItemModel* m_model;
std::map<QModelIndex, std::vector<std::unique_ptr<PdmUiTreeViewItemAttribute::Tag>>> m_tags;
};

View File

@ -375,12 +375,11 @@ void openDebugWindow()
#pragma warning( disable : 4996 )
AllocConsole();
FILE* consoleFilePointer;
errno_t err;
FILE* consoleFilePointer;
err = freopen_s( &consoleFilePointer, "conin$", "r", stdin );
err = freopen_s( &consoleFilePointer, "conout$", "w", stdout );
err = freopen_s( &consoleFilePointer, "conout$", "w", stderr );
freopen_s( &consoleFilePointer, "conin$", "r", stdin );
freopen_s( &consoleFilePointer, "conout$", "w", stdout );
freopen_s( &consoleFilePointer, "conout$", "w", stderr );
#pragma warning( pop )
#endif

View File

@ -37,6 +37,7 @@
#pragma once
#include <QDateTime>
#include <QElapsedTimer>
#include <QtCore/QProcess>
namespace caf
@ -54,7 +55,7 @@ class UiProcess : public QProcess
Q_OBJECT
private:
QTime m_timer;
QElapsedTimer m_timer;
public:
explicit UiProcess( QObject* pParent = nullptr );

View File

@ -60,9 +60,10 @@ caf::TrackBallBasedNavigation::TrackBallBasedNavigation()
, m_isZooming( false )
, m_lastPosX( 0 )
, m_lastPosY( 0 )
, m_consumeEvents( false )
, m_isRotationEnabled( false )
, m_lastWheelZoomPosX( -1 )
, m_lastWheelZoomPosY( -1 )
, m_consumeEvents( false )
{
}

View File

@ -53,10 +53,10 @@ class RotationSensitivityCalculator
{
public:
RotationSensitivityCalculator()
: m_lastPosX( 0 )
: m_isEnabled( false )
, m_lastPosX( 0 )
, m_lastPosY( 0 )
, m_lastMouseVelocityLenght( 200 )
, m_isEnabled( false )
, m_fixedSensitivity( std::numeric_limits<double>::infinity() )
{
}
@ -80,7 +80,7 @@ private:
bool m_isEnabled;
int m_lastPosX; /// Previous mouse position
int m_lastPosY;
unsigned long m_lastTime;
unsigned long m_lastTime{};
double m_lastMouseVelocityLenght;
double m_fixedSensitivity;
};

View File

@ -121,17 +121,18 @@ caf::Viewer::Viewer( const QGLFormat& format, QWidget* parent )
, m_defaultPerspectiveNearPlaneDistance( 0.05 )
, m_maxClipPlaneDistance( cvf::UNDEFINED_DOUBLE )
, m_cameraFieldOfViewYDeg( 40.0 )
, m_showPerfInfoHud( false )
, m_paintCounter( 0 )
, m_releaseOGLResourcesEachFrame( false )
, m_isOverlayPaintingEnabled( true )
, m_offscreenViewportWidth( 0 )
, m_offscreenViewportHeight( 0 )
, m_parallelProjectionLightDirection( 0, 0, -1 )
, // Light directly from behind
m_comparisonViewOffset( 0, 0, 0 )
, m_comparisonWindowNormalizedRect( 0.5f, 0.0f, 0.5f, 1.0f )
, m_animationControl( nullptr )
, m_isComparisonFollowingAnimation( true )
, m_isComparisonViewActiveFlag( false )
, m_comparisonViewOffset( 0, 0, 0 )
, m_comparisonWindowNormalizedRect( 0.5f, 0.0f, 0.5f, 1.0f )
, m_parallelProjectionLightDirection( 0, 0, -1 )
, m_offscreenViewportWidth( 0 )
, m_offscreenViewportHeight( 0 )
{
m_layoutWidget = new QWidget( parent );
@ -1588,8 +1589,7 @@ void caf::Viewer::enableParallelProjection( bool enableOrtho )
Vec3d eye, vrp, up;
m_mainCamera->toLookAt( &eye, &vrp, &up );
Vec3d eyeToFocus = pointOfInterest - eye;
Vec3d camDir = vrp - eye;
Vec3d camDir = vrp - eye;
camDir.normalize();
double distToFocusPlane = 0.5 * ( m_mainCamera->farPlane() - m_mainCamera->nearPlane() );

View File

@ -12,7 +12,7 @@ static const char TranspWB_CombinationFrag_inl[] =
"// Weighted Blended Order-Independent Transparency \n"
"// Morgan McGuire and Louis Bavoil NVIDIA \n"
"// Journal of Computer Graphics Techniques Vol. 2, No. 2, 2013 \n"
"// Adapted by Jacob Støren to fit with a pure combination pass with no blending \n"
"// Adapted by Jacob Storen to fit with a pure combination pass with no blending \n"
"//-------------------------------------------------------------------------------------- \n"
" \n"
"#extension GL_ARB_texture_rectangle : enable \n"

View File

@ -41,8 +41,8 @@ namespace caf
//--------------------------------------------------------------------------------------------------
CategoryLegend::CategoryLegend( Font* font, const CategoryMapper* categoryMapper )
: TitledOverlayFrame( font, 200, 200 )
, m_layout( Vec2ui( 200u, 200u ) )
, m_categoryMapper( categoryMapper )
, m_Layout( Vec2ui( 200u, 200u ) )
{
CVF_ASSERT( font );
CVF_ASSERT( !font->isEmpty() );
@ -129,13 +129,12 @@ void CategoryLegend::renderGeneric( OpenGLContext* oglContext, const Vec2i& posi
camera.applyOpenGL();
camera.viewport()->applyOpenGL( oglContext, Viewport::CLEAR_DEPTH );
m_Layout = OverlayColorLegendLayoutInfo( size );
layoutInfo( &m_Layout );
m_layout = OverlayColorLegendLayoutInfo( size );
layoutInfo( &m_layout );
m_textDrawer = new TextDrawer( this->font() );
// Set up text drawer
float maxLegendRightPos = 0;
setupTextDrawer( m_textDrawer.p(), &m_Layout );
setupTextDrawer( m_textDrawer.p(), &m_layout );
Vec2f backgroundSize( size );
@ -147,7 +146,7 @@ void CategoryLegend::renderGeneric( OpenGLContext* oglContext, const Vec2i& posi
backgroundSize,
this->backgroundColor(),
this->backgroundFrameColor() );
renderLegendImmediateMode( oglContext, &m_Layout );
renderLegendImmediateMode( oglContext, &m_layout );
m_textDrawer->renderSoftware( oglContext, camera );
}
else
@ -159,7 +158,7 @@ void CategoryLegend::renderGeneric( OpenGLContext* oglContext, const Vec2i& posi
backgroundSize,
this->backgroundColor(),
this->backgroundFrameColor() );
renderLegendUsingShaders( oglContext, &m_Layout, matrixState );
renderLegendUsingShaders( oglContext, &m_layout, matrixState );
m_textDrawer->render( oglContext, camera );
}

View File

@ -77,7 +77,7 @@ protected:
protected:
std::vector<bool> m_visibleCategoryLabels; // Skip labels ending up on top of previous visible label
OverlayColorLegendLayoutInfo m_Layout;
OverlayColorLegendLayoutInfo m_layout;
cvf::ref<cvf::TextDrawer> m_textDrawer;
cvf::cref<CategoryMapper> m_categoryMapper;
};

View File

@ -186,33 +186,30 @@ bool HexGridIntersectionTools::planeTriangleIntersection( const cvf::Plane& plan
CVF_ASSERT( false );
}
bool ok1 = false;
bool ok2 = false;
if ( topVx == 1 )
{
ok1 = planeLineIntersect( plane, p1, p2, &( ( *newVx1 ).vx ), &( ( *newVx1 ).normDistFromEdgeVx1 ), nonDimensionalTolerance );
planeLineIntersect( plane, p1, p2, &( ( *newVx1 ).vx ), &( ( *newVx1 ).normDistFromEdgeVx1 ), nonDimensionalTolerance );
( *newVx1 ).clippedEdgeVx1Id = p1Id;
( *newVx1 ).clippedEdgeVx2Id = p2Id;
ok2 = planeLineIntersect( plane, p1, p3, &( ( *newVx2 ).vx ), &( ( *newVx2 ).normDistFromEdgeVx1 ), nonDimensionalTolerance );
planeLineIntersect( plane, p1, p3, &( ( *newVx2 ).vx ), &( ( *newVx2 ).normDistFromEdgeVx1 ), nonDimensionalTolerance );
( *newVx2 ).clippedEdgeVx1Id = p1Id;
( *newVx2 ).clippedEdgeVx2Id = p3Id;
}
else if ( topVx == 2 )
{
ok1 = planeLineIntersect( plane, p2, p3, &( ( *newVx1 ).vx ), &( ( *newVx1 ).normDistFromEdgeVx1 ), nonDimensionalTolerance );
planeLineIntersect( plane, p2, p3, &( ( *newVx1 ).vx ), &( ( *newVx1 ).normDistFromEdgeVx1 ), nonDimensionalTolerance );
( *newVx1 ).clippedEdgeVx1Id = p2Id;
( *newVx1 ).clippedEdgeVx2Id = p3Id;
ok2 = planeLineIntersect( plane, p2, p1, &( ( *newVx2 ).vx ), &( ( *newVx2 ).normDistFromEdgeVx1 ), nonDimensionalTolerance );
planeLineIntersect( plane, p2, p1, &( ( *newVx2 ).vx ), &( ( *newVx2 ).normDistFromEdgeVx1 ), nonDimensionalTolerance );
( *newVx2 ).clippedEdgeVx1Id = p2Id;
( *newVx2 ).clippedEdgeVx2Id = p1Id;
}
else if ( topVx == 3 )
{
ok1 = planeLineIntersect( plane, p3, p1, &( ( *newVx1 ).vx ), &( ( *newVx1 ).normDistFromEdgeVx1 ), nonDimensionalTolerance );
planeLineIntersect( plane, p3, p1, &( ( *newVx1 ).vx ), &( ( *newVx1 ).normDistFromEdgeVx1 ), nonDimensionalTolerance );
( *newVx1 ).clippedEdgeVx1Id = p3Id;
( *newVx1 ).clippedEdgeVx2Id = p1Id;
ok2 = planeLineIntersect( plane, p3, p2, &( ( *newVx2 ).vx ), &( ( *newVx2 ).normDistFromEdgeVx1 ), nonDimensionalTolerance );
planeLineIntersect( plane, p3, p2, &( ( *newVx2 ).vx ), &( ( *newVx2 ).normDistFromEdgeVx1 ), nonDimensionalTolerance );
( *newVx2 ).clippedEdgeVx1Id = p3Id;
( *newVx2 ).clippedEdgeVx2Id = p2Id;
}
@ -221,8 +218,6 @@ bool HexGridIntersectionTools::planeTriangleIntersection( const cvf::Plane& plan
CVF_ASSERT( false );
}
// CVF_TIGHT_ASSERT(ok1 && ok2);
return true;
}

View File

@ -187,7 +187,6 @@ void OverlayScalarMapperLegend::renderGeneric( OpenGLContext* oglContext, const
m_textDrawer = new TextDrawer( this->font() );
// Set up text drawer
float maxLegendRightPos = 0;
setupTextDrawer( m_textDrawer.p(), &m_Layout );
Vec2f backgroundSize( size );

View File

@ -88,9 +88,9 @@ OverlayScaleLegend::OverlayScaleLegend( Font* font )
: TitledOverlayFrame( font, 200, 200 )
, m_tickNumberPrecision( 4 )
, m_numberFormat( AUTO )
, m_Layout( Vec2ui( 200u, 200u ) )
, m_font( font )
, m_orientation( HORIZONTAL )
, m_layout( Vec2ui( 200u, 200u ) )
, m_font( font )
, m_currentScale( 1.0 )
{
CVF_ASSERT( font );
@ -138,16 +138,15 @@ void OverlayScaleLegend::renderGeneric( OpenGLContext* oglContext, const Vec2i&
camera.applyOpenGL();
camera.viewport()->applyOpenGL( oglContext, Viewport::CLEAR_DEPTH );
m_Layout = LayoutInfo( size );
layoutInfo( &m_Layout );
m_layout = LayoutInfo( size );
layoutInfo( &m_layout );
m_textDrawer = new TextDrawer( this->font() );
// Set up text drawer
float maxLegendRightPos = 0;
if ( m_orientation == HORIZONTAL )
setupHorizontalTextDrawer( m_textDrawer.p(), &m_Layout );
setupHorizontalTextDrawer( m_textDrawer.p(), &m_layout );
else
setupVerticalTextDrawer( m_textDrawer.p(), &m_Layout );
setupVerticalTextDrawer( m_textDrawer.p(), &m_layout );
Vec2f backgroundSize( size );
@ -161,7 +160,7 @@ void OverlayScaleLegend::renderGeneric( OpenGLContext* oglContext, const Vec2i&
this->backgroundColor(),
this->backgroundFrameColor() );
}
renderLegendImmediateMode( oglContext, &m_Layout );
renderLegendImmediateMode( oglContext, &m_layout );
m_textDrawer->renderSoftware( oglContext, camera );
}
else
@ -175,7 +174,7 @@ void OverlayScaleLegend::renderGeneric( OpenGLContext* oglContext, const Vec2i&
this->backgroundColor(),
this->backgroundFrameColor() );
}
renderLegendUsingShaders( oglContext, &m_Layout, matrixState );
renderLegendUsingShaders( oglContext, &m_layout, matrixState );
m_textDrawer->render( oglContext, camera );
}
@ -201,8 +200,6 @@ void OverlayScaleLegend::setupHorizontalTextDrawer( TextDrawer* textDrawer, cons
float lastVisibleTextX = 0.0;
size_t numTicks = layout->ticks.size();
size_t numMajorTicks =
std::count_if( layout->ticks.begin(), layout->ticks.end(), []( const LayoutInfo::Tick& t ) { return t.isMajor; } );
size_t it;
for ( it = 0; it < numTicks; it++ )
{
@ -344,12 +341,6 @@ void OverlayScaleLegend::renderLegendUsingShaders( OpenGLContext* oglContext, La
// Per vector convenience pointers
float* v0 = &vertexArray[0];
float* v1 = &vertexArray[3];
float* v2 = &vertexArray[6];
float* v3 = &vertexArray[9];
float* v4 = &vertexArray[12];
// Connects
static const ushort trianglesConnects[] = { 0, 1, 4, 0, 4, 3 };
ref<ShaderProgram> shaderProgram = oglContext->resourceManager()->getLinkedUnlitColorShaderProgram( oglContext );
CVF_TIGHT_ASSERT( shaderProgram.notNull() );

View File

@ -167,7 +167,7 @@ protected:
NumberFormat m_numberFormat;
Orientation m_orientation;
LayoutInfo m_Layout;
LayoutInfo m_layout;
cvf::ref<TextDrawer> m_textDrawer;
cvf::ref<Font> m_font;

View File

@ -48,14 +48,14 @@ namespace caf
///
//--------------------------------------------------------------------------------------------------
TitledOverlayFrame::TitledOverlayFrame( Font* font, unsigned int width, unsigned int height )
: m_font( font )
, m_renderSize( width, height )
: m_renderSize( width, height )
, m_textColor( Color3::BLACK )
, m_lineColor( Color3::BLACK )
, m_lineWidth( 1 )
, m_isBackgroundEnabled( true )
, m_backgroundColor( 1.0f, 1.0f, 1.0f, 0.8f )
, m_backgroundFrameColor( 0.0f, 0.0f, 0.0f, 0.5f )
, m_font( font )
{
}