YSTest: HostedGUI.h 源文件

YSTest PreAlpha_b700_20160611 The YSLib Test Project

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

- 文件列表
- 文件成员

HostedGUI.h
浏览该文件的文档.
1 /*
2 © 2013-2016 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
29 #ifndef YCL_INC_HostedGUI_h_
30 #define YCL_INC_HostedGUI_h_ 1
31
32 #include "YCLib/YModules.h"
33 #include YFM_YCLib_Host // for nptr, map, unique_ptr, ystdex::aligned_storage_t,
34 // wstring, wstring_view, string_view, YSLib::recursive_mutex,
35 // YSLib::lock_guard, u16string_view;
36 #include YFM_YSLib_Core_YEvent // for YSLib::GEvent, YSLib::string;
37 #include YFM_YSLib_Core_YGraphics // for YSLib::Drawing::Rect,
38 // YSLib::Drawing::Point, YSLib::Drawing::Size;
39 #include YFM_YSLib_Core_YString // for YSLib::String;
40 #if YCL_HostedUI_XCB
41 # include YFM_YCLib_XCB
42 #elif YCL_Win32
43 # include <atomic> // for std::atomic;
44 #elif YCL_Android
45 #elif YF_Hosted
46 # error "Unknown platform without XCB support found."
47 #endif
48
49 #if YF_Hosted && YCL_HostedUI
50 # if YCL_Win32
51
53 struct HBITMAP__;
54 struct HBRUSH__;
55 struct HDC__;
56 struct HINSTANCE__;
57 struct HWND__;
58 using HBITMAP = ::HBITMAP__*;
59 using HBRUSH = ::HBRUSH__*;
60 using HDC = ::HDC__*;
61 using HINSTANCE = ::HINSTANCE__*;
62 using HWND = ::HWND__*;
63 # if YCL_Win64
64 using LPARAM = long long;
65 # else
66 using LPARAM = long;
67 # endif
68 using LRESULT = ::LPARAM;
69 using WPARAM = std::uintptr_t;
70 using WNDPROC = ::LRESULT(__stdcall*)(::HWND, unsigned, ::WPARAM, ::LPARAM);
72
74 struct tagWNDCLASSW;
75 struct tagWNDCLASSEXW;
76 using WNDCLASSW = ::tagWNDCLASSW;
77 using WNDCLASSEXW = ::tagWNDCLASSEXW;
79 # elif YCL_Android
80 struct ANativeWindow;
81 # endif
82
83 namespace platform_ex
84 {
85
86 # if YCL_HostedUI_XCB
87 using NativeWindowHandle = nptr<XCB::WindowData*>;
89 # elif YCL_Win32
90 using NativeWindowHandle = ::HWND;
93 using WindowStyle = unsigned long;
94 # elif YCL_Android
95 using NativeWindowHandle = ::ANativeWindow*;
97 # endif
98
99
101 class YF_API HostWindowDelete
102 {
103 public:
104 using pointer = NativeWindowHandle;
105
106 void
107 operator()(pointer) const ynothrow;
108 };
109
110
111 # if YCL_Win32
112
113 struct YF_API GDIObjectDelete
115 {
116 using pointer = void*;
117
119 void
120 operator()(pointer) const ynothrow;
121 };
123 # endif
124
125
127
128
138 # if YCL_HostedUI_XCB
139 using MessageID = std::uint8_t;
140 using MessageHandler = void(void*);
141 # elif YCL_Win32
142 using MessageID = unsigned;
143 using MessageHandler = void(::WPARAM, ::LPARAM, ::LRESULT&);
144 # endif
145
146
147 # if YCL_HostedUI_XCB || YCL_Win32
148
152 using MessageMap = map<MessageID, YSLib::GEvent<MessageHandler>>;
153 # endif
154
155 # if YCL_Win32
156
162 YF_API void
163 BindDefaultWindowProc(NativeWindowHandle, MessageMap&, unsigned,
164 YSLib::EventPriority = 0);
165 # endif
166
167
174 class YF_API WindowReference : private nptr<NativeWindowHandle>
175 {
176 public:
178 DefDeCtor(WindowReference)
180 using nptr::nptr;
182 DefDeCopyMoveCtorAssignment(WindowReference)
183
184 # if YCL_Win32
185 bool
187 IsMaximized() const ynothrow;
189 bool
190 IsMinimized() const ynothrow;
192 bool
193 IsVisible() const ynothrow;
194 # endif
195
196 # if YCL_HostedUI_XCB
197
199 DefGetterMem(const, YSLib::Drawing::Rect, Bounds, Deref())
200 DefGetterMem(const, YSLib::Drawing::Point, Location, Deref())
201 DefGetterMem(const, YSLib::Drawing::Size, Size, Deref())
203 # elif YCL_Win32
204
208 YSLib::Drawing::Rect
209 GetBounds() const;
211
212 YSLib::Drawing::Rect
213 GetClientBounds() const;
214 YSLib::Drawing::Point
215 GetClientLocation() const;
216 YSLib::Drawing::Size
217 GetClientSize() const;
219 YSLib::Drawing::Point
221 GetCursorLocation() const;
222 YSLib::Drawing::Point
223 GetLocation() const;
224 # elif YCL_Android
225 YSLib::SDst
227 GetHeight() const;
228 # endif
229 DefGetter(const ynothrow, NativeWindowHandle, NativeHandle, get())
230 # if YCL_Win32
231
237 YSLib::Drawing::AlphaType
238 GetOpacity() const;
240 WindowReference
241 GetParent() const;
243 YSLib::Drawing::Size
244 GetSize() const;
245 # elif YCL_Android
246 DefGetter(const, YSLib::Drawing::Size, Size, {GetWidth(), GetHeight()})
248 YSLib::SDst
249 GetWidth() const;
250 # endif
251
252 # if YCL_HostedUI_XCB
253
255 DefSetterMem(, const YSLib::Drawing::Rect&, Bounds, Deref())
256
257 PDefH(void, Close, )
258 ImplRet(Deref().Close())
259
264 XCB::WindowData&
265 Deref() const;
266
268 PDefH(void, Hide, )
269 ImplRet(Deref().Hide())
270
271 PDefH(void, Invalidate, )
272 ImplRet(Deref().Invalidate())
273
274 PDefH(void, Move, const YSLib::Drawing::Point& pt)
275 ImplRet(Deref().Move(pt))
276
277 PDefH(void, Resize, const YSLib::Drawing::Size& s)
278 ImplRet(Deref().Resize(s))
280
282 PDefH(void, Show, )
283 ImplRet(Deref().Show())
284 # elif YCL_Win32
285
290 void
291 SetBounds(const YSLib::Drawing::Rect&);
297 void
298 SetClientBounds(const YSLib::Drawing::Rect&);
304 void
305 SetOpacity(YSLib::Drawing::AlphaType);
310 void
311 SetText(const wchar_t*);
312
314 void
315 Close();
316
321 void
322 Invalidate();
323
328 void
329 Move(const YSLib::Drawing::Point&);
334 void
335 MoveClient(const YSLib::Drawing::Point&);
336
341 void
342 Resize(const YSLib::Drawing::Size&);
343
349 void
350 ResizeClient(const YSLib::Drawing::Size&);
351
359 bool
360 Show(int = 1) ynothrow;
361 # endif
362
363 protected:
365 using nptr::get_ref;
366 };
367
368
369 # if YCL_HostedUI_XCB || YCL_Android
370
375 YF_API void
376 UpdateContentTo(NativeWindowHandle, const YSLib::Drawing::Rect&,
377 const YSLib::Drawing::ConstGraphics&);
378 # elif YCL_Win32
379
390 YF_API ::HBITMAP
391 CreateCompatibleDIBSection(const YSLib::Drawing::Size&,
392 YSLib::Drawing::BitmapPtr&);
393
400 YF_API NativeWindowHandle
401 CreateNativeWindow(const wchar_t*, const YSLib::Drawing::Size&, const wchar_t*
402 = L"", WindowStyle = 0x80000000L, WindowStyle = 0x00000000L);
403 # endif
404
405
406 # if YCL_HostedUI_XCB || YCL_Android
407
412 class ScreenBufferData;
413 # endif
414
415
426 class YF_API ScreenBuffer
427 {
428 private:
429 # if YCL_HostedUI_XCB || YCL_Android
430
434 unique_ptr<ScreenBufferData> p_impl;
439 YSLib::SDst width;
440 # elif YCL_Win32
441 YSLib::Drawing::Size size;
444 YSLib::Drawing::BitmapPtr p_buffer;
449 unique_ptr_from<GDIObjectDelete> p_bitmap;
450 # endif
451
452 public:
454 ScreenBuffer(const YSLib::Drawing::Size&);
455 # if YCL_HostedUI_XCB || YCL_Android
456
461 ScreenBuffer(const YSLib::Drawing::Size&, YSLib::SDst);
462 # endif
463 ScreenBuffer(ScreenBuffer&&) ynothrow;
465 ~ScreenBuffer();
466
468 ScreenBuffer&
469 operator=(ScreenBuffer&&) ynothrow;
470
471 # if YCL_HostedUI_XCB || YCL_Android
472 YSLib::Drawing::BitmapPtr
474 GetBufferPtr() const ynothrow;
476 YSLib::Drawing::Graphics
477 GetContext() const ynothrow;
479 YSLib::Drawing::Size
480 GetSize() const ynothrow;
482 YSLib::SDst
483 GetStride() const ynothrow;
484 # elif YCL_Win32
485
487 DefGetter(const ynothrow, YSLib::Drawing::BitmapPtr, BufferPtr, p_buffer)
488 DefGetter(const ynothrow, ::HBITMAP, NativeHandle,
489 ::HBITMAP(p_bitmap.get()))
490 DefGetter(const ynothrow, const YSLib::Drawing::Size&, Size, size)
491
499 YB_NONNULL(1) void
500 Premultiply(YSLib::Drawing::ConstBitmapPtr) ynothrow;
501 # endif
502
508 void
509 Resize(const YSLib::Drawing::Size&);
510
521 YB_NONNULL(1) void
522 UpdateFrom(YSLib::Drawing::ConstBitmapPtr) ynothrow;
524
525 # if YCL_Win32
526
534 YB_NONNULL(1) void
535 UpdateFromBounds(YSLib::Drawing::ConstBitmapPtr,
536 const YSLib::Drawing::Rect&) ynothrow;
537
539 void
540 UpdatePremultipliedTo(NativeWindowHandle, YSLib::Drawing::AlphaType = 0xFF,
541 const YSLib::Drawing::Point& = {});
542 # endif
543
548 void
549 UpdateTo(NativeWindowHandle, const YSLib::Drawing::Point& = {}) ynothrow;
550
551 # if YCL_Win32
552
556 void
557 UpdateToBounds(NativeWindowHandle, const YSLib::Drawing::Rect&,
558 const YSLib::Drawing::Point& = {}) ynothrow;
559 # endif
560
565 void
566 swap(ScreenBuffer&) ynothrow;
567 };
568
573 inline DefSwap(ynothrow, ScreenBuffer)
574
575
580 class YF_API ScreenRegionBuffer : private ScreenBuffer
581 {
582 private:
584 YSLib::mutex mtx{};
585
586 public:
588 using ScreenBuffer::ScreenBuffer;
589
590 DefGetter(ynothrow, ScreenBuffer&, ScreenBufferRef, *this)
591
592
593 PDefH(YSLib::locked_ptr<ScreenBuffer>, Lock, )
594 ImplRet({&GetScreenBufferRef(), mtx})
595 };
597
598
599 # if YCL_Win32
600
602
606 class YF_API WindowMemorySurface
607 {
608 private:
609 ::HDC h_owner_dc, h_mem_dc;
610
611 public:
612 WindowMemorySurface(::HDC);
613 ~WindowMemorySurface();
614
615 DefGetter(const ynothrow, ::HDC, OwnerHandle, h_owner_dc)
616 DefGetter(const ynothrow, ::HDC, NativeHandle, h_mem_dc)
617
619 void
620 Update(ScreenBuffer&, const YSLib::Drawing::Point& = {}) ynothrow;
621
623 void
624 UpdateBounds(ScreenBuffer&, const YSLib::Drawing::Rect&,
625 const YSLib::Drawing::Point& = {}) ynothrow;
626
628 void
629 UpdatePremultiplied(ScreenBuffer&, NativeWindowHandle,
630 YSLib::Drawing::AlphaType = 0xFF, const YSLib::Drawing::Point& = {})
631 ynothrow;
632 };
633
634
635 class YF_API WindowDeviceContextBase
636 {
637 protected:
638 NativeWindowHandle hWindow;
639 ::HDC hDC;
640
642 WindowDeviceContextBase(NativeWindowHandle h_wnd, ::HDC h_dc) ynothrow
643 : hWindow(h_wnd), hDC(h_dc)
644 {}
645 DefDeDtor(WindowDeviceContextBase)
646
647 public:
648 DefGetter(const ynothrow, ::HDC, DeviceContextHandle, hDC)
649 DefGetter(const ynothrow, NativeWindowHandle, WindowHandle, hWindow)
650 };
651
652
657 class YF_API WindowDeviceContext : public WindowDeviceContextBase
658 {
659 protected:
660 WindowDeviceContext(NativeWindowHandle);
661 ~WindowDeviceContext();
662 };
663
664
669 class YF_API WindowRegionDeviceContext : public WindowDeviceContextBase
670 {
671 private:
676 #if YCL_Win64
677 ystdex::aligned_storage_t<72, 8> ps;
678 #else
679 ystdex::aligned_storage_t<64, 4> ps;
680 #endif
681
682 protected:
683 WindowRegionDeviceContext(NativeWindowHandle);
684 ~WindowRegionDeviceContext();
685
686 public:
691 YSLib::Drawing::Rect
692 GetInvalidatedArea() const;
693 };
695
696
702 template<typename _type = WindowDeviceContext>
703 class GSurface : public _type, public WindowMemorySurface
704 {
705 public:
707 GSurface(NativeWindowHandle h_wnd)
708 : _type(h_wnd), WindowMemorySurface(_type::GetDeviceContextHandle())
709 {}
710 };
711
712
717 class YF_API WindowClass final : private YSLib::noncopyable
718 {
719 private:
721 wstring name;
723 unsigned short atom;
724 ::HINSTANCE h_instance;
725
726 public:
731
733
741 YB_NONNULL(1)
742 WindowClass(const wchar_t*, ::WNDPROC = {}, unsigned = 0,
743 ::HBRUSH = ::HBRUSH(4 + 1), ::HINSTANCE = {});
744 WindowClass(const ::WNDCLASSW&);
745 WindowClass(const ::WNDCLASSEXW&);
747
755 WindowClass(wstring_view, unsigned short, ::HINSTANCE);
757 ~WindowClass();
758
760
761 DefGetter(const ynothrow, unsigned short, Atom, atom)
762 DefGetter(const ynothrow, ::HINSTANCE, InstanceHandle, h_instance)
764 DefGetter(const ynothrow, const wstring&, Name, name)
766 };
767
768
770 yconstexpr const wchar_t WindowClassName[]{L"YFramework Window"};
771 # endif
772
773
779 class YF_API HostWindow : private WindowReference, private YSLib::noncopyable
780 {
781 public:
782 # if YCL_HostedUI_XCB
783 const XCB::Atom::NativeType WM_PROTOCOLS, WM_DELETE_WINDOW;
785 # endif
786 # if YCL_HostedUI_XCB || YCL_Win32
787
791 platform_ex::MessageMap MessageMap;
792 # endif
793
807 HostWindow(NativeWindowHandle);
808 DefDelMoveCtor(HostWindow)
809 virtual
810 ~HostWindow();
811
812 # if YCL_Win32
813 using WindowReference::IsMaximized;
816 using WindowReference::IsMinimized;
818 using WindowReference::IsVisible;
819 # endif
820
821 # if YCL_HostedUI_XCB
822
824 using WindowReference::GetBounds;
825 using WindowReference::GetLocation;
826
827 using WindowReference::SetBounds;
829 # elif YCL_Win32
830 using WindowReference::GetBounds;
833
834 using WindowReference::GetClientBounds;
835 using WindowReference::GetClientLocation;
836 using WindowReference::GetClientSize;
838 using WindowReference::GetCursorLocation;
841 using WindowReference::GetLocation;
842 # elif YCL_Android
843 using WindowReference::GetHeight;
845 # endif
846
848 using WindowReference::GetNativeHandle;
849 # if YCL_Win32
850 using WindowReference::GetOpacity;
853 using WindowReference::GetParent;
854 # endif
855 using WindowReference::GetSize;
856 # if YCL_Android
857 using WindowReference::GetWidth;
859 # endif
860
861 # if YCL_Win32
862 using WindowReference::SetBounds;
865 using WindowReference::SetClientBounds;
867 using WindowReference::SetOpacity;
869 using WindowReference::SetText;
870 # endif
871
872 # if YCL_HostedUI_XCB || YCL_Win32
873 using WindowReference::Close;
875
877 using WindowReference::Invalidate;
878
879 # if YCL_Win32
880
887 virtual YSLib::Drawing::Point
888 MapPoint(const YSLib::Drawing::Point&) const;
889 # endif
890
892
893 using WindowReference::Move;
894
895 # if YCL_Win32
896 using WindowReference::MoveClient;
898
899 using WindowReference::Resize;
900
901 using WindowReference::ResizeClient;
902 # endif
903
904 using WindowReference::Show;
906 # if YCL_Win32
907
917 static ::LRESULT __stdcall
918 WindowProcedure(::HWND, unsigned, ::WPARAM, ::LPARAM) ynothrowv;
919 # endif
920 # endif
921 };
922
923
929 class YF_API WindowInputHost
930 {
931 public:
932 HostWindow& Window;
933
934 # if YCL_Win32
935 public:
937 std::atomic<short> RawMouseButton{0};
938
939 private:
945 bool has_hosted_caret;
947 YSLib::recursive_mutex input_mutex{};
949 YSLib::String comp_str{};
951 YSLib::Drawing::Point caret_location{YSLib::Drawing::Point::Invalid};
952 # endif
953 public:
955 WindowInputHost(HostWindow&);
956 ~WindowInputHost();
957
958 #if YCL_Win32
959
963 template<typename _func>
964 auto
965 AccessInputString(_func f) -> decltype(f(comp_str))
966 {
967 using namespace YSLib;
968 lock_guard<recursive_mutex> lck(input_mutex);
969
970 return f(comp_str);
971 }
972
980
982 void
984 UpdateCandidateWindowLocation();
986 void
987 UpdateCandidateWindowLocation(const YSLib::Drawing::Point&);
989
991 void
992 UpdateCandidateWindowLocationUnlocked();
994 #endif
995 };
996
997
998 # if YCL_Win32
999
1004 class YF_API Clipboard : private YSLib::noncopyable, private YSLib::nonmovable
1005 {
1006 private:
1008 class Data;
1009
1010 public:
1012 using FormatType = unsigned;
1013
1014 Clipboard(NativeWindowHandle);
1015 ~Clipboard();
1016
1021 static bool
1022 IsAvailable(FormatType) ynothrow;
1023
1029 static void
1030 CheckAvailable(FormatType);
1031
1033 void
1034 Clear() ynothrow;
1035
1037 static NativeWindowHandle
1038 GetOpenWindow() ynothrow;
1039
1040 bool
1041 Receive(YSLib::string&);
1042 bool
1043 Receive(YSLib::String&);
1044
1045 private:
1047 bool
1048 ReceiveRaw(FormatType, std::function<void(const Data&)>);
1049
1050 public:
1056 void
1057 Send(string_view);
1058 void
1059 Send(u16string_view);
1061
1067 void
1069 Send(YSLib::Drawing::ConstBitmapPtr, const YSLib::Drawing::Size&);
1070 PDefH(void, Send, const YSLib::Drawing::ConstGraphics& g)
1071 ImplRet(Send(g.GetBufferPtr(), g.GetSize()))
1073
1074 private:
1075 void
1076 SendRaw(FormatType, void*);
1077 };
1078
1079
1108 YF_API YB_NONNULL(1) void
1109 ExecuteShellCommand(const wchar_t*, const wchar_t* = {}, bool = {},
1110 const wchar_t* = {}, int = 1, NativeWindowHandle = {});
1111 # endif
1112
1113 } // namespace platform_ex;
1114
1115 #endif
1116
1117 #endif
1118
YSLib::Messaging::MessageID
enum MessageSpace{Null=0x0000, Set=0x0003, Quit=0x0012, Bound=0x0014, Task=0x0016, Paint=0x00AF, Input=0x00FF} MessageID
Definition: ymsgdef.h:54
ystdex::string_view
basic_string_view< char > string_view
Definition: string_view.hpp:415
yconstexpr
#define yconstexpr
指定编译时常量表达式。
Definition: ydef.h:653
ynothrow
#define ynothrow
YSLib 无异常抛出保证：若支持 noexcept 关键字， 指定特定的 noexcept 异常规范。
Definition: ydef.h:740
ystdex::swap
void swap(container_adaptor< _tSeqCon > &x, container_adaptor< _tSeqCon > &y)
Definition: container.hpp:179
YSLib::UI::Hide
YF_API void Hide(IWidget &)
隐藏部件。
Definition: YWidget.cpp:100
platform::KeyCodes::DS::L
Definition: Keys.h:227
NPL::A1::name
ctx const string & name
Definition: NPLA1.h:248
DefDeCopyMoveCtorAssignment
#define DefDeCopyMoveCtorAssignment(_t)
Definition: YBaseMacro.h:201
YSLib::UI::Close
void Close(IWidget &wgt)
Definition: YWidget.cpp:92
YSLib
YSLib 命名空间。
Definition: AndroidHost.h:45
YSLib::UI::Resize
大小调整。
Definition: YWidgetEvent.h:383
YSLib::UI::Styles::Window
窗口背景。
Definition: YStyle.h:311
ynothrowv
#define ynothrowv
YSLib 无异常抛出保证验证：有条件地使用无异常抛出规范。
Definition: ydef.h:760
platform::AlphaType
octet AlphaType
Definition: Video.h:289
YSLib::EventPriority
std::uint8_t EventPriority
事件优先级。
Definition: YEvent.hpp:217
ystdex::nptr::get_ref
pointer & get_ref()
Definition: pointer.hpp:165
ystdex::wstring_view
basic_string_view< wchar_t > wstring_view
Definition: string_view.hpp:418
DefDeCtor
#define DefDeCtor(_t)
简单通用成员函数定义。
Definition: YBaseMacro.h:156
DefGetterMem
#define DefGetterMem(_q, _t, _n, _m)
Definition: YBaseMacro.h:246
YSLib::Text::String
YSLib 标准字符串（使用 UCS-2 作为内部编码）。
Definition: YString.h:46
YSLib::UI::IsVisible
IsVisible
Definition: YWidget.h:101
DefGetter
#define DefGetter(_q, _t, _n,...)
Definition: YBaseMacro.h:240
YSLib::Drawing::ConstBitmapPtr
const Pixel * ConstBitmapPtr
Definition: YGraphics.h:44
YSLib::UI::Invalidate
YF_API void Invalidate(IWidget &, const Rect &)
无效化：使相对部件的指定区域在直接和间接的窗口缓冲区中无效。
Definition: YWidget.cpp:108
platform_ex::Windows::unsigned
YF_API unsigned
Definition: MinGW32.h:630
DefSetterMem
#define DefSetterMem(_q, _t, _n, _m)
Definition: YBaseMacro.h:267
std
Definition: memory.hpp:1100
platform::Deref
yconstfn auto Deref(_type &&p) -> decltype(*p)
断言并解引用非空指针。
Definition: Debug.h:440
ystdex::size
auto size(const _tRange &c) -> decltype(c.size())
类容器访问。
Definition: range.hpp:233
platform::containers::wstring
basic_string< wchar_t > wstring
Definition: Container.h:108
platform_ex
平台扩展命名空间。
Definition: Android.h:45
YSLib::Drawing::GetHeight
tr GetHeight())) inline PDefH(void
按字体高度和行距调整文本区域的底边距。
YSLib::Drawing::Rect
屏幕标准矩形：表示屏幕矩形区域。
Definition: YGDIBase.h:540
YSLib::Drawing::Size
屏幕区域大小。
Definition: YGDIBase.h:293
YSLib::Drawing::BitmapPtr
Pixel * BitmapPtr
Definition: YGraphics.h:42
YSLib::UI::Move
移动：位置调整。
Definition: YWidgetEvent.h:382
Drawing
YSLib::UI::Show
YF_API void Show(IWidget &)
显示部件。
Definition: YWidget.cpp:202
ystdex::nonmovable
Definition: base.h:81
YModules.h
ystdex::u16string_view
basic_string_view< char16_t > u16string_view
Definition: string_view.hpp:416
YSLib::Drawing::GBinaryGroup< SPos >::Invalid
static const GBinaryGroup Invalid
无效（不在屏幕坐标系中）对象。
Definition: YGDIBase.h:58
DefDeDtor
#define DefDeDtor(_t)
Definition: YBaseMacro.h:176
ystdex::noncopyable
不可复制对象：禁止派生类调用默认原型的复制构造函数和复制赋值操作符。
Definition: base.h:41
ystdex::single_thread::mutex
Definition: pseudo_mutex.h:63
YSLib::Drawing::Point
GBinaryGroup< SPos > Point
屏幕二维点（直角坐标表示）。
Definition: YGDIBase.h:278
ystdex::locked_ptr
threading::locked_ptr< _type, _tMutex, _tLock > locked_ptr
独占所有权的锁定指针：默认使用标准库互斥量和锁。
Definition: concurrency.h:62
YF_API
#define YF_API
Definition: Platform.h:56
ystdex::single_thread::recursive_mutex
Definition: pseudo_mutex.h:88
YSLib::IO::f
const string &path const String &path _func f
Definition: YSLib/Service/FileSystem.h:430
YSLib::Drawing::GGraphics
二维图形接口上下文模板。
Definition: YGraphics.h:62
YSLib::Drawing::g
The boundary is out of the const Graphics & g
Definition: YDraw.h:161
DefDelMoveCtor
#define DefDelMoveCtor(_t)
Definition: YBaseMacro.h:168
YSLib::Drawing::ConstGraphics
GGraphics< ConstBitmapPtr > ConstGraphics
Definition: YGraphics.h:160
CHRLib::s
_tDst const _tSrc * s
Definition: CharacterProcessing.h:140
platform::KeyCategory::Lock
表示锁定键。
Definition: Keys.h:115
platform::SDst
std::uint16_t SDst
屏幕坐标距离。
Definition: Video.h:43
YSLib::Drawing::GBinaryGroup< SPos >
YSLib::Drawing::Graphics
GGraphics< BitmapPtr > Graphics
Definition: YGraphics.h:163