Index: Source/core/rendering/RenderDetailsMarker.cpp |
diff --git a/Source/core/rendering/RenderDetailsMarker.cpp b/Source/core/rendering/RenderDetailsMarker.cpp |
index 50d3ac69fea3ebf74e0664ca0ab53c653b8f9d25..0f9ded3f063adb5d2897b82da838c29acd124768 100644 |
--- a/Source/core/rendering/RenderDetailsMarker.cpp |
+++ b/Source/core/rendering/RenderDetailsMarker.cpp |
@@ -24,8 +24,8 @@ |
#include "core/HTMLNames.h" |
#include "core/dom/Element.h" |
#include "core/html/HTMLElement.h" |
+#include "core/paint/DetailsMarkerPainter.h" |
#include "core/rendering/PaintInfo.h" |
-#include "platform/graphics/GraphicsContext.h" |
namespace blink { |
@@ -36,39 +36,6 @@ RenderDetailsMarker::RenderDetailsMarker(Element* element) |
{ |
} |
-static Path createPath(const FloatPoint* path) |
-{ |
- Path result; |
- result.moveTo(FloatPoint(path[0].x(), path[0].y())); |
- for (int i = 1; i < 4; ++i) |
- result.addLineTo(FloatPoint(path[i].x(), path[i].y())); |
- return result; |
-} |
- |
-static Path createDownArrowPath() |
-{ |
- FloatPoint points[4] = { FloatPoint(0.0f, 0.07f), FloatPoint(0.5f, 0.93f), FloatPoint(1.0f, 0.07f), FloatPoint(0.0f, 0.07f) }; |
- return createPath(points); |
-} |
- |
-static Path createUpArrowPath() |
-{ |
- FloatPoint points[4] = { FloatPoint(0.0f, 0.93f), FloatPoint(0.5f, 0.07f), FloatPoint(1.0f, 0.93f), FloatPoint(0.0f, 0.93f) }; |
- return createPath(points); |
-} |
- |
-static Path createLeftArrowPath() |
-{ |
- FloatPoint points[4] = { FloatPoint(1.0f, 0.0f), FloatPoint(0.14f, 0.5f), FloatPoint(1.0f, 1.0f), FloatPoint(1.0f, 0.0f) }; |
- return createPath(points); |
-} |
- |
-static Path createRightArrowPath() |
-{ |
- FloatPoint points[4] = { FloatPoint(0.0f, 0.0f), FloatPoint(0.86f, 0.5f), FloatPoint(0.0f, 1.0f), FloatPoint(0.0f, 0.0f) }; |
- return createPath(points); |
-} |
- |
RenderDetailsMarker::Orientation RenderDetailsMarker::orientation() const |
{ |
switch (style()->writingMode()) { |
@@ -92,48 +59,9 @@ RenderDetailsMarker::Orientation RenderDetailsMarker::orientation() const |
return Right; |
} |
-Path RenderDetailsMarker::getCanonicalPath() const |
-{ |
- switch (orientation()) { |
- case Left: return createLeftArrowPath(); |
- case Right: return createRightArrowPath(); |
- case Up: return createUpArrowPath(); |
- case Down: return createDownArrowPath(); |
- } |
- |
- return Path(); |
-} |
- |
-Path RenderDetailsMarker::getPath(const LayoutPoint& origin) const |
-{ |
- Path result = getCanonicalPath(); |
- result.transform(AffineTransform().scale(contentWidth().toFloat(), contentHeight().toFloat())); |
- result.translate(FloatSize(origin.x().toFloat(), origin.y().toFloat())); |
- return result; |
-} |
- |
void RenderDetailsMarker::paint(PaintInfo& paintInfo, const LayoutPoint& paintOffset) |
{ |
- if (paintInfo.phase != PaintPhaseForeground || style()->visibility() != VISIBLE) { |
- RenderBlock::paint(paintInfo, paintOffset); |
- return; |
- } |
- |
- LayoutPoint boxOrigin(paintOffset + location()); |
- LayoutRect overflowRect(visualOverflowRect()); |
- overflowRect.moveBy(boxOrigin); |
- |
- if (!paintInfo.rect.intersects(pixelSnappedIntRect(overflowRect))) |
- return; |
- |
- const Color color(resolveColor(CSSPropertyColor)); |
- paintInfo.context->setStrokeColor(color); |
- paintInfo.context->setStrokeStyle(SolidStroke); |
- paintInfo.context->setStrokeThickness(1.0f); |
- paintInfo.context->setFillColor(color); |
- |
- boxOrigin.move(borderLeft() + paddingLeft(), borderTop() + paddingTop()); |
- paintInfo.context->fillPath(getPath(boxOrigin)); |
+ DetailsMarkerPainter(*this).paint(paintInfo, paintOffset); |
} |
bool RenderDetailsMarker::isOpen() const |