Home | History | Annotate | Download | only in mac
      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