summaryrefslogtreecommitdiff
path: root/xfa/fde/cfde_renderdevice.cpp
diff options
context:
space:
mode:
authorDan Sinclair <dsinclair@chromium.org>2017-08-14 17:23:25 -0400
committerChromium commit bot <commit-bot@chromium.org>2017-08-15 13:42:32 +0000
commit73b492a5d775c05d8c186c8478d1003edfffd34c (patch)
tree0815bab5627ae27f5eb2f1a45b90bb9dc10b9e1c /xfa/fde/cfde_renderdevice.cpp
parent5f0e64435c97755a7d309e80ea0a4dad83e76e73 (diff)
downloadpdfium-73b492a5d775c05d8c186c8478d1003edfffd34c.tar.xz
Remove CFDE_RenderDevice
This CL removes CFDE_RenderDevice. For most of the proxy'd calls we call the CFX_RenderDevice directly now. To set the clip rect an overload was added to accept a CFX_RectF and handle the casting to FX_RECT. The one needed method, DrawString, is move to a static on CFDE_TextOut. Change-Id: I95ea7e1fa1fd4702074b797c06423c9c9cb51db9 Reviewed-on: https://pdfium-review.googlesource.com/10951 Reviewed-by: Tom Sepez <tsepez@chromium.org> Commit-Queue: dsinclair <dsinclair@chromium.org>
Diffstat (limited to 'xfa/fde/cfde_renderdevice.cpp')
-rw-r--r--xfa/fde/cfde_renderdevice.cpp159
1 files changed, 0 insertions, 159 deletions
diff --git a/xfa/fde/cfde_renderdevice.cpp b/xfa/fde/cfde_renderdevice.cpp
deleted file mode 100644
index e9457f4c5e..0000000000
--- a/xfa/fde/cfde_renderdevice.cpp
+++ /dev/null
@@ -1,159 +0,0 @@
-// Copyright 2014 PDFium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
-
-#include "xfa/fde/cfde_renderdevice.h"
-
-#include <algorithm>
-#include <memory>
-#include <utility>
-
-#include "core/fxge/cfx_graphstatedata.h"
-#include "core/fxge/cfx_pathdata.h"
-#include "core/fxge/cfx_renderdevice.h"
-#include "core/fxge/cfx_substfont.h"
-#include "core/fxge/dib/cfx_imagerenderer.h"
-#include "third_party/base/ptr_util.h"
-#include "xfa/fgas/font/cfgas_fontmgr.h"
-#include "xfa/fgas/font/cfgas_gefont.h"
-
-CFDE_RenderDevice::CFDE_RenderDevice(CFX_RenderDevice* pDevice)
- : m_pDevice(pDevice) {
- ASSERT(pDevice);
-
- FX_RECT rt = m_pDevice->GetClipBox();
- m_rtClip = CFX_RectF(static_cast<float>(rt.left), static_cast<float>(rt.top),
- static_cast<float>(rt.Width()),
- static_cast<float>(rt.Height()));
-}
-
-CFDE_RenderDevice::~CFDE_RenderDevice() {}
-
-int32_t CFDE_RenderDevice::GetWidth() const {
- return m_pDevice->GetWidth();
-}
-
-int32_t CFDE_RenderDevice::GetHeight() const {
- return m_pDevice->GetHeight();
-}
-
-void CFDE_RenderDevice::SaveState() {
- m_pDevice->SaveState();
-}
-
-void CFDE_RenderDevice::RestoreState() {
- m_pDevice->RestoreState(false);
- const FX_RECT& rt = m_pDevice->GetClipBox();
- m_rtClip = CFX_RectF(static_cast<float>(rt.left), static_cast<float>(rt.top),
- static_cast<float>(rt.Width()),
- static_cast<float>(rt.Height()));
-}
-
-bool CFDE_RenderDevice::SetClipRect(const CFX_RectF& rtClip) {
- m_rtClip = rtClip;
- return m_pDevice->SetClip_Rect(
- FX_RECT((int32_t)floor(rtClip.left), (int32_t)floor(rtClip.top),
- (int32_t)ceil(rtClip.right()), (int32_t)ceil(rtClip.bottom())));
-}
-
-const CFX_RectF& CFDE_RenderDevice::GetClipRect() {
- return m_rtClip;
-}
-
-bool CFDE_RenderDevice::DrawString(FX_ARGB color,
- const CFX_RetainPtr<CFGAS_GEFont>& pFont,
- const FXTEXT_CHARPOS* pCharPos,
- int32_t iCount,
- float fFontSize,
- const CFX_Matrix* pMatrix) {
- ASSERT(pFont && pCharPos && iCount > 0);
- CFX_Font* pFxFont = pFont->GetDevFont();
- if ((pFont->GetFontStyles() & FX_FONTSTYLE_Italic) != 0 &&
- !pFxFont->IsItalic()) {
- FXTEXT_CHARPOS* pCP = (FXTEXT_CHARPOS*)pCharPos;
- float* pAM;
- for (int32_t i = 0; i < iCount; ++i) {
- static const float mc = 0.267949f;
- pAM = pCP->m_AdjustMatrix;
- pAM[2] = mc * pAM[0] + pAM[2];
- pAM[3] = mc * pAM[1] + pAM[3];
- pCP++;
- }
- }
- FXTEXT_CHARPOS* pCP = (FXTEXT_CHARPOS*)pCharPos;
- CFX_RetainPtr<CFGAS_GEFont> pCurFont;
- CFX_RetainPtr<CFGAS_GEFont> pSTFont;
- FXTEXT_CHARPOS* pCurCP = nullptr;
- int32_t iCurCount = 0;
-
-#if _FXM_PLATFORM_ != _FXM_PLATFORM_WINDOWS_
- uint32_t dwFontStyle = pFont->GetFontStyles();
- CFX_Font FxFont;
- auto SubstFxFont = pdfium::MakeUnique<CFX_SubstFont>();
- SubstFxFont->m_Weight = dwFontStyle & FX_FONTSTYLE_Bold ? 700 : 400;
- SubstFxFont->m_ItalicAngle = dwFontStyle & FX_FONTSTYLE_Italic ? -12 : 0;
- SubstFxFont->m_WeightCJK = SubstFxFont->m_Weight;
- SubstFxFont->m_bItalicCJK = !!(dwFontStyle & FX_FONTSTYLE_Italic);
- FxFont.SetSubstFont(std::move(SubstFxFont));
-#endif // _FXM_PLATFORM_ != _FXM_PLATFORM_WINDOWS_
-
- for (int32_t i = 0; i < iCount; ++i) {
- pSTFont = pFont->GetSubstFont((int32_t)pCP->m_GlyphIndex);
- pCP->m_GlyphIndex &= 0x00FFFFFF;
- pCP->m_bFontStyle = false;
- if (pCurFont != pSTFont) {
- if (pCurFont) {
- pFxFont = pCurFont->GetDevFont();
-#if _FXM_PLATFORM_ != _FXM_PLATFORM_WINDOWS_
- FxFont.SetFace(pFxFont->GetFace());
- m_pDevice->DrawNormalText(iCurCount, pCurCP, &FxFont, -fFontSize,
- pMatrix, color, FXTEXT_CLEARTYPE);
-#else
- m_pDevice->DrawNormalText(iCurCount, pCurCP, pFxFont, -fFontSize,
- pMatrix, color, FXTEXT_CLEARTYPE);
-#endif // _FXM_PLATFORM_ != _FXM_PLATFORM_WINDOWS_
- }
- pCurFont = pSTFont;
- pCurCP = pCP;
- iCurCount = 1;
- } else {
- iCurCount++;
- }
- pCP++;
- }
- if (pCurFont && iCurCount) {
- pFxFont = pCurFont->GetDevFont();
-#if _FXM_PLATFORM_ != _FXM_PLATFORM_WINDOWS_
- FxFont.SetFace(pFxFont->GetFace());
- bool bRet =
- m_pDevice->DrawNormalText(iCurCount, pCurCP, &FxFont, -fFontSize,
- pMatrix, color, FXTEXT_CLEARTYPE);
- FxFont.SetFace(nullptr);
- return bRet;
-#else
- return m_pDevice->DrawNormalText(iCurCount, pCurCP, pFxFont, -fFontSize,
- pMatrix, color, FXTEXT_CLEARTYPE);
-#endif // _FXM_PLATFORM_ != _FXM_PLATFORM_WINDOWS_
- }
-
-#if _FXM_PLATFORM_ != _FXM_PLATFORM_WINDOWS_
- FxFont.SetFace(nullptr);
-#endif // _FXM_PLATFORM_ != _FXM_PLATFORM_WINDOWS_
-
- return true;
-}
-
-bool CFDE_RenderDevice::DrawPath(FX_ARGB color,
- float fPenWidth,
- const CFX_PathData& pPath,
- const CFX_Matrix* pMatrix) {
- CFX_GraphStateData graphState;
- graphState.m_LineCap = CFX_GraphStateData::LineCapButt;
- graphState.m_LineJoin = CFX_GraphStateData::LineJoinMiter;
- graphState.m_LineWidth = fPenWidth;
- graphState.m_MiterLimit = 10;
- graphState.m_DashPhase = 0;
- return m_pDevice->DrawPath(&pPath, pMatrix, &graphState, 0, color, 0);
-}