Adaptagrams
actioninfo.h
1 /*
2  * vim: ts=4 sw=4 et tw=0 wm=0
3  *
4  * libavoid - Fast, Incremental, Object-avoiding Line Router
5  *
6  * Copyright (C) 2004-2011 Monash University
7  *
8  * This library is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU Lesser General Public
10  * License as published by the Free Software Foundation; either
11  * version 2.1 of the License, or (at your option) any later version.
12  * See the file LICENSE.LGPL distributed with the library.
13  *
14  * Licensees holding a valid commercial license may use this file in
15  * accordance with the commercial license agreement provided with the
16  * library.
17  *
18  * This library is distributed in the hope that it will be useful,
19  * but WITHOUT ANY WARRANTY; without even the implied warranty of
20  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21  *
22  * Author(s): Michael Wybrow
23 */
24 
25 #ifndef AVOID_ACTIONINFO_H
26 #define AVOID_ACTIONINFO_H
27 
28 #include <list>
29 
30 #include "libavoid/actioninfo.h"
31 #include "libavoid/connend.h"
32 #include "libavoid/geomtypes.h"
33 
34 namespace Avoid {
35 
36 // This class is not intended for public use.
37 // It is used internally by Router to track actions performed on objects
38 // during transactions.
39 
40 
41 
42 class ShapeRef;
43 class JunctionRef;
44 
45 
46 enum ActionType {
47  ShapeMove,
48  ShapeAdd,
49  ShapeRemove,
50  JunctionMove,
51  JunctionAdd,
52  JunctionRemove,
53  ConnChange,
54  ConnectionPinChange
55 };
56 
57 typedef std::list<std::pair<unsigned int, ConnEnd> > ConnUpdateList;
58 
59 class ActionInfo {
60  public:
61  ActionInfo(ActionType t, ShapeRef *s, const Polygon& p, bool fM);
62  ActionInfo(ActionType t, ShapeRef *s);
63  ActionInfo(ActionType t, JunctionRef *j, const Point& p);
64  ActionInfo(ActionType t, JunctionRef *j);
65  ActionInfo(ActionType t, ConnRef *c);
66  ActionInfo(ActionType t, ShapeConnectionPin *p);
67  ~ActionInfo();
68  Obstacle *obstacle(void) const;
69  ShapeRef *shape(void) const;
70  ConnRef *conn(void) const;
71  JunctionRef *junction(void) const;
72  void addConnEndUpdate(const unsigned int type, const ConnEnd& connEnd,
73  bool isConnPinMoveUpdate);
74  bool operator==(const ActionInfo& rhs) const;
75  bool operator<(const ActionInfo& rhs) const;
76 
77  ActionType type;
78  void *objPtr;
79  Polygon newPoly;
80  Point newPosition;
81  bool firstMove;
82  ConnUpdateList conns;
83 };
84 typedef std::list<ActionInfo> ActionInfoList;
85 
86 
87 }
88 #endif
Contains the interface for various geometry types and classes.
Contains the interface for the ConnEnd class.
libavoid: Object-avoiding orthogonal and polyline connector routing library.
Definition: actioninfo.cpp:33