Merge remote-tracking branch 'lamp/LAMPCAE-dev' into LAMPCAE-dev

# Conflicts:
#	src/ALLBUILD/CMakeLists.txt
#	src/CMakeLists.txt
#	src/MainWindow/MainWindow.cpp
#	src/MainWindow/MainWindow.h
#	src/MainWindow/MainWindow.ui
#	src/PluginAddTree/AddTreePlugin.h
LAMPCAE-dev-merge
剑古敛锋 2025-03-13 16:36:01 +08:00
commit 900eae9955
22 changed files with 1959 additions and 18 deletions

View File

@ -7,16 +7,16 @@
<entry key="Debug">
<value>
<PerProfileState>
<option name="myQmlPath" value="$PROJECT_DIR$/../../../vcpkg/installed/x64-windows/qml" />
<option name="myQtBinPath" value="$PROJECT_DIR$/../../../vcpkg/installed/x64-windows/tools/qt5/bin" />
<option name="myQmlPath" value="$PROJECT_DIR$/../../../../vcpkg/installed/x64-windows/qml" />
<option name="myQtBinPath" value="$PROJECT_DIR$/../../../../vcpkg/installed/x64-windows/tools/qt5/bin" />
</PerProfileState>
</value>
</entry>
<entry key="Release">
<value>
<PerProfileState>
<option name="myQmlPath" value="$PROJECT_DIR$/../../../vcpkg/installed/x64-windows/qml" />
<option name="myQtBinPath" value="$PROJECT_DIR$/../../../vcpkg/installed/x64-windows/tools/qt5/bin" />
<option name="myQmlPath" value="$PROJECT_DIR$/../../../../vcpkg/installed/x64-windows/qml" />
<option name="myQtBinPath" value="$PROJECT_DIR$/../../../../vcpkg/installed/x64-windows/tools/qt5/bin" />
</PerProfileState>
</value>
</entry>

View File

@ -1,11 +1,104 @@
<component name="ProjectCodeStyleConfiguration">
<code_scheme name="Project" version="173">
<option name="RIGHT_MARGIN" value="1000" />
<clangFormatSettings>
<option name="ENABLED" value="true" />
</clangFormatSettings>
<codeStyleSettings language="ObjectiveC">
<option name="RIGHT_MARGIN" value="1000" />
</codeStyleSettings>
<RiderCodeStyleSettings>
<option name="/Default/CodeStyle/CodeFormatting/CppClangFormat/EnableClangFormatSupport/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/EditorConfig/EnableClangFormatSupport/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/ALIGN_MULTILINE_BINARY_EXPRESSIONS_CHAIN/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/ALIGN_MULTILINE_CALLS_CHAIN/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/ALIGN_MULTILINE_EXPRESSION/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/ALIGN_MULTILINE_FOR_STMT/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/ALIGN_MULTIPLE_DECLARATION/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/ALIGN_TERNARY/@EntryValue" value="ALIGN_ALL" type="string" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/BLANK_LINES_AROUND_CLASS_DEFINITION/@EntryValue" value="1" type="int" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/KEEP_BLANK_LINES_IN_DECLARATIONS/@EntryValue" value="2" type="int" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/KEEP_BLANK_LINES_IN_CODE/@EntryValue" value="2" type="int" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/KEEP_USER_LINEBREAKS/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/INDENT_CASE_FROM_SWITCH/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/INDENT_COMMENT/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/INT_ALIGN_EQ/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SIMPLE_BLOCK_STYLE/@EntryValue" value="DO_NOT_CHANGE" type="string" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_AFTER_COMMA_IN_TEMPLATE_ARGS/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_AFTER_COMMA_IN_TEMPLATE_PARAMS/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_AFTER_FOR_SEMICOLON/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_BEFORE_FOR_SEMICOLON/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_AFTER_UNARY_OPERATOR/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_WITHIN_ARRAY_ACCESS_BRACKETS/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_WITHIN_CAST_EXPRESSION_PARENTHESES/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_WITHIN_EMPTY_INITIALIZER_BRACES/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_WITHIN_EMPTY_METHOD_PARENTHESES/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_WITHIN_INITIALIZER_BRACES/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPECIAL_ELSE_IF_TREATMENT/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_AFTER_CAST_EXPRESSION_PARENTHESES/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/WRAP_AFTER_BINARY_OPSIGN/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/WRAP_BEFORE_TERNARY_OPSIGNS/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/TYPE_DECLARATION_BRACES/@EntryValue" value="END_OF_LINE" type="string" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/OTHER_BRACES/@EntryValue" value="END_OF_LINE" type="string" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/CASE_BLOCK_BRACES/@EntryValue" value="END_OF_LINE" type="string" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/BLANK_LINES_AROUND_FUNCTION_DECLARATION/@EntryValue" value="1" type="int" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/BLANK_LINES_AROUND_FUNCTION_DEFINITION/@EntryValue" value="1" type="int" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/PLACE_WHILE_ON_NEW_LINE/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/PLACE_ELSE_ON_NEW_LINE/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/PLACE_CATCH_ON_NEW_LINE/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/NAMESPACE_INDENTATION/@EntryValue" value="All" type="string" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/ALIGN_MULTILINE_ARGUMENT/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/ALIGN_MULTILINE_EXTENDS_LIST/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/ALIGN_MULTILINE_PARAMETER/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/ALIGN_MULTILINE_TYPE_ARGUMENT/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/ALIGN_MULTILINE_TYPE_PARAMETER/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/BLANK_LINES_AROUND_DECLARATIONS/@EntryValue" value="0" type="int" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/INDENT_ACCESS_SPECIFIERS_FROM_CLASS/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/INDENT_CLASS_MEMBERS_FROM_ACCESS_SPECIFIERS/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/LINE_BREAK_AFTER_COLON_IN_MEMBER_INITIALIZER_LISTS/@EntryValue" value="ON_SINGLE_LINE" type="string" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/MEMBER_INITIALIZER_LIST_STYLE/@EntryValue" value="DO_NOT_CHANGE" type="string" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/PLACE_NAMESPACE_DEFINITIONS_ON_SAME_LINE/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_AFTER_COLON_IN_BITFIELD_DECLARATOR/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_BEFORE_COLON_IN_BITFIELD_DECLARATOR/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_AFTER_EXTENDS_COLON/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_BEFORE_EXTENDS_COLON/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_AFTER_FOR_COLON/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_BEFORE_FOR_COLON/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_AFTER_PTR_IN_DATA_MEMBER/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_AFTER_PTR_IN_DATA_MEMBERS/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_AFTER_PTR_IN_METHOD/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_AFTER_PTR_IN_NESTED_DECLARATOR/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_AFTER_REF_IN_DATA_MEMBER/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_AFTER_REF_IN_DATA_MEMBERS/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_AFTER_REF_IN_METHOD/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_BEFORE_PTR_IN_ABSTRACT_DECL/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_BEFORE_PTR_IN_DATA_MEMBER/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_BEFORE_PTR_IN_DATA_MEMBERS/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_BEFORE_PTR_IN_METHOD/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_BEFORE_REF_IN_ABSTRACT_DECL/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_BEFORE_REF_IN_DATA_MEMBER/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_BEFORE_REF_IN_DATA_MEMBERS/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_BEFORE_REF_IN_METHOD/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_BEFORE_TEMPLATE_ARGS/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_BEFORE_TEMPLATE_PARAMS/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_BETWEEN_CLOSING_ANGLE_BRACKETS_IN_TEMPLATE_ARGS/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_WITHIN_EMPTY_TEMPLATE_PARAMS/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_WITHIN_TEMPLATE_ARGS/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_WITHIN_TEMPLATE_PARAMS/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_WITHIN_DECLARATION_PARENTHESES/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_WITHIN_EMPTY_BLOCKS/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/WRAP_BEFORE_INVOCATION_LPAR/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/WRAP_AFTER_INVOCATION_LPAR/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/WRAP_BEFORE_INVOCATION_RPAR/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/WRAP_BEFORE_DECLARATION_LPAR/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/WRAP_AFTER_DECLARATION_LPAR/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/WRAP_BEFORE_DECLARATION_RPAR/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/WRAP_ARGUMENTS_STYLE/@EntryValue" value="WRAP_IF_LONG" type="string" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/WRAP_PARAMETERS_STYLE/@EntryValue" value="WRAP_IF_LONG" type="string" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/BREAK_TEMPLATE_DECLARATION/@EntryValue" value="LINE_BREAK" type="string" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/NAMESPACE_DECLARATION_BRACES/@EntryValue" value="END_OF_LINE" type="string" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/FREE_BLOCK_BRACES/@EntryValue" value="END_OF_LINE" type="string" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/INVOCABLE_DECLARATION_BRACES/@EntryValue" value="END_OF_LINE" type="string" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/ANONYMOUS_METHOD_DECLARATION_BRACES/@EntryValue" value="END_OF_LINE" type="string" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/INITIALIZER_BRACES/@EntryValue" value="END_OF_LINE_NO_SPACE" type="string" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/INDENT_STYLE/@EntryValue" value="Space" type="string" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/INDENT_SIZE/@EntryValue" value="4" type="int" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/CONTINUOUS_LINE_INDENT/@EntryValue" value="Double" type="string" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/TAB_WIDTH/@EntryValue" value="4" type="int" />
</RiderCodeStyleSettings>
</code_scheme>
</component>

344
.idea/editor.xml Normal file
View File

@ -0,0 +1,344 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="BackendCodeEditorSettings">
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppSmartPointerVsMakeFunction/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppCStyleCast/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppFunctionalStyleCast/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppReinterpretCastFromVoidPtr/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppNonExplicitConvertingConstructor/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppNonExplicitConversionOperator/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDiscardedPostfixOperatorResult/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppConstValueFunctionReturnType/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMemberFunctionMayBeConst/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMemberFunctionMayBeStatic/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppLocalVariableMayBeConst/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppParameterMayBeConst/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppVariableCanBeMadeConstexpr/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppParameterMayBeConstPtrOrRef/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPassValueParameterByConstReference/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppThrowExpressionCanBeReplacedWithRethrow/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppZeroConstantCanBeReplacedWithNullptr/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppCompileTimeConstantCanBeReplacedWithBooleanConstant/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppIfCanBeReplacedByConstexprIf/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=IfStdIsConstantEvaluatedCanBeReplaced/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=StdIsConstantEvaluatedWillAlwaysEvaluateToConstant/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=ConstevalIfIsAlwaysConstant/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppClassCanBeFinal/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseStructuredBinding/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseTypeTraitAlias/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseAlgorithmWithCount/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseRangeAlgorithm/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseElementsView/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseStdSize/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppForLoopCanBeReplacedWithWhile/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppJoinDeclarationAndAssignment/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppReplaceTieWithStructuredBinding/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppReplaceMemsetWithZeroInitialization/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseAssociativeContains/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseEraseAlgorithm/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseFamiliarTemplateSyntaxForGenericLambdas/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppTooWideScope/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppTooWideScopeInitStatement/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantNamespaceDefinition/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppNonInlineFunctionDefinitionInHeaderFile/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppNonInlineVariableDefinitionInHeaderFile/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppFunctionIsNotImplemented/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPrivateSpecialMemberFunctionIsNotImplemented/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppHiddenFunction/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppHidingFunction/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPolymorphicClassWithNonVirtualPublicDestructor/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppAbstractClassWithoutSpecifier/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppIncompleteSwitchStatement/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDefaultCaseNotHandledInSwitchStatement/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPossiblyErroneousEmptyStatements/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppExpressionWithoutSideEffects/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppNoDiscardExpression/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppFunctionResultShouldBeUsed/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMissingKeywordThrow/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDependentTypeWithoutTypenameKeyword/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDependentTemplateWithoutTemplateKeyword/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppImplicitDefaultConstructorNotAvailable/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppClassNeedsConstructorBecauseOfUninitializedMember/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUninitializedNonStaticDataMember/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRangeBasedForIncompatibleReference/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppZeroValuedExpressionUsedAsNullPointer/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPossiblyUnintendedObjectSlicing/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPossiblyUninitializedMember/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDeclaratorDisambiguatedAsFunction/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppVirtualFunctionInFinalClass/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMustBePublicVirtualToImplementInterface/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDeclarationSpecifierWithoutDeclarators/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEmptyDeclaration/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDeclarationHidesLocal/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDeclarationHidesUncapturedLocal/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMismatchedClassTags/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUsingResultOfAssignmentAsCondition/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppIntegralToPointerConversion/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPointerToIntegralConversion/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppIncompatiblePointerConversion/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPointerConversionDropsQualifiers/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppStringLiteralToCharPointerConversion/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppNonExceptionSafeResourceAcquisition/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppVirtualFunctionCallInsideCtor/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppAbstractVirtualFunctionCallInCtor/@EntryIndexedValue" value="ERROR" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppInvalidLineContinuation/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPrintfBadFormat/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPrintfRiskyFormat/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPrintfMissedArg/@EntryIndexedValue" value="ERROR" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPrintfExtraArg/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppBoostFormatBadCode/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppBoostFormatLegacyCode/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppBoostFormatMixedArgs/@EntryIndexedValue" value="ERROR" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppBoostFormatTooFewArgs/@EntryIndexedValue" value="ERROR" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppBoostFormatTooManyArgs/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDeprecatedEntity/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMissingIncludeGuard/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDoxygenSyntaxError/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDoxygenUnresolvedReference/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDoxygenUndocumentedParameter/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDeletingVoidPointer/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppBooleanIncrementExpression/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDeprecatedRegisterStorageClassSpecifier/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppIdenticalOperandsInBinaryExpression/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEqualOperandsInBinaryExpression/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedefinitionOfDefaultArgumentInOverrideFunction/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUnnamedNamespaceInHeaderFile/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppParameterNamesMismatch/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDefaultedSpecialMemberFunctionIsImplicitlyDeleted/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppNodiscardFunctionWithoutReturnValue/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantComplexityInComparison/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppAbstractFinalClass/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppSpecialFunctionWithoutNoexceptSpecification/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUnsignedZeroComparison/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMultiCharacterLiteral/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMultiCharacterWideLiteral/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantQualifier/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantAccessSpecifier/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppAccessSpecifierWithNoDeclarations/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantTypenameKeyword/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantTemplateKeyword/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantElseKeyword/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantElseKeywordInsideCompoundStatement/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantControlFlowJump/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantEmptyStatement/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantEmptyDeclaration/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantParentheses/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantLambdaParameterList/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantCastExpression/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppHeaderHasBeenAlreadyIncluded/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppTemplateArgumentsCanBeDeduced/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantTemplateArguments/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppStaticSpecifierOnAnonymousNamespaceMember/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantStaticSpecifierOnMemberAllocationFunction/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantStaticSpecifierOnThreadLocalLocalVariable/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantBaseClassAccessSpecifier/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantInlineSpecifier/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantConstSpecifier/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantBooleanExpressionArgument/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantVoidArgumentList/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantMemberInitializer/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantBaseClassInitializer/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppConstParameterInDeclaration/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppVolatileParameterInDeclaration/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppFinalFunctionInFinalClass/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppFinalNonOverridingVirtualFunction/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantElaboratedTypeSpecifier/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantDereferencingAndTakingAddress/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantConditionalExpression/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppConditionalExpressionCanBeSimplified/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantExportKeyword/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRedundantZeroInitializerInAggregateInitialization/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUserDefinedLiteralSuffixDoesNotStartWithUnderscore/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppClassIsIncomplete/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppTemplateParameterShadowing/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMutableSpecifierOnReferenceMember/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDefaultInitializationWithNoUserConstructor/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppExplicitSpecializationInNonNamespaceScope/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUnionMemberOfReferenceType/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUninitializedDependentBaseClass/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPrecompiledHeaderIsNotIncluded/@EntryIndexedValue" value="ERROR" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppPrecompiledHeaderNotFound/@EntryIndexedValue" value="ERROR" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppCoroutineCallResolveError/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppAwaiterTypeIsNotClass/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppOutParameterMustBeWritten/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppWarningDirective/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppStaticAssertFailure/@EntryIndexedValue" value="ERROR" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEvaluationFailure/@EntryIndexedValue" value="ERROR" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDeclaratorNeverUsed/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppTypeAliasNeverUsed/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppConceptNeverUsed/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppClassNeverUsed/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnumeratorNeverUsed/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppLambdaCaptureNeverUsed/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppLocalVariableWithNonTrivialDtorIsNeverUsed/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppParameterNeverUsed/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppTemplateParameterNeverUsed/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEntityAssignedButNoRead/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEntityUsedOnlyInUnevaluatedContext/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppLocalVariableMightNotBeInitialized/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppObjectMemberMightNotBeInitialized/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppSomeObjectMembersMightNotBeInitialized/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDeclaratorUsedBeforeInitialization/@EntryIndexedValue" value="ERROR" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUnusedIncludeDirective/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppNotAllPathsReturnValue/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CDeclarationWithImplicitIntType/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppFunctionDoesntReturnValue/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppReturnNoValueInNonVoidFunction/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppCVQualifierCanNotBeAppliedToReference/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDereferenceOperatorLimitExceeded/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppForwardEnumDeclarationWithoutUnderlyingType/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUnmatchedPragmaRegionDirective/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUnmatchedPragmaEndRegionDirective/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppStaticDataMemberInUnnamedStruct/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDefaultIsUsedAsIdentifier/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppLongFloat/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMsExtReinterpretCastFromNullptr/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMsExtBindingRValueToLvalueReference/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMsExtAddressOfClassRValue/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMsExtDoubleUserConversionInCopyInit/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMsExtCopyElisionInCopyInitDeclarator/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMsExtNotInitializedStaticConstLocalVar/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppRemoveRedundantBraces/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceIfStatementBraces/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceForStatementBraces/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceWhileStatementBraces/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceDoStatementBraces/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppWrongIncludesOrder/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppWrongSlashesInIncludeDirective/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceNestedNamespacesStyle/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceTypeAliasCodeStyle/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceFunctionDeclarationStyle/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppMemberInitializersOrder/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceOverridingFunctionStyle/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceOverridingDestructorStyle/@EntryIndexedValue" value="SUGGESTION" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseAuto/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUseAutoForNumeric/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceCVQualifiersPlacement/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppEnforceCVQualifiersOrder/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppUnnecessaryWhitespace/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppTabsAreDisallowed/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAConstantConditions/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFANullDereference/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFANotInitializedField/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFALoopConditionNotUpdated/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFADeletedPointer/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAMemoryLeak/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAInvalidatedMemory/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFALocalValueEscapesScope/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFALocalValueEscapesFunction/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAConstantParameter/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAConstantFunctionResult/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAArrayIndexOutOfBounds/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAUnreachableCode/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAUnreachableFunctionCall/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAEndlessLoop/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAInfiniteRecursion/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAUnusedValue/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFAUnreadVariable/@EntryIndexedValue" value="WARNING" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppDFATimeOver/@EntryIndexedValue" value="HINT" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CppInconsistentNaming/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=StringLiteralTypo/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=CommentTypo/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
<option name="/Default/CodeInspection/Highlighting/InspectionSeverities/=IdentifierTypo/@EntryIndexedValue" value="DO_NOT_SHOW" type="string" />
<option name="/Default/CodeStyle/CodeFormatting/CppClangFormat/EnableClangFormatSupport/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/EditorConfig/EnableClangFormatSupport/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/ALIGN_MULTILINE_BINARY_EXPRESSIONS_CHAIN/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/ALIGN_MULTILINE_CALLS_CHAIN/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/ALIGN_MULTILINE_EXPRESSION/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/ALIGN_MULTILINE_FOR_STMT/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/ALIGN_MULTIPLE_DECLARATION/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/ALIGN_TERNARY/@EntryValue" value="ALIGN_ALL" type="string" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/BLANK_LINES_AROUND_CLASS_DEFINITION/@EntryValue" value="1" type="int" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/KEEP_BLANK_LINES_IN_DECLARATIONS/@EntryValue" value="2" type="int" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/KEEP_BLANK_LINES_IN_CODE/@EntryValue" value="2" type="int" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/KEEP_USER_LINEBREAKS/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/INDENT_CASE_FROM_SWITCH/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/INDENT_COMMENT/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/INT_ALIGN_EQ/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SIMPLE_BLOCK_STYLE/@EntryValue" value="DO_NOT_CHANGE" type="string" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_AFTER_COMMA_IN_TEMPLATE_ARGS/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_AFTER_COMMA_IN_TEMPLATE_PARAMS/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_AFTER_FOR_SEMICOLON/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_BEFORE_FOR_SEMICOLON/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_AFTER_UNARY_OPERATOR/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_WITHIN_ARRAY_ACCESS_BRACKETS/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_WITHIN_CAST_EXPRESSION_PARENTHESES/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_WITHIN_EMPTY_INITIALIZER_BRACES/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_WITHIN_EMPTY_METHOD_PARENTHESES/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_WITHIN_INITIALIZER_BRACES/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPECIAL_ELSE_IF_TREATMENT/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_AFTER_CAST_EXPRESSION_PARENTHESES/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/WRAP_AFTER_BINARY_OPSIGN/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/WRAP_BEFORE_TERNARY_OPSIGNS/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/TYPE_DECLARATION_BRACES/@EntryValue" value="END_OF_LINE" type="string" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/OTHER_BRACES/@EntryValue" value="END_OF_LINE" type="string" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/CASE_BLOCK_BRACES/@EntryValue" value="END_OF_LINE" type="string" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/BLANK_LINES_AROUND_FUNCTION_DECLARATION/@EntryValue" value="1" type="int" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/BLANK_LINES_AROUND_FUNCTION_DEFINITION/@EntryValue" value="1" type="int" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/PLACE_WHILE_ON_NEW_LINE/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/PLACE_ELSE_ON_NEW_LINE/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/PLACE_CATCH_ON_NEW_LINE/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/NAMESPACE_INDENTATION/@EntryValue" value="All" type="string" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/ALIGN_MULTILINE_ARGUMENT/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/ALIGN_MULTILINE_EXTENDS_LIST/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/ALIGN_MULTILINE_PARAMETER/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/ALIGN_MULTILINE_TYPE_ARGUMENT/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/ALIGN_MULTILINE_TYPE_PARAMETER/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/BLANK_LINES_AROUND_DECLARATIONS/@EntryValue" value="0" type="int" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/INDENT_ACCESS_SPECIFIERS_FROM_CLASS/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/INDENT_CLASS_MEMBERS_FROM_ACCESS_SPECIFIERS/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/LINE_BREAK_AFTER_COLON_IN_MEMBER_INITIALIZER_LISTS/@EntryValue" value="ON_SINGLE_LINE" type="string" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/MEMBER_INITIALIZER_LIST_STYLE/@EntryValue" value="DO_NOT_CHANGE" type="string" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/PLACE_NAMESPACE_DEFINITIONS_ON_SAME_LINE/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_AFTER_COLON_IN_BITFIELD_DECLARATOR/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_BEFORE_COLON_IN_BITFIELD_DECLARATOR/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_AFTER_EXTENDS_COLON/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_BEFORE_EXTENDS_COLON/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_AFTER_FOR_COLON/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_BEFORE_FOR_COLON/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_AFTER_PTR_IN_DATA_MEMBER/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_AFTER_PTR_IN_DATA_MEMBERS/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_AFTER_PTR_IN_METHOD/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_AFTER_PTR_IN_NESTED_DECLARATOR/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_AFTER_REF_IN_DATA_MEMBER/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_AFTER_REF_IN_DATA_MEMBERS/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_AFTER_REF_IN_METHOD/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_BEFORE_PTR_IN_ABSTRACT_DECL/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_BEFORE_PTR_IN_DATA_MEMBER/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_BEFORE_PTR_IN_DATA_MEMBERS/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_BEFORE_PTR_IN_METHOD/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_BEFORE_REF_IN_ABSTRACT_DECL/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_BEFORE_REF_IN_DATA_MEMBER/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_BEFORE_REF_IN_DATA_MEMBERS/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_BEFORE_REF_IN_METHOD/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_BEFORE_TEMPLATE_ARGS/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_BEFORE_TEMPLATE_PARAMS/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_BETWEEN_CLOSING_ANGLE_BRACKETS_IN_TEMPLATE_ARGS/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_WITHIN_EMPTY_TEMPLATE_PARAMS/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_WITHIN_TEMPLATE_ARGS/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_WITHIN_TEMPLATE_PARAMS/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_WITHIN_DECLARATION_PARENTHESES/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_WITHIN_EMPTY_BLOCKS/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/WRAP_BEFORE_INVOCATION_LPAR/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/WRAP_AFTER_INVOCATION_LPAR/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/WRAP_BEFORE_INVOCATION_RPAR/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/WRAP_BEFORE_DECLARATION_LPAR/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/WRAP_AFTER_DECLARATION_LPAR/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/WRAP_BEFORE_DECLARATION_RPAR/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/WRAP_ARGUMENTS_STYLE/@EntryValue" value="WRAP_IF_LONG" type="string" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/WRAP_PARAMETERS_STYLE/@EntryValue" value="WRAP_IF_LONG" type="string" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/BREAK_TEMPLATE_DECLARATION/@EntryValue" value="LINE_BREAK" type="string" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/NAMESPACE_DECLARATION_BRACES/@EntryValue" value="END_OF_LINE" type="string" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/FREE_BLOCK_BRACES/@EntryValue" value="END_OF_LINE" type="string" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/INVOCABLE_DECLARATION_BRACES/@EntryValue" value="END_OF_LINE" type="string" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/ANONYMOUS_METHOD_DECLARATION_BRACES/@EntryValue" value="END_OF_LINE" type="string" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/INITIALIZER_BRACES/@EntryValue" value="END_OF_LINE_NO_SPACE" type="string" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/INDENT_STYLE/@EntryValue" value="Space" type="string" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/INDENT_SIZE/@EntryValue" value="4" type="int" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/CONTINUOUS_LINE_INDENT/@EntryValue" value="Double" type="string" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/TAB_WIDTH/@EntryValue" value="4" type="int" />
<option name="/Default/CodeStyle/Generate/=CppDefinitions/@KeyIndexDefined" value="true" type="bool" />
<option name="/Default/CodeStyle/Generate/=CppDefinitions/Options/=GenerateInlineDefinitions/@EntryIndexedValue" value="False" type="string" />
<option name="/Default/CodeStyle/Generate/=CppDefinitions/Options/=GenerateInlineDefinitions/@EntryIndexRemoved" />
</component>
</project>

6
.idea/encodings.xml Normal file
View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Encoding">
<file url="file://$PROJECT_DIR$/src/PluginLAMPScatterProcess/LAMPScatterS1B.cpp" charset="GB2312" />
</component>
</project>

BIN
FarField2csvTool.exe Normal file

Binary file not shown.

BIN
NearField2csvTool.exe Normal file

Binary file not shown.

View File

@ -35,7 +35,7 @@ if(LAMPCAE_OpenCASCADE_ALREADY_INCLUDED)
endif()
set(LAMPCAE_OpenCASCADE_ALREADY_INCLUDED 1)
set(OpenCASCADE_DIRS "C:/OCCT")
set(OpenCASCADE_DIRS ${CMAKE_SOURCE_DIR}/extlib/OCCT)
set(OpenCASCADE_VERSION_MAJOR 7)
set(OpenCASCADE_VERSION_MINOR 6)

View File

@ -36,7 +36,7 @@ endif()
set(LAMPCAE_VTK_ALREADY_INCLUDED 1)
#set(VTK_DIRS "${CMAKE_SOURCE_DIR}/extlib/VTK")
set(VTK_DIRS "C:/VTK")
set(VTK_DIRS ${CMAKE_SOURCE_DIR}/extlib/VTK)
set(VTK_VERSION_MAJOR 9)
set(VTK_VERSION_MINOR 3)

View File

@ -48,7 +48,6 @@ namespace MainWidget
_ui->propTabWidget->tabBar()->hide(); // 属性接口
MainWidgetPy::init(mainwindow, this, _geometryWidget, _meshWidget, _physicsWidget);
connect(_meshWidget,SIGNAL(ToOCCTItemSIGNAL(MeshData::MeshKernal *)),this,SIGNAL(MeshToGeometrySig(MeshData::MeshKernal *)));
}
ControlPanel::~ControlPanel()

View File

@ -30,7 +30,6 @@ namespace DataProperty
namespace PostPlot
{
class PlotTreeWidget;
}
namespace Post
@ -130,8 +129,10 @@ namespace MainWidget
Post::PostInfoWidget *_postInfoWidget{};
PostPlot::PlotTreeWidget *_plotTreewidget{};
};
};
}
#endif

View File

@ -317,7 +317,7 @@ font: 10pt &quot;Arial&quot;;
<x>0</x>
<y>0</y>
<width>421</width>
<height>204</height>
<height>181</height>
</rect>
</property>
<layout class="QGridLayout" name="gridLayout_6">

View File

@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>835</width>
<height>557</height>
<height>650</height>
</rect>
</property>
<property name="windowTitle">

View File

@ -1,6 +1,12 @@
#ifndef _SUBWINDOWMANAGER_H_
/**
* FastCAE, 2024.01.02
*
* */
#ifndef _SUBWINDOWMANAGER_H_
#define _SUBWINDOWMANAGER_H_
#include "MainWindowAPI.h"
#include <QHash>

View File

@ -0,0 +1,230 @@
#-----------------------------------------------------------------------------
# LAMP
#
# LAMP
#
#-----------------------------------------------------------------------------
#-----------------------------------------------------------------------------
#
#-----------------------------------------------------------------------------
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/..)
# boost
include_directories(D:/vcpkg/installed/x64-windows/include)
# pcl
include_directories(C:/PCL/3rdParty/FLANN/include)
include_directories(C:/PCL/3rdParty/VTK/include/vtk-9.3)
include_directories(C:/PCL/include/pcl-1.14)
# qt5
include_directories(C:/Qt/5.15.2/msvc2019_64/include/QtQml)
# json
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../json)
# qscintilla2
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../qscintilla2)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../qscintilla2/lexers)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../qscintilla2/include)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../qscintilla2/lexlib)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../qscintilla2/Qt4Qt5)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../qscintilla2/src)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/..)
# boost
include_directories(D:/vcpkg/installed/x64-windows/include)
# pcl
include_directories(C:/PCL/3rdParty/FLANN/include)
include_directories(C:/PCL/3rdParty/VTK/include/vtk-9.3)
include_directories(C:/PCL/include/pcl-1.14)
# qt5
include_directories(C:/Qt/5.15.2/msvc2019_64/include/QtQml)
# json
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../json)
# qcustomplot
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../qcustomplot)
# qhexedit
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../qhexedit)
# opencv
include_directories(${OpenCV_INCLUDE_DIRS})
#
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/SqliteDBProcess/src)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/modelProcess)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/EchoShowProcess)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/OCCViewer)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/PointCloudProcess)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/SharedModuleLib)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/TableProcess)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/TaskXml)
#-----------------------------------------------------------------------------
#
#-----------------------------------------------------------------------------
# pcl
link_directories("C:/PCL/3rdParty/FLANN/lib")
link_directories("C:/VTK/lib")
link_directories("C:/PCL/lib")
#-----------------------------------------------------------------------------
# include
#-----------------------------------------------------------------------------
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
#-----------------------------------------------------------------------------
#
#-----------------------------------------------------------------------------
set(_qrc "${CMAKE_CURRENT_SOURCE_DIR}/../qrc/qianfan.qrc")
set(_lang "${CMAKE_CURRENT_SOURCE_DIR}/../qrc/translations.qrc")
qt5_add_resources(_resource ${_qrc} ${_lang})
#-----------------------------------------------------------------------------
#
#-----------------------------------------------------------------------------
file(GLOB _ui "*.ui")
file(GLOB _header "*.h")
file(GLOB _source "*.cpp")
file(GLOB _templetasource "*.inl")
qt5_wrap_ui(_interface ${_ui})
#-----------------------------------------------------------------------------
#
#-----------------------------------------------------------------------------
add_library(PluginLAMPScatterProcess
${_resource}
${_interface}
${_header}
${_source}
${_templetasource}
)
#-----------------------------------------------------------------------------
#
#-----------------------------------------------------------------------------
## pcl
#link_directories("C:/PCL/3rdParty/FLANN/lib")
#link_directories("C:/VTK/lib")
#link_directories("C:/PCL/lib")
find_package(Qt5 REQUIRED COMPONENTS Core Quick Sql Core Xml Opengl Gui Svg Xmlpatterns Uitools Widgets Qml Printsupport Sensors Quickwidgets Quick Concurrent Openglextensions Charts Datavisualization)
find_package(PCL )
#gdal
find_package(GDAL REQUIRED)
include_directories(${GDAL_INCLUDE_DIRS})
link_directories(${GDAL_LIBRARIES})
# boost
include_directories(D:/vcpkg/installed/x64-windows/include)
# pcl
include_directories(C:/PCL/3rdParty/FLANN/include)
include_directories(C:/PCL/3rdParty/VTK/include/vtk-9.3)
include_directories(C:/PCL/include/pcl-1.14)
include_directories(${PCL_INCLUDE_DIRS})
link_directories(${PCL_LIBRARY_DIRS})
add_definitions(${PCL_DEFINITIONS})
# netcdf
find_package(netCDF CONFIG REQUIRED)
#flann
find_package(flann CONFIG REQUIRED)
#-----------------------------------------------------------------------------
#
#-----------------------------------------------------------------------------
target_compile_definitions(PluginLAMPScatterProcess PRIVATE "NOMINMAX") # vc++ min max pcl std::minpcl::max
target_compile_definitions(PluginLAMPScatterProcess PRIVATE "LAMPSCATTERPROCESSPLUGIN_API")
list(APPEND _depend_library
Common PointCloudOperator Settings PythonModule DataProperty MeshData Material Geometry BCBase ConfigOptions SelfDefObject ModelData ModuleBase PluginManager GeometryCommand GeometryWidgets IO MainWidgets MainWindow
qcustomplot qhexedit qscintilla2
PointCloudOperator
)
list(APPEND _runtimes_libraries
GDAL::GDAL netCDF::netcdf
flann::flann flann::flann_cpp
)
list(APPEND _runtimes_libraries
Qt5::Core Qt5::Gui Qt5::Widgets Qt5::Xml
)
list(APPEND _runtimes_libraries
Qt5::Network Qt5::Core Qt5::Gui Qt5::Widgets Qt5::DBus Qt5::Core Qt5::Xml Qt5::OpenGL Qt5::Gui Qt5::Svg Qt5::Widgets Qt5::Qml Qt5::DataVisualization Qt5::Charts Qt5::PrintSupport Qt5::Test
)
list(APPEND _runtimes_libraries
OpenCASCADE::TKOpenGl OpenCASCADE::TKOffset OpenCASCADE::TKSTL OpenCASCADE::TKFillet OpenCASCADE::Freetype OpenCASCADE::TKBO OpenCASCADE::TKBRep OpenCASCADE::TKBool OpenCASCADE::TKCAF OpenCASCADE::TKCDF OpenCASCADE::TKG2d OpenCASCADE::TKG3d OpenCASCADE::TKGeomAlgo OpenCASCADE::TKGeomBase OpenCASCADE::TKHLR OpenCASCADE::TKIGES OpenCASCADE::TKLCAF OpenCASCADE::TKMath OpenCASCADE::TKMesh OpenCASCADE::TKPrim OpenCASCADE::TKSTEP OpenCASCADE::TKSTEP209 OpenCASCADE::TKSTEPAttr OpenCASCADE::TKSTEPBase OpenCASCADE::TKService OpenCASCADE::TKShHealing OpenCASCADE::TKTopAlgo OpenCASCADE::TKV3d OpenCASCADE::TKVCAF OpenCASCADE::TKXCAF OpenCASCADE::TKXDEIGES OpenCASCADE::TKXSBase OpenCASCADE::TKernel Qt5::Widgets Qt5::Xml VTK::CommonColor VTK::CommonComputationalGeometry VTK::CommonCore VTK::CommonDataModel VTK::CommonExecutionModel VTK::CommonMath VTK::CommonMisc VTK::CommonSystem VTK::CommonTransforms VTK::FiltersCore VTK::FiltersExtraction VTK::FiltersGeneral VTK::FiltersGeometry VTK::FiltersSources VTK::FiltersStatistics VTK::IOCore VTK::IOLegacy VTK::IOXML VTK::IOXMLParser VTK::ImagingCore VTK::ImagingFourier VTK::ImagingMath VTK::InteractionStyle VTK::ParallelCore VTK::ParallelDIY VTK::RenderingCore VTK::RenderingFreeType VTK::RenderingOpenGL2 VTK::RenderingUI VTK::RenderingVolume VTK::RenderingVolumeOpenGL2 VTK::doubleconversion VTK::expat VTK::freetype VTK::glew VTK::lz4 VTK::lzma VTK::sys VTK::zlib VTK::IOGeometry
)
# VTK
list(APPEND _runtimes_libraries
VTK::CommonColor VTK::CommonComputationalGeometry VTK::CommonCore VTK::CommonDataModel VTK::CommonExecutionModel VTK::CommonMath VTK::CommonMisc VTK::CommonSystem VTK::CommonTransforms VTK::DICOMParser VTK::FiltersCore VTK::FiltersGeneral VTK::FiltersGeometry VTK::FiltersHybrid VTK::FiltersModeling VTK::FiltersSources VTK::IOCore VTK::IOChemistry VTK::IOGeometry VTK::IOImage VTK::IOLegacy VTK::ImagingCore VTK::ImagingSources VTK::RenderingCore VTK::RenderingLOD VTK::doubleconversion VTK::jpeg VTK::jsoncpp VTK::lz4 VTK::lzma VTK::metaio VTK::png VTK::pugixml VTK::sys VTK::tiff VTK::zlib
)
#-----------------------------------------------------------------------------
#
#-----------------------------------------------------------------------------
target_link_libraries(PluginLAMPScatterProcess PRIVATE
${_runtimes_libraries}
${_depend_library}
# ${PCL_LIBRARIES}
)
#-----------------------------------------------------------------------------
#
#-----------------------------------------------------------------------------
add_dependencies(PluginLAMPScatterProcess ${_depend_library})
#-----------------------------------------------------------------------------
#
#-----------------------------------------------------------------------------
set(LAMPCAE_PluginLAMPScatterProcess_Runtimes_Libraries ${_runtimes_libraries} PARENT_SCOPE)
#-----------------------------------------------------------------------------
#
#-----------------------------------------------------------------------------
set_target_properties(PluginLAMPScatterProcess
PROPERTIES
ARCHIVE_OUTPUT_DIRECTORY_RELEASE $<TARGET_FILE_DIR:${PROJECT_NAME}>/plugins
LIBRARY_OUTPUT_DIRECTORY_RELEASE $<TARGET_FILE_DIR:${PROJECT_NAME}>/plugins
RUNTIME_OUTPUT_DIRECTORY_RELEASE $<TARGET_FILE_DIR:${PROJECT_NAME}>/plugins
ARCHIVE_OUTPUT_DIRECTORY_DEBUG $<TARGET_FILE_DIR:${PROJECT_NAME}>/plugins
LIBRARY_OUTPUT_DIRECTORY_DEBUG $<TARGET_FILE_DIR:${PROJECT_NAME}>/plugins
RUNTIME_OUTPUT_DIRECTORY_DEBUG $<TARGET_FILE_DIR:${PROJECT_NAME}>/plugins
)

View File

@ -0,0 +1,53 @@
#include "LAMPScatterProcessPlugin.h"
//#include "ll_qgis_base_lib.h"
#include <QDebug>
#include <QObject>
#include <QMenuBar>
#include <QMenu>
#include "lampscattermanagertool.h"
GUI::MainWindow* LAMPScatterTool::LAMPScatterProcessPlugin::_mainwindow = nullptr;
namespace LAMPScatterTool {
LAMPScatterProcessPlugin::LAMPScatterProcessPlugin(GUI::MainWindow* m)
{
_describe = "LAMPScatterProcessPlugin Installed Successfully";
_mainwindow = m;
connect(_mainwindow,SIGNAL(on_action_LoadLaboratoryScatterResultSIGN(GUI::MainWindow* )),
this,SLOT(TriggedProcess(GUI::MainWindow*)));
}
bool LAMPScatterProcessPlugin::install()
{
qDebug()<<"LAMPScatterProcessPlugin install LAMPScatterProcessPlugin::install ";
qDebug()<<"Base on QGIS has binding ";
return true;
}
bool LAMPScatterProcessPlugin::uninstall()
{
return true;
}
void LAMPScatterProcessPlugin::reTranslate(QString) {}
GUI::MainWindow* LAMPScatterProcessPlugin::getMWpt()
{
return _mainwindow;
}
void LAMPScatterProcessPlugin::TriggedProcess(GUI::MainWindow* m) {
qDebug()<<"LAMPScatterProcessPlugin TriggedProcess sucessfully";
LAMPScatterManagerTool* toolwindow = new LAMPScatterManagerTool(_mainwindow);
qDebug()<<"LAMPScatterManagerTool Init";
toolwindow->show();
}
}
void Register(GUI::MainWindow* m, QList<Plugins::PluginBase*>* ps)
{
qDebug()<<"LAMPScatterProcessPlugin install LAMPScatterProcessPlugin::install start Register";
Plugins::PluginBase* p_plugin = new LAMPScatterTool::LAMPScatterProcessPlugin(m);
ps->append(p_plugin);
qDebug()<<"LAMPScatterProcessPlugin install LAMPScatterProcessPlugin::install finish Register";
}

View File

@ -0,0 +1,33 @@
#ifndef _LAMPSCATTERPROCESS_H_
#define _LAMPSCATTERPROCESS_H_
#include "LAMPScatterProcessPluginAPI.h"
#include "PluginManager/pluginBase.h"
#include "MainWindow/MainWindow.h"
namespace LAMPScatterTool {
class LAMPSCATTERPROCESSPLUGINAPI LAMPScatterProcessPlugin : public Plugins::PluginBase {
Q_OBJECT
public:
LAMPScatterProcessPlugin(GUI::MainWindow* m);
~LAMPScatterProcessPlugin() = default;
bool install();
bool uninstall();
void reTranslate(QString);
static GUI::MainWindow* getMWpt();
public slots:
void TriggedProcess(GUI::MainWindow* m);
private:
static GUI::MainWindow* _mainwindow;
};
};
extern "C"
{
void LAMPSCATTERPROCESSPLUGINAPI Register(GUI::MainWindow* m, QList<Plugins::PluginBase*>* plugs);
}
#endif

View File

@ -0,0 +1,13 @@
#ifndef _LAMPSCATTERPROCESSPLUGINAPI_H__
#define _LAMPSCATTERPROCESSPLUGINAPI_H__
#include <QtCore/QtGlobal>
#if defined(LAMPSCATTERPROCESSPLUGIN_API)
#define LAMPSCATTERPROCESSPLUGINAPI Q_DECL_EXPORT
#else
#define LAMPSCATTERPROCESSPLUGINAPI Q_DECL_IMPORT
#endif
#endif

View File

@ -0,0 +1,503 @@
#include "LAMPScatterS1B.h"
#include <flann/flann.hpp>
#include <QDebug>
#include <iostream>
#include <memory>
#include <QRandomGenerator>
#include <sstream>
namespace LAMPScatterTool {
LAMPScatterS1BRCSDataNode::LAMPScatterS1BRCSDataNode(QString PolarName, double AzAngle, double IncAngle, std::shared_ptr<double> freqs, std::shared_ptr<double> InRCSPoints, long freqnumber) {
this->PolarName = PolarName;
this->FreqPointNumber = freqnumber;
this->FreqPoints = freqs;
this->RCSPoints = InRCSPoints;
this->AzAngle = AzAngle;
this->IncAngle = IncAngle;
}
LAMPScatterS1BRCSDataNode::~LAMPScatterS1BRCSDataNode() {
}
long LAMPScatterS1BRCSDataNode::getFreqPointNumber() {
return this->FreqPointNumber;
}
std::shared_ptr<double> LAMPScatterS1BRCSDataNode::getFreqPoints() {
return this->FreqPoints;
}
std::shared_ptr<double> LAMPScatterS1BRCSDataNode::getRCSPoints() {
return this->RCSPoints;
}
QString LAMPScatterS1BRCSDataNode::getPolarName() {
return this->PolarName;
}
double LAMPScatterS1BRCSDataNode::getAzAngle() {
return this->AzAngle;
}
double LAMPScatterS1BRCSDataNode::getIncAngle() {
return this->IncAngle;
}
QString LAMPScatterS1BRCSDataNode::getUniqueName() {
return this->NodeUniqueName;
}
void LAMPScatterS1BRCSDataNode::setUniqueName(QString uniqueName) {
this->NodeUniqueName = uniqueName;
}
LAMPScatterS1BPolarKdTree::LAMPScatterS1BPolarKdTree(std::vector<std::shared_ptr<LAMPScatterS1BRCSDataNode> > inDatalist) {
this->KdtreeFlannDatasetPtr = nullptr;
this->kdtreeIndexPtr = nullptr;
this->datalist = std::vector<std::shared_ptr<LAMPScatterS1BRCSDataNode> >(inDatalist.size());
for (long i = 0; i < inDatalist.size(); i++) {
this->datalist[i] = inDatalist[i];
}
this->dataset = std::vector<std::vector<double> >(this->datalist.size(), std::vector<double>(2));
for (size_t i = 0; i < this->datalist.size(); ++i) {
dataset[i][0] = static_cast<double>(this->datalist[i]->getAzAngle());
dataset[i][1] = static_cast<double>(this->datalist[i]->getIncAngle());
}
// 构建KDtree
this->KdtreeFlannDatasetPtr = std::make_shared<flann::Matrix<double> >(&(this->dataset)[0][0], this->dataset.size(), this->dataset[0].size());
this->kdtreeIndexPtr = std::make_shared<flann::Index<flann::L2<double> > >(*(this->KdtreeFlannDatasetPtr.get()), flann::KDTreeSingleIndexParams(1));
this->kdtreeIndexPtr->buildIndex();
}
LAMPScatterS1BPolarKdTree::~LAMPScatterS1BPolarKdTree() {
this->datalist.clear();
std::vector<std::shared_ptr<LAMPScatterS1BRCSDataNode> >().swap(this->datalist);
}
QVector<std::shared_ptr<LAMPScatterS1BRCSDataNode> > LAMPScatterS1BPolarKdTree::search(double sAzAngle, double sIncAngle, long sPointNumber) {
// 查询点
std::vector<double> queryPoint = {sAzAngle, sIncAngle};
flann::Matrix<double> query(&queryPoint[0], 1, queryPoint.size());
// 存储结果索引和距离
std::vector<int> indices(sPointNumber);
std::vector<double> dists(sPointNumber);
// 确保 indices 和 dists 是 flann::Matrix 类型
flann::Matrix<int> flannIndices(&indices[0], sPointNumber, 1);
flann::Matrix<double> flannDists(&dists[0], sPointNumber, 1);
// 执行最近邻搜索
int result = this->kdtreeIndexPtr->knnSearch(query, flannIndices, flannDists, sPointNumber, flann::FLANN_CHECKS_AUTOTUNED);
if (result > 0) {
QVector<std::shared_ptr<LAMPScatterS1BRCSDataNode> > searchResults(sPointNumber);
for (long i = 0; i < sPointNumber; i++) {
searchResults[i] = datalist[indices[0]];
}
return searchResults;
} else {
return QVector<std::shared_ptr<LAMPScatterS1BRCSDataNode> >(0);
}
}
std::vector<std::vector<double> > LAMPScatterS1BPolarKdTree::getAZIncPoints() {
return this->dataset;
}
std::vector<std::shared_ptr<LAMPScatterS1BRCSDataNode> > LAMPScatterS1BPolarKdTree::getdatalists() {
return this->datalist;
}
LAMPScatterS1BDataset::LAMPScatterS1BDataset() {
this->FreqPointNumber = 0;
this->polNumber = 0;
this->AzNumber = 0;
this->IncNumber = 0;
this->polarRCSTree.clear();
}
LAMPScatterS1BDataset::~LAMPScatterS1BDataset() {
this->polarRCSTree.clear(); //删除文件
}
int LAMPScatterS1BDataset::OpenFile(QString s1bfilepath) {
int ncid;
if (nc_open(s1bfilepath.toLocal8Bit().constData(), NC_NOWRITE, &ncid)) {
qCritical() << "Failed to open NetCDF file";
return 1;
}
int FreqVarid;
int PolVarid;
int AzVarid;
int IncVarid;
int RCSVarid;
if (nc_inq_varid(ncid, "Freq", &FreqVarid)
|| nc_inq_varid(ncid, "Pol", &PolVarid)
|| nc_inq_varid(ncid, "Az", &AzVarid)
|| nc_inq_varid(ncid, "Inc", &IncVarid)
|| nc_inq_varid(ncid, "RCS", &RCSVarid)
) {
qDebug() << "Failed to get variable ";
qDebug() << "Freq:\t" << FreqVarid << "\tPol:\t" << PolVarid << "\tAz:\t" << AzVarid << "\tInc:\t" << IncVarid << "\RCS:\t" << RCSVarid;
nc_close(ncid);
return 1;
}
qDebug() << "[VarID]\t Freq:\t" << FreqVarid << "\tPol:\t" << PolVarid << "\tAz:\t" << AzVarid << "\tInc:\t" << IncVarid << "\RCS:\t" << RCSVarid;
// 检查变量维度
int Freqndims;
int Polndims;
int Azndims;
int Incndims;
int RCSndims;
if (nc_inq_varndims(ncid, FreqVarid, &Freqndims)
|| nc_inq_varndims(ncid, PolVarid, &Polndims)
|| nc_inq_varndims(ncid, AzVarid, &Azndims)
|| nc_inq_varndims(ncid, IncVarid, &Incndims)
|| nc_inq_varndims(ncid, RCSVarid, &RCSndims)
) {
qDebug() << "Failed to get number of dimensions for variable";
qDebug() << "[Dimensions]\t Freq:\t" << Freqndims
<< "\tPol:\t" << Polndims
<< "\tAz:\t" << Azndims
<< "\tInc:\t" << Incndims
<< "\RCS:\t" << RCSndims;
nc_close(ncid);
return 1;
}
qDebug() << "[Dimensions]\t Freq:\t" << Freqndims
<< "\tPol:\t" << Polndims
<< "\tAz:\t" << Azndims
<< "\tInc:\t" << Incndims
<< "\RCS:\t" << RCSndims;
// 获取 点数据数量
std::vector<int> Freqdimids(Freqndims);
std::vector<int> Poldimids(Polndims);
std::vector<int> Azdimids(Azndims);
std::vector<int> Incdimids(Incndims);
std::vector<int> RCSdimids(RCSndims);
if (nc_inq_vardimid(ncid, FreqVarid, Freqdimids.data())
|| nc_inq_vardimid(ncid, PolVarid, Poldimids.data())
|| nc_inq_vardimid(ncid, AzVarid, Azdimids.data())
|| nc_inq_vardimid(ncid, IncVarid, Incdimids.data())
|| nc_inq_vardimid(ncid, RCSVarid, RCSdimids.data())
) {
qDebug() << "Failed to get dimension IDs for variable";
qDebug() << "[Dimensions IDs]\t Freq:\t" << Freqdimids.size()
<< "\tPol:\t" << Poldimids.size()
<< "\tAz:\t" << Azdimids.size()
<< "\tInc:\t" << Incdimids.size()
<< "\RCS:\t" << RCSdimids.size();
nc_close(ncid);
return 1;
}
qDebug() << "[Dimensions IDs]\t Freq:\t" << Freqdimids.size()
<< "\tPol:\t" << Poldimids.size()
<< "\tAz:\t" << Azdimids.size()
<< "\tInc:\t" << Incdimids.size()
<< "\RCS:\t" << RCSdimids.size();
std::vector<int> Freqdimsize(Freqndims);
std::vector<int> Poldimsizes(Polndims);
std::vector<int> Azdimsize(Azndims);
std::vector<int> Incdimsize(Incndims);
std::vector<int> RCSdimsize(RCSndims);
for (long i = 0; i < Freqdimids.size(); i++) {
size_t datalen_temp;
if (nc_inq_dimlen(ncid, Freqdimids[i], &datalen_temp)) {
qDebug() << "Failed to get Freqdimsize for variable";
} else {
Freqdimsize[i] = datalen_temp;
}
}
for (long i = 0; i < Poldimids.size(); i++) {
size_t datalen_temp;
if (nc_inq_dimlen(ncid, Poldimids[i], &datalen_temp)) {
qDebug() << "Failed to get Poldimids for variable";
} else {
Poldimsizes[i] = datalen_temp;
}
}
for (long i = 0; i < Azdimids.size(); i++) {
size_t datalen_temp;
if (nc_inq_dimlen(ncid, Azdimids[i], &datalen_temp)) {
qDebug() << "Failed to get Azdimids for variable";
} else {
Azdimsize[i] = datalen_temp;
}
}
for (long i = 0; i < Incdimids.size(); i++) {
size_t datalen_temp;
if (nc_inq_dimlen(ncid, Incdimids[i], &datalen_temp)) {
qDebug() << "Failed to get Incdimids for variable";
} else {
Incdimsize[i] = datalen_temp;
}
}
for (long i = 0; i < RCSdimids.size(); i++) {
size_t datalen_temp;
if (nc_inq_dimlen(ncid, RCSdimids[i], &datalen_temp)) {
qDebug() << "Failed to get RCSdimids for variable";
} else {
RCSdimsize[i] = datalen_temp;
}
}
long Freq_datalen = 1;
long Pol_datalen = 1;
long Az_datalen = 1;
long Inc_datalen = 1;
long RCS_datalen = 1;
for (long i = 0; i < Freqdimsize.size(); i++) {
Freq_datalen = Freq_datalen * Freqdimsize[i];
}
for (long i = 0; i < Poldimsizes.size(); i++) {
Pol_datalen = Pol_datalen * Poldimsizes[i];
}
for (long i = 0; i < Azdimsize.size(); i++) {
Az_datalen = Az_datalen * Azdimsize[i];
}
for (long i = 0; i < Incdimsize.size(); i++) {
Inc_datalen = Inc_datalen * Incdimsize[i];
}
for (long i = 0; i < RCSdimsize.size(); i++) {
RCS_datalen = RCS_datalen * RCSdimsize[i];
}
qDebug() << "[Data Size]\t Freq:\t" << Freq_datalen
<< "\tPol:\t" << Pol_datalen
<< "\tAz:\t" << Az_datalen
<< "\tInc:\t" << Inc_datalen
<< "\RCS:\t" << RCS_datalen;
// 读取数据
std::vector<float> pol_data(Pol_datalen);
std::vector<float> inc_data(Inc_datalen);
std::vector<float> az_data(Az_datalen);
std::vector<float> freq_data(Freq_datalen);
std::vector<double> rcs_data(RCS_datalen);
if (nc_get_var_float(ncid, FreqVarid, freq_data.data())
|| nc_get_var_float(ncid, PolVarid, pol_data.data())
|| nc_get_var_float(ncid, AzVarid, az_data.data())
|| nc_get_var_float(ncid, IncVarid, inc_data.data())
|| nc_get_var_double(ncid, RCSVarid, rcs_data.data())
) {
qDebug() << "reading Data for variable";
qDebug() << "[Data size ]\t Freq:\t" << pol_data.size()
<< "\tPol:\t" << inc_data.size()
<< "\tAz:\t" << az_data.size()
<< "\tInc:\t" << freq_data.size()
<< "\tRCS:\t" << rcs_data.size();
nc_close(ncid);
return 1;
}
qDebug() << "[Data size ]\t Freq:\t" << pol_data.size()
<< "\tPol:\t" << inc_data.size()
<< "\tAz:\t" << az_data.size()
<< "\tInc:\t" << freq_data.size()
<< "\RCS:\t" << rcs_data.size();
// 读取Pol的属性
QMap<QString, QString> polnamedict = ReadPolAttribution(ncid, PolVarid);
if (polnamedict.count() == 0) {
qDebug() << "Failed to get attribution Number for variable Pol ";
nc_close(ncid);
return 1;
}
nc_close(ncid);
// 创建节点
for (long PolId = 0; PolId < Pol_datalen; PolId++) {
// Polar
QString polkey = QString("label_Pol_%1").arg(PolId + 1);
QString polname = polnamedict[polkey];
std::vector<std::shared_ptr<LAMPScatterS1BRCSDataNode> > nodes(0);
for (long Azid = 0; Azid < Az_datalen; Azid++) {
// Az
for (long Incid = 0; Incid < Inc_datalen; Incid++) {
// Inc
std::shared_ptr<double> freqs(new double[Freq_datalen], LAMPScatterS1BdelArrPtr);
std::shared_ptr<double> RCSData(new double[Freq_datalen], LAMPScatterS1BdelArrPtr);
double Azvalue = az_data[Azid];
double Incvalue = inc_data[Azid];
for (long freqID = 0; freqID < Freq_datalen; freqID++) {
// Freq
freqs.get()[freqID] = freq_data[freqID];
RCSData.get()[freqID] = rcs_data[PolId * Az_datalen * Inc_datalen * Freq_datalen +
Azid * Inc_datalen * Freq_datalen +
Incid * Freq_datalen +
freqID
];
}
std::shared_ptr<LAMPScatterS1BRCSDataNode> node(new LAMPScatterS1BRCSDataNode(polname, Azvalue, Incvalue, freqs, RCSData, Freq_datalen));
node->setUniqueName(getLAMPScatterS1BNodeUniqueCode(node));
this->Nodedict.insert(node->getUniqueName(), node); // 查询节点问题
nodes.push_back(node);
}
}
std::shared_ptr<LAMPScatterS1BPolarKdTree> treetemp(new LAMPScatterS1BPolarKdTree(nodes));
polarRCSTree.insert(polname, treetemp); // KDTree
}
this->FreqPointNumber = Freq_datalen;
this->polNumber = Pol_datalen;
this->AzNumber = Az_datalen;
this->IncNumber = Inc_datalen;
std::vector<float>().swap(pol_data);
std::vector<float>().swap(inc_data);
std::vector<float>().swap(az_data);
std::vector<float>().swap(freq_data);
std::vector<double>().swap(rcs_data);
std::vector<int>().swap(Freqdimids);
std::vector<int>().swap(Poldimids);
std::vector<int>().swap(Azdimids);
std::vector<int>().swap(Incdimids);
std::vector<int>().swap(RCSdimids);
std::vector<int>().swap(Freqdimsize);
std::vector<int>().swap(Poldimsizes);
std::vector<int>().swap(Azdimsize);
std::vector<int>().swap(Incdimsize);
std::vector<int>().swap(RCSdimsize);
return 0;
}
QVector<QString> LAMPScatterS1BDataset::getPolarNames() {
QVector<QString> polnames;
polnames.clear();
for (QString polarName: this->polarRCSTree.keys()) {
polnames.append(polarName);
}
return polnames;
}
std::shared_ptr<LAMPScatterS1BPolarKdTree> LAMPScatterS1BDataset::getPolarKdTree(QString polarName) {
if (this->polarRCSTree.contains(polarName)) {
return this->polarRCSTree[polarName];
} else {
return nullptr;
}
}
QVector<QString> LAMPScatterS1BDataset::getNodeUniqueNames() {
QVector<QString> nodeUniqueNames;
for (QString keyname:this->Nodedict.keys()) {
nodeUniqueNames.append(keyname);
}
return nodeUniqueNames;
}
std::complex<double> LAMPScatterS1BDataset::getRCSData(QString polarName, double AzAngle, double IncAngle, double FreqId) {
return std::complex<double>();
}
std::shared_ptr<LAMPScatterS1BRCSDataNode> LAMPScatterS1BDataset::getRCSDataNode(QString hashCodeName) {
if (this->Nodedict.contains(hashCodeName)) {
return this->Nodedict[hashCodeName];
}else {
return nullptr;
}
}
QMap<QString, QString> LAMPScatterS1BDataset::ReadPolAttribution(int ncid, int pol_varid) {
int num_atts;
if (nc_inq_varnatts(ncid, pol_varid, &num_atts)) {
return QMap<QString, QString>();
}
if (num_atts == 0) {
return QMap<QString, QString>();
} else {
QMap<QString, QString> result;
qDebug() << "Attributes for Pol:";
for (int i = 0; i < num_atts; ++i) {
char att_name[NC_MAX_NAME + 1];
if (nc_inq_attname(ncid, pol_varid, i, att_name)) {
qDebug() << "Error getting attribute name";
}
// 获取属性类型和长度
nc_type xtype;
size_t len;
if (nc_inq_att(ncid, pol_varid, att_name, &xtype, &len)) {
qDebug() << "Error getting attribute type and length";
}
// 根据属性类型读取属性值
switch (xtype) {
case NC_CHAR: {
std::vector<char> att_value(len + 1); // +1 for null terminator
if (nc_get_att_text(ncid, pol_varid, att_name, att_value.data())) {
qDebug() << "Error reading text attribute";
}
qDebug() << "Attribute Name: " << att_name << ", Type: NC_CHAR, Value: " << att_value.data();
result.insert(QString(att_name), QString(att_value.data()));
break;
}
default:
std::cout << "Attribute Name: " << att_name << ", Type: Unknown" << std::endl;
break;
}
}
return result;
}
}
QString getLAMPScatterS1BNodeUniqueCode(std::shared_ptr<LAMPScatterS1BRCSDataNode> nodePtr) {
uintptr_t add_ptr=reinterpret_cast<uintptr_t>(&(*nodePtr));
QString str = QString::number(add_ptr,16);
return QString("%1%2").arg(str).arg(generateRandomString(6));
}
QString generateRandomString(int length) {
const QString characters("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789");
const int maxIndex = characters.length() - 1;
QString randomString;
for (int i = 0; i < length; ++i) {
int index = QRandomGenerator::global()->bounded(maxIndex + 1);
QChar nextChar = characters.at(index);
randomString.append(nextChar);
}
return randomString;
}
}

View File

@ -0,0 +1,115 @@
#pragma once
#ifndef _LAMPSCATTERS1B_H_
#define _LAMPSCATTERS1B_H_
#include <stdlib.h>
#include <QString>
#include <netcdf.h>
#include <complex>
#include <memory>
#include <Qset>
#include <QMap>
#include <flann/flann.hpp>
#include <memory>
#include <vector>
#include "PostAlgorithm/Plot3DReaderAlgorithm.h"
namespace LAMPScatterTool {
inline void LAMPScatterS1BdelArrPtr(void *p) {
delete[] p;
p = nullptr;
}
class LAMPScatterS1BRCSDataNode {
public:
LAMPScatterS1BRCSDataNode(QString PolarName, double AzAngle, double IncAngle, std::shared_ptr<double> freqs, std::shared_ptr<double> RCSPoints, long freqnumber);
~LAMPScatterS1BRCSDataNode();
public:
long getFreqPointNumber();
std::shared_ptr<double> getFreqPoints();
std::shared_ptr<double> getRCSPoints();
QString getPolarName();
double getAzAngle();
double getIncAngle();
QString getUniqueName();
void setUniqueName(QString uniqueName);
private:
double AzAngle;
double IncAngle;
long FreqPointNumber;
std::shared_ptr<double> FreqPoints;
std::shared_ptr<double> RCSPoints;
QString PolarName;
QString NodeUniqueName;
};
class LAMPScatterS1BPolarKdTree {
public:
LAMPScatterS1BPolarKdTree(std::vector<std::shared_ptr<LAMPScatterS1BRCSDataNode> > inDatalist);
~LAMPScatterS1BPolarKdTree();
public:
QVector<std::shared_ptr<LAMPScatterS1BRCSDataNode> > search(double sAzAngle, double sIncAngle, long sPointNumber);
std::vector<std::vector<double>> getAZIncPoints();
std::vector<std::shared_ptr<LAMPScatterS1BRCSDataNode> > getdatalists();
private: //kdtree
std::vector<std::vector<double> > dataset;
std::shared_ptr<flann::Matrix<double> > KdtreeFlannDatasetPtr;
std::shared_ptr<flann::Index<flann::L2<double> > > kdtreeIndexPtr;
private:
std::vector<std::shared_ptr<LAMPScatterS1BRCSDataNode> > datalist;
};
class LAMPScatterS1BDataset {
public:
LAMPScatterS1BDataset();
~LAMPScatterS1BDataset();
public:
int OpenFile(QString s1bfilepath);
QVector<QString> getPolarNames();
std::shared_ptr<LAMPScatterS1BPolarKdTree> getPolarKdTree(QString polarName);
public:
std::complex<double> getRCSData(QString polarName, double AzAngle, double IncAngle, double FreqId);
std::shared_ptr<LAMPScatterS1BRCSDataNode> getRCSDataNode(QString hashCodeName);
QVector<QString> getNodeUniqueNames();
private:
long FreqPointNumber;
long polNumber;
long AzNumber;
long IncNumber;
QMap<QString, std::shared_ptr<LAMPScatterS1BPolarKdTree> > polarRCSTree;
QMap<QString,std::shared_ptr<LAMPScatterS1BRCSDataNode> > Nodedict;
private:
QMap<QString, QString> ReadPolAttribution(int ncid, int polvarid);
};
QString getLAMPScatterS1BNodeUniqueCode(std::shared_ptr<LAMPScatterS1BRCSDataNode> nodePtr);
QString generateRandomString(int length);
}
#endif

View File

@ -0,0 +1,343 @@
//
// Created by 30453 on 25-1-11.
//
// You may need to build the project (run Qt uic code generator) to get "ui_LAMPScatterManagerTool.h" resolved
#include "lampscattermanagertool.h"
#include "ui_LAMPScatterManagerTool.h"
#include "LAMPScatterS1B.h"
#include <QFileDialog>
#include "qcustomplot.h"
namespace LAMPScatterTool {
LAMPScatterS1BNode::LAMPScatterS1BNode(QWidget *parent, QTreeWidget *rootnode, QString Inncfilepath): QWidget(parent),
ncfilepath(Inncfilepath) {
QFileInfo fileInfo(Inncfilepath);
this->ncfilename = fileInfo.fileName(); // 获取文件名
this->dataset=std::make_shared<LAMPScatterS1BDataset>();
this->dataset->OpenFile(Inncfilepath); //
// 根据属性创建tree Node
this->NodeData = new QTreeWidgetItem(rootnode, SCATTER_S1B_NODETYPE::SCATTER_S1B_NODETYPE_NCNODE_ROOT); // 创建更目录
this->NodeData->setText(0, this->ncfilename);
// 创建极化
QVector<QString> polarnames=this->dataset->getPolarNames();
for (long i = 0; i < polarnames.count(); i++) {
QTreeWidgetItem *polaritem = new QTreeWidgetItem(this->NodeData, SCATTER_S1B_NODETYPE::SCATTER_S1B_NODETYPE_NCNODE_POLARNODE);
polaritem->setText(0, polarnames[i]);
std::shared_ptr<LAMPScatterS1BPolarKdTree> tempPtr = this->dataset->getPolarKdTree(polarnames[i]);
std::shared_ptr<LAMPScatterS1BPolarKdTree> rscdatakdtree=this->dataset->getPolarKdTree(polarnames[i]);
if (nullptr == rscdatakdtree) {
continue;
}
std::vector<std::shared_ptr<LAMPScatterS1BRCSDataNode> > nodedictkeylist =rscdatakdtree->getdatalists();
QString temphascode="";
for (long j = 0; j < nodedictkeylist.size(); j++) {
temphascode=nodedictkeylist[j]->getUniqueName();
std::shared_ptr<LAMPScatterS1BRCSDataNode> tempdatanode = this->dataset->getRCSDataNode(temphascode);
QTreeWidgetItem *AzIncNode = new QTreeWidgetItem(polaritem, SCATTER_S1B_NODETYPE::SCATTER_S1B_NODETYPE_NCNODE_AZINCANGLENODE);
AzIncNode->setText(0, QString("(Az:%1,Inc:%2)").arg(tempdatanode->getAzAngle()).arg(tempdatanode->getIncAngle()));
AzIncNode->setData(0, Qt::UserRole, tempdatanode->getUniqueName());
polaritem->addChild(AzIncNode);
qDebug() << polarnames[i]<<" -- "<< tempdatanode->getUniqueName();
}
this->NodeData->addChild(polaritem);
}
rootnode->addTopLevelItem(this->NodeData);
}
LAMPScatterS1BNode::~LAMPScatterS1BNode() {
if (nullptr != this->dataset) {
this->dataset.reset();
}
if (nullptr != this->NodeData) {
delete this->NodeData;
}
}
QString LAMPScatterS1BNode::getName() {
return this->ncfilename;
}
QString LAMPScatterS1BNode::getPath() {
return this->ncfilepath;
}
std::shared_ptr<LAMPScatterS1BRCSDataNode> LAMPScatterS1BNode::getRCSDataNode(QString hasCodeName) {
return this->dataset->getRCSDataNode(hasCodeName);
}
LAMPScatterManagerTool::LAMPScatterManagerTool(QWidget *parent) : QMainWindow(parent), ui(new Ui::LAMPScatterManagerTool) {
ui->setupUi(this);
qDebug("LAMPScatterManagerTool::LAMPScatterManagerTool UI finish!!");
connect(this->ui->action_ScatterS1B,SIGNAL(triggered()),this,SLOT(actionScatterS1BOpenFile()));
connect(this->ui->actionCloseFileNode,SIGNAL(triggered()),this,SLOT(actionCloseNodeFileTrigged()));
// this->LAMPScatterS1Brootnode = new QTreeWidgetItem(this->ui->treeWidget);
// this->LAMPScatterS1Brootnode->setText(0,u8"全极化散射测量数据");
this->LAMPScatterS1Bnodemap.clear();
this->graphdict.clear();
this->ui->treeWidget->setContextMenuPolicy(Qt::CustomContextMenu);// 右键菜单
connect(this->ui->treeWidget,SIGNAL(customContextMenuRequested(QPoint)),this,SLOT(ShowTreeWidgetContextMenu(const QPoint& )));
this->InitTreeWidgetMenu();
this->ui->customPlot->setInteractions(QCP::iRangeDrag | QCP::iRangeZoom);
this->ui->treeWidget->setHeaderHidden(true);
qDebug("LAMPScatterManagerTool::LAMPScatterManagerTool InitTreeWidgetMenu finish!!");
}
LAMPScatterManagerTool::~LAMPScatterManagerTool() {
delete ui;
}
void LAMPScatterManagerTool::actionScatterS1BOpenFile() {
qDebug() << "LAMPScatterManagerTool::actionScatterS1BOpenFile";
QString fileName = QFileDialog::getOpenFileName(
this,
tr("Open NetCDF File"),
"",
tr("NetCDF Files (*.nc *.NC);;All Files (*)")
);
if (!fileName.isEmpty()) {
QMessageBox::information(this, tr("Selected File"), tr("You selected:\n%1").arg(fileName));
qDebug() << "Selected NetCDF File:" << fileName;
std::shared_ptr<LAMPScatterS1BNode> tempnode(new LAMPScatterS1BNode(this->ui->treeWidget,this->ui->treeWidget,fileName));
this->LAMPScatterS1Bnodemap.insert(tempnode->getName(),tempnode);
} else {
QMessageBox::warning(this, tr("No File Selected"), tr("No file was selected."));
}
this->ui->treeWidget->update();
}
void LAMPScatterManagerTool::actionCloseNodeFileTrigged() {
QList<QTreeWidgetItem*> items= this->ui->treeWidget->selectedItems();
for (QTreeWidgetItem* item : items) {
QTreeWidgetItem* ncnode=item;
while (nullptr != ncnode) {
if (ncnode->type()==SCATTER_S1B_NODETYPE::SCATTER_S1B_NODETYPE_NCNODE_ROOT) {
this->RemoveNCNode(ncnode);
break;
}else {
ncnode=ncnode->parent();
}
}
}
}
void LAMPScatterManagerTool::RemoveNCNode(QTreeWidgetItem *node) {
// 删除图像
QVector<std::shared_ptr<QCPGraph> > graphs=this->graphdict[node->text(0)];
for (std::shared_ptr<QCPGraph> graph : graphs) {
this->RemoveCustomPlotData(graph->name());
}
QString ncname=node->text(0);
this->graphdict.remove(ncname);
this->LAMPScatterS1Bnodemap.remove(ncname);
this->ui->treeWidget->removeItemWidget(node,0);
}
void LAMPScatterManagerTool::ShowTreeWidgetContextMenu(const QPoint& point) {
QTreeWidget* curTree = qobject_cast<QTreeWidget*>(sender());
if (nullptr != curTree) {
qDebug() << "LAMPScatterManagerTool::ShowTreeWidgetContextMenu";
this->currentSelectedItem=nullptr;
this->currentSelectedItem = curTree->itemAt(point); // 根据坐标求出当前右键点击的
if (nullptr != this->currentSelectedItem ) {
switch (this->currentSelectedItem ->type()) {
case SCATTER_S1B_NODETYPE::SCATTER_S1B_NODETYPE_NCNODE_ROOT:
break;
case SCATTER_S1B_NODETYPE::SCATTER_S1B_NODETYPE_NCNODE_POLARNODE:
break;
case SCATTER_S1B_NODETYPE::SCATTER_S1B_NODETYPE_NCNODE_AZINCANGLENODE:
this->AzIncNodeMenu->exec(QCursor::pos());// 展示AzInc节点
break;
default:
break;
}
}else{}
}else{}
}
void LAMPScatterManagerTool::InitTreeWidgetMenu() {
this->AzIncNodeMenu=std::make_shared<QMenu>( new QMenu(this->ui->treeWidget)); // 右键菜单
QAction* AzIncNode_action_ShowRCSDatadB=this->AzIncNodeMenu->addAction(tr(u8"展示散射测量数据dBsm")); // 展示数据散射测量数据
QAction* AzIncNode_action_RemoveRCSData=this->AzIncNodeMenu->addAction(tr(u8"隐藏散射测量数据"));
connect(AzIncNode_action_ShowRCSDatadB,SIGNAL(triggered()),this,SLOT(onAzIncNode_action_ShowRCSDatadB_triggered()));
connect(AzIncNode_action_RemoveRCSData,SIGNAL(triggered()),this,SLOT(onAzIncNode_action_RemoveRCSData_triggered()));
}
void LAMPScatterManagerTool::onAzIncNode_action_ShowRCSDatadB_triggered() {
QTreeWidgetItem* currentItem = this->currentSelectedItem;
if (nullptr != currentItem) {
QString ncname="";
QTreeWidgetItem* parentItem = currentItem->parent();
ncname.clear();
while (nullptr != parentItem) {
if (parentItem->type()==SCATTER_S1B_NODETYPE::SCATTER_S1B_NODETYPE_NCNODE_ROOT) {
ncname=parentItem->text(0);
break;
}else {
parentItem = parentItem->parent();
}
}
qDebug()<<"select nc file name:\t"<<ncname;
if (!ncname.isEmpty()) {
QString currentName = currentItem->data(0,Qt::UserRole).toString();
qDebug() << "currentName:" << currentName;
if (!this->LAMPScatterS1Bnodemap.contains(ncname)) {
qDebug()<<"LAMPScatterS1Bnodemap not contains "<<ncname;
return;
}
if (nullptr==this->LAMPScatterS1Bnodemap[ncname]) {
qDebug()<<"nullptr == LAMPScatterS1Bnodemap "<<ncname;
return;
}
std::shared_ptr<LAMPScatterS1BRCSDataNode> currentNode =this->LAMPScatterS1Bnodemap[ncname]->getRCSDataNode(currentName); // 当前散射数据节点
if (nullptr != currentNode) { // 当前节点
QString graphname=QString("Polar:%1 Az:%2 Inc:%3 %4")
.arg(currentNode->getPolarName())
.arg(QString::number(currentNode->getAzAngle()))
.arg(QString::number(currentNode->getIncAngle()))
.arg(ncname);
qDebug() << "graphname:" << graphname;
QString xlabel="Frequency (GHz)";
QString ylabel="RCS (dBsm)";
long FreqPointNumber=currentNode->getFreqPointNumber();
std::shared_ptr<double> freqlist_ptr = currentNode->getFreqPoints();
std::shared_ptr<double> rsclist_ptr=currentNode->getRCSPoints();
QVector<double> xs(FreqPointNumber);
QVector<double> ys(FreqPointNumber);
for (long freqidx=0;freqidx<FreqPointNumber;freqidx++) {
xs[freqidx]=freqlist_ptr.get()[freqidx];
ys[freqidx]=10*log10(rsclist_ptr.get()[freqidx]);
}
this->ShowCustomPlotData(xs,ys,xlabel,ylabel,graphname,ncname);
}else{}
}
else {}
}
}
void LAMPScatterManagerTool::onAzIncNode_action_RemoveRCSData_triggered() {
QTreeWidgetItem* currentItem = this->currentSelectedItem;
if (nullptr != currentItem) {
QString ncname="";
QTreeWidgetItem* parentItem = currentItem->parent();
ncname.clear();
while (nullptr != parentItem) {
if (parentItem->type()==SCATTER_S1B_NODETYPE::SCATTER_S1B_NODETYPE_NCNODE_ROOT) {
ncname=parentItem->text(0);
break;
}else {
parentItem = parentItem->parent();
}
}
qDebug()<<"select nc file name:\t"<<ncname;
if (!ncname.isEmpty()) {
QString currentName = currentItem->data(0,Qt::UserRole).toString();
qDebug() << "currentName:" << currentName;
if (!this->LAMPScatterS1Bnodemap.contains(ncname)) {
qDebug()<<"LAMPScatterS1Bnodemap not contains "<<ncname;
return;
}
if (nullptr==this->LAMPScatterS1Bnodemap[ncname]) {
qDebug()<<"nullptr == LAMPScatterS1Bnodemap "<<ncname;
return;
}
std::shared_ptr<LAMPScatterS1BRCSDataNode> currentNode =this->LAMPScatterS1Bnodemap[ncname]->getRCSDataNode(currentName); // 当前散射数据节点
if (nullptr != currentNode) {
// 当前节点
QString graphname=QString("Polar:%1 Az:%2 Inc:%3 %4")
.arg(currentNode->getPolarName())
.arg(QString::number(currentNode->getAzAngle()))
.arg(QString::number(currentNode->getIncAngle()))
.arg(ncname);
this->RemoveCustomPlotData(graphname);
}
}
}
}
void LAMPScatterManagerTool::AddCustomPlotGraph(std::shared_ptr<QCPGraph> graphPtr, QString ncname) {
if (!this->graphdict.contains(ncname)) {
this->graphdict.insert(ncname,QVector<std::shared_ptr<QCPGraph>>(0));
}else{}
this->graphdict[ncname].append(graphPtr);
}
QColor LAMPScatterManagerTool::getNewColor() {
QColor color = QColor::fromHsv(ColorhueOffset, 255, 255);
int graphCount=this->ui->customPlot->graphCount();
ColorhueOffset += (360 / (graphCount+1)) % 360;
return color;
}
void LAMPScatterManagerTool::ShowCustomPlotData(QVector<double> xs, QVector<double> ys, QString xlabel, QString ylabel,QString graphName,QString ncname) {
qDebug() << "LAMPScatterManagerTool::ShowCustomPlotData \t"<<graphName;
if (xs.count()==0 || ys.count()==0||xs.count()!=ys.count()) {
return;
}else{}
double xmin=xs.at(0);
double xmax=xs.at(xs.size()-1);
double ymin=ys.at(0);
double ymax=ys.at(ys.size()-1);
for (long i=0;i<ys.size();i++) {
double y=ys.at(i);
if (ymin>y) {
ymin=y;
}else if (ymax<y) {
ymax=y;
}
}
double xstep=xmax-xmin;
double ystep=ymax-ymin;
this->ui->customPlot->xAxis->setLabel(xlabel);
this->ui->customPlot->xAxis->setRange(0,21);
this->ui->customPlot->yAxis->setLabel(ylabel);
this->ui->customPlot->yAxis->setRange(ymin-0.1*ystep,ymax+0.1*ystep);
std::shared_ptr<QCPGraph> graph_ptr( this->ui->customPlot->addGraph());
graph_ptr->setName(graphName);
graph_ptr->setData(xs,ys);
QColor color=getNewColor();
graph_ptr->setPen(QPen(color)); // 设置当前 graph 的颜色
this->AddCustomPlotGraph(graph_ptr,ncname);
this->ui->customPlot->legend->setVisible(true);
this->ui->customPlot->replot();
}
void LAMPScatterManagerTool::RemoveCustomPlotData(QString graphname) {
for (int i = 0; i < this->ui->customPlot->graphCount(); ++i) {
QCPGraph *graph = this->ui->customPlot->graph(i);
if (graph->name() == graphname) {
this->ui->customPlot->removeGraph(i); // 删除该图形
this->ui->customPlot->replot(); // 刷新
break;
}
}
}
} // LAMPScatterTool

View File

@ -0,0 +1,107 @@
//
// Created by 30453 on 25-1-11.
//
#ifndef LAMPSCATTERMANAGERTOOL_H
#define LAMPSCATTERMANAGERTOOL_H
#include <qcustomplot.h>
#include <QMainWindow>
#include <QTreeWidget>
#include <QTreeWidgetItem>
#include <QStringList>
#include <QString>
#include "LAMPScatterS1B.h"
namespace LAMPScatterTool {
QT_BEGIN_NAMESPACE
namespace Ui {
class LAMPScatterManagerTool;
}
QT_END_NAMESPACE
class LAMPScatterS1BDataset;
/**
*
*/
enum SCATTER_S1B_NODETYPE {
SCATTER_S1B_NODETYPE_NCNODE_ROOT = 0,
SCATTER_S1B_NODETYPE_NCNODE_POLARNODE = 1,
SCATTER_S1B_NODETYPE_NCNODE_AZINCANGLENODE = 2,
};
/**
* S1B
*/
class LAMPScatterS1BNode : public QWidget {
Q_OBJECT
public:
LAMPScatterS1BNode(QWidget *parent, QTreeWidget *rootnode, QString ncfilepath);
~LAMPScatterS1BNode();
public:
QString getName();
QString getPath();
std::shared_ptr<LAMPScatterS1BRCSDataNode> getRCSDataNode(QString hasCodeName);
private:
QString ncfilepath; //netcdf 文件路径
QString ncfilename; // netcdf 文件文件
std::shared_ptr<LAMPScatterS1BDataset> dataset = nullptr;
private:
QTreeWidgetItem *NodeData = nullptr;
};
/**
* S1B
*/
class LAMPScatterManagerTool : public QMainWindow {
Q_OBJECT
public:
explicit LAMPScatterManagerTool(QWidget *parent = nullptr);
~LAMPScatterManagerTool() override;
public slots: // 加载NetCDF 数据
void actionScatterS1BOpenFile();
void actionCloseNodeFileTrigged();
void ShowTreeWidgetContextMenu(const QPoint &point);
private:
QTreeWidgetItem *LAMPScatterS1Brootnode;
QMap<QString,std::shared_ptr<LAMPScatterS1BNode>> LAMPScatterS1Bnodemap;
private:
Ui::LAMPScatterManagerTool *ui;
private: // 右键菜单
void InitTreeWidgetMenu();
std::shared_ptr<QMenu> AzIncNodeMenu=nullptr;
QTreeWidgetItem* currentSelectedItem=nullptr;
void RemoveNCNode(QTreeWidgetItem *node);
public slots: // 右键菜单事件
void onAzIncNode_action_ShowRCSDatadB_triggered();
void onAzIncNode_action_RemoveRCSData_triggered();
public:// 绘制图像
void ShowCustomPlotData(QVector<double> xs,QVector<double> ys,QString xlabel,QString ylabel,QString graphName,QString ncname);
void RemoveCustomPlotData(QString graphname);
void AddCustomPlotGraph(std::shared_ptr<QCPGraph>,QString ncname);
private:// 图像管理
QMap<QString, QVector<std::shared_ptr<QCPGraph>>> graphdict;
private:
int ColorhueOffset=0;
public:
QColor getNewColor();
};
} // LAMPScatterTool
#endif //LAMPSCATTERMANAGERTOOL_H

View File

@ -0,0 +1,95 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>LAMPScatterTool::LAMPScatterManagerTool</class>
<widget class="QMainWindow" name="LAMPScatterTool::LAMPScatterManagerTool">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>717</width>
<height>487</height>
</rect>
</property>
<property name="windowTitle">
<string>LAMPScatterManagerTool</string>
</property>
<widget class="QWidget" name="centralwidget">
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QCustomPlot" name="customPlot" native="true"/>
</item>
</layout>
</widget>
<widget class="QMenuBar" name="menubar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>717</width>
<height>22</height>
</rect>
</property>
<widget class="QMenu" name="menuLAMP">
<property name="title">
<string>文件</string>
</property>
<widget class="QMenu" name="menuOpen">
<property name="title">
<string>打开</string>
</property>
<addaction name="action_ScatterS1B"/>
</widget>
<addaction name="menuOpen"/>
<addaction name="actionCloseFileNode"/>
</widget>
<addaction name="menuLAMP"/>
</widget>
<widget class="QStatusBar" name="statusbar"/>
<widget class="QDockWidget" name="dockWidget">
<property name="windowTitle">
<string>散射数据</string>
</property>
<attribute name="dockWidgetArea">
<number>1</number>
</attribute>
<widget class="QWidget" name="dockWidgetContents">
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QTreeWidget" name="treeWidget">
<column>
<property name="text">
<string notr="true">数据节点</string>
</property>
</column>
</widget>
</item>
</layout>
</widget>
</widget>
<action name="action_ScatterS1B">
<property name="text">
<string>散射文件</string>
</property>
</action>
<action name="actionclose">
<property name="text">
<string>close</string>
</property>
</action>
<action name="actionCloseFileNode">
<property name="text">
<string>关闭</string>
</property>
</action>
</widget>
<customwidgets>
<customwidget>
<class>QCustomPlot</class>
<extends>QWidget</extends>
<header location="global">qcustomplot.h</header>
<container>1</container>
</customwidget>
</customwidgets>
<resources/>
<connections/>
</ui>