https://github.com/arnozhang/strawframework
Straw-Framework is a C++ GUI library.
https://github.com/arnozhang/strawframework
cplusplus gui gui-framework
Last synced: 3 months ago
JSON representation
Straw-Framework is a C++ GUI library.
- Host: GitHub
- URL: https://github.com/arnozhang/strawframework
- Owner: arnozhang
- License: apache-2.0
- Created: 2016-10-12T06:38:06.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2023-04-05T08:48:43.000Z (about 2 years ago)
- Last Synced: 2025-01-18T09:38:40.311Z (5 months ago)
- Topics: cplusplus, gui, gui-framework
- Language: C++
- Homepage:
- Size: 1.85 MB
- Stars: 2
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# StrawFramework 简介 & 目标
### 0、目前阶段
`开发实验` 阶段,等接口 & 功能基本稳定后,再将代码上传到 Github:
- 接口未固定 —— 后续重构、修改可能性大;
- 部分功能未实现 —— 如 EditText、ScrollView 等功能性组件;
- Bug 多;缓慢持续进行中。。。
### 1、简介
`StrawFramework` 是一款基于 `C++` 的 `GUI` 开发框架。此前一直是开发 PC 端软件,但近年来由于我受 `Android` 开发的影响比较深,我决定把 Android 中的一些开发思路和经验借鉴过来,用 C++ 开发一款类似的 GUI 开发框架。`UI Layout`、`I18N`、`Drawable`、`Resources Manager` 等等模式和思路借鉴复制,另外针对 PC 端的开发模式,有一定其他不同的处理。
### 2、目标
- 桌面跨平台 C++ GUI 库——目前只开发 Windows PC 端,但接口有预留;
- 借鉴 Android 开发中好的一些设计思路和模式;
- 采用 XML 的方式进行界面排布、Drawable 等等资源编写;
- 设计插件模式,让其他插件可以用 DLL / so 的方式接入进来;### 3、实现 / TODO 列表
|功能 / 特性|描述|完成度|
|---|---|---|
|Base Component|Application/ MessageLoop / Log / Timer / Data ...|高|
|DPI-Compatible|px / dp / sp ...|高|
|Window / Dialog|CaptionWindow / Dialog / MessageBox ...|中|
|Built-in Views|View / EditText / LineraLayout / ScrollView ...|中|
|Theme|Style / Theme ...|中|
|Layout|LinearLayout / AbsoluteLayout / FrameLayout ...|中|
|Drawable|BitmapDrawable / ShapeDrawable / ColorDrawable
GifDrawable / AnimationDrawable / StateListDrawable
NinePatchDrawable ...|高|
|I18N||高|
|Resources Manager|Resource packer & read|中|
|Menu||中|
|Message / Event||低|
|Customized View -> XML||高|
|Extension / Plugin||中|
|UI Editor||未开始|
|UI Spy||未开始|### 4、thirdparty library
- [skia](https://github.com/google/skia)
- [tinyxml2](https://github.com/leethomason/tinyxml2)### 5、一个简单的布局
- 长度单位默认大小单位为: dp;
- 和 Android 类似,可以使用 `@dimen` / `@string` / `@drawable` / `@layout` 来索引资源;
- 支持 Layout-XML `include`;
- 插件或者宿主 App 均可使用 `@platform:drawable/xxx` 类似的做法访问 StrawFramework 库中的资源;
- 插件可使用 `@app:drawable/xxx` 访问宿主 App 库中的资源;
- 使用类似 `style="@style/login_btn"` 来为 View 指定样式/主题;```xml
```
### 6、部分截图

