POLARISUI / C++ / 0.2.0

禁止商用。所有使用 PolarisUI 的应用必须公开完整源码。许可全文

Windows x64 / C++17 / OpenGL 3.3+ · 不依赖 Java/JNI · 版本与校验值

Java 68 类控件对应表

C++ 0.2.0 的类型均在 polaris::ui,公共入口为 polaris/controls.hpp。编号严格对应 Java polaris.sdk.ui.controls 的 1–68。每类都有原生实例、实际绘制和交互/状态模型;同类菜单及容器按 Java 的语义复用基类。额外的 FileBrowser、GlassSettingsPanel 不计入 68。

范围为 Java 控件目录列出的基础行为,不是 Java API 的二进制兼容或逐帧动画复制。C++ 文本光标/选区使用 UTF-8 字节偏移并停在码点边界;菜单过滤、字符串排序的忽略大小写目前仅覆盖 ASCII,不是完整 Unicode case folding。复杂文字 shaping、软换行、富文本、多选表格、图片加载、异步树数据源不在本版范围。

#C++ 类实际行为与边界
1Button鼠标范围内释放、Enter/Space、禁用、on_click;外部释放取消
2LabelUTF-8 静态文字、字号/字重/颜色;不自动富文本排版
3CheckBox布尔切换、键盘、on_change;无三态
4RadioButton选中不再次取消;互斥使用 RadioGroup
5Switch开关状态及鼠标/键盘事件
6TextField光标、选区、拖选、码点删除、Ctrl 词导航、剪贴板、100 步撤销/重做、提交
7TextArea硬换行、多行选区、方向键和滚动;没有自动软换行
8PasswordField码点掩码、禁止复制/剪切;不承诺字符串内存安全擦除
9SearchField文本编辑、placeholder、清空按钮、提交回调
10Slider拖动、捕获、范围/步长、方向键和 Home/End
11ProgressBar确定进度 0–1、填充和百分比;不执行任务
12ScrollBar水平/垂直、page_ratio、拖动和键盘;宿主绑定目标模型
13ComboSelect只读值、菜单选择、selected_index、键盘
14ComboBox自由文本、预设选项、箭头显示全部、过滤建议
15ListBox可见行绘制、单选/清除选中、滚轮、键盘、双击回调
16Spinner− 数值 +、默认无整体底板、中心编辑、范围/步长/键盘;不是加载动画
17Tabs标签头、左右键、选中 TabPage;隐藏页不参与焦点
18MenuBar横向菜单按钮容器、裁切;复用 Panel
19DropDownMenu按钮打开 PopupMenu;业务菜单不是数据选择框
20RightClickMenuWidget.context_menu 右键入口的语义类型;复用 PopupMenu
21ToolBar横向按钮/图标容器;命令由回调实现
22StatusBar左右两侧状态文字,不抢焦点
23Callout标题/内容的持久提示,不抢焦点
24Tooltip独立提示实例;Widget.tooltip 提供延迟悬停显示
25NotificationScene 通知队列、到时消失、非阻塞
26Dialog可拖动标题、关闭、子控件、非模态显示
27Modal遮罩、底层鼠标隔离、限定 Tab、关闭恢复焦点
28MessageBox确定/取消按钮与 answer(bool),Enter/Escape
29Panel绝对/行/列/网格布局、玻璃背景、子控件裁切
30GroupBox标题和内容区的 Panel
31Accordion展开/折叠、恢复高度、隐藏内容退出命中和焦点
32SplitPane两个区域、分割条拖动、0–1 比例;不是停靠系统
33ScrollPane内容高度、滚轮/滚动条、裁切、焦点自动显露
34TreeView层级展开、选择、方向键、可见行绘制;最大深度 128
35Table字符串单元格、单选、表头升降序、双击/Enter 打开编辑模态;全数字列数值排序,否则 ASCII 无视大小写排序
36GridView文本卡片网格、单选、滚动、按列键盘导航;不加载图片
37PropertyGridbool/double/string 编辑器、值模型、on_property_change
38Paginator页数/当前页、前后按钮和键盘;业务分页由宿主查询
39Sidebar侧栏列表单选/滚动/导航回调;复用 ListBox
40NavBar互斥导航按钮;复用 ButtonGroup
41Breadcrumb路径文字、分段点击及 on_navigate;不直接访问文件系统
42ColorPickerHSV 平面、Hue/Alpha 滑块、#RRGGBB/#AARRGGBB 输入及验证
43DatePicker公历有效性/闰年、月切换、星期一开头的 6×7 日历区域、方向键
44TimePicker时/分/秒三个等宽 Spinner;24 小时制,不处理时区
45FilePicker原生只读浏览弹层、驱动器/路径/上级/双击目录、文件选择回调
46DirectoryPicker目录过滤、可选择当前目录或选中子目录;不创建/删除文件
47IconButton小型按钮、图标文字及激活事件
48ToggleButton按钮选中状态、键盘切换和回调
49RadioGroup真正 RadioButton 子控件的互斥组
50ButtonGroupToggleButton 子控件互斥、选中索引
51ListItem独立可选列表行,文字和选中背景
52TreeNode独立行实例、子节点、展开/选择、循环检测
53TableCell独立可编辑 TextField 单元格;Table 内按数据行绘制
54TabPage有标题的非玻璃容器;可放在 Tabs 或独立展示
55Card标题、副标题、内容区布局及裁切
56Avatar前两个码点的圆形文字头像;不是照片控件
57Badge胶囊状态文字
58Separator水平/垂直分隔线
59SpinnerIndicator旋转圆弧加载指示,独立于数值微调器
60RingProgress确定进度圆环和百分比
61DragBar移动绑定 Widget 或父容器;不拖动 OS 窗口
62RangeSlider双端点、不能交叉、Space 选择端点、拖动和键盘
63NumberField有限数值、范围/步长、Enter/失焦提交、无效文本回滚
64KeyBindingField记录键值和 Ctrl/Shift/Alt;不是 OS 全局快捷键注册
65AutoComplete过滤建议、上下键、Enter 接受;保持文本框焦点
66PopupMenu禁用项、分隔线、勾选、子菜单、键盘/滚动、外部点击消耗
67ContextMenu上下文菜单语义类;复用 PopupMenu
68CommandPalette命令注册/过滤/方向键/执行、模态显示、Scene 注册后 Ctrl+K

演示与证据

polaris_demo.exe 中有 9 个控件分类和独立的材质配置页。大型类别可以滚动;菜单与弹层页的“打开”按钮创建真正的 Scene 弹层,而不只是画一个外观。只读文件选择器从当前工作目录开始,异步工作线程不访问 UI;最多扫描 4096 项。系统/网络文件服务本身的延迟不受库控制。

tests/widgets_test.cpp 包含全部 68 类的构造、类型、实际绘制分派、禁用命中,以及文本、数值、数据、模态、菜单、日期、颜色、文件和配置的状态/错误分支测试。renders/gallery/gallery-report.json 记录真实 GPU 渲染类名集合。它们证明基础覆盖,不代表每类所有边缘交互或所有 GPU/编译器已通过测试。