33 lines
1.3 KiB
C++
33 lines
1.3 KiB
C++
// fltk_theme.cpp — Fl_Theme(header-only C++ 主题库)→ C API 桥接
|
||
//
|
||
// Fl_Theme 是纯 C++(模板/enum class/Fl::set_boxtype 绘制回调),无法用
|
||
// 纯 C 头文件对接,故写此桥接把主题功能导出为 C 函数,供 Viper extern FFI
|
||
// 调用(includes/fltk/_cfl_theme.vp)。
|
||
//
|
||
// 编译(mingw64):
|
||
// g++ -std=c++17 -O2 -c fltk_theme.cpp \
|
||
// -I ../Fl_Theme -I ../../cfltk/fltk -o ../../cfltk/build/fltk_theme.o
|
||
// ar rcs ../../cfltk/build/libfltk_theme.a ../../cfltk/build/fltk_theme.o
|
||
//
|
||
// 链接需要 libcfltk2.a(cfltk2 库)+ libfltk_images.a(Fl_SVG_Image)。
|
||
#include "Fl_Theme/Fl_Theme.hpp"
|
||
|
||
extern "C" {
|
||
|
||
// 应用深色主题(flat 控件方案 + BLACK 色板 + 深灰背景/白前景)
|
||
void Fl_Theme_apply_dark() { WidgetTheme::apply(ThemeType::Dark); }
|
||
|
||
// 应用 Metro 主题(metro 控件方案 + 蓝灰配色)
|
||
void Fl_Theme_apply_metro() { WidgetTheme::apply(ThemeType::Metro); }
|
||
|
||
// 设置 flat 控件圆角半径(默认 5;在应用主题前调用)
|
||
void Fl_Theme_set_border_radius(int radius) { FLAT_BORDER_RADIUS = radius; }
|
||
|
||
// 仅应用 flat 控件绘制方案(不改颜色),用于非 Dark/Metro 的主题切换
|
||
void Fl_Theme_apply_flat_scheme() { init_flat_theme(); }
|
||
|
||
// 仅应用 metro 控件绘制方案
|
||
void Fl_Theme_apply_metro_scheme() { init_metro_theme(); }
|
||
|
||
}
|