⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 renderthemesafari.cpp

📁 linux下开源浏览器WebKit的源码,市面上的很多商用浏览器都是移植自WebKit
💻 CPP
📖 第 1 页 / 共 4 页
字号:
    struct CGFunctionCallbacks mainCallbacks = { 0, TrackGradientInterpolate, NULL };    RetainPtr<CGFunctionRef> mainFunction(AdoptCF, CGFunctionCreate(NULL, 1, NULL, 4, NULL, &mainCallbacks));    RetainPtr<CGShadingRef> mainShading;    if (o->style()->appearance() == SliderVerticalPart)        mainShading.adoptCF(CGShadingCreateAxial(cspace.get(), CGPointMake(bounds.x(),  bounds.bottom()), CGPointMake(bounds.right(), bounds.bottom()), mainFunction.get(), false, false));    else        mainShading.adoptCF(CGShadingCreateAxial(cspace.get(), CGPointMake(bounds.x(),  bounds.y()), CGPointMake(bounds.x(), bounds.bottom()), mainFunction.get(), false, false));    IntSize radius(trackRadius, trackRadius);    paintInfo.context->addRoundedRectClip(bounds,        radius, radius,        radius, radius);    CGContextDrawShading(context, mainShading.get());    paintInfo.context->restore();        return false;}void RenderThemeSafari::adjustSliderThumbStyle(CSSStyleSelector* selector, RenderStyle* style, Element* e) const {     style->setBoxShadow(0); } const float verticalSliderHeightPadding = 0.1f;bool RenderThemeSafari::paintSliderThumb(RenderObject* o, const RenderObject::PaintInfo& paintInfo, const IntRect& r){    ASSERT(SafariThemeLibrary());    ASSERT(o->parent()->isSlider());    bool pressed = static_cast<RenderSlider*>(o->parent())->inDragMode();    ThemeControlState state = determineState(o->parent());    state &= ~SafariTheme::PressedState;    if (pressed)        state |= SafariTheme::PressedState;    paintThemePart(SliderThumbPart, paintInfo.context->platformContext(), r, NSSmallControlSize, state);    return false;}const int sliderThumbWidth = 15;const int sliderThumbHeight = 15;const int mediaSliderThumbWidth = 13;const int mediaSliderThumbHeight = 14;void RenderThemeSafari::adjustSliderThumbSize(RenderObject* o) const{    if (o->style()->appearance() == SliderThumbHorizontalPart || o->style()->appearance() == SliderThumbVerticalPart) {        o->style()->setWidth(Length(sliderThumbWidth, Fixed));        o->style()->setHeight(Length(sliderThumbHeight, Fixed));    } else if (o->style()->appearance() == MediaSliderThumbPart) {        o->style()->setWidth(Length(mediaSliderThumbWidth, Fixed));        o->style()->setHeight(Length(mediaSliderThumbHeight, Fixed));    }}bool RenderThemeSafari::paintSearchField(RenderObject* o, const RenderObject::PaintInfo& paintInfo, const IntRect& r){    ASSERT(SafariThemeLibrary());    paintThemePart(SafariTheme::SearchFieldPart, paintInfo.context->platformContext(), r, controlSizeFromRect(r, searchFieldSizes()), determineState(o));    return false;}const IntSize* RenderThemeSafari::searchFieldSizes() const{    static const IntSize sizes[3] = { IntSize(0, 22), IntSize(0, 19), IntSize(0, 15) };    return sizes;}void RenderThemeSafari::setSearchFieldSize(RenderStyle* style) const{    // If the width and height are both specified, then we have nothing to do.    if (!style->width().isIntrinsicOrAuto() && !style->height().isAuto())        return;        // Use the font size to determine the intrinsic width of the control.    setSizeFromFont(style, searchFieldSizes());}void RenderThemeSafari::adjustSearchFieldStyle(CSSStyleSelector* selector, RenderStyle* style, Element* e) const{    // Override border.    style->resetBorder();    const short borderWidth = 2;    style->setBorderLeftWidth(borderWidth);    style->setBorderLeftStyle(INSET);    style->setBorderRightWidth(borderWidth);    style->setBorderRightStyle(INSET);    style->setBorderBottomWidth(borderWidth);    style->setBorderBottomStyle(INSET);    style->setBorderTopWidth(borderWidth);    style->setBorderTopStyle(INSET);            // Override height.    style->setHeight(Length(Auto));    setSearchFieldSize(style);        // Override padding size to match AppKit text positioning.    const int padding = 1;    style->setPaddingLeft(Length(padding, Fixed));    style->setPaddingRight(Length(padding, Fixed));    style->setPaddingTop(Length(padding, Fixed));    style->setPaddingBottom(Length(padding, Fixed));        NSControlSize controlSize = controlSizeForFont(style);    setFontFromControlSize(selector, style, controlSize);}bool RenderThemeSafari::paintSearchFieldCancelButton(RenderObject* o, const RenderObject::PaintInfo& paintInfo, const IntRect&){    ASSERT(SafariThemeLibrary());    Node* input = o->node()->shadowAncestorNode();    ASSERT(input);    RenderObject* renderer = input->renderer();    ASSERT(renderer);    IntRect searchRect = renderer->absoluteBoundingBoxRect();    paintThemePart(SafariTheme::SearchFieldCancelButtonPart, paintInfo.context->platformContext(), searchRect, controlSizeFromRect(searchRect, searchFieldSizes()), determineState(o));    return false;}const IntSize* RenderThemeSafari::cancelButtonSizes() const{    static const IntSize sizes[3] = { IntSize(16, 13), IntSize(13, 11), IntSize(13, 9) };    return sizes;}void RenderThemeSafari::adjustSearchFieldCancelButtonStyle(CSSStyleSelector* selector, RenderStyle* style, Element* e) const{    IntSize size = sizeForSystemFont(style, cancelButtonSizes());    style->setWidth(Length(size.width(), Fixed));    style->setHeight(Length(size.height(), Fixed));}const IntSize* RenderThemeSafari::resultsButtonSizes() const{    static const IntSize sizes[3] = { IntSize(19, 13), IntSize(17, 11), IntSize(17, 9) };    return sizes;}const int emptyResultsOffset = 9;void RenderThemeSafari::adjustSearchFieldDecorationStyle(CSSStyleSelector* selector, RenderStyle* style, Element* e) const{    IntSize size = sizeForSystemFont(style, resultsButtonSizes());    style->setWidth(Length(size.width() - emptyResultsOffset, Fixed));    style->setHeight(Length(size.height(), Fixed));}bool RenderThemeSafari::paintSearchFieldDecoration(RenderObject*, const RenderObject::PaintInfo&, const IntRect&){    return false;}void RenderThemeSafari::adjustSearchFieldResultsDecorationStyle(CSSStyleSelector* selector, RenderStyle* style, Element* e) const{    IntSize size = sizeForSystemFont(style, resultsButtonSizes());    style->setWidth(Length(size.width(), Fixed));    style->setHeight(Length(size.height(), Fixed));}bool RenderThemeSafari::paintSearchFieldResultsDecoration(RenderObject* o, const RenderObject::PaintInfo& paintInfo, const IntRect&){    ASSERT(SafariThemeLibrary());    Node* input = o->node()->shadowAncestorNode();    ASSERT(input);    RenderObject* renderer = input->renderer();    ASSERT(renderer);    IntRect searchRect = renderer->absoluteBoundingBoxRect();    paintThemePart(SafariTheme::SearchFieldResultsDecorationPart, paintInfo.context->platformContext(), searchRect, controlSizeFromRect(searchRect, searchFieldSizes()), determineState(o));    return false;}const int resultsArrowWidth = 5;void RenderThemeSafari::adjustSearchFieldResultsButtonStyle(CSSStyleSelector* selector, RenderStyle* style, Element* e) const{    IntSize size = sizeForSystemFont(style, resultsButtonSizes());    style->setWidth(Length(size.width() + resultsArrowWidth, Fixed));    style->setHeight(Length(size.height(), Fixed));}bool RenderThemeSafari::paintSearchFieldResultsButton(RenderObject* o, const RenderObject::PaintInfo& paintInfo, const IntRect&){    ASSERT(SafariThemeLibrary());    Node* input = o->node()->shadowAncestorNode();    ASSERT(input);    RenderObject* renderer = input->renderer();    ASSERT(renderer);    IntRect searchRect = renderer->absoluteBoundingBoxRect();    paintThemePart(SafariTheme::SearchFieldResultsButtonPart, paintInfo.context->platformContext(), searchRect, controlSizeFromRect(searchRect, searchFieldSizes()), determineState(o));    return false;}#if ENABLE(VIDEO)bool RenderThemeSafari::paintMediaFullscreenButton(RenderObject* o, const RenderObject::PaintInfo& paintInfo, const IntRect& r){#if defined(SAFARI_THEME_VERSION) && SAFARI_THEME_VERSION >= 2    ASSERT(SafariThemeLibrary());    paintThemePart(SafariTheme::MediaFullscreenButtonPart, paintInfo.context->platformContext(), r, NSRegularControlSize, determineState(o));#endif    return false;}bool RenderThemeSafari::paintMediaMuteButton(RenderObject* o, const RenderObject::PaintInfo& paintInfo, const IntRect& r){    Node* node = o->node();    Node* mediaNode = node ? node->shadowAncestorNode() : 0;    if (!mediaNode || (!mediaNode->hasTagName(videoTag) && !mediaNode->hasTagName(audioTag)))        return false;    HTMLMediaElement* mediaElement = static_cast<HTMLMediaElement*>(mediaNode);    if (!mediaElement)        return false;#if defined(SAFARI_THEME_VERSION) && SAFARI_THEME_VERSION >= 2    ASSERT(SafariThemeLibrary());    paintThemePart(mediaElement->muted() ? SafariTheme::MediaUnMuteButtonPart : SafariTheme::MediaMuteButtonPart, paintInfo.context->platformContext(), r, NSRegularControlSize, determineState(o));#endif    return false;}bool RenderThemeSafari::paintMediaPlayButton(RenderObject* o, const RenderObject::PaintInfo& paintInfo, const IntRect& r){    Node* node = o->node();    Node* mediaNode = node ? node->shadowAncestorNode() : 0;    if (!mediaNode || (!mediaNode->hasTagName(videoTag) && !mediaNode->hasTagName(audioTag)))        return false;    HTMLMediaElement* mediaElement = static_cast<HTMLMediaElement*>(mediaNode);    if (!mediaElement)        return false;#if defined(SAFARI_THEME_VERSION) && SAFARI_THEME_VERSION >= 2    ASSERT(SafariThemeLibrary());    paintThemePart(mediaElement->canPlay() ? SafariTheme::MediaPlayButtonPart : SafariTheme::MediaPauseButtonPart, paintInfo.context->platformContext(), r, NSRegularControlSize, determineState(o));#endif    return false;}bool RenderThemeSafari::paintMediaSeekBackButton(RenderObject* o, const RenderObject::PaintInfo& paintInfo, const IntRect& r){#if defined(SAFARI_THEME_VERSION) && SAFARI_THEME_VERSION >= 2    ASSERT(SafariThemeLibrary());    paintThemePart(SafariTheme::MediaSeekBackButtonPart, paintInfo.context->platformContext(), r, NSRegularControlSize, determineState(o));#endif    return false;}bool RenderThemeSafari::paintMediaSeekForwardButton(RenderObject* o, const RenderObject::PaintInfo& paintInfo, const IntRect& r){#if defined(SAFARI_THEME_VERSION) && SAFARI_THEME_VERSION >= 2    ASSERT(SafariThemeLibrary());    paintThemePart(SafariTheme::MediaSeekForwardButtonPart, paintInfo.context->platformContext(), r, NSRegularControlSize, determineState(o));#endif    return false;}bool RenderThemeSafari::paintMediaSliderTrack(RenderObject* o, const RenderObject::PaintInfo& paintInfo, const IntRect& r){    Node* node = o->node();    Node* mediaNode = node ? node->shadowAncestorNode() : 0;    if (!mediaNode || (!mediaNode->hasTagName(videoTag) && !mediaNode->hasTagName(audioTag)))        return false;    HTMLMediaElement* mediaElement = static_cast<HTMLMediaElement*>(mediaNode);    if (!mediaElement)        return false;    float percentLoaded = 0;    if (MediaPlayer* player = mediaElement->player())        if (player->duration())            percentLoaded = player->maxTimeBuffered() / player->duration();#if defined(SAFARI_THEME_VERSION) && SAFARI_THEME_VERSION >= 2    ASSERT(SafariThemeLibrary());    STPaintProgressIndicator(SafariTheme::MediaType, paintInfo.context->platformContext(), r, NSRegularControlSize, 0, percentLoaded);#endif    return false;}bool RenderThemeSafari::paintMediaSliderThumb(RenderObject* o, const RenderObject::PaintInfo& paintInfo, const IntRect& r){    ASSERT(SafariThemeLibrary());#if defined(SAFARI_THEME_VERSION) && SAFARI_THEME_VERSION >= 2    paintThemePart(SafariTheme::MediaSliderThumbPart, paintInfo.context->platformContext(), r, NSRegularControlSize, determineState(o));#endif    return false;}#endif} // namespace WebCore#endif // #if USE(SAFARI_THEME)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -