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

双屏阅读器。 更多...

#include <DSReader.h>

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->GetBegin()) 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.h51 行定义.

成员枚举类型说明

命令类型。

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

在文件 DSReader.h58 行定义.

构造及析构函数说明

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.cpp205 行定义.

成员函数说明

void DualScreenReader::AdjustForFirstNewline ( )
private
自从
build 375

在文件 DSReader.cpp254 行定义.

void DualScreenReader::AdjustForPrevNewline ( )
private
自从
build 375

在文件 DSReader.cpp260 行定义.

void DualScreenReader::AdjustMargins ( )

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

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

在文件 DSReader.cpp266 行定义.

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

函数调用图:

FontSize DualScreenReader::AdjustScrollOffset ( )

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

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

在文件 DSReader.cpp283 行定义.

参考 YSLib::Drawing::GetTextLineHeightExOf().

参考自 ShlTextReader::StopAutoScroll().

函数调用图:

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

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

附加到窗口。

自从
build 273

在文件 DSReader.cpp290 行定义.

参考 area_dn().

函数调用图:

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

从窗口分离。

自从
build 273

在文件 DSReader.cpp298 行定义.

参考 area_dn(),YSLib::UI::FetchContainerPtr() , 以及 YSLib::UI::Styles::Window.

函数调用图:

void DualScreenReader::Invalidate ( )

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

自从
build 233

在文件 DSReader.cpp374 行定义.

参考 YSLib::UI::Invalidate().

函数调用图:

void DualScreenReader::LoadText ( TextFile file)

载入文本。

在文件 DSReader.cpp412 行定义.

参考 YSLib::UI::Invalidate(),YSLib::Drawing::PutString(),UpdateView(),YB_LIKELY , 以及 yunseq().

参考自 ShlTextReader::LoadFile() , 以及 ShlTextReader::Switch().

函数调用图:

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

void DualScreenReader::Locate ( size_t  pos)

文本定位。

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

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

在文件 DSReader.cpp386 行定义.

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

参考自 ShlTextReader::Locate() , 以及 ShlTextReader::UpdateReadingList().

函数调用图:

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

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

在文件 DSReader.cpp430 行定义.

参考 YSLib::Drawing::GTextRendererBase< _type >::GetTextLineNEx(),SetCurrentTextLineNOf() , 以及 YAssert.

函数调用图:

Text::TextFileBuffer::Iterator DualScreenReader::PutLastLine ( )
private
自从
build 375

在文件 DSReader.cpp442 行定义.

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

函数调用图:

void DualScreenReader::Reset ( )

复位输出显示状态。

在文件 DSReader.cpp448 行定义.

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

函数调用图:

FontSize DualScreenReader::ScrollByPixel ( Drawing::FontSize  h)

向下滚屏指定像素行。

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

在文件 DSReader.cpp461 行定义.

参考 YSLib::Drawing::CarriageReturn(),YSLib::Drawing::GetTextLineHeightExOf(),h,YSLib::UI::Invalidate(),YSLib::Drawing::TextState::Pen,YSLib::Drawing::GBinaryGroup< _type >::Y,YAssert,YB_LIKELY , 以及 YB_UNLIKELY.

参考自 ShlTextReader::Scroll().

函数调用图:

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

void DualScreenReader::SetFontSize ( Drawing::FontSize  = Drawing::Font::DefaultSize)

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

在文件 DSReader.cpp246 行定义.

参考 YSLib::Drawing::PenStyle::Font , 以及 YSLib::Drawing::Font::SetSize().

参考自 ShlTextReader::OnKeyDown().

函数调用图:

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

void DualScreenReader::SetLineGap ( u8  g = 0)

设置行距。

在文件 DSReader.cpp219 行定义.

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

参考自 ShlTextReader::OnKeyDown().

函数调用图:

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

void DualScreenReader::SetVisible ( bool  b = true)

设置文本区域可见性。

自从
build 275

在文件 DSReader.cpp229 行定义.

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

参考自 ShlTextReader::SettingSession::SettingSession().

函数调用图:

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

void DualScreenReader::Stretch ( SDst  h)

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

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

在文件 DSReader.cpp489 行定义.

参考 YSLib::UI::Widget::GetWidth(),h,MainScreenHeight,YSLib::RestrictInClosedInterval(),YSLib::Drawing::BitmapBufferEx::SetSize(),SetSizeOf(),UpdateView() , 以及 w.

函数调用图:

void DualScreenReader::UnloadText ( )

卸载文本。

自从
build 154

在文件 DSReader.cpp502 行定义.

参考 yunseq().

函数调用图:

void DualScreenReader::UpdateView ( )

更新视图。

自从
build 270

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

在文件 DSReader.cpp510 行定义.

参考 YSLib::Drawing::GTextRendererBase< _type >::GetTextLineNEx(),YSLib::UI::Invalidate(),ystdex::next_if_eq(),YSLib::Drawing::PutString(),YB_LIKELY , 以及 YB_UNLIKELY.

参考自 ShlTextReader::OnKeyDown().

函数调用图:

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

类成员变量说明

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

在文件 DSReader.h123 行定义.

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

上下屏幕对应文本区域。

自从
build 273

在文件 DSReader.h122 行定义.

Drawing::FontCache& DualScreenReader::fc
private

字体缓存。

在文件 DSReader.h82 行定义.

Text::TextFileBuffer::Iterator DualScreenReader::i_btm
private

在文件 DSReader.h92 行定义.

DualScreenReader::i_btm

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

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

在文件 DSReader.h149 行定义.

Text::TextFileBuffer::Iterator DualScreenReader::i_top
private

文本区域输入迭代器。

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

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

在文件 DSReader.h91 行定义.

Drawing::Padding DualScreenReader::Margin

公用边距。

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

自从
build 274

在文件 DSReader.h114 行定义.

u16 DualScreenReader::overread_line_n
private

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

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

自从
build 272

在文件 DSReader.h100 行定义.

unique_ptr<Text::TextFileBuffer> DualScreenReader::p_text
private

文本资源。

自从
build 397

在文件 DSReader.h81 行定义.

Drawing::FontSize DualScreenReader::scroll_offset
private

滚屏像素偏移量。

自从
build 292

在文件 DSReader.h105 行定义.

DualScreenReader::TextBottom

在文件 DSReader.h149 行定义.

std::function<void()> DualScreenReader::ViewChanged

视图变更回调函数。

自从
build 271

在文件 DSReader.h131 行定义.


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