YSTest  PreAlpha_b500_20140530
The YSLib Test Project
 全部  命名空间 文件 函数 变量 类型定义 枚举 枚举值 友元 宏定义  
DSReader.h
浏览该文件的文档.
1 /*
2  © 2010-2014 FrankHB.
3 
4  This file is part of the YSLib project, and may only be used,
5  modified, and distributed under the terms of the YSLib project
6  license, LICENSE.TXT. By continuing to use, modify, or distribute
7  this file you indicate that you have read the license and
8  understand and accept it fully.
9 */
10 
28 #ifndef INC_YReader_DSReader_h_
29 #define INC_YReader_DSReader_h_ 1
30 
31 #include <YSLib/UI/YModules.h>
32 #include YFM_YSLib_UI_TextArea
33 #include YFM_YSLib_Service_TextFile
34 #include YFM_YSLib_Service_TextManager
35 #include <Helper/DSMain.h>
36 #include YFM_Helper_Initialization
37 
38 namespace YSLib
39 {
40 
41 namespace DS
42 {
43 
44 namespace UI
45 {
46 
47 using Drawing::Color;
48 using Drawing::PixelType;
49 
50 
57 {
58 public:
63  enum Command : u16
64  {
65  Null = 0,
66  Scroll = 1,
67  Up = 2,
68  Down = 0,
69  Line = 4,
70  Screen = 0,
71  LineUp = Line | Up,
79  };
80 
81 private:
86  unique_ptr<Text::TextFileBuffer> p_text;
88 
99 
111 
112 public:
120 
121 private:
130 
131 public:
136  std::function<void()> ViewChanged;
137 
146  DualScreenReader(SDst w = MainScreenWidth,
147  SDst h_up = MainScreenHeight, SDst h_down = MainScreenHeight,
149 
151  DefPred(const ynothrow, BufferReady, bool(p_text));
152  DefPred(const ynothrow, TextTop, i_top == p_text->begin()) \
153 
155  DefPred(const ynothrow, TextBottom, i_btm == p_text->end()) \
157 
169  DefGetter(const ynothrow, u8, LineGap, area_up.LineGap) \
171  DefGetter(const ynothrow, Text::Encoding, Encoding, p_text
172  ? p_text->GetEncoding() : Text::CharSet::Null)
173 
178  DefGetter(const ynothrow, size_t, TextSize,
179  p_text ? p_text->GetTextSize() : 0)
188  DefGetter(const ynothrow, size_t, TopPosition,
189  p_text ? p_text->GetPosition(i_top) : 0)
190  DefGetter(const ynothrow, size_t, BottomPosition,
191  p_text ? p_text->GetPosition(i_btm) : 0)
193 
199  Text::TextFileBuffer&
200  GetTextBufferRef() ythrow(LoggedEvent)
201  {
202  if(p_text)
203  return *p_text;
204  throw LoggedEvent("Null text buffer pointer found.");
205  }
206 
207  PDefH(void, SetColor, Color c = Drawing::ColorSpace::Black)
209 
214  void
215  SetFont(const Drawing::Font&);
216  void
217  SetFontSize(Drawing::FontSize = Drawing::Font::DefaultSize); \
219  void
220  SetLineGap(u8 = 0);
221 
225  void
226  SetVisible(bool = true);
227 
228 private:
230  void
232 
234  void
236 
237 public:
243  void
244  AdjustMargins();
245 
252  Drawing::FontSize
254 
259  void
260  Attach(YSLib::UI::Window&, YSLib::UI::Window&);
261 
266  void
267  Detach();
268 
273  bool
274  Execute(Command);
275 
280  void
281  Invalidate();
282 
291  void
292  Locate(size_t);
293 
295  void
296  LoadText(TextFile&);
297 
298 private:
300  void
301  MoveUpForLastLine(ptrdiff_t, size_t);
302 
304  Text::TextFileBuffer::iterator
305  PutLastLine();
306 
307 public:
309  void
310  Reset();
311 
321  Drawing::FontSize
322  ScrollByPixel(Drawing::FontSize);
323 
331  void
332  Stretch(SDst);
333 
338  void
339  UnloadText();
340 
347  void
348  UpdateView();
349 };
350 
356 
357 } // namespace UI;
358 
359 } // namespace DS;
360 
361 } // namespace YSLib;
362 
363 #endif
364 
#define ImplUnseq(...)
Definition: YBaseMacro.h:107
Drawing::FontSize ScrollByPixel(Drawing::FontSize)
向下滚屏指定像素行。
Definition: DSReader.cpp:464
目标编码迭代器类型。
Definition: textmgr.h:68
bool return true
Definition: DSMain.cpp:177
Drawing::FontSize AdjustScrollOffset()
调整滚屏像素偏移量:立即继续滚动至下一整文本行。
Definition: DSReader.cpp:289
Drawing::FontSize scroll_offset
滚屏像素偏移量。
Definition: DSReader.h:110
Text::TextFileBuffer::iterator i_top
文本区域输入迭代器。
Definition: DSReader.h:96
文本文件类。
Definition: TextFile.h:56
void SetVisible(bool=true)
设置文本区域可见性。
Definition: DSReader.cpp:235
窗口。
Definition: ywindow.h:44
std::uint16_t SDst
屏幕坐标距离。
Definition: Video.h:39
#define DefBitmaskEnum(_tEnum)
Definition: YBaseMacro.h:392
#define DefGetter(_q, _t, _n,...)
Definition: YBaseMacro.h:180
YSLib::UI::BufferedTextArea area_up
上下屏幕对应文本区域。
Definition: DSReader.h:127
DualScreenReader(SDst w=MainScreenWidth, SDst h_up=MainScreenHeight, SDst h_down=MainScreenHeight, Drawing::FontCache &fc_=FetchDefaultFontCache())
构造。
Definition: DSReader.cpp:211
void UpdateView()
更新视图。
Definition: DSReader.cpp:513
void Attach(YSLib::UI::Window &, YSLib::UI::Window &)
附加到窗口。
Definition: DSReader.cpp:296
DefPred(const ynothrow, BufferReady, bool(p_text))
字体缓存。
Definition: Font.h:415
#define ynothrow
YSLib 无异常抛出保证:若支持 noexcept 关键字, 指定特定的 noexcept 异常规范。
Definition: ydef.h:514
Drawing::FontCache & fc
字体缓存。
Definition: DSReader.h:87
双屏阅读器。
Definition: DSReader.h:56
YF_API Drawing::FontCache & FetchDefaultFontCache()
取默认字体缓存。
#define ythrow(...)
YSLib 动态异常规范:根据是否使用异常规范宏指定或忽略动态异常规范。
Definition: ydef.h:476
Drawing::Font Font
字体。
Definition: TextBase.h:57
Text::TextFileBuffer::iterator PutLastLine()
Definition: DSReader.cpp:445
YSLib::UI::BufferedTextArea area_dn
Definition: DSReader.h:128
void Reset()
复位输出显示状态。
Definition: DSReader.cpp:451
Drawing::Color Color
笔颜色。
Definition: TextBase.h:58
缓冲文本区域。
Definition: textarea.h:74
Drawing::Padding Margin
公用边距。
Definition: DSReader.h:119
void MoveUpForLastLine(ptrdiff_t, size_t)
Definition: DSReader.cpp:434
bool Execute(Command)
执行阅读器命令。
Definition: DSReader.cpp:315
unique_ptr< Text::TextFileBuffer > p_text
文本资源。
Definition: DSReader.h:86
void Locate(size_t)
文本定位。
Definition: DSReader.cpp:390
void SetLineGap(u8=0)
设置行距。
Definition: DSReader.cpp:225
Color
控制台颜色枚举。
Definition: Video.h:458
std::uint8_t u8
通用数据类型。
Definition: yadaptor.h:67
void Detach()
从窗口分离。
Definition: DSReader.cpp:304
记录日志的异常事件类。
Definition: yexcept.h:58
空白样式。
Definition: ygdi.h:46
void Invalidate()
无效化文本区域,并调用 ViewChanged (仅当非空)。
Definition: DSReader.cpp:378
字体:字模,包含字型、样式和大小。
Definition: Font.h:546
std::function< void()> ViewChanged
视图变更回调函数。
Definition: DSReader.h:136
void AdjustMargins()
调整边距:使用公用边距更新各文本显示区域的边距。
Definition: DSReader.cpp:272
std::uint16_t u16
Definition: yadaptor.h:68
Text::TextFileBuffer::iterator i_btm
Definition: DSReader.h:97
DS 平台框架。
void UnloadText()
卸载文本。
Definition: DSReader.cpp:505
void SetFontSize(Drawing::FontSize=Drawing::Font::DefaultSize)
设置文本区域的字体大小。
Definition: DSReader.cpp:252
u16 overread_line_n
读入文件结束后的空行数。
Definition: DSReader.h:105
void Stretch(SDst)
伸缩:从最大值起向上调整(减少)下文字区域的高后更新视图。
Definition: DSReader.cpp:492
void LoadText(TextFile &)
载入文本。
Definition: DSReader.cpp:416
u8 FontSize
字体大小。
Definition: Font.h:63