From 29f333227638c36485faa2e891dabbac2f64e56c Mon Sep 17 00:00:00 2001 From: Ales Pergl Date: Mon, 3 Apr 2017 12:11:39 +0200 Subject: [PATCH] Address cpplint issue "{ should almost always be at the end of the previous line [whitespace/braces] [4]" --- .../win/notification_presenter_win7.cc | 21 +- .../browser/win/notification_presenter_win7.h | 3 +- .../win/win32_desktop_notifications/common.h | 18 +- .../desktop_notification_controller.cc | 153 +++++-------- .../desktop_notification_controller.h | 9 +- .../win/win32_desktop_notifications/toast.cc | 201 ++++++------------ .../win/win32_desktop_notifications/toast.h | 21 +- brightray/browser/win/win32_notification.cc | 18 +- brightray/browser/win/win32_notification.h | 12 +- 9 files changed, 152 insertions(+), 304 deletions(-) diff --git a/brightray/browser/win/notification_presenter_win7.cc b/brightray/browser/win/notification_presenter_win7.cc index 3ce59901069f..cdbdfc803d49 100644 --- a/brightray/browser/win/notification_presenter_win7.cc +++ b/brightray/browser/win/notification_presenter_win7.cc @@ -4,16 +4,13 @@ namespace brightray { brightray::Notification* NotificationPresenterWin7::CreateNotificationObject( - NotificationDelegate* delegate) -{ + NotificationDelegate* delegate) { return new Win32Notification(delegate, this); } Win32Notification* NotificationPresenterWin7::GetNotificationObjectByRef( - const DesktopNotificationController::Notification& ref) -{ - for(auto n : this->notifications()) - { + const DesktopNotificationController::Notification& ref) { + for(auto n : this->notifications()) { auto w32n = static_cast(n); if(w32n->GetRef() == ref) return w32n; @@ -23,10 +20,8 @@ Win32Notification* NotificationPresenterWin7::GetNotificationObjectByRef( } Win32Notification* NotificationPresenterWin7::GetNotificationObjectByTag( - const std::string& tag) -{ - for(auto n : this->notifications()) - { + const std::string& tag) { + for(auto n : this->notifications()) { auto w32n = static_cast(n); if(w32n->GetTag() == tag) return w32n; @@ -36,15 +31,13 @@ Win32Notification* NotificationPresenterWin7::GetNotificationObjectByTag( } void NotificationPresenterWin7::OnNotificationClicked( - Notification& notification) -{ + Notification& notification) { auto n = GetNotificationObjectByRef(notification); if(n) n->NotificationClicked(); } void NotificationPresenterWin7::OnNotificationDismissed( - Notification& notification) -{ + Notification& notification) { auto n = GetNotificationObjectByRef(notification); if(n) n->NotificationDismissed(); } diff --git a/brightray/browser/win/notification_presenter_win7.h b/brightray/browser/win/notification_presenter_win7.h index bdc5afdb2af1..2b352aad8afa 100644 --- a/brightray/browser/win/notification_presenter_win7.h +++ b/brightray/browser/win/notification_presenter_win7.h @@ -8,8 +8,7 @@ class Win32Notification; class NotificationPresenterWin7 : public NotificationPresenter, - public DesktopNotificationController -{ + public DesktopNotificationController { public: NotificationPresenterWin7() = default; diff --git a/brightray/browser/win/win32_desktop_notifications/common.h b/brightray/browser/win/win32_desktop_notifications/common.h index d6611bf42056..f68ca396086e 100644 --- a/brightray/browser/win/win32_desktop_notifications/common.h +++ b/brightray/browser/win/win32_desktop_notifications/common.h @@ -3,8 +3,7 @@ namespace brightray { -struct NotificationData -{ +struct NotificationData { DesktopNotificationController* controller = nullptr; std::wstring caption; @@ -14,8 +13,7 @@ struct NotificationData NotificationData() = default; - ~NotificationData() - { + ~NotificationData() { if(image) DeleteObject(image); } @@ -24,23 +22,19 @@ struct NotificationData }; template -inline T ScaleForDpi(T value, unsigned dpi) -{ +inline T ScaleForDpi(T value, unsigned dpi) { return value * dpi / 96; } -struct ScreenMetrics -{ +struct ScreenMetrics { UINT dpi_x, dpi_y; - ScreenMetrics() - { + ScreenMetrics() { typedef HRESULT WINAPI GetDpiForMonitor_t(HMONITOR, int, UINT*, UINT*); auto GetDpiForMonitor = (GetDpiForMonitor_t*)GetProcAddress(GetModuleHandle(TEXT("shcore")), "GetDpiForMonitor"); - if(GetDpiForMonitor) - { + if(GetDpiForMonitor) { auto monitor = MonitorFromPoint({}, MONITOR_DEFAULTTOPRIMARY); if(GetDpiForMonitor(monitor, 0, &dpi_x, &dpi_y) == S_OK) return; diff --git a/brightray/browser/win/win32_desktop_notifications/desktop_notification_controller.cc b/brightray/browser/win/win32_desktop_notifications/desktop_notification_controller.cc index 7213f4382c99..072be5065348 100644 --- a/brightray/browser/win/win32_desktop_notifications/desktop_notification_controller.cc +++ b/brightray/browser/win/win32_desktop_notifications/desktop_notification_controller.cc @@ -12,19 +12,16 @@ using std::shared_ptr; namespace brightray { -HBITMAP CopyBitmap(HBITMAP bitmap) -{ +HBITMAP CopyBitmap(HBITMAP bitmap) { HBITMAP ret = NULL; BITMAP bm; - if(bitmap && GetObject(bitmap, sizeof(bm), &bm)) - { + if(bitmap && GetObject(bitmap, sizeof(bm), &bm)) { HDC hdcScreen = GetDC(NULL); ret = CreateCompatibleBitmap(hdcScreen, bm.bmWidth, bm.bmHeight); ReleaseDC(NULL, hdcScreen); - if(ret) - { + if(ret) { HDC hdcSrc = CreateCompatibleDC(NULL); HDC hdcDst = CreateCompatibleDC(NULL); SelectBitmap(hdcSrc, bitmap); @@ -39,8 +36,7 @@ HBITMAP CopyBitmap(HBITMAP bitmap) return ret; } -HINSTANCE DesktopNotificationController::RegisterWndClasses() -{ +HINSTANCE DesktopNotificationController::RegisterWndClasses() { // We keep a static `module` variable which serves a dual purpose: // 1. Stores the HINSTANCE where the window classes are registered, // which can be passed to `CreateWindow` @@ -49,13 +45,11 @@ HINSTANCE DesktopNotificationController::RegisterWndClasses() // as there is no point). static HMODULE module = NULL; - if(!module) - { + if(!module) { if(GetModuleHandleEx(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS | GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT, reinterpret_cast(&RegisterWndClasses), - &module)) - { + &module)) { Toast::Register(module); WNDCLASSEX wc = { sizeof(wc) }; @@ -72,23 +66,19 @@ HINSTANCE DesktopNotificationController::RegisterWndClasses() } DesktopNotificationController::DesktopNotificationController( - unsigned maximumToasts) -{ + unsigned maximumToasts) { instances_.reserve(maximumToasts); } -DesktopNotificationController::~DesktopNotificationController() -{ +DesktopNotificationController::~DesktopNotificationController() { for(auto&& inst : instances_) DestroyToast(inst); if(hwnd_controller_) DestroyWindow(hwnd_controller_); ClearAssets(); } LRESULT CALLBACK DesktopNotificationController::WndProc( - HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) -{ - switch(message) - { + HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { + switch(message) { case WM_CREATE: { auto& cs = reinterpret_cast(lParam); @@ -97,8 +87,7 @@ LRESULT CALLBACK DesktopNotificationController::WndProc( break; case WM_TIMER: - if(wParam == TimerID_Animate) - { + if(wParam == TimerID_Animate) { Get(hWnd)->AnimateAll(); } return 0; @@ -112,8 +101,7 @@ LRESULT CALLBACK DesktopNotificationController::WndProc( break; case WM_SETTINGCHANGE: - if(wParam == SPI_SETWORKAREA) - { + if(wParam == SPI_SETWORKAREA) { Get(hWnd)->AnimateAll(); } break; @@ -122,12 +110,10 @@ LRESULT CALLBACK DesktopNotificationController::WndProc( return DefWindowProc(hWnd, message, wParam, lParam); } -void DesktopNotificationController::StartAnimation() -{ +void DesktopNotificationController::StartAnimation() { _ASSERT(hwnd_controller_); - if(!is_animating_ && hwnd_controller_) - { + if(!is_animating_ && hwnd_controller_) { // NOTE: 15ms is shorter than what we'd need for 60 fps, but since // the timer is not accurate we must request a higher frame rate // to get at least 60 @@ -137,25 +123,20 @@ void DesktopNotificationController::StartAnimation() } } -HFONT DesktopNotificationController::GetCaptionFont() -{ +HFONT DesktopNotificationController::GetCaptionFont() { InitializeFonts(); return caption_font_; } -HFONT DesktopNotificationController::GetBodyFont() -{ +HFONT DesktopNotificationController::GetBodyFont() { InitializeFonts(); return body_font_; } -void DesktopNotificationController::InitializeFonts() -{ - if(!body_font_) - { +void DesktopNotificationController::InitializeFonts() { + if(!body_font_) { NONCLIENTMETRICS metrics = { sizeof(metrics) }; - if(SystemParametersInfo(SPI_GETNONCLIENTMETRICS, 0, &metrics, 0)) - { + if(SystemParametersInfo(SPI_GETNONCLIENTMETRICS, 0, &metrics, 0)) { auto baseHeight = metrics.lfMessageFont.lfHeight; HDC hdc = GetDC(NULL); @@ -174,32 +155,27 @@ void DesktopNotificationController::InitializeFonts() } } -void DesktopNotificationController::ClearAssets() -{ +void DesktopNotificationController::ClearAssets() { if(caption_font_) { DeleteFont(caption_font_); caption_font_ = NULL; } if(body_font_) { DeleteFont(body_font_); body_font_ = NULL; } } -void DesktopNotificationController::AnimateAll() -{ +void DesktopNotificationController::AnimateAll() { // NOTE: This function refreshes position and size of all toasts according // to all current conditions. Animation time is only one of the variables // influencing them. Screen resolution is another. bool keepAnimating = false; - if(!instances_.empty()) - { + if(!instances_.empty()) { RECT workArea; - if(SystemParametersInfo(SPI_GETWORKAREA, 0, &workArea, 0)) - { + if(SystemParametersInfo(SPI_GETWORKAREA, 0, &workArea, 0)) { ScreenMetrics metrics; POINT origin = { workArea.right, workArea.bottom - metrics.Y(toast_margin_) }; auto hdwp = BeginDeferWindowPos((int)instances_.size()); - for(auto&& inst : instances_) - { + for(auto&& inst : instances_) { if(!inst.hwnd) continue; auto notification = Toast::Get(inst.hwnd); @@ -211,8 +187,7 @@ void DesktopNotificationController::AnimateAll() } } - if(!keepAnimating) - { + if(!keepAnimating) { _ASSERT(hwnd_controller_); if(hwnd_controller_) KillTimer(hwnd_controller_, TimerID_Animate); is_animating_ = false; @@ -220,8 +195,7 @@ void DesktopNotificationController::AnimateAll() // Purge dismissed notifications and collapse the stack between // items which are highlighted - if(!instances_.empty()) - { + if(!instances_.empty()) { auto isAlive = [](ToastInstance& inst) { return inst.hwnd && IsWindowVisible(inst.hwnd); }; @@ -230,8 +204,7 @@ void DesktopNotificationController::AnimateAll() return inst.hwnd && Toast::Get(inst.hwnd)->IsHighlighted(); }; - for(auto it = instances_.begin();; ++it) - { + for(auto it = instances_.begin();; ++it) { // find next highlighted item auto it2 = find_if(it, instances_.end(), isHighlighted); @@ -241,8 +214,7 @@ void DesktopNotificationController::AnimateAll() // purge the dead items for_each(it, it2, [this](auto&& inst) { DestroyToast(inst); }); - if(it2 == instances_.end()) - { + if(it2 == instances_.end()) { instances_.erase(it, it2); break; } @@ -252,16 +224,13 @@ void DesktopNotificationController::AnimateAll() } // Set new toast positions - if(!instances_.empty()) - { + if(!instances_.empty()) { ScreenMetrics metrics; auto margin = metrics.Y(toast_margin_); int targetPos = 0; - for(auto&& inst : instances_) - { - if(inst.hwnd) - { + for(auto&& inst : instances_) { + if(inst.hwnd) { auto toast = Toast::Get(inst.hwnd); if(toast->IsHighlighted()) @@ -280,8 +249,7 @@ void DesktopNotificationController::AnimateAll() DesktopNotificationController::Notification DesktopNotificationController::AddNotification( - std::wstring caption, std::wstring bodyText, HBITMAP image) -{ + std::wstring caption, std::wstring bodyText, HBITMAP image) { NotificationLink data(this); data->caption = move(caption); @@ -295,12 +263,10 @@ DesktopNotificationController::Notification } void DesktopNotificationController::CloseNotification( - Notification& notification) -{ + Notification& notification) { // Remove it from the queue auto it = find(queue_.begin(), queue_.end(), notification.data_); - if(it != queue_.end()) - { + if(it != queue_.end()) { queue_.erase(it); this->OnNotificationClosed(notification); return; @@ -308,31 +274,25 @@ void DesktopNotificationController::CloseNotification( // Dismiss active toast auto hwnd = GetToast(notification.data_.get()); - if(hwnd) - { + if(hwnd) { auto toast = Toast::Get(hwnd); toast->Dismiss(); } } -void DesktopNotificationController::CheckQueue() -{ - while(instances_.size() < instances_.capacity() && !queue_.empty()) - { +void DesktopNotificationController::CheckQueue() { + while(instances_.size() < instances_.capacity() && !queue_.empty()) { CreateToast(move(queue_.front())); queue_.pop_front(); } } -void DesktopNotificationController::CreateToast(NotificationLink&& data) -{ +void DesktopNotificationController::CreateToast(NotificationLink&& data) { auto hInstance = RegisterWndClasses(); auto hwnd = Toast::Create(hInstance, data); - if(hwnd) - { + if(hwnd) { int toastPos = 0; - if(!instances_.empty()) - { + if(!instances_.empty()) { auto& item = instances_.back(); _ASSERT(item.hwnd); @@ -345,8 +305,7 @@ void DesktopNotificationController::CreateToast(NotificationLink&& data) instances_.push_back({ hwnd, move(data) }); - if(!hwnd_controller_) - { + if(!hwnd_controller_) { // NOTE: We cannot use a message-only window because we need to // receive system notifications hwnd_controller_ = CreateWindow(class_name_, nullptr, 0, @@ -360,8 +319,7 @@ void DesktopNotificationController::CreateToast(NotificationLink&& data) } HWND DesktopNotificationController::GetToast( - const NotificationData* data) const -{ + const NotificationData* data) const { auto it = find_if(instances_.cbegin(), instances_.cend(), [data](auto&& inst) { auto toast = Toast::Get(inst.hwnd); @@ -371,10 +329,8 @@ HWND DesktopNotificationController::GetToast( return (it != instances_.cend()) ? it->hwnd : NULL; } -void DesktopNotificationController::DestroyToast(ToastInstance& inst) -{ - if(inst.hwnd) - { +void DesktopNotificationController::DestroyToast(ToastInstance& inst) { + if(inst.hwnd) { auto data = Toast::Get(inst.hwnd)->GetNotification(); DestroyWindow(inst.hwnd); @@ -388,19 +344,16 @@ void DesktopNotificationController::DestroyToast(ToastInstance& inst) DesktopNotificationController::Notification::Notification( const shared_ptr& data) : - data_(data) -{ + data_(data) { _ASSERT(data != nullptr); } bool DesktopNotificationController::Notification::operator==( - const Notification& other) const -{ + const Notification& other) const { return data_ == other.data_; } -void DesktopNotificationController::Notification::Close() -{ +void DesktopNotificationController::Notification::Close() { // No business calling this when not pointing to a valid instance _ASSERT(data_); @@ -409,8 +362,7 @@ void DesktopNotificationController::Notification::Close() } void DesktopNotificationController::Notification::Set( - std::wstring caption, std::wstring bodyText, HBITMAP image) -{ + std::wstring caption, std::wstring bodyText, HBITMAP image) { // No business calling this when not pointing to a valid instance _ASSERT(data_); @@ -425,8 +377,7 @@ void DesktopNotificationController::Notification::Set( data_->image = CopyBitmap(image); auto hwnd = data_->controller->GetToast(data_.get()); - if(hwnd) - { + if(hwnd) { auto toast = Toast::Get(hwnd); toast->ResetContents(); } @@ -438,13 +389,11 @@ void DesktopNotificationController::Notification::Set( DesktopNotificationController::NotificationLink::NotificationLink( DesktopNotificationController* controller) : - shared_ptr(make_shared()) -{ + shared_ptr(make_shared()) { get()->controller = controller; } -DesktopNotificationController::NotificationLink::~NotificationLink() -{ +DesktopNotificationController::NotificationLink::~NotificationLink() { auto p = get(); if(p) p->controller = nullptr; } diff --git a/brightray/browser/win/win32_desktop_notifications/desktop_notification_controller.h b/brightray/browser/win/win32_desktop_notifications/desktop_notification_controller.h index 62a85c9c9dd3..a15d6b1b3546 100644 --- a/brightray/browser/win/win32_desktop_notifications/desktop_notification_controller.h +++ b/brightray/browser/win/win32_desktop_notifications/desktop_notification_controller.h @@ -9,8 +9,7 @@ namespace brightray { struct NotificationData; -class DesktopNotificationController -{ +class DesktopNotificationController { public: DesktopNotificationController(unsigned maximumToasts = 3); ~DesktopNotificationController(); @@ -61,8 +60,7 @@ private: static LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam); - static DesktopNotificationController* Get(HWND hWnd) - { + static DesktopNotificationController* Get(HWND hWnd) { return reinterpret_cast( GetWindowLongPtr(hWnd, 0)); } @@ -89,8 +87,7 @@ private: bool is_animating_ = false; }; -class DesktopNotificationController::Notification -{ +class DesktopNotificationController::Notification { public: Notification() = default; Notification(const std::shared_ptr& data); diff --git a/brightray/browser/win/win32_desktop_notifications/toast.cc b/brightray/browser/win/win32_desktop_notifications/toast.cc index e11eea5f4d68..4f71dad93707 100644 --- a/brightray/browser/win/win32_desktop_notifications/toast.cc +++ b/brightray/browser/win/win32_desktop_notifications/toast.cc @@ -13,24 +13,20 @@ using std::shared_ptr; namespace brightray { -static COLORREF GetAccentColor() -{ +static COLORREF GetAccentColor() { bool success = false; - if(IsAppThemed()) - { + if(IsAppThemed()) { HKEY hkey; if(RegOpenKeyEx(HKEY_CURRENT_USER, TEXT("SOFTWARE\\Microsoft\\Windows\\DWM"), 0, - KEY_QUERY_VALUE, &hkey) == ERROR_SUCCESS) - { + KEY_QUERY_VALUE, &hkey) == ERROR_SUCCESS) { COLORREF color; DWORD type, size; if(RegQueryValueEx(hkey, TEXT("AccentColor"), nullptr, &type, (BYTE*)&color, &(size = sizeof(color))) == ERROR_SUCCESS && - type == REG_DWORD) - { + type == REG_DWORD) { // convert from RGBA color = RGB(GetRValue(color), GetGValue(color), @@ -41,8 +37,7 @@ static COLORREF GetAccentColor() &type, (BYTE*)&color, &(size = sizeof(color))) == ERROR_SUCCESS && - type == REG_DWORD) - { + type == REG_DWORD) { // convert from BGRA color = RGB(GetBValue(color), GetGValue(color), @@ -60,8 +55,7 @@ static COLORREF GetAccentColor() } // Stretches a bitmap to the specified size, preserves alpha channel -static HBITMAP StretchBitmap(HBITMAP bitmap, unsigned width, unsigned height) -{ +static HBITMAP StretchBitmap(HBITMAP bitmap, unsigned width, unsigned height) { // We use StretchBlt for the scaling, but that discards the alpha channel. // So we first create a separate grayscale bitmap from the alpha channel, // scale that separately, and copy it back to the scaled color bitmap. @@ -91,17 +85,14 @@ static HBITMAP StretchBitmap(HBITMAP bitmap, unsigned width, unsigned height) DIB_RGB_COLORS, &alphaSrcBits, NULL, 0); - if(alphaSrcBitmap) - { + if(alphaSrcBitmap) { if(GetDIBits(hdcScreen, bitmap, 0, 0, 0, (BITMAPINFO*)&bmi, DIB_RGB_COLORS) && bmi.biSizeImage > 0 && - (bmi.biSizeImage % 4) == 0) - { + (bmi.biSizeImage % 4) == 0) { auto buf = (BYTE*)_aligned_malloc(bmi.biSizeImage, sizeof(DWORD)); - if(buf) - { + if(buf) { GetDIBits(hdcScreen, bitmap, 0, bm.bmHeight, buf, (BITMAPINFO*)&bmi, DIB_RGB_COLORS); @@ -109,8 +100,7 @@ static HBITMAP StretchBitmap(HBITMAP bitmap, unsigned width, unsigned height) for(const DWORD *src = (DWORD*)buf, *end = (DWORD*)(buf + bmi.biSizeImage); src != end; - ++src, ++dest) - { + ++src, ++dest) { BYTE a = *src >> 24; *dest++ = a; *dest++ = a; @@ -123,8 +113,7 @@ static HBITMAP StretchBitmap(HBITMAP bitmap, unsigned width, unsigned height) } } - if(alphaSrcBitmap) - { + if(alphaSrcBitmap) { BITMAPINFOHEADER bmi = { sizeof(BITMAPINFOHEADER) }; bmi.biWidth = width; bmi.biHeight = height; @@ -145,8 +134,7 @@ static HBITMAP StretchBitmap(HBITMAP bitmap, unsigned width, unsigned height) HDC hdc = CreateCompatibleDC(NULL); HDC hdcSrc = CreateCompatibleDC(NULL); - if(colorBitmap && alphaBitmap && hdc && hdcSrc) - { + if(colorBitmap && alphaBitmap && hdc && hdcSrc) { SetStretchBltMode(hdc, HALFTONE); // resize color channels @@ -170,8 +158,7 @@ static HBITMAP StretchBitmap(HBITMAP bitmap, unsigned width, unsigned height) auto dest = (BYTE*)colorBits; auto src = (const BYTE*)alphaBits; auto end = src + (width * height * 4); - while(src != end) - { + while(src != end) { dest[3] = src[0]; dest += 4; src += 4; @@ -199,22 +186,19 @@ static HBITMAP StretchBitmap(HBITMAP bitmap, unsigned width, unsigned height) DesktopNotificationController::Toast::Toast( HWND hWnd, shared_ptr* data) : - hwnd_(hWnd), data_(*data) -{ + hwnd_(hWnd), data_(*data) { HDC hdcScreen = GetDC(NULL); hdc_ = CreateCompatibleDC(hdcScreen); ReleaseDC(NULL, hdcScreen); } -DesktopNotificationController::Toast::~Toast() -{ +DesktopNotificationController::Toast::~Toast() { DeleteDC(hdc_); if(bitmap_) DeleteBitmap(bitmap_); if(scaled_image_) DeleteBitmap(scaled_image_); } -void DesktopNotificationController::Toast::Register(HINSTANCE hInstance) -{ +void DesktopNotificationController::Toast::Register(HINSTANCE hInstance) { WNDCLASSEX wc = { sizeof(wc) }; wc.lpfnWndProc = &Toast::WndProc; wc.lpszClassName = class_name_; @@ -226,10 +210,8 @@ void DesktopNotificationController::Toast::Register(HINSTANCE hInstance) } LRESULT DesktopNotificationController::Toast::WndProc( - HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) -{ - switch(message) - { + HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { + switch(message) { case WM_CREATE: { auto& cs = reinterpret_cast(lParam); @@ -249,8 +231,7 @@ LRESULT DesktopNotificationController::Toast::WndProc( return MA_NOACTIVATE; case WM_TIMER: - if(wParam == TimerID_AutoDismiss) - { + if(wParam == TimerID_AutoDismiss) { Get(hWnd)->AutoDismiss(); } return 0; @@ -272,8 +253,7 @@ LRESULT DesktopNotificationController::Toast::WndProc( case WM_MOUSEMOVE: { auto inst = Get(hWnd); - if(!inst->is_highlighted_) - { + if(!inst->is_highlighted_) { inst->is_highlighted_ = true; TRACKMOUSEEVENT tme = { sizeof(tme), TME_LEAVE, hWnd }; @@ -309,8 +289,7 @@ LRESULT DesktopNotificationController::Toast::WndProc( case WM_WINDOWPOSCHANGED: { auto& wp = reinterpret_cast(lParam); - if(wp->flags & SWP_HIDEWINDOW) - { + if(wp->flags & SWP_HIDEWINDOW) { if(!IsWindowVisible(hWnd)) Get(hWnd)->is_highlighted_ = false; } @@ -322,15 +301,13 @@ LRESULT DesktopNotificationController::Toast::WndProc( } HWND DesktopNotificationController::Toast::Create( - HINSTANCE hInstance, shared_ptr& data) -{ + HINSTANCE hInstance, shared_ptr& data) { return CreateWindowEx(WS_EX_LAYERED | WS_EX_NOACTIVATE | WS_EX_TOPMOST, class_name_, nullptr, WS_POPUP, 0, 0, 0, 0, NULL, NULL, hInstance, &data); } -void DesktopNotificationController::Toast::Draw() -{ +void DesktopNotificationController::Toast::Draw() { const COLORREF accent = GetAccentColor(); COLORREF backColor; @@ -405,8 +382,7 @@ void DesktopNotificationController::Toast::Draw() auto textOffsetX = margin_.cx; BITMAP imageInfo = {}; - if(scaled_image_) - { + if(scaled_image_) { GetObject(scaled_image_, sizeof(imageInfo), &imageInfo); textOffsetX += margin_.cx + imageInfo.bmWidth; @@ -429,8 +405,7 @@ void DesktopNotificationController::Toast::Draw() } // image - if(scaled_image_) - { + if(scaled_image_) { HDC hdcImage = CreateCompatibleDC(NULL); SelectBitmap(hdcImage, scaled_image_); BLENDFUNCTION blend = { AC_SRC_OVER, 0, 255, AC_SRC_ALPHA }; @@ -458,8 +433,7 @@ void DesktopNotificationController::Toast::Draw() } // body text - if(!data_->body_text.empty()) - { + if(!data_->body_text.empty()) { RECT rc = { textOffsetX, 2 * margin_.cy + tmCap.tmAscent, @@ -486,34 +460,28 @@ void DesktopNotificationController::Toast::Draw() is_content_updated_ = true; } -void DesktopNotificationController::Toast::Invalidate() -{ +void DesktopNotificationController::Toast::Invalidate() { is_content_updated_ = false; } -bool DesktopNotificationController::Toast::IsRedrawNeeded() const -{ +bool DesktopNotificationController::Toast::IsRedrawNeeded() const { return !is_content_updated_; } -void DesktopNotificationController::Toast::UpdateBufferSize() -{ - if(hdc_) - { +void DesktopNotificationController::Toast::UpdateBufferSize() { + if(hdc_) { SIZE newSize; { TEXTMETRIC tmCap = {}; HFONT font = data_->controller->GetCaptionFont(); - if(font) - { + if(font) { SelectFont(hdc_, font); if(!GetTextMetrics(hdc_, &tmCap)) return; } TEXTMETRIC tmBody = {}; font = data_->controller->GetBodyFont(); - if(font) - { + if(font) { SelectFont(hdc_, font); if(!GetTextMetrics(hdc_, &tmBody)) return; } @@ -526,28 +494,22 @@ void DesktopNotificationController::Toast::UpdateBufferSize() if(!data_->body_text.empty()) newSize.cy += margin_.cy + (3 * tmBody.tmHeight); - if(data_->image) - { + if(data_->image) { BITMAP bm; - if(GetObject(data_->image, sizeof(bm), &bm)) - { + if(GetObject(data_->image, sizeof(bm), &bm)) { // cap the image size const int maxDimSize = 80; auto width = bm.bmWidth; auto height = bm.bmHeight; - if(width < height) - { - if(height > maxDimSize) - { + if(width < height) { + if(height > maxDimSize) { width = width * maxDimSize / height; height = maxDimSize; } } - else - { - if(width > maxDimSize) - { + else { + if(width > maxDimSize) { height = height * maxDimSize / width; width = maxDimSize; } @@ -569,25 +531,20 @@ void DesktopNotificationController::Toast::UpdateBufferSize() } if(newSize.cx != this->toast_size_.cx || - newSize.cy != this->toast_size_.cy) - { + newSize.cy != this->toast_size_.cy) { HDC hdcScreen = GetDC(NULL); auto newBitmap = CreateCompatibleBitmap(hdcScreen, newSize.cx, newSize.cy); ReleaseDC(NULL, hdcScreen); - if(newBitmap) - { - if(SelectBitmap(hdc_, newBitmap)) - { + if(newBitmap) { + if(SelectBitmap(hdc_, newBitmap)) { RECT dirty1 = {}, dirty2 = {}; - if(toast_size_.cx < newSize.cx) - { + if(toast_size_.cx < newSize.cx) { dirty1 = { toast_size_.cx, 0, newSize.cx, toast_size_.cy }; } - if(toast_size_.cy < newSize.cy) - { + if(toast_size_.cy < newSize.cy) { dirty2 = { 0, toast_size_.cy, newSize.cx, newSize.cy }; } @@ -630,24 +587,20 @@ void DesktopNotificationController::Toast::UpdateBufferSize() } } -void DesktopNotificationController::Toast::UpdateScaledImage(const SIZE& size) -{ +void DesktopNotificationController::Toast::UpdateScaledImage(const SIZE& size) { BITMAP bm; if(!GetObject(scaled_image_, sizeof(bm), &bm) || bm.bmWidth != size.cx || - bm.bmHeight != size.cy) - { + bm.bmHeight != size.cy) { if(scaled_image_) DeleteBitmap(scaled_image_); scaled_image_ = StretchBitmap(data_->image, size.cx, size.cy); } } -void DesktopNotificationController::Toast::UpdateContents() -{ +void DesktopNotificationController::Toast::UpdateContents() { Draw(); - if(IsWindowVisible(hwnd_)) - { + if(IsWindowVisible(hwnd_)) { RECT rc; GetWindowRect(hwnd_, &rc); POINT origin = { 0, 0 }; @@ -657,10 +610,8 @@ void DesktopNotificationController::Toast::UpdateContents() } } -void DesktopNotificationController::Toast::Dismiss() -{ - if(!is_non_interactive_) - { +void DesktopNotificationController::Toast::Dismiss() { + if(!is_non_interactive_) { // Set a flag to prevent further interaction. We don't disable the HWND // because we still want to receive mouse move messages in order to keep // the toast under the cursor and not collapse it while dismissing. @@ -670,28 +621,23 @@ void DesktopNotificationController::Toast::Dismiss() } } -void DesktopNotificationController::Toast::AutoDismiss() -{ +void DesktopNotificationController::Toast::AutoDismiss() { KillTimer(hwnd_, TimerID_AutoDismiss); StartEaseOut(); } -void DesktopNotificationController::Toast::CancelDismiss() -{ +void DesktopNotificationController::Toast::CancelDismiss() { KillTimer(hwnd_, TimerID_AutoDismiss); ease_out_active_ = false; ease_out_pos_ = 0; } -void DesktopNotificationController::Toast::ScheduleDismissal() -{ +void DesktopNotificationController::Toast::ScheduleDismissal() { SetTimer(hwnd_, TimerID_AutoDismiss, 4000, nullptr); } -void DesktopNotificationController::Toast::ResetContents() -{ - if(scaled_image_) - { +void DesktopNotificationController::Toast::ResetContents() { + if(scaled_image_) { DeleteBitmap(scaled_image_); scaled_image_ = NULL; } @@ -699,14 +645,12 @@ void DesktopNotificationController::Toast::ResetContents() Invalidate(); } -void DesktopNotificationController::Toast::PopUp(int y) -{ +void DesktopNotificationController::Toast::PopUp(int y) { vertical_pos_target_ = vertical_pos_ = y; StartEaseIn(); } -void DesktopNotificationController::Toast::SetVerticalPosition(int y) -{ +void DesktopNotificationController::Toast::SetVerticalPosition(int y) { // Don't restart animation if current target is the same if(y == vertical_pos_target_) return; @@ -722,8 +666,7 @@ void DesktopNotificationController::Toast::SetVerticalPosition(int y) } HDWP DesktopNotificationController::Toast::Animate( - HDWP hdwp, const POINT& origin) -{ + HDWP hdwp, const POINT& origin) { UpdateBufferSize(); if(IsRedrawNeeded()) @@ -764,8 +707,7 @@ HDWP DesktopNotificationController::Toast::Animate( ulw.pptDst = &pt; ulw.psize = &size; - if(ease_in_active_ && easeInPos == 1.0f) - { + if(ease_in_active_ && easeInPos == 1.0f) { ease_in_active_ = false; ScheduleDismissal(); } @@ -773,8 +715,7 @@ HDWP DesktopNotificationController::Toast::Animate( this->ease_in_pos_ = easeInPos; this->stack_collapse_pos_ = stackCollapsePos; - if(easeOutPos != this->ease_out_pos_) - { + if(easeOutPos != this->ease_out_pos_) { blend.BlendOp = AC_SRC_OVER; blend.BlendFlags = 0; blend.SourceConstantAlpha = (BYTE)(255 * (1.0f - easeOutPos)); @@ -785,8 +726,7 @@ HDWP DesktopNotificationController::Toast::Animate( this->ease_out_pos_ = easeOutPos; - if(easeOutPos == 1.0f) - { + if(easeOutPos == 1.0f) { ease_out_active_ = false; dwpFlags &= ~SWP_SHOWWINDOW; @@ -794,8 +734,7 @@ HDWP DesktopNotificationController::Toast::Animate( } } - if(stackCollapsePos == 1.0f) - { + if(stackCollapsePos == 1.0f) { vertical_pos_ = vertical_pos_target_; } @@ -810,29 +749,25 @@ HDWP DesktopNotificationController::Toast::Animate( return hdwp; } -void DesktopNotificationController::Toast::StartEaseIn() -{ +void DesktopNotificationController::Toast::StartEaseIn() { _ASSERT(!ease_in_active_); ease_in_start_ = GetTickCount(); ease_in_active_ = true; data_->controller->StartAnimation(); } -void DesktopNotificationController::Toast::StartEaseOut() -{ +void DesktopNotificationController::Toast::StartEaseOut() { _ASSERT(!ease_out_active_); ease_out_start_ = GetTickCount(); ease_out_active_ = true; data_->controller->StartAnimation(); } -bool DesktopNotificationController::Toast::IsStackCollapseActive() const -{ +bool DesktopNotificationController::Toast::IsStackCollapseActive() const { return (vertical_pos_ != vertical_pos_target_); } -float DesktopNotificationController::Toast::AnimateEaseIn() -{ +float DesktopNotificationController::Toast::AnimateEaseIn() { if(!ease_in_active_) return ease_in_pos_; @@ -847,8 +782,7 @@ float DesktopNotificationController::Toast::AnimateEaseIn() return pos; } -float DesktopNotificationController::Toast::AnimateEaseOut() -{ +float DesktopNotificationController::Toast::AnimateEaseOut() { if(!ease_out_active_) return ease_out_pos_; @@ -862,8 +796,7 @@ float DesktopNotificationController::Toast::AnimateEaseOut() return pos; } -float DesktopNotificationController::Toast::AnimateStackCollapse() -{ +float DesktopNotificationController::Toast::AnimateStackCollapse() { if(!IsStackCollapseActive()) return stack_collapse_pos_; diff --git a/brightray/browser/win/win32_desktop_notifications/toast.h b/brightray/browser/win/win32_desktop_notifications/toast.h index 2e0a10321140..e77535f86c78 100644 --- a/brightray/browser/win/win32_desktop_notifications/toast.h +++ b/brightray/browser/win/win32_desktop_notifications/toast.h @@ -3,22 +3,19 @@ namespace brightray { -class DesktopNotificationController::Toast -{ +class DesktopNotificationController::Toast { public: static void Register(HINSTANCE hInstance); static HWND Create(HINSTANCE hInstance, std::shared_ptr& data); - static Toast* Get(HWND hWnd) - { + static Toast* Get(HWND hWnd) { return reinterpret_cast(GetWindowLongPtr(hWnd, 0)); } static LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam); - const std::shared_ptr& GetNotification() const - { + const std::shared_ptr& GetNotification() const { return data_; } @@ -28,21 +25,17 @@ public: void PopUp(int y); void SetVerticalPosition(int y); - int GetVerticalPosition() const - { + int GetVerticalPosition() const { return vertical_pos_target_; } - int GetHeight() const - { + int GetHeight() const { return toast_size_.cy; } HDWP Animate(HDWP hdwp, const POINT& origin); - bool IsAnimationActive() const - { + bool IsAnimationActive() const { return ease_in_active_ || ease_out_active_ || IsStackCollapseActive(); } - bool IsHighlighted() const - { + bool IsHighlighted() const { _ASSERT(!(is_highlighted_ && !IsWindowVisible(hwnd_))); return is_highlighted_; } diff --git a/brightray/browser/win/win32_notification.cc b/brightray/browser/win/win32_notification.cc index beb137544865..f8830e3ea2d7 100644 --- a/brightray/browser/win/win32_notification.cc +++ b/brightray/browser/win/win32_notification.cc @@ -8,17 +8,14 @@ namespace brightray { void Win32Notification::Show( const base::string16& title, const base::string16& msg, const std::string& tag, const GURL& icon_url, - const SkBitmap& icon, const bool silent) -{ + const SkBitmap& icon, const bool silent) { auto presenter = static_cast(this->presenter()); if(!presenter) return; HBITMAP image = NULL; - if(!icon.drawsNothing()) - { - if(icon.colorType() == kBGRA_8888_SkColorType) - { + if(!icon.drawsNothing()) { + if(icon.colorType() == kBGRA_8888_SkColorType) { icon.lockPixels(); BITMAPINFOHEADER bmi = { sizeof(BITMAPINFOHEADER) }; @@ -40,14 +37,12 @@ void Win32Notification::Show( Win32Notification* existing = nullptr; if(!tag.empty()) existing = presenter->GetNotificationObjectByTag(tag); - if(existing) - { + if(existing) { existing->tag_.clear(); this->notification_ref_ = std::move(existing->notification_ref_); this->notification_ref_.Set(title, msg, image); } - else - { + else { this->notification_ref_ = presenter->AddNotification(title, msg, image); } @@ -56,8 +51,7 @@ void Win32Notification::Show( if(image) DeleteObject(image); } -void Win32Notification::Dismiss() -{ +void Win32Notification::Dismiss() { notification_ref_.Close(); } diff --git a/brightray/browser/win/win32_notification.h b/brightray/browser/win/win32_notification.h index b1fe7e764b14..41f9583bd1f7 100644 --- a/brightray/browser/win/win32_notification.h +++ b/brightray/browser/win/win32_notification.h @@ -4,26 +4,22 @@ namespace brightray { -class Win32Notification : public brightray::Notification -{ +class Win32Notification : public brightray::Notification { public: Win32Notification(NotificationDelegate* delegate, NotificationPresenterWin7* presenter) : - Notification(delegate, presenter) - { + Notification(delegate, presenter) { } void Show(const base::string16& title, const base::string16& msg, const std::string& tag, const GURL& icon_url, const SkBitmap& icon, const bool silent) override; void Dismiss() override; - const DesktopNotificationController::Notification& GetRef() const - { + const DesktopNotificationController::Notification& GetRef() const { return notification_ref_; } - const std::string& GetTag() const - { + const std::string& GetTag() const { return tag_; }