diff options
author | Dan Sinclair <dsinclair@chromium.org> | 2016-03-23 15:41:39 -0400 |
---|---|---|
committer | Dan Sinclair <dsinclair@chromium.org> | 2016-03-23 15:41:39 -0400 |
commit | a8a28e0702a1874d29d3c9f2b155bce1557eb4fd (patch) | |
tree | 2b2d412e95004a846c39b9f05b444bbfce05d0a8 /core/include/fxcrt/fx_bidi.h | |
parent | 029ea3ef8e49244e0a6e80d38768764ce27bad30 (diff) | |
download | pdfium-a8a28e0702a1874d29d3c9f2b155bce1557eb4fd.tar.xz |
Move core/include/fxcrt to core/fxcrt/include.
This CL moves the fxcrt code into the core/fxcrt directory. The only exception
was fx_bidi.h which was moved into core/fxcrt as it is not used outside of
core/.
R=tsepez@chromium.org
Review URL: https://codereview.chromium.org/1825953002 .
Diffstat (limited to 'core/include/fxcrt/fx_bidi.h')
-rw-r--r-- | core/include/fxcrt/fx_bidi.h | 73 |
1 files changed, 0 insertions, 73 deletions
diff --git a/core/include/fxcrt/fx_bidi.h b/core/include/fxcrt/fx_bidi.h deleted file mode 100644 index 4ea17dae86..0000000000 --- a/core/include/fxcrt/fx_bidi.h +++ /dev/null @@ -1,73 +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 - -#ifndef CORE_INCLUDE_FXCRT_FX_BIDI_H_ -#define CORE_INCLUDE_FXCRT_FX_BIDI_H_ - -#include <memory> -#include <vector> - -#include "core/include/fxcrt/fx_string.h" -#include "core/include/fxcrt/fx_system.h" - -// Processes characters and group them into segments based on text direction. -class CFX_BidiChar { - public: - enum Direction { NEUTRAL, LEFT, RIGHT }; - struct Segment { - int32_t start; // Start position. - int32_t count; // Character count. - Direction direction; // Segment direction. - }; - - CFX_BidiChar(); - - // Append a character and classify it as left, right, or neutral. - // Returns true if the character has a different direction than the - // existing direction to indicate there is a segment to process. - bool AppendChar(FX_WCHAR wch); - - // Call this after the last character has been appended. AppendChar() - // must not be called after this. - // Returns true if there is still a segment to process. - bool EndChar(); - - // Call after a change in direction is indicated by the above to get - // information about the segment to process. - Segment GetSegmentInfo() const { return m_LastSegment; } - - private: - void StartNewSegment(CFX_BidiChar::Direction direction); - - Segment m_CurrentSegment; - Segment m_LastSegment; -}; - -class CFX_BidiString { - public: - using const_iterator = std::vector<CFX_BidiChar::Segment>::const_iterator; - explicit CFX_BidiString(const CFX_WideString& str); - - // Overall direction is always LEFT or RIGHT, never NEUTRAL. - CFX_BidiChar::Direction OverallDirection() const { - return m_eOverallDirection; - } - - // Force the overall direction to be R2L regardless of what was detected. - void SetOverallDirectionRight(); - - FX_WCHAR CharAt(size_t x) const { return m_Str[x]; } - const_iterator begin() const { return m_Order.begin(); } - const_iterator end() const { return m_Order.end(); } - - private: - const CFX_WideString m_Str; - std::unique_ptr<CFX_BidiChar> m_pBidiChar; - std::vector<CFX_BidiChar::Segment> m_Order; - CFX_BidiChar::Direction m_eOverallDirection; -}; - -#endif // CORE_INCLUDE_FXCRT_FX_BIDI_H_ |