xref: /haiku/src/apps/pairs/PairsView.h (revision fdc055299718951a44e0fcd2dce7cda075190eec)
169e62e48SStephan Aßmus /*
24c587adeSStephan Aßmus  * Copyright 2008 Ralf Schülke, ralf.schuelke@googlemail.com.
34c587adeSStephan Aßmus  * Copyright 2010 Adam Smith <adamd.smith@utoronto.ca>
4c6b0a589SJohn Scipione  * Copyright 2014 Haiku, Inc. All rights reserved.
5c6b0a589SJohn Scipione  *
6c6b0a589SJohn Scipione  * Distributed under the terms of the MIT License.
7c6b0a589SJohn Scipione  *
8c6b0a589SJohn Scipione  * Authors:
9*fdc05529SJohn Scipione  *		Ralf Schülke, ralf.schuelke@googlemail.com
10c6b0a589SJohn Scipione  *		John Scipione, jscipione@gmail.com
11*fdc05529SJohn Scipione  *		Adam Smith, adamd.smith@utoronto.ca
1269e62e48SStephan Aßmus  */
1369e62e48SStephan Aßmus #ifndef PAIRS_VIEW_H
1469e62e48SStephan Aßmus #define PAIRS_VIEW_H
1569e62e48SStephan Aßmus 
1669e62e48SStephan Aßmus 
1797e1b053SJohn Scipione #include <ObjectList.h>
1869e62e48SStephan Aßmus #include <View.h>
190eb592d7SAxel Dörfler 
200eb592d7SAxel Dörfler 
2197e1b053SJohn Scipione const uint8 kSmallIconSize = 32;
2297e1b053SJohn Scipione const uint8 kMediumIconSize = 64;
2397e1b053SJohn Scipione const uint8 kLargeIconSize = 128;
2497e1b053SJohn Scipione 
2597e1b053SJohn Scipione const uint32 kMsgCardButton = 'card';
2697e1b053SJohn Scipione 
2797e1b053SJohn Scipione 
2897e1b053SJohn Scipione class BBitmap;
2997e1b053SJohn Scipione class PairsButton;
3097e1b053SJohn Scipione 
3169e62e48SStephan Aßmus 
3269e62e48SStephan Aßmus class PairsView : public BView {
3369e62e48SStephan Aßmus public:
3469e62e48SStephan Aßmus 								PairsView(BRect frame, const char* name,
3597e1b053SJohn Scipione 									uint8 rows, uint8 cols, uint8 iconSize);
3669e62e48SStephan Aßmus 
3769e62e48SStephan Aßmus 	virtual						~PairsView();
3869e62e48SStephan Aßmus 	virtual	void				AttachedToWindow();
3969e62e48SStephan Aßmus 	virtual	void				Draw(BRect updateRect);
4097e1b053SJohn Scipione 	virtual	void				FrameResized(float newWidth, float newHeight);
4197e1b053SJohn Scipione 
4269e62e48SStephan Aßmus 	virtual	void				CreateGameBoard();
4369e62e48SStephan Aßmus 
Rows()4497e1b053SJohn Scipione 			int32				Rows() const { return fRows; };
Cols()4597e1b053SJohn Scipione 			int32				Cols() const { return fCols; };
PairsButtonList()4697e1b053SJohn Scipione 	BObjectList<PairsButton>*	PairsButtonList() const
4797e1b053SJohn Scipione 									{ return fPairsButtonList; };
484c587adeSStephan Aßmus 
4997e1b053SJohn Scipione 			int32				GetIconPosition(int32 index);
5097e1b053SJohn Scipione 
IconSize()5197e1b053SJohn Scipione 			int32				IconSize() const { return fIconSize; };
SetIconSize(int32 size)5297e1b053SJohn Scipione 			void				SetIconSize(int32 size) { fIconSize = size; };
5397e1b053SJohn Scipione 
Spacing()5497e1b053SJohn Scipione 			int32				Spacing() const { return fIconSize / 6; };
5569e62e48SStephan Aßmus 
5669e62e48SStephan Aßmus private:
5797e1b053SJohn Scipione 			void				_GenerateCardPositions();
58cb2afe5cSStephan Aßmus 			void				_ReadRandomIcons();
5997e1b053SJohn Scipione 			void				_SetPairsBoard();
6097e1b053SJohn Scipione 			void				_SetPositions();
6169e62e48SStephan Aßmus 
6297e1b053SJohn Scipione 			uint8				fRows;
6397e1b053SJohn Scipione 			uint8				fCols;
6497e1b053SJohn Scipione 			uint8				fIconSize;
6597e1b053SJohn Scipione 			int32				fButtonsCount;
6697e1b053SJohn Scipione 			int32				fCardsCount;
6797e1b053SJohn Scipione 	BObjectList<PairsButton>*	fPairsButtonList;
6897e1b053SJohn Scipione 	BObjectList<BBitmap>*		fSmallBitmapsList;
6997e1b053SJohn Scipione 	BObjectList<BBitmap>*		fMediumBitmapsList;
7097e1b053SJohn Scipione 	BObjectList<BBitmap>*		fLargeBitmapsList;
7197e1b053SJohn Scipione 			int32*				fRandomPosition;
7297e1b053SJohn Scipione 			int32*				fPositionX;
7397e1b053SJohn Scipione 			int32*				fPositionY;
7469e62e48SStephan Aßmus };
7569e62e48SStephan Aßmus 
7669e62e48SStephan Aßmus 
7769e62e48SStephan Aßmus #endif	// PAIRS_VIEW_H
78