YSTest  PreAlpha_b500_20140530
The YSLib Test Project
 全部 类 命名空间 文件 函数 变量 类型定义 枚举 枚举值 友元 宏定义 组 页
YSLib::DS::UI::DualScreenReader类 参考

双屏阅读器。 更多...

#include <DSReader.h>

YSLib::DS::UI::DualScreenReader 的协作图:

Public 类型

enum  Command : u16 {
  Null = 0, Scroll = 1, Up = 2, Down = 0,
  Line = 4, Screen = 0, LineUp = Line | Up, LineDown = Line | Down,
  ScreenUp = Screen | Up, ScreenDown = Screen | Down, LineUpScroll = LineUp | Scroll, LineDownScroll = LineDown | Scroll,
  ScreenUpScroll = ScreenUp | Scroll, ScreenDownScroll = ScreenDown | Scroll
}
 命令类型。 更多...
 

Public 成员函数

 DualScreenReader (SDst w=MainScreenWidth, SDst h_up=MainScreenHeight, SDst h_down=MainScreenHeight, Drawing::FontCache &fc_=FetchDefaultFontCache())
 构造。 更多...
 
 DefPred (const ynothrow, BufferReady, bool(p_text))
 
 DefPred (const ynothrow, TextTop, i_top==p_text->begin()) DefPred(const ynothrow
 
void SetFontSize (Drawing::FontSize=Drawing::Font::DefaultSize)
 设置文本区域的字体大小。 更多...
 
void SetLineGap (u8=0)
 设置行距。 更多...
 
void SetVisible (bool=true)
 设置文本区域可见性。 更多...
 
void AdjustMargins ()
 调整边距:使用公用边距更新各文本显示区域的边距。 更多...
 
Drawing::FontSize AdjustScrollOffset ()
 调整滚屏像素偏移量:立即继续滚动至下一整文本行。 更多...
 
void Attach (YSLib::UI::Window &, YSLib::UI::Window &)
 附加到窗口。 更多...
 
void Detach ()
 从窗口分离。 更多...
 
bool Execute (Command)
 执行阅读器命令。 更多...
 
void Invalidate ()
 无效化文本区域,并调用 ViewChanged (仅当非空)。 更多...
 
void Locate (size_t)
 文本定位。 更多...
 
void LoadText (TextFile &)
 载入文本。 更多...
 
void Reset ()
 复位输出显示状态。 更多...
 
Drawing::FontSize ScrollByPixel (Drawing::FontSize)
 向下滚屏指定像素行。 更多...
 
void Stretch (SDst)
 伸缩:从最大值起向上调整(减少)下文字区域的高后更新视图。 更多...
 
void UnloadText ()
 卸载文本。 更多...
 
void UpdateView ()
 更新视图。 更多...
 

Public 属性

Drawing::Padding Margin
 公用边距。 更多...
 
std::function< void()> ViewChanged
 视图变更回调函数。 更多...
 
 TextBottom
 
 i_btm
 判断输出位置是否到文本底端。 更多...
 

Private 成员函数

void AdjustForFirstNewline ()
 
void AdjustForPrevNewline ()
 
void MoveUpForLastLine (ptrdiff_t, size_t)
 
Text::TextFileBuffer::iterator PutLastLine ()
 

Private 属性

unique_ptr< Text::TextFileBuffer > p_text
 文本资源。 更多...
 
Drawing::FontCache & fc
 字体缓存。 更多...
 
u16 overread_line_n
 读入文件结束后的空行数。 更多...
 
Drawing::FontSize scroll_offset
 滚屏像素偏移量。 更多...
 
Text::TextFileBuffer::iterator i_top
 文本区域输入迭代器。 更多...
 
Text::TextFileBuffer::iterator i_btm
 
YSLib::UI::BufferedTextArea area_up
 上下屏幕对应文本区域。 更多...
 
YSLib::UI::BufferedTextArea area_dn
 

详细描述

双屏阅读器。

警告
非虚析构。
自从
build 251

在文件 DSReader.h 第 56 行定义.

成员枚举类型说明

命令类型。

自从
build 416
枚举值
Null 
Scroll 
Up 
Down 
Line 
Screen 
LineUp 
LineDown 
ScreenUp 
ScreenDown 
LineUpScroll 
LineDownScroll 
ScreenUpScroll 
ScreenDownScroll 

在文件 DSReader.h 第 63 行定义.

构造及析构函数说明

YSLib::DS::UI::DualScreenReader::DualScreenReader ( SDst  w = MainScreenWidth,
SDst  h_up = MainScreenHeight,
SDst  h_down = MainScreenHeight,
Drawing::FontCache &  fc_ = FetchDefaultFontCache() 
)

构造。

参数
w文本区域宽。
h_up上文本区域高。
h_down下文本区域高。
fc_字体缓存对象。
自从
build 396

在文件 DSReader.cpp 第 211 行定义.

成员函数说明

void YSLib::DS::UI::DualScreenReader::AdjustForFirstNewline ( )
private
自从
build 375

在文件 DSReader.cpp 第 260 行定义.

参考 i_top , 以及 p_text.

参考自 Execute() , 以及 ScrollByPixel().

这是这个函数的调用关系图:

void YSLib::DS::UI::DualScreenReader::AdjustForPrevNewline ( )
private
自从
build 375

在文件 DSReader.cpp 第 266 行定义.

参考 i_top , 以及 p_text.

参考自 Execute() , 以及 Locate().

这是这个函数的调用关系图:

void YSLib::DS::UI::DualScreenReader::AdjustMargins ( )

调整边距:使用公用边距更新各文本显示区域的边距。

注解
保持顶端和底端边距均衡。
自从
build 274

在文件 DSReader.cpp 第 272 行定义.

参考 YSLib::Drawing::AdjustBottomMarginOf(), YSLib::Drawing::Padding::Bottom, YSLib::Drawing::TextState::Margin, Margin, YSLib::Drawing::Padding::Top, v , 以及 yunseq.

参考自 Reset().

函数调用图:

这是这个函数的调用关系图:

FontSize YSLib::DS::UI::DualScreenReader::AdjustScrollOffset ( )

调整滚屏像素偏移量:立即继续滚动至下一整文本行。

返回
实际滚动的像素行数。
注解
若缓冲区为空则忽略。
自从
build 292

在文件 DSReader.cpp 第 289 行定义.

参考 p_text, scroll_offset , 以及 ScrollByPixel().

参考自 Execute().

函数调用图:

这是这个函数的调用关系图:

void YSLib::DS::UI::DualScreenReader::Attach ( YSLib::UI::Window &  wnd_up,
YSLib::UI::Window &  wnd_dn 
)

附加到窗口。

自从
build 273

在文件 DSReader.cpp 第 296 行定义.

参考 area_dn , 以及 area_up.

YSLib::DS::UI::DualScreenReader::DefPred ( const ynothrow  ,
BufferReady  ,
bool(p_text)   
)
自从
build 374
YSLib::DS::UI::DualScreenReader::DefPred ( const ynothrow  ,
TextTop  ,
i_top  = = p_text->begin() 
) const
void YSLib::DS::UI::DualScreenReader::Detach ( )

从窗口分离。

自从
build 273

在文件 DSReader.cpp 第 304 行定义.

参考 area_dn, area_up , 以及 YSLib::UI::Styles::Window.

void YSLib::DS::UI::DualScreenReader::Invalidate ( )

无效化文本区域,并调用 ViewChanged (仅当非空)。

自从
build 233

在文件 DSReader.cpp 第 378 行定义.

参考 YSLib::UI::Invalidate() , 以及 ViewChanged.

参考自 Execute(), LoadText(), Locate(), ScrollByPixel(), SetVisible() , 以及 UpdateView().

函数调用图:

这是这个函数的调用关系图:

void YSLib::DS::UI::DualScreenReader::LoadText ( TextFile &  file)

载入文本。

在文件 DSReader.cpp 第 416 行定义.

参考 i_btm, i_top, Invalidate(), p_text, YSLib::Drawing::PutString(), Reset(), UnloadText(), UpdateView(), YB_LIKELY , 以及 yunseq.

函数调用图:

void YSLib::DS::UI::DualScreenReader::Locate ( size_t  pos)

文本定位。

注解
自动转至最近行首。
前置条件
断言:文本缓冲区指针非空。
自从
build 271

以指定偏移量定位起始迭代器,若越界则忽略。

在文件 DSReader.cpp 第 390 行定义.

参考 AdjustForPrevNewline(), i_top, Invalidate(), p_text, Reset(), platform_ex::Windows::s, UpdateView() , 以及 YAssert.

函数调用图:

void YSLib::DS::UI::DualScreenReader::MoveUpForLastLine ( ptrdiff_t  off,
size_t  h 
)
private
自从
build 375

在文件 DSReader.cpp 第 434 行定义.

参考 YSLib::Drawing::SetCurrentTextLineNOf() , 以及 YAssert.

参考自 Execute() , 以及 ScrollByPixel().

函数调用图:

这是这个函数的调用关系图:

Text::TextFileBuffer::iterator YSLib::DS::UI::DualScreenReader::PutLastLine ( )
private
自从
build 460

在文件 DSReader.cpp 第 445 行定义.

参考 i_btm, ystdex::next_if_eq(), p_text , 以及 YSLib::Drawing::PutLine().

参考自 Execute() , 以及 ScrollByPixel().

函数调用图:

这是这个函数的调用关系图:

void YSLib::DS::UI::DualScreenReader::Reset ( )

复位输出显示状态。

在文件 DSReader.cpp 第 451 行定义.

参考 AdjustMargins() , 以及 YSLib::Drawing::TextState::ResetPen.

参考自 LoadText(), Locate() , 以及 UpdateView().

函数调用图:

这是这个函数的调用关系图:

FontSize YSLib::DS::UI::DualScreenReader::ScrollByPixel ( Drawing::FontSize  h)

向下滚屏指定像素行。

参数
像素数。
前置条件
断言:行偏移量小于行高。
断言:文本缓冲区指针非空。
返回
实际滚动的像素行数。
注解
参数超过行高时无效。
自从
build 292

在文件 DSReader.cpp 第 464 行定义.

参考 AdjustForFirstNewline(), i_btm, Invalidate(), MoveUpForLastLine(), p_text, YSLib::Drawing::TextState::Pen, PutLastLine(), scroll_offset, YSLib::Drawing::GBinaryGroup< _type >::Y, YAssert, YB_LIKELY , 以及 YB_UNLIKELY.

参考自 AdjustScrollOffset().

函数调用图:

这是这个函数的调用关系图:

void YSLib::DS::UI::DualScreenReader::SetFontSize ( Drawing::FontSize  s = Drawing::Font::DefaultSize)

设置文本区域的字体大小。

在文件 DSReader.cpp 第 252 行定义.

参考 YSLib::Drawing::PenStyle::Font.

void YSLib::DS::UI::DualScreenReader::SetLineGap ( u8  g = 0)

设置行距。

在文件 DSReader.cpp 第 225 行定义.

参考 YSLib::Drawing::TextState::LineGap, UpdateView() , 以及 yunseq.

函数调用图:

void YSLib::DS::UI::DualScreenReader::SetVisible ( bool  b = true)

设置文本区域可见性。

自从
build 275

在文件 DSReader.cpp 第 235 行定义.

参考 YSLib::UI::Invalidate() , 以及 Invalidate().

函数调用图:

void YSLib::DS::UI::DualScreenReader::Stretch ( SDst  h)

伸缩:从最大值起向上调整(减少)下文字区域的高后更新视图。

注解
高的最大值为 MainScreenHeight 。
调整后的高限制为 40 到 MainScreenHeight 的闭区间。
顶端文本迭代器保持不变,底端文本迭代器可能改变。
自从
build 274

在文件 DSReader.cpp 第 492 行定义.

参考 YSLib::UI::SetSizeOf() , 以及 UpdateView().

函数调用图:

void YSLib::DS::UI::DualScreenReader::UnloadText ( )

卸载文本。

自从
build 154

在文件 DSReader.cpp 第 505 行定义.

参考 i_btm, i_top, p_text , 以及 yunseq.

参考自 LoadText().

这是这个函数的调用关系图:

void YSLib::DS::UI::DualScreenReader::UpdateView ( )

更新视图。

自从
build 270

根据文本起点迭代器和当前视图状态重新填充缓冲区文本并无效化文本区域。

在文件 DSReader.cpp 第 513 行定义.

参考 i_btm, i_top, Invalidate(), ystdex::next_if_eq(), overread_line_n, p_text, YSLib::Drawing::PutString(), Reset(), YB_LIKELY , 以及 YB_UNLIKELY.

参考自 Execute(), LoadText(), Locate(), SetLineGap() , 以及 Stretch().

函数调用图:

这是这个函数的调用关系图:

类成员变量说明

YSLib::UI::BufferedTextArea YSLib::DS::UI::DualScreenReader::area_dn
private

在文件 DSReader.h 第 128 行定义.

参考自 Attach() , 以及 Detach().

YSLib::UI::BufferedTextArea YSLib::DS::UI::DualScreenReader::area_up
private

上下屏幕对应文本区域。

自从
build 273

在文件 DSReader.h 第 127 行定义.

参考自 Attach() , 以及 Detach().

Drawing::FontCache& YSLib::DS::UI::DualScreenReader::fc
private

字体缓存。

在文件 DSReader.h 第 87 行定义.

Text::TextFileBuffer::iterator YSLib::DS::UI::DualScreenReader::i_btm
private

在文件 DSReader.h 第 97 行定义.

参考自 Execute(), LoadText(), PutLastLine(), ScrollByPixel(), UnloadText() , 以及 UpdateView().

YSLib::DS::UI::DualScreenReader::i_btm

判断输出位置是否到文本底端。

取文本区域的行距。 取编码。 设置字符颜色。

在文件 DSReader.h 第 155 行定义.

Text::TextFileBuffer::iterator YSLib::DS::UI::DualScreenReader::i_top
private

文本区域输入迭代器。

文本区域的起点和终点在文本缓冲区的迭代器,构成一个左闭右开区间。

注解
若因为读入换行符而换行,则迭代器指向的字符此换行符。
自从
build 460

在文件 DSReader.h 第 96 行定义.

参考自 AdjustForFirstNewline(), AdjustForPrevNewline(), Execute(), LoadText(), Locate(), UnloadText() , 以及 UpdateView().

Drawing::Padding YSLib::DS::UI::DualScreenReader::Margin

公用边距。

限制文本区域的文本边界的基准边距。

自从
build 274

在文件 DSReader.h 第 119 行定义.

参考自 AdjustMargins().

u16 YSLib::DS::UI::DualScreenReader::overread_line_n
private

读入文件结束后的空行数。

最近一次 UpdateView 操作时确认文件结束后的空行数。

自从
build 272

在文件 DSReader.h 第 105 行定义.

参考自 Execute() , 以及 UpdateView().

unique_ptr<Text::TextFileBuffer> YSLib::DS::UI::DualScreenReader::p_text
private
Drawing::FontSize YSLib::DS::UI::DualScreenReader::scroll_offset
private

滚屏像素偏移量。

自从
build 292

在文件 DSReader.h 第 110 行定义.

参考自 AdjustScrollOffset() , 以及 ScrollByPixel().

YSLib::DS::UI::DualScreenReader::TextBottom

在文件 DSReader.h 第 155 行定义.

std::function<void()> YSLib::DS::UI::DualScreenReader::ViewChanged

视图变更回调函数。

自从
build 271

在文件 DSReader.h 第 136 行定义.

参考自 Invalidate().


该类的文档由以下文件生成: