Pass more context information into drawing routines
This commit is contained in:
parent
f09a7be3dc
commit
ada4b6307d
|
@ -311,11 +311,15 @@ static void DrawPoint(wxDC & dc, const wxRect & r, int x, int y, bool top)
|
|||
}
|
||||
}
|
||||
|
||||
#include "TrackPanelDrawingContext.h"
|
||||
|
||||
/// TODO: This should probably move to track artist.
|
||||
void Envelope::DrawPoints(wxDC & dc, const wxRect & r, const ZoomInfo &zoomInfo,
|
||||
bool dB, double dBRange,
|
||||
float zoomMin, float zoomMax, bool mirrored) const
|
||||
void Envelope::DrawPoints
|
||||
(TrackPanelDrawingContext &context, const wxRect & r, const ZoomInfo &zoomInfo,
|
||||
bool dB, double dBRange,
|
||||
float zoomMin, float zoomMax, bool mirrored) const
|
||||
{
|
||||
auto &dc = context.dc;
|
||||
dc.SetPen(AColor::envelopePen);
|
||||
dc.SetBrush(*wxWHITE_BRUSH);
|
||||
|
||||
|
|
|
@ -73,6 +73,7 @@ private:
|
|||
};
|
||||
|
||||
typedef std::vector<EnvPoint> EnvArray;
|
||||
struct TrackPanelDrawingContext;
|
||||
|
||||
class Envelope final : public XMLTagHandler {
|
||||
public:
|
||||
|
@ -117,7 +118,9 @@ public:
|
|||
XMLTagHandler *HandleXMLChild(const wxChar *tag) override;
|
||||
void WriteXML(XMLWriter &xmlFile) const /* not override */;
|
||||
|
||||
void DrawPoints(wxDC & dc, const wxRect & r, const ZoomInfo &zoomInfo,
|
||||
void DrawPoints(
|
||||
TrackPanelDrawingContext &context,
|
||||
const wxRect & r, const ZoomInfo &zoomInfo,
|
||||
bool dB, double dBRange,
|
||||
float zoomMin, float zoomMax, bool mirrored) const;
|
||||
|
||||
|
|
|
@ -773,13 +773,17 @@ namespace {
|
|||
}
|
||||
}
|
||||
|
||||
#include "TrackPanelDrawingContext.h"
|
||||
|
||||
/// Draw calls other functions to draw the LabelTrack.
|
||||
/// @param dc the device context
|
||||
/// @param r the LabelTrack rectangle.
|
||||
void LabelTrack::Draw(wxDC & dc, const wxRect & r,
|
||||
const SelectedRegion &selectedRegion,
|
||||
const ZoomInfo &zoomInfo) const
|
||||
void LabelTrack::Draw
|
||||
(TrackPanelDrawingContext &context, const wxRect & r,
|
||||
const SelectedRegion &selectedRegion,
|
||||
const ZoomInfo &zoomInfo) const
|
||||
{
|
||||
auto &dc = context.dc;
|
||||
auto pHit = findHit();
|
||||
|
||||
if(msFont.Ok())
|
||||
|
|
|
@ -40,6 +40,7 @@ class ZoomInfo;
|
|||
|
||||
|
||||
struct LabelTrackHit;
|
||||
struct TrackPanelDrawingContext;
|
||||
|
||||
class LabelStruct
|
||||
{
|
||||
|
@ -147,7 +148,7 @@ class AUDACITY_DLL_API LabelTrack final : public Track
|
|||
static wxFont GetFont(const wxString &faceName, int size = DefaultFontSize);
|
||||
static void ResetFont();
|
||||
|
||||
void Draw(wxDC & dc, const wxRect & r,
|
||||
void Draw(TrackPanelDrawingContext &context, const wxRect & r,
|
||||
const SelectedRegion &selectedRegion,
|
||||
const ZoomInfo &zoomInfo) const;
|
||||
|
||||
|
|
|
@ -32,6 +32,8 @@
|
|||
|
||||
#include "Experimental.h"
|
||||
|
||||
#include "TrackPanelDrawingContext.h"
|
||||
|
||||
// Globals, so that we remember settings from session to session
|
||||
wxPrintData &gPrintData()
|
||||
{
|
||||
|
@ -97,7 +99,9 @@ bool AudacityPrintout::OnPrintPage(int WXUNUSED(page))
|
|||
r.width = width;
|
||||
r.height = (int)(n->GetHeight() * scale);
|
||||
|
||||
artist.DrawTrack(n, *dc, r, SelectedRegion(), zoomInfo, false, false, false, false);
|
||||
TrackPanelDrawingContext context{ *dc, {}, {} };
|
||||
artist.DrawTrack(
|
||||
context, n, r, SelectedRegion(), zoomInfo, false, false, false, false);
|
||||
|
||||
dc->SetPen(*wxBLACK_PEN);
|
||||
AColor::Line(*dc, 0, r.y, width, r.y);
|
||||
|
|
|
@ -257,8 +257,13 @@ void TimeTrack::WriteXML(XMLWriter &xmlFile) const
|
|||
xmlFile.EndTag(wxT("timetrack"));
|
||||
}
|
||||
|
||||
void TimeTrack::Draw(wxDC & dc, const wxRect & r, const ZoomInfo &zoomInfo) const
|
||||
#include "TrackPanelDrawingContext.h"
|
||||
|
||||
void TimeTrack::Draw
|
||||
(TrackPanelDrawingContext &context, const wxRect & r, const ZoomInfo &zoomInfo) const
|
||||
{
|
||||
auto &dc = context.dc;
|
||||
|
||||
double min = zoomInfo.PositionToTime(0);
|
||||
double max = zoomInfo.PositionToTime(r.width);
|
||||
if (min > max)
|
||||
|
|
|
@ -22,6 +22,7 @@ class wxDC;
|
|||
class Envelope;
|
||||
class Ruler;
|
||||
class ZoomInfo;
|
||||
struct TrackPanelDrawingContext;
|
||||
|
||||
class EnvelopeHandle;
|
||||
|
||||
|
@ -67,7 +68,9 @@ class TimeTrack final : public Track {
|
|||
double GetStartTime() const override { return 0.0; }
|
||||
double GetEndTime() const override { return 0.0; }
|
||||
|
||||
void Draw(wxDC & dc, const wxRect & r, const ZoomInfo &zoomInfo) const;
|
||||
void Draw
|
||||
(TrackPanelDrawingContext &context,
|
||||
const wxRect & r, const ZoomInfo &zoomInfo) const;
|
||||
|
||||
// XMLTagHandler callback methods for loading and saving
|
||||
|
||||
|
|
|
@ -183,6 +183,8 @@ audio tracks.
|
|||
#include "Theme.h"
|
||||
#include "AllThemeResources.h"
|
||||
#include "Experimental.h"
|
||||
#include "TrackPanelDrawingContext.h"
|
||||
|
||||
|
||||
#undef PROFILE_WAVEFORM
|
||||
#ifdef PROFILE_WAVEFORM
|
||||
|
@ -315,9 +317,9 @@ void TrackArtist::SetMargins(int left, int top, int right, int bottom)
|
|||
mMarginBottom = bottom;
|
||||
}
|
||||
|
||||
void TrackArtist::DrawTracks(TrackList * tracks,
|
||||
void TrackArtist::DrawTracks(TrackPanelDrawingContext &context,
|
||||
TrackList * tracks,
|
||||
Track * start,
|
||||
wxDC & dc,
|
||||
const wxRegion & reg,
|
||||
const wxRect & rect,
|
||||
const wxRect & clip,
|
||||
|
@ -409,7 +411,7 @@ void TrackArtist::DrawTracks(TrackList * tracks,
|
|||
rr.y += mMarginTop;
|
||||
rr.width -= (mMarginLeft + mMarginRight);
|
||||
rr.height -= (mMarginTop + mMarginBottom);
|
||||
DrawTrack(t, dc, rr,
|
||||
DrawTrack(context, t, rr,
|
||||
selectedRegion, zoomInfo,
|
||||
drawEnvelope, bigPoints, drawSliders, hasSolo);
|
||||
}
|
||||
|
@ -438,8 +440,8 @@ void TrackArtist::DrawTracks(TrackList * tracks,
|
|||
}
|
||||
}
|
||||
|
||||
void TrackArtist::DrawTrack(const Track * t,
|
||||
wxDC & dc,
|
||||
void TrackArtist::DrawTrack(TrackPanelDrawingContext &context,
|
||||
const Track * t,
|
||||
const wxRect & rect,
|
||||
const SelectedRegion &selectedRegion,
|
||||
const ZoomInfo &zoomInfo,
|
||||
|
@ -448,6 +450,7 @@ void TrackArtist::DrawTrack(const Track * t,
|
|||
bool drawSliders,
|
||||
bool hasSolo)
|
||||
{
|
||||
auto &dc = context.dc;
|
||||
switch (t->GetKind()) {
|
||||
case Track::Wave:
|
||||
{
|
||||
|
@ -466,7 +469,7 @@ void TrackArtist::DrawTrack(const Track * t,
|
|||
|
||||
switch (wt->GetDisplay()) {
|
||||
case WaveTrack::Waveform:
|
||||
DrawWaveform(wt, dc, rect, selectedRegion, zoomInfo,
|
||||
DrawWaveform(context, wt, rect, selectedRegion, zoomInfo,
|
||||
drawEnvelope, bigPoints, drawSliders, muted);
|
||||
break;
|
||||
case WaveTrack::Spectrum:
|
||||
|
@ -503,16 +506,18 @@ void TrackArtist::DrawTrack(const Track * t,
|
|||
}
|
||||
#endif // USE_MIDI
|
||||
case Track::Label:
|
||||
DrawLabelTrack((LabelTrack *)t, dc, rect, selectedRegion, zoomInfo);
|
||||
DrawLabelTrack(context, (LabelTrack *)t, rect, selectedRegion, zoomInfo);
|
||||
break;
|
||||
case Track::Time:
|
||||
DrawTimeTrack((TimeTrack *)t, dc, rect, zoomInfo);
|
||||
DrawTimeTrack(context, (TimeTrack *)t, rect, zoomInfo);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void TrackArtist::DrawVRuler(const Track *t, wxDC * dc, wxRect & rect)
|
||||
void TrackArtist::DrawVRuler
|
||||
(TrackPanelDrawingContext &context, const Track *t, wxRect & rect)
|
||||
{
|
||||
auto dc = &context.dc;
|
||||
int kind = t->GetKind();
|
||||
|
||||
// Label and Time tracks do not have a vruler
|
||||
|
@ -1468,8 +1473,8 @@ void TrackArtist::DrawEnvLine(wxDC &dc, const wxRect &rect, int x0, int y0, int
|
|||
}
|
||||
}
|
||||
|
||||
void TrackArtist::DrawWaveform(const WaveTrack *track,
|
||||
wxDC & dc,
|
||||
void TrackArtist::DrawWaveform(TrackPanelDrawingContext &context,
|
||||
const WaveTrack *track,
|
||||
const wxRect & rect,
|
||||
const SelectedRegion &selectedRegion,
|
||||
const ZoomInfo &zoomInfo,
|
||||
|
@ -1478,13 +1483,14 @@ void TrackArtist::DrawWaveform(const WaveTrack *track,
|
|||
bool drawSliders,
|
||||
bool muted)
|
||||
{
|
||||
auto &dc = context.dc;
|
||||
const bool dB = !track->GetWaveformSettings().isLinear();
|
||||
|
||||
DrawBackgroundWithSelection(&dc, rect, track, blankSelectedBrush, blankBrush,
|
||||
selectedRegion, zoomInfo);
|
||||
|
||||
for (const auto &clip: track->GetClips())
|
||||
DrawClipWaveform(track, clip.get(), dc, rect, selectedRegion, zoomInfo,
|
||||
DrawClipWaveform(context, track, clip.get(), rect, selectedRegion, zoomInfo,
|
||||
drawEnvelope, bigPoints,
|
||||
dB, muted);
|
||||
|
||||
|
@ -1737,9 +1743,9 @@ void FindWavePortions
|
|||
}
|
||||
}
|
||||
|
||||
void TrackArtist::DrawClipWaveform(const WaveTrack *track,
|
||||
void TrackArtist::DrawClipWaveform(TrackPanelDrawingContext &context,
|
||||
const WaveTrack *track,
|
||||
const WaveClip *clip,
|
||||
wxDC & dc,
|
||||
const wxRect & rect,
|
||||
const SelectedRegion &selectedRegion,
|
||||
const ZoomInfo &zoomInfo,
|
||||
|
@ -1748,6 +1754,7 @@ void TrackArtist::DrawClipWaveform(const WaveTrack *track,
|
|||
bool dB,
|
||||
bool muted)
|
||||
{
|
||||
auto &dc = context.dc;
|
||||
#ifdef PROFILE_WAVEFORM
|
||||
Profiler profiler;
|
||||
#endif
|
||||
|
@ -1954,7 +1961,8 @@ void TrackArtist::DrawClipWaveform(const WaveTrack *track,
|
|||
|
||||
if (drawEnvelope) {
|
||||
DrawEnvelope(dc, mid, env, zoomMin, zoomMax, dB, dBRange);
|
||||
clip->GetEnvelope()->DrawPoints(dc, rect, zoomInfo, dB, dBRange, zoomMin, zoomMax, true);
|
||||
clip->GetEnvelope()->DrawPoints
|
||||
(context, rect, zoomInfo, dB, dBRange, zoomMin, zoomMax, true);
|
||||
}
|
||||
|
||||
// Draw arrows on the left side if the track extends to the left of the
|
||||
|
@ -3188,8 +3196,8 @@ void TrackArtist::DrawNoteTrack(const NoteTrack *track,
|
|||
#endif // USE_MIDI
|
||||
|
||||
|
||||
void TrackArtist::DrawLabelTrack(const LabelTrack *track,
|
||||
wxDC & dc,
|
||||
void TrackArtist::DrawLabelTrack(TrackPanelDrawingContext &context,
|
||||
const LabelTrack *track,
|
||||
const wxRect & rect,
|
||||
const SelectedRegion &selectedRegion,
|
||||
const ZoomInfo &zoomInfo)
|
||||
|
@ -3200,15 +3208,15 @@ void TrackArtist::DrawLabelTrack(const LabelTrack *track,
|
|||
if (!track->GetSelected() && !track->IsSyncLockSelected())
|
||||
sel0 = sel1 = 0.0;
|
||||
|
||||
track->Draw(dc, rect, SelectedRegion(sel0, sel1), zoomInfo);
|
||||
track->Draw(context, rect, SelectedRegion(sel0, sel1), zoomInfo);
|
||||
}
|
||||
|
||||
void TrackArtist::DrawTimeTrack(const TimeTrack *track,
|
||||
wxDC & dc,
|
||||
void TrackArtist::DrawTimeTrack(TrackPanelDrawingContext &context,
|
||||
const TimeTrack *track,
|
||||
const wxRect & rect,
|
||||
const ZoomInfo &zoomInfo)
|
||||
{
|
||||
track->Draw(dc, rect, zoomInfo);
|
||||
track->Draw(context, rect, zoomInfo);
|
||||
wxRect envRect = rect;
|
||||
envRect.height -= 2;
|
||||
double lower = track->GetRangeLower(), upper = track->GetRangeUpper();
|
||||
|
@ -3217,8 +3225,9 @@ void TrackArtist::DrawTimeTrack(const TimeTrack *track,
|
|||
lower = LINEAR_TO_DB(std::max(1.0e-7, lower)) / mdBrange + 1.0;
|
||||
upper = LINEAR_TO_DB(std::max(1.0e-7, upper)) / mdBrange + 1.0;
|
||||
}
|
||||
track->GetEnvelope()->DrawPoints(dc, envRect, zoomInfo,
|
||||
track->GetDisplayLog(), mdBrange, lower, upper, false);
|
||||
track->GetEnvelope()->DrawPoints
|
||||
(context, envRect, zoomInfo,
|
||||
track->GetDisplayLog(), mdBrange, lower, upper, false);
|
||||
}
|
||||
|
||||
void TrackArtist::UpdatePrefs()
|
||||
|
|
|
@ -41,6 +41,8 @@ class Ruler;
|
|||
class SelectedRegion;
|
||||
class ZoomInfo;
|
||||
|
||||
struct TrackPanelDrawingContext;
|
||||
|
||||
#ifndef uchar
|
||||
typedef unsigned char uchar;
|
||||
#endif
|
||||
|
@ -52,19 +54,22 @@ class AUDACITY_DLL_API TrackArtist {
|
|||
~TrackArtist();
|
||||
|
||||
void SetColours();
|
||||
void DrawTracks(TrackList *tracks, Track *start,
|
||||
wxDC & dc, const wxRegion & reg,
|
||||
void DrawTracks(TrackPanelDrawingContext &context,
|
||||
TrackList *tracks, Track *start,
|
||||
const wxRegion & reg,
|
||||
const wxRect & rect, const wxRect & clip,
|
||||
const SelectedRegion &selectedRegion, const ZoomInfo &zoomInfo,
|
||||
bool drawEnvelope, bool bigPoints, bool drawSliders);
|
||||
|
||||
void DrawTrack(const Track *t,
|
||||
wxDC & dc, const wxRect & rect,
|
||||
void DrawTrack(TrackPanelDrawingContext &context,
|
||||
const Track *t,
|
||||
const wxRect & rect,
|
||||
const SelectedRegion &selectedRegion, const ZoomInfo &zoomInfo,
|
||||
bool drawEnvelope, bool bigPoints, bool drawSliders,
|
||||
bool hasSolo);
|
||||
|
||||
void DrawVRuler(const Track *t, wxDC *dc, wxRect & rect);
|
||||
void DrawVRuler(TrackPanelDrawingContext &context,
|
||||
const Track *t, wxRect & rect);
|
||||
|
||||
void UpdateVRuler(const Track *t, wxRect & rect);
|
||||
|
||||
|
@ -94,8 +99,9 @@ class AUDACITY_DLL_API TrackArtist {
|
|||
// Lower-level drawing functions
|
||||
//
|
||||
|
||||
void DrawWaveform(const WaveTrack *track,
|
||||
wxDC & dc, const wxRect & rect,
|
||||
void DrawWaveform(TrackPanelDrawingContext &context,
|
||||
const WaveTrack *track,
|
||||
const wxRect & rect,
|
||||
const SelectedRegion &selectedRegion, const ZoomInfo &zoomInfo,
|
||||
bool drawEnvelope, bool bigPoints, bool drawSliders,
|
||||
bool muted);
|
||||
|
@ -117,18 +123,21 @@ class AUDACITY_DLL_API TrackArtist {
|
|||
bool muted);
|
||||
#endif // USE_MIDI
|
||||
|
||||
void DrawLabelTrack(const LabelTrack *track,
|
||||
wxDC & dc, const wxRect & rect,
|
||||
void DrawLabelTrack(TrackPanelDrawingContext &context,
|
||||
const LabelTrack *track,
|
||||
const wxRect & rect,
|
||||
const SelectedRegion &selectedRegion, const ZoomInfo &zoomInfo);
|
||||
|
||||
void DrawTimeTrack(const TimeTrack *track,
|
||||
wxDC & dc, const wxRect & rect, const ZoomInfo &zoomInfo);
|
||||
void DrawTimeTrack(TrackPanelDrawingContext &context,
|
||||
const TimeTrack *track,
|
||||
const wxRect & rect, const ZoomInfo &zoomInfo);
|
||||
|
||||
void DrawTimeSlider(wxDC & dc, const wxRect & rect,
|
||||
bool rightwards);
|
||||
|
||||
void DrawClipWaveform(const WaveTrack *track, const WaveClip *clip,
|
||||
wxDC & dc, const wxRect & rect,
|
||||
void DrawClipWaveform(TrackPanelDrawingContext &context,
|
||||
const WaveTrack *track, const WaveClip *clip,
|
||||
const wxRect & rect,
|
||||
const SelectedRegion &selectedRegion, const ZoomInfo &zoomInfo,
|
||||
bool drawEnvelope, bool bigPoints,
|
||||
bool dB, bool muted);
|
||||
|
|
|
@ -1718,26 +1718,28 @@ void TrackPanel::DrawTracks(wxDC * dc)
|
|||
bool bigPointsFlag = pTtb->IsDown(drawTool) || bMultiToolDown;
|
||||
bool sliderFlag = bMultiToolDown;
|
||||
|
||||
TrackPanelDrawingContext context{ *dc, Target(), mLastMouseState };
|
||||
|
||||
// The track artist actually draws the stuff inside each track
|
||||
auto first = GetProject()->GetFirstVisible();
|
||||
mTrackArtist->DrawTracks(GetTracks(), first.get(),
|
||||
*dc, region, tracksRect, clip,
|
||||
mTrackArtist->DrawTracks(context, GetTracks(), first.get(),
|
||||
region, tracksRect, clip,
|
||||
mViewInfo->selectedRegion, *mViewInfo,
|
||||
envelopeFlag, bigPointsFlag, sliderFlag);
|
||||
|
||||
DrawEverythingElse(dc, region, clip);
|
||||
DrawEverythingElse(context, region, clip);
|
||||
}
|
||||
|
||||
/// Draws 'Everything else'. In particular it draws:
|
||||
/// - Drop shadow for tracks and vertical rulers.
|
||||
/// - Zooming Indicators.
|
||||
/// - Fills in space below the tracks.
|
||||
void TrackPanel::DrawEverythingElse(wxDC * dc,
|
||||
void TrackPanel::DrawEverythingElse(TrackPanelDrawingContext &context,
|
||||
const wxRegion ®ion,
|
||||
const wxRect & clip)
|
||||
{
|
||||
// We draw everything else
|
||||
|
||||
auto dc = &context.dc;
|
||||
wxRect focusRect(-1, -1, 0, 0);
|
||||
wxRect trackRect = clip;
|
||||
trackRect.height = 0; // for drawing background in no tracks case.
|
||||
|
@ -1787,7 +1789,7 @@ void TrackPanel::DrawEverythingElse(wxDC * dc,
|
|||
if (mAx->IsFocused(t)) {
|
||||
focusRect = borderRect;
|
||||
}
|
||||
DrawOutside(borderTrack, dc, borderRect);
|
||||
DrawOutside(context, borderTrack, borderRect);
|
||||
}
|
||||
|
||||
// Believe it or not, we can speed up redrawing if we don't
|
||||
|
@ -1806,7 +1808,7 @@ void TrackPanel::DrawEverythingElse(wxDC * dc,
|
|||
rect.y += kTopMargin;
|
||||
rect.width = GetVRulerWidth();
|
||||
rect.height -= (kTopMargin + kBottomMargin);
|
||||
mTrackArtist->DrawVRuler(t, dc, rect);
|
||||
mTrackArtist->DrawVRuler(context, t, rect);
|
||||
}
|
||||
|
||||
#ifdef EXPERIMENTAL_OUTPUT_DISPLAY
|
||||
|
@ -1819,7 +1821,7 @@ void TrackPanel::DrawEverythingElse(wxDC * dc,
|
|||
rect.y += kTopMargin;
|
||||
rect.width = GetVRulerWidth();
|
||||
rect.height -= (kTopMargin + kBottomMargin);
|
||||
mTrackArtist->DrawVRuler(t, dc, rect);
|
||||
mTrackArtist->DrawVRuler(context, t, rect);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
@ -2279,15 +2281,18 @@ void TrackInfo::Status2DrawFunction
|
|||
StatusDrawFunction( s, dc, rect );
|
||||
}
|
||||
|
||||
void TrackPanel::DrawOutside(Track * t, wxDC * dc, const wxRect & rec)
|
||||
void TrackPanel::DrawOutside
|
||||
(TrackPanelDrawingContext &context,
|
||||
Track * t, const wxRect & rec)
|
||||
{
|
||||
auto dc = &context.dc;
|
||||
bool bIsWave = (t->GetKind() == Track::Wave);
|
||||
|
||||
// Draw things that extend right of track control panel
|
||||
{
|
||||
// Start with whole track rect
|
||||
wxRect rect = rec;
|
||||
DrawOutsideOfTrack(t, dc, rect);
|
||||
DrawOutsideOfTrack(context, t, rect);
|
||||
|
||||
// Now exclude left, right, and top insets
|
||||
rect.x += kLeftInset;
|
||||
|
@ -2319,7 +2324,6 @@ void TrackPanel::DrawOutside(Track * t, wxDC * dc, const wxRect & rec)
|
|||
rect.y += kTopMargin;
|
||||
rect.height -= (kBottomMargin + kTopMargin);
|
||||
|
||||
TrackPanelDrawingContext context{ *dc, Target(), mLastMouseState };
|
||||
TrackInfo::DrawItems( context, rect, *t );
|
||||
|
||||
//mTrackInfo.DrawBordersWithin( dc, rect, *t );
|
||||
|
@ -2329,8 +2333,11 @@ void TrackPanel::DrawOutside(Track * t, wxDC * dc, const wxRect & rec)
|
|||
// Paint the inset areas left, top, and right in a background color
|
||||
// If linked to a following channel, also paint the separator area, which
|
||||
// overlaps the next track rectangle's top
|
||||
void TrackPanel::DrawOutsideOfTrack(Track * t, wxDC * dc, const wxRect & rect)
|
||||
void TrackPanel::DrawOutsideOfTrack
|
||||
(TrackPanelDrawingContext &context, Track * t, const wxRect & rect)
|
||||
{
|
||||
auto dc = &context.dc;
|
||||
|
||||
// Fill in area outside of the track
|
||||
AColor::TrackPanelBackground(dc, false);
|
||||
wxRect side;
|
||||
|
|
|
@ -171,7 +171,6 @@ public:
|
|||
|
||||
void DrawBackground(wxDC * dc, const wxRect & rect, bool bSelected, bool bHasMuteSolo, const int labelw, const int vrul) const;
|
||||
void DrawBordersWithin(wxDC * dc, const wxRect & rect, const Track &track ) const;
|
||||
void DrawVRuler(wxDC * dc, const wxRect & rect, Track * t) const;
|
||||
|
||||
static void GetCloseBoxHorizontalBounds( const wxRect & rect, wxRect &dest );
|
||||
static void GetCloseBoxRect(const wxRect & rect, wxRect &dest);
|
||||
|
@ -412,14 +411,19 @@ public:
|
|||
protected:
|
||||
void DrawTracks(wxDC * dc);
|
||||
|
||||
void DrawEverythingElse(wxDC *dc, const wxRegion & region,
|
||||
void DrawEverythingElse(TrackPanelDrawingContext &context,
|
||||
const wxRegion & region,
|
||||
const wxRect & clip);
|
||||
void DrawOutside(Track *t, wxDC *dc, const wxRect & rec);
|
||||
void DrawOutside
|
||||
(TrackPanelDrawingContext &context,
|
||||
Track *t, const wxRect & rec);
|
||||
|
||||
void HighlightFocusedTrack (wxDC* dc, const wxRect &rect);
|
||||
void DrawShadow (Track *t, wxDC* dc, const wxRect & rect);
|
||||
void DrawBordersAroundTrack(Track *t, wxDC* dc, const wxRect & rect, const int labelw, const int vrul);
|
||||
void DrawOutsideOfTrack (Track *t, wxDC* dc, const wxRect & rect);
|
||||
void DrawOutsideOfTrack
|
||||
(TrackPanelDrawingContext &context,
|
||||
Track *t, const wxRect & rect);
|
||||
|
||||
public:
|
||||
// Set the object that performs catch-all event handling when the pointer
|
||||
|
|
|
@ -2871,6 +2871,7 @@ void EqualizationPanel::OnSize(wxSizeEvent & WXUNUSED(event))
|
|||
Refresh( false );
|
||||
}
|
||||
|
||||
#include "TrackPanelDrawingContext.h"
|
||||
void EqualizationPanel::OnPaint(wxPaintEvent & WXUNUSED(event))
|
||||
{
|
||||
wxPaintDC dc(this);
|
||||
|
@ -3038,8 +3039,10 @@ void EqualizationPanel::OnPaint(wxPaintEvent & WXUNUSED(event))
|
|||
memDC.SetPen(*wxBLACK_PEN);
|
||||
if( mEffect->mDraw->GetValue() )
|
||||
{
|
||||
mEffect->mEnvelope->DrawPoints(memDC, mEnvRect, ZoomInfo(0.0, mEnvRect.width-1), false, 0.0,
|
||||
mEffect->mdBMin, mEffect->mdBMax, false);
|
||||
TrackPanelDrawingContext context{ memDC, {}, {} };
|
||||
mEffect->mEnvelope->DrawPoints(
|
||||
context, mEnvRect, ZoomInfo(0.0, mEnvRect.width-1), false, 0.0,
|
||||
mEffect->mdBMin, mEffect->mdBMax, false);
|
||||
}
|
||||
|
||||
dc.Blit(0, 0, mWidth, mHeight, &memDC, 0, 0, wxCOPY, FALSE);
|
||||
|
|
Loading…
Reference in New Issue