本文整理汇总了C++中RenderStyle::appearance方法的典型用法代码示例。如果您正苦于以下问题:C++ RenderStyle::appearance方法的具体用法?C++ RenderStyle::appearance怎么用?C++ RenderStyle::appearance使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类RenderStyle
的用法示例。
在下文中一共展示了RenderStyle::appearance方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: popupInternalPaddingBottom
int RenderThemeSafari::popupInternalPaddingBottom(RenderStyle& style) const
{
if (style.appearance() == MenulistPart)
return popupButtonPadding(controlSizeForFont(style))[bottomPadding];
if (style.appearance() == MenulistButtonPart)
return styledPopupPaddingBottom;
return 0;
}
示例2: adjustSliderThumbSize
void RenderThemeSafari::adjustSliderThumbSize(RenderStyle& style, Element*) const
{
if (style.appearance() == SliderThumbHorizontalPart || style.appearance() == SliderThumbVerticalPart) {
style.setWidth(Length(sliderThumbWidth, Fixed));
style.setHeight(Length(sliderThumbHeight, Fixed));
}
#if ENABLE(VIDEO)
else if (style.appearance() == MediaSliderThumbPart)
RenderMediaControls::adjustMediaSliderThumbSize(style);
#endif
}
示例3: popupInternalPaddingRight
int RenderThemeSafari::popupInternalPaddingRight(RenderStyle& style) const
{
if (style.appearance() == MenulistPart)
return popupButtonPadding(controlSizeForFont(style))[rightPadding];
if (style.appearance() == MenulistButtonPart) {
float fontScale = style.fontSize() / baseFontSize;
float arrowWidth = baseArrowWidth * fontScale;
return static_cast<int>(ceilf(arrowWidth + arrowPaddingLeft + arrowPaddingRight + paddingBeforeSeparator));
}
return 0;
}
示例4: isControlStyled
bool RenderThemeSafari::isControlStyled(const RenderStyle& style, const BorderData& border,
const FillLayer& background, const Color& backgroundColor) const
{
// If we didn't find SafariTheme.dll we won't be able to paint any themed controls.
if (!SafariThemeLibrary())
return true;
if (style.appearance() == TextFieldPart || style.appearance() == TextAreaPart || style.appearance() == ListboxPart)
return style.border() != border;
return RenderTheme::isControlStyled(style, border, background, backgroundColor);
}
示例5: isControlStyled
bool RenderTheme::isControlStyled(const RenderStyle& style, const BorderData& border, const FillLayer& background, const Color& backgroundColor) const
{
switch (style.appearance()) {
case PushButtonPart:
case SquareButtonPart:
case DefaultButtonPart:
case ButtonPart:
case ListboxPart:
case MenulistPart:
case ProgressBarPart:
case MeterPart:
case RelevancyLevelIndicatorPart:
case ContinuousCapacityLevelIndicatorPart:
case DiscreteCapacityLevelIndicatorPart:
case RatingLevelIndicatorPart:
// FIXME: SearchFieldPart should be included here when making search fields style-able.
case TextFieldPart:
case TextAreaPart:
// Test the style to see if the UA border and background match.
return (style.border() != border
|| *style.backgroundLayers() != background
|| style.visitedDependentColor(CSSPropertyBackgroundColor) != backgroundColor);
default:
return false;
}
}
示例6: initializeCommonQStyleOptions
ControlPart RenderThemeQStyle::initializeCommonQStyleOptions(QStyleFacadeOption &option, RenderObject* o) const
{
// Default bits: no focus, no mouse over, enabled
option.state &= ~(QStyleFacade::State_HasFocus | QStyleFacade::State_MouseOver);
option.state |= QStyleFacade::State_Enabled;
if (isReadOnlyControl(o))
// Readonly is supported on textfields.
option.state |= QStyleFacade::State_ReadOnly;
option.direction = Qt::LeftToRight;
if (isHovered(o))
option.state |= QStyleFacade::State_MouseOver;
setPaletteFromPageClientIfExists(option.palette);
if (!isEnabled(o)) {
option.palette.setCurrentColorGroup(QPalette::Disabled);
option.state &= ~QStyleFacade::State_Enabled;
}
RenderStyle* style = o->style();
if (!style)
return NoControlPart;
ControlPart result = style->appearance();
if (supportsFocus(result) && isFocused(o)) {
option.state |= QStyleFacade::State_HasFocus;
option.state |= QStyleFacade::State_KeyboardFocusChange;
}
if (style->direction() == WebCore::RTL)
option.direction = Qt::RightToLeft;
switch (result) {
case PushButtonPart:
case SquareButtonPart:
case ButtonPart:
case ButtonBevelPart:
case ListItemPart:
case MenulistButtonPart:
case InnerSpinButtonPart:
case SearchFieldResultsButtonPart:
case SearchFieldCancelButtonPart: {
if (isPressed(o))
option.state |= QStyleFacade::State_Sunken;
else if (result == PushButtonPart || result == ButtonPart)
option.state |= QStyleFacade::State_Raised;
break;
}
case RadioPart:
case CheckboxPart:
option.state |= (isChecked(o) ? QStyleFacade::State_On : QStyleFacade::State_Off);
}
return result;
}
示例7: layout
void RenderSliderThumb::layout()
{
// FIXME: Hard-coding this cascade of appearance is bad, because it's something
// that CSS usually does. We need to find a way to express this in CSS.
RenderStyle* parentStyle = parent()->style();
if (parentStyle->appearance() == SliderVerticalPart)
style()->setAppearance(SliderThumbVerticalPart);
else if (parentStyle->appearance() == SliderHorizontalPart)
style()->setAppearance(SliderThumbHorizontalPart);
else if (parentStyle->appearance() == MediaSliderPart)
style()->setAppearance(MediaSliderThumbPart);
else if (parentStyle->appearance() == MediaVolumeSliderPart)
style()->setAppearance(MediaVolumeSliderThumbPart);
if (style()->hasAppearance()) {
// FIXME: This should pass the style, not the renderer, to the theme.
theme()->adjustSliderThumbSize(this);
}
RenderBlock::layout();
}
示例8: setPositionFromPoint
void SliderThumbElement::setPositionFromPoint(const IntPoint& point)
{
HTMLInputElement* input = hostInput();
ASSERT(input);
if (!input->renderer() || !renderer())
return;
IntPoint offset = roundedIntPoint(input->renderer()->absoluteToLocal(point, false, true));
RenderStyle* sliderStyle = input->renderer()->style();
bool isVertical = sliderStyle->appearance() == SliderVerticalPart || sliderStyle->appearance() == MediaVolumeSliderPart;
int trackSize;
int position;
int currentPosition;
if (isVertical) {
trackSize = input->renderBox()->contentHeight() - renderBox()->height();
position = offset.y() - renderBox()->height() / 2;
currentPosition = renderBox()->y() - input->renderBox()->contentBoxRect().y();
} else {
trackSize = input->renderBox()->contentWidth() - renderBox()->width();
position = offset.x() - renderBox()->width() / 2;
currentPosition = renderBox()->x() - input->renderBox()->contentBoxRect().x();
}
position = max(0, min(position, trackSize));
if (position == currentPosition)
return;
StepRange range(input);
double fraction = static_cast<double>(position) / trackSize;
if (isVertical)
fraction = 1 - fraction;
double value = range.clampValue(range.valueFromProportion(fraction));
// FIXME: This is no longer being set from renderer. Consider updating the method name.
input->setValueFromRenderer(serializeForNumberType(value));
renderer()->setNeedsLayout(true);
input->dispatchFormControlChangeEvent();
}
示例9: adjustButtonStyle
void RenderThemeSafari::adjustButtonStyle(StyleResolver& styleResolver, RenderStyle& style, Element*) const
{
// There are three appearance constants for buttons.
// (1) Push-button is the constant for the default Aqua system button. Push buttons will not scale vertically and will not allow
// custom fonts or colors. <input>s use this constant. This button will allow custom colors and font weights/variants but won't
// scale vertically.
// (2) square-button is the constant for the square button. This button will allow custom fonts and colors and will scale vertically.
// (3) Button is the constant that means "pick the best button as appropriate." <button>s use this constant. This button will
// also scale vertically and allow custom fonts and colors. It will attempt to use Aqua if possible and will make this determination
// solely on the rectangle of the control.
// Determine our control size based off our font.
NSControlSize controlSize = controlSizeForFont(style);
if (style.appearance() == PushButtonPart) {
// Ditch the border.
style.resetBorder();
// Height is locked to auto.
style.setHeight(Length(Auto));
// White-space is locked to pre
style.setWhiteSpace(PRE);
// Set the button's vertical size.
setButtonSize(style);
// Add in the padding that we'd like to use.
setButtonPaddingFromControlSize(style, controlSize);
// Our font is locked to the appropriate system font size for the control. To clarify, we first use the CSS-specified font to figure out
// a reasonable control size, but once that control size is determined, we throw that font away and use the appropriate
// system font for the control size instead.
setFontFromControlSize(styleResolver, style, controlSize);
} else {
// Set a min-height so that we can't get smaller than the mini button.
style.setMinHeight(Length(15, Fixed));
// Reset the top and bottom borders.
style.resetBorderTop();
style.resetBorderBottom();
}
}
示例10: adjustMediaSliderThumbSize
void RenderMediaControls::adjustMediaSliderThumbSize(RenderStyle& style)
{
int part;
switch (style.appearance()) {
case MediaSliderThumbPart:
part = MediaSliderThumb;
break;
case MediaVolumeSliderThumbPart:
part = MediaVolumeSliderThumb;
break;
case MediaFullScreenVolumeSliderThumbPart:
part = MediaFullScreenVolumeSliderThumb;
break;
default:
return;
}
CGSize size;
wkMeasureMediaUIPart(part, 0, &size);
float zoomLevel = style.effectiveZoom();
style.setWidth(Length(static_cast<int>(size.width * zoomLevel), Fixed));
style.setHeight(Length(static_cast<int>(size.height * zoomLevel), Fixed));
}
示例11: adjustStyle
void RenderTheme::adjustStyle(StyleResolver& styleResolver, RenderStyle& style, Element* element, bool UAHasAppearance, const BorderData& border, const FillLayer& background, const Color& backgroundColor)
{
// Force inline and table display styles to be inline-block (except for table- which is block)
ControlPart part = style.appearance();
if (style.display() == INLINE || style.display() == INLINE_TABLE || style.display() == TABLE_ROW_GROUP
|| style.display() == TABLE_HEADER_GROUP || style.display() == TABLE_FOOTER_GROUP
|| style.display() == TABLE_ROW || style.display() == TABLE_COLUMN_GROUP || style.display() == TABLE_COLUMN
|| style.display() == TABLE_CELL || style.display() == TABLE_CAPTION)
style.setDisplay(INLINE_BLOCK);
else if (style.display() == COMPACT || style.display() == LIST_ITEM || style.display() == TABLE)
style.setDisplay(BLOCK);
if (UAHasAppearance && isControlStyled(style, border, background, backgroundColor)) {
if (part == MenulistPart) {
style.setAppearance(MenulistButtonPart);
part = MenulistButtonPart;
} else
style.setAppearance(NoControlPart);
}
if (!style.hasAppearance())
return;
// Never support box-shadow on native controls.
style.setBoxShadow(nullptr);
#if USE(NEW_THEME)
switch (part) {
case CheckboxPart:
case InnerSpinButtonPart:
case RadioPart:
case PushButtonPart:
case SquareButtonPart:
case DefaultButtonPart:
case ButtonPart: {
// Border
LengthBox borderBox(style.borderTopWidth(), style.borderRightWidth(), style.borderBottomWidth(), style.borderLeftWidth());
borderBox = m_theme->controlBorder(part, style.fontCascade(), borderBox, style.effectiveZoom());
if (borderBox.top().value() != static_cast<int>(style.borderTopWidth())) {
if (borderBox.top().value())
style.setBorderTopWidth(borderBox.top().value());
else
style.resetBorderTop();
}
if (borderBox.right().value() != static_cast<int>(style.borderRightWidth())) {
if (borderBox.right().value())
style.setBorderRightWidth(borderBox.right().value());
else
style.resetBorderRight();
}
if (borderBox.bottom().value() != static_cast<int>(style.borderBottomWidth())) {
style.setBorderBottomWidth(borderBox.bottom().value());
if (borderBox.bottom().value())
style.setBorderBottomWidth(borderBox.bottom().value());
else
style.resetBorderBottom();
}
if (borderBox.left().value() != static_cast<int>(style.borderLeftWidth())) {
style.setBorderLeftWidth(borderBox.left().value());
if (borderBox.left().value())
style.setBorderLeftWidth(borderBox.left().value());
else
style.resetBorderLeft();
}
// Padding
LengthBox paddingBox = m_theme->controlPadding(part, style.fontCascade(), style.paddingBox(), style.effectiveZoom());
if (paddingBox != style.paddingBox())
style.setPaddingBox(paddingBox);
// Whitespace
if (m_theme->controlRequiresPreWhiteSpace(part))
style.setWhiteSpace(PRE);
// Width / Height
// The width and height here are affected by the zoom.
// FIXME: Check is flawed, since it doesn't take min-width/max-width into account.
LengthSize controlSize = m_theme->controlSize(part, style.fontCascade(), LengthSize(style.width(), style.height()), style.effectiveZoom());
if (controlSize.width() != style.width())
style.setWidth(controlSize.width());
if (controlSize.height() != style.height())
style.setHeight(controlSize.height());
// Min-Width / Min-Height
LengthSize minControlSize = m_theme->minimumControlSize(part, style.fontCascade(), style.effectiveZoom());
if (minControlSize.width() != style.minWidth())
style.setMinWidth(minControlSize.width());
if (minControlSize.height() != style.minHeight())
style.setMinHeight(minControlSize.height());
// Font
if (auto themeFont = m_theme->controlFont(part, style.fontCascade(), style.effectiveZoom())) {
// If overriding the specified font with the theme font, also override the line height with the standard line height.
style.setLineHeight(RenderStyle::initialLineHeight());
if (style.setFontDescription(themeFont.value()))
style.fontCascade().update(nullptr);
}
// Special style that tells enabled default buttons in active windows to use the ActiveButtonText color.
// The active window part of the test has to be done at paint time since it's not triggered by a style change.
//.........这里部分代码省略.........
示例12: supportsFocusRing
bool RenderTheme::supportsFocusRing(const RenderStyle& style) const
{
return (style.hasAppearance() && style.appearance() != TextFieldPart && style.appearance() != TextAreaPart && style.appearance() != MenulistButtonPart && style.appearance() != ListboxPart);
}
示例13: adjustButtonStyle
void RenderThemeGtk::adjustButtonStyle(StyleResolver&, RenderStyle& style, WebCore::Element&) const
{
// Some layout tests check explicitly that buttons ignore line-height.
if (style.appearance() == PushButtonPart)
style.setLineHeight(RenderStyle::initialLineHeight());
}
示例14: hasVerticalAppearance
inline static bool hasVerticalAppearance(HTMLInputElement* input)
{
ASSERT(input->renderer());
RenderStyle* sliderStyle = input->renderer()->style();
return sliderStyle->appearance() == SliderVerticalPart || sliderStyle->appearance() == MediaVolumeSliderPart;
}
示例15: supportsFocusRing
bool RenderThemeGtk::supportsFocusRing(const RenderStyle& style) const
{
return supportsFocus(style.appearance());
}