static inline CSSBoxType referenceBox(const ShapeValue& shapeValue) { if (shapeValue.cssBox() == BoxMissing) { if (shapeValue.type() == ShapeValue::Image) return ContentBox; return MarginBox; } return shapeValue.cssBox(); }
bool ShapeInsideInfo::isEnabledFor(const RenderBlock* renderer) { ShapeValue* shapeValue = renderer->style()->resolvedShapeInside(); if (!shapeValue || shapeValue->type() != ShapeValue::Shape) return false; BasicShape* shape = shapeValue->shape(); return shape && shape->type() != BasicShape::BasicShapeInsetRectangleType; }
const Shape* ShapeInfo<RenderType, shapeGetter, intervalGetter>::computedShape() const { if (Shape* shape = m_shape.get()) return shape; ShapeValue* shapeValue = (m_renderer->style()->*shapeGetter)(); BasicShape* shape = (shapeValue && shapeValue->type() == ShapeValue::Shape) ? shapeValue->shape() : 0; ASSERT(shape); m_shape = Shape::createShape(shape, LayoutSize(m_shapeLogicalWidth, m_shapeLogicalHeight), m_renderer->style()->writingMode(), m_renderer->style()->shapeMargin(), m_renderer->style()->shapePadding()); ASSERT(m_shape); return m_shape.get(); }
bool ShapeInsideInfo::isEnabledFor(const RenderBlock* renderer) { ShapeValue* shapeValue = renderer->style()->resolvedShapeInside(); if (!shapeValue) return false; switch (shapeValue->type()) { case ShapeValue::Shape: return shapeValue->shape() && shapeValue->shape()->type() != BasicShape::BasicShapeInsetRectangleType; case ShapeValue::Image: return shapeValue->isImageValid(); default: return false; } }
bool ShapeOutsideInfo::isEnabledFor(const RenderBox& box) { ShapeValue* shapeValue = box.style().shapeOutside(); if (!box.isFloating() || !shapeValue) return false; switch (shapeValue->type()) { case ShapeValue::Shape: return shapeValue->shape(); case ShapeValue::Image: return shapeValue->isImageValid() && checkShapeImageOrigin(box.document(), *(shapeValue->image())); case ShapeValue::Box: return true; } ASSERT_NOT_REACHED(); return false; }
bool ShapeOutsideInfo::isEnabledFor(const RenderBox* box) { ShapeValue* shapeValue = box->style()->shapeOutside(); if (!box->isFloating() || !shapeValue) return false; switch (shapeValue->type()) { case ShapeValue::Shape: return shapeValue->shape(); case ShapeValue::Image: return shapeValue->isImageValid(); default: return false; } }
bool ShapeOutsideInfo::isEnabledFor(const RenderBox* box) { ShapeValue* shapeValue = box->style().shapeOutside(); if (!box->isFloating() || !shapeValue) return false; switch (shapeValue->type()) { case ShapeValue::Shape: return shapeValue->shape(); case ShapeValue::Image: return shapeValue->isImageValid() && checkShapeImageOrigin(box->document(), *(shapeValue->image()->cachedImage())); default: return false; } }
bool ShapeInsideInfo::isEnabledFor(const RenderBlock* renderer) { ShapeValue* shapeValue = renderer->style()->resolvedShapeInside(); if (!shapeValue) return false; switch (shapeValue->type()) { case ShapeValue::Shape: return shapeValue->shape() && shapeValue->shape()->type() != BasicShape::BasicShapeInsetRectangleType && shapeValue->shape()->type() != BasicShape::BasicShapeInsetType; case ShapeValue::Image: return shapeValue->isImageValid() && checkShapeImageOrigin(renderer->document(), *(shapeValue->image()->cachedImage())); case ShapeValue::Box: return true; case ShapeValue::Outside: return false; } return false; }
bool ShapeInsideInfo::isEnabledFor(const RenderBlock& renderer) { ShapeValue* shapeValue = renderer.style().resolvedShapeInside(); if (!shapeValue) return false; switch (shapeValue->type()) { case ShapeValue::Shape: return shapeValue->shape() && shapeValue->shape()->type() != BasicShape::BasicShapeInsetRectangleType && shapeValue->shape()->type() != BasicShape::BasicShapeInsetType; case ShapeValue::Image: return shapeValue->isImageValid() && checkShapeImageOrigin(renderer.document(), *(shapeValue->image()->cachedImage())); case ShapeValue::Box: return false; case ShapeValue::Outside: // Outside value must already be resolved break; } ASSERT_NOT_REACHED(); return false; }