From 73d9cfc5201586ca69798d5e00ddffa4f8b44a24 Mon Sep 17 00:00:00 2001 From: Leland Lucius Date: Tue, 19 May 2015 02:37:26 -0500 Subject: [PATCH] Fix background color on OSX --- src/effects/Compressor.cpp | 113 ++++++++++++++----------------------- src/effects/Compressor.h | 5 -- 2 files changed, 41 insertions(+), 77 deletions(-) diff --git a/src/effects/Compressor.cpp b/src/effects/Compressor.cpp index 8b27924a3..bff3e71e4 100644 --- a/src/effects/Compressor.cpp +++ b/src/effects/Compressor.cpp @@ -676,9 +676,6 @@ EffectCompressorPanel::EffectCompressorPanel(wxWindow *parent, noiseFloor(noiseFloor), ratio(ratio) { - mBitmap = NULL; - mWidth = 0; - mHeight = 0; } void EffectCompressorPanel::OnPaint(wxPaintEvent & WXUNUSED(evt)) @@ -688,15 +685,6 @@ void EffectCompressorPanel::OnPaint(wxPaintEvent & WXUNUSED(evt)) int width, height; GetSize(&width, &height); - if (!mBitmap || mWidth!=width || mHeight!=height) { - if (mBitmap) - delete mBitmap; - - mWidth = width; - mHeight = height; - mBitmap = new wxBitmap(mWidth, mHeight); - } - double rangeDB = 60; // Ruler @@ -704,7 +692,7 @@ void EffectCompressorPanel::OnPaint(wxPaintEvent & WXUNUSED(evt)) int h = 0; Ruler vRuler; - vRuler.SetBounds(0, 0, mWidth, mHeight); + vRuler.SetBounds(0, 0, width, height); vRuler.SetOrientation(wxVERTICAL); vRuler.SetRange(0, -rangeDB); vRuler.SetFormat(Ruler::LinearDBFormat); @@ -712,7 +700,7 @@ void EffectCompressorPanel::OnPaint(wxPaintEvent & WXUNUSED(evt)) vRuler.GetMaxSize(&w, NULL); Ruler hRuler; - hRuler.SetBounds(0, 0, mWidth, mHeight); + hRuler.SetBounds(0, 0, width, height); hRuler.SetOrientation(wxHORIZONTAL); hRuler.SetRange(-rangeDB, 0); hRuler.SetFormat(Ruler::LinearDBFormat); @@ -720,84 +708,65 @@ void EffectCompressorPanel::OnPaint(wxPaintEvent & WXUNUSED(evt)) hRuler.SetFlip(true); hRuler.GetMaxSize(NULL, &h); - vRuler.SetBounds(0, 0, w, mHeight - h); - hRuler.SetBounds(w, mHeight - h, mWidth, mHeight); + vRuler.SetBounds(0, 0, w, height - h); + hRuler.SetBounds(w, height - h, width, height); - wxColour bkgnd = GetBackgroundColour(); - wxBrush bkgndBrush(bkgnd, wxSOLID); - - wxMemoryDC memDC; - memDC.SelectObject(*mBitmap); - - wxRect bkgndRect; - bkgndRect.x = 0; - bkgndRect.y = 0; - bkgndRect.width = w; - bkgndRect.height = mHeight; - memDC.SetBrush(bkgndBrush); - memDC.SetPen(*wxTRANSPARENT_PEN); - memDC.DrawRectangle(bkgndRect); - - bkgndRect.y = mHeight - h; - bkgndRect.width = mWidth; - bkgndRect.height = h; - memDC.DrawRectangle(bkgndRect); +#if defined(__WXMSW__) + dc.Clear(); +#endif wxRect border; border.x = w; border.y = 0; - border.width = mWidth - w; - border.height = mHeight - h + 1; + border.width = width - w; + border.height = height - h + 1; - memDC.SetBrush(*wxWHITE_BRUSH); - memDC.SetPen(*wxBLACK_PEN); - memDC.DrawRectangle(border); + dc.SetBrush(*wxWHITE_BRUSH); + dc.SetPen(*wxBLACK_PEN); + dc.DrawRectangle(border); - mEnvRect = border; - mEnvRect.Deflate( 2, 2 ); + wxRect envRect = border; + envRect.Deflate( 2, 2 ); - int kneeX = lrint((rangeDB+threshold)*mEnvRect.width/rangeDB); - int kneeY = lrint((rangeDB+threshold/ratio)*mEnvRect.height/rangeDB); + int kneeX = lrint((rangeDB+threshold)*envRect.width/rangeDB); + int kneeY = lrint((rangeDB+threshold/ratio)*envRect.height/rangeDB); - int finalY = mEnvRect.height; - int startY = lrint((threshold*(1.0/ratio-1.0))*mEnvRect.height/rangeDB); + int finalY = envRect.height; + int startY = lrint((threshold*(1.0/ratio-1.0))*envRect.height/rangeDB); // Yellow line for threshold -/* memDC.SetPen(wxPen(wxColour(220, 220, 0), 1, wxSOLID)); - AColor::Line(memDC, - mEnvRect.x, - mEnvRect.y + mEnvRect.height - kneeY, - mEnvRect.x + mEnvRect.width - 1, - mEnvRect.y + mEnvRect.height - kneeY);*/ +/* dc.SetPen(wxPen(wxColour(220, 220, 0), 1, wxSOLID)); + AColor::Line(dc, + envRect.x, + envRect.y + envRect.height - kneeY, + envRect.x + envRect.width - 1, + envRect.y + envRect.height - kneeY);*/ // Was: Nice dark red line for the compression diagram -// memDC.SetPen(wxPen(wxColour(180, 40, 40), 3, wxSOLID)); +// dc.SetPen(wxPen(wxColour(180, 40, 40), 3, wxSOLID)); // Nice blue line for compressor, same color as used in the waveform envelope. - memDC.SetPen( AColor::WideEnvelopePen) ; + dc.SetPen( AColor::WideEnvelopePen) ; - AColor::Line(memDC, - mEnvRect.x, - mEnvRect.y + mEnvRect.height - startY, - mEnvRect.x + kneeX - 1, - mEnvRect.y + mEnvRect.height - kneeY); + AColor::Line(dc, + envRect.x, + envRect.y + envRect.height - startY, + envRect.x + kneeX - 1, + envRect.y + envRect.height - kneeY); - AColor::Line(memDC, - mEnvRect.x + kneeX, - mEnvRect.y + mEnvRect.height - kneeY, - mEnvRect.x + mEnvRect.width - 1, - mEnvRect.y + mEnvRect.height - finalY); + AColor::Line(dc, + envRect.x + kneeX, + envRect.y + envRect.height - kneeY, + envRect.x + envRect.width - 1, + envRect.y + envRect.height - finalY); // Paint border again - memDC.SetBrush(*wxTRANSPARENT_BRUSH); - memDC.SetPen(*wxBLACK_PEN); - memDC.DrawRectangle(border); + dc.SetBrush(*wxTRANSPARENT_BRUSH); + dc.SetPen(*wxBLACK_PEN); + dc.DrawRectangle(border); - vRuler.Draw(memDC); - hRuler.Draw(memDC); - - dc.Blit(0, 0, mWidth, mHeight, - &memDC, 0, 0, wxCOPY, FALSE); + vRuler.Draw(dc); + hRuler.Draw(dc); } void EffectCompressorPanel::OnSize(wxSizeEvent & WXUNUSED(evt)) diff --git a/src/effects/Compressor.h b/src/effects/Compressor.h index 67a423892..72944476b 100644 --- a/src/effects/Compressor.h +++ b/src/effects/Compressor.h @@ -151,11 +151,6 @@ private: double & noiseFloor; double & ratio; - wxBitmap *mBitmap; - wxRect mEnvRect; - int mWidth; - int mHeight; - DECLARE_EVENT_TABLE(); };