Audacity  3.0.3
Public Member Functions | Public Attributes | Private Member Functions | Private Attributes | List of all members
AdornedRulerPanel::QuickPlayRulerOverlay Class Referencefinal
Inheritance diagram for AdornedRulerPanel::QuickPlayRulerOverlay:
[legend]
Collaboration diagram for AdornedRulerPanel::QuickPlayRulerOverlay:
[legend]

Public Member Functions

 QuickPlayRulerOverlay (QuickPlayIndicatorOverlay &partner)
 
void Update ()
 
- Public Member Functions inherited from Overlay
 Overlay ()=default
 
 Overlay (const Overlay &) PROHIBITED
 
Overlayoperator= (const Overlay &) PROHIBITED
 
virtual ~Overlay ()=0
 
std::pair< wxRect, bool > GetRectangle (wxSize size)
 
virtual void Erase (wxDC &dc, wxDC &src)
 

Public Attributes

int mNewQPIndicatorPos { -1 }
 
bool mNewQPIndicatorSnapped {}
 
bool mNewPreviewingScrub {}
 
bool mNewScrub {}
 
bool mNewSeek {}
 

Private Member Functions

AdornedRulerPanelGetRuler () const
 
unsigned SequenceNumber () const override
 This number determines an ordering of overlays, so that those with higher numbers overpaint those with lower numbers that intersect. More...
 
std::pair< wxRect, bool > DoGetRectangle (wxSize size) override
 
void Draw (OverlayPanel &panel, wxDC &dc) override
 

Private Attributes

QuickPlayIndicatorOverlaymPartner
 
int mOldQPIndicatorPos { -1 }
 
bool mOldScrub {}
 
bool mOldSeek {}
 

Detailed Description

Definition at line 126 of file AdornedRulerPanel.cpp.

Constructor & Destructor Documentation

◆ QuickPlayRulerOverlay()

AdornedRulerPanel::QuickPlayRulerOverlay::QuickPlayRulerOverlay ( QuickPlayIndicatorOverlay partner)

Definition at line 196 of file AdornedRulerPanel.cpp.

198 : mPartner(partner)
199 {
200 }

Member Function Documentation

◆ DoGetRectangle()

std::pair< wxRect, bool > AdornedRulerPanel::QuickPlayRulerOverlay::DoGetRectangle ( wxSize  size)
overrideprivatevirtual

Implements Overlay.

Definition at line 255 of file AdornedRulerPanel.cpp.

256 {
257  Update();
258 
259  const auto x = mOldQPIndicatorPos;
260  if (x >= 0) {
261  // These dimensions are always sufficient, even if a little
262  // excessive for the small triangle:
263  const int width = IndicatorBigWidth() * 3 / 2;
264  //const auto height = IndicatorHeightForWidth(width);
265 
266  const int indsize = width / 2;
267 
268  auto xx = x - indsize;
269  auto yy = 0;
270  return {
271  { xx, yy,
272  indsize * 2 + 1,
273  GetRuler()->GetSize().GetHeight() },
274  (x != mNewQPIndicatorPos
275  || (mOldScrub != mNewScrub)
276  || (mOldSeek != mNewSeek) )
277  };
278  }
279  else
280  return { {}, mNewQPIndicatorPos >= 0 };
281 }

References IndicatorBigWidth().

Here is the call graph for this function:

◆ Draw()

void AdornedRulerPanel::QuickPlayRulerOverlay::Draw ( OverlayPanel panel,
wxDC &  dc 
)
overrideprivatevirtual

Implements Overlay.

Definition at line 283 of file AdornedRulerPanel.cpp.

285 {
288  mOldSeek = mNewSeek;
289  if (mOldQPIndicatorPos >= 0) {
290  auto ruler = GetRuler();
292  ruler->DoDrawIndicator(
293  &dc, mOldQPIndicatorPos, true, width, mOldScrub, mOldSeek);
294  }
295 }

References IndicatorBigWidth(), IndicatorSmallWidth, and anonymous_namespace{TimeTrackVRulerControls.cpp}::ruler().

Here is the call graph for this function:

◆ GetRuler()

AdornedRulerPanel * AdornedRulerPanel::QuickPlayRulerOverlay::GetRuler ( ) const
private

Definition at line 202 of file AdornedRulerPanel.cpp.

203 {
204  return &Get( *mPartner.mProject );
205 }

References AdornedRulerPanel::Get().

Here is the call graph for this function:

◆ SequenceNumber()

unsigned AdornedRulerPanel::QuickPlayRulerOverlay::SequenceNumber ( ) const
overrideprivatevirtual

This number determines an ordering of overlays, so that those with higher numbers overpaint those with lower numbers that intersect.

Implements Overlay.

Definition at line 249 of file AdornedRulerPanel.cpp.

250 {
251  return 30;
252 }

◆ Update()

void AdornedRulerPanel::QuickPlayRulerOverlay::Update ( )

Definition at line 207 of file AdornedRulerPanel.cpp.

208 {
209  const auto project = mPartner.mProject;
210  auto &scrubber = Scrubber::Get( *project );
211  auto ruler = GetRuler();
212 
213  // Hide during transport, or if mouse is not in the ruler, unless scrubbing
214  if ((!ruler->LastCell() || ProjectAudioIO::Get( *project ).IsAudioActive())
215  && (!scrubber.IsScrubbing() || scrubber.IsSpeedPlaying()
216  || scrubber.IsKeyboardScrubbing()))
217  mNewQPIndicatorPos = -1;
218  else {
219  const auto &selectedRegion = ViewInfo::Get( *project ).selectedRegion;
220  double latestEnd =
221  std::max(ruler->mTracks->GetEndTime(), selectedRegion.t1());
222  if (ruler->mQuickPlayPos >= latestEnd)
223  mNewQPIndicatorPos = -1;
224  else {
225  // This will determine the x coordinate of the line and of the
226  // ruler indicator
227  mNewQPIndicatorPos = ruler->Time2Pos(ruler->mQuickPlayPos);
228 
229  // These determine which shape is drawn on the ruler, and whether
230  // in the scrub or the qp zone
231  mNewScrub =
232  ruler->mMouseEventState == AdornedRulerPanel::mesNone &&
233  (ruler->LastCell() == ruler->mScrubbingCell ||
234  (scrubber.HasMark()));
235  mNewSeek = mNewScrub &&
236  (scrubber.Seeks() || scrubber.TemporarilySeeks());
237 
238  // These two will determine the color of the line stroked over
239  // the track panel, green for scrub or yellow for snapped or white
241  ruler->LastCell() == ruler->mScrubbingCell &&
242  !scrubber.IsScrubbing();
243  mNewQPIndicatorSnapped = ruler->mIsSnapped;
244  }
245  }
246 }

References ViewInfo::Get(), ProjectAudioIO::Get(), Scrubber::Get(), ProjectAudioIO::IsAudioActive(), AdornedRulerPanel::mesNone, anonymous_namespace{TimeTrackVRulerControls.cpp}::ruler(), and ViewInfo::selectedRegion.

Here is the call graph for this function:

Member Data Documentation

◆ mNewPreviewingScrub

bool AdornedRulerPanel::QuickPlayRulerOverlay::mNewPreviewingScrub {}

Definition at line 135 of file AdornedRulerPanel.cpp.

◆ mNewQPIndicatorPos

int AdornedRulerPanel::QuickPlayRulerOverlay::mNewQPIndicatorPos { -1 }

Definition at line 133 of file AdornedRulerPanel.cpp.

◆ mNewQPIndicatorSnapped

bool AdornedRulerPanel::QuickPlayRulerOverlay::mNewQPIndicatorSnapped {}

Definition at line 134 of file AdornedRulerPanel.cpp.

◆ mNewScrub

bool AdornedRulerPanel::QuickPlayRulerOverlay::mNewScrub {}

Definition at line 137 of file AdornedRulerPanel.cpp.

◆ mNewSeek

bool AdornedRulerPanel::QuickPlayRulerOverlay::mNewSeek {}

Definition at line 138 of file AdornedRulerPanel.cpp.

◆ mOldQPIndicatorPos

int AdornedRulerPanel::QuickPlayRulerOverlay::mOldQPIndicatorPos { -1 }
private

Definition at line 153 of file AdornedRulerPanel.cpp.

◆ mOldScrub

bool AdornedRulerPanel::QuickPlayRulerOverlay::mOldScrub {}
private

Definition at line 154 of file AdornedRulerPanel.cpp.

◆ mOldSeek

bool AdornedRulerPanel::QuickPlayRulerOverlay::mOldSeek {}
private

Definition at line 155 of file AdornedRulerPanel.cpp.

◆ mPartner

QuickPlayIndicatorOverlay& AdornedRulerPanel::QuickPlayRulerOverlay::mPartner
private

Definition at line 150 of file AdornedRulerPanel.cpp.


The documentation for this class was generated from the following file:
ViewInfo::Get
static ViewInfo & Get(AudacityProject &project)
Definition: ViewInfo.cpp:212
Scrubber::Get
static Scrubber & Get(AudacityProject &project)
Definition: Scrubbing.cpp:201
AdornedRulerPanel::QuickPlayRulerOverlay::mNewQPIndicatorPos
int mNewQPIndicatorPos
Definition: AdornedRulerPanel.cpp:133
AdornedRulerPanel::QuickPlayIndicatorOverlay::mProject
AudacityProject * mProject
Definition: AdornedRulerPanel.cpp:180
AdornedRulerPanel::mesNone
@ mesNone
Definition: AdornedRulerPanel.h:169
AdornedRulerPanel::QuickPlayRulerOverlay::mOldScrub
bool mOldScrub
Definition: AdornedRulerPanel.cpp:154
ProjectAudioIO::Get
static ProjectAudioIO & Get(AudacityProject &project)
Definition: ProjectAudioIO.cpp:22
anonymous_namespace{TimeTrackVRulerControls.cpp}::ruler
Ruler & ruler()
Definition: TimeTrackVRulerControls.cpp:34
ProjectAudioIO::IsAudioActive
bool IsAudioActive() const
Definition: ProjectAudioIO.cpp:51
AdornedRulerPanel::Get
static AdornedRulerPanel & Get(AudacityProject &project)
Definition: AdornedRulerPanel.cpp:877
AdornedRulerPanel::QuickPlayRulerOverlay::mPartner
QuickPlayIndicatorOverlay & mPartner
Definition: AdornedRulerPanel.cpp:150
ViewInfo::selectedRegion
NotifyingSelectedRegion selectedRegion
Definition: ViewInfo.h:207
IndicatorBigWidth
int IndicatorBigWidth()
Definition: AdornedRulerPanel.cpp:110
AdornedRulerPanel::QuickPlayRulerOverlay::mOldQPIndicatorPos
int mOldQPIndicatorPos
Definition: AdornedRulerPanel.cpp:153
IndicatorSmallWidth
@ IndicatorSmallWidth
Definition: AdornedRulerPanel.cpp:75
AdornedRulerPanel::QuickPlayRulerOverlay::mOldSeek
bool mOldSeek
Definition: AdornedRulerPanel.cpp:155
AdornedRulerPanel::QuickPlayRulerOverlay::mNewScrub
bool mNewScrub
Definition: AdornedRulerPanel.cpp:137
AdornedRulerPanel::QuickPlayRulerOverlay::mNewPreviewingScrub
bool mNewPreviewingScrub
Definition: AdornedRulerPanel.cpp:135
AdornedRulerPanel::QuickPlayRulerOverlay::Update
void Update()
Definition: AdornedRulerPanel.cpp:207
AdornedRulerPanel::QuickPlayRulerOverlay::GetRuler
AdornedRulerPanel * GetRuler() const
Definition: AdornedRulerPanel.cpp:202
AdornedRulerPanel::QuickPlayRulerOverlay::mNewSeek
bool mNewSeek
Definition: AdornedRulerPanel.cpp:138
AdornedRulerPanel::QuickPlayRulerOverlay::mNewQPIndicatorSnapped
bool mNewQPIndicatorSnapped
Definition: AdornedRulerPanel.cpp:134