summaryrefslogtreecommitdiff
path: root/widget/cocoa/VibrancyManager.h
diff options
context:
space:
mode:
Diffstat (limited to 'widget/cocoa/VibrancyManager.h')
-rw-r--r--widget/cocoa/VibrancyManager.h120
1 files changed, 0 insertions, 120 deletions
diff --git a/widget/cocoa/VibrancyManager.h b/widget/cocoa/VibrancyManager.h
deleted file mode 100644
index 04b1ad1cda..0000000000
--- a/widget/cocoa/VibrancyManager.h
+++ /dev/null
@@ -1,120 +0,0 @@
-/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#ifndef VibrancyManager_h
-#define VibrancyManager_h
-
-#include "mozilla/Assertions.h"
-#include "nsClassHashtable.h"
-#include "nsRegion.h"
-#include "nsTArray.h"
-#include "ViewRegion.h"
-
-#import <Foundation/NSGeometry.h>
-
-@class NSColor;
-@class NSView;
-class nsChildView;
-
-namespace mozilla {
-
-enum class VibrancyType {
- LIGHT,
- DARK,
- TOOLTIP,
- MENU,
- HIGHLIGHTED_MENUITEM,
- SHEET,
- SOURCE_LIST,
- SOURCE_LIST_SELECTION,
- ACTIVE_SOURCE_LIST_SELECTION
-};
-
-/**
- * VibrancyManager takes care of updating the vibrant regions of a window.
- * Vibrancy is a visual look that was introduced on OS X starting with 10.10.
- * An app declares vibrant window regions to the window server, and the window
- * server will display a blurred rendering of the screen contents from behind
- * the window in these areas, behind the actual window contents. Consequently,
- * the effect is only visible in areas where the window contents are not
- * completely opaque. Usually this is achieved by clearing the background of
- * the window prior to drawing in the vibrant areas. This is possible even if
- * the window is declared as opaque.
- */
-class VibrancyManager {
-public:
- /**
- * Create a new VibrancyManager instance and provide it with an NSView
- * to attach NSVisualEffectViews to.
- *
- * @param aCoordinateConverter The nsChildView to use for converting
- * nsIntRect device pixel coordinates into Cocoa NSRect coordinates. Must
- * outlive this VibrancyManager instance.
- * @param aContainerView The view that's going to be the superview of the
- * NSVisualEffectViews which will be created for vibrant regions.
- */
- VibrancyManager(const nsChildView& aCoordinateConverter,
- NSView* aContainerView)
- : mCoordinateConverter(aCoordinateConverter)
- , mContainerView(aContainerView)
- {
- MOZ_ASSERT(SystemSupportsVibrancy(),
- "Don't instantiate this if !SystemSupportsVibrancy()");
- }
-
- /**
- * Update the placement of the NSVisualEffectViews inside the container
- * NSView so that they cover aRegion, and create new NSVisualEffectViews
- * or remove existing ones as needed.
- * @param aType The vibrancy type to use in the region.
- * @param aRegion The vibrant area, in device pixels.
- */
- void UpdateVibrantRegion(VibrancyType aType,
- const LayoutDeviceIntRegion& aRegion);
-
- bool HasVibrantRegions() { return !mVibrantRegions.IsEmpty(); }
-
- /**
- * Return the fill color that should be drawn on top of the cleared window
- * parts. Usually this would be drawn by -[NSVisualEffectView drawRect:].
- * The returned color is opaque if the system-wide "Reduce transparency"
- * preference is set.
- */
- NSColor* VibrancyFillColorForType(VibrancyType aType);
-
- /**
- * Return the font smoothing background color that should be used for text
- * drawn on top of the vibrant window parts.
- */
- NSColor* VibrancyFontSmoothingBackgroundColorForType(VibrancyType aType);
-
- /**
- * Check whether the operating system supports vibrancy at all.
- * You may only create a VibrancyManager instance if this returns true.
- * @return Whether VibrancyManager can be used on this OS.
- */
- static bool SystemSupportsVibrancy();
-
- /**
- * Create an NSVisualEffectView for the specified vibrancy type. The return
- * value is not autoreleased. We return an object of type NSView* because we
- * compile with an SDK that does not contain a definition for
- * NSVisualEffectView.
- * @param aIsContainer Whether this NSView will have child views. This value
- * affects hit testing: Container views will pass through
- * hit testing requests to their children, and leaf views
- * will be transparent to hit testing.
- */
- static NSView* CreateEffectView(VibrancyType aType, BOOL aIsContainer = NO);
-
-protected:
- const nsChildView& mCoordinateConverter;
- NSView* mContainerView;
- nsClassHashtable<nsUint32HashKey, ViewRegion> mVibrantRegions;
-};
-
-} // namespace mozilla
-
-#endif // VibrancyManager_h