Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
cfgas_break.h
Go to the documentation of this file.
1// Copyright 2017 The PDFium Authors
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6
7#ifndef XFA_FGAS_LAYOUT_CFGAS_BREAK_H_
8#define XFA_FGAS_LAYOUT_CFGAS_BREAK_H_
9
10#include <stdint.h>
11
12#include "core/fxcrt/mask.h"
13#include "core/fxcrt/retain_ptr.h"
14#include "core/fxcrt/unowned_ptr.h"
15#include "xfa/fgas/layout/cfgas_breakline.h"
16
17class CFGAS_GEFont;
18
20 public:
21 enum class LayoutStyle : uint8_t {
22 kNone = 0,
23 kPagination = 1 << 0,
24 kExpandTab = 1 << 1,
25 kSingleLine = 1 << 2,
26 kCombText = 1 << 3,
27 };
28
29 virtual ~CFGAS_Break();
30
31 void Reset();
32
33 void SetLayoutStyles(Mask<LayoutStyle> dwLayoutStyles);
34 Mask<LayoutStyle> GetLayoutStyles() const { return m_dwLayoutStyles; }
35
36 void SetFont(RetainPtr<CFGAS_GEFont> pFont);
37 void SetFontSize(float fFontSize);
38 void SetTabWidth(float fTabWidth);
39 int32_t GetTabWidth() const { return m_iTabWidth; }
40
41 void SetHorizontalScale(int32_t iScale);
42 void SetVerticalScale(int32_t iScale);
43 void SetLineBreakTolerance(float fTolerance);
44 void SetLineBoundary(float fLineStart, float fLineEnd);
45
46 void SetCharSpace(float fCharSpace);
47 void SetParagraphBreakChar(wchar_t wch);
48
49 int32_t CountBreakPieces() const;
50 const CFGAS_BreakPiece* GetBreakPieceUnstable(int32_t index) const;
51 void ClearBreakPieces();
52
53 CFGAS_Char* GetLastChar(int32_t index, bool bOmitChar, bool bRichText) const;
54 const CFGAS_BreakLine* GetCurrentLineForTesting() const { return m_pCurLine; }
55
56 protected:
57 struct TPO {
58 bool operator<(const TPO& that) const { return pos < that.pos; }
59
60 int32_t index;
61 int32_t pos;
62 };
63
64 static const int kMinimumTabWidth;
65 static const float kConversionFactor;
66
67 explicit CFGAS_Break(Mask<LayoutStyle> dwLayoutStyles);
68
69 void SetBreakStatus();
70 bool HasLine() const { return m_iReadyLineIndex >= 0; }
71 bool IsGreaterThanLineWidth(int32_t width) const;
72 FX_CHARTYPE GetUnifiedCharType(FX_CHARTYPE dwType) const;
73
75 bool m_bSingleLine = false;
76 bool m_bCombText = false;
78 uint32_t m_dwIdentity = 0;
79 int32_t m_iLineStart = 0;
80 int32_t m_iLineWidth = 2000000;
81 wchar_t m_wParagraphBreakChar = L'\n';
82 int32_t m_iFontSize = 240;
83 int32_t m_iTabWidth = 720000;
84 int32_t m_iHorizontalScale = 100;
85 int32_t m_iVerticalScale = 100;
86 int32_t m_iTolerance = 0;
87 int32_t m_iCharSpace = 0;
88 RetainPtr<CFGAS_GEFont> m_pFont;
90 int8_t m_iReadyLineIndex = -1;
92};
93
94#endif // XFA_FGAS_LAYOUT_CFGAS_BREAK_H_
WordBreakProperty FX_GetWordBreakProperty(wchar_t wcCodePoint)
bool FX_CheckStateChangeForWordBreak(WordBreakProperty from, WordBreakProperty to)
WordBreakProperty
CFX_TxtLineAlignment
@ CFX_TxtLineAlignment_Justified
@ CFX_TxtLineAlignment_Right
@ CFX_TxtLineAlignment_Center
@ CFX_TxtLineAlignment_Left
#define FX_TXTCHARSTYLE_OddBidiLevel
bool CFX_BreakTypeNoneOrPiece(CFGAS_Char::BreakType type)
virtual void OnCaretChanged()=0
virtual bool OnValidate(const WideString &wsText)=0
virtual ~Delegate()=default
virtual void OnSelChanged()=0
virtual void OnTextWillChange(TextChange *change)=0
virtual void SetScrollOffset(float fScrollOffset)=0
virtual void OnTextChanged()=0
virtual void NotifyTextFull()=0
Iterator(const CFDE_TextEditEngine *engine)
virtual void Undo() const =0
virtual void Redo() const =0
virtual ~Operation()=default
void SetAlignment(uint32_t alignment)
void SetCombText(bool enable)
size_t GetIndexAtStartOfLine(size_t pos) const
void Insert(size_t idx, const WideString &text, RecordOperation add_operation=RecordOperation::kInsertRecord)
std::pair< size_t, size_t > BoundsForWordAt(size_t idx) const
void SetAvailableWidth(size_t width)
void EnablePasswordMode(bool val)
WideString GetSelectedText() const
WideString GetText() const
size_t GetIndexAtEndOfLine(size_t pos) const
size_t GetIndexLeft(size_t pos) const
size_t GetIndexRight(size_t pos) const
void EnableValidation(bool val)
WideString Delete(size_t start_idx, size_t length, RecordOperation add_operation=RecordOperation::kInsertRecord)
~CFDE_TextEditEngine() override
void SetDelegate(Delegate *delegate)
std::pair< int32_t, CFX_RectF > GetCharacterInfo(int32_t start_idx)
void SetVisibleLineCount(size_t lines)
size_t GetIndexDown(size_t pos) const
void LimitHorizontalScroll(bool val)
size_t GetIndexForPoint(const CFX_PointF &point)
FX_ARGB GetFontColor() const
void SetSelection(size_t start_idx, size_t count)
void SetFont(RetainPtr< CFGAS_GEFont > font)
void LimitVerticalScroll(bool val)
void SetHasCharacterLimit(bool limit)
std::vector< CFX_RectF > GetCharacterRectsInRange(int32_t start_idx, int32_t count)
int32_t GetWidthOfChar(size_t idx) override
bool CanGenerateCharacterInfo() const
const std::vector< FDE_TEXTEDITPIECE > & GetTextPieces()
std::pair< size_t, size_t > GetSelection() const
std::vector< TextCharPos > GetDisplayPos(const FDE_TEXTEDITPIECE &info)
void SetCharacterLimit(size_t limit)
void SetAliasChar(wchar_t alias)
RetainPtr< CFGAS_GEFont > GetFont() const
wchar_t GetChar(size_t idx) const override
size_t GetIndexUp(size_t pos) const
void SetTabWidth(float width)
void SetMaxEditOperationsForTesting(size_t max)
void ReplaceSelectedText(const WideString &str)
WideString DeleteSelectedText(RecordOperation add_operation=RecordOperation::kInsertRecord)
void SetLineSpace(float space)
void SetFontColor(FX_ARGB color)
int32_t GetCharCount() const
int32_t GetStartPos() const
uint32_t GetCharStyles() const
int32_t GetBidiLevel() const
int32_t GetWidth() const
bool m_bCombText
Definition cfgas_break.h:76
void SetBreakStatus()
CFGAS_Break(Mask< LayoutStyle > dwLayoutStyles)
void SetCharSpace(float fCharSpace)
virtual ~CFGAS_Break()
int32_t m_iTabWidth
Definition cfgas_break.h:83
int32_t m_iHorizontalScale
Definition cfgas_break.h:84
void SetVerticalScale(int32_t iScale)
void SetFontSize(float fFontSize)
CFGAS_Char * GetLastChar(int32_t index, bool bOmitChar, bool bRichText) const
const CFGAS_BreakLine * GetCurrentLineForTesting() const
Definition cfgas_break.h:54
int32_t m_iVerticalScale
Definition cfgas_break.h:85
CFGAS_BreakLine m_Lines[2]
Definition cfgas_break.h:91
int8_t m_iReadyLineIndex
Definition cfgas_break.h:90
uint32_t m_dwIdentity
Definition cfgas_break.h:78
bool m_bSingleLine
Definition cfgas_break.h:75
void ClearBreakPieces()
void SetHorizontalScale(int32_t iScale)
int32_t m_iCharSpace
Definition cfgas_break.h:87
wchar_t m_wParagraphBreakChar
Definition cfgas_break.h:81
UnownedPtr< CFGAS_BreakLine > m_pCurLine
Definition cfgas_break.h:89
const CFGAS_BreakPiece * GetBreakPieceUnstable(int32_t index) const
bool HasLine() const
Definition cfgas_break.h:70
void SetLineBreakTolerance(float fTolerance)
int32_t m_iFontSize
Definition cfgas_break.h:82
void SetLineBoundary(float fLineStart, float fLineEnd)
void SetFont(RetainPtr< CFGAS_GEFont > pFont)
int32_t CountBreakPieces() const
int32_t m_iLineStart
Definition cfgas_break.h:79
void SetLayoutStyles(Mask< LayoutStyle > dwLayoutStyles)
bool IsGreaterThanLineWidth(int32_t width) const
void SetParagraphBreakChar(wchar_t wch)
int32_t GetTabWidth() const
Definition cfgas_break.h:39
FX_CHARTYPE m_eCharType
Definition cfgas_break.h:74
int32_t m_iTolerance
Definition cfgas_break.h:86
static const float kConversionFactor
Definition cfgas_break.h:65
RetainPtr< CFGAS_GEFont > m_pFont
Definition cfgas_break.h:88
Mask< LayoutStyle > GetLayoutStyles() const
Definition cfgas_break.h:34
Mask< LayoutStyle > m_dwLayoutStyles
Definition cfgas_break.h:77
void SetTabWidth(float fTabWidth)
int32_t m_iLineWidth
Definition cfgas_break.h:80
static const int kMinimumTabWidth
Definition cfgas_break.h:64
FX_CHARTYPE GetUnifiedCharType(FX_CHARTYPE dwType) const
virtual wchar_t GetChar(size_t idx) const =0
virtual int32_t GetWidthOfChar(size_t idx)=0
std::vector< CFX_RectF > GetCharRects(const Run &run) const
size_t GetDisplayPos(const Run &run, TextCharPos *pCharPos) const
CFGAS_Char::BreakType EndBreak(CFGAS_Char::BreakType dwStatus)
~CFGAS_TxtBreak() override
void SetLineWidth(float fLineWidth)
CFGAS_Char::BreakType AppendChar(wchar_t wch)
void SetAlignment(int32_t iAlignment)
void SetCombWidth(float fCombWidth)
void Offset(float dx, float dy)
constexpr CFX_RectF()=default
CFX_RectF & operator=(const CFX_RectF &other)=default
void Union(const CFX_RectF &rt)
WideString & operator+=(const WideString &str)
WideString & operator=(WideString &&that) noexcept
bool IsEmpty() const
Definition widestring.h:118
#define FX_IsOdd(a)
#define CHECK(cvref)
bool operator<(const TPO &that) const
Definition cfgas_break.h:58
UnownedPtr< const CFX_RectF > pRect
UNOWNED_PTR_EXCLUSION int32_t * pWidths
Run(const Run &other)
RetainPtr< CFGAS_GEFont > pFont
Mask< LayoutStyle > dwStyles
UnownedPtr< CFGAS_TxtBreak::Engine > pEdtEngine
FDE_TEXTEDITPIECE(const FDE_TEXTEDITPIECE &that)
bool single_line_
Definition cfde_data.h:29
bool line_wrap_
Definition cfde_data.h:30
#define UNOWNED_PTR_EXCLUSION