本文整理汇总了C++中RenderObject::hasOverflowClip方法的典型用法代码示例。如果您正苦于以下问题:C++ RenderObject::hasOverflowClip方法的具体用法?C++ RenderObject::hasOverflowClip怎么用?C++ RenderObject::hasOverflowClip使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类RenderObject
的用法示例。
在下文中一共展示了RenderObject::hasOverflowClip方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: docWidth
int RenderCanvas::docWidth() const
{
if (m_cachedDocWidth != -1)
return m_cachedDocWidth;
int w;
if (m_pagedMode || !m_view)
w = m_width;
else
w = 0;
RenderObject *fc = firstChild();
if(fc) {
// ow: like effectiveWidth() but without the negative
const int ow = fc->hasOverflowClip() ? fc->width() : fc->overflowWidth();
int dw = ow + fc->marginLeft() + fc->marginRight();
int rightmostPos = fc->rightmostPosition(false);
// kdDebug(6040) << "w " << w << " rightmostPos " << rightmostPos << " dw " << dw << " fc->rw " << fc->effectiveWidth() << " fc->width() " << fc->width() << endl;
if( rightmostPos > dw )
dw = rightmostPos;
rightmostPos = rightmostAbsolutePosition();
if ( rightmostPos > dw )
dw = rightmostPos;
if( dw > w )
w = dw;
}
RenderLayer *layer = m_layer;
w = kMax( w, layer->xPos() + layer->width() );
// kdDebug(6040) << "w " << w << " layer(" << layer->renderer()->renderName() << ")->width " << layer->width() << " rm " << (layer->xPos() + layer->width()) << " width() " << layer->renderer()->width() << " rw " << layer->renderer()->effectiveWidth() << endl;
return w;
}
示例2: LayoutSize
LayoutState::LayoutState(RenderObject* root)
: m_clipped(false)
, m_isPaginated(false)
, m_pageLogicalHeightChanged(false)
#if !ASSERT_DISABLED
, m_layoutDeltaXSaturated(false)
, m_layoutDeltaYSaturated(false)
#endif
, m_columnInfo(0)
, m_lineGrid(0)
, m_next(0)
, m_shapeInsideInfo(0)
, m_pageLogicalHeight(0)
#ifndef NDEBUG
, m_renderer(root)
#endif
{
RenderObject* container = root->container();
FloatPoint absContentPoint = container->localToAbsolute(FloatPoint(), UseTransforms);
m_paintOffset = LayoutSize(absContentPoint.x(), absContentPoint.y());
if (container->hasOverflowClip()) {
m_clipped = true;
RenderBox* containerBox = toRenderBox(container);
m_clipRect = LayoutRect(toPoint(m_paintOffset), containerBox->cachedSizeForOverflowClip());
m_paintOffset -= containerBox->scrolledContentOffset();
}
}
示例3: ENABLE
LayoutState::LayoutState(RenderObject* root)
: m_clipped(false)
, m_isPaginated(false)
, m_pageLogicalHeight(0)
, m_pageLogicalHeightChanged(false)
, m_columnInfo(0)
, m_lineGrid(0)
, m_next(0)
#ifndef NDEBUG
, m_renderer(root)
#endif
#if ENABLE(CSS_EXCLUSIONS)
, m_exclusionShapeInsideInfo(0)
#endif
{
RenderObject* container = root->container();
FloatPoint absContentPoint = container->localToAbsolute(FloatPoint(), false, true);
m_paintOffset = LayoutSize(absContentPoint.x(), absContentPoint.y());
if (container->hasOverflowClip()) {
m_clipped = true;
RenderBox* containerBox = toRenderBox(container);
m_clipRect = LayoutRect(toPoint(m_paintOffset), containerBox->cachedSizeForOverflowClip());
m_paintOffset -= containerBox->scrolledContentOffset();
}
}
示例4: IntSize
LayoutState::LayoutState(RenderObject* root)
: m_clipped(false)
, m_pageLogicalHeight(0)
, m_pageLogicalHeightChanged(false)
, m_columnInfo(0)
, m_next(0)
#ifndef NDEBUG
, m_renderer(root)
#endif
{
RenderObject* container = root->container();
// [SonyEricsson]: Check if container is null and in that case create an empty size
// to avoid a crash dereferencing a null pointer.
if (container) {
FloatPoint absContentPoint = container->localToAbsolute(FloatPoint(), false, true);
m_paintOffset = IntSize(absContentPoint.x(), absContentPoint.y());
} else {
m_paintOffset = IntSize();
}
if (container->hasOverflowClip()) {
RenderLayer* layer = toRenderBoxModelObject(container)->layer();
m_clipped = true;
m_clipRect = IntRect(toPoint(m_paintOffset), layer->size());
m_paintOffset -= layer->scrolledContentOffset();
}
}
示例5: applyClipRects
static void applyClipRects(const ClipRectsContext& context, RenderObject& renderer, LayoutPoint offset, ClipRects& clipRects)
{
ASSERT(renderer.hasOverflowClip() || renderer.hasClip());
if (renderer.hasOverflowClip()) {
ClipRect newOverflowClip = toRenderBox(renderer).overflowClipRect(offset);
newOverflowClip.setHasRadius(renderer.style()->hasBorderRadius());
clipRects.setOverflowClipRect(intersection(newOverflowClip, clipRects.overflowClipRect()));
if (renderer.isPositioned())
clipRects.setPosClipRect(intersection(newOverflowClip, clipRects.posClipRect()));
}
if (renderer.hasClip()) {
LayoutRect newClip = toRenderBox(renderer).clipRect(offset);
clipRects.setPosClipRect(intersection(newClip, clipRects.posClipRect()));
clipRects.setOverflowClipRect(intersection(newClip, clipRects.overflowClipRect()));
}
}
示例6: applyClipRects
static void applyClipRects(const ClipRectsContext& context, RenderObject& renderer, LayoutPoint offset, ClipRects& clipRects)
{
ASSERT(renderer.hasOverflowClip() || renderer.hasClip());
RenderView* view = renderer.view();
ASSERT(view);
if (clipRects.fixed() && context.rootLayer->renderer() == view)
offset -= view->frameView()->scrollOffsetForFixedPosition();
if (renderer.hasOverflowClip()) {
ClipRect newOverflowClip = toRenderBox(renderer).overflowClipRect(offset, context.scrollbarRelevancy);
newOverflowClip.setHasRadius(renderer.style()->hasBorderRadius());
clipRects.setOverflowClipRect(intersection(newOverflowClip, clipRects.overflowClipRect()));
if (renderer.isPositioned())
clipRects.setPosClipRect(intersection(newOverflowClip, clipRects.posClipRect()));
}
if (renderer.hasClip()) {
LayoutRect newClip = toRenderBox(renderer).clipRect(offset);
clipRects.setPosClipRect(intersection(newClip, clipRects.posClipRect()));
clipRects.setOverflowClipRect(intersection(newClip, clipRects.overflowClipRect()));
clipRects.setFixedClipRect(intersection(newClip, clipRects.fixedClipRect()));
}
}
示例7: IntSize
LayoutState::LayoutState(RenderObject* root)
: m_clipped(false)
, m_next(0)
#ifndef NDEBUG
, m_renderer(root)
#endif
{
RenderObject* container = root->container();
FloatPoint absContentPoint = container->localToAbsolute(FloatPoint(), false, true);
m_offset = IntSize(absContentPoint.x(), absContentPoint.y());
if (container->hasOverflowClip()) {
RenderLayer* layer = toRenderBoxModelObject(container)->layer();
m_clipped = true;
m_clipRect = IntRect(toPoint(m_offset), layer->size());
m_offset -= layer->scrolledContentOffset();
}
}
示例8: enclosingPositionedRect
static QRect enclosingPositionedRect (RenderObject *n)
{
RenderObject *enclosingParent = n->containingBlock();
QRect rect(0,0,0,0);
if (enclosingParent) {
int ox, oy;
enclosingParent->absolutePosition(ox, oy);
int off = 0;
if (!enclosingParent->hasOverflowClip()) {
ox += enclosingParent->overflowLeft();
oy += enclosingParent->overflowTop();
}
rect.setX(ox);
rect.setY(oy);
rect.setWidth(enclosingParent->effectiveWidth());
rect.setHeight(enclosingParent->effectiveHeight());
}
return rect;
}
示例9: isDeletableElement
static bool isDeletableElement(const Node* node)
{
if (!node || !node->isHTMLElement() || !node->inDocument() || !node->isContentEditable())
return false;
// In general we want to only draw the UI arround object of a certain area, but we still keep the min width/height to
// make sure we don't end up with very thin or very short elements getting the UI.
const int minimumArea = 2500;
const int minimumWidth = 48;
const int minimumHeight = 16;
const unsigned minimumVisibleBorders = 1;
RenderObject* renderer = node->renderer();
if (!renderer || !renderer->isBox())
return false;
// Disallow the body element since it isn't practical to delete, and the deletion UI would be clipped.
if (node->hasTagName(bodyTag))
return false;
// Disallow elements with any overflow clip, since the deletion UI would be clipped as well. <rdar://problem/6840161>
if (renderer->hasOverflowClip())
return false;
// Disallow Mail blockquotes since the deletion UI would get in the way of editing for these.
if (isMailBlockquote(node))
return false;
RenderBox* box = toRenderBox(renderer);
IntRect borderBoundingBox = box->borderBoundingBox();
if (borderBoundingBox.width() < minimumWidth || borderBoundingBox.height() < minimumHeight)
return false;
if ((borderBoundingBox.width() * borderBoundingBox.height()) < minimumArea)
return false;
if (renderer->isTable())
return true;
if (node->hasTagName(ulTag) || node->hasTagName(olTag) || node->hasTagName(iframeTag))
return true;
if (renderer->isPositioned())
return true;
if (renderer->isRenderBlock() && !renderer->isTableCell()) {
RenderStyle* style = renderer->style();
if (!style)
return false;
// Allow blocks that have background images
if (style->hasBackgroundImage() && style->backgroundImage()->canRender(1.0f))
return true;
// Allow blocks with a minimum number of non-transparent borders
unsigned visibleBorders = style->borderTop().isVisible() + style->borderBottom().isVisible() + style->borderLeft().isVisible() + style->borderRight().isVisible();
if (visibleBorders >= minimumVisibleBorders)
return true;
// Allow blocks that have a different background from it's parent
Node* parentNode = node->parentNode();
if (!parentNode)
return false;
RenderObject* parentRenderer = parentNode->renderer();
if (!parentRenderer)
return false;
RenderStyle* parentStyle = parentRenderer->style();
if (!parentStyle)
return false;
if (style->hasBackground() && (!parentStyle->hasBackground() || style->backgroundColor() != parentStyle->backgroundColor()))
return true;
}
return false;
}