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

Side by Side Diff: core/fxge/agg/fx_agg_driver.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/fxcodec/codec/fx_codec_progress.cpp ('k') | core/fxge/dib/fx_dib_convert.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 // 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/agg/fx_agg_driver.h" 7 #include "core/fxge/agg/fx_agg_driver.h"
8 8
9 #include <algorithm> 9 #include <algorithm>
10 #include <utility> 10 #include <utility>
(...skipping 1584 matching lines...) Expand 10 before | Expand all | Expand 10 after
1595 *pRect = m_pClipRgn->GetBox(); 1595 *pRect = m_pClipRgn->GetBox();
1596 return true; 1596 return true;
1597 } 1597 }
1598 1598
1599 bool CFX_AggDeviceDriver::GetDIBits(CFX_DIBitmap* pBitmap, int left, int top) { 1599 bool CFX_AggDeviceDriver::GetDIBits(CFX_DIBitmap* pBitmap, int left, int top) {
1600 if (!m_pBitmap || !m_pBitmap->GetBuffer()) 1600 if (!m_pBitmap || !m_pBitmap->GetBuffer())
1601 return true; 1601 return true;
1602 1602
1603 FX_RECT rect(left, top, left + pBitmap->GetWidth(), 1603 FX_RECT rect(left, top, left + pBitmap->GetWidth(),
1604 top + pBitmap->GetHeight()); 1604 top + pBitmap->GetHeight());
1605 CFX_DIBitmap* pBack = nullptr; 1605 std::unique_ptr<CFX_DIBitmap> pBack;
1606 if (m_pOriDevice) { 1606 if (m_pOriDevice) {
1607 pBack = m_pOriDevice->Clone(&rect); 1607 pBack = m_pOriDevice->Clone(&rect);
1608 if (!pBack) 1608 if (!pBack)
1609 return true; 1609 return true;
1610 1610
1611 pBack->CompositeBitmap(0, 0, pBack->GetWidth(), pBack->GetHeight(), 1611 pBack->CompositeBitmap(0, 0, pBack->GetWidth(), pBack->GetHeight(),
1612 m_pBitmap, 0, 0); 1612 m_pBitmap, 0, 0);
1613 } else { 1613 } else {
1614 pBack = m_pBitmap->Clone(&rect); 1614 pBack = m_pBitmap->Clone(&rect);
1615 if (!pBack) 1615 if (!pBack)
1616 return true; 1616 return true;
1617 } 1617 }
1618 1618
1619 bool bRet = true;
1620 left = std::min(left, 0); 1619 left = std::min(left, 0);
1621 top = std::min(top, 0); 1620 top = std::min(top, 0);
1622 if (m_bRgbByteOrder) { 1621 if (m_bRgbByteOrder) {
1623 RgbByteOrderTransferBitmap(pBitmap, 0, 0, rect.Width(), rect.Height(), 1622 RgbByteOrderTransferBitmap(pBitmap, 0, 0, rect.Width(), rect.Height(),
1624 pBack, left, top); 1623 pBack.get(), left, top);
1625 } else { 1624 return true;
1626 bRet = pBitmap->TransferBitmap(0, 0, rect.Width(), rect.Height(), pBack,
1627 left, top);
1628 } 1625 }
1629 delete pBack; 1626 return pBitmap->TransferBitmap(0, 0, rect.Width(), rect.Height(), pBack.get(),
1630 return bRet; 1627 left, top);
1631 } 1628 }
1632 1629
1633 CFX_DIBitmap* CFX_AggDeviceDriver::GetBackDrop() { 1630 CFX_DIBitmap* CFX_AggDeviceDriver::GetBackDrop() {
1634 return m_pOriDevice; 1631 return m_pOriDevice;
1635 } 1632 }
1636 1633
1637 bool CFX_AggDeviceDriver::SetDIBits(const CFX_DIBSource* pBitmap, 1634 bool CFX_AggDeviceDriver::SetDIBits(const CFX_DIBSource* pBitmap,
1638 uint32_t argb, 1635 uint32_t argb,
1639 const FX_RECT* pSrcRect, 1636 const FX_RECT* pSrcRect,
1640 int left, 1637 int left,
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
1751 pOriDevice, false)); 1748 pOriDevice, false));
1752 return true; 1749 return true;
1753 } 1750 }
1754 1751
1755 CFX_FxgeDevice::~CFX_FxgeDevice() { 1752 CFX_FxgeDevice::~CFX_FxgeDevice() {
1756 if (m_bOwnedBitmap) { 1753 if (m_bOwnedBitmap) {
1757 delete GetBitmap(); 1754 delete GetBitmap();
1758 } 1755 }
1759 } 1756 }
1760 #endif 1757 #endif
OLDNEW
« no previous file with comments | « core/fxcodec/codec/fx_codec_progress.cpp ('k') | core/fxge/dib/fx_dib_convert.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698