From 7d2a8d966643ebc77c1aa0f0c53a0ffd2d681c4c Mon Sep 17 00:00:00 2001 From: tsepez Date: Wed, 8 Jun 2016 11:51:23 -0700 Subject: Remove implicit CFX_CountedRef::operator T*() Explicitly invoke GetObject() method instead. This avoids having code where it looks like non-pointers are assigned to pointers but works due to the cast operator. Review-Url: https://codereview.chromium.org/2045083003 --- core/fpdfapi/fpdf_render/fpdf_render.cpp | 54 ++++++++++++-------------- core/fpdfapi/fpdf_render/fpdf_render_image.cpp | 3 +- core/fpdfapi/fpdf_render/fpdf_render_text.cpp | 6 ++- core/fpdfdoc/doc_ocg.cpp | 2 +- core/fxcrt/include/fx_basic.h | 24 +++++------- core/fxge/agg/fx_agg_driver.cpp | 6 +-- core/fxge/apple/fx_apple_platform.cpp | 2 +- core/fxge/dib/fx_dib_composite.cpp | 6 +-- core/fxge/ge/fx_ge_path.cpp | 6 +-- fpdfsdk/fpdf_transformpage.cpp | 2 +- fpdfsdk/fpdfeditpage.cpp | 3 +- 11 files changed, 54 insertions(+), 60 deletions(-) diff --git a/core/fpdfapi/fpdf_render/fpdf_render.cpp b/core/fpdfapi/fpdf_render/fpdf_render.cpp index 7e8c8348a5..a675dfe09c 100644 --- a/core/fpdfapi/fpdf_render/fpdf_render.cpp +++ b/core/fpdfapi/fpdf_render/fpdf_render.cpp @@ -188,12 +188,10 @@ FX_BOOL CPDF_RenderStatus::Initialize(CPDF_RenderContext* pContext, if (pInitialStates && !m_pType3Char) { m_InitialStates.CopyStates(*pInitialStates); if (pParentState) { - CPDF_ColorStateData* pColorData = - (CPDF_ColorStateData*)(const CPDF_ColorStateData*) - m_InitialStates.m_ColorState; - CPDF_ColorStateData* pParentData = - (CPDF_ColorStateData*)(const CPDF_ColorStateData*) - pParentState->m_InitialStates.m_ColorState; + const CPDF_ColorStateData* pColorData = + m_InitialStates.m_ColorState.GetObject(); + const CPDF_ColorStateData* pParentData = + pParentState->m_InitialStates.m_ColorState.GetObject(); if (!pColorData || pColorData->m_FillColor.IsNull()) { CPDF_ColorStateData* pData = m_InitialStates.m_ColorState.GetModify(); pData->m_FillRGB = pParentData->m_FillRGB; @@ -466,20 +464,20 @@ FX_BOOL CPDF_RenderStatus::ProcessPath(const CPDF_PathObject* pPathObj, FillType |= FX_FILL_STROKE; } const CPDF_GeneralStateData* pGeneralData = - ((CPDF_PageObject*)pPathObj)->m_GeneralState; + static_cast(pPathObj)->m_GeneralState.GetObject(); if (pGeneralData && pGeneralData->m_StrokeAdjust) { FillType |= FX_STROKE_ADJUST; } if (m_pType3Char) { FillType |= FX_FILL_TEXT_MODE; } - CFX_GraphStateData graphState(*pPathObj->m_GraphState); + CFX_GraphStateData graphState(*pPathObj->m_GraphState.GetObject()); if (m_Options.m_Flags & RENDER_THINLINE) { graphState.m_LineWidth = 0; } - return m_pDevice->DrawPathWithBlend(pPathObj->m_Path, &path_matrix, - &graphState, fill_argb, stroke_argb, - FillType, m_curBlend); + return m_pDevice->DrawPathWithBlend(pPathObj->m_Path.GetObject(), + &path_matrix, &graphState, fill_argb, + stroke_argb, FillType, m_curBlend); } CPDF_TransferFunc* CPDF_RenderStatus::GetTransferFunc(CPDF_Object* pObj) const { @@ -489,8 +487,7 @@ CPDF_TransferFunc* CPDF_RenderStatus::GetTransferFunc(CPDF_Object* pObj) const { } FX_ARGB CPDF_RenderStatus::GetFillArgb(const CPDF_PageObject* pObj, FX_BOOL bType3) const { - CPDF_ColorStateData* pColorData = - (CPDF_ColorStateData*)(const CPDF_ColorStateData*)pObj->m_ColorState; + const CPDF_ColorStateData* pColorData = pObj->m_ColorState.GetObject(); if (m_pType3Char && !bType3 && (!m_pType3Char->m_bColored || (m_pType3Char->m_bColored && @@ -498,14 +495,13 @@ FX_ARGB CPDF_RenderStatus::GetFillArgb(const CPDF_PageObject* pObj, return m_T3FillColor; } if (!pColorData || pColorData->m_FillColor.IsNull()) { - pColorData = (CPDF_ColorStateData*)(const CPDF_ColorStateData*) - m_InitialStates.m_ColorState; + pColorData = m_InitialStates.m_ColorState.GetObject(); } FX_COLORREF rgb = pColorData->m_FillRGB; if (rgb == (uint32_t)-1) { return 0; } - const CPDF_GeneralStateData* pGeneralData = pObj->m_GeneralState; + const CPDF_GeneralStateData* pGeneralData = pObj->m_GeneralState.GetObject(); int alpha; if (pGeneralData) { alpha = (int32_t)(pGeneralData->m_FillAlpha * 255); @@ -524,22 +520,20 @@ FX_ARGB CPDF_RenderStatus::GetFillArgb(const CPDF_PageObject* pObj, return m_Options.TranslateColor(ArgbEncode(alpha, rgb)); } FX_ARGB CPDF_RenderStatus::GetStrokeArgb(const CPDF_PageObject* pObj) const { - CPDF_ColorStateData* pColorData = - (CPDF_ColorStateData*)(const CPDF_ColorStateData*)pObj->m_ColorState; + const CPDF_ColorStateData* pColorData = pObj->m_ColorState.GetObject(); if (m_pType3Char && (!m_pType3Char->m_bColored || (m_pType3Char->m_bColored && (!pColorData || pColorData->m_StrokeColor.IsNull())))) { return m_T3FillColor; } if (!pColorData || pColorData->m_StrokeColor.IsNull()) { - pColorData = (CPDF_ColorStateData*)(const CPDF_ColorStateData*) - m_InitialStates.m_ColorState; + pColorData = m_InitialStates.m_ColorState.GetObject(); } FX_COLORREF rgb = pColorData->m_StrokeRGB; if (rgb == (uint32_t)-1) { return 0; } - const CPDF_GeneralStateData* pGeneralData = pObj->m_GeneralState; + const CPDF_GeneralStateData* pGeneralData = pObj->m_GeneralState.GetObject(); int alpha; if (pGeneralData) { alpha = (int32_t)(pGeneralData->m_StrokeAlpha * 255); @@ -573,7 +567,7 @@ void CPDF_RenderStatus::ProcessClipPath(CPDF_ClipPath ClipPath, m_pDevice->RestoreState(true); int nClipPath = ClipPath.GetPathCount(); for (int i = 0; i < nClipPath; ++i) { - const CFX_PathData* pPathData = ClipPath.GetPath(i); + const CFX_PathData* pPathData = ClipPath.GetPath(i).GetObject(); if (!pPathData) continue; @@ -629,7 +623,7 @@ void CPDF_RenderStatus::DrawClipPath(CPDF_ClipPath ClipPath, int nClipPath = ClipPath.GetPathCount(); int i; for (i = 0; i < nClipPath; i++) { - const CFX_PathData* pPathData = ClipPath.GetPath(i); + const CFX_PathData* pPathData = ClipPath.GetPath(i).GetObject(); if (!pPathData) { continue; } @@ -647,22 +641,24 @@ FX_BOOL CPDF_RenderStatus::SelectClipPath(const CPDF_PathObject* pPathObj, CFX_Matrix path_matrix = pPathObj->m_Matrix; path_matrix.Concat(*pObj2Device); if (bStroke) { - CFX_GraphStateData graphState(*pPathObj->m_GraphState); + CFX_GraphStateData graphState(*pPathObj->m_GraphState.GetObject()); if (m_Options.m_Flags & RENDER_THINLINE) { graphState.m_LineWidth = 0; } - return m_pDevice->SetClip_PathStroke(pPathObj->m_Path, &path_matrix, - &graphState); + return m_pDevice->SetClip_PathStroke(pPathObj->m_Path.GetObject(), + &path_matrix, &graphState); } int fill_mode = pPathObj->m_FillType; if (m_Options.m_Flags & RENDER_NOPATHSMOOTH) { fill_mode |= FXFILL_NOPATHSMOOTH; } - return m_pDevice->SetClip_PathFill(pPathObj->m_Path, &path_matrix, fill_mode); + return m_pDevice->SetClip_PathFill(pPathObj->m_Path.GetObject(), &path_matrix, + fill_mode); } FX_BOOL CPDF_RenderStatus::ProcessTransparency(const CPDF_PageObject* pPageObj, const CFX_Matrix* pObj2Device) { - const CPDF_GeneralStateData* pGeneralState = pPageObj->m_GeneralState; + const CPDF_GeneralStateData* pGeneralState = + pPageObj->m_GeneralState.GetObject(); int blend_type = pGeneralState ? pGeneralState->m_BlendType : FXDIB_BLEND_NORMAL; if (blend_type == FXDIB_BLEND_UNSUPPORTED) { @@ -792,7 +788,7 @@ FX_BOOL CPDF_RenderStatus::ProcessTransparency(const CPDF_PageObject* pPageObj, &text_device, textobj->m_nChars, textobj->m_pCharCodes, textobj->m_pCharPos, textobj->m_TextState.GetFont(), textobj->m_TextState.GetFontSize(), &text_matrix, &new_matrix, - textobj->m_GraphState, (FX_ARGB)-1, 0, nullptr, 0); + textobj->m_GraphState.GetObject(), (FX_ARGB)-1, 0, nullptr, 0); } } CPDF_RenderStatus bitmap_render; diff --git a/core/fpdfapi/fpdf_render/fpdf_render_image.cpp b/core/fpdfapi/fpdf_render/fpdf_render_image.cpp index 76a6d4e764..16a06f8f3b 100644 --- a/core/fpdfapi/fpdf_render/fpdf_render_image.cpp +++ b/core/fpdfapi/fpdf_render/fpdf_render_image.cpp @@ -365,7 +365,8 @@ FX_BOOL CPDF_ImageRenderer::StartRenderDIBSource() { return FALSE; } m_BitmapAlpha = 255; - const CPDF_GeneralStateData* pGeneralState = m_pImageObject->m_GeneralState; + const CPDF_GeneralStateData* pGeneralState = + m_pImageObject->m_GeneralState.GetObject(); if (pGeneralState) { m_BitmapAlpha = FXSYS_round(pGeneralState->m_FillAlpha * 255); } diff --git a/core/fpdfapi/fpdf_render/fpdf_render_text.cpp b/core/fpdfapi/fpdf_render/fpdf_render_text.cpp index 43816c4d99..9e3a6c6587 100644 --- a/core/fpdfapi/fpdf_render/fpdf_render_text.cpp +++ b/core/fpdfapi/fpdf_render/fpdf_render_text.cpp @@ -308,7 +308,8 @@ FX_BOOL CPDF_RenderStatus::ProcessText(const CPDF_TextObject* textobj, flag |= FX_STROKE_TEXT_MODE; } const CPDF_GeneralStateData* pGeneralData = - ((CPDF_PageObject*)textobj)->m_GeneralState; + static_cast(textobj) + ->m_GeneralState.GetObject(); if (pGeneralData && pGeneralData->m_StrokeAdjust) { flag |= FX_STROKE_ADJUST; } @@ -318,7 +319,8 @@ FX_BOOL CPDF_RenderStatus::ProcessText(const CPDF_TextObject* textobj, return CPDF_TextRenderer::DrawTextPath( m_pDevice, textobj->m_nChars, textobj->m_pCharCodes, textobj->m_pCharPos, pFont, font_size, &text_matrix, pDeviceMatrix, - textobj->m_GraphState, fill_argb, stroke_argb, pClippingPath, flag); + textobj->m_GraphState.GetObject(), fill_argb, stroke_argb, + pClippingPath, flag); } text_matrix.Concat(*pObj2Device); return CPDF_TextRenderer::DrawNormalText( diff --git a/core/fpdfdoc/doc_ocg.cpp b/core/fpdfdoc/doc_ocg.cpp index dc49ab0fd7..1251cb20e3 100644 --- a/core/fpdfdoc/doc_ocg.cpp +++ b/core/fpdfdoc/doc_ocg.cpp @@ -185,7 +185,7 @@ bool CPDF_OCContext::GetOCGVisible(const CPDF_Dictionary* pOCGDict) { } bool CPDF_OCContext::CheckObjectVisible(const CPDF_PageObject* pObj) { - const CPDF_ContentMarkData* pData = pObj->m_ContentMark; + const CPDF_ContentMarkData* pData = pObj->m_ContentMark.GetObject(); for (int i = 0; i < pData->CountItems(); i++) { const CPDF_ContentMarkItem& item = pData->GetItem(i); if (item.GetName() == "OC" && diff --git a/core/fxcrt/include/fx_basic.h b/core/fxcrt/include/fx_basic.h index 8e39f5577a..bc05a3479d 100644 --- a/core/fxcrt/include/fx_basic.h +++ b/core/fxcrt/include/fx_basic.h @@ -648,27 +648,24 @@ class CFX_BitStream { const uint8_t* m_pData; }; + template class CFX_CountRef { public: - typedef CFX_CountRef Ref; + using Ref = CFX_CountRef; class CountedObj : public ObjClass { public: CountedObj() {} - CountedObj(const CountedObj& src) : ObjClass(src) {} int m_RefCount; }; - CFX_CountRef() { m_pObject = nullptr; } - - CFX_CountRef(const Ref& ref) { - m_pObject = ref.m_pObject; - if (m_pObject) { + CFX_CountRef() : m_pObject(nullptr) {} + CFX_CountRef(const Ref& ref) : m_pObject(ref.m_pObject) { + if (m_pObject) m_pObject->m_RefCount++; - } } ~CFX_CountRef() { SetNull(); } @@ -687,14 +684,10 @@ class CFX_CountRef { m_pObject = ref.m_pObject; } - const ObjClass* GetObject() const { return m_pObject; } - - operator const ObjClass*() const { return m_pObject; } - - FX_BOOL IsNull() const { return !m_pObject; } - - FX_BOOL NotNull() const { return !IsNull(); } + bool IsNull() const { return !m_pObject; } + bool NotNull() const { return !IsNull(); } + const ObjClass* GetObject() const { return m_pObject; } ObjClass* GetModify() { if (!m_pObject) { m_pObject = new CountedObj; @@ -724,6 +717,7 @@ class CFX_CountRef { protected: CountedObj* m_pObject; }; + class IFX_Pause { public: virtual ~IFX_Pause() {} diff --git a/core/fxge/agg/fx_agg_driver.cpp b/core/fxge/agg/fx_agg_driver.cpp index d7a9ddb530..7d197f8c21 100644 --- a/core/fxge/agg/fx_agg_driver.cpp +++ b/core/fxge/agg/fx_agg_driver.cpp @@ -1096,7 +1096,7 @@ class CFX_Renderer { } m_pClipMask = nullptr; if (m_pClipRgn && m_pClipRgn->GetType() == CFX_ClipRgn::MaskF) { - m_pClipMask = m_pClipRgn->GetMask(); + m_pClipMask = m_pClipRgn->GetMask().GetObject(); } m_bFullCover = bFullCover; FX_BOOL bObjectCMYK = FXGETFLAG_COLORTYPE(alpha_flag); @@ -1562,7 +1562,7 @@ FX_BOOL CFX_AggDeviceDriver::SetPixel(int x, return _DibSetPixel(m_pBitmap, x, y, color, alpha_flag, pIccTransform); } } else if (m_pClipRgn->GetType() == CFX_ClipRgn::MaskF) { - const CFX_DIBitmap* pMask = m_pClipRgn->GetMask(); + const CFX_DIBitmap* pMask = m_pClipRgn->GetMask().GetObject(); FX_BOOL bCMYK = FXGETFLAG_COLORTYPE(alpha_flag); int new_alpha = bCMYK ? FXGETFLAG_ALPHA_FILL(alpha_flag) : FXARGB_A(color); @@ -1617,7 +1617,7 @@ FX_BOOL CFX_AggDeviceDriver::FillRect(const FX_RECT* pRect, } m_pBitmap->CompositeMask( draw_rect.left, draw_rect.top, draw_rect.Width(), draw_rect.Height(), - (const CFX_DIBitmap*)m_pClipRgn->GetMask(), fill_color, + m_pClipRgn->GetMask().GetObject(), fill_color, draw_rect.left - clip_rect.left, draw_rect.top - clip_rect.top, FXDIB_BLEND_NORMAL, nullptr, m_bRgbByteOrder, alpha_flag, pIccTransform); return TRUE; diff --git a/core/fxge/apple/fx_apple_platform.cpp b/core/fxge/apple/fx_apple_platform.cpp index b25bb5875d..4204e7e6a5 100644 --- a/core/fxge/apple/fx_apple_platform.cpp +++ b/core/fxge/apple/fx_apple_platform.cpp @@ -138,7 +138,7 @@ FX_BOOL CFX_AggDeviceDriver::DrawDeviceText(int nChars, rect_cg = CGRectMake(m_pClipRgn->GetBox().left, m_pClipRgn->GetBox().top, m_pClipRgn->GetBox().Width(), m_pClipRgn->GetBox().Height()); - const CFX_DIBitmap* pClipMask = m_pClipRgn->GetMask(); + const CFX_DIBitmap* pClipMask = m_pClipRgn->GetMask().GetObject(); if (pClipMask) { CGDataProviderRef pClipMaskDataProvider = CGDataProviderCreateWithData( nullptr, pClipMask->GetBuffer(), diff --git a/core/fxge/dib/fx_dib_composite.cpp b/core/fxge/dib/fx_dib_composite.cpp index 28f6e49044..afb0551b98 100644 --- a/core/fxge/dib/fx_dib_composite.cpp +++ b/core/fxge/dib/fx_dib_composite.cpp @@ -4508,7 +4508,7 @@ FX_BOOL CFX_DIBitmap::CompositeBitmap(int dest_left, FX_RECT clip_box; if (pClipRgn && pClipRgn->GetType() != CFX_ClipRgn::RectI) { ASSERT(pClipRgn->GetType() == CFX_ClipRgn::MaskF); - pClipMask = pClipRgn->GetMask(); + pClipMask = pClipRgn->GetMask().GetObject(); clip_box = pClipRgn->GetBox(); } CFX_ScanlineCompositor compositor; @@ -4587,7 +4587,7 @@ FX_BOOL CFX_DIBitmap::CompositeMask(int dest_left, FX_RECT clip_box; if (pClipRgn && pClipRgn->GetType() != CFX_ClipRgn::RectI) { ASSERT(pClipRgn->GetType() == CFX_ClipRgn::MaskF); - pClipMask = pClipRgn->GetMask(); + pClipMask = pClipRgn->GetMask().GetObject(); clip_box = pClipRgn->GetBox(); } int src_bpp = pMask->GetBPP(); @@ -4870,7 +4870,7 @@ void CFX_BitmapComposer::Compose(CFX_DIBitmap* pDest, m_MaskColor = mask_color; m_pClipMask = nullptr; if (pClipRgn && pClipRgn->GetType() != CFX_ClipRgn::RectI) { - m_pClipMask = pClipRgn->GetMask(); + m_pClipMask = pClipRgn->GetMask().GetObject(); } m_bVertical = bVertical; m_bFlipX = bFlipX; diff --git a/core/fxge/ge/fx_ge_path.cpp b/core/fxge/ge/fx_ge_path.cpp index 2abc45f499..6eb41d3094 100644 --- a/core/fxge/ge/fx_ge_path.cpp +++ b/core/fxge/ge/fx_ge_path.cpp @@ -42,7 +42,7 @@ void CFX_ClipRgn::IntersectRect(const FX_RECT& rect) { void CFX_ClipRgn::IntersectMaskRect(FX_RECT rect, FX_RECT mask_rect, CFX_DIBitmapRef Mask) { - const CFX_DIBitmap* mask_dib = Mask; + const CFX_DIBitmap* mask_dib = Mask.GetObject(); m_Type = MaskF; m_Box = rect; m_Box.Intersect(mask_rect); @@ -70,7 +70,7 @@ void CFX_ClipRgn::IntersectMaskRect(FX_RECT rect, } } void CFX_ClipRgn::IntersectMaskF(int left, int top, CFX_DIBitmapRef Mask) { - const CFX_DIBitmap* mask_dib = Mask; + const CFX_DIBitmap* mask_dib = Mask.GetObject(); ASSERT(mask_dib->GetFormat() == FXDIB_8bppMask); FX_RECT mask_box(left, top, left + mask_dib->GetWidth(), top + mask_dib->GetHeight()); @@ -93,7 +93,7 @@ void CFX_ClipRgn::IntersectMaskF(int left, int top, CFX_DIBitmapRef Mask) { return; } new_dib->Create(new_box.Width(), new_box.Height(), FXDIB_8bppMask); - const CFX_DIBitmap* old_dib = m_Mask; + const CFX_DIBitmap* old_dib = m_Mask.GetObject(); for (int row = new_box.top; row < new_box.bottom; row++) { uint8_t* old_scan = old_dib->GetBuffer() + (row - m_Box.top) * old_dib->GetPitch(); diff --git a/fpdfsdk/fpdf_transformpage.cpp b/fpdfsdk/fpdf_transformpage.cpp index b78c79c3fc..a5c2741a88 100644 --- a/fpdfsdk/fpdf_transformpage.cpp +++ b/fpdfsdk/fpdf_transformpage.cpp @@ -232,7 +232,7 @@ DLLEXPORT void STDCALL FPDF_DestroyClipPath(FPDF_CLIPPATH clipPath) { } void OutputPath(CFX_ByteTextBuf& buf, CPDF_Path path) { - const CFX_PathData* pPathData = path; + const CFX_PathData* pPathData = path.GetObject(); if (!pPathData) return; diff --git a/fpdfsdk/fpdfeditpage.cpp b/fpdfsdk/fpdfeditpage.cpp index 6f71a86548..439f73a7ae 100644 --- a/fpdfsdk/fpdfeditpage.cpp +++ b/fpdfsdk/fpdfeditpage.cpp @@ -211,7 +211,8 @@ FPDFPageObj_HasTransparency(FPDF_PAGEOBJECT pageObject) { return FALSE; CPDF_PageObject* pPageObj = (CPDF_PageObject*)pageObject; - const CPDF_GeneralStateData* pGeneralState = pPageObj->m_GeneralState; + const CPDF_GeneralStateData* pGeneralState = + pPageObj->m_GeneralState.GetObject(); int blend_type = pGeneralState ? pGeneralState->m_BlendType : FXDIB_BLEND_NORMAL; if (blend_type != FXDIB_BLEND_NORMAL) -- cgit v1.2.3