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

Side by Side Diff: core/fxge/dib/fx_dib_transform.cpp

Issue 2534953004: Return unique_ptrs from CFX_DIBitmap::Clone(). (Closed)
Patch Set: nits Created 4 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 | « core/fxge/dib/fx_dib_main.cpp ('k') | core/fxge/fx_dib.h » ('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 2014 PDFium Authors. All rights reserved. 1 // Copyright 2014 PDFium 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 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6 6
7 #include "core/fxge/dib/dib_int.h" 7 #include "core/fxge/dib/dib_int.h"
8 8
9 #include <memory> 9 #include <memory>
10 #include <utility> 10 #include <utility>
(...skipping 283 matching lines...) Expand 10 before | Expand all | Expand 10 after
294 rect.top = width - clip.left; 294 rect.top = width - clip.left;
295 rect.bottom = width - clip.right; 295 rect.bottom = width - clip.right;
296 } else { 296 } else {
297 rect.top = clip.left; 297 rect.top = clip.left;
298 rect.bottom = clip.right; 298 rect.bottom = clip.right;
299 } 299 }
300 rect.Normalize(); 300 rect.Normalize();
301 return rect; 301 return rect;
302 } 302 }
303 303
304 CFX_DIBitmap* CFX_DIBSource::TransformTo(const CFX_Matrix* pDestMatrix, 304 std::unique_ptr<CFX_DIBitmap> CFX_DIBSource::TransformTo(
305 int& result_left, 305 const CFX_Matrix* pDestMatrix,
306 int& result_top, 306 int& result_left,
307 uint32_t flags, 307 int& result_top,
308 const FX_RECT* pDestClip) const { 308 uint32_t flags,
309 const FX_RECT* pDestClip) const {
309 CFX_ImageTransformer transformer(this, pDestMatrix, flags, pDestClip); 310 CFX_ImageTransformer transformer(this, pDestMatrix, flags, pDestClip);
310 transformer.Start(); 311 transformer.Start();
311 transformer.Continue(nullptr); 312 transformer.Continue(nullptr);
312 result_left = transformer.result().left; 313 result_left = transformer.result().left;
313 result_top = transformer.result().top; 314 result_top = transformer.result().top;
314 return transformer.DetachBitmap().release(); 315 return transformer.DetachBitmap();
315 } 316 }
316 317
317 CFX_DIBitmap* CFX_DIBSource::StretchTo(int dest_width, 318 std::unique_ptr<CFX_DIBitmap> CFX_DIBSource::StretchTo(
318 int dest_height, 319 int dest_width,
319 uint32_t flags, 320 int dest_height,
320 const FX_RECT* pClip) const { 321 uint32_t flags,
322 const FX_RECT* pClip) const {
321 FX_RECT clip_rect(0, 0, FXSYS_abs(dest_width), FXSYS_abs(dest_height)); 323 FX_RECT clip_rect(0, 0, FXSYS_abs(dest_width), FXSYS_abs(dest_height));
322 if (pClip) 324 if (pClip)
323 clip_rect.Intersect(*pClip); 325 clip_rect.Intersect(*pClip);
324 326
325 if (clip_rect.IsEmpty()) 327 if (clip_rect.IsEmpty())
326 return nullptr; 328 return nullptr;
327 329
328 if (dest_width == m_Width && dest_height == m_Height) 330 if (dest_width == m_Width && dest_height == m_Height)
329 return Clone(&clip_rect); 331 return Clone(&clip_rect);
330 332
331 CFX_BitmapStorer storer; 333 CFX_BitmapStorer storer;
332 CFX_ImageStretcher stretcher(&storer, this, dest_width, dest_height, 334 CFX_ImageStretcher stretcher(&storer, this, dest_width, dest_height,
333 clip_rect, flags); 335 clip_rect, flags);
334 if (stretcher.Start()) 336 if (stretcher.Start())
335 stretcher.Continue(nullptr); 337 stretcher.Continue(nullptr);
336 return storer.Detach().release(); 338
339 return storer.Detach();
337 } 340 }
338 341
339 CFX_ImageTransformer::CFX_ImageTransformer(const CFX_DIBSource* pSrc, 342 CFX_ImageTransformer::CFX_ImageTransformer(const CFX_DIBSource* pSrc,
340 const CFX_Matrix* pMatrix, 343 const CFX_Matrix* pMatrix,
341 int flags, 344 int flags,
342 const FX_RECT* pClip) 345 const FX_RECT* pClip)
343 : m_pSrc(pSrc), 346 : m_pSrc(pSrc),
344 m_pMatrix(pMatrix), 347 m_pMatrix(pMatrix),
345 m_pClip(pClip), 348 m_pClip(pClip),
346 m_Flags(flags), 349 m_Flags(flags),
(...skipping 602 matching lines...) Expand 10 before | Expand all | Expand 10 after
949 } 952 }
950 } 953 }
951 } 954 }
952 m_Storer.Replace(std::move(pTransformed)); 955 m_Storer.Replace(std::move(pTransformed));
953 return false; 956 return false;
954 } 957 }
955 958
956 std::unique_ptr<CFX_DIBitmap> CFX_ImageTransformer::DetachBitmap() { 959 std::unique_ptr<CFX_DIBitmap> CFX_ImageTransformer::DetachBitmap() {
957 return m_Storer.Detach(); 960 return m_Storer.Detach();
958 } 961 }
OLDNEW
« no previous file with comments | « core/fxge/dib/fx_dib_main.cpp ('k') | core/fxge/fx_dib.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698