-
Notifications
You must be signed in to change notification settings - Fork 0
/
ApplicationManager.h
88 lines (69 loc) · 2.83 KB
/
ApplicationManager.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
77
78
79
80
81
82
83
84
85
86
87
88
#ifndef APPLICATION_MANAGER_H
#define APPLICATION_MANAGER_H
#include"Actions/Action.h"
#include "DEFS.h"
#include "Figures\CFigure.h"
#include "GUI\input.h"
#include "GUI\output.h"
//Main class that manages everything in the application.
class ApplicationManager
{
enum { MaxFigCount = 200 }; //Max no of figures
private:
Action* LastAction;
Action* RecordingList[20];
bool IsRecording;
bool IsPlaying;
int RecordingCount;
bool needtodraw;
int FigCount; //Actual number of figures
int CopiedFigCount; //Actual number of copied figures
CFigure* FigList[MaxFigCount]; //List of all figures (Array of pointers)
CFigure** CopiedFigList; //Copied List of all figures [Play Mode Operations]
CFigure* SelectedFig; //Pointer to the selected figure
//Pointers to Input and Output classes
Input *pIn;
Output *pOut;
public:
ApplicationManager();
~ApplicationManager();
// -- Action-Related Functions
//Reads the input command from the user and returns the corresponding action type
ActionType GetUserAction() const;
ActionType GetUserActionByPoint(int x, int y) const;
void ExecuteAction(ActionType); //Creates an action and executes it
void SetSelectedFigure(CFigure* pFig);
CFigure *GetPrevSelectFigure() const;
// -- Figures Management Functions
void AddFigure(CFigure* pFig); //Adds a new figure to the FigList
CFigure *GetFigure(int x, int y) const; //Search for a figure given a point inside the figure
CFigure *GetFigByIndex(int index) const; //Search for a figure given an index inside the figure list
void DeleteFig(int id, GUI_MODE mode = MODE_DRAW); //Delete the selected Figure
// -- Recording Actions
void AddAction(Action*last);
Action* GetAction();
void DeleteActionList();
bool GetRecording();
void SetRecording(bool b);
bool GetPlayRecording();
void SetPlayRecording(bool b);
void LoopRecording();
int GetRecordingCount();
void SaveAll(ofstream& SavedGraph);
void LoadAll(CFigure* NewFigs, ifstream& LoadedGraph);
void setneedtodraw();
void setFigCount(int n);
// -- Copying the original figList
void ApplicationManager::ExchangeList(bool PlayModeOn);
// -- Interface Management Functions
Input *GetInput() const; //Return pointer to the input
Output *GetOutput() const; //Return pointer to the output
int GetFigCount() const; //Return the number of figures
int GetFigTypeCount(TYPE t) const; // Return the number of figures of a specific type t
int GetFigFillColorCount(bool FilledOnly = false, color C = WHITE) const; //Return the number of figures of a specific color C
int GetFigTypeFillCount(TYPE t, color C) const; //Return the number of figures of a specific type t and color C
int GetCopiedFigCount() const; //Return the number of figures of a specific type t and color C
void UpdateInterface() const; //Redraws all the drawing window
void deleteAllFigures(); //Empty the FigList Array
};
#endif