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

Side by Side Diff: ui/gfx/image/image.h

Issue 10799014: Add support for PNG representation in gfx::Image (Closed) Base URL: http://git.chromium.org/chromium/src.git@bookmark-sync
Patch Set: Created 8 years, 4 months 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 | « chrome/browser/ui/tests/ui_gfx_image_unittest.mm ('k') | ui/gfx/image/image.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // An Image wraps an image any flavor, be it platform-native GdkBitmap/NSImage, 5 // An Image wraps an image any flavor, be it platform-native GdkBitmap/NSImage,
6 // or a SkBitmap. This also provides easy conversion to other image types 6 // or a SkBitmap. This also provides easy conversion to other image types
7 // through operator overloading. It will cache the converted representations 7 // through operator overloading. It will cache the converted representations
8 // internally to prevent double-conversion. 8 // internally to prevent double-conversion.
9 // 9 //
10 // The lifetime of both the initial representation and any converted ones are 10 // The lifetime of both the initial representation and any converted ones are
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
48 class ImageStorage; 48 class ImageStorage;
49 } 49 }
50 50
51 class UI_EXPORT Image { 51 class UI_EXPORT Image {
52 public: 52 public:
53 enum RepresentationType { 53 enum RepresentationType {
54 kImageRepGdk, 54 kImageRepGdk,
55 kImageRepCocoa, 55 kImageRepCocoa,
56 kImageRepCairo, 56 kImageRepCairo,
57 kImageRepSkia, 57 kImageRepSkia,
58 kImageRepPNG,
58 }; 59 };
59 60
60 typedef std::map<RepresentationType, internal::ImageRep*> RepresentationMap; 61 typedef std::map<RepresentationType, internal::ImageRep*> RepresentationMap;
61 62
62 // Creates an empty image with no representations. 63 // Creates an empty image with no representations.
63 Image(); 64 Image();
64 65
66 // Creates a new image by copying the PNG-encoded input for use as the default
67 // representation. For example (from an std::vector):
68 // std::vector<unsigned char> png = ...;
69 // gfx::Image image(&png.front(), png.size());
70 Image(const unsigned char* png, size_t input_size);
71
65 // Creates a new image by copying the ImageSkia for use as the default 72 // Creates a new image by copying the ImageSkia for use as the default
66 // representation. 73 // representation.
67 explicit Image(const ImageSkia& image); 74 explicit Image(const ImageSkia& image);
68 75
69 // Creates a new image by copying the image rep for use as the default 76 // Creates a new image by copying the image rep for use as the default
70 // representation. 77 // representation.
71 explicit Image(const ImageSkiaRep& image_rep); 78 explicit Image(const ImageSkiaRep& image_rep);
72 79
73 // Creates a new image by copying the bitmap for use as the default 80 // Creates a new image by copying the bitmap for use as the default
74 // representation. 81 // representation.
(...skipping 16 matching lines...) Expand all
91 // Copies a reference to |other|'s storage. 98 // Copies a reference to |other|'s storage.
92 Image& operator=(const Image& other); 99 Image& operator=(const Image& other);
93 100
94 // Deletes the image and, if the only owner of the storage, all of its cached 101 // Deletes the image and, if the only owner of the storage, all of its cached
95 // representations. 102 // representations.
96 ~Image(); 103 ~Image();
97 104
98 // Converts the Image to the desired representation and stores it internally. 105 // Converts the Image to the desired representation and stores it internally.
99 // The returned result is a weak pointer owned by and scoped to the life of 106 // The returned result is a weak pointer owned by and scoped to the life of
100 // the Image. Must only be called if IsEmpty() is false. 107 // the Image. Must only be called if IsEmpty() is false.
108 const std::vector<unsigned char>* ToImagePNG() const;
101 const SkBitmap* ToSkBitmap() const; 109 const SkBitmap* ToSkBitmap() const;
102 const ImageSkia* ToImageSkia() const; 110 const ImageSkia* ToImageSkia() const;
103 #if defined(TOOLKIT_GTK) 111 #if defined(TOOLKIT_GTK)
104 GdkPixbuf* ToGdkPixbuf() const; 112 GdkPixbuf* ToGdkPixbuf() const;
105 CairoCachedSurface* const ToCairo() const; 113 CairoCachedSurface* const ToCairo() const;
106 #elif defined(OS_MACOSX) 114 #elif defined(OS_MACOSX)
107 NSImage* ToNSImage() const; 115 NSImage* ToNSImage() const;
108 #endif 116 #endif
109 117
110 // Same as ToSkBitmap(), but returns a null SkBitmap if this image is empty. 118 // Same as ToSkBitmap(), but returns a null SkBitmap if this image is empty.
111 SkBitmap AsBitmap() const; 119 SkBitmap AsBitmap() const;
112 120
113 // Same as ToImageSkia(), but returns an empty ImageSkia if this 121 // Same as ToImageSkia(), but returns an empty ImageSkia if this
114 // image is empty. 122 // image is empty.
115 ImageSkia AsImageSkia() const; 123 ImageSkia AsImageSkia() const;
116 124
117 #if defined(OS_MACOSX) 125 #if defined(OS_MACOSX)
118 // Same as ToSkBitmap(), but returns nil if this image is empty. 126 // Same as ToSkBitmap(), but returns nil if this image is empty.
119 NSImage* AsNSImage() const; 127 NSImage* AsNSImage() const;
120 #endif 128 #endif
121 129
122 // Performs a conversion, like above, but returns a copy of the result rather 130 // Performs a conversion, like above, but returns a copy of the result rather
123 // than a weak pointer. The caller is responsible for deleting the result. 131 // than a weak pointer. The caller is responsible for deleting the result.
124 // Note that the result is only a copy in terms of memory management; the 132 // Note that the result is only a copy in terms of memory management; the
125 // backing pixels are shared amongst all copies (a fact of each of the 133 // backing pixels are shared amongst all copies (a fact of each of the
126 // converted representations, rather than a limitation imposed by Image) and 134 // converted representations, rather than a limitation imposed by Image) and
127 // so the result should be considered immutable. 135 // so the result should be considered immutable.
136 std::vector<unsigned char>* CopyImagePNG() const;
128 ImageSkia* CopyImageSkia() const; 137 ImageSkia* CopyImageSkia() const;
129 SkBitmap* CopySkBitmap() const; 138 SkBitmap* CopySkBitmap() const;
130 #if defined(TOOLKIT_GTK) 139 #if defined(TOOLKIT_GTK)
131 GdkPixbuf* CopyGdkPixbuf() const; 140 GdkPixbuf* CopyGdkPixbuf() const;
132 #elif defined(OS_MACOSX) 141 #elif defined(OS_MACOSX)
133 NSImage* CopyNSImage() const; 142 NSImage* CopyNSImage() const;
134 #endif 143 #endif
135 144
136 // DEPRECATED ---------------------------------------------------------------- 145 // DEPRECATED ----------------------------------------------------------------
137 // Conversion handlers. These wrap the ToType() variants. 146 // Conversion handlers. These wrap the ToType() variants.
(...skipping 30 matching lines...) Expand all
168 // be cheaply copied. 177 // be cheaply copied.
169 scoped_refptr<internal::ImageStorage> storage_; 178 scoped_refptr<internal::ImageStorage> storage_;
170 179
171 friend class ::ImageTest; 180 friend class ::ImageTest;
172 friend class ::ImageMacTest; 181 friend class ::ImageMacTest;
173 }; 182 };
174 183
175 } // namespace gfx 184 } // namespace gfx
176 185
177 #endif // UI_GFX_IMAGE_IMAGE_H_ 186 #endif // UI_GFX_IMAGE_IMAGE_H_
OLDNEW
« no previous file with comments | « chrome/browser/ui/tests/ui_gfx_image_unittest.mm ('k') | ui/gfx/image/image.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698