xue@0: /* xue@0: Harmonic Visualiser xue@0: xue@0: An audio file viewer and editor. xue@0: Centre for Digital Music, Queen Mary, University of London. xue@0: This file copyright 2011 Wen Xue. xue@0: xue@0: This program is free software; you can redistribute it and/or xue@0: modify it under the terms of the GNU General Public License as xue@0: published by the Free Software Foundation; either version 2 of the xue@0: License, or (at your option) any later version. xue@0: */ xue@0: //--------------------------------------------------------------------------- xue@0: xue@0: #ifndef NavigatorH xue@0: #define NavigatorH xue@0: //--------------------------------------------------------------------------- xue@0: /* xue@0: Navigator.cpp implements TNavigator, a VCL control for specifying a rectangular xue@0: area inside a larger rectangular area. xue@0: */ xue@0: #include xue@0: #include xue@0: #include xue@0: //--------------------------------------------------------------------------- xue@0: typedef enum {maNoAction, maMove, maSize} TNavigatorMouseAction; xue@0: typedef enum {htOuter, htLeft, htTopLeft, htTop, htTopRight, htRight, htBottomRight, htBottom, htBottomLeft, htInner} TNavigatorHitTest; xue@0: xue@0: class PACKAGE TNavigator : public TCustomControl xue@0: { xue@0: private: xue@0: int X0; xue@0: int Y0; xue@0: int XL; xue@0: int YL; xue@0: double x01; xue@0: double x02; xue@0: double y01; xue@0: double y02; xue@0: int X1; xue@0: int X2; xue@0: int Y1; xue@0: int Y2; xue@0: TNavigatorMouseAction FMouseAction; xue@0: TNavigatorHitTest FHitTest; xue@0: TNotifyEvent FOnAreaChange; xue@0: TNotifyEvent FOnBackground; xue@0: protected: xue@0: TNavigatorHitTest HitTest(int X, int Y); xue@0: virtual void __fastcall Paint(); xue@0: DYNAMIC void __fastcall MouseDown(TMouseButton, TShiftState, int, int); xue@0: DYNAMIC void __fastcall MouseMove(TShiftState, int, int); xue@0: DYNAMIC void __fastcall MouseUp(TMouseButton, TShiftState, int, int); xue@0: public: xue@0: Graphics::TBitmap* BkgBmp; xue@0: xue@0: double x1; xue@0: double x2; xue@0: double y1; xue@0: double y2; xue@0: xue@0: TColor AreaColorX; xue@0: __property Canvas; xue@0: xue@0: __fastcall TNavigator(TComponent* Owner); xue@0: __fastcall ~TNavigator(); xue@0: void DrawArea(); xue@0: DYNAMIC void __fastcall Resize(); xue@0: void SetArea(double, double, double, double); xue@0: xue@0: __published: xue@0: __property TNotifyEvent OnAreaChange={read=FOnAreaChange, write=FOnAreaChange}; xue@0: __property TNotifyEvent OnBackground={read=FOnBackground, write=FOnBackground}; xue@0: __property PopupMenu; xue@0: xue@0: }; xue@0: //--------------------------------------------------------------------------- xue@0: #endif