Lightweight Direct2D GUI Library/Framework in C++
中文说明文档
Current Version : Alpha-Stage
Friendly with High-DPI
- No GDI/GDI+, LongUI use Direct2D as rendering api, could zoom a container into any size
Friendly with Game
- LongUI was designed that could be embedded in game (that use
D2D1
,D3D11
evenD3D12
) - also, you can use it in the standalone way
XML Layout
- Easy way to create a window by xml
Light Weight
- LongUI was designed to be a static-link framework.
- The
helloworld
in only 100+kb(/MD in MSC). - Compiled in 5 sec.(through
LongUI All In One
).
Known Issues
Document
DemosShow
For this repo, you need:
- OS:
- Windows 10 or later
- Tool-chain/Environment A: MSC
- Visual Stuidio 2015 - Express for Desktop/Community or higher
- Windows SDK(10.0.10586.0)
- Tool-chain/Environment B(would support in the future): GCC/Clang
- Rakefile(ruby)
- MinGW-W64
Win10 supported only now
LongUI source files could be grouped in one file to reduce time for compiling file in _LongUIAllInOne.cpp yeah, you can compile this manually :)
- class :
- [C/I/?] UI ClassName, e.g.
CUIManager
,IUIInterface
- except: class under LongUI::XXX(Component/Helper....)
- [C/I/?] UI ClassName, e.g.
- member variable:
- public: member_variable, e.g.
parent
,user_data
- private/protected: m_typeMemberVariable, e.g,
m_pWindow
- public: member_variable, e.g.
- method/function:
- public: ClassMethod(), e.g.
GetWindow()
,Update()
- private/protected: class_method(), e.g.
refresh_this()
- except: match STL-Style method:
begin()
,end()
,insert()
, but public
- public: ClassMethod(), e.g.
- enum: see it
enum class PointType : uint16_t {
Type_None, // None
Type_Arrow1, // Arrow1
Type_Arrow2, // Arrow2
Type_Thumb, // Thumb
Type_Shaft, // Shaft
};
- auto variable:
- DEPENDS ON MY MOOD, e.g. int
old_x
,oldX
,uOldX
- DEPENDS ON MY MOOD, e.g. int
- 3rdparty/* , 3rdparty library, like dlmalloc
- Demos/* , demos
- more detail in DemosShow.md - Helper/* , helper projects
1. ConsoleHelper -- helper for logging for debugging 2. ScriptInterfaceGenerator -- helper for binding script interface - LongUI -- core project, designed to be a static-link framework
- TestUI -- my test project, just for me for debugging
- LongUI under MIT License
- pugixml parser - version 1.5 (MIT License)
- dlmalloc-2.8.6 (public domain)
Scintilla-3.5.3 (License for Scintilla)- More detail, see License.txt