1 /**************************************************************************** 2 ** 3 ** Copyright (C) 2016 Jochen Becher 4 ** Contact: https://www.qt.io/licensing/ 5 ** 6 ** This file is part of Qt Creator. 7 ** 8 ** Commercial License Usage 9 ** Licensees holding valid commercial Qt licenses may use this file in 10 ** accordance with the commercial license agreement provided with the 11 ** Software or, alternatively, in accordance with the terms contained in 12 ** a written agreement between you and The Qt Company. For licensing terms 13 ** and conditions see https://www.qt.io/terms-conditions. For further 14 ** information use the contact form at https://www.qt.io/contact-us. 15 ** 16 ** GNU General Public License Usage 17 ** Alternatively, this file may be used under the terms of the GNU 18 ** General Public License version 3 as published by the Free Software 19 ** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT 20 ** included in the packaging of this file. Please review the following 21 ** information to ensure the GNU General Public License requirements will 22 ** be met: https://www.gnu.org/licenses/gpl-3.0.html. 23 ** 24 ****************************************************************************/ 25 26 #pragma once 27 28 #include "styleengine.h" 29 30 #include "qmt/diagram/dobject.h" 31 #include "qmt/diagram/dannotation.h" 32 33 #include <QHash> 34 35 QT_BEGIN_NAMESPACE 36 class QColor; 37 QT_END_NAMESPACE 38 39 namespace qmt { 40 41 class ObjectStyleKey; 42 class RelationStyleKey; 43 class AnnotationStyleKey; 44 class BoundaryStyleKey; 45 class SwimlaneStyleKey; 46 47 class QMT_EXPORT DefaultStyleEngine : public StyleEngine 48 { 49 Q_DISABLE_COPY(DefaultStyleEngine) 50 51 public: 52 DefaultStyleEngine(); 53 ~DefaultStyleEngine() override; 54 55 const Style *applyStyle(const Style *baseStyle, ElementType elementType, 56 const Parameters *parameters) override; 57 const Style *applyObjectStyle(const Style *baseStyle, ElementType elementType, 58 const ObjectVisuals &objectVisuals, 59 const Parameters *parameters) override; 60 const Style *applyObjectStyle(const Style *baseStyle, const StyledObject &styledObject, 61 const Parameters *parameters) override; 62 const Style *applyRelationStyle(const Style *baseStyle, const StyledRelation &styledRelation, 63 const Parameters *parameters) override; 64 const Style *applyAnnotationStyle(const Style *baseStyle, const DAnnotation *annotation, 65 const Parameters *parameters) override; 66 const Style *applyBoundaryStyle(const Style *baseStyle, const DBoundary *boundary, 67 const Parameters *parameters) override; 68 const Style *applySwimlaneStyle(const Style *baseStyle, const DSwimlane *swimlane, 69 const Parameters *parameters) override; 70 71 private: 72 const Style *applyAnnotationStyle(const Style *baseStyle, DAnnotation::VisualRole visualRole, 73 const Parameters *parameters); 74 const Style *applyBoundaryStyle(const Style *baseStyle, const Parameters *parameters); 75 const Style *applySwimlaneStyle(const Style *baseStyle, const Parameters *parameters); 76 77 ElementType objectType(const DObject *object); 78 79 bool areStackingRoles(DObject::VisualPrimaryRole rhsPrimaryRole, 80 DObject::VisualSecondaryRole rhsSecondaryRole, 81 DObject::VisualPrimaryRole lhsPrimaryRole, 82 DObject::VisualSecondaryRole lhsSecondaryRols); 83 84 QColor baseColor(ElementType elementType, ObjectVisuals objectVisuals); 85 QColor lineColor(ElementType elementType, const ObjectVisuals &objectVisuals); 86 QColor fillColor(ElementType elementType, const ObjectVisuals &objectVisuals); 87 QColor textColor(const DObject *object, int depth); 88 QColor textColor(ElementType elementType, const ObjectVisuals &objectVisuals); 89 90 QHash<ObjectStyleKey, const Style *> m_objectStyleMap; 91 QHash<RelationStyleKey, const Style *> m_relationStyleMap; 92 QHash<AnnotationStyleKey, const Style *> m_annotationStyleMap; 93 QHash<BoundaryStyleKey, const Style *> m_boundaryStyleMap; 94 QHash<SwimlaneStyleKey, const Style *> m_swimlaneStyleMap; 95 }; 96 97 } // namespace qmt 98