Index: xfa/fde/tto/fde_textout.cpp |
diff --git a/xfa/fde/tto/fde_textout.cpp b/xfa/fde/tto/fde_textout.cpp |
index fc97d9912588397aa63347c41f53ea250fd10731..ca108de92c7838537c474f950dff74818b31622f 100644 |
--- a/xfa/fde/tto/fde_textout.cpp |
+++ b/xfa/fde/tto/fde_textout.cpp |
@@ -40,8 +40,7 @@ CFDE_TextOut::CFDE_TextOut() |
m_iCurPiece(0), |
m_iTotalLines(0), |
m_pCharPos(NULL), |
- m_iCharPosSize(0), |
- m_pRenderDevice(NULL) { |
+ m_iCharPosSize(0) { |
m_pTxtBreak = new CFX_TxtBreak(FX_TXTBREAKPOLICY_None); |
m_Matrix.SetIdentity(); |
m_rtClip.Reset(); |
@@ -53,9 +52,6 @@ CFDE_TextOut::~CFDE_TextOut() { |
} |
FX_Free(m_pCharWidths); |
FX_Free(m_pEllCharWidths); |
- if (m_pRenderDevice) { |
- m_pRenderDevice->Release(); |
- } |
FX_Free(m_pCharPos); |
m_ttoLines.RemoveAll(); |
} |
@@ -134,21 +130,15 @@ void CFDE_TextOut::SetLineSpace(FX_FLOAT fLineSpace) { |
void CFDE_TextOut::SetDIBitmap(CFX_DIBitmap* pDIB) { |
ASSERT(pDIB); |
- if (m_pRenderDevice) |
- m_pRenderDevice->Release(); |
- |
+ m_pRenderDevice.reset(); |
CFX_FxgeDevice* device = new CFX_FxgeDevice; |
device->Attach(pDIB, 0, FALSE); |
- m_pRenderDevice = new CFDE_RenderDevice(device, FALSE); |
+ m_pRenderDevice.reset(new CFDE_RenderDevice(device, FALSE)); |
} |
void CFDE_TextOut::SetRenderDevice(CFX_RenderDevice* pDevice) { |
ASSERT(pDevice); |
- |
- if (m_pRenderDevice) |
- m_pRenderDevice->Release(); |
- |
- m_pRenderDevice = new CFDE_RenderDevice(pDevice, FALSE); |
+ m_pRenderDevice.reset(new CFDE_RenderDevice(pDevice, FALSE)); |
} |
void CFDE_TextOut::SetClipRect(const CFX_Rect& rtClip) { |
@@ -780,13 +770,13 @@ void CFDE_TextOut::DoAlignment(const CFX_RectF& rect) { |
} |
} |
void CFDE_TextOut::OnDraw(const CFX_RectF& rtClip) { |
- if (m_pRenderDevice == NULL) { |
+ if (!m_pRenderDevice) |
return; |
- } |
+ |
int32_t iLines = m_ttoLines.GetSize(); |
- if (iLines < 1) { |
+ if (iLines < 1) |
return; |
- } |
+ |
CFDE_Brush* pBrush = new CFDE_Brush; |
pBrush->SetColor(m_TxtColor); |
CFDE_Pen* pPen = NULL; |
@@ -846,14 +836,14 @@ void CFDE_TextOut::DrawLine(const FDE_TTOPIECE* pPiece, CFDE_Pen*& pPen) { |
FX_BOOL bStrikeOut = !!(m_dwStyles & FDE_TTOSTYLE_Strikeout); |
FX_BOOL bHotKey = !!(m_dwStyles & FDE_TTOSTYLE_HotKey); |
FX_BOOL bVertical = !!(m_dwStyles & FDE_TTOSTYLE_VerticalLayout); |
- if (!bUnderLine && !bStrikeOut && !bHotKey) { |
+ if (!bUnderLine && !bStrikeOut && !bHotKey) |
return; |
- } |
- if (pPen == NULL) { |
+ |
+ if (!pPen) { |
pPen = new CFDE_Pen; |
pPen->SetColor(m_TxtColor); |
} |
- CFDE_Path* pPath = new CFDE_Path; |
+ std::unique_ptr<CFDE_Path> pPath(new CFDE_Path); |
int32_t iLineCount = 0; |
CFX_RectF rtText = pPiece->rtPiece; |
CFX_PointF pt1, pt2; |
@@ -913,19 +903,21 @@ void CFDE_TextOut::DrawLine(const FDE_TTOPIECE* pPiece, CFDE_Pen*& pPen) { |
} |
} |
} |
- if (iLineCount > 0) { |
- m_pRenderDevice->DrawPath(pPen, 1, pPath, &m_Matrix); |
- } |
- pPath->Release(); |
+ if (iLineCount > 0) |
+ m_pRenderDevice->DrawPath(pPen, 1, pPath.get(), &m_Matrix); |
} |
+ |
CFDE_TTOLine::CFDE_TTOLine() |
: m_bNewReload(FALSE), m_pieces(5), m_iPieceCount(0) {} |
+ |
CFDE_TTOLine::CFDE_TTOLine(const CFDE_TTOLine& ttoLine) : m_pieces(5) { |
m_bNewReload = ttoLine.m_bNewReload; |
m_iPieceCount = ttoLine.m_iPieceCount; |
m_pieces.Copy(ttoLine.m_pieces); |
} |
+ |
CFDE_TTOLine::~CFDE_TTOLine() {} |
+ |
int32_t CFDE_TTOLine::AddPiece(int32_t index, const FDE_TTOPIECE& ttoPiece) { |
if (index >= m_iPieceCount) { |
index = m_pieces.Add(ttoPiece) + 1; |