YSTest: DualScreenReader类 参考

YSTest PreAlpha_b400_20130424 The YSLib Test Project

- 首页
- 相关页面
- 模块
- 命名空间
- 类
- 文件

- 类列表
- 类索引
- 类继承关系
- 类成员

全部 类 命名空间 文件 函数 变量 类型定义 枚举 枚举值 友元 宏定义 组 页
Public 类型 | Public 成员函数 | Public 属性 | Private 成员函数 | Private 属性 | 所有成员列表
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.h 第 51 行定义.

## 成员枚举类型说明

enum DualScreenReader::Command : u16

命令类型。

自从
  build 270

枚举值:

  Null |
  Scroll |
  Up |
  Down |
  Line |
  Screen |
  LineUp |
  LineDown |
  ScreenUp |
  ScreenDown |
  LineUpScroll |
  LineDownScroll |
  ScreenUpScroll |
  ScreenDownScroll |

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

## 构造及析构函数说明

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

## 成员函数说明

void DualScreenReader::AdjustForFirstNewline | ( |  | ) |

private

自从
  build 375

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

void DualScreenReader::AdjustForPrevNewline | ( |  | ) |

private

自从
  build 375

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

void DualScreenReader::AdjustMargins | ( |  | ) |

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

注解
  保持顶端和底端边距均衡。

自从
  build 274

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

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

函数调用图:

FontSize DualScreenReader::AdjustScrollOffset | ( |  | ) |

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

返回
  实际滚动的像素行数。

注解
  若缓冲区为空则忽略。

自从
  build 292

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

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

参考自 ShlTextReader::StopAutoScroll().

函数调用图:

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

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

附加到窗口。

自从
  build 273

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

参考 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.cpp 第 298 行定义.

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

函数调用图:

bool DualScreenReader::Execute | ( | Command | cmd | ) |

执行阅读器命令。

自从
  build 270

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

参考 YSLib::Drawing::CarriageReturn(),YSLib::Drawing::PenStyle::Font,YSLib::Drawing::Font::GetHeight(),YSLib::Drawing::GTextRendererBase< _type >::GetTextLineNEx(),h,YSLib::UI::Invalidate(),YSLib::Drawing::TextState::LineGap,ystdex::next_if_eq(),YSLib::Drawing::PutLine(),SetCurrentTextLineNOf(),platform::KeyCodes::Up,UpdateView(),YAssert , 以及 YB_UNLIKELY.

参考自 ShlTextReader::Execute(),ShlTextReader::OnKeyDown() , 以及 ShlTextReader::Scroll().

函数调用图:

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

void DualScreenReader::Invalidate | ( |  | ) |

无效化文本区域，并调用 ViewChanged （仅当非空）。

自从
  build 233

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

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

函数调用图:

void DualScreenReader::LoadText | ( | TextFile & | file | ) |

载入文本。

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

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

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

函数调用图:

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

void DualScreenReader::Locate | ( | size_t | pos | ) |

文本定位。

注解
  自动转至最近行首。

前置条件
  断言检查：文本缓冲区指针非空。

自从
  build 271

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

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

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

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

函数调用图:

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

void DualScreenReader::MoveUpForLastLine | ( | ptrdiff_t | off,
|  | size_t | h
| ) |  |

private

自从
  build 375

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

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

函数调用图:

Text::TextFileBuffer::Iterator DualScreenReader::PutLastLine | ( |  | ) |

private

自从
  build 375

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

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

函数调用图:

void DualScreenReader::Reset | ( |  | ) |

复位输出显示状态。

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

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

函数调用图:

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

向下滚屏指定像素行。

参数

  像素数。 |

前置条件
  断言检查：行偏移量小于行高。
  断言检查：文本缓冲区指针非空。

返回
  实际滚动的像素行数。

注解
  参数超过行高时无效。

自从
  build 292

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

参考 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.cpp 第 246 行定义.

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

参考自 ShlTextReader::OnKeyDown().

函数调用图:

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

void DualScreenReader::SetLineGap | ( | u8 | g = `0` | ) |

设置行距。

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

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

参考自 ShlTextReader::OnKeyDown().

函数调用图:

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

void DualScreenReader::SetVisible | ( | bool | b = `true` | ) |

设置文本区域可见性。

自从
  build 275

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

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

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

函数调用图:

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

void DualScreenReader::Stretch | ( | SDst | h | ) |

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

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

自从
  build 274

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

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

函数调用图:

void DualScreenReader::UnloadText | ( |  | ) |

卸载文本。

自从
  build 154

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

参考 yunseq().

函数调用图:

void DualScreenReader::UpdateView | ( |  | ) |

更新视图。

自从
  build 270

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

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

参考 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.h 第 123 行定义.

YSLib::UI::BufferedTextArea DualScreenReader::area_up

private

上下屏幕对应文本区域。

自从
  build 273

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

Drawing::FontCache& DualScreenReader::fc

private

字体缓存。

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

Text::TextFileBuffer::Iterator DualScreenReader::i_btm

private

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

DualScreenReader::i_btm

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

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

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

Text::TextFileBuffer::Iterator DualScreenReader::i_top

private

文本区域输入迭代器。

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

注解
  若因为读入换行符而换行，则迭代器指向的字符此换行符。

自从
  build 273

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

Drawing::Padding DualScreenReader::Margin

公用边距。

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

自从
  build 274

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

u16 DualScreenReader::overread_line_n

private

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

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

自从
  build 272

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

unique_ptr<Text::TextFileBuffer> DualScreenReader::p_text

private

文本资源。

自从
  build 397

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

Drawing::FontSize DualScreenReader::scroll_offset

private

滚屏像素偏移量。

自从
  build 292

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

DualScreenReader::TextBottom

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

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

视图变更回调函数。

自从
  build 271

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

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

- DSReader.h
- DSReader.cpp