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

📄 renderthememac.mm

📁 linux下开源浏览器WebKit的源码,市面上的很多商用浏览器都是移植自WebKit
💻 MM
📖 第 1 页 / 共 5 页
字号:
    localBounds = convertToPaintingRect(input->renderer(), o, localBounds, r);    [[search searchButtonCell] drawWithFrame:localBounds inView:o->view()->frameView()->documentView()];    [[search searchButtonCell] setControlView:nil];    return false;}const int resultsArrowWidth = 5;void RenderThemeMac::adjustSearchFieldResultsButtonStyle(CSSStyleSelector*, RenderStyle* style, Element*) const{    IntSize size = sizeForSystemFont(style, resultsButtonSizes());    style->setWidth(Length(size.width() + resultsArrowWidth, Fixed));    style->setHeight(Length(size.height(), Fixed));    style->setBoxShadow(0);}bool RenderThemeMac::paintSearchFieldResultsButton(RenderObject* o, const RenderObject::PaintInfo& paintInfo, const IntRect& r){    Node* input = o->node()->shadowAncestorNode();    if (!input->renderer()->isBox())        return false;    setSearchCellState(input->renderer(), r);    NSSearchFieldCell* search = this->search();    if (![search searchMenuTemplate])        [search setSearchMenuTemplate:searchMenuTemplate()];    paintInfo.context->save();    float zoomLevel = o->style()->effectiveZoom();    FloatRect localBounds = [search searchButtonRectForBounds:NSRect(input->renderBox()->borderBoxRect())];    localBounds = convertToPaintingRect(input->renderer(), o, localBounds, r);        IntRect unzoomedRect(localBounds);    if (zoomLevel != 1.0f) {        unzoomedRect.setWidth(unzoomedRect.width() / zoomLevel);        unzoomedRect.setHeight(unzoomedRect.height() / zoomLevel);        paintInfo.context->translate(unzoomedRect.x(), unzoomedRect.y());        paintInfo.context->scale(FloatSize(zoomLevel, zoomLevel));        paintInfo.context->translate(-unzoomedRect.x(), -unzoomedRect.y());    }    [[search searchButtonCell] drawWithFrame:unzoomedRect inView:o->view()->frameView()->documentView()];    [[search searchButtonCell] setControlView:nil];        paintInfo.context->restore();    return false;}#if ENABLE(VIDEO)typedef enum {    MediaControllerThemeClassic   = 1,    MediaControllerThemeQT        = 2} MediaControllerThemeStyle;static int mediaControllerTheme(){    static const long minimumQuickTimeVersion = 0x07600000; // 7.6    static SInt32 quickTimeVersion = 0;    if (!quickTimeVersion) {        OSErr err;        err = Gestalt(gestaltQuickTime, &quickTimeVersion);        if (err != noErr)            return MediaControllerThemeClassic;    }    if (quickTimeVersion < minimumQuickTimeVersion)        return MediaControllerThemeClassic;    // keep the feature off for now without an explicit opt-in    Boolean validKey;    Boolean useQTMediaUI = CFPreferencesGetAppBooleanValue(CFSTR("UseQuickTimeMediaUI"), CFSTR("com.apple.WebCore"), &validKey);    if (!validKey || !useQTMediaUI)        return MediaControllerThemeClassic;    return MediaControllerThemeQT;}#endifconst int sliderThumbWidth = 15;const int sliderThumbHeight = 15;const int mediaSliderThumbWidth = 13;const int mediaSliderThumbHeight = 14;void RenderThemeMac::adjustSliderThumbSize(RenderObject* o) const{    float zoomLevel = o->style()->effectiveZoom();    if (o->style()->appearance() == SliderThumbHorizontalPart || o->style()->appearance() == SliderThumbVerticalPart) {        o->style()->setWidth(Length(static_cast<int>(sliderThumbWidth * zoomLevel), Fixed));        o->style()->setHeight(Length(static_cast<int>(sliderThumbHeight * zoomLevel), Fixed));    } #if ENABLE(VIDEO)    else if (o->style()->appearance() == MediaSliderThumbPart) {        int width = mediaSliderThumbWidth;        int height = mediaSliderThumbHeight;                if (mediaControllerTheme() == MediaControllerThemeQT) {            CGSize  size;                        wkMeasureMediaUIPart(MediaSliderThumb, MediaControllerThemeQT, NULL, &size);            width = size.width;            height = size.height;        }        o->style()->setWidth(Length(width, Fixed));        o->style()->setHeight(Length(height, Fixed));    }#endif}#if ENABLE(VIDEO)bool RenderThemeMac::paintMediaFullscreenButton(RenderObject* o, const RenderObject::PaintInfo& paintInfo, const IntRect& r){    Node* node = o->node();    if (!node)        return false;    LocalCurrentGraphicsContext localContext(paintInfo.context);    wkDrawMediaUIPart(MediaFullscreenButton, mediaControllerTheme(), paintInfo.context->platformContext(), r, node->active());    return false;}bool RenderThemeMac::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;        LocalCurrentGraphicsContext localContext(paintInfo.context);    wkDrawMediaUIPart(mediaElement->muted() ? MediaUnMuteButton : MediaMuteButton, mediaControllerTheme(), paintInfo.context->platformContext(), r, node->active());    return false;}bool RenderThemeMac::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;    LocalCurrentGraphicsContext localContext(paintInfo.context);    wkDrawMediaUIPart(mediaElement->canPlay() ? MediaPlayButton : MediaPauseButton, mediaControllerTheme(), paintInfo.context->platformContext(), r, node->active());    return false;}bool RenderThemeMac::paintMediaSeekBackButton(RenderObject* o, const RenderObject::PaintInfo& paintInfo, const IntRect& r){    Node* node = o->node();    if (!node)        return false;    LocalCurrentGraphicsContext localContext(paintInfo.context);    wkDrawMediaUIPart(MediaSeekBackButton, mediaControllerTheme(), paintInfo.context->platformContext(), r, node->active());    return false;}bool RenderThemeMac::paintMediaSeekForwardButton(RenderObject* o, const RenderObject::PaintInfo& paintInfo, const IntRect& r){    Node* node = o->node();    if (!node)        return false;    LocalCurrentGraphicsContext localContext(paintInfo.context);    wkDrawMediaUIPart(MediaSeekForwardButton, mediaControllerTheme(), paintInfo.context->platformContext(), r, node->active());    return false;}bool RenderThemeMac::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 timeLoaded = 0;    float currentTime = 0;    float duration = 0;    if (MediaPlayer* player = mediaElement->player()) {        duration = player->duration();        timeLoaded = player->maxTimeBuffered();        currentTime = player->currentTime();    }     wkDrawMediaSliderTrack(mediaControllerTheme(), paintInfo.context->platformContext(), r, timeLoaded, currentTime, duration);    return false;}bool RenderThemeMac::paintMediaSliderThumb(RenderObject* o, const RenderObject::PaintInfo& paintInfo, const IntRect& r){    Node* node = o->node();    if (!node)        return false;    LocalCurrentGraphicsContext localContext(paintInfo.context);    wkDrawMediaUIPart(MediaSliderThumb, mediaControllerTheme(), paintInfo.context->platformContext(), r, node->active());    return false;}bool RenderThemeMac::paintMediaTimelineContainer(RenderObject* o, const RenderObject::PaintInfo& paintInfo, const IntRect& r){    Node* node = o->node();    if (!node)        return false;    LocalCurrentGraphicsContext localContext(paintInfo.context);    wkDrawMediaUIPart(MediaTimelineContainer, mediaControllerTheme(), paintInfo.context->platformContext(), r, node->active());    return false;}bool RenderThemeMac::paintMediaCurrentTime(RenderObject* o, const RenderObject::PaintInfo& paintInfo, const IntRect& r){    Node* node = o->node();    if (!node)        return false;    LocalCurrentGraphicsContext localContext(paintInfo.context);    wkDrawMediaUIPart(MediaCurrentTimeDisplay, mediaControllerTheme(), paintInfo.context->platformContext(), r, node->active());    return false;}bool RenderThemeMac::paintMediaTimeRemaining(RenderObject* o, const RenderObject::PaintInfo& paintInfo, const IntRect& r){    Node* node = o->node();    if (!node)        return false;    LocalCurrentGraphicsContext localContext(paintInfo.context);    wkDrawMediaUIPart(MediaTimeRemainingDisplay, mediaControllerTheme(), paintInfo.context->platformContext(), r, node->active());    return false;}String RenderThemeMac::extraMediaControlsStyleSheet(){    if (mediaControllerTheme() == MediaControllerThemeQT)         return String(mediaControlsQTUserAgentStyleSheet, sizeof(mediaControlsQTUserAgentStyleSheet));    else        return String();}bool RenderThemeMac::hitTestMediaControlPart(RenderObject* o, const IntPoint& absPoint){    if (!o->isBox())        return false;            if (mediaControllerTheme() == MediaControllerThemeQT) {        ControlPart part = o->style()->appearance();        FloatPoint localPoint = o->absoluteToLocal(absPoint, false, true);  // respect transforms        return wkHitTestMediaUIPart(part - MediaFullscreenButtonPart, MediaControllerThemeQT, CGRect(toRenderBox(o)->borderBoxRect()), CGPoint(localPoint));    }    else        return RenderTheme::hitTestMediaControlPart(o, absPoint);}#endifNSPopUpButtonCell* RenderThemeMac::popupButton() const{    if (!m_popupButton) {        m_popupButton.adoptNS([[NSPopUpButtonCell alloc] initTextCell:@"" pullsDown:NO]);        [m_popupButton.get() setUsesItemFromMenu:NO];        [m_popupButton.get() setFocusRingType:NSFocusRingTypeExterior];    }        return m_popupButton.get();}NSSearchFieldCell* RenderThemeMac::search() const{    if (!m_search) {        m_search.adoptNS([[NSSearchFieldCell alloc] initTextCell:@""]);        [m_search.get() setBezelStyle:NSTextFieldRoundedBezel];        [m_search.get() setBezeled:YES];        [m_search.get() setEditable:YES];        [m_search.get() setFocusRingType:NSFocusRingTypeExterior];    }    return m_search.get();}NSMenu* RenderThemeMac::searchMenuTemplate() const{    if (!m_searchMenuTemplate)        m_searchMenuTemplate.adoptNS([[NSMenu alloc] initWithTitle:@""]);    return m_searchMenuTemplate.get();}NSSliderCell* RenderThemeMac::sliderThumbHorizontal() const{    if (!m_sliderThumbHorizontal) {        m_sliderThumbHorizontal.adoptNS([[NSSliderCell alloc] init]);        [m_sliderThumbHorizontal.get() setTitle:nil];        [m_sliderThumbHorizontal.get() setSliderType:NSLinearSlider];        [m_sliderThumbHorizontal.get() setControlSize:NSSmallControlSize];        [m_sliderThumbHorizontal.get() setFocusRingType:NSFocusRingTypeExterior];    }        return m_sliderThumbHorizontal.get();}NSSliderCell* RenderThemeMac::sliderThumbVertical() const{    if (!m_sliderThumbVertical) {        m_sliderThumbVertical.adoptNS([[NSSliderCell alloc] init]);        [m_sliderThumbVertical.get() setTitle:nil];        [m_sliderThumbVertical.get() setSliderType:NSLinearSlider];        [m_sliderThumbVertical.get() setControlSize:NSSmallControlSize];        [m_sliderThumbVertical.get() setFocusRingType:NSFocusRingTypeExterior];    }        return m_sliderThumbVertical.get();}} // namespace WebCore

⌨️ 快捷键说明

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