Files
Viper_VRTE/fltk/Fl_Theme/fltk_theme.cpp
T

33 lines
1.3 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// 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(); }
}