xref: /haiku/src/apps/patchbay/PatchView.h (revision ed24eb5ff12640d052171c6a7feba37fab8a75d1)
1 /* PatchView.h
2  * -----------
3  * The main PatchBay view contains a row of icons along the top and
4  * left sides representing available consumers and producers, and
5  * a set of PatchRows which build the matrix of connections.
6  *
7  * Copyright 2013, Haiku, Inc. All rights reserved.
8  * Distributed under the terms of the MIT License.
9  *
10  * Revisions by Pete Goodeve
11  *
12  * Copyright 1999, Be Incorporated.   All Rights Reserved.
13  * This file may be used under the terms of the Be Sample Code License.
14  */
15 #ifndef PATCHVIEW_H
16 #define PATCHVIEW_H
17 
18 #include <Rect.h>
19 #include <View.h>
20 #include <list>
21 
22 #include "EndpointInfo.h"
23 
24 class PatchRow;
25 class BBitmap;
26 
27 using namespace std;
28 
29 class PatchView : public BView
30 {
31 public:
32 	PatchView(BRect r);
33 	~PatchView();
34 
35 	void AttachedToWindow();
36 	void MessageReceived(BMessage* msg);
37 	void Draw(BRect updateRect);
38 
39 private:
40 	typedef enum {
41 		TRACK_COLUMN,
42 		TRACK_ROW
43 	} track_type;
44 
45 	BRect ColumnIconFrameAt(int32 index) const;
46 	BRect RowIconFrameAt(int32 index) const;
47 	virtual bool GetToolTipAt(BPoint point, BToolTip** tip);
48 
49 	void AddProducer(int32 id);
50 	void AddConsumer(int32 id);
51 	void RemoveProducer(int32 id);
52 	void RemoveConsumer(int32 id);
53 	void UpdateProducerProps(int32 id, const BMessage* props);
54 	void UpdateConsumerProps(int32 id, const BMessage* props);
55 	void Connect(int32 prod, int32 cons);
56 	void Disconnect(int32 prod, int32 cons);
57 
58 	void HandleMidiEvent(BMessage* msg);
59 
60 	BPoint CalcRowOrigin(int32 rowIndex) const;
61 	BPoint CalcRowSize() const;
62 
63 	typedef list<EndpointInfo>::iterator endpoint_itor;
64 	typedef list<EndpointInfo>::const_iterator const_endpoint_itor;
65 	typedef list<PatchRow*>::iterator row_itor;
66 
67 	list<EndpointInfo> fProducers;
68 	list<EndpointInfo> fConsumers;
69 	list<PatchRow*> fPatchRows;
70 	BBitmap* fUnknownDeviceIcon;
71 };
72 
73 #endif /* PATCHVIEW_H */
74