From 72d4c0b51ab6c8f218fc737f16d5248566c934cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacob=20St=C3=B8ren?= Date: Tue, 25 Jun 2019 16:42:38 +0200 Subject: [PATCH] AppFwk: Added pdm field of cvf::Mat3d --- Fwk/AppFwk/cafPdmCvf/CMakeLists.txt | 10 +++ .../cafPdmCvf/cafPdmMat3d/cafPdmCoreMat3d.h | 82 ++++++++++++++++++ .../cafPdmMat3d/cafPdmFieldCvfMat3d.h | 41 +++++++++ .../cafPdmCvf/cafPdmMat3d/cafPdmUiCoreMat3d.h | 85 +++++++++++++++++++ .../cafPdmCvf/cafPdmMat3d/cafPdmXmlMat3d.cpp | 70 +++++++++++++++ .../cafPdmCvf/cafPdmMat3d/cafPdmXmlMat3d.h | 45 ++++++++++ 6 files changed, 333 insertions(+) create mode 100644 Fwk/AppFwk/cafPdmCvf/cafPdmMat3d/cafPdmCoreMat3d.h create mode 100644 Fwk/AppFwk/cafPdmCvf/cafPdmMat3d/cafPdmFieldCvfMat3d.h create mode 100644 Fwk/AppFwk/cafPdmCvf/cafPdmMat3d/cafPdmUiCoreMat3d.h create mode 100644 Fwk/AppFwk/cafPdmCvf/cafPdmMat3d/cafPdmXmlMat3d.cpp create mode 100644 Fwk/AppFwk/cafPdmCvf/cafPdmMat3d/cafPdmXmlMat3d.h diff --git a/Fwk/AppFwk/cafPdmCvf/CMakeLists.txt b/Fwk/AppFwk/cafPdmCvf/CMakeLists.txt index c591101321..04379861f7 100644 --- a/Fwk/AppFwk/cafPdmCvf/CMakeLists.txt +++ b/Fwk/AppFwk/cafPdmCvf/CMakeLists.txt @@ -36,11 +36,21 @@ add_library( ${PROJECT_NAME} cafPdmXmlMat4d.cpp cafPdmXmlMat4d.h cafPdmFieldCvfMat4d.h + + cafPdmMat3d/cafPdmCoreMat3d.h + cafPdmMat3d/cafPdmUiCoreMat3d.h + cafPdmMat3d/cafPdmXmlMat3d.cpp + cafPdmMat3d/cafPdmXmlMat3d.h + cafPdmMat3d/cafPdmFieldCvfMat3d.h + + ${MOC_HEADER_FILES} + ${MOC_SOURCE_FILES} ) target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} + ${CMAKE_CURRENT_SOURCE_DIR}/cafPdmMat3d ) target_link_libraries ( ${PROJECT_NAME} diff --git a/Fwk/AppFwk/cafPdmCvf/cafPdmMat3d/cafPdmCoreMat3d.h b/Fwk/AppFwk/cafPdmCvf/cafPdmMat3d/cafPdmCoreMat3d.h new file mode 100644 index 0000000000..031756f2a8 --- /dev/null +++ b/Fwk/AppFwk/cafPdmCvf/cafPdmMat3d/cafPdmCoreMat3d.h @@ -0,0 +1,82 @@ +//################################################################################################## +// +// Custom Visualization Core library +// Copyright (C) Ceetron Solutions AS +// +// This library may be used under the terms of either the GNU General Public License or +// the GNU Lesser General Public License as follows: +// +// GNU General Public License Usage +// This library is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, but WITHOUT ANY +// WARRANTY; without even the implied warranty of MERCHANTABILITY or +// FITNESS FOR A PARTICULAR PURPOSE. +// +// See the GNU General Public License at <> +// for more details. +// +// GNU Lesser General Public License Usage +// This library is free software; you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation; either version 2.1 of the License, or +// (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, but WITHOUT ANY +// WARRANTY; without even the implied warranty of MERCHANTABILITY or +// FITNESS FOR A PARTICULAR PURPOSE. +// +// See the GNU Lesser General Public License at <> +// for more details. +// +//################################################################################################## + +#pragma once + +#include "cvfBase.h" +#include "cvfMatrix3.h" + +#include "cafInternalPdmValueFieldSpecializations.h" + +#include "cafPdmXmlMat3d.h" + + +namespace caf +{ + +template <> +class PdmValueFieldSpecialization < cvf::Mat3d > +{ +public: + /// Convert the field value into a QVariant + static QVariant convert(const cvf::Mat3d& value) + { + QString str; + + QTextStream textStream(&str); + textStream << value; + + return QVariant(str); + } + + /// Set the field value from a QVariant + static void setFromVariant(const QVariant& variantValue, cvf::Mat3d& value) + { + QString str = variantValue.toString(); + + QTextStream textStream(&str); + + textStream >> value; + } + + static bool isEqual(const QVariant& variantValue, const QVariant& variantValue2) + { + return variantValue == variantValue2; + } +}; + + +} // end namespace caf diff --git a/Fwk/AppFwk/cafPdmCvf/cafPdmMat3d/cafPdmFieldCvfMat3d.h b/Fwk/AppFwk/cafPdmCvf/cafPdmMat3d/cafPdmFieldCvfMat3d.h new file mode 100644 index 0000000000..f4b2f21e8d --- /dev/null +++ b/Fwk/AppFwk/cafPdmCvf/cafPdmMat3d/cafPdmFieldCvfMat3d.h @@ -0,0 +1,41 @@ +//################################################################################################## +// +// Custom Visualization Core library +// Copyright (C) Ceetron Solutions AS +// +// This library may be used under the terms of either the GNU General Public License or +// the GNU Lesser General Public License as follows: +// +// GNU General Public License Usage +// This library is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, but WITHOUT ANY +// WARRANTY; without even the implied warranty of MERCHANTABILITY or +// FITNESS FOR A PARTICULAR PURPOSE. +// +// See the GNU General Public License at <> +// for more details. +// +// GNU Lesser General Public License Usage +// This library is free software; you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation; either version 2.1 of the License, or +// (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, but WITHOUT ANY +// WARRANTY; without even the implied warranty of MERCHANTABILITY or +// FITNESS FOR A PARTICULAR PURPOSE. +// +// See the GNU Lesser General Public License at <> +// for more details. +// +//################################################################################################## + +#pragma once + +#include "cafPdmCoreMat3d.h" +#include "cafPdmXmlMat3d.h" +#include "cafPdmUiCoreMat3d.h" diff --git a/Fwk/AppFwk/cafPdmCvf/cafPdmMat3d/cafPdmUiCoreMat3d.h b/Fwk/AppFwk/cafPdmCvf/cafPdmMat3d/cafPdmUiCoreMat3d.h new file mode 100644 index 0000000000..a2bfe89828 --- /dev/null +++ b/Fwk/AppFwk/cafPdmCvf/cafPdmMat3d/cafPdmUiCoreMat3d.h @@ -0,0 +1,85 @@ +//################################################################################################## +// +// Custom Visualization Core library +// Copyright (C) Ceetron Solutions AS +// +// This library may be used under the terms of either the GNU General Public License or +// the GNU Lesser General Public License as follows: +// +// GNU General Public License Usage +// This library is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, but WITHOUT ANY +// WARRANTY; without even the implied warranty of MERCHANTABILITY or +// FITNESS FOR A PARTICULAR PURPOSE. +// +// See the GNU General Public License at <> +// for more details. +// +// GNU Lesser General Public License Usage +// This library is free software; you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation; either version 2.1 of the License, or +// (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, but WITHOUT ANY +// WARRANTY; without even the implied warranty of MERCHANTABILITY or +// FITNESS FOR A PARTICULAR PURPOSE. +// +// See the GNU Lesser General Public License at <> +// for more details. +// +//################################################################################################## + +#pragma once + +#include "cafPdmCoreMat3d.h" + +#include "cafInternalPdmValueFieldSpecializations.h" +#include "cafPdmUiFieldSpecialization.h" +#include "cafPdmUiItem.h" + +#include "cvfBase.h" +#include "cvfMatrix3.h" + +namespace caf +{ + +template <> +class PdmUiFieldSpecialization < cvf::Mat3d > +{ +public: + /// Convert the field value into a QVariant + static QVariant convert(const cvf::Mat3d& value) + { + return PdmValueFieldSpecialization< cvf::Mat3d >::convert(value); + } + + /// Set the field value from a QVariant + static void setFromVariant(const QVariant& variantValue, cvf::Mat3d& value) + { + PdmValueFieldSpecialization< cvf::Mat3d >::setFromVariant(variantValue, value); + } + + static bool isDataElementEqual(const QVariant& variantValue, const QVariant& variantValue2) + { + return PdmValueFieldSpecialization< cvf::Mat3d >::isEqual(variantValue, variantValue2); + } + + /// Methods to get a list of options for a field, specialized for AppEnum + static QList valueOptions(bool* useOptionsOnly, const cvf::Mat3d&) + { + return QList(); + } + + /// Methods to retrieve the possible PdmObject pointed to by a field + static void childObjects(const PdmDataValueField< cvf::Mat3d >&, std::vector*) + { } + +}; + +} // end namespace caf + diff --git a/Fwk/AppFwk/cafPdmCvf/cafPdmMat3d/cafPdmXmlMat3d.cpp b/Fwk/AppFwk/cafPdmCvf/cafPdmMat3d/cafPdmXmlMat3d.cpp new file mode 100644 index 0000000000..8c97f26de9 --- /dev/null +++ b/Fwk/AppFwk/cafPdmCvf/cafPdmMat3d/cafPdmXmlMat3d.cpp @@ -0,0 +1,70 @@ +//################################################################################################## +// +// Custom Visualization Core library +// Copyright (C) Ceetron Solutions AS +// +// This library may be used under the terms of either the GNU General Public License or +// the GNU Lesser General Public License as follows: +// +// GNU General Public License Usage +// This library is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, but WITHOUT ANY +// WARRANTY; without even the implied warranty of MERCHANTABILITY or +// FITNESS FOR A PARTICULAR PURPOSE. +// +// See the GNU General Public License at <> +// for more details. +// +// GNU Lesser General Public License Usage +// This library is free software; you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation; either version 2.1 of the License, or +// (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, but WITHOUT ANY +// WARRANTY; without even the implied warranty of MERCHANTABILITY or +// FITNESS FOR A PARTICULAR PURPOSE. +// +// See the GNU Lesser General Public License at <> +// for more details. +// +//################################################################################################## + +#include "cafPdmXmlMat3d.h" + +#include + +QTextStream& operator >> (QTextStream& str, cvf::Mat3d& value) +{ + for (int r = 0; r < 3; ++r) + { + for (int c = 0; c < 3; ++c) + { + str >> value(r, c); + } + } + + return str; +} + +QTextStream& operator << (QTextStream& str, const cvf::Mat3d& value) +{ + for (int r = 0; r < 3; ++r) + { + for (int c = 0; c < 3; ++c) + { + str << value(r, c); + + if (r * c < 9) + { + str << " "; + } + } + } + + return str; +} diff --git a/Fwk/AppFwk/cafPdmCvf/cafPdmMat3d/cafPdmXmlMat3d.h b/Fwk/AppFwk/cafPdmCvf/cafPdmMat3d/cafPdmXmlMat3d.h new file mode 100644 index 0000000000..d84859f0ca --- /dev/null +++ b/Fwk/AppFwk/cafPdmCvf/cafPdmMat3d/cafPdmXmlMat3d.h @@ -0,0 +1,45 @@ +//################################################################################################## +// +// Custom Visualization Core library +// Copyright (C) Ceetron Solutions AS +// +// This library may be used under the terms of either the GNU General Public License or +// the GNU Lesser General Public License as follows: +// +// GNU General Public License Usage +// This library is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, but WITHOUT ANY +// WARRANTY; without even the implied warranty of MERCHANTABILITY or +// FITNESS FOR A PARTICULAR PURPOSE. +// +// See the GNU General Public License at <> +// for more details. +// +// GNU Lesser General Public License Usage +// This library is free software; you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation; either version 2.1 of the License, or +// (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, but WITHOUT ANY +// WARRANTY; without even the implied warranty of MERCHANTABILITY or +// FITNESS FOR A PARTICULAR PURPOSE. +// +// See the GNU Lesser General Public License at <> +// for more details. +// +//################################################################################################## + +#pragma once + +#include "cvfBase.h" +#include "cvfMatrix3.h" + +class QTextStream; + +QTextStream& operator >> (QTextStream& str, cvf::Mat3d& value); +QTextStream& operator << (QTextStream& str, const cvf::Mat3d& value);