-
Notifications
You must be signed in to change notification settings - Fork 156
/
HLStateInt.h
76 lines (67 loc) · 2.79 KB
/
HLStateInt.h
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
/**
* GeoDa TM, Copyright (C) 2011-2015 by Luc Anselin - all rights reserved
*
* This file is part of GeoDa.
*
* GeoDa is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* GeoDa 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. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef __GEODA_CENTER_HL_STATE_INT_H__
#define __GEODA_CENTER_HL_STATE_INT_H__
#include <vector>
#include <list>
#include <wx/string.h>
class HighlightStateObserver;
/**
An instance of this class models the linked highlight state of all
observations in the current project. This is the means by which
all of the views in GeoDa are linked. All children of TemplateCanvas can
be Observers of the HightlightState Observable class. To be notified of
state changes, an Observable registers itself by calling the
registerObserver(Observer*) method. The notifyObservers() method notifies
all registered Observers of state changes.
*/
class HLStateInt {
public:
enum EventType {
empty, // an empty event, observers should not be notified
delta, // check both newly_highlighted and newly_unhighlighted
unhighlight_all, // unhighlight everything
invert, // flip highlight state for all observations
transparency // transparency change
};
/** Signal that HighlightState should be closed, but wait until
all observers have deregistered themselves. */
virtual void closeAndDeleteWhenEmpty() = 0;
virtual void SetSize(int n) = 0;
virtual std::vector<bool>& GetHighlight() = 0;
virtual std::vector<int>& GetNewlyHighlighted() = 0;
virtual std::vector<int>& GetNewlyUnhighlighted() = 0;
virtual int GetHighlightSize() = 0;
virtual int GetTotalNewlyHighlighted() = 0;
virtual int GetTotalNewlyUnhighlighted() = 0;
virtual void SetTotalNewlyHighlighted(int n) = 0;
virtual void SetTotalNewlyUnhighlighted(int n) = 0;
virtual bool IsHighlighted(int obs) = 0;
virtual EventType GetEventType() = 0;
virtual wxString GetEventTypeStr() = 0;
virtual void SetEventType( EventType e ) = 0;
virtual int GetTotalHighlighted() = 0;
virtual void SetTotalHighlighted(int n) = 0;
virtual void registerObserver(HighlightStateObserver* o) = 0;
virtual void removeObserver(HighlightStateObserver* o) = 0;
virtual void notifyObservers() = 0;
/** Notify all observers excluding exclude. */
virtual void notifyObservers(HighlightStateObserver* exclude) = 0;
};
#endif