Commit Graph

38 Commits

Author SHA1 Message Date
Paul Licameli d92a68f076 ViewInfo does not depend on AudioIOBase...
... ViewInfo should only be concerned with screen geometry.

(And so it won't depend on AudioIO (even higher level) after stream time moves
there.)

PlaybackScroller receives the timer event directly (not from ViewInfo) and
caches playback position instead.  Then, as before, it propagates the event
to PlayIndicatorOverlay.
2021-05-14 16:25:14 -04:00
Paul Licameli e653b4aaf8 Eliminate Experimental.h, configure compile options instead...
... This makes it impossible to forget to include the EXPERIMENTAL definitions
(such as when cutting and pasting code) and so get unintended quiet changes of
behavior.

The EXPERIMENTAL flags are now specified instead in new file Experimental.cmake
2021-04-27 12:40:07 -04:00
Paul Licameli 5a2eaf9a52 Bug2303: Play after project open should start at saved cursor 2020-02-25 14:55:56 -05:00
Paul Licameli 33f3d4b82d Heavyweight version of SelectedRegion stored in ViewInfo emits events 2019-07-17 12:43:39 -04:00
Paul Licameli a99b746520 Move class ZoomInfo to separate files 2019-06-19 11:35:45 -04:00
Paul Licameli 490544cfd4 Lower EVT_TRACK_PANEL_TIMER into Project...
... so there are fewer dependencies on TrackPanel.

This frees ASlider, Ruler, and ViewInfo from cycles
2019-06-10 21:56:46 -04:00
Paul Licameli 42a4f55ffe Prepare to split AudioIOBase from AudioIO...
... New files, but (almost) empty; don't use the global variable gAudioIO,
but use one of two accessor function names (which are the same function for
now).

AudioIOBase will have fewer dependencies than AudioIO -- in particular, no
dependency on tracks.

It won't include StartStream.  It will contain functions to query the
present state of streams, and device capabilities.
2019-06-10 20:48:38 -04:00
Paul Licameli b5a57682b6 static ViewInfo::Get() and ZoomInfo::Get()...
... not member functions of AudacityProject
2019-05-23 12:58:47 -04:00
Paul Licameli 62899a32f4 All things with an UpdatePrefs() message listen for an event...
... Still to do, improve the handling of updates of only subsets of the prefs
2019-05-20 21:38:13 -04:00
Paul Licameli f4703bbd1f ViewInfo doesn't need Project.h 2019-05-18 14:57:24 -04:00
Paul Licameli 6c57948d8f Remove unnecessary #include-s from .cpp files...
... Unnecessary because transitively included.

But each .cpp file still includes its own .h file near the top to ensure
that it compiles indenendently, even if it is reincluded transitively later.
2019-05-16 17:21:00 -04:00
Paul Licameli 906e55f047 Experimental.h in all .h or .cpp files that directly use EXPERIMENTALs...
... except Audacity.h; and in no others.

Do so even if Experimental.h gets multiply included, as in both the .h and
.cpp files.

This makes it easier to do a text scan to be sure there are no unintended quiet
changes of meaning because of omission of Experimental.h when the flag is
an enabled one.

Also move inclusions of Experimental.h earlier.

Also don't require Experimental.h to be preceded by Audacity.h to define
EXPERIMENTAL_MIDI_OUT correctly.
2019-03-17 22:54:00 -04:00
Paul Licameli ac2fecf151 Don't rely on order of Bind to EVT_TRACK_PANEL_TIMER from project...
... instead, re-process the event, and let each handler bind to the one it
depends on.

This still leaves a critical ordering of construction of playback scroller and
play indicator overlay in AudacityProject::AudacityProject (reverse of the
previous), but that will be removed by other means.
2019-03-16 08:20:44 -04:00
Paul Licameli edd23e2634 Move AudacityProject::GetZoomOf* 2018-10-28 16:43:17 -04:00
James Crook 0cc9c6bc3b Zoom Toggle
Added preferences for Zoom-Toggle and put into menus.
New helper functions for determining zoom scaling.

Optional EXPERIMENTAL_ZOOM_TOGGLE_BUTTON added, and Light theme updated.
Not enabled for 2.2.2.
2018-01-07 17:14:33 +00:00
Paul Licameli 2806b509e2 Fix crashes in repainting, and update first visible track correctly 2017-06-26 15:20:35 -04:00
Paul Licameli 65c7beff99 Move mAdjustSelectionEdges from TrackPanel to ViewInfo 2017-06-08 15:30:52 -04:00
Steve Daulton 516570074b Add preference option for Stem Plot
Tracks 'behaviors' preferences split to sub-page to avoid over-long
page for Tracks preferences.
2017-04-27 15:16:05 +01:00
James Crook 028ed19d90 Sync with DarkAudacity 2017-04-02 23:07:13 +01:00
Paul Licameli b81cdee7e3 Comment where xml writing functions may throw 2017-03-18 11:45:05 -04:00
Paul Licameli 81285ee0c1 More const and override 2017-03-17 17:52:20 -04:00
Paul Licameli f993f1eadf Regularize casts as (int), so they are easier to find and review 2016-09-20 08:42:11 -04:00
James Crook 70f7ccb58b Fix Travis build. 2016-09-10 22:05:58 +01:00
James Crook 923eefaf90 Add code from merging.
This brings more of the code from DarkAudacity into Audacity, though not yet enabled.  This will make cherry picking later easier.
- Changing colour of html displays now possible, as colour links are visible for substitution.  (Can't use css as wxHTML is very limited).
- Export can now be preset to a particular format independent of preferences.
- SnapTo reversion on zoom now a DA controlled option.
- Caching of pinning preference for faster repaint because preferences are slow.
- Record Append now has sensible limit on number of tracks, rather than giving an error, and flipping the meaning of shift is now DA controlled.
2016-09-10 21:34:14 +01:00
Paul Licameli 4394ad1b70 Add a check item to Tracks menu for the scrolling beyond zero preference 2016-05-10 12:47:34 -04:00
Paul Licameli 1722ee9e32 Define TrackPanelOverlay, use it to reimplement play indicator and cursor...
... but scrub speed display is disabled
2016-04-18 14:31:36 -04:00
Paul Licameli c9fa5000fc Merge branch 'bug1197' 2016-01-28 10:38:44 -05:00
Paul Licameli f47cb3d528 Bug1197, yet again: extreme zoom-in behavior, now Mac specific: ...
...fix differing results on Mac by calculating only in double, so that selection
remains centered at extreme zoom-in for long projects (about 20 min.) and
selection after about 15 min.
2016-01-28 10:36:48 -05:00
James Crook 53b8fd534e Residuals from Bug 1296
Added forcing time64 to be positive.  Fixes problem where large negative value overflows into int.
More careful computation of TimeToPosition() so floor is only called with in range values.
Re-instated 'true' flags for hiddenMid calls, which I'd mistakenly dropped, so that (later) FishEye can distinguish.
2016-01-08 22:05:48 +00:00
Paul Licameli 6c6fc360ca Put the scroll-beyond-zero flag in just one place, ViewInfo 2015-08-26 23:17:20 -04:00
Paul Licameli 1b8f44d053 ViewInfo does not redundantly (or inconsistently!) store the screen width 2015-08-21 22:39:18 -04:00
Paul Licameli e0621819ed Move ENV_DB_RANGE out of Envelope.h; that file can be included in fewer places. 2015-07-28 11:55:52 -04:00
Paul Licameli 7bba4500c4 Move mdBr from TrackPanel to ViewInfo, no more lookup of prefs in Envelope.cpp 2015-07-28 11:53:01 -04:00
Paul Licameli a4482aa3af Stubs needed to eliminate remaining direct uses of ViewInfo::zoom ...
... and anticipate a problems fisheye will introduce with time ruler display
and horizontal scrolling past zero.

Will be used in waveform and spectrogram drawing, and in hit-test for sample
editing.  Those things will no longer make the assumption of uniform zoom
level across the width of the screen, though that does remain true without the
rest of the fisheye project.
2015-07-19 11:44:23 -04:00
Paul-Licameli 5a6d5d1443 Add and use some ZoomInfo and ViewInfo member functions, so we can eliminate...
... miscellaneous direct uses of ZoomInfo::zoom to test and set zoom level.

This includes all the remaining assignments to it.

But moving TrackInfo::PositionToTime and TrackInfo::TimeToPosition into
ZoomInfo and using them is needed to eliminate many more uses.

Also #if'd out the unused AudacityProject::OnZoomToggle().
2015-07-19 11:44:02 -04:00
Paul-Licameli 8ba9ea5621 ViewInfo has a base class, ZoomInfo, containing only what TrackArtist needs besides the SelectedRegion 2015-07-19 11:44:00 -04:00
Paul-Licameli ab21f75c77 ViewInfo is becoming a smart class, not a dumb struct
Now it has:
A constructor
XML attribute serializer functions (but no XML tag of its own)

Also removed unused lastZoom
2015-07-19 11:43:59 -04:00
Paul-Licameli 96585b3377 Add empty ViewInfo.cpp 2015-04-18 16:49:21 -04:00