1 /* 2 * Copyright (C) 2011 Apple Inc. All Rights Reserved. 3 * 4 * Redistribution and use in source and binary forms, with or without 5 * modification, are permitted provided that the following conditions 6 * are met: 7 * 1. Redistributions of source code must retain the above copyright 8 * notice, this list of conditions and the following disclaimer. 9 * 2. Redistributions in binary form must reproduce the above copyright 10 * notice, this list of conditions and the following disclaimer in the 11 * documentation and/or other materials provided with the distribution. 12 * 13 * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY 14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR 17 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 18 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 19 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 20 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 21 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 24 */ 25 26 #ifndef WebCore_NSScrollerImpDetails_h 27 #define WebCore_NSScrollerImpDetails_h 28 29 #include "config.h" 30 #import <AvailabilityMacros.h> 31 32 // Public APIs not available on versions of Mac on which we build 33 #if __MAC_OS_X_VERSION_MAX_ALLOWED == 1060 34 enum { 35 NSScrollerStyleLegacy = 0, 36 NSScrollerStyleOverlay = 1 37 }; 38 typedef NSInteger NSScrollerStyle; 39 40 enum { 41 NSScrollerKnobStyleDefault = 0, 42 NSScrollerKnobStyleDark = 1, 43 NSScrollerKnobStyleLight = 2 44 }; 45 typedef NSInteger NSScrollerKnobStyle; 46 #endif 47 48 #if __MAC_OS_X_VERSION_MAX_ALLOWED == 1060 49 @interface NSScroller(NSObject) 50 + (NSScrollerStyle)preferredScrollerStyle; 51 @end 52 #endif 53 54 @interface NSObject (ScrollbarPainter) 55 + (id)scrollerImpWithStyle:(NSScrollerStyle)newScrollerStyle controlSize:(NSControlSize)newControlSize horizontal:(BOOL)horizontal replacingScrollerImp:(id)previous; 56 - (CGFloat)knobAlpha; 57 - (void)setKnobAlpha:(CGFloat)knobAlpha; 58 - (CGFloat)trackAlpha; 59 - (void)setTrackAlpha:(CGFloat)trackAlpha; 60 - (void)setEnabled:(BOOL)enabled; 61 - (void)setBoundsSize:(NSSize)boundsSize; 62 - (void)setDoubleValue:(double)doubleValue; 63 - (void)setKnobProportion:(CGFloat)proportion; 64 - (void)setKnobStyle:(NSScrollerKnobStyle)knobStyle; 65 - (void)setExpanded:(BOOL)expanded; 66 - (BOOL)isExpanded; 67 - (void)setDelegate:(id)delegate; 68 - (void)setUiStateTransitionProgress:(CGFloat)uiStateTransitionProgress; 69 - (void)setExpansionTransitionProgress:(CGFloat)expansionTransitionProgress; 70 - (BOOL)isHorizontal; 71 - (CGFloat)trackWidth; 72 - (CGFloat)trackBoxWidth; 73 - (CGFloat)knobMinLength; 74 - (CGFloat)trackOverlapEndInset; 75 - (CGFloat)knobOverlapEndInset; 76 - (CGFloat)trackEndInset; 77 - (CGFloat)knobEndInset; 78 - (CGFloat)uiStateTransitionProgress; 79 - (CGFloat)expansionTransitionProgress; 80 - (NSRect)rectForPart:(NSScrollerPart)partCode; 81 - (void)drawKnobSlotInRect:(NSRect)slotRect highlight:(BOOL)flag alpha:(CGFloat)alpha; 82 - (void)drawKnob; 83 - (void)mouseEnteredScroller; 84 - (void)mouseExitedScroller; 85 @end 86 87 @interface NSObject (ScrollbarPainterController) 88 - (void)setDelegate:(id)delegate; 89 - (void)hideOverlayScrollers; 90 - (void)flashScrollers; 91 - (id)horizontalScrollerImp; 92 - (void)setHorizontalScrollerImp:(id)horizontal; 93 - (id)verticalScrollerImp; 94 - (void)setVerticalScrollerImp:(id)vertical; 95 - (NSScrollerStyle)scrollerStyle; 96 - (void)setScrollerStyle:(NSScrollerStyle)scrollerStyle; 97 - (void)contentAreaScrolled; 98 - (void)contentAreaScrolledInDirection:(NSPoint)direction; 99 - (void)contentAreaWillDraw; 100 - (void)mouseEnteredContentArea; 101 - (void)mouseExitedContentArea; 102 - (void)mouseMovedInContentArea; 103 - (void)startLiveResize; 104 - (void)contentAreaDidResize; 105 - (void)endLiveResize; 106 - (void)windowOrderedIn; 107 - (void)windowOrderedOut; 108 - (void)beginScrollGesture; 109 - (void)endScrollGesture; 110 @end 111 112 namespace WebCore { 113 114 bool isScrollbarOverlayAPIAvailable(); 115 116 NSScrollerStyle recommendedScrollerStyle(); 117 118 } 119 120 #endif 121