feat(fltk): 新增 FLTK 1.4 纯 extern FFI 绑定库(对接 cfltk C API)

- 生成 24 个 _cfl*.vp(10327 条 extern 声明)+ _types/_enums 常量

- __init__.vp 提供 Fl/Fl_Widget/Fl_Window/Fl_Button/Fl_Input/Fl_Text_Buffer/Fl_Group/Fl_Menu_Bar/Fl_Native_File_Chooser 等包装类

- 回调(Fl_Callback)按 bytes 不透明处理,菜单回调位传 t.CPtr(0)

- 新增 examples/hello.vp、dialog.vp 冒烟样例,26 个 .vp 全部通过 vast parse

- 内嵌 cfltk(C API 封装)与 FLTK 1.4 完整源码,构建目标 cfltk2
This commit is contained in:
TermiNexus committed 2026-09-01 19:53:54 +08:00
1 parent 2b5286ea11
commit 6892183cc9
1611 files changed
+556215

No files matched your search

+818
View File
@@ -0,0 +1,818 @@
# ============================================================
# fltk — Viper 的 FLTK GUI 绑定包(对接 cfltk C API)
#
# 用户用法:
# import fltk
# win = fltk.Fl_Window(400, 300, "Hello")
# box = fltk.Fl_Box(10, 10, 380, 40, "Hello, World!")
# btn = fltk.Fl_Button(150, 100, 100, 30, "Click")
# win.end()
# win.show()
# fltk.Fl.run()
#
# 说明:
# * 本包只做 extern FFI(fltk._cfl* 模块)+ 少量 Pythonic 包装类;
# 所有 FLTK 对象都是不透明指针,方法即 cfltk 的 Fl_<类>_<动作>。
# * 完整 C API 通过 `from fltk._cfl import *` 等直接可用。
# * 回调(Fl_Callback 等)在 FFI 中按 bytes 不透明处理:Viper 端
# 暂无法传函数指针,事件驱动请用 Fl.check()/Fl.event*() 轮询。
# ============================================================
import t, c
from fltk._types import *
from fltk._enums import *
from fltk._cfl import *
from fltk._cfl_widget import *
from fltk._cfl_box import *
from fltk._cfl_button import *
from fltk._cfl_window import *
from fltk._cfl_input import *
from fltk._cfl_text import *
from fltk._cfl_group import *
from fltk._cfl_valuator import *
from fltk._cfl_menu import *
from fltk._cfl_dialog import *
from fltk._cfl_image import *
from fltk._cfl_draw import *
from fltk._cfl_misc import *
from fltk._cfl_browser import *
from fltk._cfl_table import *
from fltk._cfl_tree import *
from fltk._cfl_term import *
from fltk._cfl_prefs import *
from fltk._cfl_printer import *
from fltk._cfl_surface import *
from fltk._cfl_utils import *
from fltk._cfl_lock import *
# ============================================================
# Fl — FLTK 全局静态类(事件循环 / 事件 / 颜色)
# ============================================================
@t.NoVTable
class Fl:
"""FLTK 全局函数集合(静态方法)"""
@staticmethod
def run() -> int:
return Fl_run()
@staticmethod
def check() -> int:
return Fl_check()
@staticmethod
def wait() -> int:
return Fl_wait()
@staticmethod
def wait_for(timeout: t.CDouble) -> t.CDouble:
return Fl_wait_for(timeout)
@staticmethod
def flush():
Fl_flush()
@staticmethod
def redraw():
Fl_redraw()
@staticmethod
def lock() -> int:
return Fl_lock()
@staticmethod
def unlock():
Fl_unlock()
@staticmethod
def event() -> int:
return Fl_event()
@staticmethod
def event_x() -> int:
return Fl_event_x()
@staticmethod
def event_y() -> int:
return Fl_event_y()
@staticmethod
def event_button() -> int:
return Fl_event_button()
@staticmethod
def event_key() -> int:
return Fl_event_key()
@staticmethod
def event_text() -> str:
return Fl_event_text()
@staticmethod
def event_length() -> int:
return Fl_event_length()
@staticmethod
def event_state() -> int:
return Fl_event_state()
@staticmethod
def event_inside(x: int, y: int, w: int, h: int) -> int:
return Fl_event_inside(x, y, w, h)
@staticmethod
def set_scheme(scheme: str) -> int:
return Fl_set_scheme(scheme)
@staticmethod
def visible_focus() -> int:
return Fl_visible_focus()
@staticmethod
def set_visible_focus(v: int):
Fl_set_visible_focus(v)
@staticmethod
def get_rgb_color(r: t.CUInt8T, g: t.CUInt8T, b: t.CUInt8T) -> t.CUInt32T:
return Fl_get_rgb_color(r, g, b)
@staticmethod
def set_color(c: t.CUInt32T, r: t.CUInt8T, g: t.CUInt8T, b: t.CUInt8T):
Fl_set_color(c, r, g, b)
@staticmethod
def first_window() -> Fl_WindowPtr:
return Fl_first_window()
@staticmethod
def next_window(win: Fl_WindowPtr) -> Fl_WindowPtr:
return Fl_next_window(win)
@staticmethod
def set_font_size(size: int):
Fl_set_font_size(size)
@staticmethod
def font_size() -> int:
return Fl_font_size()
@staticmethod
def set_scrollbar_size(sz: int):
Fl_set_scrollbar_size(sz)
@staticmethod
def scrollbar_size() -> int:
return Fl_scrollbar_size()
@staticmethod
def scheme() -> int:
return Fl_scheme()
# 注意: 回调(Fl_Callback 等)Viper 端无法提供函数指针,add_timeout 等
# 需要真实回调的接口请直接使用 extern FFI 并配合 C 层钩子(_cfl.vp)。
# ============================================================
# Fl_Widget — 控件基类包装
# ============================================================
@t.NoVTable
class Fl_Widget:
"""FLTK 控件基类(不透明指针包装)"""
_ptr: Fl_WidgetPtr
def __init__(self, x: int, y: int, w: int, h: int, label: str = ""):
self._ptr = Fl_Widget_new(x, y, w, h, label)
def x(self) -> int:
return Fl_Widget_x(self._ptr)
def y(self) -> int:
return Fl_Widget_y(self._ptr)
def width(self) -> int:
return Fl_Widget_width(self._ptr)
def height(self) -> int:
return Fl_Widget_height(self._ptr)
def label(self) -> str:
return Fl_Widget_label(self._ptr)
def set_label(self, label: str):
Fl_Widget_set_label(self._ptr, label)
def show(self):
Fl_Widget_show(self._ptr)
def hide(self):
Fl_Widget_hide(self._ptr)
def activate(self):
Fl_Widget_activate(self._ptr)
def deactivate(self):
Fl_Widget_deactivate(self._ptr)
def redraw(self):
Fl_Widget_redraw(self._ptr)
def resize(self, x: int, y: int, w: int, h: int):
Fl_Widget_resize(self._ptr, x, y, w, h)
def set_color(self, color: t.CUInt32T):
Fl_Widget_set_color(self._ptr, color)
def color(self) -> t.CUInt32T:
return Fl_Widget_color(self._ptr)
def set_box(self, box: int):
Fl_Widget_set_box(self._ptr, box)
def box(self) -> int:
return Fl_Widget_box(self._ptr)
def set_align(self, align: int):
Fl_Widget_set_align(self._ptr, align)
def align(self) -> int:
return Fl_Widget_align(self._ptr)
def set_tooltip(self, tip: str):
Fl_Widget_set_tooltip(self._ptr, tip)
def tooltip(self) -> str:
return Fl_Widget_tooltip(self._ptr)
def parent(self) -> Fl_WidgetPtr:
return Fl_Widget_parent(self._ptr)
def window(self) -> Fl_WindowPtr:
return Fl_Widget_window(self._ptr)
def visible(self) -> int:
return Fl_Widget_visible(self._ptr)
def active(self) -> int:
return Fl_Widget_active(self._ptr)
def delete(self):
Fl_Widget_delete(self._ptr)
# ============================================================
# Fl_Window — 窗口包装
# ============================================================
@t.NoVTable
class Fl_Window(Fl_Widget):
"""FLTK 窗口"""
def __init__(self, w: int, h: int, title: str = ""):
self._ptr = Fl_Window_new(0, 0, w, h, title)
def begin(self):
Fl_Window_begin(self._ptr)
def end(self):
Fl_Window_end(self._ptr)
def set_modal(self, flag: t.CUInt32T):
Fl_Window_make_modal(self._ptr, flag)
def fullscreen(self, flag: t.CUInt32T):
Fl_Window_fullscreen(self._ptr, flag)
def make_current(self):
Fl_Window_make_current(self._ptr)
def set_border(self, flag: int):
Fl_Window_set_border(self._ptr, flag)
def border(self) -> int:
return Fl_Window_border(self._ptr)
def iconize(self):
Fl_Window_iconize(self._ptr)
def free_position(self):
Fl_Window_free_position(self._ptr)
def shown(self) -> int:
return Fl_Window_shown(self._ptr)
def set_xclass(self, xc: str):
Fl_Window_set_xclass(self._ptr, xc)
def x_root(self) -> int:
return Fl_Window_x_root(self._ptr)
def y_root(self) -> int:
return Fl_Window_y_root(self._ptr)
def size_range(self, minw: int, minh: int, maxw: int, maxh: int):
Fl_Window_size_range(self._ptr, minw, minh, maxw, maxh)
def set_cursor(self, cursor: int):
Fl_Window_set_cursor(self._ptr, cursor)
def resize(self, x: int, y: int, w: int, h: int):
Fl_Window_resize(self._ptr, x, y, w, h)
# ============================================================
# Fl_Box — 静态文本/装饰框
# ============================================================
@t.NoVTable
class Fl_Box(Fl_Widget):
"""FLTK 文本框/装饰框"""
def __init__(self, x: int, y: int, w: int, h: int, label: str = ""):
self._ptr = Fl_Box_new(x, y, w, h, label)
# ============================================================
# Fl_Button — 按钮包装
# ============================================================
@t.NoVTable
class Fl_Button(Fl_Widget):
"""FLTK 按钮"""
def __init__(self, x: int, y: int, w: int, h: int, label: str = ""):
self._ptr = Fl_Button_new(x, y, w, h, label)
def value(self) -> int:
return Fl_Button_value(self._ptr)
def set_value(self, v: int):
Fl_Button_set_value(self._ptr, v)
def set(self):
Fl_Button_set_value(self._ptr, 1)
def clear(self) -> int:
return Fl_Button_clear(self._ptr)
def set_shortcut(self, s: int):
Fl_Button_set_shortcut(self._ptr, s)
def shortcut(self) -> int:
return Fl_Button_shortcut(self._ptr)
def set_down_box(self, box: int):
Fl_Button_set_down_box(self._ptr, box)
def down_box(self) -> int:
return Fl_Button_down_box(self._ptr)
@t.NoVTable
class Fl_Check_Button(Fl_Button):
"""FLTK 复选框"""
def __init__(self, x: int, y: int, w: int, h: int, label: str = ""):
self._ptr = Fl_Check_Button_new(x, y, w, h, label)
def is_checked(self) -> int:
return Fl_Check_Button_is_checked(self._ptr)
def set_checked(self, checked: int):
Fl_Check_Button_set_checked(self._ptr, checked)
@t.NoVTable
class Fl_Radio_Button(Fl_Button):
"""FLTK 单选按钮"""
def __init__(self, x: int, y: int, w: int, h: int, label: str = ""):
self._ptr = Fl_Radio_Button_new(x, y, w, h, label)
def is_toggled(self) -> int:
return Fl_Radio_Button_is_toggled(self._ptr)
def toggle(self, v: int):
Fl_Radio_Button_toggle(self._ptr, v)
@t.NoVTable
class Fl_Repeat_Button(Fl_Button):
"""FLTK 重复触发按钮"""
def __init__(self, x: int, y: int, w: int, h: int, label: str = ""):
self._ptr = Fl_Repeat_Button_new(x, y, w, h, label)
@t.NoVTable
class Fl_Return_Button(Fl_Button):
"""FLTK 回车按钮"""
def __init__(self, x: int, y: int, w: int, h: int, label: str = ""):
self._ptr = Fl_Return_Button_new(x, y, w, h, label)
@t.NoVTable
class Fl_Light_Button(Fl_Button):
"""FLTK 指示灯按钮"""
def __init__(self, x: int, y: int, w: int, h: int, label: str = ""):
self._ptr = Fl_Light_Button_new(x, y, w, h, label)
def is_on(self) -> int:
return Fl_Light_Button_is_on(self._ptr)
def turn_on(self, v: int):
Fl_Light_Button_turn_on(self._ptr, v)
# ============================================================
# Fl_Input / Fl_Output — 文本输入输出
# ============================================================
@t.NoVTable
class Fl_Input(Fl_Widget):
"""FLTK 单行文本输入框"""
def __init__(self, x: int, y: int, w: int, h: int, label: str = ""):
self._ptr = Fl_Input_new(x, y, w, h, label)
def value(self) -> str:
return Fl_Input_value(self._ptr)
def set_value(self, text: str):
Fl_Input_set_value(self._ptr, text)
def set_maximum_size(self, m: int):
Fl_Input_set_maximum_size(self._ptr, m)
def maximum_size(self) -> int:
return Fl_Input_maximum_size(self._ptr)
def set_readonly(self, v: int):
Fl_Input_set_readonly(self._ptr, v)
def readonly(self) -> int:
return Fl_Input_readonly(self._ptr)
@t.NoVTable
class Fl_Output(Fl_Widget):
"""FLTK 单行文本输出框"""
def __init__(self, x: int, y: int, w: int, h: int, label: str = ""):
self._ptr = Fl_Output_new(x, y, w, h, label)
def value(self) -> str:
return Fl_Output_value(self._ptr)
def set_value(self, text: str) -> int:
return Fl_Output_set_value(self._ptr, text)
@t.NoVTable
class Fl_Int_Input(Fl_Input):
def __init__(self, x: int, y: int, w: int, h: int, label: str = ""):
self._ptr = Fl_Int_Input_new(x, y, w, h, label)
@t.NoVTable
class Fl_Float_Input(Fl_Input):
def __init__(self, x: int, y: int, w: int, h: int, label: str = ""):
self._ptr = Fl_Float_Input_new(x, y, w, h, label)
# ============================================================
# Fl_Text_Buffer / Fl_Text_Display — 多行文本
# ============================================================
@t.NoVTable
class Fl_Text_Buffer:
"""FLTK 文本缓冲"""
_ptr: Fl_Text_BufferPtr
def __init__(self):
self._ptr = Fl_Text_Buffer_new()
def text(self) -> str:
return Fl_Text_Buffer_text(self._ptr)
def set_text(self, text: str):
Fl_Text_Buffer_set_text(self._ptr, text)
def append(self, text: str):
Fl_Text_Buffer_append(self._ptr, text)
def length(self) -> int:
return Fl_Text_Buffer_length(self._ptr)
def insert(self, pos: int, text: str):
Fl_Text_Buffer_insert(self._ptr, pos, text)
def remove(self, start: int, end: int):
Fl_Text_Buffer_remove(self._ptr, start, end)
def save_file(self, path: str) -> int:
return Fl_Text_Buffer_save_file(self._ptr, path)
def load_file(self, path: str) -> int:
return Fl_Text_Buffer_load_file(self._ptr, path)
def free(self):
Fl_Text_Buffer_delete(self._ptr)
@t.NoVTable
class Fl_Text_Display(Fl_Widget):
"""FLTK 多行文本显示"""
def __init__(self, x: int, y: int, w: int, h: int, label: str = ""):
self._ptr = Fl_Text_Display_new(x, y, w, h, label)
def set_buffer(self, buf: Fl_Text_BufferPtr):
Fl_Text_Display_set_buffer(self._ptr, buf)
def set_text_font(self, font: int):
Fl_Text_Display_set_text_font(self._ptr, font)
def set_text_size(self, size: int):
Fl_Text_Display_set_text_size(self._ptr, size)
def set_text_color(self, color: t.CUInt32T):
Fl_Text_Display_set_text_color(self._ptr, color)
def set_scrollbar_size(self, size: int):
Fl_Text_Display_set_scrollbar_size(self._ptr, size)
# ============================================================
# Fl_Group — 容器包装
# ============================================================
@t.NoVTable
class Fl_Group(Fl_Widget):
"""FLTK 控件组"""
def __init__(self, x: int, y: int, w: int, h: int, label: str = ""):
self._ptr = Fl_Group_new(x, y, w, h, label)
def begin(self):
Fl_Group_begin(self._ptr)
def end(self):
Fl_Group_end(self._ptr)
def add(self, wid: Fl_WidgetPtr):
Fl_Group_add(self._ptr, wid)
def remove(self, wid: Fl_WidgetPtr):
Fl_Group_remove(self._ptr, wid)
def clear(self):
Fl_Group_clear(self._ptr)
def children(self) -> int:
return Fl_Group_children(self._ptr)
def child(self, index: int) -> Fl_WidgetPtr:
return Fl_Group_child(self._ptr, index)
def set_resizable(self, wid: Fl_WidgetPtr):
Fl_Group_resizable(self._ptr, wid)
@t.NoVTable
class Fl_Scroll(Fl_Group):
"""FLTK 滚动容器"""
def __init__(self, x: int, y: int, w: int, h: int, label: str = ""):
self._ptr = Fl_Scroll_new(x, y, w, h, label)
def set_scrollbar_size(self, size: int):
Fl_Scroll_set_scrollbar_size(self._ptr, size)
def scrollbar_size(self) -> int:
return Fl_Scroll_scrollbar_size(self._ptr)
def scroll_to(self, x: int, y: int):
Fl_Scroll_scroll_to(self._ptr, x, y)
def xposition(self) -> int:
return Fl_Scroll_xposition(self._ptr)
def yposition(self) -> int:
return Fl_Scroll_yposition(self._ptr)
@t.NoVTable
class Fl_Tabs(Fl_Group):
"""FLTK 选项卡容器"""
def __init__(self, x: int, y: int, w: int, h: int, label: str = ""):
self._ptr = Fl_Tabs_new(x, y, w, h, label)
def value(self) -> Fl_WidgetPtr:
return Fl_Tabs_value(self._ptr)
def set_value(self, wid: Fl_WidgetPtr):
Fl_Tabs_set_value(self._ptr, wid)
# ============================================================
# Fl_Slider / Fl_Value_Input / Fl_Value_Output — 数值控件
# ============================================================
@t.NoVTable
class Fl_Slider(Fl_Widget):
"""FLTK 滑动条"""
def __init__(self, x: int, y: int, w: int, h: int, label: str = ""):
self._ptr = Fl_Slider_new(x, y, w, h, label)
def value(self) -> t.CDouble:
return Fl_Slider_value(self._ptr)
def set_value(self, v: t.CDouble):
Fl_Slider_set_value(self._ptr, v)
def minimum(self) -> t.CDouble:
return Fl_Slider_minimum(self._ptr)
def set_minimum(self, v: t.CDouble):
Fl_Slider_set_minimum(self._ptr, v)
def maximum(self) -> t.CDouble:
return Fl_Slider_maximum(self._ptr)
def set_maximum(self, v: t.CDouble):
Fl_Slider_set_maximum(self._ptr, v)
def step(self) -> t.CDouble:
return Fl_Slider_step(self._ptr)
def set_step(self, v: t.CDouble):
Fl_Slider_set_step(self._ptr, v)
def set_bounds(self, a: t.CDouble, b: t.CDouble):
Fl_Slider_set_bounds(self._ptr, a, b)
@t.NoVTable
class Fl_Value_Input(Fl_Widget):
"""FLTK 数值输入框"""
def __init__(self, x: int, y: int, w: int, h: int, label: str = ""):
self._ptr = Fl_Value_Input_new(x, y, w, h, label)
def value(self) -> t.CDouble:
return Fl_Value_Input_value(self._ptr)
def set_value(self, v: t.CDouble):
Fl_Value_Input_set_value(self._ptr, v)
def set_bounds(self, a: t.CDouble, b: t.CDouble):
Fl_Value_Input_set_bounds(self._ptr, a, b)
@t.NoVTable
class Fl_Value_Output(Fl_Widget):
"""FLTK 数值输出框"""
def __init__(self, x: int, y: int, w: int, h: int, label: str = ""):
self._ptr = Fl_Value_Output_new(x, y, w, h, label)
def value(self) -> t.CDouble:
return Fl_Value_Output_value(self._ptr)
def set_value(self, v: t.CDouble):
Fl_Value_Output_set_value(self._ptr, v)
@t.NoVTable
class Fl_Progress(Fl_Widget):
"""FLTK 进度条"""
def __init__(self, x: int, y: int, w: int, h: int, label: str = ""):
self._ptr = Fl_Progress_new(x, y, w, h, label)
def value(self) -> t.CDouble:
return Fl_Progress_value(self._ptr)
def set_value(self, v: t.CDouble):
Fl_Progress_set_value(self._ptr, v)
def set_minimum(self, v: t.CDouble):
Fl_Progress_set_minimum(self._ptr, v)
def set_maximum(self, v: t.CDouble):
Fl_Progress_set_maximum(self._ptr, v)
# ============================================================
# Fl_Choice — 下拉选择
# ============================================================
@t.NoVTable
class Fl_Choice(Fl_Widget):
"""FLTK 下拉选择框"""
def __init__(self, x: int, y: int, w: int, h: int, label: str = ""):
self._ptr = Fl_Choice_new(x, y, w, h, label)
def add(self, text: str):
Fl_Choice_add_choice(self._ptr, text)
def value(self) -> int:
return Fl_Choice_value(self._ptr)
def set_value(self, v: int):
Fl_Choice_set_value(self._ptr, v)
def text(self, idx: int) -> str:
return Fl_Choice_text(self._ptr, idx)
# ============================================================
# Fl_Menu_Bar — 菜单栏
# ============================================================
@t.NoVTable
class Fl_Menu_Bar(Fl_Widget):
"""FLTK 菜单栏
add 走 cfltk 完整 6 参签名(name/shortcut/回调/数据/flags),
Viper 端回调按 bytes 无法传函数指针,回调/数据位固定传 t.CPtr(0);
简单下拉建议直接用 add_choice。"""
def __init__(self, x: int, y: int, w: int, h: int, label: str = ""):
self._ptr = Fl_Menu_Bar_new(x, y, w, h, label)
def add(self, path: str, shortcut: int, flags: int):
Fl_Menu_Bar_add(self._ptr, path, shortcut, t.CPtr(0), t.CPtr(0), flags)
def add_choice(self, text: str) -> int:
return Fl_Menu_Bar_add_choice(self._ptr, text)
# ============================================================
# Fl_Native_File_Chooser — 系统文件对话框
# ============================================================
@t.NoVTable
class Fl_Native_File_Chooser:
"""FLTK 原生文件选择对话框
构造需传对话框类型常量(如 Fl_Native_File_Chooser_BROWSE_FILE /
BROWSE_DIRECTORY / BROWSE_MULTI_FILE / BROWSE_MULTI_DIRECTORY /
BROWSE_SAVE_FILE,见 _enums.vp)。"""
_ptr: Fl_Native_File_ChooserPtr
def __init__(self, type_: int):
self._ptr = Fl_Native_File_Chooser_new(type_)
def set_title(self, title: str):
Fl_Native_File_Chooser_set_title(self._ptr, title)
def set_filter(self, filter_: str):
Fl_Native_File_Chooser_set_filter(self._ptr, filter_)
def filter(self) -> str:
return Fl_Native_File_Chooser_filter(self._ptr)
def set_directory(self, dir_: str):
Fl_Native_File_Chooser_set_directory(self._ptr, dir_)
def directory(self) -> str:
return Fl_Native_File_Chooser_directory(self._ptr)
def set_preset_file(self, path: str):
Fl_Native_File_Chooser_set_preset_file(self._ptr, path)
def set_option(self, opt: int):
Fl_Native_File_Chooser_set_option(self._ptr, opt)
def set_type(self, type_: int):
Fl_Native_File_Chooser_set_type(self._ptr, type_)
def show(self) -> int:
return Fl_Native_File_Chooser_show(self._ptr)
def count(self) -> int:
return Fl_Native_File_Chooser_count(self._ptr)
def filename(self) -> str:
return Fl_Native_File_Chooser_filename(self._ptr)
def filenames(self, index: int) -> str:
return Fl_Native_File_Chooser_filenames(self._ptr, index)
def filter_value(self) -> int:
return Fl_Native_File_Chooser_filter_value(self._ptr)
def set_filter_value(self, v: int):
Fl_Native_File_Chooser_set_filter_value(self._ptr, v)
def errmsg(self) -> str:
return Fl_Native_File_Chooser_errmsg(self._ptr)
def delete(self):
Fl_Native_File_Chooser_delete(self._ptr)
# ============================================================
# 常用别名
# ============================================================
def fltk_init():
"""初始化 FLTK(多线程环境需先 Fl_lock 再 init_all)。"""
Fl_init_all()
+195
View File
@@ -0,0 +1,195 @@
import t, c
from fltk._types import *
# ============================================================
# fltk/_cfl.vp — cfl.h 的 extern FFI 声明(对接 cfltk C API)
# ============================================================
# 所有函数直接对应 cfltk 生成的 C 符号(extern "C"),链接目标: cfltk2。
# 类型约定: Fl_* 对象均为不透明指针 (Fl_XxxPtr);const char* → str;
# 函数指针/void* → bytes(Viper 端传 0/NULL 或不使用)。
extern def Fl_run() -> int
extern def Fl_check() -> int
extern def Fl_ready() -> int
extern def Fl_reload_scheme() -> int
extern def Fl_menu_linespacing() -> int
extern def Fl_set_menu_linespacing(H: int)
extern def Fl_lock() -> int
extern def Fl_unlock()
extern def Fl_awake_callback(handler: bytes, data: bytes) -> int
extern def Fl_awake()
extern def Fl_set_scrollbar_size(a0: int)
extern def Fl_scrollbar_size() -> int
extern def Fl_event() -> int
extern def Fl_event_key() -> int
extern def Fl_event_original_key() -> int
extern def Fl_event_key_down(a0: int) -> int
extern def Fl_event_text() -> str
extern def Fl_event_button() -> int
extern def Fl_event_clicks() -> int
extern def Fl_event_x() -> int
extern def Fl_event_y() -> int
extern def Fl_event_x_root() -> int
extern def Fl_event_y_root() -> int
extern def Fl_event_dx() -> int
extern def Fl_event_dy() -> int
extern def Fl_get_mouse(a0: bytes, a1: bytes)
extern def Fl_event_is_click() -> int
extern def Fl_event_length() -> int
extern def Fl_event_state() -> int
extern def Fl_w() -> int
extern def Fl_h() -> int
extern def Fl_screen_x() -> int
extern def Fl_screen_y() -> int
extern def Fl_screen_h() -> int
extern def Fl_screen_w() -> int
extern def Fl_compose(del_: bytes) -> int
extern def Fl_compose_reset()
extern def Fl_compose_state() -> int
extern def Fl_copy(stuff: str, len_: int, destination: int)
extern def Fl_paste_text(a0: Fl_WidgetPtr, src: int)
extern def Fl_paste_image(widget: Fl_WidgetPtr, src: int)
extern def Fl_set_scheme(scheme: str) -> int
extern def Fl_scheme() -> int
extern def Fl_scheme_string() -> str
extern def Fl_visible_focus() -> int
extern def Fl_set_visible_focus(a0: int)
extern def Fl_set_box_type(a0: int, a1: int)
extern def Fl_box_shadow_width() -> int
extern def Fl_set_box_shadow_width(W: int)
extern def Fl_box_border_radius_max() -> int
extern def Fl_set_box_border_radius_max(R: int)
extern def Fl_get_rgb_color(r: t.CUInt8T, g: t.CUInt8T, b: t.CUInt8T) -> t.CUInt32T
extern def Fl_set_color(c: t.CUInt32T, r: t.CUInt8T, g: t.CUInt8T, b: t.CUInt8T)
extern def Fl_set_color_with_alpha(c: t.CUInt32T, r: t.CUInt8T, g: t.CUInt8T, b: t.CUInt8T, a: t.CUInt8T)
extern def Fl_get_font(idx: int) -> str
extern def Fl_get_font_name(idx: int) -> str
extern def Fl_get_font_name_with_attr(idx: int, attributes: bytes) -> str
extern def Fl_get_font_sizes(font: int, sizep: bytes) -> int
extern def Fl_set_fonts(c: str) -> int
extern def Fl_set_font(a0: int, a1: int)
extern def Fl_set_font_by_name(a0: int, a1: str)
extern def Fl_set_font_size(a0: int)
extern def Fl_font_size() -> int
extern def Fl_add_handler(cb0: bytes)
extern def Fl_wait() -> int
extern def Fl_wait_for(a0: t.CDouble) -> t.CDouble
extern def Fl_add_timeout(t: t.CDouble, cb1: bytes, a2: bytes)
extern def Fl_repeat_timeout(t: t.CDouble, cb1: bytes, a2: bytes)
extern def Fl_remove_timeout(cb0: bytes, a1: bytes)
extern def Fl_has_timeout(cb0: bytes, a1: bytes) -> int
extern def Fl_dnd() -> int
extern def Fl_grab() -> bytes
extern def Fl_set_grab(a0: bytes)
extern def Fl_first_window() -> bytes
extern def Fl_next_window(a0: bytes) -> bytes
extern def Fl_modal() -> bytes
extern def Fl_should_program_quit() -> int
extern def Fl_program_should_quit(flag: int)
extern def Fl_event_inside(a0: int, a1: int, a2: int, a3: int) -> int
extern def Fl_belowmouse() -> Fl_WidgetPtr
extern def Fl_set_belowmouse(w: Fl_WidgetPtr)
extern def Fl_delete_widget(w: Fl_WidgetPtr)
extern def Fl_Widget_Tracker_new(w: Fl_WidgetPtr) -> Fl_Widget_TrackerPtr
extern def Fl_Widget_Tracker_deleted(self: Fl_Widget_TrackerPtr) -> int
extern def Fl_Widget_Tracker_delete(self: Fl_Widget_TrackerPtr)
extern def Fl_init_all()
extern def Fl_redraw()
extern def Fl_event_shift() -> int
extern def Fl_event_ctrl() -> int
extern def Fl_event_command() -> int
extern def Fl_event_alt() -> int
extern def Fl_set_damage(flag: int)
extern def Fl_damage() -> int
extern def Fl_visual(a0: int) -> int
extern def Fl_own_colormap()
extern def Fl_pushed() -> Fl_WidgetPtr
extern def Fl_focus() -> Fl_WidgetPtr
extern def Fl_set_focus(a0: bytes)
extern def Fl_version() -> t.CDouble
extern def Fl_api_version() -> int
extern def Fl_abi_version() -> int
extern def Fl_load_font(path: str) -> int
extern def Fl_unload_font(path: str)
extern def Fl_foreground(r: t.CUInt8T, g: t.CUInt8T, b: t.CUInt8T)
extern def Fl_background(r: t.CUInt8T, g: t.CUInt8T, b: t.CUInt8T)
extern def Fl_background2(r: t.CUInt8T, g: t.CUInt8T, b: t.CUInt8T)
extern def Fl_selection_color(r: t.CUInt8T, g: t.CUInt8T, b: t.CUInt8T)
extern def Fl_inactive_color(r: t.CUInt8T, g: t.CUInt8T, b: t.CUInt8T)
extern def Fl_get_system_colors()
extern def Fl_handle(a0: int, a1: bytes) -> int
extern def Fl_handle_(a0: int, a1: bytes) -> int
extern def Fl_add_idle(cb0: bytes, a1: bytes)
extern def Fl_has_idle(cb0: bytes, a1: bytes) -> int
extern def Fl_remove_idle(cb0: bytes, a1: bytes)
extern def Fl_add_check(cb0: bytes, a1: bytes)
extern def Fl_has_check(cb0: bytes, a1: bytes) -> int
extern def Fl_remove_check(cb0: bytes, a1: bytes)
extern def Fl_flush()
extern def Fl_set_screen_scale(n: int, val: t.CFloat)
extern def Fl_screen_scale(n: int) -> t.CFloat
extern def Fl_screen_scaling_supported() -> int
extern def Fl_screen_count() -> int
extern def Fl_screen_num(x: int, y: int) -> int
extern def Fl_screen_num_inside(x: int, y: int, w: int, h: int) -> int
extern def Fl_screen_xywh(X: bytes, Y: bytes, W: bytes, H: bytes, n: int)
extern def Fl_screen_xywh_at(X: bytes, Y: bytes, W: bytes, H: bytes, mx: int, my: int)
extern def Fl_screen_xywh_inside(X: bytes, Y: bytes, W: bytes, H: bytes, mx: int, my: int, mw: int, mh: int)
extern def Fl_screen_xywh_mouse(X: bytes, Y: bytes, W: bytes, H: bytes)
extern def Fl_screen_dpi(h: bytes, v: bytes, n: int)
extern def Fl_screen_work_area(X: bytes, Y: bytes, W: bytes, H: bytes, n: int)
extern def Fl_screen_work_area_at(X: bytes, Y: bytes, W: bytes, H: bytes, mx: int, my: int)
extern def Fl_screen_work_area_mouse(X: bytes, Y: bytes, W: bytes, H: bytes)
extern def Fl_keyboard_screen_scaling(value: int)
extern def Fl_open_display()
extern def Fl_close_display()
extern def Fl_box_dx(boxtype: int) -> int
extern def Fl_box_dy(boxtype: int) -> int
extern def Fl_box_dw(boxtype: int) -> int
extern def Fl_box_dh(boxtype: int) -> int
extern def Fl_mac_os_version() -> int
extern def Fl_event_clipboard() -> bytes
extern def Fl_event_clipboard_type() -> str
extern def Fl_clipboard_contains(type: str) -> int
extern def Fl_event_dispatch(cb0: bytes)
extern def Fl_inactive(c: t.CUInt32T) -> t.CUInt32T
extern def Fl_lighter(c: t.CUInt32T) -> t.CUInt32T
extern def Fl_darker(c: t.CUInt32T) -> t.CUInt32T
extern def Fl_set_box_type_cb(a0: int, cb1: bytes, a2: int, a3: int, a4: int, a5: int)
extern def Fl_draw_box_active() -> int
extern def Fl_gray_ramp(i: int) -> t.CUInt32T
extern def Fl_color_average(int_: bytes, int_: bytes, f: t.CFloat) -> t.CUInt32T
extern def Fl_contrast(c1: t.CUInt32T, c2: t.CUInt32T) -> t.CUInt32T
extern def Fl_rgb_color(r: t.CUInt8T, g: t.CUInt8T, b: t.CUInt8T) -> t.CUInt32T
extern def Fl_rgb_color_grayscale(g: t.CUInt8T) -> t.CUInt32T
extern def Fl_cmap(c: t.CUInt32T) -> t.CUInt32T
extern def Fl_box_color(c: t.CUInt32T) -> t.CUInt32T
extern def Fl_set_box_color(c: t.CUInt32T)
extern def Fl_add_system_handler(cb0: bytes, a1: bytes)
extern def Fl_remove_system_handler(cb0: bytes)
extern def Fl_gl_visual(mode: int) -> int
extern def Fl_add_clipboard_notify(cb0: bytes, data: bytes)
extern def Fl_remove_clipboard_notify(cb0: bytes)
extern def Fl_open_callback(cb0: bytes)
extern def Fl_disable_wayland()
extern def Fl_Widget_Tracker_widget(t: Fl_Widget_TrackerPtr) -> Fl_WidgetPtr
extern def Fl_Widget_Tracker_exists(t: Fl_Widget_TrackerPtr) -> int
extern def Fl_get_color_rgb(col: t.CUInt32T, r: bytes, g: bytes, b: bytes)
extern def Fl_callback_reason() -> int
extern def Fl_get_fl_msg() -> bytes
extern def Fl_cairo_make_current(w: Fl_WidgetPtr) -> bytes
extern def Fl_set_cairo_autolink_context(alink: int)
extern def Fl_cairo_autolink_context() -> int
extern def Fl_cairo_cc() -> bytes
extern def Fl_set_cairo_cc(c: bytes, own: int)
extern def Fl_cairo_flush(c: bytes)
extern def Fl_option(opt: int) -> int
extern def Fl_set_option(opt: int, val: int)
extern def Fl_load_system_icons()
extern def Fl_set_contrast_level(level: int)
extern def Fl_contrast_level() -> int
extern def Fl_set_contrast_mode(mode: int)
extern def Fl_contrast_mode() -> int
extern def Fl_set_contrast_function(cb0: bytes)
extern def Fl_using_wayland() -> int
+98
View File
@@ -0,0 +1,98 @@
import t, c
from fltk._types import *
# ============================================================
# fltk/_cfl_box.vp — cfl_box.h 的 extern FFI 声明(对接 cfltk C API)
# ============================================================
# 所有函数直接对应 cfltk 生成的 C 符号(extern "C"),链接目标: cfltk2。
# 类型约定: Fl_* 对象均为不透明指针 (Fl_XxxPtr);const char* → str;
# 函数指针/void* → bytes(Viper 端传 0/NULL 或不使用)。
# ----- Fl_Box (widget_declare) -----
extern def Fl_Box_new(x: int, y: int, width: int, height: int, title: str) -> Fl_BoxPtr
extern def Fl_Box_x(self: Fl_BoxPtr) -> int
extern def Fl_Box_y(self: Fl_BoxPtr) -> int
extern def Fl_Box_width(self: Fl_BoxPtr) -> int
extern def Fl_Box_height(self: Fl_BoxPtr) -> int
extern def Fl_Box_label(self: Fl_BoxPtr) -> str
extern def Fl_Box_set_label(self: Fl_BoxPtr, title: str)
extern def Fl_Box_redraw(self: Fl_BoxPtr)
extern def Fl_Box_show(self: Fl_BoxPtr)
extern def Fl_Box_hide(self: Fl_BoxPtr)
extern def Fl_Box_activate(self: Fl_BoxPtr)
extern def Fl_Box_deactivate(self: Fl_BoxPtr)
extern def Fl_Box_redraw_label(self: Fl_BoxPtr)
extern def Fl_Box_resize(self: Fl_BoxPtr, x: int, y: int, width: int, height: int)
extern def Fl_Box_widget_resize(self: Fl_BoxPtr, x: int, y: int, width: int, height: int)
extern def Fl_Box_tooltip(self: Fl_BoxPtr) -> str
extern def Fl_Box_set_tooltip(self: Fl_BoxPtr, txt: str)
extern def Fl_Box_get_type(self: Fl_BoxPtr) -> int
extern def Fl_Box_set_type(self: Fl_BoxPtr, typ: int)
extern def Fl_Box_color(self: Fl_BoxPtr) -> t.CUInt32T
extern def Fl_Box_set_color(self: Fl_BoxPtr, color: t.CUInt32T)
extern def Fl_Box_measure_label(self: Fl_BoxPtr, a1: bytes, a2: bytes)
extern def Fl_Box_label_color(self: Fl_BoxPtr) -> t.CUInt32T
extern def Fl_Box_set_label_color(self: Fl_BoxPtr, color: t.CUInt32T)
extern def Fl_Box_label_font(self: Fl_BoxPtr) -> int
extern def Fl_Box_set_label_font(self: Fl_BoxPtr, font: int)
extern def Fl_Box_label_size(self: Fl_BoxPtr) -> int
extern def Fl_Box_set_label_size(self: Fl_BoxPtr, sz: int)
extern def Fl_Box_label_type(self: Fl_BoxPtr) -> int
extern def Fl_Box_set_label_type(self: Fl_BoxPtr, typ: int)
extern def Fl_Box_box(self: Fl_BoxPtr) -> int
extern def Fl_Box_set_box(self: Fl_BoxPtr, typ: int)
extern def Fl_Box_changed(self: Fl_BoxPtr) -> int
extern def Fl_Box_set_changed(self: Fl_BoxPtr)
extern def Fl_Box_clear_changed(self: Fl_BoxPtr)
extern def Fl_Box_align(self: Fl_BoxPtr) -> int
extern def Fl_Box_set_align(self: Fl_BoxPtr, typ: int)
extern def Fl_Box_delete(self: Fl_BoxPtr)
extern def Fl_Box_set_image(self: Fl_BoxPtr, a1: bytes)
extern def Fl_Box_handle(self: Fl_BoxPtr, cb: bytes, data: bytes)
extern def Fl_Box_handle_event(self: Fl_BoxPtr, event: int) -> int
extern def Fl_Box_draw(self: Fl_BoxPtr, cb: bytes, data: bytes)
extern def Fl_Box_resize_callback(self: Fl_BoxPtr, cb1: bytes, data: bytes)
extern def Fl_Box_set_when(self: Fl_BoxPtr, a1: int)
extern def Fl_Box_when(self: Fl_BoxPtr) -> int
extern def Fl_Box_image(self: Fl_BoxPtr) -> bytes
extern def Fl_Box_parent(self: Fl_BoxPtr) -> bytes
extern def Fl_Box_selection_color(self: Fl_BoxPtr) -> t.CUInt32T
extern def Fl_Box_set_selection_color(self: Fl_BoxPtr, color: t.CUInt32T)
extern def Fl_Box_do_callback(self: Fl_BoxPtr)
extern def Fl_Box_inside(self: Fl_BoxPtr, a1: bytes) -> int
extern def Fl_Box_window(self: Fl_BoxPtr) -> bytes
extern def Fl_Box_top_window(self: Fl_BoxPtr) -> bytes
extern def Fl_Box_takes_events(self: Fl_BoxPtr) -> int
extern def Fl_Box_user_data(self: Fl_BoxPtr) -> bytes
extern def Fl_Box_take_focus(self: Fl_BoxPtr) -> int
extern def Fl_Box_set_visible_focus(self: Fl_BoxPtr)
extern def Fl_Box_clear_visible_focus(self: Fl_BoxPtr)
extern def Fl_Box_visible_focus(self: Fl_BoxPtr, v: int)
extern def Fl_Box_has_visible_focus(self: Fl_BoxPtr) -> t.CUInt32T
extern def Fl_Box_set_user_data(self: Fl_BoxPtr, data: bytes)
extern def Fl_Box_draw_data(self: Fl_BoxPtr) -> bytes
extern def Fl_Box_handle_data(self: Fl_BoxPtr) -> bytes
extern def Fl_Box_set_draw_data(self: Fl_BoxPtr, data: bytes)
extern def Fl_Box_set_handle_data(self: Fl_BoxPtr, data: bytes)
extern def Fl_Box_damage(self: Fl_BoxPtr) -> t.CUInt8T
extern def Fl_Box_set_damage(self: Fl_BoxPtr, flag: t.CUInt8T)
extern def Fl_Box_set_damage_area(self: Fl_BoxPtr, flag: t.CUInt8T, x: int, y: int, w: int, h: int)
extern def Fl_Box_clear_damage(self: Fl_BoxPtr)
extern def Fl_Box_as_window(self: Fl_BoxPtr) -> bytes
extern def Fl_Box_as_group(self: Fl_BoxPtr) -> bytes
extern def Fl_Box_set_deimage(self: Fl_BoxPtr, a1: bytes)
extern def Fl_Box_deimage(self: Fl_BoxPtr) -> bytes
extern def Fl_Box_set_callback(self: Fl_BoxPtr, a1: bytes, a2: bytes)
extern def Fl_Box_visible(self: Fl_BoxPtr) -> int
extern def Fl_Box_visible_r(self: Fl_BoxPtr) -> int
extern def Fl_Box_active(self: Fl_BoxPtr) -> t.CUInt32T
extern def Fl_Box_active_r(self: Fl_BoxPtr) -> int
extern def Fl_Box_callback(self: Fl_BoxPtr) -> bytes
extern def Fl_Box_set_deletion_callback(self: Fl_BoxPtr, cb1: bytes, data: bytes)
extern def Fl_Box_from_dyn_ptr(ptr: Fl_WidgetPtr) -> Fl_BoxPtr
extern def Fl_Box_from_derived_dyn_ptr(ptr: Fl_WidgetPtr) -> Fl_BoxPtr
extern def Fl_Box_super_draw(ptr: Fl_WidgetPtr, flag: int)
extern def Fl_Box_super_draw_first(ptr: Fl_WidgetPtr, flag: int)
extern def Fl_Box_super_handle_first(ptr: Fl_WidgetPtr, flag: int)
+802
View File
@@ -0,0 +1,802 @@
import t, c
from fltk._types import *
# ============================================================
# fltk/_cfl_browser.vp — cfl_browser.h 的 extern FFI 声明(对接 cfltk C API)
# ============================================================
# 所有函数直接对应 cfltk 生成的 C 符号(extern "C"),链接目标: cfltk2。
# 类型约定: Fl_* 对象均为不透明指针 (Fl_XxxPtr);const char* → str;
# 函数指针/void* → bytes(Viper 端传 0/NULL 或不使用)。
# ----- Fl_Browser (widget_declare) -----
extern def Fl_Browser_new(x: int, y: int, width: int, height: int, title: str) -> Fl_BrowserPtr
extern def Fl_Browser_x(self: Fl_BrowserPtr) -> int
extern def Fl_Browser_y(self: Fl_BrowserPtr) -> int
extern def Fl_Browser_width(self: Fl_BrowserPtr) -> int
extern def Fl_Browser_height(self: Fl_BrowserPtr) -> int
extern def Fl_Browser_label(self: Fl_BrowserPtr) -> str
extern def Fl_Browser_set_label(self: Fl_BrowserPtr, title: str)
extern def Fl_Browser_redraw(self: Fl_BrowserPtr)
extern def Fl_Browser_show(self: Fl_BrowserPtr)
extern def Fl_Browser_hide(self: Fl_BrowserPtr)
extern def Fl_Browser_activate(self: Fl_BrowserPtr)
extern def Fl_Browser_deactivate(self: Fl_BrowserPtr)
extern def Fl_Browser_redraw_label(self: Fl_BrowserPtr)
extern def Fl_Browser_resize(self: Fl_BrowserPtr, x: int, y: int, width: int, height: int)
extern def Fl_Browser_widget_resize(self: Fl_BrowserPtr, x: int, y: int, width: int, height: int)
extern def Fl_Browser_tooltip(self: Fl_BrowserPtr) -> str
extern def Fl_Browser_set_tooltip(self: Fl_BrowserPtr, txt: str)
extern def Fl_Browser_get_type(self: Fl_BrowserPtr) -> int
extern def Fl_Browser_set_type(self: Fl_BrowserPtr, typ: int)
extern def Fl_Browser_color(self: Fl_BrowserPtr) -> t.CUInt32T
extern def Fl_Browser_set_color(self: Fl_BrowserPtr, color: t.CUInt32T)
extern def Fl_Browser_measure_label(self: Fl_BrowserPtr, a1: bytes, a2: bytes)
extern def Fl_Browser_label_color(self: Fl_BrowserPtr) -> t.CUInt32T
extern def Fl_Browser_set_label_color(self: Fl_BrowserPtr, color: t.CUInt32T)
extern def Fl_Browser_label_font(self: Fl_BrowserPtr) -> int
extern def Fl_Browser_set_label_font(self: Fl_BrowserPtr, font: int)
extern def Fl_Browser_label_size(self: Fl_BrowserPtr) -> int
extern def Fl_Browser_set_label_size(self: Fl_BrowserPtr, sz: int)
extern def Fl_Browser_label_type(self: Fl_BrowserPtr) -> int
extern def Fl_Browser_set_label_type(self: Fl_BrowserPtr, typ: int)
extern def Fl_Browser_box(self: Fl_BrowserPtr) -> int
extern def Fl_Browser_set_box(self: Fl_BrowserPtr, typ: int)
extern def Fl_Browser_changed(self: Fl_BrowserPtr) -> int
extern def Fl_Browser_set_changed(self: Fl_BrowserPtr)
extern def Fl_Browser_clear_changed(self: Fl_BrowserPtr)
extern def Fl_Browser_align(self: Fl_BrowserPtr) -> int
extern def Fl_Browser_set_align(self: Fl_BrowserPtr, typ: int)
extern def Fl_Browser_delete(self: Fl_BrowserPtr)
extern def Fl_Browser_set_image(self: Fl_BrowserPtr, a1: bytes)
extern def Fl_Browser_handle(self: Fl_BrowserPtr, cb: bytes, data: bytes)
extern def Fl_Browser_handle_event(self: Fl_BrowserPtr, event: int) -> int
extern def Fl_Browser_draw(self: Fl_BrowserPtr, cb: bytes, data: bytes)
extern def Fl_Browser_resize_callback(self: Fl_BrowserPtr, cb1: bytes, data: bytes)
extern def Fl_Browser_set_when(self: Fl_BrowserPtr, a1: int)
extern def Fl_Browser_when(self: Fl_BrowserPtr) -> int
extern def Fl_Browser_image(self: Fl_BrowserPtr) -> bytes
extern def Fl_Browser_parent(self: Fl_BrowserPtr) -> bytes
extern def Fl_Browser_selection_color(self: Fl_BrowserPtr) -> t.CUInt32T
extern def Fl_Browser_set_selection_color(self: Fl_BrowserPtr, color: t.CUInt32T)
extern def Fl_Browser_do_callback(self: Fl_BrowserPtr)
extern def Fl_Browser_inside(self: Fl_BrowserPtr, a1: bytes) -> int
extern def Fl_Browser_window(self: Fl_BrowserPtr) -> bytes
extern def Fl_Browser_top_window(self: Fl_BrowserPtr) -> bytes
extern def Fl_Browser_takes_events(self: Fl_BrowserPtr) -> int
extern def Fl_Browser_user_data(self: Fl_BrowserPtr) -> bytes
extern def Fl_Browser_take_focus(self: Fl_BrowserPtr) -> int
extern def Fl_Browser_set_visible_focus(self: Fl_BrowserPtr)
extern def Fl_Browser_clear_visible_focus(self: Fl_BrowserPtr)
extern def Fl_Browser_visible_focus(self: Fl_BrowserPtr, v: int)
extern def Fl_Browser_has_visible_focus(self: Fl_BrowserPtr) -> t.CUInt32T
extern def Fl_Browser_set_user_data(self: Fl_BrowserPtr, data: bytes)
extern def Fl_Browser_draw_data(self: Fl_BrowserPtr) -> bytes
extern def Fl_Browser_handle_data(self: Fl_BrowserPtr) -> bytes
extern def Fl_Browser_set_draw_data(self: Fl_BrowserPtr, data: bytes)
extern def Fl_Browser_set_handle_data(self: Fl_BrowserPtr, data: bytes)
extern def Fl_Browser_damage(self: Fl_BrowserPtr) -> t.CUInt8T
extern def Fl_Browser_set_damage(self: Fl_BrowserPtr, flag: t.CUInt8T)
extern def Fl_Browser_set_damage_area(self: Fl_BrowserPtr, flag: t.CUInt8T, x: int, y: int, w: int, h: int)
extern def Fl_Browser_clear_damage(self: Fl_BrowserPtr)
extern def Fl_Browser_as_window(self: Fl_BrowserPtr) -> bytes
extern def Fl_Browser_as_group(self: Fl_BrowserPtr) -> bytes
extern def Fl_Browser_set_deimage(self: Fl_BrowserPtr, a1: bytes)
extern def Fl_Browser_deimage(self: Fl_BrowserPtr) -> bytes
extern def Fl_Browser_set_callback(self: Fl_BrowserPtr, a1: bytes, a2: bytes)
extern def Fl_Browser_visible(self: Fl_BrowserPtr) -> int
extern def Fl_Browser_visible_r(self: Fl_BrowserPtr) -> int
extern def Fl_Browser_active(self: Fl_BrowserPtr) -> t.CUInt32T
extern def Fl_Browser_active_r(self: Fl_BrowserPtr) -> int
extern def Fl_Browser_callback(self: Fl_BrowserPtr) -> bytes
extern def Fl_Browser_set_deletion_callback(self: Fl_BrowserPtr, cb1: bytes, data: bytes)
extern def Fl_Browser_from_dyn_ptr(ptr: Fl_WidgetPtr) -> Fl_BrowserPtr
extern def Fl_Browser_from_derived_dyn_ptr(ptr: Fl_WidgetPtr) -> Fl_BrowserPtr
extern def Fl_Browser_super_draw(ptr: Fl_WidgetPtr, flag: int)
extern def Fl_Browser_super_draw_first(ptr: Fl_WidgetPtr, flag: int)
extern def Fl_Browser_super_handle_first(ptr: Fl_WidgetPtr, flag: int)
# ----- Fl_Browser (browser_declare) -----
extern def Fl_Browser_value(self: Fl_BrowserPtr) -> int
extern def Fl_Browser_remove(self: Fl_BrowserPtr, line: int)
extern def Fl_Browser_add(self: Fl_BrowserPtr, newtext: str)
extern def Fl_Browser_insert(self: Fl_BrowserPtr, line: int, newtext: str)
extern def Fl_Browser_move(self: Fl_BrowserPtr, to: int, from_: int)
extern def Fl_Browser_swap(self: Fl_BrowserPtr, a: int, b: int)
extern def Fl_Browser_clear(self: Fl_BrowserPtr)
extern def Fl_Browser_size(self: Fl_BrowserPtr) -> int
extern def Fl_Browser_select(self: Fl_BrowserPtr, line: int) -> int
extern def Fl_Browser_select_ext(self: Fl_BrowserPtr, line: int, val: int) -> int
extern def Fl_Browser_selected(self: Fl_BrowserPtr, line: int) -> int
extern def Fl_Browser_text(self: Fl_BrowserPtr, line: int) -> str
extern def Fl_Browser_set_text(self: Fl_BrowserPtr, line: int, newtext: str)
extern def Fl_Browser_load_file(self: Fl_BrowserPtr, file: str)
extern def Fl_Browser_text_size(self: Fl_BrowserPtr) -> int
extern def Fl_Browser_set_text_size(self: Fl_BrowserPtr, s: int)
extern def Fl_Browser_set_icon(self: Fl_BrowserPtr, line: int, icon: bytes)
extern def Fl_Browser_icon(self: Fl_BrowserPtr, line: int) -> bytes
extern def Fl_Browser_remove_icon(self: Fl_BrowserPtr, line: int)
extern def Fl_Browser_topline(self: Fl_BrowserPtr, line: int)
extern def Fl_Browser_is_topline(self: Fl_BrowserPtr) -> int
extern def Fl_Browser_bottomline(self: Fl_BrowserPtr, line: int)
extern def Fl_Browser_middleline(self: Fl_BrowserPtr, line: int)
extern def Fl_Browser_format_char(self: Fl_BrowserPtr) -> t.CChar
extern def Fl_Browser_set_format_char(self: Fl_BrowserPtr, c: t.CChar)
extern def Fl_Browser_column_char(self: Fl_BrowserPtr) -> t.CChar
extern def Fl_Browser_set_column_char(self: Fl_BrowserPtr, c: t.CChar)
extern def Fl_Browser_column_widths(self: Fl_BrowserPtr) -> bytes
extern def Fl_Browser_set_column_widths(self: Fl_BrowserPtr, arr: bytes)
extern def Fl_Browser_displayed(self: Fl_BrowserPtr, line: int) -> int
extern def Fl_Browser_make_visible(self: Fl_BrowserPtr, line: int)
extern def Fl_Browser_position(self: Fl_BrowserPtr) -> int
extern def Fl_Browser_set_position(self: Fl_BrowserPtr, pos: int)
extern def Fl_Browser_hposition(self: Fl_BrowserPtr) -> int
extern def Fl_Browser_set_hposition(self: Fl_BrowserPtr, a1: int)
extern def Fl_Browser_has_scrollbar(self: Fl_BrowserPtr) -> t.CUInt8T
extern def Fl_Browser_set_has_scrollbar(self: Fl_BrowserPtr, mode: t.CUInt8T)
extern def Fl_Browser_scrollbar_size(self: Fl_BrowserPtr) -> int
extern def Fl_Browser_set_scrollbar_size(self: Fl_BrowserPtr, newSize: int)
extern def Fl_Browser_sort(self: Fl_BrowserPtr)
extern def Fl_Browser_scrollbar(self: Fl_BrowserPtr) -> bytes
extern def Fl_Browser_hscrollbar(self: Fl_BrowserPtr) -> bytes
extern def Fl_Browser_data(self: Fl_BrowserPtr, line: int) -> bytes
extern def Fl_Browser_set_data(self: Fl_BrowserPtr, line: int, data: bytes)
extern def Fl_Browser_hide_line(self: Fl_BrowserPtr, line: int)
# ----- Fl_Hold_Browser (widget_declare) -----
extern def Fl_Hold_Browser_new(x: int, y: int, width: int, height: int, title: str) -> Fl_Hold_BrowserPtr
extern def Fl_Hold_Browser_x(self: Fl_Hold_BrowserPtr) -> int
extern def Fl_Hold_Browser_y(self: Fl_Hold_BrowserPtr) -> int
extern def Fl_Hold_Browser_width(self: Fl_Hold_BrowserPtr) -> int
extern def Fl_Hold_Browser_height(self: Fl_Hold_BrowserPtr) -> int
extern def Fl_Hold_Browser_label(self: Fl_Hold_BrowserPtr) -> str
extern def Fl_Hold_Browser_set_label(self: Fl_Hold_BrowserPtr, title: str)
extern def Fl_Hold_Browser_redraw(self: Fl_Hold_BrowserPtr)
extern def Fl_Hold_Browser_show(self: Fl_Hold_BrowserPtr)
extern def Fl_Hold_Browser_hide(self: Fl_Hold_BrowserPtr)
extern def Fl_Hold_Browser_activate(self: Fl_Hold_BrowserPtr)
extern def Fl_Hold_Browser_deactivate(self: Fl_Hold_BrowserPtr)
extern def Fl_Hold_Browser_redraw_label(self: Fl_Hold_BrowserPtr)
extern def Fl_Hold_Browser_resize(self: Fl_Hold_BrowserPtr, x: int, y: int, width: int, height: int)
extern def Fl_Hold_Browser_widget_resize(self: Fl_Hold_BrowserPtr, x: int, y: int, width: int, height: int)
extern def Fl_Hold_Browser_tooltip(self: Fl_Hold_BrowserPtr) -> str
extern def Fl_Hold_Browser_set_tooltip(self: Fl_Hold_BrowserPtr, txt: str)
extern def Fl_Hold_Browser_get_type(self: Fl_Hold_BrowserPtr) -> int
extern def Fl_Hold_Browser_set_type(self: Fl_Hold_BrowserPtr, typ: int)
extern def Fl_Hold_Browser_color(self: Fl_Hold_BrowserPtr) -> t.CUInt32T
extern def Fl_Hold_Browser_set_color(self: Fl_Hold_BrowserPtr, color: t.CUInt32T)
extern def Fl_Hold_Browser_measure_label(self: Fl_Hold_BrowserPtr, a1: bytes, a2: bytes)
extern def Fl_Hold_Browser_label_color(self: Fl_Hold_BrowserPtr) -> t.CUInt32T
extern def Fl_Hold_Browser_set_label_color(self: Fl_Hold_BrowserPtr, color: t.CUInt32T)
extern def Fl_Hold_Browser_label_font(self: Fl_Hold_BrowserPtr) -> int
extern def Fl_Hold_Browser_set_label_font(self: Fl_Hold_BrowserPtr, font: int)
extern def Fl_Hold_Browser_label_size(self: Fl_Hold_BrowserPtr) -> int
extern def Fl_Hold_Browser_set_label_size(self: Fl_Hold_BrowserPtr, sz: int)
extern def Fl_Hold_Browser_label_type(self: Fl_Hold_BrowserPtr) -> int
extern def Fl_Hold_Browser_set_label_type(self: Fl_Hold_BrowserPtr, typ: int)
extern def Fl_Hold_Browser_box(self: Fl_Hold_BrowserPtr) -> int
extern def Fl_Hold_Browser_set_box(self: Fl_Hold_BrowserPtr, typ: int)
extern def Fl_Hold_Browser_changed(self: Fl_Hold_BrowserPtr) -> int
extern def Fl_Hold_Browser_set_changed(self: Fl_Hold_BrowserPtr)
extern def Fl_Hold_Browser_clear_changed(self: Fl_Hold_BrowserPtr)
extern def Fl_Hold_Browser_align(self: Fl_Hold_BrowserPtr) -> int
extern def Fl_Hold_Browser_set_align(self: Fl_Hold_BrowserPtr, typ: int)
extern def Fl_Hold_Browser_delete(self: Fl_Hold_BrowserPtr)
extern def Fl_Hold_Browser_set_image(self: Fl_Hold_BrowserPtr, a1: bytes)
extern def Fl_Hold_Browser_handle(self: Fl_Hold_BrowserPtr, cb: bytes, data: bytes)
extern def Fl_Hold_Browser_handle_event(self: Fl_Hold_BrowserPtr, event: int) -> int
extern def Fl_Hold_Browser_draw(self: Fl_Hold_BrowserPtr, cb: bytes, data: bytes)
extern def Fl_Hold_Browser_resize_callback(self: Fl_Hold_BrowserPtr, cb1: bytes, data: bytes)
extern def Fl_Hold_Browser_set_when(self: Fl_Hold_BrowserPtr, a1: int)
extern def Fl_Hold_Browser_when(self: Fl_Hold_BrowserPtr) -> int
extern def Fl_Hold_Browser_image(self: Fl_Hold_BrowserPtr) -> bytes
extern def Fl_Hold_Browser_parent(self: Fl_Hold_BrowserPtr) -> bytes
extern def Fl_Hold_Browser_selection_color(self: Fl_Hold_BrowserPtr) -> t.CUInt32T
extern def Fl_Hold_Browser_set_selection_color(self: Fl_Hold_BrowserPtr, color: t.CUInt32T)
extern def Fl_Hold_Browser_do_callback(self: Fl_Hold_BrowserPtr)
extern def Fl_Hold_Browser_inside(self: Fl_Hold_BrowserPtr, a1: bytes) -> int
extern def Fl_Hold_Browser_window(self: Fl_Hold_BrowserPtr) -> bytes
extern def Fl_Hold_Browser_top_window(self: Fl_Hold_BrowserPtr) -> bytes
extern def Fl_Hold_Browser_takes_events(self: Fl_Hold_BrowserPtr) -> int
extern def Fl_Hold_Browser_user_data(self: Fl_Hold_BrowserPtr) -> bytes
extern def Fl_Hold_Browser_take_focus(self: Fl_Hold_BrowserPtr) -> int
extern def Fl_Hold_Browser_set_visible_focus(self: Fl_Hold_BrowserPtr)
extern def Fl_Hold_Browser_clear_visible_focus(self: Fl_Hold_BrowserPtr)
extern def Fl_Hold_Browser_visible_focus(self: Fl_Hold_BrowserPtr, v: int)
extern def Fl_Hold_Browser_has_visible_focus(self: Fl_Hold_BrowserPtr) -> t.CUInt32T
extern def Fl_Hold_Browser_set_user_data(self: Fl_Hold_BrowserPtr, data: bytes)
extern def Fl_Hold_Browser_draw_data(self: Fl_Hold_BrowserPtr) -> bytes
extern def Fl_Hold_Browser_handle_data(self: Fl_Hold_BrowserPtr) -> bytes
extern def Fl_Hold_Browser_set_draw_data(self: Fl_Hold_BrowserPtr, data: bytes)
extern def Fl_Hold_Browser_set_handle_data(self: Fl_Hold_BrowserPtr, data: bytes)
extern def Fl_Hold_Browser_damage(self: Fl_Hold_BrowserPtr) -> t.CUInt8T
extern def Fl_Hold_Browser_set_damage(self: Fl_Hold_BrowserPtr, flag: t.CUInt8T)
extern def Fl_Hold_Browser_set_damage_area(self: Fl_Hold_BrowserPtr, flag: t.CUInt8T, x: int, y: int, w: int, h: int)
extern def Fl_Hold_Browser_clear_damage(self: Fl_Hold_BrowserPtr)
extern def Fl_Hold_Browser_as_window(self: Fl_Hold_BrowserPtr) -> bytes
extern def Fl_Hold_Browser_as_group(self: Fl_Hold_BrowserPtr) -> bytes
extern def Fl_Hold_Browser_set_deimage(self: Fl_Hold_BrowserPtr, a1: bytes)
extern def Fl_Hold_Browser_deimage(self: Fl_Hold_BrowserPtr) -> bytes
extern def Fl_Hold_Browser_set_callback(self: Fl_Hold_BrowserPtr, a1: bytes, a2: bytes)
extern def Fl_Hold_Browser_visible(self: Fl_Hold_BrowserPtr) -> int
extern def Fl_Hold_Browser_visible_r(self: Fl_Hold_BrowserPtr) -> int
extern def Fl_Hold_Browser_active(self: Fl_Hold_BrowserPtr) -> t.CUInt32T
extern def Fl_Hold_Browser_active_r(self: Fl_Hold_BrowserPtr) -> int
extern def Fl_Hold_Browser_callback(self: Fl_Hold_BrowserPtr) -> bytes
extern def Fl_Hold_Browser_set_deletion_callback(self: Fl_Hold_BrowserPtr, cb1: bytes, data: bytes)
extern def Fl_Hold_Browser_from_dyn_ptr(ptr: Fl_WidgetPtr) -> Fl_Hold_BrowserPtr
extern def Fl_Hold_Browser_from_derived_dyn_ptr(ptr: Fl_WidgetPtr) -> Fl_Hold_BrowserPtr
extern def Fl_Hold_Browser_super_draw(ptr: Fl_WidgetPtr, flag: int)
extern def Fl_Hold_Browser_super_draw_first(ptr: Fl_WidgetPtr, flag: int)
extern def Fl_Hold_Browser_super_handle_first(ptr: Fl_WidgetPtr, flag: int)
# ----- Fl_Hold_Browser (browser_declare) -----
extern def Fl_Hold_Browser_value(self: Fl_Hold_BrowserPtr) -> int
extern def Fl_Hold_Browser_remove(self: Fl_Hold_BrowserPtr, line: int)
extern def Fl_Hold_Browser_add(self: Fl_Hold_BrowserPtr, newtext: str)
extern def Fl_Hold_Browser_insert(self: Fl_Hold_BrowserPtr, line: int, newtext: str)
extern def Fl_Hold_Browser_move(self: Fl_Hold_BrowserPtr, to: int, from_: int)
extern def Fl_Hold_Browser_swap(self: Fl_Hold_BrowserPtr, a: int, b: int)
extern def Fl_Hold_Browser_clear(self: Fl_Hold_BrowserPtr)
extern def Fl_Hold_Browser_size(self: Fl_Hold_BrowserPtr) -> int
extern def Fl_Hold_Browser_select(self: Fl_Hold_BrowserPtr, line: int) -> int
extern def Fl_Hold_Browser_select_ext(self: Fl_Hold_BrowserPtr, line: int, val: int) -> int
extern def Fl_Hold_Browser_selected(self: Fl_Hold_BrowserPtr, line: int) -> int
extern def Fl_Hold_Browser_text(self: Fl_Hold_BrowserPtr, line: int) -> str
extern def Fl_Hold_Browser_set_text(self: Fl_Hold_BrowserPtr, line: int, newtext: str)
extern def Fl_Hold_Browser_load_file(self: Fl_Hold_BrowserPtr, file: str)
extern def Fl_Hold_Browser_text_size(self: Fl_Hold_BrowserPtr) -> int
extern def Fl_Hold_Browser_set_text_size(self: Fl_Hold_BrowserPtr, s: int)
extern def Fl_Hold_Browser_set_icon(self: Fl_Hold_BrowserPtr, line: int, icon: bytes)
extern def Fl_Hold_Browser_icon(self: Fl_Hold_BrowserPtr, line: int) -> bytes
extern def Fl_Hold_Browser_remove_icon(self: Fl_Hold_BrowserPtr, line: int)
extern def Fl_Hold_Browser_topline(self: Fl_Hold_BrowserPtr, line: int)
extern def Fl_Hold_Browser_is_topline(self: Fl_Hold_BrowserPtr) -> int
extern def Fl_Hold_Browser_bottomline(self: Fl_Hold_BrowserPtr, line: int)
extern def Fl_Hold_Browser_middleline(self: Fl_Hold_BrowserPtr, line: int)
extern def Fl_Hold_Browser_format_char(self: Fl_Hold_BrowserPtr) -> t.CChar
extern def Fl_Hold_Browser_set_format_char(self: Fl_Hold_BrowserPtr, c: t.CChar)
extern def Fl_Hold_Browser_column_char(self: Fl_Hold_BrowserPtr) -> t.CChar
extern def Fl_Hold_Browser_set_column_char(self: Fl_Hold_BrowserPtr, c: t.CChar)
extern def Fl_Hold_Browser_column_widths(self: Fl_Hold_BrowserPtr) -> bytes
extern def Fl_Hold_Browser_set_column_widths(self: Fl_Hold_BrowserPtr, arr: bytes)
extern def Fl_Hold_Browser_displayed(self: Fl_Hold_BrowserPtr, line: int) -> int
extern def Fl_Hold_Browser_make_visible(self: Fl_Hold_BrowserPtr, line: int)
extern def Fl_Hold_Browser_position(self: Fl_Hold_BrowserPtr) -> int
extern def Fl_Hold_Browser_set_position(self: Fl_Hold_BrowserPtr, pos: int)
extern def Fl_Hold_Browser_hposition(self: Fl_Hold_BrowserPtr) -> int
extern def Fl_Hold_Browser_set_hposition(self: Fl_Hold_BrowserPtr, a1: int)
extern def Fl_Hold_Browser_has_scrollbar(self: Fl_Hold_BrowserPtr) -> t.CUInt8T
extern def Fl_Hold_Browser_set_has_scrollbar(self: Fl_Hold_BrowserPtr, mode: t.CUInt8T)
extern def Fl_Hold_Browser_scrollbar_size(self: Fl_Hold_BrowserPtr) -> int
extern def Fl_Hold_Browser_set_scrollbar_size(self: Fl_Hold_BrowserPtr, newSize: int)
extern def Fl_Hold_Browser_sort(self: Fl_Hold_BrowserPtr)
extern def Fl_Hold_Browser_scrollbar(self: Fl_Hold_BrowserPtr) -> bytes
extern def Fl_Hold_Browser_hscrollbar(self: Fl_Hold_BrowserPtr) -> bytes
extern def Fl_Hold_Browser_data(self: Fl_Hold_BrowserPtr, line: int) -> bytes
extern def Fl_Hold_Browser_set_data(self: Fl_Hold_BrowserPtr, line: int, data: bytes)
extern def Fl_Hold_Browser_hide_line(self: Fl_Hold_BrowserPtr, line: int)
# ----- Fl_Select_Browser (widget_declare) -----
extern def Fl_Select_Browser_new(x: int, y: int, width: int, height: int, title: str) -> Fl_Select_BrowserPtr
extern def Fl_Select_Browser_x(self: Fl_Select_BrowserPtr) -> int
extern def Fl_Select_Browser_y(self: Fl_Select_BrowserPtr) -> int
extern def Fl_Select_Browser_width(self: Fl_Select_BrowserPtr) -> int
extern def Fl_Select_Browser_height(self: Fl_Select_BrowserPtr) -> int
extern def Fl_Select_Browser_label(self: Fl_Select_BrowserPtr) -> str
extern def Fl_Select_Browser_set_label(self: Fl_Select_BrowserPtr, title: str)
extern def Fl_Select_Browser_redraw(self: Fl_Select_BrowserPtr)
extern def Fl_Select_Browser_show(self: Fl_Select_BrowserPtr)
extern def Fl_Select_Browser_hide(self: Fl_Select_BrowserPtr)
extern def Fl_Select_Browser_activate(self: Fl_Select_BrowserPtr)
extern def Fl_Select_Browser_deactivate(self: Fl_Select_BrowserPtr)
extern def Fl_Select_Browser_redraw_label(self: Fl_Select_BrowserPtr)
extern def Fl_Select_Browser_resize(self: Fl_Select_BrowserPtr, x: int, y: int, width: int, height: int)
extern def Fl_Select_Browser_widget_resize(self: Fl_Select_BrowserPtr, x: int, y: int, width: int, height: int)
extern def Fl_Select_Browser_tooltip(self: Fl_Select_BrowserPtr) -> str
extern def Fl_Select_Browser_set_tooltip(self: Fl_Select_BrowserPtr, txt: str)
extern def Fl_Select_Browser_get_type(self: Fl_Select_BrowserPtr) -> int
extern def Fl_Select_Browser_set_type(self: Fl_Select_BrowserPtr, typ: int)
extern def Fl_Select_Browser_color(self: Fl_Select_BrowserPtr) -> t.CUInt32T
extern def Fl_Select_Browser_set_color(self: Fl_Select_BrowserPtr, color: t.CUInt32T)
extern def Fl_Select_Browser_measure_label(self: Fl_Select_BrowserPtr, a1: bytes, a2: bytes)
extern def Fl_Select_Browser_label_color(self: Fl_Select_BrowserPtr) -> t.CUInt32T
extern def Fl_Select_Browser_set_label_color(self: Fl_Select_BrowserPtr, color: t.CUInt32T)
extern def Fl_Select_Browser_label_font(self: Fl_Select_BrowserPtr) -> int
extern def Fl_Select_Browser_set_label_font(self: Fl_Select_BrowserPtr, font: int)
extern def Fl_Select_Browser_label_size(self: Fl_Select_BrowserPtr) -> int
extern def Fl_Select_Browser_set_label_size(self: Fl_Select_BrowserPtr, sz: int)
extern def Fl_Select_Browser_label_type(self: Fl_Select_BrowserPtr) -> int
extern def Fl_Select_Browser_set_label_type(self: Fl_Select_BrowserPtr, typ: int)
extern def Fl_Select_Browser_box(self: Fl_Select_BrowserPtr) -> int
extern def Fl_Select_Browser_set_box(self: Fl_Select_BrowserPtr, typ: int)
extern def Fl_Select_Browser_changed(self: Fl_Select_BrowserPtr) -> int
extern def Fl_Select_Browser_set_changed(self: Fl_Select_BrowserPtr)
extern def Fl_Select_Browser_clear_changed(self: Fl_Select_BrowserPtr)
extern def Fl_Select_Browser_align(self: Fl_Select_BrowserPtr) -> int
extern def Fl_Select_Browser_set_align(self: Fl_Select_BrowserPtr, typ: int)
extern def Fl_Select_Browser_delete(self: Fl_Select_BrowserPtr)
extern def Fl_Select_Browser_set_image(self: Fl_Select_BrowserPtr, a1: bytes)
extern def Fl_Select_Browser_handle(self: Fl_Select_BrowserPtr, cb: bytes, data: bytes)
extern def Fl_Select_Browser_handle_event(self: Fl_Select_BrowserPtr, event: int) -> int
extern def Fl_Select_Browser_draw(self: Fl_Select_BrowserPtr, cb: bytes, data: bytes)
extern def Fl_Select_Browser_resize_callback(self: Fl_Select_BrowserPtr, cb1: bytes, data: bytes)
extern def Fl_Select_Browser_set_when(self: Fl_Select_BrowserPtr, a1: int)
extern def Fl_Select_Browser_when(self: Fl_Select_BrowserPtr) -> int
extern def Fl_Select_Browser_image(self: Fl_Select_BrowserPtr) -> bytes
extern def Fl_Select_Browser_parent(self: Fl_Select_BrowserPtr) -> bytes
extern def Fl_Select_Browser_selection_color(self: Fl_Select_BrowserPtr) -> t.CUInt32T
extern def Fl_Select_Browser_set_selection_color(self: Fl_Select_BrowserPtr, color: t.CUInt32T)
extern def Fl_Select_Browser_do_callback(self: Fl_Select_BrowserPtr)
extern def Fl_Select_Browser_inside(self: Fl_Select_BrowserPtr, a1: bytes) -> int
extern def Fl_Select_Browser_window(self: Fl_Select_BrowserPtr) -> bytes
extern def Fl_Select_Browser_top_window(self: Fl_Select_BrowserPtr) -> bytes
extern def Fl_Select_Browser_takes_events(self: Fl_Select_BrowserPtr) -> int
extern def Fl_Select_Browser_user_data(self: Fl_Select_BrowserPtr) -> bytes
extern def Fl_Select_Browser_take_focus(self: Fl_Select_BrowserPtr) -> int
extern def Fl_Select_Browser_set_visible_focus(self: Fl_Select_BrowserPtr)
extern def Fl_Select_Browser_clear_visible_focus(self: Fl_Select_BrowserPtr)
extern def Fl_Select_Browser_visible_focus(self: Fl_Select_BrowserPtr, v: int)
extern def Fl_Select_Browser_has_visible_focus(self: Fl_Select_BrowserPtr) -> t.CUInt32T
extern def Fl_Select_Browser_set_user_data(self: Fl_Select_BrowserPtr, data: bytes)
extern def Fl_Select_Browser_draw_data(self: Fl_Select_BrowserPtr) -> bytes
extern def Fl_Select_Browser_handle_data(self: Fl_Select_BrowserPtr) -> bytes
extern def Fl_Select_Browser_set_draw_data(self: Fl_Select_BrowserPtr, data: bytes)
extern def Fl_Select_Browser_set_handle_data(self: Fl_Select_BrowserPtr, data: bytes)
extern def Fl_Select_Browser_damage(self: Fl_Select_BrowserPtr) -> t.CUInt8T
extern def Fl_Select_Browser_set_damage(self: Fl_Select_BrowserPtr, flag: t.CUInt8T)
extern def Fl_Select_Browser_set_damage_area(self: Fl_Select_BrowserPtr, flag: t.CUInt8T, x: int, y: int, w: int, h: int)
extern def Fl_Select_Browser_clear_damage(self: Fl_Select_BrowserPtr)
extern def Fl_Select_Browser_as_window(self: Fl_Select_BrowserPtr) -> bytes
extern def Fl_Select_Browser_as_group(self: Fl_Select_BrowserPtr) -> bytes
extern def Fl_Select_Browser_set_deimage(self: Fl_Select_BrowserPtr, a1: bytes)
extern def Fl_Select_Browser_deimage(self: Fl_Select_BrowserPtr) -> bytes
extern def Fl_Select_Browser_set_callback(self: Fl_Select_BrowserPtr, a1: bytes, a2: bytes)
extern def Fl_Select_Browser_visible(self: Fl_Select_BrowserPtr) -> int
extern def Fl_Select_Browser_visible_r(self: Fl_Select_BrowserPtr) -> int
extern def Fl_Select_Browser_active(self: Fl_Select_BrowserPtr) -> t.CUInt32T
extern def Fl_Select_Browser_active_r(self: Fl_Select_BrowserPtr) -> int
extern def Fl_Select_Browser_callback(self: Fl_Select_BrowserPtr) -> bytes
extern def Fl_Select_Browser_set_deletion_callback(self: Fl_Select_BrowserPtr, cb1: bytes, data: bytes)
extern def Fl_Select_Browser_from_dyn_ptr(ptr: Fl_WidgetPtr) -> Fl_Select_BrowserPtr
extern def Fl_Select_Browser_from_derived_dyn_ptr(ptr: Fl_WidgetPtr) -> Fl_Select_BrowserPtr
extern def Fl_Select_Browser_super_draw(ptr: Fl_WidgetPtr, flag: int)
extern def Fl_Select_Browser_super_draw_first(ptr: Fl_WidgetPtr, flag: int)
extern def Fl_Select_Browser_super_handle_first(ptr: Fl_WidgetPtr, flag: int)
# ----- Fl_Select_Browser (browser_declare) -----
extern def Fl_Select_Browser_value(self: Fl_Select_BrowserPtr) -> int
extern def Fl_Select_Browser_remove(self: Fl_Select_BrowserPtr, line: int)
extern def Fl_Select_Browser_add(self: Fl_Select_BrowserPtr, newtext: str)
extern def Fl_Select_Browser_insert(self: Fl_Select_BrowserPtr, line: int, newtext: str)
extern def Fl_Select_Browser_move(self: Fl_Select_BrowserPtr, to: int, from_: int)
extern def Fl_Select_Browser_swap(self: Fl_Select_BrowserPtr, a: int, b: int)
extern def Fl_Select_Browser_clear(self: Fl_Select_BrowserPtr)
extern def Fl_Select_Browser_size(self: Fl_Select_BrowserPtr) -> int
extern def Fl_Select_Browser_select(self: Fl_Select_BrowserPtr, line: int) -> int
extern def Fl_Select_Browser_select_ext(self: Fl_Select_BrowserPtr, line: int, val: int) -> int
extern def Fl_Select_Browser_selected(self: Fl_Select_BrowserPtr, line: int) -> int
extern def Fl_Select_Browser_text(self: Fl_Select_BrowserPtr, line: int) -> str
extern def Fl_Select_Browser_set_text(self: Fl_Select_BrowserPtr, line: int, newtext: str)
extern def Fl_Select_Browser_load_file(self: Fl_Select_BrowserPtr, file: str)
extern def Fl_Select_Browser_text_size(self: Fl_Select_BrowserPtr) -> int
extern def Fl_Select_Browser_set_text_size(self: Fl_Select_BrowserPtr, s: int)
extern def Fl_Select_Browser_set_icon(self: Fl_Select_BrowserPtr, line: int, icon: bytes)
extern def Fl_Select_Browser_icon(self: Fl_Select_BrowserPtr, line: int) -> bytes
extern def Fl_Select_Browser_remove_icon(self: Fl_Select_BrowserPtr, line: int)
extern def Fl_Select_Browser_topline(self: Fl_Select_BrowserPtr, line: int)
extern def Fl_Select_Browser_is_topline(self: Fl_Select_BrowserPtr) -> int
extern def Fl_Select_Browser_bottomline(self: Fl_Select_BrowserPtr, line: int)
extern def Fl_Select_Browser_middleline(self: Fl_Select_BrowserPtr, line: int)
extern def Fl_Select_Browser_format_char(self: Fl_Select_BrowserPtr) -> t.CChar
extern def Fl_Select_Browser_set_format_char(self: Fl_Select_BrowserPtr, c: t.CChar)
extern def Fl_Select_Browser_column_char(self: Fl_Select_BrowserPtr) -> t.CChar
extern def Fl_Select_Browser_set_column_char(self: Fl_Select_BrowserPtr, c: t.CChar)
extern def Fl_Select_Browser_column_widths(self: Fl_Select_BrowserPtr) -> bytes
extern def Fl_Select_Browser_set_column_widths(self: Fl_Select_BrowserPtr, arr: bytes)
extern def Fl_Select_Browser_displayed(self: Fl_Select_BrowserPtr, line: int) -> int
extern def Fl_Select_Browser_make_visible(self: Fl_Select_BrowserPtr, line: int)
extern def Fl_Select_Browser_position(self: Fl_Select_BrowserPtr) -> int
extern def Fl_Select_Browser_set_position(self: Fl_Select_BrowserPtr, pos: int)
extern def Fl_Select_Browser_hposition(self: Fl_Select_BrowserPtr) -> int
extern def Fl_Select_Browser_set_hposition(self: Fl_Select_BrowserPtr, a1: int)
extern def Fl_Select_Browser_has_scrollbar(self: Fl_Select_BrowserPtr) -> t.CUInt8T
extern def Fl_Select_Browser_set_has_scrollbar(self: Fl_Select_BrowserPtr, mode: t.CUInt8T)
extern def Fl_Select_Browser_scrollbar_size(self: Fl_Select_BrowserPtr) -> int
extern def Fl_Select_Browser_set_scrollbar_size(self: Fl_Select_BrowserPtr, newSize: int)
extern def Fl_Select_Browser_sort(self: Fl_Select_BrowserPtr)
extern def Fl_Select_Browser_scrollbar(self: Fl_Select_BrowserPtr) -> bytes
extern def Fl_Select_Browser_hscrollbar(self: Fl_Select_BrowserPtr) -> bytes
extern def Fl_Select_Browser_data(self: Fl_Select_BrowserPtr, line: int) -> bytes
extern def Fl_Select_Browser_set_data(self: Fl_Select_BrowserPtr, line: int, data: bytes)
extern def Fl_Select_Browser_hide_line(self: Fl_Select_BrowserPtr, line: int)
# ----- Fl_Multi_Browser (widget_declare) -----
extern def Fl_Multi_Browser_new(x: int, y: int, width: int, height: int, title: str) -> Fl_Multi_BrowserPtr
extern def Fl_Multi_Browser_x(self: Fl_Multi_BrowserPtr) -> int
extern def Fl_Multi_Browser_y(self: Fl_Multi_BrowserPtr) -> int
extern def Fl_Multi_Browser_width(self: Fl_Multi_BrowserPtr) -> int
extern def Fl_Multi_Browser_height(self: Fl_Multi_BrowserPtr) -> int
extern def Fl_Multi_Browser_label(self: Fl_Multi_BrowserPtr) -> str
extern def Fl_Multi_Browser_set_label(self: Fl_Multi_BrowserPtr, title: str)
extern def Fl_Multi_Browser_redraw(self: Fl_Multi_BrowserPtr)
extern def Fl_Multi_Browser_show(self: Fl_Multi_BrowserPtr)
extern def Fl_Multi_Browser_hide(self: Fl_Multi_BrowserPtr)
extern def Fl_Multi_Browser_activate(self: Fl_Multi_BrowserPtr)
extern def Fl_Multi_Browser_deactivate(self: Fl_Multi_BrowserPtr)
extern def Fl_Multi_Browser_redraw_label(self: Fl_Multi_BrowserPtr)
extern def Fl_Multi_Browser_resize(self: Fl_Multi_BrowserPtr, x: int, y: int, width: int, height: int)
extern def Fl_Multi_Browser_widget_resize(self: Fl_Multi_BrowserPtr, x: int, y: int, width: int, height: int)
extern def Fl_Multi_Browser_tooltip(self: Fl_Multi_BrowserPtr) -> str
extern def Fl_Multi_Browser_set_tooltip(self: Fl_Multi_BrowserPtr, txt: str)
extern def Fl_Multi_Browser_get_type(self: Fl_Multi_BrowserPtr) -> int
extern def Fl_Multi_Browser_set_type(self: Fl_Multi_BrowserPtr, typ: int)
extern def Fl_Multi_Browser_color(self: Fl_Multi_BrowserPtr) -> t.CUInt32T
extern def Fl_Multi_Browser_set_color(self: Fl_Multi_BrowserPtr, color: t.CUInt32T)
extern def Fl_Multi_Browser_measure_label(self: Fl_Multi_BrowserPtr, a1: bytes, a2: bytes)
extern def Fl_Multi_Browser_label_color(self: Fl_Multi_BrowserPtr) -> t.CUInt32T
extern def Fl_Multi_Browser_set_label_color(self: Fl_Multi_BrowserPtr, color: t.CUInt32T)
extern def Fl_Multi_Browser_label_font(self: Fl_Multi_BrowserPtr) -> int
extern def Fl_Multi_Browser_set_label_font(self: Fl_Multi_BrowserPtr, font: int)
extern def Fl_Multi_Browser_label_size(self: Fl_Multi_BrowserPtr) -> int
extern def Fl_Multi_Browser_set_label_size(self: Fl_Multi_BrowserPtr, sz: int)
extern def Fl_Multi_Browser_label_type(self: Fl_Multi_BrowserPtr) -> int
extern def Fl_Multi_Browser_set_label_type(self: Fl_Multi_BrowserPtr, typ: int)
extern def Fl_Multi_Browser_box(self: Fl_Multi_BrowserPtr) -> int
extern def Fl_Multi_Browser_set_box(self: Fl_Multi_BrowserPtr, typ: int)
extern def Fl_Multi_Browser_changed(self: Fl_Multi_BrowserPtr) -> int
extern def Fl_Multi_Browser_set_changed(self: Fl_Multi_BrowserPtr)
extern def Fl_Multi_Browser_clear_changed(self: Fl_Multi_BrowserPtr)
extern def Fl_Multi_Browser_align(self: Fl_Multi_BrowserPtr) -> int
extern def Fl_Multi_Browser_set_align(self: Fl_Multi_BrowserPtr, typ: int)
extern def Fl_Multi_Browser_delete(self: Fl_Multi_BrowserPtr)
extern def Fl_Multi_Browser_set_image(self: Fl_Multi_BrowserPtr, a1: bytes)
extern def Fl_Multi_Browser_handle(self: Fl_Multi_BrowserPtr, cb: bytes, data: bytes)
extern def Fl_Multi_Browser_handle_event(self: Fl_Multi_BrowserPtr, event: int) -> int
extern def Fl_Multi_Browser_draw(self: Fl_Multi_BrowserPtr, cb: bytes, data: bytes)
extern def Fl_Multi_Browser_resize_callback(self: Fl_Multi_BrowserPtr, cb1: bytes, data: bytes)
extern def Fl_Multi_Browser_set_when(self: Fl_Multi_BrowserPtr, a1: int)
extern def Fl_Multi_Browser_when(self: Fl_Multi_BrowserPtr) -> int
extern def Fl_Multi_Browser_image(self: Fl_Multi_BrowserPtr) -> bytes
extern def Fl_Multi_Browser_parent(self: Fl_Multi_BrowserPtr) -> bytes
extern def Fl_Multi_Browser_selection_color(self: Fl_Multi_BrowserPtr) -> t.CUInt32T
extern def Fl_Multi_Browser_set_selection_color(self: Fl_Multi_BrowserPtr, color: t.CUInt32T)
extern def Fl_Multi_Browser_do_callback(self: Fl_Multi_BrowserPtr)
extern def Fl_Multi_Browser_inside(self: Fl_Multi_BrowserPtr, a1: bytes) -> int
extern def Fl_Multi_Browser_window(self: Fl_Multi_BrowserPtr) -> bytes
extern def Fl_Multi_Browser_top_window(self: Fl_Multi_BrowserPtr) -> bytes
extern def Fl_Multi_Browser_takes_events(self: Fl_Multi_BrowserPtr) -> int
extern def Fl_Multi_Browser_user_data(self: Fl_Multi_BrowserPtr) -> bytes
extern def Fl_Multi_Browser_take_focus(self: Fl_Multi_BrowserPtr) -> int
extern def Fl_Multi_Browser_set_visible_focus(self: Fl_Multi_BrowserPtr)
extern def Fl_Multi_Browser_clear_visible_focus(self: Fl_Multi_BrowserPtr)
extern def Fl_Multi_Browser_visible_focus(self: Fl_Multi_BrowserPtr, v: int)
extern def Fl_Multi_Browser_has_visible_focus(self: Fl_Multi_BrowserPtr) -> t.CUInt32T
extern def Fl_Multi_Browser_set_user_data(self: Fl_Multi_BrowserPtr, data: bytes)
extern def Fl_Multi_Browser_draw_data(self: Fl_Multi_BrowserPtr) -> bytes
extern def Fl_Multi_Browser_handle_data(self: Fl_Multi_BrowserPtr) -> bytes
extern def Fl_Multi_Browser_set_draw_data(self: Fl_Multi_BrowserPtr, data: bytes)
extern def Fl_Multi_Browser_set_handle_data(self: Fl_Multi_BrowserPtr, data: bytes)
extern def Fl_Multi_Browser_damage(self: Fl_Multi_BrowserPtr) -> t.CUInt8T
extern def Fl_Multi_Browser_set_damage(self: Fl_Multi_BrowserPtr, flag: t.CUInt8T)
extern def Fl_Multi_Browser_set_damage_area(self: Fl_Multi_BrowserPtr, flag: t.CUInt8T, x: int, y: int, w: int, h: int)
extern def Fl_Multi_Browser_clear_damage(self: Fl_Multi_BrowserPtr)
extern def Fl_Multi_Browser_as_window(self: Fl_Multi_BrowserPtr) -> bytes
extern def Fl_Multi_Browser_as_group(self: Fl_Multi_BrowserPtr) -> bytes
extern def Fl_Multi_Browser_set_deimage(self: Fl_Multi_BrowserPtr, a1: bytes)
extern def Fl_Multi_Browser_deimage(self: Fl_Multi_BrowserPtr) -> bytes
extern def Fl_Multi_Browser_set_callback(self: Fl_Multi_BrowserPtr, a1: bytes, a2: bytes)
extern def Fl_Multi_Browser_visible(self: Fl_Multi_BrowserPtr) -> int
extern def Fl_Multi_Browser_visible_r(self: Fl_Multi_BrowserPtr) -> int
extern def Fl_Multi_Browser_active(self: Fl_Multi_BrowserPtr) -> t.CUInt32T
extern def Fl_Multi_Browser_active_r(self: Fl_Multi_BrowserPtr) -> int
extern def Fl_Multi_Browser_callback(self: Fl_Multi_BrowserPtr) -> bytes
extern def Fl_Multi_Browser_set_deletion_callback(self: Fl_Multi_BrowserPtr, cb1: bytes, data: bytes)
extern def Fl_Multi_Browser_from_dyn_ptr(ptr: Fl_WidgetPtr) -> Fl_Multi_BrowserPtr
extern def Fl_Multi_Browser_from_derived_dyn_ptr(ptr: Fl_WidgetPtr) -> Fl_Multi_BrowserPtr
extern def Fl_Multi_Browser_super_draw(ptr: Fl_WidgetPtr, flag: int)
extern def Fl_Multi_Browser_super_draw_first(ptr: Fl_WidgetPtr, flag: int)
extern def Fl_Multi_Browser_super_handle_first(ptr: Fl_WidgetPtr, flag: int)
# ----- Fl_Multi_Browser (browser_declare) -----
extern def Fl_Multi_Browser_value(self: Fl_Multi_BrowserPtr) -> int
extern def Fl_Multi_Browser_remove(self: Fl_Multi_BrowserPtr, line: int)
extern def Fl_Multi_Browser_add(self: Fl_Multi_BrowserPtr, newtext: str)
extern def Fl_Multi_Browser_insert(self: Fl_Multi_BrowserPtr, line: int, newtext: str)
extern def Fl_Multi_Browser_move(self: Fl_Multi_BrowserPtr, to: int, from_: int)
extern def Fl_Multi_Browser_swap(self: Fl_Multi_BrowserPtr, a: int, b: int)
extern def Fl_Multi_Browser_clear(self: Fl_Multi_BrowserPtr)
extern def Fl_Multi_Browser_size(self: Fl_Multi_BrowserPtr) -> int
extern def Fl_Multi_Browser_select(self: Fl_Multi_BrowserPtr, line: int) -> int
extern def Fl_Multi_Browser_select_ext(self: Fl_Multi_BrowserPtr, line: int, val: int) -> int
extern def Fl_Multi_Browser_selected(self: Fl_Multi_BrowserPtr, line: int) -> int
extern def Fl_Multi_Browser_text(self: Fl_Multi_BrowserPtr, line: int) -> str
extern def Fl_Multi_Browser_set_text(self: Fl_Multi_BrowserPtr, line: int, newtext: str)
extern def Fl_Multi_Browser_load_file(self: Fl_Multi_BrowserPtr, file: str)
extern def Fl_Multi_Browser_text_size(self: Fl_Multi_BrowserPtr) -> int
extern def Fl_Multi_Browser_set_text_size(self: Fl_Multi_BrowserPtr, s: int)
extern def Fl_Multi_Browser_set_icon(self: Fl_Multi_BrowserPtr, line: int, icon: bytes)
extern def Fl_Multi_Browser_icon(self: Fl_Multi_BrowserPtr, line: int) -> bytes
extern def Fl_Multi_Browser_remove_icon(self: Fl_Multi_BrowserPtr, line: int)
extern def Fl_Multi_Browser_topline(self: Fl_Multi_BrowserPtr, line: int)
extern def Fl_Multi_Browser_is_topline(self: Fl_Multi_BrowserPtr) -> int
extern def Fl_Multi_Browser_bottomline(self: Fl_Multi_BrowserPtr, line: int)
extern def Fl_Multi_Browser_middleline(self: Fl_Multi_BrowserPtr, line: int)
extern def Fl_Multi_Browser_format_char(self: Fl_Multi_BrowserPtr) -> t.CChar
extern def Fl_Multi_Browser_set_format_char(self: Fl_Multi_BrowserPtr, c: t.CChar)
extern def Fl_Multi_Browser_column_char(self: Fl_Multi_BrowserPtr) -> t.CChar
extern def Fl_Multi_Browser_set_column_char(self: Fl_Multi_BrowserPtr, c: t.CChar)
extern def Fl_Multi_Browser_column_widths(self: Fl_Multi_BrowserPtr) -> bytes
extern def Fl_Multi_Browser_set_column_widths(self: Fl_Multi_BrowserPtr, arr: bytes)
extern def Fl_Multi_Browser_displayed(self: Fl_Multi_BrowserPtr, line: int) -> int
extern def Fl_Multi_Browser_make_visible(self: Fl_Multi_BrowserPtr, line: int)
extern def Fl_Multi_Browser_position(self: Fl_Multi_BrowserPtr) -> int
extern def Fl_Multi_Browser_set_position(self: Fl_Multi_BrowserPtr, pos: int)
extern def Fl_Multi_Browser_hposition(self: Fl_Multi_BrowserPtr) -> int
extern def Fl_Multi_Browser_set_hposition(self: Fl_Multi_BrowserPtr, a1: int)
extern def Fl_Multi_Browser_has_scrollbar(self: Fl_Multi_BrowserPtr) -> t.CUInt8T
extern def Fl_Multi_Browser_set_has_scrollbar(self: Fl_Multi_BrowserPtr, mode: t.CUInt8T)
extern def Fl_Multi_Browser_scrollbar_size(self: Fl_Multi_BrowserPtr) -> int
extern def Fl_Multi_Browser_set_scrollbar_size(self: Fl_Multi_BrowserPtr, newSize: int)
extern def Fl_Multi_Browser_sort(self: Fl_Multi_BrowserPtr)
extern def Fl_Multi_Browser_scrollbar(self: Fl_Multi_BrowserPtr) -> bytes
extern def Fl_Multi_Browser_hscrollbar(self: Fl_Multi_BrowserPtr) -> bytes
extern def Fl_Multi_Browser_data(self: Fl_Multi_BrowserPtr, line: int) -> bytes
extern def Fl_Multi_Browser_set_data(self: Fl_Multi_BrowserPtr, line: int, data: bytes)
extern def Fl_Multi_Browser_hide_line(self: Fl_Multi_BrowserPtr, line: int)
# ----- Fl_File_Browser (widget_declare) -----
extern def Fl_File_Browser_new(x: int, y: int, width: int, height: int, title: str) -> Fl_File_BrowserPtr
extern def Fl_File_Browser_x(self: Fl_File_BrowserPtr) -> int
extern def Fl_File_Browser_y(self: Fl_File_BrowserPtr) -> int
extern def Fl_File_Browser_width(self: Fl_File_BrowserPtr) -> int
extern def Fl_File_Browser_height(self: Fl_File_BrowserPtr) -> int
extern def Fl_File_Browser_label(self: Fl_File_BrowserPtr) -> str
extern def Fl_File_Browser_set_label(self: Fl_File_BrowserPtr, title: str)
extern def Fl_File_Browser_redraw(self: Fl_File_BrowserPtr)
extern def Fl_File_Browser_show(self: Fl_File_BrowserPtr)
extern def Fl_File_Browser_hide(self: Fl_File_BrowserPtr)
extern def Fl_File_Browser_activate(self: Fl_File_BrowserPtr)
extern def Fl_File_Browser_deactivate(self: Fl_File_BrowserPtr)
extern def Fl_File_Browser_redraw_label(self: Fl_File_BrowserPtr)
extern def Fl_File_Browser_resize(self: Fl_File_BrowserPtr, x: int, y: int, width: int, height: int)
extern def Fl_File_Browser_widget_resize(self: Fl_File_BrowserPtr, x: int, y: int, width: int, height: int)
extern def Fl_File_Browser_tooltip(self: Fl_File_BrowserPtr) -> str
extern def Fl_File_Browser_set_tooltip(self: Fl_File_BrowserPtr, txt: str)
extern def Fl_File_Browser_get_type(self: Fl_File_BrowserPtr) -> int
extern def Fl_File_Browser_set_type(self: Fl_File_BrowserPtr, typ: int)
extern def Fl_File_Browser_color(self: Fl_File_BrowserPtr) -> t.CUInt32T
extern def Fl_File_Browser_set_color(self: Fl_File_BrowserPtr, color: t.CUInt32T)
extern def Fl_File_Browser_measure_label(self: Fl_File_BrowserPtr, a1: bytes, a2: bytes)
extern def Fl_File_Browser_label_color(self: Fl_File_BrowserPtr) -> t.CUInt32T
extern def Fl_File_Browser_set_label_color(self: Fl_File_BrowserPtr, color: t.CUInt32T)
extern def Fl_File_Browser_label_font(self: Fl_File_BrowserPtr) -> int
extern def Fl_File_Browser_set_label_font(self: Fl_File_BrowserPtr, font: int)
extern def Fl_File_Browser_label_size(self: Fl_File_BrowserPtr) -> int
extern def Fl_File_Browser_set_label_size(self: Fl_File_BrowserPtr, sz: int)
extern def Fl_File_Browser_label_type(self: Fl_File_BrowserPtr) -> int
extern def Fl_File_Browser_set_label_type(self: Fl_File_BrowserPtr, typ: int)
extern def Fl_File_Browser_box(self: Fl_File_BrowserPtr) -> int
extern def Fl_File_Browser_set_box(self: Fl_File_BrowserPtr, typ: int)
extern def Fl_File_Browser_changed(self: Fl_File_BrowserPtr) -> int
extern def Fl_File_Browser_set_changed(self: Fl_File_BrowserPtr)
extern def Fl_File_Browser_clear_changed(self: Fl_File_BrowserPtr)
extern def Fl_File_Browser_align(self: Fl_File_BrowserPtr) -> int
extern def Fl_File_Browser_set_align(self: Fl_File_BrowserPtr, typ: int)
extern def Fl_File_Browser_delete(self: Fl_File_BrowserPtr)
extern def Fl_File_Browser_set_image(self: Fl_File_BrowserPtr, a1: bytes)
extern def Fl_File_Browser_handle(self: Fl_File_BrowserPtr, cb: bytes, data: bytes)
extern def Fl_File_Browser_handle_event(self: Fl_File_BrowserPtr, event: int) -> int
extern def Fl_File_Browser_draw(self: Fl_File_BrowserPtr, cb: bytes, data: bytes)
extern def Fl_File_Browser_resize_callback(self: Fl_File_BrowserPtr, cb1: bytes, data: bytes)
extern def Fl_File_Browser_set_when(self: Fl_File_BrowserPtr, a1: int)
extern def Fl_File_Browser_when(self: Fl_File_BrowserPtr) -> int
extern def Fl_File_Browser_image(self: Fl_File_BrowserPtr) -> bytes
extern def Fl_File_Browser_parent(self: Fl_File_BrowserPtr) -> bytes
extern def Fl_File_Browser_selection_color(self: Fl_File_BrowserPtr) -> t.CUInt32T
extern def Fl_File_Browser_set_selection_color(self: Fl_File_BrowserPtr, color: t.CUInt32T)
extern def Fl_File_Browser_do_callback(self: Fl_File_BrowserPtr)
extern def Fl_File_Browser_inside(self: Fl_File_BrowserPtr, a1: bytes) -> int
extern def Fl_File_Browser_window(self: Fl_File_BrowserPtr) -> bytes
extern def Fl_File_Browser_top_window(self: Fl_File_BrowserPtr) -> bytes
extern def Fl_File_Browser_takes_events(self: Fl_File_BrowserPtr) -> int
extern def Fl_File_Browser_user_data(self: Fl_File_BrowserPtr) -> bytes
extern def Fl_File_Browser_take_focus(self: Fl_File_BrowserPtr) -> int
extern def Fl_File_Browser_set_visible_focus(self: Fl_File_BrowserPtr)
extern def Fl_File_Browser_clear_visible_focus(self: Fl_File_BrowserPtr)
extern def Fl_File_Browser_visible_focus(self: Fl_File_BrowserPtr, v: int)
extern def Fl_File_Browser_has_visible_focus(self: Fl_File_BrowserPtr) -> t.CUInt32T
extern def Fl_File_Browser_set_user_data(self: Fl_File_BrowserPtr, data: bytes)
extern def Fl_File_Browser_draw_data(self: Fl_File_BrowserPtr) -> bytes
extern def Fl_File_Browser_handle_data(self: Fl_File_BrowserPtr) -> bytes
extern def Fl_File_Browser_set_draw_data(self: Fl_File_BrowserPtr, data: bytes)
extern def Fl_File_Browser_set_handle_data(self: Fl_File_BrowserPtr, data: bytes)
extern def Fl_File_Browser_damage(self: Fl_File_BrowserPtr) -> t.CUInt8T
extern def Fl_File_Browser_set_damage(self: Fl_File_BrowserPtr, flag: t.CUInt8T)
extern def Fl_File_Browser_set_damage_area(self: Fl_File_BrowserPtr, flag: t.CUInt8T, x: int, y: int, w: int, h: int)
extern def Fl_File_Browser_clear_damage(self: Fl_File_BrowserPtr)
extern def Fl_File_Browser_as_window(self: Fl_File_BrowserPtr) -> bytes
extern def Fl_File_Browser_as_group(self: Fl_File_BrowserPtr) -> bytes
extern def Fl_File_Browser_set_deimage(self: Fl_File_BrowserPtr, a1: bytes)
extern def Fl_File_Browser_deimage(self: Fl_File_BrowserPtr) -> bytes
extern def Fl_File_Browser_set_callback(self: Fl_File_BrowserPtr, a1: bytes, a2: bytes)
extern def Fl_File_Browser_visible(self: Fl_File_BrowserPtr) -> int
extern def Fl_File_Browser_visible_r(self: Fl_File_BrowserPtr) -> int
extern def Fl_File_Browser_active(self: Fl_File_BrowserPtr) -> t.CUInt32T
extern def Fl_File_Browser_active_r(self: Fl_File_BrowserPtr) -> int
extern def Fl_File_Browser_callback(self: Fl_File_BrowserPtr) -> bytes
extern def Fl_File_Browser_set_deletion_callback(self: Fl_File_BrowserPtr, cb1: bytes, data: bytes)
extern def Fl_File_Browser_from_dyn_ptr(ptr: Fl_WidgetPtr) -> Fl_File_BrowserPtr
extern def Fl_File_Browser_from_derived_dyn_ptr(ptr: Fl_WidgetPtr) -> Fl_File_BrowserPtr
extern def Fl_File_Browser_super_draw(ptr: Fl_WidgetPtr, flag: int)
extern def Fl_File_Browser_super_draw_first(ptr: Fl_WidgetPtr, flag: int)
extern def Fl_File_Browser_super_handle_first(ptr: Fl_WidgetPtr, flag: int)
# ----- Fl_File_Browser (browser_declare) -----
extern def Fl_File_Browser_value(self: Fl_File_BrowserPtr) -> int
extern def Fl_File_Browser_remove(self: Fl_File_BrowserPtr, line: int)
extern def Fl_File_Browser_add(self: Fl_File_BrowserPtr, newtext: str)
extern def Fl_File_Browser_insert(self: Fl_File_BrowserPtr, line: int, newtext: str)
extern def Fl_File_Browser_move(self: Fl_File_BrowserPtr, to: int, from_: int)
extern def Fl_File_Browser_swap(self: Fl_File_BrowserPtr, a: int, b: int)
extern def Fl_File_Browser_clear(self: Fl_File_BrowserPtr)
extern def Fl_File_Browser_size(self: Fl_File_BrowserPtr) -> int
extern def Fl_File_Browser_select(self: Fl_File_BrowserPtr, line: int) -> int
extern def Fl_File_Browser_select_ext(self: Fl_File_BrowserPtr, line: int, val: int) -> int
extern def Fl_File_Browser_selected(self: Fl_File_BrowserPtr, line: int) -> int
extern def Fl_File_Browser_text(self: Fl_File_BrowserPtr, line: int) -> str
extern def Fl_File_Browser_set_text(self: Fl_File_BrowserPtr, line: int, newtext: str)
extern def Fl_File_Browser_load_file(self: Fl_File_BrowserPtr, file: str)
extern def Fl_File_Browser_text_size(self: Fl_File_BrowserPtr) -> int
extern def Fl_File_Browser_set_text_size(self: Fl_File_BrowserPtr, s: int)
extern def Fl_File_Browser_set_icon(self: Fl_File_BrowserPtr, line: int, icon: bytes)
extern def Fl_File_Browser_icon(self: Fl_File_BrowserPtr, line: int) -> bytes
extern def Fl_File_Browser_remove_icon(self: Fl_File_BrowserPtr, line: int)
extern def Fl_File_Browser_topline(self: Fl_File_BrowserPtr, line: int)
extern def Fl_File_Browser_is_topline(self: Fl_File_BrowserPtr) -> int
extern def Fl_File_Browser_bottomline(self: Fl_File_BrowserPtr, line: int)
extern def Fl_File_Browser_middleline(self: Fl_File_BrowserPtr, line: int)
extern def Fl_File_Browser_format_char(self: Fl_File_BrowserPtr) -> t.CChar
extern def Fl_File_Browser_set_format_char(self: Fl_File_BrowserPtr, c: t.CChar)
extern def Fl_File_Browser_column_char(self: Fl_File_BrowserPtr) -> t.CChar
extern def Fl_File_Browser_set_column_char(self: Fl_File_BrowserPtr, c: t.CChar)
extern def Fl_File_Browser_column_widths(self: Fl_File_BrowserPtr) -> bytes
extern def Fl_File_Browser_set_column_widths(self: Fl_File_BrowserPtr, arr: bytes)
extern def Fl_File_Browser_displayed(self: Fl_File_BrowserPtr, line: int) -> int
extern def Fl_File_Browser_make_visible(self: Fl_File_BrowserPtr, line: int)
extern def Fl_File_Browser_position(self: Fl_File_BrowserPtr) -> int
extern def Fl_File_Browser_set_position(self: Fl_File_BrowserPtr, pos: int)
extern def Fl_File_Browser_hposition(self: Fl_File_BrowserPtr) -> int
extern def Fl_File_Browser_set_hposition(self: Fl_File_BrowserPtr, a1: int)
extern def Fl_File_Browser_has_scrollbar(self: Fl_File_BrowserPtr) -> t.CUInt8T
extern def Fl_File_Browser_set_has_scrollbar(self: Fl_File_BrowserPtr, mode: t.CUInt8T)
extern def Fl_File_Browser_scrollbar_size(self: Fl_File_BrowserPtr) -> int
extern def Fl_File_Browser_set_scrollbar_size(self: Fl_File_BrowserPtr, newSize: int)
extern def Fl_File_Browser_sort(self: Fl_File_BrowserPtr)
extern def Fl_File_Browser_scrollbar(self: Fl_File_BrowserPtr) -> bytes
extern def Fl_File_Browser_hscrollbar(self: Fl_File_BrowserPtr) -> bytes
extern def Fl_File_Browser_data(self: Fl_File_BrowserPtr, line: int) -> bytes
extern def Fl_File_Browser_set_data(self: Fl_File_BrowserPtr, line: int, data: bytes)
extern def Fl_File_Browser_hide_line(self: Fl_File_BrowserPtr, line: int)
# ----- Fl_Check_Browser (widget_declare) -----
extern def Fl_Check_Browser_new(x: int, y: int, width: int, height: int, title: str) -> Fl_Check_BrowserPtr
extern def Fl_Check_Browser_x(self: Fl_Check_BrowserPtr) -> int
extern def Fl_Check_Browser_y(self: Fl_Check_BrowserPtr) -> int
extern def Fl_Check_Browser_width(self: Fl_Check_BrowserPtr) -> int
extern def Fl_Check_Browser_height(self: Fl_Check_BrowserPtr) -> int
extern def Fl_Check_Browser_label(self: Fl_Check_BrowserPtr) -> str
extern def Fl_Check_Browser_set_label(self: Fl_Check_BrowserPtr, title: str)
extern def Fl_Check_Browser_redraw(self: Fl_Check_BrowserPtr)
extern def Fl_Check_Browser_show(self: Fl_Check_BrowserPtr)
extern def Fl_Check_Browser_hide(self: Fl_Check_BrowserPtr)
extern def Fl_Check_Browser_activate(self: Fl_Check_BrowserPtr)
extern def Fl_Check_Browser_deactivate(self: Fl_Check_BrowserPtr)
extern def Fl_Check_Browser_redraw_label(self: Fl_Check_BrowserPtr)
extern def Fl_Check_Browser_resize(self: Fl_Check_BrowserPtr, x: int, y: int, width: int, height: int)
extern def Fl_Check_Browser_widget_resize(self: Fl_Check_BrowserPtr, x: int, y: int, width: int, height: int)
extern def Fl_Check_Browser_tooltip(self: Fl_Check_BrowserPtr) -> str
extern def Fl_Check_Browser_set_tooltip(self: Fl_Check_BrowserPtr, txt: str)
extern def Fl_Check_Browser_get_type(self: Fl_Check_BrowserPtr) -> int
extern def Fl_Check_Browser_set_type(self: Fl_Check_BrowserPtr, typ: int)
extern def Fl_Check_Browser_color(self: Fl_Check_BrowserPtr) -> t.CUInt32T
extern def Fl_Check_Browser_set_color(self: Fl_Check_BrowserPtr, color: t.CUInt32T)
extern def Fl_Check_Browser_measure_label(self: Fl_Check_BrowserPtr, a1: bytes, a2: bytes)
extern def Fl_Check_Browser_label_color(self: Fl_Check_BrowserPtr) -> t.CUInt32T
extern def Fl_Check_Browser_set_label_color(self: Fl_Check_BrowserPtr, color: t.CUInt32T)
extern def Fl_Check_Browser_label_font(self: Fl_Check_BrowserPtr) -> int
extern def Fl_Check_Browser_set_label_font(self: Fl_Check_BrowserPtr, font: int)
extern def Fl_Check_Browser_label_size(self: Fl_Check_BrowserPtr) -> int
extern def Fl_Check_Browser_set_label_size(self: Fl_Check_BrowserPtr, sz: int)
extern def Fl_Check_Browser_label_type(self: Fl_Check_BrowserPtr) -> int
extern def Fl_Check_Browser_set_label_type(self: Fl_Check_BrowserPtr, typ: int)
extern def Fl_Check_Browser_box(self: Fl_Check_BrowserPtr) -> int
extern def Fl_Check_Browser_set_box(self: Fl_Check_BrowserPtr, typ: int)
extern def Fl_Check_Browser_changed(self: Fl_Check_BrowserPtr) -> int
extern def Fl_Check_Browser_set_changed(self: Fl_Check_BrowserPtr)
extern def Fl_Check_Browser_clear_changed(self: Fl_Check_BrowserPtr)
extern def Fl_Check_Browser_align(self: Fl_Check_BrowserPtr) -> int
extern def Fl_Check_Browser_set_align(self: Fl_Check_BrowserPtr, typ: int)
extern def Fl_Check_Browser_delete(self: Fl_Check_BrowserPtr)
extern def Fl_Check_Browser_set_image(self: Fl_Check_BrowserPtr, a1: bytes)
extern def Fl_Check_Browser_handle(self: Fl_Check_BrowserPtr, cb: bytes, data: bytes)
extern def Fl_Check_Browser_handle_event(self: Fl_Check_BrowserPtr, event: int) -> int
extern def Fl_Check_Browser_draw(self: Fl_Check_BrowserPtr, cb: bytes, data: bytes)
extern def Fl_Check_Browser_resize_callback(self: Fl_Check_BrowserPtr, cb1: bytes, data: bytes)
extern def Fl_Check_Browser_set_when(self: Fl_Check_BrowserPtr, a1: int)
extern def Fl_Check_Browser_when(self: Fl_Check_BrowserPtr) -> int
extern def Fl_Check_Browser_image(self: Fl_Check_BrowserPtr) -> bytes
extern def Fl_Check_Browser_parent(self: Fl_Check_BrowserPtr) -> bytes
extern def Fl_Check_Browser_selection_color(self: Fl_Check_BrowserPtr) -> t.CUInt32T
extern def Fl_Check_Browser_set_selection_color(self: Fl_Check_BrowserPtr, color: t.CUInt32T)
extern def Fl_Check_Browser_do_callback(self: Fl_Check_BrowserPtr)
extern def Fl_Check_Browser_inside(self: Fl_Check_BrowserPtr, a1: bytes) -> int
extern def Fl_Check_Browser_window(self: Fl_Check_BrowserPtr) -> bytes
extern def Fl_Check_Browser_top_window(self: Fl_Check_BrowserPtr) -> bytes
extern def Fl_Check_Browser_takes_events(self: Fl_Check_BrowserPtr) -> int
extern def Fl_Check_Browser_user_data(self: Fl_Check_BrowserPtr) -> bytes
extern def Fl_Check_Browser_take_focus(self: Fl_Check_BrowserPtr) -> int
extern def Fl_Check_Browser_set_visible_focus(self: Fl_Check_BrowserPtr)
extern def Fl_Check_Browser_clear_visible_focus(self: Fl_Check_BrowserPtr)
extern def Fl_Check_Browser_visible_focus(self: Fl_Check_BrowserPtr, v: int)
extern def Fl_Check_Browser_has_visible_focus(self: Fl_Check_BrowserPtr) -> t.CUInt32T
extern def Fl_Check_Browser_set_user_data(self: Fl_Check_BrowserPtr, data: bytes)
extern def Fl_Check_Browser_draw_data(self: Fl_Check_BrowserPtr) -> bytes
extern def Fl_Check_Browser_handle_data(self: Fl_Check_BrowserPtr) -> bytes
extern def Fl_Check_Browser_set_draw_data(self: Fl_Check_BrowserPtr, data: bytes)
extern def Fl_Check_Browser_set_handle_data(self: Fl_Check_BrowserPtr, data: bytes)
extern def Fl_Check_Browser_damage(self: Fl_Check_BrowserPtr) -> t.CUInt8T
extern def Fl_Check_Browser_set_damage(self: Fl_Check_BrowserPtr, flag: t.CUInt8T)
extern def Fl_Check_Browser_set_damage_area(self: Fl_Check_BrowserPtr, flag: t.CUInt8T, x: int, y: int, w: int, h: int)
extern def Fl_Check_Browser_clear_damage(self: Fl_Check_BrowserPtr)
extern def Fl_Check_Browser_as_window(self: Fl_Check_BrowserPtr) -> bytes
extern def Fl_Check_Browser_as_group(self: Fl_Check_BrowserPtr) -> bytes
extern def Fl_Check_Browser_set_deimage(self: Fl_Check_BrowserPtr, a1: bytes)
extern def Fl_Check_Browser_deimage(self: Fl_Check_BrowserPtr) -> bytes
extern def Fl_Check_Browser_set_callback(self: Fl_Check_BrowserPtr, a1: bytes, a2: bytes)
extern def Fl_Check_Browser_visible(self: Fl_Check_BrowserPtr) -> int
extern def Fl_Check_Browser_visible_r(self: Fl_Check_BrowserPtr) -> int
extern def Fl_Check_Browser_active(self: Fl_Check_BrowserPtr) -> t.CUInt32T
extern def Fl_Check_Browser_active_r(self: Fl_Check_BrowserPtr) -> int
extern def Fl_Check_Browser_callback(self: Fl_Check_BrowserPtr) -> bytes
extern def Fl_Check_Browser_set_deletion_callback(self: Fl_Check_BrowserPtr, cb1: bytes, data: bytes)
extern def Fl_Check_Browser_from_dyn_ptr(ptr: Fl_WidgetPtr) -> Fl_Check_BrowserPtr
extern def Fl_Check_Browser_from_derived_dyn_ptr(ptr: Fl_WidgetPtr) -> Fl_Check_BrowserPtr
extern def Fl_Check_Browser_super_draw(ptr: Fl_WidgetPtr, flag: int)
extern def Fl_Check_Browser_super_draw_first(ptr: Fl_WidgetPtr, flag: int)
extern def Fl_Check_Browser_super_handle_first(ptr: Fl_WidgetPtr, flag: int)
extern def Fl_File_Browser_iconsize(self: Fl_File_BrowserPtr) -> bytes
extern def Fl_File_Browser_set_iconsize(self: Fl_File_BrowserPtr, s: bytes)
extern def Fl_File_Browser_set_filter(self: Fl_File_BrowserPtr, pattern: str)
extern def Fl_File_Browser_filter(self: Fl_File_BrowserPtr) -> str
extern def Fl_File_Browser_filetype(self: Fl_File_BrowserPtr) -> int
extern def Fl_File_Browser_set_filetype(self: Fl_File_BrowserPtr, t: int)
extern def Fl_Check_Browser_add(self: Fl_Check_BrowserPtr, s: str, b: int) -> int
extern def Fl_Check_Browser_remove(self: Fl_Check_BrowserPtr, item: int) -> int
extern def Fl_Check_Browser_clear(self: Fl_Check_BrowserPtr)
extern def Fl_Check_Browser_nitems(self: Fl_Check_BrowserPtr) -> int
extern def Fl_Check_Browser_nchecked(self: Fl_Check_BrowserPtr) -> int
extern def Fl_Check_Browser_checked(self: Fl_Check_BrowserPtr, item: int) -> int
extern def Fl_Check_Browser_set_checked(self: Fl_Check_BrowserPtr, item: int)
extern def Fl_Check_Browser_check_all(self: Fl_Check_BrowserPtr)
extern def Fl_Check_Browser_check_none(self: Fl_Check_BrowserPtr)
extern def Fl_Check_Browser_value(self: Fl_Check_BrowserPtr) -> int
extern def Fl_Check_Browser_text(self: Fl_Check_BrowserPtr, item: int) -> str
extern def Fl_Check_Browser_position(self: Fl_Check_BrowserPtr) -> int
extern def Fl_Check_Browser_set_position(self: Fl_Check_BrowserPtr, pos: int)
extern def Fl_Check_Browser_hposition(self: Fl_Check_BrowserPtr) -> int
extern def Fl_Check_Browser_set_hposition(self: Fl_Check_BrowserPtr, a1: int)
extern def Fl_Check_Browser_has_scrollbar(self: Fl_Check_BrowserPtr) -> t.CUInt8T
extern def Fl_Check_Browser_scrollbar(self: Fl_Check_BrowserPtr) -> bytes
extern def Fl_Check_Browser_hscrollbar(self: Fl_Check_BrowserPtr) -> bytes
extern def Fl_Check_Browser_set_has_scrollbar(self: Fl_Check_BrowserPtr, mode: t.CUInt8T)
extern def Fl_Check_Browser_scrollbar_size(self: Fl_Check_BrowserPtr) -> int
extern def Fl_Check_Browser_set_scrollbar_size(self: Fl_Check_BrowserPtr, newSize: int)
extern def Fl_Check_Browser_sort(self: Fl_Check_BrowserPtr)
extern def Fl_Check_Browser_set_text_color(self: Fl_Check_BrowserPtr, c: t.CUInt32T)
extern def Fl_Check_Browser_text_color(self: Fl_Check_BrowserPtr) -> t.CUInt32T
extern def Fl_Check_Browser_set_text_font(self: Fl_Check_BrowserPtr, f: int)
extern def Fl_Check_Browser_text_font(self: Fl_Check_BrowserPtr) -> int
extern def Fl_Check_Browser_set_text_size(self: Fl_Check_BrowserPtr, s: int)
extern def Fl_Check_Browser_text_size(self: Fl_Check_BrowserPtr) -> int
File diff suppressed because it is too large. Load diff
+123
View File
@@ -0,0 +1,123 @@
import t, c
from fltk._types import *
# ============================================================
# fltk/_cfl_dialog.vp — cfl_dialog.h 的 extern FFI 声明(对接 cfltk C API)
# ============================================================
# 所有函数直接对应 cfltk 生成的 C 符号(extern "C"),链接目标: cfltk2。
# 类型约定: Fl_* 对象均为不透明指针 (Fl_XxxPtr);const char* → str;
# 函数指针/void* → bytes(Viper 端传 0/NULL 或不使用)。
extern def Fl_Native_File_Chooser_new(a0: int) -> Fl_Native_File_ChooserPtr
extern def Fl_Native_File_Chooser_delete(self: Fl_Native_File_ChooserPtr)
extern def Fl_Native_File_Chooser_filename(a0: Fl_Native_File_ChooserPtr) -> str
extern def Fl_Native_File_Chooser_filenames(a0: Fl_Native_File_ChooserPtr, a1: int) -> str
extern def Fl_Native_File_Chooser_count(a0: Fl_Native_File_ChooserPtr) -> int
extern def Fl_Native_File_Chooser_set_directory(a0: Fl_Native_File_ChooserPtr, val: str)
extern def Fl_Native_File_Chooser_directory(a0: Fl_Native_File_ChooserPtr) -> str
extern def Fl_Native_File_Chooser_show(a0: Fl_Native_File_ChooserPtr) -> int
extern def Fl_Native_File_Chooser_set_option(a0: Fl_Native_File_ChooserPtr, opt: int)
extern def Fl_Native_File_Chooser_set_type(a0: Fl_Native_File_ChooserPtr, typ: int)
extern def Fl_Native_File_Chooser_set_title(a0: Fl_Native_File_ChooserPtr, title: str)
extern def Fl_Native_File_Chooser_set_filter(a0: Fl_Native_File_ChooserPtr, f: str)
extern def Fl_Native_File_Chooser_filter(self: Fl_Native_File_ChooserPtr) -> str
extern def Fl_Native_File_Chooser_filter_value(self: Fl_Native_File_ChooserPtr) -> int
extern def Fl_Native_File_Chooser_set_filter_value(self: Fl_Native_File_ChooserPtr, f: int)
extern def Fl_Native_File_Chooser_set_preset_file(a0: Fl_Native_File_ChooserPtr, f: str)
extern def Fl_Native_File_Chooser_errmsg(a0: Fl_Native_File_ChooserPtr) -> str
extern def Fl_message(txt: str)
extern def Fl_alert(txt: str)
extern def Fl_choice(txt: str, b0: str, b1: str, b2: str) -> int
extern def Fl_choice_n(txt: str, b0: str, b1: str, b2: str) -> int
extern def Fl_input(txt: str, deflt: str) -> str
extern def Fl_password(txt: str, deflt: str) -> str
extern def Fl_Help_Dialog_new() -> Fl_Help_DialogPtr
extern def Fl_Help_Dialog_delete(self: Fl_Help_DialogPtr)
extern def Fl_Help_Dialog_h(a0: Fl_Help_DialogPtr) -> int
extern def Fl_Help_Dialog_hide(a0: Fl_Help_DialogPtr)
extern def Fl_Help_Dialog_load(a0: Fl_Help_DialogPtr, f: str) -> int
extern def Fl_Help_Dialog_position(a0: Fl_Help_DialogPtr, xx: int, yy: int)
extern def Fl_Help_Dialog_resize(a0: Fl_Help_DialogPtr, xx: int, yy: int, ww: int, hh: int)
extern def Fl_Help_Dialog_show(a0: Fl_Help_DialogPtr)
extern def Fl_Help_Dialog_set_text_size(a0: Fl_Help_DialogPtr, s: int)
extern def Fl_Help_Dialog_text_size(a0: Fl_Help_DialogPtr) -> int
extern def Fl_Help_Dialog_set_value(a0: Fl_Help_DialogPtr, f: str)
extern def Fl_Help_Dialog_value(a0: Fl_Help_DialogPtr) -> str
extern def Fl_Help_Dialog_visible(a0: Fl_Help_DialogPtr) -> int
extern def Fl_Help_Dialog_w(a0: Fl_Help_DialogPtr) -> int
extern def Fl_Help_Dialog_x(a0: Fl_Help_DialogPtr) -> int
extern def Fl_Help_Dialog_y(a0: Fl_Help_DialogPtr) -> int
extern def Fl_beep(type: int)
extern def Fl_File_Chooser_new(d: str, p: str, t: int, title: str) -> Fl_File_ChooserPtr
extern def Fl_File_Chooser_delete(self: Fl_File_ChooserPtr)
extern def Fl_File_Chooser_newButton(self: Fl_File_ChooserPtr) -> bytes
extern def Fl_File_Chooser_previewButton(self: Fl_File_ChooserPtr) -> bytes
extern def Fl_File_Chooser_showHiddenButton(self: Fl_File_ChooserPtr) -> bytes
extern def Fl_File_Chooser_set_callback(self: Fl_File_ChooserPtr, cb1: bytes, d: bytes)
extern def Fl_File_Chooser_set_color(self: Fl_File_ChooserPtr, c: t.CUInt32T)
extern def Fl_File_Chooser_color(self: Fl_File_ChooserPtr) -> t.CUInt32T
extern def Fl_File_Chooser_count(self: Fl_File_ChooserPtr) -> int
extern def Fl_File_Chooser_set_directory(self: Fl_File_ChooserPtr, d: str)
extern def Fl_File_Chooser_directory(self: Fl_File_ChooserPtr) -> str
extern def Fl_File_Chooser_set_filter(self: Fl_File_ChooserPtr, p: str)
extern def Fl_File_Chooser_filter(self: Fl_File_ChooserPtr) -> str
extern def Fl_File_Chooser_filter_value(self: Fl_File_ChooserPtr) -> int
extern def Fl_File_Chooser_set_filter_value(self: Fl_File_ChooserPtr, f: int)
extern def Fl_File_Chooser_hide(self: Fl_File_ChooserPtr)
extern def Fl_File_Chooser_set_iconsize(self: Fl_File_ChooserPtr, s: t.CUInt8T)
extern def Fl_File_Chooser_iconsize(self: Fl_File_ChooserPtr) -> t.CUInt8T
extern def Fl_File_Chooser_set_label(self: Fl_File_ChooserPtr, l: str)
extern def Fl_File_Chooser_label(self: Fl_File_ChooserPtr) -> str
extern def Fl_File_Chooser_set_ok_label(self: Fl_File_ChooserPtr, l: str)
extern def Fl_File_Chooser_ok_label(self: Fl_File_ChooserPtr) -> str
extern def Fl_File_Chooser_set_preview(self: Fl_File_ChooserPtr, e: int)
extern def Fl_File_Chooser_preview(self: Fl_File_ChooserPtr) -> int
extern def Fl_File_Chooser_rescan(self: Fl_File_ChooserPtr)
extern def Fl_File_Chooser_rescan_keep_filename(self: Fl_File_ChooserPtr)
extern def Fl_File_Chooser_show(self: Fl_File_ChooserPtr)
extern def Fl_File_Chooser_shown(self: Fl_File_ChooserPtr) -> int
extern def Fl_File_Chooser_set_text_color(self: Fl_File_ChooserPtr, c: t.CUInt32T)
extern def Fl_File_Chooser_text_color(self: Fl_File_ChooserPtr) -> t.CUInt32T
extern def Fl_File_Chooser_set_text_font(self: Fl_File_ChooserPtr, f: int)
extern def Fl_File_Chooser_text_font(self: Fl_File_ChooserPtr) -> int
extern def Fl_File_Chooser_set_text_size(self: Fl_File_ChooserPtr, s: int)
extern def Fl_File_Chooser_text_size(self: Fl_File_ChooserPtr) -> int
extern def Fl_File_Chooser_set_type(self: Fl_File_ChooserPtr, t: int)
extern def Fl_File_Chooser_type(self: Fl_File_ChooserPtr) -> int
extern def Fl_File_Chooser_user_data(self: Fl_File_ChooserPtr) -> bytes
extern def Fl_File_Chooser_set_user_data(self: Fl_File_ChooserPtr, d: bytes)
extern def Fl_File_Chooser_value(self: Fl_File_ChooserPtr, f: int) -> str
extern def Fl_File_Chooser_set_value(self: Fl_File_ChooserPtr, filename: str)
extern def Fl_File_Chooser_visible(self: Fl_File_ChooserPtr) -> int
extern def Fl_File_Chooser_set_add_favorites_label(msg: str)
extern def Fl_File_Chooser_set_all_files_label(msg: str)
extern def Fl_File_Chooser_set_custom_filter_label(msg: str)
extern def Fl_File_Chooser_set_existing_file_label(msg: str)
extern def Fl_File_Chooser_set_favorites_label(msg: str)
extern def Fl_File_Chooser_set_filename_label(msg: str)
extern def Fl_File_Chooser_set_filesystems_label(msg: str)
extern def Fl_File_Chooser_set_manage_favorites_label(msg: str)
extern def Fl_File_Chooser_set_new_directory_label(msg: str)
extern def Fl_File_Chooser_set_new_directory_tooltip(msg: str)
extern def Fl_File_Chooser_set_preview_label(msg: str)
extern def Fl_File_Chooser_set_save_label(msg: str)
extern def Fl_File_Chooser_set_show_label(msg: str)
extern def Fl_File_Chooser_set_hidden_label(msg: str)
extern def Fl_File_Chooser_set_position(self: Fl_File_ChooserPtr, x: int, y: int)
extern def Fl_File_Chooser_set_size(self: Fl_File_ChooserPtr, w: int, h: int)
extern def Fl_File_Chooser_x(self: Fl_File_ChooserPtr) -> int
extern def Fl_File_Chooser_y(self: Fl_File_ChooserPtr) -> int
extern def Fl_File_Chooser_w(self: Fl_File_ChooserPtr) -> int
extern def Fl_File_Chooser_h(self: Fl_File_ChooserPtr) -> int
extern def Fl_dir_chooser(message: str, fname: str, relative: int) -> str
extern def Fl_file_chooser(message: str, pat: str, fname: str, relative: int) -> str
extern def Fl_color_chooser(name: str, r: bytes, g: bytes, b: bytes, cmode: int) -> int
extern def Fl_message_title(title: str)
extern def Fl_message_title_default(title: str)
extern def Fl_message_icon() -> bytes
extern def Fl_message_set_hotspot(enable: int)
extern def Fl_message_hotspot() -> int
extern def Fl_message_set_font(f: int, s: int)
extern def Fl_message_icon_label(label: str)
extern def Fl_message_position(x: int, y: int)
+131
View File
@@ -0,0 +1,131 @@
import t, c
from fltk._types import *
# ============================================================
# fltk/_cfl_draw.vp — cfl_draw.h 的 extern FFI 声明(对接 cfltk C API)
# ============================================================
# 所有函数直接对应 cfltk 生成的 C 符号(extern "C"),链接目标: cfltk2。
# 类型约定: Fl_* 对象均为不透明指针 (Fl_XxxPtr);const char* → str;
# 函数指针/void* → bytes(Viper 端传 0/NULL 或不使用)。
extern def Fl_set_color_int(c: t.CUInt32T)
extern def Fl_set_color_rgb(r: t.CUInt8T, g: t.CUInt8T, b: t.CUInt8T)
extern def Fl_get_color() -> t.CUInt32T
extern def Fl_push_clip(x: int, y: int, w: int, h: int)
extern def Fl_push_no_clip()
extern def Fl_pop_clip()
extern def Fl_not_clipped(x: int, y: int, w: int, h: int) -> int
extern def Fl_clip_box(x: int, y: int, w: int, h: int, X: bytes, Y: bytes, W: bytes, H: bytes) -> int
extern def Fl_restore_clip()
extern def Fl_set_clip_region(r: bytes)
extern def Fl_clip_region() -> bytes
extern def Fl_point(x: int, y: int)
extern def Fl_line_style(style: int, width: int, dashes: str)
extern def Fl_rect(x: int, y: int, w: int, h: int)
extern def Fl_focus_rect(x: int, y: int, w: int, h: int)
extern def Fl_rect_with_color(x: int, y: int, w: int, h: int, c: t.CUInt32T)
extern def Fl_rectf(x: int, y: int, w: int, h: int)
extern def Fl_rectf_with_color(x: int, y: int, w: int, h: int, c: t.CUInt32T)
extern def Fl_rectf_with_rgb(x: int, y: int, w: int, h: int, r: t.CUInt8T, g: t.CUInt8T, b: t.CUInt8T)
extern def Fl_line(x: int, y: int, x1: int, y1: int)
extern def Fl_polyline(x: int, y: int, x1: int, y1: int, x2: int, y2: int)
extern def Fl_loop(x: int, y: int, x1: int, y1: int, x2: int, y2: int)
extern def Fl_loop_4sided(x: int, y: int, x1: int, y1: int, x2: int, y2: int, x3: int, y3: int)
extern def Fl_polygon(x: int, y: int, x1: int, y1: int, x2: int, y2: int)
extern def Fl_polygon_4sided(x: int, y: int, x1: int, y1: int, x2: int, y2: int, x3: int, y3: int)
extern def Fl_xyline(x: int, y: int, x1: int)
extern def Fl_xyline2(x: int, y: int, x1: int, y2: int)
extern def Fl_xyline3(x: int, y: int, x1: int, y2: int, x3: int)
extern def Fl_yxline(x: int, y: int, y1: int)
extern def Fl_yxline2(x: int, y: int, y1: int, x2: int)
extern def Fl_yxline3(x: int, y: int, y1: int, x2: int, y3: int)
extern def Fl_arc(x: int, y: int, w: int, h: int, a1: t.CDouble, a2: t.CDouble)
extern def Fl_pie(x: int, y: int, w: int, h: int, a1: t.CDouble, a2: t.CDouble)
extern def Fl_push_matrix()
extern def Fl_pop_matrix()
extern def Fl_scale_xy(x: t.CDouble, y: t.CDouble)
extern def Fl_scale(x: t.CDouble)
extern def Fl_translate(x: t.CDouble, y: t.CDouble)
extern def Fl_rotate(d: t.CDouble)
extern def Fl_mult_matrix(a: t.CDouble, b: t.CDouble, c: t.CDouble, d: t.CDouble, x: t.CDouble, y: t.CDouble)
extern def Fl_begin_points()
extern def Fl_begin_line()
extern def Fl_begin_loop()
extern def Fl_begin_polygon()
extern def Fl_vertex(x: t.CDouble, y: t.CDouble)
extern def Fl_curve(X0: t.CDouble, Y0: t.CDouble, X1: t.CDouble, Y1: t.CDouble, X2: t.CDouble, Y2: t.CDouble, X3: t.CDouble, Y3: t.CDouble)
extern def Fl_arc_with_radius(x: t.CDouble, y: t.CDouble, r: t.CDouble, start: t.CDouble, end: t.CDouble)
extern def Fl_circle(x: t.CDouble, y: t.CDouble, r: t.CDouble)
extern def Fl_draw_circle(x: int, y: int, d: int, c: t.CUInt32T)
extern def Fl_end_points()
extern def Fl_end_line()
extern def Fl_end_loop()
extern def Fl_end_polygon()
extern def Fl_begin_complex_polygon()
extern def Fl_gap()
extern def Fl_end_complex_polygon()
extern def Fl_transform_x(x: t.CDouble, y: t.CDouble) -> t.CDouble
extern def Fl_transform_y(x: t.CDouble, y: t.CDouble) -> t.CDouble
extern def Fl_transform_dx(x: t.CDouble, y: t.CDouble) -> t.CDouble
extern def Fl_transform_dy(x: t.CDouble, y: t.CDouble) -> t.CDouble
extern def Fl_transformed_vertex(xf: t.CDouble, yf: t.CDouble)
extern def Fl_end_offscreen()
extern def Fl_set_draw_font(face: int, fsize: int)
extern def Fl_font() -> int
extern def Fl_size() -> int
extern def Fl_height() -> int
extern def Fl_set_height(font: int, size: int) -> int
extern def Fl_descent() -> int
extern def Fl_width(txt: str, n: int) -> t.CDouble
extern def Fl_char_width(c: t.CUInt32T) -> t.CDouble
extern def Fl_text_extents(a0: str, dx: bytes, dy: bytes, w: bytes, h: bytes)
extern def Fl_text_extents_n(t: str, n: int, dx: bytes, dy: bytes, w: bytes, h: bytes)
extern def Fl_latin1_to_local(t: str, n: int) -> str
extern def Fl_local_to_latin1(t: str, n: int) -> str
extern def Fl_mac_roman_to_local(t: str, n: int) -> str
extern def Fl_local_to_mac_roman(t: str, n: int) -> str
extern def Fl_draw(str_: str, x: int, y: int)
extern def Fl_draw_text_angled(angle: int, str_: str, x: int, y: int)
extern def Fl_draw_text_n(str_: str, n: int, x: int, y: int)
extern def Fl_draw_text_angled_n(angle: int, str_: str, n: int, x: int, y: int)
extern def Fl_rtl_draw(str_: str, n: int, x: int, y: int)
extern def Fl_measure(str_: str, x: bytes, y: bytes, draw_symbols: int)
extern def Fl_draw5(str_: str, x: int, y: int, w: int, h: int, align: int, img: bytes, draw_symbols: int)
extern def Fl_frame(s: str, x: int, y: int, w: int, h: int)
extern def Fl_frame2(s: str, x: int, y: int, w: int, h: int)
extern def Fl_draw_box(box_type: int, x: int, y: int, w: int, h: int, int_: bytes)
extern def Fl_draw_image(buf: bytes, X: int, Y: int, W: int, H: int, D: int, L: int)
extern def Fl_draw_image_mono(buf: bytes, X: int, Y: int, W: int, H: int, D: int, L: int)
extern def Fl_can_do_alpha_blending() -> t.CChar
extern def Fl_read_image(p: bytes, X: int, Y: int, W: int, H: int, alpha: int) -> bytes
extern def Fl_capture_window_part(win: bytes, x: int, y: int, w: int, h: int) -> bytes
extern def Fl_draw_pixmap(data: bytes, x: int, y: int, bg: int) -> int
extern def Fl_draw_pixmap2(data: bytes, x: int, y: int, bg: int) -> int
extern def Fl_measure_pixmap(data: bytes, w: bytes, h: bytes) -> int
extern def Fl_measure_pixmap2(cdata: bytes, w: bytes, h: bytes) -> int
extern def Fl_shortcut_label(shortcut: t.CUInt32T) -> str
extern def Fl_shortcut_label2(shortcut: t.CUInt32T, eom: bytes) -> str
extern def Fl_old_shortcut(s: str) -> t.CUInt32T
extern def Fl_overlay_rect(x: int, y: int, w: int, h: int)
extern def Fl_overlay_clear()
extern def Fl_set_cursor(cursor: int)
extern def Fl_set_cursor_with_color(cursor: int, fg: int, bg: int)
extern def Fl_expand_text(from_: str, buf: str, maxbuf: int, maxw: t.CDouble, n: bytes, width: bytes, wrap: int, draw_symbols: int) -> str
extern def Fl_set_status(X: int, Y: int, W: int, H: int)
extern def Fl_set_spot(font: int, size: int, X: int, Y: int, W: int, H: int, win: bytes)
extern def Fl_reset_spot()
extern def Fl_show_colormap(old_col: t.CUInt32T) -> t.CUInt32T
extern def Fl_copy_offscreen(x: int, y: int, w: int, h: int, pixmap: bytes, srcx: int, srcy: int)
extern def Fl_create_offscreen(w: int, h: int) -> bytes
extern def Fl_begin_offscreen(b: bytes)
extern def Fl_end_offscreen()
extern def Fl_delete_offscreen(bitmap: bytes)
extern def Fl_rescale_offscreen(ctx: bytes)
extern def Fl_draw_text_boxed(str_: str, x: int, y: int, w: int, h: int, align: int)
extern def Fl_draw_check(x: int, y: int, w: int, h: int, col: t.CUInt32T)
extern def Fl_add_symbol(name: str, cb1: bytes, scalable: int) -> int
extern def Fl_rounded_rect(x: int, y: int, w: int, h: int, r: int)
extern def Fl_rounded_rectf(x: int, y: int, w: int, h: int, r: int)
extern def Fl_override_scale() -> t.CFloat
extern def Fl_restore_scale(s: t.CFloat)
File diff suppressed because it is too large. Load diff
+341
View File
@@ -0,0 +1,341 @@
import t, c
from fltk._types import *
# ============================================================
# fltk/_cfl_image.vp — cfl_image.h 的 extern FFI 声明(对接 cfltk C API)
# ============================================================
# 所有函数直接对应 cfltk 生成的 C 符号(extern "C"),链接目标: cfltk2。
# 类型约定: Fl_* 对象均为不透明指针 (Fl_XxxPtr);const char* → str;
# 函数指针/void* → bytes(Viper 端传 0/NULL 或不使用)。
# ----- Fl_Image (image_declare) -----
extern def Fl_Image_draw(self: Fl_ImagePtr, X: int, Y: int, W: int, H: int)
extern def Fl_Image_draw_ext(self: Fl_ImagePtr, X: int, Y: int, W: int, H: int, cx: int, cy: int)
extern def Fl_Image_width(self: Fl_ImagePtr) -> int
extern def Fl_Image_height(self: Fl_ImagePtr) -> int
extern def Fl_Image_delete(self: Fl_ImagePtr)
extern def Fl_Image_count(self: Fl_ImagePtr) -> int
extern def Fl_Image_data(self: Fl_ImagePtr) -> bytes
extern def Fl_Image_copy(self: Fl_ImagePtr) -> Fl_ImagePtr
extern def Fl_Image_copy_sized(self: Fl_ImagePtr, W: int, H: int) -> Fl_ImagePtr
extern def Fl_Image_scale(self: Fl_ImagePtr, width: int, height: int, proportional: int, can_expand: int)
extern def Fl_Image_fail(self: Fl_ImagePtr) -> int
extern def Fl_Image_data_w(self: Fl_ImagePtr) -> int
extern def Fl_Image_data_h(self: Fl_ImagePtr) -> int
extern def Fl_Image_d(self: Fl_ImagePtr) -> int
extern def Fl_Image_ld(self: Fl_ImagePtr) -> int
extern def Fl_Image_inactive(self: Fl_ImagePtr)
extern def Fl_Image_from_dyn_ptr(other: Fl_ImagePtr) -> Fl_ImagePtr
# ----- Fl_JPEG_Image (image_declare) -----
extern def Fl_JPEG_Image_draw(self: Fl_JPEG_ImagePtr, X: int, Y: int, W: int, H: int)
extern def Fl_JPEG_Image_draw_ext(self: Fl_JPEG_ImagePtr, X: int, Y: int, W: int, H: int, cx: int, cy: int)
extern def Fl_JPEG_Image_width(self: Fl_JPEG_ImagePtr) -> int
extern def Fl_JPEG_Image_height(self: Fl_JPEG_ImagePtr) -> int
extern def Fl_JPEG_Image_delete(self: Fl_JPEG_ImagePtr)
extern def Fl_JPEG_Image_count(self: Fl_JPEG_ImagePtr) -> int
extern def Fl_JPEG_Image_data(self: Fl_JPEG_ImagePtr) -> bytes
extern def Fl_JPEG_Image_copy(self: Fl_JPEG_ImagePtr) -> Fl_JPEG_ImagePtr
extern def Fl_JPEG_Image_copy_sized(self: Fl_JPEG_ImagePtr, W: int, H: int) -> Fl_JPEG_ImagePtr
extern def Fl_JPEG_Image_scale(self: Fl_JPEG_ImagePtr, width: int, height: int, proportional: int, can_expand: int)
extern def Fl_JPEG_Image_fail(self: Fl_JPEG_ImagePtr) -> int
extern def Fl_JPEG_Image_data_w(self: Fl_JPEG_ImagePtr) -> int
extern def Fl_JPEG_Image_data_h(self: Fl_JPEG_ImagePtr) -> int
extern def Fl_JPEG_Image_d(self: Fl_JPEG_ImagePtr) -> int
extern def Fl_JPEG_Image_ld(self: Fl_JPEG_ImagePtr) -> int
extern def Fl_JPEG_Image_inactive(self: Fl_JPEG_ImagePtr)
extern def Fl_JPEG_Image_from_dyn_ptr(other: Fl_ImagePtr) -> Fl_JPEG_ImagePtr
# ----- Fl_PNG_Image (image_declare) -----
extern def Fl_PNG_Image_draw(self: Fl_PNG_ImagePtr, X: int, Y: int, W: int, H: int)
extern def Fl_PNG_Image_draw_ext(self: Fl_PNG_ImagePtr, X: int, Y: int, W: int, H: int, cx: int, cy: int)
extern def Fl_PNG_Image_width(self: Fl_PNG_ImagePtr) -> int
extern def Fl_PNG_Image_height(self: Fl_PNG_ImagePtr) -> int
extern def Fl_PNG_Image_delete(self: Fl_PNG_ImagePtr)
extern def Fl_PNG_Image_count(self: Fl_PNG_ImagePtr) -> int
extern def Fl_PNG_Image_data(self: Fl_PNG_ImagePtr) -> bytes
extern def Fl_PNG_Image_copy(self: Fl_PNG_ImagePtr) -> Fl_PNG_ImagePtr
extern def Fl_PNG_Image_copy_sized(self: Fl_PNG_ImagePtr, W: int, H: int) -> Fl_PNG_ImagePtr
extern def Fl_PNG_Image_scale(self: Fl_PNG_ImagePtr, width: int, height: int, proportional: int, can_expand: int)
extern def Fl_PNG_Image_fail(self: Fl_PNG_ImagePtr) -> int
extern def Fl_PNG_Image_data_w(self: Fl_PNG_ImagePtr) -> int
extern def Fl_PNG_Image_data_h(self: Fl_PNG_ImagePtr) -> int
extern def Fl_PNG_Image_d(self: Fl_PNG_ImagePtr) -> int
extern def Fl_PNG_Image_ld(self: Fl_PNG_ImagePtr) -> int
extern def Fl_PNG_Image_inactive(self: Fl_PNG_ImagePtr)
extern def Fl_PNG_Image_from_dyn_ptr(other: Fl_ImagePtr) -> Fl_PNG_ImagePtr
# ----- Fl_SVG_Image (image_declare) -----
extern def Fl_SVG_Image_draw(self: Fl_SVG_ImagePtr, X: int, Y: int, W: int, H: int)
extern def Fl_SVG_Image_draw_ext(self: Fl_SVG_ImagePtr, X: int, Y: int, W: int, H: int, cx: int, cy: int)
extern def Fl_SVG_Image_width(self: Fl_SVG_ImagePtr) -> int
extern def Fl_SVG_Image_height(self: Fl_SVG_ImagePtr) -> int
extern def Fl_SVG_Image_delete(self: Fl_SVG_ImagePtr)
extern def Fl_SVG_Image_count(self: Fl_SVG_ImagePtr) -> int
extern def Fl_SVG_Image_data(self: Fl_SVG_ImagePtr) -> bytes
extern def Fl_SVG_Image_copy(self: Fl_SVG_ImagePtr) -> Fl_SVG_ImagePtr
extern def Fl_SVG_Image_copy_sized(self: Fl_SVG_ImagePtr, W: int, H: int) -> Fl_SVG_ImagePtr
extern def Fl_SVG_Image_scale(self: Fl_SVG_ImagePtr, width: int, height: int, proportional: int, can_expand: int)
extern def Fl_SVG_Image_fail(self: Fl_SVG_ImagePtr) -> int
extern def Fl_SVG_Image_data_w(self: Fl_SVG_ImagePtr) -> int
extern def Fl_SVG_Image_data_h(self: Fl_SVG_ImagePtr) -> int
extern def Fl_SVG_Image_d(self: Fl_SVG_ImagePtr) -> int
extern def Fl_SVG_Image_ld(self: Fl_SVG_ImagePtr) -> int
extern def Fl_SVG_Image_inactive(self: Fl_SVG_ImagePtr)
extern def Fl_SVG_Image_from_dyn_ptr(other: Fl_ImagePtr) -> Fl_SVG_ImagePtr
# ----- Fl_BMP_Image (image_declare) -----
extern def Fl_BMP_Image_draw(self: Fl_BMP_ImagePtr, X: int, Y: int, W: int, H: int)
extern def Fl_BMP_Image_draw_ext(self: Fl_BMP_ImagePtr, X: int, Y: int, W: int, H: int, cx: int, cy: int)
extern def Fl_BMP_Image_width(self: Fl_BMP_ImagePtr) -> int
extern def Fl_BMP_Image_height(self: Fl_BMP_ImagePtr) -> int
extern def Fl_BMP_Image_delete(self: Fl_BMP_ImagePtr)
extern def Fl_BMP_Image_count(self: Fl_BMP_ImagePtr) -> int
extern def Fl_BMP_Image_data(self: Fl_BMP_ImagePtr) -> bytes
extern def Fl_BMP_Image_copy(self: Fl_BMP_ImagePtr) -> Fl_BMP_ImagePtr
extern def Fl_BMP_Image_copy_sized(self: Fl_BMP_ImagePtr, W: int, H: int) -> Fl_BMP_ImagePtr
extern def Fl_BMP_Image_scale(self: Fl_BMP_ImagePtr, width: int, height: int, proportional: int, can_expand: int)
extern def Fl_BMP_Image_fail(self: Fl_BMP_ImagePtr) -> int
extern def Fl_BMP_Image_data_w(self: Fl_BMP_ImagePtr) -> int
extern def Fl_BMP_Image_data_h(self: Fl_BMP_ImagePtr) -> int
extern def Fl_BMP_Image_d(self: Fl_BMP_ImagePtr) -> int
extern def Fl_BMP_Image_ld(self: Fl_BMP_ImagePtr) -> int
extern def Fl_BMP_Image_inactive(self: Fl_BMP_ImagePtr)
extern def Fl_BMP_Image_from_dyn_ptr(other: Fl_ImagePtr) -> Fl_BMP_ImagePtr
# ----- Fl_GIF_Image (image_declare) -----
extern def Fl_GIF_Image_draw(self: Fl_GIF_ImagePtr, X: int, Y: int, W: int, H: int)
extern def Fl_GIF_Image_draw_ext(self: Fl_GIF_ImagePtr, X: int, Y: int, W: int, H: int, cx: int, cy: int)
extern def Fl_GIF_Image_width(self: Fl_GIF_ImagePtr) -> int
extern def Fl_GIF_Image_height(self: Fl_GIF_ImagePtr) -> int
extern def Fl_GIF_Image_delete(self: Fl_GIF_ImagePtr)
extern def Fl_GIF_Image_count(self: Fl_GIF_ImagePtr) -> int
extern def Fl_GIF_Image_data(self: Fl_GIF_ImagePtr) -> bytes
extern def Fl_GIF_Image_copy(self: Fl_GIF_ImagePtr) -> Fl_GIF_ImagePtr
extern def Fl_GIF_Image_copy_sized(self: Fl_GIF_ImagePtr, W: int, H: int) -> Fl_GIF_ImagePtr
extern def Fl_GIF_Image_scale(self: Fl_GIF_ImagePtr, width: int, height: int, proportional: int, can_expand: int)
extern def Fl_GIF_Image_fail(self: Fl_GIF_ImagePtr) -> int
extern def Fl_GIF_Image_data_w(self: Fl_GIF_ImagePtr) -> int
extern def Fl_GIF_Image_data_h(self: Fl_GIF_ImagePtr) -> int
extern def Fl_GIF_Image_d(self: Fl_GIF_ImagePtr) -> int
extern def Fl_GIF_Image_ld(self: Fl_GIF_ImagePtr) -> int
extern def Fl_GIF_Image_inactive(self: Fl_GIF_ImagePtr)
extern def Fl_GIF_Image_from_dyn_ptr(other: Fl_ImagePtr) -> Fl_GIF_ImagePtr
# ----- Fl_Anim_GIF_Image (image_declare) -----
extern def Fl_Anim_GIF_Image_draw(self: Fl_Anim_GIF_ImagePtr, X: int, Y: int, W: int, H: int)
extern def Fl_Anim_GIF_Image_draw_ext(self: Fl_Anim_GIF_ImagePtr, X: int, Y: int, W: int, H: int, cx: int, cy: int)
extern def Fl_Anim_GIF_Image_width(self: Fl_Anim_GIF_ImagePtr) -> int
extern def Fl_Anim_GIF_Image_height(self: Fl_Anim_GIF_ImagePtr) -> int
extern def Fl_Anim_GIF_Image_delete(self: Fl_Anim_GIF_ImagePtr)
extern def Fl_Anim_GIF_Image_count(self: Fl_Anim_GIF_ImagePtr) -> int
extern def Fl_Anim_GIF_Image_data(self: Fl_Anim_GIF_ImagePtr) -> bytes
extern def Fl_Anim_GIF_Image_copy(self: Fl_Anim_GIF_ImagePtr) -> Fl_Anim_GIF_ImagePtr
extern def Fl_Anim_GIF_Image_copy_sized(self: Fl_Anim_GIF_ImagePtr, W: int, H: int) -> Fl_Anim_GIF_ImagePtr
extern def Fl_Anim_GIF_Image_scale(self: Fl_Anim_GIF_ImagePtr, width: int, height: int, proportional: int, can_expand: int)
extern def Fl_Anim_GIF_Image_fail(self: Fl_Anim_GIF_ImagePtr) -> int
extern def Fl_Anim_GIF_Image_data_w(self: Fl_Anim_GIF_ImagePtr) -> int
extern def Fl_Anim_GIF_Image_data_h(self: Fl_Anim_GIF_ImagePtr) -> int
extern def Fl_Anim_GIF_Image_d(self: Fl_Anim_GIF_ImagePtr) -> int
extern def Fl_Anim_GIF_Image_ld(self: Fl_Anim_GIF_ImagePtr) -> int
extern def Fl_Anim_GIF_Image_inactive(self: Fl_Anim_GIF_ImagePtr)
extern def Fl_Anim_GIF_Image_from_dyn_ptr(other: Fl_ImagePtr) -> Fl_Anim_GIF_ImagePtr
# ----- Fl_Pixmap (image_declare) -----
extern def Fl_Pixmap_draw(self: Fl_PixmapPtr, X: int, Y: int, W: int, H: int)
extern def Fl_Pixmap_draw_ext(self: Fl_PixmapPtr, X: int, Y: int, W: int, H: int, cx: int, cy: int)
extern def Fl_Pixmap_width(self: Fl_PixmapPtr) -> int
extern def Fl_Pixmap_height(self: Fl_PixmapPtr) -> int
extern def Fl_Pixmap_delete(self: Fl_PixmapPtr)
extern def Fl_Pixmap_count(self: Fl_PixmapPtr) -> int
extern def Fl_Pixmap_data(self: Fl_PixmapPtr) -> bytes
extern def Fl_Pixmap_copy(self: Fl_PixmapPtr) -> Fl_PixmapPtr
extern def Fl_Pixmap_copy_sized(self: Fl_PixmapPtr, W: int, H: int) -> Fl_PixmapPtr
extern def Fl_Pixmap_scale(self: Fl_PixmapPtr, width: int, height: int, proportional: int, can_expand: int)
extern def Fl_Pixmap_fail(self: Fl_PixmapPtr) -> int
extern def Fl_Pixmap_data_w(self: Fl_PixmapPtr) -> int
extern def Fl_Pixmap_data_h(self: Fl_PixmapPtr) -> int
extern def Fl_Pixmap_d(self: Fl_PixmapPtr) -> int
extern def Fl_Pixmap_ld(self: Fl_PixmapPtr) -> int
extern def Fl_Pixmap_inactive(self: Fl_PixmapPtr)
extern def Fl_Pixmap_from_dyn_ptr(other: Fl_ImagePtr) -> Fl_PixmapPtr
# ----- Fl_XPM_Image (image_declare) -----
extern def Fl_XPM_Image_draw(self: Fl_XPM_ImagePtr, X: int, Y: int, W: int, H: int)
extern def Fl_XPM_Image_draw_ext(self: Fl_XPM_ImagePtr, X: int, Y: int, W: int, H: int, cx: int, cy: int)
extern def Fl_XPM_Image_width(self: Fl_XPM_ImagePtr) -> int
extern def Fl_XPM_Image_height(self: Fl_XPM_ImagePtr) -> int
extern def Fl_XPM_Image_delete(self: Fl_XPM_ImagePtr)
extern def Fl_XPM_Image_count(self: Fl_XPM_ImagePtr) -> int
extern def Fl_XPM_Image_data(self: Fl_XPM_ImagePtr) -> bytes
extern def Fl_XPM_Image_copy(self: Fl_XPM_ImagePtr) -> Fl_XPM_ImagePtr
extern def Fl_XPM_Image_copy_sized(self: Fl_XPM_ImagePtr, W: int, H: int) -> Fl_XPM_ImagePtr
extern def Fl_XPM_Image_scale(self: Fl_XPM_ImagePtr, width: int, height: int, proportional: int, can_expand: int)
extern def Fl_XPM_Image_fail(self: Fl_XPM_ImagePtr) -> int
extern def Fl_XPM_Image_data_w(self: Fl_XPM_ImagePtr) -> int
extern def Fl_XPM_Image_data_h(self: Fl_XPM_ImagePtr) -> int
extern def Fl_XPM_Image_d(self: Fl_XPM_ImagePtr) -> int
extern def Fl_XPM_Image_ld(self: Fl_XPM_ImagePtr) -> int
extern def Fl_XPM_Image_inactive(self: Fl_XPM_ImagePtr)
extern def Fl_XPM_Image_from_dyn_ptr(other: Fl_ImagePtr) -> Fl_XPM_ImagePtr
# ----- Fl_XBM_Image (image_declare) -----
extern def Fl_XBM_Image_draw(self: Fl_XBM_ImagePtr, X: int, Y: int, W: int, H: int)
extern def Fl_XBM_Image_draw_ext(self: Fl_XBM_ImagePtr, X: int, Y: int, W: int, H: int, cx: int, cy: int)
extern def Fl_XBM_Image_width(self: Fl_XBM_ImagePtr) -> int
extern def Fl_XBM_Image_height(self: Fl_XBM_ImagePtr) -> int
extern def Fl_XBM_Image_delete(self: Fl_XBM_ImagePtr)
extern def Fl_XBM_Image_count(self: Fl_XBM_ImagePtr) -> int
extern def Fl_XBM_Image_data(self: Fl_XBM_ImagePtr) -> bytes
extern def Fl_XBM_Image_copy(self: Fl_XBM_ImagePtr) -> Fl_XBM_ImagePtr
extern def Fl_XBM_Image_copy_sized(self: Fl_XBM_ImagePtr, W: int, H: int) -> Fl_XBM_ImagePtr
extern def Fl_XBM_Image_scale(self: Fl_XBM_ImagePtr, width: int, height: int, proportional: int, can_expand: int)
extern def Fl_XBM_Image_fail(self: Fl_XBM_ImagePtr) -> int
extern def Fl_XBM_Image_data_w(self: Fl_XBM_ImagePtr) -> int
extern def Fl_XBM_Image_data_h(self: Fl_XBM_ImagePtr) -> int
extern def Fl_XBM_Image_d(self: Fl_XBM_ImagePtr) -> int
extern def Fl_XBM_Image_ld(self: Fl_XBM_ImagePtr) -> int
extern def Fl_XBM_Image_inactive(self: Fl_XBM_ImagePtr)
extern def Fl_XBM_Image_from_dyn_ptr(other: Fl_ImagePtr) -> Fl_XBM_ImagePtr
# ----- Fl_PNM_Image (image_declare) -----
extern def Fl_PNM_Image_draw(self: Fl_PNM_ImagePtr, X: int, Y: int, W: int, H: int)
extern def Fl_PNM_Image_draw_ext(self: Fl_PNM_ImagePtr, X: int, Y: int, W: int, H: int, cx: int, cy: int)
extern def Fl_PNM_Image_width(self: Fl_PNM_ImagePtr) -> int
extern def Fl_PNM_Image_height(self: Fl_PNM_ImagePtr) -> int
extern def Fl_PNM_Image_delete(self: Fl_PNM_ImagePtr)
extern def Fl_PNM_Image_count(self: Fl_PNM_ImagePtr) -> int
extern def Fl_PNM_Image_data(self: Fl_PNM_ImagePtr) -> bytes
extern def Fl_PNM_Image_copy(self: Fl_PNM_ImagePtr) -> Fl_PNM_ImagePtr
extern def Fl_PNM_Image_copy_sized(self: Fl_PNM_ImagePtr, W: int, H: int) -> Fl_PNM_ImagePtr
extern def Fl_PNM_Image_scale(self: Fl_PNM_ImagePtr, width: int, height: int, proportional: int, can_expand: int)
extern def Fl_PNM_Image_fail(self: Fl_PNM_ImagePtr) -> int
extern def Fl_PNM_Image_data_w(self: Fl_PNM_ImagePtr) -> int
extern def Fl_PNM_Image_data_h(self: Fl_PNM_ImagePtr) -> int
extern def Fl_PNM_Image_d(self: Fl_PNM_ImagePtr) -> int
extern def Fl_PNM_Image_ld(self: Fl_PNM_ImagePtr) -> int
extern def Fl_PNM_Image_inactive(self: Fl_PNM_ImagePtr)
extern def Fl_PNM_Image_from_dyn_ptr(other: Fl_ImagePtr) -> Fl_PNM_ImagePtr
# ----- Fl_Tiled_Image (image_declare) -----
extern def Fl_Tiled_Image_draw(self: Fl_Tiled_ImagePtr, X: int, Y: int, W: int, H: int)
extern def Fl_Tiled_Image_draw_ext(self: Fl_Tiled_ImagePtr, X: int, Y: int, W: int, H: int, cx: int, cy: int)
extern def Fl_Tiled_Image_width(self: Fl_Tiled_ImagePtr) -> int
extern def Fl_Tiled_Image_height(self: Fl_Tiled_ImagePtr) -> int
extern def Fl_Tiled_Image_delete(self: Fl_Tiled_ImagePtr)
extern def Fl_Tiled_Image_count(self: Fl_Tiled_ImagePtr) -> int
extern def Fl_Tiled_Image_data(self: Fl_Tiled_ImagePtr) -> bytes
extern def Fl_Tiled_Image_copy(self: Fl_Tiled_ImagePtr) -> Fl_Tiled_ImagePtr
extern def Fl_Tiled_Image_copy_sized(self: Fl_Tiled_ImagePtr, W: int, H: int) -> Fl_Tiled_ImagePtr
extern def Fl_Tiled_Image_scale(self: Fl_Tiled_ImagePtr, width: int, height: int, proportional: int, can_expand: int)
extern def Fl_Tiled_Image_fail(self: Fl_Tiled_ImagePtr) -> int
extern def Fl_Tiled_Image_data_w(self: Fl_Tiled_ImagePtr) -> int
extern def Fl_Tiled_Image_data_h(self: Fl_Tiled_ImagePtr) -> int
extern def Fl_Tiled_Image_d(self: Fl_Tiled_ImagePtr) -> int
extern def Fl_Tiled_Image_ld(self: Fl_Tiled_ImagePtr) -> int
extern def Fl_Tiled_Image_inactive(self: Fl_Tiled_ImagePtr)
extern def Fl_Tiled_Image_from_dyn_ptr(other: Fl_ImagePtr) -> Fl_Tiled_ImagePtr
# ----- Fl_RGB_Image (image_declare) -----
extern def Fl_RGB_Image_draw(self: Fl_RGB_ImagePtr, X: int, Y: int, W: int, H: int)
extern def Fl_RGB_Image_draw_ext(self: Fl_RGB_ImagePtr, X: int, Y: int, W: int, H: int, cx: int, cy: int)
extern def Fl_RGB_Image_width(self: Fl_RGB_ImagePtr) -> int
extern def Fl_RGB_Image_height(self: Fl_RGB_ImagePtr) -> int
extern def Fl_RGB_Image_delete(self: Fl_RGB_ImagePtr)
extern def Fl_RGB_Image_count(self: Fl_RGB_ImagePtr) -> int
extern def Fl_RGB_Image_data(self: Fl_RGB_ImagePtr) -> bytes
extern def Fl_RGB_Image_copy(self: Fl_RGB_ImagePtr) -> Fl_RGB_ImagePtr
extern def Fl_RGB_Image_copy_sized(self: Fl_RGB_ImagePtr, W: int, H: int) -> Fl_RGB_ImagePtr
extern def Fl_RGB_Image_scale(self: Fl_RGB_ImagePtr, width: int, height: int, proportional: int, can_expand: int)
extern def Fl_RGB_Image_fail(self: Fl_RGB_ImagePtr) -> int
extern def Fl_RGB_Image_data_w(self: Fl_RGB_ImagePtr) -> int
extern def Fl_RGB_Image_data_h(self: Fl_RGB_ImagePtr) -> int
extern def Fl_RGB_Image_d(self: Fl_RGB_ImagePtr) -> int
extern def Fl_RGB_Image_ld(self: Fl_RGB_ImagePtr) -> int
extern def Fl_RGB_Image_inactive(self: Fl_RGB_ImagePtr)
extern def Fl_RGB_Image_from_dyn_ptr(other: Fl_ImagePtr) -> Fl_RGB_ImagePtr
# ----- Fl_Shared_Image (image_declare) -----
extern def Fl_Shared_Image_draw(self: Fl_Shared_ImagePtr, X: int, Y: int, W: int, H: int)
extern def Fl_Shared_Image_draw_ext(self: Fl_Shared_ImagePtr, X: int, Y: int, W: int, H: int, cx: int, cy: int)
extern def Fl_Shared_Image_width(self: Fl_Shared_ImagePtr) -> int
extern def Fl_Shared_Image_height(self: Fl_Shared_ImagePtr) -> int
extern def Fl_Shared_Image_delete(self: Fl_Shared_ImagePtr)
extern def Fl_Shared_Image_count(self: Fl_Shared_ImagePtr) -> int
extern def Fl_Shared_Image_data(self: Fl_Shared_ImagePtr) -> bytes
extern def Fl_Shared_Image_copy(self: Fl_Shared_ImagePtr) -> Fl_Shared_ImagePtr
extern def Fl_Shared_Image_copy_sized(self: Fl_Shared_ImagePtr, W: int, H: int) -> Fl_Shared_ImagePtr
extern def Fl_Shared_Image_scale(self: Fl_Shared_ImagePtr, width: int, height: int, proportional: int, can_expand: int)
extern def Fl_Shared_Image_fail(self: Fl_Shared_ImagePtr) -> int
extern def Fl_Shared_Image_data_w(self: Fl_Shared_ImagePtr) -> int
extern def Fl_Shared_Image_data_h(self: Fl_Shared_ImagePtr) -> int
extern def Fl_Shared_Image_d(self: Fl_Shared_ImagePtr) -> int
extern def Fl_Shared_Image_ld(self: Fl_Shared_ImagePtr) -> int
extern def Fl_Shared_Image_inactive(self: Fl_Shared_ImagePtr)
extern def Fl_Shared_Image_from_dyn_ptr(other: Fl_ImagePtr) -> Fl_Shared_ImagePtr
# ----- Fl_ICO_Image (image_declare) -----
extern def Fl_ICO_Image_draw(self: Fl_ICO_ImagePtr, X: int, Y: int, W: int, H: int)
extern def Fl_ICO_Image_draw_ext(self: Fl_ICO_ImagePtr, X: int, Y: int, W: int, H: int, cx: int, cy: int)
extern def Fl_ICO_Image_width(self: Fl_ICO_ImagePtr) -> int
extern def Fl_ICO_Image_height(self: Fl_ICO_ImagePtr) -> int
extern def Fl_ICO_Image_delete(self: Fl_ICO_ImagePtr)
extern def Fl_ICO_Image_count(self: Fl_ICO_ImagePtr) -> int
extern def Fl_ICO_Image_data(self: Fl_ICO_ImagePtr) -> bytes
extern def Fl_ICO_Image_copy(self: Fl_ICO_ImagePtr) -> Fl_ICO_ImagePtr
extern def Fl_ICO_Image_copy_sized(self: Fl_ICO_ImagePtr, W: int, H: int) -> Fl_ICO_ImagePtr
extern def Fl_ICO_Image_scale(self: Fl_ICO_ImagePtr, width: int, height: int, proportional: int, can_expand: int)
extern def Fl_ICO_Image_fail(self: Fl_ICO_ImagePtr) -> int
extern def Fl_ICO_Image_data_w(self: Fl_ICO_ImagePtr) -> int
extern def Fl_ICO_Image_data_h(self: Fl_ICO_ImagePtr) -> int
extern def Fl_ICO_Image_d(self: Fl_ICO_ImagePtr) -> int
extern def Fl_ICO_Image_ld(self: Fl_ICO_ImagePtr) -> int
extern def Fl_ICO_Image_inactive(self: Fl_ICO_ImagePtr)
extern def Fl_ICO_Image_from_dyn_ptr(other: Fl_ImagePtr) -> Fl_ICO_ImagePtr
extern def Fl_Image_color_average(self: Fl_ImagePtr, c: t.CUInt32T, i: t.CFloat)
extern def Fl_Image_desaturate(self: Fl_ImagePtr)
extern def Fl_Image_uncache(self: Fl_ImagePtr)
extern def Fl_Image_label_widget(self: Fl_ImagePtr, w: bytes)
extern def Fl_Image_label_menu_item(self: Fl_ImagePtr, m: bytes)
extern def Fl_Image_set_scaling_algorithm(algorithm: int)
extern def Fl_Image_scaling_algorithm() -> int
extern def Fl_RGB_Image_set_scaling_algorithm(algorithm: int)
extern def Fl_RGB_Image_scaling_algorithm() -> int
extern def Fl_JPEG_Image_new(filename: str) -> Fl_JPEG_ImagePtr
extern def Fl_JPEG_Image_from(data: bytes) -> Fl_JPEG_ImagePtr
extern def Fl_PNG_Image_new(filename: str) -> Fl_PNG_ImagePtr
extern def Fl_PNG_Image_from(data: bytes, size: int) -> Fl_PNG_ImagePtr
extern def Fl_SVG_Image_new(filename: str) -> Fl_SVG_ImagePtr
extern def Fl_SVG_Image_from(data: str) -> Fl_SVG_ImagePtr
extern def Fl_SVG_Image_normalize(self: Fl_SVG_ImagePtr)
extern def Fl_BMP_Image_new(filename: str) -> Fl_BMP_ImagePtr
extern def Fl_BMP_Image_from(data: bytes, len_: t.CInt32T) -> Fl_BMP_ImagePtr
extern def Fl_GIF_Image_new(filename: str) -> Fl_GIF_ImagePtr
extern def Fl_GIF_Image_from(data: bytes, len_: t.CUInt32T) -> Fl_GIF_ImagePtr
extern def Fl_Anim_GIF_Image_new(filename: str, canvas: bytes, flags: t.CUInt16T) -> Fl_Anim_GIF_ImagePtr
extern def Fl_Anim_GIF_Image_from(imagename: str, data: bytes, length: t.CUInt32T, canvas: bytes, flags: t.CUInt16T) -> Fl_Anim_GIF_ImagePtr
extern def Fl_Anim_GIF_Image_delay(self: Fl_Anim_GIF_ImagePtr, frame_: int) -> t.CDouble
extern def Fl_Anim_GIF_Image_set_delay(self: Fl_Anim_GIF_ImagePtr, frame: int, delay: t.CDouble)
extern def Fl_Anim_GIF_Image_is_animated(self: Fl_Anim_GIF_ImagePtr) -> int
extern def Fl_Anim_GIF_Image_set_speed(self: Fl_Anim_GIF_ImagePtr, speed: t.CDouble)
extern def Fl_Anim_GIF_Image_speed(self: Fl_Anim_GIF_ImagePtr) -> t.CDouble
extern def Fl_Anim_GIF_Image_start(self: Fl_Anim_GIF_ImagePtr) -> int
extern def Fl_Anim_GIF_Image_stop(self: Fl_Anim_GIF_ImagePtr) -> int
extern def Fl_Anim_GIF_Image_next(self: Fl_Anim_GIF_ImagePtr) -> int
extern def Fl_Anim_GIF_Image_playing(self: Fl_Anim_GIF_ImagePtr) -> int
extern def Fl_Pixmap_new(D: bytes) -> Fl_PixmapPtr
extern def Fl_XPM_Image_new(filename: str) -> Fl_XPM_ImagePtr
extern def Fl_XBM_Image_new(filename: str) -> Fl_XBM_ImagePtr
extern def Fl_PNM_Image_new(filename: str) -> Fl_PNM_ImagePtr
extern def Fl_Tiled_Image_new(i: Fl_ImagePtr, w: int, h: int) -> Fl_Tiled_ImagePtr
extern def Fl_RGB_Image_new(bits: bytes, W: int, H: int, depth: int, ld: int) -> Fl_RGB_ImagePtr
extern def Fl_RGB_Image_from_data(bits: bytes, W: int, H: int, depth: int, ld: int) -> Fl_RGB_ImagePtr
extern def Fl_RGB_Image_from_pixmap(image: Fl_PixmapPtr) -> Fl_RGB_ImagePtr
extern def Fl_Shared_Image_get(name: str, W: int, H: int) -> Fl_Shared_ImagePtr
extern def Fl_Shared_Image_from_rgb(rgb: Fl_RGB_ImagePtr, own_it: int) -> Fl_Shared_ImagePtr
extern def Fl_ICO_Image_new(filename: str, id: int) -> Fl_ICO_ImagePtr
extern def Fl_ICO_Image_from_data(bits: bytes, len_: t.CUInt32T, id: int) -> Fl_ICO_ImagePtr
extern def Fl_ICO_Image_icondirentry(self: Fl_ICO_ImagePtr, size: bytes) -> bytes
extern def Fl_register_images()
+949
View File
@@ -0,0 +1,949 @@
import t, c
from fltk._types import *
# ============================================================
# fltk/_cfl_input.vp — cfl_input.h 的 extern FFI 声明(对接 cfltk C API)
# ============================================================
# 所有函数直接对应 cfltk 生成的 C 符号(extern "C"),链接目标: cfltk2。
# 类型约定: Fl_* 对象均为不透明指针 (Fl_XxxPtr);const char* → str;
# 函数指针/void* → bytes(Viper 端传 0/NULL 或不使用)。
# ----- Fl_Input (widget_declare) -----
extern def Fl_Input_new(x: int, y: int, width: int, height: int, title: str) -> Fl_InputPtr
extern def Fl_Input_x(self: Fl_InputPtr) -> int
extern def Fl_Input_y(self: Fl_InputPtr) -> int
extern def Fl_Input_width(self: Fl_InputPtr) -> int
extern def Fl_Input_height(self: Fl_InputPtr) -> int
extern def Fl_Input_label(self: Fl_InputPtr) -> str
extern def Fl_Input_set_label(self: Fl_InputPtr, title: str)
extern def Fl_Input_redraw(self: Fl_InputPtr)
extern def Fl_Input_show(self: Fl_InputPtr)
extern def Fl_Input_hide(self: Fl_InputPtr)
extern def Fl_Input_activate(self: Fl_InputPtr)
extern def Fl_Input_deactivate(self: Fl_InputPtr)
extern def Fl_Input_redraw_label(self: Fl_InputPtr)
extern def Fl_Input_resize(self: Fl_InputPtr, x: int, y: int, width: int, height: int)
extern def Fl_Input_widget_resize(self: Fl_InputPtr, x: int, y: int, width: int, height: int)
extern def Fl_Input_tooltip(self: Fl_InputPtr) -> str
extern def Fl_Input_set_tooltip(self: Fl_InputPtr, txt: str)
extern def Fl_Input_get_type(self: Fl_InputPtr) -> int
extern def Fl_Input_set_type(self: Fl_InputPtr, typ: int)
extern def Fl_Input_color(self: Fl_InputPtr) -> t.CUInt32T
extern def Fl_Input_set_color(self: Fl_InputPtr, color: t.CUInt32T)
extern def Fl_Input_measure_label(self: Fl_InputPtr, a1: bytes, a2: bytes)
extern def Fl_Input_label_color(self: Fl_InputPtr) -> t.CUInt32T
extern def Fl_Input_set_label_color(self: Fl_InputPtr, color: t.CUInt32T)
extern def Fl_Input_label_font(self: Fl_InputPtr) -> int
extern def Fl_Input_set_label_font(self: Fl_InputPtr, font: int)
extern def Fl_Input_label_size(self: Fl_InputPtr) -> int
extern def Fl_Input_set_label_size(self: Fl_InputPtr, sz: int)
extern def Fl_Input_label_type(self: Fl_InputPtr) -> int
extern def Fl_Input_set_label_type(self: Fl_InputPtr, typ: int)
extern def Fl_Input_box(self: Fl_InputPtr) -> int
extern def Fl_Input_set_box(self: Fl_InputPtr, typ: int)
extern def Fl_Input_changed(self: Fl_InputPtr) -> int
extern def Fl_Input_set_changed(self: Fl_InputPtr)
extern def Fl_Input_clear_changed(self: Fl_InputPtr)
extern def Fl_Input_align(self: Fl_InputPtr) -> int
extern def Fl_Input_set_align(self: Fl_InputPtr, typ: int)
extern def Fl_Input_delete(self: Fl_InputPtr)
extern def Fl_Input_set_image(self: Fl_InputPtr, a1: bytes)
extern def Fl_Input_handle(self: Fl_InputPtr, cb: bytes, data: bytes)
extern def Fl_Input_handle_event(self: Fl_InputPtr, event: int) -> int
extern def Fl_Input_draw(self: Fl_InputPtr, cb: bytes, data: bytes)
extern def Fl_Input_resize_callback(self: Fl_InputPtr, cb1: bytes, data: bytes)
extern def Fl_Input_set_when(self: Fl_InputPtr, a1: int)
extern def Fl_Input_when(self: Fl_InputPtr) -> int
extern def Fl_Input_image(self: Fl_InputPtr) -> bytes
extern def Fl_Input_parent(self: Fl_InputPtr) -> bytes
extern def Fl_Input_selection_color(self: Fl_InputPtr) -> t.CUInt32T
extern def Fl_Input_set_selection_color(self: Fl_InputPtr, color: t.CUInt32T)
extern def Fl_Input_do_callback(self: Fl_InputPtr)
extern def Fl_Input_inside(self: Fl_InputPtr, a1: bytes) -> int
extern def Fl_Input_window(self: Fl_InputPtr) -> bytes
extern def Fl_Input_top_window(self: Fl_InputPtr) -> bytes
extern def Fl_Input_takes_events(self: Fl_InputPtr) -> int
extern def Fl_Input_user_data(self: Fl_InputPtr) -> bytes
extern def Fl_Input_take_focus(self: Fl_InputPtr) -> int
extern def Fl_Input_set_visible_focus(self: Fl_InputPtr)
extern def Fl_Input_clear_visible_focus(self: Fl_InputPtr)
extern def Fl_Input_visible_focus(self: Fl_InputPtr, v: int)
extern def Fl_Input_has_visible_focus(self: Fl_InputPtr) -> t.CUInt32T
extern def Fl_Input_set_user_data(self: Fl_InputPtr, data: bytes)
extern def Fl_Input_draw_data(self: Fl_InputPtr) -> bytes
extern def Fl_Input_handle_data(self: Fl_InputPtr) -> bytes
extern def Fl_Input_set_draw_data(self: Fl_InputPtr, data: bytes)
extern def Fl_Input_set_handle_data(self: Fl_InputPtr, data: bytes)
extern def Fl_Input_damage(self: Fl_InputPtr) -> t.CUInt8T
extern def Fl_Input_set_damage(self: Fl_InputPtr, flag: t.CUInt8T)
extern def Fl_Input_set_damage_area(self: Fl_InputPtr, flag: t.CUInt8T, x: int, y: int, w: int, h: int)
extern def Fl_Input_clear_damage(self: Fl_InputPtr)
extern def Fl_Input_as_window(self: Fl_InputPtr) -> bytes
extern def Fl_Input_as_group(self: Fl_InputPtr) -> bytes
extern def Fl_Input_set_deimage(self: Fl_InputPtr, a1: bytes)
extern def Fl_Input_deimage(self: Fl_InputPtr) -> bytes
extern def Fl_Input_set_callback(self: Fl_InputPtr, a1: bytes, a2: bytes)
extern def Fl_Input_visible(self: Fl_InputPtr) -> int
extern def Fl_Input_visible_r(self: Fl_InputPtr) -> int
extern def Fl_Input_active(self: Fl_InputPtr) -> t.CUInt32T
extern def Fl_Input_active_r(self: Fl_InputPtr) -> int
extern def Fl_Input_callback(self: Fl_InputPtr) -> bytes
extern def Fl_Input_set_deletion_callback(self: Fl_InputPtr, cb1: bytes, data: bytes)
extern def Fl_Input_from_dyn_ptr(ptr: Fl_WidgetPtr) -> Fl_InputPtr
extern def Fl_Input_from_derived_dyn_ptr(ptr: Fl_WidgetPtr) -> Fl_InputPtr
extern def Fl_Input_super_draw(ptr: Fl_WidgetPtr, flag: int)
extern def Fl_Input_super_draw_first(ptr: Fl_WidgetPtr, flag: int)
extern def Fl_Input_super_handle_first(ptr: Fl_WidgetPtr, flag: int)
# ----- Fl_Input (input_declare) -----
extern def Fl_Input_set_value(self: Fl_InputPtr, a1: str) -> int
extern def Fl_Input_value(self: Fl_InputPtr) -> str
extern def Fl_Input_maximum_size(self: Fl_InputPtr) -> int
extern def Fl_Input_set_maximum_size(self: Fl_InputPtr, m: int)
extern def Fl_Input_position(self: Fl_InputPtr) -> int
extern def Fl_Input_set_position(self: Fl_InputPtr, p: int) -> int
extern def Fl_Input_set_mark(self: Fl_InputPtr, m: int) -> int
extern def Fl_Input_mark(self: Fl_InputPtr) -> int
extern def Fl_Input_replace(self: Fl_InputPtr, b: int, e: int, text: str, ilen: int) -> int
extern def Fl_Input_insert(self: Fl_InputPtr, t: str, l: int) -> int
extern def Fl_Input_append(self: Fl_InputPtr, t: str, l: int, keep_selection: t.CChar) -> int
extern def Fl_Input_copy(self: Fl_InputPtr, clipboard: int) -> int
extern def Fl_Input_undo(self: Fl_InputPtr) -> int
extern def Fl_Input_copy_cuts(self: Fl_InputPtr) -> int
extern def Fl_Input_cursor_color(self: Fl_InputPtr) -> t.CUInt32T
extern def Fl_Input_set_cursor_color(self: Fl_InputPtr, s: t.CUInt32T)
extern def Fl_Input_text_font(self: Fl_InputPtr) -> int
extern def Fl_Input_set_text_font(self: Fl_InputPtr, s: int)
extern def Fl_Input_text_color(self: Fl_InputPtr) -> t.CUInt32T
extern def Fl_Input_set_text_color(self: Fl_InputPtr, s: t.CUInt32T)
extern def Fl_Input_text_size(self: Fl_InputPtr) -> int
extern def Fl_Input_set_text_size(self: Fl_InputPtr, s: int)
extern def Fl_Input_readonly(self: Fl_InputPtr) -> int
extern def Fl_Input_set_readonly(self: Fl_InputPtr, boolean: int)
extern def Fl_Input_wrap(self: Fl_InputPtr) -> int
extern def Fl_Input_set_wrap(self: Fl_InputPtr, boolean: int)
extern def Fl_Input_set_tab_nav(self: Fl_InputPtr, flag: int)
extern def Fl_Input_tab_nav(self: Fl_InputPtr) -> int
# ----- Fl_Int_Input (widget_declare) -----
extern def Fl_Int_Input_new(x: int, y: int, width: int, height: int, title: str) -> Fl_Int_InputPtr
extern def Fl_Int_Input_x(self: Fl_Int_InputPtr) -> int
extern def Fl_Int_Input_y(self: Fl_Int_InputPtr) -> int
extern def Fl_Int_Input_width(self: Fl_Int_InputPtr) -> int
extern def Fl_Int_Input_height(self: Fl_Int_InputPtr) -> int
extern def Fl_Int_Input_label(self: Fl_Int_InputPtr) -> str
extern def Fl_Int_Input_set_label(self: Fl_Int_InputPtr, title: str)
extern def Fl_Int_Input_redraw(self: Fl_Int_InputPtr)
extern def Fl_Int_Input_show(self: Fl_Int_InputPtr)
extern def Fl_Int_Input_hide(self: Fl_Int_InputPtr)
extern def Fl_Int_Input_activate(self: Fl_Int_InputPtr)
extern def Fl_Int_Input_deactivate(self: Fl_Int_InputPtr)
extern def Fl_Int_Input_redraw_label(self: Fl_Int_InputPtr)
extern def Fl_Int_Input_resize(self: Fl_Int_InputPtr, x: int, y: int, width: int, height: int)
extern def Fl_Int_Input_widget_resize(self: Fl_Int_InputPtr, x: int, y: int, width: int, height: int)
extern def Fl_Int_Input_tooltip(self: Fl_Int_InputPtr) -> str
extern def Fl_Int_Input_set_tooltip(self: Fl_Int_InputPtr, txt: str)
extern def Fl_Int_Input_get_type(self: Fl_Int_InputPtr) -> int
extern def Fl_Int_Input_set_type(self: Fl_Int_InputPtr, typ: int)
extern def Fl_Int_Input_color(self: Fl_Int_InputPtr) -> t.CUInt32T
extern def Fl_Int_Input_set_color(self: Fl_Int_InputPtr, color: t.CUInt32T)
extern def Fl_Int_Input_measure_label(self: Fl_Int_InputPtr, a1: bytes, a2: bytes)
extern def Fl_Int_Input_label_color(self: Fl_Int_InputPtr) -> t.CUInt32T
extern def Fl_Int_Input_set_label_color(self: Fl_Int_InputPtr, color: t.CUInt32T)
extern def Fl_Int_Input_label_font(self: Fl_Int_InputPtr) -> int
extern def Fl_Int_Input_set_label_font(self: Fl_Int_InputPtr, font: int)
extern def Fl_Int_Input_label_size(self: Fl_Int_InputPtr) -> int
extern def Fl_Int_Input_set_label_size(self: Fl_Int_InputPtr, sz: int)
extern def Fl_Int_Input_label_type(self: Fl_Int_InputPtr) -> int
extern def Fl_Int_Input_set_label_type(self: Fl_Int_InputPtr, typ: int)
extern def Fl_Int_Input_box(self: Fl_Int_InputPtr) -> int
extern def Fl_Int_Input_set_box(self: Fl_Int_InputPtr, typ: int)
extern def Fl_Int_Input_changed(self: Fl_Int_InputPtr) -> int
extern def Fl_Int_Input_set_changed(self: Fl_Int_InputPtr)
extern def Fl_Int_Input_clear_changed(self: Fl_Int_InputPtr)
extern def Fl_Int_Input_align(self: Fl_Int_InputPtr) -> int
extern def Fl_Int_Input_set_align(self: Fl_Int_InputPtr, typ: int)
extern def Fl_Int_Input_delete(self: Fl_Int_InputPtr)
extern def Fl_Int_Input_set_image(self: Fl_Int_InputPtr, a1: bytes)
extern def Fl_Int_Input_handle(self: Fl_Int_InputPtr, cb: bytes, data: bytes)
extern def Fl_Int_Input_handle_event(self: Fl_Int_InputPtr, event: int) -> int
extern def Fl_Int_Input_draw(self: Fl_Int_InputPtr, cb: bytes, data: bytes)
extern def Fl_Int_Input_resize_callback(self: Fl_Int_InputPtr, cb1: bytes, data: bytes)
extern def Fl_Int_Input_set_when(self: Fl_Int_InputPtr, a1: int)
extern def Fl_Int_Input_when(self: Fl_Int_InputPtr) -> int
extern def Fl_Int_Input_image(self: Fl_Int_InputPtr) -> bytes
extern def Fl_Int_Input_parent(self: Fl_Int_InputPtr) -> bytes
extern def Fl_Int_Input_selection_color(self: Fl_Int_InputPtr) -> t.CUInt32T
extern def Fl_Int_Input_set_selection_color(self: Fl_Int_InputPtr, color: t.CUInt32T)
extern def Fl_Int_Input_do_callback(self: Fl_Int_InputPtr)
extern def Fl_Int_Input_inside(self: Fl_Int_InputPtr, a1: bytes) -> int
extern def Fl_Int_Input_window(self: Fl_Int_InputPtr) -> bytes
extern def Fl_Int_Input_top_window(self: Fl_Int_InputPtr) -> bytes
extern def Fl_Int_Input_takes_events(self: Fl_Int_InputPtr) -> int
extern def Fl_Int_Input_user_data(self: Fl_Int_InputPtr) -> bytes
extern def Fl_Int_Input_take_focus(self: Fl_Int_InputPtr) -> int
extern def Fl_Int_Input_set_visible_focus(self: Fl_Int_InputPtr)
extern def Fl_Int_Input_clear_visible_focus(self: Fl_Int_InputPtr)
extern def Fl_Int_Input_visible_focus(self: Fl_Int_InputPtr, v: int)
extern def Fl_Int_Input_has_visible_focus(self: Fl_Int_InputPtr) -> t.CUInt32T
extern def Fl_Int_Input_set_user_data(self: Fl_Int_InputPtr, data: bytes)
extern def Fl_Int_Input_draw_data(self: Fl_Int_InputPtr) -> bytes
extern def Fl_Int_Input_handle_data(self: Fl_Int_InputPtr) -> bytes
extern def Fl_Int_Input_set_draw_data(self: Fl_Int_InputPtr, data: bytes)
extern def Fl_Int_Input_set_handle_data(self: Fl_Int_InputPtr, data: bytes)
extern def Fl_Int_Input_damage(self: Fl_Int_InputPtr) -> t.CUInt8T
extern def Fl_Int_Input_set_damage(self: Fl_Int_InputPtr, flag: t.CUInt8T)
extern def Fl_Int_Input_set_damage_area(self: Fl_Int_InputPtr, flag: t.CUInt8T, x: int, y: int, w: int, h: int)
extern def Fl_Int_Input_clear_damage(self: Fl_Int_InputPtr)
extern def Fl_Int_Input_as_window(self: Fl_Int_InputPtr) -> bytes
extern def Fl_Int_Input_as_group(self: Fl_Int_InputPtr) -> bytes
extern def Fl_Int_Input_set_deimage(self: Fl_Int_InputPtr, a1: bytes)
extern def Fl_Int_Input_deimage(self: Fl_Int_InputPtr) -> bytes
extern def Fl_Int_Input_set_callback(self: Fl_Int_InputPtr, a1: bytes, a2: bytes)
extern def Fl_Int_Input_visible(self: Fl_Int_InputPtr) -> int
extern def Fl_Int_Input_visible_r(self: Fl_Int_InputPtr) -> int
extern def Fl_Int_Input_active(self: Fl_Int_InputPtr) -> t.CUInt32T
extern def Fl_Int_Input_active_r(self: Fl_Int_InputPtr) -> int
extern def Fl_Int_Input_callback(self: Fl_Int_InputPtr) -> bytes
extern def Fl_Int_Input_set_deletion_callback(self: Fl_Int_InputPtr, cb1: bytes, data: bytes)
extern def Fl_Int_Input_from_dyn_ptr(ptr: Fl_WidgetPtr) -> Fl_Int_InputPtr
extern def Fl_Int_Input_from_derived_dyn_ptr(ptr: Fl_WidgetPtr) -> Fl_Int_InputPtr
extern def Fl_Int_Input_super_draw(ptr: Fl_WidgetPtr, flag: int)
extern def Fl_Int_Input_super_draw_first(ptr: Fl_WidgetPtr, flag: int)
extern def Fl_Int_Input_super_handle_first(ptr: Fl_WidgetPtr, flag: int)
# ----- Fl_Int_Input (input_declare) -----
extern def Fl_Int_Input_set_value(self: Fl_Int_InputPtr, a1: str) -> int
extern def Fl_Int_Input_value(self: Fl_Int_InputPtr) -> str
extern def Fl_Int_Input_maximum_size(self: Fl_Int_InputPtr) -> int
extern def Fl_Int_Input_set_maximum_size(self: Fl_Int_InputPtr, m: int)
extern def Fl_Int_Input_position(self: Fl_Int_InputPtr) -> int
extern def Fl_Int_Input_set_position(self: Fl_Int_InputPtr, p: int) -> int
extern def Fl_Int_Input_set_mark(self: Fl_Int_InputPtr, m: int) -> int
extern def Fl_Int_Input_mark(self: Fl_Int_InputPtr) -> int
extern def Fl_Int_Input_replace(self: Fl_Int_InputPtr, b: int, e: int, text: str, ilen: int) -> int
extern def Fl_Int_Input_insert(self: Fl_Int_InputPtr, t: str, l: int) -> int
extern def Fl_Int_Input_append(self: Fl_Int_InputPtr, t: str, l: int, keep_selection: t.CChar) -> int
extern def Fl_Int_Input_copy(self: Fl_Int_InputPtr, clipboard: int) -> int
extern def Fl_Int_Input_undo(self: Fl_Int_InputPtr) -> int
extern def Fl_Int_Input_copy_cuts(self: Fl_Int_InputPtr) -> int
extern def Fl_Int_Input_cursor_color(self: Fl_Int_InputPtr) -> t.CUInt32T
extern def Fl_Int_Input_set_cursor_color(self: Fl_Int_InputPtr, s: t.CUInt32T)
extern def Fl_Int_Input_text_font(self: Fl_Int_InputPtr) -> int
extern def Fl_Int_Input_set_text_font(self: Fl_Int_InputPtr, s: int)
extern def Fl_Int_Input_text_color(self: Fl_Int_InputPtr) -> t.CUInt32T
extern def Fl_Int_Input_set_text_color(self: Fl_Int_InputPtr, s: t.CUInt32T)
extern def Fl_Int_Input_text_size(self: Fl_Int_InputPtr) -> int
extern def Fl_Int_Input_set_text_size(self: Fl_Int_InputPtr, s: int)
extern def Fl_Int_Input_readonly(self: Fl_Int_InputPtr) -> int
extern def Fl_Int_Input_set_readonly(self: Fl_Int_InputPtr, boolean: int)
extern def Fl_Int_Input_wrap(self: Fl_Int_InputPtr) -> int
extern def Fl_Int_Input_set_wrap(self: Fl_Int_InputPtr, boolean: int)
extern def Fl_Int_Input_set_tab_nav(self: Fl_Int_InputPtr, flag: int)
extern def Fl_Int_Input_tab_nav(self: Fl_Int_InputPtr) -> int
# ----- Fl_Float_Input (widget_declare) -----
extern def Fl_Float_Input_new(x: int, y: int, width: int, height: int, title: str) -> Fl_Float_InputPtr
extern def Fl_Float_Input_x(self: Fl_Float_InputPtr) -> int
extern def Fl_Float_Input_y(self: Fl_Float_InputPtr) -> int
extern def Fl_Float_Input_width(self: Fl_Float_InputPtr) -> int
extern def Fl_Float_Input_height(self: Fl_Float_InputPtr) -> int
extern def Fl_Float_Input_label(self: Fl_Float_InputPtr) -> str
extern def Fl_Float_Input_set_label(self: Fl_Float_InputPtr, title: str)
extern def Fl_Float_Input_redraw(self: Fl_Float_InputPtr)
extern def Fl_Float_Input_show(self: Fl_Float_InputPtr)
extern def Fl_Float_Input_hide(self: Fl_Float_InputPtr)
extern def Fl_Float_Input_activate(self: Fl_Float_InputPtr)
extern def Fl_Float_Input_deactivate(self: Fl_Float_InputPtr)
extern def Fl_Float_Input_redraw_label(self: Fl_Float_InputPtr)
extern def Fl_Float_Input_resize(self: Fl_Float_InputPtr, x: int, y: int, width: int, height: int)
extern def Fl_Float_Input_widget_resize(self: Fl_Float_InputPtr, x: int, y: int, width: int, height: int)
extern def Fl_Float_Input_tooltip(self: Fl_Float_InputPtr) -> str
extern def Fl_Float_Input_set_tooltip(self: Fl_Float_InputPtr, txt: str)
extern def Fl_Float_Input_get_type(self: Fl_Float_InputPtr) -> int
extern def Fl_Float_Input_set_type(self: Fl_Float_InputPtr, typ: int)
extern def Fl_Float_Input_color(self: Fl_Float_InputPtr) -> t.CUInt32T
extern def Fl_Float_Input_set_color(self: Fl_Float_InputPtr, color: t.CUInt32T)
extern def Fl_Float_Input_measure_label(self: Fl_Float_InputPtr, a1: bytes, a2: bytes)
extern def Fl_Float_Input_label_color(self: Fl_Float_InputPtr) -> t.CUInt32T
extern def Fl_Float_Input_set_label_color(self: Fl_Float_InputPtr, color: t.CUInt32T)
extern def Fl_Float_Input_label_font(self: Fl_Float_InputPtr) -> int
extern def Fl_Float_Input_set_label_font(self: Fl_Float_InputPtr, font: int)
extern def Fl_Float_Input_label_size(self: Fl_Float_InputPtr) -> int
extern def Fl_Float_Input_set_label_size(self: Fl_Float_InputPtr, sz: int)
extern def Fl_Float_Input_label_type(self: Fl_Float_InputPtr) -> int
extern def Fl_Float_Input_set_label_type(self: Fl_Float_InputPtr, typ: int)
extern def Fl_Float_Input_box(self: Fl_Float_InputPtr) -> int
extern def Fl_Float_Input_set_box(self: Fl_Float_InputPtr, typ: int)
extern def Fl_Float_Input_changed(self: Fl_Float_InputPtr) -> int
extern def Fl_Float_Input_set_changed(self: Fl_Float_InputPtr)
extern def Fl_Float_Input_clear_changed(self: Fl_Float_InputPtr)
extern def Fl_Float_Input_align(self: Fl_Float_InputPtr) -> int
extern def Fl_Float_Input_set_align(self: Fl_Float_InputPtr, typ: int)
extern def Fl_Float_Input_delete(self: Fl_Float_InputPtr)
extern def Fl_Float_Input_set_image(self: Fl_Float_InputPtr, a1: bytes)
extern def Fl_Float_Input_handle(self: Fl_Float_InputPtr, cb: bytes, data: bytes)
extern def Fl_Float_Input_handle_event(self: Fl_Float_InputPtr, event: int) -> int
extern def Fl_Float_Input_draw(self: Fl_Float_InputPtr, cb: bytes, data: bytes)
extern def Fl_Float_Input_resize_callback(self: Fl_Float_InputPtr, cb1: bytes, data: bytes)
extern def Fl_Float_Input_set_when(self: Fl_Float_InputPtr, a1: int)
extern def Fl_Float_Input_when(self: Fl_Float_InputPtr) -> int
extern def Fl_Float_Input_image(self: Fl_Float_InputPtr) -> bytes
extern def Fl_Float_Input_parent(self: Fl_Float_InputPtr) -> bytes
extern def Fl_Float_Input_selection_color(self: Fl_Float_InputPtr) -> t.CUInt32T
extern def Fl_Float_Input_set_selection_color(self: Fl_Float_InputPtr, color: t.CUInt32T)
extern def Fl_Float_Input_do_callback(self: Fl_Float_InputPtr)
extern def Fl_Float_Input_inside(self: Fl_Float_InputPtr, a1: bytes) -> int
extern def Fl_Float_Input_window(self: Fl_Float_InputPtr) -> bytes
extern def Fl_Float_Input_top_window(self: Fl_Float_InputPtr) -> bytes
extern def Fl_Float_Input_takes_events(self: Fl_Float_InputPtr) -> int
extern def Fl_Float_Input_user_data(self: Fl_Float_InputPtr) -> bytes
extern def Fl_Float_Input_take_focus(self: Fl_Float_InputPtr) -> int
extern def Fl_Float_Input_set_visible_focus(self: Fl_Float_InputPtr)
extern def Fl_Float_Input_clear_visible_focus(self: Fl_Float_InputPtr)
extern def Fl_Float_Input_visible_focus(self: Fl_Float_InputPtr, v: int)
extern def Fl_Float_Input_has_visible_focus(self: Fl_Float_InputPtr) -> t.CUInt32T
extern def Fl_Float_Input_set_user_data(self: Fl_Float_InputPtr, data: bytes)
extern def Fl_Float_Input_draw_data(self: Fl_Float_InputPtr) -> bytes
extern def Fl_Float_Input_handle_data(self: Fl_Float_InputPtr) -> bytes
extern def Fl_Float_Input_set_draw_data(self: Fl_Float_InputPtr, data: bytes)
extern def Fl_Float_Input_set_handle_data(self: Fl_Float_InputPtr, data: bytes)
extern def Fl_Float_Input_damage(self: Fl_Float_InputPtr) -> t.CUInt8T
extern def Fl_Float_Input_set_damage(self: Fl_Float_InputPtr, flag: t.CUInt8T)
extern def Fl_Float_Input_set_damage_area(self: Fl_Float_InputPtr, flag: t.CUInt8T, x: int, y: int, w: int, h: int)
extern def Fl_Float_Input_clear_damage(self: Fl_Float_InputPtr)
extern def Fl_Float_Input_as_window(self: Fl_Float_InputPtr) -> bytes
extern def Fl_Float_Input_as_group(self: Fl_Float_InputPtr) -> bytes
extern def Fl_Float_Input_set_deimage(self: Fl_Float_InputPtr, a1: bytes)
extern def Fl_Float_Input_deimage(self: Fl_Float_InputPtr) -> bytes
extern def Fl_Float_Input_set_callback(self: Fl_Float_InputPtr, a1: bytes, a2: bytes)
extern def Fl_Float_Input_visible(self: Fl_Float_InputPtr) -> int
extern def Fl_Float_Input_visible_r(self: Fl_Float_InputPtr) -> int
extern def Fl_Float_Input_active(self: Fl_Float_InputPtr) -> t.CUInt32T
extern def Fl_Float_Input_active_r(self: Fl_Float_InputPtr) -> int
extern def Fl_Float_Input_callback(self: Fl_Float_InputPtr) -> bytes
extern def Fl_Float_Input_set_deletion_callback(self: Fl_Float_InputPtr, cb1: bytes, data: bytes)
extern def Fl_Float_Input_from_dyn_ptr(ptr: Fl_WidgetPtr) -> Fl_Float_InputPtr
extern def Fl_Float_Input_from_derived_dyn_ptr(ptr: Fl_WidgetPtr) -> Fl_Float_InputPtr
extern def Fl_Float_Input_super_draw(ptr: Fl_WidgetPtr, flag: int)
extern def Fl_Float_Input_super_draw_first(ptr: Fl_WidgetPtr, flag: int)
extern def Fl_Float_Input_super_handle_first(ptr: Fl_WidgetPtr, flag: int)
# ----- Fl_Float_Input (input_declare) -----
extern def Fl_Float_Input_set_value(self: Fl_Float_InputPtr, a1: str) -> int
extern def Fl_Float_Input_value(self: Fl_Float_InputPtr) -> str
extern def Fl_Float_Input_maximum_size(self: Fl_Float_InputPtr) -> int
extern def Fl_Float_Input_set_maximum_size(self: Fl_Float_InputPtr, m: int)
extern def Fl_Float_Input_position(self: Fl_Float_InputPtr) -> int
extern def Fl_Float_Input_set_position(self: Fl_Float_InputPtr, p: int) -> int
extern def Fl_Float_Input_set_mark(self: Fl_Float_InputPtr, m: int) -> int
extern def Fl_Float_Input_mark(self: Fl_Float_InputPtr) -> int
extern def Fl_Float_Input_replace(self: Fl_Float_InputPtr, b: int, e: int, text: str, ilen: int) -> int
extern def Fl_Float_Input_insert(self: Fl_Float_InputPtr, t: str, l: int) -> int
extern def Fl_Float_Input_append(self: Fl_Float_InputPtr, t: str, l: int, keep_selection: t.CChar) -> int
extern def Fl_Float_Input_copy(self: Fl_Float_InputPtr, clipboard: int) -> int
extern def Fl_Float_Input_undo(self: Fl_Float_InputPtr) -> int
extern def Fl_Float_Input_copy_cuts(self: Fl_Float_InputPtr) -> int
extern def Fl_Float_Input_cursor_color(self: Fl_Float_InputPtr) -> t.CUInt32T
extern def Fl_Float_Input_set_cursor_color(self: Fl_Float_InputPtr, s: t.CUInt32T)
extern def Fl_Float_Input_text_font(self: Fl_Float_InputPtr) -> int
extern def Fl_Float_Input_set_text_font(self: Fl_Float_InputPtr, s: int)
extern def Fl_Float_Input_text_color(self: Fl_Float_InputPtr) -> t.CUInt32T
extern def Fl_Float_Input_set_text_color(self: Fl_Float_InputPtr, s: t.CUInt32T)
extern def Fl_Float_Input_text_size(self: Fl_Float_InputPtr) -> int
extern def Fl_Float_Input_set_text_size(self: Fl_Float_InputPtr, s: int)
extern def Fl_Float_Input_readonly(self: Fl_Float_InputPtr) -> int
extern def Fl_Float_Input_set_readonly(self: Fl_Float_InputPtr, boolean: int)
extern def Fl_Float_Input_wrap(self: Fl_Float_InputPtr) -> int
extern def Fl_Float_Input_set_wrap(self: Fl_Float_InputPtr, boolean: int)
extern def Fl_Float_Input_set_tab_nav(self: Fl_Float_InputPtr, flag: int)
extern def Fl_Float_Input_tab_nav(self: Fl_Float_InputPtr) -> int
# ----- Fl_Multiline_Input (widget_declare) -----
extern def Fl_Multiline_Input_new(x: int, y: int, width: int, height: int, title: str) -> Fl_Multiline_InputPtr
extern def Fl_Multiline_Input_x(self: Fl_Multiline_InputPtr) -> int
extern def Fl_Multiline_Input_y(self: Fl_Multiline_InputPtr) -> int
extern def Fl_Multiline_Input_width(self: Fl_Multiline_InputPtr) -> int
extern def Fl_Multiline_Input_height(self: Fl_Multiline_InputPtr) -> int
extern def Fl_Multiline_Input_label(self: Fl_Multiline_InputPtr) -> str
extern def Fl_Multiline_Input_set_label(self: Fl_Multiline_InputPtr, title: str)
extern def Fl_Multiline_Input_redraw(self: Fl_Multiline_InputPtr)
extern def Fl_Multiline_Input_show(self: Fl_Multiline_InputPtr)
extern def Fl_Multiline_Input_hide(self: Fl_Multiline_InputPtr)
extern def Fl_Multiline_Input_activate(self: Fl_Multiline_InputPtr)
extern def Fl_Multiline_Input_deactivate(self: Fl_Multiline_InputPtr)
extern def Fl_Multiline_Input_redraw_label(self: Fl_Multiline_InputPtr)
extern def Fl_Multiline_Input_resize(self: Fl_Multiline_InputPtr, x: int, y: int, width: int, height: int)
extern def Fl_Multiline_Input_widget_resize(self: Fl_Multiline_InputPtr, x: int, y: int, width: int, height: int)
extern def Fl_Multiline_Input_tooltip(self: Fl_Multiline_InputPtr) -> str
extern def Fl_Multiline_Input_set_tooltip(self: Fl_Multiline_InputPtr, txt: str)
extern def Fl_Multiline_Input_get_type(self: Fl_Multiline_InputPtr) -> int
extern def Fl_Multiline_Input_set_type(self: Fl_Multiline_InputPtr, typ: int)
extern def Fl_Multiline_Input_color(self: Fl_Multiline_InputPtr) -> t.CUInt32T
extern def Fl_Multiline_Input_set_color(self: Fl_Multiline_InputPtr, color: t.CUInt32T)
extern def Fl_Multiline_Input_measure_label(self: Fl_Multiline_InputPtr, a1: bytes, a2: bytes)
extern def Fl_Multiline_Input_label_color(self: Fl_Multiline_InputPtr) -> t.CUInt32T
extern def Fl_Multiline_Input_set_label_color(self: Fl_Multiline_InputPtr, color: t.CUInt32T)
extern def Fl_Multiline_Input_label_font(self: Fl_Multiline_InputPtr) -> int
extern def Fl_Multiline_Input_set_label_font(self: Fl_Multiline_InputPtr, font: int)
extern def Fl_Multiline_Input_label_size(self: Fl_Multiline_InputPtr) -> int
extern def Fl_Multiline_Input_set_label_size(self: Fl_Multiline_InputPtr, sz: int)
extern def Fl_Multiline_Input_label_type(self: Fl_Multiline_InputPtr) -> int
extern def Fl_Multiline_Input_set_label_type(self: Fl_Multiline_InputPtr, typ: int)
extern def Fl_Multiline_Input_box(self: Fl_Multiline_InputPtr) -> int
extern def Fl_Multiline_Input_set_box(self: Fl_Multiline_InputPtr, typ: int)
extern def Fl_Multiline_Input_changed(self: Fl_Multiline_InputPtr) -> int
extern def Fl_Multiline_Input_set_changed(self: Fl_Multiline_InputPtr)
extern def Fl_Multiline_Input_clear_changed(self: Fl_Multiline_InputPtr)
extern def Fl_Multiline_Input_align(self: Fl_Multiline_InputPtr) -> int
extern def Fl_Multiline_Input_set_align(self: Fl_Multiline_InputPtr, typ: int)
extern def Fl_Multiline_Input_delete(self: Fl_Multiline_InputPtr)
extern def Fl_Multiline_Input_set_image(self: Fl_Multiline_InputPtr, a1: bytes)
extern def Fl_Multiline_Input_handle(self: Fl_Multiline_InputPtr, cb: bytes, data: bytes)
extern def Fl_Multiline_Input_handle_event(self: Fl_Multiline_InputPtr, event: int) -> int
extern def Fl_Multiline_Input_draw(self: Fl_Multiline_InputPtr, cb: bytes, data: bytes)
extern def Fl_Multiline_Input_resize_callback(self: Fl_Multiline_InputPtr, cb1: bytes, data: bytes)
extern def Fl_Multiline_Input_set_when(self: Fl_Multiline_InputPtr, a1: int)
extern def Fl_Multiline_Input_when(self: Fl_Multiline_InputPtr) -> int
extern def Fl_Multiline_Input_image(self: Fl_Multiline_InputPtr) -> bytes
extern def Fl_Multiline_Input_parent(self: Fl_Multiline_InputPtr) -> bytes
extern def Fl_Multiline_Input_selection_color(self: Fl_Multiline_InputPtr) -> t.CUInt32T
extern def Fl_Multiline_Input_set_selection_color(self: Fl_Multiline_InputPtr, color: t.CUInt32T)
extern def Fl_Multiline_Input_do_callback(self: Fl_Multiline_InputPtr)
extern def Fl_Multiline_Input_inside(self: Fl_Multiline_InputPtr, a1: bytes) -> int
extern def Fl_Multiline_Input_window(self: Fl_Multiline_InputPtr) -> bytes
extern def Fl_Multiline_Input_top_window(self: Fl_Multiline_InputPtr) -> bytes
extern def Fl_Multiline_Input_takes_events(self: Fl_Multiline_InputPtr) -> int
extern def Fl_Multiline_Input_user_data(self: Fl_Multiline_InputPtr) -> bytes
extern def Fl_Multiline_Input_take_focus(self: Fl_Multiline_InputPtr) -> int
extern def Fl_Multiline_Input_set_visible_focus(self: Fl_Multiline_InputPtr)
extern def Fl_Multiline_Input_clear_visible_focus(self: Fl_Multiline_InputPtr)
extern def Fl_Multiline_Input_visible_focus(self: Fl_Multiline_InputPtr, v: int)
extern def Fl_Multiline_Input_has_visible_focus(self: Fl_Multiline_InputPtr) -> t.CUInt32T
extern def Fl_Multiline_Input_set_user_data(self: Fl_Multiline_InputPtr, data: bytes)
extern def Fl_Multiline_Input_draw_data(self: Fl_Multiline_InputPtr) -> bytes
extern def Fl_Multiline_Input_handle_data(self: Fl_Multiline_InputPtr) -> bytes
extern def Fl_Multiline_Input_set_draw_data(self: Fl_Multiline_InputPtr, data: bytes)
extern def Fl_Multiline_Input_set_handle_data(self: Fl_Multiline_InputPtr, data: bytes)
extern def Fl_Multiline_Input_damage(self: Fl_Multiline_InputPtr) -> t.CUInt8T
extern def Fl_Multiline_Input_set_damage(self: Fl_Multiline_InputPtr, flag: t.CUInt8T)
extern def Fl_Multiline_Input_set_damage_area(self: Fl_Multiline_InputPtr, flag: t.CUInt8T, x: int, y: int, w: int, h: int)
extern def Fl_Multiline_Input_clear_damage(self: Fl_Multiline_InputPtr)
extern def Fl_Multiline_Input_as_window(self: Fl_Multiline_InputPtr) -> bytes
extern def Fl_Multiline_Input_as_group(self: Fl_Multiline_InputPtr) -> bytes
extern def Fl_Multiline_Input_set_deimage(self: Fl_Multiline_InputPtr, a1: bytes)
extern def Fl_Multiline_Input_deimage(self: Fl_Multiline_InputPtr) -> bytes
extern def Fl_Multiline_Input_set_callback(self: Fl_Multiline_InputPtr, a1: bytes, a2: bytes)
extern def Fl_Multiline_Input_visible(self: Fl_Multiline_InputPtr) -> int
extern def Fl_Multiline_Input_visible_r(self: Fl_Multiline_InputPtr) -> int
extern def Fl_Multiline_Input_active(self: Fl_Multiline_InputPtr) -> t.CUInt32T
extern def Fl_Multiline_Input_active_r(self: Fl_Multiline_InputPtr) -> int
extern def Fl_Multiline_Input_callback(self: Fl_Multiline_InputPtr) -> bytes
extern def Fl_Multiline_Input_set_deletion_callback(self: Fl_Multiline_InputPtr, cb1: bytes, data: bytes)
extern def Fl_Multiline_Input_from_dyn_ptr(ptr: Fl_WidgetPtr) -> Fl_Multiline_InputPtr
extern def Fl_Multiline_Input_from_derived_dyn_ptr(ptr: Fl_WidgetPtr) -> Fl_Multiline_InputPtr
extern def Fl_Multiline_Input_super_draw(ptr: Fl_WidgetPtr, flag: int)
extern def Fl_Multiline_Input_super_draw_first(ptr: Fl_WidgetPtr, flag: int)
extern def Fl_Multiline_Input_super_handle_first(ptr: Fl_WidgetPtr, flag: int)
# ----- Fl_Multiline_Input (input_declare) -----
extern def Fl_Multiline_Input_set_value(self: Fl_Multiline_InputPtr, a1: str) -> int
extern def Fl_Multiline_Input_value(self: Fl_Multiline_InputPtr) -> str
extern def Fl_Multiline_Input_maximum_size(self: Fl_Multiline_InputPtr) -> int
extern def Fl_Multiline_Input_set_maximum_size(self: Fl_Multiline_InputPtr, m: int)
extern def Fl_Multiline_Input_position(self: Fl_Multiline_InputPtr) -> int
extern def Fl_Multiline_Input_set_position(self: Fl_Multiline_InputPtr, p: int) -> int
extern def Fl_Multiline_Input_set_mark(self: Fl_Multiline_InputPtr, m: int) -> int
extern def Fl_Multiline_Input_mark(self: Fl_Multiline_InputPtr) -> int
extern def Fl_Multiline_Input_replace(self: Fl_Multiline_InputPtr, b: int, e: int, text: str, ilen: int) -> int
extern def Fl_Multiline_Input_insert(self: Fl_Multiline_InputPtr, t: str, l: int) -> int
extern def Fl_Multiline_Input_append(self: Fl_Multiline_InputPtr, t: str, l: int, keep_selection: t.CChar) -> int
extern def Fl_Multiline_Input_copy(self: Fl_Multiline_InputPtr, clipboard: int) -> int
extern def Fl_Multiline_Input_undo(self: Fl_Multiline_InputPtr) -> int
extern def Fl_Multiline_Input_copy_cuts(self: Fl_Multiline_InputPtr) -> int
extern def Fl_Multiline_Input_cursor_color(self: Fl_Multiline_InputPtr) -> t.CUInt32T
extern def Fl_Multiline_Input_set_cursor_color(self: Fl_Multiline_InputPtr, s: t.CUInt32T)
extern def Fl_Multiline_Input_text_font(self: Fl_Multiline_InputPtr) -> int
extern def Fl_Multiline_Input_set_text_font(self: Fl_Multiline_InputPtr, s: int)
extern def Fl_Multiline_Input_text_color(self: Fl_Multiline_InputPtr) -> t.CUInt32T
extern def Fl_Multiline_Input_set_text_color(self: Fl_Multiline_InputPtr, s: t.CUInt32T)
extern def Fl_Multiline_Input_text_size(self: Fl_Multiline_InputPtr) -> int
extern def Fl_Multiline_Input_set_text_size(self: Fl_Multiline_InputPtr, s: int)
extern def Fl_Multiline_Input_readonly(self: Fl_Multiline_InputPtr) -> int
extern def Fl_Multiline_Input_set_readonly(self: Fl_Multiline_InputPtr, boolean: int)
extern def Fl_Multiline_Input_wrap(self: Fl_Multiline_InputPtr) -> int
extern def Fl_Multiline_Input_set_wrap(self: Fl_Multiline_InputPtr, boolean: int)
extern def Fl_Multiline_Input_set_tab_nav(self: Fl_Multiline_InputPtr, flag: int)
extern def Fl_Multiline_Input_tab_nav(self: Fl_Multiline_InputPtr) -> int
# ----- Fl_Secret_Input (widget_declare) -----
extern def Fl_Secret_Input_new(x: int, y: int, width: int, height: int, title: str) -> Fl_Secret_InputPtr
extern def Fl_Secret_Input_x(self: Fl_Secret_InputPtr) -> int
extern def Fl_Secret_Input_y(self: Fl_Secret_InputPtr) -> int
extern def Fl_Secret_Input_width(self: Fl_Secret_InputPtr) -> int
extern def Fl_Secret_Input_height(self: Fl_Secret_InputPtr) -> int
extern def Fl_Secret_Input_label(self: Fl_Secret_InputPtr) -> str
extern def Fl_Secret_Input_set_label(self: Fl_Secret_InputPtr, title: str)
extern def Fl_Secret_Input_redraw(self: Fl_Secret_InputPtr)
extern def Fl_Secret_Input_show(self: Fl_Secret_InputPtr)
extern def Fl_Secret_Input_hide(self: Fl_Secret_InputPtr)
extern def Fl_Secret_Input_activate(self: Fl_Secret_InputPtr)
extern def Fl_Secret_Input_deactivate(self: Fl_Secret_InputPtr)
extern def Fl_Secret_Input_redraw_label(self: Fl_Secret_InputPtr)
extern def Fl_Secret_Input_resize(self: Fl_Secret_InputPtr, x: int, y: int, width: int, height: int)
extern def Fl_Secret_Input_widget_resize(self: Fl_Secret_InputPtr, x: int, y: int, width: int, height: int)
extern def Fl_Secret_Input_tooltip(self: Fl_Secret_InputPtr) -> str
extern def Fl_Secret_Input_set_tooltip(self: Fl_Secret_InputPtr, txt: str)
extern def Fl_Secret_Input_get_type(self: Fl_Secret_InputPtr) -> int
extern def Fl_Secret_Input_set_type(self: Fl_Secret_InputPtr, typ: int)
extern def Fl_Secret_Input_color(self: Fl_Secret_InputPtr) -> t.CUInt32T
extern def Fl_Secret_Input_set_color(self: Fl_Secret_InputPtr, color: t.CUInt32T)
extern def Fl_Secret_Input_measure_label(self: Fl_Secret_InputPtr, a1: bytes, a2: bytes)
extern def Fl_Secret_Input_label_color(self: Fl_Secret_InputPtr) -> t.CUInt32T
extern def Fl_Secret_Input_set_label_color(self: Fl_Secret_InputPtr, color: t.CUInt32T)
extern def Fl_Secret_Input_label_font(self: Fl_Secret_InputPtr) -> int
extern def Fl_Secret_Input_set_label_font(self: Fl_Secret_InputPtr, font: int)
extern def Fl_Secret_Input_label_size(self: Fl_Secret_InputPtr) -> int
extern def Fl_Secret_Input_set_label_size(self: Fl_Secret_InputPtr, sz: int)
extern def Fl_Secret_Input_label_type(self: Fl_Secret_InputPtr) -> int
extern def Fl_Secret_Input_set_label_type(self: Fl_Secret_InputPtr, typ: int)
extern def Fl_Secret_Input_box(self: Fl_Secret_InputPtr) -> int
extern def Fl_Secret_Input_set_box(self: Fl_Secret_InputPtr, typ: int)
extern def Fl_Secret_Input_changed(self: Fl_Secret_InputPtr) -> int
extern def Fl_Secret_Input_set_changed(self: Fl_Secret_InputPtr)
extern def Fl_Secret_Input_clear_changed(self: Fl_Secret_InputPtr)
extern def Fl_Secret_Input_align(self: Fl_Secret_InputPtr) -> int
extern def Fl_Secret_Input_set_align(self: Fl_Secret_InputPtr, typ: int)
extern def Fl_Secret_Input_delete(self: Fl_Secret_InputPtr)
extern def Fl_Secret_Input_set_image(self: Fl_Secret_InputPtr, a1: bytes)
extern def Fl_Secret_Input_handle(self: Fl_Secret_InputPtr, cb: bytes, data: bytes)
extern def Fl_Secret_Input_handle_event(self: Fl_Secret_InputPtr, event: int) -> int
extern def Fl_Secret_Input_draw(self: Fl_Secret_InputPtr, cb: bytes, data: bytes)
extern def Fl_Secret_Input_resize_callback(self: Fl_Secret_InputPtr, cb1: bytes, data: bytes)
extern def Fl_Secret_Input_set_when(self: Fl_Secret_InputPtr, a1: int)
extern def Fl_Secret_Input_when(self: Fl_Secret_InputPtr) -> int
extern def Fl_Secret_Input_image(self: Fl_Secret_InputPtr) -> bytes
extern def Fl_Secret_Input_parent(self: Fl_Secret_InputPtr) -> bytes
extern def Fl_Secret_Input_selection_color(self: Fl_Secret_InputPtr) -> t.CUInt32T
extern def Fl_Secret_Input_set_selection_color(self: Fl_Secret_InputPtr, color: t.CUInt32T)
extern def Fl_Secret_Input_do_callback(self: Fl_Secret_InputPtr)
extern def Fl_Secret_Input_inside(self: Fl_Secret_InputPtr, a1: bytes) -> int
extern def Fl_Secret_Input_window(self: Fl_Secret_InputPtr) -> bytes
extern def Fl_Secret_Input_top_window(self: Fl_Secret_InputPtr) -> bytes
extern def Fl_Secret_Input_takes_events(self: Fl_Secret_InputPtr) -> int
extern def Fl_Secret_Input_user_data(self: Fl_Secret_InputPtr) -> bytes
extern def Fl_Secret_Input_take_focus(self: Fl_Secret_InputPtr) -> int
extern def Fl_Secret_Input_set_visible_focus(self: Fl_Secret_InputPtr)
extern def Fl_Secret_Input_clear_visible_focus(self: Fl_Secret_InputPtr)
extern def Fl_Secret_Input_visible_focus(self: Fl_Secret_InputPtr, v: int)
extern def Fl_Secret_Input_has_visible_focus(self: Fl_Secret_InputPtr) -> t.CUInt32T
extern def Fl_Secret_Input_set_user_data(self: Fl_Secret_InputPtr, data: bytes)
extern def Fl_Secret_Input_draw_data(self: Fl_Secret_InputPtr) -> bytes
extern def Fl_Secret_Input_handle_data(self: Fl_Secret_InputPtr) -> bytes
extern def Fl_Secret_Input_set_draw_data(self: Fl_Secret_InputPtr, data: bytes)
extern def Fl_Secret_Input_set_handle_data(self: Fl_Secret_InputPtr, data: bytes)
extern def Fl_Secret_Input_damage(self: Fl_Secret_InputPtr) -> t.CUInt8T
extern def Fl_Secret_Input_set_damage(self: Fl_Secret_InputPtr, flag: t.CUInt8T)
extern def Fl_Secret_Input_set_damage_area(self: Fl_Secret_InputPtr, flag: t.CUInt8T, x: int, y: int, w: int, h: int)
extern def Fl_Secret_Input_clear_damage(self: Fl_Secret_InputPtr)
extern def Fl_Secret_Input_as_window(self: Fl_Secret_InputPtr) -> bytes
extern def Fl_Secret_Input_as_group(self: Fl_Secret_InputPtr) -> bytes
extern def Fl_Secret_Input_set_deimage(self: Fl_Secret_InputPtr, a1: bytes)
extern def Fl_Secret_Input_deimage(self: Fl_Secret_InputPtr) -> bytes
extern def Fl_Secret_Input_set_callback(self: Fl_Secret_InputPtr, a1: bytes, a2: bytes)
extern def Fl_Secret_Input_visible(self: Fl_Secret_InputPtr) -> int
extern def Fl_Secret_Input_visible_r(self: Fl_Secret_InputPtr) -> int
extern def Fl_Secret_Input_active(self: Fl_Secret_InputPtr) -> t.CUInt32T
extern def Fl_Secret_Input_active_r(self: Fl_Secret_InputPtr) -> int
extern def Fl_Secret_Input_callback(self: Fl_Secret_InputPtr) -> bytes
extern def Fl_Secret_Input_set_deletion_callback(self: Fl_Secret_InputPtr, cb1: bytes, data: bytes)
extern def Fl_Secret_Input_from_dyn_ptr(ptr: Fl_WidgetPtr) -> Fl_Secret_InputPtr
extern def Fl_Secret_Input_from_derived_dyn_ptr(ptr: Fl_WidgetPtr) -> Fl_Secret_InputPtr
extern def Fl_Secret_Input_super_draw(ptr: Fl_WidgetPtr, flag: int)
extern def Fl_Secret_Input_super_draw_first(ptr: Fl_WidgetPtr, flag: int)
extern def Fl_Secret_Input_super_handle_first(ptr: Fl_WidgetPtr, flag: int)
# ----- Fl_Secret_Input (input_declare) -----
extern def Fl_Secret_Input_set_value(self: Fl_Secret_InputPtr, a1: str) -> int
extern def Fl_Secret_Input_value(self: Fl_Secret_InputPtr) -> str
extern def Fl_Secret_Input_maximum_size(self: Fl_Secret_InputPtr) -> int
extern def Fl_Secret_Input_set_maximum_size(self: Fl_Secret_InputPtr, m: int)
extern def Fl_Secret_Input_position(self: Fl_Secret_InputPtr) -> int
extern def Fl_Secret_Input_set_position(self: Fl_Secret_InputPtr, p: int) -> int
extern def Fl_Secret_Input_set_mark(self: Fl_Secret_InputPtr, m: int) -> int
extern def Fl_Secret_Input_mark(self: Fl_Secret_InputPtr) -> int
extern def Fl_Secret_Input_replace(self: Fl_Secret_InputPtr, b: int, e: int, text: str, ilen: int) -> int
extern def Fl_Secret_Input_insert(self: Fl_Secret_InputPtr, t: str, l: int) -> int
extern def Fl_Secret_Input_append(self: Fl_Secret_InputPtr, t: str, l: int, keep_selection: t.CChar) -> int
extern def Fl_Secret_Input_copy(self: Fl_Secret_InputPtr, clipboard: int) -> int
extern def Fl_Secret_Input_undo(self: Fl_Secret_InputPtr) -> int
extern def Fl_Secret_Input_copy_cuts(self: Fl_Secret_InputPtr) -> int
extern def Fl_Secret_Input_cursor_color(self: Fl_Secret_InputPtr) -> t.CUInt32T
extern def Fl_Secret_Input_set_cursor_color(self: Fl_Secret_InputPtr, s: t.CUInt32T)
extern def Fl_Secret_Input_text_font(self: Fl_Secret_InputPtr) -> int
extern def Fl_Secret_Input_set_text_font(self: Fl_Secret_InputPtr, s: int)
extern def Fl_Secret_Input_text_color(self: Fl_Secret_InputPtr) -> t.CUInt32T
extern def Fl_Secret_Input_set_text_color(self: Fl_Secret_InputPtr, s: t.CUInt32T)
extern def Fl_Secret_Input_text_size(self: Fl_Secret_InputPtr) -> int
extern def Fl_Secret_Input_set_text_size(self: Fl_Secret_InputPtr, s: int)
extern def Fl_Secret_Input_readonly(self: Fl_Secret_InputPtr) -> int
extern def Fl_Secret_Input_set_readonly(self: Fl_Secret_InputPtr, boolean: int)
extern def Fl_Secret_Input_wrap(self: Fl_Secret_InputPtr) -> int
extern def Fl_Secret_Input_set_wrap(self: Fl_Secret_InputPtr, boolean: int)
extern def Fl_Secret_Input_set_tab_nav(self: Fl_Secret_InputPtr, flag: int)
extern def Fl_Secret_Input_tab_nav(self: Fl_Secret_InputPtr) -> int
# ----- Fl_File_Input (widget_declare) -----
extern def Fl_File_Input_new(x: int, y: int, width: int, height: int, title: str) -> Fl_File_InputPtr
extern def Fl_File_Input_x(self: Fl_File_InputPtr) -> int
extern def Fl_File_Input_y(self: Fl_File_InputPtr) -> int
extern def Fl_File_Input_width(self: Fl_File_InputPtr) -> int
extern def Fl_File_Input_height(self: Fl_File_InputPtr) -> int
extern def Fl_File_Input_label(self: Fl_File_InputPtr) -> str
extern def Fl_File_Input_set_label(self: Fl_File_InputPtr, title: str)
extern def Fl_File_Input_redraw(self: Fl_File_InputPtr)
extern def Fl_File_Input_show(self: Fl_File_InputPtr)
extern def Fl_File_Input_hide(self: Fl_File_InputPtr)
extern def Fl_File_Input_activate(self: Fl_File_InputPtr)
extern def Fl_File_Input_deactivate(self: Fl_File_InputPtr)
extern def Fl_File_Input_redraw_label(self: Fl_File_InputPtr)
extern def Fl_File_Input_resize(self: Fl_File_InputPtr, x: int, y: int, width: int, height: int)
extern def Fl_File_Input_widget_resize(self: Fl_File_InputPtr, x: int, y: int, width: int, height: int)
extern def Fl_File_Input_tooltip(self: Fl_File_InputPtr) -> str
extern def Fl_File_Input_set_tooltip(self: Fl_File_InputPtr, txt: str)
extern def Fl_File_Input_get_type(self: Fl_File_InputPtr) -> int
extern def Fl_File_Input_set_type(self: Fl_File_InputPtr, typ: int)
extern def Fl_File_Input_color(self: Fl_File_InputPtr) -> t.CUInt32T
extern def Fl_File_Input_set_color(self: Fl_File_InputPtr, color: t.CUInt32T)
extern def Fl_File_Input_measure_label(self: Fl_File_InputPtr, a1: bytes, a2: bytes)
extern def Fl_File_Input_label_color(self: Fl_File_InputPtr) -> t.CUInt32T
extern def Fl_File_Input_set_label_color(self: Fl_File_InputPtr, color: t.CUInt32T)
extern def Fl_File_Input_label_font(self: Fl_File_InputPtr) -> int
extern def Fl_File_Input_set_label_font(self: Fl_File_InputPtr, font: int)
extern def Fl_File_Input_label_size(self: Fl_File_InputPtr) -> int
extern def Fl_File_Input_set_label_size(self: Fl_File_InputPtr, sz: int)
extern def Fl_File_Input_label_type(self: Fl_File_InputPtr) -> int
extern def Fl_File_Input_set_label_type(self: Fl_File_InputPtr, typ: int)
extern def Fl_File_Input_box(self: Fl_File_InputPtr) -> int
extern def Fl_File_Input_set_box(self: Fl_File_InputPtr, typ: int)
extern def Fl_File_Input_changed(self: Fl_File_InputPtr) -> int
extern def Fl_File_Input_set_changed(self: Fl_File_InputPtr)
extern def Fl_File_Input_clear_changed(self: Fl_File_InputPtr)
extern def Fl_File_Input_align(self: Fl_File_InputPtr) -> int
extern def Fl_File_Input_set_align(self: Fl_File_InputPtr, typ: int)
extern def Fl_File_Input_delete(self: Fl_File_InputPtr)
extern def Fl_File_Input_set_image(self: Fl_File_InputPtr, a1: bytes)
extern def Fl_File_Input_handle(self: Fl_File_InputPtr, cb: bytes, data: bytes)
extern def Fl_File_Input_handle_event(self: Fl_File_InputPtr, event: int) -> int
extern def Fl_File_Input_draw(self: Fl_File_InputPtr, cb: bytes, data: bytes)
extern def Fl_File_Input_resize_callback(self: Fl_File_InputPtr, cb1: bytes, data: bytes)
extern def Fl_File_Input_set_when(self: Fl_File_InputPtr, a1: int)
extern def Fl_File_Input_when(self: Fl_File_InputPtr) -> int
extern def Fl_File_Input_image(self: Fl_File_InputPtr) -> bytes
extern def Fl_File_Input_parent(self: Fl_File_InputPtr) -> bytes
extern def Fl_File_Input_selection_color(self: Fl_File_InputPtr) -> t.CUInt32T
extern def Fl_File_Input_set_selection_color(self: Fl_File_InputPtr, color: t.CUInt32T)
extern def Fl_File_Input_do_callback(self: Fl_File_InputPtr)
extern def Fl_File_Input_inside(self: Fl_File_InputPtr, a1: bytes) -> int
extern def Fl_File_Input_window(self: Fl_File_InputPtr) -> bytes
extern def Fl_File_Input_top_window(self: Fl_File_InputPtr) -> bytes
extern def Fl_File_Input_takes_events(self: Fl_File_InputPtr) -> int
extern def Fl_File_Input_user_data(self: Fl_File_InputPtr) -> bytes
extern def Fl_File_Input_take_focus(self: Fl_File_InputPtr) -> int
extern def Fl_File_Input_set_visible_focus(self: Fl_File_InputPtr)
extern def Fl_File_Input_clear_visible_focus(self: Fl_File_InputPtr)
extern def Fl_File_Input_visible_focus(self: Fl_File_InputPtr, v: int)
extern def Fl_File_Input_has_visible_focus(self: Fl_File_InputPtr) -> t.CUInt32T
extern def Fl_File_Input_set_user_data(self: Fl_File_InputPtr, data: bytes)
extern def Fl_File_Input_draw_data(self: Fl_File_InputPtr) -> bytes
extern def Fl_File_Input_handle_data(self: Fl_File_InputPtr) -> bytes
extern def Fl_File_Input_set_draw_data(self: Fl_File_InputPtr, data: bytes)
extern def Fl_File_Input_set_handle_data(self: Fl_File_InputPtr, data: bytes)
extern def Fl_File_Input_damage(self: Fl_File_InputPtr) -> t.CUInt8T
extern def Fl_File_Input_set_damage(self: Fl_File_InputPtr, flag: t.CUInt8T)
extern def Fl_File_Input_set_damage_area(self: Fl_File_InputPtr, flag: t.CUInt8T, x: int, y: int, w: int, h: int)
extern def Fl_File_Input_clear_damage(self: Fl_File_InputPtr)
extern def Fl_File_Input_as_window(self: Fl_File_InputPtr) -> bytes
extern def Fl_File_Input_as_group(self: Fl_File_InputPtr) -> bytes
extern def Fl_File_Input_set_deimage(self: Fl_File_InputPtr, a1: bytes)
extern def Fl_File_Input_deimage(self: Fl_File_InputPtr) -> bytes
extern def Fl_File_Input_set_callback(self: Fl_File_InputPtr, a1: bytes, a2: bytes)
extern def Fl_File_Input_visible(self: Fl_File_InputPtr) -> int
extern def Fl_File_Input_visible_r(self: Fl_File_InputPtr) -> int
extern def Fl_File_Input_active(self: Fl_File_InputPtr) -> t.CUInt32T
extern def Fl_File_Input_active_r(self: Fl_File_InputPtr) -> int
extern def Fl_File_Input_callback(self: Fl_File_InputPtr) -> bytes
extern def Fl_File_Input_set_deletion_callback(self: Fl_File_InputPtr, cb1: bytes, data: bytes)
extern def Fl_File_Input_from_dyn_ptr(ptr: Fl_WidgetPtr) -> Fl_File_InputPtr
extern def Fl_File_Input_from_derived_dyn_ptr(ptr: Fl_WidgetPtr) -> Fl_File_InputPtr
extern def Fl_File_Input_super_draw(ptr: Fl_WidgetPtr, flag: int)
extern def Fl_File_Input_super_draw_first(ptr: Fl_WidgetPtr, flag: int)
extern def Fl_File_Input_super_handle_first(ptr: Fl_WidgetPtr, flag: int)
# ----- Fl_File_Input (input_declare) -----
extern def Fl_File_Input_set_value(self: Fl_File_InputPtr, a1: str) -> int
extern def Fl_File_Input_value(self: Fl_File_InputPtr) -> str
extern def Fl_File_Input_maximum_size(self: Fl_File_InputPtr) -> int
extern def Fl_File_Input_set_maximum_size(self: Fl_File_InputPtr, m: int)
extern def Fl_File_Input_position(self: Fl_File_InputPtr) -> int
extern def Fl_File_Input_set_position(self: Fl_File_InputPtr, p: int) -> int
extern def Fl_File_Input_set_mark(self: Fl_File_InputPtr, m: int) -> int
extern def Fl_File_Input_mark(self: Fl_File_InputPtr) -> int
extern def Fl_File_Input_replace(self: Fl_File_InputPtr, b: int, e: int, text: str, ilen: int) -> int
extern def Fl_File_Input_insert(self: Fl_File_InputPtr, t: str, l: int) -> int
extern def Fl_File_Input_append(self: Fl_File_InputPtr, t: str, l: int, keep_selection: t.CChar) -> int
extern def Fl_File_Input_copy(self: Fl_File_InputPtr, clipboard: int) -> int
extern def Fl_File_Input_undo(self: Fl_File_InputPtr) -> int
extern def Fl_File_Input_copy_cuts(self: Fl_File_InputPtr) -> int
extern def Fl_File_Input_cursor_color(self: Fl_File_InputPtr) -> t.CUInt32T
extern def Fl_File_Input_set_cursor_color(self: Fl_File_InputPtr, s: t.CUInt32T)
extern def Fl_File_Input_text_font(self: Fl_File_InputPtr) -> int
extern def Fl_File_Input_set_text_font(self: Fl_File_InputPtr, s: int)
extern def Fl_File_Input_text_color(self: Fl_File_InputPtr) -> t.CUInt32T
extern def Fl_File_Input_set_text_color(self: Fl_File_InputPtr, s: t.CUInt32T)
extern def Fl_File_Input_text_size(self: Fl_File_InputPtr) -> int
extern def Fl_File_Input_set_text_size(self: Fl_File_InputPtr, s: int)
extern def Fl_File_Input_readonly(self: Fl_File_InputPtr) -> int
extern def Fl_File_Input_set_readonly(self: Fl_File_InputPtr, boolean: int)
extern def Fl_File_Input_wrap(self: Fl_File_InputPtr) -> int
extern def Fl_File_Input_set_wrap(self: Fl_File_InputPtr, boolean: int)
extern def Fl_File_Input_set_tab_nav(self: Fl_File_InputPtr, flag: int)
extern def Fl_File_Input_tab_nav(self: Fl_File_InputPtr) -> int
# ----- Fl_Output (widget_declare) -----
extern def Fl_Output_new(x: int, y: int, width: int, height: int, title: str) -> Fl_OutputPtr
extern def Fl_Output_x(self: Fl_OutputPtr) -> int
extern def Fl_Output_y(self: Fl_OutputPtr) -> int
extern def Fl_Output_width(self: Fl_OutputPtr) -> int
extern def Fl_Output_height(self: Fl_OutputPtr) -> int
extern def Fl_Output_label(self: Fl_OutputPtr) -> str
extern def Fl_Output_set_label(self: Fl_OutputPtr, title: str)
extern def Fl_Output_redraw(self: Fl_OutputPtr)
extern def Fl_Output_show(self: Fl_OutputPtr)
extern def Fl_Output_hide(self: Fl_OutputPtr)
extern def Fl_Output_activate(self: Fl_OutputPtr)
extern def Fl_Output_deactivate(self: Fl_OutputPtr)
extern def Fl_Output_redraw_label(self: Fl_OutputPtr)
extern def Fl_Output_resize(self: Fl_OutputPtr, x: int, y: int, width: int, height: int)
extern def Fl_Output_widget_resize(self: Fl_OutputPtr, x: int, y: int, width: int, height: int)
extern def Fl_Output_tooltip(self: Fl_OutputPtr) -> str
extern def Fl_Output_set_tooltip(self: Fl_OutputPtr, txt: str)
extern def Fl_Output_get_type(self: Fl_OutputPtr) -> int
extern def Fl_Output_set_type(self: Fl_OutputPtr, typ: int)
extern def Fl_Output_color(self: Fl_OutputPtr) -> t.CUInt32T
extern def Fl_Output_set_color(self: Fl_OutputPtr, color: t.CUInt32T)
extern def Fl_Output_measure_label(self: Fl_OutputPtr, a1: bytes, a2: bytes)
extern def Fl_Output_label_color(self: Fl_OutputPtr) -> t.CUInt32T
extern def Fl_Output_set_label_color(self: Fl_OutputPtr, color: t.CUInt32T)
extern def Fl_Output_label_font(self: Fl_OutputPtr) -> int
extern def Fl_Output_set_label_font(self: Fl_OutputPtr, font: int)
extern def Fl_Output_label_size(self: Fl_OutputPtr) -> int
extern def Fl_Output_set_label_size(self: Fl_OutputPtr, sz: int)
extern def Fl_Output_label_type(self: Fl_OutputPtr) -> int
extern def Fl_Output_set_label_type(self: Fl_OutputPtr, typ: int)
extern def Fl_Output_box(self: Fl_OutputPtr) -> int
extern def Fl_Output_set_box(self: Fl_OutputPtr, typ: int)
extern def Fl_Output_changed(self: Fl_OutputPtr) -> int
extern def Fl_Output_set_changed(self: Fl_OutputPtr)
extern def Fl_Output_clear_changed(self: Fl_OutputPtr)
extern def Fl_Output_align(self: Fl_OutputPtr) -> int
extern def Fl_Output_set_align(self: Fl_OutputPtr, typ: int)
extern def Fl_Output_delete(self: Fl_OutputPtr)
extern def Fl_Output_set_image(self: Fl_OutputPtr, a1: bytes)
extern def Fl_Output_handle(self: Fl_OutputPtr, cb: bytes, data: bytes)
extern def Fl_Output_handle_event(self: Fl_OutputPtr, event: int) -> int
extern def Fl_Output_draw(self: Fl_OutputPtr, cb: bytes, data: bytes)
extern def Fl_Output_resize_callback(self: Fl_OutputPtr, cb1: bytes, data: bytes)
extern def Fl_Output_set_when(self: Fl_OutputPtr, a1: int)
extern def Fl_Output_when(self: Fl_OutputPtr) -> int
extern def Fl_Output_image(self: Fl_OutputPtr) -> bytes
extern def Fl_Output_parent(self: Fl_OutputPtr) -> bytes
extern def Fl_Output_selection_color(self: Fl_OutputPtr) -> t.CUInt32T
extern def Fl_Output_set_selection_color(self: Fl_OutputPtr, color: t.CUInt32T)
extern def Fl_Output_do_callback(self: Fl_OutputPtr)
extern def Fl_Output_inside(self: Fl_OutputPtr, a1: bytes) -> int
extern def Fl_Output_window(self: Fl_OutputPtr) -> bytes
extern def Fl_Output_top_window(self: Fl_OutputPtr) -> bytes
extern def Fl_Output_takes_events(self: Fl_OutputPtr) -> int
extern def Fl_Output_user_data(self: Fl_OutputPtr) -> bytes
extern def Fl_Output_take_focus(self: Fl_OutputPtr) -> int
extern def Fl_Output_set_visible_focus(self: Fl_OutputPtr)
extern def Fl_Output_clear_visible_focus(self: Fl_OutputPtr)
extern def Fl_Output_visible_focus(self: Fl_OutputPtr, v: int)
extern def Fl_Output_has_visible_focus(self: Fl_OutputPtr) -> t.CUInt32T
extern def Fl_Output_set_user_data(self: Fl_OutputPtr, data: bytes)
extern def Fl_Output_draw_data(self: Fl_OutputPtr) -> bytes
extern def Fl_Output_handle_data(self: Fl_OutputPtr) -> bytes
extern def Fl_Output_set_draw_data(self: Fl_OutputPtr, data: bytes)
extern def Fl_Output_set_handle_data(self: Fl_OutputPtr, data: bytes)
extern def Fl_Output_damage(self: Fl_OutputPtr) -> t.CUInt8T
extern def Fl_Output_set_damage(self: Fl_OutputPtr, flag: t.CUInt8T)
extern def Fl_Output_set_damage_area(self: Fl_OutputPtr, flag: t.CUInt8T, x: int, y: int, w: int, h: int)
extern def Fl_Output_clear_damage(self: Fl_OutputPtr)
extern def Fl_Output_as_window(self: Fl_OutputPtr) -> bytes
extern def Fl_Output_as_group(self: Fl_OutputPtr) -> bytes
extern def Fl_Output_set_deimage(self: Fl_OutputPtr, a1: bytes)
extern def Fl_Output_deimage(self: Fl_OutputPtr) -> bytes
extern def Fl_Output_set_callback(self: Fl_OutputPtr, a1: bytes, a2: bytes)
extern def Fl_Output_visible(self: Fl_OutputPtr) -> int
extern def Fl_Output_visible_r(self: Fl_OutputPtr) -> int
extern def Fl_Output_active(self: Fl_OutputPtr) -> t.CUInt32T
extern def Fl_Output_active_r(self: Fl_OutputPtr) -> int
extern def Fl_Output_callback(self: Fl_OutputPtr) -> bytes
extern def Fl_Output_set_deletion_callback(self: Fl_OutputPtr, cb1: bytes, data: bytes)
extern def Fl_Output_from_dyn_ptr(ptr: Fl_WidgetPtr) -> Fl_OutputPtr
extern def Fl_Output_from_derived_dyn_ptr(ptr: Fl_WidgetPtr) -> Fl_OutputPtr
extern def Fl_Output_super_draw(ptr: Fl_WidgetPtr, flag: int)
extern def Fl_Output_super_draw_first(ptr: Fl_WidgetPtr, flag: int)
extern def Fl_Output_super_handle_first(ptr: Fl_WidgetPtr, flag: int)
# ----- Fl_Output (input_declare) -----
extern def Fl_Output_set_value(self: Fl_OutputPtr, a1: str) -> int
extern def Fl_Output_value(self: Fl_OutputPtr) -> str
extern def Fl_Output_maximum_size(self: Fl_OutputPtr) -> int
extern def Fl_Output_set_maximum_size(self: Fl_OutputPtr, m: int)
extern def Fl_Output_position(self: Fl_OutputPtr) -> int
extern def Fl_Output_set_position(self: Fl_OutputPtr, p: int) -> int
extern def Fl_Output_set_mark(self: Fl_OutputPtr, m: int) -> int
extern def Fl_Output_mark(self: Fl_OutputPtr) -> int
extern def Fl_Output_replace(self: Fl_OutputPtr, b: int, e: int, text: str, ilen: int) -> int
extern def Fl_Output_insert(self: Fl_OutputPtr, t: str, l: int) -> int
extern def Fl_Output_append(self: Fl_OutputPtr, t: str, l: int, keep_selection: t.CChar) -> int
extern def Fl_Output_copy(self: Fl_OutputPtr, clipboard: int) -> int
extern def Fl_Output_undo(self: Fl_OutputPtr) -> int
extern def Fl_Output_copy_cuts(self: Fl_OutputPtr) -> int
extern def Fl_Output_cursor_color(self: Fl_OutputPtr) -> t.CUInt32T
extern def Fl_Output_set_cursor_color(self: Fl_OutputPtr, s: t.CUInt32T)
extern def Fl_Output_text_font(self: Fl_OutputPtr) -> int
extern def Fl_Output_set_text_font(self: Fl_OutputPtr, s: int)
extern def Fl_Output_text_color(self: Fl_OutputPtr) -> t.CUInt32T
extern def Fl_Output_set_text_color(self: Fl_OutputPtr, s: t.CUInt32T)
extern def Fl_Output_text_size(self: Fl_OutputPtr) -> int
extern def Fl_Output_set_text_size(self: Fl_OutputPtr, s: int)
extern def Fl_Output_readonly(self: Fl_OutputPtr) -> int
extern def Fl_Output_set_readonly(self: Fl_OutputPtr, boolean: int)
extern def Fl_Output_wrap(self: Fl_OutputPtr) -> int
extern def Fl_Output_set_wrap(self: Fl_OutputPtr, boolean: int)
extern def Fl_Output_set_tab_nav(self: Fl_OutputPtr, flag: int)
extern def Fl_Output_tab_nav(self: Fl_OutputPtr) -> int
# ----- Fl_Multiline_Output (widget_declare) -----
extern def Fl_Multiline_Output_new(x: int, y: int, width: int, height: int, title: str) -> Fl_Multiline_OutputPtr
extern def Fl_Multiline_Output_x(self: Fl_Multiline_OutputPtr) -> int
extern def Fl_Multiline_Output_y(self: Fl_Multiline_OutputPtr) -> int
extern def Fl_Multiline_Output_width(self: Fl_Multiline_OutputPtr) -> int
extern def Fl_Multiline_Output_height(self: Fl_Multiline_OutputPtr) -> int
extern def Fl_Multiline_Output_label(self: Fl_Multiline_OutputPtr) -> str
extern def Fl_Multiline_Output_set_label(self: Fl_Multiline_OutputPtr, title: str)
extern def Fl_Multiline_Output_redraw(self: Fl_Multiline_OutputPtr)
extern def Fl_Multiline_Output_show(self: Fl_Multiline_OutputPtr)
extern def Fl_Multiline_Output_hide(self: Fl_Multiline_OutputPtr)
extern def Fl_Multiline_Output_activate(self: Fl_Multiline_OutputPtr)
extern def Fl_Multiline_Output_deactivate(self: Fl_Multiline_OutputPtr)
extern def Fl_Multiline_Output_redraw_label(self: Fl_Multiline_OutputPtr)
extern def Fl_Multiline_Output_resize(self: Fl_Multiline_OutputPtr, x: int, y: int, width: int, height: int)
extern def Fl_Multiline_Output_widget_resize(self: Fl_Multiline_OutputPtr, x: int, y: int, width: int, height: int)
extern def Fl_Multiline_Output_tooltip(self: Fl_Multiline_OutputPtr) -> str
extern def Fl_Multiline_Output_set_tooltip(self: Fl_Multiline_OutputPtr, txt: str)
extern def Fl_Multiline_Output_get_type(self: Fl_Multiline_OutputPtr) -> int
extern def Fl_Multiline_Output_set_type(self: Fl_Multiline_OutputPtr, typ: int)
extern def Fl_Multiline_Output_color(self: Fl_Multiline_OutputPtr) -> t.CUInt32T
extern def Fl_Multiline_Output_set_color(self: Fl_Multiline_OutputPtr, color: t.CUInt32T)
extern def Fl_Multiline_Output_measure_label(self: Fl_Multiline_OutputPtr, a1: bytes, a2: bytes)
extern def Fl_Multiline_Output_label_color(self: Fl_Multiline_OutputPtr) -> t.CUInt32T
extern def Fl_Multiline_Output_set_label_color(self: Fl_Multiline_OutputPtr, color: t.CUInt32T)
extern def Fl_Multiline_Output_label_font(self: Fl_Multiline_OutputPtr) -> int
extern def Fl_Multiline_Output_set_label_font(self: Fl_Multiline_OutputPtr, font: int)
extern def Fl_Multiline_Output_label_size(self: Fl_Multiline_OutputPtr) -> int
extern def Fl_Multiline_Output_set_label_size(self: Fl_Multiline_OutputPtr, sz: int)
extern def Fl_Multiline_Output_label_type(self: Fl_Multiline_OutputPtr) -> int
extern def Fl_Multiline_Output_set_label_type(self: Fl_Multiline_OutputPtr, typ: int)
extern def Fl_Multiline_Output_box(self: Fl_Multiline_OutputPtr) -> int
extern def Fl_Multiline_Output_set_box(self: Fl_Multiline_OutputPtr, typ: int)
extern def Fl_Multiline_Output_changed(self: Fl_Multiline_OutputPtr) -> int
extern def Fl_Multiline_Output_set_changed(self: Fl_Multiline_OutputPtr)
extern def Fl_Multiline_Output_clear_changed(self: Fl_Multiline_OutputPtr)
extern def Fl_Multiline_Output_align(self: Fl_Multiline_OutputPtr) -> int
extern def Fl_Multiline_Output_set_align(self: Fl_Multiline_OutputPtr, typ: int)
extern def Fl_Multiline_Output_delete(self: Fl_Multiline_OutputPtr)
extern def Fl_Multiline_Output_set_image(self: Fl_Multiline_OutputPtr, a1: bytes)
extern def Fl_Multiline_Output_handle(self: Fl_Multiline_OutputPtr, cb: bytes, data: bytes)
extern def Fl_Multiline_Output_handle_event(self: Fl_Multiline_OutputPtr, event: int) -> int
extern def Fl_Multiline_Output_draw(self: Fl_Multiline_OutputPtr, cb: bytes, data: bytes)
extern def Fl_Multiline_Output_resize_callback(self: Fl_Multiline_OutputPtr, cb1: bytes, data: bytes)
extern def Fl_Multiline_Output_set_when(self: Fl_Multiline_OutputPtr, a1: int)
extern def Fl_Multiline_Output_when(self: Fl_Multiline_OutputPtr) -> int
extern def Fl_Multiline_Output_image(self: Fl_Multiline_OutputPtr) -> bytes
extern def Fl_Multiline_Output_parent(self: Fl_Multiline_OutputPtr) -> bytes
extern def Fl_Multiline_Output_selection_color(self: Fl_Multiline_OutputPtr) -> t.CUInt32T
extern def Fl_Multiline_Output_set_selection_color(self: Fl_Multiline_OutputPtr, color: t.CUInt32T)
extern def Fl_Multiline_Output_do_callback(self: Fl_Multiline_OutputPtr)
extern def Fl_Multiline_Output_inside(self: Fl_Multiline_OutputPtr, a1: bytes) -> int
extern def Fl_Multiline_Output_window(self: Fl_Multiline_OutputPtr) -> bytes
extern def Fl_Multiline_Output_top_window(self: Fl_Multiline_OutputPtr) -> bytes
extern def Fl_Multiline_Output_takes_events(self: Fl_Multiline_OutputPtr) -> int
extern def Fl_Multiline_Output_user_data(self: Fl_Multiline_OutputPtr) -> bytes
extern def Fl_Multiline_Output_take_focus(self: Fl_Multiline_OutputPtr) -> int
extern def Fl_Multiline_Output_set_visible_focus(self: Fl_Multiline_OutputPtr)
extern def Fl_Multiline_Output_clear_visible_focus(self: Fl_Multiline_OutputPtr)
extern def Fl_Multiline_Output_visible_focus(self: Fl_Multiline_OutputPtr, v: int)
extern def Fl_Multiline_Output_has_visible_focus(self: Fl_Multiline_OutputPtr) -> t.CUInt32T
extern def Fl_Multiline_Output_set_user_data(self: Fl_Multiline_OutputPtr, data: bytes)
extern def Fl_Multiline_Output_draw_data(self: Fl_Multiline_OutputPtr) -> bytes
extern def Fl_Multiline_Output_handle_data(self: Fl_Multiline_OutputPtr) -> bytes
extern def Fl_Multiline_Output_set_draw_data(self: Fl_Multiline_OutputPtr, data: bytes)
extern def Fl_Multiline_Output_set_handle_data(self: Fl_Multiline_OutputPtr, data: bytes)
extern def Fl_Multiline_Output_damage(self: Fl_Multiline_OutputPtr) -> t.CUInt8T
extern def Fl_Multiline_Output_set_damage(self: Fl_Multiline_OutputPtr, flag: t.CUInt8T)
extern def Fl_Multiline_Output_set_damage_area(self: Fl_Multiline_OutputPtr, flag: t.CUInt8T, x: int, y: int, w: int, h: int)
extern def Fl_Multiline_Output_clear_damage(self: Fl_Multiline_OutputPtr)
extern def Fl_Multiline_Output_as_window(self: Fl_Multiline_OutputPtr) -> bytes
extern def Fl_Multiline_Output_as_group(self: Fl_Multiline_OutputPtr) -> bytes
extern def Fl_Multiline_Output_set_deimage(self: Fl_Multiline_OutputPtr, a1: bytes)
extern def Fl_Multiline_Output_deimage(self: Fl_Multiline_OutputPtr) -> bytes
extern def Fl_Multiline_Output_set_callback(self: Fl_Multiline_OutputPtr, a1: bytes, a2: bytes)
extern def Fl_Multiline_Output_visible(self: Fl_Multiline_OutputPtr) -> int
extern def Fl_Multiline_Output_visible_r(self: Fl_Multiline_OutputPtr) -> int
extern def Fl_Multiline_Output_active(self: Fl_Multiline_OutputPtr) -> t.CUInt32T
extern def Fl_Multiline_Output_active_r(self: Fl_Multiline_OutputPtr) -> int
extern def Fl_Multiline_Output_callback(self: Fl_Multiline_OutputPtr) -> bytes
extern def Fl_Multiline_Output_set_deletion_callback(self: Fl_Multiline_OutputPtr, cb1: bytes, data: bytes)
extern def Fl_Multiline_Output_from_dyn_ptr(ptr: Fl_WidgetPtr) -> Fl_Multiline_OutputPtr
extern def Fl_Multiline_Output_from_derived_dyn_ptr(ptr: Fl_WidgetPtr) -> Fl_Multiline_OutputPtr
extern def Fl_Multiline_Output_super_draw(ptr: Fl_WidgetPtr, flag: int)
extern def Fl_Multiline_Output_super_draw_first(ptr: Fl_WidgetPtr, flag: int)
extern def Fl_Multiline_Output_super_handle_first(ptr: Fl_WidgetPtr, flag: int)
# ----- Fl_Multiline_Output (input_declare) -----
extern def Fl_Multiline_Output_set_value(self: Fl_Multiline_OutputPtr, a1: str) -> int
extern def Fl_Multiline_Output_value(self: Fl_Multiline_OutputPtr) -> str
extern def Fl_Multiline_Output_maximum_size(self: Fl_Multiline_OutputPtr) -> int
extern def Fl_Multiline_Output_set_maximum_size(self: Fl_Multiline_OutputPtr, m: int)
extern def Fl_Multiline_Output_position(self: Fl_Multiline_OutputPtr) -> int
extern def Fl_Multiline_Output_set_position(self: Fl_Multiline_OutputPtr, p: int) -> int
extern def Fl_Multiline_Output_set_mark(self: Fl_Multiline_OutputPtr, m: int) -> int
extern def Fl_Multiline_Output_mark(self: Fl_Multiline_OutputPtr) -> int
extern def Fl_Multiline_Output_replace(self: Fl_Multiline_OutputPtr, b: int, e: int, text: str, ilen: int) -> int
extern def Fl_Multiline_Output_insert(self: Fl_Multiline_OutputPtr, t: str, l: int) -> int
extern def Fl_Multiline_Output_append(self: Fl_Multiline_OutputPtr, t: str, l: int, keep_selection: t.CChar) -> int
extern def Fl_Multiline_Output_copy(self: Fl_Multiline_OutputPtr, clipboard: int) -> int
extern def Fl_Multiline_Output_undo(self: Fl_Multiline_OutputPtr) -> int
extern def Fl_Multiline_Output_copy_cuts(self: Fl_Multiline_OutputPtr) -> int
extern def Fl_Multiline_Output_cursor_color(self: Fl_Multiline_OutputPtr) -> t.CUInt32T
extern def Fl_Multiline_Output_set_cursor_color(self: Fl_Multiline_OutputPtr, s: t.CUInt32T)
extern def Fl_Multiline_Output_text_font(self: Fl_Multiline_OutputPtr) -> int
extern def Fl_Multiline_Output_set_text_font(self: Fl_Multiline_OutputPtr, s: int)
extern def Fl_Multiline_Output_text_color(self: Fl_Multiline_OutputPtr) -> t.CUInt32T
extern def Fl_Multiline_Output_set_text_color(self: Fl_Multiline_OutputPtr, s: t.CUInt32T)
extern def Fl_Multiline_Output_text_size(self: Fl_Multiline_OutputPtr) -> int
extern def Fl_Multiline_Output_set_text_size(self: Fl_Multiline_OutputPtr, s: int)
extern def Fl_Multiline_Output_readonly(self: Fl_Multiline_OutputPtr) -> int
extern def Fl_Multiline_Output_set_readonly(self: Fl_Multiline_OutputPtr, boolean: int)
extern def Fl_Multiline_Output_wrap(self: Fl_Multiline_OutputPtr) -> int
extern def Fl_Multiline_Output_set_wrap(self: Fl_Multiline_OutputPtr, boolean: int)
extern def Fl_Multiline_Output_set_tab_nav(self: Fl_Multiline_OutputPtr, flag: int)
extern def Fl_Multiline_Output_tab_nav(self: Fl_Multiline_OutputPtr) -> int
extern def Fl_File_Input_set_down_box(self: Fl_File_InputPtr, box: int)
extern def Fl_File_Input_down_box(self: Fl_File_InputPtr) -> int
+13
View File
@@ -0,0 +1,13 @@
import t, c
from fltk._types import *
# ============================================================
# fltk/_cfl_lock.vp — cfl_lock.h 的 extern FFI 声明(对接 cfltk C API)
# ============================================================
# 所有函数直接对应 cfltk 生成的 C 符号(extern "C"),链接目标: cfltk2。
# 类型约定: Fl_* 对象均为不透明指针 (Fl_XxxPtr);const char* → str;
# 函数指针/void* → bytes(Viper 端传 0/NULL 或不使用)。
extern def Fl_mutex_lock()
extern def Fl_mutex_unlock()
+555
View File
@@ -0,0 +1,555 @@
import t, c
from fltk._types import *
# ============================================================
# fltk/_cfl_menu.vp — cfl_menu.h 的 extern FFI 声明(对接 cfltk C API)
# ============================================================
# 所有函数直接对应 cfltk 生成的 C 符号(extern "C"),链接目标: cfltk2。
# 类型约定: Fl_* 对象均为不透明指针 (Fl_XxxPtr);const char* → str;
# 函数指针/void* → bytes(Viper 端传 0/NULL 或不使用)。
# ----- Fl_Menu_Bar (widget_declare) -----
extern def Fl_Menu_Bar_new(x: int, y: int, width: int, height: int, title: str) -> Fl_Menu_BarPtr
extern def Fl_Menu_Bar_x(self: Fl_Menu_BarPtr) -> int
extern def Fl_Menu_Bar_y(self: Fl_Menu_BarPtr) -> int
extern def Fl_Menu_Bar_width(self: Fl_Menu_BarPtr) -> int
extern def Fl_Menu_Bar_height(self: Fl_Menu_BarPtr) -> int
extern def Fl_Menu_Bar_label(self: Fl_Menu_BarPtr) -> str
extern def Fl_Menu_Bar_set_label(self: Fl_Menu_BarPtr, title: str)
extern def Fl_Menu_Bar_redraw(self: Fl_Menu_BarPtr)
extern def Fl_Menu_Bar_show(self: Fl_Menu_BarPtr)
extern def Fl_Menu_Bar_hide(self: Fl_Menu_BarPtr)
extern def Fl_Menu_Bar_activate(self: Fl_Menu_BarPtr)
extern def Fl_Menu_Bar_deactivate(self: Fl_Menu_BarPtr)
extern def Fl_Menu_Bar_redraw_label(self: Fl_Menu_BarPtr)
extern def Fl_Menu_Bar_resize(self: Fl_Menu_BarPtr, x: int, y: int, width: int, height: int)
extern def Fl_Menu_Bar_widget_resize(self: Fl_Menu_BarPtr, x: int, y: int, width: int, height: int)
extern def Fl_Menu_Bar_tooltip(self: Fl_Menu_BarPtr) -> str
extern def Fl_Menu_Bar_set_tooltip(self: Fl_Menu_BarPtr, txt: str)
extern def Fl_Menu_Bar_get_type(self: Fl_Menu_BarPtr) -> int
extern def Fl_Menu_Bar_set_type(self: Fl_Menu_BarPtr, typ: int)
extern def Fl_Menu_Bar_color(self: Fl_Menu_BarPtr) -> t.CUInt32T
extern def Fl_Menu_Bar_set_color(self: Fl_Menu_BarPtr, color: t.CUInt32T)
extern def Fl_Menu_Bar_measure_label(self: Fl_Menu_BarPtr, a1: bytes, a2: bytes)
extern def Fl_Menu_Bar_label_color(self: Fl_Menu_BarPtr) -> t.CUInt32T
extern def Fl_Menu_Bar_set_label_color(self: Fl_Menu_BarPtr, color: t.CUInt32T)
extern def Fl_Menu_Bar_label_font(self: Fl_Menu_BarPtr) -> int
extern def Fl_Menu_Bar_set_label_font(self: Fl_Menu_BarPtr, font: int)
extern def Fl_Menu_Bar_label_size(self: Fl_Menu_BarPtr) -> int
extern def Fl_Menu_Bar_set_label_size(self: Fl_Menu_BarPtr, sz: int)
extern def Fl_Menu_Bar_label_type(self: Fl_Menu_BarPtr) -> int
extern def Fl_Menu_Bar_set_label_type(self: Fl_Menu_BarPtr, typ: int)
extern def Fl_Menu_Bar_box(self: Fl_Menu_BarPtr) -> int
extern def Fl_Menu_Bar_set_box(self: Fl_Menu_BarPtr, typ: int)
extern def Fl_Menu_Bar_changed(self: Fl_Menu_BarPtr) -> int
extern def Fl_Menu_Bar_set_changed(self: Fl_Menu_BarPtr)
extern def Fl_Menu_Bar_clear_changed(self: Fl_Menu_BarPtr)
extern def Fl_Menu_Bar_align(self: Fl_Menu_BarPtr) -> int
extern def Fl_Menu_Bar_set_align(self: Fl_Menu_BarPtr, typ: int)
extern def Fl_Menu_Bar_delete(self: Fl_Menu_BarPtr)
extern def Fl_Menu_Bar_set_image(self: Fl_Menu_BarPtr, a1: bytes)
extern def Fl_Menu_Bar_handle(self: Fl_Menu_BarPtr, cb: bytes, data: bytes)
extern def Fl_Menu_Bar_handle_event(self: Fl_Menu_BarPtr, event: int) -> int
extern def Fl_Menu_Bar_draw(self: Fl_Menu_BarPtr, cb: bytes, data: bytes)
extern def Fl_Menu_Bar_resize_callback(self: Fl_Menu_BarPtr, cb1: bytes, data: bytes)
extern def Fl_Menu_Bar_set_when(self: Fl_Menu_BarPtr, a1: int)
extern def Fl_Menu_Bar_when(self: Fl_Menu_BarPtr) -> int
extern def Fl_Menu_Bar_image(self: Fl_Menu_BarPtr) -> bytes
extern def Fl_Menu_Bar_parent(self: Fl_Menu_BarPtr) -> bytes
extern def Fl_Menu_Bar_selection_color(self: Fl_Menu_BarPtr) -> t.CUInt32T
extern def Fl_Menu_Bar_set_selection_color(self: Fl_Menu_BarPtr, color: t.CUInt32T)
extern def Fl_Menu_Bar_do_callback(self: Fl_Menu_BarPtr)
extern def Fl_Menu_Bar_inside(self: Fl_Menu_BarPtr, a1: bytes) -> int
extern def Fl_Menu_Bar_window(self: Fl_Menu_BarPtr) -> bytes
extern def Fl_Menu_Bar_top_window(self: Fl_Menu_BarPtr) -> bytes
extern def Fl_Menu_Bar_takes_events(self: Fl_Menu_BarPtr) -> int
extern def Fl_Menu_Bar_user_data(self: Fl_Menu_BarPtr) -> bytes
extern def Fl_Menu_Bar_take_focus(self: Fl_Menu_BarPtr) -> int
extern def Fl_Menu_Bar_set_visible_focus(self: Fl_Menu_BarPtr)
extern def Fl_Menu_Bar_clear_visible_focus(self: Fl_Menu_BarPtr)
extern def Fl_Menu_Bar_visible_focus(self: Fl_Menu_BarPtr, v: int)
extern def Fl_Menu_Bar_has_visible_focus(self: Fl_Menu_BarPtr) -> t.CUInt32T
extern def Fl_Menu_Bar_set_user_data(self: Fl_Menu_BarPtr, data: bytes)
extern def Fl_Menu_Bar_draw_data(self: Fl_Menu_BarPtr) -> bytes
extern def Fl_Menu_Bar_handle_data(self: Fl_Menu_BarPtr) -> bytes
extern def Fl_Menu_Bar_set_draw_data(self: Fl_Menu_BarPtr, data: bytes)
extern def Fl_Menu_Bar_set_handle_data(self: Fl_Menu_BarPtr, data: bytes)
extern def Fl_Menu_Bar_damage(self: Fl_Menu_BarPtr) -> t.CUInt8T
extern def Fl_Menu_Bar_set_damage(self: Fl_Menu_BarPtr, flag: t.CUInt8T)
extern def Fl_Menu_Bar_set_damage_area(self: Fl_Menu_BarPtr, flag: t.CUInt8T, x: int, y: int, w: int, h: int)
extern def Fl_Menu_Bar_clear_damage(self: Fl_Menu_BarPtr)
extern def Fl_Menu_Bar_as_window(self: Fl_Menu_BarPtr) -> bytes
extern def Fl_Menu_Bar_as_group(self: Fl_Menu_BarPtr) -> bytes
extern def Fl_Menu_Bar_set_deimage(self: Fl_Menu_BarPtr, a1: bytes)
extern def Fl_Menu_Bar_deimage(self: Fl_Menu_BarPtr) -> bytes
extern def Fl_Menu_Bar_set_callback(self: Fl_Menu_BarPtr, a1: bytes, a2: bytes)
extern def Fl_Menu_Bar_visible(self: Fl_Menu_BarPtr) -> int
extern def Fl_Menu_Bar_visible_r(self: Fl_Menu_BarPtr) -> int
extern def Fl_Menu_Bar_active(self: Fl_Menu_BarPtr) -> t.CUInt32T
extern def Fl_Menu_Bar_active_r(self: Fl_Menu_BarPtr) -> int
extern def Fl_Menu_Bar_callback(self: Fl_Menu_BarPtr) -> bytes
extern def Fl_Menu_Bar_set_deletion_callback(self: Fl_Menu_BarPtr, cb1: bytes, data: bytes)
extern def Fl_Menu_Bar_from_dyn_ptr(ptr: Fl_WidgetPtr) -> Fl_Menu_BarPtr
extern def Fl_Menu_Bar_from_derived_dyn_ptr(ptr: Fl_WidgetPtr) -> Fl_Menu_BarPtr
extern def Fl_Menu_Bar_super_draw(ptr: Fl_WidgetPtr, flag: int)
extern def Fl_Menu_Bar_super_draw_first(ptr: Fl_WidgetPtr, flag: int)
extern def Fl_Menu_Bar_super_handle_first(ptr: Fl_WidgetPtr, flag: int)
# ----- Fl_Menu_Bar (menu_declare) -----
extern def Fl_Menu_Bar_add(self: Fl_Menu_BarPtr, name: str, shortcut: int, a3: bytes, a4: bytes, a5: int) -> int
extern def Fl_Menu_Bar_insert(self: Fl_Menu_BarPtr, index: int, name: str, shortcut: int, a4: bytes, a5: bytes, a6: int) -> int
extern def Fl_Menu_Bar_get_item(self: Fl_Menu_BarPtr, name: str) -> Fl_Menu_ItemPtr
extern def Fl_Menu_Bar_set_item(self: Fl_Menu_BarPtr, item: Fl_Menu_ItemPtr) -> int
extern def Fl_Menu_Bar_text_font(self: Fl_Menu_BarPtr) -> int
extern def Fl_Menu_Bar_set_text_font(self: Fl_Menu_BarPtr, c: int)
extern def Fl_Menu_Bar_text_size(self: Fl_Menu_BarPtr) -> int
extern def Fl_Menu_Bar_set_text_size(self: Fl_Menu_BarPtr, c: int)
extern def Fl_Menu_Bar_text_color(self: Fl_Menu_BarPtr) -> t.CUInt32T
extern def Fl_Menu_Bar_set_text_color(self: Fl_Menu_BarPtr, c: t.CUInt32T)
extern def Fl_Menu_Bar_add_choice(self: Fl_Menu_BarPtr, a1: str) -> int
extern def Fl_Menu_Bar_get_choice(self: Fl_Menu_BarPtr) -> str
extern def Fl_Menu_Bar_value(self: Fl_Menu_BarPtr) -> int
extern def Fl_Menu_Bar_set_value(self: Fl_Menu_BarPtr, v: int) -> int
extern def Fl_Menu_Bar_clear(self: Fl_Menu_BarPtr)
extern def Fl_Menu_Bar_clear_submenu(self: Fl_Menu_BarPtr, index: int) -> int
extern def Fl_Menu_Bar_size(self: Fl_Menu_BarPtr) -> int
extern def Fl_Menu_Bar_text(self: Fl_Menu_BarPtr, idx: int) -> str
extern def Fl_Menu_Bar_at(self: Fl_Menu_BarPtr, idx: int) -> Fl_Menu_ItemPtr
extern def Fl_Menu_Bar_set_mode(self: Fl_Menu_BarPtr, i: int, fl: int)
extern def Fl_Menu_Bar_mode(self: Fl_Menu_BarPtr, i: int) -> int
extern def Fl_Menu_Bar_find_index(self: Fl_Menu_BarPtr, label: str) -> int
extern def Fl_Menu_Bar_menu(self: Fl_Menu_BarPtr) -> Fl_Menu_ItemPtr
extern def Fl_Menu_Bar_set_menu(self: Fl_Menu_BarPtr, item: Fl_Menu_ItemPtr)
extern def Fl_Menu_Bar_remove(self: Fl_Menu_BarPtr, idx: int)
extern def Fl_Menu_Bar_set_down_box(self: Fl_Menu_BarPtr, box: int)
extern def Fl_Menu_Bar_down_box(self: Fl_Menu_BarPtr) -> int
extern def Fl_Menu_Bar_global(self: Fl_Menu_BarPtr)
extern def Fl_Menu_Bar_item_pathname(self: Fl_Menu_BarPtr, pathname: str, pathnamelen: int, item: Fl_Menu_ItemPtr) -> int
extern def Fl_Menu_Bar_set_menu_box(self: Fl_Menu_BarPtr, b: int)
extern def Fl_Menu_Bar_menu_box(self: Fl_Menu_BarPtr) -> int
extern def Fl_Menu_Bar_mvalue(self: Fl_Menu_BarPtr) -> Fl_Menu_ItemPtr
extern def Fl_Menu_Bar_prev_mvalue(self: Fl_Menu_BarPtr) -> Fl_Menu_ItemPtr
# ----- Fl_Menu_Button (widget_declare) -----
extern def Fl_Menu_Button_new(x: int, y: int, width: int, height: int, title: str) -> Fl_Menu_ButtonPtr
extern def Fl_Menu_Button_x(self: Fl_Menu_ButtonPtr) -> int
extern def Fl_Menu_Button_y(self: Fl_Menu_ButtonPtr) -> int
extern def Fl_Menu_Button_width(self: Fl_Menu_ButtonPtr) -> int
extern def Fl_Menu_Button_height(self: Fl_Menu_ButtonPtr) -> int
extern def Fl_Menu_Button_label(self: Fl_Menu_ButtonPtr) -> str
extern def Fl_Menu_Button_set_label(self: Fl_Menu_ButtonPtr, title: str)
extern def Fl_Menu_Button_redraw(self: Fl_Menu_ButtonPtr)
extern def Fl_Menu_Button_show(self: Fl_Menu_ButtonPtr)
extern def Fl_Menu_Button_hide(self: Fl_Menu_ButtonPtr)
extern def Fl_Menu_Button_activate(self: Fl_Menu_ButtonPtr)
extern def Fl_Menu_Button_deactivate(self: Fl_Menu_ButtonPtr)
extern def Fl_Menu_Button_redraw_label(self: Fl_Menu_ButtonPtr)
extern def Fl_Menu_Button_resize(self: Fl_Menu_ButtonPtr, x: int, y: int, width: int, height: int)
extern def Fl_Menu_Button_widget_resize(self: Fl_Menu_ButtonPtr, x: int, y: int, width: int, height: int)
extern def Fl_Menu_Button_tooltip(self: Fl_Menu_ButtonPtr) -> str
extern def Fl_Menu_Button_set_tooltip(self: Fl_Menu_ButtonPtr, txt: str)
extern def Fl_Menu_Button_get_type(self: Fl_Menu_ButtonPtr) -> int
extern def Fl_Menu_Button_set_type(self: Fl_Menu_ButtonPtr, typ: int)
extern def Fl_Menu_Button_color(self: Fl_Menu_ButtonPtr) -> t.CUInt32T
extern def Fl_Menu_Button_set_color(self: Fl_Menu_ButtonPtr, color: t.CUInt32T)
extern def Fl_Menu_Button_measure_label(self: Fl_Menu_ButtonPtr, a1: bytes, a2: bytes)
extern def Fl_Menu_Button_label_color(self: Fl_Menu_ButtonPtr) -> t.CUInt32T
extern def Fl_Menu_Button_set_label_color(self: Fl_Menu_ButtonPtr, color: t.CUInt32T)
extern def Fl_Menu_Button_label_font(self: Fl_Menu_ButtonPtr) -> int
extern def Fl_Menu_Button_set_label_font(self: Fl_Menu_ButtonPtr, font: int)
extern def Fl_Menu_Button_label_size(self: Fl_Menu_ButtonPtr) -> int
extern def Fl_Menu_Button_set_label_size(self: Fl_Menu_ButtonPtr, sz: int)
extern def Fl_Menu_Button_label_type(self: Fl_Menu_ButtonPtr) -> int
extern def Fl_Menu_Button_set_label_type(self: Fl_Menu_ButtonPtr, typ: int)
extern def Fl_Menu_Button_box(self: Fl_Menu_ButtonPtr) -> int
extern def Fl_Menu_Button_set_box(self: Fl_Menu_ButtonPtr, typ: int)
extern def Fl_Menu_Button_changed(self: Fl_Menu_ButtonPtr) -> int
extern def Fl_Menu_Button_set_changed(self: Fl_Menu_ButtonPtr)
extern def Fl_Menu_Button_clear_changed(self: Fl_Menu_ButtonPtr)
extern def Fl_Menu_Button_align(self: Fl_Menu_ButtonPtr) -> int
extern def Fl_Menu_Button_set_align(self: Fl_Menu_ButtonPtr, typ: int)
extern def Fl_Menu_Button_delete(self: Fl_Menu_ButtonPtr)
extern def Fl_Menu_Button_set_image(self: Fl_Menu_ButtonPtr, a1: bytes)
extern def Fl_Menu_Button_handle(self: Fl_Menu_ButtonPtr, cb: bytes, data: bytes)
extern def Fl_Menu_Button_handle_event(self: Fl_Menu_ButtonPtr, event: int) -> int
extern def Fl_Menu_Button_draw(self: Fl_Menu_ButtonPtr, cb: bytes, data: bytes)
extern def Fl_Menu_Button_resize_callback(self: Fl_Menu_ButtonPtr, cb1: bytes, data: bytes)
extern def Fl_Menu_Button_set_when(self: Fl_Menu_ButtonPtr, a1: int)
extern def Fl_Menu_Button_when(self: Fl_Menu_ButtonPtr) -> int
extern def Fl_Menu_Button_image(self: Fl_Menu_ButtonPtr) -> bytes
extern def Fl_Menu_Button_parent(self: Fl_Menu_ButtonPtr) -> bytes
extern def Fl_Menu_Button_selection_color(self: Fl_Menu_ButtonPtr) -> t.CUInt32T
extern def Fl_Menu_Button_set_selection_color(self: Fl_Menu_ButtonPtr, color: t.CUInt32T)
extern def Fl_Menu_Button_do_callback(self: Fl_Menu_ButtonPtr)
extern def Fl_Menu_Button_inside(self: Fl_Menu_ButtonPtr, a1: bytes) -> int
extern def Fl_Menu_Button_window(self: Fl_Menu_ButtonPtr) -> bytes
extern def Fl_Menu_Button_top_window(self: Fl_Menu_ButtonPtr) -> bytes
extern def Fl_Menu_Button_takes_events(self: Fl_Menu_ButtonPtr) -> int
extern def Fl_Menu_Button_user_data(self: Fl_Menu_ButtonPtr) -> bytes
extern def Fl_Menu_Button_take_focus(self: Fl_Menu_ButtonPtr) -> int
extern def Fl_Menu_Button_set_visible_focus(self: Fl_Menu_ButtonPtr)
extern def Fl_Menu_Button_clear_visible_focus(self: Fl_Menu_ButtonPtr)
extern def Fl_Menu_Button_visible_focus(self: Fl_Menu_ButtonPtr, v: int)
extern def Fl_Menu_Button_has_visible_focus(self: Fl_Menu_ButtonPtr) -> t.CUInt32T
extern def Fl_Menu_Button_set_user_data(self: Fl_Menu_ButtonPtr, data: bytes)
extern def Fl_Menu_Button_draw_data(self: Fl_Menu_ButtonPtr) -> bytes
extern def Fl_Menu_Button_handle_data(self: Fl_Menu_ButtonPtr) -> bytes
extern def Fl_Menu_Button_set_draw_data(self: Fl_Menu_ButtonPtr, data: bytes)
extern def Fl_Menu_Button_set_handle_data(self: Fl_Menu_ButtonPtr, data: bytes)
extern def Fl_Menu_Button_damage(self: Fl_Menu_ButtonPtr) -> t.CUInt8T
extern def Fl_Menu_Button_set_damage(self: Fl_Menu_ButtonPtr, flag: t.CUInt8T)
extern def Fl_Menu_Button_set_damage_area(self: Fl_Menu_ButtonPtr, flag: t.CUInt8T, x: int, y: int, w: int, h: int)
extern def Fl_Menu_Button_clear_damage(self: Fl_Menu_ButtonPtr)
extern def Fl_Menu_Button_as_window(self: Fl_Menu_ButtonPtr) -> bytes
extern def Fl_Menu_Button_as_group(self: Fl_Menu_ButtonPtr) -> bytes
extern def Fl_Menu_Button_set_deimage(self: Fl_Menu_ButtonPtr, a1: bytes)
extern def Fl_Menu_Button_deimage(self: Fl_Menu_ButtonPtr) -> bytes
extern def Fl_Menu_Button_set_callback(self: Fl_Menu_ButtonPtr, a1: bytes, a2: bytes)
extern def Fl_Menu_Button_visible(self: Fl_Menu_ButtonPtr) -> int
extern def Fl_Menu_Button_visible_r(self: Fl_Menu_ButtonPtr) -> int
extern def Fl_Menu_Button_active(self: Fl_Menu_ButtonPtr) -> t.CUInt32T
extern def Fl_Menu_Button_active_r(self: Fl_Menu_ButtonPtr) -> int
extern def Fl_Menu_Button_callback(self: Fl_Menu_ButtonPtr) -> bytes
extern def Fl_Menu_Button_set_deletion_callback(self: Fl_Menu_ButtonPtr, cb1: bytes, data: bytes)
extern def Fl_Menu_Button_from_dyn_ptr(ptr: Fl_WidgetPtr) -> Fl_Menu_ButtonPtr
extern def Fl_Menu_Button_from_derived_dyn_ptr(ptr: Fl_WidgetPtr) -> Fl_Menu_ButtonPtr
extern def Fl_Menu_Button_super_draw(ptr: Fl_WidgetPtr, flag: int)
extern def Fl_Menu_Button_super_draw_first(ptr: Fl_WidgetPtr, flag: int)
extern def Fl_Menu_Button_super_handle_first(ptr: Fl_WidgetPtr, flag: int)
# ----- Fl_Menu_Button (menu_declare) -----
extern def Fl_Menu_Button_add(self: Fl_Menu_ButtonPtr, name: str, shortcut: int, a3: bytes, a4: bytes, a5: int) -> int
extern def Fl_Menu_Button_insert(self: Fl_Menu_ButtonPtr, index: int, name: str, shortcut: int, a4: bytes, a5: bytes, a6: int) -> int
extern def Fl_Menu_Button_get_item(self: Fl_Menu_ButtonPtr, name: str) -> Fl_Menu_ItemPtr
extern def Fl_Menu_Button_set_item(self: Fl_Menu_ButtonPtr, item: Fl_Menu_ItemPtr) -> int
extern def Fl_Menu_Button_text_font(self: Fl_Menu_ButtonPtr) -> int
extern def Fl_Menu_Button_set_text_font(self: Fl_Menu_ButtonPtr, c: int)
extern def Fl_Menu_Button_text_size(self: Fl_Menu_ButtonPtr) -> int
extern def Fl_Menu_Button_set_text_size(self: Fl_Menu_ButtonPtr, c: int)
extern def Fl_Menu_Button_text_color(self: Fl_Menu_ButtonPtr) -> t.CUInt32T
extern def Fl_Menu_Button_set_text_color(self: Fl_Menu_ButtonPtr, c: t.CUInt32T)
extern def Fl_Menu_Button_add_choice(self: Fl_Menu_ButtonPtr, a1: str) -> int
extern def Fl_Menu_Button_get_choice(self: Fl_Menu_ButtonPtr) -> str
extern def Fl_Menu_Button_value(self: Fl_Menu_ButtonPtr) -> int
extern def Fl_Menu_Button_set_value(self: Fl_Menu_ButtonPtr, v: int) -> int
extern def Fl_Menu_Button_clear(self: Fl_Menu_ButtonPtr)
extern def Fl_Menu_Button_clear_submenu(self: Fl_Menu_ButtonPtr, index: int) -> int
extern def Fl_Menu_Button_size(self: Fl_Menu_ButtonPtr) -> int
extern def Fl_Menu_Button_text(self: Fl_Menu_ButtonPtr, idx: int) -> str
extern def Fl_Menu_Button_at(self: Fl_Menu_ButtonPtr, idx: int) -> Fl_Menu_ItemPtr
extern def Fl_Menu_Button_set_mode(self: Fl_Menu_ButtonPtr, i: int, fl: int)
extern def Fl_Menu_Button_mode(self: Fl_Menu_ButtonPtr, i: int) -> int
extern def Fl_Menu_Button_find_index(self: Fl_Menu_ButtonPtr, label: str) -> int
extern def Fl_Menu_Button_menu(self: Fl_Menu_ButtonPtr) -> Fl_Menu_ItemPtr
extern def Fl_Menu_Button_set_menu(self: Fl_Menu_ButtonPtr, item: Fl_Menu_ItemPtr)
extern def Fl_Menu_Button_remove(self: Fl_Menu_ButtonPtr, idx: int)
extern def Fl_Menu_Button_set_down_box(self: Fl_Menu_ButtonPtr, box: int)
extern def Fl_Menu_Button_down_box(self: Fl_Menu_ButtonPtr) -> int
extern def Fl_Menu_Button_global(self: Fl_Menu_ButtonPtr)
extern def Fl_Menu_Button_item_pathname(self: Fl_Menu_ButtonPtr, pathname: str, pathnamelen: int, item: Fl_Menu_ItemPtr) -> int
extern def Fl_Menu_Button_set_menu_box(self: Fl_Menu_ButtonPtr, b: int)
extern def Fl_Menu_Button_menu_box(self: Fl_Menu_ButtonPtr) -> int
extern def Fl_Menu_Button_mvalue(self: Fl_Menu_ButtonPtr) -> Fl_Menu_ItemPtr
extern def Fl_Menu_Button_prev_mvalue(self: Fl_Menu_ButtonPtr) -> Fl_Menu_ItemPtr
# ----- Fl_Choice (widget_declare) -----
extern def Fl_Choice_new(x: int, y: int, width: int, height: int, title: str) -> Fl_ChoicePtr
extern def Fl_Choice_x(self: Fl_ChoicePtr) -> int
extern def Fl_Choice_y(self: Fl_ChoicePtr) -> int
extern def Fl_Choice_width(self: Fl_ChoicePtr) -> int
extern def Fl_Choice_height(self: Fl_ChoicePtr) -> int
extern def Fl_Choice_label(self: Fl_ChoicePtr) -> str
extern def Fl_Choice_set_label(self: Fl_ChoicePtr, title: str)
extern def Fl_Choice_redraw(self: Fl_ChoicePtr)
extern def Fl_Choice_show(self: Fl_ChoicePtr)
extern def Fl_Choice_hide(self: Fl_ChoicePtr)
extern def Fl_Choice_activate(self: Fl_ChoicePtr)
extern def Fl_Choice_deactivate(self: Fl_ChoicePtr)
extern def Fl_Choice_redraw_label(self: Fl_ChoicePtr)
extern def Fl_Choice_resize(self: Fl_ChoicePtr, x: int, y: int, width: int, height: int)
extern def Fl_Choice_widget_resize(self: Fl_ChoicePtr, x: int, y: int, width: int, height: int)
extern def Fl_Choice_tooltip(self: Fl_ChoicePtr) -> str
extern def Fl_Choice_set_tooltip(self: Fl_ChoicePtr, txt: str)
extern def Fl_Choice_get_type(self: Fl_ChoicePtr) -> int
extern def Fl_Choice_set_type(self: Fl_ChoicePtr, typ: int)
extern def Fl_Choice_color(self: Fl_ChoicePtr) -> t.CUInt32T
extern def Fl_Choice_set_color(self: Fl_ChoicePtr, color: t.CUInt32T)
extern def Fl_Choice_measure_label(self: Fl_ChoicePtr, a1: bytes, a2: bytes)
extern def Fl_Choice_label_color(self: Fl_ChoicePtr) -> t.CUInt32T
extern def Fl_Choice_set_label_color(self: Fl_ChoicePtr, color: t.CUInt32T)
extern def Fl_Choice_label_font(self: Fl_ChoicePtr) -> int
extern def Fl_Choice_set_label_font(self: Fl_ChoicePtr, font: int)
extern def Fl_Choice_label_size(self: Fl_ChoicePtr) -> int
extern def Fl_Choice_set_label_size(self: Fl_ChoicePtr, sz: int)
extern def Fl_Choice_label_type(self: Fl_ChoicePtr) -> int
extern def Fl_Choice_set_label_type(self: Fl_ChoicePtr, typ: int)
extern def Fl_Choice_box(self: Fl_ChoicePtr) -> int
extern def Fl_Choice_set_box(self: Fl_ChoicePtr, typ: int)
extern def Fl_Choice_changed(self: Fl_ChoicePtr) -> int
extern def Fl_Choice_set_changed(self: Fl_ChoicePtr)
extern def Fl_Choice_clear_changed(self: Fl_ChoicePtr)
extern def Fl_Choice_align(self: Fl_ChoicePtr) -> int
extern def Fl_Choice_set_align(self: Fl_ChoicePtr, typ: int)
extern def Fl_Choice_delete(self: Fl_ChoicePtr)
extern def Fl_Choice_set_image(self: Fl_ChoicePtr, a1: bytes)
extern def Fl_Choice_handle(self: Fl_ChoicePtr, cb: bytes, data: bytes)
extern def Fl_Choice_handle_event(self: Fl_ChoicePtr, event: int) -> int
extern def Fl_Choice_draw(self: Fl_ChoicePtr, cb: bytes, data: bytes)
extern def Fl_Choice_resize_callback(self: Fl_ChoicePtr, cb1: bytes, data: bytes)
extern def Fl_Choice_set_when(self: Fl_ChoicePtr, a1: int)
extern def Fl_Choice_when(self: Fl_ChoicePtr) -> int
extern def Fl_Choice_image(self: Fl_ChoicePtr) -> bytes
extern def Fl_Choice_parent(self: Fl_ChoicePtr) -> bytes
extern def Fl_Choice_selection_color(self: Fl_ChoicePtr) -> t.CUInt32T
extern def Fl_Choice_set_selection_color(self: Fl_ChoicePtr, color: t.CUInt32T)
extern def Fl_Choice_do_callback(self: Fl_ChoicePtr)
extern def Fl_Choice_inside(self: Fl_ChoicePtr, a1: bytes) -> int
extern def Fl_Choice_window(self: Fl_ChoicePtr) -> bytes
extern def Fl_Choice_top_window(self: Fl_ChoicePtr) -> bytes
extern def Fl_Choice_takes_events(self: Fl_ChoicePtr) -> int
extern def Fl_Choice_user_data(self: Fl_ChoicePtr) -> bytes
extern def Fl_Choice_take_focus(self: Fl_ChoicePtr) -> int
extern def Fl_Choice_set_visible_focus(self: Fl_ChoicePtr)
extern def Fl_Choice_clear_visible_focus(self: Fl_ChoicePtr)
extern def Fl_Choice_visible_focus(self: Fl_ChoicePtr, v: int)
extern def Fl_Choice_has_visible_focus(self: Fl_ChoicePtr) -> t.CUInt32T
extern def Fl_Choice_set_user_data(self: Fl_ChoicePtr, data: bytes)
extern def Fl_Choice_draw_data(self: Fl_ChoicePtr) -> bytes
extern def Fl_Choice_handle_data(self: Fl_ChoicePtr) -> bytes
extern def Fl_Choice_set_draw_data(self: Fl_ChoicePtr, data: bytes)
extern def Fl_Choice_set_handle_data(self: Fl_ChoicePtr, data: bytes)
extern def Fl_Choice_damage(self: Fl_ChoicePtr) -> t.CUInt8T
extern def Fl_Choice_set_damage(self: Fl_ChoicePtr, flag: t.CUInt8T)
extern def Fl_Choice_set_damage_area(self: Fl_ChoicePtr, flag: t.CUInt8T, x: int, y: int, w: int, h: int)
extern def Fl_Choice_clear_damage(self: Fl_ChoicePtr)
extern def Fl_Choice_as_window(self: Fl_ChoicePtr) -> bytes
extern def Fl_Choice_as_group(self: Fl_ChoicePtr) -> bytes
extern def Fl_Choice_set_deimage(self: Fl_ChoicePtr, a1: bytes)
extern def Fl_Choice_deimage(self: Fl_ChoicePtr) -> bytes
extern def Fl_Choice_set_callback(self: Fl_ChoicePtr, a1: bytes, a2: bytes)
extern def Fl_Choice_visible(self: Fl_ChoicePtr) -> int
extern def Fl_Choice_visible_r(self: Fl_ChoicePtr) -> int
extern def Fl_Choice_active(self: Fl_ChoicePtr) -> t.CUInt32T
extern def Fl_Choice_active_r(self: Fl_ChoicePtr) -> int
extern def Fl_Choice_callback(self: Fl_ChoicePtr) -> bytes
extern def Fl_Choice_set_deletion_callback(self: Fl_ChoicePtr, cb1: bytes, data: bytes)
extern def Fl_Choice_from_dyn_ptr(ptr: Fl_WidgetPtr) -> Fl_ChoicePtr
extern def Fl_Choice_from_derived_dyn_ptr(ptr: Fl_WidgetPtr) -> Fl_ChoicePtr
extern def Fl_Choice_super_draw(ptr: Fl_WidgetPtr, flag: int)
extern def Fl_Choice_super_draw_first(ptr: Fl_WidgetPtr, flag: int)
extern def Fl_Choice_super_handle_first(ptr: Fl_WidgetPtr, flag: int)
# ----- Fl_Choice (menu_declare) -----
extern def Fl_Choice_add(self: Fl_ChoicePtr, name: str, shortcut: int, a3: bytes, a4: bytes, a5: int) -> int
extern def Fl_Choice_insert(self: Fl_ChoicePtr, index: int, name: str, shortcut: int, a4: bytes, a5: bytes, a6: int) -> int
extern def Fl_Choice_get_item(self: Fl_ChoicePtr, name: str) -> Fl_Menu_ItemPtr
extern def Fl_Choice_set_item(self: Fl_ChoicePtr, item: Fl_Menu_ItemPtr) -> int
extern def Fl_Choice_text_font(self: Fl_ChoicePtr) -> int
extern def Fl_Choice_set_text_font(self: Fl_ChoicePtr, c: int)
extern def Fl_Choice_text_size(self: Fl_ChoicePtr) -> int
extern def Fl_Choice_set_text_size(self: Fl_ChoicePtr, c: int)
extern def Fl_Choice_text_color(self: Fl_ChoicePtr) -> t.CUInt32T
extern def Fl_Choice_set_text_color(self: Fl_ChoicePtr, c: t.CUInt32T)
extern def Fl_Choice_add_choice(self: Fl_ChoicePtr, a1: str) -> int
extern def Fl_Choice_get_choice(self: Fl_ChoicePtr) -> str
extern def Fl_Choice_value(self: Fl_ChoicePtr) -> int
extern def Fl_Choice_set_value(self: Fl_ChoicePtr, v: int) -> int
extern def Fl_Choice_clear(self: Fl_ChoicePtr)
extern def Fl_Choice_clear_submenu(self: Fl_ChoicePtr, index: int) -> int
extern def Fl_Choice_size(self: Fl_ChoicePtr) -> int
extern def Fl_Choice_text(self: Fl_ChoicePtr, idx: int) -> str
extern def Fl_Choice_at(self: Fl_ChoicePtr, idx: int) -> Fl_Menu_ItemPtr
extern def Fl_Choice_set_mode(self: Fl_ChoicePtr, i: int, fl: int)
extern def Fl_Choice_mode(self: Fl_ChoicePtr, i: int) -> int
extern def Fl_Choice_find_index(self: Fl_ChoicePtr, label: str) -> int
extern def Fl_Choice_menu(self: Fl_ChoicePtr) -> Fl_Menu_ItemPtr
extern def Fl_Choice_set_menu(self: Fl_ChoicePtr, item: Fl_Menu_ItemPtr)
extern def Fl_Choice_remove(self: Fl_ChoicePtr, idx: int)
extern def Fl_Choice_set_down_box(self: Fl_ChoicePtr, box: int)
extern def Fl_Choice_down_box(self: Fl_ChoicePtr) -> int
extern def Fl_Choice_global(self: Fl_ChoicePtr)
extern def Fl_Choice_item_pathname(self: Fl_ChoicePtr, pathname: str, pathnamelen: int, item: Fl_Menu_ItemPtr) -> int
extern def Fl_Choice_set_menu_box(self: Fl_ChoicePtr, b: int)
extern def Fl_Choice_menu_box(self: Fl_ChoicePtr) -> int
extern def Fl_Choice_mvalue(self: Fl_ChoicePtr) -> Fl_Menu_ItemPtr
extern def Fl_Choice_prev_mvalue(self: Fl_ChoicePtr) -> Fl_Menu_ItemPtr
# ----- Fl_Sys_Menu_Bar (widget_declare) -----
extern def Fl_Sys_Menu_Bar_new(x: int, y: int, width: int, height: int, title: str) -> Fl_Sys_Menu_BarPtr
extern def Fl_Sys_Menu_Bar_x(self: Fl_Sys_Menu_BarPtr) -> int
extern def Fl_Sys_Menu_Bar_y(self: Fl_Sys_Menu_BarPtr) -> int
extern def Fl_Sys_Menu_Bar_width(self: Fl_Sys_Menu_BarPtr) -> int
extern def Fl_Sys_Menu_Bar_height(self: Fl_Sys_Menu_BarPtr) -> int
extern def Fl_Sys_Menu_Bar_label(self: Fl_Sys_Menu_BarPtr) -> str
extern def Fl_Sys_Menu_Bar_set_label(self: Fl_Sys_Menu_BarPtr, title: str)
extern def Fl_Sys_Menu_Bar_redraw(self: Fl_Sys_Menu_BarPtr)
extern def Fl_Sys_Menu_Bar_show(self: Fl_Sys_Menu_BarPtr)
extern def Fl_Sys_Menu_Bar_hide(self: Fl_Sys_Menu_BarPtr)
extern def Fl_Sys_Menu_Bar_activate(self: Fl_Sys_Menu_BarPtr)
extern def Fl_Sys_Menu_Bar_deactivate(self: Fl_Sys_Menu_BarPtr)
extern def Fl_Sys_Menu_Bar_redraw_label(self: Fl_Sys_Menu_BarPtr)
extern def Fl_Sys_Menu_Bar_resize(self: Fl_Sys_Menu_BarPtr, x: int, y: int, width: int, height: int)
extern def Fl_Sys_Menu_Bar_widget_resize(self: Fl_Sys_Menu_BarPtr, x: int, y: int, width: int, height: int)
extern def Fl_Sys_Menu_Bar_tooltip(self: Fl_Sys_Menu_BarPtr) -> str
extern def Fl_Sys_Menu_Bar_set_tooltip(self: Fl_Sys_Menu_BarPtr, txt: str)
extern def Fl_Sys_Menu_Bar_get_type(self: Fl_Sys_Menu_BarPtr) -> int
extern def Fl_Sys_Menu_Bar_set_type(self: Fl_Sys_Menu_BarPtr, typ: int)
extern def Fl_Sys_Menu_Bar_color(self: Fl_Sys_Menu_BarPtr) -> t.CUInt32T
extern def Fl_Sys_Menu_Bar_set_color(self: Fl_Sys_Menu_BarPtr, color: t.CUInt32T)
extern def Fl_Sys_Menu_Bar_measure_label(self: Fl_Sys_Menu_BarPtr, a1: bytes, a2: bytes)
extern def Fl_Sys_Menu_Bar_label_color(self: Fl_Sys_Menu_BarPtr) -> t.CUInt32T
extern def Fl_Sys_Menu_Bar_set_label_color(self: Fl_Sys_Menu_BarPtr, color: t.CUInt32T)
extern def Fl_Sys_Menu_Bar_label_font(self: Fl_Sys_Menu_BarPtr) -> int
extern def Fl_Sys_Menu_Bar_set_label_font(self: Fl_Sys_Menu_BarPtr, font: int)
extern def Fl_Sys_Menu_Bar_label_size(self: Fl_Sys_Menu_BarPtr) -> int
extern def Fl_Sys_Menu_Bar_set_label_size(self: Fl_Sys_Menu_BarPtr, sz: int)
extern def Fl_Sys_Menu_Bar_label_type(self: Fl_Sys_Menu_BarPtr) -> int
extern def Fl_Sys_Menu_Bar_set_label_type(self: Fl_Sys_Menu_BarPtr, typ: int)
extern def Fl_Sys_Menu_Bar_box(self: Fl_Sys_Menu_BarPtr) -> int
extern def Fl_Sys_Menu_Bar_set_box(self: Fl_Sys_Menu_BarPtr, typ: int)
extern def Fl_Sys_Menu_Bar_changed(self: Fl_Sys_Menu_BarPtr) -> int
extern def Fl_Sys_Menu_Bar_set_changed(self: Fl_Sys_Menu_BarPtr)
extern def Fl_Sys_Menu_Bar_clear_changed(self: Fl_Sys_Menu_BarPtr)
extern def Fl_Sys_Menu_Bar_align(self: Fl_Sys_Menu_BarPtr) -> int
extern def Fl_Sys_Menu_Bar_set_align(self: Fl_Sys_Menu_BarPtr, typ: int)
extern def Fl_Sys_Menu_Bar_delete(self: Fl_Sys_Menu_BarPtr)
extern def Fl_Sys_Menu_Bar_set_image(self: Fl_Sys_Menu_BarPtr, a1: bytes)
extern def Fl_Sys_Menu_Bar_handle(self: Fl_Sys_Menu_BarPtr, cb: bytes, data: bytes)
extern def Fl_Sys_Menu_Bar_handle_event(self: Fl_Sys_Menu_BarPtr, event: int) -> int
extern def Fl_Sys_Menu_Bar_draw(self: Fl_Sys_Menu_BarPtr, cb: bytes, data: bytes)
extern def Fl_Sys_Menu_Bar_resize_callback(self: Fl_Sys_Menu_BarPtr, cb1: bytes, data: bytes)
extern def Fl_Sys_Menu_Bar_set_when(self: Fl_Sys_Menu_BarPtr, a1: int)
extern def Fl_Sys_Menu_Bar_when(self: Fl_Sys_Menu_BarPtr) -> int
extern def Fl_Sys_Menu_Bar_image(self: Fl_Sys_Menu_BarPtr) -> bytes
extern def Fl_Sys_Menu_Bar_parent(self: Fl_Sys_Menu_BarPtr) -> bytes
extern def Fl_Sys_Menu_Bar_selection_color(self: Fl_Sys_Menu_BarPtr) -> t.CUInt32T
extern def Fl_Sys_Menu_Bar_set_selection_color(self: Fl_Sys_Menu_BarPtr, color: t.CUInt32T)
extern def Fl_Sys_Menu_Bar_do_callback(self: Fl_Sys_Menu_BarPtr)
extern def Fl_Sys_Menu_Bar_inside(self: Fl_Sys_Menu_BarPtr, a1: bytes) -> int
extern def Fl_Sys_Menu_Bar_window(self: Fl_Sys_Menu_BarPtr) -> bytes
extern def Fl_Sys_Menu_Bar_top_window(self: Fl_Sys_Menu_BarPtr) -> bytes
extern def Fl_Sys_Menu_Bar_takes_events(self: Fl_Sys_Menu_BarPtr) -> int
extern def Fl_Sys_Menu_Bar_user_data(self: Fl_Sys_Menu_BarPtr) -> bytes
extern def Fl_Sys_Menu_Bar_take_focus(self: Fl_Sys_Menu_BarPtr) -> int
extern def Fl_Sys_Menu_Bar_set_visible_focus(self: Fl_Sys_Menu_BarPtr)
extern def Fl_Sys_Menu_Bar_clear_visible_focus(self: Fl_Sys_Menu_BarPtr)
extern def Fl_Sys_Menu_Bar_visible_focus(self: Fl_Sys_Menu_BarPtr, v: int)
extern def Fl_Sys_Menu_Bar_has_visible_focus(self: Fl_Sys_Menu_BarPtr) -> t.CUInt32T
extern def Fl_Sys_Menu_Bar_set_user_data(self: Fl_Sys_Menu_BarPtr, data: bytes)
extern def Fl_Sys_Menu_Bar_draw_data(self: Fl_Sys_Menu_BarPtr) -> bytes
extern def Fl_Sys_Menu_Bar_handle_data(self: Fl_Sys_Menu_BarPtr) -> bytes
extern def Fl_Sys_Menu_Bar_set_draw_data(self: Fl_Sys_Menu_BarPtr, data: bytes)
extern def Fl_Sys_Menu_Bar_set_handle_data(self: Fl_Sys_Menu_BarPtr, data: bytes)
extern def Fl_Sys_Menu_Bar_damage(self: Fl_Sys_Menu_BarPtr) -> t.CUInt8T
extern def Fl_Sys_Menu_Bar_set_damage(self: Fl_Sys_Menu_BarPtr, flag: t.CUInt8T)
extern def Fl_Sys_Menu_Bar_set_damage_area(self: Fl_Sys_Menu_BarPtr, flag: t.CUInt8T, x: int, y: int, w: int, h: int)
extern def Fl_Sys_Menu_Bar_clear_damage(self: Fl_Sys_Menu_BarPtr)
extern def Fl_Sys_Menu_Bar_as_window(self: Fl_Sys_Menu_BarPtr) -> bytes
extern def Fl_Sys_Menu_Bar_as_group(self: Fl_Sys_Menu_BarPtr) -> bytes
extern def Fl_Sys_Menu_Bar_set_deimage(self: Fl_Sys_Menu_BarPtr, a1: bytes)
extern def Fl_Sys_Menu_Bar_deimage(self: Fl_Sys_Menu_BarPtr) -> bytes
extern def Fl_Sys_Menu_Bar_set_callback(self: Fl_Sys_Menu_BarPtr, a1: bytes, a2: bytes)
extern def Fl_Sys_Menu_Bar_visible(self: Fl_Sys_Menu_BarPtr) -> int
extern def Fl_Sys_Menu_Bar_visible_r(self: Fl_Sys_Menu_BarPtr) -> int
extern def Fl_Sys_Menu_Bar_active(self: Fl_Sys_Menu_BarPtr) -> t.CUInt32T
extern def Fl_Sys_Menu_Bar_active_r(self: Fl_Sys_Menu_BarPtr) -> int
extern def Fl_Sys_Menu_Bar_callback(self: Fl_Sys_Menu_BarPtr) -> bytes
extern def Fl_Sys_Menu_Bar_set_deletion_callback(self: Fl_Sys_Menu_BarPtr, cb1: bytes, data: bytes)
extern def Fl_Sys_Menu_Bar_from_dyn_ptr(ptr: Fl_WidgetPtr) -> Fl_Sys_Menu_BarPtr
extern def Fl_Sys_Menu_Bar_from_derived_dyn_ptr(ptr: Fl_WidgetPtr) -> Fl_Sys_Menu_BarPtr
extern def Fl_Sys_Menu_Bar_super_draw(ptr: Fl_WidgetPtr, flag: int)
extern def Fl_Sys_Menu_Bar_super_draw_first(ptr: Fl_WidgetPtr, flag: int)
extern def Fl_Sys_Menu_Bar_super_handle_first(ptr: Fl_WidgetPtr, flag: int)
# ----- Fl_Sys_Menu_Bar (menu_declare) -----
extern def Fl_Sys_Menu_Bar_add(self: Fl_Sys_Menu_BarPtr, name: str, shortcut: int, a3: bytes, a4: bytes, a5: int) -> int
extern def Fl_Sys_Menu_Bar_insert(self: Fl_Sys_Menu_BarPtr, index: int, name: str, shortcut: int, a4: bytes, a5: bytes, a6: int) -> int
extern def Fl_Sys_Menu_Bar_get_item(self: Fl_Sys_Menu_BarPtr, name: str) -> Fl_Menu_ItemPtr
extern def Fl_Sys_Menu_Bar_set_item(self: Fl_Sys_Menu_BarPtr, item: Fl_Menu_ItemPtr) -> int
extern def Fl_Sys_Menu_Bar_text_font(self: Fl_Sys_Menu_BarPtr) -> int
extern def Fl_Sys_Menu_Bar_set_text_font(self: Fl_Sys_Menu_BarPtr, c: int)
extern def Fl_Sys_Menu_Bar_text_size(self: Fl_Sys_Menu_BarPtr) -> int
extern def Fl_Sys_Menu_Bar_set_text_size(self: Fl_Sys_Menu_BarPtr, c: int)
extern def Fl_Sys_Menu_Bar_text_color(self: Fl_Sys_Menu_BarPtr) -> t.CUInt32T
extern def Fl_Sys_Menu_Bar_set_text_color(self: Fl_Sys_Menu_BarPtr, c: t.CUInt32T)
extern def Fl_Sys_Menu_Bar_add_choice(self: Fl_Sys_Menu_BarPtr, a1: str) -> int
extern def Fl_Sys_Menu_Bar_get_choice(self: Fl_Sys_Menu_BarPtr) -> str
extern def Fl_Sys_Menu_Bar_value(self: Fl_Sys_Menu_BarPtr) -> int
extern def Fl_Sys_Menu_Bar_set_value(self: Fl_Sys_Menu_BarPtr, v: int) -> int
extern def Fl_Sys_Menu_Bar_clear(self: Fl_Sys_Menu_BarPtr)
extern def Fl_Sys_Menu_Bar_clear_submenu(self: Fl_Sys_Menu_BarPtr, index: int) -> int
extern def Fl_Sys_Menu_Bar_size(self: Fl_Sys_Menu_BarPtr) -> int
extern def Fl_Sys_Menu_Bar_text(self: Fl_Sys_Menu_BarPtr, idx: int) -> str
extern def Fl_Sys_Menu_Bar_at(self: Fl_Sys_Menu_BarPtr, idx: int) -> Fl_Menu_ItemPtr
extern def Fl_Sys_Menu_Bar_set_mode(self: Fl_Sys_Menu_BarPtr, i: int, fl: int)
extern def Fl_Sys_Menu_Bar_mode(self: Fl_Sys_Menu_BarPtr, i: int) -> int
extern def Fl_Sys_Menu_Bar_find_index(self: Fl_Sys_Menu_BarPtr, label: str) -> int
extern def Fl_Sys_Menu_Bar_menu(self: Fl_Sys_Menu_BarPtr) -> Fl_Menu_ItemPtr
extern def Fl_Sys_Menu_Bar_set_menu(self: Fl_Sys_Menu_BarPtr, item: Fl_Menu_ItemPtr)
extern def Fl_Sys_Menu_Bar_remove(self: Fl_Sys_Menu_BarPtr, idx: int)
extern def Fl_Sys_Menu_Bar_set_down_box(self: Fl_Sys_Menu_BarPtr, box: int)
extern def Fl_Sys_Menu_Bar_down_box(self: Fl_Sys_Menu_BarPtr) -> int
extern def Fl_Sys_Menu_Bar_global(self: Fl_Sys_Menu_BarPtr)
extern def Fl_Sys_Menu_Bar_item_pathname(self: Fl_Sys_Menu_BarPtr, pathname: str, pathnamelen: int, item: Fl_Menu_ItemPtr) -> int
extern def Fl_Sys_Menu_Bar_set_menu_box(self: Fl_Sys_Menu_BarPtr, b: int)
extern def Fl_Sys_Menu_Bar_menu_box(self: Fl_Sys_Menu_BarPtr) -> int
extern def Fl_Sys_Menu_Bar_mvalue(self: Fl_Sys_Menu_BarPtr) -> Fl_Menu_ItemPtr
extern def Fl_Sys_Menu_Bar_prev_mvalue(self: Fl_Sys_Menu_BarPtr) -> Fl_Menu_ItemPtr
extern def Fl_Menu_Button_popup(self: Fl_Menu_ButtonPtr) -> Fl_Menu_ItemPtr
extern def Fl_Sys_Menu_Bar_set_window_menu_style(style: int)
extern def Fl_Sys_Menu_Bar_about(self: Fl_Sys_Menu_BarPtr, cb: bytes, data: bytes)
extern def Fl_Menu_Item_new(args: bytes, sz: int) -> Fl_Menu_ItemPtr
extern def Fl_Menu_Item_new2(args: bytes, shortcuts: bytes, cb: bytes, flags: bytes, labeltype: bytes, labelfont: bytes, labelsize: bytes, labelcolor: bytes, sz: int) -> Fl_Menu_ItemPtr
extern def Fl_Menu_Item_delete(self: Fl_Menu_ItemPtr)
extern def Fl_Menu_Item_popup(self: Fl_Menu_ItemPtr, x: int, y: int) -> Fl_Menu_ItemPtr
extern def Fl_Menu_Item_pulldown(self: Fl_Menu_ItemPtr, X: int, Y: int, W: int, H: int, picked: Fl_Menu_ItemPtr, a6: bytes, title: Fl_Menu_ItemPtr, menubar: int) -> Fl_Menu_ItemPtr
extern def Fl_Menu_Item_label(a0: Fl_Menu_ItemPtr) -> str
extern def Fl_Menu_Item_set_label(a0: Fl_Menu_ItemPtr, a: str)
extern def Fl_Menu_Item_label_type(a0: Fl_Menu_ItemPtr) -> int
extern def Fl_Menu_Item_set_label_type(a0: Fl_Menu_ItemPtr, a: int)
extern def Fl_Menu_Item_label_color(a0: Fl_Menu_ItemPtr) -> t.CUInt32T
extern def Fl_Menu_Item_set_label_color(a0: Fl_Menu_ItemPtr, a: t.CUInt32T)
extern def Fl_Menu_Item_label_font(a0: Fl_Menu_ItemPtr) -> int
extern def Fl_Menu_Item_set_label_font(a0: Fl_Menu_ItemPtr, a: int)
extern def Fl_Menu_Item_label_size(a0: Fl_Menu_ItemPtr) -> int
extern def Fl_Menu_Item_set_label_size(a0: Fl_Menu_ItemPtr, a: int)
extern def Fl_Menu_Item_value(a0: Fl_Menu_ItemPtr) -> int
extern def Fl_Menu_Item_set(a0: Fl_Menu_ItemPtr)
extern def Fl_Menu_Item_clear(a0: Fl_Menu_ItemPtr)
extern def Fl_Menu_Item_visible(a0: Fl_Menu_ItemPtr) -> int
extern def Fl_Menu_Item_show(a0: Fl_Menu_ItemPtr)
extern def Fl_Menu_Item_hide(a0: Fl_Menu_ItemPtr)
extern def Fl_Menu_Item_active(a0: Fl_Menu_ItemPtr) -> int
extern def Fl_Menu_Item_activate(a0: Fl_Menu_ItemPtr)
extern def Fl_Menu_Item_deactivate(a0: Fl_Menu_ItemPtr)
extern def Fl_Menu_Item_submenu(self: Fl_Menu_ItemPtr) -> int
extern def Fl_Menu_Item_checkbox(self: Fl_Menu_ItemPtr) -> int
extern def Fl_Menu_Item_radio(self: Fl_Menu_ItemPtr) -> int
extern def Fl_Menu_Item_next(self: Fl_Menu_ItemPtr, idx: int) -> Fl_Menu_ItemPtr
extern def Fl_Menu_Item_set_callback(self: Fl_Menu_ItemPtr, c: bytes, p: bytes)
extern def Fl_Menu_Item_do_callback(self: Fl_Menu_ItemPtr, w: Fl_WidgetPtr)
extern def Fl_Menu_Item_user_data(a0: Fl_Menu_ItemPtr) -> bytes
extern def Fl_Menu_Item_set_user_data(a0: Fl_Menu_ItemPtr, data: bytes)
extern def Fl_Menu_Item_draw(self: Fl_Menu_ItemPtr, x: int, y: int, w: int, h: int, m: bytes, selected: int)
extern def Fl_Menu_Item_measure(self: Fl_Menu_ItemPtr, hp: bytes, m: bytes) -> int
extern def Fl_Menu_Item_image(self: Fl_Menu_ItemPtr, image: bytes)
extern def Fl_Menu_Item_add_image(self: Fl_Menu_ItemPtr, image: bytes, on_left: int)
extern def Fl_Menu_Item_children(self: Fl_Menu_ItemPtr) -> int
extern def Fl_Menu_Item_at(self: Fl_Menu_ItemPtr, idx: int) -> Fl_Menu_ItemPtr
extern def Fl_Menu_Item_add(self: Fl_Menu_ItemPtr, name: str, shortcut: int, cb: bytes, data: bytes, flag: int) -> int
extern def Fl_Menu_Item_insert(self: Fl_Menu_ItemPtr, index: int, name: str, shortcut: int, cb: bytes, data: bytes, flag: int) -> int
extern def Fl_Menu_Item_set_shortcut(self: Fl_Menu_ItemPtr, shortcut: int)
extern def Fl_Menu_Item_set_flag(self: Fl_Menu_ItemPtr, flag: int)
extern def Fl_mac_set_about(cb: bytes, user_data: bytes, shortcut: int)
extern def Fl_Mac_App_Menu_custom_application_menu_items(m: Fl_Menu_ItemPtr)
extern def Fl_Mac_App_Menu_set_about(about: str)
extern def Fl_Mac_App_Menu_set_print(print: str)
extern def Fl_Mac_App_Menu_set_print_no_titlebar(print_no_titlebar: str)
extern def Fl_Mac_App_Menu_set_toggle_print_titlebar(toggle_print_titlebar: str)
extern def Fl_Mac_App_Menu_set_services(services: str)
extern def Fl_Mac_App_Menu_set_hide(hide: str)
extern def Fl_Mac_App_Menu_set_hide_others(hide_others: str)
extern def Fl_Mac_App_Menu_set_show(show: str)
extern def Fl_Mac_App_Menu_set_quit(quit: str)
+641
View File
@@ -0,0 +1,641 @@
import t, c
from fltk._types import *
# ============================================================
# fltk/_cfl_misc.vp — cfl_misc.h 的 extern FFI 声明(对接 cfltk C API)
# ============================================================
# 所有函数直接对应 cfltk 生成的 C 符号(extern "C"),链接目标: cfltk2。
# 类型约定: Fl_* 对象均为不透明指针 (Fl_XxxPtr);const char* → str;
# 函数指针/void* → bytes(Viper 端传 0/NULL 或不使用)。
# ----- Fl_Spinner (widget_declare) -----
extern def Fl_Spinner_new(x: int, y: int, width: int, height: int, title: str) -> Fl_SpinnerPtr
extern def Fl_Spinner_x(self: Fl_SpinnerPtr) -> int
extern def Fl_Spinner_y(self: Fl_SpinnerPtr) -> int
extern def Fl_Spinner_width(self: Fl_SpinnerPtr) -> int
extern def Fl_Spinner_height(self: Fl_SpinnerPtr) -> int
extern def Fl_Spinner_label(self: Fl_SpinnerPtr) -> str
extern def Fl_Spinner_set_label(self: Fl_SpinnerPtr, title: str)
extern def Fl_Spinner_redraw(self: Fl_SpinnerPtr)
extern def Fl_Spinner_show(self: Fl_SpinnerPtr)
extern def Fl_Spinner_hide(self: Fl_SpinnerPtr)
extern def Fl_Spinner_activate(self: Fl_SpinnerPtr)
extern def Fl_Spinner_deactivate(self: Fl_SpinnerPtr)
extern def Fl_Spinner_redraw_label(self: Fl_SpinnerPtr)
extern def Fl_Spinner_resize(self: Fl_SpinnerPtr, x: int, y: int, width: int, height: int)
extern def Fl_Spinner_widget_resize(self: Fl_SpinnerPtr, x: int, y: int, width: int, height: int)
extern def Fl_Spinner_tooltip(self: Fl_SpinnerPtr) -> str
extern def Fl_Spinner_set_tooltip(self: Fl_SpinnerPtr, txt: str)
extern def Fl_Spinner_get_type(self: Fl_SpinnerPtr) -> int
extern def Fl_Spinner_set_type(self: Fl_SpinnerPtr, typ: int)
extern def Fl_Spinner_color(self: Fl_SpinnerPtr) -> t.CUInt32T
extern def Fl_Spinner_set_color(self: Fl_SpinnerPtr, color: t.CUInt32T)
extern def Fl_Spinner_measure_label(self: Fl_SpinnerPtr, a1: bytes, a2: bytes)
extern def Fl_Spinner_label_color(self: Fl_SpinnerPtr) -> t.CUInt32T
extern def Fl_Spinner_set_label_color(self: Fl_SpinnerPtr, color: t.CUInt32T)
extern def Fl_Spinner_label_font(self: Fl_SpinnerPtr) -> int
extern def Fl_Spinner_set_label_font(self: Fl_SpinnerPtr, font: int)
extern def Fl_Spinner_label_size(self: Fl_SpinnerPtr) -> int
extern def Fl_Spinner_set_label_size(self: Fl_SpinnerPtr, sz: int)
extern def Fl_Spinner_label_type(self: Fl_SpinnerPtr) -> int
extern def Fl_Spinner_set_label_type(self: Fl_SpinnerPtr, typ: int)
extern def Fl_Spinner_box(self: Fl_SpinnerPtr) -> int
extern def Fl_Spinner_set_box(self: Fl_SpinnerPtr, typ: int)
extern def Fl_Spinner_changed(self: Fl_SpinnerPtr) -> int
extern def Fl_Spinner_set_changed(self: Fl_SpinnerPtr)
extern def Fl_Spinner_clear_changed(self: Fl_SpinnerPtr)
extern def Fl_Spinner_align(self: Fl_SpinnerPtr) -> int
extern def Fl_Spinner_set_align(self: Fl_SpinnerPtr, typ: int)
extern def Fl_Spinner_delete(self: Fl_SpinnerPtr)
extern def Fl_Spinner_set_image(self: Fl_SpinnerPtr, a1: bytes)
extern def Fl_Spinner_handle(self: Fl_SpinnerPtr, cb: bytes, data: bytes)
extern def Fl_Spinner_handle_event(self: Fl_SpinnerPtr, event: int) -> int
extern def Fl_Spinner_draw(self: Fl_SpinnerPtr, cb: bytes, data: bytes)
extern def Fl_Spinner_resize_callback(self: Fl_SpinnerPtr, cb1: bytes, data: bytes)
extern def Fl_Spinner_set_when(self: Fl_SpinnerPtr, a1: int)
extern def Fl_Spinner_when(self: Fl_SpinnerPtr) -> int
extern def Fl_Spinner_image(self: Fl_SpinnerPtr) -> bytes
extern def Fl_Spinner_parent(self: Fl_SpinnerPtr) -> bytes
extern def Fl_Spinner_selection_color(self: Fl_SpinnerPtr) -> t.CUInt32T
extern def Fl_Spinner_set_selection_color(self: Fl_SpinnerPtr, color: t.CUInt32T)
extern def Fl_Spinner_do_callback(self: Fl_SpinnerPtr)
extern def Fl_Spinner_inside(self: Fl_SpinnerPtr, a1: bytes) -> int
extern def Fl_Spinner_window(self: Fl_SpinnerPtr) -> bytes
extern def Fl_Spinner_top_window(self: Fl_SpinnerPtr) -> bytes
extern def Fl_Spinner_takes_events(self: Fl_SpinnerPtr) -> int
extern def Fl_Spinner_user_data(self: Fl_SpinnerPtr) -> bytes
extern def Fl_Spinner_take_focus(self: Fl_SpinnerPtr) -> int
extern def Fl_Spinner_set_visible_focus(self: Fl_SpinnerPtr)
extern def Fl_Spinner_clear_visible_focus(self: Fl_SpinnerPtr)
extern def Fl_Spinner_visible_focus(self: Fl_SpinnerPtr, v: int)
extern def Fl_Spinner_has_visible_focus(self: Fl_SpinnerPtr) -> t.CUInt32T
extern def Fl_Spinner_set_user_data(self: Fl_SpinnerPtr, data: bytes)
extern def Fl_Spinner_draw_data(self: Fl_SpinnerPtr) -> bytes
extern def Fl_Spinner_handle_data(self: Fl_SpinnerPtr) -> bytes
extern def Fl_Spinner_set_draw_data(self: Fl_SpinnerPtr, data: bytes)
extern def Fl_Spinner_set_handle_data(self: Fl_SpinnerPtr, data: bytes)
extern def Fl_Spinner_damage(self: Fl_SpinnerPtr) -> t.CUInt8T
extern def Fl_Spinner_set_damage(self: Fl_SpinnerPtr, flag: t.CUInt8T)
extern def Fl_Spinner_set_damage_area(self: Fl_SpinnerPtr, flag: t.CUInt8T, x: int, y: int, w: int, h: int)
extern def Fl_Spinner_clear_damage(self: Fl_SpinnerPtr)
extern def Fl_Spinner_as_window(self: Fl_SpinnerPtr) -> bytes
extern def Fl_Spinner_as_group(self: Fl_SpinnerPtr) -> bytes
extern def Fl_Spinner_set_deimage(self: Fl_SpinnerPtr, a1: bytes)
extern def Fl_Spinner_deimage(self: Fl_SpinnerPtr) -> bytes
extern def Fl_Spinner_set_callback(self: Fl_SpinnerPtr, a1: bytes, a2: bytes)
extern def Fl_Spinner_visible(self: Fl_SpinnerPtr) -> int
extern def Fl_Spinner_visible_r(self: Fl_SpinnerPtr) -> int
extern def Fl_Spinner_active(self: Fl_SpinnerPtr) -> t.CUInt32T
extern def Fl_Spinner_active_r(self: Fl_SpinnerPtr) -> int
extern def Fl_Spinner_callback(self: Fl_SpinnerPtr) -> bytes
extern def Fl_Spinner_set_deletion_callback(self: Fl_SpinnerPtr, cb1: bytes, data: bytes)
extern def Fl_Spinner_from_dyn_ptr(ptr: Fl_WidgetPtr) -> Fl_SpinnerPtr
extern def Fl_Spinner_from_derived_dyn_ptr(ptr: Fl_WidgetPtr) -> Fl_SpinnerPtr
extern def Fl_Spinner_super_draw(ptr: Fl_WidgetPtr, flag: int)
extern def Fl_Spinner_super_draw_first(ptr: Fl_WidgetPtr, flag: int)
extern def Fl_Spinner_super_handle_first(ptr: Fl_WidgetPtr, flag: int)
# ----- Fl_Clock (widget_declare) -----
extern def Fl_Clock_new(x: int, y: int, width: int, height: int, title: str) -> Fl_ClockPtr
extern def Fl_Clock_x(self: Fl_ClockPtr) -> int
extern def Fl_Clock_y(self: Fl_ClockPtr) -> int
extern def Fl_Clock_width(self: Fl_ClockPtr) -> int
extern def Fl_Clock_height(self: Fl_ClockPtr) -> int
extern def Fl_Clock_label(self: Fl_ClockPtr) -> str
extern def Fl_Clock_set_label(self: Fl_ClockPtr, title: str)
extern def Fl_Clock_redraw(self: Fl_ClockPtr)
extern def Fl_Clock_show(self: Fl_ClockPtr)
extern def Fl_Clock_hide(self: Fl_ClockPtr)
extern def Fl_Clock_activate(self: Fl_ClockPtr)
extern def Fl_Clock_deactivate(self: Fl_ClockPtr)
extern def Fl_Clock_redraw_label(self: Fl_ClockPtr)
extern def Fl_Clock_resize(self: Fl_ClockPtr, x: int, y: int, width: int, height: int)
extern def Fl_Clock_widget_resize(self: Fl_ClockPtr, x: int, y: int, width: int, height: int)
extern def Fl_Clock_tooltip(self: Fl_ClockPtr) -> str
extern def Fl_Clock_set_tooltip(self: Fl_ClockPtr, txt: str)
extern def Fl_Clock_get_type(self: Fl_ClockPtr) -> int
extern def Fl_Clock_set_type(self: Fl_ClockPtr, typ: int)
extern def Fl_Clock_color(self: Fl_ClockPtr) -> t.CUInt32T
extern def Fl_Clock_set_color(self: Fl_ClockPtr, color: t.CUInt32T)
extern def Fl_Clock_measure_label(self: Fl_ClockPtr, a1: bytes, a2: bytes)
extern def Fl_Clock_label_color(self: Fl_ClockPtr) -> t.CUInt32T
extern def Fl_Clock_set_label_color(self: Fl_ClockPtr, color: t.CUInt32T)
extern def Fl_Clock_label_font(self: Fl_ClockPtr) -> int
extern def Fl_Clock_set_label_font(self: Fl_ClockPtr, font: int)
extern def Fl_Clock_label_size(self: Fl_ClockPtr) -> int
extern def Fl_Clock_set_label_size(self: Fl_ClockPtr, sz: int)
extern def Fl_Clock_label_type(self: Fl_ClockPtr) -> int
extern def Fl_Clock_set_label_type(self: Fl_ClockPtr, typ: int)
extern def Fl_Clock_box(self: Fl_ClockPtr) -> int
extern def Fl_Clock_set_box(self: Fl_ClockPtr, typ: int)
extern def Fl_Clock_changed(self: Fl_ClockPtr) -> int
extern def Fl_Clock_set_changed(self: Fl_ClockPtr)
extern def Fl_Clock_clear_changed(self: Fl_ClockPtr)
extern def Fl_Clock_align(self: Fl_ClockPtr) -> int
extern def Fl_Clock_set_align(self: Fl_ClockPtr, typ: int)
extern def Fl_Clock_delete(self: Fl_ClockPtr)
extern def Fl_Clock_set_image(self: Fl_ClockPtr, a1: bytes)
extern def Fl_Clock_handle(self: Fl_ClockPtr, cb: bytes, data: bytes)
extern def Fl_Clock_handle_event(self: Fl_ClockPtr, event: int) -> int
extern def Fl_Clock_draw(self: Fl_ClockPtr, cb: bytes, data: bytes)
extern def Fl_Clock_resize_callback(self: Fl_ClockPtr, cb1: bytes, data: bytes)
extern def Fl_Clock_set_when(self: Fl_ClockPtr, a1: int)
extern def Fl_Clock_when(self: Fl_ClockPtr) -> int
extern def Fl_Clock_image(self: Fl_ClockPtr) -> bytes
extern def Fl_Clock_parent(self: Fl_ClockPtr) -> bytes
extern def Fl_Clock_selection_color(self: Fl_ClockPtr) -> t.CUInt32T
extern def Fl_Clock_set_selection_color(self: Fl_ClockPtr, color: t.CUInt32T)
extern def Fl_Clock_do_callback(self: Fl_ClockPtr)
extern def Fl_Clock_inside(self: Fl_ClockPtr, a1: bytes) -> int
extern def Fl_Clock_window(self: Fl_ClockPtr) -> bytes
extern def Fl_Clock_top_window(self: Fl_ClockPtr) -> bytes
extern def Fl_Clock_takes_events(self: Fl_ClockPtr) -> int
extern def Fl_Clock_user_data(self: Fl_ClockPtr) -> bytes
extern def Fl_Clock_take_focus(self: Fl_ClockPtr) -> int
extern def Fl_Clock_set_visible_focus(self: Fl_ClockPtr)
extern def Fl_Clock_clear_visible_focus(self: Fl_ClockPtr)
extern def Fl_Clock_visible_focus(self: Fl_ClockPtr, v: int)
extern def Fl_Clock_has_visible_focus(self: Fl_ClockPtr) -> t.CUInt32T
extern def Fl_Clock_set_user_data(self: Fl_ClockPtr, data: bytes)
extern def Fl_Clock_draw_data(self: Fl_ClockPtr) -> bytes
extern def Fl_Clock_handle_data(self: Fl_ClockPtr) -> bytes
extern def Fl_Clock_set_draw_data(self: Fl_ClockPtr, data: bytes)
extern def Fl_Clock_set_handle_data(self: Fl_ClockPtr, data: bytes)
extern def Fl_Clock_damage(self: Fl_ClockPtr) -> t.CUInt8T
extern def Fl_Clock_set_damage(self: Fl_ClockPtr, flag: t.CUInt8T)
extern def Fl_Clock_set_damage_area(self: Fl_ClockPtr, flag: t.CUInt8T, x: int, y: int, w: int, h: int)
extern def Fl_Clock_clear_damage(self: Fl_ClockPtr)
extern def Fl_Clock_as_window(self: Fl_ClockPtr) -> bytes
extern def Fl_Clock_as_group(self: Fl_ClockPtr) -> bytes
extern def Fl_Clock_set_deimage(self: Fl_ClockPtr, a1: bytes)
extern def Fl_Clock_deimage(self: Fl_ClockPtr) -> bytes
extern def Fl_Clock_set_callback(self: Fl_ClockPtr, a1: bytes, a2: bytes)
extern def Fl_Clock_visible(self: Fl_ClockPtr) -> int
extern def Fl_Clock_visible_r(self: Fl_ClockPtr) -> int
extern def Fl_Clock_active(self: Fl_ClockPtr) -> t.CUInt32T
extern def Fl_Clock_active_r(self: Fl_ClockPtr) -> int
extern def Fl_Clock_callback(self: Fl_ClockPtr) -> bytes
extern def Fl_Clock_set_deletion_callback(self: Fl_ClockPtr, cb1: bytes, data: bytes)
extern def Fl_Clock_from_dyn_ptr(ptr: Fl_WidgetPtr) -> Fl_ClockPtr
extern def Fl_Clock_from_derived_dyn_ptr(ptr: Fl_WidgetPtr) -> Fl_ClockPtr
extern def Fl_Clock_super_draw(ptr: Fl_WidgetPtr, flag: int)
extern def Fl_Clock_super_draw_first(ptr: Fl_WidgetPtr, flag: int)
extern def Fl_Clock_super_handle_first(ptr: Fl_WidgetPtr, flag: int)
# ----- Fl_Chart (widget_declare) -----
extern def Fl_Chart_new(x: int, y: int, width: int, height: int, title: str) -> Fl_ChartPtr
extern def Fl_Chart_x(self: Fl_ChartPtr) -> int
extern def Fl_Chart_y(self: Fl_ChartPtr) -> int
extern def Fl_Chart_width(self: Fl_ChartPtr) -> int
extern def Fl_Chart_height(self: Fl_ChartPtr) -> int
extern def Fl_Chart_label(self: Fl_ChartPtr) -> str
extern def Fl_Chart_set_label(self: Fl_ChartPtr, title: str)
extern def Fl_Chart_redraw(self: Fl_ChartPtr)
extern def Fl_Chart_show(self: Fl_ChartPtr)
extern def Fl_Chart_hide(self: Fl_ChartPtr)
extern def Fl_Chart_activate(self: Fl_ChartPtr)
extern def Fl_Chart_deactivate(self: Fl_ChartPtr)
extern def Fl_Chart_redraw_label(self: Fl_ChartPtr)
extern def Fl_Chart_resize(self: Fl_ChartPtr, x: int, y: int, width: int, height: int)
extern def Fl_Chart_widget_resize(self: Fl_ChartPtr, x: int, y: int, width: int, height: int)
extern def Fl_Chart_tooltip(self: Fl_ChartPtr) -> str
extern def Fl_Chart_set_tooltip(self: Fl_ChartPtr, txt: str)
extern def Fl_Chart_get_type(self: Fl_ChartPtr) -> int
extern def Fl_Chart_set_type(self: Fl_ChartPtr, typ: int)
extern def Fl_Chart_color(self: Fl_ChartPtr) -> t.CUInt32T
extern def Fl_Chart_set_color(self: Fl_ChartPtr, color: t.CUInt32T)
extern def Fl_Chart_measure_label(self: Fl_ChartPtr, a1: bytes, a2: bytes)
extern def Fl_Chart_label_color(self: Fl_ChartPtr) -> t.CUInt32T
extern def Fl_Chart_set_label_color(self: Fl_ChartPtr, color: t.CUInt32T)
extern def Fl_Chart_label_font(self: Fl_ChartPtr) -> int
extern def Fl_Chart_set_label_font(self: Fl_ChartPtr, font: int)
extern def Fl_Chart_label_size(self: Fl_ChartPtr) -> int
extern def Fl_Chart_set_label_size(self: Fl_ChartPtr, sz: int)
extern def Fl_Chart_label_type(self: Fl_ChartPtr) -> int
extern def Fl_Chart_set_label_type(self: Fl_ChartPtr, typ: int)
extern def Fl_Chart_box(self: Fl_ChartPtr) -> int
extern def Fl_Chart_set_box(self: Fl_ChartPtr, typ: int)
extern def Fl_Chart_changed(self: Fl_ChartPtr) -> int
extern def Fl_Chart_set_changed(self: Fl_ChartPtr)
extern def Fl_Chart_clear_changed(self: Fl_ChartPtr)
extern def Fl_Chart_align(self: Fl_ChartPtr) -> int
extern def Fl_Chart_set_align(self: Fl_ChartPtr, typ: int)
extern def Fl_Chart_delete(self: Fl_ChartPtr)
extern def Fl_Chart_set_image(self: Fl_ChartPtr, a1: bytes)
extern def Fl_Chart_handle(self: Fl_ChartPtr, cb: bytes, data: bytes)
extern def Fl_Chart_handle_event(self: Fl_ChartPtr, event: int) -> int
extern def Fl_Chart_draw(self: Fl_ChartPtr, cb: bytes, data: bytes)
extern def Fl_Chart_resize_callback(self: Fl_ChartPtr, cb1: bytes, data: bytes)
extern def Fl_Chart_set_when(self: Fl_ChartPtr, a1: int)
extern def Fl_Chart_when(self: Fl_ChartPtr) -> int
extern def Fl_Chart_image(self: Fl_ChartPtr) -> bytes
extern def Fl_Chart_parent(self: Fl_ChartPtr) -> bytes
extern def Fl_Chart_selection_color(self: Fl_ChartPtr) -> t.CUInt32T
extern def Fl_Chart_set_selection_color(self: Fl_ChartPtr, color: t.CUInt32T)
extern def Fl_Chart_do_callback(self: Fl_ChartPtr)
extern def Fl_Chart_inside(self: Fl_ChartPtr, a1: bytes) -> int
extern def Fl_Chart_window(self: Fl_ChartPtr) -> bytes
extern def Fl_Chart_top_window(self: Fl_ChartPtr) -> bytes
extern def Fl_Chart_takes_events(self: Fl_ChartPtr) -> int
extern def Fl_Chart_user_data(self: Fl_ChartPtr) -> bytes
extern def Fl_Chart_take_focus(self: Fl_ChartPtr) -> int
extern def Fl_Chart_set_visible_focus(self: Fl_ChartPtr)
extern def Fl_Chart_clear_visible_focus(self: Fl_ChartPtr)
extern def Fl_Chart_visible_focus(self: Fl_ChartPtr, v: int)
extern def Fl_Chart_has_visible_focus(self: Fl_ChartPtr) -> t.CUInt32T
extern def Fl_Chart_set_user_data(self: Fl_ChartPtr, data: bytes)
extern def Fl_Chart_draw_data(self: Fl_ChartPtr) -> bytes
extern def Fl_Chart_handle_data(self: Fl_ChartPtr) -> bytes
extern def Fl_Chart_set_draw_data(self: Fl_ChartPtr, data: bytes)
extern def Fl_Chart_set_handle_data(self: Fl_ChartPtr, data: bytes)
extern def Fl_Chart_damage(self: Fl_ChartPtr) -> t.CUInt8T
extern def Fl_Chart_set_damage(self: Fl_ChartPtr, flag: t.CUInt8T)
extern def Fl_Chart_set_damage_area(self: Fl_ChartPtr, flag: t.CUInt8T, x: int, y: int, w: int, h: int)
extern def Fl_Chart_clear_damage(self: Fl_ChartPtr)
extern def Fl_Chart_as_window(self: Fl_ChartPtr) -> bytes
extern def Fl_Chart_as_group(self: Fl_ChartPtr) -> bytes
extern def Fl_Chart_set_deimage(self: Fl_ChartPtr, a1: bytes)
extern def Fl_Chart_deimage(self: Fl_ChartPtr) -> bytes
extern def Fl_Chart_set_callback(self: Fl_ChartPtr, a1: bytes, a2: bytes)
extern def Fl_Chart_visible(self: Fl_ChartPtr) -> int
extern def Fl_Chart_visible_r(self: Fl_ChartPtr) -> int
extern def Fl_Chart_active(self: Fl_ChartPtr) -> t.CUInt32T
extern def Fl_Chart_active_r(self: Fl_ChartPtr) -> int
extern def Fl_Chart_callback(self: Fl_ChartPtr) -> bytes
extern def Fl_Chart_set_deletion_callback(self: Fl_ChartPtr, cb1: bytes, data: bytes)
extern def Fl_Chart_from_dyn_ptr(ptr: Fl_WidgetPtr) -> Fl_ChartPtr
extern def Fl_Chart_from_derived_dyn_ptr(ptr: Fl_WidgetPtr) -> Fl_ChartPtr
extern def Fl_Chart_super_draw(ptr: Fl_WidgetPtr, flag: int)
extern def Fl_Chart_super_draw_first(ptr: Fl_WidgetPtr, flag: int)
extern def Fl_Chart_super_handle_first(ptr: Fl_WidgetPtr, flag: int)
# ----- Fl_Progress (widget_declare) -----
extern def Fl_Progress_new(x: int, y: int, width: int, height: int, title: str) -> Fl_ProgressPtr
extern def Fl_Progress_x(self: Fl_ProgressPtr) -> int
extern def Fl_Progress_y(self: Fl_ProgressPtr) -> int
extern def Fl_Progress_width(self: Fl_ProgressPtr) -> int
extern def Fl_Progress_height(self: Fl_ProgressPtr) -> int
extern def Fl_Progress_label(self: Fl_ProgressPtr) -> str
extern def Fl_Progress_set_label(self: Fl_ProgressPtr, title: str)
extern def Fl_Progress_redraw(self: Fl_ProgressPtr)
extern def Fl_Progress_show(self: Fl_ProgressPtr)
extern def Fl_Progress_hide(self: Fl_ProgressPtr)
extern def Fl_Progress_activate(self: Fl_ProgressPtr)
extern def Fl_Progress_deactivate(self: Fl_ProgressPtr)
extern def Fl_Progress_redraw_label(self: Fl_ProgressPtr)
extern def Fl_Progress_resize(self: Fl_ProgressPtr, x: int, y: int, width: int, height: int)
extern def Fl_Progress_widget_resize(self: Fl_ProgressPtr, x: int, y: int, width: int, height: int)
extern def Fl_Progress_tooltip(self: Fl_ProgressPtr) -> str
extern def Fl_Progress_set_tooltip(self: Fl_ProgressPtr, txt: str)
extern def Fl_Progress_get_type(self: Fl_ProgressPtr) -> int
extern def Fl_Progress_set_type(self: Fl_ProgressPtr, typ: int)
extern def Fl_Progress_color(self: Fl_ProgressPtr) -> t.CUInt32T
extern def Fl_Progress_set_color(self: Fl_ProgressPtr, color: t.CUInt32T)
extern def Fl_Progress_measure_label(self: Fl_ProgressPtr, a1: bytes, a2: bytes)
extern def Fl_Progress_label_color(self: Fl_ProgressPtr) -> t.CUInt32T
extern def Fl_Progress_set_label_color(self: Fl_ProgressPtr, color: t.CUInt32T)
extern def Fl_Progress_label_font(self: Fl_ProgressPtr) -> int
extern def Fl_Progress_set_label_font(self: Fl_ProgressPtr, font: int)
extern def Fl_Progress_label_size(self: Fl_ProgressPtr) -> int
extern def Fl_Progress_set_label_size(self: Fl_ProgressPtr, sz: int)
extern def Fl_Progress_label_type(self: Fl_ProgressPtr) -> int
extern def Fl_Progress_set_label_type(self: Fl_ProgressPtr, typ: int)
extern def Fl_Progress_box(self: Fl_ProgressPtr) -> int
extern def Fl_Progress_set_box(self: Fl_ProgressPtr, typ: int)
extern def Fl_Progress_changed(self: Fl_ProgressPtr) -> int
extern def Fl_Progress_set_changed(self: Fl_ProgressPtr)
extern def Fl_Progress_clear_changed(self: Fl_ProgressPtr)
extern def Fl_Progress_align(self: Fl_ProgressPtr) -> int
extern def Fl_Progress_set_align(self: Fl_ProgressPtr, typ: int)
extern def Fl_Progress_delete(self: Fl_ProgressPtr)
extern def Fl_Progress_set_image(self: Fl_ProgressPtr, a1: bytes)
extern def Fl_Progress_handle(self: Fl_ProgressPtr, cb: bytes, data: bytes)
extern def Fl_Progress_handle_event(self: Fl_ProgressPtr, event: int) -> int
extern def Fl_Progress_draw(self: Fl_ProgressPtr, cb: bytes, data: bytes)
extern def Fl_Progress_resize_callback(self: Fl_ProgressPtr, cb1: bytes, data: bytes)
extern def Fl_Progress_set_when(self: Fl_ProgressPtr, a1: int)
extern def Fl_Progress_when(self: Fl_ProgressPtr) -> int
extern def Fl_Progress_image(self: Fl_ProgressPtr) -> bytes
extern def Fl_Progress_parent(self: Fl_ProgressPtr) -> bytes
extern def Fl_Progress_selection_color(self: Fl_ProgressPtr) -> t.CUInt32T
extern def Fl_Progress_set_selection_color(self: Fl_ProgressPtr, color: t.CUInt32T)
extern def Fl_Progress_do_callback(self: Fl_ProgressPtr)
extern def Fl_Progress_inside(self: Fl_ProgressPtr, a1: bytes) -> int
extern def Fl_Progress_window(self: Fl_ProgressPtr) -> bytes
extern def Fl_Progress_top_window(self: Fl_ProgressPtr) -> bytes
extern def Fl_Progress_takes_events(self: Fl_ProgressPtr) -> int
extern def Fl_Progress_user_data(self: Fl_ProgressPtr) -> bytes
extern def Fl_Progress_take_focus(self: Fl_ProgressPtr) -> int
extern def Fl_Progress_set_visible_focus(self: Fl_ProgressPtr)
extern def Fl_Progress_clear_visible_focus(self: Fl_ProgressPtr)
extern def Fl_Progress_visible_focus(self: Fl_ProgressPtr, v: int)
extern def Fl_Progress_has_visible_focus(self: Fl_ProgressPtr) -> t.CUInt32T
extern def Fl_Progress_set_user_data(self: Fl_ProgressPtr, data: bytes)
extern def Fl_Progress_draw_data(self: Fl_ProgressPtr) -> bytes
extern def Fl_Progress_handle_data(self: Fl_ProgressPtr) -> bytes
extern def Fl_Progress_set_draw_data(self: Fl_ProgressPtr, data: bytes)
extern def Fl_Progress_set_handle_data(self: Fl_ProgressPtr, data: bytes)
extern def Fl_Progress_damage(self: Fl_ProgressPtr) -> t.CUInt8T
extern def Fl_Progress_set_damage(self: Fl_ProgressPtr, flag: t.CUInt8T)
extern def Fl_Progress_set_damage_area(self: Fl_ProgressPtr, flag: t.CUInt8T, x: int, y: int, w: int, h: int)
extern def Fl_Progress_clear_damage(self: Fl_ProgressPtr)
extern def Fl_Progress_as_window(self: Fl_ProgressPtr) -> bytes
extern def Fl_Progress_as_group(self: Fl_ProgressPtr) -> bytes
extern def Fl_Progress_set_deimage(self: Fl_ProgressPtr, a1: bytes)
extern def Fl_Progress_deimage(self: Fl_ProgressPtr) -> bytes
extern def Fl_Progress_set_callback(self: Fl_ProgressPtr, a1: bytes, a2: bytes)
extern def Fl_Progress_visible(self: Fl_ProgressPtr) -> int
extern def Fl_Progress_visible_r(self: Fl_ProgressPtr) -> int
extern def Fl_Progress_active(self: Fl_ProgressPtr) -> t.CUInt32T
extern def Fl_Progress_active_r(self: Fl_ProgressPtr) -> int
extern def Fl_Progress_callback(self: Fl_ProgressPtr) -> bytes
extern def Fl_Progress_set_deletion_callback(self: Fl_ProgressPtr, cb1: bytes, data: bytes)
extern def Fl_Progress_from_dyn_ptr(ptr: Fl_WidgetPtr) -> Fl_ProgressPtr
extern def Fl_Progress_from_derived_dyn_ptr(ptr: Fl_WidgetPtr) -> Fl_ProgressPtr
extern def Fl_Progress_super_draw(ptr: Fl_WidgetPtr, flag: int)
extern def Fl_Progress_super_draw_first(ptr: Fl_WidgetPtr, flag: int)
extern def Fl_Progress_super_handle_first(ptr: Fl_WidgetPtr, flag: int)
# ----- Fl_Help_View (widget_declare) -----
extern def Fl_Help_View_new(x: int, y: int, width: int, height: int, title: str) -> Fl_Help_ViewPtr
extern def Fl_Help_View_x(self: Fl_Help_ViewPtr) -> int
extern def Fl_Help_View_y(self: Fl_Help_ViewPtr) -> int
extern def Fl_Help_View_width(self: Fl_Help_ViewPtr) -> int
extern def Fl_Help_View_height(self: Fl_Help_ViewPtr) -> int
extern def Fl_Help_View_label(self: Fl_Help_ViewPtr) -> str
extern def Fl_Help_View_set_label(self: Fl_Help_ViewPtr, title: str)
extern def Fl_Help_View_redraw(self: Fl_Help_ViewPtr)
extern def Fl_Help_View_show(self: Fl_Help_ViewPtr)
extern def Fl_Help_View_hide(self: Fl_Help_ViewPtr)
extern def Fl_Help_View_activate(self: Fl_Help_ViewPtr)
extern def Fl_Help_View_deactivate(self: Fl_Help_ViewPtr)
extern def Fl_Help_View_redraw_label(self: Fl_Help_ViewPtr)
extern def Fl_Help_View_resize(self: Fl_Help_ViewPtr, x: int, y: int, width: int, height: int)
extern def Fl_Help_View_widget_resize(self: Fl_Help_ViewPtr, x: int, y: int, width: int, height: int)
extern def Fl_Help_View_tooltip(self: Fl_Help_ViewPtr) -> str
extern def Fl_Help_View_set_tooltip(self: Fl_Help_ViewPtr, txt: str)
extern def Fl_Help_View_get_type(self: Fl_Help_ViewPtr) -> int
extern def Fl_Help_View_set_type(self: Fl_Help_ViewPtr, typ: int)
extern def Fl_Help_View_color(self: Fl_Help_ViewPtr) -> t.CUInt32T
extern def Fl_Help_View_set_color(self: Fl_Help_ViewPtr, color: t.CUInt32T)
extern def Fl_Help_View_measure_label(self: Fl_Help_ViewPtr, a1: bytes, a2: bytes)
extern def Fl_Help_View_label_color(self: Fl_Help_ViewPtr) -> t.CUInt32T
extern def Fl_Help_View_set_label_color(self: Fl_Help_ViewPtr, color: t.CUInt32T)
extern def Fl_Help_View_label_font(self: Fl_Help_ViewPtr) -> int
extern def Fl_Help_View_set_label_font(self: Fl_Help_ViewPtr, font: int)
extern def Fl_Help_View_label_size(self: Fl_Help_ViewPtr) -> int
extern def Fl_Help_View_set_label_size(self: Fl_Help_ViewPtr, sz: int)
extern def Fl_Help_View_label_type(self: Fl_Help_ViewPtr) -> int
extern def Fl_Help_View_set_label_type(self: Fl_Help_ViewPtr, typ: int)
extern def Fl_Help_View_box(self: Fl_Help_ViewPtr) -> int
extern def Fl_Help_View_set_box(self: Fl_Help_ViewPtr, typ: int)
extern def Fl_Help_View_changed(self: Fl_Help_ViewPtr) -> int
extern def Fl_Help_View_set_changed(self: Fl_Help_ViewPtr)
extern def Fl_Help_View_clear_changed(self: Fl_Help_ViewPtr)
extern def Fl_Help_View_align(self: Fl_Help_ViewPtr) -> int
extern def Fl_Help_View_set_align(self: Fl_Help_ViewPtr, typ: int)
extern def Fl_Help_View_delete(self: Fl_Help_ViewPtr)
extern def Fl_Help_View_set_image(self: Fl_Help_ViewPtr, a1: bytes)
extern def Fl_Help_View_handle(self: Fl_Help_ViewPtr, cb: bytes, data: bytes)
extern def Fl_Help_View_handle_event(self: Fl_Help_ViewPtr, event: int) -> int
extern def Fl_Help_View_draw(self: Fl_Help_ViewPtr, cb: bytes, data: bytes)
extern def Fl_Help_View_resize_callback(self: Fl_Help_ViewPtr, cb1: bytes, data: bytes)
extern def Fl_Help_View_set_when(self: Fl_Help_ViewPtr, a1: int)
extern def Fl_Help_View_when(self: Fl_Help_ViewPtr) -> int
extern def Fl_Help_View_image(self: Fl_Help_ViewPtr) -> bytes
extern def Fl_Help_View_parent(self: Fl_Help_ViewPtr) -> bytes
extern def Fl_Help_View_selection_color(self: Fl_Help_ViewPtr) -> t.CUInt32T
extern def Fl_Help_View_set_selection_color(self: Fl_Help_ViewPtr, color: t.CUInt32T)
extern def Fl_Help_View_do_callback(self: Fl_Help_ViewPtr)
extern def Fl_Help_View_inside(self: Fl_Help_ViewPtr, a1: bytes) -> int
extern def Fl_Help_View_window(self: Fl_Help_ViewPtr) -> bytes
extern def Fl_Help_View_top_window(self: Fl_Help_ViewPtr) -> bytes
extern def Fl_Help_View_takes_events(self: Fl_Help_ViewPtr) -> int
extern def Fl_Help_View_user_data(self: Fl_Help_ViewPtr) -> bytes
extern def Fl_Help_View_take_focus(self: Fl_Help_ViewPtr) -> int
extern def Fl_Help_View_set_visible_focus(self: Fl_Help_ViewPtr)
extern def Fl_Help_View_clear_visible_focus(self: Fl_Help_ViewPtr)
extern def Fl_Help_View_visible_focus(self: Fl_Help_ViewPtr, v: int)
extern def Fl_Help_View_has_visible_focus(self: Fl_Help_ViewPtr) -> t.CUInt32T
extern def Fl_Help_View_set_user_data(self: Fl_Help_ViewPtr, data: bytes)
extern def Fl_Help_View_draw_data(self: Fl_Help_ViewPtr) -> bytes
extern def Fl_Help_View_handle_data(self: Fl_Help_ViewPtr) -> bytes
extern def Fl_Help_View_set_draw_data(self: Fl_Help_ViewPtr, data: bytes)
extern def Fl_Help_View_set_handle_data(self: Fl_Help_ViewPtr, data: bytes)
extern def Fl_Help_View_damage(self: Fl_Help_ViewPtr) -> t.CUInt8T
extern def Fl_Help_View_set_damage(self: Fl_Help_ViewPtr, flag: t.CUInt8T)
extern def Fl_Help_View_set_damage_area(self: Fl_Help_ViewPtr, flag: t.CUInt8T, x: int, y: int, w: int, h: int)
extern def Fl_Help_View_clear_damage(self: Fl_Help_ViewPtr)
extern def Fl_Help_View_as_window(self: Fl_Help_ViewPtr) -> bytes
extern def Fl_Help_View_as_group(self: Fl_Help_ViewPtr) -> bytes
extern def Fl_Help_View_set_deimage(self: Fl_Help_ViewPtr, a1: bytes)
extern def Fl_Help_View_deimage(self: Fl_Help_ViewPtr) -> bytes
extern def Fl_Help_View_set_callback(self: Fl_Help_ViewPtr, a1: bytes, a2: bytes)
extern def Fl_Help_View_visible(self: Fl_Help_ViewPtr) -> int
extern def Fl_Help_View_visible_r(self: Fl_Help_ViewPtr) -> int
extern def Fl_Help_View_active(self: Fl_Help_ViewPtr) -> t.CUInt32T
extern def Fl_Help_View_active_r(self: Fl_Help_ViewPtr) -> int
extern def Fl_Help_View_callback(self: Fl_Help_ViewPtr) -> bytes
extern def Fl_Help_View_set_deletion_callback(self: Fl_Help_ViewPtr, cb1: bytes, data: bytes)
extern def Fl_Help_View_from_dyn_ptr(ptr: Fl_WidgetPtr) -> Fl_Help_ViewPtr
extern def Fl_Help_View_from_derived_dyn_ptr(ptr: Fl_WidgetPtr) -> Fl_Help_ViewPtr
extern def Fl_Help_View_super_draw(ptr: Fl_WidgetPtr, flag: int)
extern def Fl_Help_View_super_draw_first(ptr: Fl_WidgetPtr, flag: int)
extern def Fl_Help_View_super_handle_first(ptr: Fl_WidgetPtr, flag: int)
# ----- Fl_Input_Choice (widget_declare) -----
extern def Fl_Input_Choice_new(x: int, y: int, width: int, height: int, title: str) -> Fl_Input_ChoicePtr
extern def Fl_Input_Choice_x(self: Fl_Input_ChoicePtr) -> int
extern def Fl_Input_Choice_y(self: Fl_Input_ChoicePtr) -> int
extern def Fl_Input_Choice_width(self: Fl_Input_ChoicePtr) -> int
extern def Fl_Input_Choice_height(self: Fl_Input_ChoicePtr) -> int
extern def Fl_Input_Choice_label(self: Fl_Input_ChoicePtr) -> str
extern def Fl_Input_Choice_set_label(self: Fl_Input_ChoicePtr, title: str)
extern def Fl_Input_Choice_redraw(self: Fl_Input_ChoicePtr)
extern def Fl_Input_Choice_show(self: Fl_Input_ChoicePtr)
extern def Fl_Input_Choice_hide(self: Fl_Input_ChoicePtr)
extern def Fl_Input_Choice_activate(self: Fl_Input_ChoicePtr)
extern def Fl_Input_Choice_deactivate(self: Fl_Input_ChoicePtr)
extern def Fl_Input_Choice_redraw_label(self: Fl_Input_ChoicePtr)
extern def Fl_Input_Choice_resize(self: Fl_Input_ChoicePtr, x: int, y: int, width: int, height: int)
extern def Fl_Input_Choice_widget_resize(self: Fl_Input_ChoicePtr, x: int, y: int, width: int, height: int)
extern def Fl_Input_Choice_tooltip(self: Fl_Input_ChoicePtr) -> str
extern def Fl_Input_Choice_set_tooltip(self: Fl_Input_ChoicePtr, txt: str)
extern def Fl_Input_Choice_get_type(self: Fl_Input_ChoicePtr) -> int
extern def Fl_Input_Choice_set_type(self: Fl_Input_ChoicePtr, typ: int)
extern def Fl_Input_Choice_color(self: Fl_Input_ChoicePtr) -> t.CUInt32T
extern def Fl_Input_Choice_set_color(self: Fl_Input_ChoicePtr, color: t.CUInt32T)
extern def Fl_Input_Choice_measure_label(self: Fl_Input_ChoicePtr, a1: bytes, a2: bytes)
extern def Fl_Input_Choice_label_color(self: Fl_Input_ChoicePtr) -> t.CUInt32T
extern def Fl_Input_Choice_set_label_color(self: Fl_Input_ChoicePtr, color: t.CUInt32T)
extern def Fl_Input_Choice_label_font(self: Fl_Input_ChoicePtr) -> int
extern def Fl_Input_Choice_set_label_font(self: Fl_Input_ChoicePtr, font: int)
extern def Fl_Input_Choice_label_size(self: Fl_Input_ChoicePtr) -> int
extern def Fl_Input_Choice_set_label_size(self: Fl_Input_ChoicePtr, sz: int)
extern def Fl_Input_Choice_label_type(self: Fl_Input_ChoicePtr) -> int
extern def Fl_Input_Choice_set_label_type(self: Fl_Input_ChoicePtr, typ: int)
extern def Fl_Input_Choice_box(self: Fl_Input_ChoicePtr) -> int
extern def Fl_Input_Choice_set_box(self: Fl_Input_ChoicePtr, typ: int)
extern def Fl_Input_Choice_changed(self: Fl_Input_ChoicePtr) -> int
extern def Fl_Input_Choice_set_changed(self: Fl_Input_ChoicePtr)
extern def Fl_Input_Choice_clear_changed(self: Fl_Input_ChoicePtr)
extern def Fl_Input_Choice_align(self: Fl_Input_ChoicePtr) -> int
extern def Fl_Input_Choice_set_align(self: Fl_Input_ChoicePtr, typ: int)
extern def Fl_Input_Choice_delete(self: Fl_Input_ChoicePtr)
extern def Fl_Input_Choice_set_image(self: Fl_Input_ChoicePtr, a1: bytes)
extern def Fl_Input_Choice_handle(self: Fl_Input_ChoicePtr, cb: bytes, data: bytes)
extern def Fl_Input_Choice_handle_event(self: Fl_Input_ChoicePtr, event: int) -> int
extern def Fl_Input_Choice_draw(self: Fl_Input_ChoicePtr, cb: bytes, data: bytes)
extern def Fl_Input_Choice_resize_callback(self: Fl_Input_ChoicePtr, cb1: bytes, data: bytes)
extern def Fl_Input_Choice_set_when(self: Fl_Input_ChoicePtr, a1: int)
extern def Fl_Input_Choice_when(self: Fl_Input_ChoicePtr) -> int
extern def Fl_Input_Choice_image(self: Fl_Input_ChoicePtr) -> bytes
extern def Fl_Input_Choice_parent(self: Fl_Input_ChoicePtr) -> bytes
extern def Fl_Input_Choice_selection_color(self: Fl_Input_ChoicePtr) -> t.CUInt32T
extern def Fl_Input_Choice_set_selection_color(self: Fl_Input_ChoicePtr, color: t.CUInt32T)
extern def Fl_Input_Choice_do_callback(self: Fl_Input_ChoicePtr)
extern def Fl_Input_Choice_inside(self: Fl_Input_ChoicePtr, a1: bytes) -> int
extern def Fl_Input_Choice_window(self: Fl_Input_ChoicePtr) -> bytes
extern def Fl_Input_Choice_top_window(self: Fl_Input_ChoicePtr) -> bytes
extern def Fl_Input_Choice_takes_events(self: Fl_Input_ChoicePtr) -> int
extern def Fl_Input_Choice_user_data(self: Fl_Input_ChoicePtr) -> bytes
extern def Fl_Input_Choice_take_focus(self: Fl_Input_ChoicePtr) -> int
extern def Fl_Input_Choice_set_visible_focus(self: Fl_Input_ChoicePtr)
extern def Fl_Input_Choice_clear_visible_focus(self: Fl_Input_ChoicePtr)
extern def Fl_Input_Choice_visible_focus(self: Fl_Input_ChoicePtr, v: int)
extern def Fl_Input_Choice_has_visible_focus(self: Fl_Input_ChoicePtr) -> t.CUInt32T
extern def Fl_Input_Choice_set_user_data(self: Fl_Input_ChoicePtr, data: bytes)
extern def Fl_Input_Choice_draw_data(self: Fl_Input_ChoicePtr) -> bytes
extern def Fl_Input_Choice_handle_data(self: Fl_Input_ChoicePtr) -> bytes
extern def Fl_Input_Choice_set_draw_data(self: Fl_Input_ChoicePtr, data: bytes)
extern def Fl_Input_Choice_set_handle_data(self: Fl_Input_ChoicePtr, data: bytes)
extern def Fl_Input_Choice_damage(self: Fl_Input_ChoicePtr) -> t.CUInt8T
extern def Fl_Input_Choice_set_damage(self: Fl_Input_ChoicePtr, flag: t.CUInt8T)
extern def Fl_Input_Choice_set_damage_area(self: Fl_Input_ChoicePtr, flag: t.CUInt8T, x: int, y: int, w: int, h: int)
extern def Fl_Input_Choice_clear_damage(self: Fl_Input_ChoicePtr)
extern def Fl_Input_Choice_as_window(self: Fl_Input_ChoicePtr) -> bytes
extern def Fl_Input_Choice_as_group(self: Fl_Input_ChoicePtr) -> bytes
extern def Fl_Input_Choice_set_deimage(self: Fl_Input_ChoicePtr, a1: bytes)
extern def Fl_Input_Choice_deimage(self: Fl_Input_ChoicePtr) -> bytes
extern def Fl_Input_Choice_set_callback(self: Fl_Input_ChoicePtr, a1: bytes, a2: bytes)
extern def Fl_Input_Choice_visible(self: Fl_Input_ChoicePtr) -> int
extern def Fl_Input_Choice_visible_r(self: Fl_Input_ChoicePtr) -> int
extern def Fl_Input_Choice_active(self: Fl_Input_ChoicePtr) -> t.CUInt32T
extern def Fl_Input_Choice_active_r(self: Fl_Input_ChoicePtr) -> int
extern def Fl_Input_Choice_callback(self: Fl_Input_ChoicePtr) -> bytes
extern def Fl_Input_Choice_set_deletion_callback(self: Fl_Input_ChoicePtr, cb1: bytes, data: bytes)
extern def Fl_Input_Choice_from_dyn_ptr(ptr: Fl_WidgetPtr) -> Fl_Input_ChoicePtr
extern def Fl_Input_Choice_from_derived_dyn_ptr(ptr: Fl_WidgetPtr) -> Fl_Input_ChoicePtr
extern def Fl_Input_Choice_super_draw(ptr: Fl_WidgetPtr, flag: int)
extern def Fl_Input_Choice_super_draw_first(ptr: Fl_WidgetPtr, flag: int)
extern def Fl_Input_Choice_super_handle_first(ptr: Fl_WidgetPtr, flag: int)
extern def Fl_Spinner_minimum(a0: Fl_SpinnerPtr) -> t.CDouble
extern def Fl_Spinner_set_minimum(a0: Fl_SpinnerPtr, a: t.CDouble)
extern def Fl_Spinner_maximum(a0: Fl_SpinnerPtr) -> t.CDouble
extern def Fl_Spinner_set_maximum(a0: Fl_SpinnerPtr, a: t.CDouble)
extern def Fl_Spinner_set_range(a0: Fl_SpinnerPtr, a: t.CDouble, b: t.CDouble)
extern def Fl_Spinner_set_step(a0: Fl_SpinnerPtr, a: t.CDouble)
extern def Fl_Spinner_step(a0: Fl_SpinnerPtr) -> t.CDouble
extern def Fl_Spinner_maxsize(self: Fl_SpinnerPtr) -> int
extern def Fl_Spinner_set_maxsize(self: Fl_SpinnerPtr, m: int)
extern def Fl_Spinner_text_font(self: Fl_SpinnerPtr) -> int
extern def Fl_Spinner_set_text_font(self: Fl_SpinnerPtr, s: int)
extern def Fl_Spinner_text_size(self: Fl_SpinnerPtr) -> int
extern def Fl_Spinner_set_text_size(self: Fl_SpinnerPtr, s: int)
extern def Fl_Spinner_text_color(self: Fl_SpinnerPtr) -> t.CUInt32T
extern def Fl_Spinner_set_text_color(self: Fl_SpinnerPtr, n: t.CUInt32T)
extern def Fl_Spinner_value(a0: Fl_SpinnerPtr) -> t.CDouble
extern def Fl_Spinner_set_value(a0: Fl_SpinnerPtr, a1: t.CDouble)
extern def Fl_Spinner_set_wrap(self: Fl_SpinnerPtr, flag: int)
extern def Fl_Spinner_wrap(self: Fl_SpinnerPtr) -> int
extern def Fl_Chart_clear(self: Fl_ChartPtr)
extern def Fl_Chart_add(self: Fl_ChartPtr, val: t.CDouble, str_: str, col: bytes)
extern def Fl_Chart_insert(self: Fl_ChartPtr, ind: int, val: t.CDouble, str_: str, col: bytes)
extern def Fl_Chart_replace(self: Fl_ChartPtr, ind: int, val: t.CDouble, str_: str, col: bytes)
extern def Fl_Chart_set_bounds(self: Fl_ChartPtr, a: t.CDouble, b: t.CDouble)
extern def Fl_Chart_size(self: Fl_ChartPtr) -> int
extern def Fl_Chart_maxsize(self: Fl_ChartPtr) -> int
extern def Fl_Chart_set_maxsize(self: Fl_ChartPtr, m: int)
extern def Fl_Chart_text_font(self: Fl_ChartPtr) -> int
extern def Fl_Chart_set_text_font(self: Fl_ChartPtr, s: int)
extern def Fl_Chart_text_size(self: Fl_ChartPtr) -> int
extern def Fl_Chart_set_text_size(self: Fl_ChartPtr, s: int)
extern def Fl_Chart_text_color(self: Fl_ChartPtr) -> t.CUInt32T
extern def Fl_Chart_set_text_color(self: Fl_ChartPtr, n: t.CUInt32T)
extern def Fl_Chart_is_autosize(self: Fl_ChartPtr) -> int
extern def Fl_Chart_make_autosize(self: Fl_ChartPtr, n: int)
extern def Fl_Chart_bounds(self: Fl_ChartPtr, a: bytes, b: bytes)
extern def Fl_Progress_minimum(a0: Fl_ProgressPtr) -> t.CDouble
extern def Fl_Progress_set_minimum(a0: Fl_ProgressPtr, a: t.CDouble)
extern def Fl_Progress_maximum(a0: Fl_ProgressPtr) -> t.CDouble
extern def Fl_Progress_set_maximum(a0: Fl_ProgressPtr, a: t.CDouble)
extern def Fl_Progress_value(a0: Fl_ProgressPtr) -> t.CDouble
extern def Fl_Progress_set_value(a0: Fl_ProgressPtr, a1: t.CDouble)
extern def Fl_Tooltip_delay() -> t.CFloat
extern def Fl_Tooltip_set_delay(f: t.CFloat)
extern def Fl_Tooltip_hidedelay() -> t.CFloat
extern def Fl_Tooltip_set_hidedelay(f: t.CFloat)
extern def Fl_Tooltip_hoverdelay() -> t.CFloat
extern def Fl_Tooltip_set_hoverdelay(f: t.CFloat)
extern def Fl_Tooltip_enabled() -> int
extern def Fl_Tooltip_enable(b: int)
extern def Fl_Tooltip_disable()
extern def void(cb0: bytes) -> bytes
extern def Fl_Tooltip_enter_area(w: Fl_WidgetPtr, X: int, Y: int, W: int, H: int, tip: str)
extern def void(cb0: bytes) -> bytes
extern def Fl_Tooltip_current_widget() -> bytes
extern def Fl_Tooltip_current(a0: Fl_WidgetPtr)
extern def Fl_Tooltip_font() -> int
extern def Fl_Tooltip_set_font(i: int)
extern def Fl_Tooltip_font_size() -> int
extern def Fl_Tooltip_set_font_size(s: int)
extern def Fl_Tooltip_color() -> int
extern def Fl_Tooltip_set_color(c: t.CUInt32T)
extern def Fl_Tooltip_text_color() -> int
extern def Fl_Tooltip_set_text_color(c: t.CUInt32T)
extern def Fl_Tooltip_margin_width() -> int
extern def Fl_Tooltip_set_margin_width(v: int)
extern def Fl_Tooltip_margin_height() -> int
extern def Fl_Tooltip_set_margin_height(v: int)
extern def Fl_Tooltip_wrap_width() -> int
extern def Fl_Tooltip_set_wrap_width(v: int)
extern def Fl_Tooltip_current_window() -> bytes
extern def Fl_Help_View_directory(self: Fl_Help_ViewPtr) -> str
extern def Fl_Help_View_filename(self: Fl_Help_ViewPtr) -> str
extern def Fl_Help_View_find(self: Fl_Help_ViewPtr, s: str, p: int) -> int
extern def Fl_Help_View_value(self: Fl_Help_ViewPtr) -> str
extern def Fl_Help_View_set_value(self: Fl_Help_ViewPtr, val: str)
extern def Fl_Help_View_clear_selection(self: Fl_Help_ViewPtr)
extern def Fl_Help_View_select_all(self: Fl_Help_ViewPtr)
extern def Fl_Help_View_set_topline_str(self: Fl_Help_ViewPtr, n: str)
extern def Fl_Help_View_set_topline(self: Fl_Help_ViewPtr, a1: int)
extern def Fl_Help_View_topline(self: Fl_Help_ViewPtr) -> int
extern def Fl_Help_View_set_leftline(self: Fl_Help_ViewPtr, a1: int)
extern def Fl_Help_View_leftline(self: Fl_Help_ViewPtr) -> int
extern def Fl_Help_View_set_text_color(self: Fl_Help_ViewPtr, c: t.CUInt32T)
extern def Fl_Help_View_text_color(self: Fl_Help_ViewPtr) -> t.CUInt32T
extern def Fl_Help_View_set_text_font(self: Fl_Help_ViewPtr, f: int)
extern def Fl_Help_View_text_font(self: Fl_Help_ViewPtr) -> int
extern def Fl_Help_View_set_text_size(self: Fl_Help_ViewPtr, s: int)
extern def Fl_Help_View_text_size(self: Fl_Help_ViewPtr) -> int
extern def Fl_Help_View_scrollbar_size(self: Fl_Help_ViewPtr) -> int
extern def Fl_Help_View_set_scrollbar_size(self: Fl_Help_ViewPtr, newSize: int)
extern def Fl_Help_View_load(self: Fl_Help_ViewPtr, f: str) -> int
extern def Fl_Input_Choice_set_down_box(self: Fl_Input_ChoicePtr, box: int)
extern def Fl_Input_Choice_down_box(self: Fl_Input_ChoicePtr) -> int
extern def Fl_Input_Choice_add(self: Fl_Input_ChoicePtr, s: str)
extern def Fl_Input_Choice_clear(self: Fl_Input_ChoicePtr)
extern def Fl_Input_Choice_value(self: Fl_Input_ChoicePtr) -> str
extern def Fl_Input_Choice_value_index(self: Fl_Input_ChoicePtr) -> int
extern def Fl_Input_Choice_set_value(self: Fl_Input_ChoicePtr, val: str)
extern def Fl_Input_Choice_set_value_index(self: Fl_Input_ChoicePtr, val: int)
extern def Fl_Input_Choice_input(self: Fl_Input_ChoicePtr) -> bytes
extern def Fl_Input_Choice_menu_button(self: Fl_Input_ChoicePtr) -> bytes
extern def Fl_Input_Choice_set_text_color(self: Fl_Input_ChoicePtr, c: t.CUInt32T)
extern def Fl_Input_Choice_text_color(self: Fl_Input_ChoicePtr) -> t.CUInt32T
extern def Fl_Input_Choice_set_text_font(self: Fl_Input_ChoicePtr, f: int)
extern def Fl_Input_Choice_text_font(self: Fl_Input_ChoicePtr) -> int
extern def Fl_Input_Choice_set_text_size(self: Fl_Input_ChoicePtr, s: int)
extern def Fl_Input_Choice_text_size(self: Fl_Input_ChoicePtr) -> int
+51
View File
@@ -0,0 +1,51 @@
import t, c
from fltk._types import *
# ============================================================
# fltk/_cfl_prefs.vp — cfl_prefs.h 的 extern FFI 声明(对接 cfltk C API)
# ============================================================
# 所有函数直接对应 cfltk 生成的 C 符号(extern "C"),链接目标: cfltk2。
# 类型约定: Fl_* 对象均为不透明指针 (Fl_XxxPtr);const char* → str;
# 函数指针/void* → bytes(Viper 端传 0/NULL 或不使用)。
extern def Fl_Preferences_set_file_access(flags: t.CUInt32T)
extern def Fl_Preferences_file_access() -> t.CUInt32T
extern def Fl_Preferences_remove(id_: bytes) -> t.CChar
extern def Fl_Preferences_new(root: int, vendor: str, application: str) -> Fl_PreferencesPtr
extern def Fl_Preferences_from_path(path: str, vendor: str, application: str) -> Fl_PreferencesPtr
extern def Fl_Preferences_from_parent_group(parent: Fl_PreferencesPtr, group: str) -> Fl_PreferencesPtr
extern def Fl_Preferences_from_parent_idx(parent: Fl_PreferencesPtr, groupIndex: int) -> Fl_PreferencesPtr
extern def Fl_Preferences_copy(a0: Fl_PreferencesPtr) -> Fl_PreferencesPtr
extern def Fl_Preferences_delete(a0: Fl_PreferencesPtr)
extern def Fl_Preferences_from_id(id: bytes) -> Fl_PreferencesPtr
extern def Fl_Preferences_filename(prefs: Fl_PreferencesPtr, buffer: str, buffer_size: t.CUInt32T) -> int
extern def Fl_Preferences_get_userdata_path(prefs: Fl_PreferencesPtr, path: str, pathlen: int) -> t.CChar
extern def Fl_Preferences_id(prefs: Fl_PreferencesPtr) -> bytes
extern def Fl_Preferences_name(prefs: Fl_PreferencesPtr) -> str
extern def Fl_Preferences_path(prefs: Fl_PreferencesPtr) -> str
extern def Fl_Preferences_groups(prefs: Fl_PreferencesPtr) -> int
extern def Fl_Preferences_group(prefs: Fl_PreferencesPtr, num_group: int) -> str
extern def Fl_Preferences_group_exists(prefs: Fl_PreferencesPtr, key: str) -> t.CChar
extern def Fl_Preferences_delete_group(prefs: Fl_PreferencesPtr, group: str) -> t.CChar
extern def Fl_Preferences_delete_all_groups(prefs: Fl_PreferencesPtr) -> t.CChar
extern def Fl_Preferences_entries(prefs: Fl_PreferencesPtr) -> int
extern def Fl_Preferences_entry(prefs: Fl_PreferencesPtr, index: int) -> str
extern def Fl_Preferences_entry_exists(prefs: Fl_PreferencesPtr, key: str) -> t.CChar
extern def Fl_Preferences_delete_entry(prefs: Fl_PreferencesPtr, entry: str) -> t.CChar
extern def Fl_Preferences_delete_all_entries(prefs: Fl_PreferencesPtr) -> t.CChar
extern def Fl_Preferences_clear(prefs: Fl_PreferencesPtr) -> t.CChar
extern def Fl_Preferences_seti(prefs: Fl_PreferencesPtr, entry: str, value: int) -> t.CChar
extern def Fl_Preferences_setf(prefs: Fl_PreferencesPtr, entry: str, value: t.CFloat) -> t.CChar
extern def Fl_Preferences_setfp(prefs: Fl_PreferencesPtr, entry: str, value: t.CFloat, precision: int) -> t.CChar
extern def Fl_Preferences_setd(prefs: Fl_PreferencesPtr, entry: str, value: t.CDouble) -> t.CChar
extern def Fl_Preferences_setdp(prefs: Fl_PreferencesPtr, entry: str, value: t.CDouble, precision: int) -> t.CChar
extern def Fl_Preferences_sets(prefs: Fl_PreferencesPtr, entry: str, value: str) -> t.CChar
extern def Fl_Preferences_setv(prefs: Fl_PreferencesPtr, entry: str, value: bytes, size: int) -> t.CChar
extern def Fl_Preferences_geti(prefs: Fl_PreferencesPtr, entry: str, value: bytes, defaultValue: int) -> t.CChar
extern def Fl_Preferences_getf(prefs: Fl_PreferencesPtr, entry: str, value: bytes, defaultValue: t.CFloat) -> t.CChar
extern def Fl_Preferences_getd(prefs: Fl_PreferencesPtr, entry: str, value: bytes, defaultValue: t.CDouble) -> t.CChar
extern def Fl_Preferences_gets(prefs: Fl_PreferencesPtr, entry: str, value: str, defaultValue: str, maxSize: int) -> t.CChar
extern def Fl_Preferences_getv(prefs: Fl_PreferencesPtr, entry: str, value: bytes, defaultValue: bytes, defaultSize: int, maxSize: int) -> t.CChar
extern def Fl_Preferences_getv2(prefs: Fl_PreferencesPtr, entry: str, value: bytes, defaultValue: bytes, defaultSize: int, size: bytes) -> t.CChar
extern def Fl_Preferences_size(prefs: Fl_PreferencesPtr, entry: str) -> int
+48
View File
@@ -0,0 +1,48 @@
import t, c
from fltk._types import *
# ============================================================
# fltk/_cfl_printer.vp — cfl_printer.h 的 extern FFI 声明(对接 cfltk C API)
# ============================================================
# 所有函数直接对应 cfltk 生成的 C 符号(extern "C"),链接目标: cfltk2。
# 类型约定: Fl_* 对象均为不透明指针 (Fl_XxxPtr);const char* → str;
# 函数指针/void* → bytes(Viper 端传 0/NULL 或不使用)。
extern def Fl_Printer_new() -> Fl_PrinterPtr
extern def Fl_Printer_delete(self: Fl_PrinterPtr)
extern def Fl_Printer_begin_job(self: Fl_PrinterPtr, pagecount: int, frompage: bytes, topage: bytes, perr_message: bytes) -> int
extern def Fl_Printer_begin_page(self: Fl_PrinterPtr) -> int
extern def Fl_Printer_printable_rect(self: Fl_PrinterPtr, w: bytes, h: bytes) -> int
extern def Fl_Printer_margins(self: Fl_PrinterPtr, left: bytes, top: bytes, right: bytes, bottom: bytes)
extern def Fl_Printer_origin(self: Fl_PrinterPtr, x: bytes, y: bytes)
extern def Fl_Printer_set_origin(self: Fl_PrinterPtr, x: int, y: int)
extern def Fl_Printer_scale(self: Fl_PrinterPtr, scale_x: t.CFloat, scale_y: t.CFloat)
extern def Fl_Printer_rotate(self: Fl_PrinterPtr, angle: t.CFloat)
extern def Fl_Printer_translate(self: Fl_PrinterPtr, x: int, y: int)
extern def Fl_Printer_untranslate(self: Fl_PrinterPtr)
extern def Fl_Printer_end_page(self: Fl_PrinterPtr) -> int
extern def Fl_Printer_end_job(self: Fl_PrinterPtr)
extern def Fl_Printer_set_current(self: Fl_PrinterPtr)
extern def Fl_Printer_is_current(self: Fl_PrinterPtr) -> int
extern def Fl_Printer_print_widget(self: Fl_PrinterPtr, widget: bytes, delta_x: int, delta_y: int)
extern def Fl_Printer_print_window(self: Fl_PrinterPtr, win: bytes, x_offset: int, y_offset: int)
extern def Fl_Printer_set_dialog_title(msg: str)
extern def Fl_Printer_set_dialog_printer(msg: str)
extern def Fl_Printer_set_dialog_range(msg: str)
extern def Fl_Printer_set_dialog_copies(msg: str)
extern def Fl_Printer_set_dialog_all(msg: str)
extern def Fl_Printer_set_dialog_pages(msg: str)
extern def Fl_Printer_set_dialog_from(msg: str)
extern def Fl_Printer_set_dialog_to(msg: str)
extern def Fl_Printer_set_dialog_properties(msg: str)
extern def Fl_Printer_set_dialog_copyNo(msg: str)
extern def Fl_Printer_set_dialog_print_button(msg: str)
extern def Fl_Printer_set_dialog_cancel_button(msg: str)
extern def Fl_Printer_set_dialog_print_to_file(msg: str)
extern def Fl_Printer_set_property_title(msg: str)
extern def Fl_Printer_set_property_pagesize(msg: str)
extern def Fl_Printer_set_property_mode(msg: str)
extern def Fl_Printer_set_property_use(msg: str)
extern def Fl_Printer_set_property_save(msg: str)
extern def Fl_Printer_set_property_cancel(msg: str)
+33
View File
@@ -0,0 +1,33 @@
import t, c
from fltk._types import *
# ============================================================
# fltk/_cfl_surface.vp — cfl_surface.h 的 extern FFI 声明(对接 cfltk C API)
# ============================================================
# 所有函数直接对应 cfltk 生成的 C 符号(extern "C"),链接目标: cfltk2。
# 类型约定: Fl_* 对象均为不透明指针 (Fl_XxxPtr);const char* → str;
# 函数指针/void* → bytes(Viper 端传 0/NULL 或不使用)。
extern def Fl_Surface_Device_set_current(self: Fl_Surface_DevicePtr)
extern def Fl_Surface_Device_is_current(self: Fl_Surface_DevicePtr) -> int
extern def Fl_Surface_Device_surface() -> Fl_Surface_DevicePtr
extern def Fl_Surface_Device_push_current(new_current: Fl_Surface_DevicePtr)
extern def Fl_Surface_Device_pop_current() -> Fl_Surface_DevicePtr
extern def Fl_Image_Surface_new(w: int, h: int, high_res: int) -> Fl_Image_SurfacePtr
extern def Fl_Image_Surface_delete(s: Fl_Image_SurfacePtr)
extern def Fl_Image_Surface_set_current(self: Fl_Image_SurfacePtr)
extern def Fl_Image_Surface_is_current(self: Fl_Image_SurfacePtr) -> int
extern def Fl_Image_Surface_image(self: Fl_Image_SurfacePtr) -> bytes
extern def Fl_Image_Surface_highres_image(self: Fl_Image_SurfacePtr) -> bytes
extern def Fl_Image_Surface_origin(self: Fl_Image_SurfacePtr, x: bytes, y: bytes)
extern def Fl_Image_Surface_set_origin(self: Fl_Image_SurfacePtr, x: int, y: int)
extern def Fl_Image_Surface_rescale(self: Fl_Image_SurfacePtr)
extern def Fl_Image_Surface_draw(self: Fl_Image_SurfacePtr, widget: bytes, delta_x: int, delta_y: int)
extern def Fl_Image_Surface_draw_decorated_window(self: Fl_Image_SurfacePtr, widget: bytes, delta_x: int, delta_y: int)
extern def Fl_SVG_File_Surface_new(width: int, height: int, file: str) -> Fl_SVG_File_SurfacePtr
extern def Fl_SVG_File_Surface_delete(self: Fl_SVG_File_SurfacePtr)
extern def Fl_SVG_File_Surface_origin(self: Fl_SVG_File_SurfacePtr, x: int, y: int)
extern def Fl_SVG_File_Surface_printable_rect(self: Fl_SVG_File_SurfacePtr, w: bytes, h: bytes) -> int
extern def Fl_SVG_File_Surface_draw(self: Fl_SVG_File_SurfacePtr, widget: bytes, delta_x: int, delta_y: int)
extern def Fl_SVG_File_Surface_draw_decorated_window(self: Fl_SVG_File_SurfacePtr, widget: bytes, delta_x: int, delta_y: int)
+353
View File
@@ -0,0 +1,353 @@
import t, c
from fltk._types import *
# ============================================================
# fltk/_cfl_table.vp — cfl_table.h 的 extern FFI 声明(对接 cfltk C API)
# ============================================================
# 所有函数直接对应 cfltk 生成的 C 符号(extern "C"),链接目标: cfltk2。
# 类型约定: Fl_* 对象均为不透明指针 (Fl_XxxPtr);const char* → str;
# 函数指针/void* → bytes(Viper 端传 0/NULL 或不使用)。
# ----- Fl_Table (widget_declare) -----
extern def Fl_Table_new(x: int, y: int, width: int, height: int, title: str) -> Fl_TablePtr
extern def Fl_Table_x(self: Fl_TablePtr) -> int
extern def Fl_Table_y(self: Fl_TablePtr) -> int
extern def Fl_Table_width(self: Fl_TablePtr) -> int
extern def Fl_Table_height(self: Fl_TablePtr) -> int
extern def Fl_Table_label(self: Fl_TablePtr) -> str
extern def Fl_Table_set_label(self: Fl_TablePtr, title: str)
extern def Fl_Table_redraw(self: Fl_TablePtr)
extern def Fl_Table_show(self: Fl_TablePtr)
extern def Fl_Table_hide(self: Fl_TablePtr)
extern def Fl_Table_activate(self: Fl_TablePtr)
extern def Fl_Table_deactivate(self: Fl_TablePtr)
extern def Fl_Table_redraw_label(self: Fl_TablePtr)
extern def Fl_Table_resize(self: Fl_TablePtr, x: int, y: int, width: int, height: int)
extern def Fl_Table_widget_resize(self: Fl_TablePtr, x: int, y: int, width: int, height: int)
extern def Fl_Table_tooltip(self: Fl_TablePtr) -> str
extern def Fl_Table_set_tooltip(self: Fl_TablePtr, txt: str)
extern def Fl_Table_get_type(self: Fl_TablePtr) -> int
extern def Fl_Table_set_type(self: Fl_TablePtr, typ: int)
extern def Fl_Table_color(self: Fl_TablePtr) -> t.CUInt32T
extern def Fl_Table_set_color(self: Fl_TablePtr, color: t.CUInt32T)
extern def Fl_Table_measure_label(self: Fl_TablePtr, a1: bytes, a2: bytes)
extern def Fl_Table_label_color(self: Fl_TablePtr) -> t.CUInt32T
extern def Fl_Table_set_label_color(self: Fl_TablePtr, color: t.CUInt32T)
extern def Fl_Table_label_font(self: Fl_TablePtr) -> int
extern def Fl_Table_set_label_font(self: Fl_TablePtr, font: int)
extern def Fl_Table_label_size(self: Fl_TablePtr) -> int
extern def Fl_Table_set_label_size(self: Fl_TablePtr, sz: int)
extern def Fl_Table_label_type(self: Fl_TablePtr) -> int
extern def Fl_Table_set_label_type(self: Fl_TablePtr, typ: int)
extern def Fl_Table_box(self: Fl_TablePtr) -> int
extern def Fl_Table_set_box(self: Fl_TablePtr, typ: int)
extern def Fl_Table_changed(self: Fl_TablePtr) -> int
extern def Fl_Table_set_changed(self: Fl_TablePtr)
extern def Fl_Table_clear_changed(self: Fl_TablePtr)
extern def Fl_Table_align(self: Fl_TablePtr) -> int
extern def Fl_Table_set_align(self: Fl_TablePtr, typ: int)
extern def Fl_Table_delete(self: Fl_TablePtr)
extern def Fl_Table_set_image(self: Fl_TablePtr, a1: bytes)
extern def Fl_Table_handle(self: Fl_TablePtr, cb: bytes, data: bytes)
extern def Fl_Table_handle_event(self: Fl_TablePtr, event: int) -> int
extern def Fl_Table_draw(self: Fl_TablePtr, cb: bytes, data: bytes)
extern def Fl_Table_resize_callback(self: Fl_TablePtr, cb1: bytes, data: bytes)
extern def Fl_Table_set_when(self: Fl_TablePtr, a1: int)
extern def Fl_Table_when(self: Fl_TablePtr) -> int
extern def Fl_Table_image(self: Fl_TablePtr) -> bytes
extern def Fl_Table_parent(self: Fl_TablePtr) -> bytes
extern def Fl_Table_selection_color(self: Fl_TablePtr) -> t.CUInt32T
extern def Fl_Table_set_selection_color(self: Fl_TablePtr, color: t.CUInt32T)
extern def Fl_Table_do_callback(self: Fl_TablePtr)
extern def Fl_Table_inside(self: Fl_TablePtr, a1: bytes) -> int
extern def Fl_Table_window(self: Fl_TablePtr) -> bytes
extern def Fl_Table_top_window(self: Fl_TablePtr) -> bytes
extern def Fl_Table_takes_events(self: Fl_TablePtr) -> int
extern def Fl_Table_user_data(self: Fl_TablePtr) -> bytes
extern def Fl_Table_take_focus(self: Fl_TablePtr) -> int
extern def Fl_Table_set_visible_focus(self: Fl_TablePtr)
extern def Fl_Table_clear_visible_focus(self: Fl_TablePtr)
extern def Fl_Table_visible_focus(self: Fl_TablePtr, v: int)
extern def Fl_Table_has_visible_focus(self: Fl_TablePtr) -> t.CUInt32T
extern def Fl_Table_set_user_data(self: Fl_TablePtr, data: bytes)
extern def Fl_Table_draw_data(self: Fl_TablePtr) -> bytes
extern def Fl_Table_handle_data(self: Fl_TablePtr) -> bytes
extern def Fl_Table_set_draw_data(self: Fl_TablePtr, data: bytes)
extern def Fl_Table_set_handle_data(self: Fl_TablePtr, data: bytes)
extern def Fl_Table_damage(self: Fl_TablePtr) -> t.CUInt8T
extern def Fl_Table_set_damage(self: Fl_TablePtr, flag: t.CUInt8T)
extern def Fl_Table_set_damage_area(self: Fl_TablePtr, flag: t.CUInt8T, x: int, y: int, w: int, h: int)
extern def Fl_Table_clear_damage(self: Fl_TablePtr)
extern def Fl_Table_as_window(self: Fl_TablePtr) -> bytes
extern def Fl_Table_as_group(self: Fl_TablePtr) -> bytes
extern def Fl_Table_set_deimage(self: Fl_TablePtr, a1: bytes)
extern def Fl_Table_deimage(self: Fl_TablePtr) -> bytes
extern def Fl_Table_set_callback(self: Fl_TablePtr, a1: bytes, a2: bytes)
extern def Fl_Table_visible(self: Fl_TablePtr) -> int
extern def Fl_Table_visible_r(self: Fl_TablePtr) -> int
extern def Fl_Table_active(self: Fl_TablePtr) -> t.CUInt32T
extern def Fl_Table_active_r(self: Fl_TablePtr) -> int
extern def Fl_Table_callback(self: Fl_TablePtr) -> bytes
extern def Fl_Table_set_deletion_callback(self: Fl_TablePtr, cb1: bytes, data: bytes)
extern def Fl_Table_from_dyn_ptr(ptr: Fl_WidgetPtr) -> Fl_TablePtr
extern def Fl_Table_from_derived_dyn_ptr(ptr: Fl_WidgetPtr) -> Fl_TablePtr
extern def Fl_Table_super_draw(ptr: Fl_WidgetPtr, flag: int)
extern def Fl_Table_super_draw_first(ptr: Fl_WidgetPtr, flag: int)
extern def Fl_Table_super_handle_first(ptr: Fl_WidgetPtr, flag: int)
# ----- Fl_Table (group_declare) -----
extern def Fl_Table_begin(self: Fl_TablePtr)
extern def Fl_Table_end(self: Fl_TablePtr)
extern def Fl_Table_find(self: Fl_TablePtr, a1: bytes) -> int
extern def Fl_Table_add(self: Fl_TablePtr, a1: bytes)
extern def Fl_Table_insert(self: Fl_TablePtr, a1: bytes, pos: int)
extern def Fl_Table_remove(self: Fl_TablePtr, wid: bytes)
extern def Fl_Table_remove_by_index(self: Fl_TablePtr, idx: int)
extern def Fl_Table_clear(self: Fl_TablePtr)
extern def Fl_Table_children(self: Fl_TablePtr) -> int
extern def Fl_Table_child(self: Fl_TablePtr, index: int) -> Fl_WidgetPtr
extern def Fl_Table_resizable(self: Fl_TablePtr, a1: bytes)
extern def Fl_Table_set_clip_children(self: Fl_TablePtr, c: int)
extern def Fl_Table_clip_children(self: Fl_TablePtr) -> int
extern def Fl_Table_init_sizes(self: Fl_TablePtr)
extern def Fl_Table_draw_child(self: Fl_TablePtr, w: Fl_WidgetPtr)
extern def Fl_Table_update_child(self: Fl_TablePtr, w: Fl_WidgetPtr)
extern def Fl_Table_draw_outside_label(self: Fl_TablePtr, w: Fl_WidgetPtr)
extern def Fl_Table_draw_children(self: Fl_TablePtr)
# ----- Fl_Table (table_declare) -----
extern def Fl_Table_set_table_box(self: Fl_TablePtr, val: int)
extern def Fl_Table_table_box(self: Fl_TablePtr) -> int
extern def Fl_Table_set_rows(self: Fl_TablePtr, val: int)
extern def Fl_Table_rows(self: Fl_TablePtr) -> int
extern def Fl_Table_set_cols(self: Fl_TablePtr, val: int)
extern def Fl_Table_cols(self: Fl_TablePtr) -> int
extern def Fl_Table_visible_cells(self: Fl_TablePtr, r1: bytes, r2: bytes, c1: bytes, c2: bytes)
extern def Fl_Table_is_interactive_resize(self: Fl_TablePtr) -> int
extern def Fl_Table_row_resize(self: Fl_TablePtr) -> int
extern def Fl_Table_set_row_resize(self: Fl_TablePtr, flag: int)
extern def Fl_Table_col_resize(self: Fl_TablePtr) -> int
extern def Fl_Table_set_col_resize(self: Fl_TablePtr, flag: int)
extern def Fl_Table_col_resize_min(self: Fl_TablePtr) -> int
extern def Fl_Table_set_col_resize_min(self: Fl_TablePtr, val: int)
extern def Fl_Table_row_resize_min(self: Fl_TablePtr) -> int
extern def Fl_Table_set_row_resize_min(self: Fl_TablePtr, val: int)
extern def Fl_Table_row_header(self: Fl_TablePtr) -> int
extern def Fl_Table_set_row_header(self: Fl_TablePtr, flag: int)
extern def Fl_Table_col_header(self: Fl_TablePtr) -> int
extern def Fl_Table_set_col_header(self: Fl_TablePtr, flag: int)
extern def Fl_Table_set_col_header_height(self: Fl_TablePtr, height: int)
extern def Fl_Table_col_header_height(self: Fl_TablePtr) -> int
extern def Fl_Table_set_row_header_width(self: Fl_TablePtr, width: int)
extern def Fl_Table_row_header_width(self: Fl_TablePtr) -> int
extern def Fl_Table_set_row_header_color(self: Fl_TablePtr, val: t.CUInt32T)
extern def Fl_Table_row_header_color(self: Fl_TablePtr) -> t.CUInt32T
extern def Fl_Table_set_col_header_color(self: Fl_TablePtr, val: t.CUInt32T)
extern def Fl_Table_col_header_color(self: Fl_TablePtr) -> t.CUInt32T
extern def Fl_Table_set_row_height(self: Fl_TablePtr, row: int, height: int)
extern def Fl_Table_row_height(self: Fl_TablePtr, row: int) -> int
extern def Fl_Table_set_col_width(self: Fl_TablePtr, col: int, width: int)
extern def Fl_Table_col_width(self: Fl_TablePtr, col: int) -> int
extern def Fl_Table_set_row_height_all(self: Fl_TablePtr, height: int)
extern def Fl_Table_set_col_width_all(self: Fl_TablePtr, width: int)
extern def Fl_Table_set_row_position(self: Fl_TablePtr, row: int)
extern def Fl_Table_set_col_position(self: Fl_TablePtr, col: int)
extern def Fl_Table_row_position(self: Fl_TablePtr) -> int
extern def Fl_Table_col_position(self: Fl_TablePtr) -> int
extern def Fl_Table_set_top_row(self: Fl_TablePtr, row: int)
extern def Fl_Table_top_row(self: Fl_TablePtr) -> int
extern def Fl_Table_is_selected(self: Fl_TablePtr, r: int, c: int) -> int
extern def Fl_Table_get_selection(self: Fl_TablePtr, row_top: bytes, col_left: bytes, row_bot: bytes, col_right: bytes)
extern def Fl_Table_set_selection(self: Fl_TablePtr, row_top: int, col_left: int, row_bot: int, col_right: int)
extern def Fl_Table_move_cursor_with_shiftselect(self: Fl_TablePtr, R: int, C: int, shiftselect: int) -> int
extern def Fl_Table_move_cursor(self: Fl_TablePtr, R: int, C: int) -> int
extern def Fl_Table_scrollbar_size(self: Fl_TablePtr) -> int
extern def Fl_Table_set_scrollbar_size(self: Fl_TablePtr, newSize: int)
extern def Fl_Table_set_tab_cell_nav(self: Fl_TablePtr, val: int)
extern def Fl_Table_tab_cell_nav(self: Fl_TablePtr) -> int
extern def Fl_Table_draw_cell(self: Fl_TablePtr, cb1: bytes, data: bytes)
extern def Fl_Table_draw_cell_data(self: Fl_TablePtr) -> bytes
extern def Fl_Table_set_draw_cell_data(self: Fl_TablePtr, data: bytes)
extern def Fl_Table_callback_col(self: Fl_TablePtr) -> int
extern def Fl_Table_callback_row(self: Fl_TablePtr) -> int
extern def Fl_Table_callback_context(self: Fl_TablePtr) -> int
extern def Fl_Table_scrollbar(self: Fl_TablePtr) -> bytes
extern def Fl_Table_hscrollbar(self: Fl_TablePtr) -> bytes
extern def Fl_Table_find_cell(self: Fl_TablePtr, ctx: int, r: int, c: int, x: bytes, y: bytes, w: bytes, h: bytes) -> int
extern def Fl_Table_scroll(self: Fl_TablePtr) -> bytes
extern def Fl_Table_cursor2rowcol(self: Fl_TablePtr, r: bytes, c: bytes, flag: bytes) -> int
# ----- Fl_Table_Row (widget_declare) -----
extern def Fl_Table_Row_new(x: int, y: int, width: int, height: int, title: str) -> Fl_Table_RowPtr
extern def Fl_Table_Row_x(self: Fl_Table_RowPtr) -> int
extern def Fl_Table_Row_y(self: Fl_Table_RowPtr) -> int
extern def Fl_Table_Row_width(self: Fl_Table_RowPtr) -> int
extern def Fl_Table_Row_height(self: Fl_Table_RowPtr) -> int
extern def Fl_Table_Row_label(self: Fl_Table_RowPtr) -> str
extern def Fl_Table_Row_set_label(self: Fl_Table_RowPtr, title: str)
extern def Fl_Table_Row_redraw(self: Fl_Table_RowPtr)
extern def Fl_Table_Row_show(self: Fl_Table_RowPtr)
extern def Fl_Table_Row_hide(self: Fl_Table_RowPtr)
extern def Fl_Table_Row_activate(self: Fl_Table_RowPtr)
extern def Fl_Table_Row_deactivate(self: Fl_Table_RowPtr)
extern def Fl_Table_Row_redraw_label(self: Fl_Table_RowPtr)
extern def Fl_Table_Row_resize(self: Fl_Table_RowPtr, x: int, y: int, width: int, height: int)
extern def Fl_Table_Row_widget_resize(self: Fl_Table_RowPtr, x: int, y: int, width: int, height: int)
extern def Fl_Table_Row_tooltip(self: Fl_Table_RowPtr) -> str
extern def Fl_Table_Row_set_tooltip(self: Fl_Table_RowPtr, txt: str)
extern def Fl_Table_Row_get_type(self: Fl_Table_RowPtr) -> int
extern def Fl_Table_Row_set_type(self: Fl_Table_RowPtr, typ: int)
extern def Fl_Table_Row_color(self: Fl_Table_RowPtr) -> t.CUInt32T
extern def Fl_Table_Row_set_color(self: Fl_Table_RowPtr, color: t.CUInt32T)
extern def Fl_Table_Row_measure_label(self: Fl_Table_RowPtr, a1: bytes, a2: bytes)
extern def Fl_Table_Row_label_color(self: Fl_Table_RowPtr) -> t.CUInt32T
extern def Fl_Table_Row_set_label_color(self: Fl_Table_RowPtr, color: t.CUInt32T)
extern def Fl_Table_Row_label_font(self: Fl_Table_RowPtr) -> int
extern def Fl_Table_Row_set_label_font(self: Fl_Table_RowPtr, font: int)
extern def Fl_Table_Row_label_size(self: Fl_Table_RowPtr) -> int
extern def Fl_Table_Row_set_label_size(self: Fl_Table_RowPtr, sz: int)
extern def Fl_Table_Row_label_type(self: Fl_Table_RowPtr) -> int
extern def Fl_Table_Row_set_label_type(self: Fl_Table_RowPtr, typ: int)
extern def Fl_Table_Row_box(self: Fl_Table_RowPtr) -> int
extern def Fl_Table_Row_set_box(self: Fl_Table_RowPtr, typ: int)
extern def Fl_Table_Row_changed(self: Fl_Table_RowPtr) -> int
extern def Fl_Table_Row_set_changed(self: Fl_Table_RowPtr)
extern def Fl_Table_Row_clear_changed(self: Fl_Table_RowPtr)
extern def Fl_Table_Row_align(self: Fl_Table_RowPtr) -> int
extern def Fl_Table_Row_set_align(self: Fl_Table_RowPtr, typ: int)
extern def Fl_Table_Row_delete(self: Fl_Table_RowPtr)
extern def Fl_Table_Row_set_image(self: Fl_Table_RowPtr, a1: bytes)
extern def Fl_Table_Row_handle(self: Fl_Table_RowPtr, cb: bytes, data: bytes)
extern def Fl_Table_Row_handle_event(self: Fl_Table_RowPtr, event: int) -> int
extern def Fl_Table_Row_draw(self: Fl_Table_RowPtr, cb: bytes, data: bytes)
extern def Fl_Table_Row_resize_callback(self: Fl_Table_RowPtr, cb1: bytes, data: bytes)
extern def Fl_Table_Row_set_when(self: Fl_Table_RowPtr, a1: int)
extern def Fl_Table_Row_when(self: Fl_Table_RowPtr) -> int
extern def Fl_Table_Row_image(self: Fl_Table_RowPtr) -> bytes
extern def Fl_Table_Row_parent(self: Fl_Table_RowPtr) -> bytes
extern def Fl_Table_Row_selection_color(self: Fl_Table_RowPtr) -> t.CUInt32T
extern def Fl_Table_Row_set_selection_color(self: Fl_Table_RowPtr, color: t.CUInt32T)
extern def Fl_Table_Row_do_callback(self: Fl_Table_RowPtr)
extern def Fl_Table_Row_inside(self: Fl_Table_RowPtr, a1: bytes) -> int
extern def Fl_Table_Row_window(self: Fl_Table_RowPtr) -> bytes
extern def Fl_Table_Row_top_window(self: Fl_Table_RowPtr) -> bytes
extern def Fl_Table_Row_takes_events(self: Fl_Table_RowPtr) -> int
extern def Fl_Table_Row_user_data(self: Fl_Table_RowPtr) -> bytes
extern def Fl_Table_Row_take_focus(self: Fl_Table_RowPtr) -> int
extern def Fl_Table_Row_set_visible_focus(self: Fl_Table_RowPtr)
extern def Fl_Table_Row_clear_visible_focus(self: Fl_Table_RowPtr)
extern def Fl_Table_Row_visible_focus(self: Fl_Table_RowPtr, v: int)
extern def Fl_Table_Row_has_visible_focus(self: Fl_Table_RowPtr) -> t.CUInt32T
extern def Fl_Table_Row_set_user_data(self: Fl_Table_RowPtr, data: bytes)
extern def Fl_Table_Row_draw_data(self: Fl_Table_RowPtr) -> bytes
extern def Fl_Table_Row_handle_data(self: Fl_Table_RowPtr) -> bytes
extern def Fl_Table_Row_set_draw_data(self: Fl_Table_RowPtr, data: bytes)
extern def Fl_Table_Row_set_handle_data(self: Fl_Table_RowPtr, data: bytes)
extern def Fl_Table_Row_damage(self: Fl_Table_RowPtr) -> t.CUInt8T
extern def Fl_Table_Row_set_damage(self: Fl_Table_RowPtr, flag: t.CUInt8T)
extern def Fl_Table_Row_set_damage_area(self: Fl_Table_RowPtr, flag: t.CUInt8T, x: int, y: int, w: int, h: int)
extern def Fl_Table_Row_clear_damage(self: Fl_Table_RowPtr)
extern def Fl_Table_Row_as_window(self: Fl_Table_RowPtr) -> bytes
extern def Fl_Table_Row_as_group(self: Fl_Table_RowPtr) -> bytes
extern def Fl_Table_Row_set_deimage(self: Fl_Table_RowPtr, a1: bytes)
extern def Fl_Table_Row_deimage(self: Fl_Table_RowPtr) -> bytes
extern def Fl_Table_Row_set_callback(self: Fl_Table_RowPtr, a1: bytes, a2: bytes)
extern def Fl_Table_Row_visible(self: Fl_Table_RowPtr) -> int
extern def Fl_Table_Row_visible_r(self: Fl_Table_RowPtr) -> int
extern def Fl_Table_Row_active(self: Fl_Table_RowPtr) -> t.CUInt32T
extern def Fl_Table_Row_active_r(self: Fl_Table_RowPtr) -> int
extern def Fl_Table_Row_callback(self: Fl_Table_RowPtr) -> bytes
extern def Fl_Table_Row_set_deletion_callback(self: Fl_Table_RowPtr, cb1: bytes, data: bytes)
extern def Fl_Table_Row_from_dyn_ptr(ptr: Fl_WidgetPtr) -> Fl_Table_RowPtr
extern def Fl_Table_Row_from_derived_dyn_ptr(ptr: Fl_WidgetPtr) -> Fl_Table_RowPtr
extern def Fl_Table_Row_super_draw(ptr: Fl_WidgetPtr, flag: int)
extern def Fl_Table_Row_super_draw_first(ptr: Fl_WidgetPtr, flag: int)
extern def Fl_Table_Row_super_handle_first(ptr: Fl_WidgetPtr, flag: int)
# ----- Fl_Table_Row (group_declare) -----
extern def Fl_Table_Row_begin(self: Fl_Table_RowPtr)
extern def Fl_Table_Row_end(self: Fl_Table_RowPtr)
extern def Fl_Table_Row_find(self: Fl_Table_RowPtr, a1: bytes) -> int
extern def Fl_Table_Row_add(self: Fl_Table_RowPtr, a1: bytes)
extern def Fl_Table_Row_insert(self: Fl_Table_RowPtr, a1: bytes, pos: int)
extern def Fl_Table_Row_remove(self: Fl_Table_RowPtr, wid: bytes)
extern def Fl_Table_Row_remove_by_index(self: Fl_Table_RowPtr, idx: int)
extern def Fl_Table_Row_clear(self: Fl_Table_RowPtr)
extern def Fl_Table_Row_children(self: Fl_Table_RowPtr) -> int
extern def Fl_Table_Row_child(self: Fl_Table_RowPtr, index: int) -> Fl_WidgetPtr
extern def Fl_Table_Row_resizable(self: Fl_Table_RowPtr, a1: bytes)
extern def Fl_Table_Row_set_clip_children(self: Fl_Table_RowPtr, c: int)
extern def Fl_Table_Row_clip_children(self: Fl_Table_RowPtr) -> int
extern def Fl_Table_Row_init_sizes(self: Fl_Table_RowPtr)
extern def Fl_Table_Row_draw_child(self: Fl_Table_RowPtr, w: Fl_WidgetPtr)
extern def Fl_Table_Row_update_child(self: Fl_Table_RowPtr, w: Fl_WidgetPtr)
extern def Fl_Table_Row_draw_outside_label(self: Fl_Table_RowPtr, w: Fl_WidgetPtr)
extern def Fl_Table_Row_draw_children(self: Fl_Table_RowPtr)
# ----- Fl_Table_Row (table_declare) -----
extern def Fl_Table_Row_set_table_box(self: Fl_Table_RowPtr, val: int)
extern def Fl_Table_Row_table_box(self: Fl_Table_RowPtr) -> int
extern def Fl_Table_Row_set_rows(self: Fl_Table_RowPtr, val: int)
extern def Fl_Table_Row_rows(self: Fl_Table_RowPtr) -> int
extern def Fl_Table_Row_set_cols(self: Fl_Table_RowPtr, val: int)
extern def Fl_Table_Row_cols(self: Fl_Table_RowPtr) -> int
extern def Fl_Table_Row_visible_cells(self: Fl_Table_RowPtr, r1: bytes, r2: bytes, c1: bytes, c2: bytes)
extern def Fl_Table_Row_is_interactive_resize(self: Fl_Table_RowPtr) -> int
extern def Fl_Table_Row_row_resize(self: Fl_Table_RowPtr) -> int
extern def Fl_Table_Row_set_row_resize(self: Fl_Table_RowPtr, flag: int)
extern def Fl_Table_Row_col_resize(self: Fl_Table_RowPtr) -> int
extern def Fl_Table_Row_set_col_resize(self: Fl_Table_RowPtr, flag: int)
extern def Fl_Table_Row_col_resize_min(self: Fl_Table_RowPtr) -> int
extern def Fl_Table_Row_set_col_resize_min(self: Fl_Table_RowPtr, val: int)
extern def Fl_Table_Row_row_resize_min(self: Fl_Table_RowPtr) -> int
extern def Fl_Table_Row_set_row_resize_min(self: Fl_Table_RowPtr, val: int)
extern def Fl_Table_Row_row_header(self: Fl_Table_RowPtr) -> int
extern def Fl_Table_Row_set_row_header(self: Fl_Table_RowPtr, flag: int)
extern def Fl_Table_Row_col_header(self: Fl_Table_RowPtr) -> int
extern def Fl_Table_Row_set_col_header(self: Fl_Table_RowPtr, flag: int)
extern def Fl_Table_Row_set_col_header_height(self: Fl_Table_RowPtr, height: int)
extern def Fl_Table_Row_col_header_height(self: Fl_Table_RowPtr) -> int
extern def Fl_Table_Row_set_row_header_width(self: Fl_Table_RowPtr, width: int)
extern def Fl_Table_Row_row_header_width(self: Fl_Table_RowPtr) -> int
extern def Fl_Table_Row_set_row_header_color(self: Fl_Table_RowPtr, val: t.CUInt32T)
extern def Fl_Table_Row_row_header_color(self: Fl_Table_RowPtr) -> t.CUInt32T
extern def Fl_Table_Row_set_col_header_color(self: Fl_Table_RowPtr, val: t.CUInt32T)
extern def Fl_Table_Row_col_header_color(self: Fl_Table_RowPtr) -> t.CUInt32T
extern def Fl_Table_Row_set_row_height(self: Fl_Table_RowPtr, row: int, height: int)
extern def Fl_Table_Row_row_height(self: Fl_Table_RowPtr, row: int) -> int
extern def Fl_Table_Row_set_col_width(self: Fl_Table_RowPtr, col: int, width: int)
extern def Fl_Table_Row_col_width(self: Fl_Table_RowPtr, col: int) -> int
extern def Fl_Table_Row_set_row_height_all(self: Fl_Table_RowPtr, height: int)
extern def Fl_Table_Row_set_col_width_all(self: Fl_Table_RowPtr, width: int)
extern def Fl_Table_Row_set_row_position(self: Fl_Table_RowPtr, row: int)
extern def Fl_Table_Row_set_col_position(self: Fl_Table_RowPtr, col: int)
extern def Fl_Table_Row_row_position(self: Fl_Table_RowPtr) -> int
extern def Fl_Table_Row_col_position(self: Fl_Table_RowPtr) -> int
extern def Fl_Table_Row_set_top_row(self: Fl_Table_RowPtr, row: int)
extern def Fl_Table_Row_top_row(self: Fl_Table_RowPtr) -> int
extern def Fl_Table_Row_is_selected(self: Fl_Table_RowPtr, r: int, c: int) -> int
extern def Fl_Table_Row_get_selection(self: Fl_Table_RowPtr, row_top: bytes, col_left: bytes, row_bot: bytes, col_right: bytes)
extern def Fl_Table_Row_set_selection(self: Fl_Table_RowPtr, row_top: int, col_left: int, row_bot: int, col_right: int)
extern def Fl_Table_Row_move_cursor_with_shiftselect(self: Fl_Table_RowPtr, R: int, C: int, shiftselect: int) -> int
extern def Fl_Table_Row_move_cursor(self: Fl_Table_RowPtr, R: int, C: int) -> int
extern def Fl_Table_Row_scrollbar_size(self: Fl_Table_RowPtr) -> int
extern def Fl_Table_Row_set_scrollbar_size(self: Fl_Table_RowPtr, newSize: int)
extern def Fl_Table_Row_set_tab_cell_nav(self: Fl_Table_RowPtr, val: int)
extern def Fl_Table_Row_tab_cell_nav(self: Fl_Table_RowPtr) -> int
extern def Fl_Table_Row_draw_cell(self: Fl_Table_RowPtr, cb1: bytes, data: bytes)
extern def Fl_Table_Row_draw_cell_data(self: Fl_Table_RowPtr) -> bytes
extern def Fl_Table_Row_set_draw_cell_data(self: Fl_Table_RowPtr, data: bytes)
extern def Fl_Table_Row_callback_col(self: Fl_Table_RowPtr) -> int
extern def Fl_Table_Row_callback_row(self: Fl_Table_RowPtr) -> int
extern def Fl_Table_Row_callback_context(self: Fl_Table_RowPtr) -> int
extern def Fl_Table_Row_scrollbar(self: Fl_Table_RowPtr) -> bytes
extern def Fl_Table_Row_hscrollbar(self: Fl_Table_RowPtr) -> bytes
extern def Fl_Table_Row_find_cell(self: Fl_Table_RowPtr, ctx: int, r: int, c: int, x: bytes, y: bytes, w: bytes, h: bytes) -> int
extern def Fl_Table_Row_scroll(self: Fl_Table_RowPtr) -> bytes
extern def Fl_Table_Row_cursor2rowcol(self: Fl_Table_RowPtr, r: bytes, c: bytes, flag: bytes) -> int
extern def Fl_Table_Row_row_selected(self: Fl_Table_RowPtr, row: int) -> int
extern def Fl_Table_Row_select_row(self: Fl_Table_RowPtr, row: int, flag: int) -> int
extern def Fl_Table_Row_select_all_rows(self: Fl_Table_RowPtr, flag: int)
extern def Fl_Table_Row_clear_rows(self: Fl_Table_RowPtr)
+256
View File
@@ -0,0 +1,256 @@
import t, c
from fltk._types import *
# ============================================================
# fltk/_cfl_term.vp — cfl_term.h 的 extern FFI 声明(对接 cfltk C API)
# ============================================================
# 所有函数直接对应 cfltk 生成的 C 符号(extern "C"),链接目标: cfltk2。
# 类型约定: Fl_* 对象均为不透明指针 (Fl_XxxPtr);const char* → str;
# 函数指针/void* → bytes(Viper 端传 0/NULL 或不使用)。
# ----- Fl_Terminal (widget_declare) -----
extern def Fl_Terminal_new(x: int, y: int, width: int, height: int, title: str) -> Fl_TerminalPtr
extern def Fl_Terminal_x(self: Fl_TerminalPtr) -> int
extern def Fl_Terminal_y(self: Fl_TerminalPtr) -> int
extern def Fl_Terminal_width(self: Fl_TerminalPtr) -> int
extern def Fl_Terminal_height(self: Fl_TerminalPtr) -> int
extern def Fl_Terminal_label(self: Fl_TerminalPtr) -> str
extern def Fl_Terminal_set_label(self: Fl_TerminalPtr, title: str)
extern def Fl_Terminal_redraw(self: Fl_TerminalPtr)
extern def Fl_Terminal_show(self: Fl_TerminalPtr)
extern def Fl_Terminal_hide(self: Fl_TerminalPtr)
extern def Fl_Terminal_activate(self: Fl_TerminalPtr)
extern def Fl_Terminal_deactivate(self: Fl_TerminalPtr)
extern def Fl_Terminal_redraw_label(self: Fl_TerminalPtr)
extern def Fl_Terminal_resize(self: Fl_TerminalPtr, x: int, y: int, width: int, height: int)
extern def Fl_Terminal_widget_resize(self: Fl_TerminalPtr, x: int, y: int, width: int, height: int)
extern def Fl_Terminal_tooltip(self: Fl_TerminalPtr) -> str
extern def Fl_Terminal_set_tooltip(self: Fl_TerminalPtr, txt: str)
extern def Fl_Terminal_get_type(self: Fl_TerminalPtr) -> int
extern def Fl_Terminal_set_type(self: Fl_TerminalPtr, typ: int)
extern def Fl_Terminal_color(self: Fl_TerminalPtr) -> t.CUInt32T
extern def Fl_Terminal_set_color(self: Fl_TerminalPtr, color: t.CUInt32T)
extern def Fl_Terminal_measure_label(self: Fl_TerminalPtr, a1: bytes, a2: bytes)
extern def Fl_Terminal_label_color(self: Fl_TerminalPtr) -> t.CUInt32T
extern def Fl_Terminal_set_label_color(self: Fl_TerminalPtr, color: t.CUInt32T)
extern def Fl_Terminal_label_font(self: Fl_TerminalPtr) -> int
extern def Fl_Terminal_set_label_font(self: Fl_TerminalPtr, font: int)
extern def Fl_Terminal_label_size(self: Fl_TerminalPtr) -> int
extern def Fl_Terminal_set_label_size(self: Fl_TerminalPtr, sz: int)
extern def Fl_Terminal_label_type(self: Fl_TerminalPtr) -> int
extern def Fl_Terminal_set_label_type(self: Fl_TerminalPtr, typ: int)
extern def Fl_Terminal_box(self: Fl_TerminalPtr) -> int
extern def Fl_Terminal_set_box(self: Fl_TerminalPtr, typ: int)
extern def Fl_Terminal_changed(self: Fl_TerminalPtr) -> int
extern def Fl_Terminal_set_changed(self: Fl_TerminalPtr)
extern def Fl_Terminal_clear_changed(self: Fl_TerminalPtr)
extern def Fl_Terminal_align(self: Fl_TerminalPtr) -> int
extern def Fl_Terminal_set_align(self: Fl_TerminalPtr, typ: int)
extern def Fl_Terminal_delete(self: Fl_TerminalPtr)
extern def Fl_Terminal_set_image(self: Fl_TerminalPtr, a1: bytes)
extern def Fl_Terminal_handle(self: Fl_TerminalPtr, cb: bytes, data: bytes)
extern def Fl_Terminal_handle_event(self: Fl_TerminalPtr, event: int) -> int
extern def Fl_Terminal_draw(self: Fl_TerminalPtr, cb: bytes, data: bytes)
extern def Fl_Terminal_resize_callback(self: Fl_TerminalPtr, cb1: bytes, data: bytes)
extern def Fl_Terminal_set_when(self: Fl_TerminalPtr, a1: int)
extern def Fl_Terminal_when(self: Fl_TerminalPtr) -> int
extern def Fl_Terminal_image(self: Fl_TerminalPtr) -> bytes
extern def Fl_Terminal_parent(self: Fl_TerminalPtr) -> bytes
extern def Fl_Terminal_selection_color(self: Fl_TerminalPtr) -> t.CUInt32T
extern def Fl_Terminal_set_selection_color(self: Fl_TerminalPtr, color: t.CUInt32T)
extern def Fl_Terminal_do_callback(self: Fl_TerminalPtr)
extern def Fl_Terminal_inside(self: Fl_TerminalPtr, a1: bytes) -> int
extern def Fl_Terminal_window(self: Fl_TerminalPtr) -> bytes
extern def Fl_Terminal_top_window(self: Fl_TerminalPtr) -> bytes
extern def Fl_Terminal_takes_events(self: Fl_TerminalPtr) -> int
extern def Fl_Terminal_user_data(self: Fl_TerminalPtr) -> bytes
extern def Fl_Terminal_take_focus(self: Fl_TerminalPtr) -> int
extern def Fl_Terminal_set_visible_focus(self: Fl_TerminalPtr)
extern def Fl_Terminal_clear_visible_focus(self: Fl_TerminalPtr)
extern def Fl_Terminal_visible_focus(self: Fl_TerminalPtr, v: int)
extern def Fl_Terminal_has_visible_focus(self: Fl_TerminalPtr) -> t.CUInt32T
extern def Fl_Terminal_set_user_data(self: Fl_TerminalPtr, data: bytes)
extern def Fl_Terminal_draw_data(self: Fl_TerminalPtr) -> bytes
extern def Fl_Terminal_handle_data(self: Fl_TerminalPtr) -> bytes
extern def Fl_Terminal_set_draw_data(self: Fl_TerminalPtr, data: bytes)
extern def Fl_Terminal_set_handle_data(self: Fl_TerminalPtr, data: bytes)
extern def Fl_Terminal_damage(self: Fl_TerminalPtr) -> t.CUInt8T
extern def Fl_Terminal_set_damage(self: Fl_TerminalPtr, flag: t.CUInt8T)
extern def Fl_Terminal_set_damage_area(self: Fl_TerminalPtr, flag: t.CUInt8T, x: int, y: int, w: int, h: int)
extern def Fl_Terminal_clear_damage(self: Fl_TerminalPtr)
extern def Fl_Terminal_as_window(self: Fl_TerminalPtr) -> bytes
extern def Fl_Terminal_as_group(self: Fl_TerminalPtr) -> bytes
extern def Fl_Terminal_set_deimage(self: Fl_TerminalPtr, a1: bytes)
extern def Fl_Terminal_deimage(self: Fl_TerminalPtr) -> bytes
extern def Fl_Terminal_set_callback(self: Fl_TerminalPtr, a1: bytes, a2: bytes)
extern def Fl_Terminal_visible(self: Fl_TerminalPtr) -> int
extern def Fl_Terminal_visible_r(self: Fl_TerminalPtr) -> int
extern def Fl_Terminal_active(self: Fl_TerminalPtr) -> t.CUInt32T
extern def Fl_Terminal_active_r(self: Fl_TerminalPtr) -> int
extern def Fl_Terminal_callback(self: Fl_TerminalPtr) -> bytes
extern def Fl_Terminal_set_deletion_callback(self: Fl_TerminalPtr, cb1: bytes, data: bytes)
extern def Fl_Terminal_from_dyn_ptr(ptr: Fl_WidgetPtr) -> Fl_TerminalPtr
extern def Fl_Terminal_from_derived_dyn_ptr(ptr: Fl_WidgetPtr) -> Fl_TerminalPtr
extern def Fl_Terminal_super_draw(ptr: Fl_WidgetPtr, flag: int)
extern def Fl_Terminal_super_draw_first(ptr: Fl_WidgetPtr, flag: int)
extern def Fl_Terminal_super_handle_first(ptr: Fl_WidgetPtr, flag: int)
# ----- Fl_Terminal (group_declare) -----
extern def Fl_Terminal_begin(self: Fl_TerminalPtr)
extern def Fl_Terminal_end(self: Fl_TerminalPtr)
extern def Fl_Terminal_find(self: Fl_TerminalPtr, a1: bytes) -> int
extern def Fl_Terminal_add(self: Fl_TerminalPtr, a1: bytes)
extern def Fl_Terminal_insert(self: Fl_TerminalPtr, a1: bytes, pos: int)
extern def Fl_Terminal_remove(self: Fl_TerminalPtr, wid: bytes)
extern def Fl_Terminal_remove_by_index(self: Fl_TerminalPtr, idx: int)
extern def Fl_Terminal_clear(self: Fl_TerminalPtr)
extern def Fl_Terminal_children(self: Fl_TerminalPtr) -> int
extern def Fl_Terminal_child(self: Fl_TerminalPtr, index: int) -> Fl_WidgetPtr
extern def Fl_Terminal_resizable(self: Fl_TerminalPtr, a1: bytes)
extern def Fl_Terminal_set_clip_children(self: Fl_TerminalPtr, c: int)
extern def Fl_Terminal_clip_children(self: Fl_TerminalPtr) -> int
extern def Fl_Terminal_init_sizes(self: Fl_TerminalPtr)
extern def Fl_Terminal_draw_child(self: Fl_TerminalPtr, w: Fl_WidgetPtr)
extern def Fl_Terminal_update_child(self: Fl_TerminalPtr, w: Fl_WidgetPtr)
extern def Fl_Terminal_draw_outside_label(self: Fl_TerminalPtr, w: Fl_WidgetPtr)
extern def Fl_Terminal_draw_children(self: Fl_TerminalPtr)
extern def Fl_Terminal_ansi(self: Fl_TerminalPtr) -> int
extern def Fl_Terminal_set_ansi(self: Fl_TerminalPtr, boolean: int)
extern def Fl_Terminal_append(self: Fl_TerminalPtr, txt: str)
extern def Fl_Terminal_append_u8(self: Fl_TerminalPtr, txt: str, len_: int)
extern def Fl_Terminal_append_ascii(self: Fl_TerminalPtr, txt: str)
extern def Fl_Terminal_append_utf8(self: Fl_TerminalPtr, txt: str)
extern def Fl_Terminal_append_utf8_u8(self: Fl_TerminalPtr, txt: str, len_: int)
extern def Fl_Terminal_clear_mouse_selection(self: Fl_TerminalPtr)
extern def Fl_Terminal_clear_to_color(self: Fl_TerminalPtr, set: bytes)
extern def Fl_Terminal_clear_history(self: Fl_TerminalPtr)
extern def Fl_Terminal_clear_screen(self: Fl_TerminalPtr, boolean: int)
extern def Fl_Terminal_clear_screen_home(self: Fl_TerminalPtr, boolean: int)
extern def Fl_Terminal_cursor_col(self: Fl_TerminalPtr) -> int
extern def Fl_Terminal_set_cursor_col(self: Fl_TerminalPtr, val: int)
extern def Fl_Terminal_cursor_home(self: Fl_TerminalPtr)
extern def Fl_Terminal_cursor_row(self: Fl_TerminalPtr) -> int
extern def Fl_Terminal_set_cursor_row(self: Fl_TerminalPtr, val: int)
extern def Fl_Terminal_cursor_up(self: Fl_TerminalPtr, count: int, do_scroll: int)
extern def Fl_Terminal_cursor_down(self: Fl_TerminalPtr, count: int, do_scroll: int)
extern def Fl_Terminal_cursor_left(self: Fl_TerminalPtr, count: int)
extern def Fl_Terminal_cursor_right(self: Fl_TerminalPtr, count: int, do_scroll: int)
extern def Fl_Terminal_scroll(self: Fl_TerminalPtr, count: int)
extern def Fl_Terminal_clear_eod(self: Fl_TerminalPtr)
extern def Fl_Terminal_clear_eol(self: Fl_TerminalPtr)
extern def Fl_Terminal_clear_cur_line(self: Fl_TerminalPtr)
extern def Fl_Terminal_clear_line(self: Fl_TerminalPtr, drow: int)
extern def Fl_Terminal_clear_sod(self: Fl_TerminalPtr)
extern def Fl_Terminal_clear_sol(self: Fl_TerminalPtr)
extern def Fl_Terminal_insert_char(self: Fl_TerminalPtr, c: t.CChar, rep: int)
extern def Fl_Terminal_insert_char_eol(self: Fl_TerminalPtr, c: t.CChar, drow: int, dcol: int, rep: int)
extern def Fl_Terminal_insert_rows(self: Fl_TerminalPtr, count: int)
extern def Fl_Terminal_delete_chars(self: Fl_TerminalPtr, drow: int, dcol: int, count: int)
extern def Fl_Terminal_delete_cur_chars(self: Fl_TerminalPtr, count: int)
extern def Fl_Terminal_delete_rows(self: Fl_TerminalPtr, count: int)
extern def Fl_Terminal_cursor_bg_color(self: Fl_TerminalPtr) -> bytes
extern def Fl_Terminal_set_cursor_bg_color(self: Fl_TerminalPtr, set: bytes) -> bytes
extern def Fl_Terminal_cursor_fg_color(self: Fl_TerminalPtr) -> bytes
extern def Fl_Terminal_set_cursor_fg_color(self: Fl_TerminalPtr, set: bytes) -> bytes
extern def Fl_Terminal_display_columns(self: Fl_TerminalPtr) -> int
extern def Fl_Terminal_set_display_columns(self: Fl_TerminalPtr, set: int)
extern def Fl_Terminal_display_rows(self: Fl_TerminalPtr) -> int
extern def Fl_Terminal_history_rows(self: Fl_TerminalPtr) -> int
extern def Fl_Terminal_set_history_rows(self: Fl_TerminalPtr, set: int)
extern def Fl_Terminal_get_selection(self: Fl_TerminalPtr, retval: bytes) -> int
extern def Fl_Terminal_history_use(self: Fl_TerminalPtr) -> int
extern def Fl_Terminal_margin_bottom(self: Fl_TerminalPtr) -> int
extern def Fl_Terminal_set_margin_bottom(self: Fl_TerminalPtr, set: int)
extern def Fl_Terminal_margin_left(self: Fl_TerminalPtr) -> int
extern def Fl_Terminal_set_margin_left(self: Fl_TerminalPtr, set: int)
extern def Fl_Terminal_margin_right(self: Fl_TerminalPtr) -> int
extern def Fl_Terminal_set_margin_right(self: Fl_TerminalPtr, set: int)
extern def Fl_Terminal_margin_top(self: Fl_TerminalPtr) -> int
extern def Fl_Terminal_set_margin_top(self: Fl_TerminalPtr, set: int)
extern def Fl_Terminal_output_translate(self: Fl_TerminalPtr) -> bytes
extern def Fl_Terminal_set_output_translate(self: Fl_TerminalPtr, set: bytes) -> bytes
extern def Fl_Terminal_print_char(self: Fl_TerminalPtr, c: t.CChar)
extern def Fl_Terminal_print_char_utf8(self: Fl_TerminalPtr, txt: str, len_: int)
extern def Fl_Terminal_printf(self: Fl_TerminalPtr, fmt: str, a2: bytes) -> bytes
extern def Fl_Terminal_plot_char(self: Fl_TerminalPtr, c: t.CChar, row: int, col: int)
extern def Fl_Terminal_plot_char_utf8(self: Fl_TerminalPtr, txt: str, len_: int, row: int, col: int)
extern def Fl_Terminal_redraw_rate(self: Fl_TerminalPtr) -> t.CFloat
extern def Fl_Terminal_set_redraw_rate(self: Fl_TerminalPtr, set: t.CFloat)
extern def Fl_Terminal_redraw_style(self: Fl_TerminalPtr) -> int
extern def Fl_Terminal_set_redraw_style(self: Fl_TerminalPtr, set: int) -> bytes
extern def Fl_Terminal_reset_terminal(self: Fl_TerminalPtr)
extern def Fl_Terminal_scrollbar_actual_size(self: Fl_TerminalPtr) -> int
extern def Fl_Terminal_scrollbar_size(self: Fl_TerminalPtr) -> int
extern def Fl_Terminal_set_scrollbar_size(self: Fl_TerminalPtr, set: int)
extern def Fl_Terminal_hscrollbar_actual_size(self: Fl_TerminalPtr) -> bytes
extern def Fl_Terminal_hscrollbar_size(self: Fl_TerminalPtr) -> bytes
extern def Fl_Terminal_set_hscrollbar_size(self: Fl_TerminalPtr, set: int) -> bytes
extern def Fl_Terminal_hscroll_col(self: Fl_TerminalPtr) -> bytes
extern def Fl_Terminal_set_hscroll_col(self: Fl_TerminalPtr, set: int) -> bytes
extern def Fl_Terminal_hscrollbar_style(self: Fl_TerminalPtr) -> int
extern def Fl_Terminal_set_hscrollbar_style(self: Fl_TerminalPtr, set: int) -> bytes
extern def Fl_Terminal_selection_bg_color(self: Fl_TerminalPtr) -> bytes
extern def Fl_Terminal_set_selection_bg_color(self: Fl_TerminalPtr, set: bytes) -> bytes
extern def Fl_Terminal_selection_fg_color(self: Fl_TerminalPtr) -> bytes
extern def Fl_Terminal_set_selection_fg_color(self: Fl_TerminalPtr, set: bytes) -> bytes
extern def Fl_Terminal_show_unknown(self: Fl_TerminalPtr) -> int
extern def Fl_Terminal_set_show_unknown(self: Fl_TerminalPtr, boolean: int)
extern def Fl_Terminal_text_attrib(self: Fl_TerminalPtr) -> t.CUInt8T
extern def Fl_Terminal_set_text_attrib(self: Fl_TerminalPtr, set: t.CUInt8T) -> bytes
extern def Fl_Terminal_text_bg_color(self: Fl_TerminalPtr) -> bytes
extern def Fl_Terminal_set_text_bg_color(self: Fl_TerminalPtr, set: bytes) -> bytes
extern def Fl_Terminal_text_bg_color_default(self: Fl_TerminalPtr) -> bytes
extern def Fl_Terminal_set_text_bg_color_default(self: Fl_TerminalPtr, set: bytes) -> bytes
extern def Fl_Terminal_set_text_bg_color_xterm(self: Fl_TerminalPtr, set: t.CUInt8T)
extern def Fl_Terminal_set_text_color(self: Fl_TerminalPtr, set: bytes)
extern def Fl_Terminal_text_fg_color(self: Fl_TerminalPtr) -> bytes
extern def Fl_Terminal_set_text_fg_color(self: Fl_TerminalPtr, set: bytes) -> bytes
extern def Fl_Terminal_text_fg_color_default(self: Fl_TerminalPtr) -> bytes
extern def Fl_Terminal_set_text_fg_color_default(self: Fl_TerminalPtr, set: bytes) -> bytes
extern def Fl_Terminal_set_text_fg_color_xterm(self: Fl_TerminalPtr, set: t.CUInt8T)
extern def Fl_Terminal_text_font(self: Fl_TerminalPtr) -> int
extern def Fl_Terminal_set_text_font(self: Fl_TerminalPtr, set: int) -> bytes
extern def Fl_Terminal_text_size(self: Fl_TerminalPtr) -> int
extern def Fl_Terminal_set_text_size(self: Fl_TerminalPtr, set: int)
extern def Fl_Terminal_text(self: Fl_TerminalPtr, lines_below_cursor: int) -> str
extern def Fl_Terminal_selection_text(self: Fl_TerminalPtr) -> bytes
extern def Fl_Terminal_selection_text_len(self: Fl_TerminalPtr) -> int
extern def Fl_Terminal_scrollbar(self: Fl_TerminalPtr) -> bytes
extern def Fl_Terminal_hscrollbar(self: Fl_TerminalPtr) -> Fl_Terminal_ScrollbarPtr
extern def Fl_Terminal_Utf8Char_attr_bgcolor(self: Fl_Terminal_Utf8CharPtr, grp: Fl_TerminalPtr) -> bytes
extern def Fl_Terminal_Utf8Char_attr_fgcolor(self: Fl_Terminal_Utf8CharPtr, grp: Fl_TerminalPtr) -> bytes
extern def Fl_Terminal_Utf8Char_attrib(self: Fl_Terminal_Utf8CharPtr) -> bytes
extern def Fl_Terminal_Utf8Char_bgcolor(self: Fl_Terminal_Utf8CharPtr) -> bytes
extern def Fl_Terminal_Utf8Char_fgcolor(self: Fl_Terminal_Utf8CharPtr) -> bytes
extern def Fl_Terminal_Utf8Char_is_char(self: Fl_Terminal_Utf8CharPtr, c: t.CChar) -> bytes
extern def Fl_Terminal_Utf8Char_length(self: Fl_Terminal_Utf8CharPtr) -> bytes
extern def Fl_Terminal_Utf8Char_max_utf8(self: Fl_Terminal_Utf8CharPtr) -> int
extern def Fl_Terminal_Utf8Char_pwidth(self: Fl_Terminal_Utf8CharPtr) -> t.CDouble
extern def Fl_Terminal_Utf8Char_pwidth_int(self: Fl_Terminal_Utf8CharPtr) -> int
extern def Fl_Terminal_Utf8Char_text_utf8(self: Fl_Terminal_Utf8CharPtr) -> bytes
extern def Fl_Terminal_Utf8Char_charflags(self: Fl_Terminal_Utf8CharPtr) -> t.CUInt8T
extern def Fl_Terminal_Utf8Char_length(self: Fl_Terminal_Utf8CharPtr) -> int
extern def Fl_Terminal_Utf8Char_new_obj(c: t.CUInt8T) -> bytes
extern def Fl_Terminal_disp_erow(self: Fl_TerminalPtr) -> bytes
extern def Fl_Terminal_disp_srow(self: Fl_TerminalPtr) -> int
extern def Fl_Terminal_hist_erow(self: Fl_TerminalPtr) -> int
extern def Fl_Terminal_hist_srow(self: Fl_TerminalPtr) -> int
extern def Fl_Terminal_hist_use(self: Fl_TerminalPtr) -> int
extern def Fl_Terminal_hist_use_srow(self: Fl_TerminalPtr) -> int
extern def Fl_Terminal_h_to_row(self: Fl_TerminalPtr, H: int) -> int
extern def Fl_Terminal_w_to_col(self: Fl_TerminalPtr, W: int) -> int
extern def Fl_Terminal_is_inside_selection(self: Fl_TerminalPtr, row: int, col: int) -> int
extern def Fl_Terminal_is_selection(self: Fl_TerminalPtr) -> bytes
extern def Fl_Terminal_offset(self: Fl_TerminalPtr) -> bytes
extern def Fl_Terminal_ring_erow(self: Fl_TerminalPtr) -> int
extern def Fl_Terminal_ring_srow(self: Fl_TerminalPtr) -> int
extern def Fl_Terminal_ring_rows(self: Fl_TerminalPtr) -> int
extern def Fl_Terminal_u8c_cursor(self: Fl_TerminalPtr) -> Fl_Terminal_Utf8CharPtr
extern def Fl_Terminal_u8c_disp_row(self: Fl_TerminalPtr, drow: int) -> Fl_Terminal_Utf8CharPtr
extern def Fl_Terminal_u8c_hist_row(self: Fl_TerminalPtr, hrow: int) -> Fl_Terminal_Utf8CharPtr
extern def Fl_Terminal_u8c_hist_use_row(self: Fl_TerminalPtr, hurow: int) -> Fl_Terminal_Utf8CharPtr
extern def Fl_Terminal_u8c_ring_row(self: Fl_TerminalPtr, grow: int) -> Fl_Terminal_Utf8CharPtr
extern def Fl_Terminal_Utf8Char_size() -> bytes
extern def Fl_free_str(str_: str)
+620
View File
@@ -0,0 +1,620 @@
import t, c
from fltk._types import *
# ============================================================
# fltk/_cfl_text.vp — cfl_text.h 的 extern FFI 声明(对接 cfltk C API)
# ============================================================
# 所有函数直接对应 cfltk 生成的 C 符号(extern "C"),链接目标: cfltk2。
# 类型约定: Fl_* 对象均为不透明指针 (Fl_XxxPtr);const char* → str;
# 函数指针/void* → bytes(Viper 端传 0/NULL 或不使用)。
# ----- Fl_Text_Display (widget_declare) -----
extern def Fl_Text_Display_new(x: int, y: int, width: int, height: int, title: str) -> Fl_Text_DisplayPtr
extern def Fl_Text_Display_x(self: Fl_Text_DisplayPtr) -> int
extern def Fl_Text_Display_y(self: Fl_Text_DisplayPtr) -> int
extern def Fl_Text_Display_width(self: Fl_Text_DisplayPtr) -> int
extern def Fl_Text_Display_height(self: Fl_Text_DisplayPtr) -> int
extern def Fl_Text_Display_label(self: Fl_Text_DisplayPtr) -> str
extern def Fl_Text_Display_set_label(self: Fl_Text_DisplayPtr, title: str)
extern def Fl_Text_Display_redraw(self: Fl_Text_DisplayPtr)
extern def Fl_Text_Display_show(self: Fl_Text_DisplayPtr)
extern def Fl_Text_Display_hide(self: Fl_Text_DisplayPtr)
extern def Fl_Text_Display_activate(self: Fl_Text_DisplayPtr)
extern def Fl_Text_Display_deactivate(self: Fl_Text_DisplayPtr)
extern def Fl_Text_Display_redraw_label(self: Fl_Text_DisplayPtr)
extern def Fl_Text_Display_resize(self: Fl_Text_DisplayPtr, x: int, y: int, width: int, height: int)
extern def Fl_Text_Display_widget_resize(self: Fl_Text_DisplayPtr, x: int, y: int, width: int, height: int)
extern def Fl_Text_Display_tooltip(self: Fl_Text_DisplayPtr) -> str
extern def Fl_Text_Display_set_tooltip(self: Fl_Text_DisplayPtr, txt: str)
extern def Fl_Text_Display_get_type(self: Fl_Text_DisplayPtr) -> int
extern def Fl_Text_Display_set_type(self: Fl_Text_DisplayPtr, typ: int)
extern def Fl_Text_Display_color(self: Fl_Text_DisplayPtr) -> t.CUInt32T
extern def Fl_Text_Display_set_color(self: Fl_Text_DisplayPtr, color: t.CUInt32T)
extern def Fl_Text_Display_measure_label(self: Fl_Text_DisplayPtr, a1: bytes, a2: bytes)
extern def Fl_Text_Display_label_color(self: Fl_Text_DisplayPtr) -> t.CUInt32T
extern def Fl_Text_Display_set_label_color(self: Fl_Text_DisplayPtr, color: t.CUInt32T)
extern def Fl_Text_Display_label_font(self: Fl_Text_DisplayPtr) -> int
extern def Fl_Text_Display_set_label_font(self: Fl_Text_DisplayPtr, font: int)
extern def Fl_Text_Display_label_size(self: Fl_Text_DisplayPtr) -> int
extern def Fl_Text_Display_set_label_size(self: Fl_Text_DisplayPtr, sz: int)
extern def Fl_Text_Display_label_type(self: Fl_Text_DisplayPtr) -> int
extern def Fl_Text_Display_set_label_type(self: Fl_Text_DisplayPtr, typ: int)
extern def Fl_Text_Display_box(self: Fl_Text_DisplayPtr) -> int
extern def Fl_Text_Display_set_box(self: Fl_Text_DisplayPtr, typ: int)
extern def Fl_Text_Display_changed(self: Fl_Text_DisplayPtr) -> int
extern def Fl_Text_Display_set_changed(self: Fl_Text_DisplayPtr)
extern def Fl_Text_Display_clear_changed(self: Fl_Text_DisplayPtr)
extern def Fl_Text_Display_align(self: Fl_Text_DisplayPtr) -> int
extern def Fl_Text_Display_set_align(self: Fl_Text_DisplayPtr, typ: int)
extern def Fl_Text_Display_delete(self: Fl_Text_DisplayPtr)
extern def Fl_Text_Display_set_image(self: Fl_Text_DisplayPtr, a1: bytes)
extern def Fl_Text_Display_handle(self: Fl_Text_DisplayPtr, cb: bytes, data: bytes)
extern def Fl_Text_Display_handle_event(self: Fl_Text_DisplayPtr, event: int) -> int
extern def Fl_Text_Display_draw(self: Fl_Text_DisplayPtr, cb: bytes, data: bytes)
extern def Fl_Text_Display_resize_callback(self: Fl_Text_DisplayPtr, cb1: bytes, data: bytes)
extern def Fl_Text_Display_set_when(self: Fl_Text_DisplayPtr, a1: int)
extern def Fl_Text_Display_when(self: Fl_Text_DisplayPtr) -> int
extern def Fl_Text_Display_image(self: Fl_Text_DisplayPtr) -> bytes
extern def Fl_Text_Display_parent(self: Fl_Text_DisplayPtr) -> bytes
extern def Fl_Text_Display_selection_color(self: Fl_Text_DisplayPtr) -> t.CUInt32T
extern def Fl_Text_Display_set_selection_color(self: Fl_Text_DisplayPtr, color: t.CUInt32T)
extern def Fl_Text_Display_do_callback(self: Fl_Text_DisplayPtr)
extern def Fl_Text_Display_inside(self: Fl_Text_DisplayPtr, a1: bytes) -> int
extern def Fl_Text_Display_window(self: Fl_Text_DisplayPtr) -> bytes
extern def Fl_Text_Display_top_window(self: Fl_Text_DisplayPtr) -> bytes
extern def Fl_Text_Display_takes_events(self: Fl_Text_DisplayPtr) -> int
extern def Fl_Text_Display_user_data(self: Fl_Text_DisplayPtr) -> bytes
extern def Fl_Text_Display_take_focus(self: Fl_Text_DisplayPtr) -> int
extern def Fl_Text_Display_set_visible_focus(self: Fl_Text_DisplayPtr)
extern def Fl_Text_Display_clear_visible_focus(self: Fl_Text_DisplayPtr)
extern def Fl_Text_Display_visible_focus(self: Fl_Text_DisplayPtr, v: int)
extern def Fl_Text_Display_has_visible_focus(self: Fl_Text_DisplayPtr) -> t.CUInt32T
extern def Fl_Text_Display_set_user_data(self: Fl_Text_DisplayPtr, data: bytes)
extern def Fl_Text_Display_draw_data(self: Fl_Text_DisplayPtr) -> bytes
extern def Fl_Text_Display_handle_data(self: Fl_Text_DisplayPtr) -> bytes
extern def Fl_Text_Display_set_draw_data(self: Fl_Text_DisplayPtr, data: bytes)
extern def Fl_Text_Display_set_handle_data(self: Fl_Text_DisplayPtr, data: bytes)
extern def Fl_Text_Display_damage(self: Fl_Text_DisplayPtr) -> t.CUInt8T
extern def Fl_Text_Display_set_damage(self: Fl_Text_DisplayPtr, flag: t.CUInt8T)
extern def Fl_Text_Display_set_damage_area(self: Fl_Text_DisplayPtr, flag: t.CUInt8T, x: int, y: int, w: int, h: int)
extern def Fl_Text_Display_clear_damage(self: Fl_Text_DisplayPtr)
extern def Fl_Text_Display_as_window(self: Fl_Text_DisplayPtr) -> bytes
extern def Fl_Text_Display_as_group(self: Fl_Text_DisplayPtr) -> bytes
extern def Fl_Text_Display_set_deimage(self: Fl_Text_DisplayPtr, a1: bytes)
extern def Fl_Text_Display_deimage(self: Fl_Text_DisplayPtr) -> bytes
extern def Fl_Text_Display_set_callback(self: Fl_Text_DisplayPtr, a1: bytes, a2: bytes)
extern def Fl_Text_Display_visible(self: Fl_Text_DisplayPtr) -> int
extern def Fl_Text_Display_visible_r(self: Fl_Text_DisplayPtr) -> int
extern def Fl_Text_Display_active(self: Fl_Text_DisplayPtr) -> t.CUInt32T
extern def Fl_Text_Display_active_r(self: Fl_Text_DisplayPtr) -> int
extern def Fl_Text_Display_callback(self: Fl_Text_DisplayPtr) -> bytes
extern def Fl_Text_Display_set_deletion_callback(self: Fl_Text_DisplayPtr, cb1: bytes, data: bytes)
extern def Fl_Text_Display_from_dyn_ptr(ptr: Fl_WidgetPtr) -> Fl_Text_DisplayPtr
extern def Fl_Text_Display_from_derived_dyn_ptr(ptr: Fl_WidgetPtr) -> Fl_Text_DisplayPtr
extern def Fl_Text_Display_super_draw(ptr: Fl_WidgetPtr, flag: int)
extern def Fl_Text_Display_super_draw_first(ptr: Fl_WidgetPtr, flag: int)
extern def Fl_Text_Display_super_handle_first(ptr: Fl_WidgetPtr, flag: int)
# ----- Fl_Text_Display (display_declare) -----
extern def Fl_Text_Display_text_font(self: Fl_Text_DisplayPtr) -> int
extern def Fl_Text_Display_set_text_font(self: Fl_Text_DisplayPtr, s: int)
extern def Fl_Text_Display_text_size(self: Fl_Text_DisplayPtr) -> int
extern def Fl_Text_Display_set_text_size(self: Fl_Text_DisplayPtr, s: int)
extern def Fl_Text_Display_text_color(self: Fl_Text_DisplayPtr) -> t.CUInt32T
extern def Fl_Text_Display_set_text_color(self: Fl_Text_DisplayPtr, n: t.CUInt32T)
extern def Fl_Text_Display_scroll(self: Fl_Text_DisplayPtr, topLineNum: int, horizOffset: int)
extern def Fl_Text_Display_insert(self: Fl_Text_DisplayPtr, text: str)
extern def Fl_Text_Display_set_insert_position(self: Fl_Text_DisplayPtr, newPos: int)
extern def Fl_Text_Display_insert_position(self: Fl_Text_DisplayPtr) -> int
extern def Fl_Text_Display_position_to_xy(self: Fl_Text_DisplayPtr, pos: int, x: bytes, y: bytes) -> int
extern def Fl_Text_Display_count_lines(self: Fl_Text_DisplayPtr, start: int, end: int, start_pos_is_line_start: int) -> int
extern def Fl_Text_Display_move_right(self: Fl_Text_DisplayPtr) -> int
extern def Fl_Text_Display_move_left(self: Fl_Text_DisplayPtr) -> int
extern def Fl_Text_Display_move_up(self: Fl_Text_DisplayPtr) -> int
extern def Fl_Text_Display_move_down(self: Fl_Text_DisplayPtr) -> int
extern def Fl_Text_Display_show_cursor(self: Fl_Text_DisplayPtr, boolean: int)
extern def Fl_Text_Display_set_highlight_data(self: Fl_Text_DisplayPtr, sbuff: bytes, color: bytes, font: bytes, fontsz: bytes, attr: bytes, bgcolor: bytes, sz: int)
extern def Fl_Text_Display_set_cursor_style(self: Fl_Text_DisplayPtr, style: int)
extern def Fl_Text_Display_set_cursor_color(self: Fl_Text_DisplayPtr, color: t.CUInt32T)
extern def Fl_Text_Display_set_scrollbar_size(self: Fl_Text_DisplayPtr, newSize: int)
extern def Fl_Text_Display_set_scrollbar_align(self: Fl_Text_DisplayPtr, align: int)
extern def Fl_Text_Display_cursor_style(self: Fl_Text_DisplayPtr) -> int
extern def Fl_Text_Display_cursor_color(self: Fl_Text_DisplayPtr) -> t.CUInt32T
extern def Fl_Text_Display_scrollbar_size(self: Fl_Text_DisplayPtr) -> int
extern def Fl_Text_Display_scrollbar_align(self: Fl_Text_DisplayPtr) -> int
extern def Fl_Text_Display_line_start(self: Fl_Text_DisplayPtr, pos: int) -> int
extern def Fl_Text_Display_line_end(self: Fl_Text_DisplayPtr, startPos: int, startPosIsLineStart: int) -> int
extern def Fl_Text_Display_skip_lines(self: Fl_Text_DisplayPtr, startPos: int, nLines: int, startPosIsLineStart: int) -> int
extern def Fl_Text_Display_rewind_lines(self: Fl_Text_DisplayPtr, startPos: int, nLines: int) -> int
extern def Fl_Text_Display_next_word(self: Fl_Text_DisplayPtr)
extern def Fl_Text_Display_previous_word(self: Fl_Text_DisplayPtr)
extern def Fl_Text_Display_word_start(self: Fl_Text_DisplayPtr, pos: int) -> int
extern def Fl_Text_Display_word_end(self: Fl_Text_DisplayPtr, pos: int) -> int
extern def Fl_Text_Display_x_to_col(self: Fl_Text_DisplayPtr, x: t.CDouble) -> t.CDouble
extern def Fl_Text_Display_col_to_x(self: Fl_Text_DisplayPtr, col: t.CDouble) -> t.CDouble
extern def Fl_Text_Display_set_linenumber_width(self: Fl_Text_DisplayPtr, width: int)
extern def Fl_Text_Display_linenumber_width(self: Fl_Text_DisplayPtr) -> int
extern def Fl_Text_Display_set_linenumber_font(self: Fl_Text_DisplayPtr, val: int)
extern def Fl_Text_Display_linenumber_font(self: Fl_Text_DisplayPtr) -> int
extern def Fl_Text_Display_set_linenumber_size(self: Fl_Text_DisplayPtr, val: int)
extern def Fl_Text_Display_linenumber_size(self: Fl_Text_DisplayPtr) -> int
extern def Fl_Text_Display_set_linenumber_fgcolor(self: Fl_Text_DisplayPtr, val: t.CUInt32T)
extern def Fl_Text_Display_linenumber_fgcolor(self: Fl_Text_DisplayPtr) -> t.CUInt32T
extern def Fl_Text_Display_set_linenumber_bgcolor(self: Fl_Text_DisplayPtr, val: t.CUInt32T)
extern def Fl_Text_Display_linenumber_bgcolor(self: Fl_Text_DisplayPtr) -> t.CUInt32T
extern def Fl_Text_Display_set_linenumber_align(self: Fl_Text_DisplayPtr, val: int)
extern def Fl_Text_Display_linenumber_align(self: Fl_Text_DisplayPtr) -> int
extern def Fl_Text_Display_in_selection(self: Fl_Text_DisplayPtr, x: int, y: int) -> int
extern def Fl_Text_Display_wrap_mode(self: Fl_Text_DisplayPtr, wrap: int, wrap_margin: int)
extern def Fl_Text_Display_wrapped_column(self: Fl_Text_DisplayPtr, row: int, column: int) -> int
extern def Fl_Text_Display_wrapped_row(self: Fl_Text_DisplayPtr, row: int) -> int
extern def Fl_Text_Display_set_grammar_underline_color(self: Fl_Text_DisplayPtr, color: t.CUInt32T)
extern def Fl_Text_Display_grammar_underline_color(self: Fl_Text_DisplayPtr) -> t.CUInt32T
extern def Fl_Text_Display_set_spelling_underline_color(self: Fl_Text_DisplayPtr, color: t.CUInt32T)
extern def Fl_Text_Display_spelling_underline_color(self: Fl_Text_DisplayPtr) -> t.CUInt32T
extern def Fl_Text_Display_set_secondary_selection_color(self: Fl_Text_DisplayPtr, color: t.CUInt32T)
extern def Fl_Text_Display_secondary_selection_color(self: Fl_Text_DisplayPtr) -> t.CUInt32T
extern def Fl_Text_Display_show_insert_position(self: Fl_Text_DisplayPtr)
extern def Fl_Text_Display_overstrike(self: Fl_Text_DisplayPtr, text: str)
extern def Fl_Text_Display_redisplay_range(self: Fl_Text_DisplayPtr, start: int, end: int)
extern def Fl_Text_Display_set_linenumber_format(self: Fl_Text_DisplayPtr, val: str)
extern def Fl_Text_Display_linenumber_format(self: Fl_Text_DisplayPtr) -> str
extern def Fl_Text_Display_position_style(self: Fl_Text_DisplayPtr, lineStartPos: int, lineLen: int, lineIndex: int) -> int
extern def Fl_Text_Display_maintain_absolute_top_line_number(self: Fl_Text_DisplayPtr, state: int)
extern def Fl_Text_Display_get_absolute_top_line_number(self: Fl_Text_DisplayPtr) -> int
extern def Fl_Text_Display_absolute_top_line_number(self: Fl_Text_DisplayPtr, oldFirstChar: int)
extern def Fl_Text_Display_maintaining_absolute_top_line_number(self: Fl_Text_DisplayPtr) -> int
extern def Fl_Text_Display_reset_absolute_top_line_number(self: Fl_Text_DisplayPtr)
extern def Fl_Text_Display_scroll_row(self: Fl_Text_DisplayPtr) -> int
extern def Fl_Text_Display_scroll_col(self: Fl_Text_DisplayPtr) -> int
extern def Fl_Text_Display_xy_to_position(self: Fl_Text_DisplayPtr, x: int, y: int, PosType: int) -> int
extern def Fl_Text_Display_xy_to_rowcol(self: Fl_Text_DisplayPtr, x: int, y: int, row: bytes, column: bytes, PosType: int)
# ----- Fl_Text_Editor (widget_declare) -----
extern def Fl_Text_Editor_new(x: int, y: int, width: int, height: int, title: str) -> Fl_Text_EditorPtr
extern def Fl_Text_Editor_x(self: Fl_Text_EditorPtr) -> int
extern def Fl_Text_Editor_y(self: Fl_Text_EditorPtr) -> int
extern def Fl_Text_Editor_width(self: Fl_Text_EditorPtr) -> int
extern def Fl_Text_Editor_height(self: Fl_Text_EditorPtr) -> int
extern def Fl_Text_Editor_label(self: Fl_Text_EditorPtr) -> str
extern def Fl_Text_Editor_set_label(self: Fl_Text_EditorPtr, title: str)
extern def Fl_Text_Editor_redraw(self: Fl_Text_EditorPtr)
extern def Fl_Text_Editor_show(self: Fl_Text_EditorPtr)
extern def Fl_Text_Editor_hide(self: Fl_Text_EditorPtr)
extern def Fl_Text_Editor_activate(self: Fl_Text_EditorPtr)
extern def Fl_Text_Editor_deactivate(self: Fl_Text_EditorPtr)
extern def Fl_Text_Editor_redraw_label(self: Fl_Text_EditorPtr)
extern def Fl_Text_Editor_resize(self: Fl_Text_EditorPtr, x: int, y: int, width: int, height: int)
extern def Fl_Text_Editor_widget_resize(self: Fl_Text_EditorPtr, x: int, y: int, width: int, height: int)
extern def Fl_Text_Editor_tooltip(self: Fl_Text_EditorPtr) -> str
extern def Fl_Text_Editor_set_tooltip(self: Fl_Text_EditorPtr, txt: str)
extern def Fl_Text_Editor_get_type(self: Fl_Text_EditorPtr) -> int
extern def Fl_Text_Editor_set_type(self: Fl_Text_EditorPtr, typ: int)
extern def Fl_Text_Editor_color(self: Fl_Text_EditorPtr) -> t.CUInt32T
extern def Fl_Text_Editor_set_color(self: Fl_Text_EditorPtr, color: t.CUInt32T)
extern def Fl_Text_Editor_measure_label(self: Fl_Text_EditorPtr, a1: bytes, a2: bytes)
extern def Fl_Text_Editor_label_color(self: Fl_Text_EditorPtr) -> t.CUInt32T
extern def Fl_Text_Editor_set_label_color(self: Fl_Text_EditorPtr, color: t.CUInt32T)
extern def Fl_Text_Editor_label_font(self: Fl_Text_EditorPtr) -> int
extern def Fl_Text_Editor_set_label_font(self: Fl_Text_EditorPtr, font: int)
extern def Fl_Text_Editor_label_size(self: Fl_Text_EditorPtr) -> int
extern def Fl_Text_Editor_set_label_size(self: Fl_Text_EditorPtr, sz: int)
extern def Fl_Text_Editor_label_type(self: Fl_Text_EditorPtr) -> int
extern def Fl_Text_Editor_set_label_type(self: Fl_Text_EditorPtr, typ: int)
extern def Fl_Text_Editor_box(self: Fl_Text_EditorPtr) -> int
extern def Fl_Text_Editor_set_box(self: Fl_Text_EditorPtr, typ: int)
extern def Fl_Text_Editor_changed(self: Fl_Text_EditorPtr) -> int
extern def Fl_Text_Editor_set_changed(self: Fl_Text_EditorPtr)
extern def Fl_Text_Editor_clear_changed(self: Fl_Text_EditorPtr)
extern def Fl_Text_Editor_align(self: Fl_Text_EditorPtr) -> int
extern def Fl_Text_Editor_set_align(self: Fl_Text_EditorPtr, typ: int)
extern def Fl_Text_Editor_delete(self: Fl_Text_EditorPtr)
extern def Fl_Text_Editor_set_image(self: Fl_Text_EditorPtr, a1: bytes)
extern def Fl_Text_Editor_handle(self: Fl_Text_EditorPtr, cb: bytes, data: bytes)
extern def Fl_Text_Editor_handle_event(self: Fl_Text_EditorPtr, event: int) -> int
extern def Fl_Text_Editor_draw(self: Fl_Text_EditorPtr, cb: bytes, data: bytes)
extern def Fl_Text_Editor_resize_callback(self: Fl_Text_EditorPtr, cb1: bytes, data: bytes)
extern def Fl_Text_Editor_set_when(self: Fl_Text_EditorPtr, a1: int)
extern def Fl_Text_Editor_when(self: Fl_Text_EditorPtr) -> int
extern def Fl_Text_Editor_image(self: Fl_Text_EditorPtr) -> bytes
extern def Fl_Text_Editor_parent(self: Fl_Text_EditorPtr) -> bytes
extern def Fl_Text_Editor_selection_color(self: Fl_Text_EditorPtr) -> t.CUInt32T
extern def Fl_Text_Editor_set_selection_color(self: Fl_Text_EditorPtr, color: t.CUInt32T)
extern def Fl_Text_Editor_do_callback(self: Fl_Text_EditorPtr)
extern def Fl_Text_Editor_inside(self: Fl_Text_EditorPtr, a1: bytes) -> int
extern def Fl_Text_Editor_window(self: Fl_Text_EditorPtr) -> bytes
extern def Fl_Text_Editor_top_window(self: Fl_Text_EditorPtr) -> bytes
extern def Fl_Text_Editor_takes_events(self: Fl_Text_EditorPtr) -> int
extern def Fl_Text_Editor_user_data(self: Fl_Text_EditorPtr) -> bytes
extern def Fl_Text_Editor_take_focus(self: Fl_Text_EditorPtr) -> int
extern def Fl_Text_Editor_set_visible_focus(self: Fl_Text_EditorPtr)
extern def Fl_Text_Editor_clear_visible_focus(self: Fl_Text_EditorPtr)
extern def Fl_Text_Editor_visible_focus(self: Fl_Text_EditorPtr, v: int)
extern def Fl_Text_Editor_has_visible_focus(self: Fl_Text_EditorPtr) -> t.CUInt32T
extern def Fl_Text_Editor_set_user_data(self: Fl_Text_EditorPtr, data: bytes)
extern def Fl_Text_Editor_draw_data(self: Fl_Text_EditorPtr) -> bytes
extern def Fl_Text_Editor_handle_data(self: Fl_Text_EditorPtr) -> bytes
extern def Fl_Text_Editor_set_draw_data(self: Fl_Text_EditorPtr, data: bytes)
extern def Fl_Text_Editor_set_handle_data(self: Fl_Text_EditorPtr, data: bytes)
extern def Fl_Text_Editor_damage(self: Fl_Text_EditorPtr) -> t.CUInt8T
extern def Fl_Text_Editor_set_damage(self: Fl_Text_EditorPtr, flag: t.CUInt8T)
extern def Fl_Text_Editor_set_damage_area(self: Fl_Text_EditorPtr, flag: t.CUInt8T, x: int, y: int, w: int, h: int)
extern def Fl_Text_Editor_clear_damage(self: Fl_Text_EditorPtr)
extern def Fl_Text_Editor_as_window(self: Fl_Text_EditorPtr) -> bytes
extern def Fl_Text_Editor_as_group(self: Fl_Text_EditorPtr) -> bytes
extern def Fl_Text_Editor_set_deimage(self: Fl_Text_EditorPtr, a1: bytes)
extern def Fl_Text_Editor_deimage(self: Fl_Text_EditorPtr) -> bytes
extern def Fl_Text_Editor_set_callback(self: Fl_Text_EditorPtr, a1: bytes, a2: bytes)
extern def Fl_Text_Editor_visible(self: Fl_Text_EditorPtr) -> int
extern def Fl_Text_Editor_visible_r(self: Fl_Text_EditorPtr) -> int
extern def Fl_Text_Editor_active(self: Fl_Text_EditorPtr) -> t.CUInt32T
extern def Fl_Text_Editor_active_r(self: Fl_Text_EditorPtr) -> int
extern def Fl_Text_Editor_callback(self: Fl_Text_EditorPtr) -> bytes
extern def Fl_Text_Editor_set_deletion_callback(self: Fl_Text_EditorPtr, cb1: bytes, data: bytes)
extern def Fl_Text_Editor_from_dyn_ptr(ptr: Fl_WidgetPtr) -> Fl_Text_EditorPtr
extern def Fl_Text_Editor_from_derived_dyn_ptr(ptr: Fl_WidgetPtr) -> Fl_Text_EditorPtr
extern def Fl_Text_Editor_super_draw(ptr: Fl_WidgetPtr, flag: int)
extern def Fl_Text_Editor_super_draw_first(ptr: Fl_WidgetPtr, flag: int)
extern def Fl_Text_Editor_super_handle_first(ptr: Fl_WidgetPtr, flag: int)
# ----- Fl_Text_Editor (display_declare) -----
extern def Fl_Text_Editor_text_font(self: Fl_Text_EditorPtr) -> int
extern def Fl_Text_Editor_set_text_font(self: Fl_Text_EditorPtr, s: int)
extern def Fl_Text_Editor_text_size(self: Fl_Text_EditorPtr) -> int
extern def Fl_Text_Editor_set_text_size(self: Fl_Text_EditorPtr, s: int)
extern def Fl_Text_Editor_text_color(self: Fl_Text_EditorPtr) -> t.CUInt32T
extern def Fl_Text_Editor_set_text_color(self: Fl_Text_EditorPtr, n: t.CUInt32T)
extern def Fl_Text_Editor_scroll(self: Fl_Text_EditorPtr, topLineNum: int, horizOffset: int)
extern def Fl_Text_Editor_insert(self: Fl_Text_EditorPtr, text: str)
extern def Fl_Text_Editor_set_insert_position(self: Fl_Text_EditorPtr, newPos: int)
extern def Fl_Text_Editor_insert_position(self: Fl_Text_EditorPtr) -> int
extern def Fl_Text_Editor_position_to_xy(self: Fl_Text_EditorPtr, pos: int, x: bytes, y: bytes) -> int
extern def Fl_Text_Editor_count_lines(self: Fl_Text_EditorPtr, start: int, end: int, start_pos_is_line_start: int) -> int
extern def Fl_Text_Editor_move_right(self: Fl_Text_EditorPtr) -> int
extern def Fl_Text_Editor_move_left(self: Fl_Text_EditorPtr) -> int
extern def Fl_Text_Editor_move_up(self: Fl_Text_EditorPtr) -> int
extern def Fl_Text_Editor_move_down(self: Fl_Text_EditorPtr) -> int
extern def Fl_Text_Editor_show_cursor(self: Fl_Text_EditorPtr, boolean: int)
extern def Fl_Text_Editor_set_highlight_data(self: Fl_Text_EditorPtr, sbuff: bytes, color: bytes, font: bytes, fontsz: bytes, attr: bytes, bgcolor: bytes, sz: int)
extern def Fl_Text_Editor_set_cursor_style(self: Fl_Text_EditorPtr, style: int)
extern def Fl_Text_Editor_set_cursor_color(self: Fl_Text_EditorPtr, color: t.CUInt32T)
extern def Fl_Text_Editor_set_scrollbar_size(self: Fl_Text_EditorPtr, newSize: int)
extern def Fl_Text_Editor_set_scrollbar_align(self: Fl_Text_EditorPtr, align: int)
extern def Fl_Text_Editor_cursor_style(self: Fl_Text_EditorPtr) -> int
extern def Fl_Text_Editor_cursor_color(self: Fl_Text_EditorPtr) -> t.CUInt32T
extern def Fl_Text_Editor_scrollbar_size(self: Fl_Text_EditorPtr) -> int
extern def Fl_Text_Editor_scrollbar_align(self: Fl_Text_EditorPtr) -> int
extern def Fl_Text_Editor_line_start(self: Fl_Text_EditorPtr, pos: int) -> int
extern def Fl_Text_Editor_line_end(self: Fl_Text_EditorPtr, startPos: int, startPosIsLineStart: int) -> int
extern def Fl_Text_Editor_skip_lines(self: Fl_Text_EditorPtr, startPos: int, nLines: int, startPosIsLineStart: int) -> int
extern def Fl_Text_Editor_rewind_lines(self: Fl_Text_EditorPtr, startPos: int, nLines: int) -> int
extern def Fl_Text_Editor_next_word(self: Fl_Text_EditorPtr)
extern def Fl_Text_Editor_previous_word(self: Fl_Text_EditorPtr)
extern def Fl_Text_Editor_word_start(self: Fl_Text_EditorPtr, pos: int) -> int
extern def Fl_Text_Editor_word_end(self: Fl_Text_EditorPtr, pos: int) -> int
extern def Fl_Text_Editor_x_to_col(self: Fl_Text_EditorPtr, x: t.CDouble) -> t.CDouble
extern def Fl_Text_Editor_col_to_x(self: Fl_Text_EditorPtr, col: t.CDouble) -> t.CDouble
extern def Fl_Text_Editor_set_linenumber_width(self: Fl_Text_EditorPtr, width: int)
extern def Fl_Text_Editor_linenumber_width(self: Fl_Text_EditorPtr) -> int
extern def Fl_Text_Editor_set_linenumber_font(self: Fl_Text_EditorPtr, val: int)
extern def Fl_Text_Editor_linenumber_font(self: Fl_Text_EditorPtr) -> int
extern def Fl_Text_Editor_set_linenumber_size(self: Fl_Text_EditorPtr, val: int)
extern def Fl_Text_Editor_linenumber_size(self: Fl_Text_EditorPtr) -> int
extern def Fl_Text_Editor_set_linenumber_fgcolor(self: Fl_Text_EditorPtr, val: t.CUInt32T)
extern def Fl_Text_Editor_linenumber_fgcolor(self: Fl_Text_EditorPtr) -> t.CUInt32T
extern def Fl_Text_Editor_set_linenumber_bgcolor(self: Fl_Text_EditorPtr, val: t.CUInt32T)
extern def Fl_Text_Editor_linenumber_bgcolor(self: Fl_Text_EditorPtr) -> t.CUInt32T
extern def Fl_Text_Editor_set_linenumber_align(self: Fl_Text_EditorPtr, val: int)
extern def Fl_Text_Editor_linenumber_align(self: Fl_Text_EditorPtr) -> int
extern def Fl_Text_Editor_in_selection(self: Fl_Text_EditorPtr, x: int, y: int) -> int
extern def Fl_Text_Editor_wrap_mode(self: Fl_Text_EditorPtr, wrap: int, wrap_margin: int)
extern def Fl_Text_Editor_wrapped_column(self: Fl_Text_EditorPtr, row: int, column: int) -> int
extern def Fl_Text_Editor_wrapped_row(self: Fl_Text_EditorPtr, row: int) -> int
extern def Fl_Text_Editor_set_grammar_underline_color(self: Fl_Text_EditorPtr, color: t.CUInt32T)
extern def Fl_Text_Editor_grammar_underline_color(self: Fl_Text_EditorPtr) -> t.CUInt32T
extern def Fl_Text_Editor_set_spelling_underline_color(self: Fl_Text_EditorPtr, color: t.CUInt32T)
extern def Fl_Text_Editor_spelling_underline_color(self: Fl_Text_EditorPtr) -> t.CUInt32T
extern def Fl_Text_Editor_set_secondary_selection_color(self: Fl_Text_EditorPtr, color: t.CUInt32T)
extern def Fl_Text_Editor_secondary_selection_color(self: Fl_Text_EditorPtr) -> t.CUInt32T
extern def Fl_Text_Editor_show_insert_position(self: Fl_Text_EditorPtr)
extern def Fl_Text_Editor_overstrike(self: Fl_Text_EditorPtr, text: str)
extern def Fl_Text_Editor_redisplay_range(self: Fl_Text_EditorPtr, start: int, end: int)
extern def Fl_Text_Editor_set_linenumber_format(self: Fl_Text_EditorPtr, val: str)
extern def Fl_Text_Editor_linenumber_format(self: Fl_Text_EditorPtr) -> str
extern def Fl_Text_Editor_position_style(self: Fl_Text_EditorPtr, lineStartPos: int, lineLen: int, lineIndex: int) -> int
extern def Fl_Text_Editor_maintain_absolute_top_line_number(self: Fl_Text_EditorPtr, state: int)
extern def Fl_Text_Editor_get_absolute_top_line_number(self: Fl_Text_EditorPtr) -> int
extern def Fl_Text_Editor_absolute_top_line_number(self: Fl_Text_EditorPtr, oldFirstChar: int)
extern def Fl_Text_Editor_maintaining_absolute_top_line_number(self: Fl_Text_EditorPtr) -> int
extern def Fl_Text_Editor_reset_absolute_top_line_number(self: Fl_Text_EditorPtr)
extern def Fl_Text_Editor_scroll_row(self: Fl_Text_EditorPtr) -> int
extern def Fl_Text_Editor_scroll_col(self: Fl_Text_EditorPtr) -> int
extern def Fl_Text_Editor_xy_to_position(self: Fl_Text_EditorPtr, x: int, y: int, PosType: int) -> int
extern def Fl_Text_Editor_xy_to_rowcol(self: Fl_Text_EditorPtr, x: int, y: int, row: bytes, column: bytes, PosType: int)
# ----- Fl_Simple_Terminal (widget_declare) -----
extern def Fl_Simple_Terminal_new(x: int, y: int, width: int, height: int, title: str) -> Fl_Simple_TerminalPtr
extern def Fl_Simple_Terminal_x(self: Fl_Simple_TerminalPtr) -> int
extern def Fl_Simple_Terminal_y(self: Fl_Simple_TerminalPtr) -> int
extern def Fl_Simple_Terminal_width(self: Fl_Simple_TerminalPtr) -> int
extern def Fl_Simple_Terminal_height(self: Fl_Simple_TerminalPtr) -> int
extern def Fl_Simple_Terminal_label(self: Fl_Simple_TerminalPtr) -> str
extern def Fl_Simple_Terminal_set_label(self: Fl_Simple_TerminalPtr, title: str)
extern def Fl_Simple_Terminal_redraw(self: Fl_Simple_TerminalPtr)
extern def Fl_Simple_Terminal_show(self: Fl_Simple_TerminalPtr)
extern def Fl_Simple_Terminal_hide(self: Fl_Simple_TerminalPtr)
extern def Fl_Simple_Terminal_activate(self: Fl_Simple_TerminalPtr)
extern def Fl_Simple_Terminal_deactivate(self: Fl_Simple_TerminalPtr)
extern def Fl_Simple_Terminal_redraw_label(self: Fl_Simple_TerminalPtr)
extern def Fl_Simple_Terminal_resize(self: Fl_Simple_TerminalPtr, x: int, y: int, width: int, height: int)
extern def Fl_Simple_Terminal_widget_resize(self: Fl_Simple_TerminalPtr, x: int, y: int, width: int, height: int)
extern def Fl_Simple_Terminal_tooltip(self: Fl_Simple_TerminalPtr) -> str
extern def Fl_Simple_Terminal_set_tooltip(self: Fl_Simple_TerminalPtr, txt: str)
extern def Fl_Simple_Terminal_get_type(self: Fl_Simple_TerminalPtr) -> int
extern def Fl_Simple_Terminal_set_type(self: Fl_Simple_TerminalPtr, typ: int)
extern def Fl_Simple_Terminal_color(self: Fl_Simple_TerminalPtr) -> t.CUInt32T
extern def Fl_Simple_Terminal_set_color(self: Fl_Simple_TerminalPtr, color: t.CUInt32T)
extern def Fl_Simple_Terminal_measure_label(self: Fl_Simple_TerminalPtr, a1: bytes, a2: bytes)
extern def Fl_Simple_Terminal_label_color(self: Fl_Simple_TerminalPtr) -> t.CUInt32T
extern def Fl_Simple_Terminal_set_label_color(self: Fl_Simple_TerminalPtr, color: t.CUInt32T)
extern def Fl_Simple_Terminal_label_font(self: Fl_Simple_TerminalPtr) -> int
extern def Fl_Simple_Terminal_set_label_font(self: Fl_Simple_TerminalPtr, font: int)
extern def Fl_Simple_Terminal_label_size(self: Fl_Simple_TerminalPtr) -> int
extern def Fl_Simple_Terminal_set_label_size(self: Fl_Simple_TerminalPtr, sz: int)
extern def Fl_Simple_Terminal_label_type(self: Fl_Simple_TerminalPtr) -> int
extern def Fl_Simple_Terminal_set_label_type(self: Fl_Simple_TerminalPtr, typ: int)
extern def Fl_Simple_Terminal_box(self: Fl_Simple_TerminalPtr) -> int
extern def Fl_Simple_Terminal_set_box(self: Fl_Simple_TerminalPtr, typ: int)
extern def Fl_Simple_Terminal_changed(self: Fl_Simple_TerminalPtr) -> int
extern def Fl_Simple_Terminal_set_changed(self: Fl_Simple_TerminalPtr)
extern def Fl_Simple_Terminal_clear_changed(self: Fl_Simple_TerminalPtr)
extern def Fl_Simple_Terminal_align(self: Fl_Simple_TerminalPtr) -> int
extern def Fl_Simple_Terminal_set_align(self: Fl_Simple_TerminalPtr, typ: int)
extern def Fl_Simple_Terminal_delete(self: Fl_Simple_TerminalPtr)
extern def Fl_Simple_Terminal_set_image(self: Fl_Simple_TerminalPtr, a1: bytes)
extern def Fl_Simple_Terminal_handle(self: Fl_Simple_TerminalPtr, cb: bytes, data: bytes)
extern def Fl_Simple_Terminal_handle_event(self: Fl_Simple_TerminalPtr, event: int) -> int
extern def Fl_Simple_Terminal_draw(self: Fl_Simple_TerminalPtr, cb: bytes, data: bytes)
extern def Fl_Simple_Terminal_resize_callback(self: Fl_Simple_TerminalPtr, cb1: bytes, data: bytes)
extern def Fl_Simple_Terminal_set_when(self: Fl_Simple_TerminalPtr, a1: int)
extern def Fl_Simple_Terminal_when(self: Fl_Simple_TerminalPtr) -> int
extern def Fl_Simple_Terminal_image(self: Fl_Simple_TerminalPtr) -> bytes
extern def Fl_Simple_Terminal_parent(self: Fl_Simple_TerminalPtr) -> bytes
extern def Fl_Simple_Terminal_selection_color(self: Fl_Simple_TerminalPtr) -> t.CUInt32T
extern def Fl_Simple_Terminal_set_selection_color(self: Fl_Simple_TerminalPtr, color: t.CUInt32T)
extern def Fl_Simple_Terminal_do_callback(self: Fl_Simple_TerminalPtr)
extern def Fl_Simple_Terminal_inside(self: Fl_Simple_TerminalPtr, a1: bytes) -> int
extern def Fl_Simple_Terminal_window(self: Fl_Simple_TerminalPtr) -> bytes
extern def Fl_Simple_Terminal_top_window(self: Fl_Simple_TerminalPtr) -> bytes
extern def Fl_Simple_Terminal_takes_events(self: Fl_Simple_TerminalPtr) -> int
extern def Fl_Simple_Terminal_user_data(self: Fl_Simple_TerminalPtr) -> bytes
extern def Fl_Simple_Terminal_take_focus(self: Fl_Simple_TerminalPtr) -> int
extern def Fl_Simple_Terminal_set_visible_focus(self: Fl_Simple_TerminalPtr)
extern def Fl_Simple_Terminal_clear_visible_focus(self: Fl_Simple_TerminalPtr)
extern def Fl_Simple_Terminal_visible_focus(self: Fl_Simple_TerminalPtr, v: int)
extern def Fl_Simple_Terminal_has_visible_focus(self: Fl_Simple_TerminalPtr) -> t.CUInt32T
extern def Fl_Simple_Terminal_set_user_data(self: Fl_Simple_TerminalPtr, data: bytes)
extern def Fl_Simple_Terminal_draw_data(self: Fl_Simple_TerminalPtr) -> bytes
extern def Fl_Simple_Terminal_handle_data(self: Fl_Simple_TerminalPtr) -> bytes
extern def Fl_Simple_Terminal_set_draw_data(self: Fl_Simple_TerminalPtr, data: bytes)
extern def Fl_Simple_Terminal_set_handle_data(self: Fl_Simple_TerminalPtr, data: bytes)
extern def Fl_Simple_Terminal_damage(self: Fl_Simple_TerminalPtr) -> t.CUInt8T
extern def Fl_Simple_Terminal_set_damage(self: Fl_Simple_TerminalPtr, flag: t.CUInt8T)
extern def Fl_Simple_Terminal_set_damage_area(self: Fl_Simple_TerminalPtr, flag: t.CUInt8T, x: int, y: int, w: int, h: int)
extern def Fl_Simple_Terminal_clear_damage(self: Fl_Simple_TerminalPtr)
extern def Fl_Simple_Terminal_as_window(self: Fl_Simple_TerminalPtr) -> bytes
extern def Fl_Simple_Terminal_as_group(self: Fl_Simple_TerminalPtr) -> bytes
extern def Fl_Simple_Terminal_set_deimage(self: Fl_Simple_TerminalPtr, a1: bytes)
extern def Fl_Simple_Terminal_deimage(self: Fl_Simple_TerminalPtr) -> bytes
extern def Fl_Simple_Terminal_set_callback(self: Fl_Simple_TerminalPtr, a1: bytes, a2: bytes)
extern def Fl_Simple_Terminal_visible(self: Fl_Simple_TerminalPtr) -> int
extern def Fl_Simple_Terminal_visible_r(self: Fl_Simple_TerminalPtr) -> int
extern def Fl_Simple_Terminal_active(self: Fl_Simple_TerminalPtr) -> t.CUInt32T
extern def Fl_Simple_Terminal_active_r(self: Fl_Simple_TerminalPtr) -> int
extern def Fl_Simple_Terminal_callback(self: Fl_Simple_TerminalPtr) -> bytes
extern def Fl_Simple_Terminal_set_deletion_callback(self: Fl_Simple_TerminalPtr, cb1: bytes, data: bytes)
extern def Fl_Simple_Terminal_from_dyn_ptr(ptr: Fl_WidgetPtr) -> Fl_Simple_TerminalPtr
extern def Fl_Simple_Terminal_from_derived_dyn_ptr(ptr: Fl_WidgetPtr) -> Fl_Simple_TerminalPtr
extern def Fl_Simple_Terminal_super_draw(ptr: Fl_WidgetPtr, flag: int)
extern def Fl_Simple_Terminal_super_draw_first(ptr: Fl_WidgetPtr, flag: int)
extern def Fl_Simple_Terminal_super_handle_first(ptr: Fl_WidgetPtr, flag: int)
# ----- Fl_Simple_Terminal (display_declare) -----
extern def Fl_Simple_Terminal_text_font(self: Fl_Simple_TerminalPtr) -> int
extern def Fl_Simple_Terminal_set_text_font(self: Fl_Simple_TerminalPtr, s: int)
extern def Fl_Simple_Terminal_text_size(self: Fl_Simple_TerminalPtr) -> int
extern def Fl_Simple_Terminal_set_text_size(self: Fl_Simple_TerminalPtr, s: int)
extern def Fl_Simple_Terminal_text_color(self: Fl_Simple_TerminalPtr) -> t.CUInt32T
extern def Fl_Simple_Terminal_set_text_color(self: Fl_Simple_TerminalPtr, n: t.CUInt32T)
extern def Fl_Simple_Terminal_scroll(self: Fl_Simple_TerminalPtr, topLineNum: int, horizOffset: int)
extern def Fl_Simple_Terminal_insert(self: Fl_Simple_TerminalPtr, text: str)
extern def Fl_Simple_Terminal_set_insert_position(self: Fl_Simple_TerminalPtr, newPos: int)
extern def Fl_Simple_Terminal_insert_position(self: Fl_Simple_TerminalPtr) -> int
extern def Fl_Simple_Terminal_position_to_xy(self: Fl_Simple_TerminalPtr, pos: int, x: bytes, y: bytes) -> int
extern def Fl_Simple_Terminal_count_lines(self: Fl_Simple_TerminalPtr, start: int, end: int, start_pos_is_line_start: int) -> int
extern def Fl_Simple_Terminal_move_right(self: Fl_Simple_TerminalPtr) -> int
extern def Fl_Simple_Terminal_move_left(self: Fl_Simple_TerminalPtr) -> int
extern def Fl_Simple_Terminal_move_up(self: Fl_Simple_TerminalPtr) -> int
extern def Fl_Simple_Terminal_move_down(self: Fl_Simple_TerminalPtr) -> int
extern def Fl_Simple_Terminal_show_cursor(self: Fl_Simple_TerminalPtr, boolean: int)
extern def Fl_Simple_Terminal_set_highlight_data(self: Fl_Simple_TerminalPtr, sbuff: bytes, color: bytes, font: bytes, fontsz: bytes, attr: bytes, bgcolor: bytes, sz: int)
extern def Fl_Simple_Terminal_set_cursor_style(self: Fl_Simple_TerminalPtr, style: int)
extern def Fl_Simple_Terminal_set_cursor_color(self: Fl_Simple_TerminalPtr, color: t.CUInt32T)
extern def Fl_Simple_Terminal_set_scrollbar_size(self: Fl_Simple_TerminalPtr, newSize: int)
extern def Fl_Simple_Terminal_set_scrollbar_align(self: Fl_Simple_TerminalPtr, align: int)
extern def Fl_Simple_Terminal_cursor_style(self: Fl_Simple_TerminalPtr) -> int
extern def Fl_Simple_Terminal_cursor_color(self: Fl_Simple_TerminalPtr) -> t.CUInt32T
extern def Fl_Simple_Terminal_scrollbar_size(self: Fl_Simple_TerminalPtr) -> int
extern def Fl_Simple_Terminal_scrollbar_align(self: Fl_Simple_TerminalPtr) -> int
extern def Fl_Simple_Terminal_line_start(self: Fl_Simple_TerminalPtr, pos: int) -> int
extern def Fl_Simple_Terminal_line_end(self: Fl_Simple_TerminalPtr, startPos: int, startPosIsLineStart: int) -> int
extern def Fl_Simple_Terminal_skip_lines(self: Fl_Simple_TerminalPtr, startPos: int, nLines: int, startPosIsLineStart: int) -> int
extern def Fl_Simple_Terminal_rewind_lines(self: Fl_Simple_TerminalPtr, startPos: int, nLines: int) -> int
extern def Fl_Simple_Terminal_next_word(self: Fl_Simple_TerminalPtr)
extern def Fl_Simple_Terminal_previous_word(self: Fl_Simple_TerminalPtr)
extern def Fl_Simple_Terminal_word_start(self: Fl_Simple_TerminalPtr, pos: int) -> int
extern def Fl_Simple_Terminal_word_end(self: Fl_Simple_TerminalPtr, pos: int) -> int
extern def Fl_Simple_Terminal_x_to_col(self: Fl_Simple_TerminalPtr, x: t.CDouble) -> t.CDouble
extern def Fl_Simple_Terminal_col_to_x(self: Fl_Simple_TerminalPtr, col: t.CDouble) -> t.CDouble
extern def Fl_Simple_Terminal_set_linenumber_width(self: Fl_Simple_TerminalPtr, width: int)
extern def Fl_Simple_Terminal_linenumber_width(self: Fl_Simple_TerminalPtr) -> int
extern def Fl_Simple_Terminal_set_linenumber_font(self: Fl_Simple_TerminalPtr, val: int)
extern def Fl_Simple_Terminal_linenumber_font(self: Fl_Simple_TerminalPtr) -> int
extern def Fl_Simple_Terminal_set_linenumber_size(self: Fl_Simple_TerminalPtr, val: int)
extern def Fl_Simple_Terminal_linenumber_size(self: Fl_Simple_TerminalPtr) -> int
extern def Fl_Simple_Terminal_set_linenumber_fgcolor(self: Fl_Simple_TerminalPtr, val: t.CUInt32T)
extern def Fl_Simple_Terminal_linenumber_fgcolor(self: Fl_Simple_TerminalPtr) -> t.CUInt32T
extern def Fl_Simple_Terminal_set_linenumber_bgcolor(self: Fl_Simple_TerminalPtr, val: t.CUInt32T)
extern def Fl_Simple_Terminal_linenumber_bgcolor(self: Fl_Simple_TerminalPtr) -> t.CUInt32T
extern def Fl_Simple_Terminal_set_linenumber_align(self: Fl_Simple_TerminalPtr, val: int)
extern def Fl_Simple_Terminal_linenumber_align(self: Fl_Simple_TerminalPtr) -> int
extern def Fl_Simple_Terminal_in_selection(self: Fl_Simple_TerminalPtr, x: int, y: int) -> int
extern def Fl_Simple_Terminal_wrap_mode(self: Fl_Simple_TerminalPtr, wrap: int, wrap_margin: int)
extern def Fl_Simple_Terminal_wrapped_column(self: Fl_Simple_TerminalPtr, row: int, column: int) -> int
extern def Fl_Simple_Terminal_wrapped_row(self: Fl_Simple_TerminalPtr, row: int) -> int
extern def Fl_Simple_Terminal_set_grammar_underline_color(self: Fl_Simple_TerminalPtr, color: t.CUInt32T)
extern def Fl_Simple_Terminal_grammar_underline_color(self: Fl_Simple_TerminalPtr) -> t.CUInt32T
extern def Fl_Simple_Terminal_set_spelling_underline_color(self: Fl_Simple_TerminalPtr, color: t.CUInt32T)
extern def Fl_Simple_Terminal_spelling_underline_color(self: Fl_Simple_TerminalPtr) -> t.CUInt32T
extern def Fl_Simple_Terminal_set_secondary_selection_color(self: Fl_Simple_TerminalPtr, color: t.CUInt32T)
extern def Fl_Simple_Terminal_secondary_selection_color(self: Fl_Simple_TerminalPtr) -> t.CUInt32T
extern def Fl_Simple_Terminal_show_insert_position(self: Fl_Simple_TerminalPtr)
extern def Fl_Simple_Terminal_overstrike(self: Fl_Simple_TerminalPtr, text: str)
extern def Fl_Simple_Terminal_redisplay_range(self: Fl_Simple_TerminalPtr, start: int, end: int)
extern def Fl_Simple_Terminal_set_linenumber_format(self: Fl_Simple_TerminalPtr, val: str)
extern def Fl_Simple_Terminal_linenumber_format(self: Fl_Simple_TerminalPtr) -> str
extern def Fl_Simple_Terminal_position_style(self: Fl_Simple_TerminalPtr, lineStartPos: int, lineLen: int, lineIndex: int) -> int
extern def Fl_Simple_Terminal_maintain_absolute_top_line_number(self: Fl_Simple_TerminalPtr, state: int)
extern def Fl_Simple_Terminal_get_absolute_top_line_number(self: Fl_Simple_TerminalPtr) -> int
extern def Fl_Simple_Terminal_absolute_top_line_number(self: Fl_Simple_TerminalPtr, oldFirstChar: int)
extern def Fl_Simple_Terminal_maintaining_absolute_top_line_number(self: Fl_Simple_TerminalPtr) -> int
extern def Fl_Simple_Terminal_reset_absolute_top_line_number(self: Fl_Simple_TerminalPtr)
extern def Fl_Simple_Terminal_scroll_row(self: Fl_Simple_TerminalPtr) -> int
extern def Fl_Simple_Terminal_scroll_col(self: Fl_Simple_TerminalPtr) -> int
extern def Fl_Simple_Terminal_xy_to_position(self: Fl_Simple_TerminalPtr, x: int, y: int, PosType: int) -> int
extern def Fl_Simple_Terminal_xy_to_rowcol(self: Fl_Simple_TerminalPtr, x: int, y: int, row: bytes, column: bytes, PosType: int)
extern def Fl_Text_Buffer_new() -> Fl_Text_BufferPtr
extern def Fl_Text_Buffer_delete(a0: Fl_Text_BufferPtr)
extern def Fl_Text_Buffer_text(self: Fl_Text_BufferPtr) -> str
extern def Fl_Text_Buffer_set_text(self: Fl_Text_BufferPtr, txt: str)
extern def Fl_Text_Buffer_append(self: Fl_Text_BufferPtr, txt: str)
extern def Fl_Text_Buffer_append2(self: Fl_Text_BufferPtr, txt: str, len_: int)
extern def Fl_Text_Buffer_remove(self: Fl_Text_BufferPtr, start: int, end: int)
extern def Fl_Text_Buffer_length(self: Fl_Text_BufferPtr) -> int
extern def Fl_Text_Buffer_text_range(self: Fl_Text_BufferPtr, start: int, end: int) -> str
extern def Fl_Text_Buffer_insert(self: Fl_Text_BufferPtr, pos: int, text: str)
extern def Fl_Text_Buffer_replace(self: Fl_Text_BufferPtr, start: int, end: int, text: str)
extern def Fl_Text_Buffer_copy(self: Fl_Text_BufferPtr, fromBuf: Fl_Text_BufferPtr, fromStart: int, fromEnd: int, toPos: int)
extern def Fl_Text_Buffer_undo(self: Fl_Text_BufferPtr, cp: bytes) -> int
extern def Fl_Text_Buffer_canUndo(self: Fl_Text_BufferPtr, flag: t.CChar)
extern def Fl_Text_Buffer_can_undo(self: Fl_Text_BufferPtr) -> int
extern def Fl_Text_Buffer_load_file(self: Fl_Text_BufferPtr, file: str) -> int
extern def Fl_Text_Buffer_save_file(self: Fl_Text_BufferPtr, file: str) -> int
extern def Fl_Text_Buffer_tab_distance(self: Fl_Text_BufferPtr) -> int
extern def Fl_Text_Buffer_set_tab_distance(self: Fl_Text_BufferPtr, tabDist: int)
extern def Fl_Text_Buffer_select(self: Fl_Text_BufferPtr, start: int, end: int)
extern def Fl_Text_Buffer_selected(self: Fl_Text_BufferPtr) -> int
extern def Fl_Text_Buffer_unselect(self: Fl_Text_BufferPtr)
extern def Fl_Text_Buffer_selection_position(self: Fl_Text_BufferPtr, start: bytes, end: bytes) -> int
extern def Fl_Text_Buffer_selection_text(self: Fl_Text_BufferPtr) -> str
extern def Fl_Text_Buffer_remove_selection(self: Fl_Text_BufferPtr)
extern def Fl_Text_Buffer_replace_selection(self: Fl_Text_BufferPtr, text: str)
extern def Fl_Text_Buffer_secondary_select(self: Fl_Text_BufferPtr, start: int, end: int)
extern def Fl_Text_Buffer_secondary_selected(self: Fl_Text_BufferPtr) -> int
extern def Fl_Text_Buffer_secondary_unselect(self: Fl_Text_BufferPtr)
extern def Fl_Text_Buffer_secondary_selection_position(self: Fl_Text_BufferPtr, start: bytes, end: bytes) -> int
extern def Fl_Text_Buffer_secondary_selection_text(self: Fl_Text_BufferPtr) -> str
extern def Fl_Text_Buffer_remove_secondary_selection(self: Fl_Text_BufferPtr)
extern def Fl_Text_Buffer_replace_secondary_selection(self: Fl_Text_BufferPtr, text: str)
extern def Fl_Text_Buffer_highlight(self: Fl_Text_BufferPtr, start: int, end: int)
extern def Fl_Text_Buffer_is_highlighted(self: Fl_Text_BufferPtr) -> int
extern def Fl_Text_Buffer_unhighlight(self: Fl_Text_BufferPtr)
extern def Fl_Text_Buffer_highlight_position(self: Fl_Text_BufferPtr, start: bytes, end: bytes) -> int
extern def Fl_Text_Buffer_highlight_text(self: Fl_Text_BufferPtr) -> str
extern def Fl_Text_Buffer_line_text(self: Fl_Text_BufferPtr, pos: int) -> str
extern def Fl_Text_Buffer_line_start(self: Fl_Text_BufferPtr, pos: int) -> int
extern def Fl_Text_Buffer_line_end(self: Fl_Text_BufferPtr, pos: int) -> int
extern def Fl_Text_Buffer_word_start(self: Fl_Text_BufferPtr, pos: int) -> int
extern def Fl_Text_Buffer_word_end(self: Fl_Text_BufferPtr, pos: int) -> int
extern def Fl_Text_Buffer_count_lines(self: Fl_Text_BufferPtr, startPos: int, endPos: int) -> int
extern def Fl_Text_Buffer_char_at(self: Fl_Text_BufferPtr, pos: int) -> t.CUInt32T
extern def Fl_Text_Buffer_byte_at(self: Fl_Text_BufferPtr, pos: int) -> t.CUInt8T
extern def Fl_Text_Buffer_address(self: Fl_Text_BufferPtr, pos: int) -> str
extern def Fl_Text_Buffer_address2(self: Fl_Text_BufferPtr, pos: int) -> str
extern def Fl_Text_Buffer_utf8_align(self: Fl_Text_BufferPtr, pos: int) -> int
extern def Fl_Text_Buffer_is_word_separator(self: Fl_Text_BufferPtr, pos: int) -> int
extern def Fl_Text_Buffer_add_modify_callback(self: Fl_Text_BufferPtr, bufModifiedCB: bytes, cbArg: bytes)
extern def Fl_Text_Buffer_remove_modify_callback(self: Fl_Text_BufferPtr, bufModifiedCB: bytes, cbArg: bytes)
extern def Fl_Text_Buffer_call_modify_callbacks(self: Fl_Text_BufferPtr)
extern def Fl_Text_Buffer_search_forward(self: Fl_Text_BufferPtr, start_pos: int, search_string: str, found_pos: bytes, match_case: int) -> int
extern def Fl_Text_Buffer_search_backward(self: Fl_Text_BufferPtr, start_pos: int, search_string: str, found_pos: bytes, match_case: int) -> int
extern def Fl_Text_Buffer_findchar_forward(self: Fl_Text_BufferPtr, start_pos: int, search_char: t.CUInt32T, found_pos: bytes) -> int
extern def Fl_Text_Buffer_findchar_backward(self: Fl_Text_BufferPtr, start_pos: int, search_char: t.CUInt32T, found_pos: bytes) -> int
extern def Fl_Text_Buffer_redo(self: Fl_Text_BufferPtr, cp: bytes) -> int
extern def Fl_Text_Buffer_can_redo(self: Fl_Text_BufferPtr) -> int
extern def Fl_Text_Buffer_insertfile(self: Fl_Text_BufferPtr, file: str, pos: int, buflen: int) -> int
extern def Fl_Text_Buffer_appendfile(self: Fl_Text_BufferPtr, file: str, buflen: int) -> int
extern def Fl_Text_Buffer_outputfile(self: Fl_Text_BufferPtr, file: str, start: int, end: int, buflen: int) -> int
extern def Fl_Text_Buffer_add_predelete_callback(self: Fl_Text_BufferPtr, bufPredeleteCB: bytes, cbArg: bytes)
extern def Fl_Text_Buffer_remove_predelete_callback(self: Fl_Text_BufferPtr, bufPredeleteCB: bytes, cbArg: bytes)
extern def Fl_Text_Buffer_call_predelete_callbacks(self: Fl_Text_BufferPtr)
extern def Fl_Text_Display_init(a0: Fl_Text_DisplayPtr)
extern def Fl_Text_Display_get_buffer(a0: Fl_Text_DisplayPtr) -> Fl_Text_BufferPtr
extern def Fl_Text_Display_set_buffer(a0: Fl_Text_DisplayPtr, a1: Fl_Text_BufferPtr)
extern def Fl_Text_Display_get_style_buffer(a0: Fl_Text_DisplayPtr) -> Fl_Text_BufferPtr
extern def Fl_Text_Editor_init(a0: Fl_Text_EditorPtr)
extern def Fl_Text_Editor_get_buffer(a0: Fl_Text_EditorPtr) -> Fl_Text_BufferPtr
extern def Fl_Text_Editor_set_buffer(a0: Fl_Text_EditorPtr, a1: Fl_Text_BufferPtr)
extern def Fl_Text_Editor_get_style_buffer(a0: Fl_Text_EditorPtr) -> Fl_Text_BufferPtr
extern def Fl_Text_Editor_kf_copy(e: Fl_Text_EditorPtr) -> int
extern def Fl_Text_Editor_kf_cut(e: Fl_Text_EditorPtr) -> int
extern def Fl_Text_Editor_kf_paste(e: Fl_Text_EditorPtr) -> int
extern def Fl_Text_Editor_kf_undo(e: Fl_Text_EditorPtr) -> int
extern def Fl_Text_Editor_kf_redo(e: Fl_Text_EditorPtr) -> int
extern def Fl_Text_Editor_kf_default(c: int, e: Fl_Text_EditorPtr) -> int
extern def Fl_Text_Editor_kf_ignore(c: int, e: Fl_Text_EditorPtr) -> int
extern def Fl_Text_Editor_kf_backspace(e: Fl_Text_EditorPtr) -> int
extern def Fl_Text_Editor_kf_enter(e: Fl_Text_EditorPtr) -> int
extern def Fl_Text_Editor_kf_move(c: int, e: Fl_Text_EditorPtr) -> int
extern def Fl_Text_Editor_kf_shift_move(c: int, e: Fl_Text_EditorPtr) -> int
extern def Fl_Text_Editor_kf_ctrl_move(c: int, e: Fl_Text_EditorPtr) -> int
extern def Fl_Text_Editor_kf_c_s_move(c: int, e: Fl_Text_EditorPtr) -> int
extern def Fl_Text_Editor_kf_meta_move(c: int, e: Fl_Text_EditorPtr) -> int
extern def Fl_Text_Editor_kf_m_s_move(c: int, e: Fl_Text_EditorPtr) -> int
extern def Fl_Text_Editor_kf_home(e: Fl_Text_EditorPtr) -> int
extern def Fl_Text_Editor_kf_end(e: Fl_Text_EditorPtr) -> int
extern def Fl_Text_Editor_kf_left(e: Fl_Text_EditorPtr) -> int
extern def Fl_Text_Editor_kf_up(e: Fl_Text_EditorPtr) -> int
extern def Fl_Text_Editor_kf_right(e: Fl_Text_EditorPtr) -> int
extern def Fl_Text_Editor_kf_down(e: Fl_Text_EditorPtr) -> int
extern def Fl_Text_Editor_kf_page_up(e: Fl_Text_EditorPtr) -> int
extern def Fl_Text_Editor_kf_page_down(e: Fl_Text_EditorPtr) -> int
extern def Fl_Text_Editor_kf_insert(e: Fl_Text_EditorPtr) -> int
extern def Fl_Text_Editor_kf_delete(e: Fl_Text_EditorPtr) -> int
extern def Fl_Text_Editor_kf_select_all(e: Fl_Text_EditorPtr) -> int
extern def Fl_Text_Editor_set_insert_mode(self: Fl_Text_EditorPtr, b: int)
extern def Fl_Text_Editor_insert_mode(self: Fl_Text_EditorPtr) -> int
extern def Fl_Text_Editor_set_tab_nav(self: Fl_Text_EditorPtr, val: int)
extern def Fl_Text_Editor_tab_nav(self: Fl_Text_EditorPtr) -> int
extern def Fl_Text_Editor_add_key_binding(self: Fl_Text_EditorPtr, key: int, state: int, cb3: bytes)
extern def Fl_Text_Editor_remove_key_binding(self: Fl_Text_EditorPtr, key: int, state: int)
extern def Fl_Simple_Terminal_init(a0: Fl_Simple_TerminalPtr)
extern def Fl_Simple_Terminal_get_buffer(a0: Fl_Simple_TerminalPtr) -> Fl_Text_BufferPtr
extern def Fl_Simple_Terminal_set_buffer(a0: Fl_Simple_TerminalPtr, a1: Fl_Text_BufferPtr)
extern def Fl_Simple_Terminal_get_style_buffer(a0: Fl_Simple_TerminalPtr) -> Fl_Text_BufferPtr
extern def Fl_Simple_Terminal_set_stay_at_bottom(self: Fl_Simple_TerminalPtr, a1: int)
extern def Fl_Simple_Terminal_stay_at_bottom(self: Fl_Simple_TerminalPtr) -> int
extern def Fl_Simple_Terminal_set_history_lines(self: Fl_Simple_TerminalPtr, a1: int)
extern def Fl_Simple_Terminal_history_lines(self: Fl_Simple_TerminalPtr) -> int
extern def Fl_Simple_Terminal_set_ansi(self: Fl_Simple_TerminalPtr, val: int)
extern def Fl_Simple_Terminal_ansi(self: Fl_Simple_TerminalPtr) -> int
extern def Fl_Simple_Terminal_append(self: Fl_Simple_TerminalPtr, s: str)
extern def Fl_Simple_Terminal_append2(self: Fl_Simple_TerminalPtr, s: str, len_: int)
extern def Fl_Simple_Terminal_set_text(self: Fl_Simple_TerminalPtr, s: str)
extern def Fl_Simple_Terminal_set_text2(self: Fl_Simple_TerminalPtr, s: str, len_: int)
extern def Fl_Simple_Terminal_text(self: Fl_Simple_TerminalPtr) -> str
extern def Fl_Simple_Terminal_clear(self: Fl_Simple_TerminalPtr)
extern def Fl_Simple_Terminal_remove_lines(self: Fl_Simple_TerminalPtr, start: int, count: int)
extern def Fl_delete_stable(a0: bytes)
+301
View File
@@ -0,0 +1,301 @@
import t, c
from fltk._types import *
# ============================================================
# fltk/_cfl_tree.vp — cfl_tree.h 的 extern FFI 声明(对接 cfltk C API)
# ============================================================
# 所有函数直接对应 cfltk 生成的 C 符号(extern "C"),链接目标: cfltk2。
# 类型约定: Fl_* 对象均为不透明指针 (Fl_XxxPtr);const char* → str;
# 函数指针/void* → bytes(Viper 端传 0/NULL 或不使用)。
# ----- Fl_Tree (widget_declare) -----
extern def Fl_Tree_new(x: int, y: int, width: int, height: int, title: str) -> Fl_TreePtr
extern def Fl_Tree_x(self: Fl_TreePtr) -> int
extern def Fl_Tree_y(self: Fl_TreePtr) -> int
extern def Fl_Tree_width(self: Fl_TreePtr) -> int
extern def Fl_Tree_height(self: Fl_TreePtr) -> int
extern def Fl_Tree_label(self: Fl_TreePtr) -> str
extern def Fl_Tree_set_label(self: Fl_TreePtr, title: str)
extern def Fl_Tree_redraw(self: Fl_TreePtr)
extern def Fl_Tree_show(self: Fl_TreePtr)
extern def Fl_Tree_hide(self: Fl_TreePtr)
extern def Fl_Tree_activate(self: Fl_TreePtr)
extern def Fl_Tree_deactivate(self: Fl_TreePtr)
extern def Fl_Tree_redraw_label(self: Fl_TreePtr)
extern def Fl_Tree_resize(self: Fl_TreePtr, x: int, y: int, width: int, height: int)
extern def Fl_Tree_widget_resize(self: Fl_TreePtr, x: int, y: int, width: int, height: int)
extern def Fl_Tree_tooltip(self: Fl_TreePtr) -> str
extern def Fl_Tree_set_tooltip(self: Fl_TreePtr, txt: str)
extern def Fl_Tree_get_type(self: Fl_TreePtr) -> int
extern def Fl_Tree_set_type(self: Fl_TreePtr, typ: int)
extern def Fl_Tree_color(self: Fl_TreePtr) -> t.CUInt32T
extern def Fl_Tree_set_color(self: Fl_TreePtr, color: t.CUInt32T)
extern def Fl_Tree_measure_label(self: Fl_TreePtr, a1: bytes, a2: bytes)
extern def Fl_Tree_label_color(self: Fl_TreePtr) -> t.CUInt32T
extern def Fl_Tree_set_label_color(self: Fl_TreePtr, color: t.CUInt32T)
extern def Fl_Tree_label_font(self: Fl_TreePtr) -> int
extern def Fl_Tree_set_label_font(self: Fl_TreePtr, font: int)
extern def Fl_Tree_label_size(self: Fl_TreePtr) -> int
extern def Fl_Tree_set_label_size(self: Fl_TreePtr, sz: int)
extern def Fl_Tree_label_type(self: Fl_TreePtr) -> int
extern def Fl_Tree_set_label_type(self: Fl_TreePtr, typ: int)
extern def Fl_Tree_box(self: Fl_TreePtr) -> int
extern def Fl_Tree_set_box(self: Fl_TreePtr, typ: int)
extern def Fl_Tree_changed(self: Fl_TreePtr) -> int
extern def Fl_Tree_set_changed(self: Fl_TreePtr)
extern def Fl_Tree_clear_changed(self: Fl_TreePtr)
extern def Fl_Tree_align(self: Fl_TreePtr) -> int
extern def Fl_Tree_set_align(self: Fl_TreePtr, typ: int)
extern def Fl_Tree_delete(self: Fl_TreePtr)
extern def Fl_Tree_set_image(self: Fl_TreePtr, a1: bytes)
extern def Fl_Tree_handle(self: Fl_TreePtr, cb: bytes, data: bytes)
extern def Fl_Tree_handle_event(self: Fl_TreePtr, event: int) -> int
extern def Fl_Tree_draw(self: Fl_TreePtr, cb: bytes, data: bytes)
extern def Fl_Tree_resize_callback(self: Fl_TreePtr, cb1: bytes, data: bytes)
extern def Fl_Tree_set_when(self: Fl_TreePtr, a1: int)
extern def Fl_Tree_when(self: Fl_TreePtr) -> int
extern def Fl_Tree_image(self: Fl_TreePtr) -> bytes
extern def Fl_Tree_parent(self: Fl_TreePtr) -> bytes
extern def Fl_Tree_selection_color(self: Fl_TreePtr) -> t.CUInt32T
extern def Fl_Tree_set_selection_color(self: Fl_TreePtr, color: t.CUInt32T)
extern def Fl_Tree_do_callback(self: Fl_TreePtr)
extern def Fl_Tree_inside(self: Fl_TreePtr, a1: bytes) -> int
extern def Fl_Tree_window(self: Fl_TreePtr) -> bytes
extern def Fl_Tree_top_window(self: Fl_TreePtr) -> bytes
extern def Fl_Tree_takes_events(self: Fl_TreePtr) -> int
extern def Fl_Tree_user_data(self: Fl_TreePtr) -> bytes
extern def Fl_Tree_take_focus(self: Fl_TreePtr) -> int
extern def Fl_Tree_set_visible_focus(self: Fl_TreePtr)
extern def Fl_Tree_clear_visible_focus(self: Fl_TreePtr)
extern def Fl_Tree_visible_focus(self: Fl_TreePtr, v: int)
extern def Fl_Tree_has_visible_focus(self: Fl_TreePtr) -> t.CUInt32T
extern def Fl_Tree_set_user_data(self: Fl_TreePtr, data: bytes)
extern def Fl_Tree_draw_data(self: Fl_TreePtr) -> bytes
extern def Fl_Tree_handle_data(self: Fl_TreePtr) -> bytes
extern def Fl_Tree_set_draw_data(self: Fl_TreePtr, data: bytes)
extern def Fl_Tree_set_handle_data(self: Fl_TreePtr, data: bytes)
extern def Fl_Tree_damage(self: Fl_TreePtr) -> t.CUInt8T
extern def Fl_Tree_set_damage(self: Fl_TreePtr, flag: t.CUInt8T)
extern def Fl_Tree_set_damage_area(self: Fl_TreePtr, flag: t.CUInt8T, x: int, y: int, w: int, h: int)
extern def Fl_Tree_clear_damage(self: Fl_TreePtr)
extern def Fl_Tree_as_window(self: Fl_TreePtr) -> bytes
extern def Fl_Tree_as_group(self: Fl_TreePtr) -> bytes
extern def Fl_Tree_set_deimage(self: Fl_TreePtr, a1: bytes)
extern def Fl_Tree_deimage(self: Fl_TreePtr) -> bytes
extern def Fl_Tree_set_callback(self: Fl_TreePtr, a1: bytes, a2: bytes)
extern def Fl_Tree_visible(self: Fl_TreePtr) -> int
extern def Fl_Tree_visible_r(self: Fl_TreePtr) -> int
extern def Fl_Tree_active(self: Fl_TreePtr) -> t.CUInt32T
extern def Fl_Tree_active_r(self: Fl_TreePtr) -> int
extern def Fl_Tree_callback(self: Fl_TreePtr) -> bytes
extern def Fl_Tree_set_deletion_callback(self: Fl_TreePtr, cb1: bytes, data: bytes)
extern def Fl_Tree_from_dyn_ptr(ptr: Fl_WidgetPtr) -> Fl_TreePtr
extern def Fl_Tree_from_derived_dyn_ptr(ptr: Fl_WidgetPtr) -> Fl_TreePtr
extern def Fl_Tree_super_draw(ptr: Fl_WidgetPtr, flag: int)
extern def Fl_Tree_super_draw_first(ptr: Fl_WidgetPtr, flag: int)
extern def Fl_Tree_super_handle_first(ptr: Fl_WidgetPtr, flag: int)
extern def Fl_Tree_begin(self: Fl_TreePtr)
extern def Fl_Tree_end(self: Fl_TreePtr)
extern def Fl_Tree_show_self(self: Fl_TreePtr)
extern def Fl_Tree_root_label(self: Fl_TreePtr, new_label: str)
extern def Fl_Tree_root(self: Fl_TreePtr) -> Fl_Tree_ItemPtr
extern def Fl_Tree_set_root(self: Fl_TreePtr, newitem: Fl_Tree_ItemPtr)
extern def Fl_Tree_add(self: Fl_TreePtr, name: str) -> Fl_Tree_ItemPtr
extern def Fl_Tree_add_item(self: Fl_TreePtr, name: str, item: Fl_Tree_ItemPtr) -> Fl_Tree_ItemPtr
extern def Fl_Tree_insert_above(self: Fl_TreePtr, above: Fl_Tree_ItemPtr, name: str) -> Fl_Tree_ItemPtr
extern def Fl_Tree_insert(self: Fl_TreePtr, item: Fl_Tree_ItemPtr, name: str, pos: int) -> Fl_Tree_ItemPtr
extern def Fl_Tree_find_item(self: Fl_TreePtr, path: str) -> Fl_Tree_ItemPtr
extern def Fl_Tree_find_item_mut(self: Fl_TreePtr, path: str) -> Fl_Tree_ItemPtr
extern def Fl_Tree_remove(self: Fl_TreePtr, item: Fl_Tree_ItemPtr) -> int
extern def Fl_Tree_clear(self: Fl_TreePtr)
extern def Fl_Tree_clear_children(self: Fl_TreePtr, item: Fl_Tree_ItemPtr)
extern def Fl_Tree_find_clicked(self: Fl_TreePtr, yonly: int) -> Fl_Tree_ItemPtr
extern def Fl_Tree_item_clicked(self: Fl_TreePtr) -> Fl_Tree_ItemPtr
extern def Fl_Tree_first(self: Fl_TreePtr) -> Fl_Tree_ItemPtr
extern def Fl_Tree_first_visible_item(self: Fl_TreePtr) -> Fl_Tree_ItemPtr
extern def Fl_Tree_next(self: Fl_TreePtr, item: Fl_Tree_ItemPtr) -> Fl_Tree_ItemPtr
extern def Fl_Tree_prev(self: Fl_TreePtr, item: Fl_Tree_ItemPtr) -> Fl_Tree_ItemPtr
extern def Fl_Tree_last(self: Fl_TreePtr) -> Fl_Tree_ItemPtr
extern def Fl_Tree_last_visible_item(self: Fl_TreePtr) -> Fl_Tree_ItemPtr
extern def Fl_Tree_next_visible_item(self: Fl_TreePtr, start: Fl_Tree_ItemPtr, dir: int) -> Fl_Tree_ItemPtr
extern def Fl_Tree_first_selected_item(self: Fl_TreePtr) -> Fl_Tree_ItemPtr
extern def Fl_Tree_last_selected_item(self: Fl_TreePtr) -> Fl_Tree_ItemPtr
extern def Fl_Tree_next_item(self: Fl_TreePtr, item: Fl_Tree_ItemPtr, dir: int, visible: int) -> Fl_Tree_ItemPtr
extern def Fl_Tree_next_selected_item(self: Fl_TreePtr, item: Fl_Tree_ItemPtr, dir: int) -> Fl_Tree_ItemPtr
extern def Fl_Tree_get_selected_items(self: Fl_TreePtr, arr: bytes) -> int
extern def Fl_Tree_get_items(self: Fl_TreePtr, arr: bytes) -> int
extern def Fl_Tree_open(self: Fl_TreePtr, path: str, docallback: int) -> int
extern def Fl_Tree_open_toggle(self: Fl_TreePtr, item: Fl_Tree_ItemPtr, docallback: int)
extern def Fl_Tree_close(self: Fl_TreePtr, path: str, docallback: int) -> int
extern def Fl_Tree_is_open(self: Fl_TreePtr, path: str) -> int
extern def Fl_Tree_is_close(self: Fl_TreePtr, path: str) -> int
extern def Fl_Tree_select(self: Fl_TreePtr, path: str, docallback: int) -> int
extern def Fl_Tree_select_toggle(self: Fl_TreePtr, item: Fl_Tree_ItemPtr, docallback: int)
extern def Fl_Tree_deselect(self: Fl_TreePtr, path: str, docallback: int) -> int
extern def Fl_Tree_deselect_all(self: Fl_TreePtr, item: Fl_Tree_ItemPtr, docallback: int) -> int
extern def Fl_Tree_select_only(self: Fl_TreePtr, selitem: Fl_Tree_ItemPtr, docallback: int) -> int
extern def Fl_Tree_select_all(self: Fl_TreePtr, item: Fl_Tree_ItemPtr, docallback: int) -> int
extern def Fl_Tree_extend_selection_dir(self: Fl_TreePtr, from_: Fl_Tree_ItemPtr, to: Fl_Tree_ItemPtr, dir: int, val: int, visible: int) -> int
extern def Fl_Tree_extend_selection(self: Fl_TreePtr, from_: Fl_Tree_ItemPtr, to: Fl_Tree_ItemPtr, val: int, visible: int) -> int
extern def Fl_Tree_set_item_focus(self: Fl_TreePtr, item: Fl_Tree_ItemPtr)
extern def Fl_Tree_get_item_focus(self: Fl_TreePtr) -> Fl_Tree_ItemPtr
extern def Fl_Tree_is_selected(self: Fl_TreePtr, path: str) -> int
extern def Fl_Tree_item_labelfont(self: Fl_TreePtr) -> int
extern def Fl_Tree_set_item_labelfont(self: Fl_TreePtr, val: int)
extern def Fl_Tree_item_labelsize(self: Fl_TreePtr) -> int
extern def Fl_Tree_set_item_labelsize(self: Fl_TreePtr, val: int)
extern def Fl_Tree_item_labelfgcolor(self: Fl_TreePtr) -> t.CUInt32T
extern def Fl_Tree_set_item_labelfgcolor(self: Fl_TreePtr, val: t.CUInt32T)
extern def Fl_Tree_item_labelbgcolor(self: Fl_TreePtr) -> t.CUInt32T
extern def Fl_Tree_set_item_labelbgcolor(self: Fl_TreePtr, val: t.CUInt32T)
extern def Fl_Tree_connectorcolor(self: Fl_TreePtr) -> t.CUInt32T
extern def Fl_Tree_set_connectorcolor(self: Fl_TreePtr, val: t.CUInt32T)
extern def Fl_Tree_marginleft(self: Fl_TreePtr) -> int
extern def Fl_Tree_set_marginleft(self: Fl_TreePtr, val: int)
extern def Fl_Tree_margintop(self: Fl_TreePtr) -> int
extern def Fl_Tree_set_margintop(self: Fl_TreePtr, val: int)
extern def Fl_Tree_marginbottom(self: Fl_TreePtr) -> int
extern def Fl_Tree_set_marginbottom(self: Fl_TreePtr, val: int)
extern def Fl_Tree_linespacing(self: Fl_TreePtr) -> int
extern def Fl_Tree_set_linespacing(self: Fl_TreePtr, val: int)
extern def Fl_Tree_openchild_marginbottom(self: Fl_TreePtr) -> int
extern def Fl_Tree_set_openchild_marginbottom(self: Fl_TreePtr, val: int)
extern def Fl_Tree_usericonmarginleft(self: Fl_TreePtr) -> int
extern def Fl_Tree_set_usericonmarginleft(self: Fl_TreePtr, val: int)
extern def Fl_Tree_labelmarginleft(self: Fl_TreePtr) -> int
extern def Fl_Tree_set_labelmarginleft(self: Fl_TreePtr, val: int)
extern def Fl_Tree_widgetmarginleft(self: Fl_TreePtr) -> int
extern def Fl_Tree_set_widgetmarginleft(self: Fl_TreePtr, val: int)
extern def Fl_Tree_connectorwidth(self: Fl_TreePtr) -> int
extern def Fl_Tree_set_connectorwidth(self: Fl_TreePtr, val: int)
extern def Fl_Tree_usericon(self: Fl_TreePtr) -> bytes
extern def Fl_Tree_set_usericon(self: Fl_TreePtr, val: bytes)
extern def Fl_Tree_openicon(self: Fl_TreePtr) -> bytes
extern def Fl_Tree_set_openicon(self: Fl_TreePtr, val: bytes)
extern def Fl_Tree_closeicon(self: Fl_TreePtr) -> bytes
extern def Fl_Tree_set_closeicon(self: Fl_TreePtr, val: bytes)
extern def Fl_Tree_showcollapse(self: Fl_TreePtr) -> int
extern def Fl_Tree_set_showcollapse(self: Fl_TreePtr, val: int)
extern def Fl_Tree_showroot(self: Fl_TreePtr) -> int
extern def Fl_Tree_set_showroot(self: Fl_TreePtr, val: int)
extern def Fl_Tree_connectorstyle(self: Fl_TreePtr) -> int
extern def Fl_Tree_set_connectorstyle(self: Fl_TreePtr, val: int)
extern def Fl_Tree_sortorder(self: Fl_TreePtr) -> int
extern def Fl_Tree_set_sortorder(self: Fl_TreePtr, val: int)
extern def Fl_Tree_selectbox(self: Fl_TreePtr) -> int
extern def Fl_Tree_set_selectbox(self: Fl_TreePtr, val: int)
extern def Fl_Tree_selectmode(self: Fl_TreePtr) -> int
extern def Fl_Tree_set_selectmode(self: Fl_TreePtr, val: int)
extern def Fl_Tree_item_reselect_mode(self: Fl_TreePtr) -> int
extern def Fl_Tree_set_item_reselect_mode(self: Fl_TreePtr, mode: int)
extern def Fl_Tree_item_draw_mode(self: Fl_TreePtr) -> int
extern def Fl_Tree_set_item_draw_mode(self: Fl_TreePtr, mode: int)
extern def Fl_Tree_calc_dimensions(self: Fl_TreePtr)
extern def Fl_Tree_calc_tree(self: Fl_TreePtr)
extern def Fl_Tree_recalc_tree(self: Fl_TreePtr)
extern def Fl_Tree_displayed(self: Fl_TreePtr, item: Fl_Tree_ItemPtr) -> int
extern def Fl_Tree_show_item(self: Fl_TreePtr, item: Fl_Tree_ItemPtr, yoff: int)
extern def Fl_Tree_show_item_top(self: Fl_TreePtr, item: Fl_Tree_ItemPtr)
extern def Fl_Tree_show_item_middle(self: Fl_TreePtr, item: Fl_Tree_ItemPtr)
extern def Fl_Tree_show_item_bottom(self: Fl_TreePtr, item: Fl_Tree_ItemPtr)
extern def Fl_Tree_display(self: Fl_TreePtr, item: Fl_Tree_ItemPtr)
extern def Fl_Tree_vposition(self: Fl_TreePtr) -> int
extern def Fl_Tree_set_vposition(self: Fl_TreePtr, pos: int)
extern def Fl_Tree_hposition(self: Fl_TreePtr) -> int
extern def Fl_Tree_set_hposition(self: Fl_TreePtr, pos: int)
extern def Fl_Tree_is_scrollbar(self: Fl_TreePtr, w: Fl_WidgetPtr) -> int
extern def Fl_Tree_scrollbar_size(self: Fl_TreePtr) -> int
extern def Fl_Tree_set_scrollbar_size(self: Fl_TreePtr, size: int)
extern def Fl_Tree_is_vscroll_visible(self: Fl_TreePtr) -> int
extern def Fl_Tree_is_hscroll_visible(self: Fl_TreePtr) -> int
extern def Fl_Tree_set_callback_item(self: Fl_TreePtr, item: Fl_Tree_ItemPtr)
extern def Fl_Tree_callback_item(self: Fl_TreePtr) -> Fl_Tree_ItemPtr
extern def Fl_Tree_set_callback_reason(self: Fl_TreePtr, reason: int)
extern def Fl_Tree_callback_reason(self: Fl_TreePtr) -> int
extern def Fl_Tree_item_pathname(self: Fl_TreePtr, pathname: str, pathnamelen: int, item: Fl_Tree_ItemPtr) -> int
extern def Fl_Tree_Item_new(tree: Fl_TreePtr, txt: str) -> Fl_Tree_ItemPtr
extern def Fl_Tree_Item_draw_item_content(item: Fl_Tree_ItemPtr, cb1: bytes, data: bytes)
extern def Fl_Tree_Item_set_user_data(item: Fl_Tree_ItemPtr, data: bytes)
extern def Fl_Tree_Item_user_data(item: Fl_Tree_ItemPtr) -> bytes
extern def Fl_Tree_Item_x(self: Fl_Tree_ItemPtr) -> int
extern def Fl_Tree_Item_y(self: Fl_Tree_ItemPtr) -> int
extern def Fl_Tree_Item_w(self: Fl_Tree_ItemPtr) -> int
extern def Fl_Tree_Item_h(self: Fl_Tree_ItemPtr) -> int
extern def Fl_Tree_Item_label_x(self: Fl_Tree_ItemPtr) -> int
extern def Fl_Tree_Item_label_y(self: Fl_Tree_ItemPtr) -> int
extern def Fl_Tree_Item_label_w(self: Fl_Tree_ItemPtr) -> int
extern def Fl_Tree_Item_label_h(self: Fl_Tree_ItemPtr) -> int
extern def Fl_Tree_Item_show_self(self: Fl_Tree_ItemPtr, indent: str)
extern def Fl_Tree_set_Item_label(self: Fl_Tree_ItemPtr, val: str)
extern def Fl_Tree_Item_label(self: Fl_Tree_ItemPtr) -> str
extern def Fl_Tree_Item_set_labelfont(self: Fl_Tree_ItemPtr, val: int)
extern def Fl_Tree_Item_labelfont(self: Fl_Tree_ItemPtr) -> int
extern def Fl_Tree_Item_set_labelsize(self: Fl_Tree_ItemPtr, val: int)
extern def Fl_Tree_Item_labelsize(self: Fl_Tree_ItemPtr) -> int
extern def Fl_Tree_Item_set_labelfgcolor(self: Fl_Tree_ItemPtr, val: t.CUInt32T)
extern def Fl_Tree_Item_labelfgcolor(self: Fl_Tree_ItemPtr) -> t.CUInt32T
extern def Fl_Tree_Item_set_labelcolor(self: Fl_Tree_ItemPtr, val: t.CUInt32T)
extern def Fl_Tree_Item_labelcolor(self: Fl_Tree_ItemPtr) -> t.CUInt32T
extern def Fl_Tree_Item_set_labelbgcolor(self: Fl_Tree_ItemPtr, val: t.CUInt32T)
extern def Fl_Tree_Item_labelbgcolor(self: Fl_Tree_ItemPtr) -> t.CUInt32T
extern def Fl_Tree_Item_set_widget(self: Fl_Tree_ItemPtr, val: Fl_WidgetPtr)
extern def Fl_Tree_Item_widget(self: Fl_Tree_ItemPtr) -> Fl_WidgetPtr
extern def Fl_Tree_Item_children(self: Fl_Tree_ItemPtr) -> int
extern def Fl_Tree_Item_child(self: Fl_Tree_ItemPtr, t: int) -> Fl_Tree_ItemPtr
extern def Fl_Tree_Item_has_children(self: Fl_Tree_ItemPtr) -> int
extern def Fl_Tree_Item_find_child(self: Fl_Tree_ItemPtr, name: str) -> int
extern def Fl_Tree_Item_remove_child(self: Fl_Tree_ItemPtr, new_label: str) -> int
extern def Fl_Tree_Item_clear_children(self: Fl_Tree_ItemPtr)
extern def Fl_Tree_Item_swap_children(self: Fl_Tree_ItemPtr, a: Fl_Tree_ItemPtr, b: Fl_Tree_ItemPtr) -> int
extern def Fl_Tree_Item_find_child_item(self: Fl_Tree_ItemPtr, name: str) -> Fl_Tree_ItemPtr
extern def Fl_Tree_Item_replace(self: Fl_Tree_ItemPtr, new_item: Fl_Tree_ItemPtr) -> Fl_Tree_ItemPtr
extern def Fl_Tree_Item_replace_child(self: Fl_Tree_ItemPtr, olditem: Fl_Tree_ItemPtr, newitem: Fl_Tree_ItemPtr) -> Fl_Tree_ItemPtr
extern def Fl_Tree_Item_deparent(self: Fl_Tree_ItemPtr, index: int) -> Fl_Tree_ItemPtr
extern def Fl_Tree_Item_reparent(self: Fl_Tree_ItemPtr, newchild: Fl_Tree_ItemPtr, index: int) -> int
extern def Fl_Tree_Item_move(self: Fl_Tree_ItemPtr, to: int, from_: int) -> int
extern def Fl_Tree_Item_move_above(self: Fl_Tree_ItemPtr, item: Fl_Tree_ItemPtr) -> int
extern def Fl_Tree_Item_move_below(self: Fl_Tree_ItemPtr, item: Fl_Tree_ItemPtr) -> int
extern def Fl_Tree_Item_move_into(self: Fl_Tree_ItemPtr, item: Fl_Tree_ItemPtr, pos: int) -> int
extern def Fl_Tree_Item_depth(self: Fl_Tree_ItemPtr) -> int
extern def Fl_Tree_Item_prev(self: Fl_Tree_ItemPtr) -> Fl_Tree_ItemPtr
extern def Fl_Tree_Item_next(self: Fl_Tree_ItemPtr) -> Fl_Tree_ItemPtr
extern def Fl_Tree_Item_next_sibling(self: Fl_Tree_ItemPtr) -> Fl_Tree_ItemPtr
extern def Fl_Tree_Item_prev_sibling(self: Fl_Tree_ItemPtr) -> Fl_Tree_ItemPtr
extern def Fl_Tree_Item_update_prev_next(self: Fl_Tree_ItemPtr, index: int)
extern def Fl_Tree_Item_parent(self: Fl_Tree_ItemPtr) -> Fl_Tree_ItemPtr
extern def Fl_Tree_Item_set_parent(self: Fl_Tree_ItemPtr, val: Fl_Tree_ItemPtr)
extern def Fl_Tree_Item_tree(self: Fl_Tree_ItemPtr) -> Fl_TreePtr
extern def Fl_Tree_Item_open(self: Fl_Tree_ItemPtr)
extern def Fl_Tree_Item_close(self: Fl_Tree_ItemPtr)
extern def Fl_Tree_Item_is_open(self: Fl_Tree_ItemPtr) -> int
extern def Fl_Tree_Item_is_close(self: Fl_Tree_ItemPtr) -> int
extern def Fl_Tree_Item_open_toggle(self: Fl_Tree_ItemPtr)
extern def Fl_Tree_Item_select(self: Fl_Tree_ItemPtr, val: int)
extern def Fl_Tree_Item_select_toggle(self: Fl_Tree_ItemPtr)
extern def Fl_Tree_Item_select_all(self: Fl_Tree_ItemPtr) -> int
extern def Fl_Tree_Item_deselect(self: Fl_Tree_ItemPtr)
extern def Fl_Tree_Item_deselect_all(self: Fl_Tree_ItemPtr) -> int
extern def Fl_Tree_Item_is_root(self: Fl_Tree_ItemPtr) -> int
extern def Fl_Tree_Item_is_visible(self: Fl_Tree_ItemPtr) -> int
extern def Fl_Tree_Item_is_active(self: Fl_Tree_ItemPtr) -> t.CChar
extern def Fl_Tree_Item_is_activated(self: Fl_Tree_ItemPtr) -> t.CChar
extern def Fl_Tree_Item_deactivate(self: Fl_Tree_ItemPtr)
extern def Fl_Tree_Item_activate(self: Fl_Tree_ItemPtr, val: int)
extern def Fl_Tree_Item_is_selected(self: Fl_Tree_ItemPtr) -> t.CChar
extern def Fl_Tree_Item_Array_total(self: Fl_Tree_Item_ArrayPtr) -> int
extern def Fl_Tree_Item_Array_swap(self: Fl_Tree_Item_ArrayPtr, ax: int, bx: int)
extern def Fl_Tree_Item_Array_move(self: Fl_Tree_Item_ArrayPtr, to: int, from_: int) -> int
extern def Fl_Tree_Item_Array_deparent(self: Fl_Tree_Item_ArrayPtr, pos: int) -> int
extern def Fl_Tree_Item_Array_reparent(self: Fl_Tree_Item_ArrayPtr, item: Fl_Tree_ItemPtr, newparent: Fl_Tree_ItemPtr, pos: int) -> int
extern def Fl_Tree_Item_Array_clear(self: Fl_Tree_Item_ArrayPtr)
extern def Fl_Tree_Item_Array_add(self: Fl_Tree_Item_ArrayPtr, val: Fl_Tree_ItemPtr)
extern def Fl_Tree_Item_Array_insert(self: Fl_Tree_Item_ArrayPtr, pos: int, new_item: Fl_Tree_ItemPtr)
extern def Fl_Tree_Item_Array_replace(self: Fl_Tree_Item_ArrayPtr, pos: int, new_item: Fl_Tree_ItemPtr)
extern def Fl_Tree_Item_Array_remove(self: Fl_Tree_Item_ArrayPtr, index: int)
extern def Fl_Tree_Item_Array_remove_item(self: Fl_Tree_Item_ArrayPtr, item: Fl_Tree_ItemPtr) -> int
extern def Fl_Tree_Item_Array_at(self: Fl_Tree_Item_ArrayPtr, index: int) -> Fl_Tree_ItemPtr
extern def Fl_Tree_Item_Array_delete(self: Fl_Tree_Item_ArrayPtr)
extern def Fl_Tree_Item_usericon(self: Fl_Tree_ItemPtr) -> bytes
extern def Fl_Tree_Item_set_usericon(self: Fl_Tree_ItemPtr, val: bytes)
+15
View File
@@ -0,0 +1,15 @@
import t, c
from fltk._types import *
# ============================================================
# fltk/_cfl_utils.vp — cfl_utils.h 的 extern FFI 声明(对接 cfltk C API)
# ============================================================
# 所有函数直接对应 cfltk 生成的 C 符号(extern "C"),链接目标: cfltk2。
# 类型约定: Fl_* 对象均为不透明指针 (Fl_XxxPtr);const char* → str;
# 函数指针/void* → bytes(Viper 端传 0/NULL 或不使用)。
extern def Fl_filename_expand(out: str, len_: int, in_: str) -> int
extern def Fl_type_name(w: bytes) -> str
extern def Fl_open_uri(uri: str, msg: str, msglen: int) -> int
extern def Fl_decode_uri(uri: str)
File diff suppressed because it is too large. Load diff
+98
View File
@@ -0,0 +1,98 @@
import t, c
from fltk._types import *
# ============================================================
# fltk/_cfl_widget.vp — cfl_widget.h 的 extern FFI 声明(对接 cfltk C API)
# ============================================================
# 所有函数直接对应 cfltk 生成的 C 符号(extern "C"),链接目标: cfltk2。
# 类型约定: Fl_* 对象均为不透明指针 (Fl_XxxPtr);const char* → str;
# 函数指针/void* → bytes(Viper 端传 0/NULL 或不使用)。
# ----- Fl_Widget (widget_declare) -----
extern def Fl_Widget_new(x: int, y: int, width: int, height: int, title: str) -> Fl_WidgetPtr
extern def Fl_Widget_x(self: Fl_WidgetPtr) -> int
extern def Fl_Widget_y(self: Fl_WidgetPtr) -> int
extern def Fl_Widget_width(self: Fl_WidgetPtr) -> int
extern def Fl_Widget_height(self: Fl_WidgetPtr) -> int
extern def Fl_Widget_label(self: Fl_WidgetPtr) -> str
extern def Fl_Widget_set_label(self: Fl_WidgetPtr, title: str)
extern def Fl_Widget_redraw(self: Fl_WidgetPtr)
extern def Fl_Widget_show(self: Fl_WidgetPtr)
extern def Fl_Widget_hide(self: Fl_WidgetPtr)
extern def Fl_Widget_activate(self: Fl_WidgetPtr)
extern def Fl_Widget_deactivate(self: Fl_WidgetPtr)
extern def Fl_Widget_redraw_label(self: Fl_WidgetPtr)
extern def Fl_Widget_resize(self: Fl_WidgetPtr, x: int, y: int, width: int, height: int)
extern def Fl_Widget_widget_resize(self: Fl_WidgetPtr, x: int, y: int, width: int, height: int)
extern def Fl_Widget_tooltip(self: Fl_WidgetPtr) -> str
extern def Fl_Widget_set_tooltip(self: Fl_WidgetPtr, txt: str)
extern def Fl_Widget_get_type(self: Fl_WidgetPtr) -> int
extern def Fl_Widget_set_type(self: Fl_WidgetPtr, typ: int)
extern def Fl_Widget_color(self: Fl_WidgetPtr) -> t.CUInt32T
extern def Fl_Widget_set_color(self: Fl_WidgetPtr, color: t.CUInt32T)
extern def Fl_Widget_measure_label(self: Fl_WidgetPtr, a1: bytes, a2: bytes)
extern def Fl_Widget_label_color(self: Fl_WidgetPtr) -> t.CUInt32T
extern def Fl_Widget_set_label_color(self: Fl_WidgetPtr, color: t.CUInt32T)
extern def Fl_Widget_label_font(self: Fl_WidgetPtr) -> int
extern def Fl_Widget_set_label_font(self: Fl_WidgetPtr, font: int)
extern def Fl_Widget_label_size(self: Fl_WidgetPtr) -> int
extern def Fl_Widget_set_label_size(self: Fl_WidgetPtr, sz: int)
extern def Fl_Widget_label_type(self: Fl_WidgetPtr) -> int
extern def Fl_Widget_set_label_type(self: Fl_WidgetPtr, typ: int)
extern def Fl_Widget_box(self: Fl_WidgetPtr) -> int
extern def Fl_Widget_set_box(self: Fl_WidgetPtr, typ: int)
extern def Fl_Widget_changed(self: Fl_WidgetPtr) -> int
extern def Fl_Widget_set_changed(self: Fl_WidgetPtr)
extern def Fl_Widget_clear_changed(self: Fl_WidgetPtr)
extern def Fl_Widget_align(self: Fl_WidgetPtr) -> int
extern def Fl_Widget_set_align(self: Fl_WidgetPtr, typ: int)
extern def Fl_Widget_delete(self: Fl_WidgetPtr)
extern def Fl_Widget_set_image(self: Fl_WidgetPtr, a1: bytes)
extern def Fl_Widget_handle(self: Fl_WidgetPtr, cb: bytes, data: bytes)
extern def Fl_Widget_handle_event(self: Fl_WidgetPtr, event: int) -> int
extern def Fl_Widget_draw(self: Fl_WidgetPtr, cb: bytes, data: bytes)
extern def Fl_Widget_resize_callback(self: Fl_WidgetPtr, cb1: bytes, data: bytes)
extern def Fl_Widget_set_when(self: Fl_WidgetPtr, a1: int)
extern def Fl_Widget_when(self: Fl_WidgetPtr) -> int
extern def Fl_Widget_image(self: Fl_WidgetPtr) -> bytes
extern def Fl_Widget_parent(self: Fl_WidgetPtr) -> bytes
extern def Fl_Widget_selection_color(self: Fl_WidgetPtr) -> t.CUInt32T
extern def Fl_Widget_set_selection_color(self: Fl_WidgetPtr, color: t.CUInt32T)
extern def Fl_Widget_do_callback(self: Fl_WidgetPtr)
extern def Fl_Widget_inside(self: Fl_WidgetPtr, a1: bytes) -> int
extern def Fl_Widget_window(self: Fl_WidgetPtr) -> bytes
extern def Fl_Widget_top_window(self: Fl_WidgetPtr) -> bytes
extern def Fl_Widget_takes_events(self: Fl_WidgetPtr) -> int
extern def Fl_Widget_user_data(self: Fl_WidgetPtr) -> bytes
extern def Fl_Widget_take_focus(self: Fl_WidgetPtr) -> int
extern def Fl_Widget_set_visible_focus(self: Fl_WidgetPtr)
extern def Fl_Widget_clear_visible_focus(self: Fl_WidgetPtr)
extern def Fl_Widget_visible_focus(self: Fl_WidgetPtr, v: int)
extern def Fl_Widget_has_visible_focus(self: Fl_WidgetPtr) -> t.CUInt32T
extern def Fl_Widget_set_user_data(self: Fl_WidgetPtr, data: bytes)
extern def Fl_Widget_draw_data(self: Fl_WidgetPtr) -> bytes
extern def Fl_Widget_handle_data(self: Fl_WidgetPtr) -> bytes
extern def Fl_Widget_set_draw_data(self: Fl_WidgetPtr, data: bytes)
extern def Fl_Widget_set_handle_data(self: Fl_WidgetPtr, data: bytes)
extern def Fl_Widget_damage(self: Fl_WidgetPtr) -> t.CUInt8T
extern def Fl_Widget_set_damage(self: Fl_WidgetPtr, flag: t.CUInt8T)
extern def Fl_Widget_set_damage_area(self: Fl_WidgetPtr, flag: t.CUInt8T, x: int, y: int, w: int, h: int)
extern def Fl_Widget_clear_damage(self: Fl_WidgetPtr)
extern def Fl_Widget_as_window(self: Fl_WidgetPtr) -> bytes
extern def Fl_Widget_as_group(self: Fl_WidgetPtr) -> bytes
extern def Fl_Widget_set_deimage(self: Fl_WidgetPtr, a1: bytes)
extern def Fl_Widget_deimage(self: Fl_WidgetPtr) -> bytes
extern def Fl_Widget_set_callback(self: Fl_WidgetPtr, a1: bytes, a2: bytes)
extern def Fl_Widget_visible(self: Fl_WidgetPtr) -> int
extern def Fl_Widget_visible_r(self: Fl_WidgetPtr) -> int
extern def Fl_Widget_active(self: Fl_WidgetPtr) -> t.CUInt32T
extern def Fl_Widget_active_r(self: Fl_WidgetPtr) -> int
extern def Fl_Widget_callback(self: Fl_WidgetPtr) -> bytes
extern def Fl_Widget_set_deletion_callback(self: Fl_WidgetPtr, cb1: bytes, data: bytes)
extern def Fl_Widget_from_dyn_ptr(ptr: Fl_WidgetPtr) -> Fl_WidgetPtr
extern def Fl_Widget_from_derived_dyn_ptr(ptr: Fl_WidgetPtr) -> Fl_WidgetPtr
extern def Fl_Widget_super_draw(ptr: Fl_WidgetPtr, flag: int)
extern def Fl_Widget_super_draw_first(ptr: Fl_WidgetPtr, flag: int)
extern def Fl_Widget_super_handle_first(ptr: Fl_WidgetPtr, flag: int)
File diff suppressed because it is too large. Load diff
+461
View File
@@ -0,0 +1,461 @@
import t, c
# ============================================================
# fltk/_enums.vp — cfltk 枚举常量(t.CInt)
# ============================================================
Fl_BrowserType_Normal: t.CInt = 0
Fl_BrowserType_Select: t.CInt = 1
Fl_BrowserType_Hold: t.CInt = 2
Fl_BrowserType_Multi: t.CInt = 3
Fl_BrowserScrollbar_None: t.CInt = 0
Fl_BrowserScrollbar_Horizontal: t.CInt = 1
Fl_BrowserScrollbar_Vertical: t.CInt = 2
Fl_BrowserScrollbar_Both: t.CInt = 3
Fl_BrowserScrollbar_AlwaysOn: t.CInt = 4
Fl_BrowserScrollbar_HorizontalAlways: t.CInt = 5
Fl_BrowserScrollbar_VerticalAlways: t.CInt = 6
Fl_BrowserScrollbar_BothAlways: t.CInt = 7
Fl_FileType_Files: t.CInt = 0
Fl_ButtonType_Normal: t.CInt = 0
Fl_ButtonType_Toggle: t.CInt = 1
Fl_ButtonType_Radio: t.CInt = 102
Fl_ButtonType_Hidden: t.CInt = 103
Fl_FileDialogType_BrowseFile: t.CInt = 0
Fl_FileDialogType_BrowseDir: t.CInt = 1
Fl_FileDialogType_BrowseMultiFile: t.CInt = 2
Fl_FileDialogType_BrowseMultiDir: t.CInt = 3
Fl_FileDialogType_BrowseSaveFile: t.CInt = 4
Fl_FileDialogOptions_NoOptions: t.CInt = 0
Fl_FileDialogOptions_SaveAsConfirm: t.CInt = 1
Fl_FileDialogOptions_NewFolder: t.CInt = 2
Fl_FileDialogOptions_Preview: t.CInt = 4
Fl_FileDialogOptions_UseFilterExt: t.CInt = 5
Fl_BeepType_Default: t.CInt = 0
Fl_BeepType_Message: t.CInt = 1
Fl_BeepType_Error: t.CInt = 2
Fl_BeepType_Question: t.CInt = 3
Fl_BeepType_Password: t.CInt = 4
Fl_FileChooserType_Single: t.CInt = 0
Fl_FileChooserType_Multi: t.CInt = 1
Fl_FileChooserType_Create: t.CInt = 2
Fl_FileChooserType_Directory: t.CInt = 3
Fl_NativeFileChooserType_BrowseFile: t.CInt = 0
Fl_NativeFileChooserType_BrowseDirectory: t.CInt = 1
Fl_NativeFileChooserType_MultiFile: t.CInt = 2
Fl_NativeFileChooserType_MultiDirectory: t.CInt = 3
Fl_NativeFileChooserType_SaveFile: t.CInt = 4
Fl_NativeFileChooserType_SaveDirectory: t.CInt = 5
Fl_NativeFileChooserOption_NoOptions: t.CInt = 0
Fl_NativeFileChooserOption_SaveAsConfirm: t.CInt = 1
Fl_NativeFileChooserOption_NewFolder: t.CInt = 2
Fl_NativeFileChooserOption_Preview: t.CInt = 4
Fl_NativeFileChooserOption_UseFilterExt: t.CInt = 8
Fl_LineStyle_Solid: t.CInt = 0
Fl_LineStyle_Dash: t.CInt = 1
Fl_LineStyle_Dot: t.CInt = 2
Fl_LineStyle_DashDot: t.CInt = 3
Fl_LineStyle_DashDotDot: t.CInt = 4
Fl_LineStyle_CapFlat: t.CInt = 100
Fl_LineStyle_CapRound: t.CInt = 200
Fl_LineStyle_CapSquare: t.CInt = 300
Fl_LineStyle_JoinMiter: t.CInt = 1000
Fl_LineStyle_JoinRound: t.CInt = 2000
Fl_LineStyle_JoinBevel: t.CInt = 2001
Fl_LabelType_Normal: t.CInt = 0
Fl_LabelType_None: t.CInt = 1
Fl_LabelType_Shadow: t.CInt = 2
Fl_LabelType_Engraved: t.CInt = 3
Fl_LabelType_Embossed: t.CInt = 4
Fl_LabelType_Multi: t.CInt = 5
Fl_LabelType_Icon: t.CInt = 6
Fl_LabelType_Image: t.CInt = 7
Fl_BoxType_NoBox: t.CInt = 0
Fl_BoxType_FlatBox: t.CInt = 1
Fl_BoxType_UpBox: t.CInt = 2
Fl_BoxType_DownBox: t.CInt = 3
Fl_BoxType_UpFrame: t.CInt = 4
Fl_BoxType_DownFrame: t.CInt = 5
Fl_BoxType_ThinUpBox: t.CInt = 6
Fl_BoxType_ThinDownBox: t.CInt = 7
Fl_BoxType_ThinUpFrame: t.CInt = 8
Fl_BoxType_ThinDownFrame: t.CInt = 9
Fl_BoxType_EngraveBox: t.CInt = 10
Fl_BoxType_EmbossedBox: t.CInt = 11
Fl_BoxType_EngravedFrame: t.CInt = 12
Fl_BoxType_EmbossedFrame: t.CInt = 13
Fl_BoxType_BorderBox: t.CInt = 14
Fl_BoxType_ShadowBox: t.CInt = 15
Fl_BoxType_BorderFrame: t.CInt = 16
Fl_BoxType_ShadowFrame: t.CInt = 17
Fl_BoxType_RoundedBox: t.CInt = 18
Fl_BoxType_RShadowBox: t.CInt = 19
Fl_BoxType_RoundedFrame: t.CInt = 20
Fl_BoxType_RFlatBox: t.CInt = 21
Fl_BoxType_RoundUpBox: t.CInt = 22
Fl_BoxType_RoundDownBox: t.CInt = 23
Fl_BoxType_DiamondUpBox: t.CInt = 24
Fl_BoxType_DiamondDownBox: t.CInt = 25
Fl_BoxType_OvalBox: t.CInt = 26
Fl_BoxType_OShadowBox: t.CInt = 27
Fl_BoxType_OvalFrame: t.CInt = 28
Fl_BoxType_OFlatBox: t.CInt = 29
Fl_BoxType_PlasticUpBox: t.CInt = 30
Fl_BoxType_PlasticDownBox: t.CInt = 31
Fl_BoxType_PlasticUpFrame: t.CInt = 32
Fl_BoxType_PlasticDownFrame: t.CInt = 33
Fl_BoxType_PlasticThinUpBox: t.CInt = 34
Fl_BoxType_PlasticThinDownBox: t.CInt = 35
Fl_BoxType_PlasticRoundUpBox: t.CInt = 36
Fl_BoxType_PlasticRoundDownBox: t.CInt = 37
Fl_BoxType_GtkUpBox: t.CInt = 38
Fl_BoxType_GtkDownBox: t.CInt = 39
Fl_BoxType_GtkUpFrame: t.CInt = 40
Fl_BoxType_GtkDownFrame: t.CInt = 41
Fl_BoxType_GtkThinUpBox: t.CInt = 42
Fl_BoxType_GtkThinDownBox: t.CInt = 43
Fl_BoxType_GtkThinUpFrame: t.CInt = 44
Fl_BoxType_GtkThinDownFrame: t.CInt = 45
Fl_BoxType_GtkRoundUpFrame: t.CInt = 46
Fl_BoxType_GtkRoundDownFrame: t.CInt = 47
Fl_BoxType_GleamUpBox: t.CInt = 48
Fl_BoxType_GleamDownBox: t.CInt = 49
Fl_BoxType_GleamUpFrame: t.CInt = 50
Fl_BoxType_GleamDownFrame: t.CInt = 51
Fl_BoxType_GleamThinUpBox: t.CInt = 52
Fl_BoxType_GleamThinDownBox: t.CInt = 53
Fl_BoxType_GleamRoundUpBox: t.CInt = 54
Fl_BoxType_GleamRoundDownBox: t.CInt = 55
Fl_Align_Center: t.CInt = 0
Fl_Align_Top: t.CInt = 1
Fl_Align_Bottom: t.CInt = 2
Fl_Align_Left: t.CInt = 4
Fl_Align_Right: t.CInt = 8
Fl_Align_Inside: t.CInt = 16
Fl_Align_TextOverImage: t.CInt = 32
Fl_Align_ImageOverText: t.CInt = 0
Fl_Align_NoWrap: t.CInt = 0
Fl_Align_Clip: t.CInt = 64
Fl_Align_Wrap: t.CInt = 128
Fl_Align_ImageNextToText: t.CInt = 256
Fl_Align_TextNextToImage: t.CInt = 288
Fl_Align_ImageBackdrop: t.CInt = 512
Fl_Align_TopLeft: t.CInt = 5
Fl_Align_TopRight: t.CInt = 9
Fl_Align_BottomLeft: t.CInt = 6
Fl_Align_BottomRight: t.CInt = 10
Fl_Align_LeftTop: t.CInt = 7
Fl_Align_RightTop: t.CInt = 11
Fl_Align_LeftBottom: t.CInt = 13
Fl_Align_RightBottom: t.CInt = 14
Fl_Align_PositionMask: t.CInt = 15
Fl_Align_ImageMask: t.CInt = 16
Fl_Font_Helvetica: t.CInt = 0
Fl_Font_HelveticaBold: t.CInt = 1
Fl_Font_HelveticaItalic: t.CInt = 2
Fl_Font_HelveticaBoldItalic: t.CInt = 3
Fl_Font_Courier: t.CInt = 4
Fl_Font_CourierBold: t.CInt = 5
Fl_Font_CourierItalic: t.CInt = 6
Fl_Font_CourierBoldItalic: t.CInt = 7
Fl_Font_Times: t.CInt = 8
Fl_Font_TimesBold: t.CInt = 9
Fl_Font_TimesItalic: t.CInt = 10
Fl_Font_TimesBoldItalic: t.CInt = 11
Fl_Font_Symbol: t.CInt = 12
Fl_Font_Screen: t.CInt = 13
Fl_Font_ScreenBold: t.CInt = 14
Fl_Font_Zapfdingbats: t.CInt = 15
Fl_Color_ForeGround: t.CInt = 0
Fl_Color_Foreground: t.CInt = 0
Fl_Color_BackGround2: t.CInt = 7
Fl_Color_Background2: t.CInt = 7
Fl_Color_Inactive: t.CInt = 8
Fl_Color_Selection: t.CInt = 15
Fl_Color_Gray0: t.CInt = 32
Fl_Color_Dark3: t.CInt = 39
Fl_Color_Dark2: t.CInt = 45
Fl_Color_Dark1: t.CInt = 47
Fl_Color_FrameDefault: t.CInt = 49
Fl_Color_BackGround: t.CInt = 49
Fl_Color_Background: t.CInt = 49
Fl_Color_Light1: t.CInt = 50
Fl_Color_Light2: t.CInt = 52
Fl_Color_Light3: t.CInt = 54
Fl_Color_Black: t.CInt = 56
Fl_Color_Red: t.CInt = 88
Fl_Color_Green: t.CInt = 63
Fl_Color_Yellow: t.CInt = 95
Fl_Color_Blue: t.CInt = 216
Fl_Color_Magenta: t.CInt = 248
Fl_Color_Cyan: t.CInt = 223
Fl_Color_DarkRed: t.CInt = 72
Fl_Color_DarkGreen: t.CInt = 60
Fl_Color_DarkYellow: t.CInt = 76
Fl_Color_DarkBlue: t.CInt = 136
Fl_Color_DarkMagenta: t.CInt = 152
Fl_Color_DarkCyan: t.CInt = 140
Fl_Color_White: t.CInt = 141
Fl_Event_None: t.CInt = 0
Fl_Event_Push: t.CInt = 1
Fl_Event_Released: t.CInt = 2
Fl_Event_Enter: t.CInt = 3
Fl_Event_Leave: t.CInt = 4
Fl_Event_Drag: t.CInt = 5
Fl_Event_Focus: t.CInt = 6
Fl_Event_Unfocus: t.CInt = 7
Fl_Event_KeyDown: t.CInt = 8
Fl_Event_KeyUp: t.CInt = 9
Fl_Event_Close: t.CInt = 10
Fl_Event_Move: t.CInt = 11
Fl_Event_Shortcut: t.CInt = 12
Fl_Event_Deactivate: t.CInt = 13
Fl_Event_Activate: t.CInt = 14
Fl_Event_Hide: t.CInt = 15
Fl_Event_Show: t.CInt = 16
Fl_Event_Paste: t.CInt = 17
Fl_Event_SelectionClear: t.CInt = 18
Fl_Event_MouseWheel: t.CInt = 19
Fl_Event_DndEnter: t.CInt = 20
Fl_Event_DndDrag: t.CInt = 21
Fl_Event_DndLeave: t.CInt = 22
Fl_Event_DndRelease: t.CInt = 23
Fl_Event_ScreenConfigChanged: t.CInt = 24
Fl_Event_Fullscreen: t.CInt = 25
Fl_Event_ZoomGesture: t.CInt = 26
Fl_Event_ZoomEvent: t.CInt = 27
Fl_Key_None: t.CInt = 0
Fl_Key_Button: t.CInt = 65256
Fl_Key_BackSpace: t.CInt = 65288
Fl_Key_Tab: t.CInt = 65289
Fl_Key_IsoKey: t.CInt = 65292
Fl_Key_Enter: t.CInt = 65293
Fl_Key_Pause: t.CInt = 65299
Fl_Key_ScrollLock: t.CInt = 65300
Fl_Key_Escape: t.CInt = 65307
Fl_Key_Kana: t.CInt = 65326
Fl_Key_Eisu: t.CInt = 65327
Fl_Key_Yen: t.CInt = 65328
Fl_Key_JISUnderscore: t.CInt = 65329
Fl_Key_Home: t.CInt = 65360
Fl_Key_Left: t.CInt = 65361
Fl_Key_Up: t.CInt = 65362
Fl_Key_Right: t.CInt = 65363
Fl_Key_Down: t.CInt = 65364
Fl_Key_PageUp: t.CInt = 65365
Fl_Key_PageDown: t.CInt = 65366
Fl_Key_End: t.CInt = 65367
Fl_Key_Print: t.CInt = 65377
Fl_Key_Insert: t.CInt = 65379
Fl_Key_Menu: t.CInt = 65383
Fl_Key_Help: t.CInt = 65384
Fl_Key_NumLock: t.CInt = 65407
Fl_Key_KP: t.CInt = 65408
Fl_Key_KPEnter: t.CInt = 65421
Fl_Key_KPLast: t.CInt = 65469
Fl_Key_F1: t.CInt = 65470
Fl_Key_F2: t.CInt = 65471
Fl_Key_F3: t.CInt = 65472
Fl_Key_F4: t.CInt = 65473
Fl_Key_F5: t.CInt = 65474
Fl_Key_F6: t.CInt = 65475
Fl_Key_F7: t.CInt = 65476
Fl_Key_F8: t.CInt = 65477
Fl_Key_F9: t.CInt = 65478
Fl_Key_F10: t.CInt = 65479
Fl_Key_F11: t.CInt = 65480
Fl_Key_F12: t.CInt = 65481
Fl_Key_FLast: t.CInt = 65504
Fl_Key_ShiftL: t.CInt = 65505
Fl_Key_ShiftR: t.CInt = 65506
Fl_Key_ControlL: t.CInt = 65507
Fl_Key_ControlR: t.CInt = 65508
Fl_Key_CapsLock: t.CInt = 65509
Fl_Key_MetaL: t.CInt = 65511
Fl_Key_MetaR: t.CInt = 65512
Fl_Key_AltL: t.CInt = 65513
Fl_Key_AltR: t.CInt = 65514
Fl_Key_Delete: t.CInt = 65515
Fl_Shortcut_None: t.CInt = 0
Fl_Shortcut_Shift: t.CInt = 65536
Fl_Shortcut_CapsLock: t.CInt = 131072
Fl_Shortcut_Ctrl: t.CInt = 262144
Fl_Shortcut_Alt: t.CInt = 524288
Fl_Shortcut_Meta: t.CInt = 4194304
Fl_Shortcut_Button1: t.CInt = 16777216
Fl_Shortcut_Button2: t.CInt = 33554432
Fl_Shortcut_Button3: t.CInt = 67108864
Fl_Shortcut_Buttons: t.CInt = 67108865
Fl_CallbackTrigger_Never: t.CInt = 0
Fl_CallbackTrigger_Changed: t.CInt = 1
Fl_CallbackTrigger_NotChanged: t.CInt = 2
Fl_CallbackTrigger_Release: t.CInt = 4
Fl_CallbackTrigger_ReleaseAlways: t.CInt = 6
Fl_CallbackTrigger_EnterKey: t.CInt = 8
Fl_CallbackTrigger_EnterKeyAlways: t.CInt = 10
Fl_CallbackTrigger_EnterKeyChanged: t.CInt = 11
Fl_TextCursor_Normal: t.CInt = 0
Fl_TextCursor_Caret: t.CInt = 1
Fl_TextCursor_Dim: t.CInt = 2
Fl_TextCursor_Block: t.CInt = 3
Fl_TextCursor_Heavy: t.CInt = 4
Fl_Cursor_Default: t.CInt = 0
Fl_Cursor_Arrow: t.CInt = 35
Fl_Cursor_Cross: t.CInt = 66
Fl_Cursor_Wait: t.CInt = 76
Fl_Cursor_Insert: t.CInt = 77
Fl_Cursor_Hand: t.CInt = 31
Fl_Cursor_Help: t.CInt = 47
Fl_Cursor_Move: t.CInt = 27
Fl_Cursor_NS: t.CInt = 78
Fl_Cursor_WE: t.CInt = 79
Fl_Cursor_NWSE: t.CInt = 80
Fl_Cursor_NESW: t.CInt = 81
Fl_Cursor_N: t.CInt = 70
Fl_Cursor_NE: t.CInt = 69
Fl_Cursor_E: t.CInt = 49
Fl_Cursor_SE: t.CInt = 8
Fl_Cursor_S: t.CInt = 9
Fl_Cursor_SW: t.CInt = 7
Fl_Cursor_W: t.CInt = 36
Fl_Cursor_NW: t.CInt = 68
Fl_Cursor_None: t.CInt = 69
Fl_Mode_Rgb: t.CInt = 0
Fl_Mode_Index: t.CInt = 1
Fl_Mode_Double: t.CInt = 2
Fl_Mode_Accum: t.CInt = 4
Fl_Mode_Alpha: t.CInt = 8
Fl_Mode_Depth: t.CInt = 16
Fl_Mode_Stencil: t.CInt = 32
Fl_Mode_Rgb8: t.CInt = 64
Fl_Mode_MultiSample: t.CInt = 128
Fl_Mode_Stereo: t.CInt = 256
Fl_Mode_FakeSingle: t.CInt = 512
Fl_Mode_Opengl3: t.CInt = 513
Fl_PackType_Vertical: t.CInt = 0
Fl_PackType_Horizontal: t.CInt = 1
Fl_ScrollType_None: t.CInt = 0
Fl_ScrollType_Horizontal: t.CInt = 1
Fl_ScrollType_Vertical: t.CInt = 2
Fl_ScrollType_Both: t.CInt = 3
Fl_ScrollType_AlwaysOn: t.CInt = 4
Fl_ScrollType_HorizontalAlways: t.CInt = 5
Fl_ScrollType_VerticalAlways: t.CInt = 6
Fl_ScrollType_BothAlways: t.CInt = 7
Fl_InputType_Normal: t.CInt = 0
Fl_InputType_Float: t.CInt = 1
Fl_InputType_Int: t.CInt = 2
Fl_InputType_Multiline: t.CInt = 4
Fl_InputType_Secret: t.CInt = 5
Fl_InputType_Input: t.CInt = 7
Fl_InputType_Readonly: t.CInt = 8
Fl_InputType_Wrap: t.CInt = 9
Fl_OutputType_Normal: t.CInt = 8
Fl_OutputType_Multiline: t.CInt = 9
Fl_MenuFlag_Normal: t.CInt = 0
Fl_MenuFlag_Inactive: t.CInt = 1
Fl_MenuFlag_Toggle: t.CInt = 2
Fl_MenuFlag_Value: t.CInt = 4
Fl_MenuFlag_Radio: t.CInt = 8
Fl_MenuFlag_Invisible: t.CInt = 16
Fl_MenuFlag_SubmenuPointer: t.CInt = 32
Fl_MenuFlag_Submenu: t.CInt = 64
Fl_MenuFlag_MenuDivider: t.CInt = 128
Fl_MenuFlag_MenuHorizontal: t.CInt = 129
Fl_ChartType_Bar: t.CInt = 0
Fl_ChartType_HorizontalBar: t.CInt = 1
Fl_ChartType_Line: t.CInt = 2
Fl_ChartType_Fill: t.CInt = 3
Fl_ChartType_Spike: t.CInt = 4
Fl_ChartType_Pie: t.CInt = 5
Fl_ChartType_SpecialPie: t.CInt = 6
Fl_ClockType_Square: t.CInt = 0
Fl_ClockType_Round: t.CInt = 1
Fl_TableContext_None: t.CInt = 0
Fl_TableContext_StartPage: t.CInt = 1
Fl_TableContext_EndPage: t.CInt = 2
Fl_TableContext_RowHeader: t.CInt = 4
Fl_TableContext_ColHeader: t.CInt = 8
Fl_TableContext_Cell: t.CInt = 16
Fl_TableContext_Table: t.CInt = 32
Fl_TableContext_RcResize: t.CInt = 33
Fl_TableRowSelectMode_None: t.CInt = 0
Fl_TableRowSelectMode_Single: t.CInt = 1
Fl_TreeSort_None: t.CInt = 0
Fl_TreeSort_Ascending: t.CInt = 1
Fl_TreeSort_Descending: t.CInt = 2
Fl_TreeConnectorStyle_None: t.CInt = 0
Fl_TreeConnectorStyle_Dotted: t.CInt = 1
Fl_TreeConnectorStyle_Solid: t.CInt = 2
Fl_TreeSelect_None: t.CInt = 0
Fl_TreeSelect_Single: t.CInt = 1
Fl_TreeSelect_Multi: t.CInt = 2
Fl_TreeSelect_SingleDraggable: t.CInt = 3
Fl_TreeItemSelect_Deselect: t.CInt = 0
Fl_TreeItemSelect_Select: t.CInt = 1
Fl_TreeItemSelect_Toggle: t.CInt = 2
Fl_TreeReason_None: t.CInt = 0
Fl_TreeReason_Selected: t.CInt = 1
Fl_TreeReason_Deselected: t.CInt = 2
Fl_TreeReason_Reselected: t.CInt = 3
Fl_TreeReason_Opened: t.CInt = 4
Fl_TreeReason_Closed: t.CInt = 5
Fl_TreeItemReselectMode_Once: t.CInt = 0
Fl_TreeItemDrawMode_Default: t.CInt = 0
Fl_TreeItemDrawMode_LabelAndWidget: t.CInt = 1
Fl_TreeItemDrawMode_HeightFromWidget: t.CInt = 2
Fl_SliderType_Vertical: t.CInt = 0
Fl_SliderType_Horizontal: t.CInt = 1
Fl_SliderType_VerticalFill: t.CInt = 2
Fl_SliderType_HorizontalFill: t.CInt = 3
Fl_SliderType_VerticalNice: t.CInt = 4
Fl_SliderType_HorizontalNice: t.CInt = 5
Fl_DialType_Normal: t.CInt = 0
Fl_DialType_Line: t.CInt = 1
Fl_DialType_Fill: t.CInt = 2
Fl_CounterType_Normal: t.CInt = 0
Fl_CounterType_Simple: t.CInt = 1
Fl_ScrollbarType_Vertical: t.CInt = 0
Fl_ScrollbarType_Horizontal: t.CInt = 1
Fl_ScrollbarType_VerticalFill: t.CInt = 2
Fl_ScrollbarType_HorizontalFill: t.CInt = 3
Fl_ScrollbarType_VerticalNice: t.CInt = 4
Fl_ScrollbarType_HorizontalNice: t.CInt = 5
Fl_WindowType_Normal: t.CInt = 240
Fl_WindowType_Double: t.CInt = 241
Fl_Wrap_None: t.CInt = 0
Fl_Wrap_At_Column: t.CInt = 1
Fl_Wrap_At_Pixel: t.CInt = 2
Fl_Drag_None: t.CInt = -2
Fl_Drag_Start_Dnd: t.CInt = -1
Fl_Drag_Char: t.CInt = 0
Fl_Drag_Word: t.CInt = 1
Fl_Drag_Line: t.CInt = 2
Fl_Damage_Child: t.CInt = 0
Popup1: t.CInt = 1
Popup2: t.CInt = 2
Popup12: t.CInt = 3
Popup3: t.CInt = 4
Popup13: t.CInt = 5
Popup23: t.CInt = 6
Fl_FlexType_Column: t.CInt = 0
Fl_RgbScaling_Nearest: t.CInt = 0
Fl_Table_RESIZE_NONE: t.CInt = 0
Fl_Table_RESIZE_COL_LEFT: t.CInt = 1
Fl_Table_RESIZE_COL_RIGHT: t.CInt = 2
Fl_Table_RESIZE_ROW_ABOVE: t.CInt = 3
Fl_Table_RESIZE_ROW_BELOW: t.CInt = 4
# ---- Fl_Native_File_Chooser 类型/选项(FLTK Fl_Native_File_Chooser.H,与
# Fl_FileDialogType_*/Fl_FileDialogOptions_* 同值,按 FLTK 原名提供)----
Fl_Native_File_Chooser_BROWSE_FILE: t.CInt = 0
Fl_Native_File_Chooser_BROWSE_DIRECTORY: t.CInt = 1
Fl_Native_File_Chooser_BROWSE_MULTI_FILE: t.CInt = 2
Fl_Native_File_Chooser_BROWSE_MULTI_DIRECTORY: t.CInt = 3
Fl_Native_File_Chooser_BROWSE_SAVE_FILE: t.CInt = 4
Fl_Native_File_Chooser_BROWSE_SAVE_DIRECTORY: t.CInt = 5
Fl_Native_File_Chooser_NO_OPTIONS: t.CInt = 0
Fl_Native_File_Chooser_SAVEAS_CONFIRM: t.CInt = 1
Fl_Native_File_Chooser_NEW_FOLDER: t.CInt = 2
Fl_Native_File_Chooser_PREVIEW: t.CInt = 4
Fl_Native_File_Chooser_USE_FILTER_EXT: t.CInt = 8
+118
View File
@@ -0,0 +1,118 @@
import t, c
# ============================================================
# fltk/_types.vp — FLTK 不透明对象指针 typedef(对接 cfltk C API)
# ============================================================
# 所有 FLTK C++ 对象在 FFI 中一律按不透明指针处理,生命周期由
# cfltk/fltk 库管理(new/delete 见各 *_delete / *_free)。
Fl_AdjusterPtr: t.CTypedef = t.CPtr
Fl_Anim_GIF_ImagePtr: t.CTypedef = t.CPtr
Fl_BMP_ImagePtr: t.CTypedef = t.CPtr
Fl_BoxPtr: t.CTypedef = t.CPtr
Fl_BrowserPtr: t.CTypedef = t.CPtr
Fl_ButtonPtr: t.CTypedef = t.CPtr
Fl_ChartPtr: t.CTypedef = t.CPtr
Fl_Check_BrowserPtr: t.CTypedef = t.CPtr
Fl_Check_ButtonPtr: t.CTypedef = t.CPtr
Fl_ChoicePtr: t.CTypedef = t.CPtr
Fl_ClockPtr: t.CTypedef = t.CPtr
Fl_Color_ChooserPtr: t.CTypedef = t.CPtr
Fl_CounterPtr: t.CTypedef = t.CPtr
Fl_DialPtr: t.CTypedef = t.CPtr
Fl_Double_WindowPtr: t.CTypedef = t.CPtr
Fl_File_BrowserPtr: t.CTypedef = t.CPtr
Fl_File_ChooserPtr: t.CTypedef = t.CPtr
Fl_File_InputPtr: t.CTypedef = t.CPtr
Fl_Fill_DialPtr: t.CTypedef = t.CPtr
Fl_Fill_SliderPtr: t.CTypedef = t.CPtr
Fl_FlexPtr: t.CTypedef = t.CPtr
Fl_Float_InputPtr: t.CTypedef = t.CPtr
Fl_GIF_ImagePtr: t.CTypedef = t.CPtr
Fl_Gl_WindowPtr: t.CTypedef = t.CPtr
Fl_Glut_WindowPtr: t.CTypedef = t.CPtr
Fl_GridPtr: t.CTypedef = t.CPtr
Fl_GroupPtr: t.CTypedef = t.CPtr
Fl_Help_DialogPtr: t.CTypedef = t.CPtr
Fl_Help_ViewPtr: t.CTypedef = t.CPtr
Fl_Hold_BrowserPtr: t.CTypedef = t.CPtr
Fl_Hor_Fill_SliderPtr: t.CTypedef = t.CPtr
Fl_Hor_Nice_SliderPtr: t.CTypedef = t.CPtr
Fl_Hor_SliderPtr: t.CTypedef = t.CPtr
Fl_Hor_Value_SliderPtr: t.CTypedef = t.CPtr
Fl_ICO_ImagePtr: t.CTypedef = t.CPtr
Fl_ImagePtr: t.CTypedef = t.CPtr
Fl_Image_SurfacePtr: t.CTypedef = t.CPtr
Fl_InputPtr: t.CTypedef = t.CPtr
Fl_Input_ChoicePtr: t.CTypedef = t.CPtr
Fl_Int_InputPtr: t.CTypedef = t.CPtr
Fl_JPEG_ImagePtr: t.CTypedef = t.CPtr
Fl_Light_ButtonPtr: t.CTypedef = t.CPtr
Fl_Line_DialPtr: t.CTypedef = t.CPtr
Fl_Menu_BarPtr: t.CTypedef = t.CPtr
Fl_Menu_ButtonPtr: t.CTypedef = t.CPtr
Fl_Menu_ItemPtr: t.CTypedef = t.CPtr
Fl_Menu_WindowPtr: t.CTypedef = t.CPtr
Fl_Multi_BrowserPtr: t.CTypedef = t.CPtr
Fl_Multiline_InputPtr: t.CTypedef = t.CPtr
Fl_Multiline_OutputPtr: t.CTypedef = t.CPtr
Fl_Native_File_ChooserPtr: t.CTypedef = t.CPtr
Fl_Nice_SliderPtr: t.CTypedef = t.CPtr
Fl_OutputPtr: t.CTypedef = t.CPtr
Fl_Overlay_GroupPtr: t.CTypedef = t.CPtr
Fl_Overlay_WindowPtr: t.CTypedef = t.CPtr
Fl_PNG_ImagePtr: t.CTypedef = t.CPtr
Fl_PNM_ImagePtr: t.CTypedef = t.CPtr
Fl_PackPtr: t.CTypedef = t.CPtr
Fl_PixmapPtr: t.CTypedef = t.CPtr
Fl_PreferencesPtr: t.CTypedef = t.CPtr
Fl_PrinterPtr: t.CTypedef = t.CPtr
Fl_ProgressPtr: t.CTypedef = t.CPtr
Fl_RGB_ImagePtr: t.CTypedef = t.CPtr
Fl_Radio_ButtonPtr: t.CTypedef = t.CPtr
Fl_Radio_Light_ButtonPtr: t.CTypedef = t.CPtr
Fl_Radio_Round_ButtonPtr: t.CTypedef = t.CPtr
Fl_Repeat_ButtonPtr: t.CTypedef = t.CPtr
Fl_Return_ButtonPtr: t.CTypedef = t.CPtr
Fl_RollerPtr: t.CTypedef = t.CPtr
Fl_Round_ButtonPtr: t.CTypedef = t.CPtr
Fl_SVG_File_SurfacePtr: t.CTypedef = t.CPtr
Fl_SVG_ImagePtr: t.CTypedef = t.CPtr
Fl_ScrollPtr: t.CTypedef = t.CPtr
Fl_ScrollbarPtr: t.CTypedef = t.CPtr
Fl_Secret_InputPtr: t.CTypedef = t.CPtr
Fl_Select_BrowserPtr: t.CTypedef = t.CPtr
Fl_Shared_ImagePtr: t.CTypedef = t.CPtr
Fl_Shortcut_ButtonPtr: t.CTypedef = t.CPtr
Fl_Simple_CounterPtr: t.CTypedef = t.CPtr
Fl_Simple_TerminalPtr: t.CTypedef = t.CPtr
Fl_Single_WindowPtr: t.CTypedef = t.CPtr
Fl_SliderPtr: t.CTypedef = t.CPtr
Fl_SpinnerPtr: t.CTypedef = t.CPtr
Fl_Surface_DevicePtr: t.CTypedef = t.CPtr
Fl_Sys_Menu_BarPtr: t.CTypedef = t.CPtr
Fl_TablePtr: t.CTypedef = t.CPtr
Fl_Table_RowPtr: t.CTypedef = t.CPtr
Fl_TabsPtr: t.CTypedef = t.CPtr
Fl_TerminalPtr: t.CTypedef = t.CPtr
Fl_Terminal_ScrollbarPtr: t.CTypedef = t.CPtr
Fl_Terminal_Utf8CharPtr: t.CTypedef = t.CPtr
Fl_Text_BufferPtr: t.CTypedef = t.CPtr
Fl_Text_DisplayPtr: t.CTypedef = t.CPtr
Fl_Text_EditorPtr: t.CTypedef = t.CPtr
Fl_TilePtr: t.CTypedef = t.CPtr
Fl_Tiled_ImagePtr: t.CTypedef = t.CPtr
Fl_Toggle_ButtonPtr: t.CTypedef = t.CPtr
Fl_TreePtr: t.CTypedef = t.CPtr
Fl_Tree_ItemPtr: t.CTypedef = t.CPtr
Fl_Tree_Item_ArrayPtr: t.CTypedef = t.CPtr
Fl_Value_InputPtr: t.CTypedef = t.CPtr
Fl_Value_OutputPtr: t.CTypedef = t.CPtr
Fl_Value_SliderPtr: t.CTypedef = t.CPtr
Fl_WidgetPtr: t.CTypedef = t.CPtr
Fl_Widget_TrackerPtr: t.CTypedef = t.CPtr
Fl_WindowPtr: t.CTypedef = t.CPtr
Fl_WizardPtr: t.CTypedef = t.CPtr
Fl_XBM_ImagePtr: t.CTypedef = t.CPtr
Fl_XPM_ImagePtr: t.CTypedef = t.CPtr
+92
View File
@@ -0,0 +1,92 @@
---
Language: Cpp
AccessModifierOffset: -2
AlignAfterOpenBracket: BlockIndent
AlignConsecutiveAssignments: true
AlignConsecutiveDeclarations: false
AlignEscapedNewlines: Right
AlignOperands: true
AlignTrailingComments: true
AllowAllParametersOfDeclarationOnNextLine: true
AllowShortBlocksOnASingleLine: false
AllowShortCaseLabelsOnASingleLine: false
AllowShortFunctionsOnASingleLine: false
AllowShortIfStatementsOnASingleLine: false
AllowShortLoopsOnASingleLine: false
AlwaysBreakAfterDefinitionReturnType: None
AlwaysBreakAfterReturnType: None
AlwaysBreakBeforeMultilineStrings: false
AlwaysBreakTemplateDeclarations: true
BinPackArguments: false
BinPackParameters: false
BreakBeforeBraces: Custom
BraceWrapping:
AfterClass: false
AfterControlStatement: false
AfterEnum: false
AfterFunction: false
AfterNamespace: false
AfterObjCDeclaration: false
AfterStruct: false
AfterUnion: false
AfterExternBlock: false
BeforeCatch: false
BeforeElse: false
IndentBraces: false
SplitEmptyFunction: false
SplitEmptyRecord: false
SplitEmptyNamespace: false
BreakBeforeBinaryOperators: None
BreakBeforeInheritanceComma: false
BreakBeforeTernaryOperators: true
BreakConstructorInitializersBeforeComma: false
BreakConstructorInitializers: BeforeColon
BreakStringLiterals: true
ColumnLimit: 80
CommentPragmas: '^ IWYU pragma:'
CompactNamespaces: false
ConstructorInitializerAllOnOneLineOrOnePerLine: false
ConstructorInitializerIndentWidth: 4
ContinuationIndentWidth: 4
Cpp11BracedListStyle: true
DerivePointerAlignment: false
DisableFormat: false
ExperimentalAutoDetectBinPacking: false
FixNamespaceComments: true
IncludeBlocks: Preserve
IndentCaseLabels: false
IndentPPDirectives: None
IndentWidth: 4
IndentWrappedFunctionNames: false
KeepEmptyLinesAtTheStartOfBlocks: true
MacroBlockBegin: ''
MacroBlockEnd: ''
MaxEmptyLinesToKeep: 1
NamespaceIndentation: None
PenaltyBreakAssignment: 2
PenaltyBreakBeforeFirstCallParameter: 19
PenaltyBreakComment: 300
PenaltyBreakFirstLessLess: 120
PenaltyBreakString: 1000
PenaltyExcessCharacter: 1000000
PenaltyReturnTypeOnItsOwnLine: 60
PointerAlignment: Right
ReflowComments: true
SortIncludes: true
SortUsingDeclarations: true
SpaceAfterCStyleCast: false
SpaceAfterTemplateKeyword: true
SpaceBeforeAssignmentOperators: true
SpaceBeforeParens: ControlStatements
SpaceInEmptyParentheses: false
SpacesBeforeTrailingComments: 1
SpacesInAngles: false
SpacesInContainerLiterals: true
SpacesInCStyleCastParentheses: false
SpacesInParentheses: false
SpacesInSquareBrackets: false
Standard: Cpp11
TabWidth: 8
UseTab: Never
...
+22
View File
@@ -0,0 +1,22 @@
---
Checks: 'clang-diagnostic-*,
clang-analyzer-*,
cppcoreguidelines-*,
modernize-*,
cert-*,
-modernize-use-trailing-return-type,
-cppcoreguidelines-pro-bounds-pointer-arithmetic,
-cppcoreguidelines-owning-memory,
-cppcoreguidelines-pro-bounds-array-to-pointer-decay,
-cppcoreguidelines-macro-usage,
-cppcoreguidelines-avoid-magic-numbers,
-cppcoreguidelines-pro-type-const-cast,
-cppcoreguidelines-pro-type-cstyle-cast,
-modernize-deprecated-headers,
-modernize-use-override,
-cppcoreguidelines-pro-type-vararg,
-cppcoreguidelines-avoid-c-arrays,
-modernize-avoid-c-arrays,
-cppcoreguidelines-pro-bounds-constant-array-index'
WarningsAsErrors: true
HeaderFilterRegex: ''
+24
View File
@@ -0,0 +1,24 @@
CMakeLists.txt.user
CMakeCache.txt
CMakeFiles
CMakeScripts
Testing
Makefile
cmake_install.cmake
install_manifest.txt
compile_commands.json
CTestTestfile.cmake
_deps
temp.*
.DS_Store
compile_commands.json
/.clangd
/bin
/temp
/.cache
/examples/bin
/out
/\.vs/cfltk/FileContentIndex
/\.vs/cfltk/v17
.*\.sqlite
/build
+4
View File
@@ -0,0 +1,4 @@
[submodule "fltk"]
path = fltk
url = https://github.com/fltk/fltk
branch = master
+253
View File
@@ -0,0 +1,253 @@
cmake_minimum_required(VERSION 3.28)
set(CFLTK_PROJECT_VERSION 0.1.8)
project(
cfltk2
HOMEPAGE_URL https://github.com/MoAlyousef/cfltk
DESCRIPTION "C Bindings for FLTK"
VERSION ${CFLTK_PROJECT_VERSION}
LANGUAGES C CXX)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)
include(GNUInstallDirs)
if(APPLE)
enable_language(OBJC)
endif()
option(CFLTK_BUILD_SHARED "Builds a shared library" OFF)
option(USE_SYSTEM_FLTK "Finds and uses the installed FLTK library" OFF)
option(CFLTK_USE_OPENGL "Uses OpenGL" OFF)
option(CFLTK_SINGLE_THREADED "Disable multithreaded support" OFF)
option(CFLTK_LINK_IMAGES "Links image libraries" ON)
option(CFLTK_CARGO_BUILD "cfltk2 is built using Cargo" OFF)
option(CFLTK_MSVC_CRT_STATIC "cfltk2 is built with crt-static" OFF)
option(CFLTK_USE_CAIROEXT "Uses CairoExt FLTK feature" OFF)
option(CFLTK_USE_FPIC "Compile code with -fPIC to allow incorporation into shared lib." OFF)
option(CFLTK_SYSTEM_JPEG "Link installed libjpeg" OFF)
option(CFLTK_SYSTEM_PNG "Link installed libpng" OFF)
option(CFLTK_SYSTEM_ZLIB "Link installed zlib" OFF)
if (CFLTK_USE_FPIC OR CFLTK_BUILD_SHARED)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
endif()
if(MSVC)
string(REGEX REPLACE "/EHsc" "/EHs-c-" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
add_definitions("/D_CRT_SECURE_NO_WARNINGS /wd4099 /wd4996")
if(CFLTK_MSVC_CRT_STATIC)
set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
string(REGEX REPLACE "/MD" "/MT" CMAKE_CXX_FLAGS_RELEASE
"${CMAKE_CXX_FLAGS_RELEASE}")
string(REGEX REPLACE "/MD" "/MT" CMAKE_C_FLAGS_RELEASE
"${CMAKE_C_FLAGS_RELEASE}")
endif()
elseif(ANDROID)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -frtti")
else()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-exceptions")
endif()
# If cmake can't find the installed fltk, you might have to set the FLTK_DIR
# enviromental variable, export FLTK_DIR=/path/to/fltk
if(USE_SYSTEM_FLTK)
find_package(FLTK 1.5 CONFIG REQUIRED)
else()
file(GLOB RESULT "fltk")
list(LENGTH RESULT RES_LEN)
if(RES_LEN EQUAL 0)
message(FATAL_ERROR "fltk submodule not initialized! Run: git submodule update --init --recursive")
endif()
set(FLTK_USE_SYSTEM_LIBJPEG ${CFLTK_SYSTEM_JPEG} CACHE BOOL "" FORCE)
set(FLTK_USE_SYSTEM_LIBPNG ${CFLTK_SYSTEM_PNG} CACHE BOOL "" FORCE)
set(FLTK_USE_SYSTEM_ZLIB ${CFLTK_SYSTEM_ZLIB} CACHE BOOL "" FORCE)
add_subdirectory(fltk)
endif()
file(GLOB_RECURSE CFLTK_HEADER_FILES "include/cfltk2/*.h*")
set(CFLTK_SRCS
src/cfl_new.cpp
src/cfl_lock.cpp
src/cfl.cpp
src/cfl_window.cpp
src/cfl_button.cpp
src/cfl_widget.cpp
src/cfl_group.cpp
src/cfl_text.cpp
src/cfl_box.cpp
src/cfl_input.cpp
src/cfl_menu.cpp
src/cfl_dialog.cpp
src/cfl_valuator.cpp
src/cfl_browser.cpp
src/cfl_misc.cpp
src/cfl_image.cpp
src/cfl_draw.cpp
src/cfl_table.cpp
src/cfl_tree.cpp
src/cfl_surface.cpp
src/cfl_font.cpp
src/cfl_utils.cpp
src/cfl_prefs.cpp
src/cfl_term.cpp
)
if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
set(CFLTK_SRCS ${CFLTK_SRCS} src/cfl_nswindow.m)
endif()
if(UNIX AND NOT APPLE)
set(CFLTK_SRCS ${CFLTK_SRCS} src/cfl_platform.cpp)
endif()
if(NOT ANDROID)
set(CFLTK_SRCS ${CFLTK_SRCS} src/cfl_printer.cpp)
endif()
if(CFLTK_USE_OPENGL)
set(CFLTK_SRCS ${CFLTK_SRCS} src/glad.c)
endif()
if(CFLTK_USE_CAIROEXT)
find_package(PkgConfig REQUIRED)
pkg_check_modules(CAIRO REQUIRED IMPORTED_TARGET "cairo")
endif()
if(CFLTK_BUILD_SHARED)
add_library(cfltk2 SHARED)
else()
add_library(cfltk2 STATIC)
endif()
add_library(cfltk2::cfltk2 ALIAS cfltk2)
# message(FATAL_ERROR "${CFLTK_HEADER_FILES}")
target_sources(
cfltk2
PRIVATE ${CFLTK_SRCS}
PUBLIC
FILE_SET HEADERS
BASE_DIRS ${CMAKE_CURRENT_LIST_DIR}/include
FILES "${CFLTK_HEADER_FILES}"
)
if(CFLTK_CARGO_BUILD AND CFLTK_BUILD_SHARED)
add_custom_command(
TARGET cfltk2
POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:cfltk2>
"${CMAKE_INSTALL_PREFIX}/../../../../$<TARGET_FILE_NAME:cfltk2>")
endif()
# if(CFLTK_CARGO_BUILD AND (UNIX OR MSYS OR MINGW))
# add_custom_command(
# TARGET cfltk2
# POST_BUILD
# COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_INSTALL_PREFIX}/bin/fltk-config
# "${CMAKE_INSTALL_PREFIX}/../../../../fltk-config")
# endif()
target_compile_features(cfltk2 PRIVATE cxx_std_17)
set(CFLTK_LIBS fltk::fltk)
set(pc_req_private)
set(pc_libs_private "-lfltk")
set(other_c_flags)
if(CFLTK_LINK_IMAGES)
target_compile_definitions(cfltk2 PUBLIC CFLTK_USE_IMAGES)
list(APPEND CFLTK_LIBS fltk::images)
string(APPEND pc_libs_private
" -lfltk_images")
if(NOT CFLTK_SYSTEM_JPEG)
list(APPEND CFLTK_LIBS fltk::jpeg)
string(APPEND pc_libs_private
" -lfltk_jpeg")
endif()
if(NOT CFLTK_SYSTEM_PNG)
list(APPEND CFLTK_LIBS fltk::png)
string(APPEND pc_libs_private
" -lfltk_png")
endif()
if(NOT CFLTK_SYSTEM_ZLIB)
list(APPEND CFLTK_LIBS fltk::z)
string(APPEND pc_libs_private
" -lfltk_z")
endif()
endif()
if(CFLTK_USE_OPENGL)
set(CFLTK_LIBS ${CFLTK_LIBS} fltk::gl)
target_compile_definitions(cfltk2 PUBLIC CFLTK_USE_GL)
string(APPEND pc_libs_private " -lfltk_gl")
string(APPEND other_c_flags "-DCFLTK_USE_GL")
if(UNIX AND NOT APPLE)
string(APPEND pc_req_private " glx glu gl wayland-egl EGL")
elseif(APPLE)
string(APPEND pc_libs_private " -framework OpenGL")
elseif(WIN32)
string(APPEND pc_libs_private " -lopengl32 -lglu32")
endif()
endif()
if(CFLTK_USE_CAIROEXT)
if(WIN32 OR APPLE)
string(APPEND pc_req_private " cairo")
endif()
target_link_libraries(cfltk2 PUBLIC PkgConfig::CAIRO)
endif()
if(CFLTK_SINGLE_THREADED)
target_compile_definitions(cfltk2 PUBLIC CFLTK_SINGLE_THREADED)
string(APPEND other_c_flags " -DCFLTK_SINGLE_THREADED")
endif()
target_link_libraries(cfltk2 PUBLIC ${CFLTK_LIBS})
set_target_properties(cfltk2 PROPERTIES VERSION ${CFLTK_PROJECT_VERSION})
include(CMakePackageConfigHelpers)
set(cfltk2_INSTALL_CMAKEDIR "${CMAKE_INSTALL_LIBDIR}/cmake/cfltk2")
install(
TARGETS cfltk2
EXPORT cfltk2Targets
FILE_SET HEADERS DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
)
install(
EXPORT cfltk2Targets
FILE cfltk2Targets.cmake
NAMESPACE cfltk2::
DESTINATION "${cfltk2_INSTALL_CMAKEDIR}"
)
configure_package_config_file(
"${CMAKE_CURRENT_LIST_DIR}/cmake/cfltk2Config.cmake.in"
"${CMAKE_CURRENT_BINARY_DIR}/cfltk2Config.cmake"
INSTALL_DESTINATION "${cfltk2_INSTALL_CMAKEDIR}"
NO_CHECK_REQUIRED_COMPONENTS_MACRO
)
write_basic_package_version_file(
"${CMAKE_CURRENT_BINARY_DIR}/cfltk2ConfigVersion.cmake"
VERSION ${CFLTK_PROJECT_VERSION}
COMPATIBILITY SameMajorVersion
)
install(
FILES
"${CMAKE_CURRENT_BINARY_DIR}/cfltk2Config.cmake"
"${CMAKE_CURRENT_BINARY_DIR}/cfltk2ConfigVersion.cmake"
DESTINATION "${cfltk2_INSTALL_CMAKEDIR}"
)
include(${CMAKE_CURRENT_LIST_DIR}/cmake/cfltk2-pkgconfig.cmake)
+21
View File
@@ -0,0 +1,21 @@
MIT License
Copyright (c) 2019 Mohammed Alyousef
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
+151
View File
@@ -0,0 +1,151 @@
# cfltk
C89 bindings for the FLTK gui library, which can be used as basis for C applications or for other bindings in other languages.
- The official fltk [docs](https://www.fltk.org/doc-1.4/annotated.html).
- The official fltk [repo](https://github.com/fltk/fltk).
## Api
The cfltk api follows the FLTK api mostly, which would make it easier to refer to the FLTK docs.
As an example:
```c++
Fl_Window *w = new Fl_Window(100, 100, 400, 300, "name");
w->end();
w->show();
```
becomes:
```c
Fl_Window *w = Fl_Window_new(100, 100, 400, 300, "name");
Fl_Window_end(w);
Fl_Window_show(w);
```
The fltk-rs repo shows an example wrapper around cfltk.
## Usage
To add to your project, you can add this project as a submodule:
```
$ git submodule add https://github.com/moalyousef/cfltk
$ git submodule update --init --recursive
```
or by cloning the repo:
```
$ git clone https://github.com/moalyousef/cfltk --recurse-submodules
```
You can build your project using cmake on the command line or gui:
```
$ cmake -B bin -S .
$ cmake --build bin --parallel
```
An example CMakeLists.txt file:
```cmake
cmake_minimum_required(VERSION 3.15)
project(app)
add_subdirectory(cfltk)
add_executable(main main.c)
target_link_libraries(main PRIVATE cfltk2::cfltk2 fltk::fltk fltk::images fltk::png fltk::z) # as needed
# for windows, might be needed in some setups like creating a library
target_link_libraries(main PRIVATE ws2_32 comctl32 gdi32 gdiplus oleaut32 ole32 uuid shell32 advapi32 comdlg32 winspool user32 kernel32 odbc32)
# for apple, might be needed in some setups like creating a library
target_link_libraries(main PRIVATE -framework Cocoa)
# for linux, might be needed in some setups like creating a library
target_link_libraries(main PRIVATE pthread X11 Xext Xinerama Xcursor Xrender Xfixes Xft fontconfig pango-1.0 pangoxft-1.0 gobject-2.0 cairo pangocairo-1.0)
```
Options which can be used with cmake:
```
$ cmake -B bin -S . \
-DCMAKE_BUILD_TYPE=Release \
-DFLTK_USE_SYSTEM_LIBPNG=OFF \
-DFLTK_USE_SYSTEM_LIBJPEG=OFF \
-DFLTK_USE_SYSTEM_ZLIB=OFF \
-DFLTK_BUILD_GL=OFF \
-DFLTK_BUILD_EXAMPLES=OFF \
-DFLTK_BUILD_TEST=OFF \
-DFLTK_OPTION_LARGE_FILE=ON \
-DFLTK_BUILD_HTML_DOCS=OFF \
-DFLTK_BUILD_PDF_DOCS=OFF \
```
For pango support on linux (for rtl and cjk text), you can use `-DFLTK_USE_PANGO=ON`.
Otherwise, these options can be added to the CMakeLists.txt file:
```cmake
set(FLTK_USE_SYSTEM_LIBPNG OFF CACHE BOOL " " FORCE)
set(FLTK_USE_SYSTEM_LIBJPEG OFF CACHE BOOL " " FORCE)
set(FLTK_USE_SYSTEM_ZLIB OFF CACHE BOOL " " FORCE)
set(FLTK_BUILD_GL OFF CACHE BOOL " " FORCE)
set(FLTK_BUILD_EXAMPLES OFF CACHE BOOL " " FORCE)
set(FLTK_BUILD_TEST OFF CACHE BOOL " " FORCE)
set(OPTION_LARGE_FILE ON CACHE BOOL " " FORCE)
set(FLTK_BUILD_HTML_DOCS OFF CACHE BOOL " " FORCE)
set(FLTK_BUILD_PDF_DOCS OFF CACHE BOOL " " FORCE)
```
An example app:
```c
#include <cfl.h>
#include <cfl_button.h>
#include <cfl_image.h>
#include <cfl_widget.h>
#include <cfl_window.h>
#include <stdlib.h>
void cb(Fl_Widget *w, void *data) { Fl_Widget_set_label(w, "Works!"); }
int main(void) {
Fl_init_all(); // init all styles
Fl_register_images(); // necessary for image support
Fl_lock(); // necessary for multithreaded support
Fl_Window *w = Fl_Window_new(100, 100, 400, 300, NULL);
Fl_Button *b = Fl_Button_new(160, 210, 80, 40, "Click me");
Fl_Window_end(w);
Fl_Window_show(w);
Fl_Button_set_callback(b, cb, NULL);
return Fl_run();
}
```
## Examples
More examples can be found in the examples directory.
- [counter](examples/counter.c)
![alt_test](examples/flutter_like.jpg)
## Dependencies
CMake (version > 3.7), Git and a C++17 compiler need to be installed and in your PATH for a crossplatform build from source.
- Windows:
- MSVC: Windows SDK
- Gnu: No dependencies
- MacOS: No dependencies.
- Linux: X11 and OpenGL development headers need to be installed for development. The libraries themselves are available on linux distros with a graphical user interface.
For Debian-based GUI distributions, that means running:
```
$ sudo apt-get install libx11-dev libxext-dev libxft-dev libxinerama-dev libxcursor-dev libxrender-dev libxfixes-dev libpango1.0-dev libgl1-mesa-dev libglu1-mesa-dev
```
For RHEL-based GUI distributions, that means running:
```
$ sudo yum groupinstall "X Software Development" && yum install pango-devel libXinerama-devel libstdc++-static
```
For Arch-based GUI distributions, that means running:
```
$ sudo pacman -S libx11 libxext libxft libxinerama libxcursor libxrender libxfixes pango cairo libgl mesa --needed
```
For Alpine linux:
```
$ apk add pango-dev fontconfig-dev libxinerama-dev libxfixes-dev libxcursor-dev mesa-gl
```
## Safety
Both FLTK and the wrapper are exception safe. Widget, image and Fl_Text_Buffer mutating wrapper functions are thread-safe. FLTK manages the lifetime of widgets, which would delete any child widgets when the parent is deleted. The wrapper also provides an Fl_Widget_Tracker object which can be used to prevent use-after-free errors.
The wrapper itself doesn't perform null checks on pointers returned from FLTK nor on pointers passed to it. Allocation failure should also be checked manually by the consuming user of the wrapper.
+15
View File
@@ -0,0 +1,15 @@
prefix="@CMAKE_INSTALL_PREFIX@"
exec_prefix="${prefix}"
libdir="${prefix}/lib"
includedir="${prefix}/include"
Name: @PROJECT_NAME@
Description: @CMAKE_PROJECT_DESCRIPTION@
URL: @CMAKE_PROJECT_HOMEPAGE_URL@
Version: @PROJECT_VERSION@
Requires:
Requires.private: @pc_req_private@
Cflags: -I"${includedir}" @other_c_flags@
Libs: -L"${libdir}" -l@PROJECT_NAME@
Libs.private: -L"${libdir}" -l@PROJECT_NAME@ @pc_libs_private@
@@ -0,0 +1,38 @@
# gen pkg-config
include_guard(GLOBAL)
if(UNIX AND NOT APPLE)
string(
APPEND
pc_req_private
" x11 xinerama xcursor xfixes xext xrender xft fontconfig cairo pango pangoxft pangocairo gobject-2.0 wayland-client wayland-cursor xkbcommon"
)
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
string(APPEND pc_libs_private " -ldbus-1 -lsupc++ -ldl -pthread")
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
string(APPEND pc_libs_private " -ldbus-1 -lc++")
endif()
elseif(APPLE)
string(
APPEND
pc_libs_private
" -framework Cocoa -framework Carbon -framework ApplicationServices -framework OpenGL -lc++"
)
elseif(WIN32)
string(
APPEND
pc_libs_private
" -lgdiplus -lws2_32 -lcomctl32 -lgdi32 -loleaut32 -lole32 -luuid -lshell32 -ladvapi32 -lcomdlg32 -lwinspool -luser32 -lkernel32 -lodbc32"
)
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
string(APPEND pc_libs_private " -lgcc -lstdc++ -pthread")
endif()
endif()
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/cfltk2.pc.in
${CMAKE_CURRENT_BINARY_DIR}/cfltk2.pc @ONLY)
install(
FILES ${CMAKE_CURRENT_BINARY_DIR}/cfltk2.pc
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/pkgconfig)
@@ -0,0 +1,6 @@
@PACKAGE_INIT@
include(CMakeFindDependencyMacro)
find_dependency(FLTK CONFIG)
include("${CMAKE_CURRENT_LIST_DIR}/cfltk2Targets.cmake")
+13
View File
@@ -0,0 +1,13 @@
# Remove FLTK_USE_PANGO on Windows and MacOS
# cmake -B bin -S cfltk \
-DFLTK_USE_SYSTEM_LIBPNG=OFF \
-DFLTK_USE_SYSTEM_LIBJPEG=OFF \
-DFLTK_USE_SYSTEM_ZLIB=OFF \
-DFLTK_USE_PANGO=OFF \
-DFLTK_BUILD_EXAMPLES=OFF \
-DFLTK_BUILD_TEST=OFF \
-DFLTK_OPTION_LARGE_FILE=ON \
-DFLTK_BUILD_HTML_DOCS=OFF \
-DFLTK_BUILD_PDF_DOCS=OFF \
-DFLTK_USE_PANGO=ON
@@ -0,0 +1,44 @@
cmake_minimum_required(VERSION 3.15)
project(cfltk_examples)
set(FLTK_USE_SYSTEM_LIBPNG OFF CACHE BOOL " " FORCE)
set(FLTK_USE_SYSTEM_LIBJPEG OFF CACHE BOOL " " FORCE)
set(FLTK_USE_SYSTEM_ZLIB OFF CACHE BOOL " " FORCE)
set(FLTK_BUILD_GL OFF CACHE BOOL " " FORCE)
set(CFLTK_USE_OPENGL OFF CACHE BOOL " " FORCE)
set(FLTK_BUILD_EXAMPLES OFF CACHE BOOL " " FORCE)
set(FLTK_BUILD_TEST OFF CACHE BOOL " " FORCE)
set(FLTK_OPTION_LARGE_FILE ON CACHE BOOL " " FORCE)
set(FLTK_BUILD_HTML_DOCS OFF CACHE BOOL " " FORCE)
set(FLTK_BUILD_PDF_DOCS OFF CACHE BOOL " " FORCE)
if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
set(FLTK_USE_PANGO ON CACHE BOOL " " FORCE)
set(FLTK_GRAPHICS_CAIRO ON CACHE BOOL " " FORCE)
endif()
set(CMAKE_CXX_STANDARD 14)
add_subdirectory(${CMAKE_CURRENT_LIST_DIR}/.. cfltk)
add_executable(hello hello.c)
target_link_libraries(hello PUBLIC cfltk2::cfltk2 fltk::fltk fltk::images fltk::png fltk::z)
add_executable(img img.c)
target_link_libraries(img PUBLIC cfltk2::cfltk2 fltk::fltk fltk::images fltk::png fltk::z)
add_executable(handler handler.c)
target_link_libraries(handler PUBLIC cfltk2::cfltk2 fltk::fltk fltk::images fltk::png fltk::z)
add_executable(handler2 handler2.c)
target_link_libraries(handler2 PUBLIC cfltk2::cfltk2 fltk::fltk fltk::images fltk::png fltk::z)
add_executable(counter counter.c)
target_link_libraries(counter PUBLIC cfltk2::cfltk2 fltk::fltk fltk::images fltk::png fltk::z)
add_executable(threads threads.cpp)
target_link_libraries(threads PUBLIC cfltk2::cfltk2 fltk::fltk fltk::images fltk::png fltk::z)
add_executable(cthreads cthreads.cpp)
target_link_libraries(cthreads PUBLIC cfltk2::cfltk2 fltk::fltk fltk::images fltk::png fltk::z)
add_executable(deleter deleter.c)
target_link_libraries(deleter PUBLIC cfltk2::cfltk2 fltk::fltk fltk::images fltk::png fltk::z)
+3
View File
@@ -0,0 +1,3 @@
# Examples
This just shows some basic examples using cfltk. To build them, `cd` into the current directory and run `cmake -Bbin` then `cmake --build bin --parallel`.
+34
View File
@@ -0,0 +1,34 @@
// Example for android themed app
#include <cfltk2/cfl.h> // Fl_init_all, Fl_lock, Fl_run
#include <cfltk2/cfl_button.h>
#include <cfltk2/cfl_enums.h>
#include <cfltk2/cfl_widget.h>
#include <cfltk2/cfl_window.h>
#include <stdlib.h>
void cb(Fl_Widget *w, void *data) {
char buf[8];
int v = atoi(Fl_Widget_label(w));
v++;
snprintf(buf, 8, "%d", v);
Fl_Widget_set_label(w, buf);
}
int main(void) {
Fl_init_all();
Fl_Window *w = Fl_Window_new(0, 40, 600, 800 - 80, NULL);
Fl_Button *b = Fl_Button_new(220, 500, 160, 80, "0");
Fl_Window_end(w);
Fl_Window_show(w);
Fl_Window_set_color(w, Fl_Color_White);
Fl_Button_set_color(b, Fl_Color_Magenta);
Fl_Button_set_label_color(b, Fl_Color_White);
Fl_Button_clear_visible_focus(b);
Fl_Button_set_selection_color(b, Fl_Color_DarkMagenta);
Fl_Button_set_box(b, Fl_BoxType_RFlatBox);
Fl_Button_set_label_size(b, 36);
Fl_Button_set_callback(b, cb, NULL);
return Fl_run();
}
+85
View File
@@ -0,0 +1,85 @@
#include <cfltk2/cfl.h> // Fl_init_all, Fl_lock, Fl_run
#include <cfltk2/cfl_box.h>
#include <cfltk2/cfl_button.h>
#include <cfltk2/cfl_draw.h>
#include <cfltk2/cfl_enums.h>
#include <cfltk2/cfl_group.h>
#include <cfltk2/cfl_image.h> // Fl_register_images
#include <cfltk2/cfl_widget.h>
#include <cfltk2/cfl_window.h>
#include <stdio.h>
#include <stdlib.h>
#define BLUE 0x42A5F500
#define SEL_BLUE 0x3f51b500
#define GRAY 0x75757500
#define WIDTH 600
#define HEIGHT 400
// the button's callback
void cb(Fl_Widget *w, void *data) {
Fl_Box *count = (Fl_Box *)data;
int val = atoi(Fl_Box_label(count));
val++;
char temp[12];
snprintf(temp, sizeof(temp), "%d", val);
Fl_Box_set_label(count, temp);
}
// the bar's custom drawn shadow
void draw(Fl_Widget *w, void *data) {
Fl_set_color_rgb(211, 211, 211);
Fl_rectf(0, Fl_Widget_height(w), Fl_Widget_width(w), 3);
}
int main(void) {
Fl_init_all(); // init all styles
Fl_Window *w = Fl_Window_new(100, 100, WIDTH, HEIGHT, "Flutter-like");
Fl_Flex *col = Fl_Flex_new(0, 0, WIDTH, HEIGHT, NULL);
Fl_Box *bar = Fl_Box_new(0, 0, 0, 0, " FLTK App!");
Fl_Flex_set_size(col, (Fl_Widget *)bar, 60);
Fl_Box_set_align(bar, Fl_Align_Left | Fl_Align_Inside);
Fl_Box *text =
Fl_Box_new(0, 0, 0, 0, "You have pushed the button this many times:");
Fl_Box_set_align(text, Fl_Align_Bottom | Fl_Align_Inside);
Fl_Box *count = Fl_Box_new(0, 0, 0, 0, "0");
Fl_Box_set_align(count, Fl_Align_Top | Fl_Align_Inside);
Fl_Flex *row = Fl_Flex_new(0, 0, 0, 0, NULL);
Fl_Flex_set_type(row, Fl_FlexType_Row);
Fl_Flex_set_size(col, (Fl_Widget *)row, 60);
Fl_Box_new(0, 0, 0, 0, NULL);
Fl_Button *but =
Fl_Button_new(WIDTH - 100, HEIGHT - 100, 60, 60, "@+6plus");
Fl_Flex_set_size(row, (Fl_Widget *)but, 60);
Fl_Box *spacing1 = Fl_Box_new(0, 0, 0, 0, NULL);
Fl_Flex_set_size(row, (Fl_Widget *)spacing1, 20);
Fl_Flex_end(row);
Fl_Box *spacing2 = Fl_Box_new(0, 0, 0, 0, NULL);
Fl_Flex_set_size(col, (Fl_Widget *)spacing2, 20);
Fl_Flex_end(col);
Fl_Window_end(w);
Fl_Window_resizable(w, w);
Fl_Window_show(w);
Fl_background(255, 255, 255);
Fl_set_visible_focus(0);
Fl_Box_set_box(bar, Fl_BoxType_FlatBox);
Fl_Box_set_label_size(bar, 22);
Fl_Box_set_label_color(bar, Fl_Color_White);
Fl_Box_set_color(bar, BLUE);
Fl_Box_draw(bar, draw, NULL);
Fl_Box_set_label_size(text, 18);
Fl_Box_set_label_font(text, Fl_Font_Times);
Fl_Box_set_label_size(count, 36);
Fl_Box_set_label_color(count, GRAY);
Fl_Button_set_color(but, BLUE);
Fl_Button_set_selection_color(but, SEL_BLUE);
Fl_Button_set_label_color(but, Fl_Color_White);
Fl_Button_set_box(but, Fl_BoxType_OFlatBox);
Fl_Button_set_callback(but, cb, count);
return Fl_run();
}
+49
View File
@@ -0,0 +1,49 @@
#include <cfltk2/cfl.h>
#include <cfltk2/cfl_box.h>
#include <cfltk2/cfl_button.h>
#include <cfltk2/cfl_window.h>
#include <cstdio>
#include <stdexcept>
#include <string>
#include <thread>
using namespace std::chrono_literals;
void cb(Fl_Widget *w, void *data) {
auto box = (Fl_Box *)data;
std::thread writer([=] {
for (int i = 0; i != 1000; i++) {
std::this_thread::sleep_for(10ms);
char buf[100];
snprintf(buf, 100, "Hello %d", i);
Fl_lock();
Fl_Box_set_label(box, buf);
Fl_awake();
Fl_unlock();
}
});
writer.detach();
std::thread reader([=] {
while (true) {
std::this_thread::sleep_for(1000ms);
Fl_lock();
printf("%s\n", Fl_Box_label(box));
fflush(stdout);
Fl_awake();
Fl_unlock();
}
});
reader.detach();
}
int main() {
Fl_lock();
auto win = Fl_Window_new(100, 100, 400, 300, "");
auto box = Fl_Box_new(0, 0, 400, 200, "Hello");
auto but = Fl_Button_new(160, 210, 80, 40, "Click");
Fl_Window_end(win);
Fl_Window_show(win);
Fl_Button_set_callback(but, cb, box);
return Fl_run();
}
+31
View File
@@ -0,0 +1,31 @@
#include <cfltk2/cfl.h> // Fl_init_all, Fl_lock, Fl_run
#include <cfltk2/cfl_button.h>
#include <cfltk2/cfl_group.h>
#include <cfltk2/cfl_image.h> // Fl_register_images
#include <cfltk2/cfl_widget.h>
#include <cfltk2/cfl_window.h>
#include <stdio.h>
#include <stdlib.h>
void cb(Fl_Widget *w, void *data) {
Fl_Group *parent = Fl_Widget_parent(w);
Fl_Widget_delete(w);
Fl_Group_redraw(parent);
}
void dcb(Fl_Widget *w, void *data) {
puts("deleted");
}
int main(void) {
Fl_init_all(); // init all styles
Fl_register_images(); // necessary for image support
Fl_lock(); // necessary for multithreaded support
Fl_Window *w = Fl_Window_new(100, 100, 400, 300, NULL);
Fl_Button *b = Fl_Button_new(160, 210, 80, 40, "Click me");
Fl_Button_set_deletion_callback(b, dcb, b);
Fl_Window_end(w);
Fl_Window_show(w);
Fl_Button_set_callback(b, cb, NULL);
return Fl_run();
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

+28
View File
@@ -0,0 +1,28 @@
#include <cfltk2/cfl.h> // Fl_init_all
#include <cfltk2/cfl_box.h>
#include <cfltk2/cfl_button.h>
#include <cfltk2/cfl_enums.h> // EventNames, Event_PUSH
#include <cfltk2/cfl_window.h>
#include <stdio.h>
#include <stdlib.h>
int cb(Fl_Widget *w, int e, void *data) {
switch (e) {
case Fl_Event_Push:
Fl_Box_set_label((Fl_Box *)data, "Hello");
// return 1 when handled, 0 otherwise
return 1;
default:
return 0;
}
}
int main() {
Fl_Window *w = Fl_Window_new(100, 100, 400, 300, NULL);
Fl_Box *f = Fl_Box_new(0, 0, 400, 200, NULL);
Fl_Button *b = Fl_Button_new(160, 210, 80, 40, "Click me");
Fl_Window_end(w);
Fl_Window_show(w);
Fl_Button_handle(b, cb, f);
return Fl_run();
}
+42
View File
@@ -0,0 +1,42 @@
#include <cfltk2/cfl.h> // Fl_init_all
#include <cfltk2/cfl_box.h>
#include <cfltk2/cfl_button.h>
#include <cfltk2/cfl_enums.h> // EventNames, Event_PUSH
#include <cfltk2/cfl_window.h>
#include <stdio.h>
#include <stdlib.h>
Fl_Window *win;
int cb(Fl_Widget *w, int e, void *data) {
switch (e) {
case Fl_Event_Push:
Fl_handle(31, win);
// return 1 when handled, 0 otherwise
return 1;
default:
return 0;
}
}
int box_cb(Fl_Widget *w, int e, void *data) {
switch (e) {
case 31:
Fl_Box_set_label((Fl_Box *)w, "Pushed");
// return 1 when handled, 0 otherwise
return 1;
default:
return 0;
}
}
int main() {
win = Fl_Window_new(100, 100, 400, 300, NULL);
Fl_Box *f = Fl_Box_new(0, 0, 400, 200, NULL);
Fl_Button *b = Fl_Button_new(160, 210, 80, 40, "Click me");
Fl_Window_end(win);
Fl_Window_show(win);
Fl_Box_handle(f, box_cb, NULL);
Fl_Button_handle(b, cb, NULL);
return Fl_run();
}
+22
View File
@@ -0,0 +1,22 @@
#include <cfltk2/cfl.h> // Fl_init_all, Fl_lock, Fl_run
#include <cfltk2/cfl_button.h>
#include <cfltk2/cfl_image.h> // Fl_register_images
#include <cfltk2/cfl_widget.h>
#include <cfltk2/cfl_window.h>
#include <stdlib.h>
void cb(Fl_Widget *w, void *data) {
Fl_Widget_set_label(w, "Works!");
}
int main(void) {
Fl_init_all(); // init all styles
Fl_register_images(); // necessary for image support
Fl_lock(); // necessary for multithreaded support
Fl_Window *w = Fl_Window_new(100, 100, 400, 300, NULL);
Fl_Button *b = Fl_Button_new(160, 210, 80, 40, "Click me");
Fl_Window_end(w);
Fl_Window_show(w);
Fl_Button_set_callback(b, cb, NULL);
return Fl_run();
}
+22
View File
@@ -0,0 +1,22 @@
#include <cfltk2/cfl.h> // Fl_init_all, Fl_lock, Fl_run
#include <cfltk2/cfl_box.h>
#include <cfltk2/cfl_enums.h>
#include <cfltk2/cfl_image.h> // Fl_register_images
#include <cfltk2/cfl_window.h>
#define TRUE 1
#define FALSE 0
#define NULL (void *)0
int main(void) {
Fl_register_images();
Fl_Window *w = Fl_Window_new(100, 100, 400, 300, NULL);
Fl_Box *b = Fl_Box_new(0, 0, 400, 300, NULL);
Fl_Window_end(w);
Fl_Window_show(w);
Fl_Window_set_color(w, Fl_Color_White);
Fl_PNG_Image *i = Fl_PNG_Image_new("img.png");
Fl_PNG_Image_scale(i, 400, 300, TRUE, FALSE);
Fl_Box_set_image(b, i);
return Fl_run();
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

+49
View File
@@ -0,0 +1,49 @@
#include <FL/Fl.H>
#include <FL/Fl_Box.H>
#include <FL/Fl_Button.H>
#include <FL/Fl_Window.H>
#include <cstdio>
#include <stdexcept>
#include <string>
#include <thread>
using namespace std::chrono_literals;
void cb(Fl_Widget *w, void *data) {
auto box = (Fl_Box *)data;
std::thread writer([=] {
for (int i = 0; i != 1000; i++) {
std::this_thread::sleep_for(10ms);
char buf[100];
snprintf(buf, 100, "Hello %d", i);
Fl::lock();
box->copy_label(buf);
Fl::awake();
Fl::unlock();
}
});
writer.detach();
std::thread reader([=] {
while (true) {
std::this_thread::sleep_for(1000ms);
Fl::lock();
printf("%s\n", box->label());
fflush(stdout);
Fl::awake();
Fl::unlock();
}
});
reader.detach();
}
int main() {
Fl::lock();
auto win = new Fl_Window(400, 300);
auto box = new Fl_Box(0, 0, 400, 200, "Hello");
auto but = new Fl_Button(160, 210, 80, 40, "Click");
win->end();
win->show();
but->callback(cb, box);
return Fl::run();
}
+63
View File
@@ -0,0 +1,63 @@
diff --git a/src/Fl_win32.cxx b/src/Fl_win32.cxx
index e7539737f..e7d92a206 100644
--- a/src/Fl_win32.cxx
+++ b/src/Fl_win32.cxx
@@ -572,16 +572,16 @@ class Fl_Win32_At_Exit {
public:
Fl_Win32_At_Exit() {}
~Fl_Win32_At_Exit() {
- fl_free_fonts(); // do some Windows cleanup
- fl_cleanup_pens();
- OleUninitialize();
- if (fl_graphics_driver) fl_brush_action(1);
- fl_cleanup_dc_list();
- // This is actually too late in the cleanup process to remove the
- // clipboard notifications, but we have no earlier hook so we try
- // to work around it anyway.
- if (clipboard_wnd != NULL)
- fl_clipboard_notify_untarget(clipboard_wnd);
+ // fl_free_fonts(); // do some Windows cleanup
+ // fl_cleanup_pens();
+ // OleUninitialize();
+ // if (fl_graphics_driver) fl_brush_action(1);
+ // fl_cleanup_dc_list();
+ // // This is actually too late in the cleanup process to remove the
+ // // clipboard notifications, but we have no earlier hook so we try
+ // // to work around it anyway.
+ // if (clipboard_wnd != NULL)
+ // fl_clipboard_notify_untarget(clipboard_wnd);
#if USE_GDIPLUS
Fl_GDIplus_Graphics_Driver::shutdown();
#endif
@@ -1200,6 +1200,8 @@ static Fl_Window *resize_bug_fix;
extern void fl_save_pen(void);
extern void fl_restore_pen(void);
+static bool left_window = true;
+
static LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {
// Copy the message to fl_msg so add_handler code can see it.
@@ -1373,6 +1375,14 @@ static LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lPar
}
case WM_MOUSEMOVE:
+ if (left_window) {
+ Fl_Window *tw = window;
+ while (tw->parent()) // find top level window
+ tw = tw->window();
+ Fl::handle(FL_ENTER, tw);
+ left_window = false;
+ return 0;
+ }
#ifdef USE_TRACK_MOUSE
if (track_mouse_win != window) {
TRACKMOUSEEVENT tme;
@@ -1392,6 +1402,7 @@ static LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lPar
while (tw->parent()) // find top level window
tw = tw->window();
Fl::belowmouse(0);
+ left_window = true;
Fl::handle(FL_LEAVE, tw);
}
track_mouse_win = 0; // force TrackMouseEvent() restart
+139
View File
@@ -0,0 +1,139 @@
#
# clang-format control file for the FLTK project.
#
# Copyright 2017-2022 by Bill Spitzak and others.
#
# This library is free software. Distribution and use rights are outlined in
# the file "COPYING" which should have been included with this file. If this
# file is missing or damaged, see the license at:
#
# https://www.fltk.org/COPYING.php
#
# Please see the following page on how to report bugs and issues:
#
# https://www.fltk.org/bugs.php
#
#
# Important notes:
#
# This is a preliminary, experimental version of a clang-format control file.
# To use all options including embedded comments to switch formatting
# temporarily off and on in source files (see below) clang-format 3.6
# or later is required.
#
# DO NOT USE WITHOUT CHECKING THE RESULT OF FORMATTING FOR CORRECTNESS
# AND COMPATIBILITY WITH THE FLTK CMP!
# https://www.fltk.org/cmp.php#CODING_STANDARDS
#
# For more information about clang-format please refer to the online docs at:
# https://clang.llvm.org/docs/ClangFormat.html
# https://clang.llvm.org/docs/ClangFormatStyleOptions.html
#
# Embedded comments ("clang-format pragma's") in the source code:
# // clang-format off
# // clang-format on
# /* clang-format off */
# /* clang-format on */
# can be used to switch clang-format(ting) temporarily off in a source file.
# This is particularly useful for embedded pixmaps and other tables
# like menu arrays that are pre-formatted for better readability.
# The options used for FLTK are based on predefined style options of LLVM,
# which are also the default settings of clang-format.
# For a full list of LLVM settings please use
# clang-format -style=llvm -dump-config
# FLTK settings (currently experimental).
BasedOnStyle: LLVM
# The Language tag marks C++ options
# Language: Cpp
# The following options override the LLVM style definitions, if set.
# Uncomment one of the following option lines if indenting with tabs
# shall be used. Note: tab spacing is still 8 columns, tabs are only
# used for indents of 8 columns or more.
#
# Option "Always" seems to fail counting columns: comments may not be
# adjusted as expected (as of clang-format 3.6 and 3.8).
# This applies only if "AlignTrailingComments: true" is also set (default).
#
# UseTab can be set to 'Never' (default) or 'ForIndentation' to avoid
# this annoying bug of clang-format.
#
# UseTab: Always
UseTab: Never
# Should we extend code lines beyond 80 columns ?
# Default: 80
ColumnLimit: 100
# The FLTK CMP requires that case labels are indented (LLVM: false)
IndentCaseLabels: true
# Should we keep two or more consecutive empty lines ?
# LLVM default is 1.
MaxEmptyLinesToKeep: 2
# Present FLTK source code contains some short blocks and if statements
# in one line, but we should better make it consistent and NOT use the
# following "Allow..." statements (leave them commented out):
#
# LLVM default values:
#
# AllowShortBlocksOnASingleLine: false
# AllowShortFunctionsOnASingleLine: All
# AllowShortIfStatementsOnASingleLine: false
# AllowShortLoopsOnASingleLine: false
#
# FLTK values:
# AllowShortBlocksOnASingleLine: true
# AllowShortIfStatementsOnASingleLine: true
# Short inline functions in header files are an exception to the above "rule":
AllowShortFunctionsOnASingleLine: Inline
# The following is particularly useful for macros with continuation lines.
# LLVM default: AlignEscapedNewlinesLeft: false
AlignEscapedNewlinesLeft: true
# Include files should be left as-is until we *know* we can
# sort them without bad side effects.
# LLVM default: true
SortIncludes: false
# Multiple constructor initializers must be on consecutive lines.
# Note: this is NOT (always) true in current FLTK code!
BreakConstructorInitializersBeforeComma: true
# Constructor initializers will be indented by 2 spaces.
# LLVM default: 4
ConstructorInitializerIndentWidth: 2
# Continuation lines (if automatically wrapped) may be indented differently.
# This does not apply to function call arguments which are aligned to the
# opening bracket.
# LLVM default: 4
# ContinuationIndentWidth: 2
# Most of FLTK's code uses 'void *p' as opposed to 'void* p'.
# This is particularly useful in combined declarations like:
# int var, var2, *pv, **pp;
# Note: clang-format uses "Right" in such combined declarations anyway,
# so to be consistent the best setting appears to be "Right".
# clang-format can try to derive the setting from code in the file, but this
# is error-prone and can lead to inconsistent settings in different files.
# Note: this also applies to references like 'int &w, int &h', for instance
# in function parameter lists.
DerivePointerAlignment: false
PointerAlignment: Right
+50
View File
@@ -0,0 +1,50 @@
FLTK 1.4 is based on the final release of FLTK 1.3.4. Later updates
have been backported to 1.3.5 - 1.3.11 and branch-1.3 (Git).
FLTK 1.4 is now in maintenance mode, i.e. it receives only bug fixes
and important enhancements, e.g. for Linux releases or macOS support.
The current branch on GitHub [2] is `branch-1.4` whereas the `master`
branch moved on to development of FLTK 1.5.
FLTK 1.4 is intended to be mostly API compatible with FLTK 1.3.x so
you don't need to change source code when you switch to FLTK 1.4.
However, all programs must be recompiled with FLTK 1.4 because the
ABI (Application Binary Interface) has changed.
Potential source code conflicts are documented in chapter "Migrating
Code from FLTK 1.3 to 1.4" of the user documentation [1].
FLTK 1.4 adds some new widgets (e.g. Fl_Flex, Fl_Grid) for flexible
GUI layout, Fl_Scheme_Choice for scheme selection by users, and more.
Other widgets (Fl_Tabs, Fl_Tile, Fl_Spinner etc.) have been improved
for better user experience.
FLTK 1.4 supports HighDPI displays under Linux/Unix and Windows and
improves HighDPI support on macOS. The initial screen scaling factor is
read from the system and application windows can be zoomed (in/out/reset)
by the user with ctrl/+/-/0 shortcuts, respectively.
CMake support has been improved significantly and requires CMake 3.15 or
higher, autotools/configure/make is still supported. The latter will be
dropped in the next minor release (1.5.0).
macOS is supported up to 26.3 "Tahoe".
The platform dependent code in FLTK 1.4 was rewritten to enable easier
porting to new platforms. Basically all platform dependent code has
been isolated and implemented in virtual methods of "driver" classes.
For details see 'src/drivers' and subdirectories.
FLTK is now compatible with the Wayland platform on current Linux
distributions and FreeBSD. The default build of the library on these
platforms supports both X11 and Wayland in a "hybrid" library. Programs
compiled and linked to this library start using Wayland if it is
available at runtime and fall back to using X11 if not. Programs using
X11 specific code that are not yet ported to Wayland can still be used
on pure X11 systems or by disabling the Wayland support on startup so
they fall back to using X11 only. This requires 'XWayland' support on
Wayland enabled (Linux) systems.
[1] https://www.fltk.org/doc-1.4/ (HTML) and
https://www.fltk.org/doc-1.4/fltk.pdf (PDF)
[2] https://github.com/fltk/fltk.git
+753
View File
@@ -0,0 +1,753 @@
Changes in FLTK 1.4.5 Released: Apr 25 2026
This is a maintenance release with many improvements and fixes
backported from the current development branch 'master' (1.5.0).
This release is 100% backwards ABI and API compatible to release 1.4.0
and previous 1.4.x patch releases with default build options.
Major Bug Fixes
- Fix menu crash dereferencing nullptr (#1335)
- Fix crash in Fl_Tabs without children (#1366)
- Fix "Fl_Double_Window::make_current() issues with Cairo drawing" (#1285)
- Fix "Setting window custom cursor from SVG image crashes" (#1363)
- Fix "fl_draw_image() with horizontal flip reads out of bounds" (#1369)
- macOS: fix crash when drawing image with draw_image() in some scenarios (#1372)
- Wayland: avoid NULL-pointer error after call to wl_display_get_protocol_error()
- Wayland: Fix "Long Tooltips can crash ..." (#1317)
- Wayland: Fix NULL pointer dereference in Fl::cairo_make_current() (#1359)
- Wayland: Fix crash in test/sudoku if ALSA soundlib is not available
- Wayland: subwindows may grab scaling factor from wrong monitor (#1382)
- Windows: avoid crash when resizing window containing non-FLTK child window (#1401)
- X11: Fix crash with menubar across 2 screens with diverse scale factors (#1380)
- X11: Fl::enable_im() crashes without input methods (#1364)
- Fix "fl_add_symbol() *always* increments symbnumb" (#1410).
- Fix "Mac: Most fl_symbols missing corner pixels" (#1409).
- Fix "Mac: Stubborn tooltips when menu window is open" (#1408)
Minor Bug Fixes
- Applied xuyun018's fix for Fl_Tree horiz scroll (#1297)
- Fix: Underline does not appear in some fonts and scales (#1308)
- Fix "New Wayland subwindow code creates issues with resizes of opengl windows…" (#1311)
- Fix "Drawing to the wrong window with cairo and X11" (#1358)
- Fix "Cairo: Rect with negative dimensions is still drawn" (#1379)
- Fix "Blurry fonts with cairo/pango on FLTK >= 1.4" (#1365)
- Fix "Transparent PNGs not rendered correctly when window is scaled" (#1375)
- Close active menus when moving window to new screen
- macOS: Fix GL window child widgets when the window's screen changes resolution
- Wayland: don't call non-public libdecor_frame_get_content_{width,height} (#1296)
- Wayland: Some shortcut keys not delivered when input widget has focus (#1290)
- Wayland: fix creation of toplevel Fl_Gl_Window
- Wayland: fix minor paste and DnD issue revealed by valgrind
- Wayland: fix several issues related to scaling and to GL windows
- Wayland: Implement Fl_Window::xclass(const char*) for Wayland (#1391).
- Windows: Fix "If app appears on non-active screen …, window resizes" (#259)
- Windows: Fix "Window scaling shortcut always moves window towards initial display" (#1371)
- Wayland: call libdecor_dispatch(), libdecor_unref(), libdecor_get_fd() as expected by libdecor.
- X11: Restore use of menubar at top of fullscreen window
- X11/Wayland: Fix resize of menutitle windows when across 2 screens with diverse scaling
CMake And Other Build Procedure Improvements
- Bump version number from 1.4.4 to 1.4.5
- Don't export unnecessary executable files
Documentation Fixes and Improvements
- Fix documentation of fl_overlay_clear and fl_overlay_rect
- Clarify that a font must be loaded before measuring text (#1356)
- Improve docs related to "RGB sub image drawing slow with larger images" (#1384)
Other Improvements
- Remove usage of deprecated fl_utf8froma(), improve layout of test/utf8
- Remove conflicting FL_EXPORT from header file (#1357)
- Set window class name (xclass) in test/editor
- Fl_Terminal fixes from 1.5.x - smoother scrolling and issue #1328
- Fix Fl_Terminal drawing issues (WRT scrollbar and box clipping)
- Improve handling of text containing context-dependent unicode points
- Add complete support of emojis to text widgets (#1360)
- Fix issues with Fl_RGB_Image::draw() + window scaling,
and performance concerns (#1370)
- Improve control of screen where FLTK positions menu windows (#1376)
- Improve Fl_Window::hotspot() when screens have different scale factors
- macOS: Remove slight transparency from menu windows (#1373)
- Wayland: use UTF-8 text from clipboard when available
- Wayland: improve function Fl_Wayland_Window_Driver::resize() (#1307)
- Windows: improve moving window across screens having distinct scale factors
ABI changes: only, if explicitly enabled by setting FL_ABI_VERSION >= 10405
- Make Fl_Table::get_selection() 'const' (ABI 10405) (#1305)
Changes in FLTK 1.4.4 Released: Jul 20 2025
This is a maintenance release with improvements and fixes
backported from the current development branch 1.5 (master).
Bug Fixes
- #1114: Ensure minimum height of last block in Fl_Help_View
- Fix address sanitizer exception for macOS native file chooser
- Wayland: remove crash when resizing hidden subwindow
- Wayland: fix "A flag to set how menus should show up" (#1260)
- macOS: protect uses of __block by #if defined(__BLOCKS__) condition
- Fix "Selecting menus from the menubar under Wayland/fullscreen" (#1264)
Documentation Fixes and Improvements
- Fl_Terminal doc fixes, private->protected for utf8_char_at_*()
- Fl_Window::free_position() is no longer deprecated
Other Improvements
- Set default DPI to 300 in fl_write_png
- #146: Add access to scrollbars widget in Fl_Help_View
- Improve Fl_Button event handling documentation (#1267)
- macOS: Fix in window titlebar capture to support macOS 26 Tahoe
- Fix usage of 'volatile' in src/Fl_JPEG_Image.cxx (#1207)
- Improve test/threads demo program (backported from 1.5)
CMake And Other Build Procedure Improvements
- Restore use of build option FLTK_USE_POLL
- Add CMake build option FLTK_USE_DBUS to allow build w/o dbus (PR #1252)
ABI changes (FL_ABI_VERSION >= 10404)
- There are no ABI changes in this release.
Changes in FLTK 1.4.3 Released: Apr 29 2025
FLTK 1.4.3 is a maintenance release with improvements and fixes backported
from the current development branch 1.5 (master).
Bug Fixes
- Fix "Windows: Clipboard gets stuck when text is copied while window is hidden" (#1233)
- Fix "Minor drawing artifact at scale 200% under X11 session" (#1243)
- Fix a comparison that's always true
- Fix handling of menu windows taller than their screen
- Fix potential buffer overflow on Windows when loading fonts (#1221)
- Windows: fix "heap-use-after-free" in home_directory_name()
- Fix out-of-bounds access in test/checkers.cxx
- macOS: Fix error "two consecutive '[' tokens on g++ with objcpp files" (#1246)
Other Improvements
- Update man pages of games (demo programs), add glpuzzle man page
CMake And Other Build Procedure Improvements
- options.cmake: Check Threads_FOUND, not CMAKE_HAVE_THREADS_LIBRARY
- Check CMake version for some properties in fl_debug_target()
- Use CMake's built-in timestamp formatting (#1242)
- Simplify fluid build
- CI for Wayland: update required development packages for Wayland builds
- Update fltk-config.in (minor comment changes only)
- Fully support using own shared libraries internally (#1238)
- macOS: disable automatic code signing when using Xcode
- Update version numbers to 1.4.3
ABI changes (FL_ABI_VERSION >= 10403)
- Allow FL_ABI_VERSION = FL_API_VERSION + 1
- Fl_Tree_Item: Changed two connector methods to virtual
- Fix "Windows: dotted lines may be drawn solid when GUI is rescaled" (#1214)
Changes in FLTK 1.4.2 Released: Feb 23 2025
Bug Fixes and other Improvements
- Fix Help View 'find' method (#1119)
- Fix possibly uncleared damage flag of Fl_Pack (#1172)
- Fix integer overflow in image interpolation (#73)
- Fix "Fl_Text_Editor::wrap_mode(Fl_Text_Display::WRAP_AT_BOUNDS, 0)
hurts scrolling" (#1186)
- Use C locale when writing float values to SVG images
- Fix return value of Fl_Table_Row::row_selected(int) (PR #1187)
- Fix Fl_Table_Row inconsistencies, final part (#1187)
- Fix potential buffer overflow in Fl_Help_View (#1196)
- Improve fullscreen window handling (#1192 and more)
- Fix "Fl_RGB_Image::draw() seg faults when offset is too big" (#1211)
Platform Specific Fixes and Build Procedure Improvements
- CMake/Windows/MSYS2: Correctly detect ucrt64 environment (PR #1167)
- CMake: make "optional" dependencies 'PUBLIC' (#1173)
- CMake: check INTERFACE_LINK_LIBRARIES for empty value
- CMake: fix include directories of bundled image libs
- macOS: Fix crash if Escape is pressed while Help submenu is open (#1170)
- macOS: Don't capture the cursor in capture_decorated_window_SCK()
- macOS: Fix "Full screen broken on macOS in FLTK 1.3.10 (regression)" (#1192)
- macOS: add support of showing window to multi-screen fullscreen state
- fix "macOS Sonoma/Sequoia not capturing OpenGL 1 text on macOS" (#1197)
- Remove incorrect use of Fl_Window::current() in Fl_Quartz_Image_Surface_Driver
- Make Fl_Cocoa_Gl_Window_Driver::capture_gl_rectangle() return a depth-4 image
- macOS: Fix "Fl_JPEG_Image infinite longjmp loop on Mac release builds" (#1207)
- Windows: replace "Arial" by "Microsoft Sans Serif" fonts for 'FL_HELVETICA'
- fltk-config: fix "Check bundled image libraries in source tree"
- fltk-config: reorder include dirs of bundled image libs
- Fix "fltk-config reports dep on gtk3 when it does not exist" (#1201)
Wayland related Improvements and Fixes
- Fix a border case in member function Fl_Wayland_Window_Driver::resize()
- Make draw to image and draw to clipboard behave equally in X11 and Wayland
- Fix Fl_{Wayland|Xlib}_{Copy|Image}_Surface_Driver::set_current()
- Fix handling of key repeats
- Improve member function Fl_Wayland_Screen_Driver::insertion_point_location()
- Fix "Redrawing of a surface may fail if a subsurface is being moved" (#1191)
- Update bundled libdecor to last upstream version (21 Jan 2025)
Fixes and Improvements in Fluid:
- Improve filename list in main menu
- Improve path handling on Windows
- Minor fix and docs
- Rename Strategy constants to comply with CMP
- Fix file history text
Documentation Improvements
- Document how screen work areas are computed across platforms (#1180)
- Remove duplication and typo in documentation of Fl::copy()
- Improve and reorder Fl_Tabs documentation
- Document issues with Fl_Scroll as children of Fl_Tabs (#1175)
- Improve documentation of Fl_Box constructors (#1194)
Other Changes
- Fix typos and compiler warnings
- Add Fl_Valuator destructor
- test/utf8: Change default font under Windows for "Unicode Display Test"
- test/editor: ensure buffer termination, update documentation accordingly
Changes in FLTK 1.4.1 Released: Dec 12 2024
FLTK 1.4.1 is a maintenance release with bug fixes and improvements.
Bug Fixes
- Fix rounding issues with Fl_RGB_Image::draw() + window scaling (#1128)
- Fix fullscreen regression on macOS( #1129)
- Fix fl_draw_image sometimes crashes when window is scaled (#1134)
- Fix: Can't control scale of Fl_Copy_Surface dimensions on Linux (#1135)
- Improve output of 'fltk-options -h' and 'fltk-options -L*'
- Windows: Fix rescale bug while window is maximized or fullscreen
- Fix graphical glitches on 101 DPI screen (#1138)
- Fix changed flag for radio buttons (#1146)
- Fix Fl_Scroll with real *_BOX draws over scrollbars at non-default scales (#1149)
- Fix drawing bugs on Windows at very large scales (#1144)
- Fix button down state when triggered by shortcut (#1145)
- Give access to some Fl_Text_Display member variables (#1153)
- Fix: Mouse hover + Enter key selects inactive menu items (#1159)
- Fix hang/infinite loop on submenu with all inactive/invisible items (#1158)
- Fix triggering callback for inactive menu items (#1159)
- Fix inconsistencies with Tab/Backspace handling in menus (#1157)
- Fix Fl_Menu_Item::measure() width calculation (#1164)
- Fix drawing issue for checkbox buttons with bad box type (#1130)
- Fix: Window can be moved while menu is open (#1166)
Image libraries
- Update bundled libpng to version 1.6.44
Fixes and Improvements in Fluid:
- Fix autodocs file leak and memory leak
- Fix autodoc image memory allocation
- Fix project modflags when adding shell commands
- Avoid generating undo on spurious relayout events (#1152)
- Minor improvements to buffer handling (#1152)
- Clear cached browser values and cached pointers (#1152)
- Fix default settings tab
- Avoid trailing spaces in empty comment lines (#1161)
- Command line arguments '-v' and '--version' show fltk version
- Command line argument '--help' shows brief usage information
Optional ABI changes: these require configure or CMake option
to define FL_ABI_VERSION = 10401
- Increase clipping stack size from 10 to 64 entries (#1139)
- Fix potential (likely false positive) compiler warning in Fl_Help_View
Documentation Improvements
- Update build instructions in README.Unix.txt (#67)
- Update README.Windows.txt
- Update README.CMake.txt for cross-building (#1154)
- Document that fl_scroll() doesn't work OK with non-integral scaling factors
- Add details about fl_override_scale() and clip
- Clarify use of Fl_Tabs::client_area()
- Fix Makefile example in chapter "FLTK Basics"
Improvements and minor Fixes in Test and Demo Programs
- MSVC: Fix array allocation in test/fltk-versions (#1131)
- Enable building the CubeView demo w/o requiring '<config.h>'
- Use a constant frame rate (25 fps) in test/cube demo
- Add comment linking source code to related information in issue #1149
- Improve timer statistics in test/cube demo
- glpuzzle: fix timer and trackball max speed, make smoother animation at 72fps
Technical Details and Build Procedure Improvements
- Fix FL_EXPORT qualifiers
- Fix compiler warnings
- Remove unnecessary friend declaration
- Restore building with configure --disable-print (#1147)
- macOS: Improve procedure to construct best link command
- Fix: Building with FLTK_BUILD_GL=0 fails on systems without opengl installed (#1151)
- Don't link to libgtk when using package libdecor-0-dev
- Update makesrcdist for releases on GitHub (1.4.1 and higher)
- Update CHANGES.txt for release 1.4.1
Changes in FLTK 1.4.0 Released: Nov 17 2024
Bug Fixes:
- Windows: Fix "fullscreen_off does not correctly preserve window size" (#1116)
- Fix rounding issues with Fl_RGB_Image::draw() + Fl_Copy_Surface (#1120, #1124)
- Windows: Fix "Keyboard shortcut (alt+letter) does not work in input widget" (#1122)
- macOS: Fix Alt-modifier handling in Fl_Shorcut_Button
- Windows: Fix flicker/animation when transitioning from fullscreen to maximized
- Wayland: protect against rounding errors in copy_region()
Documentation and other Improvements:
- Revert gtk+ specific "chevron style" arrow drawing (#1117)
- Update CREDITS.txt
- Improve 'test/fltk-versions' demo program
Changes in FLTK 1.4.0 RC3 Released: Nov 08 2024
Bug Fixes:
- Windows: "Fullscreen doesn't always pick the correct display" (#1097)
- macOS: "Mixing native fullscreen button with Fl_Window::fullscreen()" (#1098)
- Wayland: Issue in maximization of a borderless window (#1099)
- macOS: "Merge All Windows" fails if focused window is borderless (#1100)
- macOS: Fl_Window::fullscreen() doesn't work for unfocused tabbed window (#1101)
- Fl_Tile resizing for "sudden" size changes (#1102)
- macOS: Weak linking error with latest SDK 15 (#1103, #1105)
- X11: test/checkers drawing artifacts when window is scaled (#1109)
- X11: test/curve "points" mode not drawn correctly (#1110)
- X11: test/gl_overlay stale overlay rendering (#1111)
- fl_draw_image() with horizontal flip reads out of bounds (#1112)
- macOS: Very minor high DPI rounding issue with fl_rect (#1113)
- macOS: Prevent changing window border if window is fullscreen or maximized
- Mac/XQuartz: Restore Fl_Widget_Surface::draw_decorated_window()
Other Improvements:
- Improve member function Fl_Wayland_Graphics_Driver::copy_offscreen()
- Make Fl_Window::flush() public for consistency with subclasses
- Improve UI layout of 'fltk-options'
- Fix compiler warnings
- Improve and clarify documentation, including README.CMake.txt
Changes in FLTK 1.4.0 RC2 Released: Oct 27 2024
- Add range check to Fl_Group::child(int)
- Fix Windows Ctrl character handling for scaling shortcuts
- Fluid: Add missing code for Fl_Grid and Fl_Flex live preview (#1092)
- Enhance documentation
- Mention HighDPI support in 'ANNOUNCEMENT'
- Update CHANGES.txt
Changes in FLTK 1.4.0 RC1 Released: Oct 20 2024
General Information about this Release
- FLTK 1.4.0 is based on FLTK 1.3.4 (released Nov 15 2016).
Later updates have partially been backported to 1.3.x releases, see
CHANGES_1.3.txt for more information.
- CMake is the primary supported build system in FLTK 1.4.0 and later.
CMake can be used to generate Makefiles, IDE project files, and files
for several other build systems by using different "generators" provided
by CMake (for instance Ninja, CodeBlocks, Eclipse, KDevelop3, Xcode, etc.).
FLTK uses "Modern CMake" since release 1.4.0 which simplifies user
project build systems significantly.
See README.CMake.txt and documentation chapter "Migrating Code from
FLTK 1.3 to 1.4" for more information.
- autoconf/configure is still supported by the FLTK Team for backwards
compatibility with older systems that lack CMake support. Support of
autoconf/configure will be dropped in FLTK 1.5.0.
- FLTK 1.4 introduces a new platform, Wayland, available for recent Linux
distributions and FreeBSD. For details see README.Wayland.txt.
New Features and Extensions
- fltk-config allows to compile multiple files with more compiler and linker
options given on the commandline.
- fl_contrast() functionality has been improved, adding a new contrast
calculation method based on human contrast perception. This new function
is now the default but the old, less accurate, contrast function can be
chosen as an option.
- Timeout handling has been unified across platforms (#379), see documentation
in chapter "Migrating Code from FLTK 1.3 to 1.4".
- New Fl::remove_next_timeout(...) to remove only one timeout (#992).
- New fltk-options executable, improved Fl::option documentation.
- New function `Fl_Window::get_size_range()` (#981).
- New FL_DEPRECATED macro to flag deprecated functions and methods.
- Enable suppression of "deprecated" warnings by macro FL_NO_DEPRECATE.
- New animated GIF images support (Fl_Anim_GIF_Image class) (#375).
- GIF and BMP files can now be "read" from memory, i.e. they can be included
in source code (use their new constructors).
- New Fl_Scheme_Choice widget can be used to easily switch schemes in apps.
- A new scheme named "oxy" has been added (STR 2675, STR 3477).
- Drawing "Arrows" has been unified in all core widgets.
- Drawing "Radio Buttons" has been unified in all core widgets.
- Drawing "Check Marks" has been unified in all core widgets.
- New methods Fl_Group::on_insert/on_remove/on_move (#527) can be used in
derived classes to detect addition or removal of children.
- FLTK widgets can now be used in OpenGL 3 windows.
- The new convenience function Fl::hide_all_windows() can be used to close
all open windows, for instance to exit the running program.
- Windows platform: optionally use GDI+ to antialias oblique lines and curves.
- Windows: The new function Fl::args_to_utf8() can be used to convert
"wide character" commandline arguments to UTF-8.
- X11 and Wayland platforms: Added support of HiDPI displays. FLTK apps
detect the current display scaling factor and use it to scale all windows.
- Windows platform: FLTK applications detect the display scaling factor and
automatically scale their GUI accordingly. This effectively renders WIN32
FLTK apps "per-monitor DPI-aware" whereas they were "DPI-unaware" before.
- Dynamical GUI rescaling: it is possible on all platforms to rescale all
FLTK windows mapped to a screen by typing ctrl-'+' (enlarge), ctrl-'-'
(shrink) or ctrl-'0' (back to starting scaling factor value). Under macOS,
the corresponding keystrokes are cmd-'+', cmd-'-', cmd-'0'. The resulting
GUI scaling factor (e.g., 170 %) transiently appears in a yellow popup window.
Use new Fl::option() item OPTION_SHOW_SCALING to turn on/off these popups.
Windows moved between screens adjust to the scaling factor of their screen.
This supports desktops mixing screens with distinct resolutions.
In addition, use environment variable FLTK_SCALING_FACTOR to further adjust
the starting scaling factor of all FLTK apps.
- Note: On some platforms and with some international keyboard layouts you may
need to set Fl::option(OPTION_SIMPLE_ZOOM_SHORTCUT) to be able to use one or
more of the scaling shortcuts above with or without pressing the Shift key.
The new executable `fltk-options` can be used to set this option either
system wide or for a single user.
- New horizontal and vertical label margins.
- Fluid got a lot of UI and functional improvements and the Fluid docs have
been reworked and put in an own "Fluid User Manual" (HTML and PDF).
Fluid supports the new Fl_Flex and Fl_Grid widgets.
For more details please see the manual.
- New Fl_Grid class to layout multiple columns and rows of widgets.
- New Fl_Flex class to layout one row or one column of widgets.
- New Fl_Terminal widget supporting Unicode/UTF-8, ANSI/xterm escape codes
with full RGB color control.
- New Fl_Copy_Surface to copy drawings to the clipboard.
- New Fl::keyboard_screen_scaling(0) call stops recognition of ctrl/+/-/0/
keystrokes as scaling all windows of a screen.
- New member function Fl_Image::scale(int width, int height) to set
the drawing size of an image independently from its data size. The
same function was previously available only for class Fl_Shared_Image
and with FL_ABI_VERSION >= 10304. New member functions Fl_Image::data_w()
and Fl_Image::data_h() give the width and height of the image data.
- New member functions Fl_Widget::bind_image(Fl_Image *img) and
Fl_Widget::bind_deimage(Fl_Image *img) to bind an image to a widget, that is,
to set an image to be used as part of the widget label and also
to be deleted when the widget is deleted.
- New member function Fl_Menu_::menu_end() to ensure that the menu is fully
constructed in its final location after dynamic modifications. This is
called automatically before the menu is shown.
- New Fl_SVG_Image class: gives support of scalable vector graphics images
to FLTK using the nanosvg software.
- New Fl_ICO_Image class to read Windows .ico icon files.
- New classes Fl_PDF_File_Surface, Fl_SVG_File_Surface and Fl_EPS_File_Surface
to save any FLTK graphics to PDF, SVG or EPS files, respectively.
- New member functions Fl_Window::maximize(), Fl_Window::un_maximize() and
Fl_Window::maximize_active() to programmatically manage window maximization.
- Fl_Button now supports a compact flag that visually groups closely set
buttons into keypads.
- Fl_Tabs widget now supports close buttons for individual tabs.
- Fl_Tabs widget now supports four different modes for handling an
overflowing number of tabs.
- Mouse buttons 4 + 5 (aka "side buttons") are now supported (#1076, #1068).
These are typically used as "back" and "forward" functions, e.g. in browsers.
- Windows platform: added support for using a manifest to set the
application's level of DPI awareness (issue #309).
- class Fl_Native_File_Chooser on the X11/Wayland platform relies on external
commands zenity (PR #599), or kdialog (issue #278), or on the GTK library
to construct file dialogs. New "Preview" switch added to the GTK dialog.
The libgtk-based dialog uses in priority the file chooser dialog
of GTK version 3 when available on the running platform, and falls back
to version 2 when V3 is not available. In contrast, GTK version 2 was used
in priority by FLTK 1.3.x. New FL::option() item OPTION_FNFC_USES_ZENITY
to turn on/off use of zenity-based file dialogs.
- The undocumented feature FLTK_CONSOLIDATE_MOTION is now OFF on X11 and
removed on macOS. In FLTK 1.3 this feature has been ON on X11. The macro can now
be set on the compiler commandline and can be used to reduce the number
of mouse move events sent to the application but it may be unreliable.
Recommendation: let it switched OFF unless you really need it.
- New function fl_capture_window() to capture the content of a rectangular
zone of a mapped window and return it as an Fl_RGB_Image. It improves
with HighDPI displays what can be done with fl_read_image().
- The Windows platform now draws oblique and curved lines in antialiased
form. The new function void fl_antialias(int state); allows to turn off
or on such antialiased drawing. The new function int fl_antialias(); returns
whether line and curve drawing is currently antialiased.
- The border radius of "rounded" box types can be limited and
the shadow width of "shadow" box types can be configured (issue #130).
See Fl::box_border_radius_max() and Fl::box_shadow_width().
- New fl_putenv() is a cross-platform putenv() wrapper (see docs).
- New public variable Fl_Image::register_images_done allows an app. to detect
whether function fl_register_images() has been called.
- Fix Fl::add_timeout() under Linux (STR 3516).
- Fix early timeouts in Fl_Clock seen in some environments (STR 3516).
- Fl_Printer::begin_job() uses by default the Gnome print dialog on the X11
platform when the GTK library is available at run-time. That can be turned off
with Fl::option(OPTION_PRINTER_USES_GTK, false).
- New member functions Fl_Paged_Device::begin_job() and begin_page()
replace start_job() and start_page(). The start_... names are maintained
for API compatibility.
- Fl_Gl_Window can now contain FLTK widgets that are drawn on top of the
OpenGL scene.
- OpenGL draws text using textures on all platforms, when the necessary
hardware support is present (a backup mechanism is available in absence
of this support). Thus, all text drawable in Fl_Window's can be drawn
in Fl_Gl_Window's (STR#3450).
- New member function Fl_Menu_Bar::play_menu(const char *title) to
programmatically open a menu of a menubar.
- New member functions Fl::program_should_quit(void),
and Fl::program_should_quit(int) to support detection by the library
of a request to terminate cleanly the program.
- MacOS platform: the processing of the application menu's "Quit" item
has been changed. With FLTK 1.3.x, the application terminated when all
windows were closed even before Fl::run() or Fl::wait() could return.
With FLTK 1.4, Fl::run() returns so the app follows its normal termination path.
- FLTK apps on the MacOS platform contain automatically a Window menu, which,
under MacOS ≥ 10.12, allows to group/ungroup windows in tabbed form. The new
Fl_Sys_Menu_Bar::window_menu_style() function allows to specify various
styles for the Window menu, even not to create it.
- New function: int fl_open_ext(const char* fname, int binary, int oflags, ...)
to control the opening of files in binary/text mode in a cross-platform way.
- Fix for issue #247 : loading SVG image with BOM.
- Fl_Text_Selection got a new method length() and returns 0 in length()
and in all offsets (start(), end(), position()) if no text is selected
(selected() == false). The behavior in FLTK 1.3 and earlier versions
(returning undefined values if !selected()) was confusing.
- New method Fl_Group::bounds() replaces Fl_Group::sizes() which is now
deprecated. Fl_Group::bounds() uses the new class Fl_Rect that contains
widget coordinates and sizes x(), y(), w(), and h() (STR #3385).
Documentation for bounds() and its internal structure was added.
- New method shadow(int) allows to disable the shadows of the hands
of Fl_Clock, Fl_Clock_Output, and derived widgets.
- New method Fl_Tabs::tab_align() allows to set alignment of tab labels,
particularly to support icons on tab labels (STR #3076).
- Added Fl_Surface_Device::push_current(new_surface) and
Fl_Surface_Device::pop_current() to set/unset the current surface
receiving graphics commands.
- New macros for easy function and method callbacks with multiple
type safe arguments (see FL_METHOD_CALLBACK_1 etc.) .
- The value box size of Fl_Value_Slider is now user settable (STR 3222).
- The new header file FL/fl_config.h replaces FL/abi-version.h and
includes some more build configuration settings. This file is always
included automatically.
- Nested (aka recursive) common dialogs are now possible (STR 3242, #282).
Removed Features
- X11 platform: Support of XDBE, the configure option '--enable-xdbe'
and the CMake option 'OPTION_USE_XDBE' have been removed because XDBE
was unreliable and rarely supported by X servers. Double buffering
support in Fl_Double_Window is not affected.
- Hardware "overlay" support has been removed. This was rarely implemented
and should not affect user code because overlay support is simulated.
New Configuration Options (ABI Version)
- Add --without-fluid configure option (#725) if Fluid is not needed.
- X11 platform: Added support for drawing text with the pango library
which allows to draw most scripts supported by Unicode, including CJK
and right-to-left scripts. FLTK now outputs PostScript that draws
those scripts in vectorial form. The corresponding CMake option is
FLTK_USE_PANGO. The corresponding configure option is --enable-pango.
This option is OFF by default when the build is only for X11 and ON
when Wayland support is built as well.
- Configure option --enable-wayland allows to build the FLTK library for
the new Wayland platform while remaining compatible with X11. The
corresponding CMake option is FLTK_BACKEND_WAYLAND. This option is ON by default.
- Configure options --enable-wayland --disable-x11 used together allow to
build FLTK for the Wayland backend only (no x11 backend). Under CMake, the
equivalent option is to set FLTK_BACKEND_WAYLAND=ON and FLTK_BACKEND_X11=OFF.
- The new configure option --disable-gdiplus removes the possibility to draw
antialiased lines and curves on the Windows platform. The corresponding CMake
option is FLTK_GRAPHICS_GDIPLUS.
- The library can be built without support for reading SVG images or writing
graphics in SVG format using the --disable-svg configure option
or turning off FLTK_OPTION_SVG in CMake.
- The library can be built without support for PostScript, thus reducing
its size, using the --disable-print configure option or turning off
FLTK_OPTION_PRINT_SUPPORT in CMake. That makes classes Fl_PostScript_File_Device,
Fl_EPS_File_Surface and Fl_Printer (under X11 platform only) ineffective.
- FLTK's ABI version can be configured with 'configure' and CMake.
See documentation in README.abi-version.txt.
- Building the 'Forms' compatibility library 'fltk_forms' is now optional,
default is ON. This may be turned to OFF in a later FLTK release.
- CMake/Windows/MSVC: New option to select MSVC Runtime when linking apps.
Bundled libraries
- Bundled image libraries have been upgraded to newer versions.
For details see documentation/src/bundled-libs.dox or online docs.
1.4.0 ABI FEATURES
- None. FLTK 1.4.0 has a new ABI, breaking 1.3.x ABI.
Other Improvements
- Fl_Image::copy() is now 'const', including all derived classes.
Note: This may require code changes in classes derived from Fl_Image,
see documentation in chapter "Migrating Code from FLTK 1.3 to 1.4".
- Fl_Native_File_Chooser can now use kdialog, zenity, and/or GTK3 native
file choosers on Linux.
- Contrast of check marks and radio buttons has been improved (#443).
- Improve X11 (16-bit) clipping of lines and rectangles.
- Added support of macOS 15.0 "Sequoia", 14.0 "Sonoma",
13.0 "Ventura", 12.0 "Monterey", and 11.0 "Big Sur".
- Added macOS support for the arm64 architecture since 11.0 (Big Sur).
- Added support for macOS 10.15 "Catalina"
- Added support for macOS 10.14 "Mojave": all drawing to windows is done
through "layer-backed views" when the app is linked to SDK 10.14.
- Added support for macOS 10.13 "High Sierra".
- Fixed X11 Input Method window badly positioned with Fl_Text_Editor
widget (issue #270).
- Fixed X11 copy-paste and drag-and-drop target selection (issue #182).
This fix has been backported to 1.3.6 as well.
- The user can now copy standard dialog text to the clipboard by
hitting Ctrl/C (#388).
- The selected color in Fl_Color_Chooser can now be copied to the
clipboard by hitting Ctrl/C.
- Add optional argument to Fl_Printer::begin_job() to receive
a string describing the error when an error occurs.
- Fix Windows-specific bug when the program tries to enlarge a
maximized window, that would freeze the window (git issue #65).
- Improve X11 16-bit coordinate clipping for text (STR 2798). This
assumes that text is "small" WRT 16-bit coordinate space and clips
text if at least one of the x/y coordinates is out of bounds.
- Fix Fl::add_timeout() in draw() under Linux (STR 3188)
- Improved documentation for '@' symbols in labels (STR #2940).
- Fl_Roller can now be controlled via the mouse wheel (STR #3120).
- Handle Shift + mousewheel event as horizontal scrolling (STR 3521).
- Tooltips hide by themselves after 12 seconds (STR #2584).
- Improved constructor for creating Fl_Preferences files with flags for the
correct locale and for overwriting existing files.
- Added Fl_Input_::append() method (STR #2953).
- Fix for STR#3473 (and its duplicate STR#3507) to restore configure-based
builds on recent Linux/Unix distributions where the freetype-config
command has been replaced by pkg-config.
- MacOS ≥ 10.10: Fl_Window::fullscreen() and fullscreen_off() no longer
proceed by Fl_Window::hide() + Fl_Window::show() but essentially
resize the window, as done on the X11+EWMH and Windows platforms.
- Fl_Cairo_Window constructors are now compatible with Fl_Double_Window
constructors - fixed missing constructors (STR #3160).
- The include file for platform specific functions and definitions
(FL/x.H) has been replaced with FL/platform.H. FL/x.H is deprecated
but still available for backwards compatibility (STR #3435).
FL/x.H will be removed in a (not yet specified) future FLTK release.
We recommend to change your #include statements accordingly.
- The Fl_Boxtype and Fl_Labeltype definitions contained enum values
(names) with a leading underscore (e.g. _FL_MULTI_LABEL) that had to
be used in this form. Now all boxtypes and labeltypes can and should
be used without the leading underscore. A note was added to the enum
documentations to make clear that the leading underscore must not be
used in user code, although the enum documentation still contains
leading underscores for technical reasons (internal use).
- Boxtypes can now be configured to draw their own custom focus box.
- The blocks demo program got a new keyboard shortcut (ALT+SHIFT+H) to
reset the user's high score. It is now slower than before in higher
levels, hence you can expect higher scores (due to a bug fix in the
timer code). You can use the '+' key to increase the level at all times.
- Some methods of Fl_Tabs are now virtual and/or protected for easier
subclassing without code duplication (STR #3211 and others).
- Fl_Tabs now has an option to delete tabs by the user (UI), and tab
overflow has been largely improved with several options.
- glutAddMenuEntry() now has a *const* label argument (STR #3323)
- Separated Fl_Input_Choice.H and Fl_Input_Choice.cxx (STR #2750, #2752).
- Separated Fl_Spinner.H and Fl_Spinner.cxx (STR #2776).
- New method Fl_Spinner::wrap(int) allows to set wrap mode at bounds if
value is changed by pressing or holding one of the buttons (STR #3365).
- Fl_Spinner now handles Up and Down keys when the input field has
keyboard focus (STR #2989).
- Renamed test/help.cxx demo program to test/help_dialog.cxx to avoid
name conflict with CMake's auto-generated target 'help'.
- Fl_Menu_Bar: left and right arrow keys now wrap to the menu at the
other end of the menubar when pressed in the first (resp. last) menu.
- Previously "public" members Fl::awake_ring_*_ are now "private" (#559).
- The test/clipboard demo program can now save PNG images.
- New virtual int Fl_Group::delete_child(int n) (STR 3218).
- Many documentation fixes, clarifications, and enhancements.
Bug Fixes
- Fixed all Pixmaps to be '*const' (STR #3108).
- Fixed Fl_Text_Editor selection range after paste (STR #3248).
- Fixed crash for very small Fl_Color_Chooser (STR #3490).
- Removed all shadow lint in header files (STR #2714).
- Fixed pulldown menu position when at the bottom of the screen (STR #2880).
- Fixed missing item handling in Fl_Check_Browser (STR #3480).
- Fixed Delete key in Fl_Input deleting entire widgets in Fluid (STR #2841).
- Duplicating Widget Class in Fluid no longer crashes (STR #3445).
- Fixed 'fluid.app' on case sensitive macOS (was: 'Fluid.app').
- Fl_Check_Browser::add(item) now accepts NULL (STR #3498).
- Interface to set maximum width of spinner text field (STR #3386).
- Fl_Text_Display no longer wiggles (STR #2531).
- Fixed Help_View return value (STR #3430).
- Fix FL_PUSH event handling of Fl_Check_Browser (STR #3004).
- Fix a potential crash when a program exits before it opens a window
(Windows only, STR #3484).
- Fix Fl_PNG_Image error handling. An error was potentially caused
by error handling of the image library with setjmp/longjmp.
- Fix Fl_Browser background and text color parsing (STR #3376).
- Fix Windows CreateDC/DeleteDC mismatch (STR #3373).
- Fix Fl_Tabs label drawing for Fl_Window children (STR #3075).
- Fix line number alignment in Fl_Text_Display/Editor (STR #3363).
- Fix ignored buffer pre-allocation (requestedSize) in Fl_Text_Buffer.
See fltk.general "Fl_Text_Buffer constructor bug" on Dec 5, 2016.
- Fix build with configure --enable-cairo --enable-cairoext,
see this report in fltk.general:
https://groups.google.com/forum/#!topic/fltkgeneral/x80qQ6wt0s4
Removed Features
- Bundled IDE project files (Xcode and Visual Studio) have been
removed. Please use CMake to generate your IDE project files.
See README.CMake.txt for more information.
- Dropped FLTK 1.0 compatibility (macro FLTK_1_0_COMPAT). This "feature"
was no longer usable since FLTK 1.3, hence it can be dropped safely.
Changes in FLTK 1.3
See CHANGES_1.3.txt
Changes in FLTK 1.1
See CHANGES_1.1.txt
Changes in FLTK 1.0
See CHANGES_1.0.txt
+792
View File
@@ -0,0 +1,792 @@
Changes in FLTK 1.0, up to FLTK 1.0.11 (May 7, 2001)
CHANGES IN FLTK 1.0.11
- CHANGED THE DEFAULT RUN-TIME LINKING TO "MULTITHREADED DLL".
You'll need to change your project settings to
use this as well or you'll get errors.
- Added new --disable-gl option to configure script.
- Added new const const pointer versions of pixmap
functions to eliminate an annoying pointer warning
message that was generated by the Sun and other C++
compilers.
- Eliminated all "var hides class::var" warnings.
- Eliminated all "string literal converted to char *"
warnings.
- OS/2 updates from Alexander Mai.
- Tidied up the HTML documentation to be more standards
compliant.
- Compiling with -DBOXX_BUGS will work around some
problems with the newest X drivers that BoXX delivers,
the problems all affect use of Overlays for normal X
drawing and OpenGL drawing. Normal compilation is
unchanged.
- The file chooser buttons use user_data() rather than
the label to decide what to do, allowing the label to
be somewhat cleaner.
- Selection color on X changed to blue, to match what
happens on Windows now.
- Added support for AIX (static library only).
- Added support for SunOS 4.x
- Now process WIN32 WM_ACTIVATEAPP message to reset the
key and button states in Fl::e_state.
- Fl_has_idle only tested N-1 callbacks and missed one.
- Restored WM_SYNCPAINT handling under WIN32; this fixed
a refresh bug under some versions of Windows.
- Check for OpenGL headers before checking to see if
OpenGL is supported. This should eliminate compile
errors due to missing non-FLTK header files...
- Add -D_INCLUDE_POSIX_SOURCE option when compiling with
the HP compilers.
- Replaced remaining _WIN32 symbols with WIN32
- Removed reference to unused GL/glu.h header file, which is missing on
some Linux systems.
- Fl_Gl_Window has a new method to allow you to get and set the context:
void Fl_Gl_Window::context(void*, int destroy = 0)
void* Fl_Gl_Window::context() const;
Return or set a pointer to the GLContext that this window is
using. This is a system-dependent structure, but it is portable to
copy the context from one window to another. You can also set it to
NULL, which will force FLTK to recreate the context the next time
make_current() is called, this is useful for getting around bugs in
OpenGL implementations.
If destroy_flag is true the context will be destroyed by fltk when
the window is destroyed, or when the mode() is changed, or the next
time context(x) is called.
- Some cleanup of Fl_Gl_Choice to move most of the system dependent
#ifdefs into Fl_Gl_Choice.cxx.
- Fl_Gl_Window does not set drawbuffer(BACKBUFFER) for
single-buffered windows.
- Fl_Input::replace(...) correctly updates the display
if the replaced region does not include the mark,
point, or selected region.
- Added Fl::add_check(...), Fl::remove_check, and
Fl::has_check. These are similar to idle callbacks but
are only called just before it waits for new events.
They can be used to watch for changes in global state
and respond to them.
- "accu-timer": some changes to repeat_timeout that seem
to make it accurate on Unix and WIN32 at speeds up to
500000 timeouts/second (and 700000 on Linux), and
within about .001% as accurate as the system clock.
- Fix to Fl_Valuator::step() by Guillermo Andrade.
- Fixed the FLUID write-menu bug introduced in 1.0.10
- Fl::flush() now calls GdiFlush() under WIN32 to
ensure that all graphics are drawn.
- fl_curve() now uses a much better algorithim to figure
out how many pieces to cut the curve into.
- FLUID now uses GetTempPath() under WIN32 to determine
where to store the clipboard.
- Right-ctrl does not delete selected text in Fl_Input,
until you type a composed character.
- Added simple FLTK and FLUID manual pages.
- Fl_Gl_Window leaked memory under WIN32.
- The colbrowser demo was missing an include file when
compiled under OS/2.
CHANGES IN FLTK 1.0.10
- Added a strcasecmp() function to FLUID; AIX doesn't
have it.
- Bug #115509: Fl_Scroll not repainting background.
- Updated the configure script and makeinclude.in file
to work with the Sun PRO compilers.
- Disabled the WIN32 async socket select code by default:
it doesn't seem to work anymore...
- Fl::below_mouse() was incorrectly clearing e_is_click;
this prevented any double-clicks from getting
through...
- No longer clear Fl::keysym on every event, this makes
better back compatability and fixes Win2000
- FLUID now restores which tab in an Fl_Tabs was
selected when loads .fl files.
- Hack to fix the annoying "raise another application
when a modal window is closed" problem on WIN32.
- Fl_Tabs now draws the background behind the tabs.
- Fl::set_fonts() on WIN32 fixed to work before the
first window is shown.
- CUA function keys, code submitted by George Yohng
<yohng@drivex.dosware.8m.com>
- Another attempt to get glut.h to work on WIN32.
- Fl_Menu_::add() ignores '&' signs when comparing menu
items, so you don't have to make the shortcuts the
same all the time.
- Fixed bit-flipping patterns in WIN32 bitmap code.
- Fixed size of data written by gif images to .C files
- Menu titles and buttons in the menubar can be images
(allows it to be used as a toolbar)
- Reads selectBackground from the xrdb database to set
the selection color. Adding this to your .Xdefaults
will make fltk and Motif programs look much more
Windoze-like:
*selectForeground: white
*selectBackground: #000080
- FL_WHEN_RELEASE on Fl_Input will now do the callback
when the input field is hidden, for instance when it
is on a tab and the user switches to another tab.
- Fl_Gl_Window with an overlay on X always resized any
child windows even if you turned resizable() off
because it turned it back on to resize the overlay
window. This patch avoids changing resizable().
- Fix so multiple Fl::add_idle() calls works
- The input focus got messed up if you called
Fl_Tabs::value(x) and there was something that took
focus on an earlier tab.
- Removed some (not all) of the warnings when compiled
with -Wwrite-strings, this should also get similar
warnings Solaris produces.
- Made Fl_Browser not hide the Fl_Widget::show() method
- Changes & additions for OS/2 from Alexander Mai
- Patch from Mike Lindner to make the turning on/off of
scrollbars on Fl_Scroll smarter.
- Added missing FL_EXPORT for Fl_Valuator::format()
- Shortcuts for "buttons" in a Fl_Menu_Bar work again.
- Fix for cut/paste support and Xdnd.
- Shortcuts for submenu titles in a menubar pop up the
submenu (rather than calling the callback)
- Added documentation for GL_SWAP_TYPE
- Buttons with box(FL_NO_BOX) did not draw. Apparently
they did in older versions of fltk, I restored this.
(bug 108771)
- Removed 8-bit colormap drawing code that was not doing
anything in fl_draw_image due to the colormap
allocation changes. I also made fl_color(r,g,b)
actually allocate the requested color rather than the
nearest fltk color-cube color (this is only done for
the first color that maps to a given entry in the fltk
color cube), the result is that pixmaps with a small
number of colors are drawn much more accurately. The
resulting code seems to produce better images and is a
good deal smaller!
- Fixed makeinclude.in so CFLAGS are used for c source
code instead of CXXFLAGS. (bug 108694)
- Better fix for gif files suggested by pauly (bug 108770)
- Performance of Fl_Gl_Window may be improved on some
types of OpenGL implementations, in particular MESA
or other software emulators, by setting the
GL_SWAP_TYPE environment variable. This variable
declares what is in the back buffer after you do a
swapbuffers:
setenv GL_SWAP_TYPE COPY
This indicates that the back buffer is copied to
the front buffer, and still contains it's old
data. This is true of many hardware
implementations. Setting this will speed up
emulation of overlays, and widgets that can do
partial update can take advantage of this as
damage() will not be cleared to -1.
setenv GL_SWAP_TYPE NODAMAGE
This indicates that nothing changes the back
buffer except drawing into it. This is true of
MESA and Win32 software emulation and perhaps some
hardware emulation on systems with lots of memory.
All other values for GL_SWAP_TYPE, and not setting
the variable, cause fltk to assume that the back
buffer must be completely redrawn after a swap.
This is easily tested by running the gl_overlay demo
program and seeing if the display is correct when
you drag another window over it or if you drag the
window off the screen and back on. You have to exit
and run the program again for it to see any changes
to the environment variable.
- Optimized colormap usage on 8-bit displays with
images. New code only allocates colors as they are
needed (still converts indexed images to full RGB and
dithers, tho...)
- Fixed .gif files in FLUID, they were broken by the fix
for large .xpm files in version 1.0.9.
- Fix for OpenGL hardware overlays with the transparent
index != 0. Tested on the brand new HP Linux
Workstations, this is the only bug encountered. Both
X and OpenGL hardware overlay works perfectly on
these, though configue may not enable it by
default...)
- Fl_Choice and all other Fl_Menu_ subclasses draw the
items using textcolor() as the default color of the
text.
- Fix suggested by Stuart Levy to fix scrolling when
deleting items from the browser.
- Replaced the -$(MAKEFLAGS) with $(MFLAGS) as per the
gmake documenation. Apperntly this works with other
make programs and MAKEFLAGS is passed invisibly by
gmake, though the documenation is not too clear...
CHANGES IN FLTK 1.0.9
- More documentation fixes.
- GLUT_STROKE_*_ROMAN in glut.h are defined as 0,1 on
WIN32 to match the glut header files there.
- Added Fl::has_timeout() and Fl::has_idle() functions.
- Added new Fl::repeat_timeout() method that
measures time from when the last timeout was called.
This has slightly less overhead and allows accurate
spacing of timeouts.
- More Cygwin changes
- FLUID could crash with identifiers with trailing
whitespace.
- Fixed the XPM loading code in FLUID to handle files
longer than 2048 lines.
- Added a bunch of missing FL_EXTERN's to glut.h to
eliminate GLUT linking errors under WIN32.
- Fix for sliders so that clicking on one with a small
(or zero) slider_size will not move the slider.
- fl_shortcut.cxx didn't export fl_old_shortcut() in the
WIN32 DLL.
- Fixed xpaint link in the documentation.
- Included Fl_Input word-wrap fixes from Alexander Rabi
Beels. This will not affect things much because
word-wrap is normally disabled.
- Patch from Stuart Levy so the *last* widget in an
Fl_Pack may be resizable. This should be compatable
because resizable didn't do anything before so there
was no reason to set it.
- Cleaned up the timeout and Fl::wait() code. The new
code calls the clock function less than half as much,
which results in a noticable performance improvement
in some apps.
- Fl::wait(time) with a time greater than the system can
handle (24.855 days on NT, the same on some Unix
systems) will now act as though the time is infinity.
Before it would do unpredictable things.
- "USE_POLL" now compiles and works, although it is
disabled by default. poll() is an alternative to the
UNIX select() call which is available on some version
of UNIX and may be faster depending on the platform;
try it by editing config.h.
- The WIN32 USE_ASYNC_SELECT code now does translation
and dispatching of the select events; this makes
Windows a lot happier.
- Added a check for an open display in Fl::wait() so
that you don't need an open window under X to call it.
[changes in snapshot 2]
- fl_old_shortcut() wasn't being exported in the WIN32 DLL project.
- Updated Cygwin and Mingw makefiles.
- Updated the BC++ project file.
- You can no longer insert control chars into Fl_Int/Float_Input.
- Fl_Multiline_Input now resets the horizontal position when
focus is changed; this caused problems when multiple multiline
widgets were used in an application.
- All handle() methods are now public, and all draw() methods are
now protected in FLTK widgets.
- More fixes to the OpenGL overlay code on win32. This now
seems to work quite reliably on several different pieces of
hardware. Apparently doing SetLayerPaletteEntries with a
palette larger than the overlay size caused the drivers to
screw up in unpredictable ways. Also SwapBuffers swapped both
the overlay and main window, which is not what fltk's
interface wanted, this was easy to fix however.
- Patch for full scrollbars so that clicking on them does not
move anything.
- Documentation fixes.
- Better horizontal scrolling of Fl_Input when cursor is near
the end of the line.
- Fl_Input::value(x) selects all text.
- Fl_Output and Fl_Multiline_Output would scroll to the end
of the text.
- filename_isdir() now drops any trailing slash from the
filename (needed for Windows)
- Added return type for main() function in line_style demo.
- Running FLUID with the "-cs" option writes the I18N message
file.
- The WIN32 version of XParseGeometry() didn't initialize some
variables. This caused a compiler warning but did not affect
the actual code.
[changes in snapshot 1]
- EMail changes - fltk-bugs@easysw.com now officially
fltk-bugs@fltk.org.
- The FLTK DLL project file didn't include fl_compose.cxx
- Dropped the GCC -fno-rtti option since it caused problems
with existing programs.
- Moved the .fl rules back to the test directory.
- Fixed some makefile and spec file problems.
- Fixed hardware overlays. The problem was the new
fl_clipped() code, which tests against the current window
size. The hardware overlay code did not set the current
window when drawing the overlay. I needed hardware overlay
for DD's code, I'm not sure if these fixes are good enough to
enable this in our general release. Hardware overlay still
only works on SGI Irix.
- Some patches to turn off the MSVC++ -Oa (assume no aliasing)
optimization flag. Suprisingly this only broke a few parts
of fltk, or at least these are the only ones I found.
- Does not unmap child windows when the main window is
iconized. This reduces flashing when the window is deiconized.
- Fl::key() is set to zero by all events except key down/up.
This will allow you to reliably test if an event or callback
was produced by a keystroke. Fixes the bug posted about
stopping Escape from closing the window.
- User defined cursors on OpenGL windows slowed down NT a
*LOT*. Some attempts to fix this by turning off the cursor
while drawing the window.
- Filename completion in the file chooser works better on NT.
Typing TAB fixes the case of everything you typed to match
the shortest name that can be completed.
CHANGES IN FLTK 1.0.8
- Many documentation changes/fixes/improvements.
- FLUID didn't save Fl_Double_Window's as
double-buffered windows.
- Fl_Menu_ text color is used if Fl_Menu_Item text color
is not set.
- Added Fl::first_window(window) method to change the
"top" window that is used when showing modal windows.
By default it is the window the user last
clicked/typed in.
- The Fl_Menu::global() handler now uses the current top
window instead of the menu bar for modal stuff.
- Added fl_line_style() function to set the line style.
Note that user-defined line styles ONLY WORK UNDER X11
and Windows NT/2000. Windows 95/98 do, however,
support the "standard" line styles.
- Fl::wait() does not return immediately when no windows
- XForms keyboard shortcuts using hex keycode constants
now work.
- Updated the configure script for *BSD and to turn off
exceptions and RTTI in the FLTK library itself (does
not affect applications which use these things)
- FLUID now supports I18N using the POSIX or GNU mechanisms.
- Fixed definition of glutBitmapWidth to match header file.
- Does not turn visible() on when a window is iconized()
or if a modal window is shown and it's parent is
iconized. This allows the code "while (w->visible()
&& w->damage()) Fl::check();" to reliably wait for the
window to be mapped and drawn the first time.
- Setting box(FL_NO_BOX) on a button makes it an
invisible overlay
- FL_NORMAL_SIZE is now a global variable so you can
change the default text size prior to creating your
widgets.
- Menus now draw properly with a box type of
FL_FLAT_BOX.
- Cygwin fixes to compile in POSIX mode.
- Fl_Value_Input callback can call value() or destructor.
- OpenGL overlays now work under Windows NT!
- Fl_Slider and Fl_Scrollbar could cause a divide by zero.
- Clicking in an Fl_Input field no longer selects the
whole field, it just moves the text cursor.
- Tru64 UNIX fixes for filename_list()
- Fl_Browser now draws itself properly when deactivated.
- FLUID GUIs now use Courier font for all code input.
- The FLUID OK and Cancel buttons are now all shown in
the same order in all windows.
- Fixes to compile under GCC 2.95.2
- Fixed the BC5 project files.
- FL_LEFT_MOUSE and friends are now in
<FL/Enumerations.H>
- Fixes for fake OpenGL overlay code under WIN32.
- Message windows are now resizeable.
- On WIN32 non_modal (but not modal) windows have the
close and size boxes.
- Fl_Button and friends didn't honor the
FL_WHEN_NOT_CHANGED condition.
- Disabled XDBE on all platforms.
- XGetDefault patch from James Roth
- New fl_open_display(Display *) function to allow FLTK
to share a display connection with another toolkit
(like Xt, GTK, etc.)
- Shortcut labels for special keys should now display
properly under WIN32.
- fl_set_fonts() did not reuse fonts.
- Fixed shortcut problem under WIN32 when the focus
window changes.
- "dead" keys should now work under X11.
- Fixes to make FLTK compile with GCC 2.95.2
- FL_SHORTCUT fix for I18N.
- Fixed cut/paste problems under WIN32
- FLUID now produces correct code for nested class
destructors.
- Nested windows should now redraw properly under WIN32.
- "table" is now static in fl_cursor.cxx
- Fl_Chart used the textcolor() and not the color() for
horizontal bar charts.
- Now set the input hint for TWM and TWM-derived window
managers.
- Now look for TrueColor visual if FLTK is compiled with
USE_COLORMAP == 0.
- Fl_Scrollbar could generate a divide-by-0 error if the
min and max values were the same.
- Fl_Menu_::remove() now removes whole submenus if
needed.
- Scrollbar buttons now draw themselves pushed in as
needed.
- Fixed the gl_overlay demo (and gl overlays in general)
when they are faked with no hardware and the window is
resized.
- Selections weren't shown in Fl_Browser widgets when an
item used the @B (background) format.
- Windows can now be resized by the program under X11
for more window managers.
- OS/2 makeinclude updates.
- Added Fl.H required by an inline function in
Fl_Repeat_Button.H
- Fl_add_idle adds new functions to the end of the queue
ring, rather than the start, so they are executed in
the order added, and a callback that adds itself does
not prevent others from being called.
- FLUID lets you type in code that starts with '#' for
cpp directives.
- XBell() could be called before the X11 display was
opened, causing a segfault.
- Fixed Fl_Gl_Window::ortho() - Borland C++ doesn't
define GLint to "int", but instead to "long"...
- Fixed Fl_Browser scrollbars within an Fl_Scroll
widget.
- Fl_Output (and non-focused Fl_Input) now scroll in
response to position()
- Fl_Input now does not scroll horizontally if the
entire string will fit in the widget.
- Fl_Scrollbar didn't push the right arrow buttons when
you clicked outside the scroller.
- Now use WSAAsyncSelect() for better socket performance
with Fl::add_fd()
CHANGES IN FLTK 1.0.7
- Fixed Fl_Input_ bug under WIN32 - no longer stop accepting input
when one of the "Windows" keys is pressed.
- Now call TranslateEvent for all events under WIN32.
- Fixes for OpenBSD and NetBSD
- The FL_CURSOR_HAND cursor now uses the IDC_HAND cursor instead of
IDC_UPARROW under Windows 98 and 2000.
- Fl_Scrollbar now does a page-up/down when you click outside the
scroller.
- Fl_Window::show(0, NULL) causes core dump
- Fixed a compile-time error in fl_call_main.c for Borland C++.
- "fluid -c filename.fl" would try to open an X display if the
FLUID file contained an Fl_Browser widget.
- Fl_Browser now correctly measures items with @C or @B color
formatting commands.
- Fixed a bitmap drawing bug for WIN32 (bit reversal table was wrong)
- fl_xyz() dialogs now set a title in the title bar.
- fl_alert() sounds the bell under X11.
- fl_xyz() dialogs now call MessageBeep() under WIN32.
- Fl_Browser_ didn't draw the selection box with the inactive color
when the browser wasn't activated.
- Fl_Browser now responds to FL_KEYBOARD as well as FL_SHORTCUT. If
you subclass it to accept focus then keyboard navigation will work.
- Fl_Tile and Fl_Tabs do their callback when the user changes their
display.
- Made some of the private methods of Fl_Browser protected.
- Now set win_gravity correctly, this helps some X
window managers that use it position the window where
FLTK wants it to be.
- 0-width browsers crashed.
- Minor change: if the X window manager does not do
anything else with windows that don't have their
position specified, the windows appear centered in the
screen, rather than in the top-left corner. This
happened with modal windows under Irix 4Dwm. This
also causes windows to be centered when no window
manager is running, which might be useful for
installation gui programs?
- Clicking in an Fl_Input field the first time selects the entire
field.
- Clicking the middle mouse button in an Fl_Input field now inserts
the text at the indicated position instead of the cursor position.
- Drag-selecting text in an Fl_Input field now copies the text
automatically.
- Fl::flush() no longer calls the draw() method for invisible windows.
- Calling deactivate() on an invisible widget could cause an
infinite loop in some obscure cases.
- Added #pragma's for SGI C++ compilers - the 6.{23} X headers had
errors in them.
- Fl_Gl_Window::ortho() changed so that text and images
are not erased if the origin is off the left/bottom of the
window.
- Small change to Fl_Input so that a click that gives it
the focus also selects all the text.
- Fixed a slider drawing problem.
- You can now add/delete children of Fl_Tabs widgets whether or
not they are visible.
- Now embed woff options for SGI C++ compilers (gets rid of X11
header warnings)
- draw_pixmap used a cast that the Digital UNIX C++ compiler didn't
like.
- The GLUT function key constants were off by one.
- The XPM reading code didn't handle RGB colors other than #rrggbb.
CHANGES IN FLTK 1.0.6
- Fl_win32.cxx defined WM_MOUSE_LEAVE instead of WM_MOUSELEAVE.
- Fl_get_key_win32.cxx needed to include <ctype.h>
- gl_draw_pixmap.cxx needed a pointer cast for ANSI C++.
- Fl_Repeat_Button didn't always delete its timeout.
- Now keep track of the current OpenGL context; this provides
significant performance improvements for OpenGL applications
with a single context.
CHANGES IN FLTK 1.0.5
- Fl_Roller didn't handle a width and height of 0.
- filename_list() fix for FreeBSD.
- Fixed RPM install docos - needed "--install" option...
- Fl_Browser_ wouldn't draw the vertical scrollbar right away if it
added a horizontal one which covered the last line.
- Fl_Tabs problems - single-character labels don't show up (problem in
measure_tabs() or measure_label() methods?), and doesn't clear top
tab area before drawing tabs.
- Fl_Browser needs a destructor.
- fl_draw_label() quoted characters between 0x80 and 0xa0, which
caused problems for some programs using the WinANSI character set.
- FLUID didn't handle declared class destructors.
- Fixed another WIN32 cut/paste bug.
- Fl_Tabs didn't work properly when there was only 1 tab.
- Fl_Menu::add() didn't delete the old array.
- Fl_Repeat_Button didn't delete its timeout when disabled.
- fl_draw() would crash if no font was set (now defaults to
a 14-pixel Helvetica font)
- Can't forward declare classes; need to check for "class ", "struct ",
"union ", etc. See Bill's message
- Added #pragma around xlib.h for IRIX
- FL_KEYBOARD events have the correct x/y when sent to child X
windows. Note that if you worked around this bug by adjusting the
x/y yourself you will have to change your code. In addition all
events have the correct x/y when sent to the grab() widget. And
the code to do all this was simplified a lot.
- The XPM code didn't handle named colors with spaces in the names.
- Pressing ESCape closed the window with pointer focus, even if there
was a modal window open (now closes the modal window).
- FLUID no longer produces trigraphs accidentally in the image data.
- FLUID uses string constant concatenation to produce shorter image
data.
- The Fl_Group deletion code crashed if there was exactly one child
widget.
- Simulated overlays in single-buffered Fl_Gl_Windows now draw
correctly (though very slowly as it requires the entire window to
be redrawn to erase the overlay). This fix ported our Digital
Domain programs better to systems with no overlay hardware.
- Added support for extern "C" declarations in FLUID.
- Added Fl_Pack support to FLUID.
- Fixed the order of #include's in FLUID generated header files.
- Fixed detection of vsnprintf and snprintf under HP-UX 10.20 once
and for all.
- The checkers demo did not compile with GCC 2.95
- FLUID didn't output virtual destructors properly.
- Added inline "make_visible()" method to Fl_Browser.
- Fl::wait() now returns immediately if any timeouts are
called.
- 16-bit XPM files are now properly handled.
- Fl_Window::resize() was missing FL_EXPORT (caused problems
with Windows DLLs)
- FLUID was writing extern declarations twice.
- New FLUID arrow key functionality: arrows move by one pixel, shift+arrow
resizes, ctrl+arrow steps by grid
CHANGES IN FLTK 1.0.4
- Documentation updates
- Fl_Browser::bottomline(size) didn't scroll to the bottom
if the second-to-last line was visible.
- fl_wait() didn't poll FDs properly for WIN32.
- Fixed DLL definitions for BC++.
- FLUID now handles nested classes properly.
- The "connect" demo now does a wait() for the PPP process
so that you aren't left with a lot of zombie processes.
- Fixed the FLTK colormap to use FF instead of F4 for full
intensity values.
- Minor change to scrollbar drawing code to match other
toolkits.
- New selections would cancel themselves out in WIN32.
- The header file links were broken in the IRIX
distributions.
- fl_elapsed() now always uses GetClockTick() for WIN32.
- fl_display is now initialized to GetModuleHandle(NULL) -
this fixes problems people had with Cygwin and MingW32.
- WinMain() is no longer compiled in with Cygwin and
MingW32; it wasn't being used for those compilers anyways.
- Added Solaris compiler options to configure script.
- Fl_Value_Input wouldn't update properly if you set the
value from a callback.
- Fl_Tile wouldn't resize if the resizeable widget was the
last child.
- Was missing #include <ctype.h> and #include <stdlib.h> in
several files, which caused problems on some platforms.
- Fixed another case where Fl_Browser_ could get in an
infinite resizing loop.
- Fl_win32.cxx now includes <FL/filename.H> to export missing
DLL symbols.
- FLUID didn't handle member functions that include the
scope operator.
- Fl_Chart was dividing by 0 if there were no data samples
or if they were all the same (min == max).
CHANGES IN FLTK 1.0.3
- XDBE is now enabled for IRIX 6.[234] as well as 6.5.
- FLUID didn't write the when() condition properly.
- Tab/space/backtab/backspace can be used to navigate
through menus.
- Changed $(DSONAME) in the src/Makefile to "libfltk.so.1
libfltk.sl.1".
- Fl_Browser could read past the end of the string when
computing the item height.
- Fl_Browser could get in an infinite loop when checking to
see if scrollbars needed to be displayed.
- FLUID now honors the return type of the outermost widget.
This was a problem when substituting Fl_Group in an
Fl_Window widget.
- Fl_Menu_::copy() wasn't allocating a power of 2 for the
array size.
- FLWM would crash if fl_xmousewin was deleted.
- The fast_slow demo now uses output widgets.
- Timers under WIN32 were unreliable.
CHANGES IN FLTK 1.0.2
- Documentation updates
- The Visual C++ project files didn't include fl_add_idle.cxx.
- LIBRARY/DSO name inconsistencies in src/Makefile.
- src/Makefile didn't clean the DSO.
- The valuator demo now has only a single callback.
- The code looked for HAVE_SYS_SELECT_H, but the
config file uses HAVE_SYS_SELECT.
- Fl_Image redraw not quite right under X11 or WIN32
- Problems with timeouts & cube demo under WIN32
- FLUID problems with inline functions.
- Documentation fixes...
- Fl_Browser::item_height() didn't handle blank lines or
non-default fonts properly.
- FL/math.h didn't have #ifndef...#define...#endif guards
against multiple inclusion...
- Fl_Menu_::copy() fix - didn't allocate power of 2...
- Fl::damage() now remains true until all windows are actually
redrawn.
- Fl_Widget destructor, hide(), and deactivate() methods no longer
send FL_LEAVE, FL_RELEASE, or FL_UNFOCUS events to the widget
(which could cause applications to crash).
- FLUID now outputs symbolic names for align() and when().
- Fixed select() to use maxfd + 1 instead of maxfd.
- Added "Fl::remove_fd(fd, when)" function so you can remove the
read and write callbacks separately.
- The Fl::add_fd() and Fl::add_timeout() arrays are now dynamically
allocated.
- FLUID didn't always turn the FL_SUBMENU flag on for submenu titles.
- The "extra code" in FLUID now is placed before the "o->end()" call
for Fl_Group and its derived classes.
- You can now set a FL_Window widget's class in FLUID to Fl_Group to
generate a function or class that builds part of a GUI (i.e. no window).
- FLUID now displays "Save file before exiting?" with the standard yes,
no, and cancel buttons rather than "Discard changes?".
- Fl_Menu_::add() now works with any type of menu, even one set with
the menu() method.
- The keypad keys were not always decoded properly under X11.
- Some pointers were not being turned off when widgets were deleted,
which caused some applications (like FLWM) to crash.
CHANGES IN FLTK 1.0.1
- Documentation fixes.
- Fl::check() didn't return the correct value, breaking a number
of applications.
- Fixed FLUID bug that caused styles patch to crash when you delete
a menu item.
- Updated valuators demo to put the values in the gui box.
- Fl_Browser_::item_height() didn't always compute the correct
value.
- Fixed the alignment of Fl_Choice text.
- Fixes for OS/2.
- Fl_Menu_Item::clear() didn't clear value.
- Added some changes to make FLTK work with Borland C++.
- ANSI C++ fixes.
- Plugged a memory leak in the fractal demo.
- Fl::add_timeout() didn't work under WIN32 with small values.
- The configure script and makefiles now define DSONAME and
use the static library for all example programs.
File diff suppressed because it is too large. Load diff
+945
View File
@@ -0,0 +1,945 @@
CHANGES IN FLTK 1.3.9 RELEASED: Dec 09 2023
FLTK 1.3.9 is a maintenance release with some fixes and enhancements.
Highlights in this release:
- Support macOS up to macOS 14 "Sonoma".
- Update bundled libraries to current versions (see below).
- Introduce bundled image library "prefixing" to avoid conflicts
with system libraries.
- New CMake option FLTK_MSVC_RUNTIME_DLL to select Visual Studio
Runtime version: DLL (/MDx) or static (/MTx), see README.CMake.txt
Bundled library versions (see also README.bundled-libs.txt):
Library Version Release date
---------------------------------------------
jpeg jpeg-9e 2022-01-16
png libpng-1.6.40 2023-06-21
zlib zlib-1.3 2023-08-18
Details:
Albrecht Schlosser:
Backport X11 INCR protocol fixes from 1.4.0 (issue #451)
X11: Suppress compiler warnings when using gcc or clang
Fix crash if a program exits before it opens a window (STR 3484).
Fix compilation error with current Visual Studio 2022
Windows: #define WIN32 if not defined by user
Backport warning fixes from 1.4.0 in src/fl_draw.cxx (#693)
Fix compiler warning as pointed out in PR #693
Fix another compiler warning (#693)
Remove unused variable, fix "type issue" (#445, part 2)
Fix stack buffer overflow found by address sanitizer
Fix "gtk+ rendering" (GitHub Issue #443)
Fix doxygen warnings
Bump version numbers, prepare release 1.3.9
Fix several compiler warnings
Update bundled image libraries and zlib to current versions
Update README, README.CMake.txt, and some support files
Fix compiler warnings: backported from 1.4 (git 'master')
CMake/MSVC: remove confusing recommendation to rerun CMake
Documentation: remove dark color on title page
Raise CMake minimum required version to 3.15 and more
ManoloFLTK:
macOS platform: Issue #325 "Disabling IM disables Greek and Cyrillic layouts"
Fix fullscreen window level corner cases on macOS
Fix issue #373 apparent with macOS platform and SDK ≤ 10.13
Issue #452: Fl::get_font_name failure on OS-X.
Issue #454: crash in Fl::get_font_name().
Issue #469: Fl_Sys_Menu_Bar menu item shortcuts using Esc or Tab don't work on Mac
Fix "Focus is lost leaving full screen on macOS 13" (#608)
Add support of macOS Ventura 13.0 and macOS Sonoma 14.0
macOS: remove configure option --enable-x11 and CMake OPTION_APPLE_X11;
this functionality remains in FLTK 1.4.
configure.ac: make sure local-png and local-zlib always run together
Remove the -mwindows argument from CFLAGS and CXXFLAGS
Matthias Melcher:
Issue #188: Fix reference counts and search for Fl_Shared_Image original
YX:
Fix IME problem (issue #270)
CHANGES IN FLTK 1.3.8 RELEASED: Nov 20 2021
FLTK 1.3.8 is a maintenance release with some fixes and enhancements.
Details:
Albrecht Schlosser:
Make "FLTK_CONSOLIDATE_MOTION" user-definable (issue #76)
Fix compiler warnings (backported from 1.4)
Add new dialog fl_choice_n() with extended return values (#282)
ManoloFLTK:
Account for deprecation of [NSBitmapImageRep initWithFocusedViewRect:]
in macOS 10.14
macOS: fix fullscreen window when other windows were created before
Fix issue #287: "FLTK 1.3.6 doesn't handle fullscreen on macOS"
Fix issue #288: "FLTK 1.3.6+ doesn't notify window movement on macOS"
Fix issue #279: "HiDpi issue on macOS with retina display"
macOS: Allow building with non-Apple compiler that may not support blocks
CHANGES IN FLTK 1.3.7 RELEASED: Jul 25 2021
FLTK 1.3.7 is a maintenance release for macOS only. It fixes one
regression introduced in FLTK 1.3.6 and two long standing timer
issues on macOS.
Other platforms than macOS are not concerned.
Changes:
Avoid premature FL_RELEASE event at start of drag-n-drop operation
Fix a timer inconsistency and prevent a crash
Fl::add_timeout() must always create a new timer (#248)
CHANGES IN FLTK 1.3.6 RELEASED: May 15 2021
There have been no changes since FLTK 1.3.6rc2.
CHANGES IN FLTK 1.3.6rc2 RELEASED: May 04 2021
FLTK 1.3.6rc2 fixes some minor issues of 1.3.6rc1, particularly macOS
bundle generation. It addresses an issue that bundles can't be executed
on macOS 11.3 Big Sur if built with configure/make after downloading
the release tarball because of the macOS "quarantine" feature.
Details:
Albrecht Schlosser:
Rename file 'VERSION' to 'fltk_version.dat' (#191)
Fix version number in doxygen docs
Fix build with Cairo for CMake < 3.13
CMake: fix old (pre 3.13) link_directories() usage
Enhance CMake build configuration summary
Refactor macOS bundle generation to avoid "quarantine"
Fix a new compiler warning
CHANGES IN FLTK 1.3.6rc1 RELEASED: Apr 26 2021
FLTK 1.3.6 is a maintenance release with new macOS Big Sur support
and some bug fixes. macOS Big Sur is supported on both Intel and the
new Apple Silicon (M1) chips.
CMake support has been improved but is not yet "perfect". Documentation
has been enhanced, bundled image libraries have been updated to current
versions.
The following lists are subsets of all commits. References in '(...)'
are either STR numbers (STR xxxx) or GitHub Issues or Pull Requests
(#nnn).
Bug fixes and other improvements
Albrecht Schlosser:
Fix Fl::add_timeout() in draw() under Linux (STR 3188)
X11: Fix X Input Methods (XIM) (STR 3502, 3192)
Fix overly restrictive JPEG filter (#81)
Fix DND in read-only Fl_Input (Fl_Output) (#113)
Fix offscreen drawing under X11 (STR 3384)
Fix potential fluid crashes (STR 3420) + memory leak
Fix X11 copy-paste and drag-and-drop target selection (#182)
Fix CMake install procedure (#212)
Avoid "Bogus FL_MOVE/FL_DRAG events" (#76)
CMake: Document FLTKConfig.cmake and set FLTK_INCLUDE_DIR
Greg Ercolano:
Fix issue92, added -d debug flag to fluid (#92)
Merge pull request #176 from ComputerNerd/errmsg-fix-13
ManoloFLTK:
X11: add support for copy+paste of image within one app
Windows: add bitmap version of graphics when copying to clipboard
Fix use of Xrender extension with old, 16-bit framebuffers.
Fix for Fl_Native_File_Chooser under macOS 10.15 Catalina and ...
Restore macOS capacity to turn window fullscreen encompassing several screens.
Improve Fl_Copy_Surface under macOS
Set OPTION_USE_SYSTEM_LIBPNG/JPEG off under macOS by default
Have Fl_Pack::draw() call Fl_Group::init_sizes() on its parent group.
CMake support of the Darwin+XQuartz test platform
Add support of macOS "Big Sur" 11.0
Fix when building with SDK 10.15 and running with 11.0 Big Sur
Backport fix for issue #185 "Shared Image reload() loses initial dimensions" from branch 1.4
Fix fl_endpoints() for macOS platform that was not effective.
Fix stack corruption when loading GIF (pull request #200)
Restore ./configure --enable-x11 on macOS
Fix crash when terminating any macOS app by cmd-Q
OKAMURA, Yasunobu:
Fix JIS Keyboard dead keys
CHANGES IN FLTK 1.3.5 RELEASED: Mar 03 2019
Bug fixes and other improvements
- Updated CHANGES for release, removed one wrong entry
CHANGES IN FLTK 1.3.5rc2 RELEASED: Feb 17 2019
Bug fixes and other improvements
- Fix Xcode FLTK project for use under macOS 10.14
CHANGES IN FLTK 1.3.5rc1 RELEASED: Feb 11 2019
New features and enhancements (highlights)
- Add support for macOS 10.13 "High Sierra" and 10.14 "Mojave".
- Add FL/platform.H for compatibility with FLTK 1.4 and higher.
- Improve OpenGL(3+) support.
- Improve Cairo support and (CMake) Cairo detection.
Bug fixes and other improvements
- Fix for STR 3473 (and its duplicate STR 3507) to restore configure-based
builds on recent Linux/Unix distributions where the freetype-config
command has been replaced by pkg-config.
- Fix Fl_Tree::insert() with pos out ouf range (issue #18).
- Fix Fl_GIF_Image Color Table handling (STR 3491).
- Make sure not to access Fl_Menu_ widgets if the widget gets
deleted while the menu (pulldown) is open (STR 3503).
- Fix CMake build (fluid) on case sensitive macOS file systems.
- Windows/OpenGL: improve pixel format detection (STR 3119).
- Add support for macOS 10.14 "Mojave": all drawing to windows is done
through "layer-backed views" when the app is linked to SDK 10.14.
- MacOS platform: fix regression in macOS 10.13 where an unbundled app
had its system menu bar unresponsive.
- MacOS 10.10 platform: Fl_Window::fullscreen() and fullscreen_off()
no longer call Fl_Window::hide() + Fl_Window::show().
The new procedure essentially resizes the window, as done on
the X11+EWMH and Windows platforms. This improves in particular
the possibility to turn an Fl_Gl_Window fullscreen on and off.
- MacOS platform: Support \r\n as end of line used by recent
MS Office apps in clipboard.
- Fix Fl_Text_Editor overstrike mode (STR 3463).
- More consistent and optimized "gleam" scheme box drawing.
- Fix a MinGW build error with new MinGW versions as of Feb 2018
(undefined S_OK and __FD_ISSET), see STR 3454.
- Windows/CMake: Add missing definition of WIN32 for Windows builds.
This seems to be necessary for VS2017 and other compilers that
don't #define WIN32, but FLTK relies on this preprocessor macro.
Autoconf/configure and bundled IDE files #define WIN32 as well.
- Fix illegal memory access after free when closing fluid (valgrind
reports "Invalid read of size 4"), see also STR 3427.
- Fix crash when closing fluid with Fl_Table (STR 3427).
- Fix ignored buffer pre-allocation (requestedSize) in Fl_Text_Buffer.
See fltk.general "Fl_Text_Buffer constructor bug" on Dec 5, 2016.
- Fix Fl_Browser background and text color parsing (STR 3376).
- Fix Windows CreateDC/DeleteDC mismatch (STR 3373).
- Update bundled configure scripts config.guess and config.sub.
- Fix configure --enable-cairo --enable-cairoext,
see report in fltk.general:
https://groups.google.com/forum/#!topic/fltkgeneral/x80qQ6wt0s4
- Fix macOS timer implementation (STR 3387).
- Fix drop-to-FLTK-widget under MSWindows when the desktop is
rescaled (STR 3390).
- Add support for macOS 10.13 "High Sierra". Subwindows don't
move correctly under 10.13 without this fix.
CHANGES IN FLTK 1.3.4-1 RELEASED: Nov 15 2016
Bug fixes and other improvements
- Fix Windows IDE solutions VisualC2008 and VisualC2010 to
build properly if the FLTK source directory is located
in a path that contains spaces.
Note: this is a source tar file update that is only necessary
if you build one of the above mentioned Visual Studio IDE
solutions in a path with spaces. Nothing else changed, no
documentation updates.
CHANGES IN FLTK 1.3.4 RELEASED: Nov 11 2016
Bug fixes and other improvements
- Fix test/native-filechooser help display artifact (STR #3349).
- MacOS: fix a crash when closing a fullscreen window.
- Accept empty Fl_Pixmap in Fl_RGB_Image c'tor (STR #3348).
- MacOS: fix drawing error when a window containing a hidden subwindow
is changed to fullscreen (error visible with the tabs test program).
- MacOS: fix possible crash when enabling fullscreen in test/scroll.
- Add a snapshot of known STR's and RFE's (KNOWN_BUGS.html).
CHANGES IN FLTK 1.3.4rc3 RELEASED: Oct 31 2016
Bug fixes and other improvements
- Fix string truncation in fluid (STR #2722 continued).
- MacOS: fix a small problem where the Command-Quit menu hotkey
may not work if Fl_Native_File_Chooser is used before any
window is shown.
CHANGES IN FLTK 1.3.4rc2 RELEASED: Oct 24 2016
Bug fixes and other improvements
- Make sure the "File Systems" menu item of Fl_File_Chooser
lists "/" as the first mounted file system (Linux/Unix platform).
- Added line numbers to fluid Edit -> Show Source Code viewer.
- Improved fluid's template handling (STR #3335).
CHANGES IN FLTK 1.3.4rc1 RELEASED: Oct 17 2016
New features and extensions
- Added support for Mac OS 10.11 "El Capitan" and 10.12 "Sierra".
- Added full support of true subwindows to the Mac OS X platform.
Window nesting to any depth is possible. An Fl_Gl_Window window or
subwindow can contain Fl_Window's as subwindows.
- Fluid now supports external editors (STR #3213)
See: Edit -> GUI Settings -> Use external editor
- Added method Fl_Widget::is_label_copied().
- Added methods Fl_Copy_Surface::w(), Fl_Copy_Surface::h(),
and Fl_Copy_Surface::draw_decorated_window().
- Added method Fl_Image_Surface::draw_decorated_window().
- Added method Fl_Shared_Image *Fl_Image_Surface::highres_image()
to draw into a high-resolution bitmap image (Mac OS X only).
- Added support for OpenGL version 3 and later.
- Added method Fl_Mac_App_Menu::custom_application_menu_items()
allowing customization of the application menu (Mac OS X only).
- Added 'fluid -u' command-line switch to upgrade fluid files in
batch mode. This option opens a fluid ('.fl') file and saves it
overwriting the old file with the current syntax and library version
number. Use with care (input file is overwritten unconditionally).
- Added FL_ZOOM_GESTURE gesture for OS X (only). Needs implementation
on other platforms.
- Added FL_ABI_VERSION, FL_API_VERSION, Fl::abi_version(), and
Fl::api_version(). Constants can be used to determine the compiled
FLTK version. Functions can be used to find the linked library version.
- Added Fl::abi_check() method to test if the runtime (linked)
ABI version is correct.
- Added Fl_Image::fail() to test if an image was loaded successfully
to allow for easier error detection when loading images (STR #2873).
- Added line numbers to fluid's source code viewer for New -> Code
New configuration options (ABI version)
- FLTK's ABI version can now be configured with 'configure', CMake, or
by editing a supplied file when using the bundled IDE projects.
See documentation in README.abi-version.txt.
1.3.4 ABI FEATURES
- Added deactivated user icon to Fl_Tree.
- Added Fl_Shared_Image::scale(width, height) which gives a shared
image its own drawing size, independently of the size of the
underlying image. This improves image drawing on high resolution
surfaces such as Laser printers, PDF files, and Apple retina displays.
Other improvements
- Configure now correctly sets HAVE_* variables only if both the
library and the header files were found. The configuration process
is aborted if Xft was requested explicitly with --enable-xft and
Xft was not found. The configuration summary now shows _found_
options as opposed to requested options.
- Improved drawing of rounded box (STR #2943).
- Full support of Apple 'retina' displays for which one drawing unit
corresponds to two pixels.
- The Mac OS X platform no longer uses the deprecated AGL
(Apple GL library) to draw OpenGL data. Instead, it uses standard
Cocoa APIs. This allows FLTK to support drawing GL scenes at high
resolution when an Fl_Gl_Window is mapped to a 'retina' display.
- Added Fl_Gl_Window::pixel_w(), Fl_Gl_Window::pixel_h(), and
Fl_Gl_Window::pixels_per_unit() useful for high resolution OpenGL windows.
- fl_read_image() now captures all pixels within the rectangle
described by its arguments, whether they belong to a GL scene
or not (STR #3142). It also captures subwindows of GL windows.
- Fl::delete_widget() now hides the widget or window immediately
(i.e. when called) - only destruction is delayed as before.
- FLTK header files don't expose X11 definitions in user code any more
unless requested by including FL/x.H explicitly or implicitly.
- The PostScript code output when printing images under Linux/Unix
is now much smaller by using lossless compression techniques.
- The Linux/Unix printer dialog now uses BSD-style printing commands
(lpr/lpq) when SystemV-style commands (lp/lpstat) are not available.
- Drawing alpha-blended images under X11 is now accelerated with
Xrender.
- The font used for the FL_COURIER font family was changed on the Mac OS X
platform from 'Courier New' to 'Courier' because it was too thin.
- Text drawing on the Mac platform supports Unicode 'variation selectors'
in the range [0xFE00-0xFE0F].
- Added a Mac OS implementation of Fl_Window::wait_for_expose() that
became necessary with Mac OS 10.10 "Yosemite".
- Added the libfltk target to the Xcode project producing a static
version of the FLTK library (Mac OS X).
- Restored the possibility to call Fl::set_font() before main() starts.
- Allow using the --enable-x11 configure option on the Mac OS platform
which produces an X11 version of the FLTK library (don't use unless
you know what you're doing).
- FLTK code and fluid-generated code can be used in static initializers.
- Added light gray separator line to fluid's widget browser (STR #2997).
- Improved tooltip behavior for huge tooltips: remove flicker, support
key/mouse dismiss (STR #2650).
- Modifier key names displayed in shortcut labels can now be localized.
See documentation of fl_shortcut_label(). You can set modifier key
names for Ctrl, Alt, Shift, and Meta by assigning global string
pointers to your translated modifier key names.
- Many documentation improvements and fixes.
- Fixed many compiler warnings (STR #2988).
- Fluid now generates code with less compiler warnings (STR #2813).
- Many CMake improvements and fixes. Note: CMake is mostly operating
now, but not yet recommended for production use. Please test and
report issues.
- Updated bundled zlib from 1.2.5 to 1.2.8.
- Updated bundled libjpeg from jpeg-8c to jpeg-9a.
Bug fixes
- Fix potential crash when using keyboard navigation on Fl_Tabs
widget without children (STR #3333).
- Fix potential crash if Fl_Window::icon(NULL) was called to clear
(reset) a window icon. This is now legal and documented behavior.
The same applies to Fl_Window::default_icon().
- Allow widget callback to be NULL, i.e. no callback (STR #2835).
- Fixed Fl_Help_View buffer overflow (STR #3275).
- Fl_Browser now correctly adjusts its scrollbars when the default
text size is changed with textsize(int) (STR #3057).
- Fixed Fl_Text_Display/Fl_Text_Editor slow scrolling, line number
display, wrap mode "hiding" text behind scrollbars, and more
scrollbar handling (alignment) (STR #3272).
- Fixed valgrind warning (uninitialized variable) in Fl_Window.
Visible only with FLTK_ABI_VERSION >= 10303, since FLTK 1.3.3.
- Fixed Windows drag'n'drop not showing insert position if the drop
target is inside the same window or process (STR #3209).
- Fixed undefined reference building shared cairo library (STR #3276).
- Fixed Fl_Browser if text argument to some methods is NULL (STR #3269).
- Fixed missing image release in fluid (STR #2840).
- Fixed out-of-bounds memory access in fluid (STR #3263).
- Fixed trailing white space in fluid .fl files (STR #3239).
- Several box types were not drawn correctly when deactivated.
The background color for deactivated widgets is now correct:
fl_inactive(color()) (STR #2907).
- Fix inconsistent interpretation of ld() in image handling
(STR #3308). This is a minor issue since ld() is usually 0 or
w()*d(). Documentation has been fixed, and ld() handling is now
consistent in Fl_(RGB_)Image and fl_draw_image() and friends. See
documentation of Fl_Image and Fl_RGB_Image for more information.
- Fixed Fl_Pixmap (background) drawing to respect the clip region
(STR #3206).
- Fixed reading .pbm image files: 1 is now interpreted as black,
and images whose width are a multiple of 8 are correctly read.
Note: if you relied on the faulty behavior you may need to fix
your image files.
- Restored window background drawing, particularly the 'plastic'
scheme's background (STR #3059). This was a regression since
FLTK 1.3.0.
- Prevent sending (FL_SHORTCUT) events to inactive widgets (STR #3216).
- Fixed button label clipping (STR #3237).
- Fixed Fl_Menu_::item_pathname() handling of descending submenu
pointers (STR #3177).
- Fl_Text_Display: style buffer colors are no longer manipulated by
fl_contrast() for normal text drawing (fltk.coredev thread started
04/08/15, Subject: "RFC: Fl_Text_Display style buffer color weirdness")
- Fl_Tree::deactivate() now affects draw color of items (must have
ABI 1.3.3 or higher enabled). For icons to draw deactivated,
enable ABI 1.3.4. (test/tree has a 'deactivate tree' button)
- Fl_Tree::find_item() did not find items if the pathname contained
identical strings (STR #3234).
- Fixed possible bad border effect when a set of radio menu items
is located first in its menu (STR #3176): Fl_Menu_Item::set_only()
is deprecated and replaced by Fl_Menu_::set_only(Fl_Menu_item*).
- Restore the correct state of mouse buttons and keyboard modifier keys
after closing a file or printer dialog (STR #3221).
- Fix for deactivate colors issue with Fl_Text_Display/Editor (STR #3219).
- Fixed issue with MSWindows platform where the program kept running
after closing all its windows (STR #3165).
- Fix potential buffer overflow (MSWindows: BEX64 error) and problem with
MSWindows environment variables "HOME"(MinGW) vs. "UserProfile"(DOS)
- Fix issue with MSWindows platform where a window would decrease
in size after each close/open (STR #3167).
- Fix undefined reference XGetUtf8FontAndGlyph (STR #3191).
- Fix potential keyboard hangup (STR #3192).
- Fix for: .xbm images were not previewed (STR #3131).
- Fixed crash on Mac platform when resizing a not yet shown() Fl_Gl_Window.
- Fixed potential Windows GDI leak (STR #3254).
- Fixed Linux/Unix potential program hang when dialog pops up while
a menu is open (STR #3179).
- Fixed a crash when a Unix/Linux program calls take_focus() before any
window has been show()n.
- Fixed an error on the Mac platform when drawing to an Fl_Image_Surface
object without using the Fl_Image_Surface::draw() method.
- Fixed STR #3268 where a fullscreen window could become relocated
behind the menu bar and dock (Mac OS only).
- Fixed STR #3207: ^C not working when numlock or capslock is on.
- Fixed code editor in Fluid (STR #3184).
- Fixed a potential hangup of the Fl::awake() queue under Windows if
a window is resized or moved while the Fl::awake() message is sent
(STR #3143).
- Fixed a regression: restore the possibility to call
fl_draw_image(buf,X,Y,W,H,D,L) with negative D and/or L arguments.
- Fixed overflow in Fl_Valuator::precision(int) to 0...9 (STR #3280).
CHANGES IN FLTK 1.3.3 RELEASED: Nov 03 2014
New features and extensions
- New class Fl_Copy_Surface allows copying graphical data to the
clipboard in a cross-platform way (STR #3058).
- Support for pasting graphical data from the clipboard to a widget.
- New class Fl_Image_Surface allows drawing into an Fl_Image object.
- Methods Fl::add_clipboard_notify() and Fl::remove_clipboard_notify()
to get notifications whenever the clipboard changes (STR #2636).
- New method Fl_Window::wait_for_expose() (STR #3124, STR #3129).
- New bilinear scaling method for RGB images (STR #2869, STR #3062).
- New method Fl_Widget::top_window() (STR #2948).
- New method Fl_Widget::top_window_offset() (part of STR #2944).
- New Fl_Tree_Item methods label_x(), label_y(), label_w(), label_h().
- New methods Fl::enable_im() and Fl::disable_im() to enable/disable
system Input Methods (IM).
- New methods Fl::add_system_handler() and Fl::remove_system_handler()
to intercept low level system events.
- New FLTK scheme "gleam" (STR #2672).
- New method Fl::is_scheme() to compare the current scheme name.
- New method to set custom icons for windows (STR #2816),
see Fl_Window::icon() for more info.
- New method to set any custom cursor, based on a Fl_RGB_Image object.
Also changed fallback cursors to use this method, so that fallback
cursors are handled in a platform independent manner (STR #2660).
- New ability to convert Fl_Pixmap to Fl_RGB_Image (STR #2659).
- Support for full screen windows over multiple monitors.
- New optional line numbers in Fl_Text_Display and options to control
line numbers and word wrapping (on/off) in example test/editor.cxx.
- On Linux/Unix, class Fl_Native_File_Chooser uses file dialogs from
the Gnome environment (provided by the libgtk dynamic library) if
available, and falls back to Fl_File_Chooser if not (STR #3088).
Use option Fl::OPTION_FNFC_USES_GTK to enable/disable this feature.
- New support for the Mac OS text input system that deals with character
composition and input of languages with large character sets (e.g.
Chinese and Japanese). This implementation has been reported to work
well for Chinese. Superficial testing suggests it's also operational
for Japanese. In-depth testing remains needed though.
Other improvements
- Many CMake improvements (e.g. STR #2962, 2977, 2994, 3045, 3055).
- Some autoconf, configure improvements.
- Removed 1024 bytes constraint in labels and browser lines (STR #2990).
- Mac OS version of Fl_Native_File_Chooser: when using filters in a
save file dialog, the output file extension gets changed when the
user modifies the output file type.
- Many Mac OS X improvements related to Fl_Sys_Menu_Bar.
- Improved Mac OS X keyboard handling of special keys or combinations.
- General Mac OS X improvements, incl. high resolution (Retina)
displays, and support up to Mac OS X 10.10.
- Documentation improvements and clarifications.
- Printing support improvements, including GL windows.
- Many improvements related to Fl_Tree (some of them only as ABI
breaking features, see below).
- Some static data has been made 'const' to improve memory usage
with shared libraries.
- Don't grab navkeys with modifiers (CTRL, ALT), as the application
may want them (STR #3104).
- Check compiler support of -fvisibility, -fvisibility-inlines-hidden,
and use it, if available. Reduces shared library size.
- Drag'n'drop behaves better now: if text is dropped in the widget it
comes from, then it works like cut and paste.
- Other improvements of DND handling when dragging text from other
applications, e.g. Firefox and Thunderbird.
- Windows message WM_QUIT is processed like SIGTERM, i.e. as a
request to terminate the program.
- Fluid no longer closes the code window when hitting ESC (STR #2997).
- Improved Fl_Widget::when() handling in Fl_Tabs (STR #2939).
- Improved support for more recent compilers (clang and gcc) that
issue more warnings, and fixed some 32-/64-bit compilation issues.
- Added method Fl_Window::clear_modal_states() to make it possible
to remove the modal or non-modal state from a window (STR #3123).
Bug fixes
- Fixed word selection dragging in text input (STR #3014).
- Fixed border padding for special cases (STR #3061, Windows only).
- Fixed crash if Fl_Window::flush() called while window not shown()
(STR #3028).
- Fixed segfault in fl_set_fonts_xft.cxx when loading fonts not named
as expected (STR #2976).
- Fixed a memory leak in font loading/allocation (STR #3069).
- Fixed minor memory leaks in handling/freeing of X11 objects.
- Fixed OS X fl_read_image() and Fl_Paged_Device::print_window_part()
when using a Retina display.
- Fixed MinGW build if configure didn't find strcasecmp() (STR #2994).
- Fixed access of protected member under Linux/Unix (STR #2903).
- Fixed various Mac specific OpenGL issues (STR #2944)
- Fixed PostScript printing with non-english locale (STR #3130).
- Fixed a regression in Fl_File_Chooser since FLTK 1.1.8: the
Enter key now selects the file again.
- Fixed a bug in Fl_Native_File_Chooser (Windows) for some file name
input filters (STR #3101).
- Fixed out-of-bounds memory access in Fl_Text_Display (STR #2730).
1.3.3 ABI FEATURES
To enable the following ABI features, put:
#define FLTK_ABI_VERSION 10303
..at the top of your FL/Enumerations.H and rebuild FLTK and your app.
- Added Fl_Window::shape(const Fl_Image*) to create arbitrarily-shaped
windows
- Made Fl_Help_View::handle() public and Fl_Help_View::draw() protected
to enable inheritance and for consistency (STR #2834).
Note: both methods were private.
- Made Fl_Scroll::recalc_scrollbars() protected so that it can be used
in derived widgets to calculate scrollbar visibility and positions.
- Added Fl_Table::tab_cell_nav() for controlling Tab key navigation of table
- Added Fl_Tree::get_selected_items(), returns the selected items as an array
- Added Fl_Tree::item_draw_callback(), letting one define a custom draw
function for Fl_Tree_Item's.
- Fl_Tree: various related changes:
o Added horizontal scrollbar
o Separated draw() and tree size calculation
o Added new public methods:
> resize() -- uses optimized dim calc, avoids tree recalc
> next_item() -- added parameters: direction, visibility
> extend_selection() -- added parameters, improved algorithm
> calc_dimensions() -- calc tix/y/w/h, tox/y/w/h and scrollbars
> calc_tree() -- calc tree_w/tree_h
> recalc_tree() -- schedules calc_tree()
> first_visible_item(), last_visible_item(), next_visible_item()
> first_selected_item(), last_selected_item(), next_selected_item()
o Added protected variables:
> _tix/y/w/h -- tree widget 'inner' dimension
> _tox/y/w/h -- tree widget 'outer' dimension
> _tree_w,_tree_h -- entire tree hierarchy width/height
o Deprecated:
> item_clicked() -- use callback_item() instead
> first_visible() -- use first_visible_item() instead
> last_visible() -- use last_visible_item() instead
- Fl_Tree_Item: various related changes:
o Added Fl_Tree ptr: needed for auto-recalc when item modified directly
o Added new methods tree(), recalc_tree()
o Added new ctor that accepts Fl_Tree*
o draw() parameters changed to include tree size calculations
o Deprecated:
> ctor using Fl_Tree_Prefs parameter (Fl_Tree* version better,
and must be used for 1.3.3 ABI features to work correctly)
> next_displayed() -- use next_visible() instead
> prev_displayed() -- use prev_visible() instead
- test/tree: added tests for newly added features
CHANGES IN FLTK 1.3.2 RELEASED: Dec 12 2012
- Removed unnecessary drawing calls (STR #2898)
- Fixed regression in FLTK 1.3.1 for unbundled Mac OS FLTK applications
that did not appear in dock nor have a menu bar (STR #2890).
- Fl_Table::clear() now calls table->clear() for consistency. (STR #2889)
- Fixed Fl_Scroll widget that fails under Mac OS X 10.8 and Retina
display (STR #2887).
- Prevents scrollbars from drawing when widget is sized too small
to be visible (STR #2886).
- Documented how to make a Mac OS X FLTK application launchable
by dropping files on its icon.
- Fixed a Mac-specific issue that appeared with OS 10.8 (Mountain Lion):
long delay before opening when the application is started by dragging
a file on the application icon.
- Fixed use of PNG image from in-memory data (STR #2884).
- Added static Fl_RGB_Image::max_size(size_t) to limit the maximum
memory size allowed to RGB images (STR #2881).
CHANGES IN FLTK 1.3.1 RELEASED: Nov 06 2012
- Fixed utf_strncasecmp and utf_strcasecmp
- Moved all inline constructors into source file to avoid bad DLLs
- Fixed Fl_Widget::copy_label() and Fl_Window::copy_label() when
called with the old label() (STR #2836)
- Fixed Fl_Input_::maximum_size() documentation and replace() method
to honor maximum_size() as number of allowed characters (STR #2747).
- Fixed a potential crash if Fl_Double_Window::flush() was called
before show()
- Fixed regression (in FLTK 1.3.0) that could clear a radio
button by using the keyboard (space or shortcut) (STR #2748)
- Fixed fl_pie() drawing too small on X11 (STR #2703)
- Fixed Fl_Menu issue with unusual menu flags (STR #2680)
- Fixed Windows DLL import of fl_xid() (STR #2670)
- Added Fl::screen_work_area() functions that compute the work area
of a screen. These functions improve the positioning of menus.
Changed Fl::x(), Fl::y(), Fl::w(), Fl::h() functions
to return the origin and size of the work area of the main screen
(STR #2695 + 2697)
- Created the FL_SCREEN_CONFIGURATION_CHANGED event that is triggered
when a screen is added, removed, moved or when resolution is changed
(STR #2600)
- Improved the description of page size and orientation by
Fl_PostScript_File_Device.
- Added support for horizontal wheel movement under X11 and Windows
Vista and above (STR #2644).
1.3.1 ABI FEATURES
(To enable the following ABI features, put: #define FLTK_ABI_VERSION 10301
at the top of your FL/Enumerations.H and rebuild FLTK and your app)
- Fl_Tree optimized to support large trees (eg. 100k items):
Added _next_sibling and _prev_sibling to Fl_Tree_Item class,
and support methods.
CHANGES IN FLTK 1.3.0 RELEASED: Jun 16 2011
New Features
- Added UTF-8 Unicode support throughout FLTK and Fluid
- Added Fl_Tree widget for hierarchical views
- Added Fl_Table widget for widget layout
- Added Fl_Native_Filechooser as a widget and global options
- Added printing support (Fl_Printer class and friends) for native
printing on Windows and Mac OS X, PostScript printing on X11
with CUPS or lp, and PostScript file output on all platforms
- Added basic Fl_Device abstraction layer for all drawing functions
- Moved OS X code base to the more modern Cocoa toolkit thanks
to the awesome work of Manolo Gouy (STR #2221)
API and ABI Compatibility to FLTK 1.1.x
- All strings are expected to be in UTF-8 Unicode encoding
- Replaced Fl_Scroll::position(int,int) with scroll_to(int,int)
to avoid overriding Fl_Widget::position(int,int) (STR #1303)
- Although FLTK 1.3 maintains source code compatibility as good
as possible, the binary interface changed considerably.
- Updated the bundled libpng to v1.5.1 (released Feb 3, 2011)
- Updated the bundled libjpeg to v8c (released Jan 16, 2011)
- Updated the bundled zlib to v1.2.5 (released Apr 19, 2010)
API Enhancements and Changes
- Changed font index to 32 bit
- Changed font size to 32 bit
- Changed widget coordinates to 32 bit
- Corrected const methods of Fl_Text_{Buffer|Display|Selection}
to be declared const, corrected an Fl_Text_Buffer attrib. typo
- All draw() methods of widgets are now protected (STR #2142).
- Changed Fl_Group::clip_children() to public (STR #2017)
- Changed socket library to winsock2 (ws2_32.dll) instead of
wsock32.dll for Windows. The dll is now loaded dynamically only
if/when needed.
- Changed hide() and show() methods. They are now virtual from
Fl_Widget.
- Added new label and image alignments (STR #2269)
- Added global UI options (STR #2471)
- Added class Fl_Widget_Tracker to simplify safe handling of widget
deletion in callbacks. This is used in Fl_Widget::do_callback()
to prevent accessing widgets after deletion in the callback.
- Added sorting to Fl_Browser_ (STR #2113)
- Added new method client_area() for easier positioning of children
in Fl_Tabs (STR #2480)
- Added interface to set color chooser mode (STR #2407)
- Added Fl_Menu_::find_item by callback
- Added loading jpeg images from memory
- Added support for shortcuts for Fl_Input_, Fl_Value_Input, and
Fl_Text_Display derived widgets (STR #1770)
- Added Fl_Menu_ methods: insert(), find_index(), clear_submenu()
- Hotspot behavior of fl_message() and other common dialogs is now
optional (STR #2561).
- Common dialogs like fl_message() and fl_ask() can now have a window
title (STR #2562).
IDE Support and Command Line Build Options
- FLTK now supports Apple Xcode 3, MS VisualC 2008, and
MS VisualC 2010. MS VisualC 6 support is maintained as a
compatibility base for VisualC.net, etc. . FLTK continues
to support configure/make and improved CMake build files.
- Added step by step README's for MSWindows, OS X, and four
Linux distros.
- Added "ide" subdirectory for all IDE support files
- Added template to generate new projects with Xcode.
- Added --enable-cairo and --enable-cairoext configure options.
- redesigned CMake files (STR #2317).
- The new configure option --enable-x11 (lowercase 'x') enables
Cygwin builds under Windows (with --enable-cygwin) to use X11
instead of GDI drawing (STR #2147, #2183) and is ignored otherwise.
- Changed "fltk-config --post foo" to create an application
bundle rather than attaching a resource fork.
- Changed default for configure option --with-links for common
misspellings on case sensitive file systems like Unix/Linux.
The new default is --without-links; use --with-links on
Unix/Linux only if you need the links (e.g. lowercase '.h')
Fluid
- Added argument-less constructor in Fluid Widget Class
- Added jpeg support to Fluid image() element
- Added binary data type to Fluid
- Empty functions in Fluid no longer create an
implementation (STR #2259)
- Fixed internationalisation of menus using Fluid (STR #2246)
- Fixed menu item counting issue in Fluid (STR #2322)
- Fixed lost top item in Fluid's tree browser (STR #2233)
- Fixed Fluid dependency on X11 (STR #2261)
- Fixed Fluid textcolor output (STR #1992)
- Fixed wrong default value of Fl_Spinner in Fluid (STR #1991)
Documentation
- Added documentation for event delivery (STR #1983)
- Added Fl_Scroll::bbox() documentation (STR #1893)
- Updated documentation for Fl_Input_
- Updated Copyright dates to 2010 (STR #2036)
- Updated mirror sites in documentation (STR #2220)
- Fixed documentation for Fl_Progress (STR #2209)
- Fixed documentation (added missing COMCTL32.LIB dependency)
Other Improvements
- Added drag'n'drop support for Fl_Text_*
- Added visual feedback for button shortcuts (STR #2372)
- Added callback when double-clicking file in a file chooser
(STR #2346)
- Added alternative Xft font names (STR #2215)
- Added mouse!=0 check in Fl_Glut_Window::handle (STR #2381)
- Added indexing to Fl_Preferences
- Added OS X cursor control to Fl_Input (STR #2169)
- Added menu shortcut alignment for OS X
- Added drop box to UTF-8 test that will show the UTF-8 encoding
for the first dropped character
- Added flexible gap size for text buffer (STR #2046)
- Added clarification to Fl_GL_Window mode function (STR #1945)
- Added alternative text input awareness on OS X
- Improved handling of composed keys in OS X 10.5 and up
- Improved stability of fl_read_image (STR #2021)
- Much faster fl_read_image() for Windows (STR #2387).
- Improved support for faulty X11 clients (STR #2385)
- Integrated default menu into Demo test app
- Replaced _WIN32 symbols that had come with UTF-8 and the
new Fl_Table widget with WIN32
- Widgets now remove stale entries from the default callback
queue when they are deleted (STR #2302)
- Managing all Widget flags in a single location now (STR #2161)
- File chooser preview now recognizes UTF-8 encoded
text files (STR #2218)
- Setting a default font for Xft (STR #2216)
- Restructured the unittest application
- Fl_Preferences.H now doesn't include windows.h any more
(Windows only, STR #2173).
- Fl_Window::draw() now doesn't reset its x/y-coordinates to 0
anymore before drawing itself and its children.
- Fl_Help_View handles HTML2 font color specification (STR #890)
- Widgets now remove themselves from their parent group (if any),
when destroyed (STR #1894)
- Changed Fl_Group and Fl_Scroll to resize themselves before
resizing their children (STR #2032)
Bug Fixes
- Fixed potential crash in fl_xid() on Linux (STR #2635)
- Fixed keyboard navigation in fl_choice() (STR #2591)
- Fixed alpha blending under X11 when line data size != 0 (STR #2606)
- Fixed Fl_Tabs selection border drawing, if tabs are at the bottom
of the widget (STR #2480)
- Fixed Compiling with mingw-w64 (STR #2308).
- Fixed crashes when detecting illegal UTF-8 sequences
in Fl_Text_* widgets (STR #2348)
- Fixed Fl_Text_Display Tabulator calculations (STR #2450)
- Fixed file access code to use UTF-8 strings (STR #2440)
- Fixed ARM Unicode cross compilation issue (STR #2432)
- Fixed xclass support for Fl_Window (STR #2053)
- Fixed Caps Lock handling in X11/XIM (STR #2366)
- Fixed handling of missing fonts in Xft (STR #2355)
- Fixed OpenGL hide/show issue in OS X (STR #2260)
- Fixed File Chooser preview hang if a device was choosen
- Fixed blinking of selection when the mouse was dragged
outside of the Fl_Text_* widget
- Fixed Unicode support for Fl_Text_* widgets
- Fixed menu and shortcut handling (STR #2243)
- Fixed fltk-config to give --libs on one line (STR #2408)
- Fixed outside label redraw damage areas (STR #2436)
- Fixed compile errors when HAVE_LIBJPEG was not defined
(STR #2382)
- Fixed special handling for ISO back-tab keycode (STR #2369)
- Fixed static allocation in Fl_Tabs (STR #2370)
- Fixed Fl_Widget::measure_label() to const (STR #2406)
- Fixed unbalanced Windows OleInitialize/OleUnitialize calls
when loading/unloading the FLTK dll (STR #2417)
- Fixed X11/XDBE double buffering (STR #2152, #2197)
- Fixed menu and tooltip window animation bug under X11 (compiz)
by setting an appropriate window type (STR #2082)
- Fixed max. fd calculation, if USE_POLL is enabled (STR #2324)
- Fixed clipping for offscreen rendering (OSX, STR #2330)
- Fixed possibility of wrong flags() in Fl_Window::iconlabel()
(STR #2161)
- Fixed Scrollbar events when max is less than min (STR #2283)
- Fixed crash in test/Editor when freeing buffer
too soon (STR #2294)
- Fixed Fl_Preferences Cygwin wide character bug (STR #2164)
- Fixed sorting in Fl_Browser - last item would not
be sorted (STR #2300)
- Fixed window levels in OS X Cocoa (STR #2316)
- Fixed a buffer overflow in fl_utf8from_mb() (STR #2279)
- Fixed a Windows GDI leak when testing alpha blending capabilities
- Fixed crashes for recursive common dialogs (STR #1986, #2150)
- Fixed a name conflict with new (VS 2008 Express) winsock2.h
versions and another conflict that produced compile errors
with VS 2008 Express (STR #2301)
- Fixed all color related calls to Fl_Color type (STR #2208)
- Fixed Fl_Choice contrast with light-on-dark settings (STR #2219)
- Fixed X server "lock", if a modal dialog window is opened
while a menu is active (STR #1986)
- Fixed Windows compile bug with "#define USE_COLORMAP 0"
(STR #2241)
- Fixed glibc 2.10 compiler problems (Fedora 11 and others)
with scandir() and strchr() (STR #2222)
- Fixed OpenGL shared context handling (STR #2135)
- Fixed gray-scale images with alpha channel (STR #2105)
- Fixed unexpected shortcut behavior for Win32 (STR #2199)
- Fixed fl_draw_image to obey the alpha channel (OS X only)
- Fix for multiple popups, when dragging and calling fl_alert()
and friends from the callback (STR #2159)
- Fixed control key keycodes with modifiers on OS X
- Fixed bad system menu handling in OS X (STR #2153)
- Fixed File Input mouse pointer dragging (STR #2181)
- Fixed 'del' keycode on OS X
- Fixed OS X support for sending and receiving dnd data as UTF-8
- Fixed Copy/Paste operations with UTF-8, UTF-16 support and
fltk1.1 compatibility. (STR #2104, 2121).
- Fixed fl_set_spot() for Windows (STR #2101)
- Fixed callback that would not be called when shortcut was used
with radio and toggle buttons in default FL_RELEASE mode.
- Fixed a problem with TrackMouseEvent() (Windows only) that would
generate wrong FL_LEAVE events with subwindows. TrackMouseEvent
is now enabled by default (it was disabled for GNU compilers).
It can be disabled by defining NO_TRACK_MOUSE.
Improved test/subwindow.cxx (STR #2079)
- Fixed menu position close to screen border (STR #2057)
- Fixed adding an idle handler during a draw() call (STR #1950)
- Fixed first modifier key event (STR #1952)
- Fixed Fl_Scroll inside Fl_Scroll (STR #265)
Removed Features
- Removed Watcom compiler support because it was introduced in
1.1.6 as a partial solution and never completed.
- Removed an XForms compatibility "feature" that prevented the
down array of Fl_Menu_Button from drawing (STR #2141).
- Removed support for gcc 2.x (or older)
- Removed redundant Fl_Group casts
CHANGES IN FLTK 1.1
See CHANGES_1.1.txt
CHANGES IN FLTK 1.0
See CHANGES_1.0.txt
@@ -0,0 +1,85 @@
#
# FLTK-Functions.cmake
# Originally written by Michael Surette
#
# Copyright 1998-2024 by Bill Spitzak and others.
#
# This library is free software. Distribution and use rights are outlined in
# the file "COPYING" which should have been included with this file. If this
# file is missing or damaged, see the license at:
#
# https://www.fltk.org/COPYING.php
#
# Please see the following page on how to report bugs and issues:
#
# https://www.fltk.org/bugs.php
#
################################################################################
# functions used by the build system and exported for the end-user
################################################################################
################################################################################
#
# fltk_run_fluid: Run fluid to compile fluid (.fl) files
#
# Usage: fltk_run_fluid(SOURCES "FLUID_SOURCE [.. FLUID_SOURCE]")
#
# Input: The CMake variable "FL_FILES" must contain a list of input
# file names. Only names ending in ".fl" are considered and
# compiled to their ".cxx" and ".h" files which are stored
# in the current build directory.
#
# Output: "SOURCES" is used as a CMake variable name that is assigned the
# names of the compiled ".cxx" files as a ";" separated list in the
# parent scope (the caller's scope).
#
################################################################################
function(fltk_run_fluid SOURCES FL_FILES)
if(NOT FLTK_FLUID_EXECUTABLE)
message(WARNING "Not building ${FL_FILES}. FLUID executable not found.")
return()
endif()
set(CXX_FILES)
foreach(src ${FL_FILES})
if("${src}" MATCHES "\\.fl$")
string(REGEX REPLACE "(.*).fl" \\1 basename ${src})
add_custom_command(
OUTPUT "${basename}.cxx" "${basename}.h"
COMMAND ${FLTK_FLUID_EXECUTABLE} -c ${CMAKE_CURRENT_SOURCE_DIR}/${src}
DEPENDS ${src}
MAIN_DEPENDENCY ${src}
)
list(APPEND CXX_FILES "${basename}.cxx")
endif()
endforeach()
set(${SOURCES} ${CXX_FILES} PARENT_SCOPE)
endfunction(fltk_run_fluid SOURCES FL_FILES)
################################################################################
#
# fltk_set_bundle_icon: Set the bundle icon for macOS bundles
#
# This function sets macOS specific target properties. These properties are
# ignored on other platforms.
#
# Usage: fltk_set_bundle_icon(TARGET ICON_PATH)
#
# TARGET must be a valid CMake target that has been created before this
# function is called. It must not be an alias name.
#
################################################################################
function(fltk_set_bundle_icon TARGET ICON_PATH)
get_filename_component(ICON_NAME "${ICON_PATH}" NAME)
set_target_properties(${TARGET}
PROPERTIES
MACOSX_BUNDLE_ICON_FILE "${ICON_NAME}"
RESOURCE "${ICON_PATH}"
)
endfunction(fltk_set_bundle_icon TARGET ICON_PATH)
@@ -0,0 +1,144 @@
#
# FLTKConfig.cmake - FLTK CMake configuration file for external projects.
#
# This file is generated by CMake and used to load FLTK's settings for
# an external project, i.e. a project using FLTK.
#
# It defines the following variables:
#
# FLTK_VERSION - FLTK version string ("x.y.z")
# FLTK_INCLUDE_DIRS - FLTK include directories
# FLTK_LIBRARIES - list of built FLTK libraries
# FLTK_FLUID_EXECUTABLE - needed by the function FLTK_RUN_FLUID
# (or the deprecated fltk_wrap_ui() CMake command)
#
# It defines the following deprecated variables for backwards
# compatibility (do not use for new projects):
#
# FLTK_INCLUDE_DIR - FLTK include directories (same as FLTK_INCLUDE_DIRS)
#
# Important note: FLTK's CMake build files are not yet complete and may be
# changed in future versions. This includes the list of defined variables
# above that may be changed if necessary.
#
# Note: FLTK 1.4.0 introduced "Modern CMake", therefore usage of most if not
# all of the variables mentioned above is no longer needed in user projects.
# Please use the CMake target names fltk::fltk, fltk::images, etc. instead.
# Please see README.CMake.txt for more info on how to do this.
#
# Optional: Create backwards compatible aliases for libraries and fluid.
# This is enabled in FLTK 1.4.0 to simplify migration of user projects
# from "classic" (1.3.x) to "modern" CMake and will likely be removed
# in a later FLTK version (maybe 1.4.x, x>2, or 1.5.0).
set(FLTK_CREATE_COMPATIBILITY_ALIASES TRUE)
set(FLTK_VERSION @FLTK_VERSION@)
include(${CMAKE_CURRENT_LIST_DIR}/FLTK-Targets.cmake)
set(FLTK_INCLUDE_DIRS "@INCLUDE_DIRS@")
set(FLTK_LIBRARIES "@FLTK_LIBRARIES@")
# For compatibility with CMake's FindFLTK.cmake:
set(FLTK_INCLUDE_DIR "${FLTK_INCLUDE_DIRS}")
if(CMAKE_CROSSCOMPILING)
# Find a fluid executable on the build host to be able to build fluid programs
find_program(FLTK_FLUID_HOST
NAMES fluid fluid.exe
PATHS ENV PATH
NO_DEFAULT_PATH
NO_CMAKE_FIND_ROOT_PATH
)
if(FLTK_FLUID_HOST)
if(0) # Experimental: currently not used
# Import a special 'fluid' target called 'fluid-host' (fltk::fluid-host)
# Note: this is "the same as" the CMake variable FLTK_FLUID_EXECUTABLE
add_executable(fluid-host IMPORTED)
set_target_properties(fluid-host
PROPERTIES IMPORTED_LOCATION ${FLTK_FLUID_HOST}
)
add_executable(fltk::fluid-host ALIAS fluid-host)
set(FLTK_FLUID_EXECUTABLE fltk::fluid-host)
else()
set(FLTK_FLUID_EXECUTABLE "${FLTK_FLUID_HOST}")
endif()
else() # fluid not found on build host
message(STATUS "FLTKConfig.cmake (cross-compiling): fluid not found on the build host")
# note: this assigns "FLTK_FLUID_HOST-NOTFOUND" and running fluid will fail
set(FLTK_FLUID_EXECUTABLE "${FLTK_FLUID_HOST}")
endif()
else(CMAKE_CROSSCOMPILING)
if(FLTK_CREATE_COMPATIBILITY_ALIASES)
function(_fltk_make_alias target from)
if(TARGET ${from} AND NOT TARGET ${target})
# message(STATUS "FLTKConfig.cmake - create alias: ${target} from ${from}")
# promote imported target to global visibility (CMake < 3.18 only)
if(CMAKE_VERSION VERSION_LESS "3.18")
set_target_properties(${from} PROPERTIES IMPORTED_GLOBAL TRUE)
endif()
get_target_property(ttype ${from} TYPE)
if(ttype STREQUAL "EXECUTABLE")
add_executable(${target} ALIAS ${from})
else()
add_library(${target} ALIAS ${from})
endif()
endif()
endfunction(_fltk_make_alias target)
if(NOT TARGET fltk::fltk)
message(FATAL "FLTKConfig.cmake: target fltk::fltk does not exist!")
endif()
_fltk_make_alias(fltk fltk::fltk)
_fltk_make_alias(fltk-shared fltk::fltk-shared)
_fltk_make_alias(fluid fltk::fluid)
_fltk_make_alias(fluid-cmd fltk::fluid-cmd)
_fltk_make_alias(fltk-options fltk::options)
_fltk_make_alias(fltk-options-cmd fltk::options-cmd)
foreach(target cairo forms gl images jpeg png z)
_fltk_make_alias(fltk_${target} fltk::${target})
_fltk_make_alias(fltk_${target}-shared fltk::${target}-shared)
endforeach()
endif() # Create aliases ...
# set FLTK_FLUID_EXECUTABLE: try to use the fltk::target name if it
# exists and fall back to 'fluid-cmd' or 'fluid' if not. This will
# eventually call the build host's fluid if found in the users's PATH
if(TARGET fltk::fluid-cmd) # Windows only
set(FLTK_FLUID_EXECUTABLE fltk::fluid-cmd)
elseif(TARGET fltk::fluid)
set(FLTK_FLUID_EXECUTABLE fltk::fluid)
elseif(WIN32)
set(FLTK_FLUID_EXECUTABLE fluid-cmd)
else()
set(FLTK_FLUID_EXECUTABLE fluid)
endif()
endif(CMAKE_CROSSCOMPILING)
# Debug: should be commented out
# message(STATUS "FLTKConfig.cmake: FLTK_FLUID_EXECUTABLE = '${FLTK_FLUID_EXECUTABLE}'")
@@ -0,0 +1,36 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleExecutable</key>
<string>${MACOSX_BUNDLE_EXECUTABLE_NAME}</string>
<key>CFBundleGetInfoString</key>
<string>${MACOSX_BUNDLE_INFO_STRING}</string>
<key>CFBundleIconFile</key>
<string>${MACOSX_BUNDLE_ICON_FILE}</string>
<key>CFBundleIdentifier</key>
<string>${MACOSX_BUNDLE_GUI_IDENTIFIER}</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleLongVersionString</key>
<string>${MACOSX_BUNDLE_LONG_VERSION_STRING}</string>
<key>CFBundleName</key>
<string>${MACOSX_BUNDLE_BUNDLE_NAME}</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>${MACOSX_BUNDLE_SHORT_VERSION_STRING}</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>${MACOSX_BUNDLE_BUNDLE_VERSION}</string>
<key>CSResourcesFileMapped</key>
<true/>
<key>NSHumanReadableCopyright</key>
<string>${MACOSX_BUNDLE_COPYRIGHT}</string>
<key>NSHighResolutionCapable</key>
<true/>
</dict>
</plist>
@@ -0,0 +1,57 @@
#
# Support file to uninstall the FLTK project using CMake
#
# Originally written by Michael Surette
#
# Copyright 1998-2024 by Bill Spitzak and others.
#
# This library is free software. Distribution and use rights are outlined in
# the file "COPYING" which should have been included with this file. If this
# file is missing or damaged, see the license at:
#
# https://www.fltk.org/COPYING.php
#
# Please see the following page on how to report bugs and issues:
#
# https://www.fltk.org/bugs.php
#
if(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt")
message(FATAL_ERROR
"Cannot find install manifest: \"@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt\"")
endif()
file(READ "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt" files)
string(REGEX REPLACE "\n" ";" files "${files}")
# Note 1: 'cmake -E remove [-f]' is deprecated since CMake 3.17 and the docs
# state: "The implementation was buggy and always returned 0. It cannot be
# fixed without breaking backwards compatibility. Use rm instead."
# Note 2: 'cmake -E rm [-f]' has been added in CMake 3.17
# Note 3:
# Remove this distinction if: cmake_minimum_required(VERSION 3.17) or higher.
if(CMAKE_VERSION VERSION_LESS 3.17)
set(rm_cmd remove)
else()
set(rm_cmd rm)
endif()
foreach(file ${files})
message(STATUS "Uninstalling \"$ENV{DESTDIR}${file}\"")
execute_process(
COMMAND "${CMAKE_COMMAND}" -E ${rm_cmd} -f "$ENV{DESTDIR}${file}"
OUTPUT_VARIABLE rm_out
ERROR_VARIABLE rm_err
RESULT_VARIABLE rm_retval
)
if(NOT "${rm_retval}" STREQUAL 0)
message(STATUS "Error removing \"$ENV{DESTDIR}${file}\"")
message(STATUS " Status = '${rm_retval}'")
message(STATUS " Output = '${rm_out}'")
message(STATUS " Error = '${rm_err}'")
message(FATAL_ERROR "Exiting - uninstall may be incomplete.")
endif()
endforeach(file)
@@ -0,0 +1,70 @@
#
# CMake compatibility functions and macros for the Fast Light Tool Kit (FLTK)
#
# Copyright 1998-2023 by Bill Spitzak and others.
#
# This library is free software. Distribution and use rights are outlined in
# the file "COPYING" which should have been included with this file. If this
# file is missing or damaged, see the license at:
#
# https://www.fltk.org/COPYING.php
#
# Please see the following page on how to report bugs and issues:
#
# https://www.fltk.org/bugs.php
#
################################################################################
#
# The functions and maybe macros in this file are defined to simplify CMake
# code that uses features not available in all supported CMake versions.
# Functions should be preferred (rather than macros) because functions
# have their own variable scope.
#
# The function must apply a workaround for older versions or not add code
# at all if there is no suitable workaround.
#
# The functions included here may be removed (with according changes of the
# calling code) or the workaround code may be removed from the implementation
# after cmake_minimum_required() has been raised to a version number greater
# than or equal to the required version.
#
# Current cmake_minimum_required() version: see <fltk-root>/CMakeLists.txt
#
################################################################################
# Right now we don't need compatibility functions
# This file is currently "empty" but left for documentation purposes
# An example function documentation follows...
################################################################################
#
# function fl_target_link_directories - add link directories to target
#
# Requires CMake version: 3.13
# https://cmake.org/cmake/help/latest/command/target_link_directories.html
#
# Input:
#
# - TARGET: target to add link directories to, e.g. fluid
#
# - SCOPE: one of <INTERFACE|PUBLIC|PRIVATE> (see CMake docs)
#
# - DIRS: quoted list of link directories (separated by ';')
#
# The 'DIRS' argument takes a standard CMake list of directories, i.e. the
# individual members must be separated by ';'. The list may be empty ("").
# If more than one directory is to be added or if the list of directories
# can be empty it *must* be quoted. This function may be called more than
# once. Each invocation adds zero, one, or more directories.
#
# Example:
#
# fl_target_link_directories(fluid PRIVATE "${PKG_CAIRO_LIBRARY_DIRS}")
#
# In this example 'PKG_CAIRO_LIBRARY_DIRS' is platform dependent and
# can be an empty list.
#
################################################################################
+175
View File
@@ -0,0 +1,175 @@
#
# Export CMake file to build the FLTK project using CMake (www.cmake.org)
#
# Originally written by Michael Surette
#
# Copyright 1998-2024 by Bill Spitzak and others.
#
# This library is free software. Distribution and use rights are outlined in
# the file "COPYING" which should have been included with this file. If this
# file is missing or damaged, see the license at:
#
# https://www.fltk.org/COPYING.php
#
# Please see the following page on how to report bugs and issues:
#
# https://www.fltk.org/bugs.php
#
#######################################################################
# final config and export
#######################################################################
# Set the fluid executable path used to create .cxx/.h from .fl files
if(FLTK_BUILD_FLUID AND NOT CMAKE_CROSSCOMPILING)
# Use the fluid executable we build using its namespaced target name
if(WIN32)
set(FLTK_FLUID_EXECUTABLE fltk::fluid-cmd)
set(FLUID_EXPORT fluid fluid-cmd) # export fluid and fluid-cmd
else()
set(FLTK_FLUID_EXECUTABLE fltk::fluid)
set(FLUID_EXPORT fluid) # export fluid
endif()
else()
# We don't build fluid /or/ we are cross-compiling (or both):
# we need to find a fluid executable on the build host.
# The search is restricted to the user's PATH (environment).
find_program(FLTK_FLUID_HOST
NAMES fluid fluid.exe
PATHS ENV PATH
NO_DEFAULT_PATH
NO_CMAKE_FIND_ROOT_PATH
)
if(NOT FLTK_FLUID_HOST)
message(STATUS "Warning: fluid not found on the build system!")
endif()
# Note: this *may* assign "FLTK_FLUID_HOST-NOTFOUND"
set(FLTK_FLUID_EXECUTABLE "${FLTK_FLUID_HOST}")
set(FLUID_EXPORT "") # don't export fluid
endif(FLTK_BUILD_FLUID AND NOT CMAKE_CROSSCOMPILING)
if(0) # Debug
message(STATUS "##############################################################")
message(STATUS "[export.cmake] INFO: Did we find fluid?")
fl_debug_var(FLTK_FLUID_HOST)
fl_debug_var(FLTK_FLUID_EXECUTABLE)
fl_debug_var(FLTK_BUILD_FLUID)
fl_debug_var(CMAKE_CROSSCOMPILING)
message(STATUS "##############################################################")
endif()
# set fltk-options export names (built or not, Windows)
if(FLTK_BUILD_FLTK_OPTIONS)
set(FLTK_OPTIONS_EXPORT fltk-options)
if(WIN32)
list(APPEND FLTK_OPTIONS_EXPORT fltk-options-cmd)
endif()
else()
set(FLTK_OPTIONS_EXPORT)
endif()
# generate FLTK-Targets.cmake for build directory use
set(export_targets
${FLTK_LIBRARIES}
${FLTK_LIBRARIES_SHARED}
${FLUID_EXPORT}
${FLTK_OPTIONS_EXPORT}
)
export(TARGETS
${export_targets}
FILE
${CMAKE_CURRENT_BINARY_DIR}/FLTK-Targets.cmake
NAMESPACE
fltk::)
# generate FLTK-Functions.cmake for build directory use
configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/CMake/FLTK-Functions.cmake
${CMAKE_CURRENT_BINARY_DIR}/FLTK-Functions.cmake
COPYONLY
)
# generate FLTKConfig.cmake for build directory use
set(INCLUDE_DIRS "${FLTK_INCLUDE_DIRS}")
if(FLTK_HAVE_CAIRO OR FLTK_USE_CAIRO)
list(APPEND INCLUDE_DIRS ${PKG_CAIRO_INCLUDE_DIRS})
endif()
list(REMOVE_DUPLICATES INCLUDE_DIRS)
set(CONFIG_PATH ${CMAKE_CURRENT_BINARY_DIR})
configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/CMake/FLTKConfig.cmake.in
${CMAKE_CURRENT_BINARY_DIR}/FLTKConfig.cmake
@ONLY
)
# generate fltk-config for build directory use
set(prefix ${CMAKE_CURRENT_BINARY_DIR})
set(exec_prefix "\${prefix}")
set(includedir "${CMAKE_CURRENT_SOURCE_DIR}")
set(BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}")
set(libdir "\${exec_prefix}/lib")
set(srcdir ".")
set(LIBNAME "${libdir}/libfltk.a")
configure_file(
"${CMAKE_CURRENT_SOURCE_DIR}/fltk-config.in"
"${CMAKE_CURRENT_BINARY_DIR}/fltk-config"
@ONLY
)
# Set execute permissions on fltk-config in the build directory.
# Note: file(CHMOD) is available since CMake 3.19,
# use fallback before CMake 3.19
if(CMAKE_VERSION VERSION_LESS 3.19)
if(UNIX OR MSYS OR MINGW)
execute_process(COMMAND chmod 755 fltk-config
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}")
endif()
else(CMAKE_VERSION VERSION_LESS 3.19)
file(CHMOD "${CMAKE_CURRENT_BINARY_DIR}/fltk-config"
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE
GROUP_READ GROUP_EXECUTE
WORLD_READ WORLD_EXECUTE)
endif(CMAKE_VERSION VERSION_LESS 3.19)
# prepare some variables for config.h
if(IS_ABSOLUTE "${FLTK_DATADIR}")
set(PREFIX_DATA "${FLTK_DATADIR}/fltk")
else(IS_ABSOLUTE "${FLTK_DATADIR}")
set(PREFIX_DATA "${CMAKE_INSTALL_PREFIX}/${FLTK_DATADIR}/fltk")
endif(IS_ABSOLUTE "${FLTK_DATADIR}")
if(IS_ABSOLUTE "${FLTK_DOCDIR}")
set(PREFIX_DOC "${FLTK_DOCDIR}/fltk")
else(IS_ABSOLUTE "${FLTK_DOCDIR}")
set(PREFIX_DOC "${CMAKE_INSTALL_PREFIX}/${FLTK_DOCDIR}/fltk")
endif(IS_ABSOLUTE "${FLTK_DOCDIR}")
set(CONFIG_H_IN configh.cmake.in)
set(CONFIG_H config.h)
# generate config.h
configure_file(
"${CMAKE_CURRENT_SOURCE_DIR}/${CONFIG_H_IN}"
"${CMAKE_CURRENT_BINARY_DIR}/${CONFIG_H}"
@ONLY
)
if(FLTK_INSTALL_LINKS)
# Set PREFIX_INCLUDE to the proper value.
if(IS_ABSOLUTE ${FLTK_INCLUDEDIR})
set(PREFIX_INCLUDE ${FLTK_INCLUDEDIR})
else()
set(PREFIX_INCLUDE "${CMAKE_INSTALL_PREFIX}/${FLTK_INCLUDEDIR}")
endif(IS_ABSOLUTE ${FLTK_INCLUDEDIR})
configure_file(
"${CMAKE_CURRENT_SOURCE_DIR}/CMake/install-symlinks.cmake.in"
"${CMAKE_CURRENT_BINARY_DIR}/install-symlinks.cmake"
@ONLY)
endif(FLTK_INSTALL_LINKS)
@@ -0,0 +1,254 @@
#
# Macro used by the CMake build system for the Fast Light Tool Kit (FLTK).
# Originally written by Michael Surette
#
# Copyright 1998-2024 by Bill Spitzak and others.
#
# This library is free software. Distribution and use rights are outlined in
# the file "COPYING" which should have been included with this file. If this
# file is missing or damaged, see the license at:
#
# https://www.fltk.org/COPYING.php
#
# Please see the following page on how to report bugs and issues:
#
# https://www.fltk.org/bugs.php
#
#######################################################################
# fl_add_library - add a static or shared library to the build
#======================================================================
#
# Input:
#
# LIBNAME: name of the library, including 'fltk_' prefix if applicable.
#
# LIBTYPE: either "STATIC" or "SHARED"
#
# SOURCES: Files needed to build the library
#
# Output:
#
# FLTK_LIBRARIES or FLTK_LIBRARIES_SHARED (in parent scope)
#
# This function adds the given library to the build, adds it to
# either FLTK_LIBRARIES or FLTK_LIBRARIES_SHARED, respectively,
# and "exports" the modified variable to the parent scope.
#
# For each library an alias is defined (see comment below).
#
#######################################################################
function(fl_add_library LIBNAME LIBTYPE SOURCES)
# message(STATUS "Building library **************** ${LIBNAME} ${LIBTYPE}")
set(suffix "")
if(LIBTYPE STREQUAL "SHARED")
set(suffix "-shared")
endif()
set(TARGET_NAME ${LIBNAME}${suffix})
## Strip 'fltk_' from target name (if it exists in the name)
## and use the result as EXPORT_NAME property. This makes it
## easy to export library targets fltk::fltk and fltk::images
## rather than fltk::fltk_images.
string(REPLACE "fltk_" "" EXPORT_NAME ${TARGET_NAME})
if(MSVC)
set(OUTPUT_NAME_DEBUG "${LIBNAME}d")
else()
set(OUTPUT_NAME_DEBUG "${LIBNAME}")
endif(MSVC)
set(OUTPUT_NAME_RELEASE "${LIBNAME}")
add_library(${TARGET_NAME} ${LIBTYPE} ${SOURCES})
# Create an alias 'fltk::alias_name' for the library
# where 'alias_name' is the library name without the prefix 'fltk_'
#
# e.g. 'fltk' -> 'fltk::fltk'
# and 'fltk-shared' -> 'fltk::fltk-shared'
# but 'fltk_images' -> 'fltk::images'
# and 'fltk_images-shared' -> 'fltk::images-shared'
if(NOT (LIBNAME STREQUAL "fltk"))
string(REPLACE "fltk_" "" alias_name ${LIBNAME})
else()
set(alias_name ${LIBNAME})
endif()
set(alias_name "fltk::${alias_name}${suffix}")
add_library(${alias_name} ALIAS ${TARGET_NAME})
if(0)
fl_debug_var(TARGET_NAME)
fl_debug_var(LIBTYPE)
fl_debug_var(alias_name)
# fl_debug_var(SOURCES)
endif()
# Target properties for all libraries
# Set 'PRIVATE' target compile definitions for the library
# so they are not inherited by consumers
target_compile_definitions(${TARGET_NAME} PRIVATE "FL_LIBRARY")
# Set PUBLIC include and linker directories
if(0) # DEBUG
message(STATUS "fl_add_library and alias : fltk::${alias_name} ALIAS ${TARGET_NAME}")
fl_debug_var(TARGET_NAME)
fl_debug_var(FLTK_INCLUDE_DIRS)
fl_debug_var(CMAKE_CURRENT_BINARY_DIR)
fl_debug_var(CMAKE_CURRENT_SOURCE_DIR)
fl_debug_var(FLTK_BUILD_INCLUDE_DIRECTORIES)
endif()
# Special handling for the core 'fltk' library,
# no matter if it's SHARED or STATIC
# FIXME: maybe this should be in src/CMakeLists.txt (?)
if(LIBNAME STREQUAL "fltk")
target_include_directories(${TARGET_NAME} PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/..>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/..>
$<INSTALL_INTERFACE:include>
)
### FIXME: why does the simplified else() block not work?
### Needs investigation, using 'if(1)' for now...
if(1)
foreach(dir ${FLTK_BUILD_INCLUDE_DIRECTORIES})
target_include_directories(${TARGET_NAME} PRIVATE
$<BUILD_INTERFACE:${dir}>
)
endforeach()
else()
### This generates a wrong string in property INTERFACE_INCLUDE_DIRECTORIES:
### ... $<INSTALL_INTERFACE:include>;/git/fltk/modern-cmake/src/$<BUILD_INTERFACE:/usr/include/freetype2; ...
### ... --- OK ---------------------^^^^^^^ WRONG ^^^^^^^^^^^^^^-------- would be OK -------------------- ...
### End of string: ';/usr/include/libpng16' (WRONG: missing '>')
### I don't see anything wrong with this statement though but
### maybe I'm missing something. Albrecht, Jan 22 2024
target_include_directories(${TARGET_NAME} PRIVATE
$<BUILD_INTERFACE:${FLTK_BUILD_INCLUDE_DIRECTORIES}>
)
endif()
target_link_directories(${TARGET_NAME} PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/../lib>
$<INSTALL_INTERFACE:lib>
)
if(APPLE AND NOT FLTK_BACKEND_X11)
foreach(item ${FLTK_COCOA_FRAMEWORKS})
target_link_libraries(${TARGET_NAME} PUBLIC "${item}")
endforeach()
endif()
# we must link fltk with cairo if Cairo or Wayland is enabled (or both)
if(FLTK_HAVE_CAIRO OR FLTK_USE_CAIRO)
target_include_directories(${TARGET_NAME} PUBLIC ${PKG_CAIRO_INCLUDE_DIRS})
target_link_directories (${TARGET_NAME} PUBLIC ${PKG_CAIRO_LIBRARY_DIRS})
target_link_libraries (${TARGET_NAME} PUBLIC ${PKG_CAIRO_LIBRARIES})
endif()
endif(LIBNAME STREQUAL "fltk")
# Set additional target properties for static libraries
if(LIBTYPE STREQUAL "STATIC")
set_target_properties(${TARGET_NAME}
PROPERTIES
OUTPUT_NAME ${LIBNAME}
OUTPUT_NAME_DEBUG ${OUTPUT_NAME_DEBUG}
OUTPUT_NAME_RELEASE ${OUTPUT_NAME_RELEASE}
EXPORT_NAME ${EXPORT_NAME}
)
endif(LIBTYPE STREQUAL "STATIC")
# Set additional target properties for shared (dynamic) libraries (DLL's)
if(LIBTYPE STREQUAL "SHARED")
set_target_properties(${TARGET_NAME} PROPERTIES
VERSION ${FLTK_VERSION}
SOVERSION ${FLTK_VERSION_MAJOR}.${FLTK_VERSION_MINOR}
OUTPUT_NAME ${LIBNAME}
OUTPUT_NAME_DEBUG ${OUTPUT_NAME_DEBUG}
OUTPUT_NAME_RELEASE ${OUTPUT_NAME_RELEASE}
EXPORT_NAME ${EXPORT_NAME}
)
# Visual Studio only:
if(MSVC)
set_target_properties(${TARGET_NAME} PROPERTIES
OUTPUT_NAME ${LIBNAME}_dll
OUTPUT_NAME_DEBUG ${LIBNAME}_dlld
OUTPUT_NAME_RELEASE ${LIBNAME}_dll
)
target_compile_definitions(${TARGET_NAME} PUBLIC FL_DLL)
endif(MSVC)
endif(LIBTYPE STREQUAL "SHARED")
# Debug library output names (optional)
set(DEBUG_ONAME 0)
if(DEBUG_ONAME)
get_target_property(XX_NAME ${TARGET_NAME} NAME)
get_target_property(XX_ONAME ${TARGET_NAME} OUTPUT_NAME)
get_target_property(XX_ONAME_DEBUG ${TARGET_NAME} OUTPUT_NAME_DEBUG)
get_target_property(XX_ONAME_RELEASE ${TARGET_NAME} OUTPUT_NAME_RELEASE)
get_target_property(XX_EXPORT_NAME ${TARGET_NAME} EXPORT_NAME)
message(STATUS "--- DEBUG_ONAME ---")
fl_debug_var(TARGET_NAME)
fl_debug_var(XX_NAME)
fl_debug_var(XX_ONAME)
fl_debug_var(XX_ONAME_DEBUG)
fl_debug_var(XX_ONAME_RELEASE)
fl_debug_var(XX_EXPORT_NAME)
message(STATUS "--- /DEBUG_ONAME ---")
endif(DEBUG_ONAME)
if(MSVC)
if(FLTK_OPTION_LARGE_FILE)
set_target_properties(${TARGET_NAME} PROPERTIES
LINK_FLAGS /LARGEADDRESSAWARE
)
endif(FLTK_OPTION_LARGE_FILE)
endif(MSVC)
install(TARGETS ${TARGET_NAME} EXPORT FLTK-Targets
RUNTIME DESTINATION ${FLTK_BINDIR}
LIBRARY DESTINATION ${FLTK_LIBDIR}
ARCHIVE DESTINATION ${FLTK_LIBDIR}
)
if(LIBTYPE STREQUAL "SHARED")
list(APPEND FLTK_LIBRARIES_SHARED "${TARGET_NAME}")
set(FLTK_LIBRARIES_SHARED "${FLTK_LIBRARIES_SHARED}" PARENT_SCOPE)
else()
list(APPEND FLTK_LIBRARIES "${TARGET_NAME}")
set(FLTK_LIBRARIES "${FLTK_LIBRARIES}" PARENT_SCOPE)
endif()
if(0)
fl_debug_var(fl_add_library_DEBUG)
fl_debug_var(FLTK_LIBRARIES)
fl_debug_var(FLTK_LIBRARIES_SHARED)
fl_debug_var(fl_add_library_END)
message("")
endif()
endfunction(fl_add_library LIBNAME LIBTYPE SOURCES)
@@ -0,0 +1,187 @@
#
# A function used by the CMake build system for the Fast Light Tool Kit (FLTK).
# Originally written by Michael Surette
#
# Copyright 1998-2024 by Bill Spitzak and others.
#
# This library is free software. Distribution and use rights are outlined in
# the file "COPYING" which should have been included with this file. If this
# file is missing or damaged, see the license at:
#
# https://www.fltk.org/COPYING.php
#
# Please see the following page on how to report bugs and issues:
#
# https://www.fltk.org/bugs.php
#
################################################################################
#
# function fl_create_example - Create a test/demo (example) program
#
# Input:
#
# - NAME: program name, e.g. 'hello'
#
# - SOURCES: list of source files, separated by ';' (needs quotes)
# Sources can be:
# - .c/.cxx files, e.g. 'hello.cxx'
# - .fl (fluid) files, e.g. 'radio.fl'
# - .plist file(macOS), e.g. 'editor.plist'
# - .icns file(macOS Icon), e.g. 'checkers.icns'
# - .rc file(Windows resource file, e.g. icon definition)
#
# Order of sources doesn't matter, multiple .cxx and .fl files are
# supported, but only one .plist and one .icns file.
#
# File name (type), e.g. '.icns' matters, it is parsed internally:
# File types .fl, .plist, and .icns are treated specifically,
# all other file types are added to the target's source files.
#
# macOS specific .icns and .plist files are ignored on other platforms.
# These files must reside in the subdirectory 'mac-resources'.
#
# - LIBRARIES:
# List of libraries (CMake target names), separated by ';'. Must be
# quoted if more than one library is required, e.g. "fltk::gl;fltk::images"
#
################################################################################
function(fl_create_example NAME SOURCES LIBRARIES)
set(srcs) # source files
set(flsrcs) # fluid source (.fl) files
set(TARGET_NAME ${NAME}) # CMake target name
set(ICON_NAME) # macOS icon (max. one)
set(PLIST) # macOS .plist file(max. one)
set(ICON_PATH) # macOS icon resource path
# create macOS bundle? 0 = no, 1 = yes
if(APPLE AND NOT FLTK_BACKEND_X11)
set(MAC_BUNDLE 1)
else()
set(MAC_BUNDLE 0)
endif()
# filter input files for different handling (fluid, icon, plist, source)
foreach(src ${SOURCES})
if("${src}" MATCHES "\\.fl$")
list(APPEND flsrcs ${src})
elseif("${src}" MATCHES "\\.icns$")
set(ICON_NAME "${src}")
elseif("${src}" MATCHES "\\.plist$")
set(PLIST "${src}")
else()
list(APPEND srcs ${src})
endif("${src}" MATCHES "\\.fl$")
endforeach(src)
# generate source files from .fl files, add output to sources
if(flsrcs)
if(NOT FLTK_FLUID_EXECUTABLE)
message(STATUS "Example app \"${NAME}\" will not be built. FLUID executable not found.")
return ()
endif()
FLTK_RUN_FLUID (FLUID_SOURCES "${flsrcs}")
list(APPEND srcs ${FLUID_SOURCES})
unset(FLUID_SOURCES)
endif(flsrcs)
# set macOS (icon) resource path if applicable
if(MAC_BUNDLE AND ICON_NAME)
set(ICON_PATH "${CMAKE_CURRENT_SOURCE_DIR}/mac-resources/${ICON_NAME}")
endif(MAC_BUNDLE AND ICON_NAME)
##############################################################################
# add executable target and set properties (all platforms)
##############################################################################
if(MAC_BUNDLE)
add_executable (${TARGET_NAME} MACOSX_BUNDLE ${srcs} ${ICON_PATH})
else()
add_executable (${TARGET_NAME} WIN32 ${srcs})
endif(MAC_BUNDLE)
set_target_properties (${TARGET_NAME} PROPERTIES OUTPUT_NAME ${NAME})
target_link_libraries (${TARGET_NAME} PRIVATE ${LIBRARIES})
# make sure we're "exporting" global symbols like 'fl_disable_wayland',
# see also README.Wayland.txt and CMake policy CMP0065.
set_target_properties (${TARGET_NAME} PROPERTIES ENABLE_EXPORTS TRUE)
### *FIXME* Remove the entire 'if' block below when verified:
if(0) # This should no longer be necessary (implied by linking the libs)
# we must link all programs with Cairo if option CAIROEXT is enabled
if(FLTK_HAVE_CAIROEXT)
target_link_libraries(${TARGET_NAME} PRIVATE ${PKG_CAIRO_LIBRARIES})
endif()
if(FLTK_HAVE_CAIRO AND PKG_CAIRO_LIBRARY_DIRS)
target_link_directories(${TARGET_NAME} PRIVATE ${PKG_CAIRO_LIBRARY_DIRS})
endif()
endif() # This should no longer be necessary (implied by linking the libs)
# Search the current binary directory for header files created by CMake
# or fluid and the source folder for other headers included by test programs
target_include_directories(${TARGET_NAME} PRIVATE
${CMAKE_CURRENT_BINARY_DIR}
${CMAKE_CURRENT_SOURCE_DIR}
)
if(MAC_BUNDLE)
if(PLIST)
set_target_properties(${TARGET_NAME} PROPERTIES MACOSX_BUNDLE_INFO_PLIST
"${CMAKE_CURRENT_SOURCE_DIR}/mac-resources/${PLIST}")
endif()
string(REPLACE "_" "-" FLTK_BUNDLE_ID "org.fltk.${TARGET_NAME}")
set_target_properties(${TARGET_NAME} PROPERTIES MACOSX_BUNDLE_BUNDLE_NAME "${TARGET_NAME}")
set_target_properties(${TARGET_NAME} PROPERTIES MACOSX_BUNDLE_GUI_IDENTIFIER "${FLTK_BUNDLE_ID}")
set_target_properties(${TARGET_NAME} PROPERTIES XCODE_ATTRIBUTE_PRODUCT_BUNDLE_IDENTIFIER "${FLTK_BUNDLE_ID}")
if(ICON_NAME)
set_target_properties(${TARGET_NAME} PROPERTIES MACOSX_BUNDLE_ICON_FILE ${ICON_NAME})
set_target_properties(${TARGET_NAME} PROPERTIES RESOURCE ${ICON_PATH})
endif()
endif()
##############################################################################
# Copy macOS "bundle wrapper" (shell script) to target directory.
# The "custom command" will be executed "POST_BUILD".
##############################################################################
if(MAC_BUNDLE)
set(WRAPPER "${EXECUTABLE_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}/${TARGET_NAME}")
add_custom_command(
TARGET ${TARGET_NAME} POST_BUILD
COMMAND cp ${FLTK_SOURCE_DIR}/CMake/macOS-bundle-wrapper.in ${WRAPPER}
COMMAND chmod u+x,g+x,o+x ${WRAPPER}
BYPRODUCTS ${WRAPPER}
# COMMENT "Creating macOS bundle wrapper script ${WRAPPER}"
VERBATIM
)
unset(WRAPPER)
endif(MAC_BUNDLE)
##############################################################################
# MSVC: Add fltk-shared (DLL) path to Environment 'PATH' for debugging
##############################################################################
if(MSVC AND TARGET fltk-shared)
set(DllDir "$<SHELL_PATH:$<TARGET_FILE_DIR:fltk-shared>>")
set_target_properties(${TARGET_NAME} PROPERTIES
VS_DEBUGGER_ENVIRONMENT "PATH=${DllDir};$ENV{PATH}"
)
endif()
endfunction()
@@ -0,0 +1,69 @@
#
# Macro used by the CMake build system for the Fast Light Tool Kit (FLTK).
#
# Copyright 2022 by Bill Spitzak and others.
#
# This library is free software. Distribution and use rights are outlined in
# the file "COPYING" which should have been included with this file. If this
# file is missing or damaged, see the license at:
#
# https://www.fltk.org/COPYING.php
#
# Please see the following page on how to report bugs and issues:
#
# https://www.fltk.org/bugs.php
#
#######################################################################
# fl_debug_pkg - a macro to output pkgconfig debugging info
#######################################################################
#
# This macro displays the name and value of some CMake variables
# defined by pkg_check_modules().
#
# Syntax:
#
# fl_debug_pkg(PREFIX NAME)
#
# Example for package "cairo":
#
# pkg_check_modules (CAIRO cairo)
# fl_debug_pkg(CAIRO cairo)
#
# The first command searches for pkg 'cairo' and stores the results
# in CMake variables with prefix 'CAIRO_'.
#
# The second command displays all relevant variables if the package has
# been found, otherwise only 'CAIRO_FOUND' (empty or false).
#
#######################################################################
macro(fl_debug_pkg PREFIX NAME)
message("")
message(STATUS "Results of pkg_check_modules(${PREFIX}, ${NAME}):")
fl_debug_var(${PREFIX}_FOUND)
if(${PREFIX}_FOUND)
fl_debug_var(${PREFIX}_INCLUDE_DIRS)
fl_debug_var(${PREFIX}_CFLAGS)
fl_debug_var(${PREFIX}_LIBRARIES)
fl_debug_var(${PREFIX}_LINK_LIBRARIES)
fl_debug_var(${PREFIX}_LIBRARY_DIRS)
fl_debug_var(${PREFIX}_LDFLAGS)
fl_debug_var(${PREFIX}_LDFLAGS_OTHER)
fl_debug_var(${PREFIX}_CFLAGS_OTHER)
fl_debug_var(${PREFIX}_STATIC_INCLUDE_DIRS)
fl_debug_var(${PREFIX}_STATIC_CFLAGS)
fl_debug_var(${PREFIX}_STATIC_LIBRARIES)
fl_debug_var(${PREFIX}_STATIC_LINK_LIBRARIES)
fl_debug_var(${PREFIX}_STATIC_LIBRARY_DIRS)
fl_debug_var(${PREFIX}_VERSION)
fl_debug_var(${PREFIX}_PREFIX)
fl_debug_var(${PREFIX}_INCLUDEDIR)
fl_debug_var(${PREFIX}_LIBDIR)
endif()
message("")
endmacro(fl_debug_pkg)
@@ -0,0 +1,144 @@
#
# Function used by the CMake build system for the Fast Light Tool Kit (FLTK).
#
# Copyright 1998-2024 by Bill Spitzak and others.
#
# This library is free software. Distribution and use rights are outlined in
# the file "COPYING" which should have been included with this file. If this
# file is missing or damaged, see the license at:
#
# https://www.fltk.org/COPYING.php
#
# Please see the following page on how to report bugs and issues:
#
# https://www.fltk.org/bugs.php
#
#######################################################################
# fl_expand_name - a function to expand a variable name with spaces
#######################################################################
#
# This function returns a string comprising of the given name and
# enough spaces to have at least the given minimal length (min_len).
# Currently min_len must not be greater than 50.
#
# If the string is already at least min_len it is not changed,
# otherwise the string is returned to the given variable (out)
# in the parent scope.
#
# Syntax:
# fl_expand_name (out in min_len)
#
# Example:
# fl_expand_name (var WIN32 30)
# fl_expand_name (var UNIX 40)
#
#######################################################################
function(fl_expand_name out in min_len)
string(LENGTH "${in}" len)
if(len LESS min_len)
set(spaces " ")
set(temp "${in}")
set(temp "${in}${spaces}${spaces}")
string(SUBSTRING "${temp}" 0 ${min_len} temp)
set(${out} "${temp}" PARENT_SCOPE)
else()
set(${out} "${in}" PARENT_SCOPE)
endif()
endfunction(fl_expand_name)
#######################################################################
# fl_debug_var - a function to output debugging info
#######################################################################
#
# This function displays the name and value of a CMake variable.
# The variable name is expanded with spaces to be (at least)
# <min_len> (currently 30) characters wide for better readability.
# VARNAME must be a string literal, e.g. WIN32 or "WIN32".
#
# Syntax:
# fl_debug_var(VARNAME)
#
# Example:
# fl_debug_var(WIN32)
# fl_debug_var("UNIX")
#
#######################################################################
function(fl_debug_var name)
set(var "${name}")
fl_expand_name(var "${name}" 40)
message(STATUS "${var} = '${${name}}'")
endfunction(fl_debug_var)
#######################################################################
# fl_debug_target - a function to output info about a target
#######################################################################
#
# This function displays properties of a CMake target.
#
# Currently there's a fixed number of properties.
#
# Syntax:
# fl_debug_target(target)
#
# Example:
# fl_debug_target(fltk)
# fl_debug_target(fluid)
# fl_debug_target(fltk_image)
# fl_debug_target(fltk::forms)
#
#######################################################################
function(fl_debug_target name)
message(STATUS "+++ fl_debug_target(${name})")
set(var "${name}")
fl_expand_name(var "${name}" 40)
if(NOT TARGET ${name})
message(STATUS "${var} = <not a target>")
message(STATUS "")
return()
endif()
get_target_property(_type ${name} TYPE)
# message(STATUS "${var} = target, type = ${_type}")
# these properties are always supported:
set(_props NAME TYPE ALIASED_TARGET)
# these properties can't be read from executable target types
### if(NOT _type STREQUAL "EXECUTABLE")
### list(APPEND _props
### LOCATION
### IMPORTED_LOCATION
### INTERFACE_LOCATION)
### endif()
if(NOT _type STREQUAL "INTERFACE_LIBRARY" OR CMAKE_VERSION VERSION_GREATER_EQUAL "3.19")
# Before 3.19: "INTERFACE_LIBRARY targets may only have whitelisted properties"
list(APPEND _props
INCLUDE_DIRECTORIES
LINK_DIRECTORIES
LINK_LIBRARIES
COMPILE_DEFINITIONS)
endif()
list(APPEND _props
INTERFACE_COMPILE_DEFINITIONS
INTERFACE_INCLUDE_DIRECTORIES
INTERFACE_LINK_DIRECTORIES
INTERFACE_LINK_LIBRARIES)
foreach(prop ${_props})
get_target_property(${prop} ${name} ${prop})
if(NOT ${prop})
set(${prop} "")
endif()
fl_debug_var(${prop})
endforeach()
message(STATUS "")
endfunction(fl_debug_target)
@@ -0,0 +1,89 @@
#
# Macros used by the CMake build system for the Fast Light Tool Kit (FLTK).
#
# Copyright 2024 by Bill Spitzak and others.
#
# This library is free software. Distribution and use rights are outlined in
# the file "COPYING" which should have been included with this file. If this
# file is missing or damaged, see the license at:
#
# https://www.fltk.org/COPYING.php
#
# Please see the following page on how to report bugs and issues:
#
# https://www.fltk.org/bugs.php
#
########################################################################
# The macros in this file are used to generate the CMake build summary.
# Fixed widths of title fields are intentionally hard coded in two of
# these macros so we can easily change the alignment.
########################################################################
include(${CMAKE_CURRENT_LIST_DIR}/fl_debug_var.cmake)
########################################################################
# Output a summary line like "<title> <value>"
########################################################################
# <title> will be expanded to a fixed width (can be empty)
# <value> text to be displayed
########################################################################
macro(fl_summary title value)
fl_expand_name(label "${title}" 24)
message(STATUS "${label} ${value}")
endmacro(fl_summary title value)
########################################################################
# Output a summary line like "<title> will be built ..."
# or "<title> will not be built ..."
########################################################################
# title will be expanded to a fixed width (must not be empty)
# subdir = relative build directory (e.g. lib or bin/test)
# build = CMake variable name (bool): whether <title> is built
# option = option name the user can set to build <title>
########################################################################
macro(fl_summary_build title subdir build option)
if(${build})
set(value "will be built in: ${CMAKE_CURRENT_BINARY_DIR}/${subdir}")
else()
set(value "will not be built (set ${option}=ON to build)")
endif()
fl_expand_name(label "${title}" 19)
message(STATUS "${label} ${value}")
endmacro(fl_summary_build title var subdir)
########################################################################
# Output a simple summary line like "<title> {Yes|No}"
########################################################################
# title will be expanded to a fixed width (must not be empty)
# var = CMake variable name, must evaluate to true or false
########################################################################
macro(fl_summary_yn title var)
if(${var})
set(value "Yes")
else()
set(value "No")
endif()
fl_summary("${title}" ${value})
endmacro(fl_summary_yn title var)
########################################################################
# Output summary line for image libs (bundled or system libs)
########################################################################
# title = "Image Libraries" or empty
# name = displayed name = { JPEG | PNG | ZLIB }
# lib = CMake library name (system library, if it was found)
########################################################################
macro(fl_summary_image title name lib)
fl_expand_name(name4 "${name}" 8)
if(FLTK_USE_BUNDLED_${name})
set(value "${name4} = Bundled")
else()
set(value "${name4} = System: ${${lib}}")
endif()
fl_summary("${title}" "${value}")
endmacro(fl_summary_image title name lib)
@@ -0,0 +1,33 @@
#
# Installation script to create symlinks for the FLTK project using CMake
#
# Copyright 1998-2021 by Bill Spitzak and others.
#
# This library is free software. Distribution and use rights are outlined in
# the file "COPYING" which should have been included with this file. If this
# file is missing or damaged, see the license at:
#
# https://www.fltk.org/COPYING.php
#
# Please see the following page on how to report bugs and issues:
#
# https://www.fltk.org/bugs.php
# On UNIX create backward compatibility symlinks
if(NOT EXISTS $ENV{DESTDIR}@PREFIX_INCLUDE@/Fl)
EXECUTE_PROCESS(
COMMAND ln -s FL Fl
WORKING_DIRECTORY $ENV{DESTDIR}@PREFIX_INCLUDE@
)
endif(NOT EXISTS $ENV{DESTDIR}@PREFIX_INCLUDE@/Fl)
file(GLOB FLTK_HEADER_FILES $ENV{DESTDIR}@PREFIX_INCLUDE@/FL/*.H)
foreach(file ${FLTK_HEADER_FILES})
GET_FILENAME_COMPONENT(nameWE ${file} NAME_WE)
if(NOT EXISTS $ENV{DESTDIR}@PREFIX_INCLUDE@/FL/${nameWE}.h)
EXECUTE_PROCESS(
COMMAND ln -s ${nameWE}.H ${nameWE}.h
WORKING_DIRECTORY $ENV{DESTDIR}@PREFIX_INCLUDE@/FL
)
endif(NOT EXISTS $ENV{DESTDIR}@PREFIX_INCLUDE@/FL/${nameWE}.h)
endforeach(file)
@@ -0,0 +1,156 @@
#
# Installation support for building the FLTK project using CMake (www.cmake.org)
# Originally written by Michael Surette
#
# Copyright 1998-2026 by Bill Spitzak and others.
#
# This library is free software. Distribution and use rights are outlined in
# the file "COPYING" which should have been included with this file. If this
# file is missing or damaged, see the license at:
#
# https://www.fltk.org/COPYING.php
#
# Please see the following page on how to report bugs and issues:
#
# https://www.fltk.org/bugs.php
#
#######################################################################
# installation
#######################################################################
# generate uninstall target
configure_file(
"${CMAKE_CURRENT_SOURCE_DIR}/CMake/cmake_uninstall.cmake.in"
"${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
@ONLY
)
add_custom_target(uninstall
"${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
)
install(DIRECTORY
${CMAKE_CURRENT_SOURCE_DIR}/FL
DESTINATION ${FLTK_INCLUDEDIR} USE_SOURCE_PERMISSIONS
FILES_MATCHING
PATTERN "*.[hH]"
PATTERN "fl_config.h" EXCLUDE
)
install(DIRECTORY
${CMAKE_CURRENT_BINARY_DIR}/FL
DESTINATION ${FLTK_INCLUDEDIR} USE_SOURCE_PERMISSIONS
FILES_MATCHING
PATTERN "*.[hH]"
)
if(FLTK_INSTALL_LINKS)
install(SCRIPT ${CMAKE_CURRENT_BINARY_DIR}/install-symlinks.cmake)
endif(FLTK_INSTALL_LINKS)
# generate FLTKConfig.cmake for installed directory use
set(INCLUDE_DIRS ${CMAKE_INSTALL_PREFIX}/include)
if(FLTK_HAVE_CAIRO)
list(APPEND INCLUDE_DIRS ${PKG_CAIRO_INCLUDE_DIRS})
endif()
set(CONFIG_PATH ${CMAKE_INSTALL_PREFIX}/${FLTK_CONFIG_PATH})
install(EXPORT FLTK-Targets
DESTINATION ${FLTK_CONFIG_PATH}
FILE FLTK-Targets.cmake
NAMESPACE fltk::
)
configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/CMake/FLTKConfig.cmake.in
${CMAKE_CURRENT_BINARY_DIR}/etc/FLTKConfig.cmake
@ONLY
)
install(FILES
${CMAKE_CURRENT_BINARY_DIR}/etc/FLTKConfig.cmake
DESTINATION ${FLTK_CONFIG_PATH}
)
install(FILES
${CMAKE_CURRENT_SOURCE_DIR}/CMake/FLTK-Functions.cmake
DESTINATION ${FLTK_CONFIG_PATH}
)
# Generate fltk-config
set(prefix ${CMAKE_INSTALL_PREFIX})
set(exec_prefix "\${prefix}")
set(includedir "\${prefix}/${CMAKE_INSTALL_INCLUDEDIR}")
set(BINARY_DIR)
set(libdir "\${exec_prefix}/${CMAKE_INSTALL_LIBDIR}")
set(srcdir ".")
set(LIBNAME "${libdir}/libfltk.a")
configure_file(
"${CMAKE_CURRENT_SOURCE_DIR}/fltk-config.in"
"${CMAKE_CURRENT_BINARY_DIR}/bin/fltk-config"
@ONLY
)
# Install fltk-config
# Note: no need to set execute perms, install(PROGRAMS) does this
install(PROGRAMS
${CMAKE_CURRENT_BINARY_DIR}/bin/fltk-config
DESTINATION ${FLTK_BINDIR}
)
# Install man pages of fluid and fltk-options
macro(INSTALL_MAN FILE LEVEL)
install(FILES
${CMAKE_CURRENT_SOURCE_DIR}/documentation/src/${FILE}.man
DESTINATION ${FLTK_MANDIR}/man${LEVEL}
RENAME ${FILE}.${LEVEL}
)
endmacro(INSTALL_MAN FILE LEVEL)
if(FLTK_BUILD_FLUID)
INSTALL_MAN (fluid 1)
endif(FLTK_BUILD_FLUID)
if(FLTK_BUILD_FLTK_OPTIONS)
INSTALL_MAN (fltk-options 1)
endif(FLTK_BUILD_FLTK_OPTIONS)
INSTALL_MAN (fltk-config 1)
INSTALL_MAN (fltk 3)
# Install the games
if(FLTK_BUILD_TEST) # "OR FLTK_BUILD_GAMES" (not yet implemented)
set(games_ blocks sudoku)
if(FLTK_BUILD_FLUID)
list(APPEND games_ checkers)
endif(FLTK_BUILD_FLUID)
if(FLTK_USE_GL)
list(APPEND games_ glpuzzle)
endif()
foreach(game_ ${games_})
if(FLTK_BUILD_SHARED_LIBS)
set(tgt_ "${game_}-shared")
set_target_properties(${tgt_} PROPERTIES RUNTIME_OUTPUT_NAME ${game_})
else()
set(tgt_ ${game_})
endif()
# note: do NOT "export" games - this could break CMake config files
install(TARGETS ${tgt_}
RUNTIME DESTINATION ${FLTK_BINDIR}
LIBRARY DESTINATION ${FLTK_LIBDIR}
ARCHIVE DESTINATION ${FLTK_LIBDIR}
BUNDLE DESTINATION ${FLTK_BINDIR} # macOS: bundles
)
# install man page
INSTALL_MAN (${game_} 6)
endforeach()
unset(game_)
unset(games_)
endif()
@@ -0,0 +1,25 @@
#!/bin/sh
#
# Run the executable of a macOS bundle for the Fast Light Tool Kit (FLTK).
#
# Copyright 1998-2020 by Bill Spitzak and others.
#
# This library is free software. Distribution and use rights are outlined in
# the file "COPYING" which should have been included with this file. If this
# file is missing or damaged, see the license at:
#
# https://www.fltk.org/COPYING.php
#
# Please see the following page on how to report bugs and issues:
#
# https://www.fltk.org/bugs.php
#
#
# Install this script side by side with the macOS bundle with the same name:
#
# - dir/prog.app macOS bundle (directory)
# - dir/prog this script: runs the executable 'prog' inside the bundle
#
prog="`basename \"$0\"`"
dir="`dirname \"$0\"`"
exec "$dir/$prog.app/Contents/MacOS/$prog" "$@"
@@ -0,0 +1,6 @@
#include <AvailabilityMacros.h>
#if MAC_OS_X_VERSION_MAX_ALLOWED < SDK_VERSION_CHECK
#error MAC_OS_X_VERSION_MAX_ALLOWED < SDK_VERSION_CHECK
#endif
int main(int argc, char** argv) { return 0; }
File diff suppressed because it is too large. Load diff
@@ -0,0 +1,11 @@
#include <dirent.h>
int func (const char *d, dirent ***list, void *sort) {
int n = scandir(d, list, 0, (int(*)(const dirent **, const dirent **))sort);
return n;
}
int main() {
return 0;
}
@@ -0,0 +1,7 @@
/*
FLTK feature test: do we have PTHREAD_MUTEX_RECURSIVE ?
*/
#include <pthread.h>
int main() {
return PTHREAD_MUTEX_RECURSIVE;
}
@@ -0,0 +1,344 @@
#
# Resource definitions to build the FLTK project using CMake (www.cmake.org)
# Originally written by Michael Surette
#
# Copyright 1998-2024 by Bill Spitzak and others.
#
# This library is free software. Distribution and use rights are outlined in
# the file "COPYING" which should have been included with this file. If this
# file is missing or damaged, see the license at:
#
# https://www.fltk.org/COPYING.php
#
# Please see the following page on how to report bugs and issues:
#
# https://www.fltk.org/bugs.php
#
#######################################################################
# check for headers, libraries and functions
#######################################################################
# If CMAKE_REQUIRED_QUIET is 1 (default) the search is mostly quiet,
# if it is 0 (or not defined) check_include_files() is more verbose
# and the result of the search is logged with fl_debug_var().
# This is useful for debugging.
set(CMAKE_REQUIRED_QUIET 1)
include(CheckIncludeFiles)
include(CheckSymbolExists)
macro(fl_find_header VAR HEADER)
check_include_files("${HEADER}" ${VAR})
if(NOT CMAKE_REQUIRED_QUIET)
fl_debug_var(${VAR})
endif(NOT CMAKE_REQUIRED_QUIET)
endmacro(fl_find_header)
#######################################################################
# find git revision and store it in the CMake cache for reference
#######################################################################
# (1) Get current Git revision from `git rev-parse ...`
# (2) Read Git revision from file `fltk_git_rev.dat`
#
# (1) This can fail if the FLTK source directory is not a Git checkout,
# i.e. FLTK was downloaded as a distro (tarball).
# (2) If (1) fails the file `fltk_git_rev.dat` is read. This file is
# generated by the process to generate the distribution (makesrcdist).
#
set(git_rev_file ${FLTK_SOURCE_DIR}/fltk_git_rev.dat)
set(git_revision "") # temporary variable
execute_process(COMMAND
git rev-parse HEAD # --short=${git_rev_size} HEAD
OUTPUT_VARIABLE git_revision
OUTPUT_STRIP_TRAILING_WHITESPACE
WORKING_DIRECTORY ${FLTK_SOURCE_DIR}
ERROR_QUIET
)
if(git_revision STREQUAL "")
# Read git revision from a file generated by makesrcdist.
# This file is located in the FLTK source directory
if(EXISTS ${git_rev_file})
file(READ ${git_rev_file} git_revision)
string(STRIP "${git_revision}" git_revision)
else()
set(git_revision "unknown")
endif()
endif()
set(FLTK_GIT_REVISION "${git_revision}"
CACHE STRING
"FLTK Git revision (do not change)"
FORCE)
# debug and unset temporary variables
# fl_debug_var(git_revision)
unset(git_rev_file)
unset(git_revision)
#######################################################################
# Include FindPkgConfig for later use of pkg-config
#######################################################################
include(FindPkgConfig)
# fl_debug_var(PKG_CONFIG_FOUND)
# fl_debug_var(PKG_CONFIG_EXECUTABLE)
# fl_debug_var(PKG_CONFIG_VERSION_STRING)
#######################################################################
# GitHub Issue #1001: try to "repair" the CMake Cache
# GitHub Issue #1046: don't try "too hard" (see GitHub Issue)
#######################################################################
#
# Note: we renamed "our" CMake cache variable OPENGL_GLU_INCLUDE_DIR
# to FLTK_OPENGL_GLU_INCLUDE_DIR because the former is now defined
# in find_package(OpenGL) (FindOpenGL.cmake) since CMake 3.29.0.
#
# We remove "our" cache variable if OPENGL_GLU_INCLUDE_DIR is defined
# but FLTK_OPENGL_GLU_INCLUDE_DIR is not yet defined which indicates
# the first execution after the rename.
#
# FIXME: we can remove this code some time after the release of FLTK 1.4.0.
if(DEFINED OPENGL_GLU_INCLUDE_DIR AND NOT DEFINED FLTK_OPENGL_GLU_INCLUDE_DIR)
unset(OPENGL_GLU_INCLUDE_DIR)
unset(OPENGL_GLU_INCLUDE_DIR CACHE)
endif() # (DEFINED OPENGL_GLU_INCLUDE_DIR AND NOT ...)
#######################################################################
# Find header files...
#######################################################################
if(${CMAKE_HOST_SYSTEM_NAME} STREQUAL "FreeBSD")
list(APPEND CMAKE_REQUIRED_INCLUDES /usr/local/include)
endif(${CMAKE_HOST_SYSTEM_NAME} STREQUAL "FreeBSD")
fl_find_header(HAVE_ALSA_ASOUNDLIB_H alsa/asoundlib.h)
fl_find_header(HAVE_DLFCN_H dlfcn.h)
fl_find_header(HAVE_GL_GLU_H GL/glu.h)
fl_find_header(HAVE_LOCALE_H locale.h)
fl_find_header(HAVE_OPENGL_GLU_H OpenGL/glu.h)
fl_find_header(HAVE_STDIO_H stdio.h)
fl_find_header(HAVE_STRINGS_H strings.h)
fl_find_header(HAVE_SYS_SELECT_H sys/select.h)
fl_find_header(HAVE_SYS_STDTYPES_H sys/stdtypes.h)
fl_find_header(HAVE_X11_XREGION_H "X11/Xlib.h;X11/Xregion.h")
if(WIN32 AND NOT CYGWIN)
# we don't use pthreads on Windows (except for Cygwin, see options.cmake)
set(HAVE_PTHREAD_H 0)
else()
fl_find_header(HAVE_PTHREAD_H pthread.h)
endif(WIN32 AND NOT CYGWIN)
# Do we have PTHREAD_MUTEX_RECURSIVE ?
if(HAVE_PTHREAD_H)
try_compile(HAVE_PTHREAD_MUTEX_RECURSIVE
${CMAKE_CURRENT_BINARY_DIR}
${CMAKE_CURRENT_SOURCE_DIR}/CMake/pthread_mutex_recursive.c
)
else()
set(HAVE_PTHREAD_MUTEX_RECURSIVE 0)
endif()
# Special case for Microsoft Visual Studio generator (MSVC):
#
# The header files <GL/glu.h> and <locale.h> are located in the SDK's
# for Visual Studio. If CMake is invoked from a desktop icon or the Windows
# menu it doesn't have the correct paths to find these header files.
# The CMake folks recommend not to search for these files at all, because
# they must always be there, but we do anyway.
# If we don't find them we issue a warning and continue anyway.
#
# Note: these cache variables can only be seen in "advanced" mode.
if(MSVC)
if(NOT HAVE_GL_GLU_H)
message(STATUS "Info: Header file GL/glu.h was not found. Continuing...")
set(HAVE_GL_GLU_H 1)
endif(NOT HAVE_GL_GLU_H)
if(NOT HAVE_LOCALE_H)
message(STATUS "Info: Header file locale.h was not found. Continuing...")
set(HAVE_LOCALE_H 1)
endif(NOT HAVE_LOCALE_H)
endif(MSVC)
# Simulate the behavior of autoconf macro AC_HEADER_DIRENT, see:
# https://www.gnu.org/software/autoconf/manual/autoconf-2.69/html_node/Particular-Headers.html
# "Check for the following header files. For the first one that is found
# and defines 'DIR', define the listed C preprocessor macro ..."
#
# Note: we don't check if it really defines 'DIR', but we stop processing
# once we found the first suitable header file.
fl_find_header(HAVE_DIRENT_H dirent.h)
if(NOT HAVE_DIRENT_H)
fl_find_header(HAVE_SYS_NDIR_H sys/ndir.h)
if(NOT HAVE_SYS_NDIR_H)
fl_find_header(HAVE_SYS_DIR_H sys/dir.h)
if(NOT HAVE_SYS_DIR_H)
fl_find_header(HAVE_NDIR_H ndir.h)
endif(NOT HAVE_SYS_DIR_H)
endif(NOT HAVE_SYS_NDIR_H)
endif(NOT HAVE_DIRENT_H)
#----------------------------------------------------------------------
# The following code is used to find the include path for freetype
# headers to be able to #include <ft2build.h> in Xft.h.
# where to find freetype headers
find_path(FREETYPE_PATH freetype.h PATH_SUFFIXES freetype2)
find_path(FREETYPE_PATH freetype/freetype.h PATH_SUFFIXES freetype2)
if(FREETYPE_PATH AND ((NOT APPLE) OR FLTK_BACKEND_X11))
list(APPEND FLTK_BUILD_INCLUDE_DIRECTORIES ${FREETYPE_PATH})
endif(FREETYPE_PATH AND ((NOT APPLE) OR FLTK_BACKEND_X11))
mark_as_advanced(FREETYPE_PATH)
#######################################################################
# libraries
find_library(LIB_dl dl)
if((NOT APPLE) OR FLTK_BACKEND_X11)
find_library(LIB_fontconfig fontconfig)
endif((NOT APPLE) OR FLTK_BACKEND_X11)
find_library(LIB_freetype freetype)
find_library(LIB_GL GL)
find_library(LIB_MesaGL MesaGL)
find_library(LIB_jpeg jpeg)
find_library(LIB_png png)
find_library(LIB_zlib z)
find_library(LIB_m m)
mark_as_advanced(LIB_dl LIB_fontconfig LIB_freetype)
mark_as_advanced(LIB_GL LIB_MesaGL)
mark_as_advanced(LIB_jpeg LIB_png LIB_zlib)
mark_as_advanced(LIB_m)
#######################################################################
# functions
include(CheckFunctionExists)
# Save CMAKE_REQUIRED_LIBRARIES
# Note: CMAKE_REQUIRED_LIBRARIES must be set for each search and
# reset after the search to avoid to influence subsequent searches.
# The original value is restored after all searches.
if(DEFINED CMAKE_REQUIRED_LIBRARIES)
set(SAVED_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES})
else()
unset(SAVED_REQUIRED_LIBRARIES)
endif()
set(CMAKE_REQUIRED_LIBRARIES)
if(HAVE_DLFCN_H)
set(HAVE_DLFCN_H 1)
endif(HAVE_DLFCN_H)
set(CMAKE_REQUIRED_LIBRARIES ${CMAKE_DL_LIBS})
check_symbol_exists(dlsym "dlfcn.h" HAVE_DLSYM)
set(CMAKE_REQUIRED_LIBRARIES)
check_symbol_exists(localeconv "locale.h" HAVE_LOCALECONV)
if(LIB_png)
set(CMAKE_REQUIRED_LIBRARIES ${LIB_png})
check_symbol_exists(png_get_valid "png.h" HAVE_PNG_GET_VALID)
check_symbol_exists(png_set_tRNS_to_alpha "png.h" HAVE_PNG_SET_TRNS_TO_ALPHA)
set(CMAKE_REQUIRED_LIBRARIES)
endif(LIB_png)
check_symbol_exists(scandir "dirent.h" HAVE_SCANDIR)
check_symbol_exists(snprintf "stdio.h" HAVE_SNPRINTF)
# not really true but we convert strcasecmp calls to _stricmp calls in flstring.h
if(MSVC)
set(HAVE_STRCASECMP 1)
endif(MSVC)
check_symbol_exists(strcasecmp "strings.h" HAVE_STRCASECMP)
check_symbol_exists(strlcat "string.h" HAVE_STRLCAT)
check_symbol_exists(strlcpy "string.h" HAVE_STRLCPY)
check_symbol_exists(vsnprintf "stdio.h" HAVE_VSNPRINTF)
check_symbol_exists(setenv "stdlib.h" HAVE_SETENV)
# Windows doesn't require '-lm' for trunc(), other platforms do
if(LIB_m AND NOT WIN32)
set(CMAKE_REQUIRED_LIBRARIES ${LIB_m})
endif()
check_symbol_exists(trunc "math.h" HAVE_TRUNC)
set(CMAKE_REQUIRED_LIBRARIES)
if(HAVE_SCANDIR AND NOT HAVE_SCANDIR_POSIX)
set(MSG "POSIX compatible scandir")
message(STATUS "Looking for ${MSG}")
try_compile(V
${CMAKE_CURRENT_BINARY_DIR}
${CMAKE_CURRENT_SOURCE_DIR}/CMake/posixScandir.cxx
)
if(V)
message(STATUS "${MSG} - found")
set(HAVE_SCANDIR_POSIX 1 CACHE INTERNAL "")
else()
message(STATUS "${MSG} - not found")
set(HAVE_SCANDIR_POSIX HAVE_SCANDIR_POSIX-NOTFOUND)
endif(V)
endif(HAVE_SCANDIR AND NOT HAVE_SCANDIR_POSIX)
mark_as_advanced(HAVE_SCANDIR_POSIX)
# restore CMAKE_REQUIRED_LIBRARIES
if(DEFINED SAVED_REQUIRED_LIBRARIES)
set(CMAKE_REQUIRED_LIBRARIES ${SAVED_REQUIRED_LIBRARIES})
unset(SAVED_REQUIRED_LIBRARIES)
else()
unset(CMAKE_REQUIRED_LIBRARIES)
endif()
#######################################################################
# packages
# Doxygen: necessary for HTML and PDF docs
find_package(Doxygen)
# LaTex: necessary for PDF docs (note: FindLATEX doesn't return LATEX_FOUND)
# Note: we only check existence of `latex' (LATEX_COMPILER), hence
# building the pdf docs may still fail because of other missing tools.
set(LATEX_FOUND)
if(DOXYGEN_FOUND)
find_package(LATEX)
if(LATEX_COMPILER AND NOT LATEX_FOUND)
set(LATEX_FOUND YES)
endif(LATEX_COMPILER AND NOT LATEX_FOUND)
endif(DOXYGEN_FOUND)
# message("Doxygen found : ${DOXYGEN_FOUND}")
# message("LaTex found : ${LATEX_FOUND}")
# message("LaTex Compiler : ${LATEX_COMPILER}")
# Cleanup: unset local variables
unset(CMAKE_REQUIRED_QUIET)
+209
View File
@@ -0,0 +1,209 @@
#
# CMakeLists.txt to build the FLTK project using CMake (www.cmake.org)
# Originally written by Michael Surette
#
# Copyright 1998-2025 by Bill Spitzak and others.
#
# This library is free software. Distribution and use rights are outlined in
# the file "COPYING" which should have been included with this file. If this
# file is missing or damaged, see the license at:
#
# https://www.fltk.org/COPYING.php
#
# Please see the following page on how to report bugs and issues:
#
# https://www.fltk.org/bugs.php
#
#######################################################################
# basic setup
#######################################################################
set(EXECUTABLE_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR}/bin)
set(LIBRARY_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR}/lib)
set(ARCHIVE_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR}/lib)
# Search for modules in the FLTK source dir first
set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMake")
# Setup install locations (requires CMake 2.8.4)
include(GNUInstallDirs)
set(FLTK_BINDIR ${CMAKE_INSTALL_BINDIR} CACHE PATH
"Binary install path relative to CMAKE_INSTALL_PREFIX unless set to an absolute path.")
set(FLTK_LIBDIR ${CMAKE_INSTALL_LIBDIR} CACHE PATH
"Library install path relative to CMAKE_INSTALL_PREFIX unless set to an absolute path.")
set(FLTK_INCLUDEDIR ${CMAKE_INSTALL_INCLUDEDIR} CACHE PATH
"Public header install path relative to CMAKE_INSTALL_PREFIX unless set to an absolute path.")
set(FLTK_DATADIR ${CMAKE_INSTALL_DATADIR} CACHE PATH
"Non-arch data install path relative to CMAKE_INSTALL_PREFIX unless set to an absolute path.")
set(FLTK_MANDIR ${CMAKE_INSTALL_MANDIR} CACHE PATH
"Manual install path relative to CMAKE_INSTALL_PREFIX unless set to an absolute path.")
set(FLTK_DOCDIR ${CMAKE_INSTALL_DATADIR}/doc CACHE PATH
"Non-arch doc install path relative to CMAKE_INSTALL_PREFIX unless set to an absolute path.")
#######################################################################
# Initialize variables needed to collect include directories etc..
# Some of these variables are used to *append* other values later
#######################################################################
set(FLTK_BUILD_INCLUDE_DIRECTORIES "")
set(FLTK_IMAGE_INCLUDE_DIRECTORIES "")
set(FLTK_IMAGE_LIBRARIES "")
set(FLTK_IMAGE_LIBRARIES_SHARED "")
set(FLTK_CFLAGS "")
set(FLTK_LIBRARIES "")
set(FLTK_LIBRARIES_SHARED "")
# Remember root of FLTK source directory in case we're later in a subdirectory.
# Used for instance to find the source directory for doxygen docs
set(FLTK_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
if(FLTK_SOURCE_DIR STREQUAL ${CMAKE_SOURCE_DIR})
set(FLTK_IS_TOPLEVEL TRUE)
else()
set(FLTK_IS_TOPLEVEL FALSE)
endif()
# Note: FLTK_INCLUDE_DIRS is used to export the required include directories
# in FLTKConfig.cmake etc.
# ### FIXME ### check if we really need this ...
set(FLTK_INCLUDE_DIRS ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR})
# FLTK_BUILD_INCLUDE_DIRECTORIES is used to build the main FLTK lib
set(FLTK_BUILD_INCLUDE_DIRECTORIES)
# Some of these variables are used to *append* other values later
set(FLTK_LDLIBS "")
set(FLTK_LIBRARIES "")
set(IMAGELIBS "")
set(LDFLAGS "")
set(LINK_LIBS "")
set(STATICIMAGELIBS "")
#######################################################################
# platform dependent information
#######################################################################
# set where config files go
if(WIN32 AND NOT CYGWIN)
set(FLTK_CONFIG_PATH CMake)
elseif(APPLE AND NOT FLTK_BACKEND_X11)
set(FLTK_CONFIG_PATH ${FLTK_DATADIR}/fltk)
else()
set(FLTK_CONFIG_PATH ${FLTK_DATADIR}/fltk)
endif(WIN32 AND NOT CYGWIN)
include(TestBigEndian)
TEST_BIG_ENDIAN(WORDS_BIGENDIAN)
if(CMAKE_GENERATOR MATCHES "Xcode")
# Tell Xcode to regenerate scheme information automatically whenever the
# CMake configuration changes without asking the user
set(CMAKE_XCODE_GENERATE_SCHEME 1)
endif()
if(APPLE)
# Check if the __MAC_OS_X_VERSION_MAX_ALLOWED compile time macro is at least
# the version encoded in SDK_VERSION and return TRUE or FALSE in RESULT.
# Note 1: try_compile() always creates an *internal* CMake cache variable for
# the result which we set to 'FLTK_CHECK_OSX_MAX_ALLOWED_${SDK_VERSION}'.
# Note 2: 'FLTK_' to avoid polluting the cache if FLTK is built as a subproject.
# Note 3: We don't care about the cache, i.e. we run try_compile() unconditionally
# so users can switch SDK's, particularly if they *upgrade* Xcode.
function(CHECK_OSX_MAX_ALLOWED SDK_VERSION RESULT)
set(_result FLTK_CHECK_OSX_MAX_ALLOWED_${SDK_VERSION})
try_compile(${_result}
${CMAKE_CURRENT_BINARY_DIR}/CHECK_OSX_MAX_ALLOWED_${SDK_VERSION}
SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/CMake/macOSMaxAllowed.c
COMPILE_DEFINITIONS -DSDK_VERSION_CHECK=${SDK_VERSION}
)
set(${RESULT} ${${_result}} PARENT_SCOPE)
endfunction()
# APPLE macOS setup
set(HAVE_STRCASECMP 1)
set(HAVE_DIRENT_H 1)
set(HAVE_SNPRINTF 1)
set(HAVE_VSNPRINTF 1)
set(HAVE_SCANDIR 1)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-deprecated")
if(FLTK_BACKEND_X11)
if(NOT(${CMAKE_SYSTEM_VERSION} VERSION_LESS 17.0.0)) # a.k.a. macOS version ≥ 10.13
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_LIBCPP_HAS_THREAD_API_PTHREAD")
endif(NOT(${CMAKE_SYSTEM_VERSION} VERSION_LESS 17.0.0))
else()
set(FLTK_COCOA_FRAMEWORKS "-framework Cocoa")
if (NOT (CMAKE_OSX_ARCHITECTURES STREQUAL "ppc" OR CMAKE_OSX_ARCHITECTURES STREQUAL "i386"))
CHECK_OSX_MAX_ALLOWED(150000 SDK_15_AVAILABLE) # at least SDK 15.0.0 ?
if (SDK_15_AVAILABLE)
list(APPEND FLTK_COCOA_FRAMEWORKS "-weak_framework ScreenCaptureKit") # 15.0
list(APPEND FLTK_COCOA_FRAMEWORKS "-weak_framework UniformTypeIdentifiers") # 11.0
else(SDK_15_AVAILABLE)
CHECK_OSX_MAX_ALLOWED(110000 SDK_11_AVAILABLE) # at least SDK 11.0.0 ?
if (SDK_11_AVAILABLE)
list(APPEND FLTK_COCOA_FRAMEWORKS "-weak_framework UniformTypeIdentifiers")
endif(SDK_11_AVAILABLE)
endif(SDK_15_AVAILABLE)
endif()
endif(FLTK_BACKEND_X11)
endif(APPLE)
if(WIN32)
# we do no longer define WIN32 or _WIN32 (since FLTK 1.4.0)
# ... but if we did, we'd define _WIN32 (since FLTK 1.4.0)
# add_definitions (-D_WIN32)
if(MSVC)
add_definitions (-DWIN32_LEAN_AND_MEAN)
add_definitions (-D_CRT_SECURE_NO_WARNINGS)
if(NOT MSVC_VERSION VERSION_LESS 1900) # Visual Studio 2015
add_compile_options (/utf-8) # equivalent to `/source-charset:utf-8 /execution-charset:utf-8`
endif()
set(BORDER_WIDTH 2)
endif(MSVC)
# Don't use the following code, it breaks building with MSYS2/UCRT64
# See GitHub PR #1167. Solution is to remove the entire block!
### if(MINGW AND EXISTS /mingw)
### list(APPEND CMAKE_PREFIX_PATH /mingw)
### endif(MINGW AND EXISTS /mingw)
endif(WIN32)
#######################################################################
# size of ints
include(CheckTypeSize)
CHECK_TYPE_SIZE(short SIZEOF_SHORT)
CHECK_TYPE_SIZE(int SIZEOF_INT)
CHECK_TYPE_SIZE(long SIZEOF_LONG)
CHECK_TYPE_SIZE("long long" HAVE_LONG_LONG)
if(${SIZEOF_SHORT} MATCHES "^2$")
set(U16 "unsigned short")
endif(${SIZEOF_SHORT} MATCHES "^2$")
if(${SIZEOF_INT} MATCHES "^4$")
set(U32 "unsigned")
else()
if(${SIZEOF_LONG} MATCHES "^4$")
set(U32 "unsigned long")
endif(${SIZEOF_LONG} MATCHES "^4$")
endif(${SIZEOF_INT} MATCHES "^4$")
if(${SIZEOF_INT} MATCHES "^8$")
set(U64 "unsigned")
else()
if(${SIZEOF_LONG} MATCHES "^8$")
set(U64 "unsigned long")
endif(${SIZEOF_LONG} MATCHES "^8$")
endif(${SIZEOF_INT} MATCHES "^8$")
@@ -0,0 +1,177 @@
#
# This file sets variables for common use in export.cmake and install.cmake
# Originally written by Michael Surette
#
# Copyright 1998-2024 by Bill Spitzak and others.
#
# This library is free software. Distribution and use rights are outlined in
# the file "COPYING" which should have been included with this file. If this
# file is missing or damaged, see the license at:
#
# https://www.fltk.org/COPYING.php
#
# Please see the following page on how to report bugs and issues:
#
# https://www.fltk.org/bugs.php
#
#######################################################################
set(DEBUG_VARIABLES_CMAKE 0)
if(DEBUG_VARIABLES_CMAKE)
message(STATUS "[** variables.cmake **]")
fl_debug_var(HAVE_DLSYM)
fl_debug_var(CMAKE_DL_LIBS)
fl_debug_var(CMAKE_EXE_LINKER_FLAGS)
fl_debug_var(LDFLAGS)
fl_debug_var(GLLIBS)
fl_debug_var(IMAGELIBS)
fl_debug_var(STATICIMAGELIBS)
fl_debug_var(FLTK_LDLIBS)
fl_debug_var(LIB_jpeg)
fl_debug_var(LIB_png)
fl_debug_var(LIB_zlib)
fl_debug_var(FLTK_LIBRARIES)
endif(DEBUG_VARIABLES_CMAKE)
#######################################################################
# add several libraries
# FIXME: libraries may need reordering.
# FIXME: check fontconfig conditions (only if Xft is used or ...)
if(WIN32)
list(APPEND FLTK_LDLIBS -lole32 -luuid -lcomctl32 -lws2_32 -lwinspool)
elseif(APPLE AND NOT FLTK_BACKEND_X11)
list(APPEND FLTK_LDLIBS ${FLTK_COCOA_FRAMEWORKS})
elseif(FLTK_BACKEND_WAYLAND)
foreach(_lib WLDCURSOR WLDCLIENT XKBCOMMON)
list(APPEND FLTK_LDLIBS "${${_lib}_LDFLAGS}")
endforeach()
if(FLTK_USE_DBUS AND DBUS_FOUND)
list(APPEND FLTK_LDLIBS "${DBUS_LDFLAGS}")
endif()
if(USE_SYSTEM_LIBDECOR)
list(APPEND FLTK_LDLIBS ${SYSTEM_LIBDECOR_LDFLAGS})
endif(USE_SYSTEM_LIBDECOR)
else()
list(APPEND FLTK_LDLIBS -lm)
endif(WIN32)
if(LIB_fontconfig)
list(APPEND FLTK_LDLIBS -lfontconfig)
endif(LIB_fontconfig)
# add "-ldl" or whatever is necessary according to CMake (CMAKE_DL_LIBS)
if(HAVE_DLSYM)
foreach(LIB ${CMAKE_DL_LIBS})
list(APPEND FLTK_LDLIBS "-l${LIB}")
endforeach()
endif(HAVE_DLSYM)
#######################################################################
# Set variables for fltk-config (generated from fltk-config.in)
#######################################################################
# Variables in fltk-config.in (@VAR@) are used in configure(.ac)
# and in CMake so their names and usage must be synchronized.
# CMake generates two instances of fltk-config, one that can be used
# directly in the build tree (see export.cmake) and one that is copied
# to the installation directory (see install.cmake). Common variables
# should be set here, whereas variables with different values should
# be set in install.cmake or export.cmake, respectively.
if(WIN32)
set(LDFLAGS "${CMAKE_EXE_LINKER_FLAGS} -mwindows")
endif()
set(IMAGELIBS)
set(STATICIMAGELIBS)
if(FLTK_USE_BUNDLED_JPEG)
list(APPEND IMAGELIBS -lfltk_jpeg)
list(APPEND STATICIMAGELIBS \$libdir/libfltk_jpeg.a)
else()
if(LIB_jpeg)
# fl_debug_var(LIB_jpeg)
list(APPEND IMAGELIBS ${LIB_jpeg})
list(APPEND STATICIMAGELIBS ${LIB_jpeg})
endif(LIB_jpeg)
endif(FLTK_USE_BUNDLED_JPEG)
if(FLTK_USE_BUNDLED_PNG)
list(APPEND IMAGELIBS -lfltk_png)
list(APPEND STATICIMAGELIBS \$libdir/libfltk_png.a)
else()
if(LIB_png)
# fl_debug_var(LIB_png)
list(APPEND IMAGELIBS ${LIB_png})
list(APPEND STATICIMAGELIBS ${LIB_png})
endif(LIB_png)
endif(FLTK_USE_BUNDLED_PNG)
if(FLTK_USE_BUNDLED_ZLIB)
list(APPEND IMAGELIBS -lfltk_z)
list(APPEND STATICIMAGELIBS \$libdir/libfltk_z.a)
else()
if(LIB_zlib)
list(APPEND IMAGELIBS ${LIB_zlib})
list(APPEND STATICIMAGELIBS ${LIB_zlib})
endif(LIB_zlib)
endif(FLTK_USE_BUNDLED_ZLIB)
# remove duplicates from CMake "list" variables for fltk-config
list(REMOVE_DUPLICATES GLLIBS)
list(REMOVE_DUPLICATES FLTK_LDLIBS)
list(REMOVE_DUPLICATES IMAGELIBS)
list(REMOVE_DUPLICATES STATICIMAGELIBS)
# convert CMake lists to strings with spaces for fltk-config
string(REPLACE ";" " " GLLIBS "${GLLIBS}")
string(REPLACE ";" " " LIBS "${FLTK_LDLIBS}")
string(REPLACE ";" " " IMAGELIBS "${IMAGELIBS}")
string(REPLACE ";" " " STATICIMAGELIBS "${STATICIMAGELIBS}")
#######################################################################
set(CC ${CMAKE_C_COMPILER})
set(CXX ${CMAKE_CXX_COMPILER})
set(ARCHFLAGS ${FLTK_ARCHFLAGS})
string(TOUPPER "${CMAKE_BUILD_TYPE}" BUILD_UPPER)
if(${BUILD_UPPER})
set(CFLAGS "${CMAKE_C_FLAGS_${BUILD_UPPER}} ${CFLAGS}")
endif(${BUILD_UPPER})
set(CFLAGS "${FLTK_OPTION_OPTIM} ${CMAKE_C_FLAGS} ${CFLAGS}")
foreach(arg ${FLTK_CFLAGS})
set(CFLAGS "${CFLAGS} ${arg}")
endforeach(arg ${FLTK_CFLAGS})
set(CXXFLAGS "${CFLAGS}")
if(${CMAKE_SYSTEM_NAME} STREQUAL "AIX")
set(SHAREDSUFFIX "_s")
else()
set(SHAREDSUFFIX "")
endif(${CMAKE_SYSTEM_NAME} STREQUAL "AIX")
if(DEBUG_VARIABLES_CMAKE)
message(STATUS "") # empty line
fl_debug_var(HAVE_DLSYM)
fl_debug_var(CMAKE_DL_LIBS)
fl_debug_var(CMAKE_EXE_LINKER_FLAGS)
fl_debug_var(LDFLAGS)
fl_debug_var(FLTK_LDLIBS)
fl_debug_var(LIBS)
fl_debug_var(GLLIBS)
fl_debug_var(IMAGELIBS)
fl_debug_var(STATICIMAGELIBS)
fl_debug_var(LIB_jpeg)
fl_debug_var(LIB_png)
fl_debug_var(LIB_zlib)
fl_debug_var(FLTK_LIBRARIES)
message(STATUS "[** end of variables.cmake **]")
endif(DEBUG_VARIABLES_CMAKE)
unset(DEBUG_VARIABLES_CMAKE)
+411
View File
@@ -0,0 +1,411 @@
#
# Main CMakeLists.txt to build the FLTK project using CMake (www.cmake.org)
# Originally written by Michael Surette
#
# Copyright 1998-2026 by Bill Spitzak and others.
#
# This library is free software. Distribution and use rights are outlined in
# the file "COPYING" which should have been included with this file. If this
# file is missing or damaged, see the license at:
#
# https://www.fltk.org/COPYING.php
#
# Please see the following page on how to report bugs and issues:
#
# https://www.fltk.org/bugs.php
#
#######################################################################
# Set CMake minimum version first: must be set before `project()`
#######################################################################
# Minimum CMake version required by FLTK 1.4
# Note 1: Linking against OBJECT libraries (fluid, test) requires
# at least CMake 3.12.0
# Note 2: Used in fluid since 05/2023,
# used for Windows (MSVC) shared lib builds much earlier
# Note 3: More modern CMake features require 3.13...3.15 (Nov 2023)
cmake_minimum_required(VERSION 3.15.0 FATAL_ERROR)
# Since CMake 3.4: enable symbol export from all executable targets
# cmake_policy(SET CMP0065 OLD)
#######################################################################
# define the FLTK project and version
#######################################################################
project(FLTK VERSION 1.4.5)
#######################################################################
# include macro and function definitions for general usage
#######################################################################
include(CMake/fl_debug_var.cmake)
include(CMake/fl_debug_pkg.cmake)
include(CMake/fl_add_library.cmake)
# right now we don't use compatibility functions
# include(CMake/compatibility.cmake)
if(0)
fl_debug_var(FLTK_VERSION_MAJOR)
fl_debug_var(FLTK_VERSION_MINOR)
fl_debug_var(FLTK_VERSION_PATCH)
fl_debug_var(FLTK_VERSION)
fl_debug_var(CMAKE_VERSION)
endif()
# Set FLTK_VERSION in the cache so user projects can access it,
# for instance if FLTK is built as a subproject (FetchContent)
set(FLTK_VERSION ${FLTK_VERSION} CACHE STRING "FLTK version" FORCE)
#######################################################################
# basic setup
#######################################################################
include(CMake/setup.cmake)
#######################################################################
# check for headers, libraries and functions
#######################################################################
include(CMake/resources.cmake)
#######################################################################
# options
#######################################################################
include(CMake/options.cmake)
#######################################################################
# Disable automatic code signing on macOS when using Xcode.
# This *MUST* be done after including CMake/options.cmake.
# Users can still enable code signing if they have a valid certificate.
# Details about code signing are beyond the scope of this document.
#######################################################################
# FIXME: some of the conditions below may be redundant, and the code
# below should be improved in a later version.
#######################################################################
if(APPLE) # AND NOT FLTK_BACKEND_X11 AND CMAKE_GENERATOR STREQUAL "Xcode")
if(NOT DEFINED CMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_ALLOWED)
set(CMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_ALLOWED OFF CACHE BOOL
"Allow Code Signing when using Xcode")
endif()
endif()
#######################################################################
# print (debug) several build variables and options
#######################################################################
set(debug_build 0) # set to 1 to show debug info
if(debug_build)
message("")
message(STATUS "${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt: set 'debug_build' to 0 to disable the following info:")
fl_debug_var(WIN32)
fl_debug_var(MINGW)
fl_debug_var(CYGWIN)
fl_debug_var(MSVC)
fl_debug_var(UNIX)
fl_debug_var(APPLE)
fl_debug_var(CMAKE_BUILD_TYPE)
fl_debug_var(CMAKE_SIZEOF_VOID_P)
fl_debug_var(FLTK_OPTION_OPTIM)
fl_debug_var(CMAKE_C_FLAGS)
fl_debug_var(CMAKE_CXX_FLAGS)
fl_debug_var(CMAKE_EXE_LINKER_FLAGS)
message(STATUS "${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt: end of debug_build info.")
endif(debug_build)
unset(debug_build)
#######################################################################
# Build a dummy ("empty") Cairo library for backwards compatibility.
# This should be removed in the next minor release after 1.4.x, likely
# in FLTK 1.5.0.
#######################################################################
if(FLTK_HAVE_CAIRO)
add_subdirectory(cairo)
endif()
#######################################################################
# build the standard FLTK libraries
#######################################################################
add_subdirectory(src)
#######################################################################
# MSVC only: build a special object library for shared libs
#######################################################################
# When linking programs against the shared FLTK libraries we need to
# compile and link with fl_call_main.c, but this must not be compiled
# with macro FL_DLL, whereas all the other source file(s) *must* be
# compiled with macro FL_DLL to link against the shared libs.
# The latter is ensured by CMake properties of the shared libraries.
#
# Solution: build an extra object library with just this one file and
# link all the "shared" executables additionally against this object
# library to resolve the symbol 'WinMain()'.
#
# The object library is called 'call_main' and is available for fluid,
# fltk-options, and all test programs that link against shared FLTK
# libraries when using MSVC (Microsoft Visual Studio).
#
# ;-) I *love* Visual Studio ;-)
if(FLTK_BUILD_SHARED_LIBS AND MSVC)
add_library(call_main OBJECT EXCLUDE_FROM_ALL src/fl_call_main.c)
endif()
#######################################################################
# set CMAKE_INSTALL_RPATH for shared libraries on macOS before
# building executables. This assumes standard install locations like
# - prefix/bin executable (path part 2) or bundle (path part 3)
# - prefix/lib shared library
# These RPATH settings are effective when executables and shared libs
# are *installed*, they don't affect executables in the build folder.
# Affected executables (when linked against the shared FLTK libs):
# - fluid
# - fltk-options
# - test/* (e.g. games)
# Note: Path part 1 ("@loader_path") is used to find shared libraries
# in the same folder as the executable file (everywhere).
#######################################################################
if(FLTK_BUILD_SHARED_LIBS AND APPLE AND NOT FLTK_BACKEND_X11)
set(CMAKE_INSTALL_RPATH
@loader_path
@loader_path/../lib
@loader_path/../../../../lib)
endif()
#######################################################################
# build fluid (optional)
#######################################################################
set(FLTK_FLUID_EXECUTABLE "")
if(FLTK_BUILD_FLUID)
add_subdirectory(fluid)
endif(FLTK_BUILD_FLUID)
# Set FLTK_FLUID_EXECUTABLE in the cache for user projects.
# This can be used if FLTK has been built as a subproject.
set(FLTK_FLUID_EXECUTABLE
"${FLTK_FLUID_EXECUTABLE}" CACHE STRING
"FLTK's 'fluid' executable")
#######################################################################
# build fltk-options
#######################################################################
if(FLTK_BUILD_FLTK_OPTIONS)
add_subdirectory(fltk-options)
endif(FLTK_BUILD_FLTK_OPTIONS)
#######################################################################
# variables shared by export and install
# export.cmake creates configuration files for direct use in a built but uninstalled FLTK
# install.cmake creates these files for an installed FLTK
# these two would only differ in paths, so common variables are set here
#######################################################################
include(CMake/variables.cmake)
#######################################################################
# final config and export
#######################################################################
include(CMake/export.cmake)
configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/fl_config.cmake.in
${CMAKE_CURRENT_BINARY_DIR}/FL/fl_config.h
@ONLY
)
#######################################################################
# options to build test/demo and example programs
#######################################################################
if(FLTK_BUILD_TEST)
add_subdirectory(test)
endif(FLTK_BUILD_TEST)
if(FLTK_BUILD_EXAMPLES)
add_subdirectory(examples)
endif(FLTK_BUILD_EXAMPLES)
#######################################################################
# Create and install version config file 'FLTKConfigVersion.cmake'
#######################################################################
include(CMakePackageConfigHelpers)
write_basic_package_version_file(FLTKConfigVersion.cmake
# [VERSION requiredVersion] # defaults to project version
COMPATIBILITY SameMinorVersion
)
install(FILES
${CMAKE_CURRENT_BINARY_DIR}/FLTKConfigVersion.cmake
DESTINATION ${FLTK_CONFIG_PATH}
)
#######################################################################
# installation
#######################################################################
include(CMake/install.cmake)
#######################################################################
# Generate Library Export Headers *** EXPERIMENTAL *** WIP ***
#######################################################################
# Enable (1) or disable (0) generation of experimental headers (WIP)
set(GENERATE_EXPORT_HEADERS 0)
if(FLTK_BUILD_SHARED_LIBS AND GENERATE_EXPORT_HEADERS)
include(GenerateExportHeader)
generate_export_header(fltk_SHARED
BASE_NAME fl
EXPORT_FILE_NAME FL/fltk_export.h
STATIC_DEFINE FL_STATIC_LIB
)
if(NOT MSVC)
# Visual Studio builds only one shared lib (DLL)
generate_export_header(fltk_images_SHARED
BASE_NAME fl_images
EXPORT_FILE_NAME FL/fltk_images_export.h
STATIC_DEFINE FL_STATIC_LIB
)
generate_export_header(fltk_forms_SHARED
BASE_NAME fl_forms
EXPORT_FILE_NAME FL/fltk_forms_export.h
STATIC_DEFINE FL_STATIC_LIB
)
generate_export_header(fltk_gl_SHARED
BASE_NAME fl_gl
EXPORT_FILE_NAME FL/fltk_gl_export.h
STATIC_DEFINE FL_STATIC_LIB
)
endif(NOT MSVC)
endif(FLTK_BUILD_SHARED_LIBS AND GENERATE_EXPORT_HEADERS)
#######################################################################
# Output Build Configuration Summary
#######################################################################
include(FeatureSummary) # CMake Feature Summary
include(CMake/fl_summary.cmake) # special FLTK summary macros
# CMake Feature Summary
message("")
set(_descr "${PROJECT_NAME} ${FLTK_VERSION} generated by CMake ${CMAKE_VERSION}")
feature_summary(WHAT ALL DESCRIPTION "Configuration Summary for ${_descr} --\n")
# FLTK specific build configuration and options (see macros in fl_summary.cmake)
# "title" dir build (bool) option to set
fl_summary_build("Static libraries" lib TRUE "n/a")
fl_summary_build("Shared libraries" lib FLTK_BUILD_SHARED_LIBS FLTK_BUILD_SHARED_LIBS)
fl_summary_build("The forms library" lib FLTK_BUILD_FORMS FLTK_BUILD_FORMS)
fl_summary_build("The OpenGL library" lib FLTK_USE_GL FLTK_BUILD_GL)
fl_summary_build("fluid" bin FLTK_BUILD_FLUID FLTK_BUILD_FLUID)
fl_summary_build("fltk-options" bin FLTK_BUILD_FLTK_OPTIONS FLTK_BUILD_FLTK_OPTIONS)
fl_summary_build("Test programs" bin/test FLTK_BUILD_TEST FLTK_BUILD_TEST)
fl_summary_build("Example programs" bin/examples FLTK_BUILD_EXAMPLES FLTK_BUILD_EXAMPLES)
message(STATUS "")
if(CMAKE_BUILD_TYPE STREQUAL "")
fl_summary("Build configuration" "<unspecified>")
else()
fl_summary("Build configuration" "${CMAKE_BUILD_TYPE}")
endif()
fl_summary("Installation prefix" "${CMAKE_INSTALL_PREFIX}")
message("")
# "title" name system library if used
fl_summary_image("Bundled Libraries" JPEG LIB_jpeg)
fl_summary_image("" PNG LIB_png)
fl_summary_image("" ZLIB LIB_zlib)
if(FLTK_BACKEND_WAYLAND)
if(USE_SYSTEM_LIBDECOR)
fl_summary("" "Libdecor = System: ${SYSTEM_LIBDECOR_LINK_LIBRARIES}")
else()
fl_summary("" "Libdecor = Bundled")
endif()
fl_summary_yn("Use DBUS" DBUS_FOUND)
endif(FLTK_BACKEND_WAYLAND)
message("")
if(UNIX AND NOT (APPLE AND NOT FLTK_BACKEND_X11))
if(FLTK_BACKEND_WAYLAND)
if(FLTK_BACKEND_X11)
fl_summary("Use Wayland" "Yes (can also run as X11 client)")
else()
fl_summary("Use Wayland" "Yes (cannot run as X11 client)")
endif(FLTK_BACKEND_X11)
else()
fl_summary("Use Wayland" "No (X11 is used)")
endif(FLTK_BACKEND_WAYLAND)
fl_summary_yn("All drawing uses Cairo" FLTK_USE_CAIRO)
fl_summary_yn("Use Pango" USE_PANGO)
if(NOT USE_PANGO)
fl_summary_yn("Use Xft" USE_XFT)
endif()
endif()
set(title "Fl_Cairo_Window support")
if(FLTK_HAVE_CAIROEXT)
fl_summary("${title}" "Yes (extended)")
elseif(FLTK_HAVE_CAIRO)
fl_summary("${title}" "Yes (standard)")
else()
fl_summary("${title}" "No")
endif()
fl_summary_yn("Use std::" FLTK_USE_STD)
message("")
message(STATUS "End of Configuration Summary --\n")
# optional info for "modern CMake"
if(0) # debug built library and fluid targets
message(STATUS "------------------------ TARGETS ------------------------")
foreach(tgt fltk fluid fluid-cmd options options-cmd images gl forms cairo jpeg png z)
if(TARGET fltk::${tgt})
message("Target: fltk::${tgt}")
# fl_debug_target(fltk::${tgt})
endif()
if(TARGET fltk::${tgt}-shared)
message("Target: fltk::${tgt}-shared")
# fl_debug_target(fltk::${tgt}-shared)
endif()
endforeach()
message(STATUS "---------------------------------------------------------")
endif()
+530
View File
@@ -0,0 +1,530 @@
FLTK License
December 11, 2001
The FLTK library and included programs are provided under the terms
of the GNU Library General Public License (LGPL) with the following
exceptions:
1. Modifications to the FLTK configure script, config
header file, and makefiles by themselves to support
a specific platform do not constitute a modified or
derivative work.
The authors do request that such modifications be
contributed to the FLTK project - send all contributions
through the "Software Trouble Report" on the following page:
https://www.fltk.org/bugs.php
2. Widgets that are subclassed from FLTK widgets do not
constitute a derivative work.
3. Static linking of applications and widgets to the
FLTK library does not constitute a derivative work
and does not require the author to provide source
code for the application or widget, use the shared
FLTK libraries, or link their applications or
widgets against a user-supplied version of FLTK.
If you link the application or widget to a modified
version of FLTK, then the changes to FLTK must be
provided under the terms of the LGPL in sections
1, 2, and 4.
4. You do not have to provide a copy of the FLTK license
with programs that are linked to the FLTK library, nor
do you have to identify the FLTK license in your
program or documentation as required by section 6
of the LGPL.
However, programs must still identify their use of FLTK.
The following example statement can be included in user
documentation to satisfy this requirement:
[program/widget] is based in part on the work of
the FLTK project (https://www.fltk.org).
-----------------------------------------------------------------------
GNU LIBRARY GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1991 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
[This is the first released version of the library GPL. It is
numbered 2 because it goes with version 2 of the ordinary GPL.]
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
Licenses are intended to guarantee your freedom to share and change
free software--to make sure the software is free for all its users.
This license, the Library General Public License, applies to some
specially designated Free Software Foundation software, and to any
other libraries whose authors decide to use it. You can use it for
your libraries, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if
you distribute copies of the library, or if you modify it.
For example, if you distribute copies of the library, whether gratis
or for a fee, you must give the recipients all the rights that we gave
you. You must make sure that they, too, receive or can get the source
code. If you link a program with the library, you must provide
complete object files to the recipients so that they can relink them
with the library, after making changes to the library and recompiling
it. And you must show them these terms so they know their rights.
Our method of protecting your rights has two steps: (1) copyright
the library, and (2) offer you this license which gives you legal
permission to copy, distribute and/or modify the library.
Also, for each distributor's protection, we want to make certain
that everyone understands that there is no warranty for this free
library. If the library is modified by someone else and passed on, we
want its recipients to know that what they have is not the original
version, so that any problems introduced by others will not reflect on
the original authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that companies distributing free
software will individually obtain patent licenses, thus in effect
transforming the program into proprietary software. To prevent this,
we have made it clear that any patent must be licensed for everyone's
free use or not licensed at all.
Most GNU software, including some libraries, is covered by the ordinary
GNU General Public License, which was designed for utility programs. This
license, the GNU Library General Public License, applies to certain
designated libraries. This license is quite different from the ordinary
one; be sure to read it in full, and don't assume that anything in it is
the same as in the ordinary license.
The reason we have a separate public license for some libraries is that
they blur the distinction we usually make between modifying or adding to a
program and simply using it. Linking a program with a library, without
changing the library, is in some sense simply using the library, and is
analogous to running a utility program or application program. However, in
a textual and legal sense, the linked executable is a combined work, a
derivative of the original library, and the ordinary General Public License
treats it as such.
Because of this blurred distinction, using the ordinary General
Public License for libraries did not effectively promote software
sharing, because most developers did not use the libraries. We
concluded that weaker conditions might promote sharing better.
However, unrestricted linking of non-free programs would deprive the
users of those programs of all benefit from the free status of the
libraries themselves. This Library General Public License is intended to
permit developers of non-free programs to use free libraries, while
preserving your freedom as a user of such programs to change the free
libraries that are incorporated in them. (We have not seen how to achieve
this as regards changes in header files, but we have achieved it as regards
changes in the actual functions of the Library.) The hope is that this
will lead to faster development of free libraries.
The precise terms and conditions for copying, distribution and
modification follow. Pay close attention to the difference between a
"work based on the library" and a "work that uses the library". The
former contains code derived from the library, while the latter only
works together with the library.
Note that it is possible for a library to be covered by the ordinary
General Public License rather than by this special one.
GNU LIBRARY GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License Agreement applies to any software library which
contains a notice placed by the copyright holder or other authorized
party saying it may be distributed under the terms of this Library
General Public License (also called "this License"). Each licensee is
addressed as "you".
A "library" means a collection of software functions and/or data
prepared so as to be conveniently linked with application programs
(which use some of those functions and data) to form executables.
The "Library", below, refers to any such software library or work
which has been distributed under these terms. A "work based on the
Library" means either the Library or any derivative work under
copyright law: that is to say, a work containing the Library or a
portion of it, either verbatim or with modifications and/or translated
straightforwardly into another language. (Hereinafter, translation is
included without limitation in the term "modification".)
"Source code" for a work means the preferred form of the work for
making modifications to it. For a library, complete source code means
all the source code for all modules it contains, plus any associated
interface definition files, plus the scripts used to control compilation
and installation of the library.
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running a program using the Library is not restricted, and output from
such a program is covered only if its contents constitute a work based
on the Library (independent of the use of the Library in a tool for
writing it). Whether that is true depends on what the Library does
and what the program that uses the Library does.
1. You may copy and distribute verbatim copies of the Library's
complete source code as you receive it, in any medium, provided that
you conspicuously and appropriately publish on each copy an
appropriate copyright notice and disclaimer of warranty; keep intact
all the notices that refer to this License and to the absence of any
warranty; and distribute a copy of this License along with the
Library.
You may charge a fee for the physical act of transferring a copy,
and you may at your option offer warranty protection in exchange for a
fee.
2. You may modify your copy or copies of the Library or any portion
of it, thus forming a work based on the Library, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) The modified work must itself be a software library.
b) You must cause the files modified to carry prominent notices
stating that you changed the files and the date of any change.
c) You must cause the whole of the work to be licensed at no
charge to all third parties under the terms of this License.
d) If a facility in the modified Library refers to a function or a
table of data to be supplied by an application program that uses
the facility, other than as an argument passed when the facility
is invoked, then you must make a good faith effort to ensure that,
in the event an application does not supply such function or
table, the facility still operates, and performs whatever part of
its purpose remains meaningful.
(For example, a function in a library to compute square roots has
a purpose that is entirely well-defined independent of the
application. Therefore, Subsection 2d requires that any
application-supplied function or table used by this function must
be optional: if the application does not supply it, the square
root function must still compute square roots.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Library,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Library, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote
it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Library.
In addition, mere aggregation of another work not based on the Library
with the Library (or with a work based on the Library) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may opt to apply the terms of the ordinary GNU General Public
License instead of this License to a given copy of the Library. To do
this, you must alter all the notices that refer to this License, so
that they refer to the ordinary GNU General Public License, version 2,
instead of to this License. (If a newer version than version 2 of the
ordinary GNU General Public License has appeared, then you can specify
that version instead if you wish.) Do not make any other change in
these notices.
Once this change is made in a given copy, it is irreversible for
that copy, so the ordinary GNU General Public License applies to all
subsequent copies and derivative works made from that copy.
This option is useful when you wish to copy part of the code of
the Library into a program that is not a library.
4. You may copy and distribute the Library (or a portion or
derivative of it, under Section 2) in object code or executable form
under the terms of Sections 1 and 2 above provided that you accompany
it with the complete corresponding machine-readable source code, which
must be distributed under the terms of Sections 1 and 2 above on a
medium customarily used for software interchange.
If distribution of object code is made by offering access to copy
from a designated place, then offering equivalent access to copy the
source code from the same place satisfies the requirement to
distribute the source code, even though third parties are not
compelled to copy the source along with the object code.
5. A program that contains no derivative of any portion of the
Library, but is designed to work with the Library by being compiled or
linked with it, is called a "work that uses the Library". Such a
work, in isolation, is not a derivative work of the Library, and
therefore falls outside the scope of this License.
However, linking a "work that uses the Library" with the Library
creates an executable that is a derivative of the Library (because it
contains portions of the Library), rather than a "work that uses the
library". The executable is therefore covered by this License.
Section 6 states terms for distribution of such executables.
When a "work that uses the Library" uses material from a header file
that is part of the Library, the object code for the work may be a
derivative work of the Library even though the source code is not.
Whether this is true is especially significant if the work can be
linked without the Library, or if the work is itself a library. The
threshold for this to be true is not precisely defined by law.
If such an object file uses only numerical parameters, data
structure layouts and accessors, and small macros and small inline
functions (ten lines or less in length), then the use of the object
file is unrestricted, regardless of whether it is legally a derivative
work. (Executables containing this object code plus portions of the
Library will still fall under Section 6.)
Otherwise, if the work is a derivative of the Library, you may
distribute the object code for the work under the terms of Section 6.
Any executables containing that work also fall under Section 6,
whether or not they are linked directly with the Library itself.
6. As an exception to the Sections above, you may also compile or
link a "work that uses the Library" with the Library to produce a
work containing portions of the Library, and distribute that work
under terms of your choice, provided that the terms permit
modification of the work for the customer's own use and reverse
engineering for debugging such modifications.
You must give prominent notice with each copy of the work that the
Library is used in it and that the Library and its use are covered by
this License. You must supply a copy of this License. If the work
during execution displays copyright notices, you must include the
copyright notice for the Library among them, as well as a reference
directing the user to the copy of this License. Also, you must do one
of these things:
a) Accompany the work with the complete corresponding
machine-readable source code for the Library including whatever
changes were used in the work (which must be distributed under
Sections 1 and 2 above); and, if the work is an executable linked
with the Library, with the complete machine-readable "work that
uses the Library", as object code and/or source code, so that the
user can modify the Library and then relink to produce a modified
executable containing the modified Library. (It is understood
that the user who changes the contents of definitions files in the
Library will not necessarily be able to recompile the application
to use the modified definitions.)
b) Accompany the work with a written offer, valid for at
least three years, to give the same user the materials
specified in Subsection 6a, above, for a charge no more
than the cost of performing this distribution.
c) If distribution of the work is made by offering access to copy
from a designated place, offer equivalent access to copy the above
specified materials from the same place.
d) Verify that the user has already received a copy of these
materials or that you have already sent this user a copy.
For an executable, the required form of the "work that uses the
Library" must include any data and utility programs needed for
reproducing the executable from it. However, as a special exception,
the source code distributed need not include anything that is normally
distributed (in either source or binary form) with the major
components (compiler, kernel, and so on) of the operating system on
which the executable runs, unless that component itself accompanies
the executable.
It may happen that this requirement contradicts the license
restrictions of other proprietary libraries that do not normally
accompany the operating system. Such a contradiction means you cannot
use both them and the Library together in an executable that you
distribute.
7. You may place library facilities that are a work based on the
Library side-by-side in a single library together with other library
facilities not covered by this License, and distribute such a combined
library, provided that the separate distribution of the work based on
the Library and of the other library facilities is otherwise
permitted, and provided that you do these two things:
a) Accompany the combined library with a copy of the same work
based on the Library, uncombined with any other library
facilities. This must be distributed under the terms of the
Sections above.
b) Give prominent notice with the combined library of the fact
that part of it is a work based on the Library, and explaining
where to find the accompanying uncombined form of the same work.
8. You may not copy, modify, sublicense, link with, or distribute
the Library except as expressly provided under this License. Any
attempt otherwise to copy, modify, sublicense, link with, or
distribute the Library is void, and will automatically terminate your
rights under this License. However, parties who have received copies,
or rights, from you under this License will not have their licenses
terminated so long as such parties remain in full compliance.
9. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Library or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Library (or any work based on the
Library), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Library or works based on it.
10. Each time you redistribute the Library (or any work based on the
Library), the recipient automatically receives a license from the
original licensor to copy, distribute, link with or modify the Library
subject to these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
11. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Library at all. For example, if a patent
license would not permit royalty-free redistribution of the Library by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Library.
If any portion of this section is held invalid or unenforceable under any
particular circumstance, the balance of the section is intended to apply,
and the section as a whole is intended to apply in other circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
12. If the distribution and/or use of the Library is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Library under this License may add
an explicit geographical distribution limitation excluding those countries,
so that distribution is permitted only in or among countries not thus
excluded. In such case, this License incorporates the limitation as if
written in the body of this License.
13. The Free Software Foundation may publish revised and/or new
versions of the Library General Public License from time to time.
Such new versions will be similar in spirit to the present version,
but may differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the Library
specifies a version number of this License which applies to it and
"any later version", you have the option of following the terms and
conditions either of that version or of any later version published by
the Free Software Foundation. If the Library does not specify a
license version number, you may choose any version ever published by
the Free Software Foundation.
14. If you wish to incorporate parts of the Library into other free
programs whose distribution conditions are incompatible with these,
write to the author to ask for permission. For software which is
copyrighted by the Free Software Foundation, write to the Free
Software Foundation; we sometimes make exceptions for this. Our
decision will be guided by the two goals of preserving the free status
of all derivatives of our free software and of promoting the sharing
and reuse of software generally.
NO WARRANTY
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
DAMAGES.
END OF TERMS AND CONDITIONS
Appendix: How to Apply These Terms to Your New Libraries
If you develop a new library, and you want it to be of the greatest
possible use to the public, we recommend making it free software that
everyone can redistribute and change. You can do so by permitting
redistribution under these terms (or, alternatively, under the terms of the
ordinary General Public License).
To apply these terms, attach the following notices to the library. It is
safest to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least the
"copyright" line and a pointer to where the full notice is found.
<one line to give the library's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with this library; if not, write to the Free
Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
Also add information on how to contact you by electronic and paper mail.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the library, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the
library `Frob' (a library for tweaking knobs) written by James Random Hacker.
<signature of Ty Coon>, 1 April 1990
Ty Coon, President of Vice
That's all there is to it!
+71
View File
@@ -0,0 +1,71 @@
CREDITS - Fast Light Tool Kit (FLTK)
-------------------------------------
This file lists the people responsible for the toolkit you are
now using. If you've been looking for your name in lights
but we've forgotten you here, please use the report on the
following page, and we'll update this file accordingly:
https://www.fltk.org/bugs.php
CORE DEVELOPERS
The following people do the day-to-day development of FLTK:
Greg Ercolano
Manolo Gouy
Ian MacArthur
Matthias Melcher
Albrecht Schlosser
These people have previously been active developers of FLTK:
Fabien Costantini
Craig P. Earls
Curtis Edwards
Gustavo Hime
Talbot Hughes
Lauri Kasanen
Robert Kesterson
Pierre Ossman
James Dean Palmer
Vincent Penne
Bill Spitzak
Michael Sweet
Carl Thompson
Nafees Bin Zafar
OTHER CONTRIBUTORS
The following people have contributed fixes or enhancements to FLTK:
Laszlo Z. Antal (LZA)
Teun Burgers
Paul Chambers
Stephen Davies
Yuri D'Elia
Domingo Alvarez Duarte
Yuri Fedorchenko
George Garvey
Duncan Gibson
Daniel Harding
Mikael Hultgren
Stuart Levy
Jean-Marc Lienher (OksiD)
Howard Lightstone
Mike Lindner
Alexander Mai
Alexander Rabi
James Roth
Ivan Nieto (Mr.Satan)
Jamie Snape
Andrea Suatoni
Michael Surette
Paul Sydney
Aaron Ucko
Emanuele Vicentini
Josef Vitu
Jim Wilson
Ken Yarnall
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
+67
View File
@@ -0,0 +1,67 @@
//
// Adjuster widget header file for the Fast Light Tool Kit (FLTK).
//
// Copyright 1998-2010 by Bill Spitzak and others.
//
// This library is free software. Distribution and use rights are outlined in
// the file "COPYING" which should have been included with this file. If this
// file is missing or damaged, see the license at:
//
// https://www.fltk.org/COPYING.php
//
// Please see the following page on how to report bugs and issues:
//
// https://www.fltk.org/bugs.php
//
/* \file
Fl_Adjuster widget . */
// 3-button "slider", made for Nuke
#ifndef Fl_Adjuster_H
#define Fl_Adjuster_H
#ifndef Fl_Valuator_H
#include "Fl_Valuator.H"
#endif
/**
The Fl_Adjuster widget was stolen from Prisms, and has proven
to be very useful for values that need a large dynamic range.
\image html adjuster1.png
\image latex adjuster1.png "Fl_Adjuster" width=4cm
<P>When you press a button and drag to the right the value increases.
When you drag to the left it decreases. The largest button adjusts by
100 * step(), the next by 10 * step() and that
smallest button by step(). Clicking on the buttons
increments by 10 times the amount dragging by a pixel does. Shift +
click decrements by 10 times the amount.
*/
class FL_EXPORT Fl_Adjuster : public Fl_Valuator {
int drag;
int ix;
int soft_;
protected:
void draw() FL_OVERRIDE;
int handle(int) FL_OVERRIDE;
void value_damage() FL_OVERRIDE;
public:
Fl_Adjuster(int X,int Y,int W,int H,const char *l=0);
/**
If "soft" is turned on, the user is allowed to drag the value outside
the range. If they drag the value to one of the ends, let go, then
grab again and continue to drag, they can get to any value. Default is
one.
*/
void soft(int s) {soft_ = s;}
/**
If "soft" is turned on, the user is allowed to drag the value outside
the range. If they drag the value to one of the ends, let go, then
grab again and continue to drag, they can get to any value. Default is
one.
*/
int soft() const {return soft_;}
};
#endif
@@ -0,0 +1,185 @@
//
// Fl_Anim_GIF_Image class header for the Fast Light Tool Kit (FLTK).
//
// Copyright 2016-2023 by Christian Grabner <wcout@gmx.net>.
//
// This library is free software. Distribution and use rights are outlined in
// the file "COPYING" which should have been included with this file. If this
// file is missing or damaged, see the license at:
//
// https://www.fltk.org/COPYING.php
//
// Please see the following page on how to report bugs and issues:
//
// https://www.fltk.org/bugs.php
//
#ifndef Fl_Anim_Gif_Image_H
#define Fl_Anim_Gif_Image_H
// forward declarations
class Fl_Image;
class Fl_Widget;
#include <FL/Fl_GIF_Image.H>
// Load and display animated GIF images
class FL_EXPORT Fl_Anim_GIF_Image : public Fl_GIF_Image {
class FrameInfo; // internal helper class
public:
/**
When opening an Fl_Anim_GIF_Image there are some options
that can be passed in a `flags` value.
*/
enum Flags {
/**
This flag indicates to the loader that it should not start
the animation immediately after successful load, which is
the default.
It can be started later using the \ref start() method.
*/
DONT_START = 1,
/**
This flag indicates to the loader that it should not
resize the canvas widget of the animation to the dimensions
of the animation, which is the default.
Needed for special use cases.
*/
DONT_RESIZE_CANVAS = 2,
/**
This flag indicates to the loader that it should not
set the animation as \ref image() member of the canvas widget,
which is the default.
Needed for special use cases.
*/
DONT_SET_AS_IMAGE = 4,
/**
Often frames change just a small area of the animation canvas.
This flag indicates to the loader to try using less memory
by storing frame data not as canvas-sized images but use the
sizes defined in the GIF file.
The drawbacks are higher cpu usage during playback and maybe
minor artifacts when resized.
*/
OPTIMIZE_MEMORY = 8,
/**
This flag can be used to print informations about the
decoding process to the console.
*/
LOG_FLAG = 64,
/**
This flag can be used to print even more informations about
the decoding process to the console.
*/
DEBUG_FLAG = 128
};
// -- constructors and destructor
Fl_Anim_GIF_Image(const char *filename, Fl_Widget *canvas = 0, unsigned short flags = 0);
Fl_Anim_GIF_Image(const char* imagename, const unsigned char *data,
const size_t length, Fl_Widget *canvas = 0,
unsigned short flags = 0);
Fl_Anim_GIF_Image();
~Fl_Anim_GIF_Image() FL_OVERRIDE;
// -- file handling
bool load(const char *name, const unsigned char *imgdata=NULL, size_t imglength=0);
bool valid() const;
// -- getters and setters
void frame_uncache(bool uncache);
bool frame_uncache() const;
double delay(int frame_) const;
void delay(int frame, double delay);
void canvas(Fl_Widget *canvas, unsigned short flags = 0);
Fl_Widget *canvas() const;
int canvas_w() const;
int canvas_h() const;
bool is_animated() const;
const char *name() const;
void speed(double speed);
double speed() const;
// -- animation
int frames() const;
void frame(int frame);
int frame() const;
Fl_Image *image() const;
Fl_Image *image(int frame) const;
bool start();
bool stop();
bool next();
/** Return if the animation is currently running or stopped.
\return true if the animation is running
*/
bool playing() const { return valid() && Fl::has_timeout(cb_animate, (void *)this); }
// -- image data
Fl_Anim_GIF_Image& resize(int w, int h);
Fl_Anim_GIF_Image& resize(double scale);
int frame_x(int frame) const;
int frame_y(int frame) const;
int frame_w(int frame) const;
int frame_h(int frame) const;
// -- overridden methods
void color_average(Fl_Color c, float i) FL_OVERRIDE;
Fl_Image *copy(int W, int H) const FL_OVERRIDE;
Fl_Image *copy() const { return Fl_Pixmap::copy(); }
void desaturate() FL_OVERRIDE;
void draw(int x, int y, int w, int h, int cx = 0, int cy = 0) FL_OVERRIDE;
void uncache() FL_OVERRIDE;
// -- debugging and logging
int debug() const;
// -- static methods
static int frame_count(const char *name, const unsigned char *imgdata = NULL, size_t imglength = 0);
/**
The loop flag can be used to (dis-)allow loop count.
If set (which is the default), the animation will be
stopped after the number of repeats specified in the
GIF file (typically this count is set to 'forever' anyway).
If cleared the animation will always be 'forever',
regardless of what is specified in the GIF file.
*/
static bool loop;
/**
The min_delay value can be used to set a minimum value
for the frame delay for playback. This is to prevent
CPU hogs caused by images with very low delay rates.
This is a global value for all Fl_Anim_GIF_Image objects.
*/
static double min_delay;
protected:
bool next_frame();
void clear_frames();
void set_frame(int frame);
static void cb_animate(void *d);
void scale_frame();
void set_frame();
void on_frame_data(Fl_GIF_Image::GIF_FRAME &f) FL_OVERRIDE;
void on_extension_data(Fl_GIF_Image::GIF_FRAME &f) FL_OVERRIDE;
private:
char *name_;
unsigned short flags_;
Fl_Widget *canvas_;
bool uncache_;
bool valid_;
int frame_; // current frame
double speed_;
FrameInfo *fi_;
};
#endif // Fl_Anim_Gif_Image_H
@@ -0,0 +1,41 @@
//
// BMP image header file for the Fast Light Tool Kit (FLTK).
//
// Copyright 1998-2022 by Bill Spitzak and others.
//
// This library is free software. Distribution and use rights are outlined in
// the file "COPYING" which should have been included with this file. If this
// file is missing or damaged, see the license at:
//
// https://www.fltk.org/COPYING.php
//
// Please see the following page on how to report bugs and issues:
//
// https://www.fltk.org/bugs.php
//
/* \file
Fl_BMP_Image widget . */
#ifndef Fl_BMP_Image_H
#define Fl_BMP_Image_H
# include "Fl_Image.H"
/**
The Fl_BMP_Image class supports loading, caching,
and drawing of Windows Bitmap (BMP) image files.
*/
class FL_EXPORT Fl_BMP_Image : public Fl_RGB_Image {
public:
Fl_BMP_Image(const char* filename);
Fl_BMP_Image(const char* imagename, const unsigned char *data, const long length = -1);
protected:
void load_bmp_(class Fl_Image_Reader &rdr, int ico_height = 0, int ico_width = 0);
};
#endif
+68
View File
@@ -0,0 +1,68 @@
//
// Bitmap header file for the Fast Light Tool Kit (FLTK).
//
// Copyright 1998-2017 by Bill Spitzak and others.
//
// This library is free software. Distribution and use rights are outlined in
// the file "COPYING" which should have been included with this file. If this
// file is missing or damaged, see the license at:
//
// https://www.fltk.org/COPYING.php
//
// Please see the following page on how to report bugs and issues:
//
// https://www.fltk.org/bugs.php
//
/* \file
Fl_Bitmap widget . */
#ifndef Fl_Bitmap_H
#define Fl_Bitmap_H
#include "Fl_Image.H"
#include "Fl_Widget.H" // for fl_uintptr_t
class Fl_Widget;
struct Fl_Menu_Item;
/**
The Fl_Bitmap class supports caching and drawing of mono-color
(bitmap) images. Images are drawn using the current color.
*/
class FL_EXPORT Fl_Bitmap : public Fl_Image {
friend class Fl_Graphics_Driver;
public:
/** pointer to raw bitmap data */
const uchar *array;
/** Non-zero if array points to bitmap data allocated internally */
int alloc_array;
private:
/** for internal use */
fl_uintptr_t id_;
int cache_w_, cache_h_; // size of bitmap when cached
public:
/** The constructors create a new bitmap from the specified bitmap data.
\see Fl_Bitmap(const uchar *bits, int bits_length, int W, int H) */
Fl_Bitmap(const uchar *bits, int W, int H) :
Fl_Image(W,H,0), array(bits), alloc_array(0), id_(0), cache_w_(0),cache_h_(0) {data((const char **)&array, 1);}
/** The constructors create a new bitmap from the specified bitmap data.
\see Fl_Bitmap(const char *bits, int bits_length, int W, int H) */
Fl_Bitmap(const char *bits, int W, int H) :
Fl_Image(W,H,0), array((const uchar *)bits), alloc_array(0), id_(0), cache_w_(0),cache_h_(0) {data((const char **)&array, 1);}
Fl_Bitmap(const uchar *bits, int bits_length, int W, int H);
Fl_Bitmap(const char *bits, int bits_length, int W, int H);
virtual ~Fl_Bitmap();
Fl_Image *copy(int W, int H) const FL_OVERRIDE;
Fl_Image *copy() const { return Fl_Image::copy(); }
void draw(int X, int Y, int W, int H, int cx=0, int cy=0) FL_OVERRIDE;
void draw(int X, int Y) {draw(X, Y, w(), h(), 0, 0);}
void label(Fl_Widget*w) FL_OVERRIDE;
void label(Fl_Menu_Item*m) FL_OVERRIDE;
void uncache() FL_OVERRIDE;
int cache_w() {return cache_w_;}
int cache_h() {return cache_h_;}
};
#endif
+78
View File
@@ -0,0 +1,78 @@
//
// Box header file for the Fast Light Tool Kit (FLTK).
//
// Copyright 1998-2025 by Bill Spitzak and others.
//
// This library is free software. Distribution and use rights are outlined in
// the file "COPYING" which should have been included with this file. If this
// file is missing or damaged, see the license at:
//
// https://www.fltk.org/COPYING.php
//
// Please see the following page on how to report bugs and issues:
//
// https://www.fltk.org/bugs.php
//
/** \file FL/Fl_Box.H
\brief Fl_Box widget.
*/
#ifndef Fl_Box_H
#define Fl_Box_H
#ifndef Fl_Widget_H
#include "Fl_Widget.H"
#endif
/**
This widget simply draws its box, and possibly its label.
Putting it before some other widgets and making it big enough to surround
them will let you draw a frame around them.
*/
class FL_EXPORT Fl_Box : public Fl_Widget {
protected:
void draw() FL_OVERRIDE;
public:
/**
Creates a new Fl_Box widget with the given coordinates, size, and label.
This constructor sets box() to FL_NO_BOX, which means it is invisible.
However such widgets are useful as placeholders or Fl_Group::resizable()
values. To change the box to something visible, use box(Fl_Boxtype).
The destructor removes the box from its parent group.
\param[in] X, Y the position of the widget relative to the enclosing window
\param[in] W, H size of the widget in pixels
\param[in] L optional text for the widget label (default: no label)
\see Fl_Box(Fl_Boxtype b, int X, int Y, int W, int H, const char *L)
*/
Fl_Box(int X, int Y, int W, int H, const char *L = 0);
/**
Creates a new Fl_Box widget with the given boxtype, coordinates, size, and label.
This constructor sets box() to the given Fl_Boxtype \c B.
You must also specify a label but it can be \c nullptr (0, NULL) if you
don't want or need a visible label.
The destructor removes the box from its parent group.
\param[in] B boxtype of the widget
\param[in] X, Y the position of the widget relative to the enclosing window
\param[in] W, H size of the widget in pixels
\param[in] L optional text for the widget label (see description)
\see Fl_Box(int X, int Y, int W, int H, const char *L)
*/
Fl_Box(Fl_Boxtype B, int X, int Y, int W, int H, const char *L);
int handle(int) FL_OVERRIDE;
};
#endif
+330
View File
@@ -0,0 +1,330 @@
//
// Browser header file for the Fast Light Tool Kit (FLTK).
//
// Copyright 1998-2023 by Bill Spitzak and others.
//
// This library is free software. Distribution and use rights are outlined in
// the file "COPYING" which should have been included with this file. If this
// file is missing or damaged, see the license at:
//
// https://www.fltk.org/COPYING.php
//
// Please see the following page on how to report bugs and issues:
//
// https://www.fltk.org/bugs.php
//
/* \file
Fl_Browser widget . */
// Forms-compatible browser. Probably useful for other
// lists of textual data. Notice that the line numbers
// start from 1, and 0 means "no line".
#ifndef Fl_Browser_H
#define Fl_Browser_H
#include "Fl_Browser_.H"
#include "Fl_Image.H"
struct FL_BLINE;
/**
The Fl_Browser widget displays a scrolling list of text
lines, and manages all the storage for the text. This is not a text
editor or spreadsheet! But it is useful for showing a vertical list of
named objects to the user.
\image html fl_hold_browser.png "Fl_Hold_Browser"
\image latex fl_hold_browser.png "Fl_Hold_Browser" width=4cm
\par
\image html fl_multi_browser.png "Fl_Multi_Browser"
\image latex fl_multi_browser.png "Fl_Multi_Browser" width=4cm
Each line in the browser is identified by number. <I>The numbers
start at one</I> (this is so that zero can be reserved for "no line" in
the selective browsers). <I>Unless otherwise noted, the methods do not
check to see if the passed line number is in range and legal. It must
always be greater than zero and &lt;= size().</I>
Each line contains a null-terminated string of text and a void *
data pointer. The text string is displayed, the void *
pointer can be used by the callbacks to reference the object the text
describes.
The base class does nothing when the user clicks on it. The
subclasses
Fl_Select_Browser,
Fl_Hold_Browser, and
Fl_Multi_Browser react to user clicks to select lines in
the browser and do callbacks.
The base class
Fl_Browser_ provides the scrolling and selection mechanisms of
this and all the subclasses, but the dimensions and appearance of each
item are determined by the subclass. You can use Fl_Browser_
to display information other than text, or text that is dynamically
produced from your own data structures. If you find that loading the
browser is a lot of work or is inefficient, you may want to make a
subclass of Fl_Browser_.
Some common coding patterns used for working with Fl_Browser:
\code
// How to loop through all the items in the browser
for ( int t=1; t<=browser->size(); t++ ) { // index 1 based..!
printf("item #%d, label='%s'\n", t, browser->text(t));
}
\endcode
Note: If you are <I>subclassing</I> Fl_Browser, it's more efficient
to use the protected methods item_first() and item_next(), since
Fl_Browser internally uses linked lists to manage the browser's items.
For more info, see find_item(int).
*/
class FL_EXPORT Fl_Browser : public Fl_Browser_ {
FL_BLINE *first; // the array of lines
FL_BLINE *last;
FL_BLINE *cache;
int cacheline; // line number of cache
int lines; // Number of lines
int full_height_;
const int* column_widths_;
char format_char_; // alternative to @-sign
char column_char_; // alternative to tab
protected:
// required routines for Fl_Browser_ subclass:
void* item_first() const FL_OVERRIDE;
void* item_next(void* item) const FL_OVERRIDE;
void* item_prev(void* item) const FL_OVERRIDE;
void* item_last()const FL_OVERRIDE;
int item_selected(void* item) const FL_OVERRIDE;
void item_select(void* item, int val) FL_OVERRIDE;
int item_height(void* item) const FL_OVERRIDE;
int item_width(void* item) const FL_OVERRIDE;
void item_draw(void* item, int X, int Y, int W, int H) const FL_OVERRIDE;
int full_height() const FL_OVERRIDE;
int incr_height() const FL_OVERRIDE;
const char *item_text(void *item) const FL_OVERRIDE;
/** Swap the items \p a and \p b.
You must call redraw() to make any changes visible.
\param[in] a,b the items to be swapped.
\see swap(int,int), item_swap()
*/
void item_swap(void *a, void *b) FL_OVERRIDE { swap((FL_BLINE*)a, (FL_BLINE*)b); }
/** Return the item at specified \p line.
\param[in] line The line of the item to return. (1 based)
\returns The item, or NULL if line out of range.
\see item_at(), find_line(), lineno()
*/
void *item_at(int line) const FL_OVERRIDE { return (void*)find_line(line); }
FL_BLINE* find_line(int line) const ;
FL_BLINE* _remove(int line) ;
void insert(int line, FL_BLINE* item);
int lineno(void *item) const ;
void swap(FL_BLINE *a, FL_BLINE *b);
public:
void remove(int line);
void add(const char* newtext, void* d = 0);
void insert(int line, const char* newtext, void* d = 0);
void move(int to, int from);
int load(const char* filename);
void swap(int a, int b);
void clear();
/**
Returns how many lines are in the browser.
The last line number is equal to this.
Returns 0 if browser is empty.
*/
int size() const { return lines; }
void size(int W, int H) { Fl_Widget::size(W, H); }
/**
Gets the default text size (in pixels) for the lines in the browser.
*/
Fl_Fontsize textsize() const { return Fl_Browser_::textsize(); }
/*
Sets the default text size for the lines in the browser to newSize.
Defined and documented in Fl_Browser.cxx
*/
void textsize(Fl_Fontsize newSize);
int topline() const ;
/** For internal use only? */
enum Fl_Line_Position { TOP, BOTTOM, MIDDLE };
void lineposition(int line, Fl_Line_Position pos);
/**
Scrolls the browser so the top item in the browser
is showing the specified \p line.
\param[in] line The line to be displayed at the top.
\see topline(), middleline(), bottomline(), displayed(), lineposition()
*/
void topline(int line) { lineposition(line, TOP); }
/**
Scrolls the browser so the bottom item in the browser
is showing the specified \p line.
\param[in] line The line to be displayed at the bottom.
\see topline(), middleline(), bottomline(), displayed(), lineposition()
*/
void bottomline(int line) { lineposition(line, BOTTOM); }
/**
Scrolls the browser so the middle item in the browser
is showing the specified \p line.
\param[in] line The line to be displayed in the middle.
\see topline(), middleline(), bottomline(), displayed(), lineposition()
*/
void middleline(int line) { lineposition(line, MIDDLE); }
int select(int line, int val=1);
int selected(int line) const ;
void show(int line);
/** Shows the entire Fl_Browser widget -- opposite of hide(). */
void show() FL_OVERRIDE { Fl_Widget::show(); }
void hide(int line);
/** Hides the entire Fl_Browser widget -- opposite of show(). */
void hide() FL_OVERRIDE { Fl_Widget::hide(); }
int visible(int line) const ;
int value() const ;
/**
Sets the browser's value(), which selects the specified \p line.
This is the same as calling select(line).
\see select(), selected(), value(), item_select(), item_selected()
*/
void value(int line) { select(line); }
const char* text(int line) const ;
void text(int line, const char* newtext);
void* data(int line) const ;
void data(int line, void* d);
Fl_Browser(int X, int Y, int W, int H, const char *L = 0);
/**
The destructor deletes all list items and destroys the browser.
*/
~Fl_Browser() { clear(); }
/**
Gets the current format code prefix character, which by default is '\@'.
A string of formatting codes at the start of each column are stripped off
and used to modify how the rest of the line is printed:
\li <tt>'\@.'</tt> Print rest of line, don't look for more '\@' signs
\li <tt>'\@\@'</tt> Doubling the format character prints the format
character once, followed by the rest of line
\li <tt>'\@l'</tt> Use a LARGE (24 point) font
\li <tt>'\@m'</tt> Use a medium large (18 point) font
\li <tt>'\@s'</tt> Use a <SMALL>small</SMALL> (11 point) font
\li <tt>'\@b'</tt> Use a <B>bold</B> font (adds FL_BOLD to font)
\li <tt>'\@i'</tt> Use an <I>italic</I> font (adds FL_ITALIC to font)
\li <tt>'\@f' or '\@t'</tt> Use a fixed-pitch
font (sets font to FL_COURIER)
\li <tt>'\@c'</tt> Center the line horizontally
\li <tt>'\@r'</tt> Right-justify the text
\li <tt>'\@N'</tt> Use fl_inactive_color() to draw the text
\li <tt>'\@B0', '\@B1', ... '\@B255'</tt> Fill the background with
fl_color(n)
\li <tt>'\@C0', '\@C1', ... '\@C255'</tt> Use fl_color(n) to draw the text
\li <tt>'\@F0', '\@F1', ...</tt> Use fl_font(n) to draw the text
\li <tt>'\@S1', '\@S2', ...</tt> Use point size n to draw the text
\li <tt>'\@u' or '\@_'</tt> Underline the text.
\li <tt>'\@-'</tt> draw an engraved line through the middle.
Notice that the '\@.' command can be used to reliably
terminate the parsing. To print a random string in a random color, use
<tt>sprintf("@C%d@.%s", color, string)</tt> and it will work even if the
string starts with a digit or has the format character in it.
*/
char format_char() const { return format_char_; }
/**
Sets the current format code prefix character to \p c.
The default prefix is '\@'. Set the prefix to 0 to disable formatting.
\see format_char() for list of '\@' codes
*/
void format_char(char c) { format_char_ = c; }
/**
Gets the current column separator character.
The default is '\\t' (tab).
\see column_char(), column_widths()
*/
char column_char() const { return column_char_; }
/**
Sets the column separator to c.
This will only have an effect if you also set column_widths().
The default is '\\t' (tab).
\see column_char(), column_widths()
*/
void column_char(char c) { column_char_ = c; }
/**
Gets the current column width array.
This array is zero-terminated and specifies the widths in pixels of
each column. The text is split at each column_char() and each part is
formatted into it's own column. After the last column any remaining
text is formatted into the space between the last column and the
right edge of the browser, even if the text contains instances of
column_char() . The default value is a one-element array of just
a zero, which means there are no columns.
Example:
\code
Fl_Browser *b = new Fl_Browser(..);
static int widths[] = { 50, 50, 50, 70, 70, 40, 40, 70, 70, 50, 0 }; // widths for each column
b->column_widths(widths); // assign array to widget
b->column_char('\t'); // use tab as the column character
b->add("USER\tPID\tCPU\tMEM\tVSZ\tRSS\tTTY\tSTAT\tSTART\tTIME\tCOMMAND");
b->add("root\t2888\t0.0\t0.0\t1352\t0\ttty3\tSW\tAug15\t0:00\t@b@f/sbin/mingetty tty3");
b->add("root\t13115\t0.0\t0.0\t1352\t0\ttty2\tSW\tAug30\t0:00\t@b@f/sbin/mingetty tty2");
[..]
\endcode
\see column_char(), column_widths()
*/
const int* column_widths() const { return column_widths_; }
/**
Sets the current array to \p arr. Make sure the last entry is zero.
\see column_char(), column_widths()
*/
void column_widths(const int* arr) { column_widths_ = arr; }
/**
Returns non-zero if \p line has been scrolled to a position where it is being displayed.
Checks to see if the item's vertical position is within the top and bottom
edges of the display window. This does NOT take into account the hide()/show()
status of the widget or item.
\param[in] line The line to be checked
\returns 1 if visible, 0 if not visible.
\see topline(), middleline(), bottomline(), displayed(), lineposition()
*/
int displayed(int line) const { return Fl_Browser_::displayed(find_line(line)); }
/**
Make the item at the specified \p line visible().
Functionally similar to show(int line).
If \p line is out of range, redisplay top or bottom of list as appropriate.
\param[in] line The line to be made visible.
\see show(int), hide(int), display(), visible(), make_visible()
*/
void make_visible(int line) {
if (line < 1) Fl_Browser_::display(find_line(1));
else if (line > lines) Fl_Browser_::display(find_line(lines));
else Fl_Browser_::display(find_line(line));
}
// icon support
void icon(int line, Fl_Image* icon);
Fl_Image* icon(int line) const;
void remove_icon(int line);
/** For back compatibility only. */
void replace(int a, const char* b) { text(a, b); }
void display(int line, int val=1);
};
#endif
+417
View File
@@ -0,0 +1,417 @@
//
// Common browser header file for the Fast Light Tool Kit (FLTK).
//
// Copyright 1998-2016 by Bill Spitzak and others.
//
// This library is free software. Distribution and use rights are outlined in
// the file "COPYING" which should have been included with this file. If this
// file is missing or damaged, see the license at:
//
// https://www.fltk.org/COPYING.php
//
// Please see the following page on how to report bugs and issues:
//
// https://www.fltk.org/bugs.php
//
/* \file
Fl_Browser_ widget . */
// Yes, I know this should be a template...
#ifndef Fl_Browser__H
#define Fl_Browser__H
#ifndef Fl_Group_H
#include "Fl_Group.H"
#endif
#include "Fl_Scrollbar.H"
#include <FL/Fl.H> // Fl::scrollbar_size()
#define FL_NORMAL_BROWSER 0 /**< type() of Fl_Browser */
#define FL_SELECT_BROWSER 1 /**< type() of FL_Select_Browser */
#define FL_HOLD_BROWSER 2 /**< type() of Fl_Hold_Browser */
#define FL_MULTI_BROWSER 3 /**< type() of Fl_Multi_Browser */
#define FL_SORT_ASCENDING 0 /**< sort browser items in ascending alphabetic order. */
#define FL_SORT_DESCENDING 1 /**< sort in descending order */
#define FL_SORT_CASEINSENSITIVE 0x2 /**< sort case insensitively */
/**
This is the base class for browsers. To be useful it must be
subclassed and several virtual functions defined. The Forms-compatible
browser and the file chooser's browser are subclassed off of this.
This has been designed so that the subclass has complete control
over the storage of the data, although because next() and
prev() functions are used to index, it works best as a linked list
or as a large block of characters in which the line breaks must be
searched for.
A great deal of work has been done so that the "height" of a data
object does not need to be determined until it is drawn. This is
useful if actually figuring out the size of an object requires
accessing image data or doing stat() on a file or doing some
other slow operation.
Callbacks are called when the value changes with \p FL_REASON_CHANGED.
If \p FL_WHEN_RELEASE is set, callbacks are called when the mouse button is
released with \p FL_REASON_CHANGED or \p FL_REASON_RESELECTED if the selection
did not change. If \p FL_WHEN_ENTER_KEY is set, callbacks are also called when
key presses or double clicks change the selection.
Keyboard navigation of browser items
------------------------------------
The keyboard navigation of browser items is only possible if
visible_focus() is enabled. If disabled, the widget rejects keyboard focus;
Tab and Shift-Tab focus navigation will skip the widget.
In 'Select' and 'Normal' mode, the widget rejects keyboard focus;
no navigation keys are supported (other than scrollbar positioning).
In 'Hold' mode, the widget accepts keyboard focus, and Up/Down arrow
keys can navigate the selected item.
In 'Multi' mode, the widget accepts keyboard focus, and Up/Down arrow
keys navigate the focus box; Space toggles the current item's selection,
Enter selects only the current item (deselects all others). If Shift
(or Ctrl) is combined with Up/Down arrow keys, the current item's
selection state is extended to the next item. In this way one can
extend a selection or de-selection.
*/
class FL_EXPORT Fl_Browser_ : public Fl_Group {
int position_; // where user wants it scrolled to
int real_position_; // the current vertical scrolling position
int hposition_; // where user wants it panned to
int real_hposition_; // the current horizontal scrolling position
int offset_; // how far down top_ item the real_position is
int max_width; // widest object seen so far
uchar has_scrollbar_; // which scrollbars are enabled
Fl_Font textfont_;
Fl_Fontsize textsize_;
Fl_Color textcolor_;
void* top_; // which item scrolling position is in
void* selection_; // which is selected (except for FL_MULTI_BROWSER)
void *redraw1,*redraw2; // minimal update pointers
void* max_width_item; // which item has max_width_
int scrollbar_size_; // size of scrollbar trough
int linespacing_;
void update_top();
protected:
// All of the following must be supplied by the subclass:
/**
This method must be provided by the subclass
to return the first item in the list.
\see item_first(), item_next(), item_last(), item_prev()
*/
virtual void *item_first() const = 0;
/**
This method must be provided by the subclass
to return the item in the list after \p item.
\see item_first(), item_next(), item_last(), item_prev()
*/
virtual void *item_next(void *item) const = 0;
/**
This method must be provided by the subclass
to return the item in the list before \p item.
\see item_first(), item_next(), item_last(), item_prev()
*/
virtual void *item_prev(void *item) const = 0;
/**
This method must be provided by the subclass
to return the last item in the list.
\see item_first(), item_next(), item_last(), item_prev()
*/
virtual void *item_last() const { return 0L; }
/**
This method must be provided by the subclass to return
the height of \p item in pixels.
Allow for two additional pixels for the list selection box.
\param[in] item The item whose height is returned.
\returns The height of the specified \p item in pixels.
\see item_height(), item_width(), item_quick_height()
*/
virtual int item_height(void *item) const = 0;
/**
This method must be provided by the subclass to return the width of the
\p item in pixels. Allow for two additional pixels for the list
selection box.
\param[in] item The item whose width is returned.
\returns The width of the item in pixels.
*/
virtual int item_width(void *item) const = 0;
virtual int item_quick_height(void *item) const ;
/**
This method must be provided by the subclass to draw the \p item
in the area indicated by \p X, \p Y, \p W, \p H.
*/
virtual void item_draw(void *item,int X,int Y,int W,int H) const = 0;
/**
This optional method returns a string (label) that may be used for sorting.
\param[in] item The item whose label text is returned.
\returns The item's text label. (Can be NULL if blank)
*/
virtual const char *item_text(void *item) const { (void)item; return 0L; }
/**
This optional method should be provided by the subclass
to efficiently swap browser items \p a and \p b, such as for sorting.
\param[in] a,b The two items to be swapped.
*/
virtual void item_swap(void *a,void *b) { (void)a; (void)b; }
/**
This method must be provided by the subclass
to return the item for the specified \p index.
\param[in] index The \p index of the item to be returned
\returns The item at the specified \p index.
*/
virtual void *item_at(int index) const { (void)index; return 0L; }
// you don't have to provide these but it may help speed it up:
virtual int full_width() const ; // current width of all items
virtual int full_height() const ; // current height of all items
virtual int incr_height() const ; // average height of an item
// These only need to be done by subclass if you want a multi-browser:
virtual void item_select(void *item,int val=1);
virtual int item_selected(void *item) const ;
// things the subclass may want to call:
/**
Returns the item that appears at the top of the list.
*/
void *top() const { return top_; }
/**
Returns the item currently selected, or NULL if there is no selection.
For multiple selection browsers this call returns the currently focused item,
even if it is not selected. To find all selected items, call
Fl_Multi_Browser::selected() for every item in question.
*/
void *selection() const { return selection_; }
void new_list(); // completely clobber all data, as though list replaced
void deleting(void *item); // get rid of any pointers to item
void replacing(void *a,void *b); // change a pointers to b
void swapping(void *a,void *b); // exchange pointers a and b
void inserting(void *a,void *b); // insert b near a
int displayed(void *item) const ; // true if this item is visible
void redraw_line(void *item); // minimal update, no change in size
/**
This method will cause the entire list to be redrawn.
\see redraw_lines(), redraw_line()
*/
void redraw_lines() { damage(FL_DAMAGE_SCROLL); } // redraw all of them
void bbox(int &X,int &Y,int &W,int &H) const;
int leftedge() const; // x position after scrollbar & border
void *find_item(int ypos); // item under mouse
void draw() FL_OVERRIDE;
Fl_Browser_(int X,int Y,int W,int H,const char *L=0);
public:
/**
Vertical scrollbar. Public, so that it can be accessed directly.
Use `scrollbar_left()` or `scrollbar_right()` to change what side
the vertical scrollbar is drawn on.
Use `scrollbar.align(int)` (see `Fl_Widget::align(Fl_Align)`)
to change what side either of the scrollbars is drawn on.
If the `FL_ALIGN_LEFT` bit is on, the vertical scrollbar is on
the left. If the `FL_ALIGN_TOP` bit is on, the horizontal
scrollbar is on the top. Note that only the alignment flags in
scrollbar are considered. The flags in hscrollbar however
are ignored.
*/
Fl_Scrollbar scrollbar;
/**
Horizontal scrollbar. Public, so that it can be accessed directly.
*/
Fl_Scrollbar hscrollbar;
int handle(int event) FL_OVERRIDE;
void resize(int X,int Y,int W,int H) FL_OVERRIDE;
int select(void *item,int val=1,int docallbacks=0);
int select_only(void *item,int docallbacks=0);
int deselect(int docallbacks=0);
/**
Gets the vertical scroll position of the list as a pixel position \p pos.
The position returned is how many pixels of the list are scrolled off the top edge
of the screen. Example: A position of '3' indicates the top 3 pixels of
the list are scrolled off the top edge of the screen.
\see position(), hposition()
*/
int vposition() const { return position_; }
FL_DEPRECATED("since 1.4.0 - use vposition() instead",
int position() const) { return vposition(); }
void vposition(int pos); // scroll to here
FL_DEPRECATED("since 1.4.0 - use vposition(pos) instead",
void position(int pos)) { return vposition(pos); }
void position(int x, int y) { Fl_Group::position(x, y); }
/**
Gets the horizontal scroll position of the list as a pixel position \p pos.
The position returned is how many pixels of the list are scrolled off the left edge
of the screen. Example: A position of '18' indicates the left 18 pixels of
the list are scrolled off the left edge of the screen.
\see position(), hposition()
*/
int hposition() const { return hposition_; }
void hposition(int); // pan to here
void display(void *item); // scroll so this item is shown
/**
Values for has_scrollbar().
*/
/** Anonymous enum bit flags for has_scrollbar().
- bit 0: horizontal
- bit 1: vertical
- bit 2: 'always' (to be combined with bits 0 and 1)
- bit 3-31: reserved for future use
*/
enum { // values for has_scrollbar()
HORIZONTAL = 1, ///< Only show horizontal scrollbar.
VERTICAL = 2, ///< Only show vertical scrollbar.
BOTH = 3, ///< Show both scrollbars. (default)
ALWAYS_ON = 4, ///< Specified scrollbar(s) should 'always' be shown (to be used with HORIZONTAL/VERTICAL)
HORIZONTAL_ALWAYS = 5, ///< Horizontal scrollbar always on.
VERTICAL_ALWAYS = 6, ///< Vertical scrollbar always on.
BOTH_ALWAYS = 7 ///< Both scrollbars always on.
};
/**
Returns the current scrollbar mode, see Fl_Browser_::has_scrollbar(uchar)
*/
uchar has_scrollbar() const { return has_scrollbar_; }
/**
Sets whether the widget should have scrollbars or not (default Fl_Browser_::BOTH).
By default you can scroll in both directions, and the scrollbars
disappear if the data will fit in the widget.
has_scrollbar() changes this based on the value of \p mode:
- 0 - No scrollbars.
- Fl_Browser_::HORIZONTAL - Only a horizontal scrollbar.
- Fl_Browser_::VERTICAL - Only a vertical scrollbar.
- Fl_Browser_::BOTH - The default is both scrollbars.
- Fl_Browser_::HORIZONTAL_ALWAYS - Horizontal scrollbar always on,
vertical always off.
- Fl_Browser_::VERTICAL_ALWAYS - Vertical scrollbar always on,
horizontal always off.
- Fl_Browser_::BOTH_ALWAYS - Both always on.
*/
void has_scrollbar(uchar mode) { has_scrollbar_ = mode; }
/**
Gets the default text font for the lines in the browser.
\see textfont(), textsize(), textcolor()
*/
Fl_Font textfont() const { return textfont_; }
/**
Sets the default text font for the lines in the browser to \p font.
*/
void textfont(Fl_Font font) { textfont_ = font; }
/**
Gets the default text size (in pixels) for the lines in the browser.
*/
Fl_Fontsize textsize() const { return textsize_; }
/**
Sets the default text size (in pixels) for the lines in the browser to \p size.
*/
void textsize(Fl_Fontsize newSize) { textsize_ = newSize; }
/**
Gets the default text color for the lines in the browser.
*/
Fl_Color textcolor() const { return textcolor_; }
/**
Sets the default text color for the lines in the browser to color \p col.
*/
void textcolor(Fl_Color col) { textcolor_ = col; }
/**
Gets the current size of the scrollbars' troughs, in pixels.
If this value is zero (default), this widget will use the
Fl::scrollbar_size() value as the scrollbar's width.
\returns Scrollbar size in pixels, or 0 if the global Fl::scrollbar_size() is being used.
\see Fl::scrollbar_size(int)
*/
int scrollbar_size() const {
return(scrollbar_size_);
}
/**
Sets the pixel size of the scrollbars' troughs to \p newSize, in pixels.
Normally you should not need this method, and should use
Fl::scrollbar_size(int) instead to manage the size of ALL
your widgets' scrollbars. This ensures your application
has a consistent UI, is the default behavior, and is normally
what you want.
Only use THIS method if you really need to override the global
scrollbar size. The need for this should be rare.
Setting \p newSize to the special value of 0 causes the widget to
track the global Fl::scrollbar_size(), which is the default.
\param[in] newSize Sets the scrollbar size in pixels.\n
If 0 (default), scrollbar size tracks the global Fl::scrollbar_size()
\see Fl::scrollbar_size()
*/
void scrollbar_size(int newSize) {
scrollbar_size_ = newSize;
}
/**
Returns the global value Fl::scrollbar_size().
\deprecated Use scrollbar_size() instead.
\todo This method should eventually be removed in 1.4+
*/
int scrollbar_width() const {
return(Fl::scrollbar_size());
}
/**
Sets the global Fl::scrollbar_size(), and forces this instance of the widget to use it.
\deprecated Use scrollbar_size() instead.
\todo This method should eventually be removed in 1.4+
*/
void scrollbar_width(int width) {
Fl::scrollbar_size(width);
scrollbar_size_ = 0;
}
/**
Moves the vertical scrollbar to the righthand side of the list.
For back compatibility.
*/
void scrollbar_right() { scrollbar.align(FL_ALIGN_RIGHT); }
/**
Moves the vertical scrollbar to the lefthand side of the list.
For back compatibility.
*/
void scrollbar_left() { scrollbar.align(FL_ALIGN_LEFT); }
void sort(int flags=0);
/**
Add some space between browser lines.
\param[in] pixels number of additional pixels between lines.
*/
void linespacing(int pixels) { linespacing_ = pixels; }
/** Return the height of additional spacing between browser lines.
\return spacing height in pixel units.
*/
int linespacing() const { return linespacing_; }
};
#endif
+181
View File
@@ -0,0 +1,181 @@
//
// Button header file for the Fast Light Tool Kit (FLTK).
//
// Copyright 1998-2014 by Bill Spitzak and others.
//
// This library is free software. Distribution and use rights are outlined in
// the file "COPYING" which should have been included with this file. If this
// file is missing or damaged, see the license at:
//
// https://www.fltk.org/COPYING.php
//
// Please see the following page on how to report bugs and issues:
//
// https://www.fltk.org/bugs.php
//
/* \file
Fl_Button widget . */
#ifndef Fl_Button_H
#define Fl_Button_H
#ifndef Fl_Widget_H
#include "Fl_Widget.H"
#endif
// values for type()
#define FL_NORMAL_BUTTON 0 /**< value() will be set to 1 during the press of the button and
reverts back to 0 when the button is released */
#define FL_TOGGLE_BUTTON 1 ///< value() toggles between 0 and 1 at every click of the button
#define FL_RADIO_BUTTON (FL_RESERVED_TYPE+2) /**< is set to 1 at button press, and all other
buttons in the same group with <tt>type() == FL_RADIO_BUTTON</tt>
are set to zero.*/
#define FL_HIDDEN_BUTTON 3 ///< for Forms compatibility
extern FL_EXPORT Fl_Shortcut fl_old_shortcut(const char*);
class Fl_Widget_Tracker;
/**
\class Fl_Button
\brief Buttons generate callbacks when they are clicked by the user.
You control exactly when and how by changing the values for type(uchar) and
when(uchar). Buttons can also generate callbacks in response to \c FL_SHORTCUT
events. The button can either have an explicit shortcut(int s) value or a
letter shortcut can be indicated in the label() with an '\&' character
before it. For the label shortcut it does not matter if \e Alt is held
down, but if you have an input field in the same window, the user will have
to hold down the \e Alt key so that the input field does not eat the event
first as an \c FL_KEYBOARD event.
\see Fl_Widget::shortcut_label(int)
For an Fl_Button object, the type() call returns one of:
\li \c FL_NORMAL_BUTTON (0): value() remains unchanged after button press.
\li \c FL_TOGGLE_BUTTON: value() is inverted after button press.
\li \c FL_RADIO_BUTTON: value() is set to 1 after button press, and all other
buttons in the current group with <tt>type() == FL_RADIO_BUTTON</tt>
are set to zero.
For an Fl_Button object, the following when() values are useful, the default
being \c FL_WHEN_RELEASE:
\li \c 0: The callback is not done, instead changed() is turned on.
\li \c FL_WHEN_RELEASE: The callback is done after the user successfully
clicks the button, or when a shortcut is typed. The reason is
\p FL_REASON_RELEASED.
\li \c FL_WHEN_CHANGED: The callback is done each time the value() changes
(when the user pushes and releases the button, and as the mouse is
dragged around in and out of the button). The reason is set to
\p FL_REASON_CHANGED
\li \c FL_WHEN_NOT_CHANGED: The callback is done when the mouse button is
released, but the value did not changed. The reason is set to
\p FL_REASON_SELECTED
*/
class FL_EXPORT Fl_Button : public Fl_Widget {
int shortcut_;
char value_;
char oldval;
uchar down_box_;
uchar compact_;
protected:
static Fl_Widget_Tracker *key_release_tracker;
static void key_release_timeout(void*);
void simulate_key_action();
void draw() FL_OVERRIDE;
public:
int handle(int) FL_OVERRIDE;
Fl_Button(int X, int Y, int W, int H, const char *L = 0);
int value(int v);
/**
Returns the current value of the button (0 or 1).
*/
char value() const {return value_;}
/**
Same as \c value(1).
\see value(int v)
*/
int set() {return value(1);}
/**
Same as \c value(0).
\see value(int v)
*/
int clear() {return value(0);}
void setonly(); // this should only be called on FL_RADIO_BUTTONs
/**
Returns the current shortcut key for the button.
\retval int
*/
int shortcut() const {return shortcut_;}
/**
Sets the shortcut key to \c s.
Setting this overrides the use of '\&' in the label().
The value is a bitwise OR of a key and a set of shift flags, for example:
<tt>FL_ALT | 'a'</tt>, or
<tt>FL_ALT | (FL_F + 10)</tt>, or just
<tt>'a'</tt>.
A value of 0 disables the shortcut.
The key can be any value returned by Fl::event_key(), but will usually be
an ASCII letter. Use a lower-case letter unless you require the shift key
to be held down.
The shift flags can be any set of values accepted by Fl::event_state().
If the bit is on, that shift key must be pushed. Meta, Alt, Ctrl, and
Shift must be off if they are not in the shift flags (zero for the other
bits indicates a "don't care" setting).
\param[in] s bitwise OR of key and shift flags
*/
void shortcut(int s) {shortcut_ = s;}
/**
Returns the current down box type, which is drawn when value() is non-zero.
\retval Fl_Boxtype
*/
Fl_Boxtype down_box() const {return (Fl_Boxtype)down_box_;}
/**
Sets the down box type. The default value of 0 causes FLTK to figure out
the correct matching down version of box().
Some derived classes (e.g. Fl_Round_Button and Fl_Light_Button use
down_box() for special purposes. See docs of these classes.
\param[in] b down box type
*/
void down_box(Fl_Boxtype b) {down_box_ = b;}
/// (for backwards compatibility)
void shortcut(const char *s) {shortcut(fl_old_shortcut(s));}
/// (for backwards compatibility)
Fl_Color down_color() const {return selection_color();}
/// (for backwards compatibility)
void down_color(unsigned c) {selection_color(c);}
// handle flag for compact buttons, documentation in source code
void compact(uchar v);
/// Return true if buttons are rendered as compact buttons.
/// \return 0 if compact mode is off, 1 if it is on
/// \see compact(bool)
uchar compact() { return compact_; }
};
#endif
+101
View File
@@ -0,0 +1,101 @@
//
// Main Cairo support header file for the Fast Light Tool Kit (FLTK).
//
// Copyright 1998-2023 by Bill Spitzak and others.
//
// This library is free software. Distribution and use rights are outlined in
// the file "COPYING" which should have been included with this file. If this
// file is missing or damaged, see the license at:
//
// https://www.fltk.org/COPYING.php
//
// Please see the following page on how to report bugs and issues:
//
// https://www.fltk.org/bugs.php
//
/** \file Fl_Cairo.H
Cairo is currently supported for the following platforms:
Windows, macOS, Unix/Linux (X11 + Wayland).
\note In FLTK 1.3.x this header file (Fl_Cairo.H) included the platform
specific Cairo headers. This is no longer true since 1.4.0.
This header file is platform agnostic. If you need platform specific Cairo
headers you need to \#include them in your source file.
To use FLTK's builtin Cairo support you need to <tt>\#include \<FL/Fl.H></tt>
\b before you include any other FLTK header which is officially required anyway.
Since FLTK 1.4.0 the preprocessor constants \p FLTK_HAVE_CAIRO and/or
\p FLTK_HAVE_CAIROEXT are defined in \<FL/Fl.H> by including \<FL/fl_config.h>.
*/
#ifndef FL_CAIRO_H
#define FL_CAIRO_H
#include <FL/Fl.H>
# ifdef FLTK_HAVE_CAIRO
# include <cairo.h>
/**
\addtogroup group_cairo
@{
*/
/**
Contains all the necessary info on the current cairo context.
A private internal & unique corresponding object is created to
permit cairo context state handling while keeping it opaque.
For internal use only.
\note Only available when configure has the --enable-cairo or
--enable-cairoext option or one or both of the CMake options
FLTK_OPTION_CAIRO_WINDOW or FLTK_OPTION_CAIRO_EXT is set (ON)
*/
class FL_EXPORT Fl_Cairo_State {
public:
Fl_Cairo_State()
: cc_(0)
, own_cc_(false)
, autolink_(false)
, window_(0)
, gc_(0) {}
// access attributes
cairo_t *cc() const { return cc_; } ///< Gets the current cairo context
bool autolink() const { return autolink_; } ///< Gets the autolink option. See Fl::cairo_autolink_context(bool)
/** Sets the current cairo context.
\p own == \e true (the default) indicates that the cairo context \p c
will be deleted by FLTK internally when another cc is set later.
\p own == \e false indicates cc deletion is handled externally
by the user program.
*/
void cc(cairo_t *c, bool own = true) {
if (cc_ && own_cc_)
cairo_destroy(cc_);
cc_ = c;
if (!cc_)
window_ = 0;
own_cc_ = own;
}
void autolink(bool b); ///< Sets the autolink option, only available with --enable-cairoext
void window(void *w) { window_ = w; } ///< Sets the window \p w to keep track on
void *window() const { return window_; } ///< Gets the last window attached to a cc
void gc(void *c) { gc_ = c; } ///< Sets the gc \p c to keep track on
void *gc() const { return gc_; } ///< Gets the last gc attached to a cc
private:
cairo_t *cc_; // contains the unique autoupdated cairo context
bool own_cc_; // indicates whether we must delete the cc, useful for internal cleanup
bool autolink_; // false by default, prevents the automatic cairo mapping on fltk windows
// for custom cairo implementations.
void *window_, *gc_; // for keeping track internally of last win+gc treated
};
/** @} */
#endif // FLTK_HAVE_CAIRO
#endif // FL_CAIRO_H
@@ -0,0 +1,128 @@
//
// Fl_Cairo_Window header file for the Fast Light Tool Kit (FLTK).
//
// Copyright 1998-2023 by Bill Spitzak and others.
//
// This library is free software. Distribution and use rights are outlined in
// the file "COPYING" which should have been included with this file. If this
// file is missing or damaged, see the license at:
//
// https://www.fltk.org/COPYING.php
//
// Please see the following page on how to report bugs and issues:
//
// https://www.fltk.org/bugs.php
//
/** \file FL/Fl_Cairo_Window.H
\brief Fl_Cairo_Window, an FLTK window incorporating a Cairo draw callback.
*/
#ifndef FL_CAIRO_WINDOW_H
# define FL_CAIRO_WINDOW_H
#include <FL/fl_config.h>
# ifdef FLTK_HAVE_CAIRO
// Cairo is currently supported for the following platforms:
// Win32, Apple Quartz, X11, Wayland
# include <FL/Fl.H>
# include <FL/Fl_Double_Window.H>
/**
\addtogroup group_cairo
@{
*/
/**
This defines an FLTK window with Cairo support.
This class overloads the virtual draw() method for you,
so that the only thing you have to do is to provide your Cairo code.
All Cairo context handling is achieved transparently.
The default coordinate system for Cairo drawing commands within Fl_Cairo_Window
is FLTK's coordinate system, where the `x,y,w,h` values are relative to the
top/left corner of the Fl_Cairo_Window, as one would expect with regular
FLTK drawing commands, e.g.: `(0 ≤ x ≤ w-1), (0 ≤ y ≤ h-1)`.
\b Example:
\code
static void my_cairo_draw_cb(Fl_Cairo_Window *window, cairo_t *cr) {
// Draw an "X"
const double xmax = (window->w() - 1);
const double ymax = (window->h() - 1);
cairo_set_line_width(cr, 1.00); // line width for drawing
cairo_set_source_rgb(cr, 1.0, 0.5, 0.0); // orange
cairo_move_to(cr, 0.0, 0.0); cairo_line_to(cr, xmax, ymax); // draw diagonal "\"
cairo_move_to(cr, 0.0, ymax); cairo_line_to(cr, xmax, 0.0); // draw diagonal "/"
cairo_stroke(cr); // stroke the lines
}
\endcode
The FLTK coordinate system differs from the default native Cairo coordinate system
which uses normalized `(0.0 … 1.0)` values for x and y, e.g.: `(0 ≤ x ≤ 1.0), (0 ≤ y ≤ 1.0)`.
So beware of this when copy/pasting Cairo example programs that assume normalized values.
If need be, you can revert to the Cairo coordinate system by simply calling `cairo_scale()`
with the widget's `w()` and `h()` values. \b Example:
\code
static void my_cairo_draw_cb(Fl_Cairo_Window *window, cairo_t *cr) {
cairo_scale(cr, window->w(), window->h()); // use Cairo's default coordinate system
[..use 0.0 to 1.0 values from here on..]
}
\endcode
\see examples/cairo-draw-x.cxx
\see test/cairo_test.cxx
\note Class Fl_Cairo_Window requires the FLTK library to have been built with
CMake option FLTK_OPTION_CAIRO_WINDOW or configure --enable-cairo.
\note You can alternatively define your custom Cairo FLTK window,
and thus at least override the draw() method to provide custom Cairo
support. In this case you will probably use Fl::cairo_make_current(Fl_Window*)
to attach a context to your window. You should do this only when your window is
the current window. \see Fl_Window::current()
*/
class FL_EXPORT Fl_Cairo_Window : public Fl_Double_Window {
public:
Fl_Cairo_Window(int W, int H, const char *L = 0)
: Fl_Double_Window(W, H, L), draw_cb_(0) {}
Fl_Cairo_Window(int X, int Y, int W, int H, const char *L = 0)
: Fl_Double_Window(X, Y, W, H, L), draw_cb_(0) {}
protected:
/** Overloaded to provide Cairo callback support. */
void draw() FL_OVERRIDE {
Fl_Double_Window::draw();
if (draw_cb_) { // call the Cairo draw callback
// manual method ? if yes explicitly get a cairo_context here
if (!Fl::cairo_autolink_context())
Fl::cairo_make_current(this);
draw_cb_(this, Fl::cairo_cc());
// flush Cairo drawings: necessary at least for Windows
Fl::cairo_flush(Fl::cairo_cc());
}
}
public:
/** The Cairo draw callback prototype you need to implement. */
typedef void (*cairo_draw_cb) (Fl_Cairo_Window* self, cairo_t* def);
/**
You must provide a draw callback that implements your Cairo rendering.
This method permits you to set your Cairo callback to \p cb.
*/
void set_draw_cb(cairo_draw_cb cb) { draw_cb_ = cb; }
private:
cairo_draw_cb draw_cb_;
};
/** @} */
# endif // FLTK_HAVE_CAIRO
#endif // FL_CAIRO_WINDOW_H
+178
View File
@@ -0,0 +1,178 @@
//
// Fl_Chart widget header file for the Fast Light Tool Kit (FLTK).
//
// Copyright 1998-2023 by Bill Spitzak and others.
//
// This library is free software. Distribution and use rights are outlined in
// the file "COPYING" which should have been included with this file. If this
// file is missing or damaged, see the license at:
//
// https://www.fltk.org/COPYING.php
//
// Please see the following page on how to report bugs and issues:
//
// https://www.fltk.org/bugs.php
//
/** \file FL/Fl_Chart.H
\brief Fl_Chart widget.
*/
#ifndef Fl_Chart_H
#define Fl_Chart_H
#ifndef Fl_Widget_H
#include "Fl_Widget.H"
#endif
// values for type()
#define FL_BAR_CHART 0 ///< type() for Bar Chart variant
#define FL_HORBAR_CHART 1 ///< type() for Horizontal Bar Chart variant
#define FL_LINE_CHART 2 ///< type() for Line Chart variant
#define FL_FILL_CHART 3 ///< type() for Fill Line Chart variant
#define FL_SPIKE_CHART 4 ///< type() for Spike Chart variant
#define FL_PIE_CHART 5 ///< type() for Pie Chart variant
#define FL_SPECIALPIE_CHART 6 ///< type() for Special Pie Chart variant
#define FL_FILLED_CHART FL_FILL_CHART ///< for compatibility
#define FL_CHART_MAX 128 ///< max entries per chart
#define FL_CHART_LABEL_MAX 18 ///< max label length for entry
/** For internal use only. */
struct FL_CHART_ENTRY {
float val; ///< For internal use only.
unsigned col; ///< For internal use only.
char str[FL_CHART_LABEL_MAX + 1]; ///< For internal use only.
};
/**
\class Fl_Chart
\brief Fl_Chart displays simple charts.
It is provided for Forms compatibility.
\image html charts.png
\image latex charts.png "Fl_Chart" width=10cm
\todo Refactor Fl_Chart::type() information.
The type of an Fl_Chart object can be set using type(uchar t) to:
| Chart Type | Description |
|---------------------|-------------------------------------------------------------------------------------------------|
| FL_BAR_CHART | Each sample value is drawn as a vertical bar. |
| FL_FILLED_CHART | The chart is filled from the bottom of the graph to the sample values. |
| FL_HORBAR_CHART | Each sample value is drawn as a horizontal bar. |
| FL_LINE_CHART | The chart is drawn as a polyline with vertices at each sample value. |
| FL_PIE_CHART | A pie chart is drawn with each sample value being drawn as a proportionate slice in the circle. |
| FL_SPECIALPIE_CHART | Like \c FL_PIE_CHART, but the first slice is separated from the pie. |
| FL_SPIKE_CHART | Each sample value is drawn as a vertical line. |
*/
class FL_EXPORT Fl_Chart : public Fl_Widget {
int numb;
int maxnumb;
int sizenumb;
FL_CHART_ENTRY *entries;
double min, max;
uchar autosize_;
Fl_Font textfont_;
Fl_Fontsize textsize_;
Fl_Color textcolor_;
protected:
void draw() FL_OVERRIDE;
// (static) protected draw methods (STR 2022)
// these methods are documented in src/Fl_Chart.cxx
static void draw_barchart(int x, int y, int w, int h, int numb, FL_CHART_ENTRY entries[],
double min, double max, int autosize, int maxnumb, Fl_Color textcolor);
static void draw_horbarchart(int x, int y, int w, int h, int numb, FL_CHART_ENTRY entries[],
double min, double max, int autosize, int maxnumb,
Fl_Color textcolor);
static void draw_linechart(int type, int x, int y, int w, int h, int numb,
FL_CHART_ENTRY entries[], double min, double max, int autosize,
int maxnumb, Fl_Color textcolor);
static void draw_piechart(int x, int y, int w, int h, int numb, FL_CHART_ENTRY entries[],
int special, Fl_Color textcolor);
public:
Fl_Chart(int X, int Y, int W, int H, const char *L = 0);
~Fl_Chart();
void clear();
void add(double val, const char *str = 0, unsigned col = 0);
void insert(int ind, double val, const char *str = 0, unsigned col = 0);
void replace(int ind, double val, const char *str = 0, unsigned col = 0);
/**
Gets the lower and upper bounds of the chart values.
\param[out] a, b are set to lower, upper
*/
void bounds(double *a, double *b) const {
*a = min;
*b = max;
}
void bounds(double a, double b);
/**
Returns the number of data values in the chart.
*/
int size() const { return numb; }
/**
Sets the widget size (width, height).
This is the same as calling Fl_Widget::size(int W, int H);
\param[in] W,H new width and height of the widget
*/
void size(int W, int H) { Fl_Widget::size(W, H); }
/**
Gets the maximum number of data values for a chart.
*/
int maxsize() const { return maxnumb; }
void maxsize(int m);
/** Gets the chart's text font */
Fl_Font textfont() const { return textfont_; }
/** Sets the chart's text font to \p s. */
void textfont(Fl_Font s) { textfont_ = s; }
/** Gets the chart's text size */
Fl_Fontsize textsize() const { return textsize_; }
/** Sets the chart's text size to \p s. */
void textsize(Fl_Fontsize s) { textsize_ = s; }
/** Gets the chart's text color */
Fl_Color textcolor() const { return textcolor_; }
/** Sets the chart's text color to \p n. */
void textcolor(Fl_Color n) { textcolor_ = n; }
/**
Gets whether the chart will automatically adjust the bounds of the chart.
\returns non-zero if auto-sizing is enabled and zero if disabled.
*/
uchar autosize() const { return autosize_; }
/**
Sets whether the chart will automatically adjust the bounds of the chart.
\param[in] n non-zero to enable automatic resizing, zero to disable.
*/
void autosize(uchar n) { autosize_ = n; }
};
#endif
@@ -0,0 +1,110 @@
//
// Fl_Check_Browser header file for the Fast Light Tool Kit (FLTK).
//
// Copyright 1998-2020 by Bill Spitzak and others.
//
// This library is free software. Distribution and use rights are outlined in
// the file "COPYING" which should have been included with this file. If this
// file is missing or damaged, see the license at:
//
// https://www.fltk.org/COPYING.php
//
// Please see the following page on how to report bugs and issues:
//
// https://www.fltk.org/bugs.php
//
/* \file
Fl_Check_Browser widget . */
#ifndef Fl_Check_Browser_H
#define Fl_Check_Browser_H
#include "Fl.H"
#include "Fl_Browser_.H"
/**
The Fl_Check_Browser widget displays a scrolling list of text
lines that may be selected and/or checked by the user.
*/
class FL_EXPORT Fl_Check_Browser : public Fl_Browser_ {
protected:
/* required routines for Fl_Browser_ subclass: */
void *item_first() const FL_OVERRIDE;
void *item_next(void *) const FL_OVERRIDE;
void *item_prev(void *) const FL_OVERRIDE;
int item_height(void *) const FL_OVERRIDE;
int item_width(void *) const FL_OVERRIDE;
void item_draw(void *, int, int, int, int) const FL_OVERRIDE;
void item_select(void *, int) FL_OVERRIDE;
int item_selected(void *) const FL_OVERRIDE;
const char *item_text(void *item) const FL_OVERRIDE;
public:
void *item_at(int index) const FL_OVERRIDE;
void item_swap(int ia, int ib);
void item_swap(void *a, void *b) FL_OVERRIDE;
/* private data */
public: // IRIX 5.3 C++ compiler doesn't support private structures...
#ifndef FL_DOXYGEN
/** For internal use only. */
struct cb_item {
cb_item *next; /**< For internal use only. */
cb_item *prev; /**< For internal use only. */
char checked; /**< For internal use only. */
char selected; /**< For internal use only. */
char *text; /**< For internal use only. */
};
#endif // !FL_DOXYGEN
private:
cb_item *first;
cb_item *last;
cb_item *cache;
int cached_item;
int nitems_;
int nchecked_;
cb_item *find_item(int) const;
int lineno(cb_item *) const;
public:
Fl_Check_Browser(int x, int y, int w, int h, const char *l = 0);
/** The destructor deletes all list items and destroys the browser. */
~Fl_Check_Browser() { clear(); }
int add(char *s); // add an (unchecked) item
int add(char *s, int b); // add an item and set checked
// both return the new nitems()
int remove(int item); // delete an item. Returns nitems()
// inline const char * methods to avoid breaking binary compatibility...
/** See int Fl_Check_Browser::add(char *s) */
int add(const char *s) { return add((char *)s); }
/** See int Fl_Check_Browser::add(char *s) */
int add(const char *s, int b) { return add((char *)s, b); }
void clear(); // delete all items
/**
Returns how many lines are in the browser. The last line number is equal to
this.
*/
int nitems() const { return nitems_; }
/** Returns how many items are currently checked. */
int nchecked() const { return nchecked_; }
int checked(int item) const;
void checked(int item, int b);
/** Equivalent to Fl_Check_Browser::checked(item, 1). */
void set_checked(int item) { checked(item, 1); }
void check_all();
void check_none();
int value() const; // currently selected item
char *text(int item) const; // returns pointer to internal buffer
protected:
int handle(int) FL_OVERRIDE;
};
#endif // Fl_Check_Browser_H
@@ -0,0 +1,33 @@
//
// Check button header file for the Fast Light Tool Kit (FLTK).
//
// Copyright 1998-2014 by Bill Spitzak and others.
//
// This library is free software. Distribution and use rights are outlined in
// the file "COPYING" which should have been included with this file. If this
// file is missing or damaged, see the license at:
//
// https://www.fltk.org/COPYING.php
//
// Please see the following page on how to report bugs and issues:
//
// https://www.fltk.org/bugs.php
//
#ifndef Fl_Check_Button_H
#define Fl_Check_Button_H
#include "Fl_Light_Button.H"
/*
class: Fl_Check_Button.
A button with a "checkmark" to show its status.
*/
class FL_EXPORT Fl_Check_Button : public Fl_Light_Button {
public:
Fl_Check_Button(int X, int Y, int W, int H, const char *L = 0);
};
#endif
+123
View File
@@ -0,0 +1,123 @@
//
// Choice header file for the Fast Light Tool Kit (FLTK).
//
// Copyright 1998-2024 by Bill Spitzak and others.
//
// This library is free software. Distribution and use rights are outlined in
// the file "COPYING" which should have been included with this file. If this
// file is missing or damaged, see the license at:
//
// https://www.fltk.org/COPYING.php
//
// Please see the following page on how to report bugs and issues:
//
// https://www.fltk.org/bugs.php
//
/* \file
Fl_Choice widget . */
#ifndef Fl_Choice_H
#define Fl_Choice_H
#include "Fl_Menu_.H"
/**
\class Fl_Choice
\brief A button that is used to pop up a menu.
\image html choice.png
\image latex choice.png "Fl_Choice" width=4cm
This is a button that, when pushed, pops up a menu (or hierarchy of menus)
defined by an array of Fl_Menu_Item objects.
Motif calls this an OptionButton.
The only difference between this and a Fl_Menu_Button is that the name of
the most recent chosen menu item is displayed inside the box, while the
label is displayed outside the box. However, since the use of this is most
often to control a single variable rather than do individual callbacks,
some of the Fl_Menu_Button methods are redescribed here in those terms.
When the user clicks a menu item, value() is set to that item
and then:
- The item's callback is done if one has been set; the
Fl_Choice is passed as the Fl_Widget* argument,
along with any userdata configured for the callback.
- If the item does not have a callback, the Fl_Choice widget's
callback is done instead, along with any userdata configured
for it. The callback can determine which item was picked using
value(), mvalue(), item_pathname(), etc.
All three mouse buttons pop up the menu. The Forms behavior of the first
two buttons to increment/decrement the choice is not implemented. This
could be added with a subclass, however.
The menu will also pop up in response to shortcuts indicated by putting
a '\&' character in the label(). See Fl_Button::shortcut(int s) for a
description of this.
Typing the shortcut() of any of the items will do exactly the same as when
you pick the item with the mouse. The '\&' character in item names are
only looked at when the menu is popped up, however.
The inherited Fl_Widget::changed() and related methods can be used as follows:
\li <tt>int Fl_Widget::changed() const</tt>
This value is true when the user picks a different value. <em>It is turned
off by value() and just before doing a callback (the callback can turn
it back on if desired).</em>
\li <tt>void Fl_Widget::set_changed()</tt>
This method sets the changed() flag.
\li <tt>void Fl_Widget::clear_changed()</tt>
This method clears the changed() flag.
The inherited Fl_Menu_::down_box() methods can be used as follows:
\li <tt>Fl_Boxtype Fl_Menu_::down_box() const</tt>
Gets the current down box, which is used when the menu is popped up.
The default down box type is \c FL_DOWN_BOX.
\li <tt>void Fl_Menu_::down_box(Fl_Boxtype b)</tt>
Sets the current down box type to \p b.
Simple example:
\par
\code
#include <FL/Fl.H>
#include <FL/Fl_Window.H>
#include <FL/Fl_Choice.H>
int main() {
Fl_Window *win = new Fl_Window(300,200);
Fl_Choice *choice = new Fl_Choice(100,10,100,25,"Choice:");
choice->add("Zero");
choice->add("One");
choice->add("Two");
choice->add("Three");
choice->value(2); // make "Two" selected by default (zero based!)
win->end();
win->show();
return Fl::run();
}
\endcode
*/
class FL_EXPORT Fl_Choice : public Fl_Menu_ {
protected:
void draw() FL_OVERRIDE;
public:
int handle(int) FL_OVERRIDE;
Fl_Choice(int X, int Y, int W, int H, const char *L = 0);
/**
Gets the index of the last item chosen by the user.
The index is -1 initially.
*/
int value() const {return Fl_Menu_::value();}
int value(int v);
int value(const Fl_Menu_Item* v);
};
#endif
+163
View File
@@ -0,0 +1,163 @@
//
// Clock header file for the Fast Light Tool Kit (FLTK).
//
// Copyright 1998-2017 by Bill Spitzak and others.
//
// This library is free software. Distribution and use rights are outlined in
// the file "COPYING" which should have been included with this file. If this
// file is missing or damaged, see the license at:
//
// https://www.fltk.org/COPYING.php
//
// Please see the following page on how to report bugs and issues:
//
// https://www.fltk.org/bugs.php
//
/* \file
Fl_Clock, Fl_Clock_Output widgets . */
#ifndef Fl_Clock_H
#define Fl_Clock_H
#ifndef Fl_Widget_H
#include "Fl_Widget.H"
#endif
// Values for type():
// Please change doxygen documentation below (class Fl_Clock_Output)
// accordingly as well when changing the following type values:
#define FL_SQUARE_CLOCK 0 /**< type() of Square Clock variant */
#define FL_ROUND_CLOCK 1 /**< type() of Round Clock variant */
#define FL_ANALOG_CLOCK FL_SQUARE_CLOCK /**< An analog clock is square */
#define FL_DIGITAL_CLOCK FL_SQUARE_CLOCK /**< Not yet implemented */
// fabien: Please keep the horizontal formatting of both images in class desc,
// don't lose vertical space for nothing!
/**
\class Fl_Clock_Output
\brief This widget can be used to display a program-supplied time.
The time shown on the clock is not updated. To display the current time,
use Fl_Clock instead.
\htmlonly <BR> <table align=CENTER border=1 cellpadding=5 >
<caption align=bottom>type() FL_SQUARE_CLOCK and FL_ROUND_CLOCK </caption> <TR><TD> \endhtmlonly
\image html clock.png
\htmlonly </TD> <TD> \endhtmlonly
\image html round_clock.png
\htmlonly </TD> </TR> </table> \endhtmlonly
\image latex clock.png "FL_SQUARE_CLOCK type" width=4cm
\image latex round_clock.png "FL_ROUND_CLOCK type" width=4cm
Values for clock type() (\#include \<FL/Clock.H\>):
\code
#define FL_SQUARE_CLOCK 0 // Square Clock variant
#define FL_ROUND_CLOCK 1 // Round Clock variant
#define FL_ANALOG_CLOCK FL_SQUARE_CLOCK // An analog clock is square
#define FL_DIGITAL_CLOCK FL_SQUARE_CLOCK // Not yet implemented
\endcode
*/
class FL_EXPORT Fl_Clock_Output : public Fl_Widget {
int hour_, minute_, second_;
ulong value_;
int shadow_; // draw shadows of hands
void drawhands(Fl_Color,Fl_Color); // part of draw
protected:
void draw() FL_OVERRIDE;
void draw(int X, int Y, int W, int H);
public:
Fl_Clock_Output(int X, int Y, int W, int H, const char *L = 0);
void value(ulong v); // set to this Unix time
void value(int H, int m, int s);
/**
Returns the displayed time.
Returns the time in seconds since the UNIX epoch (January 1, 1970).
\see value(ulong)
*/
ulong value() const {return value_;}
/**
Returns the displayed hour (0 to 23).
\see value(), minute(), second()
*/
int hour() const {return hour_;}
/**
Returns the displayed minute (0 to 59).
\see value(), hour(), second()
*/
int minute() const {return minute_;}
/**
Returns the displayed second (0 to 60, 60=leap second).
\see value(), hour(), minute()
*/
int second() const {return second_;}
/**
Returns the shadow drawing mode of the hands.
\returns shadow drawing mode of the hands
\retval 0 no shadows
\retval 1 draw shadows of hands (default)
*/
int shadow() const {return shadow_;}
/**
Sets the shadow drawing mode of the hands.
Enables (1) or disables (0) drawing the hands with shadows.
Values except 0 and 1 are reserved for future extensions and
yield undefined behavior.
The default is to draw the shadows (1).
\param[in] mode 1 = shadows (default), 0 = no shadows
*/
void shadow(int mode) { shadow_ = mode ? 1 : 0; }
};
// a Fl_Clock displays the current time always by using a timeout:
/**
\class Fl_Clock
\brief This widget provides a round analog clock display.
Fl_Clock is provided for Forms compatibility.
It installs a 1-second timeout callback using Fl::add_timeout().
You can choose the rounded or square type of the clock with type().
Please see Fl_Clock_Output widget for applicable values.
\htmlonly <BR> <table align=CENTER border=1 cellpadding=5 >
<caption align=bottom>type() FL_SQUARE_CLOCK and FL_ROUND_CLOCK </caption> <TR><TD> \endhtmlonly
\image html clock.png
\htmlonly </TD> <TD> \endhtmlonly
\image html round_clock.png
\htmlonly </TD> </TR> </table> \endhtmlonly
\image latex clock.png "FL_SQUARE_CLOCK type" width=4cm
\image latex round_clock.png "FL_ROUND_CLOCK type" width=4cm
\see class Fl_Clock_Output
*/
class FL_EXPORT Fl_Clock : public Fl_Clock_Output {
public:
int handle(int) FL_OVERRIDE;
Fl_Clock(int X, int Y, int W, int H, const char *L = 0);
Fl_Clock(uchar t, int X, int Y, int W, int H, const char *L);
~Fl_Clock();
};
#endif
@@ -0,0 +1,193 @@
//
// Color chooser header file for the Fast Light Tool Kit (FLTK).
//
// Copyright 1998-2019 by Bill Spitzak and others.
//
// This library is free software. Distribution and use rights are outlined in
// the file "COPYING" which should have been included with this file. If this
// file is missing or damaged, see the license at:
//
// https://www.fltk.org/COPYING.php
//
// Please see the following page on how to report bugs and issues:
//
// https://www.fltk.org/bugs.php
//
/** \file
Fl_Color_Chooser widget . */
// The color chooser object and the color chooser popup. The popup
// is just a window containing a single color chooser and some boxes
// to indicate the current and cancelled color.
#ifndef Fl_Color_Chooser_H
#define Fl_Color_Chooser_H
#include <FL/Fl_Group.H>
#include <FL/Fl_Box.H>
#include <FL/Fl_Return_Button.H>
#include <FL/Fl_Choice.H>
#include <FL/Fl_Value_Input.H>
#ifndef FL_DOXYGEN
/** For internal use only */
class FL_EXPORT Flcc_HueBox : public Fl_Widget {
int px, py;
protected:
void draw() FL_OVERRIDE;
int handle_key(int);
public:
int handle(int) FL_OVERRIDE;
Flcc_HueBox(int X, int Y, int W, int H) : Fl_Widget(X,Y,W,H) {
px = py = 0;}
};
/** For internal use only */
class FL_EXPORT Flcc_ValueBox : public Fl_Widget {
int py;
protected:
void draw() FL_OVERRIDE;
int handle_key(int);
public:
int handle(int) FL_OVERRIDE;
Flcc_ValueBox(int X, int Y, int W, int H) : Fl_Widget(X,Y,W,H) {
py = 0;}
};
/** For internal use only */
class FL_EXPORT Flcc_Value_Input : public Fl_Value_Input {
public:
int format(char*) FL_OVERRIDE;
Flcc_Value_Input(int X, int Y, int W, int H) : Fl_Value_Input(X,Y,W,H) {}
};
#endif // !FL_DOXYGEN
/** \addtogroup group_comdlg
@{ */
/**
\class Fl_Color_Chooser
\brief The Fl_Color_Chooser widget provides a standard RGB color chooser.
\image html fl_color_chooser.jpg
\image latex fl_color_chooser.jpg "fl_color_chooser()" width=5cm
You can place any number of the widgets into a panel of your own design.
The diagram shows the widget as part of a color chooser dialog created by
the fl_color_chooser() function. The Fl_Color_Chooser widget contains the
hue box, value slider, and rgb input fields from the above diagram (it
does not have the color chips or the Cancel or OK buttons).
The callback is done every time the user changes the rgb value. It is not
done if they move the hue control in a way that produces the \e same rgb
value, such as when saturation or value is zero.
The fl_color_chooser() function pops up a window to let the user pick an
arbitrary RGB color. They can pick the hue and saturation in the "hue box"
on the left (hold down CTRL to just change the saturation), and the
brightness using the vertical slider. Or they can type the 8-bit numbers
into the RGB Fl_Value_Input fields, or drag the mouse across them to adjust
them. The pull-down menu lets the user set the input fields to show RGB,
HSV, or 8-bit RGB (0 to 255).
The user can press CTRL-C to copy the currently selected color value as
text in RGB hex format with leading zeroes to the clipboard, for instance
\p FL_GREEN would be '00FF00' (since FLTK 1.4.0).
fl_color_chooser() returns non-zero if the user picks ok, and updates the
RGB values. If the user picks cancel or closes the window this returns
zero and leaves RGB unchanged.
If you use the color chooser on an 8-bit screen, it will allocate all the
available colors, leaving you no space to exactly represent the color the
user picks! You can however use fl_rectf() to fill a region with a simulated
color using dithering.
Callback reasons can be \c FL_REASON_DRAGGED, \c FL_REASON_CHANGED, or
\c FL_REASON_RESELECTED.
*/
/** @} */
class FL_EXPORT Fl_Color_Chooser : public Fl_Group {
Flcc_HueBox huebox;
Flcc_ValueBox valuebox;
Fl_Choice choice;
Flcc_Value_Input rvalue;
Flcc_Value_Input gvalue;
Flcc_Value_Input bvalue;
Fl_Box resize_box;
double hue_, saturation_, value_;
double r_, g_, b_;
void set_valuators();
static void rgb_cb(Fl_Widget*, void*);
static void mode_cb(Fl_Widget*, void*);
public:
int handle(int e) FL_OVERRIDE;
/**
Returns which Fl_Color_Chooser variant is currently active
\return color modes are rgb(0), byte(1), hex(2), or hsv(3)
*/
int mode() {return choice.value();}
/**
Set which Fl_Color_Chooser variant is currently active
\param[in] newMode color modes are rgb(0), byte(1), hex(2), or hsv(3)
*/
void mode(int newMode);
/**
Returns the current hue.
0 <= hue < 6. Zero is red, one is yellow, two is green, etc.
<em>This value is convenient for the internal calculations - some other
systems consider hue to run from zero to one, or from 0 to 360.</em>
*/
double hue() const {return hue_;}
/**
Returns the saturation.
0 <= saturation <= 1.
*/
double saturation() const {return saturation_;}
/**
Returns the value/brightness.
0 <= value <= 1.
*/
double value() const {return value_;}
/**
Returns the current red value.
0 <= r <= 1.
*/
double r() const {return r_;}
/**
Returns the current green value.
0 <= g <= 1.
*/
double g() const {return g_;}
/**
Returns the current blue value.
0 <= b <= 1.
*/
double b() const {return b_;}
int hsv(double H, double S, double V);
int rgb(double R, double G, double B);
static void hsv2rgb(double H, double S, double V, double& R, double& G, double& B);
static void rgb2hsv(double R, double G, double B, double& H, double& S, double& V);
Fl_Color_Chooser(int X, int Y, int W, int H, const char *L = 0);
};
FL_EXPORT int fl_color_chooser(const char* name, double& r, double& g, double& b, int m=-1);
FL_EXPORT int fl_color_chooser(const char* name, uchar& r, uchar& g, uchar& b, int m=-1);
#endif
@@ -0,0 +1,107 @@
//
// Copy-to-clipboard code for the Fast Light Tool Kit (FLTK).
//
// Copyright 1998-2023 by Bill Spitzak and others.
//
// This library is free software. Distribution and use rights are outlined in
// the file "COPYING" which should have been included with this file. If this
// file is missing or damaged, see the license at:
//
// https://www.fltk.org/COPYING.php
//
// Please see the following page on how to report bugs and issues:
//
// https://www.fltk.org/bugs.php
//
#ifndef Fl_Copy_Surface_H
#define Fl_Copy_Surface_H
#include <FL/Fl_Widget_Surface.H>
/** Supports copying of graphical data to the clipboard.
<br> After creation of an Fl_Copy_Surface object, make it the current drawing surface calling Fl_Surface_Device::push_current(), and all subsequent graphics requests
will be recorded in the clipboard. It's possible to draw widgets (using Fl_Copy_Surface::draw()
) or to use any of the \ref fl_drawings or the \ref fl_attributes.
Finally, delete the Fl_Copy_Surface object to load the clipboard with the graphical data.
<br> Fl_Gl_Window 's can be copied to the clipboard as well.
<br> Usage example:
\code
Fl_Widget *g = ...; // a widget you want to copy to the clipboard
Fl_Copy_Surface *copy_surf = new Fl_Copy_Surface(g->w(), g->h()); // create an Fl_Copy_Surface object
Fl_Surface_Device::push_current(copy_surf); // direct graphics requests to the clipboard
fl_color(FL_WHITE); fl_rectf(0, 0, g->w(), g->h()); // draw a white background
copy_surf->draw(g); // draw the g widget in the clipboard
Fl_Surface_Device::pop_current(); // direct graphics requests back to their previous destination
delete copy_surf; // after this, the clipboard is loaded
\endcode
Platform details:
\li Windows: Transparent RGB images copy without transparency.
The graphical data are copied to the clipboard in two formats: 1) as an 'enhanced metafile';
2) as a color bitmap. Applications to which the clipboard content is pasted can use the format
that suits them best.
\li Mac OS: The graphical data are copied to the clipboard (a.k.a. pasteboard) in two 'flavors':
1) in vectorial form as PDF data; 2) in bitmap form as a TIFF image.
Applications to which the clipboard content is pasted can use the flavor that suits them best.
\li X11 and Wayland: the graphical data are copied to the clipboard as an image in BMP format.
*/
class FL_EXPORT Fl_Copy_Surface : public Fl_Widget_Surface {
private:
class Fl_Copy_Surface_Driver *platform_surface;
protected:
void translate(int x, int y) FL_OVERRIDE;
void untranslate() FL_OVERRIDE;
public:
Fl_Copy_Surface(int w, int h);
~Fl_Copy_Surface();
void set_current() FL_OVERRIDE;
bool is_current() FL_OVERRIDE;
/** Returns the pixel width of the copy surface */
int w();
/** Returns the pixel height of the copy surface */
int h();
void origin(int *x, int *y) FL_OVERRIDE;
void origin(int x, int y) FL_OVERRIDE;
int printable_rect(int *w, int *h) FL_OVERRIDE;
};
/**
\cond DriverDev
\addtogroup DriverDeveloper
\{
*/
/**
A base class describing the interface between FLTK and draw-to-clipboard operations.
This class is only for internal use by the FLTK library.
A supported platform should implement the virtual methods of this class
in order to support drawing to the clipboard through class Fl_Copy_Surface.
*/
class Fl_Copy_Surface_Driver : public Fl_Widget_Surface {
friend class Fl_Copy_Surface;
protected:
int width;
int height;
Fl_Copy_Surface_Driver(int w, int h) : Fl_Widget_Surface(NULL), width(w), height(h) {}
virtual ~Fl_Copy_Surface_Driver() {}
void set_current() FL_OVERRIDE = 0;
void translate(int x, int y) FL_OVERRIDE = 0;
void untranslate() FL_OVERRIDE = 0;
int printable_rect(int *w, int *h) FL_OVERRIDE;
/** Each platform implements this function its own way.
It returns an object implementing all virtual functions
of class Fl_Copy_Surface_Driver for the platform.
*/
static Fl_Copy_Surface_Driver *newCopySurfaceDriver(int w, int h);
};
/**
\}
\endcond
*/
#endif // Fl_Copy_Surface_H
Loaded 100 of 1611 files, more files were not shown because too many files have changed in this diff. Show more