summaryrefslogtreecommitdiffstats
path: root/src/libavoid/junction.h
diff options
context:
space:
mode:
authorMarc Jeanmougin <marc.jeanmougin@telecom-paristech.fr>2018-04-29 14:25:32 +0000
committerMarc Jeanmougin <marc.jeanmougin@telecom-paristech.fr>2018-04-29 14:25:32 +0000
commitab5f8ff5869021958f4ae8b838c3d707a2e85eaa (patch)
tree4907675828a5401d013b7587538cc8541edd2764 /src/libavoid/junction.h
parentmoved libcroco, libuemf, libdepixelize to 3rdparty folder (diff)
downloadinkscape-ab5f8ff5869021958f4ae8b838c3d707a2e85eaa.tar.gz
inkscape-ab5f8ff5869021958f4ae8b838c3d707a2e85eaa.zip
Put adaptagrams into its own folder
Diffstat (limited to 'src/libavoid/junction.h')
-rw-r--r--src/libavoid/junction.h197
1 files changed, 0 insertions, 197 deletions
diff --git a/src/libavoid/junction.h b/src/libavoid/junction.h
deleted file mode 100644
index ed73fac34..000000000
--- a/src/libavoid/junction.h
+++ /dev/null
@@ -1,197 +0,0 @@
-/*
- * vim: ts=4 sw=4 et tw=0 wm=0
- *
- * libavoid - Fast, Incremental, Object-avoiding Line Router
- *
- * Copyright (C) 2010-2015 Monash University
- *
- * 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.
- * See the file LICENSE.LGPL distributed with the library.
- *
- * Licensees holding a valid commercial license may use this file in
- * accordance with the commercial license agreement provided with the
- * library.
- *
- * 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.
- *
- * Author(s): Michael Wybrow
-*/
-
-//! @file junction.h
-//! @brief Contains the interface for the JunctionRef class.
-
-
-#ifndef AVOID_JUNCTION_H
-#define AVOID_JUNCTION_H
-
-#include <list>
-#include <set>
-
-#include "libavoid/geomtypes.h"
-#include "libavoid/obstacle.h"
-#include "libavoid/dllexport.h"
-
-namespace Avoid {
-
-class Router;
-class VertInf;
-class ConnEnd;
-class ConnRef;
-class ShapeConnectionPin;
-class JunctionRef;
-typedef std::list<JunctionRef *> JunctionRefList;
-
-
-//! @brief The JunctionRef class represents a fixed or free-floating point that
-//! connectors can be attached to.
-//!
-//! A JunctionRef represents a junction between multiple connectors, or could
-//! be used to specify an intermediate point that a single connector must route
-//! through.
-//!
-class AVOID_EXPORT JunctionRef : public Obstacle
-{
- public:
- //! @brief Junction reference constructor.
- //!
- //! Creates a junction object reference, and adds it to the router
- //! scene. This junction will be considered to be an obstacle.
- //! This will cause connectors intersecting the newly added junction
- //! to be marked as needing to be rerouted.
- //!
- //! If the router is using transactions, then changes will occur
- //! the next time Router::processTransaction() is called. See
- //! Router::setTransactionUse() for more information.
- //!
- //! The junction can be moved with Router::moveJunction() and removed
- //! from the scene and freed with Router::deleteJunction().
- //!
- //! libavoid expects junctions to have sensible positions (i.e.,
- //! for junctions to be positioned outside of shapes). When routing
- //! it will simplify hyperedges by moving junctions while preserving
- //! hyperedge topology, i.e., not altering the sides of shapes the
- //! hyperedge routes around.
- //!
- //! If you don't have sensible positions for junctions or want to
- //! disregard the junction position and reroute the entire hyperedge
- //! considering only the endpoints, then this can be achieved by
- //! registering the hyperedge with the HyperedgeRerouter class
- //! obtained by calling the Router::hyperedgeRerouter() method.
- //!
- //! When the improveHyperedgeRoutesMovingJunctions router option is
- //! set (the default) the junction position is a suggestion used for
- //! initial routing, but subsequent hyperedge path improvement may
- //! suggest new junction positions for the updated routings. This
- //! position can be accessed via the recommendedPosition() method.
- //!
- //! When the improveHyperedgeRoutesMovingAddingAndDeletingJunctions
- //! router option is set (not the default) junctions and connectors
- //! can be added or removed to further improve hyperedges, see also
- //! Router::newAndDeletedObjectListsFromHyperedgeImprovement().
- //!
- //! @note Regarding IDs:
- //! You can let libavoid manually handle IDs by not specifying
- //! them. Alternatively, you can specify all IDs yourself, but
- //! you must be careful to makes sure that each object in the
- //! scene (shape, connector, cluster, etc.) is given a unique,
- //! positive ID. This uniqueness is checked if assertions are
- //! enabled, but if not and there are clashes then strange
- //! things can happen.
- //!
- //! @param[in] router The router scene to place the junction into.
- //! @param[in] position A Point representing the position of the
- //! junction.
- //! @param[in] id Optionally, a positive integer ID unique
- //! among all objects.
- //!
- JunctionRef(Router *router, Point position, const unsigned int id = 0);
-
-// To prevent C++ objects from being destroyed in garbage collected languages
-// when the libraries are called from SWIG, we hide the declarations of the
-// destructors and prevent generation of default destructors.
-#ifndef SWIG
- //! @brief Junction reference destructor.
- //!
- //! Do not call this yourself, instead call Router::deleteJunction().
- //! Ownership of this object belongs to the router scene.
- virtual ~JunctionRef();
-#endif
-
- //! @brief Removes a junction that has only two connectors attached
- //! to it and merges them into a single connector.
- //!
- //! The junction and one of the connectors will be removed from the
- //! router scene and the connector deleted. A pointer to the
- //! remaining (merged) connector will be returned by this method.
- //!
- //! Currently this method does not delete and free the Junction itself.
- //! The user needs to do this after the transaction has been
- //! processed by the router.
- //!
- //! If there are more than two connectors attached to the junction
- //! then nothing will be changed and this method will return NULL.
- //!
- //! @return The merged connector, or NULL if the junction was not
- //! removed.
- ConnRef *removeJunctionAndMergeConnectors(void);
-
- //! @brief Returns the position of this junction.
- //! @returns A point representing the position of this junction.
- Point position(void) const;
-
- //! @brief Sets whether the junction has a fixed position and
- //! therefore can't be moved by the Router during routing.
- //!
- //! This property is ignored for hyperedge improvement if the option
- //! improveHyperedgeRoutesMovingAddingAndDeletingJunctions is set and
- //! when it would lead to confusing hyperedge topology, such as two
- //! overlapping junctions with a zero length connector between them
- //! or an unnecessary junction bridging two connectors.
- //!
- //! @param[in] fixed Boolean indicating whether the junction position
- //! should be marked as fixed.
- void setPositionFixed(bool fixed);
-
- //! @brief Returns whether this junction has a fixed position (that
- //! can't be moved by the Router during routing).
- //! @returns A point representing the position of this junction.
- bool positionFixed(void) const;
-
- //! @brief Returns a recommended position for the junction based on
- //! improving hyperedge routes. This value will be set during
- //! routing when the improveHyperedgeRoutesMovingJunctions
- //! router option is set (the default).
- //! @returns A point indicating the ideal position for this junction.
- Point recommendedPosition(void) const;
-
- Rectangle makeRectangle(Router *router, const Point& position);
- void preferOrthogonalDimension(const size_t dim);
-
- private:
- friend class Router;
- friend class ShapeConnectionPin;
- friend class ConnEnd;
- friend class HyperedgeImprover;
-
- void outputCode(FILE *fp) const;
- void setPosition(const Point& position);
- void setRecommendedPosition(const Point& position);
- void moveAttachedConns(const Point& newPosition);
-
- Point m_position;
- Point m_recommended_position;
- bool m_position_fixed;
-};
-
-
-}
-
-
-#endif
-
-