blob: c5670d3ffdfdea754619ea4913711a902ff0516e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
|
// Copyright (C) 2016 Jochen Becher
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
#include "sceneinspector.h"
#include "qmt/diagram_scene/diagramsceneconstants.h"
#include "qmt/diagram_scene/diagramscenemodel.h"
#include "qmt/diagram_scene/capabilities/moveable.h"
#include "qmt/diagram_scene/capabilities/resizable.h"
#include "qmt/diagram_ui/diagramsmanager.h"
#include "qmt/infrastructure/qmtassert.h"
#include <QSizeF>
#include <QGraphicsItem>
namespace qmt {
SceneInspector::SceneInspector(QObject *parent)
: QObject(parent)
{
}
SceneInspector::~SceneInspector()
{
}
void SceneInspector::setDiagramsManager(DiagramsManager *diagramsManager)
{
m_diagramsManager = diagramsManager;
}
QSizeF SceneInspector::rasterSize() const
{
return QSizeF(RASTER_WIDTH, RASTER_HEIGHT);
}
QSizeF SceneInspector::minimalSize(const DElement *element, const MDiagram *diagram) const
{
DiagramSceneModel *diagramSceneModel = m_diagramsManager->diagramSceneModel(diagram);
QMT_CHECK(diagramSceneModel);
if (diagramSceneModel) {
const QGraphicsItem *item = diagramSceneModel->graphicsItem(const_cast<DElement *>(element));
QMT_CHECK(item);
if (item) {
if (auto resizable = dynamic_cast<const IResizable *>(item))
return resizable->minimumSize();
}
}
QMT_CHECK(false);
return QSizeF();
}
IMoveable *SceneInspector::moveable(const DElement *element, const MDiagram *diagram) const
{
DiagramSceneModel *diagramSceneModel = m_diagramsManager->diagramSceneModel(diagram);
QMT_CHECK(diagramSceneModel);
if (diagramSceneModel) {
QGraphicsItem *item = diagramSceneModel->graphicsItem(const_cast<DElement *>(element));
QMT_CHECK(item);
if (item) {
if (auto moveable = dynamic_cast<IMoveable *>(item))
return moveable;
}
}
QMT_CHECK(false);
return nullptr;
}
IResizable *SceneInspector::resizable(const DElement *element, const MDiagram *diagram) const
{
DiagramSceneModel *diagramSceneModel = m_diagramsManager->diagramSceneModel(diagram);
QMT_CHECK(diagramSceneModel);
if (diagramSceneModel) {
QGraphicsItem *item = diagramSceneModel->graphicsItem(const_cast<DElement *>(element));
QMT_CHECK(item);
if (item) {
if (auto resizeable = dynamic_cast<IResizable *>(item))
return resizeable;
}
}
QMT_CHECK(false);
return nullptr;
}
} // namespace qmt
|