macosx: Add bar drawing for VLCHUDSliderCell
authorMarvin Scholz <epirat07@gmail.com>
Tue, 19 Jul 2016 01:07:59 +0000 (03:07 +0200)
committerMarvin Scholz <epirat07@gmail.com>
Tue, 19 Jul 2016 01:07:59 +0000 (03:07 +0200)
The VLCHUDSliderCell was lacking drawing for the actual bar, this could
cause a weird look on older Mac OS X Versions. This patch adds a first
implementation of bar drawing.

It currently only fully works for horizontal sliders, for vertical
sliders the inactive/active part is ignored and the whole bar is drawn
as active.

modules/gui/macosx/VLCHUDSliderCell.m

index 8e3ac28..2dcba9e 100644 (file)
@@ -25,7 +25,6 @@
 
 @implementation VLCHUDSliderCell
 
-
 - (instancetype)initWithCoder:(NSCoder *)coder
 {
     self = [super initWithCoder:coder];
@@ -142,6 +141,32 @@ NSAffineTransform* RotationTransform(const CGFloat angle, const NSPoint point)
     [path stroke];
 }
 
+- (void)drawBarInside:(NSRect)fullRect flipped:(BOOL)flipped
+{
+    // Determine current position of knob
+    CGFloat knobPosition = (self.doubleValue - self.minValue) / (self.maxValue - self.minValue);
+
+    // Copy rect
+    NSRect activeRect = fullRect;
+
+    // TODO: Implement active/inactive drawing for vetical sliders
+    if (!self.isVertical) {
+        // Calculate active rect
+        activeRect.size.width = knobPosition * (self.controlView.frame.size.width - 1.0);
+
+        // Draw inactive bar
+        [_disabledSliderColor setFill];
+        NSBezierPath *path = [NSBezierPath bezierPathWithRoundedRect:fullRect xRadius:2.0 yRadius:2.0];
+        [path fill];
+    }
+
+    // Draw active bar
+    [_sliderColor setFill];
+    NSBezierPath *path = [NSBezierPath bezierPathWithRoundedRect:activeRect xRadius:2.0 yRadius:2.0];
+    [path fill];
+
+}
+
 /*
 - (void) drawFocusRingMaskWithFrame:(NSRect)cellFrame inView:(NSView *)controlView
 {