Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(281)

Side by Side Diff: Source/core/svg/graphics/SVGImage.h

Issue 105363002: Make SVG images for custom CSS cursors appear sharp on retina displays (Closed) Base URL: http://src.chromium.org/blink/trunk/
Patch Set: Created 7 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « Source/core/platform/graphics/Image.h ('k') | Source/core/svg/graphics/SVGImage.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2006 Eric Seidel <eric@webkit.org> 2 * Copyright (C) 2006 Eric Seidel <eric@webkit.org>
3 * Copyright (C) 2009 Apple Inc. All rights reserved. 3 * Copyright (C) 2009 Apple Inc. All rights reserved.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions 6 * modification, are permitted provided that the following conditions
7 * are met: 7 * are met:
8 * 1. Redistributions of source code must retain the above copyright 8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright 10 * 2. Redistributions in binary form must reproduce the above copyright
(...skipping 23 matching lines...) Expand all
34 class Element; 34 class Element;
35 class FrameView; 35 class FrameView;
36 class ImageBuffer; 36 class ImageBuffer;
37 class Page; 37 class Page;
38 class RenderBox; 38 class RenderBox;
39 class SVGImageChromeClient; 39 class SVGImageChromeClient;
40 class SVGImageForContainer; 40 class SVGImageForContainer;
41 41
42 class SVGImage : public Image { 42 class SVGImage : public Image {
43 public: 43 public:
44 static PassRefPtr<SVGImage> create(ImageObserver* observer) 44 static PassRefPtr<SVGImage> create(ImageObserver* observer, float deviceScal eFactor)
45 { 45 {
46 return adoptRef(new SVGImage(observer)); 46 return adoptRef(new SVGImage(observer, deviceScaleFactor));
47 } 47 }
48 48
49 static bool isInSVGImage(const Element*); 49 static bool isInSVGImage(const Element*);
50 50
51 RenderBox* embeddedContentBox() const; 51 RenderBox* embeddedContentBox() const;
52 52
53 virtual bool isSVGImage() const OVERRIDE { return true; } 53 virtual bool isSVGImage() const OVERRIDE { return true; }
54 virtual IntSize size() const OVERRIDE { return m_intrinsicSize; } 54 virtual IntSize size() const OVERRIDE { return m_intrinsicSize; }
55 55
56 virtual bool currentFrameHasSingleSecurityOrigin() const OVERRIDE; 56 virtual bool currentFrameHasSingleSecurityOrigin() const OVERRIDE;
57 57
58 virtual bool hasRelativeWidth() const OVERRIDE; 58 virtual bool hasRelativeWidth() const OVERRIDE;
59 virtual bool hasRelativeHeight() const OVERRIDE; 59 virtual bool hasRelativeHeight() const OVERRIDE;
60 60
61 virtual void startAnimation(bool /*catchUpIfNecessary*/ = true) OVERRIDE; 61 virtual void startAnimation(bool /*catchUpIfNecessary*/ = true) OVERRIDE;
62 virtual void stopAnimation() OVERRIDE; 62 virtual void stopAnimation() OVERRIDE;
63 virtual void resetAnimation() OVERRIDE; 63 virtual void resetAnimation() OVERRIDE;
64 64
65 virtual PassRefPtr<NativeImageSkia> nativeImageForCurrentFrame() OVERRIDE; 65 virtual PassRefPtr<NativeImageSkia> nativeImageForCurrentFrame(ScaleHint /*h int*/ = UseNativeScale) OVERRIDE;
66 66
67 private: 67 private:
68 friend class AXRenderObject; 68 friend class AXRenderObject;
69 friend class SVGImageChromeClient; 69 friend class SVGImageChromeClient;
70 friend class SVGImageForContainer; 70 friend class SVGImageForContainer;
71 71
72 virtual ~SVGImage(); 72 virtual ~SVGImage();
73 73
74 // Returns the SVG image document's frame. 74 // Returns the SVG image document's frame.
75 FrameView* frameView() const; 75 FrameView* frameView() const;
76 76
77 virtual String filenameExtension() const OVERRIDE; 77 virtual String filenameExtension() const OVERRIDE;
78 78
79 virtual void setContainerSize(const IntSize&) OVERRIDE; 79 virtual void setContainerSize(const IntSize&) OVERRIDE;
80 IntSize containerSize() const; 80 IntSize containerSize() const;
81 virtual bool usesContainerSize() const OVERRIDE { return true; } 81 virtual bool usesContainerSize() const OVERRIDE { return true; }
82 virtual void computeIntrinsicDimensions(Length& intrinsicWidth, Length& intr insicHeight, FloatSize& intrinsicRatio) OVERRIDE; 82 virtual void computeIntrinsicDimensions(Length& intrinsicWidth, Length& intr insicHeight, FloatSize& intrinsicRatio) OVERRIDE;
83 83
84 virtual bool dataChanged(bool allDataReceived) OVERRIDE; 84 virtual bool dataChanged(bool allDataReceived) OVERRIDE;
85 85
86 // FIXME: SVGImages are underreporting decoded sizes and will be unable 86 // FIXME: SVGImages are underreporting decoded sizes and will be unable
87 // to prune because these functions are not implemented yet. 87 // to prune because these functions are not implemented yet.
88 virtual void destroyDecodedData(bool) OVERRIDE { } 88 virtual void destroyDecodedData(bool) OVERRIDE { }
89 89
90 // FIXME: Implement this to be less conservative. 90 // FIXME: Implement this to be less conservative.
91 virtual bool currentFrameKnownToBeOpaque() OVERRIDE { return false; } 91 virtual bool currentFrameKnownToBeOpaque() OVERRIDE { return false; }
92 92
93 SVGImage(ImageObserver*); 93 SVGImage(ImageObserver*, float deviceScaleFactor);
94 virtual void draw(GraphicsContext*, const FloatRect& fromRect, const FloatRe ct& toRect, CompositeOperator, blink::WebBlendMode) OVERRIDE; 94 virtual void draw(GraphicsContext*, const FloatRect& fromRect, const FloatRe ct& toRect, CompositeOperator, blink::WebBlendMode) OVERRIDE;
95 void drawForContainer(GraphicsContext*, const FloatSize, float, const FloatR ect&, const FloatRect&, CompositeOperator, blink::WebBlendMode); 95 void drawForContainer(GraphicsContext*, const FloatSize, float, const FloatR ect&, const FloatRect&, CompositeOperator, blink::WebBlendMode);
96 void drawPatternForContainer(GraphicsContext*, const FloatSize, float, const FloatRect&, const FloatSize&, const FloatPoint&, 96 void drawPatternForContainer(GraphicsContext*, const FloatSize, float, const FloatRect&, const FloatSize&, const FloatPoint&,
97 CompositeOperator, const FloatRect&, blink::WebBlendMode, const IntSize& repeatSpacing); 97 CompositeOperator, const FloatRect&, blink::WebBlendMode, const IntSize& repeatSpacing);
98 98
99 OwnPtr<SVGImageChromeClient> m_chromeClient; 99 OwnPtr<SVGImageChromeClient> m_chromeClient;
100 OwnPtr<Page> m_page; 100 OwnPtr<Page> m_page;
101 IntSize m_intrinsicSize; 101 IntSize m_intrinsicSize;
102 float m_deviceScaleFactor;
102 }; 103 };
103 104
104 inline SVGImage* toSVGImage(Image* image) 105 inline SVGImage* toSVGImage(Image* image)
105 { 106 {
106 ASSERT_WITH_SECURITY_IMPLICATION(!image || image->isSVGImage()); 107 ASSERT_WITH_SECURITY_IMPLICATION(!image || image->isSVGImage());
107 return static_cast<SVGImage*>(image); 108 return static_cast<SVGImage*>(image);
108 } 109 }
109 110
110 class ImageObserverDisabler { 111 class ImageObserverDisabler {
111 WTF_MAKE_NONCOPYABLE(ImageObserverDisabler); 112 WTF_MAKE_NONCOPYABLE(ImageObserverDisabler);
(...skipping 11 matching lines...) Expand all
123 m_image->setImageObserver(m_observer); 124 m_image->setImageObserver(m_observer);
124 } 125 }
125 private: 126 private:
126 Image* m_image; 127 Image* m_image;
127 ImageObserver* m_observer; 128 ImageObserver* m_observer;
128 }; 129 };
129 130
130 } 131 }
131 132
132 #endif // SVGImage_h 133 #endif // SVGImage_h
OLDNEW
« no previous file with comments | « Source/core/platform/graphics/Image.h ('k') | Source/core/svg/graphics/SVGImage.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698