summaryrefslogtreecommitdiff
path: root/chromium/third_party/WebKit/Source/core/rendering/RenderImage.h
diff options
context:
space:
mode:
authorZeno Albisser <zeno.albisser@digia.com>2013-08-15 21:46:11 +0200
committerZeno Albisser <zeno.albisser@digia.com>2013-08-15 21:46:11 +0200
commit679147eead574d186ebf3069647b4c23e8ccace6 (patch)
treefc247a0ac8ff119f7c8550879ebb6d3dd8d1ff69 /chromium/third_party/WebKit/Source/core/rendering/RenderImage.h
downloadqtwebengine-chromium-679147eead574d186ebf3069647b4c23e8ccace6.tar.gz
Initial import.
Diffstat (limited to 'chromium/third_party/WebKit/Source/core/rendering/RenderImage.h')
-rw-r--r--chromium/third_party/WebKit/Source/core/rendering/RenderImage.h134
1 files changed, 134 insertions, 0 deletions
diff --git a/chromium/third_party/WebKit/Source/core/rendering/RenderImage.h b/chromium/third_party/WebKit/Source/core/rendering/RenderImage.h
new file mode 100644
index 00000000000..6c4aeedb4df
--- /dev/null
+++ b/chromium/third_party/WebKit/Source/core/rendering/RenderImage.h
@@ -0,0 +1,134 @@
+/*
+ * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
+ * (C) 1999 Antti Koivisto (koivisto@kde.org)
+ * (C) 2006 Allan Sandfeld Jensen (kde@carewolf.com)
+ * (C) 2006 Samuel Weinig (sam.weinig@gmail.com)
+ * Copyright (C) 2004, 2005, 2006, 2007, 2009, 2010, 2011 Apple Inc. All rights reserved.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef RenderImage_h
+#define RenderImage_h
+
+#include "core/rendering/RenderImageResource.h"
+#include "core/rendering/RenderReplaced.h"
+
+namespace WebCore {
+
+class HTMLAreaElement;
+class HTMLMapElement;
+
+class RenderImage : public RenderReplaced {
+public:
+ RenderImage(Element*);
+ virtual ~RenderImage();
+
+ static RenderImage* createAnonymous(Document*);
+
+ void setImageResource(PassOwnPtr<RenderImageResource>);
+
+ RenderImageResource* imageResource() { return m_imageResource.get(); }
+ const RenderImageResource* imageResource() const { return m_imageResource.get(); }
+ ImageResource* cachedImage() const { return m_imageResource ? m_imageResource->cachedImage() : 0; }
+
+ bool setImageSizeForAltText(ImageResource* newImage = 0);
+
+ void updateAltText();
+
+ HTMLMapElement* imageMap() const;
+ void areaElementFocusChanged(HTMLAreaElement*);
+
+ void highQualityRepaintTimerFired(Timer<RenderImage>*);
+
+ void setIsGeneratedContent(bool generated = true) { m_isGeneratedContent = generated; }
+
+ bool isGeneratedContent() const { return m_isGeneratedContent; }
+
+ String altText() const { return m_altText; }
+
+protected:
+ virtual bool needsPreferredWidthsRecalculation() const OVERRIDE FINAL;
+ virtual RenderBox* embeddedContentBox() const OVERRIDE FINAL;
+ virtual void computeIntrinsicRatioInformation(FloatSize& intrinsicSize, double& intrinsicRatio, bool& isPercentageIntrinsicSize) const OVERRIDE FINAL;
+
+ virtual void styleDidChange(StyleDifference, const RenderStyle*) OVERRIDE FINAL;
+
+ virtual void imageChanged(WrappedImagePtr, const IntRect* = 0);
+
+ void paintIntoRect(GraphicsContext*, const LayoutRect&);
+ virtual void paint(PaintInfo&, const LayoutPoint&) OVERRIDE FINAL;
+ virtual void layout();
+
+ virtual void intrinsicSizeChanged()
+ {
+ if (m_imageResource)
+ imageChanged(m_imageResource->imagePtr());
+ }
+
+private:
+ virtual const char* renderName() const { return "RenderImage"; }
+
+ virtual bool isImage() const { return true; }
+ virtual bool isRenderImage() const OVERRIDE FINAL { return true; }
+
+ virtual void paintReplaced(PaintInfo&, const LayoutPoint&);
+
+ virtual bool foregroundIsKnownToBeOpaqueInRect(const LayoutRect& localRect, unsigned maxDepthToTest) const OVERRIDE FINAL;
+ virtual bool computeBackgroundIsKnownToBeObscured() OVERRIDE FINAL;
+
+ virtual LayoutUnit minimumReplacedHeight() const OVERRIDE;
+
+ virtual void notifyFinished(Resource*) OVERRIDE FINAL;
+ virtual bool nodeAtPoint(const HitTestRequest&, HitTestResult&, const HitTestLocation& locationInContainer, const LayoutPoint& accumulatedOffset, HitTestAction) OVERRIDE FINAL;
+
+ virtual bool boxShadowShouldBeAppliedToBackground(BackgroundBleedAvoidance, InlineFlowBox*) const OVERRIDE FINAL;
+
+ IntSize imageSizeForError(ImageResource*) const;
+ void imageDimensionsChanged(bool imageSizeChanged, const IntRect* = 0);
+ bool updateIntrinsicSizeIfNeeded(const LayoutSize&, bool imageSizeChanged);
+
+ void paintAreaElementFocusRing(PaintInfo&);
+
+ // Text to display as long as the image isn't available.
+ String m_altText;
+ OwnPtr<RenderImageResource> m_imageResource;
+ bool m_needsToSetSizeForAltText;
+ bool m_didIncrementVisuallyNonEmptyPixelCount;
+ bool m_isGeneratedContent;
+
+ friend class RenderImageScaleObserver;
+};
+
+inline RenderImage* toRenderImage(RenderObject* object)
+{
+ ASSERT_WITH_SECURITY_IMPLICATION(!object || object->isRenderImage());
+ return static_cast<RenderImage*>(object);
+}
+
+inline const RenderImage* toRenderImage(const RenderObject* object)
+{
+ ASSERT_WITH_SECURITY_IMPLICATION(!object || object->isRenderImage());
+ return static_cast<const RenderImage*>(object);
+}
+
+// This will catch anyone doing an unnecessary cast.
+void toRenderImage(const RenderImage*);
+
+} // namespace WebCore
+
+#endif // RenderImage_h