The Fast Light Tool Kit is a cross-platform C++ GUI toolkit for
UNIX®/Linux® (X11 or Wayland), Microsoft® Windows®, and macOS®.
FLTK provides modern GUI functionality without the bloat and
supports 3D graphics via OpenGL® and its built-in GLUT
emulation. It was originally developed by Mr. Bill Spitzak
and is currently maintained by a small group of developers
across the world with a central repository on GitHub.
For more information see README.txt:
https://github.com/fltk/fltk/blob/master/README.txt
.clang-format
#
# 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
.gitattributes
#
# Git attributes for special files
#
# files not mentioned here are either text files
# or their types are "guessed" properly by Git
#
# todo (migration from svn to git):
#
# - do we need to define Git attributes for source and text files?
# - if yes, how to migrate "svn:eol-style native" to Git?
# - which attributes do we need for fluid (.fl) files?
#
# files that will not be exported in source tarballs
# (note: .git is not exported anyway)
makesrcdist export-ignore eol=lf
.gitattributes export-ignore
.github export-ignore
.gitignore export-ignore
.gitlab-ci.yml export-ignore
# fluid files (eol=lf or text?)
*.fl eol=lf
# shell scripts etc. with Unix line endings (lf)
*.ac eol=lf
*.in eol=lf
*.desktop eol=lf
*.sh eol=lf
fltk-config.in eol=lf
documentation/make_pdf eol=lf
misc/update_config_scripts eol=lf
# files with Windows line endings (crlf)
*.rc eol=crlf
*.bat eol=crlf
# binary files
*.ico binary
*.icns binary
*.jar binary
*.png binary
*.jpg binary
*.ttf binary
*.xcf binary
*.xcf_gz binary
# image files that consist of ASCII text
# *.xbm text
# *.xpm text
.gitignore
#
# Files to be ignored by Git (do not commit)
#
# Ignore everywhere, also in subdirectories
*.bck
*.exe
*.o
**/.DS_Store
# CMake build artifacts if built in source - not recommended, but anyway
bin/
**/cmake_install.cmake
**/CMakeCache.txt
**/CMakeFiles/
etc/UseFLTK.cmake
cmake_uninstall.cmake
UseFLTK.cmake
FLTK.sln
FLTK-Targets.cmake
FLTKConfig.cmake
etc/FLTKConfig.cmake
# MSVC
*.tlog
.vs/
# VS Code (Visual Studio Code) Editor
.vscode/
# /
/autom4te*.cache
/build
/clang
/config.cache
/config.h
/config.log
/config.status
/configure
/fltk-config
/fltk.list
/fltk.spec
/makeinclude
/TAGS
# /FL
/FL/fl_config.h
/FL/Makefile
# /cairo/
/cairo/*.so*
/cairo/*.dll
# /lib/
/lib/lib*
/lib/*.lib
/lib/*.a
# /misc/
/misc/doxystar
# /src/
/src/*.so*
/src/*.sl*
/src/*.a
/src/*.dll
/src/*.sav
/src/*.dylib
# Wayland build artifacts (generated files)
src/text-input-client-protocol.h
src/text-input-protocol.c
src/xdg-decoration-client-protocol.h
src/xdg-decoration-protocol.c
src/xdg-shell-client-protocol.h
src/xdg-shell-protocol.c
# Wayland demo programs (no longer being built)
# libdecor/build/demo
# libdecor/build/egl
/out/build/x64-Debug/.cmake/api/v1/query/client-MicrosoftVS/query.json
/out/build/x64-Debug
/CMakeSettings.json
/CppProperties.json
.gitlab-ci.yml
# This file controls GitLab CI (Continuous Integration) for FLTK.
#
# It serves two purposes:
#
# (1) Continuously building FLTK with one or more build systems.
# (2) Generating current HTML documentation and putting it online.
#
# The HTML documentation will be viewable at:
#
# https://fltk.gitlab.io/fltk/
#
# The PDF documentation will be viewable at:
#
# https://fltk.gitlab.io/fltk/fltk.pdf
#
# Details of this script:
#
# use the official gcc image, based on debian
# can use versions as well, like gcc:5.2
# see https://hub.docker.com/_/gcc/
image: gcc
stages:
- build
- deploy
# Build with autoconf/make (including Pango and Cairo)
# Disabled for regular builds after commits to save build time: "only schedules"
# Note: Build time limits on "GitLab Free" effective Oct 2020: 400 minutes per month
build-autotools:
stage: build
only:
- schedules
# install the necessary build tools
before_script:
- apt update && apt -y install make autoconf man
- apt -y install freeglut3-dev libfontconfig-dev libxft-dev libglew-dev
- apt -y install libxcursor-dev libxinerama-dev libasound2-dev
- apt -y install libpango1.0-dev libcairo2-dev
script:
- make clean
- ./configure --enable-pango --enable-cairo
- time make -j3
- cd examples && time make
# Build with CMake and Ninja (with pango, cairo, building examples)
build-cmake:
stage: build
only:
- master
# install the necessary build tools
before_script:
- date
- apt update && apt -y install cmake ninja-build
- apt -y install freeglut3-dev libfontconfig-dev libxft-dev libglew-dev
- apt -y install libxcursor-dev libxinerama-dev libasound2-dev
- apt -y install libpango1.0-dev libcairo2-dev
script:
- date
- gcc --version
- mkdir build && cd build
- cmake -G Ninja -DCMAKE_BUILD_TYPE=Debug -DFLTK_BUILD_EXAMPLES=ON -DOPTION_USE_PANGO=ON -DOPTION_CAIRO=ON ..
- date
- time ninja
- date
# Generate and install HTML documentation
pages:
stage: deploy
only:
- master
# run this job (documentation) independent of the build jobs (empty "needs" clause)
needs: []
# install the necessary build tools
before_script:
- date
- apt update && apt -y install make autoconf man doxygen doxygen-latex
script:
- date
- make clean
- cd documentation
- date
- make && make html
- date
- make pdf
- date
- cd ..
- mkdir -p public/
- mv documentation/html/* public/
- mv documentation/fltk.pdf public/
- date
artifacts:
paths:
- public
expire_in: 8 days
Author: fltk
Source: https://github.com/fltk/fltk
License: View license