Tulip 5.7.1
Large graphs analysis and drawing
Loading...
Searching...
No Matches
BooleanProperty.h
1/*
2 *
3 * This file is part of Tulip (https://tulip.labri.fr)
4 *
5 * Authors: David Auber and the Tulip development Team
6 * from LaBRI, University of Bordeaux
7 *
8 * Tulip is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU Lesser General Public License
10 * as published by the Free Software Foundation, either version 3
11 * of the License, or (at your option) any later version.
12 *
13 * Tulip is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
16 * See the GNU General Public License for more details.
17 *
18 */
19
20#ifndef TULIP_SELECTION_H
21#define TULIP_SELECTION_H
22
23#include <tulip/PropertyTypes.h>
24#include <tulip/AbstractProperty.h>
25#include <tulip/PropertyAlgorithm.h>
26
27namespace tlp {
28
29class PropertyContext;
30
31/**
32 * @ingroup Graph
33 * @brief A graph property that maps a Boolean value to graph elements.
34 */
35class TLP_SCOPE BooleanProperty : public AbstractProperty<tlp::BooleanType, tlp::BooleanType> {
36public:
37 BooleanProperty(Graph *g, const std::string &n = "")
39 // PropertyInterface inherited methods
40 PropertyInterface *clonePrototype(Graph *, const std::string &) const override;
41 static const std::string propertyTypename;
42 const std::string &getTypename() const override {
43 return propertyTypename;
44 }
45 DEFINE_GET_CPP_CLASS_NAME;
46
47 /**
48 * Reverses all values associated to graph elements,
49 * i.e true => false, false => true.
50 * If sg is nullptr, the graph given when creating the property is considered.
51 */
52 void reverse(const Graph *sg = nullptr);
53
54 /**
55 * Reverses all the direction of edges of the visible graph
56 * which are true in this BooleanProperty.
57 * * If sg is nullptr, the graph given when creating the property is considered.
58 */
59 void reverseEdgeDirection(Graph *sg = nullptr);
60};
61
62/**
63 * @ingroup Graph
64 * @brief A graph property that maps a std::vector<bool> value to graph elements.
65 */
66class TLP_SCOPE BooleanVectorProperty
67 : public AbstractVectorProperty<tlp::BooleanVectorType, tlp::BooleanType> {
68public:
69 BooleanVectorProperty(Graph *g, const std::string &n = "")
70 : AbstractVectorProperty<BooleanVectorType, tlp::BooleanType>(g, n) {}
71 // PropertyInterface inherited methods
72 PropertyInterface *clonePrototype(Graph *, const std::string &) const override;
73 static const std::string propertyTypename;
74 const std::string &getTypename() const override {
75 return propertyTypename;
76 }
77 DEFINE_GET_CPP_CLASS_NAME;
78};
79} // namespace tlp
80
81#endif
This class extends upon PropertyInterface, and adds type-safe methods to get and set the node and edg...
A graph property that maps a Boolean value to graph elements.
void reverseEdgeDirection(Graph *sg=nullptr)
void reverse(const Graph *sg=nullptr)
const std::string & getTypename() const override
Gets a string describing the type of the property value (e.g. "graph", "double", "layout",...
PropertyInterface * clonePrototype(Graph *, const std::string &) const override
Creates a property of the same type (e.g. tlp::DoubleProperty) in the graph. The new property will no...
A graph property that maps a std::vector<bool> value to graph elements.
PropertyInterface * clonePrototype(Graph *, const std::string &) const override
Creates a property of the same type (e.g. tlp::DoubleProperty) in the graph. The new property will no...
const std::string & getTypename() const override
Gets a string describing the type of the property value (e.g. "graph", "double", "layout",...
PropertyInterface describes the interface of a graph property.