| OLD | NEW |
| 1 // Copyright (c) 2006-2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 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 #include "printing/image.h" | 5 #include "printing/image.h" |
| 6 | 6 |
| 7 #include "app/gfx/codec/png_codec.h" |
| 7 #include "base/file_util.h" | 8 #include "base/file_util.h" |
| 8 #include "base/gfx/png_decoder.h" | |
| 9 #include "base/gfx/png_encoder.h" | |
| 10 #include "base/gfx/rect.h" | 9 #include "base/gfx/rect.h" |
| 11 #include "base/md5.h" | 10 #include "base/md5.h" |
| 12 #include "base/string_util.h" | 11 #include "base/string_util.h" |
| 13 #include "skia/ext/platform_device.h" | 12 #include "skia/ext/platform_device.h" |
| 14 | 13 |
| 15 #if defined(OS_WIN) | 14 #if defined(OS_WIN) |
| 16 #include "base/gfx/gdi_util.h" // EMF support | 15 #include "base/gfx/gdi_util.h" // EMF support |
| 17 #endif | 16 #endif |
| 18 | 17 |
| 19 namespace { | 18 namespace { |
| (...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 94 | 93 |
| 95 std::string Image::checksum() const { | 94 std::string Image::checksum() const { |
| 96 MD5Digest digest; | 95 MD5Digest digest; |
| 97 MD5Sum(&data_[0], data_.size(), &digest); | 96 MD5Sum(&data_[0], data_.size(), &digest); |
| 98 return HexEncode(&digest, sizeof(digest)); | 97 return HexEncode(&digest, sizeof(digest)); |
| 99 } | 98 } |
| 100 | 99 |
| 101 bool Image::SaveToPng(const std::wstring& filename) const { | 100 bool Image::SaveToPng(const std::wstring& filename) const { |
| 102 DCHECK(!data_.empty()); | 101 DCHECK(!data_.empty()); |
| 103 std::vector<unsigned char> compressed; | 102 std::vector<unsigned char> compressed; |
| 104 bool success = PNGEncoder::Encode(&*data_.begin(), | 103 bool success = gfx::PNGCodec::Encode(&*data_.begin(), |
| 105 PNGEncoder::FORMAT_BGRA, | 104 gfx::PNGCodec::FORMAT_BGRA, |
| 106 size_.width(), | 105 size_.width(), |
| 107 size_.height(), | 106 size_.height(), |
| 108 row_length_, | 107 row_length_, |
| 109 true, | 108 true, |
| 110 &compressed); | 109 &compressed); |
| 111 DCHECK(success && compressed.size()); | 110 DCHECK(success && compressed.size()); |
| 112 if (success) { | 111 if (success) { |
| 113 int write_bytes = file_util::WriteFile( | 112 int write_bytes = file_util::WriteFile( |
| 114 filename, | 113 filename, |
| 115 reinterpret_cast<char*>(&*compressed.begin()), compressed.size()); | 114 reinterpret_cast<char*>(&*compressed.begin()), compressed.size()); |
| 116 success = (write_bytes == static_cast<int>(compressed.size())); | 115 success = (write_bytes == static_cast<int>(compressed.size())); |
| 117 DCHECK(success); | 116 DCHECK(success); |
| 118 } | 117 } |
| 119 return success; | 118 return success; |
| 120 } | 119 } |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 172 // Like the WebKit ImageDiff tool, we define percentage different in terms | 171 // Like the WebKit ImageDiff tool, we define percentage different in terms |
| 173 // of the size of the 'actual' bitmap. | 172 // of the size of the 'actual' bitmap. |
| 174 double total_pixels = static_cast<double>(size_.width()) * | 173 double total_pixels = static_cast<double>(size_.width()) * |
| 175 static_cast<double>(height); | 174 static_cast<double>(height); |
| 176 return static_cast<double>(pixels_different) / total_pixels * 100.; | 175 return static_cast<double>(pixels_different) / total_pixels * 100.; |
| 177 } | 176 } |
| 178 | 177 |
| 179 bool Image::LoadPng(const std::string& compressed) { | 178 bool Image::LoadPng(const std::string& compressed) { |
| 180 int w; | 179 int w; |
| 181 int h; | 180 int h; |
| 182 bool success = PNGDecoder::Decode( | 181 bool success = gfx::PNGCodec::Decode( |
| 183 reinterpret_cast<const unsigned char*>(compressed.c_str()), | 182 reinterpret_cast<const unsigned char*>(compressed.c_str()), |
| 184 compressed.size(), PNGDecoder::FORMAT_BGRA, &data_, &w, &h); | 183 compressed.size(), gfx::PNGCodec::FORMAT_BGRA, &data_, &w, &h); |
| 185 size_.SetSize(w, h); | 184 size_.SetSize(w, h); |
| 186 row_length_ = size_.width() * sizeof(uint32); | 185 row_length_ = size_.width() * sizeof(uint32); |
| 187 return success; | 186 return success; |
| 188 } | 187 } |
| 189 | 188 |
| 190 bool Image::LoadMetafile(const std::string& data) { | 189 bool Image::LoadMetafile(const std::string& data) { |
| 191 DCHECK(!data.empty()); | 190 DCHECK(!data.empty()); |
| 192 #if defined(OS_WIN) | 191 #if defined(OS_WIN) |
| 193 NativeMetafile metafile; | 192 NativeMetafile metafile; |
| 194 metafile.CreateFromData(data.data(), data.size()); | 193 metafile.CreateFromData(data.data(), data.size()); |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 231 return success; | 230 return success; |
| 232 } | 231 } |
| 233 #else | 232 #else |
| 234 NOTIMPLEMENTED(); | 233 NOTIMPLEMENTED(); |
| 235 #endif | 234 #endif |
| 236 | 235 |
| 237 return false; | 236 return false; |
| 238 } | 237 } |
| 239 | 238 |
| 240 } // namespace printing | 239 } // namespace printing |
| OLD | NEW |