/*****************************************************************************
* misc.h: code not specific to vlc
*****************************************************************************
- * Copyright (C) 2003 the VideoLAN team
+ * Copyright (C) 2003-2014 VLC authors and VideoLAN
* $Id$
*
* Authors: Jon Lech Johansen <jon-vl@nanocrew.net>
+ * Felix Paul Kühne <fkuehne at videolan dot org>
*
* 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
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
-#import <ApplicationServices/ApplicationServices.h>
+#import <Cocoa/Cocoa.h>
+
+/*****************************************************************************
+ * NSSound (VLCAdditions)
+ *
+ * added code to change the system volume, needed for the apple remote code
+ * this is simplified code, which won't let you set the exact volume
+ * (that's what the audio output is for after all), but just the system volume
+ * in steps of 1/16 (matching the default AR or volume key implementation).
+ *****************************************************************************/
+
+@interface NSSound (VLCAdditions)
++ (float)systemVolumeForChannel:(int)channel;
++ (bool)setSystemVolume:(float)volume forChannel:(int)channel;
++ (void)increaseSystemVolume;
++ (void)decreaseSystemVolume;
+@end
/*****************************************************************************
* NSAnimation (VLCAddition)
*****************************************************************************/
@interface NSAnimation (VLCAdditions)
-- (void)setUserInfo: (void *)userInfo;
-- (void *)userInfo;
+@property (readwrite) void * userInfo;
+
@end
/*****************************************************************************
@interface NSScreen (VLCAdditions)
+ (NSScreen *)screenWithDisplayID: (CGDirectDisplayID)displayID;
-- (BOOL)isMainScreen;
+- (BOOL)hasMenuBar;
+- (BOOL)hasDock;
+- (BOOL)isScreen: (NSScreen*)screen;
- (CGDirectDisplayID)displayID;
- (void)blackoutOtherScreens;
+ (void)unblackoutScreens;
+
+- (void)setFullscreenPresentationOptions;
+- (void)setNonFullscreenPresentationOptions;
@end
/*****************************************************************************
- * VLCWindow
+ * VLCDragDropView
*
- * Missing extension to NSWindow
+ * Disables default drag / drop behaviour of an NSImageView.
+ * set it for all sub image views withing an VLCDragDropView.
*****************************************************************************/
-@interface VLCWindow : NSWindow
+
+@interface VLCDropDisabledImageView : NSImageView
+
+@end
+
+/*****************************************************************************
+ * VLCDragDropView
+ *****************************************************************************/
+
+@interface VLCDragDropView : NSView
{
- BOOL b_canBecomeKeyWindow;
- BOOL b_isset_canBecomeKeyWindow;
- NSViewAnimation *animation;
+ bool b_activeDragAndDrop;
+
+ id _dropHandler;
}
-- (void)setCanBecomeKeyWindow: (BOOL)canBecomeKey;
+@property (nonatomic, assign) id dropHandler;
+@property (nonatomic, assign) BOOL drawBorder;
-/* animate mode is only supported in >=10.4 */
-- (void)orderFront: (id)sender animate: (BOOL)animate;
-/* animate mode is only supported in >=10.4 */
-- (void)orderOut: (id)sender animate: (BOOL)animate;
+- (void)enablePlaylistItems;
-/* animate mode is only supported in >=10.4 */
-- (void)orderOut: (id)sender animate: (BOOL)animate callback:(NSInvocation *)callback;
+@end
+
+
+/*****************************************************************************
+ * MPSlider
+ *****************************************************************************/
+
+@interface MPSlider : NSSlider
+
+@end
+
+/*****************************************************************************
+ * ProgressView
+ *****************************************************************************/
+
+@interface VLCProgressView : NSView
+
+- (void)scrollWheel:(NSEvent *)o_event;
-/* animate mode is only supported in >=10.4 */
-- (void)closeAndAnimate: (BOOL)animate;
@end
/*****************************************************************************
- * VLCControllerWindow
+ * TimeLineSlider
*****************************************************************************/
+@interface TimeLineSlider : NSSlider
+{
+ NSImage *o_knob_img;
+ NSRect img_rect;
+ BOOL b_dark;
+}
+@property (readonly) CGFloat knobPosition;
-@interface VLCControllerWindow : NSWindow
+- (void)drawRect:(NSRect)rect;
+- (void)drawKnobInRect:(NSRect)knobRect;
+
+@end
+
+/*****************************************************************************
+ * VLCVolumeSliderCommon
+ *****************************************************************************/
+
+@interface VLCVolumeSliderCommon : NSSlider
{
+ BOOL _usesBrightArtwork;
}
+@property (readwrite, nonatomic) BOOL usesBrightArtwork;
+
+- (void)scrollWheel:(NSEvent *)o_event;
+- (void)drawFullVolumeMarker;
+
+- (CGFloat)fullVolumePos;
@end
+@interface VolumeSliderCell : NSSliderCell
+@end
+
/*****************************************************************************
- * VLCControllerView
+ * ITSlider
*****************************************************************************/
-@interface VLCControllerView : NSView
+@interface ITSlider : VLCVolumeSliderCommon
{
+ NSImage *img;
+ NSRect image_rect;
}
+- (void)drawRect:(NSRect)rect;
+- (void)drawKnobInRect:(NSRect)knobRect;
+
@end
/*****************************************************************************
- * VLBrushedMetalImageView
+ * VLCTimeField interface
+ *****************************************************************************
+ * we need the implementation to catch our click-event in the controller window
*****************************************************************************/
-@interface VLBrushedMetalImageView : NSImageView
+@interface VLCTimeField : NSTextField
{
+ NSShadow * o_string_shadow;
+ NSTextAlignment textAlignment;
+ NSString *o_remaining_identifier;
+ BOOL b_time_remaining;
}
+@property (readonly) BOOL timeRemaining;
-@end
+-(id)initWithFrame:(NSRect)frameRect;
+
+- (void)setRemainingIdentifier:(NSString *)o_string;
+@end
/*****************************************************************************
- * MPSlider
+ * VLCMainWindowSplitView interface
*****************************************************************************/
+@interface VLCMainWindowSplitView : NSSplitView
-@interface MPSlider : NSSlider
+@end
+
+/*****************************************************************************
+ * VLCThreePartImageView interface
+ *****************************************************************************/
+@interface VLCThreePartImageView : NSView
{
+ NSImage * o_left_img;
+ NSImage * o_middle_img;
+ NSImage * o_right_img;
}
+- (void)setImagesLeft:(NSImage *)left middle: (NSImage *)middle right:(NSImage *)right;
@end
+
/*****************************************************************************
- * ITSliderCell
+ * PositionFormatter interface
+ *
+ * Formats a text field to only accept decimals and :
*****************************************************************************/
-
-@interface ITSlider : NSSlider
+@interface PositionFormatter : NSFormatter
{
+ NSCharacterSet *o_forbidden_characters;
}
+- (NSString*)stringForObjectValue:(id)obj;
+
+- (BOOL)getObjectValue:(id*)obj forString:(NSString*)string errorDescription:(NSString**)error;
+
+- (BOOL)isPartialStringValid:(NSString*)partialString newEditingString:(NSString**)newString errorDescription:(NSString**)error;
@end
/*****************************************************************************
- * ITSliderCell
+ * NSView addition
*****************************************************************************/
-
-@interface ITSliderCell : NSSliderCell
-{
- NSImage *_knobOff;
- NSImage *_knobOn;
- BOOL b_mouse_down;
+
+@interface NSView (EnableSubviews)
+- (void)enableSubviews:(BOOL)b_enable;
+@end
+
+/*****************************************************************************
+ * VLCByteCountFormatter addition
+ *****************************************************************************/
+
+#ifndef MAC_OS_X_VERSION_10_8
+enum {
+ // Specifies display of file or storage byte counts. The actual behavior for this is platform-specific; on OS X 10.7 and less, this uses the binary style, but decimal style on 10.8 and above
+ NSByteCountFormatterCountStyleFile = 0,
+ // Specifies display of memory byte counts. The actual behavior for this is platform-specific; on OS X 10.7 and less, this uses the binary style, but that may change over time.
+ NSByteCountFormatterCountStyleMemory = 1,
+ // The following two allow specifying the number of bytes for KB explicitly. It's better to use one of the above values in most cases.
+ NSByteCountFormatterCountStyleDecimal = 2, // 1000 bytes are shown as 1 KB
+ NSByteCountFormatterCountStyleBinary = 3 // 1024 bytes are shown as 1 KB
+};
+typedef NSInteger NSByteCountFormatterCountStyle;
+#endif
+
+@interface VLCByteCountFormatter : NSFormatter {
}
++ (NSString *)stringFromByteCount:(long long)byteCount countStyle:(NSByteCountFormatterCountStyle)countStyle;
@end