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

Side by Side Diff: remoting/base/util.cc

Issue 11470028: Move screen capturers to remoting/capturer. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 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 | Annotate | Revision Log
« no previous file with comments | « remoting/base/util.h ('k') | remoting/capturer/DEPS » ('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 #include "remoting/base/util.h" 5 #include "remoting/base/util.h"
6 6
7 #include <math.h> 7 #include <math.h>
8 8
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/stringprintf.h" 10 #include "base/stringprintf.h"
(...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after
207 const SkISize& out_size) { 207 const SkISize& out_size) {
208 int left = (rect.left() * out_size.width()) / in_size.width(); 208 int left = (rect.left() * out_size.width()) / in_size.width();
209 int top = (rect.top() * out_size.height()) / in_size.height(); 209 int top = (rect.top() * out_size.height()) / in_size.height();
210 int right = (rect.right() * out_size.width() + in_size.width() - 1) / 210 int right = (rect.right() * out_size.width() + in_size.width() - 1) /
211 in_size.width(); 211 in_size.width();
212 int bottom = (rect.bottom() * out_size.height() + in_size.height() - 1) / 212 int bottom = (rect.bottom() * out_size.height() + in_size.height() - 1) /
213 in_size.height(); 213 in_size.height();
214 return SkIRect::MakeLTRB(left, top, right, bottom); 214 return SkIRect::MakeLTRB(left, top, right, bottom);
215 } 215 }
216 216
217 void CopyRect(const uint8* src_plane,
218 int src_plane_stride,
219 uint8* dest_plane,
220 int dest_plane_stride,
221 int bytes_per_pixel,
222 const SkIRect& rect) {
223 // Get the address of the starting point.
224 const int src_y_offset = src_plane_stride * rect.top();
225 const int dest_y_offset = dest_plane_stride * rect.top();
226 const int x_offset = bytes_per_pixel * rect.left();
227 src_plane += src_y_offset + x_offset;
228 dest_plane += dest_y_offset + x_offset;
229
230 // Copy pixels in the rectangle line by line.
231 const int bytes_per_line = bytes_per_pixel * rect.width();
232 const int height = rect.height();
233 for (int i = 0 ; i < height; ++i) {
234 memcpy(dest_plane, src_plane, bytes_per_line);
235 src_plane += src_plane_stride;
236 dest_plane += dest_plane_stride;
237 }
238 }
239
240 void CopyRGB32Rect(const uint8* source_buffer, 217 void CopyRGB32Rect(const uint8* source_buffer,
241 int source_stride, 218 int source_stride,
242 const SkIRect& source_buffer_rect, 219 const SkIRect& source_buffer_rect,
243 uint8* dest_buffer, 220 uint8* dest_buffer,
244 int dest_stride, 221 int dest_stride,
245 const SkIRect& dest_buffer_rect, 222 const SkIRect& dest_buffer_rect,
246 const SkIRect& dest_rect) { 223 const SkIRect& dest_rect) {
247 DCHECK(dest_buffer_rect.contains(dest_rect)); 224 DCHECK(dest_buffer_rect.contains(dest_rect));
248 DCHECK(source_buffer_rect.contains(dest_rect)); 225 DCHECK(source_buffer_rect.contains(dest_rect));
249 226
250 // Get the address of the starting point. 227 // Get the address of the starting point.
251 int source_offset = CalculateRGBOffset(dest_rect.x() - source_buffer_rect.x(), 228 source_buffer += CalculateRGBOffset(dest_rect.x() - source_buffer_rect.x(),
252 dest_rect.y() - source_buffer_rect.y(), 229 dest_rect.y() - source_buffer_rect.y(),
253 source_stride); 230 source_stride);
254 int dest_offset = CalculateRGBOffset(dest_rect.x() - dest_buffer_rect.x(), 231 dest_buffer += CalculateRGBOffset(dest_rect.x() - dest_buffer_rect.x(),
255 dest_rect.y() - dest_buffer_rect.y(), 232 dest_rect.y() - dest_buffer_rect.y(),
256 source_stride); 233 source_stride);
257 234
258 // Copy bits. 235 // Copy pixels in the rectangle line by line.
259 CopyRect(source_buffer + source_offset, 236 const int bytes_per_line = kBytesPerPixelRGB32 * dest_rect.width();
260 source_stride, 237 for (int i = 0 ; i < dest_rect.height(); ++i) {
261 dest_buffer + dest_offset, 238 memcpy(dest_buffer, source_buffer, bytes_per_line);
262 dest_stride, 239 source_buffer += source_stride;
263 kBytesPerPixelRGB32, 240 dest_buffer += dest_stride;
264 SkIRect::MakeWH(dest_rect.width(), dest_rect.height())); 241 }
265 } 242 }
266 243
267 std::string ReplaceLfByCrLf(const std::string& in) { 244 std::string ReplaceLfByCrLf(const std::string& in) {
268 std::string out; 245 std::string out;
269 out.resize(2 * in.size()); 246 out.resize(2 * in.size());
270 char* out_p_begin = &out[0]; 247 char* out_p_begin = &out[0];
271 char* out_p = out_p_begin; 248 char* out_p = out_p_begin;
272 const char* in_p_begin = &in[0]; 249 const char* in_p_begin = &in[0];
273 const char* in_p_end = &in[in.size()]; 250 const char* in_p_end = &in[in.size()];
274 for (const char* in_p = in_p_begin; in_p < in_p_end; ++in_p) { 251 for (const char* in_p = in_p_begin; in_p < in_p_end; ++in_p) {
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
328 } 305 }
329 306
330 ++ptr; 307 ++ptr;
331 } 308 }
332 } 309 }
333 310
334 return true; 311 return true;
335 } 312 }
336 313
337 } // namespace remoting 314 } // namespace remoting
OLDNEW
« no previous file with comments | « remoting/base/util.h ('k') | remoting/capturer/DEPS » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698