FLTK: The Fast, Lightweight, Cross-Platform C++ GUI Toolkit

README - Fast Light Tool Kit (FLTK) Version 1.4.0

WHAT IS FLTK?

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

Download details:

Author:  fltk
Source: https://github.com/fltk/fltk

License: View license

#cpluplus #c 

FLTK: The Fast, Lightweight, Cross-Platform C++ GUI Toolkit
1.50 GEEK