From 764ec513eecbebd12781bcc96ce81ed5e736ee92 Mon Sep 17 00:00:00 2001 From: Dan Sinclair Date: Mon, 14 Mar 2016 13:35:12 -0400 Subject: Move core/src/ up to core/. This CL moves the core/src/ files up to core/ and fixes up the include guards, includes and build files. R=tsepez@chromium.org Review URL: https://codereview.chromium.org/1800523005 . --- core/src/fxcrt/fx_bidi.cpp | 81 ---------------------------------------------- 1 file changed, 81 deletions(-) delete mode 100644 core/src/fxcrt/fx_bidi.cpp (limited to 'core/src/fxcrt/fx_bidi.cpp') diff --git a/core/src/fxcrt/fx_bidi.cpp b/core/src/fxcrt/fx_bidi.cpp deleted file mode 100644 index a7a3ecb295..0000000000 --- a/core/src/fxcrt/fx_bidi.cpp +++ /dev/null @@ -1,81 +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 "core/include/fxcrt/fx_bidi.h" -#include "core/include/fxcrt/fx_ucd.h" - -#include - -CFX_BidiChar::CFX_BidiChar() - : m_CurrentSegment({0, 0, NEUTRAL}), m_LastSegment({0, 0, NEUTRAL}) {} - -bool CFX_BidiChar::AppendChar(FX_WCHAR wch) { - FX_DWORD dwProps = FX_GetUnicodeProperties(wch); - int32_t iBidiCls = (dwProps & FX_BIDICLASSBITSMASK) >> FX_BIDICLASSBITS; - Direction direction = NEUTRAL; - switch (iBidiCls) { - case FX_BIDICLASS_L: - case FX_BIDICLASS_AN: - case FX_BIDICLASS_EN: - direction = LEFT; - break; - case FX_BIDICLASS_R: - case FX_BIDICLASS_AL: - direction = RIGHT; - break; - } - - bool bChangeDirection = (direction != m_CurrentSegment.direction); - if (bChangeDirection) - StartNewSegment(direction); - - m_CurrentSegment.count++; - return bChangeDirection; -} - -bool CFX_BidiChar::EndChar() { - StartNewSegment(NEUTRAL); - return m_LastSegment.count > 0; -} - -void CFX_BidiChar::StartNewSegment(CFX_BidiChar::Direction direction) { - m_LastSegment = m_CurrentSegment; - m_CurrentSegment.start += m_CurrentSegment.count; - m_CurrentSegment.count = 0; - m_CurrentSegment.direction = direction; -} - -CFX_BidiString::CFX_BidiString(const CFX_WideString& str) - : m_Str(str), - m_pBidiChar(new CFX_BidiChar), - m_eOverallDirection(CFX_BidiChar::LEFT) { - for (int i = 0; i < m_Str.GetLength(); ++i) { - if (m_pBidiChar->AppendChar(m_Str.GetAt(i))) - m_Order.push_back(m_pBidiChar->GetSegmentInfo()); - } - if (m_pBidiChar->EndChar()) - m_Order.push_back(m_pBidiChar->GetSegmentInfo()); - - size_t nR2L = std::count_if(m_Order.begin(), m_Order.end(), - [](const CFX_BidiChar::Segment& seg) { - return seg.direction == CFX_BidiChar::RIGHT; - }); - - size_t nL2R = std::count_if(m_Order.begin(), m_Order.end(), - [](const CFX_BidiChar::Segment& seg) { - return seg.direction == CFX_BidiChar::LEFT; - }); - - if (nR2L > 0 && nR2L >= nL2R) - SetOverallDirectionRight(); -} - -void CFX_BidiString::SetOverallDirectionRight() { - if (m_eOverallDirection != CFX_BidiChar::RIGHT) { - std::reverse(m_Order.begin(), m_Order.end()); - m_eOverallDirection = CFX_BidiChar::RIGHT; - } -} -- cgit v1.2.3