Audacity 3.2.0
Public Types | Public Member Functions | Protected Member Functions | Static Protected Member Functions | Private Attributes | List of all members
WaveChannelSubView Class Referenceabstract

#include <WaveChannelView.h>

Inheritance diagram for WaveChannelSubView:
[legend]
Collaboration diagram for WaveChannelSubView:
[legend]

Public Types

using Display = WaveChannelViewConstants::Display
 
using Type = WaveChannelSubViewType
 
- Public Types inherited from ChannelView
enum  : unsigned { DefaultHeight = 150 }
 
using Refinement = std::vector< std::pair< wxCoord, std::shared_ptr< ChannelView > > >
 

Public Member Functions

 WaveChannelSubView (WaveChannelView &waveChannelView)
 
std::shared_ptr< WaveChannelFindWaveChannel ()
 
virtual const TypeSubViewType () const =0
 
virtual void CopyToSubView (WaveChannelSubView *destSubView) const
 
std::pair< bool, std::vector< UIHandlePtr > > DoDetailedHitTest (const TrackPanelMouseState &state, const AudacityProject *pProject, int currentTool, bool bMultiTool, const std::shared_ptr< WaveChannel > &wt)
 
- Public Member Functions inherited from CommonChannelView
std::shared_ptr< TrackPanelCellContextMenuDelegate () override
 
std::vector< UIHandlePtrHitTest (const TrackPanelMouseState &, const AudacityProject *pProject) final
 
void TimeShiftHitTest ()
 
virtual int GetMinimizedHeight () const override
 
 ChannelView (const std::shared_ptr< Channel > &pChannel)
 
- Public Member Functions inherited from ChannelView
 ChannelView (const std::shared_ptr< Channel > &pChannel)
 
virtual ~ChannelView ()=0
 
void Reparent (const std::shared_ptr< Track > &parent, size_t iChannel) override
 Object may be shared among tracks but hold a special back-pointer to one of them; reassign it. More...
 
void CopyTo (Track &track, size_t iChannel) const override
 Copy state, for undo/redo purposes. More...
 
bool GetMinimized () const
 
void SetMinimized (bool minimized)
 
int GetCumulativeHeightBefore () const
 
int GetExpandedHeight () const
 
virtual int GetMinimizedHeight () const =0
 
int GetHeight () const
 
void SetCumulativeHeightBefore (int y)
 Set cached value dependent on position within the track list. More...
 
void SetExpandedHeight (int height)
 
std::shared_ptr< ChannelVRulerControlsGetVRulerControls ()
 
std::shared_ptr< const ChannelVRulerControlsGetVRulerControls () const
 
virtual std::shared_ptr< CommonTrackCellGetAffordanceControls ()
 
void WriteXMLAttributes (XMLWriter &writer, size_t iChannel) const override
 Serialize persistent attributes. More...
 
bool HandleXMLAttribute (const std::string_view &attr, const XMLAttributeValueView &valueView, size_t iChannel) override
 Deserialize an attribute, returning true if recognized. More...
 
virtual Refinement GetSubViews (const wxRect &rect)
 
virtual bool IsSpectral () const
 
virtual void DoSetMinimized (bool isMinimized)
 
- Public Member Functions inherited from CommonChannelCell
 CommonChannelCell (const std::shared_ptr< Channel > &pChannel)
 Construct from a channel. More...
 
 ~CommonChannelCell ()
 
std::shared_ptr< TrackDoFindTrack () override
 
void Reparent (const std::shared_ptr< Track > &parent, size_t iChannel) override
 Object may be shared among tracks but hold a special back-pointer to one of them; reassign it. More...
 
template<typename Subtype = Channel>
auto FindChannel () -> std::shared_ptr< Subtype >
 May return null. More...
 
template<typename Subtype = const Channel>
auto FindChannel () const -> std::enable_if_t< std::is_const_v< Subtype >, std::shared_ptr< Subtype > >
 May return null. More...
 
- Public Member Functions inherited from CommonTrackPanelCell
 CommonTrackPanelCell ()
 
virtual ~CommonTrackPanelCell ()=0
 
HitTestPreview DefaultPreview (const TrackPanelMouseState &, const AudacityProject *) override
 
std::shared_ptr< TrackFindTrack ()
 
std::shared_ptr< const TrackFindTrack () const
 
virtual std::vector< MenuItemGetMenuItems (const wxRect &rect, const wxPoint *pPosition, AudacityProject *pProject)
 Return a list of items for DoContextMenu() (empties for separators) More...
 
- Public Member Functions inherited from TrackPanelCell
 TrackPanelCell ()=default
 
 TrackPanelCell (const TrackPanelCell &)=delete
 
TrackPanelCelloperator= (const TrackPanelCell &)=delete
 
virtual ~TrackPanelCell ()=0
 
virtual HitTestPreview DefaultPreview (const TrackPanelMouseState &state, const AudacityProject *pProject)
 
virtual std::vector< UIHandlePtrHitTest (const TrackPanelMouseState &state, const AudacityProject *pProject)=0
 
virtual unsigned HandleWheelRotation (const TrackPanelMouseEvent &event, AudacityProject *pProject)
 
virtual std::shared_ptr< TrackPanelCellContextMenuDelegate ()
 
virtual unsigned DoContextMenu (const wxRect &rect, wxWindow *pParent, const wxPoint *pPosition, AudacityProject *pProject)
 
virtual unsigned CaptureKey (wxKeyEvent &event, ViewInfo &viewInfo, wxWindow *pParent, AudacityProject *project)
 
virtual unsigned KeyDown (wxKeyEvent &event, ViewInfo &viewInfo, wxWindow *pParent, AudacityProject *project)
 
virtual unsigned KeyUp (wxKeyEvent &event, ViewInfo &viewInfo, wxWindow *pParent, AudacityProject *project)
 
virtual unsigned Char (wxKeyEvent &event, ViewInfo &viewInfo, wxWindow *pParent, AudacityProject *project)
 
virtual unsigned LoseFocus (AudacityProject *project)
 
- Public Member Functions inherited from TrackPanelNode
 TrackPanelNode ()
 
virtual ~TrackPanelNode ()=0
 
- Public Member Functions inherited from TrackPanelDrawable
virtual ~TrackPanelDrawable ()=0
 
virtual void Draw (TrackPanelDrawingContext &context, const wxRect &rect, unsigned iPass)
 
virtual wxRect DrawingArea (TrackPanelDrawingContext &context, const wxRect &rect, const wxRect &panelRect, unsigned iPass)
 
- Public Member Functions inherited from ChannelAttachment
virtual ~ChannelAttachment ()
 
virtual void CopyTo (Track &track, size_t iChannel) const
 Copy state, for undo/redo purposes. More...
 
virtual void Reparent (const std::shared_ptr< Track > &parent, size_t iChannel)
 Object may be shared among tracks but hold a special back-pointer to one of them; reassign it. More...
 
virtual void WriteXMLAttributes (XMLWriter &writer, size_t iChannel) const
 Serialize persistent attributes. More...
 
virtual bool HandleXMLAttribute (const std::string_view &attr, const XMLAttributeValueView &valueView, size_t iChannel)
 Deserialize an attribute, returning true if recognized. More...
 

Protected Member Functions

std::weak_ptr< WaveChannelViewGetWaveChannelView () const
 
std::vector< MenuItemGetMenuItems (const wxRect &rect, const wxPoint *pPosition, AudacityProject *pProject) override
 Return a list of items for DoContextMenu() (empties for separators) More...
 
- Protected Member Functions inherited from CommonChannelView
virtual std::vector< UIHandlePtrDetailedHitTest (const TrackPanelMouseState &, const AudacityProject *pProject, int currentTool, bool bMultiTool)=0
 
- Protected Member Functions inherited from ChannelView
virtual std::shared_ptr< ChannelVRulerControlsDoGetVRulerControls ()=0
 
- Protected Member Functions inherited from CommonTrackPanelCell
virtual std::shared_ptr< TrackDoFindTrack ()=0
 
unsigned DoContextMenu (const wxRect &rect, wxWindow *pParent, const wxPoint *pPosition, AudacityProject *pProject) override
 
unsigned HandleWheelRotation (const TrackPanelMouseEvent &event, AudacityProject *pProject) override
 

Static Protected Member Functions

static void DrawBoldBoundaries (TrackPanelDrawingContext &context, const WaveChannel &channel, const wxRect &rect)
 

Private Attributes

std::weak_ptr< SubViewCloseHandlemCloseHandle
 
std::weak_ptr< TrackPanelResizeHandlemResizeHandle
 
std::weak_ptr< SubViewAdjustHandlemAdjustHandle
 
std::weak_ptr< SubViewRearrangeHandlemRearrangeHandle
 
std::weak_ptr< WaveClipAdjustBorderHandlemClipBorderAdjustHandle
 
std::weak_ptr< CutlineHandlemCutlineHandle
 
std::weak_ptr< WaveChannelViewmwWaveChannelView
 

Additional Inherited Members

- Static Public Member Functions inherited from CommonChannelView
static void GetEnvelopeValues (const Envelope &env, double aligned_time, double sampleDur, double *buffer, int bufferLen, int leftOffset, const ZoomInfo &zoomInfo)
 Get many envelope points for pixel columns at once, but don't assume uniform time per pixel. More...
 
- Static Public Member Functions inherited from ChannelView
static ChannelViewGet (Channel &channel)
 
static const ChannelViewGet (const Channel &channel)
 
static ChannelViewFind (Channel *pChannel)
 
static const ChannelViewFind (const Channel *pChannel)
 
static int GetChannelGroupHeight (const Track *pTrack)
 
static int GetCumulativeHeight (const Channel *pChannel)
 
static int GetCumulativeHeight (const Track *pTrack)
 
static int GetTotalHeight (const TrackList &list)
 
- Static Public Member Functions inherited from TrackPanelDrawable
static wxRect MaximizeWidth (const wxRect &rect, const wxRect &panelRect)
 
static wxRect MaximizeHeight (const wxRect &rect, const wxRect &panelRect)
 
- Public Attributes inherited from CommonChannelView
std::weak_ptr< TimeShiftHandlemTimeShiftHandle
 
- Public Attributes inherited from ChannelView
std::pair< int, int > vrulerSize
 
- Protected Attributes inherited from CommonChannelView
std::weak_ptr< SelectHandlemSelectHandle
 
- Protected Attributes inherited from ChannelView
std::shared_ptr< ChannelVRulerControlsmpVRulerControls
 

Detailed Description

Definition at line 39 of file WaveChannelView.h.

Member Typedef Documentation

◆ Display

Definition at line 43 of file WaveChannelView.h.

◆ Type

Definition at line 44 of file WaveChannelView.h.

Constructor & Destructor Documentation

◆ WaveChannelSubView()

WaveChannelSubView::WaveChannelSubView ( WaveChannelView waveChannelView)
explicit

Definition at line 954 of file WaveChannelView.cpp.

955 : CommonChannelView{ waveChannelView.FindChannel() }
956{
957 mwWaveChannelView = std::static_pointer_cast<WaveChannelView>(
958 waveChannelView.shared_from_this() );
959}
auto FindChannel() -> std::shared_ptr< Subtype >
May return null.
Implements some hit-testing shared by many ChannelView subtypes.
std::weak_ptr< WaveChannelView > mwWaveChannelView

References mwWaveChannelView.

Member Function Documentation

◆ CopyToSubView()

void WaveChannelSubView::CopyToSubView ( WaveChannelSubView destSubView) const
virtual

Reimplemented in SpectrumView.

Definition at line 966 of file WaveChannelView.cpp.

966 {
967
968}

◆ DoDetailedHitTest()

std::pair< bool, std::vector< UIHandlePtr > > WaveChannelSubView::DoDetailedHitTest ( const TrackPanelMouseState state,
const AudacityProject pProject,
int  currentTool,
bool  bMultiTool,
const std::shared_ptr< WaveChannel > &  wt 
)

Definition at line 764 of file WaveChannelView.cpp.

768{
769 const auto waveTrack = wc->GetTrack().SharedPointer<WaveTrack>();
771 state, pProject, currentTool, bMultiTool, wc, *this);
772 if (results.first)
773 return results;
774
775 auto pWaveChannelView = mwWaveChannelView.lock();
776 if ( pWaveChannelView && !state.state.HasModifiers() ) {
777 if ( auto pHandle = SubViewCloseHandle::HitTest(
779 *pWaveChannelView, *this, state ) )
780 results.second.push_back( pHandle );
781
782 auto &&channels = waveTrack->Channels();
783 if(channels.size() > 1) {
784 // Only one cell is tested and we need to know
785 // which one and it's relative location to the border.
786 auto subviews = pWaveChannelView->GetSubViews();
787 auto currentSubview = std::find_if(subviews.begin(), subviews.end(),
788 [self = shared_from_this()](const auto& p){
789 return self == p.second;
790 });
791 if (currentSubview != subviews.end())
792 {
793 auto currentSubviewIndex = std::distance(subviews.begin(), currentSubview);
794
795 const auto py = state.state.GetY();
796 const auto topBorderHit = std::abs(py - state.rect.GetTop())
798 const auto bottomBorderHit = std::abs(py - state.rect.GetBottom())
800
801 auto it = channels.find(wc);
802 auto currentChannelIndex = std::distance(channels.begin(), it);
803
804 if (//for not-last-view check the bottom border hit
805 ((currentChannelIndex != channels.size() - 1)
806 && (currentSubviewIndex == static_cast<int>(subviews.size()) - 1)
807 && bottomBorderHit)
808 ||
809 //or for not-first-view check the top border hit
810 ((currentChannelIndex != 0) && currentSubviewIndex == 0 && topBorderHit))
811 {
812 //depending on which border hit test succeeded on we
813 //need to choose a proper target for resizing
814 if (!bottomBorderHit)
815 --it;
816 auto result = std::make_shared<TrackPanelResizeHandle>(*it, py);
817 result = AssignUIHandlePtr(mResizeHandle, result);
818 results.second.push_back(result);
819 }
820 }
821 }
822
823 if ( auto pHandle = SubViewAdjustHandle::HitTest(
825 *pWaveChannelView, *this, state ) )
826 results.second.push_back( pHandle );
827 if ( auto pHandle = SubViewRearrangeHandle::HitTest(
829 *pWaveChannelView, *this, state ) )
830 results.second.push_back( pHandle );
831 }
832 if( pWaveChannelView )
833 {
834 if (auto pHandle = WaveClipAdjustBorderHandle::HitTest(
836 *pWaveChannelView, pProject, state))
837 results.second.push_back(pHandle);
838 }
839 if (auto result = CutlineHandle::HitTest(
840 mCutlineHandle, state.state, state.rect, pProject, waveTrack))
841 // This overriding test applies in all tools
842 results.second.push_back(result);
843
844 return results;
845}
std::shared_ptr< Subclass > AssignUIHandlePtr(std::weak_ptr< Subclass > &holder, const std::shared_ptr< Subclass > &pNew)
Definition: UIHandle.h:164
static UIHandlePtr HitTest(std::weak_ptr< CutlineHandle > &holder, const wxMouseState &state, const wxRect &rect, const AudacityProject *pProject, std::shared_ptr< WaveTrack > pTrack)
static UIHandlePtr HitTest(std::weak_ptr< SubViewAdjustHandle > &holder, WaveChannelView &view, WaveChannelSubView &subView, const TrackPanelMouseState &state)
static UIHandlePtr HitTest(std::weak_ptr< SubViewCloseHandle > &holder, WaveChannelView &view, WaveChannelSubView &subView, const TrackPanelMouseState &state)
static UIHandlePtr HitTest(std::weak_ptr< SubViewRearrangeHandle > &holder, WaveChannelView &view, WaveChannelSubView &subView, const TrackPanelMouseState &state)
std::weak_ptr< SubViewAdjustHandle > mAdjustHandle
std::weak_ptr< CutlineHandle > mCutlineHandle
std::weak_ptr< TrackPanelResizeHandle > mResizeHandle
std::weak_ptr< WaveClipAdjustBorderHandle > mClipBorderAdjustHandle
std::weak_ptr< SubViewCloseHandle > mCloseHandle
std::weak_ptr< SubViewRearrangeHandle > mRearrangeHandle
static constexpr int kChannelSeparatorThickness
static std::pair< bool, std::vector< UIHandlePtr > > DoDetailedHitTest(const TrackPanelMouseState &state, const AudacityProject *pProject, int currentTool, bool bMultiTool, const std::shared_ptr< WaveChannel > &wt, CommonChannelView &view)
static UIHandlePtr HitTest(std::weak_ptr< WaveClipAdjustBorderHandle > &holder, WaveChannelView &view, const AudacityProject *pProject, const TrackPanelMouseState &state)
A Track that contains audio waveform data.
Definition: WaveTrack.h:203
auto Channels()
Definition: WaveTrack.h:263

References AssignUIHandlePtr(), WaveTrack::Channels(), WaveChannelView::DoDetailedHitTest(), CutlineHandle::HitTest(), SubViewAdjustHandle::HitTest(), SubViewCloseHandle::HitTest(), SubViewRearrangeHandle::HitTest(), WaveClipAdjustBorderHandle::HitTest(), WaveChannelView::kChannelSeparatorThickness, mAdjustHandle, mClipBorderAdjustHandle, mCloseHandle, mCutlineHandle, mRearrangeHandle, mResizeHandle, mwWaveChannelView, TrackPanelMouseState::rect, and TrackPanelMouseState::state.

Referenced by SpectrumView::DetailedHitTest(), and WaveformView::DetailedHitTest().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ DrawBoldBoundaries()

void WaveChannelSubView::DrawBoldBoundaries ( TrackPanelDrawingContext context,
const WaveChannel channel,
const wxRect &  rect 
)
staticprotected

Definition at line 848 of file WaveChannelView.cpp.

851{
852 auto &dc = context.dc;
853 const auto artist = TrackArtist::Get( context );
854
855 const auto &zoomInfo = *artist->pZoomInfo;
856
857#ifdef EXPERIMENTAL_TRACK_PANEL_HIGHLIGHTING
858 auto target2 = dynamic_cast<CutlineHandle*>(context.target.get());
859#endif
860 // x coordinates for bold lines will be the same across channels
861 for (const auto loc : FindWaveTrackLocations(channel.GetTrack())) {
862 bool highlightLoc = false;
863#ifdef EXPERIMENTAL_TRACK_PANEL_HIGHLIGHTING
864 highlightLoc =
865 target2 && target2->GetTrack().get() == &channel &&
866 target2->GetLocation() == loc;
867#endif
868 const int xx = zoomInfo.TimeToPosition(loc.pos);
869 if (xx >= 0 && xx < rect.width) {
870 dc.SetPen( highlightLoc ? AColor::uglyPen : *wxGREY_PEN );
871 AColor::Line(dc, (int) (rect.x + xx - 1), rect.y, (int) (rect.x + xx - 1), rect.y + rect.height);
872 dc.SetPen( highlightLoc ? AColor::uglyPen : *wxRED_PEN );
873 AColor::Line(dc, (int) (rect.x + xx), rect.y, (int) (rect.x + xx), rect.y + rect.height);
874 dc.SetPen( highlightLoc ? AColor::uglyPen : *wxGREY_PEN );
875 AColor::Line(dc, (int) (rect.x + xx + 1), rect.y, (int) (rect.x + xx + 1), rect.y + rect.height);
876 }
877 }
878}
WaveTrackLocations FindWaveTrackLocations(const WaveTrack &track)
static void Line(wxDC &dc, wxCoord x1, wxCoord y1, wxCoord x2, wxCoord y2)
Definition: AColor.cpp:185
static wxPen uglyPen
Definition: AColor.h:139
std::shared_ptr< WaveTrack > GetTrack()
Definition: CutlineHandle.h:45
static TrackArtist * Get(TrackPanelDrawingContext &)
Definition: TrackArtist.cpp:69
WaveTrack & GetTrack()
Definition: WaveTrack.h:840

References TrackPanelDrawingContext::dc, FindWaveTrackLocations(), TrackArtist::Get(), WaveChannel::GetTrack(), CutlineHandle::GetTrack(), AColor::Line(), TrackPanelDrawingContext::target, and AColor::uglyPen.

Referenced by SpectrumView::DoDraw(), and WaveformView::DoDraw().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ FindWaveChannel()

std::shared_ptr< WaveChannel > WaveChannelSubView::FindWaveChannel ( )

Definition at line 961 of file WaveChannelView.cpp.

962{
963 return FindChannel<WaveChannel>();
964}

Referenced by SpectrumView::DetailedHitTest(), SpectrumView::DoSetMinimized(), WaveformView::DoSetMinimized(), and SpectrumView::SpectrumView().

Here is the caller graph for this function:

◆ GetMenuItems()

auto WaveChannelSubView::GetMenuItems ( const wxRect &  rect,
const wxPoint *  pPosition,
AudacityProject pProject 
)
overrideprotectedvirtual

Return a list of items for DoContextMenu() (empties for separators)

If the vector is empty (as in the default), there is no context menu.

Commands are invoked with temporary selection fields of CommandContext set to a point selected region at the mouse pick, and the cell's track.

A function may be given, but if it is null, then the command can be found by name in the CommandManager.

An item in the list with no command name marks a menu separator.

The menu item is enabled only if it contains a true flag, but if looked up in the command manager, it must also satisfy the command manager's conditions.

Reimplemented from CommonTrackPanelCell.

Definition at line 885 of file WaveChannelView.cpp.

888{
889 auto pChannel = FindWaveChannel();
890 if (pChannel != nullptr && pPosition != nullptr)
891 {
892 auto &track = pChannel->GetTrack();
893 const auto &viewInfo = ViewInfo::Get(*pProject);
894 const auto t = viewInfo.PositionToTime(pPosition->x, rect.x);
895 if ((track.IsSelected() &&
896 t > viewInfo.selectedRegion.t0() && t < viewInfo.selectedRegion.t1() &&
898 viewInfo.selectedRegion.t0(), viewInfo.selectedRegion.t1())
899 .empty())
900 ||
901 WaveChannelUtilities::GetClipAtTime(**track.Channels().begin(), t))
902 {
904 }
905 }
906 return {
907 { L"Paste", XO("Paste") },
908 {},
909 { L"TrackMute", XO("Mute/Unmute Track") },
910 };
911}
XO("Cut/Copy/Paste")
static ViewInfo & Get(AudacityProject &project)
Definition: ViewInfo.cpp:235
std::shared_ptr< WaveChannel > FindWaveChannel()
WAVE_TRACK_API ClipPointer GetClipAtTime(WaveChannel &channel, double time)
std::vector< CommonTrackPanelCell::MenuItem > GetWaveClipMenuItems()
WAVE_TRACK_API WaveTrack::IntervalConstHolders GetClipsIntersecting(const WaveTrack &track, double t0, double t1)

References ViewInfo::Get(), WaveChannelUtilities::GetClipAtTime(), WaveTrackUtilities::GetClipsIntersecting(), WaveClipUIUtilities::GetWaveClipMenuItems(), and XO().

Here is the call graph for this function:

◆ GetWaveChannelView()

std::weak_ptr< WaveChannelView > WaveChannelSubView::GetWaveChannelView ( ) const
protected

Definition at line 880 of file WaveChannelView.cpp.

881{
882 return mwWaveChannelView;
883}

References mwWaveChannelView.

Referenced by SpectrumView::Draw(), and WaveformView::Draw().

Here is the caller graph for this function:

◆ SubViewType()

virtual const Type & WaveChannelSubView::SubViewType ( ) const
pure virtual

Implemented in SpectrumView, and WaveformView.

Referenced by WaveChannelView::DoSetDisplay(), WaveChannelView::GetDisplays(), and WaveChannelView::ToggleSubView().

Here is the caller graph for this function:

Member Data Documentation

◆ mAdjustHandle

std::weak_ptr<SubViewAdjustHandle> WaveChannelSubView::mAdjustHandle
private

Definition at line 79 of file WaveChannelView.h.

Referenced by DoDetailedHitTest().

◆ mClipBorderAdjustHandle

std::weak_ptr<WaveClipAdjustBorderHandle> WaveChannelSubView::mClipBorderAdjustHandle
private

Definition at line 81 of file WaveChannelView.h.

Referenced by DoDetailedHitTest().

◆ mCloseHandle

std::weak_ptr<SubViewCloseHandle> WaveChannelSubView::mCloseHandle
private

Definition at line 77 of file WaveChannelView.h.

Referenced by DoDetailedHitTest().

◆ mCutlineHandle

std::weak_ptr<CutlineHandle> WaveChannelSubView::mCutlineHandle
private

Definition at line 82 of file WaveChannelView.h.

Referenced by DoDetailedHitTest().

◆ mRearrangeHandle

std::weak_ptr<SubViewRearrangeHandle> WaveChannelSubView::mRearrangeHandle
private

Definition at line 80 of file WaveChannelView.h.

Referenced by DoDetailedHitTest().

◆ mResizeHandle

std::weak_ptr<TrackPanelResizeHandle> WaveChannelSubView::mResizeHandle
private

Definition at line 78 of file WaveChannelView.h.

Referenced by DoDetailedHitTest().

◆ mwWaveChannelView

std::weak_ptr<WaveChannelView> WaveChannelSubView::mwWaveChannelView
private

Definition at line 83 of file WaveChannelView.h.

Referenced by DoDetailedHitTest(), GetWaveChannelView(), and WaveChannelSubView().


The documentation for this class was generated from the following files: