xref: /haiku/src/add-ons/screen_savers/glife/GLifeState.h (revision 83b1a68c52ba3e0e8796282759f694b7fdddf06d)
1 /*
2  * Copyright 2012, Haiku, Inc.
3  * Distributed under the terms of the MIT License.
4  *
5  * Authors:
6  * 		Aaron Hill <serac@hillvisions.com>
7  */
8 #ifndef _GLIFE_GLIFESTATE_H
9 #define _GLIFE_GLIFESTATE_H
10 
11 
12 // Constants
13 const int32 kDefGridWidth = 60;
14 const int32 kDefGridHeight = 40;
15 const int32 kDefGridBorder = 0;
16 const int32 kDefGridDelay = 2;
17 
18 
19 // GLifeState Class Declaration & Definition
20 class GLifeState
21 {
22 private:
23 	int32	fGridWidth;
24 	int32	fGridHeight;
25 	int32	fGridBorder;
26 	int32	fGridDelay;
27 
28 public:
29 	// Constructor
30 				GLifeState( void ) : fGridWidth(kDefGridWidth),
31 									 fGridHeight(kDefGridHeight),
32 									 fGridBorder(kDefGridBorder),
33 									 fGridDelay(kDefGridDelay) { };
34 
35 	// Save/Restore State Methods
36 	status_t SaveState(BMessage* pbmPrefs) const {
37 		// Store current preferences
38 		pbmPrefs->AddInt32("gridWidth", fGridWidth);
39 		pbmPrefs->AddInt32("gridHeight", fGridHeight);
40 		pbmPrefs->AddInt32("gridBorder", fGridBorder);
41 		pbmPrefs->AddInt32("gridDelay", fGridDelay);
42 
43 		return B_OK;
44 	};
45 
46 	void RestoreState( BMessage* pbmPrefs )
47 	{
48 		// Retrieve preferences, substituting defaults
49 		if (pbmPrefs->FindInt32("gridWidth", &fGridWidth) != B_OK)
50 			fGridWidth = kDefGridWidth;
51 		if (pbmPrefs->FindInt32("gridHeight", &fGridHeight) != B_OK)
52 			fGridHeight = kDefGridHeight;
53 		if (pbmPrefs->FindInt32("gridBorder", &fGridBorder) != B_OK)
54 			fGridBorder = kDefGridBorder;
55 		if (pbmPrefs->FindInt32("gridDelay", &fGridDelay) != B_OK)
56 			fGridDelay = kDefGridDelay;
57 	};
58 
59 	// Accessor Methods
60 	int32&		GridWidth(void) { return fGridWidth; };
61 	int32&		GridHeight(void) { return fGridHeight; };
62 	int32&		GridBorder(void) { return fGridBorder; };
63 	int32&		GridDelay(void) { return fGridDelay; };
64 };
65 
66 
67 #endif /* _GLIFE_GLIFESTATE_H */
68