/* PatchView.h * ----------- * The main PatchBay view contains a row of icons along the top and * left sides representing available consumers and producers, and * a set of PatchRows which build the matrix of connections. * * Copyright 2013, Haiku, Inc. All rights reserved. * Distributed under the terms of the MIT License. * * Revisions by Pete Goodeve * * Copyright 1999, Be Incorporated. All Rights Reserved. * This file may be used under the terms of the Be Sample Code License. */ #ifndef PATCHVIEW_H #define PATCHVIEW_H #include #include #include #include "EndpointInfo.h" class PatchRow; class BBitmap; using namespace std; class PatchView : public BView { public: PatchView(BRect r); ~PatchView(); void AttachedToWindow(); void MessageReceived(BMessage* msg); void Draw(BRect updateRect); private: typedef enum { TRACK_COLUMN, TRACK_ROW } track_type; BRect ColumnIconFrameAt(int32 index) const; BRect RowIconFrameAt(int32 index) const; virtual bool GetToolTipAt(BPoint point, BToolTip** tip); void AddProducer(int32 id); void AddConsumer(int32 id); void RemoveProducer(int32 id); void RemoveConsumer(int32 id); void UpdateProducerProps(int32 id, const BMessage* props); void UpdateConsumerProps(int32 id, const BMessage* props); void Connect(int32 prod, int32 cons); void Disconnect(int32 prod, int32 cons); void HandleMidiEvent(BMessage* msg); BPoint CalcRowOrigin(int32 rowIndex) const; BPoint CalcRowSize() const; typedef list::iterator endpoint_itor; typedef list::const_iterator const_endpoint_itor; typedef list::iterator row_itor; list fProducers; list fConsumers; list fPatchRows; BBitmap* fUnknownDeviceIcon; }; #endif /* PATCHVIEW_H */