mirror of
https://github.com/cookiengineer/audacity
synced 2025-05-04 01:29:43 +02:00
... in many places where the function call will later need to be between modules (or libraries, or the executable) and the annotation will be a necessity to keep the linkage working on Windows. That's all that this sweeping commit does.
148 lines
3.9 KiB
C++
148 lines
3.9 KiB
C++
/**********************************************************************
|
|
|
|
Audacity: A Digital Audio Editor
|
|
|
|
TrackInfo.h
|
|
|
|
Paul Licameli split from TrackPanel.cpp
|
|
|
|
**********************************************************************/
|
|
|
|
#ifndef __AUDACITY_TRACK_INFO__
|
|
#define __AUDACITY_TRACK_INFO__
|
|
|
|
|
|
|
|
|
|
#include <vector>
|
|
|
|
class wxDC;
|
|
class wxPoint;
|
|
class wxRect;
|
|
class wxWindow;
|
|
|
|
class ButtonHandle;
|
|
class LWSlider;
|
|
class Track;
|
|
struct TrackPanelDrawingContext;
|
|
|
|
static const int TitleSoloBorderOverlap = 1;
|
|
|
|
namespace TrackInfo
|
|
{
|
|
AUDACITY_DLL_API
|
|
unsigned MinimumTrackHeight();
|
|
|
|
struct TCPLine {
|
|
enum : unsigned {
|
|
// The sequence is not significant, just keep bits distinct
|
|
kItemBarButtons = 1 << 0,
|
|
kItemStatusInfo1 = 1 << 1,
|
|
kItemMute = 1 << 2,
|
|
kItemSolo = 1 << 3,
|
|
kItemGain = 1 << 4,
|
|
kItemPan = 1 << 5,
|
|
kItemVelocity = 1 << 6,
|
|
kItemMidiControlsRect = 1 << 7,
|
|
kItemMinimize = 1 << 8,
|
|
kItemSyncLock = 1 << 9,
|
|
kItemStatusInfo2 = 1 << 10,
|
|
|
|
kHighestBottomItem = kItemMinimize,
|
|
};
|
|
|
|
using DrawFunction = void (*)(
|
|
TrackPanelDrawingContext &context,
|
|
const wxRect &rect,
|
|
const Track *maybeNULL
|
|
);
|
|
|
|
unsigned items; // a bitwise OR of values of the enum above
|
|
int height;
|
|
int extraSpace;
|
|
DrawFunction drawFunction;
|
|
};
|
|
|
|
using TCPLines = std::vector< TCPLine >;
|
|
|
|
// return y value and height
|
|
AUDACITY_DLL_API
|
|
std::pair< int, int > CalcItemY( const TCPLines &lines, unsigned iItem );
|
|
|
|
AUDACITY_DLL_API
|
|
unsigned DefaultTrackHeight( const TCPLines &topLines );
|
|
|
|
AUDACITY_DLL_API
|
|
void DrawItems
|
|
( TrackPanelDrawingContext &context,
|
|
const wxRect &rect, const Track &track );
|
|
|
|
AUDACITY_DLL_API
|
|
void DrawItems
|
|
( TrackPanelDrawingContext &context,
|
|
const wxRect &rect, const Track *pTrack,
|
|
const std::vector<TCPLine> &topLines,
|
|
const std::vector<TCPLine> &bottomLines );
|
|
|
|
AUDACITY_DLL_API
|
|
void DrawCloseButton(
|
|
TrackPanelDrawingContext &context, const wxRect &bev,
|
|
const Track *pTrack, ButtonHandle *target );
|
|
|
|
AUDACITY_DLL_API
|
|
void CloseTitleDrawFunction
|
|
( TrackPanelDrawingContext &context,
|
|
const wxRect &rect, const Track *pTrack );
|
|
|
|
AUDACITY_DLL_API
|
|
void MinimizeSyncLockDrawFunction
|
|
( TrackPanelDrawingContext &context,
|
|
const wxRect &rect, const Track *pTrack );
|
|
|
|
AUDACITY_DLL_API
|
|
void SetTrackInfoFont(wxDC *dc);
|
|
|
|
|
|
AUDACITY_DLL_API
|
|
void GetCloseBoxHorizontalBounds( const wxRect & rect, wxRect &dest );
|
|
AUDACITY_DLL_API
|
|
void GetCloseBoxRect(const wxRect & rect, wxRect &dest);
|
|
|
|
AUDACITY_DLL_API
|
|
void GetTitleBarHorizontalBounds( const wxRect & rect, wxRect &dest );
|
|
AUDACITY_DLL_API
|
|
void GetTitleBarRect(const wxRect & rect, wxRect &dest);
|
|
|
|
AUDACITY_DLL_API
|
|
void GetSliderHorizontalBounds( const wxPoint &topleft, wxRect &dest );
|
|
|
|
AUDACITY_DLL_API
|
|
void GetMinimizeHorizontalBounds( const wxRect &rect, wxRect &dest );
|
|
AUDACITY_DLL_API
|
|
void GetMinimizeRect(const wxRect & rect, wxRect &dest);
|
|
|
|
AUDACITY_DLL_API
|
|
void GetSelectButtonHorizontalBounds( const wxRect &rect, wxRect &dest );
|
|
AUDACITY_DLL_API
|
|
void GetSelectButtonRect(const wxRect & rect, wxRect &dest);
|
|
|
|
AUDACITY_DLL_API
|
|
void GetSyncLockHorizontalBounds( const wxRect &rect, wxRect &dest );
|
|
AUDACITY_DLL_API
|
|
void GetSyncLockIconRect(const wxRect & rect, wxRect &dest);
|
|
|
|
AUDACITY_DLL_API
|
|
bool HideTopItem( const wxRect &rect, const wxRect &subRect,
|
|
int allowance = 0 );
|
|
|
|
// Non-member, namespace function relying on TrackPanel to invoke it
|
|
// when it handles preference update events
|
|
AUDACITY_DLL_API
|
|
void UpdatePrefs( wxWindow *pParent );
|
|
|
|
AUDACITY_DLL_API
|
|
bool HasSoloButton();
|
|
};
|
|
|
|
#endif
|