YSTest: HexBrowser.h 源文件

YSTest PreAlpha_b800_20170810 The YSLib Test Project

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

- 文件列表
- 文件成员

HexBrowser.h
浏览该文件的文档.
1 /*
2 © 2011-2015 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_HexBrowser_h_
29 #define INC_YReader_HexBrowser_h_ 1
30
31 #include <YSLib/UI/YModules.h>
32 #include <Helper/YModules.h>
33 #include YFM_YSLib_UI_Scroll
34 #include YFM_YSLib_Service_TextLayout
35 #include YFM_Helper_Initialization
36
37 namespace YSLib
38 {
39
40 namespace UI
41 {
42
48 class HexModel final
49 {
50 private:
55 mutable filebuf source{};
57 size_t size = 0;
58
59 public:
60 DefDeCtor(HexModel)
66 YB_NONNULL(2)
67 HexModel(const char*);
68 DefDeMoveCtor(HexModel)
69
70 DefDeMoveAssignment(HexModel)
71
72 DefPred(const ynothrow, Valid, source.is_open())
73
74 public:
76 DefGetter(const, size_t, Position,
77 size_t(source.pubseekoff(0, std::ios_base::cur, std::ios_base::in)))
78 DefGetter(const ynothrow, size_t, Size, size)
79
81 DefBoolNeg(explicit, source.is_open())
82
87 PDefH(std::streamsize, Fill, char* dst, std::streamsize n) const
88 ImplRet(source.sgetn(Nonnull(dst), n))
89
91 PDefH(void, Seek, std::streamoff off) const
92 ImplExpr(source.pubseekoff(off, std::ios_base::beg, std::ios_base::in))
93 };
94
95
101 class HexView
102 {
103 public:
104 static yconstexpr const size_t ItemPerLine = 8;
105
106 using IndexType = std::uintptr_t;
107 using DataType = vector<char>;
108
109 protected:
110 Drawing::TextState TextState;
111
112 private:
113 IndexType item_num;
114
115 protected:
120 DataType datCurrent;
121
122 public:
124 HexView(FontCache& = FetchDefaultFontCache());
125
126 public:
130 DefGetter(const ynothrow, SDst, ItemHeight,
131 GetTextLineHeightExOf(TextState))
132 DefGetter(const ynothrow, IndexType, ItemNum, item_num)
133
134 protected:
135 PDefH(IndexType, UpdateItemNum, SDst h)
136 ImplRet(item_num = FetchResizedLineN(TextState, h))
137 };
138
139
144 class HexViewArea : public ScrollableContainer, protected HexView
145 {
146 public:
147 using HexView::ItemPerLine;
148 using HexView::IndexType;
149 using HexView::DataType;
155 using ViewArgs = GValueEventArgs<bool>;
156
157 private:
161 HexModel model;
162
163 public:
168 GEvent<void(ViewArgs)> ViewChanged;
169
171 explicit
172 HexViewArea(const Drawing::Rect& = {},
173 FontCache& = FetchDefaultFontCache());
174
176 DefBoolNeg(explicit, bool(model))
177
178 using HexView::GetItemHeight;
179 using HexView::GetItemNum;
180 DefGetter(const ynothrow, const HexModel&, Model, model)
181
186 YB_NONNULL(2) void
187 Load(const char*);
188
193 void
194 LocateViewPosition(size_t);
195
200 void
201 Refresh(PaintEventArgs&&) override;
202
203 void
204 Reset();
205
206 void
207 UpdateData(std::uint32_t);
208
216 void
217 UpdateView(bool = {});
218 };
219
220 } // namespace UI;
221
222 } // namespace YSLib;
223
224 #endif
225
YSLib::UI::HexModel
十六进制模型：十六进制视图区域数据源。
Definition: HexBrowser.h:48
YSLib::UI::PDefH
PDefH(void, DisplayFor, IWidget &wgt, Timers::TimeSpan delay) ImplExpr(Show(wgt)
在一定时间内显示部件。
YSLib::UI::ynothrow
AView &y ynothrow
Definition: YWidgetView.cpp:47
YSLib::UI::HexModel::source
filebuf source
文件流数据源。
Definition: HexBrowser.h:55
DefPred
#define DefPred(_q, _n,...)
Definition: YBaseMacro.h:232
NPL::dst
YF_API const char src const string const char * dst
Definition: Dependency.h:95
YSLib::GEvent< void(ViewArgs)>
YSLib::UI::GValueEventArgs
简单 UI 事件参数类。
Definition: YWidgetEvent.h:299
YSLib::UI::HexView::DataType
vector< char > DataType
显示数据类型。
Definition: HexBrowser.h:107
YSLib
YSLib 命名空间。
Definition: AndroidHost.h:45
UI
YSLib::FetchDefaultFontCache
YF_API Drawing::FontCache & FetchDefaultFontCache()
取默认字体缓存。 字体缓存初始化失败。
Definition: Initialization.cpp:530
DefBoolNeg
#define DefBoolNeg(_spec,...)
定义表示显式转换 bool 操作符及其否定的 operator! 。
Definition: YBaseMacro.h:228
YSLib::Drawing::FontCache
字体缓存。
Definition: Font.h:460
YSLib::UI::HexModel::DefDeCtor
DefDeCtor(HexModel) YB_NONNULL(2) HexModel(const char *)
构造：以二进制只读模式打开文件并初始化大小。
YSLib::UI::ImplRet
const IWidget &wgt ImplRet(wgt.GetView().IsVisible()) bool YF_API Contains(const IWidget &
判断点是否在部件的可视区域内。
yconstexpr
#define yconstexpr
指定编译时常量表达式。
Definition: ydef.h:679
DefDeMoveAssignment
#define DefDeMoveAssignment(_t)
Definition: YBaseMacro.h:191
YSLib::Drawing::Fill
YF_API void Fill(const Graphics &, Color)
使用指定颜色填充图形接口上下文缓冲区。
Definition: YBlit.cpp:94
platform::SDst
std::uint16_t SDst
屏幕坐标距离。
Definition: Video.h:44
YSLib::UI::HexModel::Valid
Valid
Definition: HexBrowser.h:72
YSLib::Drawing::TextState
文本状态。
Definition: TextBase.h:86
YSLib::UI::HexView::datCurrent
DataType datCurrent
当前显示的数据。
Definition: HexBrowser.h:120
YSLib::UI::HexModel::size
size_t size
Definition: HexBrowser.h:57
YSLib::UI::HexView
十六进制视图。
Definition: HexBrowser.h:101
YSLib::UI::HexView::TextState
Drawing::TextState TextState
文本状态。
Definition: HexBrowser.h:110
YSLib::UI::HexView::ItemPerLine
static yconstexpr const size_t ItemPerLine
每行数据总数（字节）。
Definition: HexBrowser.h:104
YSLib::UI::PaintEventArgs
部件绘制参数。
Definition: YWidgetEvent.h:323
YSLib::Drawing::FetchResizedLineN
YF_API std::uint16_t FetchResizedLineN(const TextState &ts, SDst)
取指定文本状态和文本区域高所能显示的最大文本行数。
Definition: TextLayout.cpp:52
YSLib::UI::HexViewArea::ViewChanged
GEvent< void(ViewArgs)> ViewChanged
视图变更事件。
Definition: HexBrowser.h:168
YModules.h
platform_ex::Reset
unsigned long Reset(COMPtr< _iCOM > &ptr) ynothrow
Definition: COM.h:406
YSLib::Drawing::Rect
屏幕标准矩形：表示屏幕矩形区域。
Definition: YGDIBase.h:540
YModules.h
YSLib::UI::HexView::item_num
IndexType item_num
行数。
Definition: HexBrowser.h:113
YSLib::YB_NONNULL
YF_API YB_NONNULL(1, 2) ValueNode LoadNPLA1File(const char *disp
载入 NPLA1 配置文件。
std
Definition: memory.hpp:1183
DefGetter
#define DefGetter(_q, _t, _n,...)
Definition: YBaseMacro.h:241
YSLib::UI::ScrollableContainer
带滚动条的容器。
Definition: Scroll.h:407
platform::Nonnull
_type && Nonnull(_type &&p) ynothrowv
断言并返回非空参数。
Definition: Debug.h:422
YSLib::UI::ImplExpr
IWidget bool b ImplExpr(wgt.GetController().SetEnabled(b)) YF_API bool Enable(IWidget &
设置部件可用性，且当可用性改变时无效化部件区域。
YSLib::Drawing::Size
屏幕区域大小。
Definition: YGDIBase.h:293
YSLib::UI::HexModel::DefDeMoveCtor
DefDeMoveCtor(HexModel) DefDeMoveAssignment(HexModel) DefPred(const ynothrow
YSLib::UI::HexViewArea::model
HexModel model
模型。
Definition: HexBrowser.h:161
YSLib::UI::HexViewArea
十六进制视图区域。
Definition: HexBrowser.h:144
YSLib::UI::HexView::IndexType
std::uintptr_t IndexType
索引类型。
Definition: HexBrowser.h:106
YSLib::UI::UpdateView
void UpdateView(TextList &tl, bool is_active)
Definition: ListControl.cpp:425