[vlc-devel] [PATCH 1/9] macosx: Add dark UI Elements for use on HUD Panels

Marvin Scholz epirat07 at gmail.com
Sun Jun 5 11:28:23 CEST 2016


This adds a dark Button, Checkbox, Radiobutton and Slider Cell
for use on dark HUD Panels (like the Audio and Video effects panels)
---
 .../package/macosx/vlc.xcodeproj/project.pbxproj   |  92 +++++++++----
 modules/gui/macosx/Makefile.am                     |   6 +-
 modules/gui/macosx/VLCHUDButtonCell.h              |  37 +++++
 modules/gui/macosx/VLCHUDButtonCell.m              |  69 ++++++++++
 modules/gui/macosx/VLCHUDCheckboxCell.h            |  37 +++++
 modules/gui/macosx/VLCHUDCheckboxCell.m            | 103 ++++++++++++++
 modules/gui/macosx/VLCHUDRadiobuttonCell.h         |  33 +++++
 modules/gui/macosx/VLCHUDRadiobuttonCell.m         |  95 +++++++++++++
 modules/gui/macosx/VLCHUDSliderCell.h              |  43 ++++++
 modules/gui/macosx/VLCHUDSliderCell.m              | 152 +++++++++++++++++++++
 10 files changed, 638 insertions(+), 29 deletions(-)
 create mode 100644 modules/gui/macosx/VLCHUDButtonCell.h
 create mode 100644 modules/gui/macosx/VLCHUDButtonCell.m
 create mode 100644 modules/gui/macosx/VLCHUDCheckboxCell.h
 create mode 100644 modules/gui/macosx/VLCHUDCheckboxCell.m
 create mode 100644 modules/gui/macosx/VLCHUDRadiobuttonCell.h
 create mode 100644 modules/gui/macosx/VLCHUDRadiobuttonCell.m
 create mode 100644 modules/gui/macosx/VLCHUDSliderCell.h
 create mode 100644 modules/gui/macosx/VLCHUDSliderCell.m

diff --git a/extras/package/macosx/vlc.xcodeproj/project.pbxproj b/extras/package/macosx/vlc.xcodeproj/project.pbxproj
index 820a004..d4178ea 100644
--- a/extras/package/macosx/vlc.xcodeproj/project.pbxproj
+++ b/extras/package/macosx/vlc.xcodeproj/project.pbxproj
@@ -461,20 +461,25 @@
 		1CE5ED2619DD6AB700FCEFD3 /* lion-window-fullscreen at 2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 1CE5ED2019DD6AB700FCEFD3 /* lion-window-fullscreen at 2x.png */; };
 		633121D01B5112C300E636DA /* ResumeDialog.xib in Resources */ = {isa = PBXBuildFile; fileRef = 633121CE1B5112C300E636DA /* ResumeDialog.xib */; };
 		6B13E2A81BC67678001AD24A /* VLCScrollingClipView.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B13E2A71BC67678001AD24A /* VLCScrollingClipView.m */; };
-		6B3F8D2C1CE58E0E002A4998 /* VLCNextTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 6B3F8D281CE58E0E002A4998 /* VLCNextTemplate.pdf */; };
-		6B3F8D2D1CE58E0E002A4998 /* VLCPauseTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 6B3F8D291CE58E0E002A4998 /* VLCPauseTemplate.pdf */; };
-		6B3F8D2E1CE58E0E002A4998 /* VLCPlayTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 6B3F8D2A1CE58E0E002A4998 /* VLCPlayTemplate.pdf */; };
-		6B3F8D2F1CE58E0E002A4998 /* VLCPreviousTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 6B3F8D2B1CE58E0E002A4998 /* VLCPreviousTemplate.pdf */; };
-		6B3F8D311CE5CC21002A4998 /* VLCStatusBarIcon.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 6B3F8D301CE5CC21002A4998 /* VLCStatusBarIcon.pdf */; };
-		6B3F8D331CE5CD57002A4998 /* VLCShuffleTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 6B3F8D321CE5CD57002A4998 /* VLCShuffleTemplate.pdf */; };
+		6B676C491C6A3E0200EF8093 /* VLCHUDButtonCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B676C421C6A3E0200EF8093 /* VLCHUDButtonCell.m */; };
+		6B676C4A1C6A3E0200EF8093 /* VLCHUDCheckboxCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B676C441C6A3E0200EF8093 /* VLCHUDCheckboxCell.m */; };
+		6B676C4B1C6A3E0200EF8093 /* VLCHUDRadiobuttonCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B676C461C6A3E0200EF8093 /* VLCHUDRadiobuttonCell.m */; };
+		6B676C4C1C6A3E0200EF8093 /* VLCHUDSliderCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B676C481C6A3E0200EF8093 /* VLCHUDSliderCell.m */; };
 		7D3F6525188051F2005776C4 /* BWQuincyMain.xib in Resources */ = {isa = PBXBuildFile; fileRef = 7D3F6523188051F2005776C4 /* BWQuincyMain.xib */; };
 		7D8BB0B71830311300FAE9B7 /* DebugMessageVisualizer.xib in Resources */ = {isa = PBXBuildFile; fileRef = 7D8BB0B51830311300FAE9B7 /* DebugMessageVisualizer.xib */; };
 		7D8BB0BA1830367200FAE9B7 /* PlaylistMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 7D8BB0B81830367200FAE9B7 /* PlaylistMenu.xib */; };
 		7D8BB0C01830393300FAE9B7 /* MainWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 7D8BB0BE1830393300FAE9B7 /* MainWindow.xib */; };
 		7D9516B71C60B69200D14E1A /* VLCStatusBarIconMainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 7D9516B51C60B69200D14E1A /* VLCStatusBarIconMainMenu.xib */; };
 		7D9516BA1C60B6AB00D14E1A /* VLCStatusBarIcon.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D9516B91C60B6AB00D14E1A /* VLCStatusBarIcon.m */; };
+		7D9516C41C60B6DB00D14E1A /* pauseIcon.png in Resources */ = {isa = PBXBuildFile; fileRef = 7D9516BC1C60B6DB00D14E1A /* pauseIcon.png */; };
+		7D9516C51C60B6DB00D14E1A /* pauseIcon at 2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 7D9516BD1C60B6DB00D14E1A /* pauseIcon at 2x.png */; };
+		7D9516C61C60B6DB00D14E1A /* playIcon.png in Resources */ = {isa = PBXBuildFile; fileRef = 7D9516BE1C60B6DB00D14E1A /* playIcon.png */; };
+		7D9516C71C60B6DB00D14E1A /* playIcon at 2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 7D9516BF1C60B6DB00D14E1A /* playIcon at 2x.png */; };
+		7D9516C81C60B6DB00D14E1A /* statusBarIcon.png in Resources */ = {isa = PBXBuildFile; fileRef = 7D9516C01C60B6DB00D14E1A /* statusBarIcon.png */; };
+		7D9516C91C60B6DB00D14E1A /* statusBarIcon at 2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 7D9516C11C60B6DB00D14E1A /* statusBarIcon at 2x.png */; };
+		7D9516CA1C60B6DB00D14E1A /* stopIcon.png in Resources */ = {isa = PBXBuildFile; fileRef = 7D9516C21C60B6DB00D14E1A /* stopIcon.png */; };
+		7D9516CB1C60B6DB00D14E1A /* stopIcon at 2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 7D9516C31C60B6DB00D14E1A /* stopIcon at 2x.png */; };
 		7DB65D5618ABD6490053B874 /* AddonManager.xib in Resources */ = {isa = PBXBuildFile; fileRef = 7DB65D5418ABD6490053B874 /* AddonManager.xib */; };
-		7DBB06641CC2314D004C74D2 /* caopengllayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 7DBB06631CC2314D004C74D2 /* caopengllayer.m */; };
 		7DD6EC101B58136D0047CF5C /* SimplePreferences.xib in Resources */ = {isa = PBXBuildFile; fileRef = 7DD6EC0E1B58136D0047CF5C /* SimplePreferences.xib */; };
 		7DE78AC61B5D0A360019454C /* StreamOutput.xib in Resources */ = {isa = PBXBuildFile; fileRef = 7DE78AC41B5D0A360019454C /* StreamOutput.xib */; };
 		7DE88F2A1831396A00CD9DA2 /* PlaylistAccessoryView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 7DE88F281831396A00CD9DA2 /* PlaylistAccessoryView.xib */; };
@@ -1252,12 +1257,14 @@
 		633121CF1B5112C300E636DA /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = Resources/English.lproj/ResumeDialog.xib; sourceTree = "<group>"; };
 		6B13E2A61BC67678001AD24A /* VLCScrollingClipView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = VLCScrollingClipView.h; path = ../../../modules/gui/macosx/VLCScrollingClipView.h; sourceTree = "<group>"; };
 		6B13E2A71BC67678001AD24A /* VLCScrollingClipView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = VLCScrollingClipView.m; path = ../../../modules/gui/macosx/VLCScrollingClipView.m; sourceTree = "<group>"; };
-		6B3F8D281CE58E0E002A4998 /* VLCNextTemplate.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; name = VLCNextTemplate.pdf; path = Resources/vlcmenubaricon/VLCNextTemplate.pdf; sourceTree = "<group>"; };
-		6B3F8D291CE58E0E002A4998 /* VLCPauseTemplate.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; name = VLCPauseTemplate.pdf; path = Resources/vlcmenubaricon/VLCPauseTemplate.pdf; sourceTree = "<group>"; };
-		6B3F8D2A1CE58E0E002A4998 /* VLCPlayTemplate.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; name = VLCPlayTemplate.pdf; path = Resources/vlcmenubaricon/VLCPlayTemplate.pdf; sourceTree = "<group>"; };
-		6B3F8D2B1CE58E0E002A4998 /* VLCPreviousTemplate.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; name = VLCPreviousTemplate.pdf; path = Resources/vlcmenubaricon/VLCPreviousTemplate.pdf; sourceTree = "<group>"; };
-		6B3F8D301CE5CC21002A4998 /* VLCStatusBarIcon.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; name = VLCStatusBarIcon.pdf; path = Resources/vlcmenubaricon/VLCStatusBarIcon.pdf; sourceTree = "<group>"; };
-		6B3F8D321CE5CD57002A4998 /* VLCShuffleTemplate.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; name = VLCShuffleTemplate.pdf; path = Resources/vlcmenubaricon/VLCShuffleTemplate.pdf; sourceTree = "<group>"; };
+		6B676C411C6A3E0200EF8093 /* VLCHUDButtonCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = VLCHUDButtonCell.h; path = ../../../modules/gui/macosx/VLCHUDButtonCell.h; sourceTree = "<group>"; };
+		6B676C421C6A3E0200EF8093 /* VLCHUDButtonCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = VLCHUDButtonCell.m; path = ../../../modules/gui/macosx/VLCHUDButtonCell.m; sourceTree = "<group>"; };
+		6B676C431C6A3E0200EF8093 /* VLCHUDCheckboxCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = VLCHUDCheckboxCell.h; path = ../../../modules/gui/macosx/VLCHUDCheckboxCell.h; sourceTree = "<group>"; };
+		6B676C441C6A3E0200EF8093 /* VLCHUDCheckboxCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = VLCHUDCheckboxCell.m; path = ../../../modules/gui/macosx/VLCHUDCheckboxCell.m; sourceTree = "<group>"; };
+		6B676C451C6A3E0200EF8093 /* VLCHUDRadiobuttonCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = VLCHUDRadiobuttonCell.h; path = ../../../modules/gui/macosx/VLCHUDRadiobuttonCell.h; sourceTree = "<group>"; };
+		6B676C461C6A3E0200EF8093 /* VLCHUDRadiobuttonCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = VLCHUDRadiobuttonCell.m; path = ../../../modules/gui/macosx/VLCHUDRadiobuttonCell.m; sourceTree = "<group>"; };
+		6B676C471C6A3E0200EF8093 /* VLCHUDSliderCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = VLCHUDSliderCell.h; path = ../../../modules/gui/macosx/VLCHUDSliderCell.h; sourceTree = "<group>"; };
+		6B676C481C6A3E0200EF8093 /* VLCHUDSliderCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = VLCHUDSliderCell.m; path = ../../../modules/gui/macosx/VLCHUDSliderCell.m; sourceTree = "<group>"; };
 		7D3F6524188051F2005776C4 /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = Resources/English.lproj/BWQuincyMain.xib; sourceTree = "<group>"; };
 		7D3F652618805297005776C4 /* BWQuincyManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = BWQuincyManager.h; path = ../../../modules/gui/macosx/BWQuincyManager.h; sourceTree = SOURCE_ROOT; };
 		7D3F652718805297005776C4 /* BWQuincyManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = BWQuincyManager.m; path = ../../../modules/gui/macosx/BWQuincyManager.m; sourceTree = SOURCE_ROOT; };
@@ -1274,12 +1281,19 @@
 		7D9516B61C60B69200D14E1A /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = Resources/English.lproj/VLCStatusBarIconMainMenu.xib; sourceTree = "<group>"; };
 		7D9516B81C60B6AB00D14E1A /* VLCStatusBarIcon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = VLCStatusBarIcon.h; path = ../../../modules/gui/macosx/VLCStatusBarIcon.h; sourceTree = "<group>"; };
 		7D9516B91C60B6AB00D14E1A /* VLCStatusBarIcon.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = VLCStatusBarIcon.m; path = ../../../modules/gui/macosx/VLCStatusBarIcon.m; sourceTree = "<group>"; };
+		7D9516BC1C60B6DB00D14E1A /* pauseIcon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = pauseIcon.png; path = Resources/vlcmenubaricon/pauseIcon.png; sourceTree = "<group>"; };
+		7D9516BD1C60B6DB00D14E1A /* pauseIcon at 2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "pauseIcon at 2x.png"; path = "Resources/vlcmenubaricon/pauseIcon at 2x.png"; sourceTree = "<group>"; };
+		7D9516BE1C60B6DB00D14E1A /* playIcon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = playIcon.png; path = Resources/vlcmenubaricon/playIcon.png; sourceTree = "<group>"; };
+		7D9516BF1C60B6DB00D14E1A /* playIcon at 2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "playIcon at 2x.png"; path = "Resources/vlcmenubaricon/playIcon at 2x.png"; sourceTree = "<group>"; };
+		7D9516C01C60B6DB00D14E1A /* statusBarIcon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = statusBarIcon.png; path = Resources/vlcmenubaricon/statusBarIcon.png; sourceTree = "<group>"; };
+		7D9516C11C60B6DB00D14E1A /* statusBarIcon at 2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "statusBarIcon at 2x.png"; path = "Resources/vlcmenubaricon/statusBarIcon at 2x.png"; sourceTree = "<group>"; };
+		7D9516C21C60B6DB00D14E1A /* stopIcon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = stopIcon.png; path = Resources/vlcmenubaricon/stopIcon.png; sourceTree = "<group>"; };
+		7D9516C31C60B6DB00D14E1A /* stopIcon at 2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "stopIcon at 2x.png"; path = "Resources/vlcmenubaricon/stopIcon at 2x.png"; sourceTree = "<group>"; };
 		7DA481221B5FC13700917FD7 /* VLCPlaylistView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = VLCPlaylistView.h; path = ../../../modules/gui/macosx/VLCPlaylistView.h; sourceTree = "<group>"; };
 		7DA481231B5FC13700917FD7 /* VLCPlaylistView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = VLCPlaylistView.m; path = ../../../modules/gui/macosx/VLCPlaylistView.m; sourceTree = "<group>"; };
 		7DB65D5218ABD6380053B874 /* AddonsWindowController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = AddonsWindowController.h; path = ../../../modules/gui/macosx/AddonsWindowController.h; sourceTree = SOURCE_ROOT; };
 		7DB65D5318ABD6380053B874 /* AddonsWindowController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = AddonsWindowController.m; path = ../../../modules/gui/macosx/AddonsWindowController.m; sourceTree = SOURCE_ROOT; };
 		7DB65D5518ABD6490053B874 /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = Resources/English.lproj/AddonManager.xib; sourceTree = "<group>"; };
-		7DBB06631CC2314D004C74D2 /* caopengllayer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = caopengllayer.m; path = ../../../modules/video_output/caopengllayer.m; sourceTree = "<group>"; };
 		7DD6EC0F1B58136D0047CF5C /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = Resources/English.lproj/SimplePreferences.xib; sourceTree = "<group>"; };
 		7DE78AC51B5D0A360019454C /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = Resources/English.lproj/StreamOutput.xib; sourceTree = "<group>"; };
 		7DE88F291831396A00CD9DA2 /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = Resources/English.lproj/PlaylistAccessoryView.xib; sourceTree = "<group>"; };
@@ -1929,6 +1943,7 @@
 				E0C2583F161B593D00185AAD /* VLCVoutWindowController.m */,
 				E06CF7F416020F6200C698B7 /* Windows.h */,
 				E06CF7F516020F6200C698B7 /* Windows.m */,
+				6B676C4D1C6A3E0A00EF8093 /* Custom UI Classes */,
 				CC0CD0E513DE0FC600B0D90D /* Imported Code */,
 			);
 			name = Classes;
@@ -2351,6 +2366,21 @@
 			path = "Resources/fspanel-yosemite";
 			sourceTree = "<group>";
 		};
+		6B676C4D1C6A3E0A00EF8093 /* Custom UI Classes */ = {
+			isa = PBXGroup;
+			children = (
+				6B676C411C6A3E0200EF8093 /* VLCHUDButtonCell.h */,
+				6B676C421C6A3E0200EF8093 /* VLCHUDButtonCell.m */,
+				6B676C431C6A3E0200EF8093 /* VLCHUDCheckboxCell.h */,
+				6B676C441C6A3E0200EF8093 /* VLCHUDCheckboxCell.m */,
+				6B676C451C6A3E0200EF8093 /* VLCHUDRadiobuttonCell.h */,
+				6B676C461C6A3E0200EF8093 /* VLCHUDRadiobuttonCell.m */,
+				6B676C471C6A3E0200EF8093 /* VLCHUDSliderCell.h */,
+				6B676C481C6A3E0200EF8093 /* VLCHUDSliderCell.m */,
+			);
+			name = "Custom UI Classes";
+			sourceTree = "<group>";
+		};
 		7D3F652A1880529C005776C4 /* QuincyKit */ = {
 			isa = PBXGroup;
 			children = (
@@ -2365,12 +2395,14 @@
 		7D9516BB1C60B6C700D14E1A /* status bar item */ = {
 			isa = PBXGroup;
 			children = (
-				6B3F8D301CE5CC21002A4998 /* VLCStatusBarIcon.pdf */,
-				6B3F8D281CE58E0E002A4998 /* VLCNextTemplate.pdf */,
-				6B3F8D291CE58E0E002A4998 /* VLCPauseTemplate.pdf */,
-				6B3F8D2A1CE58E0E002A4998 /* VLCPlayTemplate.pdf */,
-				6B3F8D2B1CE58E0E002A4998 /* VLCPreviousTemplate.pdf */,
-				6B3F8D321CE5CD57002A4998 /* VLCShuffleTemplate.pdf */,
+				7D9516BC1C60B6DB00D14E1A /* pauseIcon.png */,
+				7D9516BD1C60B6DB00D14E1A /* pauseIcon at 2x.png */,
+				7D9516BE1C60B6DB00D14E1A /* playIcon.png */,
+				7D9516BF1C60B6DB00D14E1A /* playIcon at 2x.png */,
+				7D9516C01C60B6DB00D14E1A /* statusBarIcon.png */,
+				7D9516C11C60B6DB00D14E1A /* statusBarIcon at 2x.png */,
+				7D9516C21C60B6DB00D14E1A /* stopIcon.png */,
+				7D9516C31C60B6DB00D14E1A /* stopIcon at 2x.png */,
 			);
 			name = "status bar item";
 			sourceTree = "<group>";
@@ -2869,7 +2901,6 @@
 				CC79F66614014FC30015D89E /* opengl.h */,
 				CC6C01BB0DDF3F0700C7D754 /* opengl.c */,
 				CCDBA3B313D32E200006127B /* macosx.m */,
-				7DBB06631CC2314D004C74D2 /* caopengllayer.m */,
 			);
 			name = vout;
 			sourceTree = "<group>";
@@ -3192,6 +3223,7 @@
 				1C88BA7C19DC7B2200645190 /* yosemite-window-zoom-on.png in Resources */,
 				CC04331713B28B2900D7D52E /* fs_play_highlight.png in Resources */,
 				CC04331813B28B2900D7D52E /* fs_play.png in Resources */,
+				7D9516C81C60B6DB00D14E1A /* statusBarIcon.png in Resources */,
 				CC04331913B28B2900D7D52E /* fs_rewind_highlight.png in Resources */,
 				CC04331A13B28B2900D7D52E /* fs_rewind.png in Resources */,
 				CC04331B13B28B2900D7D52E /* fs_skip_next_highlight.png in Resources */,
@@ -3205,6 +3237,7 @@
 				CC04332013B28B2900D7D52E /* fs_stop.png in Resources */,
 				CC04332113B28B2900D7D52E /* fs_time_slider_knob_highlight.png in Resources */,
 				CC04332213B28B2900D7D52E /* fs_time_slider_knob.png in Resources */,
+				7D9516C91C60B6DB00D14E1A /* statusBarIcon at 2x.png in Resources */,
 				1C88BC0919DC7C8100645190 /* ys-fullscreen-one-button_dark.png in Resources */,
 				CC04332313B28B2900D7D52E /* fs_time_slider.png in Resources */,
 				1C51BDE51B7A221B0056B9AA /* TimeSelectionPanel.xib in Resources */,
@@ -3234,7 +3267,6 @@
 				CC04336613B28B8200D7D52E /* effects-one-button.png in Resources */,
 				1C88BA7E19DC7B2200645190 /* yosemite-window-zoom-over-graphite.png in Resources */,
 				1C88BC2719DC7C8100645190 /* ys-progressbar-fill-right_dark.png in Resources */,
-				6B3F8D2E1CE58E0E002A4998 /* VLCPlayTemplate.pdf in Resources */,
 				1C88BB1A19DC7C7800645190 /* ys-effects-one-button.png in Resources */,
 				1C88BA9A19DC7C5D00645190 /* ys-sidebar-playlist at 2x.png in Resources */,
 				1C88BB5D19DC7C7800645190 /* ys-repeat at 2x.png in Resources */,
@@ -3294,7 +3326,6 @@
 				1C88BB0A19DC7C7800645190 /* ys-backward-3btns.png in Resources */,
 				1C88BB0819DC7C7800645190 /* ys-backward-3btns-pressed.png in Resources */,
 				CC04338C13B28B8200D7D52E /* stop-pressed.png in Resources */,
-				6B3F8D2F1CE58E0E002A4998 /* VLCPreviousTemplate.pdf in Resources */,
 				CC04338D13B28B8200D7D52E /* stop.png in Resources */,
 				CC04338E13B28B8200D7D52E /* volume-high.png in Resources */,
 				CC04338F13B28B8200D7D52E /* volume-low.png in Resources */,
@@ -3319,7 +3350,6 @@
 				1C88BCAC19DC7CB300645190 /* ys-fs_stop.png in Resources */,
 				CC0433AD13B28B9C00D7D52E /* m4a.icns in Resources */,
 				CC0433AE13B28B9C00D7D52E /* m4v.icns in Resources */,
-				6B3F8D331CE5CD57002A4998 /* VLCShuffleTemplate.pdf in Resources */,
 				1C88BA6419DC7B2200645190 /* yosemite-window-fullscreen-on.png in Resources */,
 				1C88BCB419DC7CB300645190 /* ys-fs_time_slider_knob_highlight.png in Resources */,
 				1C88BB5A19DC7C7800645190 /* ys-repeat-pressed.png in Resources */,
@@ -3494,7 +3524,6 @@
 				CC9E5D7015975E2600D14E83 /* sidebar-local at 2x.png in Resources */,
 				1C88BB2D19DC7C7800645190 /* ys-next-6btns-pressed at 2x.png in Resources */,
 				CC9E5D7115975E2600D14E83 /* sidebar-movie at 2x.png in Resources */,
-				6B3F8D2C1CE58E0E002A4998 /* VLCNextTemplate.pdf in Resources */,
 				1C88BBE619DC7C8100645190 /* ys-backward-3btns-dark-pressed at 2x.png in Resources */,
 				1C88BB0C19DC7C7800645190 /* ys-backward-6btns-pressed.png in Resources */,
 				1C88BC2619DC7C8100645190 /* ys-progressbar-fill-middle_dark at 2x.png in Resources */,
@@ -3510,6 +3539,7 @@
 				1C88BB6319DC7C7800645190 /* ys-shuffle-pressed at 2x.png in Resources */,
 				CC9E5D9B15975F5B00D14E83 /* fs_background at 2x.png in Resources */,
 				1C88BC3E19DC7C8100645190 /* ys-shuffle-blue-pressed_dark at 2x.png in Resources */,
+				7D9516C51C60B6DB00D14E1A /* pauseIcon at 2x.png in Resources */,
 				1C88BC2119DC7C8100645190 /* ys-previous-6btns-dark.png in Resources */,
 				CC9E5D9C15975F5B00D14E83 /* fs_exit_fullscreen at 2x.png in Resources */,
 				CC9E5D9D15975F5B00D14E83 /* fs_forward_highlight at 2x.png in Resources */,
@@ -3532,15 +3562,16 @@
 				1C88BA7519DC7B2200645190 /* yosemite-window-minimize-over at 2x.png in Resources */,
 				CC9E5DA815975F5B00D14E83 /* fs_skip_previous at 2x.png in Resources */,
 				1C88BC4319DC7C8100645190 /* ys-shuffle_dark.png in Resources */,
+				7D9516C71C60B6DB00D14E1A /* playIcon at 2x.png in Resources */,
 				CC9E5DA915975F5B00D14E83 /* fs_stop_highlight at 2x.png in Resources */,
 				CC9E5DAA15975F5B00D14E83 /* fs_stop at 2x.png in Resources */,
 				CC9E5DAB15975F5B00D14E83 /* fs_time_slider_knob_highlight at 2x.png in Resources */,
+				7D9516C41C60B6DB00D14E1A /* pauseIcon.png in Resources */,
 				1CE5ED2619DD6AB700FCEFD3 /* lion-window-fullscreen at 2x.png in Resources */,
 				1C88BB3E19DC7C7800645190 /* ys-playlist-btn.png in Resources */,
 				1C88BBEB19DC7C8100645190 /* ys-backward-6btns-dark.png in Resources */,
 				CC9E5DAC15975F5B00D14E83 /* fs_time_slider_knob at 2x.png in Resources */,
 				1C88BB3919DC7C7800645190 /* ys-playlist-1btn-pressed at 2x.png in Resources */,
-				6B3F8D2D1CE58E0E002A4998 /* VLCPauseTemplate.pdf in Resources */,
 				1C88BC5519DC7C8100645190 /* ys-volume-slider-track_dark.png in Resources */,
 				1C88BB5419DC7C7800645190 /* ys-repeat-all.png in Resources */,
 				CC9E5DAD15975F5B00D14E83 /* fs_time_slider at 2x.png in Resources */,
@@ -3627,6 +3658,7 @@
 				CC9E5E08159760B100D14E83 /* stop at 2x.png in Resources */,
 				CC9E5E09159760B100D14E83 /* volume-high at 2x.png in Resources */,
 				1C88BCB719DC7CB300645190 /* ys-fs_volume_max at 2x.png in Resources */,
+				7D9516CB1C60B6DB00D14E1A /* stopIcon at 2x.png in Resources */,
 				1C88BB3019DC7C7800645190 /* ys-pause-pressed.png in Resources */,
 				CC9E5E0A159760B100D14E83 /* volume-low at 2x.png in Resources */,
 				1C88BCBD19DC7CB300645190 /* ys-fs_volume_mute_highlight at 2x.png in Resources */,
@@ -3759,6 +3791,7 @@
 				1C88BA6019DC7B2200645190 /* yosemite-window-fullscreen-graphite.png in Resources */,
 				CC166FB415F511CC0088201B /* backward-3btns-dark.png in Resources */,
 				CC166FB515F511CC0088201B /* backward-3btns-dark at 2x.png in Resources */,
+				7D9516CA1C60B6DB00D14E1A /* stopIcon.png in Resources */,
 				CC166FBA15F511DB0088201B /* backward-3btns-pressed.png in Resources */,
 				1C88BB3C19DC7C7800645190 /* ys-playlist-btn-pressed.png in Resources */,
 				CC166FBB15F511DB0088201B /* backward-3btns-pressed at 2x.png in Resources */,
@@ -3795,6 +3828,7 @@
 				CC166FE415F5136B0088201B /* previous-6btns-dark at 2x.png in Resources */,
 				1C88BB1E19DC7C7800645190 /* ys-forward-3btns.png in Resources */,
 				CC166FE915F517660088201B /* backward-6btns-pressed.png in Resources */,
+				7D9516C61C60B6DB00D14E1A /* playIcon.png in Resources */,
 				1C88BB6819DC7C7800645190 /* ys-stop.png in Resources */,
 				CC166FEA15F517660088201B /* backward-6btns-pressed at 2x.png in Resources */,
 				1C88BBF719DC7C8100645190 /* ys-effects-one-button-pressed-dark.png in Resources */,
@@ -3835,7 +3869,6 @@
 				1C88BB1619DC7C7800645190 /* ys-effects-double-buttons.png in Resources */,
 				1C88BB0D19DC7C7800645190 /* ys-backward-6btns-pressed at 2x.png in Resources */,
 				1C88BC9519DC7CB300645190 /* ys-fs_forward at 2x.png in Resources */,
-				6B3F8D311CE5CC21002A4998 /* VLCStatusBarIcon.pdf in Resources */,
 				1C88BCA119DC7CB300645190 /* ys-fs_rewind at 2x.png in Resources */,
 				1C88BB6519DC7C7800645190 /* ys-shuffle at 2x.png in Resources */,
 				1CE5ED2119DD6AB700FCEFD3 /* lion-window-fullscreen-on.png in Resources */,
@@ -3889,6 +3922,7 @@
 				1CCB5F521A62A724004C3E90 /* about.m in Sources */,
 				1CCB5F531A62A724004C3E90 /* AddonListDataSource.h in Sources */,
 				1CCB5F541A62A724004C3E90 /* AddonListDataSource.m in Sources */,
+				6B676C491C6A3E0200EF8093 /* VLCHUDButtonCell.m in Sources */,
 				1CCB5F551A62A724004C3E90 /* AddonsWindowController.h in Sources */,
 				1CCB5F561A62A724004C3E90 /* AddonsWindowController.m in Sources */,
 				1CCB5F571A62A724004C3E90 /* applescript.h in Sources */,
@@ -3900,6 +3934,7 @@
 				1CCB5F5C1A62A724004C3E90 /* bookmarks.m in Sources */,
 				1CCB5F5D1A62A724004C3E90 /* CompatibilityFixes.h in Sources */,
 				1CCB5F601A62A724004C3E90 /* ControlsBar.h in Sources */,
+				6B676C4C1C6A3E0200EF8093 /* VLCHUDSliderCell.m in Sources */,
 				1CCB5F611A62A724004C3E90 /* ControlsBar.m in Sources */,
 				1CCB5F621A62A724004C3E90 /* ConvertAndSave.h in Sources */,
 				1CCB5F631A62A724004C3E90 /* ConvertAndSave.m in Sources */,
@@ -3910,7 +3945,6 @@
 				1CCB5F681A62A724004C3E90 /* DebugMessageVisualizer.h in Sources */,
 				1CCB5F691A62A724004C3E90 /* DebugMessageVisualizer.m in Sources */,
 				1CCB5F6A1A62A724004C3E90 /* ExtensionsDialogProvider.h in Sources */,
-				7DBB06641CC2314D004C74D2 /* caopengllayer.m in Sources */,
 				1CCB5F6B1A62A724004C3E90 /* ExtensionsDialogProvider.m in Sources */,
 				1CCB5F6C1A62A724004C3E90 /* ExtensionsManager.h in Sources */,
 				1CCB5F6D1A62A724004C3E90 /* ExtensionsManager.m in Sources */,
@@ -3943,6 +3977,7 @@
 				1CCB5F851A62A724004C3E90 /* SharedDialogs.h in Sources */,
 				1CCB5F861A62A724004C3E90 /* SharedDialogs.m in Sources */,
 				1CCB5F871A62A724004C3E90 /* simple_prefs.h in Sources */,
+				6B676C4A1C6A3E0200EF8093 /* VLCHUDCheckboxCell.m in Sources */,
 				1CCB5F881A62A724004C3E90 /* simple_prefs.m in Sources */,
 				1CCB5F891A62A724004C3E90 /* StringUtility.h in Sources */,
 				1CCB5F8A1A62A724004C3E90 /* StringUtility.m in Sources */,
@@ -3964,6 +3999,7 @@
 				1CCB5F9C1A62A724004C3E90 /* MainWindowTitle.m in Sources */,
 				1CCB5F9D1A62A724004C3E90 /* BWQuincyManager.h in Sources */,
 				1CCB5F9E1A62A724004C3E90 /* BWQuincyManager.m in Sources */,
+				6B676C4B1C6A3E0200EF8093 /* VLCHUDRadiobuttonCell.m in Sources */,
 				1CCB5F9F1A62A724004C3E90 /* BWQuincyUI.h in Sources */,
 				1CCB5FA01A62A724004C3E90 /* BWQuincyUI.m in Sources */,
 				1CCB5FA11A62A724004C3E90 /* AppleRemote.h in Sources */,
diff --git a/modules/gui/macosx/Makefile.am b/modules/gui/macosx/Makefile.am
index 2c5d48a..ed5e76a 100644
--- a/modules/gui/macosx/Makefile.am
+++ b/modules/gui/macosx/Makefile.am
@@ -76,4 +76,8 @@ libmacosx_plugin_la_SOURCES = \
 	VLCScrollingClipView.h VLCScrollingClipView.m \
 	VLCStatusBarIcon.h VLCStatusBarIcon.m \
 	VLCVoutWindowController.h VLCVoutWindowController.m \
-	Windows.h Windows.m
+	Windows.h Windows.m \
+	VLCHUDSliderCell.h VLCHUDSliderCell.m \
+	VLCHUDButtonCell.h VLCHUDButtonCell.m \
+	VLCHUDCheckboxCell.h VLCHUDCheckboxCell.m \
+	VLCHUDRadiobuttonCell.h VLCHUDRadiobuttonCell.m
diff --git a/modules/gui/macosx/VLCHUDButtonCell.h b/modules/gui/macosx/VLCHUDButtonCell.h
new file mode 100644
index 0000000..cceded2
--- /dev/null
+++ b/modules/gui/macosx/VLCHUDButtonCell.h
@@ -0,0 +1,37 @@
+/*****************************************************************************
+ * VLCHUDButtonCell.h: Custom button cell UI for dark HUD Panels
+ *****************************************************************************
+ * Copyright (C) 2016 VLC authors and VideoLAN
+ * $Id$
+ *
+ * Authors: Marvin Scholz <epirat07 -at- gmail -dot- com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ *****************************************************************************/
+
+#import <Cocoa/Cocoa.h>
+
+/* Custom subclass that provides a dark NSButtonCell for HUD Panels.
+ *
+ * It does NOT support checkboxes or radio buttons,
+ * use VLCHUDCheckboxCell and VLCHUDRadiobuttonCell instead.
+ */
+ at interface VLCHUDButtonCell : NSButtonCell
+
+ at property NSGradient *normalGradient;
+ at property NSGradient *highlightGradient;
+ at property NSGradient *pushedGradient;
+
+ at end
diff --git a/modules/gui/macosx/VLCHUDButtonCell.m b/modules/gui/macosx/VLCHUDButtonCell.m
new file mode 100644
index 0000000..bf9670d
--- /dev/null
+++ b/modules/gui/macosx/VLCHUDButtonCell.m
@@ -0,0 +1,69 @@
+/*****************************************************************************
+ * VLCHUDButtonCell.m: Custom button cell UI for dark HUD Panels
+ *****************************************************************************
+ * Copyright (C) 2016 VLC authors and VideoLAN
+ * $Id$
+ *
+ * Authors: Marvin Scholz <epirat07 -at- gmail -dot- com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ *****************************************************************************/
+
+#import "VLCHUDButtonCell.h"
+
+ at implementation VLCHUDButtonCell
+
+- (instancetype) initWithCoder:(NSCoder *)coder
+{
+    self = [super initWithCoder:coder];
+    if (self) {
+        _normalGradient    = [[NSGradient alloc] initWithStartingColor:[NSColor colorWithDeviceRed:0.251f green:0.251f blue:0.255f alpha:1.0f]
+                                                           endingColor:[NSColor colorWithDeviceRed:0.118f green:0.118f blue:0.118f alpha:1.0f]];
+        _highlightGradient = [[NSGradient alloc] initWithStartingColor:[NSColor colorWithDeviceRed:0.451f green:0.451f blue:0.455f alpha:1.0f]
+                                                           endingColor:[NSColor colorWithDeviceRed:0.318f green:0.318f blue:0.318f alpha:1.0f]];
+        _pushedGradient    = [[NSGradient alloc] initWithStartingColor:[NSColor colorWithDeviceRed:0.451f green:0.451f blue:0.455f alpha:1.0f]
+                                                           endingColor:[NSColor colorWithDeviceRed:0.318f green:0.318f blue:0.318f alpha:1.0f]];
+    }
+    return self;
+}
+
+- (void) drawBezelWithFrame:(NSRect)frame inView:(NSView *)controlView
+{
+    NSLog(@"Bezel style: %lu", self.bezelStyle);
+    // Set frame to the correct size
+    frame.size.height = self.cellSize.height;
+    // Inset rect to have enough room for the stroke
+    frame = NSInsetRect(frame, 1, 1);
+    if (self.bezelStyle == NSRoundRectBezelStyle) {
+        [self drawRoundRectButtonBezelInRect:frame];
+    } else {
+        [super drawBezelWithFrame:frame inView:controlView];
+    }
+}
+
+- (void) drawRoundRectButtonBezelInRect:(NSRect)rect
+{
+    NSBezierPath *path = [NSBezierPath bezierPathWithRoundedRect:rect xRadius:8.0 yRadius:8.0];
+    if (self.highlighted) {
+        [_normalGradient drawInBezierPath:path angle:90.0f];
+    } else {
+        [_pushedGradient drawInBezierPath:path angle:90.0f];
+    }
+    [[NSColor colorWithCalibratedWhite:1.0 alpha:1.0] setStroke];
+    [path setLineWidth:0.5];
+    [path stroke];
+}
+
+ at end
diff --git a/modules/gui/macosx/VLCHUDCheckboxCell.h b/modules/gui/macosx/VLCHUDCheckboxCell.h
new file mode 100644
index 0000000..59c0e62
--- /dev/null
+++ b/modules/gui/macosx/VLCHUDCheckboxCell.h
@@ -0,0 +1,37 @@
+/*****************************************************************************
+ * VLCHUDCheckboxCell.h: Custom checkbox cell UI for dark HUD Panels
+ *****************************************************************************
+ * Copyright (C) 2016 VLC authors and VideoLAN
+ * $Id$
+ *
+ * Authors: Marvin Scholz <epirat07 -at- gmail -dot- com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ *****************************************************************************/
+
+#import <Cocoa/Cocoa.h>
+
+/* Custom subclass that provides a dark NSButtonCell Checkbox style for HUD Panels.
+ *
+ * It is not possible to get from the coder if we are a checkbox or radio button
+ * that's why this class exists, so that it can be set easily in Interface Builder.
+ */
+ at interface VLCHUDCheckboxCell : NSButtonCell
+
+ at property NSGradient *normalGradient;
+ at property NSGradient *highlightGradient;
+ at property NSGradient *pushedGradient;
+
+ at end
diff --git a/modules/gui/macosx/VLCHUDCheckboxCell.m b/modules/gui/macosx/VLCHUDCheckboxCell.m
new file mode 100644
index 0000000..af1056a
--- /dev/null
+++ b/modules/gui/macosx/VLCHUDCheckboxCell.m
@@ -0,0 +1,103 @@
+/*****************************************************************************
+ * VLCHUDCheckboxCell.m: Custom checkbox cell UI for dark HUD Panels
+ *****************************************************************************
+ * Copyright (C) 2016 VLC authors and VideoLAN
+ * $Id$
+ *
+ * Authors: Marvin Scholz <epirat07 -at- gmail -dot- com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ *****************************************************************************/
+
+#import "VLCHUDCheckboxCell.h"
+
+ at implementation VLCHUDCheckboxCell
+
+- (instancetype) initWithCoder:(NSCoder *)coder
+{
+    self = [super initWithCoder:coder];
+    if (self) {
+        _normalGradient    = [[NSGradient alloc] initWithStartingColor:[NSColor colorWithDeviceRed:0.251f green:0.251f blue:0.255f alpha:1.0f]
+                                                           endingColor:[NSColor colorWithDeviceRed:0.118f green:0.118f blue:0.118f alpha:1.0f]];
+        _highlightGradient = [[NSGradient alloc] initWithStartingColor:[NSColor colorWithDeviceRed:0.451f green:0.451f blue:0.455f alpha:1.0f]
+                                                           endingColor:[NSColor colorWithDeviceRed:0.318f green:0.318f blue:0.318f alpha:1.0f]];
+        _pushedGradient    = [[NSGradient alloc] initWithStartingColor:[NSColor colorWithDeviceRed:0.451f green:0.451f blue:0.455f alpha:1.0f]
+                                                           endingColor:[NSColor colorWithDeviceRed:0.318f green:0.318f blue:0.318f alpha:1.0f]];
+    }
+    return self;
+}
+
+- (void) drawImage:(NSImage *)image withFrame:(NSRect)frame inView:(NSView *)controlView
+{
+    // Set frame size correctly
+    NSRect backgroundFrame = frame;
+    if (self.controlSize == NSSmallControlSize) {
+        frame.origin.x += 4;
+        frame.origin.y += 2.5;
+        frame.size.width -= 5;
+        frame.size.height -= 5;
+        backgroundFrame = NSInsetRect(frame, 1.5, 1.5);
+    } else if (self.controlSize == NSMiniControlSize) {
+        frame.origin.x += 2.5;
+        frame.origin.y += 4;
+        frame.size.width -= 5;
+        frame.size.height -= 5;
+        backgroundFrame = NSInsetRect(frame, 2, 2);
+    }
+
+    // Set fill frame
+    NSBezierPath *backgroundPath = [NSBezierPath bezierPathWithRoundedRect:backgroundFrame
+                                                                   xRadius:2
+                                                                   yRadius:2];
+
+    // Draw border and background
+    [NSColor.whiteColor setStroke];
+    [backgroundPath setLineWidth:1];
+    [backgroundPath stroke];
+
+    if([self isEnabled]) {
+        [_normalGradient drawInBezierPath:backgroundPath angle:90.0];
+    } else {
+        [[NSColor lightGrayColor] setFill];
+        NSRectFill(backgroundFrame);
+    }
+
+    // Drawing inner contents
+    //NSRect fillFrame = NSInsetRect(frame, 4, 4);
+    if([self isHighlighted]) {
+
+        //[[NSColor colorWithCalibratedWhite:0.9f alpha:1.0f] setFill];
+    } else {
+        //[[NSColor colorWithCalibratedWhite:0.8f alpha:1.0f] setFill];
+    }
+    //NSRectFill(fillFrame);
+
+    // Now drawing tick
+    if ([self intValue]) {
+        if([self isEnabled]) {
+            NSBezierPath* bezierPath = [NSBezierPath bezierPath];
+            [bezierPath moveToPoint: NSMakePoint(NSMinX(frame) + 3.0, NSMidY(frame) - 2.0)];
+            [bezierPath lineToPoint: NSMakePoint(NSMidX(frame), NSMidY(frame) + 2.0)];
+            [bezierPath lineToPoint: NSMakePoint((NSMinX(frame) + NSWidth(frame) - 1), NSMinY(frame) - 2.0)];
+            [bezierPath setLineWidth: 1.5];
+            [bezierPath stroke];
+        } else {
+            //[[NSColor blackColor] setFill];
+        }
+        //NSRectFill(NSInsetRect(frame, 6, 6));
+    }
+}
+
+ at end
diff --git a/modules/gui/macosx/VLCHUDRadiobuttonCell.h b/modules/gui/macosx/VLCHUDRadiobuttonCell.h
new file mode 100644
index 0000000..4f1d4d0
--- /dev/null
+++ b/modules/gui/macosx/VLCHUDRadiobuttonCell.h
@@ -0,0 +1,33 @@
+/*****************************************************************************
+ * VLCHUDRadiobuttonCell.h: Custom radiobutton cell UI for dark HUD Panels
+ *****************************************************************************
+ * Copyright (C) 2016 VLC authors and VideoLAN
+ * $Id$
+ *
+ * Authors: Marvin Scholz <epirat07 -at- gmail -dot- com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ *****************************************************************************/
+
+#import <Cocoa/Cocoa.h>
+
+ at interface VLCHUDRadiobuttonCell : NSButtonCell
+
+ at property NSGradient *normalGradient;
+ at property NSGradient *highlightGradient;
+ at property NSGradient *pushedGradient;
+ at property NSColor    *textColor;
+
+ at end
diff --git a/modules/gui/macosx/VLCHUDRadiobuttonCell.m b/modules/gui/macosx/VLCHUDRadiobuttonCell.m
new file mode 100644
index 0000000..68290bf
--- /dev/null
+++ b/modules/gui/macosx/VLCHUDRadiobuttonCell.m
@@ -0,0 +1,95 @@
+/*****************************************************************************
+ * VLCHUDRadiobuttonCell.m: Custom radiobutton cell UI for dark HUD Panels
+ *****************************************************************************
+ * Copyright (C) 2016 VLC authors and VideoLAN
+ * $Id$
+ *
+ * Authors: Marvin Scholz <epirat07 -at- gmail -dot- com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ *****************************************************************************/
+
+#import "VLCHUDRadiobuttonCell.h"
+
+ at implementation VLCHUDRadiobuttonCell
+
+- (instancetype) initWithCoder:(NSCoder *)coder
+{
+    self = [super initWithCoder:coder];
+    if (self) {
+        _normalGradient    = [[NSGradient alloc] initWithStartingColor:[NSColor colorWithDeviceRed:0.251f green:0.251f blue:0.255f alpha:1.0f]
+                                                           endingColor:[NSColor colorWithDeviceRed:0.118f green:0.118f blue:0.118f alpha:1.0f]];
+        _highlightGradient = [[NSGradient alloc] initWithStartingColor:[NSColor colorWithDeviceRed:0.451f green:0.451f blue:0.455f alpha:1.0f]
+                                                           endingColor:[NSColor colorWithDeviceRed:0.318f green:0.318f blue:0.318f alpha:1.0f]];
+        _pushedGradient    = [[NSGradient alloc] initWithStartingColor:[NSColor colorWithDeviceRed:0.451f green:0.451f blue:0.455f alpha:1.0f]
+                                                           endingColor:[NSColor colorWithDeviceRed:0.318f green:0.318f blue:0.318f alpha:1.0f]];
+        _textColor         = [NSColor whiteColor];
+    }
+    return self;
+}
+
+- (void) drawImage:(NSImage *)image withFrame:(NSRect)frame inView:(NSView *)controlView
+{
+    // Set text color
+    NSMutableAttributedString *colorTitle = [[NSMutableAttributedString alloc] initWithAttributedString:self.attributedTitle];
+    NSRange titleRange = NSMakeRange(0, [colorTitle length]);
+    [colorTitle addAttribute:NSForegroundColorAttributeName value:_textColor range:titleRange];
+    [self setAttributedTitle:colorTitle];
+
+    // Set frame size correctly
+    NSRect backgroundFrame = frame;
+    NSRect innerFrame = frame;
+    if (self.controlSize == NSSmallControlSize) {
+        frame.origin.x += 3.5;
+        frame.origin.y += 4;
+        frame.size.width -= 7;
+        frame.size.height -= 7;
+        innerFrame = NSInsetRect(frame, 2, 2);
+    } else if (self.controlSize == NSMiniControlSize) {
+        frame.origin.x += 2;
+        frame.origin.y += 4;
+        frame.size.width -= 6.5;
+        frame.size.height -= 6.5;
+        innerFrame = NSInsetRect(frame, 4, 4);
+    }
+
+    // Set fill frame
+    NSBezierPath *backgroundPath = [NSBezierPath bezierPathWithOvalInRect:frame];
+
+    // Draw border and background
+    [NSColor.whiteColor setStroke];
+    [backgroundPath setLineWidth:1.5];
+    [backgroundPath stroke];
+
+    if ([self isEnabled]) {
+        if ([self isHighlighted]) {
+            [_normalGradient drawInBezierPath:backgroundPath angle:90.0];
+        } else {
+            [_pushedGradient drawInBezierPath:backgroundPath angle:90.0];
+        }
+    } else {
+        [[NSColor lightGrayColor] setFill];
+        [backgroundPath fill];
+    }
+
+    // Draw dot
+    if ([self integerValue] && [self isEnabled]) {
+        NSBezierPath* bezierPath = [NSBezierPath bezierPathWithOvalInRect:innerFrame];
+        [[NSColor whiteColor] setFill];
+        [bezierPath fill];
+    }
+}
+
+ at end
diff --git a/modules/gui/macosx/VLCHUDSliderCell.h b/modules/gui/macosx/VLCHUDSliderCell.h
new file mode 100644
index 0000000..e0271f3
--- /dev/null
+++ b/modules/gui/macosx/VLCHUDSliderCell.h
@@ -0,0 +1,43 @@
+/*****************************************************************************
+ * VLCHUDSliderCell.h: Custom slider cell UI for dark HUD Panels
+ *****************************************************************************
+ * Copyright (C) 2016 VLC authors and VideoLAN
+ * $Id$
+ *
+ * Authors: Marvin Scholz <epirat07 -at- gmail -dot- com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ *****************************************************************************/
+
+#import <Cocoa/Cocoa.h>
+
+
+/* Custom subclass that provides a dark NSSliderCell for HUD Panels.
+ *
+ * It does NOT support circular sliders, only horizontal and vertical
+ * sliders with and without tickmarks are supported!
+ * The size used should be "Mini" or "Small".
+ */
+ at interface VLCHUDSliderCell : NSSliderCell
+
+ at property NSColor       *sliderColor;
+ at property NSColor       *disabledSliderColor;
+ at property NSColor       *strokeColor;
+ at property NSColor       *disabledStrokeColor;
+
+ at property NSGradient    *knobGradient;
+ at property NSGradient    *disableKnobGradient;
+
+ at end
diff --git a/modules/gui/macosx/VLCHUDSliderCell.m b/modules/gui/macosx/VLCHUDSliderCell.m
new file mode 100644
index 0000000..e48d45c
--- /dev/null
+++ b/modules/gui/macosx/VLCHUDSliderCell.m
@@ -0,0 +1,152 @@
+/*****************************************************************************
+ * VLCHUDSliderCell.m: Custom slider cell UI for dark HUD Panels
+ *****************************************************************************
+ * Copyright (C) 2016 VLC authors and VideoLAN
+ * $Id$
+ *
+ * Authors: Marvin Scholz <epirat07 -at- gmail -dot- com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ *****************************************************************************/
+
+#import "VLCHUDSliderCell.h"
+
+ at implementation VLCHUDSliderCell
+
+
+- (instancetype)initWithCoder:(NSCoder *)coder
+{
+    self = [super initWithCoder:coder];
+    if (self) {
+        // Custom colors for the slider
+        _sliderColor            = [NSColor colorWithCalibratedRed:0.318 green:0.318 blue:0.318 alpha:0.6];
+        _disabledSliderColor    = [NSColor colorWithCalibratedRed:0.318 green:0.318 blue:0.318 alpha:0.2];
+        _strokeColor            = [NSColor colorWithCalibratedRed:0.749 green:0.761 blue:0.788 alpha:1.0];
+        _disabledStrokeColor    = [NSColor colorWithCalibratedRed:0.749 green:0.761 blue:0.788 alpha:0.2];
+
+
+        // Custom knob gradients
+        _knobGradient           = [[NSGradient alloc] initWithStartingColor:[NSColor colorWithDeviceRed:0.251 green:0.251 blue:0.255 alpha:1.0]
+                                                                endingColor:[NSColor colorWithDeviceRed:0.118 green:0.118 blue:0.118 alpha:1.0]];
+        _disableKnobGradient    = [[NSGradient alloc] initWithStartingColor:[NSColor colorWithDeviceRed:0.251 green:0.251 blue:0.255 alpha:1.0]
+                                                                endingColor:[NSColor colorWithDeviceRed:0.118 green:0.118 blue:0.118 alpha:1.0]];
+    }
+    return self;
+}
+
+NSAffineTransform* RotationTransform(const CGFloat angle, const NSPoint point)
+{
+    NSAffineTransform*	transform = [NSAffineTransform transform];
+    [transform translateXBy:point.x yBy:point.y];
+    [transform rotateByRadians:angle];
+    [transform translateXBy:-(point.x) yBy:-(point.y)];
+    return transform;
+}
+
+- (void) drawKnob:(NSRect)smallRect
+{
+    NSBezierPath *path = [NSBezierPath bezierPath];
+    // Inset rect to have enough room for the stroke
+    smallRect = NSInsetRect(smallRect, 0.5, 0.5);
+
+    // Get min/max/mid coords for shape calculations
+    CGFloat minX = NSMinX(smallRect);
+    CGFloat minY = NSMinY(smallRect);
+    CGFloat maxX = NSMaxX(smallRect);
+    CGFloat maxY = NSMaxY(smallRect);
+    CGFloat midX = NSMidX(smallRect);
+    CGFloat midY = NSMidY(smallRect);
+
+    // Draw the knobs shape
+    if (self.numberOfTickMarks > 0) {
+        // We have tickmarks, draw an arrow-like shape
+        if (self.isVertical) {
+            // For some reason the rect is not alligned correctly at
+            // tickmarks and clipped, so this ugly thing is necessary:
+            maxY = maxY - 2;
+            midY = midY - 1;
+
+            // Right pointing arrow
+            [path moveToPoint:NSMakePoint(minX + 3, minY)];
+            [path lineToPoint:NSMakePoint(midX + 2, minY)];
+            [path lineToPoint:NSMakePoint(maxX, midY)];
+            [path lineToPoint:NSMakePoint(midX + 2, maxY)];
+            [path lineToPoint:NSMakePoint(minX + 3, maxY)];
+            [path appendBezierPathWithArcFromPoint:NSMakePoint(minX, maxY)
+                                           toPoint:NSMakePoint(minX, maxY - 3)
+                                            radius:2.5f];
+            [path lineToPoint:NSMakePoint(minX, maxY - 3)];
+            [path lineToPoint:NSMakePoint(minX, minY + 3)];
+            [path appendBezierPathWithArcFromPoint:NSMakePoint(minX, minY)
+                                           toPoint:NSMakePoint(minX + 3, minY)
+                                            radius:2.5f];
+            [path closePath];
+        } else {
+            // Down pointing arrow
+            [path moveToPoint:NSMakePoint(minX + 3, minY)];
+            [path lineToPoint:NSMakePoint(maxX - 3, minY)];
+            [path appendBezierPathWithArcFromPoint:NSMakePoint(maxX, minY)
+                                           toPoint:NSMakePoint(maxX, minY + 3)
+                                            radius:2.5f];
+            [path lineToPoint:NSMakePoint(maxX, minY + 3)];
+            [path lineToPoint:NSMakePoint(maxX, midY + 2)];
+            [path lineToPoint:NSMakePoint(midX, maxY)];
+            [path lineToPoint:NSMakePoint(minX, midY + 2)];
+            [path lineToPoint:NSMakePoint(minX, minY + 3)];
+            [path appendBezierPathWithArcFromPoint:NSMakePoint(minX, minY)
+                                           toPoint:NSMakePoint(minX + 3, minY)
+                                            radius:2.5f];
+            [path closePath];
+        }
+
+        // Rotate our knob if needed to the correct position
+        if (self.tickMarkPosition == NSTickMarkAbove) {
+            NSAffineTransform *transform = nil;
+            transform = RotationTransform(M_PI, NSMakePoint(midX, midY));
+            [path transformUsingAffineTransform:transform];
+        }
+    } else {
+        // We have no tickmarks, draw a round knob
+        [path appendBezierPathWithOvalInRect:NSInsetRect(smallRect, 0.5, 0.5)];
+    }
+
+    // Draw the knobs background
+    if (self.isEnabled && self.isHighlighted) {
+        [_knobGradient drawInBezierPath:path angle:270.0f];
+    } else if (self.isEnabled) {
+        [_knobGradient drawInBezierPath:path angle:90.0f];
+    } else {
+        [_disableKnobGradient drawInBezierPath:path angle:90.0f];
+    }
+
+    // Draw white stroke around the knob
+    if (self.isEnabled) {
+        [_strokeColor setStroke];
+    } else {
+        [_disabledStrokeColor setStroke];
+    }
+
+    [path setLineWidth:0.5f];
+    [path stroke];
+}
+
+/*
+- (void) drawFocusRingMaskWithFrame:(NSRect)cellFrame inView:(NSView *)controlView
+{
+
+}
+*/
+
+ at end
-- 
2.7.4 (Apple Git-66)



More information about the vlc-devel mailing list