diff options
| author | marco <marco@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2008-01-27 09:51:30 +0000 |
|---|---|---|
| committer | marco <marco@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2008-01-27 09:51:30 +0000 |
| commit | aa091a96b9af690e847cf7aa4cc9fa0b87e65b90 (patch) | |
| tree | 6b104af97846ce9ed969321dde854f12b9533a02 /packages/xforms | |
| parent | 99adbee400607d33c0752682c6ef83aad92c2971 (diff) | |
| download | fpc-aa091a96b9af690e847cf7aa4cc9fa0b87e65b90.tar.gz | |
* xforms moved
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@10015 3ad0048d-3df7-0310-abae-a5850022a9f2
Diffstat (limited to 'packages/xforms')
66 files changed, 14004 insertions, 0 deletions
diff --git a/packages/xforms/Makefile b/packages/xforms/Makefile new file mode 100644 index 0000000000..c236cb18a1 --- /dev/null +++ b/packages/xforms/Makefile @@ -0,0 +1,2924 @@ +# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2008/01/26] +# +default: all +MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-wince arm-gba arm-nds arm-embedded arm-symbian powerpc64-linux powerpc64-darwin powerpc64-embedded +BSDs = freebsd netbsd openbsd darwin +UNIXs = linux $(BSDs) solaris qnx +LIMIT83fs = go32v2 os2 emx watcom +OSNeedsComspecToRunBatch = go32v2 watcom +FORCE: +.PHONY: FORCE +override PATH:=$(patsubst %/,%,$(subst \,/,$(PATH))) +ifneq ($(findstring darwin,$(OSTYPE)),) +inUnix=1 #darwin +SEARCHPATH:=$(filter-out .,$(subst :, ,$(PATH))) +else +ifeq ($(findstring ;,$(PATH)),) +inUnix=1 +SEARCHPATH:=$(filter-out .,$(subst :, ,$(PATH))) +else +SEARCHPATH:=$(subst ;, ,$(PATH)) +endif +endif +SEARCHPATH+=$(patsubst %/,%,$(subst \,/,$(dir $(MAKE)))) +PWD:=$(strip $(wildcard $(addsuffix /pwd.exe,$(SEARCHPATH)))) +ifeq ($(PWD),) +PWD:=$(strip $(wildcard $(addsuffix /pwd,$(SEARCHPATH)))) +ifeq ($(PWD),) +$(error You need the GNU utils package to use this Makefile) +else +PWD:=$(firstword $(PWD)) +SRCEXEEXT= +endif +else +PWD:=$(firstword $(PWD)) +SRCEXEEXT=.exe +endif +ifndef inUnix +ifeq ($(OS),Windows_NT) +inWinNT=1 +else +ifdef OS2_SHELL +inOS2=1 +endif +endif +else +ifneq ($(findstring cygdrive,$(PATH)),) +inCygWin=1 +endif +endif +ifdef inUnix +SRCBATCHEXT=.sh +else +ifdef inOS2 +SRCBATCHEXT=.cmd +else +SRCBATCHEXT=.bat +endif +endif +ifdef COMSPEC +ifneq ($(findstring $(OS_SOURCE),$(OSNeedsComspecToRunBatch)),) +RUNBATCH=$(COMSPEC) /C +endif +endif +ifdef inUnix +PATHSEP=/ +else +PATHSEP:=$(subst /,\,/) +ifdef inCygWin +PATHSEP=/ +endif +endif +ifdef PWD +BASEDIR:=$(subst \,/,$(shell $(PWD))) +ifdef inCygWin +ifneq ($(findstring /cygdrive/,$(BASEDIR)),) +BASENODIR:=$(patsubst /cygdrive%,%,$(BASEDIR)) +BASEDRIVE:=$(firstword $(subst /, ,$(BASENODIR))) +BASEDIR:=$(subst /cygdrive/$(BASEDRIVE)/,$(BASEDRIVE):/,$(BASEDIR)) +endif +endif +else +BASEDIR=. +endif +ifdef inOS2 +ifndef ECHO +ECHO:=$(strip $(wildcard $(addsuffix /gecho$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(ECHO),) +ECHO:=$(strip $(wildcard $(addsuffix /echo$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(ECHO),) +ECHO=echo +else +ECHO:=$(firstword $(ECHO)) +endif +else +ECHO:=$(firstword $(ECHO)) +endif +endif +export ECHO +endif +override DEFAULT_FPCDIR=../.. +ifndef FPC +ifdef PP +FPC=$(PP) +endif +endif +ifndef FPC +FPCPROG:=$(strip $(wildcard $(addsuffix /fpc$(SRCEXEEXT),$(SEARCHPATH)))) +ifneq ($(FPCPROG),) +FPCPROG:=$(firstword $(FPCPROG)) +ifneq ($(CPU_TARGET),) +FPC:=$(shell $(FPCPROG) -P$(CPU_TARGET) -PB) +else +FPC:=$(shell $(FPCPROG) -PB) +endif +ifneq ($(findstring Error,$(FPC)),) +override FPC=$(firstword $(strip $(wildcard $(addsuffix /ppc386$(SRCEXEEXT),$(SEARCHPATH))))) +endif +else +override FPC=$(firstword $(strip $(wildcard $(addsuffix /ppc386$(SRCEXEEXT),$(SEARCHPATH))))) +endif +endif +override FPC:=$(subst $(SRCEXEEXT),,$(FPC)) +override FPC:=$(subst \,/,$(FPC))$(SRCEXEEXT) +FOUNDFPC:=$(strip $(wildcard $(FPC))) +ifeq ($(FOUNDFPC),) +FOUNDFPC=$(strip $(wildcard $(addsuffix /$(FPC),$(SEARCHPATH)))) +ifeq ($(FOUNDFPC),) +$(error Compiler $(FPC) not found) +endif +endif +ifndef FPC_COMPILERINFO +FPC_COMPILERINFO:=$(shell $(FPC) -iVSPTPSOTO) +endif +ifndef FPC_VERSION +FPC_VERSION:=$(word 1,$(FPC_COMPILERINFO)) +endif +export FPC FPC_VERSION FPC_COMPILERINFO +unexport CHECKDEPEND ALLDEPENDENCIES +ifndef CPU_TARGET +ifdef CPU_TARGET_DEFAULT +CPU_TARGET=$(CPU_TARGET_DEFAULT) +endif +endif +ifndef OS_TARGET +ifdef OS_TARGET_DEFAULT +OS_TARGET=$(OS_TARGET_DEFAULT) +endif +endif +ifneq ($(words $(FPC_COMPILERINFO)),5) +FPC_COMPILERINFO+=$(shell $(FPC) -iSP) +FPC_COMPILERINFO+=$(shell $(FPC) -iTP) +FPC_COMPILERINFO+=$(shell $(FPC) -iSO) +FPC_COMPILERINFO+=$(shell $(FPC) -iTO) +endif +ifndef CPU_SOURCE +CPU_SOURCE:=$(word 2,$(FPC_COMPILERINFO)) +endif +ifndef CPU_TARGET +CPU_TARGET:=$(word 3,$(FPC_COMPILERINFO)) +endif +ifndef OS_SOURCE +OS_SOURCE:=$(word 4,$(FPC_COMPILERINFO)) +endif +ifndef OS_TARGET +OS_TARGET:=$(word 5,$(FPC_COMPILERINFO)) +endif +FULL_TARGET=$(CPU_TARGET)-$(OS_TARGET) +FULL_SOURCE=$(CPU_SOURCE)-$(OS_SOURCE) +ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) +TARGETSUFFIX=$(OS_TARGET) +SOURCESUFFIX=$(OS_SOURCE) +else +TARGETSUFFIX=$(FULL_TARGET) +SOURCESUFFIX=$(FULL_SOURCE) +endif +ifneq ($(FULL_TARGET),$(FULL_SOURCE)) +CROSSCOMPILE=1 +endif +ifeq ($(findstring makefile,$(MAKECMDGOALS)),) +ifeq ($(findstring $(FULL_TARGET),$(MAKEFILETARGETS)),) +$(error The Makefile doesn't support target $(FULL_TARGET), please run fpcmake first) +endif +endif +ifneq ($(findstring $(OS_TARGET),$(BSDs)),) +BSDhier=1 +endif +ifeq ($(OS_TARGET),linux) +linuxHier=1 +endif +export OS_TARGET OS_SOURCE CPU_TARGET CPU_SOURCE FULL_TARGET FULL_SOURCE TARGETSUFFIX SOURCESUFFIX CROSSCOMPILE +ifdef FPCDIR +override FPCDIR:=$(subst \,/,$(FPCDIR)) +ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),) +override FPCDIR=wrong +endif +else +override FPCDIR=wrong +endif +ifdef DEFAULT_FPCDIR +ifeq ($(FPCDIR),wrong) +override FPCDIR:=$(subst \,/,$(DEFAULT_FPCDIR)) +ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),) +override FPCDIR=wrong +endif +endif +endif +ifeq ($(FPCDIR),wrong) +ifdef inUnix +override FPCDIR=/usr/local/lib/fpc/$(FPC_VERSION) +ifeq ($(wildcard $(FPCDIR)/units),) +override FPCDIR=/usr/lib/fpc/$(FPC_VERSION) +endif +else +override FPCDIR:=$(subst /$(FPC),,$(firstword $(strip $(wildcard $(addsuffix /$(FPC),$(SEARCHPATH)))))) +override FPCDIR:=$(FPCDIR)/.. +ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),) +override FPCDIR:=$(FPCDIR)/.. +ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),) +override FPCDIR:=$(BASEDIR) +ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),) +override FPCDIR=c:/pp +endif +endif +endif +endif +endif +ifndef CROSSBINDIR +CROSSBINDIR:=$(wildcard $(FPCDIR)/bin/$(TARGETSUFFIX)) +endif +ifndef BINUTILSPREFIX +ifndef CROSSBINDIR +ifdef CROSSCOMPILE +BINUTILSPREFIX=$(CPU_TARGET)-$(OS_TARGET)- +endif +endif +endif +UNITSDIR:=$(wildcard $(FPCDIR)/units/$(TARGETSUFFIX)) +ifeq ($(UNITSDIR),) +UNITSDIR:=$(wildcard $(FPCDIR)/units/$(OS_TARGET)) +endif +PACKAGESDIR:=$(wildcard $(FPCDIR) $(FPCDIR)/packages $(FPCDIR)/packages/base $(FPCDIR)/packages/extra) +override PACKAGE_NAME=xforms +override PACKAGE_VERSION=2.0.0 +ifeq ($(FULL_TARGET),i386-linux) +override TARGET_PROGRAMS+=fd2pascal +endif +ifeq ($(FULL_TARGET),i386-go32v2) +override TARGET_PROGRAMS+=fd2pascal +endif +ifeq ($(FULL_TARGET),i386-win32) +override TARGET_PROGRAMS+=fd2pascal +endif +ifeq ($(FULL_TARGET),i386-os2) +override TARGET_PROGRAMS+=fd2pascal +endif +ifeq ($(FULL_TARGET),i386-freebsd) +override TARGET_PROGRAMS+=fd2pascal +endif +ifeq ($(FULL_TARGET),i386-beos) +override TARGET_PROGRAMS+=fd2pascal +endif +ifeq ($(FULL_TARGET),i386-netbsd) +override TARGET_PROGRAMS+=fd2pascal +endif +ifeq ($(FULL_TARGET),i386-solaris) +override TARGET_PROGRAMS+=fd2pascal +endif +ifeq ($(FULL_TARGET),i386-qnx) +override TARGET_PROGRAMS+=fd2pascal +endif +ifeq ($(FULL_TARGET),i386-netware) +override TARGET_PROGRAMS+=fd2pascal +endif +ifeq ($(FULL_TARGET),i386-openbsd) +override TARGET_PROGRAMS+=fd2pascal +endif +ifeq ($(FULL_TARGET),i386-wdosx) +override TARGET_PROGRAMS+=fd2pascal +endif +ifeq ($(FULL_TARGET),i386-darwin) +override TARGET_PROGRAMS+=fd2pascal +endif +ifeq ($(FULL_TARGET),i386-emx) +override TARGET_PROGRAMS+=fd2pascal +endif +ifeq ($(FULL_TARGET),i386-watcom) +override TARGET_PROGRAMS+=fd2pascal +endif +ifeq ($(FULL_TARGET),i386-netwlibc) +override TARGET_PROGRAMS+=fd2pascal +endif +ifeq ($(FULL_TARGET),i386-wince) +override TARGET_PROGRAMS+=fd2pascal +endif +ifeq ($(FULL_TARGET),i386-embedded) +override TARGET_PROGRAMS+=fd2pascal +endif +ifeq ($(FULL_TARGET),i386-symbian) +override TARGET_PROGRAMS+=fd2pascal +endif +ifeq ($(FULL_TARGET),m68k-linux) +override TARGET_PROGRAMS+=fd2pascal +endif +ifeq ($(FULL_TARGET),m68k-freebsd) +override TARGET_PROGRAMS+=fd2pascal +endif +ifeq ($(FULL_TARGET),m68k-netbsd) +override TARGET_PROGRAMS+=fd2pascal +endif +ifeq ($(FULL_TARGET),m68k-amiga) +override TARGET_PROGRAMS+=fd2pascal +endif +ifeq ($(FULL_TARGET),m68k-atari) +override TARGET_PROGRAMS+=fd2pascal +endif +ifeq ($(FULL_TARGET),m68k-openbsd) +override TARGET_PROGRAMS+=fd2pascal +endif +ifeq ($(FULL_TARGET),m68k-palmos) +override TARGET_PROGRAMS+=fd2pascal +endif +ifeq ($(FULL_TARGET),m68k-embedded) +override TARGET_PROGRAMS+=fd2pascal +endif +ifeq ($(FULL_TARGET),powerpc-linux) +override TARGET_PROGRAMS+=fd2pascal +endif +ifeq ($(FULL_TARGET),powerpc-netbsd) +override TARGET_PROGRAMS+=fd2pascal +endif +ifeq ($(FULL_TARGET),powerpc-amiga) +override TARGET_PROGRAMS+=fd2pascal +endif +ifeq ($(FULL_TARGET),powerpc-macos) +override TARGET_PROGRAMS+=fd2pascal +endif +ifeq ($(FULL_TARGET),powerpc-darwin) +override TARGET_PROGRAMS+=fd2pascal +endif +ifeq ($(FULL_TARGET),powerpc-morphos) +override TARGET_PROGRAMS+=fd2pascal +endif +ifeq ($(FULL_TARGET),powerpc-embedded) +override TARGET_PROGRAMS+=fd2pascal +endif +ifeq ($(FULL_TARGET),sparc-linux) +override TARGET_PROGRAMS+=fd2pascal +endif +ifeq ($(FULL_TARGET),sparc-netbsd) +override TARGET_PROGRAMS+=fd2pascal +endif +ifeq ($(FULL_TARGET),sparc-solaris) +override TARGET_PROGRAMS+=fd2pascal +endif +ifeq ($(FULL_TARGET),sparc-embedded) +override TARGET_PROGRAMS+=fd2pascal +endif +ifeq ($(FULL_TARGET),x86_64-linux) +override TARGET_PROGRAMS+=fd2pascal +endif +ifeq ($(FULL_TARGET),x86_64-freebsd) +override TARGET_PROGRAMS+=fd2pascal +endif +ifeq ($(FULL_TARGET),x86_64-darwin) +override TARGET_PROGRAMS+=fd2pascal +endif +ifeq ($(FULL_TARGET),x86_64-win64) +override TARGET_PROGRAMS+=fd2pascal +endif +ifeq ($(FULL_TARGET),x86_64-embedded) +override TARGET_PROGRAMS+=fd2pascal +endif +ifeq ($(FULL_TARGET),arm-linux) +override TARGET_PROGRAMS+=fd2pascal +endif +ifeq ($(FULL_TARGET),arm-palmos) +override TARGET_PROGRAMS+=fd2pascal +endif +ifeq ($(FULL_TARGET),arm-wince) +override TARGET_PROGRAMS+=fd2pascal +endif +ifeq ($(FULL_TARGET),arm-gba) +override TARGET_PROGRAMS+=fd2pascal +endif +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_PROGRAMS+=fd2pascal +endif +ifeq ($(FULL_TARGET),arm-embedded) +override TARGET_PROGRAMS+=fd2pascal +endif +ifeq ($(FULL_TARGET),arm-symbian) +override TARGET_PROGRAMS+=fd2pascal +endif +ifeq ($(FULL_TARGET),powerpc64-linux) +override TARGET_PROGRAMS+=fd2pascal +endif +ifeq ($(FULL_TARGET),powerpc64-darwin) +override TARGET_PROGRAMS+=fd2pascal +endif +ifeq ($(FULL_TARGET),powerpc64-embedded) +override TARGET_PROGRAMS+=fd2pascal +endif +ifeq ($(FULL_TARGET),i386-linux) +override TARGET_UNITS+=xforms +endif +ifeq ($(FULL_TARGET),i386-go32v2) +override TARGET_UNITS+=xforms +endif +ifeq ($(FULL_TARGET),i386-win32) +override TARGET_UNITS+=xforms +endif +ifeq ($(FULL_TARGET),i386-os2) +override TARGET_UNITS+=xforms +endif +ifeq ($(FULL_TARGET),i386-freebsd) +override TARGET_UNITS+=xforms +endif +ifeq ($(FULL_TARGET),i386-beos) +override TARGET_UNITS+=xforms +endif +ifeq ($(FULL_TARGET),i386-netbsd) +override TARGET_UNITS+=xforms +endif +ifeq ($(FULL_TARGET),i386-solaris) +override TARGET_UNITS+=xforms +endif +ifeq ($(FULL_TARGET),i386-qnx) +override TARGET_UNITS+=xforms +endif +ifeq ($(FULL_TARGET),i386-netware) +override TARGET_UNITS+=xforms +endif +ifeq ($(FULL_TARGET),i386-openbsd) +override TARGET_UNITS+=xforms +endif +ifeq ($(FULL_TARGET),i386-wdosx) +override TARGET_UNITS+=xforms +endif +ifeq ($(FULL_TARGET),i386-darwin) +override TARGET_UNITS+=xforms +endif +ifeq ($(FULL_TARGET),i386-emx) +override TARGET_UNITS+=xforms +endif +ifeq ($(FULL_TARGET),i386-watcom) +override TARGET_UNITS+=xforms +endif +ifeq ($(FULL_TARGET),i386-netwlibc) +override TARGET_UNITS+=xforms +endif +ifeq ($(FULL_TARGET),i386-wince) +override TARGET_UNITS+=xforms +endif +ifeq ($(FULL_TARGET),i386-embedded) +override TARGET_UNITS+=xforms +endif +ifeq ($(FULL_TARGET),i386-symbian) +override TARGET_UNITS+=xforms +endif +ifeq ($(FULL_TARGET),m68k-linux) +override TARGET_UNITS+=xforms +endif +ifeq ($(FULL_TARGET),m68k-freebsd) +override TARGET_UNITS+=xforms +endif +ifeq ($(FULL_TARGET),m68k-netbsd) +override TARGET_UNITS+=xforms +endif +ifeq ($(FULL_TARGET),m68k-amiga) +override TARGET_UNITS+=xforms +endif +ifeq ($(FULL_TARGET),m68k-atari) +override TARGET_UNITS+=xforms +endif +ifeq ($(FULL_TARGET),m68k-openbsd) +override TARGET_UNITS+=xforms +endif +ifeq ($(FULL_TARGET),m68k-palmos) +override TARGET_UNITS+=xforms +endif +ifeq ($(FULL_TARGET),m68k-embedded) +override TARGET_UNITS+=xforms +endif +ifeq ($(FULL_TARGET),powerpc-linux) +override TARGET_UNITS+=xforms +endif +ifeq ($(FULL_TARGET),powerpc-netbsd) +override TARGET_UNITS+=xforms +endif +ifeq ($(FULL_TARGET),powerpc-amiga) +override TARGET_UNITS+=xforms +endif +ifeq ($(FULL_TARGET),powerpc-macos) +override TARGET_UNITS+=xforms +endif +ifeq ($(FULL_TARGET),powerpc-darwin) +override TARGET_UNITS+=xforms +endif +ifeq ($(FULL_TARGET),powerpc-morphos) +override TARGET_UNITS+=xforms +endif +ifeq ($(FULL_TARGET),powerpc-embedded) +override TARGET_UNITS+=xforms +endif +ifeq ($(FULL_TARGET),sparc-linux) +override TARGET_UNITS+=xforms +endif +ifeq ($(FULL_TARGET),sparc-netbsd) +override TARGET_UNITS+=xforms +endif +ifeq ($(FULL_TARGET),sparc-solaris) +override TARGET_UNITS+=xforms +endif +ifeq ($(FULL_TARGET),sparc-embedded) +override TARGET_UNITS+=xforms +endif +ifeq ($(FULL_TARGET),x86_64-linux) +override TARGET_UNITS+=xforms +endif +ifeq ($(FULL_TARGET),x86_64-freebsd) +override TARGET_UNITS+=xforms +endif +ifeq ($(FULL_TARGET),x86_64-darwin) +override TARGET_UNITS+=xforms +endif +ifeq ($(FULL_TARGET),x86_64-win64) +override TARGET_UNITS+=xforms +endif +ifeq ($(FULL_TARGET),x86_64-embedded) +override TARGET_UNITS+=xforms +endif +ifeq ($(FULL_TARGET),arm-linux) +override TARGET_UNITS+=xforms +endif +ifeq ($(FULL_TARGET),arm-palmos) +override TARGET_UNITS+=xforms +endif +ifeq ($(FULL_TARGET),arm-wince) +override TARGET_UNITS+=xforms +endif +ifeq ($(FULL_TARGET),arm-gba) +override TARGET_UNITS+=xforms +endif +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_UNITS+=xforms +endif +ifeq ($(FULL_TARGET),arm-embedded) +override TARGET_UNITS+=xforms +endif +ifeq ($(FULL_TARGET),arm-symbian) +override TARGET_UNITS+=xforms +endif +ifeq ($(FULL_TARGET),powerpc64-linux) +override TARGET_UNITS+=xforms +endif +ifeq ($(FULL_TARGET),powerpc64-darwin) +override TARGET_UNITS+=xforms +endif +ifeq ($(FULL_TARGET),powerpc64-embedded) +override TARGET_UNITS+=xforms +endif +ifeq ($(FULL_TARGET),i386-linux) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),i386-go32v2) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),i386-win32) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),i386-os2) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),i386-freebsd) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),i386-beos) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),i386-netbsd) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),i386-solaris) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),i386-qnx) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),i386-netware) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),i386-openbsd) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),i386-wdosx) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),i386-darwin) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),i386-emx) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),i386-watcom) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),i386-netwlibc) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),i386-wince) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),i386-embedded) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),i386-symbian) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),m68k-linux) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),m68k-freebsd) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),m68k-netbsd) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),m68k-amiga) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),m68k-atari) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),m68k-openbsd) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),m68k-palmos) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),m68k-embedded) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),powerpc-linux) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),powerpc-netbsd) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),powerpc-amiga) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),powerpc-macos) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),powerpc-darwin) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),powerpc-morphos) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),powerpc-embedded) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),sparc-linux) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),sparc-netbsd) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),sparc-solaris) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),sparc-embedded) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),x86_64-linux) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),x86_64-freebsd) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),x86_64-darwin) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),x86_64-win64) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),x86_64-embedded) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),arm-linux) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),arm-palmos) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),arm-wince) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),arm-gba) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),arm-embedded) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),arm-symbian) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),powerpc64-linux) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),powerpc64-darwin) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),powerpc64-embedded) +override TARGET_EXAMPLEDIRS+=examples +endif +override INSTALL_FPCPACKAGE=y +ifeq ($(FULL_TARGET),i386-linux) +override COMPILER_INCLUDEDIR+=src +endif +ifeq ($(FULL_TARGET),i386-go32v2) +override COMPILER_INCLUDEDIR+=src +endif +ifeq ($(FULL_TARGET),i386-win32) +override COMPILER_INCLUDEDIR+=src +endif +ifeq ($(FULL_TARGET),i386-os2) +override COMPILER_INCLUDEDIR+=src +endif +ifeq ($(FULL_TARGET),i386-freebsd) +override COMPILER_INCLUDEDIR+=src +endif +ifeq ($(FULL_TARGET),i386-beos) +override COMPILER_INCLUDEDIR+=src +endif +ifeq ($(FULL_TARGET),i386-netbsd) +override COMPILER_INCLUDEDIR+=src +endif +ifeq ($(FULL_TARGET),i386-solaris) +override COMPILER_INCLUDEDIR+=src +endif +ifeq ($(FULL_TARGET),i386-qnx) +override COMPILER_INCLUDEDIR+=src +endif +ifeq ($(FULL_TARGET),i386-netware) +override COMPILER_INCLUDEDIR+=src +endif +ifeq ($(FULL_TARGET),i386-openbsd) +override COMPILER_INCLUDEDIR+=src +endif +ifeq ($(FULL_TARGET),i386-wdosx) +override COMPILER_INCLUDEDIR+=src +endif +ifeq ($(FULL_TARGET),i386-darwin) +override COMPILER_INCLUDEDIR+=src +endif +ifeq ($(FULL_TARGET),i386-emx) +override COMPILER_INCLUDEDIR+=src +endif +ifeq ($(FULL_TARGET),i386-watcom) +override COMPILER_INCLUDEDIR+=src +endif +ifeq ($(FULL_TARGET),i386-netwlibc) +override COMPILER_INCLUDEDIR+=src +endif +ifeq ($(FULL_TARGET),i386-wince) +override COMPILER_INCLUDEDIR+=src +endif +ifeq ($(FULL_TARGET),i386-embedded) +override COMPILER_INCLUDEDIR+=src +endif +ifeq ($(FULL_TARGET),i386-symbian) +override COMPILER_INCLUDEDIR+=src +endif +ifeq ($(FULL_TARGET),m68k-linux) +override COMPILER_INCLUDEDIR+=src +endif +ifeq ($(FULL_TARGET),m68k-freebsd) +override COMPILER_INCLUDEDIR+=src +endif +ifeq ($(FULL_TARGET),m68k-netbsd) +override COMPILER_INCLUDEDIR+=src +endif +ifeq ($(FULL_TARGET),m68k-amiga) +override COMPILER_INCLUDEDIR+=src +endif +ifeq ($(FULL_TARGET),m68k-atari) +override COMPILER_INCLUDEDIR+=src +endif +ifeq ($(FULL_TARGET),m68k-openbsd) +override COMPILER_INCLUDEDIR+=src +endif +ifeq ($(FULL_TARGET),m68k-palmos) +override COMPILER_INCLUDEDIR+=src +endif +ifeq ($(FULL_TARGET),m68k-embedded) +override COMPILER_INCLUDEDIR+=src +endif +ifeq ($(FULL_TARGET),powerpc-linux) +override COMPILER_INCLUDEDIR+=src +endif +ifeq ($(FULL_TARGET),powerpc-netbsd) +override COMPILER_INCLUDEDIR+=src +endif +ifeq ($(FULL_TARGET),powerpc-amiga) +override COMPILER_INCLUDEDIR+=src +endif +ifeq ($(FULL_TARGET),powerpc-macos) +override COMPILER_INCLUDEDIR+=src +endif +ifeq ($(FULL_TARGET),powerpc-darwin) +override COMPILER_INCLUDEDIR+=src +endif +ifeq ($(FULL_TARGET),powerpc-morphos) +override COMPILER_INCLUDEDIR+=src +endif +ifeq ($(FULL_TARGET),powerpc-embedded) +override COMPILER_INCLUDEDIR+=src +endif +ifeq ($(FULL_TARGET),sparc-linux) +override COMPILER_INCLUDEDIR+=src +endif +ifeq ($(FULL_TARGET),sparc-netbsd) +override COMPILER_INCLUDEDIR+=src +endif +ifeq ($(FULL_TARGET),sparc-solaris) +override COMPILER_INCLUDEDIR+=src +endif +ifeq ($(FULL_TARGET),sparc-embedded) +override COMPILER_INCLUDEDIR+=src +endif +ifeq ($(FULL_TARGET),x86_64-linux) +override COMPILER_INCLUDEDIR+=src +endif +ifeq ($(FULL_TARGET),x86_64-freebsd) +override COMPILER_INCLUDEDIR+=src +endif +ifeq ($(FULL_TARGET),x86_64-darwin) +override COMPILER_INCLUDEDIR+=src +endif +ifeq ($(FULL_TARGET),x86_64-win64) +override COMPILER_INCLUDEDIR+=src +endif +ifeq ($(FULL_TARGET),x86_64-embedded) +override COMPILER_INCLUDEDIR+=src +endif +ifeq ($(FULL_TARGET),arm-linux) +override COMPILER_INCLUDEDIR+=src +endif +ifeq ($(FULL_TARGET),arm-palmos) +override COMPILER_INCLUDEDIR+=src +endif +ifeq ($(FULL_TARGET),arm-wince) +override COMPILER_INCLUDEDIR+=src +endif +ifeq ($(FULL_TARGET),arm-gba) +override COMPILER_INCLUDEDIR+=src +endif +ifeq ($(FULL_TARGET),arm-nds) +override COMPILER_INCLUDEDIR+=src +endif +ifeq ($(FULL_TARGET),arm-embedded) +override COMPILER_INCLUDEDIR+=src +endif +ifeq ($(FULL_TARGET),arm-symbian) +override COMPILER_INCLUDEDIR+=src +endif +ifeq ($(FULL_TARGET),powerpc64-linux) +override COMPILER_INCLUDEDIR+=src +endif +ifeq ($(FULL_TARGET),powerpc64-darwin) +override COMPILER_INCLUDEDIR+=src +endif +ifeq ($(FULL_TARGET),powerpc64-embedded) +override COMPILER_INCLUDEDIR+=src +endif +ifeq ($(FULL_TARGET),i386-linux) +override COMPILER_SOURCEDIR+=src tests examples +endif +ifeq ($(FULL_TARGET),i386-go32v2) +override COMPILER_SOURCEDIR+=src tests examples +endif +ifeq ($(FULL_TARGET),i386-win32) +override COMPILER_SOURCEDIR+=src tests examples +endif +ifeq ($(FULL_TARGET),i386-os2) +override COMPILER_SOURCEDIR+=src tests examples +endif +ifeq ($(FULL_TARGET),i386-freebsd) +override COMPILER_SOURCEDIR+=src tests examples +endif +ifeq ($(FULL_TARGET),i386-beos) +override COMPILER_SOURCEDIR+=src tests examples +endif +ifeq ($(FULL_TARGET),i386-netbsd) +override COMPILER_SOURCEDIR+=src tests examples +endif +ifeq ($(FULL_TARGET),i386-solaris) +override COMPILER_SOURCEDIR+=src tests examples +endif +ifeq ($(FULL_TARGET),i386-qnx) +override COMPILER_SOURCEDIR+=src tests examples +endif +ifeq ($(FULL_TARGET),i386-netware) +override COMPILER_SOURCEDIR+=src tests examples +endif +ifeq ($(FULL_TARGET),i386-openbsd) +override COMPILER_SOURCEDIR+=src tests examples +endif +ifeq ($(FULL_TARGET),i386-wdosx) +override COMPILER_SOURCEDIR+=src tests examples +endif +ifeq ($(FULL_TARGET),i386-darwin) +override COMPILER_SOURCEDIR+=src tests examples +endif +ifeq ($(FULL_TARGET),i386-emx) +override COMPILER_SOURCEDIR+=src tests examples +endif +ifeq ($(FULL_TARGET),i386-watcom) +override COMPILER_SOURCEDIR+=src tests examples +endif +ifeq ($(FULL_TARGET),i386-netwlibc) +override COMPILER_SOURCEDIR+=src tests examples +endif +ifeq ($(FULL_TARGET),i386-wince) +override COMPILER_SOURCEDIR+=src tests examples +endif +ifeq ($(FULL_TARGET),i386-embedded) +override COMPILER_SOURCEDIR+=src tests examples +endif +ifeq ($(FULL_TARGET),i386-symbian) +override COMPILER_SOURCEDIR+=src tests examples +endif +ifeq ($(FULL_TARGET),m68k-linux) +override COMPILER_SOURCEDIR+=src tests examples +endif +ifeq ($(FULL_TARGET),m68k-freebsd) +override COMPILER_SOURCEDIR+=src tests examples +endif +ifeq ($(FULL_TARGET),m68k-netbsd) +override COMPILER_SOURCEDIR+=src tests examples +endif +ifeq ($(FULL_TARGET),m68k-amiga) +override COMPILER_SOURCEDIR+=src tests examples +endif +ifeq ($(FULL_TARGET),m68k-atari) +override COMPILER_SOURCEDIR+=src tests examples +endif +ifeq ($(FULL_TARGET),m68k-openbsd) +override COMPILER_SOURCEDIR+=src tests examples +endif +ifeq ($(FULL_TARGET),m68k-palmos) +override COMPILER_SOURCEDIR+=src tests examples +endif +ifeq ($(FULL_TARGET),m68k-embedded) +override COMPILER_SOURCEDIR+=src tests examples +endif +ifeq ($(FULL_TARGET),powerpc-linux) +override COMPILER_SOURCEDIR+=src tests examples +endif +ifeq ($(FULL_TARGET),powerpc-netbsd) +override COMPILER_SOURCEDIR+=src tests examples +endif +ifeq ($(FULL_TARGET),powerpc-amiga) +override COMPILER_SOURCEDIR+=src tests examples +endif +ifeq ($(FULL_TARGET),powerpc-macos) +override COMPILER_SOURCEDIR+=src tests examples +endif +ifeq ($(FULL_TARGET),powerpc-darwin) +override COMPILER_SOURCEDIR+=src tests examples +endif +ifeq ($(FULL_TARGET),powerpc-morphos) +override COMPILER_SOURCEDIR+=src tests examples +endif +ifeq ($(FULL_TARGET),powerpc-embedded) +override COMPILER_SOURCEDIR+=src tests examples +endif +ifeq ($(FULL_TARGET),sparc-linux) +override COMPILER_SOURCEDIR+=src tests examples +endif +ifeq ($(FULL_TARGET),sparc-netbsd) +override COMPILER_SOURCEDIR+=src tests examples +endif +ifeq ($(FULL_TARGET),sparc-solaris) +override COMPILER_SOURCEDIR+=src tests examples +endif +ifeq ($(FULL_TARGET),sparc-embedded) +override COMPILER_SOURCEDIR+=src tests examples +endif +ifeq ($(FULL_TARGET),x86_64-linux) +override COMPILER_SOURCEDIR+=src tests examples +endif +ifeq ($(FULL_TARGET),x86_64-freebsd) +override COMPILER_SOURCEDIR+=src tests examples +endif +ifeq ($(FULL_TARGET),x86_64-darwin) +override COMPILER_SOURCEDIR+=src tests examples +endif +ifeq ($(FULL_TARGET),x86_64-win64) +override COMPILER_SOURCEDIR+=src tests examples +endif +ifeq ($(FULL_TARGET),x86_64-embedded) +override COMPILER_SOURCEDIR+=src tests examples +endif +ifeq ($(FULL_TARGET),arm-linux) +override COMPILER_SOURCEDIR+=src tests examples +endif +ifeq ($(FULL_TARGET),arm-palmos) +override COMPILER_SOURCEDIR+=src tests examples +endif +ifeq ($(FULL_TARGET),arm-wince) +override COMPILER_SOURCEDIR+=src tests examples +endif +ifeq ($(FULL_TARGET),arm-gba) +override COMPILER_SOURCEDIR+=src tests examples +endif +ifeq ($(FULL_TARGET),arm-nds) +override COMPILER_SOURCEDIR+=src tests examples +endif +ifeq ($(FULL_TARGET),arm-embedded) +override COMPILER_SOURCEDIR+=src tests examples +endif +ifeq ($(FULL_TARGET),arm-symbian) +override COMPILER_SOURCEDIR+=src tests examples +endif +ifeq ($(FULL_TARGET),powerpc64-linux) +override COMPILER_SOURCEDIR+=src tests examples +endif +ifeq ($(FULL_TARGET),powerpc64-darwin) +override COMPILER_SOURCEDIR+=src tests examples +endif +ifeq ($(FULL_TARGET),powerpc64-embedded) +override COMPILER_SOURCEDIR+=src tests examples +endif +override SHARED_BUILD=n +override SHARED_BUILD=n +ifdef REQUIRE_UNITSDIR +override UNITSDIR+=$(REQUIRE_UNITSDIR) +endif +ifdef REQUIRE_PACKAGESDIR +override PACKAGESDIR+=$(REQUIRE_PACKAGESDIR) +endif +ifdef ZIPINSTALL +ifneq ($(findstring $(OS_TARGET),$(UNIXs)),) +UNIXHier=1 +endif +else +ifneq ($(findstring $(OS_SOURCE),$(UNIXs)),) +UNIXHier=1 +endif +endif +ifndef INSTALL_PREFIX +ifdef PREFIX +INSTALL_PREFIX=$(PREFIX) +endif +endif +ifndef INSTALL_PREFIX +ifdef UNIXHier +INSTALL_PREFIX=/usr/local +else +ifdef INSTALL_FPCPACKAGE +INSTALL_BASEDIR:=/pp +else +INSTALL_BASEDIR:=/$(PACKAGE_NAME) +endif +endif +endif +export INSTALL_PREFIX +ifdef INSTALL_FPCSUBDIR +export INSTALL_FPCSUBDIR +endif +ifndef DIST_DESTDIR +DIST_DESTDIR:=$(BASEDIR) +endif +export DIST_DESTDIR +ifndef COMPILER_UNITTARGETDIR +ifdef PACKAGEDIR_MAIN +COMPILER_UNITTARGETDIR=$(PACKAGEDIR_MAIN)/units/$(TARGETSUFFIX) +else +COMPILER_UNITTARGETDIR=units/$(TARGETSUFFIX) +endif +endif +ifndef COMPILER_TARGETDIR +COMPILER_TARGETDIR=. +endif +ifndef INSTALL_BASEDIR +ifdef UNIXHier +ifdef INSTALL_FPCPACKAGE +INSTALL_BASEDIR:=$(INSTALL_PREFIX)/lib/fpc/$(FPC_VERSION) +else +INSTALL_BASEDIR:=$(INSTALL_PREFIX)/lib/$(PACKAGE_NAME) +endif +else +INSTALL_BASEDIR:=$(INSTALL_PREFIX) +endif +endif +ifndef INSTALL_BINDIR +ifdef UNIXHier +INSTALL_BINDIR:=$(INSTALL_PREFIX)/bin +else +INSTALL_BINDIR:=$(INSTALL_BASEDIR)/bin +ifdef INSTALL_FPCPACKAGE +ifdef CROSSCOMPILE +ifdef CROSSINSTALL +INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(SOURCESUFFIX) +else +INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(TARGETSUFFIX) +endif +else +INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(TARGETSUFFIX) +endif +endif +endif +endif +ifndef INSTALL_UNITDIR +INSTALL_UNITDIR:=$(INSTALL_BASEDIR)/units/$(TARGETSUFFIX) +ifdef INSTALL_FPCPACKAGE +ifdef PACKAGE_NAME +INSTALL_UNITDIR:=$(INSTALL_UNITDIR)/$(PACKAGE_NAME) +endif +endif +endif +ifndef INSTALL_LIBDIR +ifdef UNIXHier +INSTALL_LIBDIR:=$(INSTALL_PREFIX)/lib +else +INSTALL_LIBDIR:=$(INSTALL_UNITDIR) +endif +endif +ifndef INSTALL_SOURCEDIR +ifdef UNIXHier +ifdef BSDhier +SRCPREFIXDIR=share/src +else +ifdef linuxHier +SRCPREFIXDIR=share/src +else +SRCPREFIXDIR=src +endif +endif +ifdef INSTALL_FPCPACKAGE +ifdef INSTALL_FPCSUBDIR +INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/fpc-$(FPC_VERSION)/$(INSTALL_FPCSUBDIR)/$(PACKAGE_NAME) +else +INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/fpc-$(FPC_VERSION)/$(PACKAGE_NAME) +endif +else +INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/$(PACKAGE_NAME)-$(PACKAGE_VERSION) +endif +else +ifdef INSTALL_FPCPACKAGE +ifdef INSTALL_FPCSUBDIR +INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source/$(INSTALL_FPCSUBDIR)/$(PACKAGE_NAME) +else +INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source/$(PACKAGE_NAME) +endif +else +INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source +endif +endif +endif +ifndef INSTALL_DOCDIR +ifdef UNIXHier +ifdef BSDhier +DOCPREFIXDIR=share/doc +else +ifdef linuxHier +DOCPREFIXDIR=share/doc +else +DOCPREFIXDIR=doc +endif +endif +ifdef INSTALL_FPCPACKAGE +INSTALL_DOCDIR:=$(INSTALL_PREFIX)/$(DOCPREFIXDIR)/fpc-$(FPC_VERSION)/$(PACKAGE_NAME) +else +INSTALL_DOCDIR:=$(INSTALL_PREFIX)/$(DOCPREFIXDIR)/$(PACKAGE_NAME)-$(PACKAGE_VERSION) +endif +else +ifdef INSTALL_FPCPACKAGE +INSTALL_DOCDIR:=$(INSTALL_BASEDIR)/doc/$(PACKAGE_NAME) +else +INSTALL_DOCDIR:=$(INSTALL_BASEDIR)/doc +endif +endif +endif +ifndef INSTALL_EXAMPLEDIR +ifdef UNIXHier +ifdef INSTALL_FPCPACKAGE +ifdef BSDhier +INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/share/examples/fpc-$(FPC_VERSION)/$(PACKAGE_NAME) +else +ifdef linuxHier +INSTALL_EXAMPLEDIR:=$(INSTALL_DOCDIR)/examples +else +INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/doc/fpc-$(FPC_VERSION)/examples/$(PACKAGE_NAME) +endif +endif +else +ifdef BSDhier +INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/share/examples/$(PACKAGE_NAME)-$(PACKAGE_VERSION) +else +ifdef linuxHier +INSTALL_EXAMPLEDIR:=$(INSTALL_DOCDIR)/examples/$(PACKAGE_NAME)-$(PACKAGE_VERSION) +else +INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/doc/$(PACKAGE_NAME)-$(PACKAGE_VERSION) +endif +endif +endif +else +ifdef INSTALL_FPCPACKAGE +INSTALL_EXAMPLEDIR:=$(INSTALL_BASEDIR)/examples/$(PACKAGE_NAME) +else +INSTALL_EXAMPLEDIR:=$(INSTALL_BASEDIR)/examples +endif +endif +endif +ifndef INSTALL_DATADIR +INSTALL_DATADIR=$(INSTALL_BASEDIR) +endif +ifndef INSTALL_SHAREDDIR +INSTALL_SHAREDDIR=$(INSTALL_PREFIX)/lib +endif +ifdef CROSSCOMPILE +ifndef CROSSBINDIR +CROSSBINDIR:=$(wildcard $(CROSSTARGETDIR)/bin/$(SOURCESUFFIX)) +ifeq ($(CROSSBINDIR),) +CROSSBINDIR:=$(wildcard $(INSTALL_BASEDIR)/cross/$(TARGETSUFFIX)/bin/$(FULL_SOURCE)) +endif +endif +else +CROSSBINDIR= +endif +ifeq ($(OS_SOURCE),linux) +ifndef GCCLIBDIR +ifeq ($(CPU_TARGET),i386) +ifneq ($(findstring x86_64,$(shell uname -a)),) +ifeq ($(BINUTILSPREFIX),) +GCCLIBDIR:=$(shell dirname `gcc -m32 -print-libgcc-file-name`) +endif +endif +endif +ifeq ($(CPU_TARGET),powerpc64) +ifeq ($(BINUTILSPREFIX),) +GCCLIBDIR:=$(shell dirname `gcc -m64 -print-libgcc-file-name`) +endif +endif +endif +ifndef GCCLIBDIR +CROSSGCC=$(strip $(wildcard $(addsuffix /$(BINUTILSPREFIX)gcc$(SRCEXEEXT),$(SEARCHPATH)))) +ifneq ($(CROSSGCC),) +GCCLIBDIR:=$(shell dirname `$(CROSSGCC) -print-libgcc-file-name`) +endif +endif +ifndef OTHERLIBDIR +OTHERLIBDIR:=$(shell grep -v "^\#" /etc/ld.so.conf | awk '{ ORS=" "; print $1 }') +endif +endif +ifdef inUnix +ifeq ($(OS_SOURCE),netbsd) +OTHERLIBDIR+=/usr/pkg/lib +endif +export GCCLIBDIR OTHERLIB +endif +BATCHEXT=.bat +LOADEREXT=.as +EXEEXT=.exe +PPLEXT=.ppl +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.so +SHAREDLIBPREFIX=libfp +STATICLIBPREFIX=libp +IMPORTLIBPREFIX=libimp +RSTEXT=.rst +ifeq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),go32v1) +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +OEXT=.obj +ASMEXT=.asm +SHAREDLIBEXT=.dll +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +endif +ifeq ($(OS_TARGET),freebsd) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=fbs +endif +ifeq ($(OS_TARGET),netbsd) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=nbs +endif +ifeq ($(OS_TARGET),openbsd) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=obs +endif +ifeq ($(OS_TARGET),win32) +SHAREDLIBEXT=.dll +SHORTSUFFIX=w32 +endif +ifeq ($(OS_TARGET),os2) +BATCHEXT=.cmd +AOUTEXT=.out +STATICLIBPREFIX= +SHAREDLIBEXT=.dll +SHORTSUFFIX=os2 +ECHO=echo +endif +ifeq ($(OS_TARGET),emx) +BATCHEXT=.cmd +AOUTEXT=.out +STATICLIBPREFIX= +SHAREDLIBEXT=.dll +SHORTSUFFIX=emx +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +endif +ifeq ($(OS_TARGET),morphos) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=mos +endif +ifeq ($(OS_TARGET),atari) +EXEEXT=.ttp +SHORTSUFFIX=ata +endif +ifeq ($(OS_TARGET),beos) +BATCHEXT=.sh +EXEEXT= +SHORTSUFFIX=be +endif +ifeq ($(OS_TARGET),solaris) +BATCHEXT=.sh +EXEEXT= +SHORTSUFFIX=sun +endif +ifeq ($(OS_TARGET),qnx) +BATCHEXT=.sh +EXEEXT= +SHORTSUFFIX=qnx +endif +ifeq ($(OS_TARGET),netware) +EXEEXT=.nlm +STATICLIBPREFIX= +SHORTSUFFIX=nw +endif +ifeq ($(OS_TARGET),netwlibc) +EXEEXT=.nlm +STATICLIBPREFIX= +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +ifeq ($(OS_TARGET),darwin) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=dwn +endif +ifeq ($(OS_TARGET),gba) +EXEEXT=.gba +SHAREDLIBEXT=.so +SHORTSUFFIX=gba +endif +ifeq ($(OS_TARGET),symbian) +SHAREDLIBEXT=.dll +SHORTSUFFIX=symbian +endif +else +ifeq ($(OS_TARGET),go32v1) +PPUEXT=.pp1 +OEXT=.o1 +ASMEXT=.s1 +SMARTEXT=.sl1 +STATICLIBEXT=.a1 +SHAREDLIBEXT=.so1 +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +endif +ifeq ($(OS_TARGET),freebsd) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=fbs +endif +ifeq ($(OS_TARGET),netbsd) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=nbs +endif +ifeq ($(OS_TARGET),openbsd) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=obs +endif +ifeq ($(OS_TARGET),win32) +PPUEXT=.ppw +OEXT=.ow +ASMEXT=.sw +SMARTEXT=.slw +STATICLIBEXT=.aw +SHAREDLIBEXT=.dll +SHORTSUFFIX=w32 +endif +ifeq ($(OS_TARGET),os2) +BATCHEXT=.cmd +PPUEXT=.ppo +ASMEXT=.so2 +OEXT=.oo2 +AOUTEXT=.out +SMARTEXT=.sl2 +STATICLIBPREFIX= +STATICLIBEXT=.ao2 +SHAREDLIBEXT=.dll +SHORTSUFFIX=os2 +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +endif +ifeq ($(OS_TARGET),atari) +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT=.ttp +SHORTSUFFIX=ata +endif +ifeq ($(OS_TARGET),beos) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=be +endif +ifeq ($(OS_TARGET),solaris) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=sun +endif +ifeq ($(OS_TARGET),qnx) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=qnx +endif +ifeq ($(OS_TARGET),netware) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nw +endif +ifeq ($(OS_TARGET),netwlibc) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +endif +ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) +FPCMADE=fpcmade.$(SHORTSUFFIX) +ZIPSUFFIX=$(SHORTSUFFIX) +ZIPCROSSPREFIX= +ZIPSOURCESUFFIX=src +ZIPEXAMPLESUFFIX=exm +else +FPCMADE=fpcmade.$(TARGETSUFFIX) +ZIPSOURCESUFFIX=.source +ZIPEXAMPLESUFFIX=.examples +ifdef CROSSCOMPILE +ZIPSUFFIX=.$(SOURCESUFFIX) +ZIPCROSSPREFIX=$(TARGETSUFFIX)- +else +ZIPSUFFIX=.$(TARGETSUFFIX) +ZIPCROSSPREFIX= +endif +endif +ifndef ECHO +ECHO:=$(strip $(wildcard $(addsuffix /gecho$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(ECHO),) +ECHO:=$(strip $(wildcard $(addsuffix /echo$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(ECHO),) +ECHO= __missing_command_ECHO +else +ECHO:=$(firstword $(ECHO)) +endif +else +ECHO:=$(firstword $(ECHO)) +endif +endif +export ECHO +ifndef DATE +DATE:=$(strip $(wildcard $(addsuffix /gdate$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(DATE),) +DATE:=$(strip $(wildcard $(addsuffix /date$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(DATE),) +DATE= __missing_command_DATE +else +DATE:=$(firstword $(DATE)) +endif +else +DATE:=$(firstword $(DATE)) +endif +endif +export DATE +ifndef GINSTALL +GINSTALL:=$(strip $(wildcard $(addsuffix /ginstall$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(GINSTALL),) +GINSTALL:=$(strip $(wildcard $(addsuffix /install$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(GINSTALL),) +GINSTALL= __missing_command_GINSTALL +else +GINSTALL:=$(firstword $(GINSTALL)) +endif +else +GINSTALL:=$(firstword $(GINSTALL)) +endif +endif +export GINSTALL +ifndef CPPROG +CPPROG:=$(strip $(wildcard $(addsuffix /cp$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(CPPROG),) +CPPROG= __missing_command_CPPROG +else +CPPROG:=$(firstword $(CPPROG)) +endif +endif +export CPPROG +ifndef RMPROG +RMPROG:=$(strip $(wildcard $(addsuffix /rm$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(RMPROG),) +RMPROG= __missing_command_RMPROG +else +RMPROG:=$(firstword $(RMPROG)) +endif +endif +export RMPROG +ifndef MVPROG +MVPROG:=$(strip $(wildcard $(addsuffix /mv$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(MVPROG),) +MVPROG= __missing_command_MVPROG +else +MVPROG:=$(firstword $(MVPROG)) +endif +endif +export MVPROG +ifndef MKDIRPROG +MKDIRPROG:=$(strip $(wildcard $(addsuffix /gmkdir$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(MKDIRPROG),) +MKDIRPROG:=$(strip $(wildcard $(addsuffix /mkdir$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(MKDIRPROG),) +MKDIRPROG= __missing_command_MKDIRPROG +else +MKDIRPROG:=$(firstword $(MKDIRPROG)) +endif +else +MKDIRPROG:=$(firstword $(MKDIRPROG)) +endif +endif +export MKDIRPROG +ifndef ECHOREDIR +ifndef inUnix +ECHOREDIR=echo +else +ECHOREDIR=$(ECHO) +endif +endif +ifndef COPY +COPY:=$(CPPROG) -fp +endif +ifndef COPYTREE +COPYTREE:=$(CPPROG) -Rfp +endif +ifndef MKDIRTREE +MKDIRTREE:=$(MKDIRPROG) -p +endif +ifndef MOVE +MOVE:=$(MVPROG) -f +endif +ifndef DEL +DEL:=$(RMPROG) -f +endif +ifndef DELTREE +DELTREE:=$(RMPROG) -rf +endif +ifndef INSTALL +ifdef inUnix +INSTALL:=$(GINSTALL) -c -m 644 +else +INSTALL:=$(COPY) +endif +endif +ifndef INSTALLEXE +ifdef inUnix +INSTALLEXE:=$(GINSTALL) -c -m 755 +else +INSTALLEXE:=$(COPY) +endif +endif +ifndef MKDIR +MKDIR:=$(GINSTALL) -m 755 -d +endif +export ECHOREDIR COPY COPYTREE MOVE DEL DELTREE INSTALL INSTALLEXE MKDIR +ifndef PPUMOVE +PPUMOVE:=$(strip $(wildcard $(addsuffix /ppumove$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(PPUMOVE),) +PPUMOVE= __missing_command_PPUMOVE +else +PPUMOVE:=$(firstword $(PPUMOVE)) +endif +endif +export PPUMOVE +ifndef FPCMAKE +FPCMAKE:=$(strip $(wildcard $(addsuffix /fpcmake$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(FPCMAKE),) +FPCMAKE= __missing_command_FPCMAKE +else +FPCMAKE:=$(firstword $(FPCMAKE)) +endif +endif +export FPCMAKE +ifndef ZIPPROG +ZIPPROG:=$(strip $(wildcard $(addsuffix /zip$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(ZIPPROG),) +ZIPPROG= __missing_command_ZIPPROG +else +ZIPPROG:=$(firstword $(ZIPPROG)) +endif +endif +export ZIPPROG +ifndef TARPROG +TARPROG:=$(strip $(wildcard $(addsuffix /gtar$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(TARPROG),) +TARPROG:=$(strip $(wildcard $(addsuffix /tar$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(TARPROG),) +TARPROG= __missing_command_TARPROG +else +TARPROG:=$(firstword $(TARPROG)) +endif +else +TARPROG:=$(firstword $(TARPROG)) +endif +endif +export TARPROG +ASNAME=$(BINUTILSPREFIX)as +LDNAME=$(BINUTILSPREFIX)ld +ARNAME=$(BINUTILSPREFIX)ar +RCNAME=$(BINUTILSPREFIX)rc +ifneq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),win32) +ifeq ($(CROSSBINDIR),) +ASNAME=asw +LDNAME=ldw +ARNAME=arw +endif +endif +endif +ifndef ASPROG +ifdef CROSSBINDIR +ASPROG=$(CROSSBINDIR)/$(ASNAME)$(SRCEXEEXT) +else +ASPROG=$(ASNAME) +endif +endif +ifndef LDPROG +ifdef CROSSBINDIR +LDPROG=$(CROSSBINDIR)/$(LDNAME)$(SRCEXEEXT) +else +LDPROG=$(LDNAME) +endif +endif +ifndef RCPROG +ifdef CROSSBINDIR +RCPROG=$(CROSSBINDIR)/$(RCNAME)$(SRCEXEEXT) +else +RCPROG=$(RCNAME) +endif +endif +ifndef ARPROG +ifdef CROSSBINDIR +ARPROG=$(CROSSBINDIR)/$(ARNAME)$(SRCEXEEXT) +else +ARPROG=$(ARNAME) +endif +endif +AS=$(ASPROG) +LD=$(LDPROG) +RC=$(RCPROG) +AR=$(ARPROG) +PPAS=ppas$(SRCBATCHEXT) +ifdef inUnix +LDCONFIG=ldconfig +else +LDCONFIG= +endif +ifdef DATE +DATESTR:=$(shell $(DATE) +%Y%m%d) +else +DATESTR= +endif +ifndef UPXPROG +ifeq ($(OS_TARGET),go32v2) +UPXPROG:=1 +endif +ifeq ($(OS_TARGET),win32) +UPXPROG:=1 +endif +ifdef UPXPROG +UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(UPXPROG),) +UPXPROG= +else +UPXPROG:=$(firstword $(UPXPROG)) +endif +else +UPXPROG= +endif +endif +export UPXPROG +ZIPOPT=-9 +ZIPEXT=.zip +ifeq ($(USETAR),bz2) +TAROPT=vj +TAREXT=.tar.bz2 +else +TAROPT=vz +TAREXT=.tar.gz +endif +override REQUIRE_PACKAGES=rtl x11 +ifeq ($(FULL_TARGET),i386-linux) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +endif +ifeq ($(FULL_TARGET),i386-go32v2) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +endif +ifeq ($(FULL_TARGET),i386-win32) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +endif +ifeq ($(FULL_TARGET),i386-os2) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +endif +ifeq ($(FULL_TARGET),i386-freebsd) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +endif +ifeq ($(FULL_TARGET),i386-beos) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +endif +ifeq ($(FULL_TARGET),i386-netbsd) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +endif +ifeq ($(FULL_TARGET),i386-solaris) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +endif +ifeq ($(FULL_TARGET),i386-qnx) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +endif +ifeq ($(FULL_TARGET),i386-netware) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +endif +ifeq ($(FULL_TARGET),i386-openbsd) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +endif +ifeq ($(FULL_TARGET),i386-wdosx) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +endif +ifeq ($(FULL_TARGET),i386-darwin) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +endif +ifeq ($(FULL_TARGET),i386-emx) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +endif +ifeq ($(FULL_TARGET),i386-watcom) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +endif +ifeq ($(FULL_TARGET),i386-netwlibc) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +endif +ifeq ($(FULL_TARGET),i386-wince) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +endif +ifeq ($(FULL_TARGET),i386-embedded) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +endif +ifeq ($(FULL_TARGET),i386-symbian) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +endif +ifeq ($(FULL_TARGET),m68k-linux) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +endif +ifeq ($(FULL_TARGET),m68k-freebsd) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +endif +ifeq ($(FULL_TARGET),m68k-netbsd) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +endif +ifeq ($(FULL_TARGET),m68k-amiga) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +endif +ifeq ($(FULL_TARGET),m68k-atari) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +endif +ifeq ($(FULL_TARGET),m68k-openbsd) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +endif +ifeq ($(FULL_TARGET),m68k-palmos) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +endif +ifeq ($(FULL_TARGET),m68k-embedded) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +endif +ifeq ($(FULL_TARGET),powerpc-linux) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +endif +ifeq ($(FULL_TARGET),powerpc-netbsd) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +endif +ifeq ($(FULL_TARGET),powerpc-amiga) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +endif +ifeq ($(FULL_TARGET),powerpc-macos) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +endif +ifeq ($(FULL_TARGET),powerpc-darwin) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +endif +ifeq ($(FULL_TARGET),powerpc-morphos) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +endif +ifeq ($(FULL_TARGET),powerpc-embedded) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +endif +ifeq ($(FULL_TARGET),sparc-linux) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +endif +ifeq ($(FULL_TARGET),sparc-netbsd) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +endif +ifeq ($(FULL_TARGET),sparc-solaris) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +endif +ifeq ($(FULL_TARGET),sparc-embedded) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +endif +ifeq ($(FULL_TARGET),x86_64-linux) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +endif +ifeq ($(FULL_TARGET),x86_64-freebsd) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +endif +ifeq ($(FULL_TARGET),x86_64-darwin) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +endif +ifeq ($(FULL_TARGET),x86_64-win64) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +endif +ifeq ($(FULL_TARGET),x86_64-embedded) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +endif +ifeq ($(FULL_TARGET),arm-linux) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +endif +ifeq ($(FULL_TARGET),arm-palmos) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +endif +ifeq ($(FULL_TARGET),arm-wince) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +endif +ifeq ($(FULL_TARGET),arm-gba) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +endif +ifeq ($(FULL_TARGET),arm-nds) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +endif +ifeq ($(FULL_TARGET),arm-embedded) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +endif +ifeq ($(FULL_TARGET),arm-symbian) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +endif +ifeq ($(FULL_TARGET),powerpc64-linux) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +endif +ifeq ($(FULL_TARGET),powerpc64-darwin) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +endif +ifeq ($(FULL_TARGET),powerpc64-embedded) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +endif +ifdef REQUIRE_PACKAGES_RTL +PACKAGEDIR_RTL:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /rtl/Makefile.fpc,$(PACKAGESDIR)))))) +ifneq ($(PACKAGEDIR_RTL),) +ifneq ($(wildcard $(PACKAGEDIR_RTL)/units/$(TARGETSUFFIX)),) +UNITDIR_RTL=$(PACKAGEDIR_RTL)/units/$(TARGETSUFFIX) +else +UNITDIR_RTL=$(PACKAGEDIR_RTL) +endif +ifdef CHECKDEPEND +$(PACKAGEDIR_RTL)/$(FPCMADE): + $(MAKE) -C $(PACKAGEDIR_RTL) $(FPCMADE) +override ALLDEPENDENCIES+=$(PACKAGEDIR_RTL)/$(FPCMADE) +endif +else +PACKAGEDIR_RTL= +UNITDIR_RTL:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /rtl/Package.fpc,$(UNITSDIR))))) +ifneq ($(UNITDIR_RTL),) +UNITDIR_RTL:=$(firstword $(UNITDIR_RTL)) +else +UNITDIR_RTL= +endif +endif +ifdef UNITDIR_RTL +override COMPILER_UNITDIR+=$(UNITDIR_RTL) +endif +endif +ifdef REQUIRE_PACKAGES_X11 +PACKAGEDIR_X11:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /x11/Makefile.fpc,$(PACKAGESDIR)))))) +ifneq ($(PACKAGEDIR_X11),) +ifneq ($(wildcard $(PACKAGEDIR_X11)/units/$(TARGETSUFFIX)),) +UNITDIR_X11=$(PACKAGEDIR_X11)/units/$(TARGETSUFFIX) +else +UNITDIR_X11=$(PACKAGEDIR_X11) +endif +ifdef CHECKDEPEND +$(PACKAGEDIR_X11)/$(FPCMADE): + $(MAKE) -C $(PACKAGEDIR_X11) $(FPCMADE) +override ALLDEPENDENCIES+=$(PACKAGEDIR_X11)/$(FPCMADE) +endif +else +PACKAGEDIR_X11= +UNITDIR_X11:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /x11/Package.fpc,$(UNITSDIR))))) +ifneq ($(UNITDIR_X11),) +UNITDIR_X11:=$(firstword $(UNITDIR_X11)) +else +UNITDIR_X11= +endif +endif +ifdef UNITDIR_X11 +override COMPILER_UNITDIR+=$(UNITDIR_X11) +endif +endif +ifndef NOCPUDEF +override FPCOPTDEF=$(CPU_TARGET) +endif +ifneq ($(OS_TARGET),$(OS_SOURCE)) +override FPCOPT+=-T$(OS_TARGET) +endif +ifneq ($(CPU_TARGET),$(CPU_SOURCE)) +override FPCOPT+=-P$(CPU_TARGET) +endif +ifeq ($(OS_SOURCE),openbsd) +override FPCOPT+=-FD$(NEW_BINUTILS_PATH) +endif +ifndef CROSSBOOTSTRAP +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-XP$(BINUTILSPREFIX) +endif +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-Xr$(RLINKPATH) +endif +endif +ifdef UNITDIR +override FPCOPT+=$(addprefix -Fu,$(UNITDIR)) +endif +ifdef LIBDIR +override FPCOPT+=$(addprefix -Fl,$(LIBDIR)) +endif +ifdef OBJDIR +override FPCOPT+=$(addprefix -Fo,$(OBJDIR)) +endif +ifdef INCDIR +override FPCOPT+=$(addprefix -Fi,$(INCDIR)) +endif +ifdef LINKSMART +override FPCOPT+=-XX +endif +ifdef CREATESMART +override FPCOPT+=-CX +endif +ifdef DEBUG +override FPCOPT+=-gl +override FPCOPTDEF+=DEBUG +endif +ifdef RELEASE +ifneq ($(findstring 2.0.,$(FPC_VERSION)),) +ifeq ($(CPU_TARGET),i386) +FPCCPUOPT:=-OG2p3 +endif +ifeq ($(CPU_TARGET),powerpc) +FPCCPUOPT:=-O1r +endif +else +FPCCPUOPT:=-O2 +endif +override FPCOPT+=-Ur -Xs $(FPCCPUOPT) -n +override FPCOPTDEF+=RELEASE +endif +ifdef STRIP +override FPCOPT+=-Xs +endif +ifdef OPTIMIZE +override FPCOPT+=-O2 +endif +ifdef VERBOSE +override FPCOPT+=-vwni +endif +ifdef COMPILER_OPTIONS +override FPCOPT+=$(COMPILER_OPTIONS) +endif +ifdef COMPILER_UNITDIR +override FPCOPT+=$(addprefix -Fu,$(COMPILER_UNITDIR)) +endif +ifdef COMPILER_LIBRARYDIR +override FPCOPT+=$(addprefix -Fl,$(COMPILER_LIBRARYDIR)) +endif +ifdef COMPILER_OBJECTDIR +override FPCOPT+=$(addprefix -Fo,$(COMPILER_OBJECTDIR)) +endif +ifdef COMPILER_INCLUDEDIR +override FPCOPT+=$(addprefix -Fi,$(COMPILER_INCLUDEDIR)) +endif +ifdef CROSSBINDIR +override FPCOPT+=-FD$(CROSSBINDIR) +endif +ifdef COMPILER_TARGETDIR +override FPCOPT+=-FE$(COMPILER_TARGETDIR) +ifeq ($(COMPILER_TARGETDIR),.) +override TARGETDIRPREFIX= +else +override TARGETDIRPREFIX=$(COMPILER_TARGETDIR)/ +endif +endif +ifdef COMPILER_UNITTARGETDIR +override FPCOPT+=-FU$(COMPILER_UNITTARGETDIR) +ifeq ($(COMPILER_UNITTARGETDIR),.) +override UNITTARGETDIRPREFIX= +else +override UNITTARGETDIRPREFIX=$(COMPILER_UNITTARGETDIR)/ +endif +else +ifdef COMPILER_TARGETDIR +override COMPILER_UNITTARGETDIR=$(COMPILER_TARGETDIR) +override UNITTARGETDIRPREFIX=$(TARGETDIRPREFIX) +endif +endif +ifdef CREATESHARED +override FPCOPT+=-Cg +ifeq ($(CPU_TARGET),i386) +override FPCOPT+=-Aas +endif +endif +ifeq ($(findstring 2.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),linux) +ifeq ($(CPU_TARGET),x86_64) +override FPCOPT+=-Cg +endif +endif +endif +ifdef LINKSHARED +endif +ifdef GCCLIBDIR +override FPCOPT+=-Fl$(GCCLIBDIR) +endif +ifdef OTHERLIBDIR +override FPCOPT+=$(addprefix -Fl,$(OTHERLIBDIR)) +endif +ifdef OPT +override FPCOPT+=$(OPT) +endif +ifdef FPCOPTDEF +override FPCOPT+=$(addprefix -d,$(FPCOPTDEF)) +endif +ifdef CFGFILE +override FPCOPT+=@$(CFGFILE) +endif +ifdef USEENV +override FPCEXTCMD:=$(FPCOPT) +override FPCOPT:=!FPCEXTCMD +export FPCEXTCMD +endif +override AFULL_TARGET=$(CPU_TARGET)-$(OS_TARGET) +override AFULL_SOURCE=$(CPU_SOURCE)-$(OS_SOURCE) +ifneq ($(AFULL_TARGET),$(AFULL_SOURCE)) +override ACROSSCOMPILE=1 +endif +ifdef ACROSSCOMPILE +override FPCOPT+=$(CROSSOPT) +endif +override COMPILER:=$(FPC) $(FPCOPT) +ifeq (,$(findstring -s ,$(COMPILER))) +EXECPPAS= +else +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +ifdef RUNBATCH +EXECPPAS:=@$(RUNBATCH) $(PPAS) +else +EXECPPAS:=@$(PPAS) +endif +endif +endif +.PHONY: fpc_units +ifneq ($(TARGET_UNITS)$(TARGET_IMPLICITUNITS),) +override ALLTARGET+=fpc_units +override UNITPPUFILES=$(addsuffix $(PPUEXT),$(TARGET_UNITS)) +override IMPLICITUNITPPUFILES=$(addsuffix $(PPUEXT),$(TARGET_IMPLICITUNITS)) +override INSTALLPPUFILES+=$(UNITPPUFILES) $(IMPLICITUNITPPUFILES) +override CLEANPPUFILES+=$(UNITPPUFILES) $(IMPLICITUNITPPUFILES) +endif +fpc_units: $(COMPILER_UNITTARGETDIR) $(UNITPPUFILES) +.PHONY: fpc_exes +ifndef CROSSINSTALL +ifneq ($(TARGET_PROGRAMS),) +override EXEFILES=$(addsuffix $(EXEEXT),$(TARGET_PROGRAMS)) +override EXEOFILES:=$(addsuffix $(OEXT),$(TARGET_PROGRAMS)) $(addprefix $(STATICLIBPREFIX),$(addsuffix $(STATICLIBEXT),$(TARGET_PROGRAMS))) $(addprefix $(IMPORTLIBPREFIX),$(addsuffix $(STATICLIBEXT),$(TARGET_PROGRAMS))) +override ALLTARGET+=fpc_exes +override INSTALLEXEFILES+=$(EXEFILES) +override CLEANEXEFILES+=$(EXEFILES) $(EXEOFILES) +ifeq ($(OS_TARGET),os2) +override CLEANEXEFILES+=$(addsuffix $(AOUTEXT),$(TARGET_PROGRAMS)) +endif +ifeq ($(OS_TARGET),emx) +override CLEANEXEFILES+=$(addsuffix $(AOUTEXT),$(TARGET_PROGRAMS)) +endif +endif +endif +fpc_exes: $(COMPILER_TARGETDIR) $(COMPILER_UNITTARGETDIR) $(EXEFILES) +ifdef TARGET_RSTS +override RSTFILES=$(addsuffix $(RSTEXT),$(TARGET_RSTS)) +override CLEANRSTFILES+=$(RSTFILES) +endif +.PHONY: fpc_examples +ifneq ($(TARGET_EXAMPLES),) +HASEXAMPLES=1 +override EXAMPLESOURCEFILES:=$(wildcard $(addsuffix .pp,$(TARGET_EXAMPLES)) $(addsuffix .pas,$(TARGET_EXAMPLES)) $(addsuffix .lpr,$(TARGET_EXAMPLES)) $(addsuffix .dpr,$(TARGET_EXAMPLES))) +override EXAMPLEFILES:=$(addsuffix $(EXEEXT),$(TARGET_EXAMPLES)) +override EXAMPLEOFILES:=$(addsuffix $(OEXT),$(TARGET_EXAMPLES)) $(addprefix $(STATICLIBPREFIX),$(addsuffix $(STATICLIBEXT),$(TARGET_EXAMPLES))) $(addprefix $(IMPORTLIBPREFIX),$(addsuffix $(STATICLIBEXT),$(TARGET_EXAMPLES))) +override CLEANEXEFILES+=$(EXAMPLEFILES) $(EXAMPLEOFILES) +ifeq ($(OS_TARGET),os2) +override CLEANEXEFILES+=$(addsuffix $(AOUTEXT),$(TARGET_EXAMPLES)) +endif +ifeq ($(OS_TARGET),emx) +override CLEANEXEFILES+=$(addsuffix $(AOUTEXT),$(TARGET_EXAMPLES)) +endif +endif +ifneq ($(TARGET_EXAMPLEDIRS),) +HASEXAMPLES=1 +endif +fpc_examples: all $(EXAMPLEFILES) $(addsuffix _all,$(TARGET_EXAMPLEDIRS)) +.PHONY: fpc_all fpc_smart fpc_debug fpc_release fpc_shared +$(FPCMADE): $(ALLDEPENDENCIES) $(ALLTARGET) + @$(ECHOREDIR) Compiled > $(FPCMADE) +fpc_all: $(FPCMADE) +fpc_smart: + $(MAKE) all LINKSMART=1 CREATESMART=1 +fpc_debug: + $(MAKE) all DEBUG=1 +fpc_release: + $(MAKE) all RELEASE=1 +.SUFFIXES: $(EXEEXT) $(PPUEXT) $(OEXT) .pas .lpr .dpr .pp .rc .res +$(COMPILER_UNITTARGETDIR): + $(MKDIRTREE) $(COMPILER_UNITTARGETDIR) +$(COMPILER_TARGETDIR): + $(MKDIRTREE) $(COMPILER_TARGETDIR) +%$(PPUEXT): %.pp + $(COMPILER) $< + $(EXECPPAS) +%$(PPUEXT): %.pas + $(COMPILER) $< + $(EXECPPAS) +%$(EXEEXT): %.pp + $(COMPILER) $< + $(EXECPPAS) +%$(EXEEXT): %.pas + $(COMPILER) $< + $(EXECPPAS) +%$(EXEEXT): %.lpr + $(COMPILER) $< + $(EXECPPAS) +%$(EXEEXT): %.dpr + $(COMPILER) $< + $(EXECPPAS) +%.res: %.rc + windres -i $< -o $@ +vpath %.pp $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR) +vpath %.pas $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR) +vpath %.lpr $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR) +vpath %.dpr $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR) +vpath %.inc $(COMPILER_INCLUDEDIR) +vpath %$(OEXT) $(COMPILER_UNITTARGETDIR) +vpath %$(PPUEXT) $(COMPILER_UNITTARGETDIR) +.PHONY: fpc_shared +override INSTALLTARGET+=fpc_shared_install +ifndef SHARED_LIBVERSION +SHARED_LIBVERSION=$(FPC_VERSION) +endif +ifndef SHARED_LIBNAME +SHARED_LIBNAME=$(PACKAGE_NAME) +endif +ifndef SHARED_FULLNAME +SHARED_FULLNAME=$(SHAREDLIBPREFIX)$(SHARED_LIBNAME)-$(SHARED_LIBVERSION)$(SHAREDLIBEXT) +endif +ifndef SHARED_LIBUNITS +SHARED_LIBUNITS:=$(TARGET_UNITS) $(TARGET_IMPLICITUNITS) +override SHARED_LIBUNITS:=$(filter-out $(INSTALL_BUILDUNIT),$(SHARED_LIBUNITS)) +endif +fpc_shared: +ifdef HASSHAREDLIB + $(MAKE) all CREATESHARED=1 LINKSHARED=1 CREATESMART=1 +ifneq ($(SHARED_BUILD),n) + $(PPUMOVE) -q $(SHARED_LIBUNITS) -i$(COMPILER_UNITTARGETDIR) -o$(SHARED_FULLNAME) -d$(COMPILER_UNITTARGETDIR) +endif +else + @$(ECHO) Shared Libraries not supported +endif +fpc_shared_install: +ifneq ($(SHARED_BUILD),n) +ifneq ($(SHARED_LIBUNITS),) +ifneq ($(wildcard $(COMPILER_UNITTARGETDIR)/$(SHARED_FULLNAME)),) + $(INSTALL) $(COMPILER_UNITTARGETDIR)/$(SHARED_FULLNAME) $(INSTALL_SHAREDDIR) +endif +endif +endif +.PHONY: fpc_install fpc_sourceinstall fpc_exampleinstall +ifdef INSTALL_UNITS +override INSTALLPPUFILES+=$(addsuffix $(PPUEXT),$(INSTALL_UNITS)) +endif +ifdef INSTALL_BUILDUNIT +override INSTALLPPUFILES:=$(filter-out $(INSTALL_BUILDUNIT)$(PPUEXT),$(INSTALLPPUFILES)) +endif +ifdef INSTALLPPUFILES +override INSTALLPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(INSTALLPPUFILES)) $(addprefix $(STATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(INSTALLPPUFILES))) $(addprefix $(IMPORTLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(INSTALLPPUFILES))) +ifneq ($(UNITTARGETDIRPREFIX),) +override INSTALLPPUFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(notdir $(INSTALLPPUFILES))) +override INSTALLPPULINKFILES:=$(wildcard $(addprefix $(UNITTARGETDIRPREFIX),$(notdir $(INSTALLPPULINKFILES)))) +endif +override INSTALL_CREATEPACKAGEFPC=1 +endif +ifdef INSTALLEXEFILES +ifneq ($(TARGETDIRPREFIX),) +override INSTALLEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(notdir $(INSTALLEXEFILES))) +endif +endif +fpc_install: all $(INSTALLTARGET) +ifdef INSTALLEXEFILES + $(MKDIR) $(INSTALL_BINDIR) +ifdef UPXPROG + -$(UPXPROG) $(INSTALLEXEFILES) +endif + $(INSTALLEXE) $(INSTALLEXEFILES) $(INSTALL_BINDIR) +endif +ifdef INSTALL_CREATEPACKAGEFPC +ifdef FPCMAKE +ifdef PACKAGE_VERSION +ifneq ($(wildcard Makefile.fpc),) + $(FPCMAKE) -p -T$(CPU_TARGET)-$(OS_TARGET) Makefile.fpc + $(MKDIR) $(INSTALL_UNITDIR) + $(INSTALL) Package.fpc $(INSTALL_UNITDIR) +endif +endif +endif +endif +ifdef INSTALLPPUFILES + $(MKDIR) $(INSTALL_UNITDIR) + $(INSTALL) $(INSTALLPPUFILES) $(INSTALL_UNITDIR) +ifneq ($(INSTALLPPULINKFILES),) + $(INSTALL) $(INSTALLPPULINKFILES) $(INSTALL_UNITDIR) +endif +ifneq ($(wildcard $(LIB_FULLNAME)),) + $(MKDIR) $(INSTALL_LIBDIR) + $(INSTALL) $(LIB_FULLNAME) $(INSTALL_LIBDIR) +ifdef inUnix + ln -sf $(LIB_FULLNAME) $(INSTALL_LIBDIR)/$(LIB_NAME) +endif +endif +endif +ifdef INSTALL_FILES + $(MKDIR) $(INSTALL_DATADIR) + $(INSTALL) $(INSTALL_FILES) $(INSTALL_DATADIR) +endif +fpc_sourceinstall: distclean + $(MKDIR) $(INSTALL_SOURCEDIR) + $(COPYTREE) $(BASEDIR)/* $(INSTALL_SOURCEDIR) +fpc_exampleinstall: $(addsuffix _distclean,$(TARGET_EXAMPLEDIRS)) +ifdef HASEXAMPLES + $(MKDIR) $(INSTALL_EXAMPLEDIR) +endif +ifdef EXAMPLESOURCEFILES + $(COPY) $(EXAMPLESOURCEFILES) $(INSTALL_EXAMPLEDIR) +endif +ifdef TARGET_EXAMPLEDIRS + $(COPYTREE) $(addsuffix /*,$(TARGET_EXAMPLEDIRS)) $(INSTALL_EXAMPLEDIR) +endif +.PHONY: fpc_distinstall +fpc_distinstall: install exampleinstall +.PHONY: fpc_zipinstall fpc_zipsourceinstall fpc_zipexampleinstall +ifndef PACKDIR +ifndef inUnix +PACKDIR=$(BASEDIR)/../fpc-pack +else +PACKDIR=/tmp/fpc-pack +endif +endif +ifndef ZIPNAME +ifdef DIST_ZIPNAME +ZIPNAME=$(DIST_ZIPNAME) +else +ZIPNAME=$(PACKAGE_NAME) +endif +endif +ifndef FULLZIPNAME +FULLZIPNAME=$(ZIPCROSSPREFIX)$(ZIPPREFIX)$(ZIPNAME)$(ZIPSUFFIX) +endif +ifndef ZIPTARGET +ifdef DIST_ZIPTARGET +ZIPTARGET=DIST_ZIPTARGET +else +ZIPTARGET=install +endif +endif +ifndef USEZIP +ifdef inUnix +USETAR=1 +endif +endif +ifndef inUnix +USEZIPWRAPPER=1 +endif +ifdef USEZIPWRAPPER +ZIPPATHSEP=$(PATHSEP) +ZIPWRAPPER=$(subst /,$(PATHSEP),$(DIST_DESTDIR)/fpczip$(SRCBATCHEXT)) +else +ZIPPATHSEP=/ +endif +ZIPCMD_CDPACK:=cd $(subst /,$(ZIPPATHSEP),$(PACKDIR)) +ZIPCMD_CDBASE:=cd $(subst /,$(ZIPPATHSEP),$(BASEDIR)) +ifdef USETAR +ZIPDESTFILE:=$(DIST_DESTDIR)/$(FULLZIPNAME)$(TAREXT) +ZIPCMD_ZIP:=$(TARPROG) cf$(TAROPT) $(ZIPDESTFILE) * +else +ZIPDESTFILE:=$(DIST_DESTDIR)/$(FULLZIPNAME)$(ZIPEXT) +ZIPCMD_ZIP:=$(subst /,$(ZIPPATHSEP),$(ZIPPROG)) -Dr $(ZIPOPT) $(ZIPDESTFILE) * +endif +fpc_zipinstall: + $(MAKE) $(ZIPTARGET) INSTALL_PREFIX=$(PACKDIR) ZIPINSTALL=1 + $(MKDIR) $(DIST_DESTDIR) + $(DEL) $(ZIPDESTFILE) +ifdef USEZIPWRAPPER +ifneq ($(ECHOREDIR),echo) + $(ECHOREDIR) -e "$(subst \,\\,$(ZIPCMD_CDPACK))" > $(ZIPWRAPPER) + $(ECHOREDIR) -e "$(subst \,\\,$(ZIPCMD_ZIP))" >> $(ZIPWRAPPER) + $(ECHOREDIR) -e "$(subst \,\\,$(ZIPCMD_CDBASE))" >> $(ZIPWRAPPER) +else + echo $(ZIPCMD_CDPACK) > $(ZIPWRAPPER) + echo $(ZIPCMD_ZIP) >> $(ZIPWRAPPER) + echo $(ZIPCMD_CDBASE) >> $(ZIPWRAPPER) +endif +ifdef inUnix + /bin/sh $(ZIPWRAPPER) +else +ifdef RUNBATCH + $(RUNBATCH) (ZIPWRAPPER) +else + $(ZIPWRAPPER) +endif +endif + $(DEL) $(ZIPWRAPPER) +else + $(ZIPCMD_CDPACK) ; $(ZIPCMD_ZIP) ; $(ZIPCMD_CDBASE) +endif + $(DELTREE) $(PACKDIR) +fpc_zipsourceinstall: + $(MAKE) fpc_zipinstall ZIPTARGET=sourceinstall ZIPSUFFIX=$(ZIPSOURCESUFFIX) +fpc_zipexampleinstall: +ifdef HASEXAMPLES + $(MAKE) fpc_zipinstall ZIPTARGET=exampleinstall ZIPSUFFIX=$(ZIPEXAMPLESUFFIX) +endif +fpc_zipdistinstall: + $(MAKE) fpc_zipinstall ZIPTARGET=distinstall +.PHONY: fpc_clean fpc_cleanall fpc_distclean +ifdef EXEFILES +override CLEANEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEFILES)) +endif +ifdef CLEAN_UNITS +override CLEANPPUFILES+=$(addsuffix $(PPUEXT),$(CLEAN_UNITS)) +endif +ifdef CLEANPPUFILES +override CLEANPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(CLEANPPUFILES)) $(addprefix $(STATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(CLEANPPUFILES))) $(addprefix $(IMPORTLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(CLEANPPUFILES))) +ifdef DEBUGSYMEXT +override CLEANPPULINKFILES+=$(subst $(PPUEXT),$(DEBUGSYMEXT),$(CLEANPPUFILES)) +endif +override CLEANPPUFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPUFILES)) +override CLEANPPULINKFILES:=$(wildcard $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPULINKFILES))) +endif +fpc_clean: $(CLEANTARGET) +ifdef CLEANEXEFILES + -$(DEL) $(CLEANEXEFILES) +endif +ifdef CLEANPPUFILES + -$(DEL) $(CLEANPPUFILES) +endif +ifneq ($(CLEANPPULINKFILES),) + -$(DEL) $(CLEANPPULINKFILES) +endif +ifdef CLEANRSTFILES + -$(DEL) $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANRSTFILES)) +endif +ifdef CLEAN_FILES + -$(DEL) $(CLEAN_FILES) +endif +ifdef LIB_NAME + -$(DEL) $(LIB_NAME) $(LIB_FULLNAME) +endif + -$(DEL) $(FPCMADE) Package.fpc $(PPAS) script.res link.res $(FPCEXTFILE) $(REDIRFILE) + -$(DEL) *$(ASMEXT) *_ppas$(BATCHEXT) +fpc_cleanall: $(CLEANTARGET) +ifdef CLEANEXEFILES + -$(DEL) $(CLEANEXEFILES) +endif +ifdef COMPILER_UNITTARGETDIR +ifdef CLEANPPUFILES + -$(DEL) $(CLEANPPUFILES) +endif +ifneq ($(CLEANPPULINKFILES),) + -$(DEL) $(CLEANPPULINKFILES) +endif +ifdef CLEANRSTFILES + -$(DEL) $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANRSTFILES)) +endif +endif + -$(DELTREE) units + -$(DEL) *$(OEXT) *$(PPUEXT) *$(RSTEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT) +ifneq ($(PPUEXT),.ppu) + -$(DEL) *.o *.ppu *.a +endif + -$(DELTREE) *$(SMARTEXT) + -$(DEL) fpcmade.* Package.fpc $(PPAS) script.res link.res $(FPCEXTFILE) $(REDIRFILE) + -$(DEL) *_ppas$(BATCHEXT) +ifdef AOUTEXT + -$(DEL) *$(AOUTEXT) +endif +ifdef DEBUGSYMEXT + -$(DEL) *$(DEBUGSYMEXT) +endif +fpc_distclean: cleanall +.PHONY: fpc_baseinfo +override INFORULES+=fpc_baseinfo +fpc_baseinfo: + @$(ECHO) + @$(ECHO) == Package info == + @$(ECHO) Package Name..... $(PACKAGE_NAME) + @$(ECHO) Package Version.. $(PACKAGE_VERSION) + @$(ECHO) + @$(ECHO) == Configuration info == + @$(ECHO) + @$(ECHO) FPC.......... $(FPC) + @$(ECHO) FPC Version.. $(FPC_VERSION) + @$(ECHO) Source CPU... $(CPU_SOURCE) + @$(ECHO) Target CPU... $(CPU_TARGET) + @$(ECHO) Source OS.... $(OS_SOURCE) + @$(ECHO) Target OS.... $(OS_TARGET) + @$(ECHO) Full Source.. $(FULL_SOURCE) + @$(ECHO) Full Target.. $(FULL_TARGET) + @$(ECHO) SourceSuffix. $(SOURCESUFFIX) + @$(ECHO) TargetSuffix. $(TARGETSUFFIX) + @$(ECHO) + @$(ECHO) == Directory info == + @$(ECHO) + @$(ECHO) Required pkgs... $(REQUIRE_PACKAGES) + @$(ECHO) + @$(ECHO) Basedir......... $(BASEDIR) + @$(ECHO) FPCDir.......... $(FPCDIR) + @$(ECHO) CrossBinDir..... $(CROSSBINDIR) + @$(ECHO) UnitsDir........ $(UNITSDIR) + @$(ECHO) PackagesDir..... $(PACKAGESDIR) + @$(ECHO) + @$(ECHO) GCC library..... $(GCCLIBDIR) + @$(ECHO) Other library... $(OTHERLIBDIR) + @$(ECHO) + @$(ECHO) == Tools info == + @$(ECHO) + @$(ECHO) As........ $(AS) + @$(ECHO) Ld........ $(LD) + @$(ECHO) Ar........ $(AR) + @$(ECHO) Rc........ $(RC) + @$(ECHO) + @$(ECHO) Mv........ $(MVPROG) + @$(ECHO) Cp........ $(CPPROG) + @$(ECHO) Rm........ $(RMPROG) + @$(ECHO) GInstall.. $(GINSTALL) + @$(ECHO) Echo...... $(ECHO) + @$(ECHO) Shell..... $(SHELL) + @$(ECHO) Date...... $(DATE) + @$(ECHO) FPCMake... $(FPCMAKE) + @$(ECHO) PPUMove... $(PPUMOVE) + @$(ECHO) Upx....... $(UPXPROG) + @$(ECHO) Zip....... $(ZIPPROG) + @$(ECHO) + @$(ECHO) == Object info == + @$(ECHO) + @$(ECHO) Target Loaders........ $(TARGET_LOADERS) + @$(ECHO) Target Units.......... $(TARGET_UNITS) + @$(ECHO) Target Implicit Units. $(TARGET_IMPLICITUNITS) + @$(ECHO) Target Programs....... $(TARGET_PROGRAMS) + @$(ECHO) Target Dirs........... $(TARGET_DIRS) + @$(ECHO) Target Examples....... $(TARGET_EXAMPLES) + @$(ECHO) Target ExampleDirs.... $(TARGET_EXAMPLEDIRS) + @$(ECHO) + @$(ECHO) Clean Units......... $(CLEAN_UNITS) + @$(ECHO) Clean Files......... $(CLEAN_FILES) + @$(ECHO) + @$(ECHO) Install Units....... $(INSTALL_UNITS) + @$(ECHO) Install Files....... $(INSTALL_FILES) + @$(ECHO) + @$(ECHO) == Install info == + @$(ECHO) + @$(ECHO) DateStr.............. $(DATESTR) + @$(ECHO) ZipName.............. $(ZIPNAME) + @$(ECHO) ZipPrefix............ $(ZIPPREFIX) + @$(ECHO) ZipCrossPrefix....... $(ZIPCROSSPREFIX) + @$(ECHO) ZipSuffix............ $(ZIPSUFFIX) + @$(ECHO) FullZipName.......... $(FULLZIPNAME) + @$(ECHO) Install FPC Package.. $(INSTALL_FPCPACKAGE) + @$(ECHO) + @$(ECHO) Install base dir..... $(INSTALL_BASEDIR) + @$(ECHO) Install binary dir... $(INSTALL_BINDIR) + @$(ECHO) Install library dir.. $(INSTALL_LIBDIR) + @$(ECHO) Install units dir.... $(INSTALL_UNITDIR) + @$(ECHO) Install source dir... $(INSTALL_SOURCEDIR) + @$(ECHO) Install doc dir...... $(INSTALL_DOCDIR) + @$(ECHO) Install example dir.. $(INSTALL_EXAMPLEDIR) + @$(ECHO) Install data dir..... $(INSTALL_DATADIR) + @$(ECHO) + @$(ECHO) Dist destination dir. $(DIST_DESTDIR) + @$(ECHO) Dist zip name........ $(DIST_ZIPNAME) + @$(ECHO) +.PHONY: fpc_info +fpc_info: $(INFORULES) +.PHONY: fpc_makefile fpc_makefiles fpc_makefile_sub1 fpc_makefile_sub2 \ + fpc_makefile_dirs +fpc_makefile: + $(FPCMAKE) -w -T$(OS_TARGET) Makefile.fpc +fpc_makefile_sub1: +ifdef TARGET_DIRS + $(FPCMAKE) -w -T$(OS_TARGET) $(addsuffix /Makefile.fpc,$(TARGET_DIRS)) +endif +ifdef TARGET_EXAMPLEDIRS + $(FPCMAKE) -w -T$(OS_TARGET) $(addsuffix /Makefile.fpc,$(TARGET_EXAMPLEDIRS)) +endif +fpc_makefile_sub2: $(addsuffix _makefile_dirs,$(TARGET_DIRS) $(TARGET_EXAMPLEDIRS)) +fpc_makefile_dirs: fpc_makefile_sub1 fpc_makefile_sub2 +fpc_makefiles: fpc_makefile fpc_makefile_dirs +ifeq ($(FULL_TARGET),i386-linux) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),i386-go32v2) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),i386-win32) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),i386-os2) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),i386-freebsd) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),i386-beos) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),i386-netbsd) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),i386-solaris) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),i386-qnx) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),i386-netware) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),i386-openbsd) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),i386-wdosx) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),i386-darwin) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),i386-emx) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),i386-watcom) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),i386-netwlibc) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),i386-wince) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),i386-embedded) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),i386-symbian) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),m68k-linux) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),m68k-freebsd) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),m68k-netbsd) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),m68k-amiga) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),m68k-atari) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),m68k-openbsd) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),m68k-palmos) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),m68k-embedded) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),powerpc-linux) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),powerpc-netbsd) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),powerpc-amiga) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),powerpc-macos) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),powerpc-darwin) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),powerpc-morphos) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),powerpc-embedded) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),sparc-linux) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),sparc-netbsd) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),sparc-solaris) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),sparc-embedded) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),x86_64-linux) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),x86_64-freebsd) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),x86_64-darwin) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),x86_64-win64) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),x86_64-embedded) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),arm-linux) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),arm-palmos) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),arm-wince) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),arm-gba) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),arm-nds) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),arm-embedded) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),arm-symbian) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),powerpc64-linux) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),powerpc64-darwin) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),powerpc64-embedded) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifdef TARGET_EXAMPLEDIRS_EXAMPLES +examples_all: + $(MAKE) -C examples all +examples_debug: + $(MAKE) -C examples debug +examples_smart: + $(MAKE) -C examples smart +examples_release: + $(MAKE) -C examples release +examples_units: + $(MAKE) -C examples units +examples_examples: + $(MAKE) -C examples examples +examples_shared: + $(MAKE) -C examples shared +examples_install: + $(MAKE) -C examples install +examples_sourceinstall: + $(MAKE) -C examples sourceinstall +examples_exampleinstall: + $(MAKE) -C examples exampleinstall +examples_distinstall: + $(MAKE) -C examples distinstall +examples_zipinstall: + $(MAKE) -C examples zipinstall +examples_zipsourceinstall: + $(MAKE) -C examples zipsourceinstall +examples_zipexampleinstall: + $(MAKE) -C examples zipexampleinstall +examples_zipdistinstall: + $(MAKE) -C examples zipdistinstall +examples_clean: + $(MAKE) -C examples clean +examples_distclean: + $(MAKE) -C examples distclean +examples_cleanall: + $(MAKE) -C examples cleanall +examples_info: + $(MAKE) -C examples info +examples_makefiles: + $(MAKE) -C examples makefiles +examples: + $(MAKE) -C examples all +.PHONY: examples_all examples_debug examples_smart examples_release examples_units examples_examples examples_shared examples_install examples_sourceinstall examples_exampleinstall examples_distinstall examples_zipinstall examples_zipsourceinstall examples_zipexampleinstall examples_zipdistinstall examples_clean examples_distclean examples_cleanall examples_info examples_makefiles examples +endif +all: fpc_all +debug: fpc_debug +smart: fpc_smart +release: fpc_release +units: fpc_units +examples: fpc_examples +shared: fpc_shared +install: fpc_install +sourceinstall: fpc_sourceinstall +exampleinstall: fpc_exampleinstall +distinstall: fpc_distinstall +zipinstall: fpc_zipinstall +zipsourceinstall: fpc_zipsourceinstall +zipexampleinstall: fpc_zipexampleinstall +zipdistinstall: fpc_zipdistinstall +clean: fpc_clean $(addsuffix _clean,$(TARGET_EXAMPLEDIRS)) +distclean: fpc_distclean +cleanall: fpc_cleanall +info: fpc_info +makefiles: fpc_makefiles +.PHONY: all debug smart release units examples shared install sourceinstall exampleinstall distinstall zipinstall zipsourceinstall zipexampleinstall zipdistinstall clean distclean cleanall info makefiles +ifneq ($(wildcard fpcmake.loc),) +include fpcmake.loc +endif +.NOTPARALLEL: diff --git a/packages/xforms/Makefile.fpc b/packages/xforms/Makefile.fpc new file mode 100644 index 0000000000..ca6e509418 --- /dev/null +++ b/packages/xforms/Makefile.fpc @@ -0,0 +1,32 @@ +# +# Makefile.fpc for Forms Bindings +# + +[package] +name=xforms +version=2.0.0 + +[target] +units=xforms +programs=fd2pascal +exampledirs=examples + +[require] +packages=x11 +libc=y + +[install] +fpcpackage=y + +[default] +fpcdir=../.. + +[compiler] +includedir=src +sourcedir=src tests examples + +[shared] +build=n + +[rules] +.NOTPARALLEL: diff --git a/packages/xforms/README b/packages/xforms/README new file mode 100644 index 0000000000..02212717fc --- /dev/null +++ b/packages/xforms/README @@ -0,0 +1,38 @@ +FPKPascal XForms support. +------------------------- + +To compile the units in this directory, proceed as follows: + +0. You need an installed forms library. You need to know where it is + installed. Either version 0.86 or 0.88 will do. For version 0.88 + you need version 0.99.8 or higher of the compiler. + +2. Edit the Makefile in the current directory . You have to specify: + - which version of the forms library you use (0.86 or 0.88) + - The place of the forms library. (if not in /usr/lib). + - The place of the X library. (should be /usr/X11/lib) + - Where you want the forms libraries installed. + - Where you want the fd2pascal filter installed. + - Optionally, the path to the compiler and the pascal units. + +3. You should be all set to compile. type + make all + This will compile all the needed units, and the fd2pascal program which + translates .fd design files to pascal programs. + As of version 0.88, the fdesign program can directly issue pascal + code if you have fd2pascal installed. + +4. To compile the demo programs, type (still in the forms directory) + make demo + This will compile all the demo programs in the demo subdirectory. + +5. To install the units and the fd2pascal program, type + make install + This will install all units and the program in the directories you + specified. They will be created if they don't exist. + +More information on all this can be found on + http://tfdec1.fys.kuleuven.ac.be/~michael/fpc-linux/forms.html + +Enjoy ! +Michael Van Canneyt (michael@tfdec1.fys.kuleuven.ac.be) diff --git a/packages/xforms/USAGE b/packages/xforms/USAGE new file mode 100644 index 0000000000..4e58a70602 --- /dev/null +++ b/packages/xforms/USAGE @@ -0,0 +1,67 @@ +The usage of the forms library is relatively straightforward. + +The interface has been designed as follows: + +- All functions and procedures have kept their names. +- All types have a T appended in front of it. + If the forms manual speaks of a FL_OBJECT type, then the FPK port + has a TFL_OBJECT type. + (This is because of pascal's CaSe InSenSiTiViTy) +- Pointers to all objects have been defined as Ptype_of_object. + In C : FL_OBJECT * + in FPK : PFL_OBJECT = ^TFL_OBJECT +- All 'int' declarations are 'longint' in fpkpascal. + +Check out the 'demo' directory for examples. + +Some fields of some structs have been renamed (fields as 'label' or 'type') +when they were in conflict with Pascal reserved words. Unfortunately this +has not been done in a consistent way. This will change in the future, +hopefully. As a rule of thumb : reserved pascal words got the prefix 'the', +so 'type' became 'thetype' etc. + +When in doubt : consult the interface part of 'forms.pp' + +How to compile an executable ? + +Easy as pie: +The only thing that you must remember is to provide the linker with the +path to the X-libraries, and the form libraries. You can set this through +the '-k' option of -Fl option. + +ppc386 -k-L/usr/X11/lib myprog.pp +or +ppc386 -Fl/usr/X11/lib myprog.pp + +Will do the trick in most cases. + + +DESIGNING A FORM +================ + +As of version 0.88 of xforms, fdesign supports pascal directly ! +Using version 0.86, you can use the workaround described below: + +You can convert existing design programs as follows: +version 0.86: + fdesign [other options] -convert -ada -filter fd2pascal file.fd +version 0.88: + fdesign [other options] -convert -pascal file.fd + +or start a new design with +version 0.86: + fdesign -ada -filter fd2pascal +version 0.88: + fdesign -pascal + +This will emit pascal code. Use the following options + -callback + to emit procedure headers. + -main + to emit a program instead of a unit + -altformat + to use global variables instead of records. + +Enjoy ! + +Michael Van Canneyt (michael@tfdec1.fys.kuleuven.ac.be) diff --git a/packages/xforms/examples/Makefile b/packages/xforms/examples/Makefile new file mode 100644 index 0000000000..f72b0302c6 --- /dev/null +++ b/packages/xforms/examples/Makefile @@ -0,0 +1,2046 @@ +# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2008/01/26] +# +default: all +MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-wince arm-gba arm-nds arm-embedded arm-symbian powerpc64-linux powerpc64-darwin powerpc64-embedded +BSDs = freebsd netbsd openbsd darwin +UNIXs = linux $(BSDs) solaris qnx +LIMIT83fs = go32v2 os2 emx watcom +OSNeedsComspecToRunBatch = go32v2 watcom +FORCE: +.PHONY: FORCE +override PATH:=$(patsubst %/,%,$(subst \,/,$(PATH))) +ifneq ($(findstring darwin,$(OSTYPE)),) +inUnix=1 #darwin +SEARCHPATH:=$(filter-out .,$(subst :, ,$(PATH))) +else +ifeq ($(findstring ;,$(PATH)),) +inUnix=1 +SEARCHPATH:=$(filter-out .,$(subst :, ,$(PATH))) +else +SEARCHPATH:=$(subst ;, ,$(PATH)) +endif +endif +SEARCHPATH+=$(patsubst %/,%,$(subst \,/,$(dir $(MAKE)))) +PWD:=$(strip $(wildcard $(addsuffix /pwd.exe,$(SEARCHPATH)))) +ifeq ($(PWD),) +PWD:=$(strip $(wildcard $(addsuffix /pwd,$(SEARCHPATH)))) +ifeq ($(PWD),) +$(error You need the GNU utils package to use this Makefile) +else +PWD:=$(firstword $(PWD)) +SRCEXEEXT= +endif +else +PWD:=$(firstword $(PWD)) +SRCEXEEXT=.exe +endif +ifndef inUnix +ifeq ($(OS),Windows_NT) +inWinNT=1 +else +ifdef OS2_SHELL +inOS2=1 +endif +endif +else +ifneq ($(findstring cygdrive,$(PATH)),) +inCygWin=1 +endif +endif +ifdef inUnix +SRCBATCHEXT=.sh +else +ifdef inOS2 +SRCBATCHEXT=.cmd +else +SRCBATCHEXT=.bat +endif +endif +ifdef COMSPEC +ifneq ($(findstring $(OS_SOURCE),$(OSNeedsComspecToRunBatch)),) +RUNBATCH=$(COMSPEC) /C +endif +endif +ifdef inUnix +PATHSEP=/ +else +PATHSEP:=$(subst /,\,/) +ifdef inCygWin +PATHSEP=/ +endif +endif +ifdef PWD +BASEDIR:=$(subst \,/,$(shell $(PWD))) +ifdef inCygWin +ifneq ($(findstring /cygdrive/,$(BASEDIR)),) +BASENODIR:=$(patsubst /cygdrive%,%,$(BASEDIR)) +BASEDRIVE:=$(firstword $(subst /, ,$(BASENODIR))) +BASEDIR:=$(subst /cygdrive/$(BASEDRIVE)/,$(BASEDRIVE):/,$(BASEDIR)) +endif +endif +else +BASEDIR=. +endif +ifdef inOS2 +ifndef ECHO +ECHO:=$(strip $(wildcard $(addsuffix /gecho$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(ECHO),) +ECHO:=$(strip $(wildcard $(addsuffix /echo$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(ECHO),) +ECHO=echo +else +ECHO:=$(firstword $(ECHO)) +endif +else +ECHO:=$(firstword $(ECHO)) +endif +endif +export ECHO +endif +override DEFAULT_FPCDIR=../../.. +ifndef FPC +ifdef PP +FPC=$(PP) +endif +endif +ifndef FPC +FPCPROG:=$(strip $(wildcard $(addsuffix /fpc$(SRCEXEEXT),$(SEARCHPATH)))) +ifneq ($(FPCPROG),) +FPCPROG:=$(firstword $(FPCPROG)) +ifneq ($(CPU_TARGET),) +FPC:=$(shell $(FPCPROG) -P$(CPU_TARGET) -PB) +else +FPC:=$(shell $(FPCPROG) -PB) +endif +ifneq ($(findstring Error,$(FPC)),) +override FPC=$(firstword $(strip $(wildcard $(addsuffix /ppc386$(SRCEXEEXT),$(SEARCHPATH))))) +endif +else +override FPC=$(firstword $(strip $(wildcard $(addsuffix /ppc386$(SRCEXEEXT),$(SEARCHPATH))))) +endif +endif +override FPC:=$(subst $(SRCEXEEXT),,$(FPC)) +override FPC:=$(subst \,/,$(FPC))$(SRCEXEEXT) +FOUNDFPC:=$(strip $(wildcard $(FPC))) +ifeq ($(FOUNDFPC),) +FOUNDFPC=$(strip $(wildcard $(addsuffix /$(FPC),$(SEARCHPATH)))) +ifeq ($(FOUNDFPC),) +$(error Compiler $(FPC) not found) +endif +endif +ifndef FPC_COMPILERINFO +FPC_COMPILERINFO:=$(shell $(FPC) -iVSPTPSOTO) +endif +ifndef FPC_VERSION +FPC_VERSION:=$(word 1,$(FPC_COMPILERINFO)) +endif +export FPC FPC_VERSION FPC_COMPILERINFO +unexport CHECKDEPEND ALLDEPENDENCIES +ifndef CPU_TARGET +ifdef CPU_TARGET_DEFAULT +CPU_TARGET=$(CPU_TARGET_DEFAULT) +endif +endif +ifndef OS_TARGET +ifdef OS_TARGET_DEFAULT +OS_TARGET=$(OS_TARGET_DEFAULT) +endif +endif +ifneq ($(words $(FPC_COMPILERINFO)),5) +FPC_COMPILERINFO+=$(shell $(FPC) -iSP) +FPC_COMPILERINFO+=$(shell $(FPC) -iTP) +FPC_COMPILERINFO+=$(shell $(FPC) -iSO) +FPC_COMPILERINFO+=$(shell $(FPC) -iTO) +endif +ifndef CPU_SOURCE +CPU_SOURCE:=$(word 2,$(FPC_COMPILERINFO)) +endif +ifndef CPU_TARGET +CPU_TARGET:=$(word 3,$(FPC_COMPILERINFO)) +endif +ifndef OS_SOURCE +OS_SOURCE:=$(word 4,$(FPC_COMPILERINFO)) +endif +ifndef OS_TARGET +OS_TARGET:=$(word 5,$(FPC_COMPILERINFO)) +endif +FULL_TARGET=$(CPU_TARGET)-$(OS_TARGET) +FULL_SOURCE=$(CPU_SOURCE)-$(OS_SOURCE) +ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) +TARGETSUFFIX=$(OS_TARGET) +SOURCESUFFIX=$(OS_SOURCE) +else +TARGETSUFFIX=$(FULL_TARGET) +SOURCESUFFIX=$(FULL_SOURCE) +endif +ifneq ($(FULL_TARGET),$(FULL_SOURCE)) +CROSSCOMPILE=1 +endif +ifeq ($(findstring makefile,$(MAKECMDGOALS)),) +ifeq ($(findstring $(FULL_TARGET),$(MAKEFILETARGETS)),) +$(error The Makefile doesn't support target $(FULL_TARGET), please run fpcmake first) +endif +endif +ifneq ($(findstring $(OS_TARGET),$(BSDs)),) +BSDhier=1 +endif +ifeq ($(OS_TARGET),linux) +linuxHier=1 +endif +export OS_TARGET OS_SOURCE CPU_TARGET CPU_SOURCE FULL_TARGET FULL_SOURCE TARGETSUFFIX SOURCESUFFIX CROSSCOMPILE +ifdef FPCDIR +override FPCDIR:=$(subst \,/,$(FPCDIR)) +ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),) +override FPCDIR=wrong +endif +else +override FPCDIR=wrong +endif +ifdef DEFAULT_FPCDIR +ifeq ($(FPCDIR),wrong) +override FPCDIR:=$(subst \,/,$(DEFAULT_FPCDIR)) +ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),) +override FPCDIR=wrong +endif +endif +endif +ifeq ($(FPCDIR),wrong) +ifdef inUnix +override FPCDIR=/usr/local/lib/fpc/$(FPC_VERSION) +ifeq ($(wildcard $(FPCDIR)/units),) +override FPCDIR=/usr/lib/fpc/$(FPC_VERSION) +endif +else +override FPCDIR:=$(subst /$(FPC),,$(firstword $(strip $(wildcard $(addsuffix /$(FPC),$(SEARCHPATH)))))) +override FPCDIR:=$(FPCDIR)/.. +ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),) +override FPCDIR:=$(FPCDIR)/.. +ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),) +override FPCDIR:=$(BASEDIR) +ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),) +override FPCDIR=c:/pp +endif +endif +endif +endif +endif +ifndef CROSSBINDIR +CROSSBINDIR:=$(wildcard $(FPCDIR)/bin/$(TARGETSUFFIX)) +endif +ifndef BINUTILSPREFIX +ifndef CROSSBINDIR +ifdef CROSSCOMPILE +BINUTILSPREFIX=$(CPU_TARGET)-$(OS_TARGET)- +endif +endif +endif +UNITSDIR:=$(wildcard $(FPCDIR)/units/$(TARGETSUFFIX)) +ifeq ($(UNITSDIR),) +UNITSDIR:=$(wildcard $(FPCDIR)/units/$(OS_TARGET)) +endif +PACKAGESDIR:=$(wildcard $(FPCDIR) $(FPCDIR)/packages $(FPCDIR)/packages/base $(FPCDIR)/packages/extra) +ifeq ($(FULL_TARGET),i386-linux) +override TARGET_PROGRAMS+=pushme yesno pushbutton touchbutton minput inputall choice butttypes colsel colsel1 buttonall chartall positioner secretinput cursor fdial ldial ndial invslider sliderall borderwidth boxtype xyplotover arrowbutton browserop browserall chartstrip colbrowser counter fbrowse1 fbrowse flclock fonts goodies lalign ll longlabel menu objinactive objpos newbutton multilabel objreturn +endif +ifeq ($(FULL_TARGET),i386-go32v2) +override TARGET_PROGRAMS+=pushme yesno pushbutton touchbutton minput inputall choice butttypes colsel colsel1 buttonall chartall positioner secretinput cursor fdial ldial ndial invslider sliderall borderwidth boxtype xyplotover arrowbutton browserop browserall chartstrip colbrowser counter fbrowse1 fbrowse flclock fonts goodies lalign ll longlabel menu objinactive objpos newbutton multilabel objreturn +endif +ifeq ($(FULL_TARGET),i386-win32) +override TARGET_PROGRAMS+=pushme yesno pushbutton touchbutton minput inputall choice butttypes colsel colsel1 buttonall chartall positioner secretinput cursor fdial ldial ndial invslider sliderall borderwidth boxtype xyplotover arrowbutton browserop browserall chartstrip colbrowser counter fbrowse1 fbrowse flclock fonts goodies lalign ll longlabel menu objinactive objpos newbutton multilabel objreturn +endif +ifeq ($(FULL_TARGET),i386-os2) +override TARGET_PROGRAMS+=pushme yesno pushbutton touchbutton minput inputall choice butttypes colsel colsel1 buttonall chartall positioner secretinput cursor fdial ldial ndial invslider sliderall borderwidth boxtype xyplotover arrowbutton browserop browserall chartstrip colbrowser counter fbrowse1 fbrowse flclock fonts goodies lalign ll longlabel menu objinactive objpos newbutton multilabel objreturn +endif +ifeq ($(FULL_TARGET),i386-freebsd) +override TARGET_PROGRAMS+=pushme yesno pushbutton touchbutton minput inputall choice butttypes colsel colsel1 buttonall chartall positioner secretinput cursor fdial ldial ndial invslider sliderall borderwidth boxtype xyplotover arrowbutton browserop browserall chartstrip colbrowser counter fbrowse1 fbrowse flclock fonts goodies lalign ll longlabel menu objinactive objpos newbutton multilabel objreturn +endif +ifeq ($(FULL_TARGET),i386-beos) +override TARGET_PROGRAMS+=pushme yesno pushbutton touchbutton minput inputall choice butttypes colsel colsel1 buttonall chartall positioner secretinput cursor fdial ldial ndial invslider sliderall borderwidth boxtype xyplotover arrowbutton browserop browserall chartstrip colbrowser counter fbrowse1 fbrowse flclock fonts goodies lalign ll longlabel menu objinactive objpos newbutton multilabel objreturn +endif +ifeq ($(FULL_TARGET),i386-netbsd) +override TARGET_PROGRAMS+=pushme yesno pushbutton touchbutton minput inputall choice butttypes colsel colsel1 buttonall chartall positioner secretinput cursor fdial ldial ndial invslider sliderall borderwidth boxtype xyplotover arrowbutton browserop browserall chartstrip colbrowser counter fbrowse1 fbrowse flclock fonts goodies lalign ll longlabel menu objinactive objpos newbutton multilabel objreturn +endif +ifeq ($(FULL_TARGET),i386-solaris) +override TARGET_PROGRAMS+=pushme yesno pushbutton touchbutton minput inputall choice butttypes colsel colsel1 buttonall chartall positioner secretinput cursor fdial ldial ndial invslider sliderall borderwidth boxtype xyplotover arrowbutton browserop browserall chartstrip colbrowser counter fbrowse1 fbrowse flclock fonts goodies lalign ll longlabel menu objinactive objpos newbutton multilabel objreturn +endif +ifeq ($(FULL_TARGET),i386-qnx) +override TARGET_PROGRAMS+=pushme yesno pushbutton touchbutton minput inputall choice butttypes colsel colsel1 buttonall chartall positioner secretinput cursor fdial ldial ndial invslider sliderall borderwidth boxtype xyplotover arrowbutton browserop browserall chartstrip colbrowser counter fbrowse1 fbrowse flclock fonts goodies lalign ll longlabel menu objinactive objpos newbutton multilabel objreturn +endif +ifeq ($(FULL_TARGET),i386-netware) +override TARGET_PROGRAMS+=pushme yesno pushbutton touchbutton minput inputall choice butttypes colsel colsel1 buttonall chartall positioner secretinput cursor fdial ldial ndial invslider sliderall borderwidth boxtype xyplotover arrowbutton browserop browserall chartstrip colbrowser counter fbrowse1 fbrowse flclock fonts goodies lalign ll longlabel menu objinactive objpos newbutton multilabel objreturn +endif +ifeq ($(FULL_TARGET),i386-openbsd) +override TARGET_PROGRAMS+=pushme yesno pushbutton touchbutton minput inputall choice butttypes colsel colsel1 buttonall chartall positioner secretinput cursor fdial ldial ndial invslider sliderall borderwidth boxtype xyplotover arrowbutton browserop browserall chartstrip colbrowser counter fbrowse1 fbrowse flclock fonts goodies lalign ll longlabel menu objinactive objpos newbutton multilabel objreturn +endif +ifeq ($(FULL_TARGET),i386-wdosx) +override TARGET_PROGRAMS+=pushme yesno pushbutton touchbutton minput inputall choice butttypes colsel colsel1 buttonall chartall positioner secretinput cursor fdial ldial ndial invslider sliderall borderwidth boxtype xyplotover arrowbutton browserop browserall chartstrip colbrowser counter fbrowse1 fbrowse flclock fonts goodies lalign ll longlabel menu objinactive objpos newbutton multilabel objreturn +endif +ifeq ($(FULL_TARGET),i386-darwin) +override TARGET_PROGRAMS+=pushme yesno pushbutton touchbutton minput inputall choice butttypes colsel colsel1 buttonall chartall positioner secretinput cursor fdial ldial ndial invslider sliderall borderwidth boxtype xyplotover arrowbutton browserop browserall chartstrip colbrowser counter fbrowse1 fbrowse flclock fonts goodies lalign ll longlabel menu objinactive objpos newbutton multilabel objreturn +endif +ifeq ($(FULL_TARGET),i386-emx) +override TARGET_PROGRAMS+=pushme yesno pushbutton touchbutton minput inputall choice butttypes colsel colsel1 buttonall chartall positioner secretinput cursor fdial ldial ndial invslider sliderall borderwidth boxtype xyplotover arrowbutton browserop browserall chartstrip colbrowser counter fbrowse1 fbrowse flclock fonts goodies lalign ll longlabel menu objinactive objpos newbutton multilabel objreturn +endif +ifeq ($(FULL_TARGET),i386-watcom) +override TARGET_PROGRAMS+=pushme yesno pushbutton touchbutton minput inputall choice butttypes colsel colsel1 buttonall chartall positioner secretinput cursor fdial ldial ndial invslider sliderall borderwidth boxtype xyplotover arrowbutton browserop browserall chartstrip colbrowser counter fbrowse1 fbrowse flclock fonts goodies lalign ll longlabel menu objinactive objpos newbutton multilabel objreturn +endif +ifeq ($(FULL_TARGET),i386-netwlibc) +override TARGET_PROGRAMS+=pushme yesno pushbutton touchbutton minput inputall choice butttypes colsel colsel1 buttonall chartall positioner secretinput cursor fdial ldial ndial invslider sliderall borderwidth boxtype xyplotover arrowbutton browserop browserall chartstrip colbrowser counter fbrowse1 fbrowse flclock fonts goodies lalign ll longlabel menu objinactive objpos newbutton multilabel objreturn +endif +ifeq ($(FULL_TARGET),i386-wince) +override TARGET_PROGRAMS+=pushme yesno pushbutton touchbutton minput inputall choice butttypes colsel colsel1 buttonall chartall positioner secretinput cursor fdial ldial ndial invslider sliderall borderwidth boxtype xyplotover arrowbutton browserop browserall chartstrip colbrowser counter fbrowse1 fbrowse flclock fonts goodies lalign ll longlabel menu objinactive objpos newbutton multilabel objreturn +endif +ifeq ($(FULL_TARGET),i386-embedded) +override TARGET_PROGRAMS+=pushme yesno pushbutton touchbutton minput inputall choice butttypes colsel colsel1 buttonall chartall positioner secretinput cursor fdial ldial ndial invslider sliderall borderwidth boxtype xyplotover arrowbutton browserop browserall chartstrip colbrowser counter fbrowse1 fbrowse flclock fonts goodies lalign ll longlabel menu objinactive objpos newbutton multilabel objreturn +endif +ifeq ($(FULL_TARGET),i386-symbian) +override TARGET_PROGRAMS+=pushme yesno pushbutton touchbutton minput inputall choice butttypes colsel colsel1 buttonall chartall positioner secretinput cursor fdial ldial ndial invslider sliderall borderwidth boxtype xyplotover arrowbutton browserop browserall chartstrip colbrowser counter fbrowse1 fbrowse flclock fonts goodies lalign ll longlabel menu objinactive objpos newbutton multilabel objreturn +endif +ifeq ($(FULL_TARGET),m68k-linux) +override TARGET_PROGRAMS+=pushme yesno pushbutton touchbutton minput inputall choice butttypes colsel colsel1 buttonall chartall positioner secretinput cursor fdial ldial ndial invslider sliderall borderwidth boxtype xyplotover arrowbutton browserop browserall chartstrip colbrowser counter fbrowse1 fbrowse flclock fonts goodies lalign ll longlabel menu objinactive objpos newbutton multilabel objreturn +endif +ifeq ($(FULL_TARGET),m68k-freebsd) +override TARGET_PROGRAMS+=pushme yesno pushbutton touchbutton minput inputall choice butttypes colsel colsel1 buttonall chartall positioner secretinput cursor fdial ldial ndial invslider sliderall borderwidth boxtype xyplotover arrowbutton browserop browserall chartstrip colbrowser counter fbrowse1 fbrowse flclock fonts goodies lalign ll longlabel menu objinactive objpos newbutton multilabel objreturn +endif +ifeq ($(FULL_TARGET),m68k-netbsd) +override TARGET_PROGRAMS+=pushme yesno pushbutton touchbutton minput inputall choice butttypes colsel colsel1 buttonall chartall positioner secretinput cursor fdial ldial ndial invslider sliderall borderwidth boxtype xyplotover arrowbutton browserop browserall chartstrip colbrowser counter fbrowse1 fbrowse flclock fonts goodies lalign ll longlabel menu objinactive objpos newbutton multilabel objreturn +endif +ifeq ($(FULL_TARGET),m68k-amiga) +override TARGET_PROGRAMS+=pushme yesno pushbutton touchbutton minput inputall choice butttypes colsel colsel1 buttonall chartall positioner secretinput cursor fdial ldial ndial invslider sliderall borderwidth boxtype xyplotover arrowbutton browserop browserall chartstrip colbrowser counter fbrowse1 fbrowse flclock fonts goodies lalign ll longlabel menu objinactive objpos newbutton multilabel objreturn +endif +ifeq ($(FULL_TARGET),m68k-atari) +override TARGET_PROGRAMS+=pushme yesno pushbutton touchbutton minput inputall choice butttypes colsel colsel1 buttonall chartall positioner secretinput cursor fdial ldial ndial invslider sliderall borderwidth boxtype xyplotover arrowbutton browserop browserall chartstrip colbrowser counter fbrowse1 fbrowse flclock fonts goodies lalign ll longlabel menu objinactive objpos newbutton multilabel objreturn +endif +ifeq ($(FULL_TARGET),m68k-openbsd) +override TARGET_PROGRAMS+=pushme yesno pushbutton touchbutton minput inputall choice butttypes colsel colsel1 buttonall chartall positioner secretinput cursor fdial ldial ndial invslider sliderall borderwidth boxtype xyplotover arrowbutton browserop browserall chartstrip colbrowser counter fbrowse1 fbrowse flclock fonts goodies lalign ll longlabel menu objinactive objpos newbutton multilabel objreturn +endif +ifeq ($(FULL_TARGET),m68k-palmos) +override TARGET_PROGRAMS+=pushme yesno pushbutton touchbutton minput inputall choice butttypes colsel colsel1 buttonall chartall positioner secretinput cursor fdial ldial ndial invslider sliderall borderwidth boxtype xyplotover arrowbutton browserop browserall chartstrip colbrowser counter fbrowse1 fbrowse flclock fonts goodies lalign ll longlabel menu objinactive objpos newbutton multilabel objreturn +endif +ifeq ($(FULL_TARGET),m68k-embedded) +override TARGET_PROGRAMS+=pushme yesno pushbutton touchbutton minput inputall choice butttypes colsel colsel1 buttonall chartall positioner secretinput cursor fdial ldial ndial invslider sliderall borderwidth boxtype xyplotover arrowbutton browserop browserall chartstrip colbrowser counter fbrowse1 fbrowse flclock fonts goodies lalign ll longlabel menu objinactive objpos newbutton multilabel objreturn +endif +ifeq ($(FULL_TARGET),powerpc-linux) +override TARGET_PROGRAMS+=pushme yesno pushbutton touchbutton minput inputall choice butttypes colsel colsel1 buttonall chartall positioner secretinput cursor fdial ldial ndial invslider sliderall borderwidth boxtype xyplotover arrowbutton browserop browserall chartstrip colbrowser counter fbrowse1 fbrowse flclock fonts goodies lalign ll longlabel menu objinactive objpos newbutton multilabel objreturn +endif +ifeq ($(FULL_TARGET),powerpc-netbsd) +override TARGET_PROGRAMS+=pushme yesno pushbutton touchbutton minput inputall choice butttypes colsel colsel1 buttonall chartall positioner secretinput cursor fdial ldial ndial invslider sliderall borderwidth boxtype xyplotover arrowbutton browserop browserall chartstrip colbrowser counter fbrowse1 fbrowse flclock fonts goodies lalign ll longlabel menu objinactive objpos newbutton multilabel objreturn +endif +ifeq ($(FULL_TARGET),powerpc-amiga) +override TARGET_PROGRAMS+=pushme yesno pushbutton touchbutton minput inputall choice butttypes colsel colsel1 buttonall chartall positioner secretinput cursor fdial ldial ndial invslider sliderall borderwidth boxtype xyplotover arrowbutton browserop browserall chartstrip colbrowser counter fbrowse1 fbrowse flclock fonts goodies lalign ll longlabel menu objinactive objpos newbutton multilabel objreturn +endif +ifeq ($(FULL_TARGET),powerpc-macos) +override TARGET_PROGRAMS+=pushme yesno pushbutton touchbutton minput inputall choice butttypes colsel colsel1 buttonall chartall positioner secretinput cursor fdial ldial ndial invslider sliderall borderwidth boxtype xyplotover arrowbutton browserop browserall chartstrip colbrowser counter fbrowse1 fbrowse flclock fonts goodies lalign ll longlabel menu objinactive objpos newbutton multilabel objreturn +endif +ifeq ($(FULL_TARGET),powerpc-darwin) +override TARGET_PROGRAMS+=pushme yesno pushbutton touchbutton minput inputall choice butttypes colsel colsel1 buttonall chartall positioner secretinput cursor fdial ldial ndial invslider sliderall borderwidth boxtype xyplotover arrowbutton browserop browserall chartstrip colbrowser counter fbrowse1 fbrowse flclock fonts goodies lalign ll longlabel menu objinactive objpos newbutton multilabel objreturn +endif +ifeq ($(FULL_TARGET),powerpc-morphos) +override TARGET_PROGRAMS+=pushme yesno pushbutton touchbutton minput inputall choice butttypes colsel colsel1 buttonall chartall positioner secretinput cursor fdial ldial ndial invslider sliderall borderwidth boxtype xyplotover arrowbutton browserop browserall chartstrip colbrowser counter fbrowse1 fbrowse flclock fonts goodies lalign ll longlabel menu objinactive objpos newbutton multilabel objreturn +endif +ifeq ($(FULL_TARGET),powerpc-embedded) +override TARGET_PROGRAMS+=pushme yesno pushbutton touchbutton minput inputall choice butttypes colsel colsel1 buttonall chartall positioner secretinput cursor fdial ldial ndial invslider sliderall borderwidth boxtype xyplotover arrowbutton browserop browserall chartstrip colbrowser counter fbrowse1 fbrowse flclock fonts goodies lalign ll longlabel menu objinactive objpos newbutton multilabel objreturn +endif +ifeq ($(FULL_TARGET),sparc-linux) +override TARGET_PROGRAMS+=pushme yesno pushbutton touchbutton minput inputall choice butttypes colsel colsel1 buttonall chartall positioner secretinput cursor fdial ldial ndial invslider sliderall borderwidth boxtype xyplotover arrowbutton browserop browserall chartstrip colbrowser counter fbrowse1 fbrowse flclock fonts goodies lalign ll longlabel menu objinactive objpos newbutton multilabel objreturn +endif +ifeq ($(FULL_TARGET),sparc-netbsd) +override TARGET_PROGRAMS+=pushme yesno pushbutton touchbutton minput inputall choice butttypes colsel colsel1 buttonall chartall positioner secretinput cursor fdial ldial ndial invslider sliderall borderwidth boxtype xyplotover arrowbutton browserop browserall chartstrip colbrowser counter fbrowse1 fbrowse flclock fonts goodies lalign ll longlabel menu objinactive objpos newbutton multilabel objreturn +endif +ifeq ($(FULL_TARGET),sparc-solaris) +override TARGET_PROGRAMS+=pushme yesno pushbutton touchbutton minput inputall choice butttypes colsel colsel1 buttonall chartall positioner secretinput cursor fdial ldial ndial invslider sliderall borderwidth boxtype xyplotover arrowbutton browserop browserall chartstrip colbrowser counter fbrowse1 fbrowse flclock fonts goodies lalign ll longlabel menu objinactive objpos newbutton multilabel objreturn +endif +ifeq ($(FULL_TARGET),sparc-embedded) +override TARGET_PROGRAMS+=pushme yesno pushbutton touchbutton minput inputall choice butttypes colsel colsel1 buttonall chartall positioner secretinput cursor fdial ldial ndial invslider sliderall borderwidth boxtype xyplotover arrowbutton browserop browserall chartstrip colbrowser counter fbrowse1 fbrowse flclock fonts goodies lalign ll longlabel menu objinactive objpos newbutton multilabel objreturn +endif +ifeq ($(FULL_TARGET),x86_64-linux) +override TARGET_PROGRAMS+=pushme yesno pushbutton touchbutton minput inputall choice butttypes colsel colsel1 buttonall chartall positioner secretinput cursor fdial ldial ndial invslider sliderall borderwidth boxtype xyplotover arrowbutton browserop browserall chartstrip colbrowser counter fbrowse1 fbrowse flclock fonts goodies lalign ll longlabel menu objinactive objpos newbutton multilabel objreturn +endif +ifeq ($(FULL_TARGET),x86_64-freebsd) +override TARGET_PROGRAMS+=pushme yesno pushbutton touchbutton minput inputall choice butttypes colsel colsel1 buttonall chartall positioner secretinput cursor fdial ldial ndial invslider sliderall borderwidth boxtype xyplotover arrowbutton browserop browserall chartstrip colbrowser counter fbrowse1 fbrowse flclock fonts goodies lalign ll longlabel menu objinactive objpos newbutton multilabel objreturn +endif +ifeq ($(FULL_TARGET),x86_64-darwin) +override TARGET_PROGRAMS+=pushme yesno pushbutton touchbutton minput inputall choice butttypes colsel colsel1 buttonall chartall positioner secretinput cursor fdial ldial ndial invslider sliderall borderwidth boxtype xyplotover arrowbutton browserop browserall chartstrip colbrowser counter fbrowse1 fbrowse flclock fonts goodies lalign ll longlabel menu objinactive objpos newbutton multilabel objreturn +endif +ifeq ($(FULL_TARGET),x86_64-win64) +override TARGET_PROGRAMS+=pushme yesno pushbutton touchbutton minput inputall choice butttypes colsel colsel1 buttonall chartall positioner secretinput cursor fdial ldial ndial invslider sliderall borderwidth boxtype xyplotover arrowbutton browserop browserall chartstrip colbrowser counter fbrowse1 fbrowse flclock fonts goodies lalign ll longlabel menu objinactive objpos newbutton multilabel objreturn +endif +ifeq ($(FULL_TARGET),x86_64-embedded) +override TARGET_PROGRAMS+=pushme yesno pushbutton touchbutton minput inputall choice butttypes colsel colsel1 buttonall chartall positioner secretinput cursor fdial ldial ndial invslider sliderall borderwidth boxtype xyplotover arrowbutton browserop browserall chartstrip colbrowser counter fbrowse1 fbrowse flclock fonts goodies lalign ll longlabel menu objinactive objpos newbutton multilabel objreturn +endif +ifeq ($(FULL_TARGET),arm-linux) +override TARGET_PROGRAMS+=pushme yesno pushbutton touchbutton minput inputall choice butttypes colsel colsel1 buttonall chartall positioner secretinput cursor fdial ldial ndial invslider sliderall borderwidth boxtype xyplotover arrowbutton browserop browserall chartstrip colbrowser counter fbrowse1 fbrowse flclock fonts goodies lalign ll longlabel menu objinactive objpos newbutton multilabel objreturn +endif +ifeq ($(FULL_TARGET),arm-palmos) +override TARGET_PROGRAMS+=pushme yesno pushbutton touchbutton minput inputall choice butttypes colsel colsel1 buttonall chartall positioner secretinput cursor fdial ldial ndial invslider sliderall borderwidth boxtype xyplotover arrowbutton browserop browserall chartstrip colbrowser counter fbrowse1 fbrowse flclock fonts goodies lalign ll longlabel menu objinactive objpos newbutton multilabel objreturn +endif +ifeq ($(FULL_TARGET),arm-wince) +override TARGET_PROGRAMS+=pushme yesno pushbutton touchbutton minput inputall choice butttypes colsel colsel1 buttonall chartall positioner secretinput cursor fdial ldial ndial invslider sliderall borderwidth boxtype xyplotover arrowbutton browserop browserall chartstrip colbrowser counter fbrowse1 fbrowse flclock fonts goodies lalign ll longlabel menu objinactive objpos newbutton multilabel objreturn +endif +ifeq ($(FULL_TARGET),arm-gba) +override TARGET_PROGRAMS+=pushme yesno pushbutton touchbutton minput inputall choice butttypes colsel colsel1 buttonall chartall positioner secretinput cursor fdial ldial ndial invslider sliderall borderwidth boxtype xyplotover arrowbutton browserop browserall chartstrip colbrowser counter fbrowse1 fbrowse flclock fonts goodies lalign ll longlabel menu objinactive objpos newbutton multilabel objreturn +endif +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_PROGRAMS+=pushme yesno pushbutton touchbutton minput inputall choice butttypes colsel colsel1 buttonall chartall positioner secretinput cursor fdial ldial ndial invslider sliderall borderwidth boxtype xyplotover arrowbutton browserop browserall chartstrip colbrowser counter fbrowse1 fbrowse flclock fonts goodies lalign ll longlabel menu objinactive objpos newbutton multilabel objreturn +endif +ifeq ($(FULL_TARGET),arm-embedded) +override TARGET_PROGRAMS+=pushme yesno pushbutton touchbutton minput inputall choice butttypes colsel colsel1 buttonall chartall positioner secretinput cursor fdial ldial ndial invslider sliderall borderwidth boxtype xyplotover arrowbutton browserop browserall chartstrip colbrowser counter fbrowse1 fbrowse flclock fonts goodies lalign ll longlabel menu objinactive objpos newbutton multilabel objreturn +endif +ifeq ($(FULL_TARGET),arm-symbian) +override TARGET_PROGRAMS+=pushme yesno pushbutton touchbutton minput inputall choice butttypes colsel colsel1 buttonall chartall positioner secretinput cursor fdial ldial ndial invslider sliderall borderwidth boxtype xyplotover arrowbutton browserop browserall chartstrip colbrowser counter fbrowse1 fbrowse flclock fonts goodies lalign ll longlabel menu objinactive objpos newbutton multilabel objreturn +endif +ifeq ($(FULL_TARGET),powerpc64-linux) +override TARGET_PROGRAMS+=pushme yesno pushbutton touchbutton minput inputall choice butttypes colsel colsel1 buttonall chartall positioner secretinput cursor fdial ldial ndial invslider sliderall borderwidth boxtype xyplotover arrowbutton browserop browserall chartstrip colbrowser counter fbrowse1 fbrowse flclock fonts goodies lalign ll longlabel menu objinactive objpos newbutton multilabel objreturn +endif +ifeq ($(FULL_TARGET),powerpc64-darwin) +override TARGET_PROGRAMS+=pushme yesno pushbutton touchbutton minput inputall choice butttypes colsel colsel1 buttonall chartall positioner secretinput cursor fdial ldial ndial invslider sliderall borderwidth boxtype xyplotover arrowbutton browserop browserall chartstrip colbrowser counter fbrowse1 fbrowse flclock fonts goodies lalign ll longlabel menu objinactive objpos newbutton multilabel objreturn +endif +ifeq ($(FULL_TARGET),powerpc64-embedded) +override TARGET_PROGRAMS+=pushme yesno pushbutton touchbutton minput inputall choice butttypes colsel colsel1 buttonall chartall positioner secretinput cursor fdial ldial ndial invslider sliderall borderwidth boxtype xyplotover arrowbutton browserop browserall chartstrip colbrowser counter fbrowse1 fbrowse flclock fonts goodies lalign ll longlabel menu objinactive objpos newbutton multilabel objreturn +endif +override INSTALL_FPCPACKAGE=y +ifdef REQUIRE_UNITSDIR +override UNITSDIR+=$(REQUIRE_UNITSDIR) +endif +ifdef REQUIRE_PACKAGESDIR +override PACKAGESDIR+=$(REQUIRE_PACKAGESDIR) +endif +ifdef ZIPINSTALL +ifneq ($(findstring $(OS_TARGET),$(UNIXs)),) +UNIXHier=1 +endif +else +ifneq ($(findstring $(OS_SOURCE),$(UNIXs)),) +UNIXHier=1 +endif +endif +ifndef INSTALL_PREFIX +ifdef PREFIX +INSTALL_PREFIX=$(PREFIX) +endif +endif +ifndef INSTALL_PREFIX +ifdef UNIXHier +INSTALL_PREFIX=/usr/local +else +ifdef INSTALL_FPCPACKAGE +INSTALL_BASEDIR:=/pp +else +INSTALL_BASEDIR:=/$(PACKAGE_NAME) +endif +endif +endif +export INSTALL_PREFIX +ifdef INSTALL_FPCSUBDIR +export INSTALL_FPCSUBDIR +endif +ifndef DIST_DESTDIR +DIST_DESTDIR:=$(BASEDIR) +endif +export DIST_DESTDIR +ifndef COMPILER_UNITTARGETDIR +ifdef PACKAGEDIR_MAIN +COMPILER_UNITTARGETDIR=$(PACKAGEDIR_MAIN)/units/$(TARGETSUFFIX) +else +COMPILER_UNITTARGETDIR=units/$(TARGETSUFFIX) +endif +endif +ifndef COMPILER_TARGETDIR +COMPILER_TARGETDIR=. +endif +ifndef INSTALL_BASEDIR +ifdef UNIXHier +ifdef INSTALL_FPCPACKAGE +INSTALL_BASEDIR:=$(INSTALL_PREFIX)/lib/fpc/$(FPC_VERSION) +else +INSTALL_BASEDIR:=$(INSTALL_PREFIX)/lib/$(PACKAGE_NAME) +endif +else +INSTALL_BASEDIR:=$(INSTALL_PREFIX) +endif +endif +ifndef INSTALL_BINDIR +ifdef UNIXHier +INSTALL_BINDIR:=$(INSTALL_PREFIX)/bin +else +INSTALL_BINDIR:=$(INSTALL_BASEDIR)/bin +ifdef INSTALL_FPCPACKAGE +ifdef CROSSCOMPILE +ifdef CROSSINSTALL +INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(SOURCESUFFIX) +else +INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(TARGETSUFFIX) +endif +else +INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(TARGETSUFFIX) +endif +endif +endif +endif +ifndef INSTALL_UNITDIR +INSTALL_UNITDIR:=$(INSTALL_BASEDIR)/units/$(TARGETSUFFIX) +ifdef INSTALL_FPCPACKAGE +ifdef PACKAGE_NAME +INSTALL_UNITDIR:=$(INSTALL_UNITDIR)/$(PACKAGE_NAME) +endif +endif +endif +ifndef INSTALL_LIBDIR +ifdef UNIXHier +INSTALL_LIBDIR:=$(INSTALL_PREFIX)/lib +else +INSTALL_LIBDIR:=$(INSTALL_UNITDIR) +endif +endif +ifndef INSTALL_SOURCEDIR +ifdef UNIXHier +ifdef BSDhier +SRCPREFIXDIR=share/src +else +ifdef linuxHier +SRCPREFIXDIR=share/src +else +SRCPREFIXDIR=src +endif +endif +ifdef INSTALL_FPCPACKAGE +ifdef INSTALL_FPCSUBDIR +INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/fpc-$(FPC_VERSION)/$(INSTALL_FPCSUBDIR)/$(PACKAGE_NAME) +else +INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/fpc-$(FPC_VERSION)/$(PACKAGE_NAME) +endif +else +INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/$(PACKAGE_NAME)-$(PACKAGE_VERSION) +endif +else +ifdef INSTALL_FPCPACKAGE +ifdef INSTALL_FPCSUBDIR +INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source/$(INSTALL_FPCSUBDIR)/$(PACKAGE_NAME) +else +INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source/$(PACKAGE_NAME) +endif +else +INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source +endif +endif +endif +ifndef INSTALL_DOCDIR +ifdef UNIXHier +ifdef BSDhier +DOCPREFIXDIR=share/doc +else +ifdef linuxHier +DOCPREFIXDIR=share/doc +else +DOCPREFIXDIR=doc +endif +endif +ifdef INSTALL_FPCPACKAGE +INSTALL_DOCDIR:=$(INSTALL_PREFIX)/$(DOCPREFIXDIR)/fpc-$(FPC_VERSION)/$(PACKAGE_NAME) +else +INSTALL_DOCDIR:=$(INSTALL_PREFIX)/$(DOCPREFIXDIR)/$(PACKAGE_NAME)-$(PACKAGE_VERSION) +endif +else +ifdef INSTALL_FPCPACKAGE +INSTALL_DOCDIR:=$(INSTALL_BASEDIR)/doc/$(PACKAGE_NAME) +else +INSTALL_DOCDIR:=$(INSTALL_BASEDIR)/doc +endif +endif +endif +ifndef INSTALL_EXAMPLEDIR +ifdef UNIXHier +ifdef INSTALL_FPCPACKAGE +ifdef BSDhier +INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/share/examples/fpc-$(FPC_VERSION)/$(PACKAGE_NAME) +else +ifdef linuxHier +INSTALL_EXAMPLEDIR:=$(INSTALL_DOCDIR)/examples +else +INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/doc/fpc-$(FPC_VERSION)/examples/$(PACKAGE_NAME) +endif +endif +else +ifdef BSDhier +INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/share/examples/$(PACKAGE_NAME)-$(PACKAGE_VERSION) +else +ifdef linuxHier +INSTALL_EXAMPLEDIR:=$(INSTALL_DOCDIR)/examples/$(PACKAGE_NAME)-$(PACKAGE_VERSION) +else +INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/doc/$(PACKAGE_NAME)-$(PACKAGE_VERSION) +endif +endif +endif +else +ifdef INSTALL_FPCPACKAGE +INSTALL_EXAMPLEDIR:=$(INSTALL_BASEDIR)/examples/$(PACKAGE_NAME) +else +INSTALL_EXAMPLEDIR:=$(INSTALL_BASEDIR)/examples +endif +endif +endif +ifndef INSTALL_DATADIR +INSTALL_DATADIR=$(INSTALL_BASEDIR) +endif +ifndef INSTALL_SHAREDDIR +INSTALL_SHAREDDIR=$(INSTALL_PREFIX)/lib +endif +ifdef CROSSCOMPILE +ifndef CROSSBINDIR +CROSSBINDIR:=$(wildcard $(CROSSTARGETDIR)/bin/$(SOURCESUFFIX)) +ifeq ($(CROSSBINDIR),) +CROSSBINDIR:=$(wildcard $(INSTALL_BASEDIR)/cross/$(TARGETSUFFIX)/bin/$(FULL_SOURCE)) +endif +endif +else +CROSSBINDIR= +endif +ifeq ($(OS_SOURCE),linux) +ifndef GCCLIBDIR +ifeq ($(CPU_TARGET),i386) +ifneq ($(findstring x86_64,$(shell uname -a)),) +ifeq ($(BINUTILSPREFIX),) +GCCLIBDIR:=$(shell dirname `gcc -m32 -print-libgcc-file-name`) +endif +endif +endif +ifeq ($(CPU_TARGET),powerpc64) +ifeq ($(BINUTILSPREFIX),) +GCCLIBDIR:=$(shell dirname `gcc -m64 -print-libgcc-file-name`) +endif +endif +endif +ifndef GCCLIBDIR +CROSSGCC=$(strip $(wildcard $(addsuffix /$(BINUTILSPREFIX)gcc$(SRCEXEEXT),$(SEARCHPATH)))) +ifneq ($(CROSSGCC),) +GCCLIBDIR:=$(shell dirname `$(CROSSGCC) -print-libgcc-file-name`) +endif +endif +ifndef OTHERLIBDIR +OTHERLIBDIR:=$(shell grep -v "^\#" /etc/ld.so.conf | awk '{ ORS=" "; print $1 }') +endif +endif +ifdef inUnix +ifeq ($(OS_SOURCE),netbsd) +OTHERLIBDIR+=/usr/pkg/lib +endif +export GCCLIBDIR OTHERLIB +endif +BATCHEXT=.bat +LOADEREXT=.as +EXEEXT=.exe +PPLEXT=.ppl +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.so +SHAREDLIBPREFIX=libfp +STATICLIBPREFIX=libp +IMPORTLIBPREFIX=libimp +RSTEXT=.rst +ifeq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),go32v1) +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +OEXT=.obj +ASMEXT=.asm +SHAREDLIBEXT=.dll +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +endif +ifeq ($(OS_TARGET),freebsd) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=fbs +endif +ifeq ($(OS_TARGET),netbsd) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=nbs +endif +ifeq ($(OS_TARGET),openbsd) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=obs +endif +ifeq ($(OS_TARGET),win32) +SHAREDLIBEXT=.dll +SHORTSUFFIX=w32 +endif +ifeq ($(OS_TARGET),os2) +BATCHEXT=.cmd +AOUTEXT=.out +STATICLIBPREFIX= +SHAREDLIBEXT=.dll +SHORTSUFFIX=os2 +ECHO=echo +endif +ifeq ($(OS_TARGET),emx) +BATCHEXT=.cmd +AOUTEXT=.out +STATICLIBPREFIX= +SHAREDLIBEXT=.dll +SHORTSUFFIX=emx +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +endif +ifeq ($(OS_TARGET),morphos) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=mos +endif +ifeq ($(OS_TARGET),atari) +EXEEXT=.ttp +SHORTSUFFIX=ata +endif +ifeq ($(OS_TARGET),beos) +BATCHEXT=.sh +EXEEXT= +SHORTSUFFIX=be +endif +ifeq ($(OS_TARGET),solaris) +BATCHEXT=.sh +EXEEXT= +SHORTSUFFIX=sun +endif +ifeq ($(OS_TARGET),qnx) +BATCHEXT=.sh +EXEEXT= +SHORTSUFFIX=qnx +endif +ifeq ($(OS_TARGET),netware) +EXEEXT=.nlm +STATICLIBPREFIX= +SHORTSUFFIX=nw +endif +ifeq ($(OS_TARGET),netwlibc) +EXEEXT=.nlm +STATICLIBPREFIX= +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +ifeq ($(OS_TARGET),darwin) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=dwn +endif +ifeq ($(OS_TARGET),gba) +EXEEXT=.gba +SHAREDLIBEXT=.so +SHORTSUFFIX=gba +endif +ifeq ($(OS_TARGET),symbian) +SHAREDLIBEXT=.dll +SHORTSUFFIX=symbian +endif +else +ifeq ($(OS_TARGET),go32v1) +PPUEXT=.pp1 +OEXT=.o1 +ASMEXT=.s1 +SMARTEXT=.sl1 +STATICLIBEXT=.a1 +SHAREDLIBEXT=.so1 +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +endif +ifeq ($(OS_TARGET),freebsd) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=fbs +endif +ifeq ($(OS_TARGET),netbsd) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=nbs +endif +ifeq ($(OS_TARGET),openbsd) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=obs +endif +ifeq ($(OS_TARGET),win32) +PPUEXT=.ppw +OEXT=.ow +ASMEXT=.sw +SMARTEXT=.slw +STATICLIBEXT=.aw +SHAREDLIBEXT=.dll +SHORTSUFFIX=w32 +endif +ifeq ($(OS_TARGET),os2) +BATCHEXT=.cmd +PPUEXT=.ppo +ASMEXT=.so2 +OEXT=.oo2 +AOUTEXT=.out +SMARTEXT=.sl2 +STATICLIBPREFIX= +STATICLIBEXT=.ao2 +SHAREDLIBEXT=.dll +SHORTSUFFIX=os2 +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +endif +ifeq ($(OS_TARGET),atari) +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT=.ttp +SHORTSUFFIX=ata +endif +ifeq ($(OS_TARGET),beos) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=be +endif +ifeq ($(OS_TARGET),solaris) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=sun +endif +ifeq ($(OS_TARGET),qnx) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=qnx +endif +ifeq ($(OS_TARGET),netware) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nw +endif +ifeq ($(OS_TARGET),netwlibc) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +endif +ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) +FPCMADE=fpcmade.$(SHORTSUFFIX) +ZIPSUFFIX=$(SHORTSUFFIX) +ZIPCROSSPREFIX= +ZIPSOURCESUFFIX=src +ZIPEXAMPLESUFFIX=exm +else +FPCMADE=fpcmade.$(TARGETSUFFIX) +ZIPSOURCESUFFIX=.source +ZIPEXAMPLESUFFIX=.examples +ifdef CROSSCOMPILE +ZIPSUFFIX=.$(SOURCESUFFIX) +ZIPCROSSPREFIX=$(TARGETSUFFIX)- +else +ZIPSUFFIX=.$(TARGETSUFFIX) +ZIPCROSSPREFIX= +endif +endif +ifndef ECHO +ECHO:=$(strip $(wildcard $(addsuffix /gecho$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(ECHO),) +ECHO:=$(strip $(wildcard $(addsuffix /echo$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(ECHO),) +ECHO= __missing_command_ECHO +else +ECHO:=$(firstword $(ECHO)) +endif +else +ECHO:=$(firstword $(ECHO)) +endif +endif +export ECHO +ifndef DATE +DATE:=$(strip $(wildcard $(addsuffix /gdate$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(DATE),) +DATE:=$(strip $(wildcard $(addsuffix /date$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(DATE),) +DATE= __missing_command_DATE +else +DATE:=$(firstword $(DATE)) +endif +else +DATE:=$(firstword $(DATE)) +endif +endif +export DATE +ifndef GINSTALL +GINSTALL:=$(strip $(wildcard $(addsuffix /ginstall$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(GINSTALL),) +GINSTALL:=$(strip $(wildcard $(addsuffix /install$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(GINSTALL),) +GINSTALL= __missing_command_GINSTALL +else +GINSTALL:=$(firstword $(GINSTALL)) +endif +else +GINSTALL:=$(firstword $(GINSTALL)) +endif +endif +export GINSTALL +ifndef CPPROG +CPPROG:=$(strip $(wildcard $(addsuffix /cp$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(CPPROG),) +CPPROG= __missing_command_CPPROG +else +CPPROG:=$(firstword $(CPPROG)) +endif +endif +export CPPROG +ifndef RMPROG +RMPROG:=$(strip $(wildcard $(addsuffix /rm$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(RMPROG),) +RMPROG= __missing_command_RMPROG +else +RMPROG:=$(firstword $(RMPROG)) +endif +endif +export RMPROG +ifndef MVPROG +MVPROG:=$(strip $(wildcard $(addsuffix /mv$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(MVPROG),) +MVPROG= __missing_command_MVPROG +else +MVPROG:=$(firstword $(MVPROG)) +endif +endif +export MVPROG +ifndef MKDIRPROG +MKDIRPROG:=$(strip $(wildcard $(addsuffix /gmkdir$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(MKDIRPROG),) +MKDIRPROG:=$(strip $(wildcard $(addsuffix /mkdir$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(MKDIRPROG),) +MKDIRPROG= __missing_command_MKDIRPROG +else +MKDIRPROG:=$(firstword $(MKDIRPROG)) +endif +else +MKDIRPROG:=$(firstword $(MKDIRPROG)) +endif +endif +export MKDIRPROG +ifndef ECHOREDIR +ifndef inUnix +ECHOREDIR=echo +else +ECHOREDIR=$(ECHO) +endif +endif +ifndef COPY +COPY:=$(CPPROG) -fp +endif +ifndef COPYTREE +COPYTREE:=$(CPPROG) -Rfp +endif +ifndef MKDIRTREE +MKDIRTREE:=$(MKDIRPROG) -p +endif +ifndef MOVE +MOVE:=$(MVPROG) -f +endif +ifndef DEL +DEL:=$(RMPROG) -f +endif +ifndef DELTREE +DELTREE:=$(RMPROG) -rf +endif +ifndef INSTALL +ifdef inUnix +INSTALL:=$(GINSTALL) -c -m 644 +else +INSTALL:=$(COPY) +endif +endif +ifndef INSTALLEXE +ifdef inUnix +INSTALLEXE:=$(GINSTALL) -c -m 755 +else +INSTALLEXE:=$(COPY) +endif +endif +ifndef MKDIR +MKDIR:=$(GINSTALL) -m 755 -d +endif +export ECHOREDIR COPY COPYTREE MOVE DEL DELTREE INSTALL INSTALLEXE MKDIR +ifndef PPUMOVE +PPUMOVE:=$(strip $(wildcard $(addsuffix /ppumove$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(PPUMOVE),) +PPUMOVE= __missing_command_PPUMOVE +else +PPUMOVE:=$(firstword $(PPUMOVE)) +endif +endif +export PPUMOVE +ifndef FPCMAKE +FPCMAKE:=$(strip $(wildcard $(addsuffix /fpcmake$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(FPCMAKE),) +FPCMAKE= __missing_command_FPCMAKE +else +FPCMAKE:=$(firstword $(FPCMAKE)) +endif +endif +export FPCMAKE +ifndef ZIPPROG +ZIPPROG:=$(strip $(wildcard $(addsuffix /zip$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(ZIPPROG),) +ZIPPROG= __missing_command_ZIPPROG +else +ZIPPROG:=$(firstword $(ZIPPROG)) +endif +endif +export ZIPPROG +ifndef TARPROG +TARPROG:=$(strip $(wildcard $(addsuffix /gtar$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(TARPROG),) +TARPROG:=$(strip $(wildcard $(addsuffix /tar$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(TARPROG),) +TARPROG= __missing_command_TARPROG +else +TARPROG:=$(firstword $(TARPROG)) +endif +else +TARPROG:=$(firstword $(TARPROG)) +endif +endif +export TARPROG +ASNAME=$(BINUTILSPREFIX)as +LDNAME=$(BINUTILSPREFIX)ld +ARNAME=$(BINUTILSPREFIX)ar +RCNAME=$(BINUTILSPREFIX)rc +ifneq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),win32) +ifeq ($(CROSSBINDIR),) +ASNAME=asw +LDNAME=ldw +ARNAME=arw +endif +endif +endif +ifndef ASPROG +ifdef CROSSBINDIR +ASPROG=$(CROSSBINDIR)/$(ASNAME)$(SRCEXEEXT) +else +ASPROG=$(ASNAME) +endif +endif +ifndef LDPROG +ifdef CROSSBINDIR +LDPROG=$(CROSSBINDIR)/$(LDNAME)$(SRCEXEEXT) +else +LDPROG=$(LDNAME) +endif +endif +ifndef RCPROG +ifdef CROSSBINDIR +RCPROG=$(CROSSBINDIR)/$(RCNAME)$(SRCEXEEXT) +else +RCPROG=$(RCNAME) +endif +endif +ifndef ARPROG +ifdef CROSSBINDIR +ARPROG=$(CROSSBINDIR)/$(ARNAME)$(SRCEXEEXT) +else +ARPROG=$(ARNAME) +endif +endif +AS=$(ASPROG) +LD=$(LDPROG) +RC=$(RCPROG) +AR=$(ARPROG) +PPAS=ppas$(SRCBATCHEXT) +ifdef inUnix +LDCONFIG=ldconfig +else +LDCONFIG= +endif +ifdef DATE +DATESTR:=$(shell $(DATE) +%Y%m%d) +else +DATESTR= +endif +ifndef UPXPROG +ifeq ($(OS_TARGET),go32v2) +UPXPROG:=1 +endif +ifeq ($(OS_TARGET),win32) +UPXPROG:=1 +endif +ifdef UPXPROG +UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(UPXPROG),) +UPXPROG= +else +UPXPROG:=$(firstword $(UPXPROG)) +endif +else +UPXPROG= +endif +endif +export UPXPROG +ZIPOPT=-9 +ZIPEXT=.zip +ifeq ($(USETAR),bz2) +TAROPT=vj +TAREXT=.tar.bz2 +else +TAROPT=vz +TAREXT=.tar.gz +endif +override REQUIRE_PACKAGES=rtl xforms +ifeq ($(FULL_TARGET),i386-linux) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +REQUIRE_PACKAGES_XFORMS=1 +endif +ifeq ($(FULL_TARGET),i386-go32v2) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +REQUIRE_PACKAGES_XFORMS=1 +endif +ifeq ($(FULL_TARGET),i386-win32) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +REQUIRE_PACKAGES_XFORMS=1 +endif +ifeq ($(FULL_TARGET),i386-os2) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +REQUIRE_PACKAGES_XFORMS=1 +endif +ifeq ($(FULL_TARGET),i386-freebsd) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +REQUIRE_PACKAGES_XFORMS=1 +endif +ifeq ($(FULL_TARGET),i386-beos) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +REQUIRE_PACKAGES_XFORMS=1 +endif +ifeq ($(FULL_TARGET),i386-netbsd) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +REQUIRE_PACKAGES_XFORMS=1 +endif +ifeq ($(FULL_TARGET),i386-solaris) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +REQUIRE_PACKAGES_XFORMS=1 +endif +ifeq ($(FULL_TARGET),i386-qnx) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +REQUIRE_PACKAGES_XFORMS=1 +endif +ifeq ($(FULL_TARGET),i386-netware) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +REQUIRE_PACKAGES_XFORMS=1 +endif +ifeq ($(FULL_TARGET),i386-openbsd) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +REQUIRE_PACKAGES_XFORMS=1 +endif +ifeq ($(FULL_TARGET),i386-wdosx) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +REQUIRE_PACKAGES_XFORMS=1 +endif +ifeq ($(FULL_TARGET),i386-darwin) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +REQUIRE_PACKAGES_XFORMS=1 +endif +ifeq ($(FULL_TARGET),i386-emx) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +REQUIRE_PACKAGES_XFORMS=1 +endif +ifeq ($(FULL_TARGET),i386-watcom) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +REQUIRE_PACKAGES_XFORMS=1 +endif +ifeq ($(FULL_TARGET),i386-netwlibc) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +REQUIRE_PACKAGES_XFORMS=1 +endif +ifeq ($(FULL_TARGET),i386-wince) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +REQUIRE_PACKAGES_XFORMS=1 +endif +ifeq ($(FULL_TARGET),i386-embedded) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +REQUIRE_PACKAGES_XFORMS=1 +endif +ifeq ($(FULL_TARGET),i386-symbian) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +REQUIRE_PACKAGES_XFORMS=1 +endif +ifeq ($(FULL_TARGET),m68k-linux) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +REQUIRE_PACKAGES_XFORMS=1 +endif +ifeq ($(FULL_TARGET),m68k-freebsd) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +REQUIRE_PACKAGES_XFORMS=1 +endif +ifeq ($(FULL_TARGET),m68k-netbsd) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +REQUIRE_PACKAGES_XFORMS=1 +endif +ifeq ($(FULL_TARGET),m68k-amiga) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +REQUIRE_PACKAGES_XFORMS=1 +endif +ifeq ($(FULL_TARGET),m68k-atari) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +REQUIRE_PACKAGES_XFORMS=1 +endif +ifeq ($(FULL_TARGET),m68k-openbsd) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +REQUIRE_PACKAGES_XFORMS=1 +endif +ifeq ($(FULL_TARGET),m68k-palmos) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +REQUIRE_PACKAGES_XFORMS=1 +endif +ifeq ($(FULL_TARGET),m68k-embedded) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +REQUIRE_PACKAGES_XFORMS=1 +endif +ifeq ($(FULL_TARGET),powerpc-linux) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +REQUIRE_PACKAGES_XFORMS=1 +endif +ifeq ($(FULL_TARGET),powerpc-netbsd) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +REQUIRE_PACKAGES_XFORMS=1 +endif +ifeq ($(FULL_TARGET),powerpc-amiga) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +REQUIRE_PACKAGES_XFORMS=1 +endif +ifeq ($(FULL_TARGET),powerpc-macos) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +REQUIRE_PACKAGES_XFORMS=1 +endif +ifeq ($(FULL_TARGET),powerpc-darwin) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +REQUIRE_PACKAGES_XFORMS=1 +endif +ifeq ($(FULL_TARGET),powerpc-morphos) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +REQUIRE_PACKAGES_XFORMS=1 +endif +ifeq ($(FULL_TARGET),powerpc-embedded) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +REQUIRE_PACKAGES_XFORMS=1 +endif +ifeq ($(FULL_TARGET),sparc-linux) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +REQUIRE_PACKAGES_XFORMS=1 +endif +ifeq ($(FULL_TARGET),sparc-netbsd) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +REQUIRE_PACKAGES_XFORMS=1 +endif +ifeq ($(FULL_TARGET),sparc-solaris) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +REQUIRE_PACKAGES_XFORMS=1 +endif +ifeq ($(FULL_TARGET),sparc-embedded) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +REQUIRE_PACKAGES_XFORMS=1 +endif +ifeq ($(FULL_TARGET),x86_64-linux) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +REQUIRE_PACKAGES_XFORMS=1 +endif +ifeq ($(FULL_TARGET),x86_64-freebsd) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +REQUIRE_PACKAGES_XFORMS=1 +endif +ifeq ($(FULL_TARGET),x86_64-darwin) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +REQUIRE_PACKAGES_XFORMS=1 +endif +ifeq ($(FULL_TARGET),x86_64-win64) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +REQUIRE_PACKAGES_XFORMS=1 +endif +ifeq ($(FULL_TARGET),x86_64-embedded) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +REQUIRE_PACKAGES_XFORMS=1 +endif +ifeq ($(FULL_TARGET),arm-linux) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +REQUIRE_PACKAGES_XFORMS=1 +endif +ifeq ($(FULL_TARGET),arm-palmos) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +REQUIRE_PACKAGES_XFORMS=1 +endif +ifeq ($(FULL_TARGET),arm-wince) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +REQUIRE_PACKAGES_XFORMS=1 +endif +ifeq ($(FULL_TARGET),arm-gba) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +REQUIRE_PACKAGES_XFORMS=1 +endif +ifeq ($(FULL_TARGET),arm-nds) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +REQUIRE_PACKAGES_XFORMS=1 +endif +ifeq ($(FULL_TARGET),arm-embedded) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +REQUIRE_PACKAGES_XFORMS=1 +endif +ifeq ($(FULL_TARGET),arm-symbian) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +REQUIRE_PACKAGES_XFORMS=1 +endif +ifeq ($(FULL_TARGET),powerpc64-linux) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +REQUIRE_PACKAGES_XFORMS=1 +endif +ifeq ($(FULL_TARGET),powerpc64-darwin) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +REQUIRE_PACKAGES_XFORMS=1 +endif +ifeq ($(FULL_TARGET),powerpc64-embedded) +REQUIRE_PACKAGES_RTL=1 +REQUIRE_PACKAGES_X11=1 +REQUIRE_PACKAGES_XFORMS=1 +endif +ifdef REQUIRE_PACKAGES_RTL +PACKAGEDIR_RTL:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /rtl/Makefile.fpc,$(PACKAGESDIR)))))) +ifneq ($(PACKAGEDIR_RTL),) +ifneq ($(wildcard $(PACKAGEDIR_RTL)/units/$(TARGETSUFFIX)),) +UNITDIR_RTL=$(PACKAGEDIR_RTL)/units/$(TARGETSUFFIX) +else +UNITDIR_RTL=$(PACKAGEDIR_RTL) +endif +ifdef CHECKDEPEND +$(PACKAGEDIR_RTL)/$(FPCMADE): + $(MAKE) -C $(PACKAGEDIR_RTL) $(FPCMADE) +override ALLDEPENDENCIES+=$(PACKAGEDIR_RTL)/$(FPCMADE) +endif +else +PACKAGEDIR_RTL= +UNITDIR_RTL:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /rtl/Package.fpc,$(UNITSDIR))))) +ifneq ($(UNITDIR_RTL),) +UNITDIR_RTL:=$(firstword $(UNITDIR_RTL)) +else +UNITDIR_RTL= +endif +endif +ifdef UNITDIR_RTL +override COMPILER_UNITDIR+=$(UNITDIR_RTL) +endif +endif +ifdef REQUIRE_PACKAGES_X11 +PACKAGEDIR_X11:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /x11/Makefile.fpc,$(PACKAGESDIR)))))) +ifneq ($(PACKAGEDIR_X11),) +ifneq ($(wildcard $(PACKAGEDIR_X11)/units/$(TARGETSUFFIX)),) +UNITDIR_X11=$(PACKAGEDIR_X11)/units/$(TARGETSUFFIX) +else +UNITDIR_X11=$(PACKAGEDIR_X11) +endif +ifdef CHECKDEPEND +$(PACKAGEDIR_X11)/$(FPCMADE): + $(MAKE) -C $(PACKAGEDIR_X11) $(FPCMADE) +override ALLDEPENDENCIES+=$(PACKAGEDIR_X11)/$(FPCMADE) +endif +else +PACKAGEDIR_X11= +UNITDIR_X11:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /x11/Package.fpc,$(UNITSDIR))))) +ifneq ($(UNITDIR_X11),) +UNITDIR_X11:=$(firstword $(UNITDIR_X11)) +else +UNITDIR_X11= +endif +endif +ifdef UNITDIR_X11 +override COMPILER_UNITDIR+=$(UNITDIR_X11) +endif +endif +ifdef REQUIRE_PACKAGES_XFORMS +PACKAGEDIR_XFORMS:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /xforms/Makefile.fpc,$(PACKAGESDIR)))))) +ifneq ($(PACKAGEDIR_XFORMS),) +ifneq ($(wildcard $(PACKAGEDIR_XFORMS)/units/$(TARGETSUFFIX)),) +UNITDIR_XFORMS=$(PACKAGEDIR_XFORMS)/units/$(TARGETSUFFIX) +else +UNITDIR_XFORMS=$(PACKAGEDIR_XFORMS) +endif +ifdef CHECKDEPEND +$(PACKAGEDIR_XFORMS)/$(FPCMADE): + $(MAKE) -C $(PACKAGEDIR_XFORMS) $(FPCMADE) +override ALLDEPENDENCIES+=$(PACKAGEDIR_XFORMS)/$(FPCMADE) +endif +else +PACKAGEDIR_XFORMS= +UNITDIR_XFORMS:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /xforms/Package.fpc,$(UNITSDIR))))) +ifneq ($(UNITDIR_XFORMS),) +UNITDIR_XFORMS:=$(firstword $(UNITDIR_XFORMS)) +else +UNITDIR_XFORMS= +endif +endif +ifdef UNITDIR_XFORMS +override COMPILER_UNITDIR+=$(UNITDIR_XFORMS) +endif +endif +ifndef NOCPUDEF +override FPCOPTDEF=$(CPU_TARGET) +endif +ifneq ($(OS_TARGET),$(OS_SOURCE)) +override FPCOPT+=-T$(OS_TARGET) +endif +ifneq ($(CPU_TARGET),$(CPU_SOURCE)) +override FPCOPT+=-P$(CPU_TARGET) +endif +ifeq ($(OS_SOURCE),openbsd) +override FPCOPT+=-FD$(NEW_BINUTILS_PATH) +endif +ifndef CROSSBOOTSTRAP +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-XP$(BINUTILSPREFIX) +endif +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-Xr$(RLINKPATH) +endif +endif +ifdef UNITDIR +override FPCOPT+=$(addprefix -Fu,$(UNITDIR)) +endif +ifdef LIBDIR +override FPCOPT+=$(addprefix -Fl,$(LIBDIR)) +endif +ifdef OBJDIR +override FPCOPT+=$(addprefix -Fo,$(OBJDIR)) +endif +ifdef INCDIR +override FPCOPT+=$(addprefix -Fi,$(INCDIR)) +endif +ifdef LINKSMART +override FPCOPT+=-XX +endif +ifdef CREATESMART +override FPCOPT+=-CX +endif +ifdef DEBUG +override FPCOPT+=-gl +override FPCOPTDEF+=DEBUG +endif +ifdef RELEASE +ifneq ($(findstring 2.0.,$(FPC_VERSION)),) +ifeq ($(CPU_TARGET),i386) +FPCCPUOPT:=-OG2p3 +endif +ifeq ($(CPU_TARGET),powerpc) +FPCCPUOPT:=-O1r +endif +else +FPCCPUOPT:=-O2 +endif +override FPCOPT+=-Ur -Xs $(FPCCPUOPT) -n +override FPCOPTDEF+=RELEASE +endif +ifdef STRIP +override FPCOPT+=-Xs +endif +ifdef OPTIMIZE +override FPCOPT+=-O2 +endif +ifdef VERBOSE +override FPCOPT+=-vwni +endif +ifdef COMPILER_OPTIONS +override FPCOPT+=$(COMPILER_OPTIONS) +endif +ifdef COMPILER_UNITDIR +override FPCOPT+=$(addprefix -Fu,$(COMPILER_UNITDIR)) +endif +ifdef COMPILER_LIBRARYDIR +override FPCOPT+=$(addprefix -Fl,$(COMPILER_LIBRARYDIR)) +endif +ifdef COMPILER_OBJECTDIR +override FPCOPT+=$(addprefix -Fo,$(COMPILER_OBJECTDIR)) +endif +ifdef COMPILER_INCLUDEDIR +override FPCOPT+=$(addprefix -Fi,$(COMPILER_INCLUDEDIR)) +endif +ifdef CROSSBINDIR +override FPCOPT+=-FD$(CROSSBINDIR) +endif +ifdef COMPILER_TARGETDIR +override FPCOPT+=-FE$(COMPILER_TARGETDIR) +ifeq ($(COMPILER_TARGETDIR),.) +override TARGETDIRPREFIX= +else +override TARGETDIRPREFIX=$(COMPILER_TARGETDIR)/ +endif +endif +ifdef COMPILER_UNITTARGETDIR +override FPCOPT+=-FU$(COMPILER_UNITTARGETDIR) +ifeq ($(COMPILER_UNITTARGETDIR),.) +override UNITTARGETDIRPREFIX= +else +override UNITTARGETDIRPREFIX=$(COMPILER_UNITTARGETDIR)/ +endif +else +ifdef COMPILER_TARGETDIR +override COMPILER_UNITTARGETDIR=$(COMPILER_TARGETDIR) +override UNITTARGETDIRPREFIX=$(TARGETDIRPREFIX) +endif +endif +ifdef CREATESHARED +override FPCOPT+=-Cg +ifeq ($(CPU_TARGET),i386) +override FPCOPT+=-Aas +endif +endif +ifeq ($(findstring 2.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),linux) +ifeq ($(CPU_TARGET),x86_64) +override FPCOPT+=-Cg +endif +endif +endif +ifdef LINKSHARED +endif +ifdef GCCLIBDIR +override FPCOPT+=-Fl$(GCCLIBDIR) +endif +ifdef OTHERLIBDIR +override FPCOPT+=$(addprefix -Fl,$(OTHERLIBDIR)) +endif +ifdef OPT +override FPCOPT+=$(OPT) +endif +ifdef FPCOPTDEF +override FPCOPT+=$(addprefix -d,$(FPCOPTDEF)) +endif +ifdef CFGFILE +override FPCOPT+=@$(CFGFILE) +endif +ifdef USEENV +override FPCEXTCMD:=$(FPCOPT) +override FPCOPT:=!FPCEXTCMD +export FPCEXTCMD +endif +override AFULL_TARGET=$(CPU_TARGET)-$(OS_TARGET) +override AFULL_SOURCE=$(CPU_SOURCE)-$(OS_SOURCE) +ifneq ($(AFULL_TARGET),$(AFULL_SOURCE)) +override ACROSSCOMPILE=1 +endif +ifdef ACROSSCOMPILE +override FPCOPT+=$(CROSSOPT) +endif +override COMPILER:=$(FPC) $(FPCOPT) +ifeq (,$(findstring -s ,$(COMPILER))) +EXECPPAS= +else +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +ifdef RUNBATCH +EXECPPAS:=@$(RUNBATCH) $(PPAS) +else +EXECPPAS:=@$(PPAS) +endif +endif +endif +.PHONY: fpc_exes +ifndef CROSSINSTALL +ifneq ($(TARGET_PROGRAMS),) +override EXEFILES=$(addsuffix $(EXEEXT),$(TARGET_PROGRAMS)) +override EXEOFILES:=$(addsuffix $(OEXT),$(TARGET_PROGRAMS)) $(addprefix $(STATICLIBPREFIX),$(addsuffix $(STATICLIBEXT),$(TARGET_PROGRAMS))) $(addprefix $(IMPORTLIBPREFIX),$(addsuffix $(STATICLIBEXT),$(TARGET_PROGRAMS))) +override ALLTARGET+=fpc_exes +override INSTALLEXEFILES+=$(EXEFILES) +override CLEANEXEFILES+=$(EXEFILES) $(EXEOFILES) +ifeq ($(OS_TARGET),os2) +override CLEANEXEFILES+=$(addsuffix $(AOUTEXT),$(TARGET_PROGRAMS)) +endif +ifeq ($(OS_TARGET),emx) +override CLEANEXEFILES+=$(addsuffix $(AOUTEXT),$(TARGET_PROGRAMS)) +endif +endif +endif +fpc_exes: $(COMPILER_TARGETDIR) $(COMPILER_UNITTARGETDIR) $(EXEFILES) +ifdef TARGET_RSTS +override RSTFILES=$(addsuffix $(RSTEXT),$(TARGET_RSTS)) +override CLEANRSTFILES+=$(RSTFILES) +endif +.PHONY: fpc_all fpc_smart fpc_debug fpc_release fpc_shared +$(FPCMADE): $(ALLDEPENDENCIES) $(ALLTARGET) + @$(ECHOREDIR) Compiled > $(FPCMADE) +fpc_all: $(FPCMADE) +fpc_smart: + $(MAKE) all LINKSMART=1 CREATESMART=1 +fpc_debug: + $(MAKE) all DEBUG=1 +fpc_release: + $(MAKE) all RELEASE=1 +.SUFFIXES: $(EXEEXT) $(PPUEXT) $(OEXT) .pas .lpr .dpr .pp .rc .res +$(COMPILER_UNITTARGETDIR): + $(MKDIRTREE) $(COMPILER_UNITTARGETDIR) +$(COMPILER_TARGETDIR): + $(MKDIRTREE) $(COMPILER_TARGETDIR) +%$(PPUEXT): %.pp + $(COMPILER) $< + $(EXECPPAS) +%$(PPUEXT): %.pas + $(COMPILER) $< + $(EXECPPAS) +%$(EXEEXT): %.pp + $(COMPILER) $< + $(EXECPPAS) +%$(EXEEXT): %.pas + $(COMPILER) $< + $(EXECPPAS) +%$(EXEEXT): %.lpr + $(COMPILER) $< + $(EXECPPAS) +%$(EXEEXT): %.dpr + $(COMPILER) $< + $(EXECPPAS) +%.res: %.rc + windres -i $< -o $@ +vpath %.pp $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR) +vpath %.pas $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR) +vpath %.lpr $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR) +vpath %.dpr $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR) +vpath %.inc $(COMPILER_INCLUDEDIR) +vpath %$(OEXT) $(COMPILER_UNITTARGETDIR) +vpath %$(PPUEXT) $(COMPILER_UNITTARGETDIR) +.PHONY: fpc_shared +override INSTALLTARGET+=fpc_shared_install +ifndef SHARED_LIBVERSION +SHARED_LIBVERSION=$(FPC_VERSION) +endif +ifndef SHARED_LIBNAME +SHARED_LIBNAME=$(PACKAGE_NAME) +endif +ifndef SHARED_FULLNAME +SHARED_FULLNAME=$(SHAREDLIBPREFIX)$(SHARED_LIBNAME)-$(SHARED_LIBVERSION)$(SHAREDLIBEXT) +endif +ifndef SHARED_LIBUNITS +SHARED_LIBUNITS:=$(TARGET_UNITS) $(TARGET_IMPLICITUNITS) +override SHARED_LIBUNITS:=$(filter-out $(INSTALL_BUILDUNIT),$(SHARED_LIBUNITS)) +endif +fpc_shared: +ifdef HASSHAREDLIB + $(MAKE) all CREATESHARED=1 LINKSHARED=1 CREATESMART=1 +ifneq ($(SHARED_BUILD),n) + $(PPUMOVE) -q $(SHARED_LIBUNITS) -i$(COMPILER_UNITTARGETDIR) -o$(SHARED_FULLNAME) -d$(COMPILER_UNITTARGETDIR) +endif +else + @$(ECHO) Shared Libraries not supported +endif +fpc_shared_install: +ifneq ($(SHARED_BUILD),n) +ifneq ($(SHARED_LIBUNITS),) +ifneq ($(wildcard $(COMPILER_UNITTARGETDIR)/$(SHARED_FULLNAME)),) + $(INSTALL) $(COMPILER_UNITTARGETDIR)/$(SHARED_FULLNAME) $(INSTALL_SHAREDDIR) +endif +endif +endif +.PHONY: fpc_install fpc_sourceinstall fpc_exampleinstall +ifdef INSTALL_UNITS +override INSTALLPPUFILES+=$(addsuffix $(PPUEXT),$(INSTALL_UNITS)) +endif +ifdef INSTALL_BUILDUNIT +override INSTALLPPUFILES:=$(filter-out $(INSTALL_BUILDUNIT)$(PPUEXT),$(INSTALLPPUFILES)) +endif +ifdef INSTALLPPUFILES +override INSTALLPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(INSTALLPPUFILES)) $(addprefix $(STATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(INSTALLPPUFILES))) $(addprefix $(IMPORTLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(INSTALLPPUFILES))) +ifneq ($(UNITTARGETDIRPREFIX),) +override INSTALLPPUFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(notdir $(INSTALLPPUFILES))) +override INSTALLPPULINKFILES:=$(wildcard $(addprefix $(UNITTARGETDIRPREFIX),$(notdir $(INSTALLPPULINKFILES)))) +endif +override INSTALL_CREATEPACKAGEFPC=1 +endif +ifdef INSTALLEXEFILES +ifneq ($(TARGETDIRPREFIX),) +override INSTALLEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(notdir $(INSTALLEXEFILES))) +endif +endif +fpc_install: all $(INSTALLTARGET) +ifdef INSTALLEXEFILES + $(MKDIR) $(INSTALL_BINDIR) +ifdef UPXPROG + -$(UPXPROG) $(INSTALLEXEFILES) +endif + $(INSTALLEXE) $(INSTALLEXEFILES) $(INSTALL_BINDIR) +endif +ifdef INSTALL_CREATEPACKAGEFPC +ifdef FPCMAKE +ifdef PACKAGE_VERSION +ifneq ($(wildcard Makefile.fpc),) + $(FPCMAKE) -p -T$(CPU_TARGET)-$(OS_TARGET) Makefile.fpc + $(MKDIR) $(INSTALL_UNITDIR) + $(INSTALL) Package.fpc $(INSTALL_UNITDIR) +endif +endif +endif +endif +ifdef INSTALLPPUFILES + $(MKDIR) $(INSTALL_UNITDIR) + $(INSTALL) $(INSTALLPPUFILES) $(INSTALL_UNITDIR) +ifneq ($(INSTALLPPULINKFILES),) + $(INSTALL) $(INSTALLPPULINKFILES) $(INSTALL_UNITDIR) +endif +ifneq ($(wildcard $(LIB_FULLNAME)),) + $(MKDIR) $(INSTALL_LIBDIR) + $(INSTALL) $(LIB_FULLNAME) $(INSTALL_LIBDIR) +ifdef inUnix + ln -sf $(LIB_FULLNAME) $(INSTALL_LIBDIR)/$(LIB_NAME) +endif +endif +endif +ifdef INSTALL_FILES + $(MKDIR) $(INSTALL_DATADIR) + $(INSTALL) $(INSTALL_FILES) $(INSTALL_DATADIR) +endif +fpc_sourceinstall: distclean + $(MKDIR) $(INSTALL_SOURCEDIR) + $(COPYTREE) $(BASEDIR)/* $(INSTALL_SOURCEDIR) +fpc_exampleinstall: $(addsuffix _distclean,$(TARGET_EXAMPLEDIRS)) +ifdef HASEXAMPLES + $(MKDIR) $(INSTALL_EXAMPLEDIR) +endif +ifdef EXAMPLESOURCEFILES + $(COPY) $(EXAMPLESOURCEFILES) $(INSTALL_EXAMPLEDIR) +endif +ifdef TARGET_EXAMPLEDIRS + $(COPYTREE) $(addsuffix /*,$(TARGET_EXAMPLEDIRS)) $(INSTALL_EXAMPLEDIR) +endif +.PHONY: fpc_clean fpc_cleanall fpc_distclean +ifdef EXEFILES +override CLEANEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEFILES)) +endif +ifdef CLEAN_UNITS +override CLEANPPUFILES+=$(addsuffix $(PPUEXT),$(CLEAN_UNITS)) +endif +ifdef CLEANPPUFILES +override CLEANPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(CLEANPPUFILES)) $(addprefix $(STATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(CLEANPPUFILES))) $(addprefix $(IMPORTLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(CLEANPPUFILES))) +ifdef DEBUGSYMEXT +override CLEANPPULINKFILES+=$(subst $(PPUEXT),$(DEBUGSYMEXT),$(CLEANPPUFILES)) +endif +override CLEANPPUFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPUFILES)) +override CLEANPPULINKFILES:=$(wildcard $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPULINKFILES))) +endif +fpc_clean: $(CLEANTARGET) +ifdef CLEANEXEFILES + -$(DEL) $(CLEANEXEFILES) +endif +ifdef CLEANPPUFILES + -$(DEL) $(CLEANPPUFILES) +endif +ifneq ($(CLEANPPULINKFILES),) + -$(DEL) $(CLEANPPULINKFILES) +endif +ifdef CLEANRSTFILES + -$(DEL) $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANRSTFILES)) +endif +ifdef CLEAN_FILES + -$(DEL) $(CLEAN_FILES) +endif +ifdef LIB_NAME + -$(DEL) $(LIB_NAME) $(LIB_FULLNAME) +endif + -$(DEL) $(FPCMADE) Package.fpc $(PPAS) script.res link.res $(FPCEXTFILE) $(REDIRFILE) + -$(DEL) *$(ASMEXT) *_ppas$(BATCHEXT) +fpc_cleanall: $(CLEANTARGET) +ifdef CLEANEXEFILES + -$(DEL) $(CLEANEXEFILES) +endif +ifdef COMPILER_UNITTARGETDIR +ifdef CLEANPPUFILES + -$(DEL) $(CLEANPPUFILES) +endif +ifneq ($(CLEANPPULINKFILES),) + -$(DEL) $(CLEANPPULINKFILES) +endif +ifdef CLEANRSTFILES + -$(DEL) $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANRSTFILES)) +endif +endif + -$(DELTREE) units + -$(DEL) *$(OEXT) *$(PPUEXT) *$(RSTEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT) +ifneq ($(PPUEXT),.ppu) + -$(DEL) *.o *.ppu *.a +endif + -$(DELTREE) *$(SMARTEXT) + -$(DEL) fpcmade.* Package.fpc $(PPAS) script.res link.res $(FPCEXTFILE) $(REDIRFILE) + -$(DEL) *_ppas$(BATCHEXT) +ifdef AOUTEXT + -$(DEL) *$(AOUTEXT) +endif +ifdef DEBUGSYMEXT + -$(DEL) *$(DEBUGSYMEXT) +endif +fpc_distclean: cleanall +.PHONY: fpc_baseinfo +override INFORULES+=fpc_baseinfo +fpc_baseinfo: + @$(ECHO) + @$(ECHO) == Package info == + @$(ECHO) Package Name..... $(PACKAGE_NAME) + @$(ECHO) Package Version.. $(PACKAGE_VERSION) + @$(ECHO) + @$(ECHO) == Configuration info == + @$(ECHO) + @$(ECHO) FPC.......... $(FPC) + @$(ECHO) FPC Version.. $(FPC_VERSION) + @$(ECHO) Source CPU... $(CPU_SOURCE) + @$(ECHO) Target CPU... $(CPU_TARGET) + @$(ECHO) Source OS.... $(OS_SOURCE) + @$(ECHO) Target OS.... $(OS_TARGET) + @$(ECHO) Full Source.. $(FULL_SOURCE) + @$(ECHO) Full Target.. $(FULL_TARGET) + @$(ECHO) SourceSuffix. $(SOURCESUFFIX) + @$(ECHO) TargetSuffix. $(TARGETSUFFIX) + @$(ECHO) + @$(ECHO) == Directory info == + @$(ECHO) + @$(ECHO) Required pkgs... $(REQUIRE_PACKAGES) + @$(ECHO) + @$(ECHO) Basedir......... $(BASEDIR) + @$(ECHO) FPCDir.......... $(FPCDIR) + @$(ECHO) CrossBinDir..... $(CROSSBINDIR) + @$(ECHO) UnitsDir........ $(UNITSDIR) + @$(ECHO) PackagesDir..... $(PACKAGESDIR) + @$(ECHO) + @$(ECHO) GCC library..... $(GCCLIBDIR) + @$(ECHO) Other library... $(OTHERLIBDIR) + @$(ECHO) + @$(ECHO) == Tools info == + @$(ECHO) + @$(ECHO) As........ $(AS) + @$(ECHO) Ld........ $(LD) + @$(ECHO) Ar........ $(AR) + @$(ECHO) Rc........ $(RC) + @$(ECHO) + @$(ECHO) Mv........ $(MVPROG) + @$(ECHO) Cp........ $(CPPROG) + @$(ECHO) Rm........ $(RMPROG) + @$(ECHO) GInstall.. $(GINSTALL) + @$(ECHO) Echo...... $(ECHO) + @$(ECHO) Shell..... $(SHELL) + @$(ECHO) Date...... $(DATE) + @$(ECHO) FPCMake... $(FPCMAKE) + @$(ECHO) PPUMove... $(PPUMOVE) + @$(ECHO) Upx....... $(UPXPROG) + @$(ECHO) Zip....... $(ZIPPROG) + @$(ECHO) + @$(ECHO) == Object info == + @$(ECHO) + @$(ECHO) Target Loaders........ $(TARGET_LOADERS) + @$(ECHO) Target Units.......... $(TARGET_UNITS) + @$(ECHO) Target Implicit Units. $(TARGET_IMPLICITUNITS) + @$(ECHO) Target Programs....... $(TARGET_PROGRAMS) + @$(ECHO) Target Dirs........... $(TARGET_DIRS) + @$(ECHO) Target Examples....... $(TARGET_EXAMPLES) + @$(ECHO) Target ExampleDirs.... $(TARGET_EXAMPLEDIRS) + @$(ECHO) + @$(ECHO) Clean Units......... $(CLEAN_UNITS) + @$(ECHO) Clean Files......... $(CLEAN_FILES) + @$(ECHO) + @$(ECHO) Install Units....... $(INSTALL_UNITS) + @$(ECHO) Install Files....... $(INSTALL_FILES) + @$(ECHO) + @$(ECHO) == Install info == + @$(ECHO) + @$(ECHO) DateStr.............. $(DATESTR) + @$(ECHO) ZipName.............. $(ZIPNAME) + @$(ECHO) ZipPrefix............ $(ZIPPREFIX) + @$(ECHO) ZipCrossPrefix....... $(ZIPCROSSPREFIX) + @$(ECHO) ZipSuffix............ $(ZIPSUFFIX) + @$(ECHO) FullZipName.......... $(FULLZIPNAME) + @$(ECHO) Install FPC Package.. $(INSTALL_FPCPACKAGE) + @$(ECHO) + @$(ECHO) Install base dir..... $(INSTALL_BASEDIR) + @$(ECHO) Install binary dir... $(INSTALL_BINDIR) + @$(ECHO) Install library dir.. $(INSTALL_LIBDIR) + @$(ECHO) Install units dir.... $(INSTALL_UNITDIR) + @$(ECHO) Install source dir... $(INSTALL_SOURCEDIR) + @$(ECHO) Install doc dir...... $(INSTALL_DOCDIR) + @$(ECHO) Install example dir.. $(INSTALL_EXAMPLEDIR) + @$(ECHO) Install data dir..... $(INSTALL_DATADIR) + @$(ECHO) + @$(ECHO) Dist destination dir. $(DIST_DESTDIR) + @$(ECHO) Dist zip name........ $(DIST_ZIPNAME) + @$(ECHO) +.PHONY: fpc_info +fpc_info: $(INFORULES) +.PHONY: fpc_makefile fpc_makefiles fpc_makefile_sub1 fpc_makefile_sub2 \ + fpc_makefile_dirs +fpc_makefile: + $(FPCMAKE) -w -T$(OS_TARGET) Makefile.fpc +fpc_makefile_sub1: +ifdef TARGET_DIRS + $(FPCMAKE) -w -T$(OS_TARGET) $(addsuffix /Makefile.fpc,$(TARGET_DIRS)) +endif +ifdef TARGET_EXAMPLEDIRS + $(FPCMAKE) -w -T$(OS_TARGET) $(addsuffix /Makefile.fpc,$(TARGET_EXAMPLEDIRS)) +endif +fpc_makefile_sub2: $(addsuffix _makefile_dirs,$(TARGET_DIRS) $(TARGET_EXAMPLEDIRS)) +fpc_makefile_dirs: fpc_makefile_sub1 fpc_makefile_sub2 +fpc_makefiles: fpc_makefile fpc_makefile_dirs +all: fpc_all +debug: fpc_debug +smart: fpc_smart +release: fpc_release +units: fpc_units +examples: +shared: fpc_shared +install: fpc_install +sourceinstall: fpc_sourceinstall +exampleinstall: fpc_exampleinstall +distinstall: +zipinstall: +zipsourceinstall: +zipexampleinstall: +zipdistinstall: +clean: fpc_clean +distclean: fpc_distclean +cleanall: fpc_cleanall +info: fpc_info +makefiles: fpc_makefiles +.PHONY: all debug smart release units examples shared install sourceinstall exampleinstall distinstall zipinstall zipsourceinstall zipexampleinstall zipdistinstall clean distclean cleanall info makefiles +ifneq ($(wildcard fpcmake.loc),) +include fpcmake.loc +endif +.NOTPARALLEL: diff --git a/packages/xforms/examples/Makefile.fpc b/packages/xforms/examples/Makefile.fpc new file mode 100644 index 0000000000..f294f391f0 --- /dev/null +++ b/packages/xforms/examples/Makefile.fpc @@ -0,0 +1,23 @@ +# +# Makefile.fpc for Forms Examples +# + +[target] +programs=pushme yesno pushbutton touchbutton minput inputall choice butttypes \ + colsel colsel1 buttonall chartall positioner secretinput cursor fdial \ + ldial ndial invslider sliderall borderwidth boxtype xyplotover \ + arrowbutton browserop browserall chartstrip colbrowser counter \ + fbrowse1 fbrowse flclock fonts goodies lalign ll longlabel menu \ + objinactive objpos newbutton multilabel objreturn + +[require] +packages=xforms + +[install] +fpcpackage=y + +[default] +fpcdir=../../.. + +[rules] +.NOTPARALLEL: diff --git a/packages/xforms/examples/arrowbutton.pp b/packages/xforms/examples/arrowbutton.pp new file mode 100644 index 0000000000..5508707d5d --- /dev/null +++ b/packages/xforms/examples/arrowbutton.pp @@ -0,0 +1,40 @@ +{ This demo shows the use of special symbol labels } +program arrowbutton; + +uses xforms; + +const border : longint = FL_TRANSIENT; + +var + form : PFL_FORM; + obj,but : PFL_OBJECT; + +begin + fl_initialize(@argc, argv, 'FormDemo', nil, 0); + + form := fl_bgn_form(FL_UP_BOX,400,400); + obj := fl_add_button(FL_NORMAL_BUTTON, 50, 250,100,100,'@1'); + fl_set_object_lcol(obj,FL_BLUE); + obj := fl_add_button(FL_NORMAL_BUTTON,150, 250,100,100,'@2'); + fl_set_object_lcol(obj,FL_BLUE); + obj := fl_add_button(FL_NORMAL_BUTTON,250, 250,100,100,'@3'); + fl_set_object_lcol(obj,FL_BLUE); + obj := fl_add_button(FL_NORMAL_BUTTON, 50,150,100,100,'@4'); + fl_set_object_lcol(obj,FL_BLUE); + but := fl_add_button(FL_NORMAL_BUTTON,150,150,100,100,'@square'); + fl_set_object_lcol(but,FL_GREEN); + fl_set_object_color(but,FL_MAGENTA,FL_RED); + obj := fl_add_button(FL_NORMAL_BUTTON,250,150,100,100,'@6'); + fl_set_object_lcol(obj,FL_BLUE); + obj := fl_add_button(FL_NORMAL_BUTTON, 50, 50,100,100,'@7'); + fl_set_object_lcol(obj,FL_BLUE); + obj := fl_add_button(FL_NORMAL_BUTTON,150, 50,100,100,'@8'); + fl_set_object_lcol(obj,FL_BLUE); + obj := fl_add_button(FL_NORMAL_BUTTON,250, 50,100,100,'@9'); + fl_set_object_lcol(obj,FL_BLUE); + fl_end_form(); + + fl_show_form(form,FL_PLACE_ASPECT,border,'Buttons'); + while (fl_do_forms() <> but) do; + fl_hide_form(form); +end. diff --git a/packages/xforms/examples/bm1.xbm b/packages/xforms/examples/bm1.xbm new file mode 100644 index 0000000000..cea688160a --- /dev/null +++ b/packages/xforms/examples/bm1.xbm @@ -0,0 +1,9 @@ +const bm1_width: Longint = 16; + bm1_height : longint = 16; + bm1_bits : array [1..32] of byte = + ( + $00, $00, $00, $57, $7c, $72, $c4, $52, $c4, $00, $44, $01, + $44, $1f, $fc, $22, $40, $42, $40, $44, $40, $43, $c0, $40, + $70, $40, $8c, $20, $00, $1f, $00, $00 + ); + diff --git a/packages/xforms/examples/bm2.xbm b/packages/xforms/examples/bm2.xbm new file mode 100644 index 0000000000..955c3032d9 --- /dev/null +++ b/packages/xforms/examples/bm2.xbm @@ -0,0 +1,7 @@ +Const + bm2_width : longint = 16; + bm2_height : longint = 16; + bm2_bits : array[1..32] of byte = ( + $00, $00, $00, $57, $7c, $72, $fc, $52, $fc, $00, $7c, $01, + $7c, $1f, $fc, $22, $40, $42, $40, $44, $40, $43, $c0, $40, + $70, $40, $8c, $20, $00, $1f, $00, $00 ); diff --git a/packages/xforms/examples/borderwidth.pp b/packages/xforms/examples/borderwidth.pp new file mode 100644 index 0000000000..6388e31f1e --- /dev/null +++ b/packages/xforms/examples/borderwidth.pp @@ -0,0 +1,101 @@ +program borderwidth; + +uses xforms; + +type TFD_bwform = record + bwform : PFL_FORM; + vdata : pointer; + ldata : longint; + done, + bw_choice, + bwgroup, + pmobj : PFL_OBJECT; + end; +PFD_bwform = ^TFD_bwform; + + +{ callbacks for form bwform } +procedure done_callback(ob : PFL_OBJECT; data : longint);cdecl; +begin + { fill-in code for callback } + halt(0); +end; + +var +fd_bwform : PFD_bwform; + +const bws : array[0..7] of longint = (-3,-2,-1,1,2,3,4,5); + +procedure bw_callback(ob : PFL_OBJECT; data : longint);cdecl; + +var bw : longint; + +begin + bw := bws[fl_get_choice(ob)-1]; + + fl_set_object_bw(fd_bwform^.bwgroup, bw); + { since bwgroup includes the backface, it wipes out the done button} + fl_redraw_object(fd_bwform^.done); + fl_redraw_object(fd_bwform^.bw_choice); +end; + +function create_form_bwform : PFD_bwform; +var + obj : PFL_OBJECT; + fdui : PFD_bwform; + +begin + + new(fdui); + fdui^.bwform := fl_bgn_form(FL_NO_BOX, 380, 340); + + fdui^.bwgroup := fl_bgn_group(); + obj := fl_add_box(FL_UP_BOX,0,0,380,340,''); + obj := fl_add_frame(FL_EMBOSSED_FRAME,220,60,135,145,''); + obj := fl_add_frame(FL_ENGRAVED_FRAME,15,60,185,145,''); + obj := fl_add_slider(FL_HOR_SLIDER,25,75,160,25,''); + obj := fl_add_pixmapbutton(FL_NORMAL_BUTTON,305,145,40,35,''); + fdui^.pmobj := obj; + obj := fl_add_positioner(FL_NORMAL_POSITIONER,30,225,100,80,''); + obj := fl_add_counter(FL_NORMAL_COUNTER,25,160,160,25,''); + obj := fl_add_lightbutton(FL_PUSH_BUTTON,230,100,100,30,'LightButton'); + obj := fl_add_roundbutton(FL_PUSH_BUTTON,230,130,80,33,'Button'); + obj := fl_add_round3dbutton(FL_PUSH_BUTTON,230,152,80,33,'Button'); + fl_set_object_color(obj,FL_COL1, FL_BLUE); + obj := fl_add_checkbutton(FL_PUSH_BUTTON,230,174,80,33,'Button'); + obj := fl_add_input(FL_NORMAL_INPUT,195,240,160,28,'Input'); + obj := fl_add_valslider(FL_HOR_BROWSER_SLIDER,25,120,160,25,''); + obj := fl_add_button(FL_NORMAL_BUTTON,230,65,100,30,'Button'); + fl_end_group(); + + obj := fl_add_button(FL_NORMAL_BUTTON,270,290,75,30,'Done'); + fdui^.done := obj; + fl_set_object_callback(obj,PFL_CALLBACKPTR(@done_callback),0); + obj:= fl_add_choice(FL_NORMAL_CHOICE,105,20,80,25,'Border Width'); + fdui^.bw_choice := obj ; + fl_set_object_callback(obj,PFL_CALLBACKPTR(@bw_callback),0); + fl_end_form(); + fdui^.bwform^.fdui := fdui; + + create_form_bwform:= fdui; +end; + +begin + { application default. Can be overriden by the command line options } + fl_set_border_width(-2); + + fl_initialize(@argc, argv, 'FormDemo', nil, 0); + fd_bwform := create_form_bwform; + + { fill-in form initialization code } + fl_set_pixmapbutton_file(fd_bwform^.pmobj, 'crab.xpm'); + + fl_addto_choice(fd_bwform^.bw_choice,'-3 Pixel|-2 Pixel|-1 Pixel'); + fl_addto_choice(fd_bwform^.bw_choice,' 1 Pixel| 2 Pixel| 3 Pixel'); + fl_addto_choice(fd_bwform^.bw_choice,' 4 Pixel| 5 Pixel'); + fl_set_choice_text(fd_bwform^.bw_choice, '-2 Pixel'); + + { show the first form } + fl_show_form(fd_bwform^.bwform,FL_PLACE_CENTER,FL_NOBORDER,'bwform'); + while (fl_do_forms<>nil) do; +end. diff --git a/packages/xforms/examples/boxtype.pp b/packages/xforms/examples/boxtype.pp new file mode 100644 index 0000000000..45f0be2959 --- /dev/null +++ b/packages/xforms/examples/boxtype.pp @@ -0,0 +1,222 @@ +{ This demo show the different boxtypes. Note that some + * boxtypes are not appropriate for some objects + } +program boxtype; + +uses xforms; + +const border = FL_TRANSIENT; + + +type TVN_Struct = record + theval : longint; + name : pchar; + end; + +const gmode : array[0..5] of TVN_Struct = + ((theval : FL_StaticGray; name : 'StaticGray'), + (theval : FL_GrayScale; name : 'GrayScale'), + (Theval : FL_StaticColor; name : 'StaticColor'), + (Theval : FL_Pseudocolor; name : 'PseudoColor'), + (theval : FL_Truecolor; name : 'TrueColor'), + (Theval : FL_DirectColor; name : 'DirectColor')); + +Const btypes : array [0..15] of TVN_struct= +( + (theval : FL_NO_BOX; name : 'no box'), + (theval : FL_UP_BOX; name : 'up box'), + (theval : FL_DOWN_BOX; name : 'down box'), + (theval : FL_BORDER_BOX; name : 'border box'), + (theval : FL_SHADOW_BOX; name : 'shadow box'), + (theval : FL_FLAT_BOX; name : 'flat box'), + (theval : FL_FRAME_BOX; name : 'frame box'), + (theval : FL_EMBOSSED_BOX; name : 'embossed box'), + (theval : FL_ROUNDED_BOX; name : 'rounded box'), + (theval : FL_RFLAT_BOX; name : 'rflat box'), + (theval : FL_RSHADOW_BOX; name : 'shadow box'), + (theval : FL_OVAL_BOX; name : 'oval box'), + (theval : FL_ROUNDED3D_UPBOX; name : 'rounded3d upbox'), + (theval : FL_ROUNDED3D_DOWNBOX; name : 'rounded3d downbox'), + (theval : FL_OVAL3D_UPBOX; name : 'oval3d upbox'), + (theval : FL_OVAL3D_DOWNBOX; name : 'oval3d downbox') + ); + +{$i srs.xbm} + +{************** Callback *********************} + +var + form : PFL_FORM; + tobj : array [0..17] of PFL_OBJECT; + exitob, btypeob, modeob : PFL_OBJECT; +Const +lastbt : Longint = -1; + +procedure boxtype_cb (ob : PFL_OBJECT; arg : longint);cdecl; + +var + i, req_bt : longint; + +begin + req_bt:= fl_get_choice(ob) - 1; + if (lastbt <> req_bt) then + begin + fl_freeze_form (form); + fl_redraw_form (form); + i:=0; + while i<18 do + begin + fl_set_object_boxtype (tobj[i], btypes[req_bt].theval); + inc(i); + end; + fl_unfreeze_form (form); + lastbt := req_bt; + end; +end; + +Const lval : longint = -1; + +procedure mode_cb (ob : PFL_OBJECT; arg : longint);cdecl; + +var + db,theval : longint; + +begin + db:=0; + theval := fl_get_choice (ob) -1; + if (theval = lval) or ( theval < 0) then exit; + + fl_hide_form (form); + if not (fl_mode_capable(gmode[theval].theval, 0)<>0) then + begin + fl_set_choice(ob, lval); + theval := lval; + end; + + fl_set_graphics_mode (gmode[theval].theval, db); + fl_show_form (form, FL_PLACE_GEOMETRY, border, 'Box types'); + + lval := theval; +end; + +{************** Creation Routines ********************} + +procedure create_form_form; +var + obj : PFL_OBJECT; + +begin + form := fl_bgn_form(FL_NO_BOX, 720, 520); + obj := fl_add_box(FL_UP_BOX, 0, 0, 720, 520, ''); + fl_set_object_color(obj, FL_BLUE, FL_COL1); + obj := fl_add_box(FL_DOWN_BOX, 10, 90, 700, 420, ''); + fl_set_object_color(obj, FL_COL1, FL_COL1); + obj := fl_add_box(FL_DOWN_BOX, 10, 10, 700, 70, ''); + fl_set_object_color(obj, FL_SLATEBLUE, FL_COL1); + obj:= fl_add_box(FL_UP_BOX, 30, 110, 110, 110, 'Box'); + tobj[0] := obj ; + obj:= fl_add_text(FL_NORMAL_TEXT, 30, 240, 110, 30, 'Text'); + tobj[1] := obj ; + obj:= fl_add_bitmap(FL_NORMAL_BITMAP, 40, 280, 90, 80, 'Bitmap'); + tobj[2] := obj ; + fl_set_object_lcol(obj, FL_BLUE); + obj:= fl_add_chart(FL_BAR_CHART, 160, 110, 160, 110, 'Chart'); + tobj[3] := obj ; + obj:= fl_add_clock(FL_ANALOG_CLOCK, 40, 390, 90, 90, 'Clock'); + tobj[4] := obj ; + fl_set_object_dblbuffer(tobj[4],1); + obj:=fl_add_button(FL_NORMAL_BUTTON, 340, 110, 120, 30, 'Button'); + tobj[5]:=obj; + obj:=fl_add_lightbutton(FL_PUSH_BUTTON,340,150,120,30,'Lightbutton'); + tobj[6]:=obj; + obj:=fl_add_roundbutton(FL_PUSH_BUTTON,340,190,120,30,'Roundbutton'); + tobj[7]:=obj; + obj:=fl_add_slider(FL_VERT_SLIDER, 160, 250, 40, 230, 'Slider'); + tobj[8]:=obj; + obj:=fl_add_valslider(FL_VERT_SLIDER, 220, 250, 40, 230, 'Valslider'); + tobj[9]:=obj; + obj:=fl_add_dial (FL_LINE_DIAL, 280, 250, 100, 100, 'Dial'); + tobj[10]:=obj; + obj:=fl_add_positioner(FL_NORMAL_POSITIONER,280,380,150,100, 'Positioner'); + tobj[11]:=obj; + obj:=fl_add_counter (FL_NORMAL_COUNTER,480,110,210,30, 'Counter'); + tobj[12]:=obj; + obj:=fl_add_input (FL_NORMAL_INPUT, 520,170,170,30, 'Input'); + tobj[13]:=obj; + obj:=fl_add_menu (FL_PUSH_MENU, 400, 240, 100, 30, 'Menu'); + tobj[14]:=obj; + obj:=fl_add_choice (FL_NORMAL_CHOICE, 580, 250, 110, 30, 'Choice'); + tobj[15]:=obj; + obj:=fl_add_timer (FL_VALUE_TIMER, 580, 210, 110, 30, 'Timer'); + tobj[16]:=obj; + fl_set_object_dblbuffer(tobj[16], 1); + obj:=fl_add_browser (FL_NORMAL_BROWSER,450,300,240, 180, 'Browser'); + tobj[17]:=obj; + obj:= fl_add_button (FL_NORMAL_BUTTON, 590, 30, 100, 30, 'Exit'); + exitob:=obj; + obj:= fl_add_choice (FL_NORMAL_CHOICE,110,30, 130, 30, 'Boxtype'); + btypeob:=obj; + fl_set_object_callback (obj, PFL_CALLBACKPTR(@boxtype_cb), 0); + obj :=fl_add_choice(FL_NORMAL_CHOICE,370,30,130,30,'Graphics mode'); + modeob := obj; + fl_set_object_callback (obj, PFL_CALLBACKPTR(@mode_cb), 0); + fl_end_form ; +end; + +procedure create_the_forms; +begin + create_form_form; +end; + +{************** Main Routine **********************} + +const browserlines : array [0..21] of pchar = ( + ' ', '@C1@c@l@bObjects Demo', ' ', + 'This demo shows you all', 'objects that currently', + 'exist in the Forms Library.', ' ', + 'You can change the boxtype', 'of the different objects', + 'using the buttons at the', 'top of the form. Note that', + 'some combinations might not', 'look too good. Also realize', + 'that for all object classes', 'many different types are', + 'available with different', 'behaviour.', ' ', + 'With this demo you can also', 'see the effect of the drawing', + 'mode on the appearance of the','objects.'); + + +var + ob : PFL_OBJECT; + c : TFL_COLOR; + p : ppchar; + vn : ^TVN_struct; + i : longint; + +begin + c := FL_BLACK; + fl_initialize(@argc, argv, 'FormDemo', nil, 0); + create_the_forms (); + fl_set_bitmap_data (tobj[2], sorceress_width, sorceress_height, pchar(@sorceress_bits)); + fl_add_chart_value (tobj[3], 15, 'item 1', c);inc(c); + fl_add_chart_value (tobj[3], 5, 'item 2', c);inc(c); + fl_add_chart_value (tobj[3], -10, 'item 3', c);inc(c); + fl_add_chart_value (tobj[3], 25, 'item 4', c);inc(c); + fl_set_menu (tobj[14], 'item 1|item 2|item 3|item 4|item 5'); + fl_addto_choice (tobj[15], 'item 1'); + fl_addto_choice (tobj[15], 'item 2'); + fl_addto_choice (tobj[15], 'item 3'); + fl_addto_choice (tobj[15], 'item 4'); + fl_addto_choice (tobj[15], 'item 5'); + fl_set_timer (tobj[16], 1000.0); + for i:=0 to 21 do + fl_add_browser_line (tobj[17], browserlines[i]); + for i:= 0 to 15 do + fl_addto_choice(btypeob, btypes[i].name); + for i:=0 to 5 do + begin + fl_addto_choice (modeob, gmode[i].name); + if (fl_mode_capable(gmode[i].theval, 0)=0) then + fl_set_choice_item_mode(modeob, i, FL_PUP_GRAY); + end; + fl_set_choice (modeob, fl_vmode+1); + fl_show_form (form, FL_PLACE_MOUSE, border, 'Box types'); + while (fl_do_forms <> exitob) do; +end. diff --git a/packages/xforms/examples/browserall.pp b/packages/xforms/examples/browserall.pp new file mode 100644 index 0000000000..05a475652e --- /dev/null +++ b/packages/xforms/examples/browserall.pp @@ -0,0 +1,178 @@ +{ This is a demo that shows the different types of browsers. } + + +uses xforms,strings; + +var +form : PFL_FORM; +br : array[0..3] of PFL_OBJECT; +exitobj, readout : PFL_OBJECT; + + +const +bnames : array[0..3] of pchar = +( + 'NORMAL_BROWSER', 'SELECT_BROWSER', 'HOLD_BROWSER', 'MULTI_BROWSER' +); + + +procedure deselect(obj : PFL_OBJECT ; arg : longint);cdecl; +var + i : longint ; +begin + for i:=0 to 3 do + fl_deselect_browser(br[i]); +end; + +procedure set_size(obj : PFL_OBJECT; arg : longint);cdecl; +var + i : longint; +begin + for i:=0 to 3 do + fl_set_browser_fontsize(br[i],arg); +end; + +procedure set_style(obj : PFL_OBJECT; arg : longint);cdecl; +var + i : longint; + +begin + for i:=0 to 3 do + fl_set_browser_fontstyle(br[i], arg); +end; + +procedure br_callback(ob : PFL_OBJECT; arg : longint);cdecl; +var + buf : string[255]; +const + mb : array[0..3] of pchar = ('','left','middle','right'); + +var i,b : longint; + +begin + b:=fl_mouse_button; + if (b < FL_SHORTCUT) then + buf :='In '+strpas(bnames[arg]) +'['+strpas(mb[b])+']'#0 + else + buf:='In '+strpas(bnames[arg])+#0; + i := fl_get_browser(ob); + if i>0 then + begin + buf:=buf+strpas(fl_get_browser_line(ob,i)); + buf:=buf+' was selected'#0 + end + else + begin + buf:=buf+strpas(fl_get_browser_line(ob,-i)); + buf:=buf+' was deselected'#0 + end; + fl_set_object_label(readout,@buf[1]); +end; + + +procedure create_form; +var + obj : PFL_OBJECT; + +begin + form := fl_bgn_form(FL_UP_BOX,700,570); + readout := fl_add_text(FL_NORMAL_TEXT,50,30,600,50,''); + fl_set_object_lsize(readout,FL_LARGE_SIZE); + fl_set_object_lalign(readout,FL_ALIGN_CENTER); + fl_set_object_lstyle(readout,FL_BOLD_STYLE); + fl_set_object_boxtype(readout,FL_UP_BOX); + + fl_set_object_color(readout,FL_MAGENTA,FL_MAGENTA); + + obj:= fl_add_browser(FL_NORMAL_BROWSER,20,120,150,290,bnames[0]); + br[0] := obj ; + fl_set_object_callback(obj, PFL_CALLBACKPTR(@br_callback), 0); + obj:= fl_add_browser(FL_SELECT_BROWSER,190,120,150,290,bnames[1]); + br[1] := obj ; + fl_set_object_callback(obj, PFL_CALLBACKPTR(@br_callback), 1); + obj := fl_add_browser(FL_HOLD_BROWSER,360,120,150,290,bnames[2]); + br[2] := obj ; + fl_set_object_color(obj,FL_COL1,FL_GREEN); + fl_set_object_callback(obj, PFL_CALLBACKPTR(@br_callback), 2); + obj := fl_add_browser(FL_MULTI_BROWSER,530,120,150,290,bnames[3]); + br[3] := obj; + fl_set_object_color(br[3],FL_COL1,FL_CYAN); + fl_set_object_callback(obj, PFL_CALLBACKPTR(@br_callback), 3); + + obj := fl_add_button(FL_NORMAL_BUTTON,560,510,120,30,'Exit'); + exitobj := obj; + obj := fl_add_button(FL_NORMAL_BUTTON,560,460,120,30,'Deselect'); + fl_set_object_callback(obj,PFL_CALLBACKPTR(@deselect),0); + + fl_bgn_group(); + obj := fl_add_lightbutton(FL_RADIO_BUTTON,20,500,100,30,'Tiny'); + fl_set_object_lsize(obj,FL_TINY_SIZE); + fl_set_object_callback(obj,PFL_CALLBACKPTR(@set_size),obj^.lsize); + obj := fl_add_lightbutton(FL_RADIO_BUTTON,130,500,100,30,'Small'); + fl_set_object_lsize(obj,FL_SMALL_SIZE); + fl_set_object_callback(obj,PFL_CALLBACKPTR(@set_size),obj^.lsize); + fl_set_button(obj,1); + obj := fl_add_lightbutton(FL_RADIO_BUTTON,240,500,100,30,'Normal'); + fl_set_object_lsize(obj,FL_NORMAL_SIZE); + fl_set_object_callback(obj,PFL_CALLBACKPTR(@set_size),obj^.lsize); + obj := fl_add_lightbutton(FL_RADIO_BUTTON,350,500,100,30,'Large'); + fl_set_object_lsize(obj,FL_LARGE_SIZE); + fl_set_object_callback(obj,PFL_CALLBACKPTR(@set_size),obj^.lsize); + fl_end_group; + + fl_bgn_group; + obj := fl_add_lightbutton(FL_RADIO_BUTTON,20,450,100,30,'Normal'); + fl_set_object_callback(obj,PFL_CALLBACKPTR(@set_style),FL_NORMAL_STYLE); + fl_set_button(obj,1); + obj := fl_add_lightbutton(FL_RADIO_BUTTON,120,450,100,30,'Bold'); + fl_set_object_callback(obj,PFL_CALLBACKPTR(@set_style),FL_BOLD_STYLE); + obj := fl_add_lightbutton(FL_RADIO_BUTTON,220,450,100,30,'Italic'); + fl_set_object_callback(obj,PFL_CALLBACKPTR(@set_style),FL_ITALIC_STYLE); + obj := fl_add_lightbutton(FL_RADIO_BUTTON,320,450,100,30,'BoldItalic'); + fl_set_object_callback(obj,PFL_CALLBACKPTR(@set_style),FL_BOLDITALIC_STYLE); + obj := fl_add_lightbutton(FL_RADIO_BUTTON,420,450,100,30,'Fixed'); + fl_set_object_callback(obj,PFL_CALLBACKPTR(@set_style),FL_FIXED_STYLE); + fl_end_group; + fl_end_form; +end; + + +procedure fill_browsers; +var + i, j : longint; + buf : string[128]; + +begin + for i:=0 to 3 do + for j:=1 to 100 do + begin + if ( j = 5) then + begin + str(j,buf); + buf:='@NLine with qb '+buf+#0; + end + else if ( j = 10) then + buf:='@-'#0 + else if ( j = 40 ) then + begin + str(j,buf); + buf:='@mLine with qb '+buf+#0; + end + else + begin + str(j,buf); + buf:='Line with qb '+buf+#0; + end; + fl_add_browser_line(br[i],@buf[1]); + end +end; + + +begin + fl_initialize(@argc, argv, 'FormDemo', nil, 0); + create_form; + fill_browsers; + fl_show_form(form,FL_PLACE_CENTER,FL_TRANSIENT,'All Browsers'); + fl_do_forms; + fl_hide_form(form); +end. diff --git a/packages/xforms/examples/browserop.pp b/packages/xforms/examples/browserop.pp new file mode 100644 index 0000000000..06eee232d0 --- /dev/null +++ b/packages/xforms/examples/browserop.pp @@ -0,0 +1,89 @@ +{ This demo shows the different routines on browsers } +program browserop; + +uses xforms; + +var +form : PFL_FORM; +browserobj, inputobj, exitobj : PFL_OBJECT; + +procedure addit(ob : PFL_OBJECT; arg : longint);cdecl; +begin + { append and show the last line. Don't use this if you just want + * to add some lines. use fl_add_browser_line + } + fl_addto_browser(browserobj,fl_get_input(inputobj)); +end; + +procedure insertit(ob : PFL_OBJECT ; arg : longint);cdecl; +var + n : integer; +begin + n:=fl_get_browser(browserobj); + if (n=0) then exit; + fl_insert_browser_line(browserobj,n,fl_get_input(inputobj)); +end; + +procedure replaceit(obj : PFL_OBJECT; arg : longint);cdecl; +var + n : integer; +begin + n:=fl_get_browser(browserobj); + if (n=0) then exit; + fl_replace_browser_line(browserobj,n,fl_get_input(inputobj)); +end; + + +procedure deleteit(ob : PFL_OBJECT; arg : Longint);cdecl; +var + n : integer; +begin + n:=fl_get_browser(browserobj); + if (n=0) then exit; + fl_delete_browser_line(browserobj,n); +end; + +procedure clearit(ob : PFL_OBJECT; arg : longint);cdecl; +begin + fl_clear_browser(browserobj); +end; + + +procedure create_form; +var + obj : PFL_OBJECT; + +begin + form := fl_bgn_form(FL_UP_BOX,390,420); + browserobj := fl_add_browser(FL_HOLD_BROWSER,20,20,210,330,''); + fl_set_object_dblbuffer(browserobj, 1); + obj:= fl_add_input(FL_NORMAL_INPUT,20,370,210,30,''); + inputobj := obj ; + fl_set_object_callback(obj,PFL_CALLBACKPTR(@addit),0); + obj := fl_add_button(FL_NORMAL_BUTTON,250,20,120,30,'Add'); + fl_set_object_callback(obj,PFL_CALLBACKPTR(@addit),0); + obj := fl_add_button(FL_NORMAL_BUTTON,250,60,120,30,'Insert'); + fl_set_object_callback(obj,PFL_CALLBACKPTR(@insertit),0); + obj := fl_add_button(FL_NORMAL_BUTTON,250,100,120,30,'Replace'); + fl_set_object_callback(obj,PFL_CALLBACKPTR(@replaceit),0); + obj := fl_add_button(FL_NORMAL_BUTTON,250,160,120,30,'Delete'); + fl_set_object_callback(obj,PFL_CALLBACKPTR(@deleteit),0); + obj := fl_add_button(FL_NORMAL_BUTTON,250,200,120,30,'Clear'); + fl_set_object_callback(obj,PFL_CALLBACKPTR(@clearit),0); + exitobj := fl_add_button(FL_NORMAL_BUTTON,250,370,120,30,'Exit'); + fl_end_form(); +end; + +{---------------------------------------} + +var obj : PFL_OBJECT; + +begin + fl_initialize(@argc, argv, 'FormDemo', nil, 0); + create_form; + fl_show_form(form,FL_PLACE_CENTER,FL_TRANSIENT,'Browser Op'); + repeat + obj := fl_do_forms + until obj = exitobj; + fl_hide_form(form); +end. diff --git a/packages/xforms/examples/buttonall.pp b/packages/xforms/examples/buttonall.pp new file mode 100644 index 0000000000..7dfd3ccdc6 --- /dev/null +++ b/packages/xforms/examples/buttonall.pp @@ -0,0 +1,112 @@ +program buttonall; + +uses xforms; + +type TFD_buttform = record + buttform : PFL_FORM; + vdata : pointer; + ldata : Longint; + backface,done,objsgroup,bbutt,pbutt,bw_obj : PFL_OBJECT; +end; +PFD_buttform = ^TFD_buttform; + +Procedure done_cb(ob : PFL_OBJECT; data : longint);cdecl; +begin + halt(0); +end; + +procedure bw_cb(ob : PFL_OBJECT; data : longint);cdecl; + +const + bws : array [0..7] of longint = (-4,-3,-2,-1,1,2,3,4); +var + n : longint; + fdui : PFD_BUTTform; + +begin + n:=fl_get_choice(ob)-1; + fdui:=ob^.form^.fdui; + fl_freeze_form(ob^.form); + fl_set_object_bw(fdui^.backface, bws[n]); + fl_set_object_bw(fdui^.objsgroup, bws[n]); + { redrawing the backface wipes out the done button. Redraw it } + fl_redraw_object(fdui^.done); + fl_unfreeze_form(ob^.form); +end; + + +function create_form_buttform : PFD_buttform; + +var + obj : PFL_OBJECT; + fdui : PFD_buttform; + +begin + new(fdui); + fdui^.buttform := fl_bgn_form(FL_NO_BOX, 290, 260); + obj := fl_add_box(FL_UP_BOX,0,0,290,260,''); + fdui^.backface := obj; + obj := fl_add_button(FL_NORMAL_BUTTON,185,215,90,30,'Done'); + fdui^.done := obj; + fl_set_object_callback(obj,PFL_CALLBACKPTR(@done_cb),0); + + fdui^.objsgroup := fl_bgn_group(); + obj := fl_add_frame(FL_ENGRAVED_FRAME,175,170,100,30,''); + fl_set_object_color(obj,FL_COL1,FL_GREEN); + obj := fl_add_round3dbutton(FL_PUSH_BUTTON,210,170,30,30,''); + fl_set_object_color(obj,FL_COL1,FL_GREEN); + obj := fl_add_bitmapbutton(FL_NORMAL_BUTTON,25,85,40,40,'bitmapbutton'); + fdui^.bbutt := obj ; + fl_set_object_color(obj,FL_COL1,FL_BLACK); + obj := fl_add_pixmapbutton(FL_NORMAL_BUTTON,25,25,40,40,'pixmapbutton'); + fdui^.pbutt := obj; + obj := fl_add_checkbutton(FL_RADIO_BUTTON,100,31,70,32,'Red'); + fl_set_object_color(obj,FL_COL1,FL_RED); + obj := fl_add_checkbutton(FL_RADIO_BUTTON,100,60,70,32,'Green'); + fl_set_object_color(obj,FL_COL1,FL_GREEN); + obj := fl_add_checkbutton(FL_RADIO_BUTTON,100,90,70,32,'Blue'); + fl_set_object_color(obj,FL_COL1,FL_BLUE); + obj := fl_add_lightbutton(FL_PUSH_BUTTON,20,170,92,30,'LightButton'); + fl_set_button(obj, 1); + obj := fl_add_roundbutton(FL_PUSH_BUTTON,200,35,75,25,'Red'); + fl_set_object_color(obj,FL_COL1,FL_RED); + obj := fl_add_roundbutton(FL_PUSH_BUTTON,200,64,75,25,'Green'); + fl_set_object_color(obj,FL_COL1,FL_GREEN); + obj := fl_add_roundbutton(FL_PUSH_BUTTON,200,93,75,25,'Blue'); + fl_set_object_color(obj,FL_COL1,FL_BLUE); + obj := fl_add_round3dbutton(FL_PUSH_BUTTON,180,170,30,30,''); + fl_set_object_color(obj,FL_COL1,FL_RED); + obj := fl_add_round3dbutton(FL_PUSH_BUTTON,240,170,30,30,''); + fl_set_object_color(obj,FL_COL1,FL_BLUE); + obj := fl_add_button(FL_PUSH_BUTTON,130,210,30,30,'go'); + fl_set_object_boxtype(obj,FL_OVAL3D_UPBOX); + fl_set_object_lstyle(obj,FL_BOLD_STYLE); + obj := fl_add_button(FL_NORMAL_BUTTON,20,210,90,30,'Button'); + fl_set_object_boxtype(obj,FL_ROUNDED3D_UPBOX); + obj := fl_add_choice(FL_NORMAL_CHOICE2,105,135,80,30,'BW'); + fdui^.bw_obj := obj; + fl_set_object_callback(obj,PFL_CALLBACKPTR(@bw_cb),0); + obj := fl_add_labelframe(FL_ENGRAVED_FRAME,190,25,85,100,'RoundButton'); + obj := fl_add_labelframe(FL_ENGRAVED_FRAME,90,25,90,100,'CheckButton'); + fl_end_group(); + + fl_end_form(); + + fdui^.buttform^.fdui := fdui; + create_form_buttform:=fdui; +end; + +var fd_buttform : PFD_buttform; + +begin + fl_initialize(@argc, argv, '', nil, 0); + fd_buttform := create_form_buttform; + + fl_set_pixmapbutton_file(fd_buttform^.pbutt,'crab45.xpm'); + fl_set_bitmapbutton_file(fd_buttform^.bbutt,'bm1.xbm'); + fl_addto_choice(fd_buttform^.bw_obj,' -4 | -3 | -2 | -1 | 1| 2| 3| 4'); + fl_set_choice(fd_buttform^.bw_obj,7); + + fl_show_form(fd_buttform^.buttform,FL_PLACE_CENTER,FL_FULLBORDER,'buttform'); + while (fl_do_forms<>nil) do ; +end. diff --git a/packages/xforms/examples/butttypes.pp b/packages/xforms/examples/butttypes.pp new file mode 100644 index 0000000000..0e1b27cbfa --- /dev/null +++ b/packages/xforms/examples/butttypes.pp @@ -0,0 +1,95 @@ +program butttypes; + +uses strings,xforms; + +type TFD_form0 = record + form0 : PFL_FORM; + vdata : pointer; + ldata : longint; + br : PFL_OBJECT; +end; +PFD_form0 = ^TFD_form0; + +{ callbacks for form form0 } +procedure button_cb(ob : PFL_OBJECT; data : longint);cdecl; +var + ui : PFD_form0; + buf : string [128]; + +begin + ui:=ob^.form^.fdui; + if (ob^.thetype = FL_HIDDEN_BUTTON ) then + begin + if (fl_show_question('Want to Quit ?', 1) = 1) then + halt(0); + end + else + begin + str (fl_get_button(ob),buf); + buf:=strpas(ob^ .thelabel)+'callback called from '+ buf+#0; + fl_addto_browser(ui^.br, @buf[1]); + end; +end; + +{ Form definition file generated with fdesign. } + + +function create_form_form0 : PFD_form0; +var + obj : PFL_OBJECT; + fdui : PFD_form0; + +begin + new(fdui); + fdui^.form0 := fl_bgn_form(FL_NO_BOX, 360, 300); + obj := fl_add_box(FL_UP_BOX,0,0,360,300,''); + obj := fl_add_button(FL_HIDDEN_BUTTON,0,0,360,300,''); + fl_set_object_callback(obj,PFL_CALLBACKPTR(@button_cb),0); + obj := fl_add_button(FL_INOUT_BUTTON,20,168,105,30,'InOutButton'); + fl_set_object_lstyle(obj,FL_BOLD_STYLE); + fl_set_object_callback(obj,PFL_CALLBACKPTR(@button_cb),0); + obj := fl_add_button(FL_NORMAL_BUTTON,20,15,105,30,'NormalButton'); + fl_set_object_lstyle(obj,FL_BOLD_STYLE); + fl_set_object_callback(obj,PFL_CALLBACKPTR(@button_cb),0); + obj := fl_add_button(FL_PUSH_BUTTON,20,53,105,30,'PushButton'); + fl_set_object_lstyle(obj,FL_BOLD_STYLE); + fl_set_object_callback(obj,PFL_CALLBACKPTR(@button_cb),0); + obj := fl_add_button(FL_TOUCH_BUTTON,20,130,105,30,'TouchButton'); + fl_set_object_lstyle(obj,FL_BOLD_STYLE); + fl_set_object_callback(obj,PFL_CALLBACKPTR(@button_cb),0); + obj := fl_add_button(FL_MENU_BUTTON,20,206,105,30,'MenuButton'); + fl_set_object_lstyle(obj,FL_BOLD_STYLE); + fl_set_object_callback(obj,PFL_CALLBACKPTR(@button_cb),0); + obj := fl_add_button(FL_RETURN_BUTTON,20,244,105,30,'ReturnButton'); + fl_set_object_lstyle(obj,FL_BOLD_STYLE); + fl_set_object_callback(obj,PFL_CALLBACKPTR(@button_cb),0); + obj := fl_add_button(FL_RADIO_BUTTON,20,91,105,30,'RadioButton'); + fl_set_object_lstyle(obj,FL_BOLD_STYLE); + fl_set_object_callback(obj,PFL_CALLBACKPTR(@button_cb),0); + obj := fl_add_browser(FL_NORMAL_BROWSER,135,15,210,260,''); + fdui^.br :=obj; + fl_set_object_callback(obj,PFL_CALLBACKPTR(@button_cb),0); + fl_end_form(); + + fl_adjust_form_size(fdui^.form0); + fdui^.form0^.fdui := fdui; + + create_form_form0:= fdui; +end; + + + + +var + fd_form0 : PFD_form0; + +begin + fl_initialize(@argc, argv, '', nil, 0); + fd_form0 := create_form_form0; + + { fill-in form initialization code } + + { show the first form } + fl_show_form(fd_form0^.form0,FL_PLACE_CENTER,FL_FULLBORDER,'form0'); + fl_do_forms(); +end. diff --git a/packages/xforms/examples/canvas.pp b/packages/xforms/examples/canvas.pp new file mode 100644 index 0000000000..ea70d04827 --- /dev/null +++ b/packages/xforms/examples/canvas.pp @@ -0,0 +1,242 @@ +{ Demo showing the use of canvas object. V0.75 + } + +uses xforms,x,xlib; + +{*** Forms and Objects ***} + +type TFD_canvasform = record + canvasform : PFL_FORM; + vdata : pointer; + ldata : longint; + canvas, + br, + keyboard, + mouse, + done, + misc, + menu : PFL_OBJECT; +end; + +PFD_canvasform = ^TFD_canvasform; + + +Var canvasGC : TGC; + + +function canvas_expose(ob : PFL_OBJECT;win : TWindow; w,h : longint; ev : PXEvent;d : Pointer) : longint;cdecl; + +var ui : PFD_CANVASFORM; + +begin + ui := d; + XFillRectangle(PDisplay(fl_display), TDRAWABLE(win), canvasGC, 0, 0,cardinal( w), cardinal(h)); + fl_addto_browser(ui^.br, 'Expose'); +end; + + +function canvas_key(ob : PFL_OBJECT; win : TWindow; w,h : Longint; ev : PXEvent; d: pointer) : longint;cdecl; +var + ui :PFD_canvasform; + buf : string[128]; + + +begin + ui := d; + str (XKeycodeToKeysym(PDisplay(fl_display),ev^.xkey.keycode, TkeyCode(#0)),buf); + buf:= 'KeyPress: keysym='+buf+#0; + fl_addto_browser(ui^.br, @buf[1]); + return 0; +end; + + +function canvas_but(ob : PFL_OBJECT; win : TWindow; w,h : longint, ev : PXEvent;d : pointer) : longint;cdecl; + +var + ui : PFD_canvasform; + buf : string[128]; + +begin + ui := d; + + str(ev^.xbutton.button,buf); + if ev^.eventtype=ButtonPress then + buf:='Press '+buf + else + buf:='Release '+buf; + buf:='Button '+buf+#0; + fl_addto_browser(ui^.br, @buf[1]); +end; + +function canvas_misc(ob : PFL_OBJECT; win : TWindow; w,h : longint, ev : PXEvent;d : pointer) : longint;cdecl; + +var + + ui : PFD_canvasform; +begin + ui := d; + if ev^.xcrossing.eventtype=EnterNotify then + fl_addto_browser(ui^.br, 'Enter Canvas') + else + fl_addto_browser(ui^.br, 'Leave Canvas') +end; + +procedure init_canvas(FD_canvasform *fdui) + +begin + fl_add_canvas_handler(fdui^.canvas, Expose, PFL_HANDLE_CANVAS(@canvas_expose), fdui); + fl_add_canvas_handler(fdui^.canvas, KeyPress, PFL_HANDLE_CANVAS(@canvas_key), fdui); + fl_add_canvas_handler(fdui^.canvas, ButtonPress,PFL_HANDLE_CANVAS(@canvas_but),fdui); + fl_add_canvas_handler(fdui^.canvas, ButtonRelease,PFL_HANDLE_CANVAS(canvas_but),fdui); + fl_set_button(fdui^.mouse, 1); + fl_set_button(fdui^.keyboard, 1); + canvasGC := XCreateGC(fl_get_display(),fl_state[fl_vmode].trailblazer,0,0); + XSetForeground(fl_get_display(), canvasGC, fl_get_flcolor(FL_BLACK)); +end; + +var +fd_canvasform : PFD_canvasform; + +procedure sensitive_setting(ob : PFL_OBJECT ; event : longint); cdecl; + +var + hc : PFL_HANDLE_CANVAS; +begin + if event=Keypress then + hc := PFL_HANDLE_CANVAS(@canvas_key) + else + hc := PFL_HANDLE_CANVAS(@canvas_but); + + if(fl_get_button(ob)<>0) then + fl_add_canvas_handler(fd_canvasform^.canvas, event, hc, fd_canvasform); + else + fl_remove_canvas_handler(fd_canvasform^.canvas, event, hc); +end; + +procedure disable_it(ob : PFL_OBJECT; data : longint);cdecl; + +begin + if fl_get_button(ob)<>0 then + fl_deactivate_object(fd_canvasform^.canvas) + else + fl_activate_object (fd_canvasform^.canvas); +end; + +procedure hide_it(ob : PFL_OBJECT; all : longint);cdecl; + + +begin + if(all<>0) then + begin + fl_hide_form(fd_canvasform^.canvasform); + fl_show_form(fd_canvasform^.canvasform, + FL_PLACE_CENTER, FL_TRANSIENT, 'canvas'); +{$ifdef nevertrue} + fl_remove_selected_xevent(fd_canvasform^.canvasform^.window, + OwnerGrabButtonMask); +{$endif } + end + else + begin + if(fd_canvasform^.canvas^.visible)<>0 then + begin + fl_hide_object(fd_canvasform^.canvas); + fl_set_object_label(ob,'ShowCanvas'); + end + else + begin + fl_show_object(fd_canvasform^.canvas); + fl_set_object_label(ob,'HideCanvas'); + end + end; +end; + +procedure misc_cb(ob : PFL_OBJECT; data : longint); cdecl; + +begin + if(fl_get_button(ob)<>0) then + begin + fl_add_canvas_handler(fd_canvasform^.canvas, EnterNotify, + PFL_HANDLE_CANVAS(@canvas_misc), fd_canvasform); + fl_add_canvas_handler(fd_canvasform^.canvas, LeaveNotify, + PFL_HANDLE_CANVAS(@canvas_misc), fd_canvasform); + end + else + begin + fl_remove_canvas_handler(fd_canvasform^.canvas, + EnterNotify, PFL_HANDLE_CANVAS(@canvas_misc)); + fl_remove_canvas_handler(fd_canvasform^.canvas, + LeaveNotify, PFL_HANDLE_CANVAS(@canvas_misc)); + end; +end; + +{*****************} +function create_form_canvasform : PFD_canvasform; +var + obj :=PFL_OBJECT; + fdui : PFD_canvasform; + +begin + new(fdui); + + fdui^.canvasform := fl_bgn_form(FL_NO_BOX, 450, 280); + obj := fl_add_box(FL_UP_BOX,0,0,450,280,''); + obj:= fl_add_canvas(FL_NORMAL_CANVAS,20,40,155,187,''); + fdui^.canvas := obj ; + obj := fl_add_browser(FL_NORMAL_BROWSER,188,40,152,187,''); + fdui^.br := obj ; + obj := fl_add_button(FL_PUSH_BUTTON,30,236,90,27,'Deactivate'); + fl_set_object_callback(obj,disable_it,0); + obj := fl_add_button(FL_NORMAL_BUTTON,120,236,90,27,'HideCanvas'); + fl_set_object_callback(obj, hide_it, 0); + obj := fl_add_button(FL_NORMAL_BUTTON,210,236,90,27,'HideForm'); + fl_set_object_callback(obj, hide_it, 1); + obj := fl_add_button(FL_NORMAL_BUTTON,300,236,90,27,'Done'); + fdui^.done := obj ; + obj := fl_add_text(FL_NORMAL_TEXT,130,10,120,20,'Canvas'); + fl_set_object_lsize(obj,FL_MEDIUM_SIZE); + fl_set_object_lalign(obj,FL_ALIGN_CENTER); + fl_set_object_lstyle(obj,FL_BOLD_STYLE); + obj:= fl_add_menu(FL_PULLDOWN_MENU, 20,10, 45,22,'Menu'); + fdui^.menu := obj ; + fl_set_object_shortcut(obj,'#m', 1); + fl_set_object_lstyle(obj, FL_BOLD_STYLE); + obj := fl_add_checkbutton(FL_PUSH_BUTTON,345,40,76,26,'Keyboard'); + fdui^.keyboard := obj ; + fl_set_object_color(obj,FL_COL1,FL_BLUE); + fl_set_object_callback(obj,sensitive_setting,KeyPress); + obj := fl_add_checkbutton(FL_PUSH_BUTTON,345,70,76,26,'Mouse'); + fdui^.mouse := obj ; + fl_set_object_color(obj,FL_COL1,FL_BLUE); + fl_set_object_callback(obj,sensitive_setting,ButtonPress); + obj := fl_add_checkbutton(FL_PUSH_BUTTON,345,100,74,26,'Enter/Leave'); + fdui^.misc := obj; + fl_set_object_color(obj,FL_COL1,FL_BLUE); + fl_set_object_callback(obj,misc_cb,ButtonPress); + fl_end_form(); + + create_form_canvasform :=fdui; +end; + + +begin + fl_set_border_width(-2); + + fl_initialize(@argc, argv, 'FormDemo', nil, 0); + fd_canvasform := create_form_canvasform; + + { fill-in form initialization code } + fl_set_object_dblbuffer(fd_canvasform^.br, 1); { looks better } + init_canvas (fd_canvasform); + + fl_addto_menu(fd_canvasform^.menu,'Item1|Item2|Item3|Item4'); + + fl_show_form(fd_canvasform^.canvasform, + FL_PLACE_FREE,FL_FULLBORDER,'canvasform'); +{$ifdef nevertrue} + fl_remove_selected_xevent(fd_canvasform^.canvasform^.window, + OwnerGrabButtonMask); +{$endif} + + while (fl_do_forms() <> fd_canvasform^.done) do ; +end. diff --git a/packages/xforms/examples/chartall.pp b/packages/xforms/examples/chartall.pp new file mode 100644 index 0000000000..1abd7b0ddb --- /dev/null +++ b/packages/xforms/examples/chartall.pp @@ -0,0 +1,82 @@ +program chartall; +{ Showing all different charts } + +{ Form definition file generated with fdesign. } +uses xforms; + +var + form : PFL_FORM; + + barchart, + linechart, + filledchart, + piechart, + specialpiechart, + exitbut, + horbarchart, + spikechart : PFL_OBJECT; + +procedure create_form_form; + +var + obj : PFL_OBJECT; + +begin + form := fl_bgn_form(FL_NO_BOX,940,360); + obj := fl_add_box(FL_UP_BOX,0,0,940,360,''); + obj := fl_add_chart(FL_BAR_CHART,20,20,210,140,'BAR_CHART'); + barchart := obj; + fl_set_object_boxtype(obj,FL_RSHADOW_BOX); + obj := fl_add_chart(FL_LINE_CHART,250,20,210,140,'LINE_CHART'); + linechart := obj ; + fl_set_object_boxtype(obj,FL_RSHADOW_BOX); + obj := fl_add_chart(FL_FILL_CHART,250,190,210,140,'FILL_CHART'); + filledchart := obj ; + fl_set_object_boxtype(obj,FL_RSHADOW_BOX); + obj := fl_add_chart(FL_PIE_CHART,480,190,210,140,'PIE_CHART'); + piechart := obj; + fl_set_object_boxtype(obj,FL_RSHADOW_BOX); + obj:= fl_add_chart(FL_SPECIALPIE_CHART,710,20,210,140,'SPECIALPIE_CHART'); + specialpiechart := obj ; + fl_set_object_boxtype(obj,FL_RSHADOW_BOX); + obj := fl_add_button(FL_NORMAL_BUTTON,750,260,140,30,'Exit'); + exitbut := obj; + obj:= fl_add_chart(FL_HORBAR_CHART,20,190,210,140,'HORBAR_CHART'); + horbarchart := obj; + fl_set_object_boxtype(obj,FL_RSHADOW_BOX); + obj:= fl_add_chart(FL_SPIKE_CHART,480,20,210,140,'SPIKE_CHART'); + spikechart := obj; + fl_set_object_boxtype(obj,FL_RSHADOW_BOX); + fl_end_form(); +end; + +{---------------------------------------} + +procedure fill_in(ob : PFL_OBJECT); + +var c : longint; + +begin + c := FL_BLACK+1; + fl_add_chart_value(ob,15.0,'item 1',c); inc(c); + fl_add_chart_value(ob,5.0,'item 2',c);inc(c); + fl_add_chart_value(ob,0.0,'item 3',c);inc(c); + fl_add_chart_value(ob,-10.0,'item 4',c);inc(c); + fl_add_chart_value(ob,25.0,'item 5',c);inc(c); + fl_add_chart_value(ob,12.0,'item 6',c);inc(c); +end; + +begin + + fl_initialize(@argc, argv, 'FormDemo', nil, 0); + create_form_form(); + fill_in(barchart); + fill_in(horbarchart); + fill_in(linechart); + fill_in(filledchart); + fill_in(spikechart); + fill_in(piechart); + fill_in(specialpiechart); + fl_show_form(form,FL_PLACE_CENTER,FL_TRANSIENT,'Charts'); + fl_do_forms(); +end. diff --git a/packages/xforms/examples/chartstrip.pp b/packages/xforms/examples/chartstrip.pp new file mode 100644 index 0000000000..f50b209c13 --- /dev/null +++ b/packages/xforms/examples/chartstrip.pp @@ -0,0 +1,121 @@ +{ A demo of a moving chart } +program chartstrip; + +uses xforms,xlib; + +var + func : longint; + xx : double; + step : double; + + form : PFL_FORM; + + chartobj,sinobj,exitbut,stepobj : PFL_OBJECT; + +procedure set_function(obj : PFL_OBJECT; arg : longint);cdecl; +begin + func := arg; + fl_clear_chart(chartobj); + xx := 0.0; +end; + +procedure set_step(obj : PFL_OBJECT; arg : longint);cdecl; + +begin + step := fl_get_slider_value(stepobj); +end; + +{***********************************************} + +procedure create_form_form; + +var obj : PFL_OBJECT; + +begin + form := fl_bgn_form(FL_NO_BOX,490,320); + obj := fl_add_box(FL_BORDER_BOX,0,0,490,320,''); + obj := fl_add_chart(FL_LINE_CHART,20,160,390,140,''); + chartobj := obj; + fl_set_object_dblbuffer(obj,1); + + fl_bgn_group(); + obj := fl_add_lightbutton(FL_RADIO_BUTTON,30,120,170,30,'sin(x)'); + sinobj := obj ; + fl_set_object_boxtype(obj,FL_BORDER_BOX); + fl_set_object_callback(obj,PFL_CALLBACKPTR(@set_function),1); + obj := fl_add_lightbutton(FL_RADIO_BUTTON,30,90,170,30,'sin(2x)*cos(x)'); + fl_set_object_boxtype(obj,FL_BORDER_BOX); + fl_set_object_callback(obj,PFL_CALLBACKPTR(@set_function),2); + obj := fl_add_lightbutton(FL_RADIO_BUTTON,30,60,170,30,'sin(2x)+cos(x)'); + fl_set_object_boxtype(obj,FL_BORDER_BOX); + fl_set_object_callback(obj,PFL_CALLBACKPTR(@set_function),3); + obj := fl_add_lightbutton(FL_RADIO_BUTTON,240,120,160,30,'sin(3x)+cos(x)'); + fl_set_object_boxtype(obj,FL_BORDER_BOX); + fl_set_object_callback(obj,PFL_CALLBACKPTR(@set_function),4); + obj := fl_add_lightbutton(FL_RADIO_BUTTON,240,90,160,30,'sin(x)^2 + cos(x)'); + fl_set_object_boxtype(obj,FL_BORDER_BOX); + fl_set_object_callback(obj,PFL_CALLBACKPTR(@set_function),5); + obj := fl_add_lightbutton(FL_RADIO_BUTTON,240,60,160,30,'sin(x)^3'); + fl_set_object_boxtype(obj,FL_BORDER_BOX); + fl_set_object_callback(obj,PFL_CALLBACKPTR(@set_function),6); + fl_end_group(); + + obj := fl_add_button(FL_NORMAL_BUTTON,150,20,140,30,'Exit'); + exitbut := obj; + fl_set_object_boxtype(obj,FL_BORDER_BOX); + obj:= fl_add_valslider(FL_VERT_SLIDER,430,20,40,280,''); + stepobj := obj ; + fl_set_object_boxtype(obj,FL_BORDER_BOX); + fl_set_object_callback(obj,PFL_CALLBACKPTR(@set_step),0); + fl_end_form; +end; + +{**********************************} + +function next_step : double; + +var res : double; + +begin + res := 0.0; + case func of + 1: res := sin(xx); + 2: res := sin(2*xx)*cos(xx); + 3: res := sin(2*xx)+cos(xx); + 4: res := sin(3*xx)+cos(xx); + 5: res := sin(xx)*sin(xx) + cos(xx); + 6: res := sin(xx)*sin(xx)*sin(xx); + end; + xx := xx+step; + next_step:=res; +end; + +function idle_cb (ex : PXEvent; d : pointer) : longint; +begin + fl_insert_chart_value(chartobj,1,next_step(),'',1); +end; + +var obj : PFL_OBJECT; + +begin + func:= 1; + xx:= 0.0; + step:= 0.15; + fl_flip_yorigin(); + fl_initialize(@argc, argv, 'FormDemo', nil, 0); + create_form_form(); + fl_set_chart_bounds(chartobj,-1.5,1.5); + fl_set_chart_maxnumb(chartobj,80); + fl_set_chart_autosize(chartobj,0); + fl_set_button(sinobj,1); + fl_set_slider_value(stepobj,0.15); + fl_set_slider_bounds(stepobj,0.0,0.4); +{$ifdef nevertrue} + fl_set_idle_delta(15); +{$endif } + fl_show_form(form,FL_PLACE_CENTER,FL_NOBORDER,'StripChart'); + repeat + fl_insert_chart_value(chartobj,1,next_step(),'',1); + obj := fl_check_forms(); + until obj = exitbut; +end. diff --git a/packages/xforms/examples/choice.pp b/packages/xforms/examples/choice.pp new file mode 100644 index 0000000000..8b06e68ef8 --- /dev/null +++ b/packages/xforms/examples/choice.pp @@ -0,0 +1,52 @@ +{ This demo shows the use of choice objects. } + +program choice; + +uses xforms; + + +var form : PFL_FORM; + sexobj,childobj,licenceobj,marriedobj,readyobj : PFL_OBJECT; + +procedure cb( ob : PFL_OBJECT; data : longint);cdecl; + +begin + Writeln ('CallBack: ', fl_get_choice(ob)); +end; + +procedure create_form; + +begin + form := fl_bgn_form(FL_NO_BOX,420,360); + fl_add_box(FL_UP_BOX,0,0,420,360,''); + fl_add_input(FL_NORMAL_INPUT,70,300,320,30,'Name'); + fl_add_input(FL_NORMAL_INPUT,70,260,320,30,'Address'); + fl_add_input(FL_NORMAL_INPUT,70,220,320,30,'City'); + fl_add_input(FL_NORMAL_INPUT,70,180,320,30,'Country'); + sexobj := fl_add_choice(FL_NORMAL_CHOICE,70,130,110,30,'Sex'); + childobj := fl_add_choice(FL_NORMAL_CHOICE,280,130,110,30,'Children'); + licenceobj := fl_add_choice(FL_NORMAL_CHOICE,280,80,110,30,'Licence'); + marriedobj := fl_add_choice(FL_DROPLIST_CHOICE,70,80,110,30,'Married'); + fl_set_object_callback(marriedobj, PFL_CALLBACKPTR(@cb),0); + readyobj := fl_add_button(FL_NORMAL_BUTTON,150,20,140,30,'Ready'); + fl_end_form; +end; + +var obj : PFL_OBJECT; + +begin + + fl_flip_yorigin; + fl_initialize(@argc, argv, 'FormDemo', nil, 0); + create_form; + fl_addto_choice(sexobj,'Male'); + fl_addto_choice(sexobj,'Female'); + fl_addto_choice(childobj,'Zero|One|Two|Three|Many'); + fl_addto_choice(licenceobj,'Yes'); + fl_addto_choice(licenceobj,'No'); + fl_addto_choice(marriedobj,'Yes'); + fl_addto_choice(marriedobj,'No'); + fl_show_form(form,FL_PLACE_CENTER,FL_NOBORDER,Nil); + while (obj <> readyobj) do obj := fl_do_forms; + fl_hide_form(form); +end. diff --git a/packages/xforms/examples/colbrowser.pp b/packages/xforms/examples/colbrowser.pp new file mode 100644 index 0000000000..4646a502ed --- /dev/null +++ b/packages/xforms/examples/colbrowser.pp @@ -0,0 +1,281 @@ +Program colbrowser; + +uses xforms,strings; + +Const MAX_RGB = 3000; + +var + cl : PFL_FORM; + rescol, dbobj, colbr, rs, gs, bs : PFL_OBJECT; + dbname : string; + infile : text; + +{ the RGB data file does not have a standard location on unix. } +{ You may need to edit this } + +const rgbfile = '/usr/lib/X11/rgb.txt'; + +type TRGBdb = record + r, g, b : longint; + end; + +var +rgbdb : array [0..MAX_RGB] of TRGBdb; +numcol : longint; + +procedure set_entry(i : longint); + +var + db : TRGBdb; + +begin + db := rgbdb[i-1]; + + fl_freeze_form(cl); + fl_mapcolor(FL_FREE_COL4+i, db.r, db.g, db.b); + fl_mapcolor(FL_FREE_COL4, db.r, db.g, db.b); + fl_set_slider_value(rs, db.r); + fl_set_slider_value(gs, db.g); + fl_set_slider_value(bs, db.b); + fl_redraw_object(rescol); + fl_unfreeze_form(cl); +end; + +procedure br_cb(ob : PFL_OBJECT; q :longint);cdecl; + +var r : longint; + +begin + r := fl_get_browser(ob); + if (r <= 0) then exit; + set_entry(r - 1); +end; + +{ slow but straightforward } +function stripsp (s : string) : string; + +var temp : string; + i : longint; +begin + temp:=''; + for i:=1 to length(s) do + if pos(s[i],'0987654321')<>0 then temp:=temp+s[i]; + stripsp:=temp; +end; + + +function read_entry(Var r,g,b : longint;var name : string) : longint; + +var + n : longint; + buf,temp : string; + code : word; + + +begin + readln (infile,buf); + if buf[1]='!' then exit(0); + temp:=stripsp(copy(buf,1,4));delete(buf,1,4); + val (temp,r,code); + if code<>0 then exit(0); + temp:=stripsp(copy(buf,1,4));delete(buf,1,4); + val (temp,g,code); + if code<>0 then exit(0); + temp:=stripsp(copy(buf,1,4));delete(buf,1,4); + val (temp,b,code); + if code<>0 then exit(0); + { strip leading spaces from name } + while (buf[code+1]=' ') or (buf[code+1]=#9) do inc(code); + if code<>0 then delete(buf,1,code); + name:=buf+#0; + read_entry:=1; +end; + + +function load_browser(fname : string) : longint; + +var buf : string; + r,g,b : Longint; + rr,gg,bb : string[3]; + +begin + assign (infile,fname); +{$i-} + reset(infile); +{$i+} + if ioresult<>0 then + begin + fname:=fname+#0; + fl_show_alert('Load', @fname[1], 'Can''t open', 0); + exit(0); + end; + + fl_freeze_form(cl); + numcol:=-1; + while not eof(infile) do + begin + if read_entry(r, g, b, buf)<>0 then + begin + inc(numcol); + rgbdb[numcol].r := r; + rgbdb[numcol].g := g; + rgbdb[numcol].b := b; + str (r,rr); if length(rr)<3 then rr:=copy(' ',1,3-length(rr))+rr; + str(g,gg);if length(gg)<3 then gg:=copy(' ',1,3-length(gg))+gg; + str(b,bb);if length(bb)<3 then bb:=copy(' ',1,3-length(bb))+bb; + buf:='('+rr+' '+gg+' '+bb+') '+buf; + fl_addto_browser(colbr, @buf[1]); + end; + end; + close(infile); + fl_set_browser_topline(colbr, 1); + fl_select_browser_line(colbr, 1); + set_entry(0); + fl_unfreeze_form(cl); + load_browser:=1; +end; + +function search_entry(r,g,b : Longint) : Longint; + +var i, j, diffr, diffg, diffb,diff, mindiff : longint; + +begin + mindiff := 1 shl 25; + J:=0; + i:=0; + for i:=0 to numcol do + begin + diffr := abs(r - rgbdb[i].r); + diffg := abs(g - rgbdb[i].g); + diffb := abs(b - rgbdb[i].b); + diff := round((3.0 * diffr) + + (5.9 * diffg) + + (1.1 * diffb)); + if (mindiff > diff) then + begin + mindiff := diff; + j := i; + end; + end; + search_entry:= j; +end; + +procedure search_rgb(ob : PFL_OBJECT; q : longint);cdecl; + +var r, g, b, i,top : longint; + +begin + top := fl_get_browser_topline(colbr); + r := round(fl_get_slider_value(rs)); + g := round(fl_get_slider_value(gs)); + b := round(fl_get_slider_value(bs)); + + fl_freeze_form(cl); + fl_mapcolor(FL_FREE_COL4, r, g, b); + fl_redraw_object(rescol); + i := search_entry(r, g, b); + { change topline only if necessary } + if (i < top) or (i > (top+15)) then + fl_set_browser_topline(colbr, i-8); + fl_select_browser_line(colbr, i + 1); + fl_unfreeze_form(cl); +end; + +{ change database } +procedure db_cb(ob : PFL_OBJECT; q : longint);cdecl; + +var p: pchar; + buf : string; + +begin + p := fl_show_input('Enter New Database Name', @dbname[1]); + buf:=strpas(p)+#0; + if buf=dbname then exit; + + if (load_browser(buf)<>0) then + dbname:=buf + else + fl_set_object_label(ob, @dbname[1]); +end; + +procedure done_cb (ob : PFL_OBJECT; q : longint);cdecl; +begin + halt(0); +end; + +procedure create_form_cl; +var + obj : PFL_OBJECT; + +begin + if (cl<>nil) then exit; + cl := fl_bgn_form(FL_NO_BOX, 330, 385); + obj := fl_add_box(FL_UP_BOX, 0, 0, 330, 385, ''); + fl_set_object_color(obj, FL_INDIANRED, FL_COL1); + obj := fl_add_box(FL_NO_BOX, 40, 10, 250, 30, 'Color Browser'); + fl_set_object_lcol(obj, FL_RED); + fl_set_object_lsize(obj, FL_HUGE_SIZE); + fl_set_object_lstyle(obj, FL_BOLD_STYLE + FL_SHADOW_STYLE); + obj := fl_add_button(FL_NORMAL_BUTTON, 40, 50, 250, 25, ''); + dbobj := obj ; + fl_set_object_boxtype(obj, FL_BORDER_BOX); +{ if fl_get_visual_depth()=1 then + fl_set_object_color(obj, FL_WHITE,FL_INDIANRED) + else + fl_set_object_color(obj, FL_INDIANRED, FL_INDIANRED); +} + fl_set_object_callback(obj, PFL_CALLBACKPTR(@db_cb), 0); + + obj:= fl_add_valslider(FL_VERT_FILL_SLIDER, 225, 130, 30, 200, ''); + rs := obj; + fl_set_object_color(obj, FL_INDIANRED, FL_RED); + fl_set_slider_bounds(obj, 0, 255); + fl_set_slider_precision(obj, 0); + fl_set_object_callback(obj, PFL_CALLBACKPTR(@search_rgb), 0); + fl_set_slider_return(obj, 0); + obj:= fl_add_valslider(FL_VERT_FILL_SLIDER, 255, 130, 30, 200, ''); + gs := obj ; + fl_set_object_color(obj, FL_INDIANRED, FL_GREEN); + fl_set_slider_bounds(obj, 0.0, 255.0); + fl_set_slider_precision(obj, 0); + fl_set_object_callback(obj, PFL_CALLBACKPTR(@search_rgb), 1); + fl_set_slider_return(obj, 0); + obj := fl_add_valslider(FL_VERT_FILL_SLIDER, 285, 130, 30, 200, ''); + bs := obj; + fl_set_object_color(obj, FL_INDIANRED, FL_BLUE); + fl_set_slider_bounds(obj, double(0.0), double(255.0)); + fl_set_slider_precision(obj, 0); + fl_set_object_callback(obj, PFL_CALLBACKPTR(@search_rgb), 2); + fl_set_slider_return(obj, 0); + obj := fl_add_browser(FL_HOLD_BROWSER, 10, 90, 205, 240, ''); + colbr := obj ; + fl_set_browser_fontstyle(obj, FL_FIXED_STYLE); + fl_set_object_callback(obj, PFL_CALLBACKPTR(@br_cb), 0); + + obj := fl_add_button(FL_NORMAL_BUTTON, 135, 345, 80, 30, 'Done'); + fl_set_object_callback(obj, PFL_CALLBACKPTR(@done_cb), 0); + obj := fl_add_box(FL_FLAT_BOX, 225, 90, 90, 35, ''); + rescol := obj; + fl_set_object_color(obj, FL_FREE_COL4, FL_FREE_COL4); + fl_set_object_boxtype(obj, FL_BORDER_BOX); + + fl_end_form(); + {fl_scale_form (cl, 1.1, 1.0);} +end; + +begin + fl_initialize(@argc, argv, 'FormDemo', nil, 0); + cl:=nil; + create_form_cl(); + dbname:= rgbfile+#0; + if (load_browser(dbname)<>0) then + fl_set_object_label(dbobj, @dbname[1]) + else + fl_set_object_label(dbobj, 'None'); + + fl_set_form_minsize(cl, cl^.w , cl^.h); + fl_set_form_maxsize(cl, 2*cl^.w , 2*cl^.h); + fl_show_form(cl, FL_PLACE_FREE, FL_TRANSIENT, 'RGB Browser'); + + while (fl_do_forms()<>nil) do; +end. diff --git a/packages/xforms/examples/colsel.pp b/packages/xforms/examples/colsel.pp new file mode 100644 index 0000000000..0bac09556a --- /dev/null +++ b/packages/xforms/examples/colsel.pp @@ -0,0 +1,8 @@ +program colsel; + +uses xforms; + +begin + fl_initialize(@argc, argv, 'FormDemo', nil, 0); + fl_show_colormap(0); +end. diff --git a/packages/xforms/examples/colsel1.pp b/packages/xforms/examples/colsel1.pp new file mode 100644 index 0000000000..c0a21e2e33 --- /dev/null +++ b/packages/xforms/examples/colsel1.pp @@ -0,0 +1,47 @@ +program colsel1; + +uses xforms; + +var form : PFL_FORM; + topbox : PFL_OBJECT; + +procedure change_color(ob : PFL_OBJECT; col : longint);cdecl; + +begin + fl_set_object_color(topbox, col, col); +end; + +procedure makeform; + +var obj : PFL_OBJECT; + i,j : Integer; + st : string[32]; + +begin + form := fl_bgn_form(FL_UP_BOX,100,100); + for i:=0 to 7 do + for j:=0 to 7 do + begin + str (8*j+i,st); + st:=st+#0; + obj := fl_add_button(FL_RADIO_BUTTON,11+10*i,15+10*j,8,6,@st[1]); + fl_set_object_color(obj,8*j+i,8*j+i); + fl_set_object_lalign(obj,FL_ALIGN_BOTTOM); + fl_set_object_callback(obj,PFL_CALLBACKPTR(@change_color), (8*j+i)); + end; + topbox := fl_add_button(FL_NORMAL_BUTTON,30,5,40,8,'The Color Map'); + fl_set_object_lsize(topbox,FL_LARGE_SIZE); + fl_set_object_lstyle(topbox,FL_BOLD_STYLE); + fl_end_form; +end; + +var ret : PFL_OBJECT; + +begin + fl_initialize(@argc, argv, 'FormDemo', nil, 0); + makeform; + fl_scale_form(form, 4.0,4.0); + fl_show_form(form,FL_PLACE_FREE,FL_NOBORDER,NiL); + while ret<>topbox do ret := fl_do_forms(); + fl_hide_form(form); +end. diff --git a/packages/xforms/examples/counter.pp b/packages/xforms/examples/counter.pp new file mode 100644 index 0000000000..f5510ca4ef --- /dev/null +++ b/packages/xforms/examples/counter.pp @@ -0,0 +1,71 @@ +{ This is an example of the use of counters. +} +program counter; + +uses xforms; + +var +form : PFL_FORM; +result : PFL_OBJECT; +co : array[0..2] of PFL_OBJECT; + +procedure color_change(ob : PFL_OBJECT; data : longint);cdecl; + +var r,g,b : longint; + +begin + r := round(fl_get_counter_value(co[0])); + g := round(fl_get_counter_value(co[1])); + b := round(fl_get_counter_value(co[2])); + + fl_mapcolor(FL_FREE_COL1,r,g,b); + fl_redraw_object(result); +end; + +procedure create_form_form; +var + obj : PFL_OBJECT; + +begin + form := fl_bgn_form(FL_NO_BOX,480,200); + obj := fl_add_box(FL_UP_BOX,0,0,480,200,''); + obj := fl_add_box(FL_DOWN_BOX,310,20,150,160,''); + result := obj ; + fl_set_object_dblbuffer(result, 1); + obj := fl_add_counter(FL_NORMAL_COUNTER,20,20,270,30,''); + co[0] := obj; + fl_set_object_color(obj,FL_INDIANRED,FL_RED); + fl_set_object_callback(obj,PFL_CALLBACKPTR(@color_change),0); + obj:= fl_add_counter(FL_NORMAL_COUNTER,20,60,270,30,''); + co[1] := obj; + fl_set_object_color(obj,FL_PALEGREEN,FL_GREEN); + fl_set_object_callback(obj,PFL_CALLBACKPTR(@color_change),0); + obj := fl_add_counter(FL_NORMAL_COUNTER,20,100,270,30,''); + co[2] := obj ; + fl_set_object_color(obj,FL_SLATEBLUE,FL_BLUE); + fl_set_object_callback(obj,PFL_CALLBACKPTR(@color_change),0); + obj := fl_add_button(FL_NORMAL_BUTTON,100,150,110,30,'Exit'); + fl_end_form(); +end; + +var i : longint; + +begin + fl_initialize(@argc, argv, 'FormDemo', nil, 0); + create_form_form(); + fl_set_object_color(result,FL_FREE_COL1,FL_FREE_COL1); + + for i:=0 to 2 do + begin + fl_set_counter_bounds(co[i],0.0,255.0); + fl_set_counter_step(co[i],1.0,10.0); + fl_set_counter_precision(co[i],0); + fl_set_counter_return(co[i],1); + end; + + fl_call_object_callback(co[0]); + + fl_show_form(form,FL_PLACE_CENTER,FL_NOBORDER,'Counter'); + fl_do_forms(); + +end. diff --git a/packages/xforms/examples/crab.xpm b/packages/xforms/examples/crab.xpm new file mode 100644 index 0000000000..fb936af0d2 --- /dev/null +++ b/packages/xforms/examples/crab.xpm @@ -0,0 +1,38 @@ +const +crab45 : array[0..34] of pchar = ( +'28 28 6 2 ', +'. c None s s_SkyBlue ', +'x c orange s s_orange ', +'* c #ff72c2 s s_#ff72c2 ', +'+ c SteelBlue s s_SteelBlue ', +'G c black s s_black ', +'a c LightGrey s s_LightGrey ', +'. . . . . . . . . . * * * * * * * . . . . . . . . . . . ', +'. . . . . . . . * x x x x x x x * . . . . . . . . . . . ', +'. . . . . . . * * * * * * * x x * . . . . . . . . . . . ', +'. . . . . . . . . . . . . * x x x * . . . . . . . . . . ', +'. . . . . . . . . . * x x x x * x x . . . . . . . . . . ', +'. . . . . . . . + + * * * * * * * x x . . . . . . . . . ', +'. . . . . . . . . . . . . . . . . * x x . . . . . * . . ', +'. . * . . . . . . . . . . . . . . . * x . . * * x x . . ', +'. * * . . + . . . . . . + + x x + * * x * * x x x + . . ', +'. x * . . + . . . . . . . . + x + * x x x x x + + . . . ', +'* x * . * * . . . . . . + . + x * * x x x * * . . . . . ', +'* x * . x * . . . . . + x + + x x x x x x * * . . * * * ', +'* x * . x * . . + . + x x x x x x x x x x * * * * x x x ', +'* x * * x * . . + . . + x x x x x x x x x * * x x x G G ', +'* x x x x * . . x + + + x x x x x x x x x x x * * G G . ', +'* x x x * * . . x x x x x x x x x x x x x x x * * G G . ', +'* * * x . * . . + + * x x x x x x x x x x x x * * G G . ', +'. . . * . x * . * * * x x x x x x x x x x x x x * * * * ', +'. . . . . x x * * x x x x x x x x x x x x x x * x x x x ', +'. . . . . . x x x x x x x x x x x x x x x x * * G G G x ', +'. . . . . . . . * x x x x x x x x x x x x x * * G G + . ', +'. . . . . . . . * x * * * * x x x x x x x * * * G G . . ', +'. . . . . . . * x x * * * * x x x x x * * * * * * G G . ', +'. . . . . . . * x + . . * x * * * x * * * * * G G G G . ', +'. . . . . . . x x + . . * x * * * * x G G G * G G G . . ', +'. . . . . . * x + . . * x x G G G * x G G G G G . . . . ', +'. . . . . . . . . . . * x G G G G * x G + . G G . . . . ', +'. . . . . . . . . . . * x G . . . * x x . . . . . . . . ' +) ; diff --git a/packages/xforms/examples/crab45.xpm b/packages/xforms/examples/crab45.xpm new file mode 100644 index 0000000000..a76eea71d1 --- /dev/null +++ b/packages/xforms/examples/crab45.xpm @@ -0,0 +1,38 @@ +const +crab45 : array[0..35] of pchar = +'28 28 6 2 ', +'. c None s s_SkyBlue ', +'x c orange s s_orange ', +'* c #ff72c2 s s_#ff72c2 ', +'+ c SteelBlue s s_SteelBlue ', +'G c black s s_black ', +'a c LightGrey s s_LightGrey ', +'. . . . . . . . . . * * * * * * * . . . . . . . . . . . ', +'. . . . . . . . * x x x x x x x * . . . . . . . . . . . ', +'. . . . . . . * * * * * * * x x * . . . . . . . . . . . ', +'. . . . . . . . . . . . . * x x x * . . . . . . . . . . ', +'. . . . . . . . . . * x x x x * x x . . . . . . . . . . ', +'. . . . . . . . + + * * * * * * * x x . . . . . . . . . ', +'. . . . . . . . . . . . . . . . . * x x . . . . . * . . ', +'. . * . . . . . . . . . . . . . . . * x . . * * x x . . ', +'. * * . . + . . . . . . + + x x + * * x * * x x x + . . ', +'. x * . . + . . . . . . . . + x + * x x x x x + + . . . ', +'* x * . * * . . . . . . + . + x * * x x x * * . . . . . ', +'* x * . x * . . . . . + x + + x x x x x x * * . . * * * ', +'* x * . x * . . + . + x x x x x x x x x x * * * * x x x ', +'* x * * x * . . + . . + x x x x x x x x x * * x x x G G ', +'* x x x x * . . x + + + x x x x x x x x x x x * * G G . ', +'* x x x * * . . x x x x x x x x x x x x x x x * * G G . ', +'* * * x . * . . + + * x x x x x x x x x x x x * * G G . ', +'. . . * . x * . * * * x x x x x x x x x x x x x * * * * ', +'. . . . . x x * * x x x x x x x x x x x x x x * x x x x ', +'. . . . . . x x x x x x x x x x x x x x x x * * G G G x ', +'. . . . . . . . * x x x x x x x x x x x x x * * G G + . ', +'. . . . . . . . * x * * * * x x x x x x x * * * G G . . ', +'. . . . . . . * x x * * * * x x x x x * * * * * * G G . ', +'. . . . . . . * x + . . * x * * * x * * * * * G G G G . ', +'. . . . . . . x x + . . * x * * * * x G G G * G G G . . ', +'. . . . . . * x + . . * x x G G G * x G G G G G . . . . ', +'. . . . . . . . . . . * x G G G G * x G + . G G . . . . ', +'. . . . . . . . . . . * x G . . . * x x . . . . . . . . ' +) ; diff --git a/packages/xforms/examples/cursor.pp b/packages/xforms/examples/cursor.pp new file mode 100644 index 0000000000..61490b4be3 --- /dev/null +++ b/packages/xforms/examples/cursor.pp @@ -0,0 +1,89 @@ +Program cursor; + +{ Cursor routines demo. } + +uses xforms; + +{$i bm1.xbm} +{$i bm2.xbm} + +type +TFD_cursor = record + cursor : PFL_FORM; + vdata : Pointer; + ldata : Longint; + end; +PFD_Cursor = ^TFD_Cursor; + +var + bitmapcur : Longint; + + +function create_form_cursor : PFD_cursor; Forward; + +{ callbacks for form cursor } +procedure setcursor_cb(ob : PFL_Object; data : Longint); +begin + fl_set_cursor(FL_ObjWin(ob), data); +end; + +procedure setbitmapcursor_cb(ob : PFL_OBJECT ; data : Longint);cdecl; + +begin + if bitmapcur<>0 then + bitmapcur := longint(fl_create_bitmap_cursor(Pchar(@bm1_bits), Pchar(@bm2_bits), + 16, 16, 8 ,8 )); + {bm1_width, bm1_height, bm1_width/2, bm1_height/2);} + fl_set_cursor(FL_ObjWin(ob), bitmapcur); +end; + + +Procedure done_cb (ob : PFL_OBJECT; data : Longint);cdecl; +begin + Halt(0); +end; + + +Function create_form_cursor : PFD_cursor; + +var + obj : PFL_OBJECT; + fdui : PFD_cursor; + +begin + new(fdui); + + fdui^.cursor := fl_bgn_form(FL_NO_BOX, 325, 175); + obj := fl_add_box(FL_UP_BOX,0,0,325,175,''); + obj := fl_add_frame(FL_EMBOSSED_FRAME,10,10,305,120,''); + obj := fl_add_button(FL_NORMAL_BUTTON,20,20,65,30,'Hand'); + fl_set_object_callback(obj,PFL_CALLBACkPTR(@setcursor_cb),XC_hand2); + obj := fl_add_button(FL_NORMAL_BUTTON,250,140,60,25,'Done'); + fl_set_object_callback(obj,PFL_CALLBACkPTR(@done_cb),0); + obj := fl_add_button(FL_NORMAL_BUTTON,95,20,65,30,'Watch'); + fl_set_object_callback(obj,PFL_CALLBACkPTR(@setcursor_cb),XC_watch); + obj := fl_add_button(FL_NORMAL_BUTTON,170,20,65,30,'Invisible'); + fl_set_object_callback(obj,PFL_CALLBACkPTR(@setcursor_cb),FL_INVISIBLE_CURSOR); + obj := fl_add_button(FL_NORMAL_BUTTON,90,70,140,50,'DefaultCursor'); + fl_set_button_shortcut(obj,'Dd#d',1); + fl_set_object_callback(obj,PFL_CALLBACkPTR(@setcursor_cb),FL_DEFAULT_CURSOR); + obj := fl_add_button(FL_NORMAL_BUTTON,245,20,65,30,'BitmapCur'); + fl_set_object_callback(obj,PFL_CALLBACkPTR(@setbitmapcursor_cb),0); + fl_end_form; + + create_form_cursor:= fdui; +end; + +var fd_cursor : PFD_cursor ; + +Begin + + fl_set_border_width(-2); + fl_initialize(@argc, argv, 'FormDemo', nil, 0); + fd_cursor := create_form_cursor; + + { fill-in form initialization code } + + fl_show_form(fd_cursor^.cursor,FL_PLACE_CENTER,FL_FULLBORDER,'cursor'); + fl_do_forms; +end. diff --git a/packages/xforms/examples/fbrowse.pp b/packages/xforms/examples/fbrowse.pp new file mode 100644 index 0000000000..7a2aa20b08 --- /dev/null +++ b/packages/xforms/examples/fbrowse.pp @@ -0,0 +1,84 @@ +{ This demo shows the use of a browser and a file selector. +} +program fbrowse; + +uses xforms,strings; + +var +form : PFL_FORM; +br : PFL_OBJECT; + +procedure load_file(ob : PFL_OBJECT; arg : longint);cdecl; +var + fname : pchar; + +begin + fname := fl_show_fselector ('File To Load','','*.*',''); + if (fname = nil) then exit; + if (fl_load_browser(br,fname)<>0) then + fl_add_browser_line(br,'NO SUCH FILE!'); +end; + +procedure set_size(ob : PFL_OBJECT; arg : longint);cdecl; +begin + fl_set_browser_fontsize(br,arg); +end; + +procedure exit_program(ob : PFL_OBJECT; data : longint);cdecl; +begin + halt(0); +end; + +procedure create_form; +var + obj : PFL_OBJECT; + x,dx : TFL_Coord; + +begin + x := 20; + dx := 85; + + form := fl_bgn_form(FL_NO_BOX,590,610); + obj := fl_add_box(FL_UP_BOX,0,0,590,610,''); + obj := fl_add_browser(FL_NORMAL_BROWSER,20,20,550,530,''); + br := obj ; + obj := fl_add_button(FL_NORMAL_BUTTON,x,560,dx,30,'Load'); + fl_set_object_callback(obj,PFL_CALLBACKPTR(@load_file),0); + x :=x+ dx + 10; + obj := fl_add_lightbutton(FL_RADIO_BUTTON,x,560,dx,30,'Tiny'); + fl_set_object_callback(obj,PFL_CALLBACKPTR(@set_size),FL_TINY_SIZE); + x := x+dx; + obj := fl_add_lightbutton(FL_RADIO_BUTTON,x ,560,dx,30,'Small'); + fl_set_object_callback(obj,PFL_CALLBACKPTR(@set_size),FL_SMALL_SIZE); +{ Compiler crashes on the next one. Probably the comparing of the + constants.. + if (longint(FL_SMALL_SIZE)=longint(FL_BROWSER_FONTSIZE)) then + fl_set_button(obj, 1); +} x := x+dx; + obj := fl_add_lightbutton(FL_RADIO_BUTTON,x ,560,dx,30,'Normal'); + fl_set_object_callback(obj,PFL_CALLBACKPTR(@set_size),FL_NORMAL_SIZE); +{ idem here. + if FL_NORMAL_SIZE = FL_BROWSER_FONTSIZE then + fl_set_button(obj,1 ); +} x := x+dx; + obj := fl_add_lightbutton(FL_RADIO_BUTTON,x ,560,dx,30,'Large'); + fl_set_object_callback(obj,PFL_CALLBACKPTR(@set_size),FL_LARGE_SIZE); + + obj := fl_add_button(FL_NORMAL_BUTTON,470,560,100,30,'Exit'); + fl_set_object_callback(obj,PFL_CALLBACKPTR(@exit_program), 0); + fl_end_form(); +end; + +begin + fl_initialize(@argc, argv, 'FormDemo', nil, 0); + create_form(); + + fl_clear_browser(br); + fl_add_browser_line(br,'LOAD A FILE.'); + fl_set_browser_fontstyle(br,FL_FIXED_STYLE); + + fl_show_form(form,FL_PLACE_FREE,FL_FULLBORDER,'Browser'); + fl_do_forms(); + fl_hide_form(form); + fl_free_form(form); +end. diff --git a/packages/xforms/examples/fbrowse1.pp b/packages/xforms/examples/fbrowse1.pp new file mode 100644 index 0000000000..97cf0f2832 --- /dev/null +++ b/packages/xforms/examples/fbrowse1.pp @@ -0,0 +1,54 @@ +{ This demo shows the use of a browser and fl_call_object_callback. } +program fbrowse1; + +uses xforms; + +var + form : PFL_FORM; + br, but : PFL_OBJECT; + +procedure load_file(ob : PFL_OBJECT; arg : longint);cdecl; + +begin + if (fl_load_browser(br,fl_show_input('Filename to load',''))<>0) then + fl_add_browser_line(br,'NO SUCH FILE!'); +end; + +procedure set_size(ob : PFL_OBJECT; arg : Longint);cdecl; + +begin + fl_set_browser_fontsize(br, arg); +end; + + +var obj : PFL_OBJECT; + +begin + fl_initialize(@argc, argv, 'FormDemo', nil, 0); + + form := fl_bgn_form(FL_UP_BOX,130,100); + br := fl_add_browser(FL_NORMAL_BROWSER,5,5,95,90,''); + but := fl_add_button(FL_NORMAL_BUTTON,105,5,20,8,'Exit'); + obj := fl_add_button(FL_NORMAL_BUTTON,105,75,20,8,'Load'); + fl_set_object_callback(obj,PFL_CALLBACKPTR(@load_file),0); + obj := fl_add_lightbutton(FL_RADIO_BUTTON,105,60,20,8,'Small'); + fl_set_object_callback(obj,PFL_CALLBACKPTR(@set_size),FL_SMALL_SIZE); + fl_call_object_callback(obj); + fl_set_button(obj,1); + obj := fl_add_lightbutton(FL_RADIO_BUTTON,105,50,20,8,'Normal'); + fl_set_object_callback(obj,PFL_CALLBACKPTR(@set_size),FL_NORMAL_SIZE); + obj := fl_add_lightbutton(FL_RADIO_BUTTON,105,40,20,8,'Large'); + fl_set_object_callback(obj,PFL_CALLBACKPTR(@set_size),FL_LARGE_SIZE); + fl_end_form(); + + fl_clear_browser(br); + fl_add_browser_line(br,'LOAD A FILE.'); + fl_scale_form(form, 4.0, 4.0); + + fl_show_form(form,FL_PLACE_FREE,FL_FULLBORDER,'Browser'); + + repeat + obj := fl_do_forms; + until obj = but; + fl_hide_form(form); +end. diff --git a/packages/xforms/examples/fdial.pp b/packages/xforms/examples/fdial.pp new file mode 100644 index 0000000000..3cabce74db --- /dev/null +++ b/packages/xforms/examples/fdial.pp @@ -0,0 +1,72 @@ +{ This is an example of the use of filled dials, dial range + and dial direction. + } +Program fdial; + +uses xforms; + +var +form: PFL_FORM; +button, red, green, blue, redtext, greentext, bluetext, theresult : PFL_OBJECT; + +Procedure makeform; + +begin + form := fl_bgn_form(FL_UP_BOX,300,330); + button := fl_add_button(FL_NORMAL_BUTTON,45,15,210,45,'A Color Editor'); + fl_set_object_lsize(button,FL_LARGE_SIZE); + + red := fl_add_dial(FL_FILL_DIAL,30,240,60,60,'Red'); + fl_set_dial_bounds(red,0.0,255.0); + fl_set_dial_value(red,128.0); + fl_set_object_color(red,FL_DIAL_COL1, FL_RED); + redtext := fl_add_box(FL_DOWN_BOX,105,255,50,25,''); + + green := fl_add_dial(FL_FILL_DIAL,30,155,60,60,'Green'); + fl_set_dial_bounds(green,0.0,255.0); + fl_set_dial_value(green,128.0); + fl_set_dial_angles(green, 45.0, (360-45.0)); + fl_set_object_color(green,FL_DIAL_COL1, FL_GREEN); + greentext := fl_add_box(FL_DOWN_BOX,105,170,50,25,''); + + blue := fl_add_dial(FL_FILL_DIAL,30,70,60,60,'Blue'); + fl_set_dial_bounds(blue,0.0,255.0); + fl_set_dial_value(blue,128.0); + fl_set_object_color(blue,FL_DIAL_COL1,FL_BLUE); + fl_set_dial_direction(blue, FL_DIAL_CCW); + bluetext := fl_add_box(FL_DOWN_BOX,105,90,50,25,''); + + theresult := fl_add_box(FL_DOWN_BOX,180,70,90,245,''); + fl_set_object_color(theresult,FL_FREE_COL1,FL_FREE_COL1); + fl_set_object_dblbuffer(theresult,1); + fl_end_form; +end; + +var + ret : PFL_OBJECT; + r,g,b : longint; + st : string; + +begin + fl_initialize(@argc, argv, 'FormDemo', nil, 0); + makeform; + fl_show_form(form,FL_PLACE_MOUSE,FL_TRANSIENT,'A Form'); + repeat + r := round(fl_get_dial_value(red)+0.001); + g := round(fl_get_dial_value(green)+0.001); + b := round(fl_get_dial_value(blue)+0.001); + fl_mapcolor(FL_FREE_COL1,r,g,b); + fl_redraw_object(theresult); + str (r,st); + st:=st+#0; + fl_set_object_label(redtext,@st[1]); + str (g,st); + st:=st+#0; + fl_set_object_label(greentext,@st[1]); + str (b,st); + st:=st+#0; + fl_set_object_label(bluetext,@st[1]); + ret := fl_do_forms; + until (ret = button); + fl_hide_form(form); +end. diff --git a/packages/xforms/examples/flclock.pp b/packages/xforms/examples/flclock.pp new file mode 100644 index 0000000000..bdb3f30fc9 --- /dev/null +++ b/packages/xforms/examples/flclock.pp @@ -0,0 +1,47 @@ +{ Form definition file generated with fdesign. } +program flclock; + +uses xforms; + +var + fclock : PFL_FORM; + +procedure exit_cb (ob : PFL_OBJECT; q : longint);cdecl; +begin + halt(0); +end; + +procedure create_form_clock; +var + obj : PFL_OBJECT; + +begin + if (fclock<>nil) then exit; + + fclock := fl_bgn_form(FL_NO_BOX,500,350); + obj := fl_add_box(FL_UP_BOX,0,0,500,350,''); + + obj := fl_add_clock(FL_DIGITAL_CLOCK,190,20,140,30,''); + fl_set_object_boxtype(obj,FL_ROUNDED_BOX); + fl_set_object_color(obj,FL_COL1,FL_BLACK); + fl_set_object_lsize(obj,FL_MEDIUM_SIZE); + fl_set_object_lstyle(obj,FL_BOLD_STYLE); + + obj := fl_add_clock(FL_ANALOG_CLOCK,30,70,220,200,''); + fl_set_object_boxtype(obj,FL_UP_BOX); + + obj := fl_add_clock(FL_ANALOG_CLOCK,260,70,220,200,''); + fl_set_object_boxtype(obj,FL_OVAL_BOX); + obj := fl_add_button(FL_NORMAL_BUTTON,380,300,100,30,'Exit'); + fl_set_object_callback(obj, PFL_CALLBACKPTR(@exit_cb), 0); + fl_end_form; +end; + +begin + fl_initialize(@argc, argv, 'FormDemo', nil, 0); + + create_form_clock(); + fl_set_form_dblbuffer(fclock, 1); + fl_show_form(fclock, FL_PLACE_CENTER,FL_TRANSIENT,'clocks'); + fl_do_forms(); +end. diff --git a/packages/xforms/examples/fonts.pp b/packages/xforms/examples/fonts.pp new file mode 100644 index 0000000000..776ebbe440 --- /dev/null +++ b/packages/xforms/examples/fonts.pp @@ -0,0 +1,107 @@ +{* Demo, showing ther different fonts in the different sizes. *} +program fonts; + +uses xforms; + +type +TFD_fontsform = record + fontsform : PFL_FORM; + fontobj, + sizeobj, + textobj : PFL_OBJECT; + vdata : pointer; + ldata : longint; +end; +PFD_fontsform=^TFD_fontsform; + +var ui : PFD_fontsform; + +procedure done_cb(obj : PFL_OBJECT; arg : longint);cdecl; +begin + halt(0); +end; + +procedure style_cb(obj : PFL_OBJECT; arg : Longint);cdecl; +begin + fl_set_object_lstyle(ui^.textobj, fl_get_browser(obj) - 1); +end; + +procedure size_cb(obj : PFL_OBJECT; arg : longint); cdecl; +begin + case fl_get_browser(obj) of + 1: fl_set_object_lsize(ui^.textobj,8); + 2: fl_set_object_lsize(ui^.textobj,10); + 3: fl_set_object_lsize(ui^.textobj,11); + 4: fl_set_object_lsize(ui^.textobj,12); + 5: fl_set_object_lsize(ui^.textobj,13); + 6: fl_set_object_lsize(ui^.textobj,14); + 7: fl_set_object_lsize(ui^.textobj,18); + 8: fl_set_object_lsize(ui^.textobj,24); + 9: fl_set_object_lsize(ui^.textobj,30); + end; +end; + +procedure addit(st : pchar); +begin + fl_add_browser_line(ui^.fontobj,st); +end; + + +function create_form_fontsform : PFD_fontsform; +var + obj : PFL_OBJECT ; + fdui : PFD_fontsform; + +begin + new(fdui); + + fdui^.fontsform := fl_bgn_form(FL_NO_BOX, 371, 296); + obj := fl_add_box(FL_FLAT_BOX,0,0,371,296,''); + fl_set_object_color(obj,FL_SLATEBLUE,FL_COL1); + obj := fl_add_browser(FL_HOLD_BROWSER,10,145,195,135,''); + fdui^.fontobj := obj; + fl_set_object_lalign(obj,FL_ALIGN_BOTTOM or FL_ALIGN_INSIDE); + fl_set_object_callback(obj,PFL_CALLBACKPTR(@style_cb),0); + obj := fl_add_browser(FL_HOLD_BROWSER,215,145,145,135,''); + fdui^.sizeobj := obj ; + fl_set_object_lalign(obj,FL_ALIGN_BOTTOM or FL_ALIGN_INSIDE); + fl_set_object_callback(obj,PFL_CALLBACKPTR(@size_cb),0); + obj:= fl_add_text(FL_NORMAL_TEXT,10,5,351,125,'The quick brown'#10'fox jumps over'#10'the lazy dog.'); + fdui^.textobj := obj ; + fl_set_object_boxtype(obj, FL_FRAME_BOX); + fl_set_object_lalign(obj, FL_ALIGN_CENTER); + obj := fl_add_button(FL_HIDDEN_BUTTON,0,0,370,140,'Button'); + fl_set_button_shortcut(obj,'^[qQ',1); + fl_set_object_callback(obj,PFL_CALLBACKPTR(@done_cb),0); + fl_end_form(); + + create_form_fontsform:= fdui; +end; + +begin + fl_set_border_width(-3); + + fl_initialize(@argc, argv, 'FormDemo', nil, 0); + ui := create_form_fontsform(); + fl_scale_form(ui^.fontsform, 1.1,1.2); + fl_set_object_dblbuffer(ui^.textobj,1); + fl_set_object_bw(ui^.textobj,5); + + fl_enumerate_fonts(PFL_ENUMERATEPTR(@addit), 1); + fl_select_browser_line(ui^.fontobj,1); + fl_addto_browser(ui^.sizeobj,'8 (tiny)'); + fl_addto_browser(ui^.sizeobj,'10 (small)'); + fl_addto_browser(ui^.sizeobj,'11 (scaled)'); + fl_addto_browser(ui^.sizeobj,'12 (normal)'); + fl_addto_browser(ui^.sizeobj,'13 (scaled)'); + fl_addto_browser(ui^.sizeobj,'14 (medium)'); + fl_addto_browser(ui^.sizeobj,'18 (large)'); + fl_addto_browser(ui^.sizeobj,'24 (Huge)'); + fl_addto_browser(ui^.sizeobj,'30 (scaled)'); + fl_select_browser_line(ui^.sizeobj,2); + fl_set_object_lstyle(ui^.textobj,FL_NORMAL_STYLE); + fl_call_object_callback(ui^.fontobj); + fl_call_object_callback(ui^.sizeobj); + fl_show_form(ui^.fontsform,FL_PLACE_CENTER,FL_TRANSIENT,'Fonts'); + fl_do_forms(); +end. diff --git a/packages/xforms/examples/free1.pp b/packages/xforms/examples/free1.pp new file mode 100644 index 0000000000..dc8669d380 --- /dev/null +++ b/packages/xforms/examples/free1.pp @@ -0,0 +1,84 @@ +{ This demo is meant to demonstrate the use of a free + object in a form. +} +program free1; + +uses xforms; + +Const + onn : boolean = True; + dcol : longint = 1; + +var + cole : TFL_COLOR; + form : PFL_FORM; + obj : PFL_OBJECT; + i, j, depth, col : Longint; + dummy : cardinal; + + +{ The call back routine } +function handle_it(obj : PFL_OBJECT; event : longint; + mx,my : TFL_Coord; + key : longint; ev : pointer) : longint;cdecl; + +begin + exit; + case event of + FL_DRAW: + fl_rect(obj^.x,obj^.y,obj^.w,obj^.h, obj^.u_ldata); + FL_RELEASE: + onn := not(onn); + FL_STEP: + if (onn) then + begin + if (obj^.u_ldata = cole) then + dcol := -1; + if (obj^.u_ldata = FL_FREE_COL1) then + dcol := 1; + obj^.u_ldata := dcol; + fl_redraw_object(obj); + end; + end; + handle_it:=0; +end; + +procedure done(ob : PFL_OBJECT; data : longint); cdecl; + +begin + halt(0) +end; + +begin + fl_initialize(@argc, argv, 'FormDemo', nil, 0); + form := fl_bgn_form(FL_UP_BOX,400,400); + obj := fl_add_button(FL_NORMAL_BUTTON,320,20,40,30,'Exit'); + fl_set_object_callback(obj, PFL_CALLBACKPTR(@done), 0); + obj := fl_add_free(FL_CONTINUOUS_FREE,40,80,320,280 + ,'',PFL_HANDLEPTR(@handle_it)); + fl_end_form(); + depth := fl_get_visual_depth; + { can't do it if less than 4 bit deep } + if depth=8 then writeln ('depth of 8'); + if (depth < 4) then + begin + writeln ('This Demo requires a depth of at least 4 bits'); + halt(1); + end; + cole := ((1 shl depth)-1); + if (cole > 64) then + cole := 64; + col := FL_FREE_COL1; +{ obj^.u_ldata := col; +} cole := cole+col; + i:=col; + while i<=cole do + begin + j := round(255 * (i - col) /(cole - col)); + dummy:=fl_mapcolor(i, j, j, j); + inc(i); + end; + + fl_show_form(form,FL_PLACE_CENTER,FL_NOBORDER,'Free Object'); + fl_do_forms(); +end. diff --git a/packages/xforms/examples/goodies.pp b/packages/xforms/examples/goodies.pp new file mode 100644 index 0000000000..eeca172c5e --- /dev/null +++ b/packages/xforms/examples/goodies.pp @@ -0,0 +1,49 @@ +Program goodies; + +{ This demo program uses the routines in the + goodies section, that help you create easy + forms in an even easier way. +} + +uses xforms,strings; + +var + choice : Longint; + str1,str2 : string[100]; + s : pchar; + +begin + fl_initialize(@argc, argv, 'FormDemo', nil, 0); + + fl_set_resource(FLOKLabel,'Go'); + + if (fl_show_question('Do you want bold font ?',1)<>0) then + fl_set_goodies_font(FL_BOLD_STYLE,FL_NORMAL_SIZE); + + fl_show_messages('This is a test program for the goodies of the forms library'); + + fl_show_alert('Alert', 'Alert form can be used to inform', + 'recoverable errors', 0); + + if (fl_show_question('Do you want to quit?', 0)<>0) then + halt(0); + + s:=fl_show_input('Give a string:',''); + if s<>nil then strcopy(@str1[1],s); + fl_show_message('You typed:','',@str1[1]); + choice := fl_show_choices('Pick a choice',3,'One','Two','Three',2); + case choice of + 1: fl_show_message('You typed: One','',''); + 2: fl_show_message('You typed: Two','',''); + 3: fl_show_message('You typed: Three','',''); + else + begin + fl_show_message('An error occured!','',''); + end + end; + str1:='<Cancel>'#0; + s:=fl_show_input('Give another string:',@str1[1]); + if s<>nil then s:=@str1[1]; + fl_show_message('You typed:','',s); + fl_show_messages('Good Bye'); +end. diff --git a/packages/xforms/examples/group.pp b/packages/xforms/examples/group.pp new file mode 100644 index 0000000000..83708cdb2a --- /dev/null +++ b/packages/xforms/examples/group.pp @@ -0,0 +1,226 @@ +program group; + +uses xforms; + +{$i porsche.xpm} +{$i nomail.xbm} +{$i bm1.xbm} + +Const NGROUP = 4; + +type TFD_objsform = record + objsform : PFL_Form; + vdata : Pointer; + ldata : longint; + bitbutton, + pixbutton, + bit, + pix, + chart, + quit, + menu, + choice, + browser, + xyplot : PFL_Object; + button,group : array [0..4] of PFL_OBJECT; +end; +PFD_objsform = ^TFD_objsform; + +var fd_objsform : PFD_objsform; + +{ callbacks for form objsform } +procedure show_group(ob : PFL_OBJECT;data: longint);cdecl; + +var i : longint; + +begin + for i := 0 to NGROUP do + if i=data then + fl_show_object(fd_objsform^.group[i]) + else + fl_hide_object(fd_objsform^.group[i]); +end; + +procedure init_gui(fd : PFD_objsform); + +const + x : array[0..5] of real = ( 0.0, 1.0, 2.0, 3.0, 4.0, 5.0 ); + y : array[0..5] of real = ( 5.5, 4.0, 4.5, 3.8, 4.0, 5.0 ); + labels: array[0..5] of pchar = ('Mon','Tue','Wed', 'Thur','Fri','Sat'); + +var + i : integer; + +begin + fl_addto_menu(fd^.menu,'One'#8'F1|Two'#8'F2|Three'#8'F3|Four'#8'F4'); + fl_addto_choice(fd^.choice,'Option1|Option2|Option3'); + + fl_set_pixmapbutton_data(fd^.pixbutton,porsche); + fl_set_pixmap_data(fd^.pix, porsche); + fl_set_bitmapbutton_data(fd^.bitbutton, bm1_width, bm1_height,pchar(@bm1_bits)); + fl_set_bitmap_data(fd^.bit, nomail_width, nomail_height, pchar(@nomail_bits)); + + fl_set_browser_fontsize(fd^.browser,FL_NORMAL_SIZE); + fl_addto_browser(fd^.browser,'browser line 1'#10'browser line 2'); + fl_addto_browser(fd^.browser,'browser line 3'#10'browser line 4'); + fl_addto_browser(fd^.browser,'browser line 5'#10'browser line 6'); + fl_addto_browser(fd^.browser,'browser line 7'#10'browser line 8'); + fl_addto_browser(fd^.browser,'browser line 9'#10'browser line 10'); + fl_addto_browser(fd^.browser,'browser line 11'#10'browser line 12'); + fl_addto_browser(fd^.browser,'browser line 13'#10'browser line 14'); + fl_addto_browser(fd^.browser,'browser line 15'#10'browser line 16'); + fl_addto_browser(fd^.browser,'browser line 17'#10'browser line 18'); + + for i := 0 to 6 do + fl_add_chart_value(fd^.chart,y[i],labels[i],i+1); + + fl_set_xyplot_data(fd^.xyplot,x,y,6,'','',''); + fl_add_xyplot_overlay(fd^.xyplot,1, x, y, 6, FL_RED); + fl_add_xyplot_text(fd^.xyplot,2.5,5.2,'Weekly Summary', + FL_ALIGN_CENTER,FL_BLUE); + fl_add_xyplot_text(fd^.xyplot, 3, 3.85, '@-22^.', FL_ALIGN_TOP, FL_RED); + + fl_set_xyplot_overlay_type(fd^.xyplot,1,FL_NORMAL_XYPLOT); + fl_set_xyplot_alphaxtics(fd^.xyplot,'Mon|Tue|Wed|Thu|Fri|Sat', nil); + fl_set_xyplot_ytics(fd^.xyplot,-1,-1); + fl_set_xyplot_linewidth(fd^.xyplot,0, 3); +end; + +function create_form_objsform : PFD_objsform; +var + obj : PFL_OBJECT; + fdui : PFD_objsform; + old_bw : Longint; + +begin + new(fdui); + old_bw := fl_get_border_width; + + fl_set_border_width(-3); + fdui^.objsform := fl_bgn_form(FL_NO_BOX, 456, 361); + obj := fl_add_box(FL_FLAT_BOX,0,0,456,361,''); + obj := fl_add_box(FL_UP_BOX,0,0,455,360,''); + obj := fl_add_box(FL_UP_BOX,0,0,456,70,''); + obj := fl_add_button(FL_RADIO_BUTTON,15,20,75,30,'Static'); + fdui^.button[0] := obj; + fl_set_object_lsize(obj,FL_NORMAL_SIZE); + fl_set_object_lstyle(obj,FL_TIMESBOLD_STYLE); + fl_set_object_callback(obj,PFL_CALLBACKPTR(@show_group),0); + obj := fl_add_button(FL_RADIO_BUTTON,90,20,75,30,'Button'); + fdui^.button[1] := obj; + fl_set_object_lsize(obj,FL_NORMAL_SIZE); + fl_set_object_lstyle(obj,FL_TIMESBOLD_STYLE); + fl_set_object_callback(obj,PFL_CALLBACKPTR(@show_group),1); + obj := fl_add_button(FL_RADIO_BUTTON,165,20,70,30,'Valuator'); + fdui^.button[2] := obj; + fl_set_object_lsize(obj,FL_NORMAL_SIZE); + fl_set_object_lstyle(obj,FL_TIMESBOLD_STYLE); + fl_set_object_callback(obj,PFL_CALLBACKPTR(@show_group),2); + obj := fl_add_button(FL_RADIO_BUTTON,235,20,70,30,'Input'); + fdui^.button[3] := obj; + fl_set_object_lsize(obj,FL_NORMAL_SIZE); + fl_set_object_lstyle(obj,FL_TIMESBOLD_STYLE); + fl_set_object_callback(obj,PFL_CALLBACKPTR(@show_group),3); + obj := fl_add_button(FL_RADIO_BUTTON,305,20,70,30,'Other'); + fdui^.button[4] := obj; + fl_set_object_lsize(obj,FL_NORMAL_SIZE); + fl_set_object_lstyle(obj,FL_TIMESBOLD_STYLE); + fl_set_object_callback(obj,PFL_CALLBACKPTR(@show_group),4); + obj := fl_add_box(FL_UP_BOX,0,70,456,291,''); + obj := fl_add_box(FL_DOWN_BOX,9,90,435,260,''); + + fdui^.group[2] := fl_bgn_group(); + obj := fl_add_text(FL_NORMAL_TEXT,260,140,80,30,'Text'); + fl_set_object_lalign(obj,FL_ALIGN_LEFT or FL_ALIGN_INSIDE); + obj := fl_add_slider(FL_HOR_BROWSER_SLIDER,60,120,170,25,''); + obj := fl_add_slider(FL_HOR_FILL_SLIDER,60,160,170,30,''); + fl_set_slider_value(obj, 0.54); + obj := fl_add_slider(FL_VERT_SLIDER,390,110,30,170,''); + fl_set_slider_value(obj, 0.48); + obj := fl_add_valslider(FL_VERT_SLIDER,350,110,30,170,''); + obj := fl_add_dial(FL_FILL_DIAL,50,220,90,70,''); + fl_set_object_color(obj,FL_COL1,FL_BLUE); + obj := fl_add_positioner(FL_NORMAL_POSITIONER,150,210,120,100,''); + obj := fl_add_counter(FL_NORMAL_COUNTER,300,300,130,30,''); + fl_end_group(); + + + fdui^.group[1] := fl_bgn_group(); + obj := fl_add_bitmapbutton(FL_NORMAL_BUTTON,60,250,50,40,''); + fdui^.bitbutton := obj; + obj := fl_add_pixmapbutton(FL_NORMAL_BUTTON,85,120,80,80,''); + fdui^.pixbutton := obj; + obj := fl_add_button(FL_NORMAL_BUTTON,290,270,90,35,'Button'); + obj := fl_add_round3dbutton(FL_PUSH_BUTTON,260,95,60,40,'Round3DButton'); + fl_set_object_color(obj, FL_COL1, FL_MAGENTA); + obj := fl_add_roundbutton(FL_PUSH_BUTTON,220,140,60,40,'RoundButton'); + obj := fl_add_checkbutton(FL_PUSH_BUTTON,190,230,50,40,'CheckButton'); + fl_set_object_color(obj,FL_COL1,FL_BLUE); + obj := fl_add_lightbutton(FL_PUSH_BUTTON,290,200,100,30,'LightButton'); + obj := fl_add_button(FL_PUSH_BUTTON, 120, 290, 100, 35 ,'Button'); + fl_set_object_boxtype(obj, FL_ROUNDED3D_UPBOX); + fl_end_group(); + + + fdui^.group[0] := fl_bgn_group(); + obj := fl_add_box(FL_UP_BOX,40,120,70,70,'A Box'); + fl_set_object_lsize(obj,FL_NORMAL_SIZE); + fl_set_object_lstyle(obj,FL_TIMESBOLD_STYLE); + obj := fl_add_bitmap(FL_NORMAL_BITMAP,30,220,80,70,'bitmap'); + fdui^.bit := obj; + obj := fl_add_clock(FL_ANALOG_CLOCK,330,240,90,80,''); + obj := fl_add_frame(FL_ENGRAVED_FRAME,130,120,80,70,'A Frame'); + fl_set_object_lsize(obj,FL_NORMAL_SIZE); + fl_set_object_lstyle(obj,FL_TIMESBOLD_STYLE); + obj := fl_add_pixmap(FL_NORMAL_PIXMAP,340,110,90,70,'pixmap'); + fdui^.pix := obj; + obj := fl_add_chart(FL_PIE_CHART,160,210,130,110,'chart'); + fdui^.chart := obj; + obj := fl_add_text(FL_NORMAL_TEXT,240,130,100,30,'Text stuff\nand more stuff'); + fl_set_object_lalign(obj,FL_ALIGN_CENTER or FL_ALIGN_INSIDE); + fl_end_group(); + + + fdui^.group[3] := fl_bgn_group(); + obj := fl_add_input(FL_NORMAL_INPUT,140,120,150,30,'Input'); + obj := fl_add_input(FL_MULTILINE_INPUT,60,170,320,130,''); + fl_end_group(); + + obj := fl_add_button(FL_NORMAL_BUTTON,385,20,60,30,'Quit'); + fdui^.quit := obj; + + fdui^.group[4] := fl_bgn_group(); + obj := fl_add_menu(FL_PULLDOWN_MENU,190,110,40,19,'Menu'); + fdui^.menu := obj; + fl_set_object_boxtype(obj,FL_FLAT_BOX); + obj := fl_add_choice(FL_NORMAL_CHOICE,290,110,120,30,''); + fdui^.choice := obj; + obj := fl_add_browser(FL_NORMAL_BROWSER,30,140,140,150,''); + fdui^.browser := obj; + obj := fl_add_xyplot(FL_IMPULSE_XYPLOT,190,150,240,180,''); + fdui^.xyplot := obj; + fl_set_object_lsize(obj,FL_DEFAULT_SIZE); + fl_end_group(); + + fl_end_form(); + fdui^.objsform^.fdui:=fdui; + fl_set_border_width(old_bw); + + create_form_objsform := fdui; +end; + +begin + fl_initialize(@argc, argv, '', nil, 0); + fd_objsform := create_form_objsform; + init_gui(fd_objsform); + + { fill-in form initialization code } + fl_set_button(fd_objsform^.button[0], 1); + show_group(nil, 0); + + { show the first form } + fl_show_form(fd_objsform^.objsform,FL_PLACE_CENTER,FL_FULLBORDER,'objsform'); + while (fl_do_forms() <> fd_objsform^.quit) do + begin + end; +end. diff --git a/packages/xforms/examples/iconify.pp b/packages/xforms/examples/iconify.pp new file mode 100644 index 0000000000..14bf17fda5 --- /dev/null +++ b/packages/xforms/examples/iconify.pp @@ -0,0 +1,37 @@ +Program iconify; + +Uses x,forms; + +{$i crab.xpm} + + +function create_form_form : PFL_FORM; + +var + obj : PFL_OBJECT; + form : PFL_FORM; + +begin + new(form); + form := fl_bgn_form(FL_NO_BOX,151,111); + obj := fl_add_pixmapbutton(FL_NORMAL_BUTTON,0,0,151,111, + 'Iconify Me\nvia Window Manager'); + fl_set_object_lalign(obj, FL_ALIGN_BOTTOM or FL_ALIGN_INSIDE); + fl_set_object_lstyle(obj,FL_BOLD_STYLE); + fl_set_pixmapbutton_data(obj, crab45); + fl_end_form; + create_form_form:=form; +end; + +Var form0 : PFL_FORM; + mask,p : TPixmap; + H,W : word; + +begin + fl_initialize(@argc, argv, 'FormDemo', nil, 0); + form0 := create_form_form; + p := fl_read_pixmapfile(fl_root, 'crab.xpm', Pword(@w), pword(@h), PPixmap(@mask), nil, nil, 0); + fl_set_form_icon(form0, p, mask); + fl_show_form(form0,FL_PLACE_CENTER,FL_FULLBORDER, 'IconTest'); + fl_do_forms(); +end. diff --git a/packages/xforms/examples/inputall.pp b/packages/xforms/examples/inputall.pp new file mode 100644 index 0000000000..f80476717f --- /dev/null +++ b/packages/xforms/examples/inputall.pp @@ -0,0 +1,97 @@ +program inputall; + +uses xforms; + +type TFD_INPUT = record + input : PFL_FORM; + vdata : pointer; + norminput,multiinput,report : PFL_OBJECT; + end; +PFD_INPUT = ^TFD_input; + +procedure done_cb( ob : PFL_OBJECT; data : longint);cdecl; + +begin + halt(0); +end; + +procedure input_cb( ob : PFL_OBJECT; data : longint);cdecl; + +var + cx, cy, pos : Longint; + buf,temp : string[128]; + +begin + pos := fl_get_input_cursorpos(ob, @cx,@cy); + str (pos,temp); buf:='P = '+temp+' '; + str (cx,temp); buf:=buf+'x= '+temp+' '; + str (cy,temp); buf:=buf+'y= '+temp+#0; + fl_set_object_label( PFD_input(ob^.form^.fdui)^.report,@buf[1]); +end; + +procedure hide_show_cb(ob : PFL_OBJECT; data : longint);cdecl; + +var fd: PFD_input; + +begin + fd := ob^.form^.fdui; + if (fd^.multiinput^.visible<>0) then + fl_hide_object(fd^.multiinput) + else + fl_show_object(fd^.multiinput); +end; + + +function create_form_input : PFD_input; + +var + obj : PFL_OBJECT; + fdui : PFD_input; + +begin + new(fdui); + fdui^.input := fl_bgn_form(FL_NO_BOX, 441, 441); + obj := fl_add_box(FL_UP_BOX,0,0,441,441,''); + obj := fl_add_input(FL_NORMAL_INPUT,40,40,340,30,'NormalInput'); + fdui^.norminput := obj; + fl_set_object_lalign(obj,FL_ALIGN_TOP_LEFT); + fl_set_object_callback(obj,PFL_CALLBACKPTR(@input_cb),0); + obj := fl_add_input(FL_INT_INPUT,40,100,160,30,'IntInput'); + fl_set_object_lalign(obj,FL_ALIGN_TOP_LEFT); + obj := fl_add_input(FL_FLOAT_INPUT,230,100,160,30,'FloatInput'); + fl_set_object_lalign(obj,FL_ALIGN_TOP_LEFT); + obj := fl_add_input(FL_DATE_INPUT,40,150,160,30,'DateInput'); + fl_set_object_lalign(obj,FL_ALIGN_TOP_LEFT); + obj := fl_add_input(FL_SECRET_INPUT,230,150,160,30,'Secretinput'); + fl_set_object_lalign(obj,FL_ALIGN_TOP_LEFT); + obj:= fl_add_input(FL_MULTILINE_INPUT,40,210,360,180,'MMM'); + fdui^.multiinput := obj; + fl_set_object_callback(obj,PFL_CALLBACKPTR(@input_cb),0); + obj := fl_add_text(FL_NORMAL_TEXT,30,400,210,30,''); + fdui^.report := obj; + fl_set_object_lalign(obj,FL_ALIGN_LEFT or FL_ALIGN_INSIDE); + obj := fl_add_button(FL_NORMAL_BUTTON,330,400,70,30,'Done'); + fl_set_object_callback(obj,PFL_CALLBACKPTR(@done_cb),0); + obj := fl_add_button(FL_NORMAL_BUTTON,250,400,70,30,'Hide/Show'); + fl_set_object_callback(obj,PFL_CALLBACKPTR(@hide_show_cb),0); + fl_end_form(); + fdui^.input^.fdui := fdui; + create_form_input:=fdui; +end; + + +var fd_input : PFD_input; + +begin + fl_initialize(@argc, argv, '', nil, 0); + fd_input := create_form_input(); + + { fill-in form initialization code } + fl_set_object_dblbuffer(fd_input^.report,1); + fl_set_object_return(fd_input^.multiinput,FL_RETURN_ALWAYS); + fl_set_object_return(fd_input^.norminput,FL_RETURN_ALWAYS); + + { show the first form } + fl_show_form(fd_input^.input,FL_PLACE_CENTERFREE,FL_FULLBORDER,'input'); + while (fl_do_forms<>nil) do; +end. diff --git a/packages/xforms/examples/invslider.pp b/packages/xforms/examples/invslider.pp new file mode 100644 index 0000000000..7aac8bc8ce --- /dev/null +++ b/packages/xforms/examples/invslider.pp @@ -0,0 +1,67 @@ +program invslider; + +uses xforms; + +type +TFD_inv = record + inv : PFL_FORM; + sl : array[0..2] of PFL_OBJECT; + done : PFL_OBJECT; + vdata : pointer; + ldata : longint; + end; +PFD_inv=^TFD_inv; + +var ui : PFD_INV; + +procedure invert_it(ob : PFL_OBJECT; data : longint);cdecl; + +begin + if (fl_get_button(ob)<>0) then + begin + fl_set_slider_bounds(ui^.sl[0], 1.0, 0.0); + fl_set_slider_bounds(ui^.sl[1], 1.0, 0.0); + fl_set_slider_bounds(ui^.sl[2], 1.0, 0.0); + end + else + begin + fl_set_slider_bounds(ui^.sl[0], 0.0, 1.0); + fl_set_slider_bounds(ui^.sl[1], 0.0, 1.0); + fl_set_slider_bounds(ui^.sl[2], 0.0, 1.0); + end; +end; + +function create_form_inv : PFD_inv; +var + obj : PFL_OBJECT ; + fdui : PFD_inv; + +begin + new(fdui); + fdui^.inv := fl_bgn_form(FL_NO_BOX, 245, 280); + obj := fl_add_box(FL_UP_BOX,0,0,245,280,''); + obj := fl_add_valslider(FL_VERT_SLIDER,20,30,35,230,''); + fdui^.sl[0] := obj; + obj := fl_add_valslider(FL_VERT_FILL_SLIDER,65,30,35,230,''); + fdui^.sl[1] := obj; + obj := fl_add_valslider(FL_VERT_NICE_SLIDER,115,30,35,230,''); + fdui^.sl[2] := obj; + fl_set_object_boxtype(obj,FL_FLAT_BOX); + fl_set_object_color(obj,FL_COL1,FL_BLUE); + obj := fl_add_button(FL_RETURN_BUTTON,160,235,75,30,'Exit'); + fdui^.done := obj ; + obj := fl_add_checkbutton(FL_PUSH_BUTTON,165,30,75,35,'Invert'); + fl_set_object_callback(obj,PFL_CALLBACKPTR(@invert_it),0); + fl_end_form; + + create_form_inv:=fdui; +end; + + +begin + fl_initialize(@argc, argv, 'FormDemo', nil, 0); + ui := create_form_inv; + + fl_show_form(ui^.inv,FL_PLACE_CENTER,FL_TRANSIENT,'inv'); + while fl_do_forms <> ui^.done do; +end. diff --git a/packages/xforms/examples/lalign.pp b/packages/xforms/examples/lalign.pp new file mode 100644 index 0000000000..627fe584a0 --- /dev/null +++ b/packages/xforms/examples/lalign.pp @@ -0,0 +1,102 @@ +program lalign; + +{ different label alignments } +uses xforms; + +type +TFD_Form0 = record + form0 : PFL_FORM; + box,inside,center : PFL_Object; + vdata : pointer; + ldata : longint; +end; +PFD_Form0 = ^TFD_Form0; + +var fd_form0 : PFD_form0; + + align :integer; + + +Procedure align_cb(ob : PFL_OBJECT; n : longint);cdecl; +begin + if fl_get_button(fd_form0^.inside)<>0 then + n:=n or FL_ALIGN_INSIDE; + fl_set_object_lalign(fd_form0^.box, n); +end; + +Procedure inside_cb(Ob : PFL_OBJECT; data : longint);cdecl; + +begin + if fl_get_button(ob)<>0 then + fd_form0^.box^.align := fd_form0^.box^.align or FL_ALIGN_INSIDE + else + fd_form0^.box^.align := fd_form0^.box^.align and not FL_ALIGN_INSIDE; + fl_redraw_form(fd_form0^.form0); +end; + +function create_form_form0 : PFD_form0; + +Var + obj : PFL_OBJECT; + fdui : PFD_form0; +begin + new(fdui); + fdui^.form0 := fl_bgn_form(FL_NO_BOX, 351, 170); + obj := fl_add_box(FL_UP_BOX,0,0,351,170,''); + obj := fl_add_box(FL_UP_BOX,190,45,90,45,'abcdefg'#10'hijklmno'); + fdui^.box := obj ; + { fl_set_object_clip(obj, 1); } + obj := fl_add_lightbutton(FL_PUSH_BUTTON,20,120,90,30,'Inside'); + fdui^.inside := obj; + fl_set_object_callback(obj,PFL_CALLBACKPTR(@inside_cb),0); + fl_bgn_group(); + obj := fl_add_button(FL_RADIO_BUTTON,20,20,30,30,'@#7->'); + fl_set_object_lcol(obj,FL_BLUE); + fl_set_object_callback(obj,PFL_CALLBACKPTR(@align_cb),FL_ALIGN_LEFT_TOP); + obj := fl_add_button(FL_RADIO_BUTTON,50,20,30,30,'@#8->'); + fl_set_object_lcol(obj,FL_BLUE); + fl_set_object_callback(obj,PFL_CALLBACKPTR(@align_cb),FL_ALIGN_TOP); + obj := fl_add_button(FL_RADIO_BUTTON,80,20,30,30,'@#9->'); + fl_set_object_lcol(obj,FL_BLUE); + fl_set_object_callback(obj,PFL_CALLBACKPTR(@align_cb),FL_ALIGN_RIGHT_TOP); + obj := fl_add_button(FL_RADIO_BUTTON,80,50,30,30,'@#->'); + fl_set_object_lcol(obj,FL_BLUE); + fl_set_object_callback(obj,PFL_CALLBACKPTR(@align_cb),FL_ALIGN_RIGHT); + obj := fl_add_button(FL_RADIO_BUTTON,50,50,30,30,'@circle'); + fdui^.center := obj; + fl_set_object_lcol(obj,FL_RED); + fl_set_object_callback(obj,PFL_CALLBACKPTR(@align_cb),FL_ALIGN_CENTER); + obj := fl_add_button(FL_RADIO_BUTTON,20,50,30,30,'@#<-'); + fl_set_object_lcol(obj,FL_BLUE); + fl_set_object_callback(obj,PFL_CALLBACKPTR(@align_cb),FL_ALIGN_LEFT); + obj := fl_add_button(FL_RADIO_BUTTON,20,80,30,30,'@#1->'); + fl_set_object_lcol(obj,FL_BLUE); + fl_set_object_callback(obj,PFL_CALLBACKPTR(@align_cb),FL_ALIGN_LEFT_BOTTOM); + obj := fl_add_button(FL_RADIO_BUTTON,50,80,30,30,'@#2->'); + fl_set_object_lcol(obj,FL_BLUE); + fl_set_object_callback(obj,PFL_CALLBACKPTR(@align_cb),FL_ALIGN_BOTTOM); + obj := fl_add_button(FL_RADIO_BUTTON,80,80,30,30,'@#3->'); + fl_set_object_lcol(obj,FL_BLUE); + fl_set_object_callback(obj,PFL_CALLBACKPTR(@align_cb),FL_ALIGN_RIGHT_BOTTOM); + fl_end_group(); + + obj := fl_add_button(FL_NORMAL_BUTTON,140,120,70,30,'Done'); + fl_end_form(); + + create_form_form0 := fdui; +end; + +begin + fl_initialize(@argc, argv, 'FormDemo', nil, 0); + fd_form0 := create_form_form0(); + + { fill-in form initialization code } + fl_set_form_dblbuffer(fd_form0^.form0, 1); + align := fd_form0^.box^.align or FL_ALIGN_INSIDE; + if align <> fd_form0^.box^.align then + fl_set_button(fd_form0^.inside, 1); + + { show the first form } + fl_show_form(fd_form0^.form0,FL_PLACE_FREE,FL_FULLBORDER,'form0'); + fl_do_forms(); +end. diff --git a/packages/xforms/examples/ldial.pp b/packages/xforms/examples/ldial.pp new file mode 100644 index 0000000000..77b2f038c7 --- /dev/null +++ b/packages/xforms/examples/ldial.pp @@ -0,0 +1,64 @@ +{ This is an example of the use of dials. +} +Program ldial; + +uses xforms; + + +var +form : PFL_FORM ; +button, red, green, blue, redtext, greentext, bluetext, theresult : PFL_OBJECT; + +procedure makeform; +begin + form := fl_bgn_form(FL_UP_BOX,300,330); + button := fl_add_button(FL_NORMAL_BUTTON,45,15,210,45,'A Color Editor'); + fl_set_object_lsize(button,FL_LARGE_SIZE); + + red := fl_add_dial(FL_LINE_DIAL,30,240,60,60,'Red'); + fl_set_dial_bounds(red,0.0,255.0); + fl_set_dial_value(red,128.0); + fl_set_object_color(red,FL_RED,FL_DIAL_COL2); + redtext := fl_add_box(FL_DOWN_BOX,105,255,50,25,''); + + green := fl_add_dial(FL_LINE_DIAL,30,155,60,60,'Green'); + fl_set_dial_bounds(green,0.0,255.0); + fl_set_dial_value(green,128.0); + fl_set_dial_angles(green, 45.0, (360-45.0)); + fl_set_object_color(green,FL_GREEN,FL_DIAL_COL2); + greentext := fl_add_box(FL_DOWN_BOX,105,170,50,25,''); + + blue := fl_add_dial(FL_LINE_DIAL,30,70,60,60,'Blue'); + fl_set_dial_bounds(blue,0.0,255.0); + fl_set_dial_value(blue,128.0); + fl_set_object_color(blue,FL_BLUE,FL_DIAL_COL2); + bluetext := fl_add_box(FL_DOWN_BOX,105,90,50,25,''); + + theresult := fl_add_box(FL_DOWN_BOX,180,70,90,245,''); + fl_set_object_color(theresult,FL_FREE_COL1,FL_FREE_COL1); + fl_set_object_dblbuffer(theresult,1); + fl_end_form; +end; + +var + ret : PFL_OBJECT ; + r,g,b : Longint; + st : string[100]; + +begin + fl_initialize(@argc, argv, 'FormDemo', nil, 0); + makeform; + fl_show_form(form,FL_PLACE_MOUSE,FL_TRANSIENT,'A Form'); + repeat + r := round(fl_get_dial_value(red)+0.001); + g := round(fl_get_dial_value(green)+0.001); + b := round(fl_get_dial_value(blue)+0.001); + fl_mapcolor(FL_FREE_COL1,r,g,b); + fl_redraw_object(theresult); + str(r,st);st:=st+#0; fl_set_object_label(redtext,@st[1]); + str(g,st);st:=st+#0; fl_set_object_label(greentext,@st[1]); + str(b,st);st:=st+#0; fl_set_object_label(bluetext,@st[1]); + ret := fl_do_forms; + until (ret = button); + fl_hide_form(form); +end. diff --git a/packages/xforms/examples/ll.pp b/packages/xforms/examples/ll.pp new file mode 100644 index 0000000000..1d2b8fc297 --- /dev/null +++ b/packages/xforms/examples/ll.pp @@ -0,0 +1,141 @@ +program ll; + +uses xforms; + +{*** Forms and Objects ***} + +Type +TFD_axypform = record + axypform : PFL_FORM; + xyplot : PFL_OBJECT; + status : PFL_OBJECT; + vdata : pointer; + ldata : longint; +end; +PFD_axypform = ^TFD_axypform; + + +var +xypui : PFD_axypform; + +{ callbacks for form axypform } +Procedure xyplot_cb(ob : PFL_OBJECT; data : longint);cdecl; + + +var + x, y : double; + i : Longint; + temp,buf : string[64]; + +begin + fl_get_xyplot(ob, @x, @y, @i); + if (i < 0) then exit; + str (x,buf); + str (y,temp); + Buf:='X= '+Buf+' Y= '+temp+#0; + fl_set_object_label(xypui^.status, @buf[1]); +end; + + +Procedure alwaysreturn_cb(ob : PFL_OBJECT; data : longint); cdecl; + +begin + fl_set_xyplot_return(xypui^.xyplot, fl_get_button(ob)); +end; + +procedure interpolate_cb(ob : PFL_OBJECT; data : longint);cdecl; + +begin + if fl_get_button(ob)=0 then + fl_set_xyplot_interpolate(xypui^.xyplot, 0,2,0.2) + else + fl_set_xyplot_interpolate(xypui^.xyplot, 0,0,0.2); +end; + +Procedure inspect_cb(ob : PFL_OBJECT; data :longint); cdecl; + +begin + fl_set_xyplot_inspect(xypui^.xyplot, fl_get_button(ob)); +end; + + +procedure notic_cb(ob : PFL_OBJECT; data :longint); cdecl; + +var notic : Longint; + +begin + notic := fl_get_button(ob); + + if (notic)<>0 then + begin + fl_set_xyplot_xtics(xypui^.xyplot, -1, -1); + fl_set_xyplot_ytics(xypui^.xyplot, -1, -1); + end + else + begin + fl_set_xyplot_xtics(xypui^.xyplot, 0, 0); + fl_set_xyplot_ytics(xypui^.xyplot, 0, 0); + end; +end; + + +Function create_form_axypform : PFD_axypform; + +var + obj : PFL_OBJECT; + fdui : PFD_axypform; + +begin + new(fdui); + + fdui^.axypform := fl_bgn_form(FL_NO_BOX, 431, 301); + obj := fl_add_box(FL_UP_BOX,0,0,431,301,''); + obj := fl_add_xyplot(FL_ACTIVE_XYPLOT,20,50,285,235,''); + fdui^.xyplot := obj; + fl_set_object_boxtype(obj,FL_DOWN_BOX); + fl_set_object_color(obj, FL_BLACK, FL_GREEN); + fl_set_object_lalign(obj,FL_ALIGN_BOTTOM or FL_ALIGN_INSIDE); + fl_set_object_callback(obj,PFL_CALLBACKPTR(@xyplot_cb),0); + obj := fl_add_checkbutton(FL_PUSH_BUTTON,315,40,80,25,'AlwaysReturn'); + fl_set_object_color(obj,FL_COL1,FL_BLUE); + fl_set_object_callback(obj,PFL_CALLBACKPTR(@alwaysreturn_cb),0); + obj := fl_add_checkbutton(FL_PUSH_BUTTON,315,65,80,25,'Interpolate'); + fl_set_object_color(obj,FL_COL1,FL_BLUE); + fl_set_object_callback(obj,PFL_CALLBACKPTR(@interpolate_cb),0); + obj := fl_add_checkbutton(FL_PUSH_BUTTON,315,90,85,25,'InspectOnly'); + fl_set_object_color(obj,FL_COL1,FL_BLUE); + fl_set_object_callback(obj,PFL_CALLBACKPTR(@inspect_cb),0); + obj := fl_add_text(FL_NORMAL_TEXT,45,15,170,25,''); + fdui^.status := obj; + fl_set_object_boxtype(obj, FL_DOWN_BOX); + obj := fl_add_button(FL_NORMAL_BUTTON,325,250,90,30,'Done'); + obj := fl_add_checkbutton(FL_PUSH_BUTTON,315,120,85,25,'NoTics'); + fl_set_object_color(obj,FL_COL1,FL_BLUE); + fl_set_object_callback(obj,PFL_CALLBACKPTR(@notic_cb),0); + fl_end_form(); + + create_form_axypform:=fdui; +end; + + +var + x,y : array[0..24] of double; + i : longint; + +begin + fl_initialize(@argc, argv, 'FormDemo', nil, 0); + xypui := create_form_axypform; + + { fill-in form initialization code } + fl_set_object_dblbuffer(xypui^.status, 1); + for i := 0 to 10 do + begin + x[i] := i; + y[i] := i; + end; + fl_set_xyplot_data(xypui^.xyplot, x, y, 11, '','',''); + + { show the first form } + fl_show_form(xypui^.axypform,FL_PLACE_MOUSE,FL_TRANSIENT,'axypform'); + fl_do_forms(); +end. diff --git a/packages/xforms/examples/longlabel.pp b/packages/xforms/examples/longlabel.pp new file mode 100644 index 0000000000..7c493def11 --- /dev/null +++ b/packages/xforms/examples/longlabel.pp @@ -0,0 +1,58 @@ +{ Demo of the Use of a very long label } +program longlabel; + +uses xforms; + +Const +label1 : pchar = 'This demo shows the use of some very'#10+ + 'long labels. The dynamic storage allocation'#10+ + 'for such long labels should guarantee that'#10+ + 'all of this works without any problem.'; +{ This shows a funny bug in FPK 0.9.1 :) MVC.} + +label2 : pchar ='This is the second string that should again'#10+ + 'be a bit larger such that a new, larger amount'#10+ + 'of storage has to be allocated for the label.'#10+ + 'This is of course no problem. By the way,'#10+ + 'dynamic allocation of storage saves a lot'#10+ + 'of memory because for most objects the label'#10+ + 'is much shorter than the 64 bytes that were'#10+ + 'allocated for it in the previous version of'#10+ + 'the Forms Library'; + +label3 : pchar ='And now back to the first one:'#10#10+ + 'This demo shows the use of some very'#10+ + 'long labels. The dynamic storage allocation'#10+ + 'for such long labels should guarantee that'#10+ + 'all of this works without any problem.'; + +var + form : PFL_FORM; + strobj, but : PFL_OBJECT; + +begin + fl_initialize(@argc, argv, 'FormDemo', nil, 0); + + form := fl_bgn_form(FL_UP_BOX,400,300); + strobj := fl_add_box(FL_DOWN_BOX,10,10,380,240,'Press Next'); + fl_set_object_lsize(strobj,FL_NORMAL_SIZE); + but := fl_add_button(FL_NORMAL_BUTTON,160,260,80,30,'Next'); + fl_end_form(); + + fl_set_form_hotobject(form, but); + fl_show_form(form,FL_PLACE_HOTSPOT,FL_TRANSIENT,nil); + + fl_do_forms(); + fl_set_object_label(strobj,label1); + + fl_do_forms(); + fl_set_object_label(strobj,label2); + + fl_do_forms(); + fl_set_object_label(strobj, 'Now we turn to a short label'); + fl_do_forms(); + fl_set_object_label(strobj,label3); + + fl_set_object_label(but,'Quit'); + fl_do_forms(); +end. diff --git a/packages/xforms/examples/menu.pp b/packages/xforms/examples/menu.pp new file mode 100644 index 0000000000..24eb877736 --- /dev/null +++ b/packages/xforms/examples/menu.pp @@ -0,0 +1,121 @@ +{ This demo shows the use of menu's. + * The first two are PUSH_MENUs (pop-up). + * The third one is PULLDOWN_MENU + * and the last one is TOUCH_MENU + * + * a confusing demo, but a good testing program .. + } +program menudemo; + +uses xforms; + +Var menu,abox : array[0..3] of PFL_OBJECT; + isset : array[0..3] of longint; + + form : PFL_FORM; + i, j : longint; + + +procedure menu_cb(ob : PFL_OBJECT; m : longint);cdecl; + +var i,item : longint; + +begin + item := fl_get_menu(ob); + + if (item <= 0) or (isset[m] = item) then + exit; + + for i := 0 to 3 do + if ( i <> m) then + begin + { enable the old selected color for other menus} + fl_set_menu_item_mode(menu[i], isset[m], Cardinal(FL_PUP_RADIO)); + { disable the currently selected color for other menus } + fl_set_menu_item_mode(menu[i], item, Cardinal(FL_PUP_GRAY or FL_PUP_RADIO)); + end; + + isset[m] := item; + fl_set_object_color(abox[m], FL_BLACK+item, FL_BLACK); +end; + +procedure done_cb(ob : PFL_OBJECT; data : longint) ; cdecl; + +begin + halt; +end; + +Function create_form : PFL_Form; + +var form : PFL_FORM; + obj : PFL_OBJECT; + +begin + form := fl_bgn_form(FL_NO_BOX,440,380); + obj := fl_add_box(FL_BORDER_BOX,0,0,440,380,''); + fl_set_object_color(obj,FL_SLATEBLUE,FL_COL1); + + obj := fl_add_menu(FL_PUSH_MENU,0,0,110,30,'Color 1'); + menu[0] := obj; + fl_set_object_shortcut(obj, '1#1', 1); + fl_set_object_boxtype(obj, FL_UP_BOX); + fl_set_object_callback(obj, PFL_CALLBACKPTR(@menu_cb), 0); + obj := fl_add_menu(FL_PUSH_MENU,110,0,110,30,'Color 2'); + menu[1] := obj; + fl_set_object_shortcut(obj, '2#2', 1); + fl_set_object_callback(obj, PFL_CALLBACKPTR(@menu_cb), 1); + obj := fl_add_menu(FL_PULLDOWN_MENU,220,0,110,30,'Color 3'); + menu[2] := obj; + fl_set_object_shortcut(obj, '3#3', 1); + fl_set_object_callback(obj, PFL_CALLBACKPTR(@menu_cb), 2); + obj := fl_add_menu(FL_TOUCH_MENU,330,0,110,30,'Color 4'); + menu[3] := obj; + fl_set_object_shortcut(obj, '4#4', 1); + fl_set_object_callback(obj, PFL_CALLBACKPTR(@menu_cb), 3); + + abox[0] := fl_add_box(FL_SHADOW_BOX,20,80,70,230,''); + abox[1] := fl_add_box(FL_SHADOW_BOX,130,80,70,230,''); + abox[2] := fl_add_box(FL_SHADOW_BOX,240,80,70,230,''); + abox[3] := fl_add_box(FL_SHADOW_BOX,350,80,70,230,''); + obj := fl_add_button(FL_NORMAL_BUTTON,310,330,110,30,'Exit'); + fl_set_object_callback(obj, PFL_CALLBACKPTR(@done_cb), 0); + fl_end_form(); + {fl_scale_form(form, 0.9, 0.9);} + create_form:=form; +end; + +begin + fl_initialize(@argc, argv, 'FormDemo', nil, 0); + + form := create_form(); + + {fl_setpup_color(FL_SLATEBLUE, FL_BLACK); } + + for i:=0 to 3 do + begin + fl_show_menu_symbol(menu[i], 1); + fl_set_menu(menu[i], + 'Red%r1|Green%r1|Yellow%r1|Blue%r1|Purple%r1|Cyran%r1|White%r1'); + fl_set_menu_item_shortcut(menu[i], 1, 'Rr#R#r'); + fl_set_menu_item_shortcut(menu[i], 2, 'Gg#G#g'); + fl_set_menu_item_shortcut(menu[i], 3, 'Yy#Y#y'); + fl_set_menu_item_shortcut(menu[i], 4, 'Bb#B#b'); + fl_set_menu_item_shortcut(menu[i], 5, 'Pp#P#p'); + fl_set_menu_item_shortcut(menu[i], 6, 'Cc#C#c'); + fl_set_menu_item_shortcut(menu[i], 7, 'Ww#W#w'); + + { initially the last three entries are enabled } + for j:=5 to 7 do + fl_set_menu_item_mode(menu[i], j, Cardinal(FL_PUP_RADIO)); + { the first four are disabled except the item (i+1) } + for j:=1 to 4 do + fl_set_menu_item_mode(menu[i], j, Cardinal(FL_PUP_GREY or FL_PUP_RADIO)); + isset[i] := i + 1; + fl_set_object_color(abox[i], FL_BLACK+isset[i], FL_BLACK); + fl_set_menu_item_mode(menu[i], isset[i], Cardinal(FL_PUP_CHECK or FL_PUP_RADIO)); + end; + + fl_show_form(form,FL_PLACE_CENTER,FL_NOBORDER,Nil); + fl_do_forms(); + fl_hide_form(form); +end. diff --git a/packages/xforms/examples/minput.pp b/packages/xforms/examples/minput.pp new file mode 100644 index 0000000000..bb28e50662 --- /dev/null +++ b/packages/xforms/examples/minput.pp @@ -0,0 +1,29 @@ +program minput; + +uses xforms; + +procedure input_cb( ob : PFL_OBJECT; data : Longint);cdecl; + +var + x, y : Longint; +begin + fl_get_input_cursorpos(ob, @x , @y); + writeln ('x= ',x,' y= ',y); +end; + + +var + form : PFL_FORM; + but, obj : PFL_OBJECT; + +begin + fl_initialize(@argc, argv, 'FormDemo', nil, 0); + form := fl_bgn_form(FL_UP_BOX,400,450); + obj := fl_add_input(FL_MULTILINE_INPUT,30,270,340,150,''); + obj := fl_add_input(FL_MULTILINE_INPUT,30,90,340,150,''); + fl_set_object_lsize(obj, FL_NORMAL_SIZE); + but := fl_add_button(FL_NORMAL_BUTTON,160,30,80,30,'Exit'); + fl_end_form(); + fl_show_form(form,FL_PLACE_CENTERFREE,FL_FULLBORDER,'MultiLineInput'); + while (obj <> but) do obj:=fl_do_forms; +end. diff --git a/packages/xforms/examples/multilabel.pp b/packages/xforms/examples/multilabel.pp new file mode 100644 index 0000000000..6c788a80c5 --- /dev/null +++ b/packages/xforms/examples/multilabel.pp @@ -0,0 +1,52 @@ +{ Multiline labels. } +program multilabel; + +uses xforms; + +var +form : PFL_FORM; +readyobj : PFL_OBJECT; + +Procedure create_form; + +var obj : PFL_OBJECT; + +begin + form := fl_bgn_form(FL_NO_BOX,400,470); + obj := fl_add_box(FL_UP_BOX,0,0,400,470,''); + fl_set_object_color(obj,FL_SLATEBLUE,FL_COL1); + obj := fl_add_text(FL_NORMAL_TEXT,140,40,120,120,'This is'#10'a multi-line'#10'labelT'); + fl_set_object_boxtype(obj,FL_BORDER_BOX); + fl_set_object_lalign(obj,FL_ALIGN_TOP); + obj := fl_add_text(FL_NORMAL_TEXT,140,160,120,120,'This is'#10'a multi-line'#10'labelC'); + fl_set_object_boxtype(obj,FL_BORDER_BOX); + fl_set_object_color(obj,FL_PALEGREEN,FL_COL1); + fl_set_object_lsize(obj,FL_LARGE_SIZE); + fl_set_object_lalign(obj,FL_ALIGN_CENTER); + obj := fl_add_button(FL_NORMAL_BUTTON,280,400,100,50,'I am sure'#10'that I am'#10'Ready'); + readyobj :=obj; + fl_set_object_lsize(obj,FL_SMALL_SIZE); + obj := fl_add_text(FL_NORMAL_TEXT,260,160,120,120,'This is'#10'a multi-line'#10'labelR'); + fl_set_object_boxtype(obj,FL_BORDER_BOX); + fl_set_object_lalign(obj,FL_ALIGN_RIGHT); + obj := fl_add_text(FL_NORMAL_TEXT,140,280,120,120,'This is'#10'a multi-line'#10'labelB'); + fl_set_object_boxtype(obj,FL_BORDER_BOX); + fl_set_object_lalign(obj,FL_ALIGN_BOTTOM); + obj := fl_add_text(FL_NORMAL_TEXT,20,160,120,120,'This is'#10'a multi-line'#10'label'); + fl_set_object_boxtype(obj,FL_BORDER_BOX); + fl_end_form(); +end; + +var + obj : PFL_OBJECT; + +begin + + fl_initialize(@argc, argv, 'FormDemo', nil, 0); + create_form; + fl_show_form(form,FL_PLACE_CENTER,FL_NOBORDER,'Labels'); + repeat + obj := fl_do_forms; + until (obj = readyobj); + fl_hide_form(form); +end. diff --git a/packages/xforms/examples/ndial.pp b/packages/xforms/examples/ndial.pp new file mode 100644 index 0000000000..49376fca45 --- /dev/null +++ b/packages/xforms/examples/ndial.pp @@ -0,0 +1,63 @@ +{ This is an example of the use of dials. } + +uses xforms; + +var +form : PFL_FORM; +button, red, green, blue, redtext, greentext, bluetext, theresult : PFL_OBJECT; + +procedure makeform; + +begin + form := fl_bgn_form(FL_UP_BOX,300,330); + button := fl_add_button(FL_NORMAL_BUTTON,45,15,210,45,'A Color Editor'); + fl_set_object_lsize(button,FL_LARGE_SIZE); + + red := fl_add_dial(FL_NORMAL_DIAL,30,240,60,60,'Red'); + fl_set_dial_bounds(red,0.0,255.0); + fl_set_dial_value(red,128.0); + fl_set_object_color(red,FL_RED,FL_DIAL_COL2); + redtext := fl_add_box(FL_DOWN_BOX,105,255,50,25,''); + + green := fl_add_dial(FL_NORMAL_DIAL,30,155,60,60,'Green'); + fl_set_dial_bounds(green,0.0,255.0); + fl_set_dial_value(green,128.0); + fl_set_object_color(green,FL_GREEN,FL_DIAL_COL2); + greentext := fl_add_box(FL_DOWN_BOX,105,170,50,25,''); + + blue := fl_add_dial(FL_NORMAL_DIAL,30,70,60,60,'Blue'); + fl_set_dial_bounds(blue,0.0,255.0); + fl_set_dial_value(blue,128); + fl_set_object_color(blue,FL_BLUE,FL_DIAL_COL2); + bluetext := fl_add_box(FL_DOWN_BOX,105,90,50,25,''); + + theresult := fl_add_box(FL_DOWN_BOX,180,70,90,245,''); + fl_set_object_color(theresult,FL_FREE_COL1,FL_FREE_COL1); + fl_set_object_dblbuffer(theresult, 1); + fl_end_form; +end; + + +var + ret : PFL_OBJECT; + r,g,b : Longint; + st : string[100]; + +begin + + fl_initialize(@argc, argv, 'FormDemo', nil, 0); + makeform; + fl_show_form(form,FL_PLACE_MOUSE,FL_TRANSIENT,'A Form'); + repeat + r := round( fl_get_dial_value(red)); + g := round(fl_get_dial_value(green)); + b := round(fl_get_dial_value(blue)); + fl_mapcolor(FL_FREE_COL1,r,g,b); + fl_redraw_object(theresult); + str(r,st);st:=st+#0; fl_set_object_label(redtext,@st[1]); + str(g,st);st:=st+#0; fl_set_object_label(greentext,@st[1]); + str(b,st);st:=st+#0; fl_set_object_label(bluetext,@st[1]); + ret := fl_do_forms; + until (ret = button); + fl_hide_form(form); +end. diff --git a/packages/xforms/examples/newbutton.pp b/packages/xforms/examples/newbutton.pp new file mode 100644 index 0000000000..b038234c33 --- /dev/null +++ b/packages/xforms/examples/newbutton.pp @@ -0,0 +1,151 @@ +{ + * Demo showing the use of user defined object class: CROSSBUTTON + * + * Form definition file generated with fdesign. + * changed stub button to crossbutton + } + +uses xforms; + +Const FL_CROSSBUTTON=2000; + FL_CROSSBUTTON_BW = 2; + +{ How to draw it } +type TSPEC = TFL_BUTTON_STRUCT; + PSPEC = ^TSPEC; + +Procedure draw_crossbutton(ob : PFL_OBJECT);cdecl; + +var temp : longint; + xx, yy, ww, hh ,tt : TFL_Coord; + +begin + temp:=0; + { if redraw is demanded by FL_ENTER, ignore it } + + if PSPEC(ob^.spec)^.event = FL_ENTER then exit; + + { draw the bounding box first } + fl_drw_box(ob^.boxtype, ob^.x, ob^.y, ob^.w, ob^.h, ob^.col1, ob^.bw); + + { draw the box that contains the cross } + if ob^.w>ob^.h then tt:=ob^.h else tt:=ob^.w; + + ww := tt div 2 - 1; + hh:=ww; + xx := ob^.x + FL_BOUND_WIDTH; + yy := ob^.y + (ob^.h - hh) div 2; + + + { if pushed, draw a down box with the cross } + if PSPEC(ob^.spec)^.val<>0 then + begin + fl_drw_box(FL_DOWN_BOX, xx, yy, ww, hh, ob^.col1, ob^.bw); + fl_drw_text(FL_ALIGN_CENTER, xx-2, yy-2, ww+4, hh+4, ob^.col2, 0, 0, '@9plus'); + end + else + begin + fl_drw_box(FL_UP_BOX, xx, yy, ww, hh, ob^.col1, ob^.bw); + end; + + { label } + if (ob^.align = FL_ALIGN_CENTER) then + fl_drw_text(FL_ALIGN_LEFT, xx + ww + 3, ob^.y, 0, ob^.h, + ob^.lcol, ob^.lstyle, ob^.lsize, ob^.thelabel) + else + fl_draw_object_label_outside(ob); + + if (ob^.thetype = FL_RETURN_BUTTON) then + fl_drw_text(FL_ALIGN_CENTER, + TFL_Coord (ob^.x + ob^.w - round(0.8 * ob^.h)), + TFL_Coord (ob^.y + round(0.2 * ob^.h)), + TFL_Coord (round(0.6 * ob^.h)), + TFL_Coord (round(0.6 * ob^.h)), ob^.lcol, 0, 0, '@returnarrow'); + +end; + + +{ creation } +function fl_create_crossbutton(Thetype : Longint; x,y,w,h : TFL_Coord; thelabel : Pchar) : PFL_OBJECT; + +var ob : PFL_OBJECT; + +begin + fl_add_button_class(FL_CROSSBUTTON, PFL_Drawbutton(@draw_crossbutton), nil); + ob := fl_create_generic_button(FL_CROSSBUTTON, thetype, x, y,w, h, thelabel); + ob^.boxtype := FL_NO_BOX; + ob^.col2 := FL_BLACK; { cross color } + { ob^.bw := FL_CROSSBUTTON_BW; } + fl_create_crossbutton:=ob; +end; + +function fl_add_crossbutton(Thetype : longint; x,y,w,h : TFL_COORD; thelabel : pchar): PFL_OBJECT; + +var ob : PFL_OBJECT; + theform : PFL_FORM; + +begin + ob := fl_create_crossbutton(thetype, x, y, w, h, thelabel); + theform:=fl_current_form; + fl_add_object(theform, ob); + fl_add_crossbutton:=ob; +end; + +{*** Forms and Objects ***} +type TFD_NEwBut = record + newbut : PFL_FORM; + bexit : PFL_object; + vdata : pointer; + ldata : Longint; +end; +PFD_NewBut= ^TFD_NewBut; + +function create_form_newbut : PFD_Newbut; + +var + obj : PFL_OBJECT; + fdui : PFD_newbut; + oldbw : longint; + +begin + new (fdui); + oldbw := fl_get_border_width; + + fl_set_border_width(-2); + fdui^.newbut := fl_bgn_form(FL_NO_BOX, 310, 190); + obj := fl_add_box(FL_UP_BOX,0,0,310,190,''); + obj := fl_add_labelframe(FL_ENGRAVED_FRAME,40,45,100,120,'CrossB'); + fl_set_object_boxtype(obj,FL_FLAT_BOX); + fl_set_object_lstyle(obj,FL_BOLD_STYLE); + obj := fl_add_crossbutton(FL_RADIO_BUTTON,50,115,80,30,'cross1'); + fl_set_object_color(obj,FL_COL1,FL_RED); + obj := fl_add_crossbutton(FL_RADIO_BUTTON,50,85,80,30,'Button'); + fl_set_object_color(obj,FL_COL1,FL_GREEN); + obj := fl_add_crossbutton(FL_RADIO_BUTTON,50,55,80,30,'Button'); + fl_set_object_color(obj,FL_COL1,FL_BLUE); + obj := fl_add_labelframe(FL_ENGRAVED_FRAME,180,45,100,120,'CrossB'); + fl_set_object_boxtype(obj,FL_FLAT_BOX); + fl_set_object_lstyle(obj,FL_BOLD_STYLE); + obj := fl_add_crossbutton(FL_PUSH_BUTTON,190,115,80,30,'Button'); + fl_set_object_color(obj,FL_COL1,FL_RED); + obj := fl_add_crossbutton(FL_PUSH_BUTTON,190,85,90,30,'Button'); + fl_set_object_color(obj,FL_COL1,FL_GREEN); + obj := fl_add_crossbutton(FL_PUSH_BUTTON,190,55,80,30,'Button'); + fl_set_object_color(obj,FL_COL1,FL_BLUE); + obj := fl_add_button(FL_NORMAL_BUTTON,125,10,65,25,'Exit'); + fdui^.bexit :=obj; + fl_end_form; + fl_set_border_width(oldbw); + + create_form_newbut:=fdui; +end; + + +var cbform : PFD_newbut; + +begin + fl_initialize(@argc, argv, 'FormDemo', nil, 0); + cbform := create_form_newbut(); + fl_show_form(cbform^.newbut, FL_PLACE_CENTER, 0, nil); + while(fl_do_forms <> cbform^.bexit) do ; +end. diff --git a/packages/xforms/examples/nomail.xbm b/packages/xforms/examples/nomail.xbm new file mode 100644 index 0000000000..c49b912100 --- /dev/null +++ b/packages/xforms/examples/nomail.xbm @@ -0,0 +1,58 @@ +Const + +nomail_width = 64; +nomail_height = 64; + +nomail_bits : array[0..511] of byte = +( + $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $01, $00, $00, $00, + $00, $00, $00, $80, $01, $00, $00, $00, $00, $00, $00, $80, + $01, $00, $00, $00, $00, $00, $00, $80, $01, $00, $00, $80, + $07, $00, $00, $80, $01, $00, $00, $70, $38, $00, $00, $80, + $01, $00, $00, $0e, $c0, $00, $00, $80, $01, $00, $c0, $01, + + $00, $01, $00, $80, $01, $00, $38, $00, $00, $02, $00, $80, + $01, $00, $06, $00, $00, $04, $00, $80, $01, $c0, $1f, $00, + $00, $04, $00, $80, $01, $30, $60, $00, $00, $08, $00, $80, + $01, $08, $80, $00, $00, $08, $00, $80, $01, $04, $07, $01, + $00, $10, $00, $80, $01, $82, $0f, $02, $00, $10, $00, $80, + + $01, $82, $0f, $02, $00, $10, $00, $80, $01, $01, $07, $04, + $00, $20, $00, $80, $01, $01, $00, $04, $00, $20, $00, $80, + $81, $00, $00, $08, $00, $26, $00, $80, $81, $00, $00, $08, + $80, $27, $00, $80, $81, $00, $00, $08, $e0, $27, $00, $80, + $81, $22, $a2, $08, $d8, $27, $00, $80, $41, $36, $a5, $10, + + $c6, $27, $00, $80, $41, $aa, $a8, $90, $c1, $27, $00, $80, + $41, $aa, $af, $90, $c1, $27, $00, $80, $41, $a2, $a8, $10, + $c0, $27, $00, $80, $41, $a2, $a8, $17, $c0, $21, $00, $80, + $41, $00, $00, $10, $40, $20, $00, $80, $41, $00, $00, $10, + $00, $20, $00, $80, $41, $fe, $ff, $17, $00, $20, $00, $80, + + $41, $00, $00, $10, $00, $30, $00, $80, $41, $fe, $ff, $17, + $00, $3c, $0e, $80, $41, $00, $00, $10, $00, $0f, $11, $80, + $41, $00, $00, $10, $c0, $1b, $11, $80, $41, $00, $00, $10, + $f0, $e4, $10, $80, $41, $00, $00, $10, $3c, $84, $08, $80, + $41, $00, $00, $10, $0f, $88, $3c, $80, $41, $00, $00, $d0, + + $03, $f0, $43, $80, $41, $00, $00, $f0, $01, $8c, $43, $80, + $c1, $ff, $ff, $3f, $01, $82, $24, $80, $c1, $ff, $ff, $1f, + $01, $82, $18, $80, $01, $00, $02, $02, $01, $fc, $08, $80, + $01, $00, $02, $02, $01, $20, $09, $80, $01, $00, $02, $02, + $01, $10, $06, $80, $01, $00, $02, $02, $01, $10, $00, $80, + + $01, $00, $02, $02, $01, $08, $00, $80, $01, $00, $02, $02, + $01, $08, $00, $80, $01, $00, $02, $02, $01, $b4, $3f, $80, + $01, $00, $02, $02, $01, $0e, $28, $80, $01, $00, $02, $02, + $01, $03, $16, $80, $01, $00, $02, $02, $81, $c0, $11, $80, + $01, $00, $02, $02, $41, $38, $08, $80, $01, $00, $02, $02, + + $21, $04, $04, $80, $01, $00, $02, $02, $11, $03, $02, $80, + $01, $00, $02, $02, $c9, $80, $01, $80, $01, $00, $02, $02, + $25, $60, $00, $80, $01, $00, $02, $02, $13, $18, $00, $80, + $01, $00, $02, $02, $01, $07, $00, $80, $01, $00, $02, $c2, + $fe, $00, $00, $80, $01, $00, $02, $32, $00, $00, $00, $80, + + $01, $00, $02, $0e, $00, $00, $00, $80, $01, $00, $fe, $03, + $00, $00, $00, $80, $01, $00, $00, $00, $00, $00, $00, $80, + $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff ); diff --git a/packages/xforms/examples/objinactive.pp b/packages/xforms/examples/objinactive.pp new file mode 100644 index 0000000000..3674a2ff54 --- /dev/null +++ b/packages/xforms/examples/objinactive.pp @@ -0,0 +1,112 @@ +{ Demo showing activating and deactivating objects +} +program objin; + +uses xforms; + +var +form : PFL_FORM; + + button1, + button2, + button3, + button4, + group, + firstbut : PFL_OBJECT; + +procedure exit_cb(obj : PFL_OBJECT; arg : longint); cdecl; +begin + halt; +end; + + + +Procedure setit(obj : PFL_OBJECT; val : longint); +begin + if (val<>0) then + begin + fl_set_object_lcol(obj,FL_BLACK); + fl_activate_object(obj); + end + else + begin + fl_set_object_lcol(obj,FL_INACTIVE); + fl_deactivate_object(obj); + end +end; + +Procedure setit_cb(obj : PFL_OBJECT; val : longint); cdecl; + +begin + setit (obj,val) +end; + +Procedure doit(b1,b2,b3,b4 : longint); + +begin + setit(button1,b1); + setit(button2,b2); + setit(button3,b3); + setit(button4,b4); +end; + +Procedure set_active(obj : PFL_OBJECT; arg : longint); cdecl; + +begin + case arg of + 0: doit(1,1,1,1); + 1: doit(0,0,0,0); + 2: doit(0,1,0,1); + 3: doit(1,0,1,0); + end; +end; + +Procedure create_form; + +var obj : PFL_OBJECT; + +begin + form := fl_bgn_form(FL_NO_BOX,420,230); + obj := fl_add_box(FL_UP_BOX,0,0,420,230,''); + fl_set_object_color(obj,FL_SLATEBLUE,FL_COL1); + obj := fl_add_button(FL_NORMAL_BUTTON,20,170,150,40,'Button 1'); + button1 := obj; + fl_set_object_lsize(obj,FL_LARGE_SIZE); + fl_set_button_shortcut(obj, '1 ', 1); + obj := fl_add_button(FL_NORMAL_BUTTON,20,120,150,40,'Button 2'); + button2 := obj; + fl_set_object_lsize(obj,FL_LARGE_SIZE); + fl_set_button_shortcut(obj, '2 ', 1); + obj := fl_add_button(FL_NORMAL_BUTTON,20,70,150,40,'Button 3'); + button3 := obj; + fl_set_object_lsize(obj,FL_LARGE_SIZE); + fl_set_button_shortcut(obj, '3 ', 1); + obj := fl_add_button(FL_NORMAL_BUTTON,20,20,150,40,'Button 4'); + button4 := obj; + fl_set_button_shortcut(obj, '4 ', 1); + fl_set_object_lsize(obj,FL_LARGE_SIZE); + group := fl_bgn_group(); + obj := fl_add_lightbutton(FL_RADIO_BUTTON,260,180,140,30,'All active'); + firstbut := obj; + fl_set_object_callback(obj,PFL_CALLBACKPTR(@set_active),0); + obj := fl_add_lightbutton(FL_RADIO_BUTTON,260,150,140,30,'Non active'); + fl_set_object_callback(obj,PFL_CALLBACKPTR(@set_active),1); + obj := fl_add_lightbutton(FL_RADIO_BUTTON,260,120,140,30,'Even active'); + fl_set_object_callback(obj,PFL_CALLBACKPTR(@set_active),2); + obj := fl_add_lightbutton(FL_RADIO_BUTTON,260,90,140,30,'Odd active'); + fl_set_object_callback(obj,PFL_CALLBACKPTR(@set_active),3); + fl_end_group(); + obj := fl_add_button(FL_NORMAL_BUTTON,270,20,130,30,'Quit'); + fl_set_object_callback(obj,PFL_CALLBACKPTR(@exit_cb),0); + fl_end_form(); +end; + +begin + fl_initialize(@argc, argv, 'FormDemo', nil, 0); + create_form; + + fl_set_button(firstbut,1); + fl_show_form(form,FL_PLACE_CENTER,FL_NOBORDER,NiL); + while (fl_do_forms()<>nil) do + begin end; +end. diff --git a/packages/xforms/examples/objpos.pp b/packages/xforms/examples/objpos.pp new file mode 100644 index 0000000000..ed35f171d0 --- /dev/null +++ b/packages/xforms/examples/objpos.pp @@ -0,0 +1,46 @@ +program objpos; + +uses xforms; + +const + dx : TFL_Coord = 11 ; + dy : TFL_Coord = 7 ; + +procedure move_cb(ob : PFL_OBJECT; data : longint);cdecl; + +var + but : PFL_OBJECT; + x,y,w,h : TFL_COORD; + +begin + but := PFL_OBJECT (data); + fl_get_object_geometry(but,@x,@y, @w, @h); + + if ( (x + dx) < 0) or ( (x+w+dx) >= but^.form^.w) then + dx := -dx; + if ( (y + dy) < 0) or ( (y+h+dy) >= but^.form^.h) then + dy := -dy; + x := x+dx; + y := y+dy; + + fl_set_object_position(but,x,y); +end; + +var + form : PFL_FORM; + but, obj : PFL_OBJECT ; + +begin + fl_initialize(@argc, argv, 'FormDemo', nil, 0); + + form := fl_bgn_form(FL_DOWN_BOX,400,200); + but := fl_add_button(FL_NORMAL_BUTTON,140,160,70,35,'Exit'); + obj := fl_add_button(FL_TOUCH_BUTTON,330,150,50,30,'Move'); + fl_set_object_callback(obj,PFL_CALLBACKPTR(@move_cb),longint(but)); + fl_end_form(); + + fl_show_form(form,FL_PLACE_MOUSE,FL_NOBORDER,'ObjPos'); + + fl_do_forms(); + +end. diff --git a/packages/xforms/examples/objreturn.pp b/packages/xforms/examples/objreturn.pp new file mode 100644 index 0000000000..eaa47830d4 --- /dev/null +++ b/packages/xforms/examples/objreturn.pp @@ -0,0 +1,120 @@ +{ demo showing the choices when to return object. Note this program, + * strictly speaking, is illegal in the usage of user data parameter + * in the callback function. + } +program objreturn; + +uses xforms; + + +{*** Forms and Objects ***} +type +TFD_FORM = record + form0 : PFL_FORM; + obj : array [0..3] of PFL_OBJECT; + br : PFL_OBJECT; + when : PFL_OBJECT; + vdata : pointer; + ldata : longint; +end; +PFD_FORM = ^TFD_FORM; + +var +fd_form0 : PFD_form; + +{ callbacks for form form0 } +procedure return_cb(ob : PFL_OBJECT; data : longint); cdecl; + +begin + fl_addto_browser(fd_form0^.br, pchar(data)); +end; + +procedure set_when( n : longint); + +begin + fl_set_object_return(fd_form0^.obj[0], n); + fl_set_object_return(fd_form0^.obj[1], n); + fl_set_object_return(fd_form0^.obj[2], n); + fl_set_object_return(fd_form0^.obj[3], n); +end; + +procedure when_cb(ob : PFL_OBJECT; data : longint); cdecl; + +var n : longint; + +begin + n := fl_get_choice(ob) - 1; + if (n >= 0) then + set_when(n); +end; + +procedure resetlog_cb(ob : PFL_OBJECT; data : longint);cdecl; + +begin + fl_clear_browser(fd_form0^.br); +end; + +Function create_form_form0 : PFD_FORM; + +Const Preturn : pchar = 'slider returned'; + Pcounter : pchar = 'counter returned'; + Pinput : pchar = 'input2 returned'; + Pinput1 : Pchar = 'input1 returned'; + +var + obj : PFL_OBJECT; + fdui : PFD_form; + old_bw : longint; + +begin + new(fdui); + old_bw := fl_get_border_width(); + + fl_set_border_width(-2); + fdui^.form0 := fl_bgn_form(FL_NO_BOX, 321, 276); + obj := fl_add_box(FL_UP_BOX,0,0,321,276,''); + obj := fl_add_valslider(FL_HOR_SLIDER,12,55,138,22,''); + fdui^.obj[0] := obj; + fl_set_object_lalign(obj,FL_ALIGN_BOTTOM or FL_ALIGN_INSIDE); + fl_set_object_callback(obj,PFL_CALLBACKPTR(@return_cb),longint(Preturn)); + fl_set_slider_return(obj, FL_RETURN_CHANGED); + obj := fl_add_counter(FL_NORMAL_COUNTER,12,85,138,22,''); + fdui^.obj[1] := obj; + fl_set_object_lalign(obj,FL_ALIGN_BOTTOM or FL_ALIGN_INSIDE); + fl_set_object_callback(obj,PFL_CALLBACKPTR(@return_cb),longint(PCounter)); + obj := fl_add_input(FL_NORMAL_INPUT,12,187,138,25,''); + fdui^.obj[3] := obj; + fl_set_object_lalign(obj,FL_ALIGN_LEFT or FL_ALIGN_INSIDE); + fl_set_object_callback(obj,PFL_CALLBACKPTR(@return_cb),longint(Pinput)); + obj := fl_add_input(FL_NORMAL_INPUT,12,150,138,25,''); + fdui^.obj[2] := obj; + fl_set_object_callback(obj,PFL_CALLBACKPTR(@return_cb),longint(Pinput1)); + obj := fl_add_browser(FL_NORMAL_BROWSER,170,55,140,160,''); + fdui^.br := obj; + obj := fl_add_choice(FL_NORMAL_CHOICE,80,12,168,27,''); + fdui^.when := obj; + fl_set_object_callback(obj,PFL_CALLBACKPTR(@when_cb),0); + obj := fl_add_button(FL_NORMAL_BUTTON,170,239,80,25,'Done'); + obj := fl_add_button(FL_NORMAL_BUTTON,70,239,80,25,'ResetLog'); + fl_set_object_callback(obj,PFL_CALLBACKPTR(@resetlog_cb),0); + fl_end_form(); + fl_set_border_width(old_bw); + + create_form_form0:= fdui; +end; + + +begin + fl_initialize(@argc, argv, 'FormDemo', nil, 0); + fd_form0 := create_form_form0; + + { fill-in form initialization code } + set_when(0); + fl_set_object_dblbuffer(fd_form0^.br, 1); + fl_addto_choice(fd_form0^.when, + 'RETURN_END_CHANGED|RETURN_CHANGED|RETURN_END|RETURN_ALWAYS'); + + { show the first form } + fl_show_form(fd_form0^.form0, FL_PLACE_CENTER, FL_FULLBORDER, 'form0'); + fl_do_forms(); +end. diff --git a/packages/xforms/examples/porsche.xpm b/packages/xforms/examples/porsche.xpm new file mode 100644 index 0000000000..08ac4dfa2d --- /dev/null +++ b/packages/xforms/examples/porsche.xpm @@ -0,0 +1,72 @@ +{ XPM } +const porsche : array[0..68] of pchar = ( +'64 64 4 1 ', +' c None m None s s_slateblue ', +'. c yellow m white s s_yellow ', +'r c red m white s s_red ', +'b c black m black s s_black ', +' ', +' ', +' bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb ', +' bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb ', +' bb............................................bb ', +' bb..bbbb..bbbb..bbbb..bbbb..bbbb..b..b..bbbb..bb ', +' bb..b..b..b..b..b..b..b..b..b..b..b..b..b.....bb ', +' bb..b..b..b..b..b..b..b.....b.....b..b..b.....bb ', +' bb..bbbb..b..b..bbb...bbbb..b.....bbbb..bbbb..bb ', +' bb..b.....b..b..b..b.....b..b.....b..b..b.....bb ', +' bb..b.....b..b..b..b..b..b..b..b..b..b..b.....bb ', +' bb..b.....bbbb..b..b..bbbb..bbbb..b..b..bbbb..bb ', +' bb............................................bb ', +' bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb ', +' bb.....................bbbbbbbbbbbbbbbbbbbbbbbbb ', +' bb......b...b...bb.....bbbbbbbbbbbbbbbbbbbbbbbbb ', +' bb.....b...b...b....b..bbbbbbbbbbbbbbbbbbbbbbbbb ', +' bb....bb..bb.bbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbb ', +' bb...bbbbbbbb......bb..bbrrrrrrrrrrrrrrrrrrrrrbb ', +' bb..bbbb...............bbrrrrrrrrrrrrrrrrrrrrrbb ', +' bb.bbb.................bbrrrrrrrrrrrrrrrrrrrrrbb ', +' bb..........b..b.......bbrrrrrrrrrrrrrrrrrrrrrbb ', +' bb.....b...b..b........bbrrrrrrrrrrrrrrrrrrrrrbb ', +' bb....b...b..b..bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb ', +' bb....b.bbbbbbbbb..............bbbbbbbbbbbbbbbbb ', +' bb...bbbb.......bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb ', +' bb..bbb.........b..............bbbbbbbbbbbbbbbbb ', +' bb.bbb..........b...bbb........bbbbbbbbbbbbbbbbb ', +' bb.........b..b.b..bbbbb.......bbbbbbbbbbbbbbbbb ', +' bb.....b..b..b..b..b.bbb.....b.brrrrrrrrrrrrrrbb ', +' bb....b..b..b..bb....bbb....bb.brrrrrrrrrrrrrrbb ', +' bb...bb.bbbbbbb.b....bbb....bb.brrrrrrrrrrrrrrbb ', +' bb..bbbbb......bb...bbbbb...b..brrrrrrrrrrrrrrbb ', +' bb.bbb..........b.bbbbbbbbbbb..brrrrrrrrrrrrrrbb ', +' bb..............b.b.bbbbbbbbb..brrrrrrrrrrrrrrbb ', +' bbbbbbbbbbbbbbbbb.b.b....bbbb..bbbbbbbbbbbbbbbbb ', +' bbbbbbbbbbbbbbbbb...b.....b.b..b..............bb ', +' bbbbbbbbbbbbbbbbb........bb.bb.b...b..b.......bb ', +' bbbbbbbbbbbbbbbb........b..b..b..b..b...b...bb ', +' bbbbbbbbbbbbbbbb.......b..b...b.b..b...b....bb ', +' bbbbbbbbbbbbbbbbb............b.bbbbbbbbbb...bb ', +' bbrrrrrrrrrrrrrrb..........bbbb........bb.bb ', +' bbrrrrrrrrrrrrrrrb........bbbb............bb ', +' bbrrrrrrrrrrrrrrrbbbbbbbb.......b..b....bb ', +' bbrrrrrrrrrrrrrrrrrrbb.....b...b..b..b..bb ', +' bbrrrrrrrrrrrrrrrrrbb....b...b..b..b..bb ', +' bbrrrrrrrrrrrrrrrrrbb...bb.bbbbbbbb...bb ', +' bbbbbbbbbbbbbbbbbbbb...bbbb......bb.bb ', +' bbbbbbbbbbbbbbbbbbb..bbb...........b ', +' bbbbbbbbbbbbbbbbbbb.bbb...........bb ', +' bbbbbbbbbbbbbbbbbb..............bb ', +' bbbbbbbbbbbbbbbbb...b.b.b.....bb ', +' bbbbbbbbbbbbbbbb..b.b.b..b..bb ', +' bbrrrrrrrrrrrbb..bbbbbbb..bb ', +' bbrrrrrrrrrrbb.bbb....b.bb ', +' bbrrrrrrrrrbb.bb......bb ', +' bbbrrrrrrrbb.......bbb ', +' bbbbrrrrrbb.....bbbb ', +' bbbbrrrbb...bbbb ', +' bbbbrbb.bbbb ', +' bbbbbbbb ', +' bbbb ', +' bb ', +' ' +); diff --git a/packages/xforms/examples/positioner.pp b/packages/xforms/examples/positioner.pp new file mode 100644 index 0000000000..dbaf28883b --- /dev/null +++ b/packages/xforms/examples/positioner.pp @@ -0,0 +1,55 @@ +{ This demo shows the use of a positioner. } +program positioner; + +uses xforms; + +var + xval, yval : PFL_Object; + +{ callback routine } + +Procedure Do_position (ob :PFL_OBJECT; q : longint); + +var + st : string [30]; + +begin + + str(fl_get_positioner_xvalue(ob),st);st:=st+#0; + fl_set_object_label(xval,@st[1]); + str(fl_get_positioner_yvalue(ob),st);st:=st+#0; + fl_set_object_label(yval,@st[1]); +end; + +procedure positioner_cb(ob :PFL_OBJECT; q : longint);cdecl; + +begin + Do_Position (ob,q); +end; + +var + form : PFL_FORM; + thepos, button : PFL_OBJECT; + + +begin + + fl_initialize(@argc, argv, 'FormDemo', nil, 0); + + form := fl_bgn_form(FL_UP_BOX,400,280); + thepos := fl_add_positioner(FL_NORMAL_POSITIONER,40,40,200,200,''); + fl_set_positioner_xbounds(thepos,0,1); + fl_set_positioner_ybounds(thepos,0,1); + fl_set_object_callback(thepos,PFL_CALLBACKPTR(@positioner_cb),0); + xval := fl_add_box(FL_DOWN_BOX,270,40,100,30,''); + yval := fl_add_box(FL_DOWN_BOX,270,90,100,30,''); + fl_set_object_color(xval,FL_COL1,FL_COL1); + fl_set_object_color(yval,FL_COL1,FL_COL1); + button := fl_add_button(FL_NORMAL_BUTTON,270,210,100,30,'Exit'); + fl_end_form(); + + fl_show_form(form,FL_PLACE_CENTER,FL_NOBORDER,NiL); + Do_position(thepos,0); + fl_do_forms; + fl_hide_form(form); +end. diff --git a/packages/xforms/examples/pup.pp b/packages/xforms/examples/pup.pp new file mode 100644 index 0000000000..8cbf7e86b6 --- /dev/null +++ b/packages/xforms/examples/pup.pp @@ -0,0 +1,236 @@ +{ Demo: complete pop-ups. + * test font/cursor change + * test attaching pup to menu + } +program popup; + +uses xforms,strings; + +var +pup : PFL_FORM; +done, pret, b1, b2, b3, menu : PFL_OBJECT; + +var + aa : TFL_IOPT; + mask : cardinal; + + +const + subm : longint = -1; + m : longint = -1; + ssm : longint = 0; + n1 : longint = -1; + n2 : longint = -1; + n : longint = 0; + +{ post-handler } +function post(ob : PFL_OBJECT; ev : Longint; mx,y : TFL_Coord; key : longint; xev : pointer) : Longint; + +begin + if (n1 = -1) then + begin + n1 := fl_defpup(FL_ObjWin(ob),'line1|line2'); + fl_setpup_shadow(n1,0); + fl_setpup_bw(n1,0); + fl_setpup_pad(n1,3,0); + + n2 := fl_defpup(FL_ObjWin(ob),'button1|button2'); + fl_setpup_shadow(n2,0); + fl_setpup_bw(n2,-1); + fl_setpup_pad(n2,3,0); + end; + + if (ev = FL_ENTER) then + begin + if (ob=b3) then + fl_show_oneliner('button3',ob^.form^.x+ob^.x, + ob^.form^.y+ob^.y + ob^.h + 5) + else + begin + fl_setpup_position(ob^.form^.x+ob^.x, ob^.form^.y+ob^.y+ob^.h + 5); + if ob=b1 then + fl_showpup(n1) + else + fl_showpup(n2); + end + end + else if(ev <> FL_MOTION) then + begin + if (ob=b3) then + fl_hide_oneliner + else + if ob=b1 then + fl_hidepup(n1) + else + fl_hidepup(n2); + end; +end; + + +procedure show_return_val(i : longint); + +var + buf : string[128]; + +begin + str(i,buf); + buf:= 'Returned '+buf; + if i>0 then + buf:=buf+'('++strpas(fl_getpup_text(m,i))+')'#0; + + fl_set_object_label(pret, @buf[1]); +end; + +function ssm_cb(a : longint) : longint; +begin + show_return_val(a); + ssm_cb:=a; +end; + +procedure do_pup(ob : PFL_OBJECT; q : longint); + +begin + if (subm = -1) then + begin + ssm := fl_newpup(FL_ObjWin(ob)); + subm := fl_newpup(FL_ObjWin(ob)); + m := fl_newpup(FL_ObjWin(ob)); + + { Problem, variable nr. of arguments in c code !!!!} + { fl_addtopup(ssm,'SubSubM%F%t',ssm_cb); } + fl_addtopup(ssm,'SSMItem20%x20%R1'); + fl_addtopup(ssm,'SSMItem21%x21%r1'); + fl_addtopup(ssm,'SSMItem22%x22%r1%l'); + fl_addtopup(ssm,'SSMitem30%x30%R2'); + fl_addtopup(ssm,'SSMItem31%x31%r2'); + fl_addtopup(ssm,'SSMItem32%x32%r2'); + + fl_addtopup(subm,'SubMenu%t'); + fl_addtopup(subm,'SMItemA\tAlt-A%x10%h','#a'); + fl_addtopup(subm,'SMItemB\tAlt-B%x11%h','#b'); + fl_addtopup(subm,'SMItemC\tAlt-C%x12%h','#c'); + fl_addtopup(subm,'SMItemD\tAlt-F5%x13%h%m','#&5',ssm); + fl_addtopup(subm,'SMItemE\tAlt-E%x14','#E'); + + fl_setpup_mode(subm, 14, FL_PUP_GREY); + + fl_addtopup(m,'PopUP%t'); + fl_addtopup(m,'MenuItem1%h','1#1'); + + fl_addtopup(m,'MenuItem2%h','2#2'); + fl_setpup_submenu(m, 2, subm); + fl_addtopup(m,'MenuItem3%h','3#3'); + fl_addtopup(m,'MenuItem4%h','4#4'); + end; + + + if (fl_get_button_numb(ob) >= FL_SHORTCUT) then + fl_setpup_position(ob^.form^.x + ob^.x, + ob^.form^.y + ob^.y + ob^.h); + + show_return_val(fl_dopup(m)); + + { test if changing size/style ok } + n := not(n); + if n<>0 then + begin + fl_setpup_fontsize(14); + fl_setpup_fontstyle(FL_TIMES_STYLE); + fl_setpup_cursor(m, XC_hand2); + end + else + begin + fl_setpup_fontsize(12); + fl_setpup_fontstyle(FL_BOLDITALIC_STYLE); + fl_setpup_cursor(m,XC_sb_right_arrow); + end; +end; + +procedure init_menu; +var + mm,smm : longint; + +begin + mm := fl_newpup(fl_default_win); + fl_setpup_bw(mm, -2); + fl_setpup_shadow(mm, 0); + smm := fl_newpup(0); + fl_setpup_shadow(smm, 0); + + fl_addtopup(mm,'MenuItem1|MenuItem2%m|MenuItem3',smm); + fl_addtopup(smm,'SubItem1%x11|SubItem2%x12|SubItem3%x13'); + + + { attach pup to menu } + + fl_set_menu_popup(menu, mm); +end; + + +procedure do_menu(ob : PFL_OBJECT; data : longint); +var + buf : string[128]; + +begin + str(fl_get_menu(ob),buf); + if (fl_get_menu(ob) >= 0) then + buf:=buf+strpas(fl_get_menu_text(ob)); + buf:=buf+#0; + + fl_set_object_label(pret, @buf[1]); +end; + +procdure done_cb(ob : PFL_OBJECT; data : longint); + +begin + halt(0) +end; + +procedure create_form_pup; + +var + obj : PFL_OBJECT ; + +begin + if (pup<>nil) then + exit; + pup := fl_bgn_form(FL_UP_BOX,260,210); + obj := fl_add_button(FL_NORMAL_BUTTON,150,150,90,35,'Done'); + fl_set_object_callback(obj,PFL_CALLBACKPTR(@done_cb), 0); + done := obj; + obj := fl_add_button(FL_MENU_BUTTON,30,90,100,30,'PopUp'); + fl_set_button_shortcut(obj,'Pp#p',1); + fl_set_object_callback(obj, PFL_CALLBACKPTR(@do_pup), 0); + obj := fl_add_menu(FL_PULLDOWN_MENU,160,95,60,25,'Menu'); + fl_set_object_callback(obj, PFL_CALLBACKPTR(@do_menu), 0); + menu := obj; + obj := fl_add_text(FL_NORMAL_TEXT,20,60,220,30,''); + fl_set_object_lalign(obj,FL_ALIGN_CENTER); + pret := obj; + b1 := fl_add_button(FL_NORMAL_BUTTON, 20, 10, 60, 30,'Button1'); + b2 := fl_add_button(FL_NORMAL_BUTTON, 90, 10, 60, 30,'Button2'); + b3 := fl_add_button(FL_NORMAL_BUTTON, 160, 10, 60, 30,'Button3'); + fl_end_form(); +end; + + +begin + mask := FL_PDVisual; + aa.vclass := FL_DefaultVisual; + fl_set_defaults(mask, @aa); + + fl_initialize(@argc, argv, 'FormDemo', nil, 0); + + create_form_pup(); + + { initialize } + + fl_set_object_posthandler(b1, @post); + fl_set_object_posthandler(b2, @post); + fl_set_object_posthandler(b3, @post); + + fl_show_form(pup, FL_PLACE_MOUSE, FL_TRANSIENT,'PupDemo'); + init_menu; + + fl_do_forms; +end. diff --git a/packages/xforms/examples/pushbutton.pp b/packages/xforms/examples/pushbutton.pp new file mode 100644 index 0000000000..8ce03a9598 --- /dev/null +++ b/packages/xforms/examples/pushbutton.pp @@ -0,0 +1,45 @@ +Program pushButtons; +{ A demo that shows the use of push buttons. } + +uses xforms; + +var form : PFL_FORM; + Abox : array[0..8] of PFL_OBJECT; + +procedure push_cb( ob : PFL_OBJECT; n : longint);cdecl; + +begin + if (fl_get_button(ob)<>0) then + fl_show_object(abox[n]) + else + fl_hide_object(abox[n]); +end; + + +Procedure makeform; + +Var i : Integer; + obj : PFL_OBJECT; + +begin + form := fl_bgn_form(FL_UP_BOX,400,400); + for i:=0 to 7 do + begin + obj := fl_add_button(FL_PUSH_BUTTON,40,310-40*i,80,30,''); + fl_set_object_color(obj,FL_BLACK+i+1,FL_BLACK+i+1); + fl_set_object_callback(obj,PFL_CALLBACKPTR(@push_cb),i); + abox[i] := fl_add_box(FL_DOWN_BOX,150+30*i,40,25,320,''); + fl_set_object_color(abox[i],FL_BLACK+i+1,FL_BLACK+i+1); + fl_hide_object(abox[i]); + end; + fl_add_button(FL_NORMAL_BUTTON,40,350,80,30,'Exit'); + fl_end_form; +end; + +Begin + fl_initialize(@argc, argv, 'FormDemo', nil,0); + makeform; + fl_show_form(form,FL_PLACE_CENTER,FL_NOBORDER,'Push Buttons'); + { fl_do_forms will return only when Exit is pressed } + fl_do_forms; +end. diff --git a/packages/xforms/examples/pushme.pp b/packages/xforms/examples/pushme.pp new file mode 100644 index 0000000000..16a7d9e4ad --- /dev/null +++ b/packages/xforms/examples/pushme.pp @@ -0,0 +1,16 @@ +Program pushme; + +uses xforms; + +var simpleform : PFL_FORM; +{ formname,buttonname : string; +} +begin + fl_initialize(@argc, argv, 'FormDemo', nil, 0); + simpleform := fl_bgn_form(FL_UP_BOX,230,160); + fl_add_button(FL_NORMAL_BUTTON,40,50,150,60,'Pushme'); + fl_end_form; + fl_show_form(simpleform, FL_PLACE_MOUSE, FL_NOBORDER, 'Push me'); + fl_do_forms; + fl_hide_form(simpleform); +end. diff --git a/packages/xforms/examples/secretinput.pp b/packages/xforms/examples/secretinput.pp new file mode 100644 index 0000000000..d88d323c26 --- /dev/null +++ b/packages/xforms/examples/secretinput.pp @@ -0,0 +1,29 @@ +program secretinput; +{ Demo showing secret input fields } + +uses xforms,strings; + +var form : PFL_FORM; + but, password1, password2, info, ret : PFL_OBJECT; + str : string; + +begin + + fl_initialize(@argc, argv, 'FormDemo', nil, 0); + + form := fl_bgn_form( FL_FLAT_BOX,400,300); + password1 := fl_add_input(FL_SECRET_INPUT,140,40,160,40,'Password 1:'); + password2 := fl_add_input(FL_SECRET_INPUT,140,100,160,40,'Password 2:'); + info := fl_add_box(FL_SHADOW_BOX,20,160,360,40,''); + but := fl_add_button( FL_NORMAL_BUTTON,280,240,100,40,'Quit'); + fl_end_form; + + fl_show_form(form, FL_PLACE_MOUSE,FL_NOBORDER,nil); + repeat + ret := fl_do_forms; + str:='Password 1 is: '+strpas(fl_get_input(password1)); + str:=str+' , Password 2 is: '+strpas(fl_get_input(password2))+#0; + fl_set_object_label(info,@str[1]); + until (ret = but); + fl_hide_form(form); +end. diff --git a/packages/xforms/examples/sliderall.pp b/packages/xforms/examples/sliderall.pp new file mode 100644 index 0000000000..404c18fb7b --- /dev/null +++ b/packages/xforms/examples/sliderall.pp @@ -0,0 +1,75 @@ +{ This demo shows the different types of sliders } + +program sliderall; + +uses xforms; + +var +form : PFL_FORM; +exitobj : PFL_OBJECT; + +procedure create_form_form; +var + obj : PFL_OBJECT; +begin + form := fl_bgn_form(FL_NO_BOX,780,320); + obj := fl_add_box(FL_UP_BOX,0,0,780,320,''); + fl_set_object_color(obj,FL_PALEGREEN,FL_COL1); + obj := fl_add_box(FL_SHADOW_BOX,20,30,360,270,'SLIDER'); + fl_set_object_color(obj,FL_SLATEBLUE,47); + fl_set_object_lalign(obj,FL_ALIGN_TOP); + fl_set_object_lstyle(obj,FL_BOLD_STYLE); + obj := fl_add_box(FL_SHADOW_BOX,390,30,370,270,'VALSLIDER'); + fl_set_object_color(obj,FL_SLATEBLUE,FL_COL1); + fl_set_object_lalign(obj,FL_ALIGN_TOP); + fl_set_object_lstyle(obj,FL_BOLD_STYLE); + obj := fl_add_slider(FL_VERT_SLIDER,30,50,40,220,'vert'); + fl_set_object_color(obj,FL_INDIANRED,FL_PALEGREEN); + obj := fl_add_slider(FL_VERT_FILL_SLIDER,80,50,40,220,'vert_fill'); + fl_set_object_color(obj,FL_INDIANRED,FL_PALEGREEN); + obj := fl_add_slider(FL_HOR_SLIDER,180,50,190,40,'hor'); + fl_set_object_color(obj,FL_INDIANRED,FL_PALEGREEN); + obj := fl_add_slider(FL_HOR_FILL_SLIDER,180,110,190,40,'hor_fill'); + fl_set_object_color(obj,FL_INDIANRED,FL_PALEGREEN); + obj := fl_add_valslider(FL_VERT_NICE_SLIDER,610,50,30,220,'vert_nice'); + fl_set_object_boxtype(obj,FL_FLAT_BOX); + fl_set_object_color(obj,FL_SLATEBLUE,FL_INDIANRED); + obj := fl_add_valslider(FL_VERT_FILL_SLIDER,660,50,40,220,'vert_fill'); + fl_set_object_color(obj,FL_INDIANRED,FL_PALEGREEN); + + obj := fl_add_valslider(FL_HOR_SLIDER,400,50,190,40,'hor'); + fl_set_object_color(obj,FL_INDIANRED,FL_PALEGREEN); + obj := fl_add_valslider(FL_HOR_FILL_SLIDER,400,110,190,40,'hor_fill'); + fl_set_object_color(obj,FL_INDIANRED,FL_PALEGREEN); + obj := fl_add_valslider(FL_HOR_BROWSER_SLIDER,400,220,190,25,'hor_browser'); + obj := fl_add_button(FL_NORMAL_BUTTON,450,260,100,30,'Exit'); + fl_set_object_color(obj,FL_INDIANRED,FL_RED); + exitobj:=obj; + obj := fl_add_slider(FL_VERT_NICE_SLIDER,130,50,30,220,'vert_nice'); + fl_set_object_boxtype(obj,FL_FLAT_BOX); + fl_set_object_color(obj,FL_SLATEBLUE,FL_INDIANRED); + obj := fl_add_slider(FL_HOR_NICE_SLIDER,180,170,190,30,'hor_nice'); + fl_set_object_boxtype(obj,FL_FLAT_BOX); + fl_set_object_color(obj,FL_SLATEBLUE,FL_INDIANRED); + obj := fl_add_slider(FL_HOR_BROWSER_SLIDER,180,220,190,25,'hor_browser'); + obj := fl_add_valslider(FL_HOR_NICE_SLIDER,400,170,190,30,'hor_nice'); + fl_set_object_boxtype(obj,FL_FLAT_BOX); + fl_set_object_color(obj,FL_SLATEBLUE,FL_INDIANRED); + obj := fl_add_valslider(FL_VERT_SLIDER,710,50,40,220,'vert'); + fl_set_object_color(obj,FL_INDIANRED,FL_PALEGREEN); + fl_end_form; +end; + + +var obj : PFL_OBJECT; + +begin + fl_initialize(@argc, argv, 'FormDemo', nil, 0); + create_form_form; + + fl_show_form(form,FL_PLACE_CENTER,FL_NOBORDER,'All Sliders'); + repeat + obj := fl_do_forms; + until (obj = exitobj); + fl_hide_form(form); +end. diff --git a/packages/xforms/examples/srs.xbm b/packages/xforms/examples/srs.xbm new file mode 100644 index 0000000000..5253f04da3 --- /dev/null +++ b/packages/xforms/examples/srs.xbm @@ -0,0 +1,68 @@ +Const +sorceress_width = 75; +sorceress_height = 75; +sorceress_bits : array[1..750] of byte = +( + $fc, $7e, $40, $20, $90, $00, $07, $80, $23, $00, $00, $c6, + $c1, $41, $98, $b8, $01, $07, $66, $00, $15, $9f, $03, $47, + $8c, $c6, $dc, $7b, $cc, $00, $b0, $71, $0e, $4d, $06, $66, + $73, $8e, $8f, $01, $18, $c4, $39, $4b, $02, $23, $0c, $04, + $1e, $03, $0c, $08, $c7, $ef, $08, $30, $06, $07, $1c, $02, + $06, $30, $18, $ae, $c8, $98, $3f, $78, $20, $06, $02, $20, + $60, $a0, $c4, $1d, $c0, $ff, $41, $04, $fa, $63, $80, $a1, + $a4, $3d, $00, $84, $bf, $04, $0f, $06, $fc, $a1, $34, $6b, + $01, $1c, $c9, $05, $06, $c7, $06, $be, $11, $1e, $43, $30, + $91, $05, $c3, $61, $02, $30, $1b, $30, $cc, $20, $11, $00, + $c1, $3c, $03, $20, $0a, $00, $e8, $60, $21, $00, $61, $1b, + $c1, $63, $08, $f0, $c6, $c7, $21, $03, $f8, $08, $e1, $cf, + $0a, $fc, $4d, $99, $43, $07, $3c, $0c, $f1, $9f, $0b, $fc, + $5b, $81, $47, $02, $16, $04, $31, $1c, $0b, $1f, $17, $89, + $4d, $06, $1a, $04, $31, $38, $02, $07, $56, $89, $49, $04, + $0b, $04, $b1, $72, $82, $a1, $54, $9a, $49, $04, $1d, $66, + $50, $e7, $c2, $f0, $54, $9a, $58, $04, $0d, $62, $c1, $1f, + $44, $fc, $51, $90, $90, $04, $86, $63, $e0, $74, $04, $ef, + $31, $1a, $91, $00, $02, $e2, $c1, $fd, $84, $f9, $30, $0a, + $91, $00, $82, $a9, $c0, $b9, $84, $f9, $31, $16, $81, $00, + $42, $a9, $db, $7f, $0c, $ff, $1c, $16, $11, $00, $02, $28, + $0b, $07, $08, $60, $1c, $02, $91, $00, $46, $29, $0e, $00, + $00, $00, $10, $16, $11, $02, $06, $29, $04, $00, $00, $00, + $10, $16, $91, $06, $a6, $2a, $04, $00, $00, $00, $18, $24, + $91, $04, $86, $2a, $04, $00, $00, $00, $18, $27, $93, $04, + $96, $4a, $04, $00, $00, $00, $04, $02, $91, $04, $86, $4a, + $0c, $00, $00, $00, $1e, $23, $93, $04, $56, $88, $08, $00, + $00, $00, $90, $21, $93, $04, $52, $0a, $09, $80, $01, $00, + $d0, $21, $95, $04, $57, $0a, $0f, $80, $27, $00, $d8, $20, + $9d, $04, $5d, $08, $1c, $80, $67, $00, $e4, $01, $85, $04, + $79, $8a, $3f, $00, $00, $00, $f4, $11, $85, $06, $39, $08, + $7d, $00, $00, $18, $b7, $10, $81, $03, $29, $12, $cb, $00, + $7e, $30, $28, $00, $85, $03, $29, $10, $be, $81, $ff, $27, + $0c, $10, $85, $03, $29, $32, $fa, $c1, $ff, $27, $94, $11, + $85, $03, $28, $20, $6c, $e1, $ff, $07, $0c, $01, $85, $01, + $28, $62, $5c, $e3, $8f, $03, $4e, $91, $80, $05, $39, $40, + $f4, $c2, $ff, $00, $9f, $91, $84, $05, $31, $c6, $e8, $07, + $7f, $80, $cd, $00, $c4, $04, $31, $06, $c9, $0e, $00, $c0, + $48, $88, $e0, $04, $79, $04, $db, $12, $00, $30, $0c, $c8, + $e4, $04, $6d, $06, $b6, $23, $00, $18, $1c, $c0, $84, $04, + $25, $0c, $ff, $c2, $00, $4e, $06, $b0, $80, $04, $3f, $8a, + $b3, $83, $ff, $c3, $03, $91, $84, $04, $2e, $d8, $0f, $3f, + $00, $00, $5f, $83, $84, $04, $2a, $70, $fd, $7f, $00, $00, + $c8, $c0, $84, $04, $4b, $e2, $2f, $01, $00, $08, $58, $60, + $80, $04, $5b, $82, $ff, $01, $00, $08, $d0, $a0, $84, $04, + $72, $80, $e5, $00, $00, $08, $d2, $20, $44, $04, $ca, $02, + $ff, $00, $00, $08, $de, $a0, $44, $04, $82, $02, $6d, $00, + $00, $08, $f6, $b0, $40, $02, $82, $07, $3f, $00, $00, $08, + $44, $58, $44, $02, $93, $3f, $1f, $00, $00, $30, $88, $4f, + $44, $03, $83, $23, $3e, $00, $00, $00, $18, $60, $e0, $07, + $e3, $0f, $fe, $00, $00, $00, $70, $70, $e4, $07, $c7, $1b, + $fe, $01, $00, $00, $e0, $3c, $e4, $07, $c7, $e3, $fe, $1f, + $00, $00, $ff, $1f, $fc, $07, $c7, $03, $f8, $33, $00, $c0, + $f0, $07, $ff, $07, $87, $02, $fc, $43, $00, $60, $f0, $ff, + $ff, $07, $8f, $06, $be, $87, $00, $30, $f8, $ff, $ff, $07, + $8f, $14, $9c, $8f, $00, $00, $fc, $ff, $ff, $07, $9f, $8d, + $8a, $0f, $00, $00, $fe, $ff, $ff, $07, $bf, $0b, $80, $1f, + $00, $00, $ff, $ff, $ff, $07, $7f, $3a, $80, $3f, $00, $80, + $ff, $ff, $ff, $07, $ff, $20, $c0, $3f, $00, $80, $ff, $ff, + $ff, $07, $ff, $01, $e0, $7f, $00, $c0, $ff, $ff, $ff, $07, + $ff, $0f, $f8, $ff, $40, $e0, $ff, $ff, $ff, $07, $ff, $ff, + $ff, $ff, $40, $f0, $ff, $ff, $ff, $07, $ff, $ff, $ff, $ff, + $41, $f0, $ff, $ff, $ff, $07); diff --git a/packages/xforms/examples/touchbutton.pp b/packages/xforms/examples/touchbutton.pp new file mode 100644 index 0000000000..c17fec45ab --- /dev/null +++ b/packages/xforms/examples/touchbutton.pp @@ -0,0 +1,53 @@ +{ This demo shows the use of a touch buttons. } +program touchbutton; + +uses strings,xforms; + +var form : PFL_FORM; + valobj,obj : PFL_OBJECT; + value : LongInt; + + +Procedure show_val(ob : PFL_OBJECT;delta : Longint);cdecl; + +var st : string[32]; + +begin + value:=value+delta; + str(value,st); + st:=st+#0; + fl_set_object_label(valobj, @st[1]); +end; + + +begin + fl_initialize(@argc, argv, 'FormDemo', nil, 0); + form := fl_bgn_form(FL_UP_BOX,360,140); + obj := fl_add_button(FL_TOUCH_BUTTON,50,30,40,30,'@<<'); + fl_set_object_boxtype(obj,FL_FRAME_BOX); + fl_set_object_color(obj, FL_COL1, FL_INDIANRED); + fl_set_object_callback(obj, PFL_CALLBACKPTR(@show_val),-5); + fl_set_button_shortcut(obj,'1'#0, 0); + obj := fl_add_button(FL_TOUCH_BUTTON,90,30,40,30,'@<'); + fl_set_object_boxtype(obj,FL_FRAME_BOX); + fl_set_object_color(obj, FL_COL1, FL_INDIANRED); + fl_set_object_callback(obj, PFL_CALLBACKPTR(@show_val),-1); + fl_set_button_shortcut(obj,'2'#0, 0); + obj := fl_add_box(FL_BORDER_BOX,130,30,100,30,''); + valobj:=obj; + fl_set_object_color(obj,FL_LEFT_BCOL,FL_LEFT_BCOL); + obj := fl_add_button(FL_TOUCH_BUTTON,230,30,40,30,'@>'); + fl_set_object_boxtype(obj,FL_FRAME_BOX); + fl_set_object_color(obj, FL_COL1, FL_INDIANRED); + fl_set_object_callback(obj, PFL_CALLBACKPTR(@show_val),1); + fl_set_button_shortcut(obj,'3'#0, 0); + obj := fl_add_button(FL_TOUCH_BUTTON,270,30,40,30,'@>>'); + fl_set_object_boxtype(obj,FL_FRAME_BOX); + fl_set_object_callback(obj, PFL_CALLBACKPTR(@show_val),5); + fl_set_object_color(obj, FL_COL1, FL_INDIANRED); + fl_set_button_shortcut(obj,'4'#0, 0); + obj := fl_add_button(FL_NORMAL_BUTTON,220,90,100,30,'Exit'); + fl_end_form; + fl_show_form(form,FL_PLACE_CENTER,FL_NOBORDER,'Touch Buttons'); + fl_do_forms(); +end. diff --git a/packages/xforms/examples/xyplotover.pp b/packages/xforms/examples/xyplotover.pp new file mode 100644 index 0000000000..b308b7c262 --- /dev/null +++ b/packages/xforms/examples/xyplotover.pp @@ -0,0 +1,69 @@ +{ Demo showing the use of xyplot overlay. } +program xyplotover; + +uses xforms; + +{*** Forms and Objects ***} + +type +TFD_fff = record + fff : PFL_FORM; + xyplot : PFL_OBJECT; + vdata : pointer; + ldata : longint; +end; +PFD_FFF = ^TFD_fff; + +function create_form_fff : PFD_fff; + +var + obj : PFL_OBJECT; + fdui : PFD_fff; + +begin + new(fdui); + fdui^.fff := fl_bgn_form(FL_NO_BOX, 370, 310); + obj := fl_add_box(FL_UP_BOX,0,0,370,310,''); + obj := fl_add_xyplot(FL_IMPULSE_XYPLOT,10,20,350,260,''); + fdui^.xyplot := obj; + fl_set_object_lalign(obj,(FL_ALIGN_BOTTOM or FL_ALIGN_INSIDE)); + obj := fl_add_button(FL_HIDDEN_BUTTON,10,10,350,290,''); + fl_end_form; + + create_form_fff:=fdui; +end; + + +var + i : integer; + xx,yy : array[0..69] of real; + fd_fff : PFD_fff; + +begin + fl_initialize(@argc, argv, 'FormDemo', nil, 0); + + { fill-in form initialization code } + for i := 0 to 69 do + begin + xx[i] := 3.1415 * i / 8.0; + yy[i] := sin(2 * xx[i]) + cos(xx[i]); + end; + + fd_fff := create_form_fff; + + fl_set_xyplot_data(fd_fff^.xyplot, xx, yy, 35, '', '',''); + fl_add_xyplot_overlay(fd_fff^.xyplot, 1, xx, yy, 70, FL_BLUE); + fl_set_xyplot_overlay_type(fd_fff^.xyplot, 1, FL_NORMAL_XYPLOT); + fl_set_xyplot_xbounds(fd_fff^.xyplot, 0, 3.142 * 69/8.0); + fl_set_xyplot_interpolate(fd_fff^.xyplot, 1, 2, 0.1); + { add inset text } + fl_add_xyplot_text(fd_fff^.xyplot, 2.2, 1.2, 'Original: Impulse', + FL_ALIGN_LEFT , FL_BLACK); + fl_add_xyplot_text(fd_fff^.xyplot, 2.2, 1.0, 'Overlay: Solid', + FL_ALIGN_LEFT, FL_BLUE); + + + { show the first form } + fl_show_form(fd_fff^.fff,FL_PLACE_MOUSE,FL_TRANSIENT,'XYPlot Overlay'); + fl_do_forms(); +end. diff --git a/packages/xforms/examples/yesno.pp b/packages/xforms/examples/yesno.pp new file mode 100644 index 0000000000..52ae3e93bf --- /dev/null +++ b/packages/xforms/examples/yesno.pp @@ -0,0 +1,23 @@ +Program yesno; +{ + A box with two buttons and a string. Simple boxes like this + are very usefull for asking questions +} + +Uses xforms; + +var + form : PFL_FORM; + yes,no : PFL_OBJECT; + +begin + fl_initialize(@argc, argv, 'FormDemo', nil, 0); + form := fl_bgn_form(FL_UP_BOX,320,120); + fl_add_box(FL_NO_BOX,160,40,0,0,'Do you want to quit ?'); + yes := fl_add_button(FL_NORMAL_BUTTON,40,70,80,30,'Yes'); + no := fl_add_button(FL_NORMAL_BUTTON,200,70,80,30,'No'); + fl_end_form; + fl_show_form(form,FL_PLACE_MOUSE,FL_TRANSIENT,'Question : '); + while (fl_do_forms <> yes) do; + fl_hide_form(form); +end. diff --git a/packages/xforms/fpmake.pp b/packages/xforms/fpmake.pp new file mode 100644 index 0000000000..d4b6178682 --- /dev/null +++ b/packages/xforms/fpmake.pp @@ -0,0 +1,17 @@ +{$mode objfpc}{$H+} +program fpmake; + +uses fpmkunit; + +Var + T : TTarget; + +begin + With Installer do + begin + { Base packages } + {$i fpmake.inc} + Run; + end; +end. + diff --git a/packages/xforms/scripts/doc2p b/packages/xforms/scripts/doc2p new file mode 100644 index 0000000000..4264983a69 --- /dev/null +++ b/packages/xforms/scripts/doc2p @@ -0,0 +1,11 @@ +#!/bin/csh +# Simple script to do some VERY basic c->pascal conversions. +# +foreach f ( $1 ) +sed s/\\\"/\\\'/g <$f | sed s/\\\/\\\*/\{/g |sed s/\\\*\\\//\}/g |\ +sed s/\ =\ /\ :=\ /g | sed s/-\>/\\^\\\./g >`basename $f .c`.pp + + + + + diff --git a/packages/xforms/src/cursorfont.inc b/packages/xforms/src/cursorfont.inc new file mode 100644 index 0000000000..6cf3bd6965 --- /dev/null +++ b/packages/xforms/src/cursorfont.inc @@ -0,0 +1,111 @@ +{ $XConsortium: cursorfont.h,v 1.4 94/04/17 20:22:00 rws Exp $ } +{ + +Copyright (c) 1987 X Consortium + +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 X CONSORTIUM 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. + +Except as contained in this notice, the name of the X Consortium shall +not be used in advertising or otherwise to promote the sale, use or +other dealings in this Software without prior written authorization +from the X Consortium. + +} + +Const + XC_num_glyphs= 154; + XC_X_cursor= 0; + XC_arrow= 2; + XC_based_arrow_down= 4; + XC_based_arrow_up= 6; + XC_boat= 8; + XC_bogosity= 10; + XC_bottom_left_corner= 12; + XC_bottom_right_corner= 14; + XC_bottom_side= 16; + XC_bottom_tee= 18; + XC_box_spiral= 20; + XC_center_ptr= 22; + XC_circle= 24; + XC_clock= 26; + XC_coffee_mug= 28; + XC_cross= 30; + XC_cross_reverse= 32; + XC_crosshair= 34; + XC_diamond_cross= 36; + XC_dot= 38; + XC_dotbox= 40; + XC_double_arrow= 42; + XC_draft_large= 44; + XC_draft_small= 46; + XC_draped_box= 48; + XC_exchange= 50; + XC_fleur= 52; + XC_gobbler= 54; + XC_gumby= 56; + XC_hand1= 58; + XC_hand2= 60; + XC_heart= 62; + XC_icon= 64; + XC_iron_cross= 66; + XC_left_ptr= 68; + XC_left_side= 70; + XC_left_tee= 72; + XC_leftbutton= 74; + XC_ll_angle= 76; + XC_lr_angle= 78; + XC_man= 80; + XC_middlebutton= 82; + XC_mouse= 84; + XC_pencil= 86; + XC_pirate= 88; + XC_plus= 90; + XC_question_arrow= 92; + XC_right_ptr= 94; + XC_right_side= 96; + XC_right_tee= 98; + XC_rightbutton= 100; + XC_rtl_logo= 102; + XC_sailboat= 104; + XC_sb_down_arrow= 106; + XC_sb_h_double_arrow= 108; + XC_sb_left_arrow= 110; + XC_sb_right_arrow= 112; + XC_sb_up_arrow= 114; + XC_sb_v_double_arrow= 116; + XC_shuttle= 118; + XC_sizing= 120; + XC_spider= 122; + XC_spraycan= 124; + XC_star= 126; + XC_target= 128; + XC_tcross= 130; + XC_top_left_arrow= 132; + XC_top_left_corner= 134; + XC_top_right_corner= 136; + XC_top_side= 138; + XC_top_tee= 140; + XC_trek= 142; + XC_ul_angle= 144; + XC_umbrella= 146; + XC_ur_angle= 148; + XC_watch= 150; + XC_xterm= 152; + diff --git a/packages/xforms/src/fd2pascal.pp b/packages/xforms/src/fd2pascal.pp new file mode 100644 index 0000000000..306a876f3b --- /dev/null +++ b/packages/xforms/src/fd2pascal.pp @@ -0,0 +1,1122 @@ +Program fd2pascal; + +{ --------------------------------------------------------------------------- + Program to convert forms fdesign file to pascal code + Copyright (C) 1997 Michael Van Canneyt + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 1, or (at your option) + any later version. + + This program 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + --------------------------------------------------------------------------- } + + +uses + baseunix, + Unix, + unixutil; + +Const RevString = '$Revision: 1.5 $'; + NrOptions = 4; + Options : Array[0..NrOptions] Of String[20] = + ('v','callback','main','altformat','compensate'); + +Type + { Properties of an object } + ContProps=(CPclass,CPtype,CPbox,CPBoxtype,CPColors,CPalignment,CPstyle,CPsize, + CPlcol,CPlabel,CPShortcut,CPresize,CPgravity,CPname,CPCallback, + CPargument, + CPinvalid); + { Properties of an object for which defaults must be set } + AdjProps=(APClass,APBoxtype,ApColors,APAlignment,APSize,APLcol,APstyle,APgravity); + { List of all object classes } + ObjClasses=(FL_INVALID,FL_BUTTON, FL_LIGHTBUTTON,FL_ROUNDBUTTON, FL_ROUND3DBUTTON, + FL_CHECKBUTTON, FL_BITMAPBUTTON, FL_PIXMAPBUTTON,FL_BITMAP, FL_PIXMAP, + FL_BOX, FL_TEXT, FL_MENU, FL_CHART, FL_CHOICE, FL_COUNTER, FL_SLIDER, FL_VALSLIDER, FL_INPUT, + FL_BROWSER,FL_DIAL,FL_TIMER,FL_CLOCK, FL_POSITIONER, FL_FREE, + FL_XYPLOT,FL_FRAME, FL_LABELFRAME, FL_CANVAS, FL_GLCANVAS, + FL_IMAGECANVAS, FL_FOLDER); + { Properties in preamble } + PreProps=(PPmagic,PPNrforms,PPUnitofMeasure,PPinvalid); + { Properties of a form } + FormProps=(FPName,FPWidth,FPHeight,FPnumObjs,FPinvalid); + +Const + { Names of all object properties } + ContPropNames : Array[ContProps] of string[20] = + ('class','type','box','boxtype','colors','alignment','style','size', + 'lcol','label','shortcut','resize','gravity','name','callback', + 'argument', + 'invalid'); + { Names of all object properties which must be checked.} + AdjPropsNames : Array[AdjProps] of string[20] = + ('class','boxtype','colors','alignment','size','lcol','style','gravity'); + { Names of all preamble properties } + PrePropNames : Array[PreProps] of string[20] = + ('Magic','Number of forms','Unit of measure','Invalid'); + { Names of all form properties } + FormPropNames : Array[FormProps] of string[20] = + ('Name','Width','Height','Number of Objects','Invalid'); + { Names of all object classes } + FObjClassNames : Array[ObjClasses] of string[20]= + ('FL_INVALID','BUTTON', 'LIGHTBUTTON','ROUNDBUTTON', 'ROUND3DBUTTON', + 'CHECKBUTTON', 'BITMAPBUTTON', 'PIXMAPBUTTON','BITMAP', 'PIXMAP', + 'BOX', 'TEXT', 'MENU', 'CHART', 'CHOICE', 'COUNTER', 'SLIDER', 'VALSLIDER', 'INPUT', + 'BROWSER','DIAL','TIMER','CLOCK', 'POSITIONER', 'FREE', + 'XYPLOT','FRAME', 'LABELFRAME', 'CANVAS', 'GLCANVAS', + 'IMAGECANVAS', 'FOLDER'); + + { Default properties. If empty a property is ignored. + To force setting of a property, put 'FL_FORCE' as a string. + Mind : Case sensitive } + + DefProps : array[ObjClasses,AdjProps] of string[30] = + (('FL_INVALID','','','','','','FL_NORMAL_STYLE','FL_FORCE'), + ('BUTTON','FL_UP_BOX','FL_COL1 FL_COL1','FL_ALIGN_CENTER','','FL_LCOL','FL_NORMAL_STYLE','FL_FORCE'), + ('LIGHTBUTTON','FL_UP_BOX','FL_COL1 FL_YELLOW','FL_ALIGN_CENTER','','FL_LCOL','FL_NORMAL_STYLE','FL_FORCE'), + ('ROUNDBUTTON','FL_NO_BOX','FL_MCOL FL_YELLOW','FL_ALIGN_CENTER','','FL_LCOL','FL_NORMAL_STYLE','FL_FORCE'), + ('ROUND3DBUTTON','FL_NO_BOX','FL_COL1 FL_BLACK','FL_ALIGN_CENTER','','FL_LCOL','FL_NORMAL_STYLE','FL_FORCE'), + ('CHECKBUTTON','FL_NO_BOX','FL_COL1 FL_YELLOW','FL_ALIGN_CENTER','','FL_LCOL','FL_NORMAL_STYLE','FL_FORCE'), + ('BITMAPBUTTON','FL_UP_BOX','FL_COL1 FL_BLUE','FL_ALIGN_BOTTOM','','FL_LCOL','FL_NORMAL_STYLE','FL_FORCE'), + ('PIXMAPBUTTON','FL_UP_BOX','FL_COL1 FL_YELLOW','FL_ALIGN_BOTTOM','','FL_LCOL','FL_NORMAL_STYLE','FL_FORCE'), + ('BITMAP','FL_NO_BOX','FL_COL1 FL_COL1','FL_ALIGN_BOTTOM','','FL_LCOL','FL_NORMAL_STYLE','FL_FORCE'), + ('PIXMAP','FL_NO_BOX','FL_COL1 FL_COL1','FL_ALIGN_BOTTOM','','FL_LCOL','FL_NORMAL_STYLE','FL_FORCE'), + ('BOX','','','','','','FL_NORMAL_STYLE','FL_FORCE'), + ('TEXT','FL_FLAT_BOX','FL_COL1 FL_MCOL','FL_ALIGN_LEFT','','FL_LCOL','FL_NORMAL_STYLE','FL_FORCE'), + ('MENU','FL_BORDER_BOX','FL_COL1 FL_MCOL','FL_ALIGN_CENTER','','FL_LCOL','FL_NORMAL_STYLE','FL_FORCE'), + ('CHART','FL_BORDER_BOX','FL_COL1','FL_ALIGN_BOTTOM','','FL_LCOL','FL_NORMAL_STYLE','FL_FORCE'), + ('CHOICE','FL_ROUNDED_BOX','FL_COL1 FL_LCOL','FL_ALIGN_LEFT','','FL_LCOL','FL_NORMAL_STYLE','FL_FORCE'), + ('COUNTER','FL_UP_BOX','FL_COL1 FL_BLUE','FL_ALIGN_BOTTOM','','FL_LCOL','FL_NORMAL_STYLE','FL_FORCE'), + ('SLIDER','FL_DOWN_BOX','FL_COL1 FL_COL1','FL_ALIGN_BOTTOM','','FL_LCOL','FL_NORMAL_STYLE','FL_FORCE'), + ('VALSLIDER','FL_DOWN_BOX','FL_COL1 FL_COL1','FL_ALIGN_BOTTOM','','FL_LCOL','FL_NORMAL_STYLE','FL_FORCE'), + ('INPUT','FL_DOWN_BOX','FL_COL1 FL_MCOL','FL_ALIGN_LEFT','','FL_LCOL','FL_NORMAL_STYLE','FL_FORCE'), + ('BROWSER','FL_DOWN_BOX','FL_COL1 FL_YELLOW','FL_ALIGN_BOTTOM','FL_SMALL_FONT','FL_LCOL','FL_NORMAL_STYLE','FL_FORCE'), + ('DIAL','FL_FLAT_BOX','FL_COL1 FL_RIGHT_BCOL','FL_ALIGN_BOTTOM','','FL_LCOL','FL_NORMAL_STYLE','FL_FORCE'), + ('TIMER','FL_DOWN_BOX','FL_COL1 FL_RED','FL_ALIGN_CENTER','','FL_LCOL','FL_NORMAL_STYLE','FL_FORCE'), + ('CLOCK','FL_UP_BOX','FL_INACTIVE_COL FL_BOTTOM_BCOL','FL_ALIGN_BOTTOM','','FL_BLACK','FL_NORMAL_STYLE','FL_FORCE'), + ('POSITIONER','FL_DOWN_BOX','FL_COL1 FL_RED','FL_ALIGN_BOTTOM','','FL_LCOL','FL_NORMAL_STYLE','FL_FORCE'), + ('FREE','','','','','','FL_NORMAL_STYLE','FL_FORCE'), + ('XYPLOT','FL_FLAT_BOX','FL_COL1','FL_ALIGN_BOTTOM','','FL_LCOL','FL_NORMAL_STYLE','FL_FORCE'), + ('FRAME','','FL_BLACK FL_COL1','','','FL_BLACK','FL_NORMAL_STYLE','FL_FORCE'), + ('LABELFRAME','','','','','','FL_NORMAL_STYLE','FL_FORCE'), + ('CANVAS','FL_NO_BOX','','FL_ALIGN_TOP','','','FL_NORMAL_STYLE','FL_FORCE'), + ('GLCANVAS','','','','','','FL_NORMAL_STYLE','FL_FORCE'), + ('IMAGECANVAS','','','','','','FL_NORMAL_STYLE','FL_FORCE'), + ('FOLDER','','','','','','FL_NORMAL_STYLE','FL_FORCE')); + +Type + { object data type } + PControl = ^TControl; + TControl = Record + Props : array[ContProps] of string; + NextControl : PControl; + end; + + { Form data type} + PFormRec = ^TFormRec; + TFormRec = Record + Name : String; + Width,Height : String[5]; + Controls : PControl; + NextForm : PFormRec; + end; + { Callback data type } + PCBrec = ^TCBrec; + TCBrec = record + name : string; + next : PCBrec; + end; + { Property emitting procedures } + EmitProp = Procedure (Data : PControl;ObjClass : ObjClasses); + +Var + OptionsSet : Array[1..NrOptions] Of Boolean; + FileName : String; + Infile,outfile : Text; + LineNr : Longint; + NrForms,NrControls : Longint; + FormRoot : PFormRec; + cbroot : pcbrec; + { Default properties emitters } + EmitProcs : array [AdjProps] of EmitProp; + { Class specific property emitters. Nil pointers are ignored.} + ClassEmitters : Array[ObjClasses] of EmitProp; + +{ ------------------------------------------------------------------------ + Utilities Code + ------------------------------------------------------------------------ } + + +Function IntTostr (s : Longint) : String; + +var temp : String; + +begin + str(s,temp); + IntToStr:=Temp; +end; + + +Procedure EmitError (Const s : String); + +begin + writeln (stderr,'Error: ',s); + flush(stderr) +end; + +Procedure EmitLineError (Const s : string); + +begin + EmitError('Line '+IntToStr(LineNr)+': '+s) +end; + + +{ ------------------------------------------------------------------------ + Option handling Code + ------------------------------------------------------------------------ } + + +Procedure DoOptions; + +Var i,j,k : byte; + os : string; + +Procedure ShowVersion; + +begin + Writeln ('fd2pascal : ',RevString); + Halt(0); +end; + +Procedure ShowUsage; + +begin + Writeln ('fd2pascal : usage :'); + writeln (' fd2pascal [options] filename'); + writeln (' Where [options] may be zero or more of :'); + writeln (' -compensate Emit size-compensation code.'); + writeln (' -altformat Emit code in alternate format.'); + writeln (' -main Emit program instead of unit.'); + writeln (' -callback Emit callback stubs.'); + writeln; + halt(0); +end; + +begin + if paramcount=0 then + ShowUsage; + FileName:=''; + for i:=1 to paramcount do + begin + if paramstr(i)[1]<>'-' then + If FileName<>'' then + EmitError('Only one filename supported. Ignoring :'+paramstr(i)) + else + Filename:=Paramstr(i) + else + begin + os:=copy(paramstr(i),2,length(paramstr(i))-1); + k:=NrOptions+1; + for j:=0 to NrOptions do + if os=options[j] then k:=j; + if k=NrOptions+1 then + EmitError('Option not recognised : '+paramstr(i)) + else + if k=0 then ShowVersion else OptionsSet[k]:=True; + end + end; {for} + if FileName='' then + begin + EmitError('No filename supplied. Exiting.'); + halt(1); + end; +end; + +{ ------------------------------------------------------------------------ + Code for reading the input file. + ------------------------------------------------------------------------ } + + +Procedure OpenFile; +begin + if pos('.fd',FileName)=0 then + FileName:=FileName+'.fd'; + assign(infile,Filename); +{$i-} + reset (infile); +{$i+} + if ioresult<>0 then + begin + EmitError('Can''t open : '+filename); + halt(1); + end; + LineNr:=0; +end; + +Procedure CloseFile; + +begin + Close(infile); +end; + +Procedure GetLine(Var S : String); + +begin + inc(LineNr); + Readln(infile,s); +{$ifdef debug} + writeln ('Reading line : ',linenr) +{$endif} +end; + +Procedure ProcessPreAmbleLine (Const s: String); + +var key,value : string; + ppos : Longint; + i,k : PreProps; + code : Word; + +begin + if s='' then exit; + ppos:=pos(':',s); + if ppos=0 then + exit; + Key:=Copy(s,1,ppos-1); + Value:=Copy(s,ppos+2,length(s)-ppos-1); + k:=PPinvalid; + for i:=PPmagic to PPinvalid do + if key=PrePropNames[i] then k:=i; + if k=PPinvalid then + EmitLineError('Unknown keyword : '+Key) + else + Case K of + PPMagic, + PPunitofmeasure: ; + PPnrforms: begin + val(value,NrForms,code); + if code<>0 then EmitLineError('Invalid number of forms'); + end; + end; +end; + +{ ------------------------------------------------------------------------ + Code for reading preamble. + ------------------------------------------------------------------------ } + + +Procedure DoPreamble; + +var line : String; + +begin +{$ifdef debug} + writeln ('Starting preamble'); +{$endif} + Getline (line); + while pos('= FORM =',line)=0 do + begin + ProcessPreAmbleLine(line); + GetLine(Line) + end; +end; + +{ ------------------------------------------------------------------------ + Code for reading 1 object. + ------------------------------------------------------------------------ } + + +Procedure ProcessControlLine (PC : PControl; const S : String); + +Var Key,Value : String; + i,k : ContProps; + ppos : word; + +begin + if s='' then exit; + ppos:=pos(':',s); + if ppos=0 then + exit; + Key:=Copy(s,1,ppos-1); + Value:=Copy(s,ppos+2,length(s)-ppos-1); + K:=CPInvalid; + For i:=CPclass to CPInvalid do + if ContPropNames[i]=Key then k:=i; + if K=CPinvalid then + begin + EmitLineError('Unknown keyword'+key); + exit + end; + PC^.props[k]:=value; +end; + +Procedure ProcessControl (PC : PControl); + +var line : String; + +begin +{$ifdef debug} + Writeln ('Starting Control'); +{$endif} + Getline(Line); + while Line<>'' do + begin + ProcessControlLine (PC,line); + Getline(Line); + end; + Getline(Line) +end; + +{ ------------------------------------------------------------------------ + Code for reading 1 form. + ------------------------------------------------------------------------ } + +Procedure ProcessFormLine (PF : PFormRec; const S : String); + +Var Key,Value : String; + i,k : FormProps; + ppos,code : word; + +begin + if s='' then exit; + ppos:=pos(':',s); + if ppos=0 then + exit; + Key:=Copy(s,1,ppos-1); + Value:=Copy(s,ppos+2,length(s)-ppos-1); + K:=FPInvalid; + For i:=FPName to FPInvalid do + if FormPropNames[i]=Key then k:=i; + if K=FPinvalid then + begin + EmitLineError('Unknown keyword'+key); + exit + end; + case k of + FPname : PF^.name:=value; + FPWidth : PF^.width:=value; + FPHeight : PF^.height:=value; + FPNumObjs : begin + val(value,Nrcontrols,code); + If Code<>0 then EmitLineError('Invalid number of objects : '+value) + end; + end; +end; + +Procedure ProcessForm (PF : PFormRec); + +Var line : String; + CurrentControl : PControl; + I : Integer; + +begin +{$ifdef debug} + writeln('Starting form'); +{$endif} + NrControls:=0; + with PF^ do + begin + name:=''; + Width:=''; + Height:=''; + Controls:=nil; + GetLine(Line); + while line<>'' do + begin + ProcessFormLine(PF,Line); + GetLine(Line); + end; + Getline(Line); + If NrControls=0 then + Controls:=nil + else + begin + New (Controls); + CurrentControl:=Controls; + for i:=1 to nrcontrols do + begin + ProcessControl(CurrentControl); + if i<NrControls then + New(CurrentControl^.NextControl) + else + CurrentControl^.NextControl:=nil; + CurrentControl:=CurrentControl^.NextControl + end; { for } + end; { Else } + end; { With } +end; + +{ ------------------------------------------------------------------------ + Code for reading the forms. + ------------------------------------------------------------------------ } + + +Procedure DoForms; + +Var + i : Longint; + CurrentForm: PformRec; + +begin + FormRoot:=Nil; + if NrForms=0 then exit; + new(FormRoot); + Currentform:=FormRoot; + for i:=1 to nrforms do + begin + ProcessForm (CurrentForm); + If i=nrforms then + Currentform^.NextForm:=nil + else + New(CurrentForm^.NextForm); + CurrentForm:=CurrentForm^.NextForm; + end; +end; + +{ ------------------------------------------------------------------------ + Code for reading the postamble. + ------------------------------------------------------------------------ } + + +Procedure DoPostamble; + +begin +end; + +{ ------------------------------------------------------------------------ + Code for writing the output file. + ------------------------------------------------------------------------ } + +Procedure OpenOutFile; + +var info : stat; + +begin + FileName:=Copy(Filename,1,Length(Filename)-3)+'.pp'; + if fpstat(FileName,info)<>-1 Then + begin + { File exists, move to .bak} + fplink (FileName,FileName+'.bak'); + fpunlink(FileName); + end; + + assign(outfile,filename); +{$i-} + rewrite(outfile); +{$i+} + if ioresult<>0 then + begin + EmitError('Couldn''t open output file : '+filename); + halt(1) + end; +end; + +Procedure CloseOutFile; + +begin + Close(OutFile); +end; + +{ ------------------------------------------------------------------------ + Code to emit Header/variable/type declarations + ------------------------------------------------------------------------ } + + +Procedure EmitType (fp : Pformrec); + +var cp : PControl; + +begin + writeln (OutFile,' TFD_',fp^.name,' = record'); + writeln (OutFile,' ',fp^.name,' : PFL_FORM;'); + writeln (OutFile,' vdata : Pointer;'); + writeln (OutFile,' ldata : Longint;'); + cp:=fp^.controls; + {Skip first control, is formbackground } + if cp<>nil then cp:=cp^.nextcontrol; + while cp<>nil do + begin + if cp^.props[CPclass]<>'FL_END_GROUP' then + begin + write (Outfile,' ',cp^.props[CPname]); + if cp^.nextcontrol<>nil then + writeln (OutFile,',') + else + writeln (OutFile,' : PFL_OBJECT;'); + end; + cp:=cp^.nextcontrol; + end; + writeln (OutFile,' end;'); + writeln (OutFile,' PFD_',fp^.name,' = ^TFD_',fp^.name,';'); + writeln (OutFile); +end; + +Procedure EmitVar (fp : Pformrec); + +var cp : PControl; + +begin + writeln (OutFile,' ',fp^.name,' : PFL_FORM;'); + cp:=fp^.controls; + {Skip first control, is formbackground } + if cp<>nil then cp:=cp^.nextcontrol; + while cp<>nil do + begin + if cp^.props[CPclass]<>'FL_END_GROUP' then + begin + write (Outfile,' ',cp^.props[CPname]); + if cp^.nextcontrol<>nil then + writeln (OutFile,',') + else + writeln (OutFile,' : PFL_OBJECT;'); + end; + cp:=cp^.nextcontrol; + end; + writeln (OutFile); +end; + +Procedure EmitHeader; + +var fp : PFormRec; + +begin + if OptionsSet[2] then + write (OutFile,'Program ') + else + write (OutFile,'Unit '); + writeln (OutFile,basename(filename,'.pp'),';'); + writeln (OutFile); + writeln (OutFile,'{ Form definition file generated by fd2pascal }'); + writeln (Outfile); + if not OptionsSet[2] then + begin + writeln (OutFile,'Interface'); + writeln (OutFile); + end; + writeln (OutFile,'Uses forms;'); + writeln (OutFile); + writeln (OutFile,' { Variable / Type definitions. }'); + if Optionsset[3] then + writeln (OutFile,'Var') + else + writeln (OutFile,'Type'); + fp:=FormRoot; + While fp<>nil do + begin + if not optionsset[3] then + EmitType(fp) { Emit Type definitions } + else + EmitVar(fp); { Emit Variable declaration} + fp:=fp^.nextform; + end; + if not optionsset[2] then + begin + { No program, we must emit interface stuff } + if not (optionsset[3]) then + begin + { Emit normal interface declarations + -> functions } + fp:=formroot; + while fp<>nil do + begin + with fp^ do + writeln (OutFile,'Function create_form_',name,' : PFD_',name,';'); + fp:=fp^.nextform; + end; + end + else + begin + { Emit alternate interface declaration + -> 1 function to create all forms.} + writeln (OutFile,'Procedure Create_The_Forms;'); + end; + writeln (OutFile); + writeln (OutFile,'Implementation'); + end + else + begin + { We must make a program. } + if not(optionsset[3]) then + begin + { Normal format, so we need to emit variables for the forms.} + writeln (OutFile,'Var'); + fp:=formroot; + while fp<>nil do + begin + writeln (OutFile,' ',fp^.name,' : PFD_',fp^.name,';'); + fp:=fp^.nextform; + end; + writeln (OutFile); + end; + end; + writeln (OutFile); +end; + +{ ------------------------------------------------------------------------ + Code to emit footer/main program + ------------------------------------------------------------------------ } + + +Procedure EmitCreateforms; + +var fp : PFormRec; + +begin + writeln (OutFile,'Procedure Create_The_Forms;'); + writeln (OutFile); + writeln (OutFile,'begin'); + fp:=FormRoot; + while fp<>nil do + begin + writeln(OutFile,'create_form_',fp^.name,';'); + fp:=fp^.nextform; + end; + writeln (outFile,'End;'); + writeln (OutFile); +end; + +Procedure EmitAlternateMain; +begin + { Alternate format, we just call creatallforms to create all forms} + writeln (OutFile,'Create_The_Forms;'); + writeln (OutFile,' fl_show_form(',formroot^.name, + ',FL_PLACE_CENTER,FL_FULLBORDER,''', + FormRoot^.name,''');'); +end; + +Procedure EmitMain; + +var fp : PFormRec; + +begin + { variables are emitted in the header } + fp:=formroot; + { Create all forms } + while fp<>nil do + begin + writeln (OutFile,' ',fp^.name,' :=Create_Form_',fp^.name,';'); + fp:=fp^.nextform; + end; + { Show the first form } + writeln (OutFile,' fl_show_form(',formroot^.name,'^.',Formroot^.name, + ',FL_PLACE_CENTER,FL_FULLBORDER,''', + FormRoot^.name,''');'); +end; + +Procedure EmitFooter; +begin + if OptionsSet[3] then {Alternate format.} + EmitCreateForms; + if Optionsset[2] then + begin + {Emit Main Program} + writeln (OutFile); + writeln (OutFile,'Begin'); + writeln (OutFile,' fl_initialize (@argc,argv,''', + basename(Filename,'.pp'),''',nil,0);'); + if Not(OptionsSet[3]) then + EmitMain + else + EmitAlternateMain; + writeln (OutFile,' fl_do_forms;'); + end + else + writeln (OutFile,'begin'); + writeln (OutFile,'end.') +end; + + + + +{ ------------------------------------------------------------------------ + Code to emit properties + ------------------------------------------------------------------------ } + + +Function EmitString(S : string) : String; + +var temp : String; + i : longint; + +begin + temp:=''''; + for i:=1 to length(s) do + if s[i]<>'''' then temp:=temp+s[i] else temp:=temp+''''''; + Temp:=temp+''''; + EmitString:=temp; +end; + +Procedure EmitBoxtype (cp : PControl;ObjClass : ObjClasses); + +begin +{$ifdef debug} + writeln ('EmitBoxType called with args:'); + writeln (cp^.props[cpboxtype]); + writeln (defprops[objclass,APboxtype]); + writeln ('for object : ',defprops[objclass,apclass]); + writeln ('With object : ',cp^.props[cpclass]); +{$endif} + if cp^.props[cpboxtype]<>defprops[objclass,APboxtype] then + writeln (OutFile,' fl_set_object_boxtype(obj,', + cp^.props[cpboxtype],');') +end; + +Procedure EmitColors (cp : PControl;ObjClass : ObjClasses); + +var temp : string; + +begin + if cp^.props[cpcolors]<>defprops[objclass,APcolors] then + begin + temp:=cp^.props[cpcolors]; + if pos(' ',temp)=0 then exit; + temp[pos(' ',temp)]:=','; + writeln (OutFile,' fl_set_object_color(obj,',temp,');'); + end; +end; + +Procedure EmitAlignment (cp : PControl;ObjClass : ObjClasses); + +begin + if cp^.props[cpalignment]<>defprops[objclass,APalignment] then + writeln (OutFile,' fl_set_object_alignment(obj,', + cp^.props[cpalignment],');'); +end; + +Procedure EmitLcol (cp : PControl;ObjClass : ObjClasses); + +begin + if cp^.props[cplcol]<>defprops[objclass,APlcol] then + writeln (OutFile,' fl_set_object_lcol(obj,', + cp^.props[cplcol],');'); +end; + + +Procedure EmitSize (cp : PControl;ObjClass : ObjClasses); + +begin + if cp^.props[cpsize]<>defprops[objclass,APsize] then + writeln (OutFile,' fl_set_object_lsize(obj,', + cp^.props[cpsize],');'); +end; + +Procedure EmitStyle (cp : PControl;ObjClass : ObjClasses); + +begin + if cp^.props[cpstyle]<>defprops[objclass,APstyle] then + writeln (OutFile,' fl_set_object_lstyle(obj,', + cp^.props[cpstyle],');'); +end; + +Procedure EmitGravity (cp : PControl;ObjClass : ObjClasses); + +var temp: string; + +begin + if cp^.props[cpstyle]<>'FL_NoGravity FL_NoGravity' then + begin + temp:=cp^.props[cpstyle]; + if pos(' ',temp)=0 then exit; + temp[pos(' ',temp)]:=','; + writeln (OutFile,' fl_set_object_gravity(obj,', + temp,');'); + end; +end; + + +Procedure EmitProperties (Cp : PControl; Objclass : ObjClasses); + +Var i : AdjProps; + +begin + for i:=APboxtype to APgravity do + if DefProps[ObjClass,i]<>'' then + EmitProcs[i](cp,objclass); +end; + +{ ------------------------------------------------------------------------ + Code to emit objects + ------------------------------------------------------------------------ } + +Procedure EmitObject(cp : PControl); + +var temp : string; + I : Longint; + j,k : ObjClasses; + +begin +with cp^ do + begin + temp:=lowercase(props[CPclass]); + delete(temp,1,3); + if temp='begin_group' then + begin + writeln (OutFile); + write (OutFile,' '); + if not (Optionsset[3]) then Write (OutFile,'fdui^.'); + writeln (OutFile,props[cpname],':=fl_bgn_group;'); + exit; + end + else if temp='end_group' then + begin + writeln (OutFile,' fl_end_group;'); + writeln (OutFile); + exit; + end; + { Normal object. Emit creation code. } + write (OutFile,' obj:=fl_add_',temp,' (FL_',props[Cptype],','); + temp:=props[cpbox]; + for i:=1 to 3 do + begin + write (OutFile,copy(temp,1,pos(' ',temp)-1),','); + delete (temp,1,pos(' ',temp)); + end; + writeln (OutFile,temp,',',EmitString(props[cplabel]),');'); + { Emit Callback code if needed } + if props[cpcallback]<>'' then + begin + write (OutFile,' fl_set_object_callback(obj,PFL_CALLBACKPTR(@'); + write (OutFile,props[CPcallback],'),'); + if props[CPargument]<>'' then + writeln (OutFile,props[CPargument],');') + else + writeln (OutFile,'0);'); + end; + { If known object, start emitting properties } + temp:=props[CPclass]; + delete(temp,1,3); + k:=FL_INVALID; + for j:=FL_BUTTON to FL_FOLDER do + if temp=DefProps[j,apclass] then k:=j; + if k<>FL_INVALID then + begin + { Emit defaults } + EmitProperties (cp,k); + { If A class-specific emitter exists, call it.} + if Assigned(ClassEmitters[k]) then + ClassEmitters[k] (cp,k); + end; + { Assign to needed object. } + if Optionsset[3] then + Writeln (OutFile,' ',props[cpname],':=obj;') + else + Writeln (OutFile,' fdui^.',props[cpname],':=obj;'); + end; +end; + +{ ------------------------------------------------------------------------ + Code to emit forms + ------------------------------------------------------------------------ } + +Procedure EmitForm(fp : PFormRec); + +Var +cp : PControl; + +begin +with fp^ do + begin + if Optionsset[3] then + begin + writeln (OutFile,'Procedure create_form_',name,';'); + writeln (OutFile); + writeln (OutFile,'Var obj : PFL_OBJECT;'); + writeln (OutFile); + writeln (OutFile,'Begin'); + writeln (OutFile,' If ',name,'<>nil then exit;'); + write (OutFile,' ',name); + end + else + begin + writeln (OutFile,'Function create_form_',name,' : PFD_',name,';'); + writeln (OutFile); + writeln (OutFile,'Var obj : PFL_OBJECT;'); + writeln (OutFile,' fdui : PFD_',name,';'); + writeln (OutFile); + writeln (OutFile,'Begin'); + writeln (OutFile,' New(fdui);'); + write (OutFile,' fdui^.',name); + end; + writeln (OutFile,':=fl_bgn_form(FL_NO_BOX,' + ,width,',' + ,height,');'); + cp:=controls; + writeln (OutFile,' obj:=fl_add_box(',cp^.props[CPboxtype],',0,0,', + width,',', + height,',', + EmitString (cp^.props[CPname]),');'); + cp:=cp^.nextcontrol; + { Emit all objects } + while cp<>nil do + begin + EmitObject(cp); + cp:=cp^.nextcontrol; + end; + writeln (OutFile,' fl_end_form;'); + if Optionsset[4] then + begin + { Emit Compensation code } + write (OutFile,' fl_adjust_form_size('); + if not(OptionsSet[3]) then write (OutFile,'fdui^.'); + writeln(OutFile,fp^.name,');'); + end; + if not(OptionsSet[3]) then + begin + writeln (OutFile,' fdui^.',fp^.name,'^.fdui:=fdui;'); + writeln (OutFile,' create_form_',fp^.name,':=fdui;'); + end; + writeln (OutFile,'end;'); + writeln (OutFile); + end; +end; + +Procedure EmitForms; + +var + fp : PformRec; +begin + { Start emitting forms } + fp:=Formroot; + while fp<>nil do + begin + EmitForm(fp); + fp:=fp^.nextform; + end; +end; + +{ ------------------------------------------------------------------------ + Code to emit callbacks + ------------------------------------------------------------------------ } + +Procedure CollectCallbacks; + +Var CurrentCb,CBwalk : PCBrec; + fp : PformRec; + cp : PControl; + +begin + CbRoot:=nil; + CurrentCB:=cbroot; + fp:=formroot; + while fp<>nil do + begin + cp:=fp^.controls; + while cp<>nil do + begin + if cp^.props[CPcallback]<>'' then + if cbroot<>nil then + begin + cbwalk:=cbroot; + while cbwalk<>nil do + if upcase(cbwalk^.name)=upcase(cp^.props[CPcallback]) then + break + else + cbwalk:=cbwalk^.next; + if cbwalk=nil then + begin + new(currentcb^.next); + currentcb:=currentcb^.next; + currentcb^.name:=cp^.props[CPcallback]; + currentcb^.next:=nil; + end; + end + else + begin + new(cbroot); + currentcb:=cbroot; + cbroot^.name:=cp^.props[CPcallback]; + cbroot^.next:=nil; + end; + cp:=cp^.nextcontrol; + end; + fp:=fp^.nextform; + end; +end; + +Procedure EmitCallback (Const s : string); + +begin + writeln (OutFile,'Procedure ',s,' (Sender: PFL_OBJECT; Data : Longint); export;'); + writeln (OutFile); + writeln (OutFile,'begin'); + writeln (OutFile,' { Place your code here }'); + writeln (OutFile,'end;'); + writeln (OutFile); +end; + +Procedure EmitCallBacks; + +var cb : pcbrec; + +begin + { See if we must emit callback stubs } + If Optionsset[1] then + begin + cb:=cbroot; + while cb<>nil do + begin + EmitCallBack(cb^.Name); + cb:=cb^.next; + end; + end; +end; + + +{ ------------------------------------------------------------------------ + EmitterTable initialization Code + ------------------------------------------------------------------------ } + +Procedure EmitDummy (cp : PControl;ObjClass : ObjClasses); + +begin +end; + +Procedure InitEmitters; + +var i : objclasses; + +begin + EmitProcs[APClass]:=@EmitDummy; + EmitProcs[APBoxtype]:=@EmitBoxType; + EmitProcs[APColors]:=@EmitColors; + EmitProcs[APAlignment]:=@EmitAlignment; + EmitProcs[APlcol]:=@EmitLcol; + EmitProcs[APsize]:=@EmitSize; + EmitProcs[APStyle]:=@EmitStyle; + EmitProcs[APgravity]:=@EmitGravity; + for i:=FL_INVALID to FL_FOLDER do + ClassEmitters[i]:=EmitProp(Nil); +end; + +{ ------------------------------------------------------------------------ + Main program Code + ------------------------------------------------------------------------ } + + +begin + { Process options } + DoOptions; + { Read input file } + OpenFile; + DoPreamble; + DoForms; + DoPostamble; + CloseFile; + { Write output file } + OpenOutfile; + InitEmitters; + CollectCallbacks; + EmitHeader; + EmitCallbacks; + EmitForms; + EmitFooter; + CloseOutFile; +end. diff --git a/packages/xforms/src/xforms.pp b/packages/xforms/src/xforms.pp new file mode 100644 index 0000000000..2d5ded9ecf --- /dev/null +++ b/packages/xforms/src/xforms.pp @@ -0,0 +1,2909 @@ +{ +} +Unit xforms; +Interface + +{$linklib forms} +{$linklib c} +{$linklib m} + +uses + x,xlib,xutil,xresource; + +const + FL_VERSION=0; + FL_REVISION=88; + FL_FIXLEVEL=0; + FL_INCLUDE_VERSION=FL_VERSION * 1000 + FL_REVISION; + +{ some general constants } + FL_ON = 1; + FL_OK = 1; + FL_VALID = 1; + FL_PREEMPT = 1; + FL_AUTO = 2; + FL_WHEN_NEEDED = FL_AUTO; + + FL_OFF = 0; + {FL_NONE = 0;} + FL_CANCEL = 0; + FL_INVALID = 0; + + FL_IGNORE = -1; + FL_CLOSE = -2; +{ + * The screen coordinate unit, FL_Coord, must be of signed type. Without + * prototype support, a type other than integer might not work right. + * If FL_Coord is float, FL_CoordIsFloat must be defined to be 1 so that + * round-off error can be checked. **TODO Float not tested *** + } +Type PWord = ^Word; + PDouble = ^Double; + PFloat = ^Real; + PLongint = ^Longint; + PCardinal = ^Cardinal; + +type TFL_Coord = Longint ; + PFL_Coord = ^TFL_Coord; +{ #define FL_CoordIsFloat 0 define this if FL_Coord is of type float } + TFL_COLOR = longint; { Was cardinal } + PFL_COLOR = ^TFL_COLOR; + +{ + * Coordinates can be in pixels, milli-meters or points (1/72inch) + } + TFL_COORD_UNIT=Longint ; + { POssible values } +Const + FL_COORD_PIXEL=0; { default, Pixel } + FL_COORD_MM=1; { milli-meter } + FL_COORD_POINT=2; { point } + FL_COORD_centiMM=3; { one hundredth of a mm } + FL_COORD_centiPOINT=4; { one hundredth of a point } + +{ + * All object classes. + } + +type TFL_Class = Longint; + +Const { Possible values } + FL_INVALID_CLASS=0; + FL_BUTTON=1; + FL_LIGHTBUTTON=2; + FL_ROUNDBUTTON=3; + FL_ROUND_3DBUTTON=4; + FL_CHECKBUTTON=5; + FL_BITMAPBUTTON=6; + FL_PIXMAPBUTTON=7; + FL_BITMAP=8; + FL_PIXMAP=9; + FL_BOX=10; + FL_TEXT=11; + FL_MENU=12; + FL_CHART=13; + FL_CHOICE=14; + FL_COUNTER=15; + FL_SLIDER=16; + FL_VALSLIDER=17; + FL_INPUT=18; + FL_BROWSER=19; + FL_DIAL=21; + FL_TIMER=21; + FL_CLOCK=22; + FL_POSITIONER=23; + FL_FREE=24; + FL_XYPLOT=25; + FL_FRAME=26; + FL_LABELFRAME=27; + FL_CANVAS=28; + FL_GLCANVAS=29; + FL_TABFOLDER=30; + FL_SCROLLBAR=31; + FL_SCROLLBUTTON=32; + FL_MENUBAR=33; + FL_IMAGECANVAS=34; + FL_TEXTBOX=35; + +{ how to display a form onto screen } + +Type + TFL_PLace = Longint; + +Const + FL_PLACE_FREE = 0; { size remain resizable } + FL_PLACE_MOUSE = 1; { mouse centered on form } + FL_PLACE_CENTER = 2; { center of the screen } + FL_PLACE_POSITION = 4; { specific size } + FL_PLACE_SIZE = 8; { specific size } + FL_PLACE_GEOMETRY = 16; { specific position } + FL_PLACE_ASPECT = 32; { keep aspect ratio } + FL_PLACE_FULLSCREEN = 64; { scale to fit screen } + FL_PLACE_HOTSPOT = 128; { so mouse fall on (x,y) } + FL_PLACE_ICONIC = 256; + { modifier } + FL_FREE_SIZE = 1 shl 14; + FL_FIX_SIZE = 1 shl 15; + + FL_PLACE_FREE_CENTER = FL_PLACE_CENTER or FL_FREE_SIZE; + FL_PLACE_CENTERFREE = FL_PLACE_CENTER or FL_FREE_SIZE; + +{ Window manager decoration request } + +type + TFL_DECORATION = Longint; + +Const { Possible values for FL_DECORATION } + FL_FULLBORDER = 1; { normal } + FL_TRANSIENT = 2; { set TRANSIENT_FOR property } + FL_NOBORDER = 3; { use override_redirect to supress decor. } + FL_MODAL = 1 << 8; +type + { All box types } + TFL_BOX_TYPE = Longint; +Const { Possible values } + FL_NO_BOX=0; + FL_UP_BOX=1; + FL_DOWN_BOX=2; + FL_BORDER_BOX=3; + FL_SHADOW_BOX=4; + FL_FRAME_BOX=5; + FL_ROUNDED_BOX=6; + FL_EMBOSSED_BOX=7; + FL_FLAT_BOX=8; + FL_RFLAT_BOX=9; + FL_RSHADOW_BOX=10; + FL_OVAL_BOX=11; + FL_ROUNDED3D_UPBOX=12; + FL_ROUNDED3D_DOWNBOX=13; + FL_OVAL3D_UPBOX=14; + FL_OVAL3D_DOWNBOX=15; + FL_OVAL3D_FRAMEBOX=16; + FL_OVAL3D_EMBOSSEDBOX=17; + { Internal use only } + FL_TOPTAB_UPBOX=18; + FL_SELECTED_TOPTAB_UPBOX=19; + FL_BOTTOMTAB_UPBOX=20; + FL_SELECTED_BOTTOMTAB_UPBOX=21; + FL_OSHADOW_BOX=22; + +{ How to place text relative to a box } +Type + TFL_ALIGN = Longint; + +Const { Possible values for FL_ALIGN } + FL_ALIGN_CENTER = 0; + FL_ALIGN_TOP = 1; + FL_ALIGN_BOTTOM = 2; + FL_ALIGN_LEFT = 4; + FL_ALIGN_RIGHT = 8; + FL_ALIGN_TOP_LEFT = FL_ALIGN_TOP or FL_ALIGN_LEFT; + FL_ALIGN_TOP_RIGHT = FL_ALIGN_TOP or FL_ALIGN_RIGHT; + FL_ALIGN_BOTTOM_LEFT = FL_ALIGN_BOTTOM or FL_ALIGN_LEFT; + FL_ALIGN_BOTTOM_RIGHT = FL_ALIGN_BOTTOM or FL_ALIGN_RIGHT; + FL_ALIGN_INSIDE = (1 shl 13); + FL_ALIGN_VERT = (1 shl 14); { not functional yet } + + FL_ALIGN_LEFT_TOP = FL_ALIGN_TOP_LEFT; + FL_ALIGN_RIGHT_TOP = FL_ALIGN_TOP_RIGHT; + FL_ALIGN_LEFT_BOTTOM = FL_ALIGN_BOTTOM_LEFT; + FL_ALIGN_RIGHT_BOTTOM = FL_ALIGN_BOTTOM_RIGHT; + +{ Mouse buttons } + +FL_MBUTTON1=1; FL_LEFT_MOUSE=FL_MBUTTON1; +FL_MBUTTON2=2; FL_MIDDLE_MOUSE=FL_MBUTTON2; +FL_MBUTTON3=3; FL_RIGHT_MOUSE=FL_MBUTTON3; +FL_MBUTTON4=4; +FL_MBUTTON5=5; + + +{ control when to reutrn input, slider and dial object. } + + FL_RETURN_END_CHANGED = 0; + FL_RETURN_CHANGED = 1; + FL_RETURN_END = 2; + FL_RETURN_ALWAYS = 3; + FL_RETURN_DBLCLICK = 4; + +{ + * Some special color indeces for FL private colormap. It does not matter + * what the value of each enum is, but it must start from 0 and be + * consecutive. + } + + + +Type + TFL_DP_COL = Longint; +Const + FL_BLACK = 0; + FL_RED = 1; + FL_GREEN = 2; + FL_YELLOW = 3; + FL_BLUE = 4; + FL_MAGENTA = 5; + FL_CYAN = 6; + FL_WHITE = 7; + + FL_TOMATO = 8; + FL_INDIANRED = 9; + FL_SLATEBLUE = 10; + + FL_COL1 = 11; + FL_RIGHT_BCOL = 12; + FL_BOTTOM_BCOL = 13; + FL_TOP_BCOL = 14; + FL_LEFT_BCOL = 15; + FL_MCOL = 16; + + FL_INACTIVE = 17; + FL_PALEGREEN = 18; + FL_DARKGOLD = 19; + + FL_ORCHID = 20; + FL_DARKCYAN = 21; + FL_DARKTOMATO = 22; + FL_WHEAT = 23; + FL_DARKORANGE = 24; + FL_DEEPPINK = 25; + FL_CHARTREUSE = 26; + FL_DARKVIOLET = 27; + FL_SPRINGGREEN = 28; + FL_DOGERBLUE = 29; + + FL_FREE_COL1 = 256; + FL_FREE_COL2 = 257; + FL_FREE_COL3 = 258; + FL_FREE_COL4 = 259; + FL_FREE_COL5 = 260; + FL_FREE_COL6 = 261; + FL_FREE_COL7 = 262; + FL_FREE_COL8 = 263; + FL_FREE_COL9 = 264; + FL_FREE_COL10 = 265; + FL_FREE_COL11 = 266; + FL_FREE_COL12 = 267; + FL_FREE_COL13 = 268; + FL_FREE_COL14 = 269; + FL_FREE_COL15 = 270; + FL_FREE_COL16 = 271; + +FL_BUILT_IN_COLS = FL_DOGERBLUE+1; +FL_INACTIVE_COL = FL_INACTIVE; + +{ Some aliases for the color. This is actually backwards ... } + +Const +FL_GRAY16=FL_RIGHT_BCOL; +FL_GRAY35 = FL_BOTTOM_BCOL; +FL_GRAY80 = FL_TOP_BCOL; +FL_GRAY90 = FL_LEFT_BCOL; +FL_GRAY63 = FL_COL1; +FL_GRAY75 = FL_MCOL; +FL_LCOL = FL_BLACK; + +{ + * Pop-up menu item attributes. NOTE if more than 8, need to change + * choice and menu class where mode is kept by a single byte + } + FL_PUP_NONE = 0; + FL_PUP_GREY = 1; + FL_PUP_BOX = 2; + FL_PUP_CHECK = 4; + FL_PUP_RADIO = 8; + +FL_PUP_GRAY = FL_PUP_GREY; +FL_PUP_TOGGLE = FL_PUP_BOX; +FL_PUP_INACTIVE = FL_PUP_GREY; + +type + TFL_PUP_CB = Procedure (p1 : Longint); { call back prototype } cdecl; + PFL_PUP_CB = ^TFL_PUP_CB; + + TFL_PUP_ENTRY = record + TheText : pchar; { label of a popup/menu item } + CallBack : PFL_PUP_CB; { the callback function } + shortcut : pchar; { hotkeys } + mode : longint; { FL_PUP_GRAY, FL_PUP_CHECK etc } + end; + PFL_PUP_ENTRY = ^TFL_PUP_ENTRY; + + TFL_MENU_ENTRY = TFL_PUP_ENTRY; + PFL_MENU_ENTRY = ^TFL_MENU_ENTRY; + +{ Events that a form reacts to. } +type TFL_EVENT = Longint; +Const { Possible values } + FL_NOEVENT = 0; + FL_DRAW = 1; + FL_PUSH = 2; + FL_RELEASE = 3; + FL_ENTER = 4; + FL_LEAVE = 5; + FL_MOUSE = 6; + FL_FOCUS = 7; + FL_UNFOCUS = 8; + FL_KEYBOARD = 9; + FL_MOTION = 10; + FL_STEP = 11; + FL_SHORTCUT = 12; + FL_FREEMEM = 13; + FL_OTHER = 14; { property, selection etc } + FL_DRAWLABEL = 15; + FL_DBLCLICK = 16; { double click } + FL_TRPLCLICK = 17; { triple click } + FL_PS = 18; { dump a form into EPS } + +const +FL_MOVE=FL_MOTION; { for compatibility } + +{ Resize policies } +type TFL_RESIZE_T = Longint; + +const + FL_RESIZE_NONE = 0; + FL_RESIZE_X = 1; + FL_RESIZE_Y = 2; + +const + FL_RESIZE_ALL = FL_RESIZE_X or FL_RESIZE_Y; + +{ Keyboard focus control } +type + TFL_KEY = Longint; + +Const { Possible values for FL_KEY_Normal } + FL_KEY_NORMAL = 1; { normal keys(0-255) - tab +left/right } + FL_KEY_TAB = 2; { normal keys + 4 direction cursor } + FL_KEY_SPECIAL = 4; { only needs special keys(>255) } + FL_KEY_ALL = 7; { all keys } + + FL_ALT_VAL = (1 shl 17); { alt + Key --> FL_ALT_VAL + key } + +{ Internal use } +Type + TFL_FIND = Longint; +Const + FL_FIND_INPUT =0; + FL_FIND_AUTOMATIC =1; + FL_FIND_MOUSE =2; + FL_FIND_CANVAS =3; + FL_FIND_KEYSPECIAL =4; + +{****************************************************************** + * FONTS + *****************************************************************} + +Const FL_MAXFONTS=32; { max number of fonts } + +type TFL_TEXT_STYLE = Longint; +Const + FL_INVALID_STYLE = -1; + FL_NORMAL_STYLE = 0; + FL_BOLD_STYLE = 1; + FL_ITALIC_STYLE = 2; + FL_BOLDITALIC_STYLE = 3; + + FL_FIXED_STYLE = 4; + FL_FIXEDBOLD_STYLE = 5; + FL_FIXEDITALIC_STYLE = 6; + FL_FIXEDBOLDITALIC_STYLE = 7; + + FL_TIMES_STYLE = 8; + FL_TIMESBOLD_STYLE = 9; + FL_TIMESITALIC_STYLE = 10; + FL_TIMESBOLDITALIC_STYLE = 11; + + { The following are derived and must differ by multiples of SHADOW, + i.e., (FL_ENGRAVED%SHADOW) == 0. All being 2^n has the benefit that + (lstyle | FL_SHADOW) == (lstyle + FL_SHADOW). } + +Const + FL_SHADOW_STYLE = (1 shl 9); + FL_ENGRAVED_STYLE = (1 shl 10); + FL_EMBOSSED_STYLE = (1 shl 11); + + +Type TFL_FONT_STYLE= TFL_TEXT_STYLE; + +{ Standard sizes in XForms } +Const +FL_TINY_SIZE = 8; +FL_SMALL_SIZE = 10; +FL_NORMAL_SIZE = 12; +FL_MEDIUM_SIZE = 14; +FL_LARGE_SIZE = 18; +FL_HUGE_SIZE = 24; + +FL_DEFAULT_SIZE = FL_SMALL_SIZE; + +{ Defines for compatibility } + +FL_TINY_FONT = FL_TINY_SIZE; +FL_SMALL_FONT = FL_SMALL_SIZE; +FL_NORMAL_FONT= FL_NORMAL_SIZE; +FL_MEDIUM_FONT= FL_MEDIUM_SIZE; +FL_LARGE_FONT = FL_LARGE_SIZE; +FL_HUGE_FONT = FL_HUGE_SIZE; + +FL_NORMAL_FONT1 = FL_SMALL_FONT; +FL_NORMAL_FONT2 = FL_NORMAL_FONT; +FL_DEFAULT_FONT = FL_SMALL_FONT; + + +const +FL_BOUND_WIDTH = 3; { Border width of boxes } + +cFL_BEGIN_GROUP = 10000; +cFL_END_GROUP = 20000; +{ + * Definition of basic struct that holds an object + } + +FL_CLICK_TIMEOUT = 350; { double click interval } + +Type + +TFL_pixmap = record + thepixmap : Tpixmap; + Thewin : TWindow; + TheVisual : TVisual; + x,y : TFL_Coord; + w, h : word; + depth : Longint; + dbl_background : TFL_COLOR; + pixel : TFL_COLOR; +end; + +Pform = ^TForm; + +{Pfl_pixmap = ^fl_pixmap; +} + +Pflobjs = ^Tflobjs; + +THandle = Function (p1 : Pflobjs; p2 : Longint ; p3 : TFL_Coord; p4 : TFL_Coord;p5 : Longint ; p6 : pointer) : Longint; cdecl; +PHandle = ^THandle; +TObject_Callback = Procedure (P1 : Pflobjs;p2 : longint); cdecl; +PObject_Callback = ^TObject_Callback; + +Tflobjs = record + form : PForm; { the form this object belong } + u_vdata : Pointer; + u_cdata : Pchar; + u_ldata : longint; + + objclass : Longint ; { class of object, button, slider etc } + thetype : Longint; { type within the class } + boxtype : Longint ; { what kind of box type } + x, y, w, h : TFL_Coord; { obj. location and size } + bw : TFL_Coord; + col1, col2 : TFL_color; { colors of obj } + thelabel : pchar; { object label } + lcol : TFL_COLOR; { label color } + align : Longint; + lsize, lstyle : Longint; { label size and style } + + shortcut : ^Longint; + + handle : PHandle; + object_callback : PObject_Callback; + argument : Longint; + + spec : pointer; { instantiation } + + prehandle : PHandle; + posthandle : PHandle; + + + { re-configure preference } + resize : cardinal; { what to do if WM resizes the FORM } + nwgravity : cardinal; { how to re-position top-left corner } + segravity : cardinal; { how to re-position lower-right corner } + + parent,child,nc : Pflobjs; + ischild : longint; + + prev : pflobjs; { prev. obj in form } + next : pflobjs; { next. obj in form } + + flpixmap : Pointer; { pixmap double buffering stateinfo } + use_pixmap : Longint; { true to use pixmap double buffering } + + double_buffer : Longint; { only used by mesa/gl canvas } + + { some interaction flags } + pushed: Longint ; + focus: Longint ; + belowmouse: Longint ; + active: Longint ; { if accept event } + input: Longint ; + wantkey: Longint ; + radio: Longint ; + automatic: Longint ; + redraw: Longint ; + visible: Longint ; + clip: Longint ; + click_timeout : cardinal; + c_vdata : pointer; { for class use } + c_cdata : pchar; { For class use } + c_ldata : longint; { for class use } + cspec_size : cardinal; + aux_col1, aux_col2 : TFL_COLOR; + dbl_background : TFL_COLOR; + how_return : longint; + reserved : array[0..5] of cardinal; + { the following are for application programs } +end; + +TFL_OBJECT = TFlobjs; +PFL_OBJECT = ^TFL_OBJECT; + +TCallback = Procedure (P1 : pflobjs; P2 : pointer); cdecl; +PCallback = ^TCallback; +{ callback function for an entire form } +PFL_FORMCALLBACKPTR = PCallback; + +{ object callback function } +PFL_CALLBACKPTR = PCallBack; + +{ preemptive callback function } +PFL_RAW_CALLBACK = PCallback; + +{ at close (WM menu delete/close etc.) } +PFL_FORM_ATCLOSE = PCallback; + +{ deactivate/activate callback } +PFL_FORM_ATDEACTIVATE = PCallback; + +PFL_FORM_ATACTIVATE = PCallback; + +THandlePtr = Procedure ( p1 : PFL_Object; p2 : Longint; p3,p4 : TFL_COORD; p5 : Longint; p6 : pointer); cdecl; +PHandlePTR = ^THandlePTR; + +PFL_HANDLEPTR = PHandlePTR; + +{ +extern FL_OBJECT *FL_EVENT; +} +{** FORM ***} + +PFL_FORM = ^TFL_FORM; + +Tform = record + fdui : Pointer; + u_vdata : pointer; { for application } + u_cdata : pchar; + u_ldata : longint; + + thelabel : pchar; { window title } + window : cardinal; { X resource ID for window } + x, y, w, h : TFL_COORD; { current geometry info } + hotx, hoty : TFL_COORD; { hot-spot of the form } + + first,last,focusobj : pflobjs; + + form_callback : PFL_FORMCALLBACKPTR; + activate_callback : PFL_FORM_ATACTIVATE; + deactivate_callback: PFL_FORM_ATDEACTIVATE ; + form_cb_data, activate_data, deactivate_data : pointer; + + key_callback, + push_callback, + crossing_callback, + motion_callback, + all_callback: PFL_RAW_CALLBACK ; + + compress_mask : cardinal; + evmask : cardinal; + + { WM_DELETE_WINDOW message handler } + close_callback : PFL_FORM_ATCLOSE ; + close_data : pointer; + + + flpixmap : pointer; { back buffer } + + icon_pixmap : cardinal; + icon_mask : cardinal; + + { interaction and other flags } + vmode : Longint ; { current X visual class } + deactivated : Longint ; { true if sensitive } + use_pixmap : Longint ; { true if dbl buffering } + frozen : Longint ; { true if sync change } + visible : Longint ; { true if mapped } + wm_border : Longint ; { window manager info } + prop : cardinal; { other attributes } + has_auto : Longint ; + top : Longint ; + sort_of_modal : Longint; + parent, child : PFL_FORM; + parent_obj : PFL_OBJECT; + reserved : array[0..9] of Longint; +end; +TFL_FORM = Tform; + +TFD_Any = record + form : PFL_FORM; + vdata : Pointer; + cdata : pchar; + ldata : longint; + end; + +PFD_ANY = ^TFD_ANY; + + +{ + * Async IO stuff + } + +const + FL_READ = 1; + FL_WRITE = 2; + FL_EXCEPT = 4; + +{ IO other than XEvent Q } +Type + +TFL_IO_CALLBACK = Procedure (p1 :Longint ;p2 : pointer); cdecl; +PFL_IO_CALLBACK = ^TFL_IO_CALLBACK; +{ function definitions } +Procedure fl_add_io_callback(p1 : Longint ; p2 : word; p3 : PFL_IO_CALLBACK; p4 : pointer); cdecl;external; +Procedure fl_remove_io_callback(p1 : Longint ;p2 : word; p3 : PFL_IO_CALLBACK); cdecl;external; + +{ signals } +type + +TFL_SIGNAL_HANDLER = Procedure (p1 : Longint ; p2 : pointer); cdecl; +PFL_SIGNAL_HANDLER = ^TFL_SIGNAL_HANDLER ; + +Procedure fl_add_signal_callback(p1 : LongInt;p2 : PFL_SIGNAL_HANDLER;p3 : pointer); cdecl;external; +Procedure fl_remove_signal_callback(p1 : Longint ); cdecl;external; +Procedure fl_signal_caught(p1 :Longint ); cdecl;external; +Procedure fl_app_signal_direct(p1 : Longint ); cdecl;external; + +Function fl_add_timeout (p1 : longint;p2 : PFL_SIGNAL_HANDLER;p3 : pointer) : longint; cdecl;external; +Procedure fl_remove_timeout(p1 : Longint); cdecl;external; + +{ Some utility stuff } +type + +TFL_VN_PAIR = record + val : Longint; + name : Pchar; +end; + +PFL_VN_PAIR = ^TFL_VN_PAIR; + +Function fl_get_vn_value (p1 : PFL_VN_PAIR; p2 : pchar) : Longint; cdecl;external; +Function fl_get_vn_name (p1 : PFL_VN_PAIR; p2 : Longint ) : Pchar; cdecl;external; +Function fl_msleep (p1 : cardinal) : cardinal; cdecl;external; + +{ + * Basic public routine prototypes + } + +Procedure fl_library_version(p1,p2 : pointer ); cdecl;external; + +{* Generic routines that deal with FORMS *} + +Function fl_bgn_form(P1 : Longint ; P2,p3 : TFL_Coord) : PFL_Form; cdecl;external; +Procedure fl_end_form; cdecl;external; +Function fl_do_forms : PFL_OBJECT ; cdecl;external; +Function fl_check_forms : PFL_OBJECT; cdecl;external; +Function fl_do_only_forms : PFL_OBJECT; cdecl;external; +Function fl_check_only_forms : PFL_OBJECT; cdecl;external; +Procedure fl_freeze_form(P1 : PFL_FORM); cdecl;external; + +Procedure fl_set_focus_object( P1 : PFL_FORM;p2 : PFL_OBJECT); cdecl;external; +Procedure fl_reset_focus_object( p1 : PFL_OBJECT); cdecl;external; + +{ +#define fl_set_object_focus fl_set_focus_object +} +Function fl_set_form_atclose(p1 : PFL_FORM; p2 : PFL_FORM_ATCLOSE; p3 : pointer) : PFL_FORM_ATCLOSE ; cdecl;external; +Function fl_set_atclose(p1 : PFL_FORM_ATCLOSE; p2: pointer) : PFL_FORM_ATCLOSE ; cdecl;external; + +Function fl_set_form_atactivate(p1 : PFL_FORM; P2 : PFL_FORM_ATACTIVATE; P3 : pointer) : PFL_FORM_ATACTIVATE ; cdecl;external; +Function fl_set_form_atdeactivate(p1 : PFL_FORM;p2 : PFL_FORM_ATDEACTIVATE;p3 : pointer) : PFL_FORM_ATDEACTIVATE ; cdecl;external; + +Procedure fl_unfreeze_form (p1 : PFL_FORM); cdecl;external; +Procedure fl_deactivate_form(p1 : PFL_FORM); cdecl;external; +Procedure fl_activate_form(p1 : PFL_FORM); cdecl;external; +Procedure fl_deactivate_all_forms; cdecl;external; +Procedure fl_activate_all_forms; cdecl;external; +Procedure fl_freeze_all_forms; cdecl;external; +Procedure fl_unfreeze_all_forms; cdecl;external; +Procedure fl_scale_form(p1 : PFL_FORM;p2,p3 : double); cdecl;external; +Procedure fl_set_form_position(p1 : PFL_FORM; p2,p3 : TFL_Coord); cdecl;external; +Procedure fl_set_form_title(p1 : PFL_FORM; p2 : pchar); cdecl;external; + +Procedure fl_set_form_property(p1 : PFL_FORM; p2 : word); cdecl;external; +Procedure fl_set_app_mainform( p1 : PFL_FORM); cdecl;external; +Function fl_get_app_mainform : PFL_FORM; cdecl;external; +Procedure fl_set_app_nomainform(P1 : Longint ); cdecl;external; + +Procedure fl_set_form_callback(p1 : PFL_FORM; P2 : PFL_FORMCALLBACKPTR; P3 : pointer); cdecl;external; +{ +#define fl_set_form_call_back fl_set_form_callback +} + +Procedure fl_set_form_size(p1 : PFL_FORM; p2,p3 : TFL_Coord); cdecl;external; +Procedure fl_set_form_hotspot(p1 : PFL_FORM; p2,p3 : TFL_Coord); cdecl;external; +Procedure fl_set_form_hotobject(p1 : PFL_FORM; p2 : PFL_OBJECT); cdecl;external; +Procedure fl_set_form_minsize(p1 : PFL_FORM ; p2,p3 :TFL_Coord); cdecl;external; +Procedure fl_set_form_maxsize(p1 : PFL_FORM; p2,p3 :TFL_Coord); cdecl;external; +Procedure fl_set_form_event_cmask(p1 : PFL_FORM; p2 : cardinal); cdecl;external; +Function fl_get_form_event_cmask(p1 : PFL_FORM) : cardinal; cdecl;external; + +Procedure fl_set_form_geometry(p1 : PFL_FORM; p2,p3,p4,p5 : TFL_Coord); cdecl;external; + +{ +#define fl_set_initial_placement fl_set_form_geometry +} + +Function fl_show_form (p1 : PFL_FORM; p2,p3 : Longint ; p4 : pchar) : Longint; cdecl;external; +Procedure fl_hide_form(p1 : PFL_FORM); cdecl;external; +Procedure fl_free_form(p1 : PFL_FORM); cdecl;external; +Procedure fl_redraw_form(p1 : PFL_FORM); cdecl;external; +Procedure fl_set_form_dblbuffer(p1 : PFL_FORM; p2 : Longint ); cdecl;external; +Procedure fl_prepare_form_window(p1 : PFL_FORM; p2,p3 : Longint ; p4 : pchar); cdecl;external; +Procedure fl_show_form_window(p1 : PFL_FORM); cdecl;external; +Function fl_adjust_form_size(p1 : PFL_FORM) : double; cdecl;external; +Function fl_form_is_visibe (p1 : PFL_FORM) : Longint; cdecl;external; + +Function fl_register_raw_callback(p1 : PFL_FORM; p2 : cardinal; P3 : PFL_RAW_CALLBACK): PFL_RAW_CALLBACK; cdecl;external; + +{ +#define fl_register_call_back fl_register_raw_callback +} +Function fl_bgn_group : PFL_OBJECT; cdecl;external; +Function fl_end_group : PFL_OBJECT; cdecl;external; +Procedure fl_addto_group (p1 : PFL_OBJECT); cdecl;external; + +{***** Routines that deal with FL_OBJECTS *******} + +Procedure fl_set_object_boxtype(p1 : PFL_OBJECT; p2 : Longint ); cdecl;external; +Procedure fl_set_object_bw(p1 : PFL_OBJECT; p2 : Longint ); cdecl;external; +Procedure fl_set_object_resize(p1 : PFL_OBJECT; p2 : word); cdecl;external; +Procedure fl_set_object_gravity(p1 : PFL_OBJECT; p2,p3 : word ); cdecl;external; +Procedure fl_set_object_lsize(p1 : PFL_OBJECT; p2 : Longint ); cdecl;external; +Procedure fl_set_object_lstyle(p1 : PFL_OBJECT; p2 : Longint ); cdecl;external; +Procedure fl_set_object_lcol(p1 : PFL_OBJECT; p2 : TFL_COLOR); cdecl;external; +Procedure fl_set_object_return(p1 : PFL_OBJECT; p2 : Longint ); cdecl;external; +Procedure fl_set_object_lalign(p1 : PFL_OBJECT; p2 : Longint ); { to be removed } cdecl;external; +Procedure fl_set_object_shortcut(p1 : PFL_OBJECT; p2 : pchar;p3 : Longint ); cdecl;external; +Procedure fl_set_object_shortcutkey(p1 : PFL_OBJECT; p2 : word); cdecl;external; +Procedure fl_set_object_dblbuffer(p1 : PFL_OBJECT; p2 : Longint ); cdecl;external; +Procedure fl_set_object_color(p1 : PFL_OBJECT; p2 : TFL_COLOR;p3 : TFL_COLOR); cdecl;external; +Procedure fl_set_object_label(p1 : PFL_OBJECT; p2 : pchar); cdecl;external; +Procedure fl_set_object_position(p1 : PFL_OBJECT; p2,p3 :TFL_Coord); cdecl;external; +Procedure fl_set_object_size(p1 : PFL_OBJECT; p2,p3 :TFL_Coord); cdecl;external; +Procedure fl_set_object_automatic(p1 : PFL_OBJECT; p2 : Longint ); cdecl;external; +Procedure fl_draw_object_label(p1 : PFL_OBJECT); cdecl;external; +Procedure fl_draw_object_label_outside(p1 : PFL_OBJECT); cdecl;external; +Function fl_get_object_component(p1 : PFL_OBJECT; p2,p3,p4 : Longint): PFL_OBJECT; cdecl;external; + +{ +#define fl_set_object_dblclick(p1 : ob; p2 : timeout) (p1 : ob)->click_timeout = (p1 : timeout); p3 :p2 : +} +Procedure fl_set_object_geometry(p1 : PFL_OBJECT; p2,p3,p4,p5 :TFL_Coord); cdecl;external; + + +Procedure fl_fit_object_label(p1 : PFL_OBJECT; p2,p3 :TFL_Coord); cdecl;external; + +{ no much get (p1 : yet ?) } + +Procedure fl_get_object_geometry(p1 : PFL_OBJECT; p2,p3,p4,p5 : PFL_Coord ); cdecl;external; +Procedure fl_get_object_position(p1 : PFL_OBJECT; p2,p3 :PFL_COORD); cdecl;external; + +{ this one takes into account the label } +Procedure fl_get_object_bbox (p1 : PFL_OBJECT; p2,p3,p4,p5 : PFL_COORD); cdecl;external; + +Procedure fl_call_object_callback(p1 : PFL_OBJECT); cdecl;external; +Function fl_set_object_prehandler(p1 : PFL_OBJECT; p2 : PFL_HANDLEPTR) : PFL_HANDLEPTR ; cdecl;external; +Function fl_set_object_posthandler(p1 : PFL_OBJECT; p2 : PFL_HANDLEPTR): PFL_HANDLEPTR ; cdecl;external; +Function fl_set_object_callback(p1 : PFL_OBJECT; p2 : PFL_CALLBACKPTR; p3 :longint) : PFL_CALLBACKPTR ; cdecl;external; +{ +#define fl_set_object_align fl_set_object_lalign +#define fl_set_call_back fl_set_object_callback +} +Procedure fl_redraw_object(p1 : PFL_OBJECT); cdecl;external; +Procedure fl_scale_object(p1 : PFL_OBJECT; p2 : double; p3 :double); cdecl;external; +Procedure fl_show_object(p1 : PFL_OBJECT); cdecl;external; +Procedure fl_hide_object(p1 : PFL_OBJECT); cdecl;external; +Procedure fl_free_object(p1 : PFL_OBJECT); cdecl;external; +Procedure fl_delete_object(p1 : PFL_OBJECT); cdecl;external; +Procedure fl_trigger_object(p1 : PFL_OBJECT); cdecl;external; +Procedure fl_activate_object(p1 : PFL_OBJECT); cdecl;external; +Procedure fl_deactivate_object(p1 : PFL_OBJECT); cdecl;external; + +Type TFL_ENUMERATEPTR = Procedure (p : pchar); cdecl; + PFL_ENUMERATEPTR = ^TFL_ENUMERATEPTR; + +Procedure fl_enumerate_fonts (p1 : PFL_ENUMERATEPTR; p2 : longint); cdecl;external; + +Function fl_set_font_name(p1 : Longint ; p2 : pchar) : longint; cdecl;external; +Procedure fl_set_font(p1 : Longint ; p2 : Longint ); cdecl;external; + +{ routines that facilitate free object } + +Function fl_get_char_height(p1,p2 : Longint ; p3,p4 : pointer) : Longint ; cdecl;external; +Function fl_get_char_width(p1,p2 : Longint ) : Longint; cdecl;external; +Function fl_get_string_height(p1 : Longint ; p2 : Longint ; p3 : pchar; p4 : Longint ; p5,p6 : pointer) : Longint ; cdecl;external; +Function fl_get_string_width(p1 : Longint ; p2 : Longint ; p3 : pchar; p4 : Longint ) : Longint ; cdecl;external; +Function fl_get_string_widthTAB(p1 : Longint ; p2 : Longint ; p3 : pchar; p4 : Longint ) : Longint ; cdecl;external; +Function fl_get_string_dimension(p1 : Longint ; p2 : Longint ; p3 : pchar; p4 : Longint ; p5,p6 : pointer) : Longint ; cdecl;external; +{ +#define fl_get_string_size fl_get_string_dimension +} +Procedure fl_get_align_xy(p1,p2,p3,p4,p5,p6,p7,p8,p9 : Longint ; p10,p11 : pointer); cdecl;external; + +Procedure fl_drw_text(p1 : Longint ; p2,p3,p4,p5 : TFL_Coord; p6 : TFL_COLOR; p7,p8 : Longint ; p9 : pchar); cdecl;external; + +Procedure fl_drw_text_beside(p1 : Longint ; p2,p3,p4,p5 : TFL_Coord; p6 : TFL_COLOR; p7,p8 : Longint ; p9 : pchar); cdecl;external; +{ +#define fl_draw_text(p1 : a; p2 : x;y;w;h;c;st;sz;s) \ + (p1 : (p1 : (p1 : a) & FL_ALIGN_INSIDE) ? fl_drw_text:fl_drw_text_beside)\ + (p1 : a; p2 : x;y;w;h;c;st;sz;s) +} + +Procedure fl_drw_text_cursor(p1 : Longint ; p2,p3,p4,p5 : TFL_Coord;p6,p7,p8: Longint ; p9 : Pchar; p10,p11: Longint ); cdecl;external; + +Procedure fl_drw_box(p1 : Longint ; p2,p3,p4,p5 : TFL_Coord; p6 : TFL_COLOR; p7 : Longint ); cdecl;external; + +type + +FL_DRAWPTR = Procedure (p1,p2,p3,p4 : TFL_Coord; p5 : Longint ;p6: TFL_COLOR); cdecl; +PFL_DRAWPTR = ^FL_DRAWPTR; + +Function fl_add_symbol(p1 : pchar; p2 : PFL_DRAWPTR; p3 :Longint ) : Longint ; cdecl;external; +Function fl_draw_symbol(p1 : pchar; p2,p3,p4,p5 : TFL_Coord;p6 : TFL_COLOR) : Longint ; cdecl;external; + +const + FL_SLIDER_NONE = 0; + FL_SLIDER_BOX = 1; + FL_SLIDER_KNOB = 2; + FL_SLIDER_UP = 4; + FL_SLIDER_DOWN = 8; + FL_SLIDER_ALL = 15; + +Procedure fl_drw_slider (p1 :longint; p2,p3,P4,p5 : TFL_COORD; p6,p7 : TFL_COLOR; + p8 : Longint; p9,p10 : double; P11 : pchar; p12,p13,p14 : Longint);cdecl;external; + + +Function fl_mapcolor(p1 : TFL_COLOR; p2,p3,p4 : Longint ) : cardinal; cdecl;external; +Function fl_mapcolorname(p1 : TFL_COLOR; p2 : pchar) : longint; cdecl;external; +{ +#define fl_mapcolor_name fl_mapcolorname +} +Function fl_getmcolor(p1 : TFL_COLOR; p2,p3,p4 : pointer) : cardinal; cdecl;external; +Procedure fl_free_colors(p1 : PFL_COLOR; p2 : Longint ); cdecl;external; +Procedure fl_free_pixels(p1 : pcardinal; p2 : Longint ); cdecl;external; +Procedure fl_set_color_leak(p1 : Longint ); cdecl;external; +Function fl_get_pixel(p1 : TFL_COLOR): cardinal; cdecl;external; +{ +#define fl_get_flcolor fl_get_pixel +} +Procedure fl_get_icm_color(p1 : TFL_COLOR; p2,p3,p4 : pointer); cdecl;external; +Procedure fl_set_icm_color(p1 : TFL_COLOR; p2,p3,p4 : Longint ); cdecl;external; + +Procedure fl_color(p1 : TFL_COLOR); cdecl;external; +Procedure fl_bk_color(p1 : TFL_COLOR); cdecl;external; +Procedure fl_textcolor(p1 : TFL_COLOR); cdecl;external; +Procedure fl_bk_textcolor(p1 : TFL_COLOR); cdecl;external; +Procedure fl_set_gamma(p1,p2,p3 :double); cdecl;external; + +Procedure fl_show_errors(p1 : Longint ); cdecl;external; + +{ Some macros } +{ +#define FL_max(p1 : a; p2 : b) (p1 : (p1 : a) > (p1 : b) ? (p1 : a):(p1 : b) ) +#define FL_min(p1 : a; p2 : b) (p1 : (p1 : a) < (p1 : b) ? (p1 : a):(p1 : b) ) +#define FL_abs(p1 : a) (p1 : (p1 : a) > 0 ? (p1 : a):(p1 : -(p1 : a))) +#define FL_nint(p1 : a) (p1 : (p1 : a) > 0 ? (p1 : (p1 : a) + 0.5):(p1 : (p1 : a) - 0.5)) +} +type TFL_FSCB = Function (p1 : pchar; p2 : pointer) : Longint; cdecl; +PFL_FSCB = ^TFL_FSCB; + +{ utilities for new objects } +var fl_current_form : PFL_FORM; cvar;external; +Procedure fl_add_object(p1 : PFL_FORM; p2 : PFL_OBJECT); cdecl;external; +Procedure fl_addto_form(p1 : PFL_FORM); cdecl;external; +Function fl_make_object(p1 : Longint ; p2,p3,p4,p5,p6 : TFL_Coord; p7 : pchar; P8 : PFL_HANDLEPTR) : PFL_OBJECT; cdecl;external; + +Procedure fl_set_coordunit(p1 : Longint ); cdecl;external; +Function fl_get_coordunit : Longint ; cdecl;external; +Procedure fl_set_border_width(p1 : Longint ); cdecl;external; +Function fl_get_border_width : Longint ; cdecl;external; +Procedure fl_set_scrollbar_type (p1 :longint); cdecl;external; + +Procedure fl_flip_yorigin; cdecl;external; + +Procedure fl_ringbell ( p1 : longint); cdecl;external; +Procedure fl_gettime (p1,p2 : Plongint); cdecl;external; +Function fl_whoami : pchar; cdecl;external; +Function fl_now : pchar; cdecl;external; +Function fl_mouse_button : longint; cdecl;external; + + +{ this gives more flexibility for future changes } + +{ +#define fl_free free +#define fl_malloc malloc +#define fl_calloc calloc +#define fl_realloc realloc +} +Const FL_MAX_MENU_CHOICE_ITEMS = 128; + +{ + * + * X Window dependent stuff + * + } + +{ Still need conversion !! } +{ +#include <X11/Xatom.h> +#include <X11/keysym.h> +} +Const + + FL_MINDEPTH = 1; + + +{ FL_xxx does not do anything anymore; but kept for compatibility } + FL_illegalVisual = -1; + FL_StaticGray = StaticGray; + FL_GrayScale = GrayScale; + FL_StaticColor = StaticColor; + FL_PseudoColor = PseudoColor; + FL_TrueColor = TrueColor; + FL_DirectColor = DirectColor; + FL_DefaultVisual = 10; { special request } + + FL_North = NorthGravity; + FL_NorthEast = NorthEastGravity; + FL_NorthWest = NorthWestGravity; + FL_South = SouthGravity; + FL_SouthEast = SouthEastGravity; + FL_SouthWest = SouthWestGravity; + FL_East = EastGravity; + FL_West = WestGravity; + FL_NoGravity = ForgetGravity; + FL_ForgetGravity = ForgetGravity; + +{ +#define FL_is_gray(p1 : v) (p1 : v==GrayScale || v==StaticGray) +#define FL_is_rgb(p1 : v) (p1 : v==TrueColor || v==DirectColor) +} + +{ + * Internal colormap size. Not really very meaningful as fl_mapcolor + * and company allow color "leakage"; that is; although only FL_MAX_COLS + * are kept in the internal colormap; the server might have substantially + * more colors allocated + } + +FL_MAX_COLS = 1024; + +{ + * FL graphics state information. Some are redundant. + } + +type +TFL_STATE = record + xvinfo : PXVisualInfo; + cur_fnt : PXFontStruct; { current font in default GC } + colormap : TColormap ; { colormap valid for xvinfo } + trailblazer : TWindow ; { a valid window for xvinfo } + vclass, depth, { visual class and color depth } + rgb_bits, { primary color resolution } + dithered, { true if dithered color } + pcm : Longint; { true if colormap is not shared } + gc : Array [0..16] of TGC; { working GC } + textgc : array [0..16] of TGC; { GC used exclusively for text } + dimmedGC : TGC; { A GC having a checkboard stipple } + lut :array [0..FL_MAX_COLS] of cardinal; { secondary lookup table } + rshift : word; + rmask, rbits : Longint; + gshift : word; + gmask,gbits : Longint ; + bshift : word; + bmask, bbits : Longint ; +end; +PFL_State = ^TFL_State; + +{ +#define FL_State FL_STATE +} + +{**** Global variables *****} + +Var + +fl_display : PDisplay; +fl_screen : Longint; +fl_root : TWindow; { root window } +fl_vroot : TWindow; { virtual root window } +fl_scrh : Longint; +fl_scrw : Longint; { screen dimension in pixels } +fl_vmode : Longint ; + +{ current version only runs in single visual mode } +{ +#define fl_get_vclass(p1 : ) fl_vmode +#define fl_get_form_vclass(p1 : a) fl_vmode +} +{ +fl_state[] : PFL_State ; +fl_ul_magic_char : pchar; +} + +Function fl_mode_capable(p1,p2 : longint ) : longint; cdecl;external; + +{ +#define fl_default_win(p1 : ) (p1 : fl_state[fl_vmode].trailblazer) +#define fl_default_window(p1 : ) (p1 : fl_state[fl_vmode].trailblazer) +} +{ + * All pixmaps used by FL_OBJECT to simulate double buffering have the + * following entries in the structure. TFL_Coord x;y are used to shift + * the origin of the drawing routines + } + + +{ fonts related } +Const +FL_MAX_FONTSIZES=10; + +type + FL_FONT = record + fs : array[0..FL_MAX_FONTSIZES] of PXFontStruct; { cached fontstruct } + size : array [0..FL_MAX_FONTSIZES] of byte; { cached sizes } + nsize : byte; { cached so far } + fname : Array[1..80] of char; { without size info } +end; + +{ + * Some basic drawing routines + } + +type TFL_POINT = TXPoint; + PFL_Point = ^TFL_Point; + TFL_RECT = TXRECTANGLE; + PFL_RECT = ^TFL_RECT; + +{ rectangles } +Procedure fl_rectangle(p1 : Longint ; p2,p3,p4,p5 : TFL_Coord; p6 : TFL_COLOR); cdecl;external; +Procedure fl_rectbound(p1,p2,p3,p4 : TFL_Coord;p5 : TFL_COLOR); cdecl;external; + +Procedure fl_rectf(x,y,w,h : TFL_COORD;c : TFL_COLOR); +Procedure fl_rect(x,y,w,h : TFL_COORD;c : TFL_COLOR); + + +{ rectangle with rounded-corners } +Procedure fl_roundrectangle(p1 : Longint ; p2,p3,p4,p5 : TFL_Coord; p6 :TFL_COLOR); cdecl;external; + +{ +#define fl_roundrectf(p1 : x; p2 : y;w;h;c) fl_roundrectangle(p1 : 1; p2 : x;y;w;h;c) +#define fl_roundrect(p1 : x; p2 : y;w;h;c) fl_roundrectangle(p1 : 0; p2 : x;y;w;h;c) +} +{ general polygon and polylines } +Procedure fl_polygon(p1 : Longint ; p2 : PFL_POINT; p3 : Longint ; p4 : TFL_COLOR); cdecl;external; + +(* +#define fl_polyf(p1 : p; p2 : n;c) fl_polygon(p1 : 1; p2 : p; p3 : n; p4 : c) +#define fl_polyl(p1 : p; p2 : n;c) fl_polygon(p1 : 0; p2 : p; p3 : n; p4 : c) +#define fl_polybound(p1 : p; p2 : n;c) do {fl_polyf(p1 : p; p2 : n;c);fl_polyl(p1 : p; p2 : n;FL_BLACK);}while(p1 : 0) +*) + +Procedure fl_lines(p1 : TFL_POINT; p2 : Longint ; p3 :TFL_COLOR); cdecl;external; +Procedure fl_line(p1,p2,p3,p4 : TFL_Coord; p5 : TFL_COLOR); cdecl;external; +Procedure fl_point(p1,p2 : TFL_Coord; p3: TFL_COLOR); cdecl;external; +Procedure fl_points(p1 : PFL_POINT; p2 : Longint; p3: TFL_COLOR); cdecl;external; + +{ +#define fl_simple_line fl_line +} +Procedure fl_dashedlinestyle(p1 : pchar; p2 : Longint ); cdecl;external; +Procedure fl_drawmode(p1 : Longint ); cdecl;external; + +{ +#define fl_diagline(p1 : x; p2 : y;w;h;c) fl_line(p1 : x; p2 : y;(p1 : x)+(p1 : w)-1; p2 : (p1 : y)+(p1 : h)-1; p2 : c) +} +{ line attributes } +Const + FL_SOLID = 0; + FL_USERDASH = 1; + FL_USERDOUBLEDASH = 2; + FL_DOT = 3; + FL_DOTDASH = 4; + FL_DASH = 5; + FL_LONGDASH = 6; + +Procedure fl_linewidth(p1 : Longint ); cdecl;external; +Procedure fl_linestyle(p1 : Longint ); cdecl;external; + +Function fl_get_linewidth : longint; cdecl;external; +Function fl_get_linestyle : longint; cdecl;external; + + +{* ellipses *} +Procedure fl_oval(p1 : Longint ; p2,p3,p4,p5 : TFL_Coord; p6 : TFL_COLOR); cdecl;external; +Procedure fl_ovalbound(p1,p2,p3,p4 : TFL_Coord; p5 : TFL_COLOR); cdecl;external; +Procedure fl_ovalarc(p1 : Longint ; p2,p3,p4,p5 : TFL_Coord; p6,p7 : Longint; p8 : TFL_COLOR); cdecl;external; + +{ +#define fl_ovalf(p1 : x; p2 : y;w;h;c) fl_oval(p1 : 1; p2 : x;y;w;h;c) +#define fl_ovall(p1 : x; p2 : y;w;h;c) fl_oval(p1 : 0; p2 : x;y;w;h;c) +#define fl_oval_bound fl_ovalbound + +#define fl_circf(p1 : x; p2 : y;r;col) fl_oval(p1 : 1; p2 : (p1 : x)-(p1 : r); p2 : (p1 : y)-(p1 : r); p2 : 2*(p1 : r); p2 : 2*(p1 : r); p2 : col) +#define fl_circ(p1 : x; p2 : y;r;col) fl_oval(p1 : 0; p2 : (p1 : x)-(p1 : r); p2 : (p1 : y)-(p1 : r); p2 : 2*(p1 : r); p2 : 2*(p1 : r); p2 : col) +} + +{ arcs } +Procedure fl_pieslice(p1 : Longint ; p2,p3,p4,p5 : TFL_Coord;p6,p7 :Longint ; p8 : TFL_COLOR); cdecl;external; +{ +#define fl_arcf(p1 : x; p2 : y;r;a1;a2;c) fl_pieslice(p1 : 1; p2 : (p1 : x)-(p1 : r); p2 : (p1 : y)-(p1 : r); p2 : \ + (p1 : 2*(p1 : r)); p2 : (p1 : 2*(p1 : r)); p2 : a1;a2;c) + +#define fl_arc(p1 : x; p2 : y;r;a1;a2;c) fl_pieslice(p1 : 0; p2 : (p1 : x)-(p1 : r); p2 : (p1 : y)-(p1 : r); p2 : \ + (p1 : 2*(p1 : r)); p2 : (p1 : 2*(p1 : r)); p2 : a1;a2;c) +} +{ misc. stuff } +Procedure fl_add_vertex(p1,p2 : TFL_Coord); cdecl;external; +Procedure fl_add_float_vertex(p1,p2 : real); cdecl;external; +Procedure fl_reset_vertex; cdecl;external; +Procedure fl_endline; cdecl;external; +Procedure fl_endpolygon; cdecl;external; +Procedure fl_endclosedline; cdecl;external; + +{ +#define fl_bgnline fl_reset_vertex +#define fl_bgnclosedline fl_reset_vertex +#define fl_bgnpolygon fl_reset_vertex +#define fl_v2s(p1 : v) fl_add_vertex(p1 : v[0]; p2 : v[1]) +#define fl_v2i(p1 : v) fl_add_vertex(p1 : v[0]; p2 : v[1]) +#define fl_v2f(p1 : v) fl_add_float_vertex(p1 : v[0]; p2 : v[1]) +#define fl_v2d(p1 : v) fl_add_float_vertex(p1 : v[0]; p2 : v[1]) +} + +{ high level drawing routines } +Procedure fl_drw_frame(p1 : Longint ; p2,p3,p4,p5 : TFL_Coord;p6 : TFL_COLOR; p7 : Longint ); cdecl;external; +Procedure fl_drw_checkbox(p1 : Longint ; p2,p3,p4,p5 : TFL_Coord;p6 : TFL_COLOR;p7 : Longint ); cdecl;external; + +{ + * Interfaces + } +Function fl_get_fontstruct(p1,p2 : Longint ) : PXFontStruct; cdecl;external; +{ +#define fl_get_font_struct fl_get_fontstruct +#define fl_get_fntstruct fl_get_font_struct +} + +Function fl_get_mouse(p1,p2 : PFL_COORD; p3 : pword) : TWindow; cdecl;external; +Procedure fl_set_mouse(p1,p2 : TFL_Coord); cdecl;external; +Function fl_get_win_mouse(p1 : TWindow; p2,p3 : PFL_COORD; p4 : pword) : TWindow; cdecl;external; +Function fl_get_form_mouse(p1 : PFL_FORM; p2,p3 : PFL_COORD; p4 : pWord) : TWindow; cdecl;external; +Function fl_win_to_form(p1 : TWindow) : PFL_form; cdecl;external; +Procedure fl_set_form_icon(p1 : PFL_FORM; p2 : TPixmap; p3 :TPixmap); cdecl;external; + +{ +#define fl_raise_form(p1 : f) if(p1 : f->window) XRaiseWindow(p1 : fl_display; p2 : f->window) +#define fl_lower_form(p1 : f) if(p1 : f->window) XLowerWindow(p1 : fl_display; p2 : f->window) +} +{ +#define fl_set_foreground(p1 : gc; p2 : c) XSetForeground(p1 : fl_display; p2 : gc;fl_get_pixel(p1 : c)) +#define fl_set_background(p1 : gc; p2 : c) XSetBackground(p1 : fl_display; p2 : gc;fl_get_pixel(p1 : c)) +} +{ General windowing support } + +Function fl_wincreate(p1 : pchar) : TWindow; cdecl;external; +Function fl_winshow(p1 : TWindow) : TWindow; cdecl;external; +Function fl_winopen(p1 : pchar) : TWindow; cdecl;external; +Procedure fl_winhide(p1 : TWindow); cdecl;external; +Procedure fl_winclose(p1 : TWindow); cdecl;external; +Procedure fl_winset(p1 : TWindow); cdecl;external; +Function fl_winget : Twindow; cdecl;external; + +Procedure fl_winresize(p1 : TWindow; p2,p3 :TFL_Coord); cdecl;external; +Procedure fl_winmove(p1 : TWindow; p2,p3 :TFL_Coord); cdecl;external; +Procedure fl_winreshape(p1 : TWindow; p2,p3,p4,p5 : TFL_Coord); cdecl;external; +Procedure fl_winicon(p1 : TWindow; p2 : TPixmap; p3 :TPixmap); cdecl;external; +Procedure fl_winbackground(p1 : TWindow; p2 : cardinal); cdecl;external; +Procedure fl_winstepunit(p1 : TWindow; p2,p3 :TFL_Coord); cdecl;external; +Procedure fl_winisvalid(p1 : TWindow); cdecl;external; +Procedure fl_wintitle(p1 : TWindow; p2 : pchar); cdecl;external; +Procedure fl_winposition(p1,p2 : TFL_Coord); cdecl;external; + +{ +#define fl_pref_winposition fl_winposition +#define fl_win_background fl_winbackground +#define fl_set_winstepunit fl_winstepunit +} + + +Procedure fl_winminsize(p1 : TWindow; p2,p3 :TFL_Coord); cdecl;external; +Procedure fl_winmaxsize(p1 : TWindow; p2,p3 :TFL_Coord); cdecl;external; +Procedure fl_winaspect(p1 : TWindow; p2,p3 :TFL_Coord); cdecl;external; +Procedure fl_reset_winconstraints(p1 : TWindow); cdecl;external; + +Procedure fl_winsize(p1,p2 : TFL_Coord); cdecl;external; +Procedure fl_initial_winsize(p1,p2 : TFL_Coord); cdecl;external; +{ +#define fl_pref_winsize fl_winsize +} +Procedure fl_initial_winstate(p1 : Longint ); cdecl;external; + +Function fl_create_colormap(p1 : PXVisualInfo; p2 : Longint ) : TColormap; cdecl;external; + + +Procedure fl_wingeometry(p1,p2,p3,p4 : TFL_Coord); cdecl;external; +{ +#define fl_pref_wingeometry fl_wingeometry +} +Procedure fl_initial_wingeometry(p1,p2,p3,p4 : TFL_Coord); cdecl;external; + +{ +Procedure fl_noborder; cdecl;external; +Procedure fl_transient; cdecl;external; +} + +Procedure fl_get_winsize(p1 : TWindow; p2,p3 :PFL_COORD); cdecl;external; +Procedure fl_get_winorigin(p1 : TWindow; p2,p3 :PFL_COORD); cdecl;external; +Procedure fl_get_wingeometry(p1 : TWindow; p2,p3,p4,p5 : PFL_COORD); cdecl;external; + +{ for compatibility } +{ +#define fl_get_win_size fl_get_winsize +#define fl_get_win_origin fl_get_winorigin +#define fl_get_win_geometry fl_get_wingeometry +#define fl_initial_winposition fl_pref_winposition + +#define fl_get_display(p1 : ) fl_display +#define FL_FormDisplay(p1 : form) fl_display +#define FL_ObjectDisplay(p1 : object) fl_display +} + +{ the window an object belongints } + +Function FL_ObjWin ( P : PFL_Object) : TWindow; + +{ +#define FL_OBJECT_WID FL_ObjWin +} + +{ all registerable events; including Client Message } +const FL_ALL_EVENT = (KeyPressMask or KeyReleaseMask or + ButtonPressMask or ButtonReleaseMask or + EnterWindowMask or LeaveWindowMask or + ButtonMotionMask or PointerMotionMask); + +{ Timer related } + + FL_TIMER_EVENT = $40000000; + + +Function fl_XNextEvent(p1 : PXEvent) : Longint; cdecl;external; +Function fl_XPeekEvent(p1 : PXEvent) : Longint; cdecl;external; +Function fl_XEventsQueued(p1 : Longint ) : Longint; cdecl;external; +Procedure fl_XPutBackEvent(p1 : PXEvent); cdecl;external; +Function fl_last_event : PXEvent ; cdecl;external; + +type +TFL_APPEVENT_CB = Procedure (p1 : PXEvent; p2 : pointer); cdecl; +PFL_APPEVENT_CB = ^TFL_APPEVENT_CB; + +Function fl_set_event_callback(p1 : PFL_APPEVENT_CB; p2 : pointer) : PFL_APPEVENT_CB ; cdecl;external; +Function fl_set_idle_callback(p1 : PFL_APPEVENT_CB; p2 : pointer) : PFL_APPEVENT_CB ; cdecl;external; +Function fl_addto_selected_xevent(p1 : TWindow; p2 : longint) : Cardinal; cdecl;external; +Function fl_remove_selected_xevent(p1 : TWindow; p2 : longint) : cardinal; cdecl;external; +{ +#define fl_add_selected_xevent fl_addto_selected_xevent +} +{ + * Group some WM stuff into a structure for easy maintainance + } +const + FL_WM_SHIFT = 1; + FL_WM_NORMAL = 2; + +type TFL_WM_STUFF = record + rpx, rpy, { reparenting offset for full border } + trpx, trpy, { reparenting offset for transient } + bw, { additional border } + rep_method : Longint; { 1 for shifting; 2 for normal } + pos_request : word; { USPOSITION or PPOSITION } +end; +PFL_WM_STUFF = ^TFL_WM_STUFF; + + +Function fl_add_event_callback(p1 : TWindow; p2 : Longint ; p3 : PFL_APPEVENT_CB; p4 : pointer) : PFL_APPEVENT_CB ; cdecl;external; + +Procedure fl_remove_event_callback(p1 : TWindow; p2 : Longint ); cdecl;external; +Procedure fl_activate_event_callbacks(p1 : TWindow); cdecl;external; + +Function fl_print_xevent_name(p1 : pchar; p2 : PXEvent) : PXEvent; cdecl;external; + +{ +#define metakey_down(p1 : mask) (p1 : (p1 : mask) & Mod1Mask) +#define shiftkey_down(p1 : mask) (p1 : (p1 : mask) & ShiftMask) +#define controlkey_down(p1 : mask) (p1 : (p1 : mask) & ControlMask) +#define button_down(p1 : mask) (p1 : (p1 : (p1 : mask) & Button1Mask) || \ + (p1 : (p1 : mask) & Button2Mask) || \ + (p1 : (p1 : mask) & Button3Mask)) +#define fl_keypressed fl_keysym_pressed +} +{***************** Resources **************} + + +{ bool is Longint . FL_NONE is defined elsewhere } +const + FL_NONE = 0; + FL_SHORT = 10; + FL_BOOL = 11; + FL_INT = 12; + FL_LONG = 13; + FL_FLOAT = 14; + FL_STRING = 15; + +Type TFL_RTYPE = Longint; + +TFL_RESOURCE = record + res_name, { resource name } + res_class : Pchar; { resource class } + rtype : TFL_RTYPE; { FL_INT; FL_FLOAT; FL_BOOL;FL_STRING } + thevar : pointer; { address for the variable } + defval : pchar; { default setting in string form } + bytes : Longint { used only for strings } +end; +PFL_RESOURCE = ^TFL_RESOURCE; + +Type + TFL_CMD_OPT = TXrmOptionDescRec; + PFL_CMD_OPT = ^TFL_CMD_OPT; + +Function fl_initialize(p1 : pointer; p2 : ppchar; p3 :pchar; p4 : PFL_CMD_OPT; p5 : Longint ) : Pdisplay; cdecl;external; +Procedure fl_finish; cdecl;external; + +{ addfromhere } + +Function fl_get_resource(p1 : pchar; p2 : pchar; p3 : TFL_RTYPE; p4 : pchar; p5 : pointer; p6 :Longint ) : pchar; cdecl;external; +Procedure fl_set_resource(p1 : pchar; p2 : pchar); cdecl;external; + +Procedure fl_get_app_resources(p1 : PFL_resource; p2 : Longint ); cdecl;external; +Procedure fl_set_graphics_mode(p1 : Longint ; p2 : Longint ); cdecl;external; +Procedure fl_set_visualID(p1 : longint); cdecl;external; +Function fl_keysym_pressed(p1 : TKeySym) : Longint; cdecl;external; + +{ +#define buttonLabelSize buttonFontSize +#define sliderLabelSize sliderFontSize +#define inputLabelSize inputFontSize +} +{ All Form control variables. Named closely as its resource name } +Type TFL_IOPT = record + rgamma, ggamma, bgamma : longint; { MUST BE FLOAT(single) !!! } + debug, sync, + depth, vclass, doubleBuffer, + ulPropWidth, ulThickness, { underline stuff } + buttonFontSize, + sliderFontSize, + inputFontSize, + browserFontSize, + menuFontSize, + choiceFontSize, + labelFontSize, { all other labels fonts } + pupFontSize, pupFontStyle, { font for pop-up menus } + privateColormap, + sharedColormap, + standardColormap, + ScrollBarType, + backingStore, + coordUnit, + borderWidth, + safe : Longint ; + rgbfile : pchar; { where RGB file is } + vname : array [0..23] of char; +end; +PFL_IOPT = ^TFL_IOPT; + + +Const + +{ program default masks } + + FL_PDDepth = 1 shl 1 ; + FL_PDClass = 1 shl 2 ; + FL_PDDouble = 1 shl 3 ; + FL_PDSync = 1 shl 4 ; + FL_PDPrivateMap = 1 shl 5 ; + FL_PDLeftScrollBar = 1 shl 6 ; + FL_PDPupFontSize = 1 shl 7 ; + FL_PDButtonFontSize = 1 shl 8 ; + FL_PDInputFontSize = 1 shl 9 ; + FL_PDSliderFontSize = 1 shl 10 ; + FL_PDVisual = 1 shl 11 ; + FL_PDULThickness = 1 shl 12 ; + FL_PDULPropWidth = 1 shl 13 ; + FL_PDBS = 1 shl 14 ; + FL_PDCoordUnit = 1 shl 15 ; + FL_PDDebug = 1 shl 16 ; + FL_PDSharedMap = 1 shl 17 ; + FL_PDStandardMap = 1 shl 18 ; + FL_PDBorderWidth = 1 shl 19 ; + FL_PDSafe = 1 shl 20 ; + FL_PDMenuFontSize = 1 shl 21 ; + FL_PDBrowserFontSize = 1 shl 22 ; + FL_PDChoiceFontSize = 1 shl 23 ; + FL_PDLabelFontSize = 1 shl 24; + FL_PDButtonLabelSize = FL_PDButtonFontSize; + FL_PDSliderLabelSize = FL_PDSliderFontSize; + FL_PDInputLabelSize = FL_PDInputFontSize; + FL_PDButtonLabel = FL_PDButtonLabelSize; + +Procedure fl_set_defaults(p1 : cardinal; p2 : PFL_IOPT); cdecl;external; +Procedure fl_set_tabstop(p1 : pchar); cdecl;external; +Procedure fl_get_defaults(p1 : PFL_IOPT); cdecl;external; +Function fl_get_visual_depth : Longint; cdecl;external; +Function fl_vclass_name(p1 : Longint ) : pchar; cdecl;external; +Function fl_vclass_val(p1 : pchar) : Longint ; cdecl;external; +Procedure fl_set_ul_property(p1 : Longint ; p2 : Longint ); cdecl;external; +Procedure fl_set_clipping(p1 : TFL_Coord; p2 : TFL_Coord; p3 : TFL_Coord; p4 : TFL_Coord); cdecl;external; +Procedure fl_set_gc_clipping(p1 : TGC; p2 : TFL_Coord; p3 : TFL_Coord; p4 : TFL_Coord; p5 : TFL_Coord); cdecl;external; +Procedure fl_unset_gc_clipping(p1 : TGC); cdecl;external; +Procedure fl_set_clippings(p1 : PFL_RECT; p2 : Longint ); cdecl;external; +Procedure fl_unset_clipping; cdecl;external; + +Function fl_textgc : TGC; cdecl;external; +{ +#define fl_set_text_clipping(p1 : a; p2 : b;c;d) fl_set_gc_clipping(p1 : fl_textgc; p2 : a;b;c;d) +#define fl_unset_text_clipping(p1 : ) fl_unset_gc_clipping(p1 : fl_textgc) +} + +Const + FL_NORMAL_BITMAP = 0; + +{**** Defaults ****} +FL_BITMAP_BOXTYPE =FL_NO_BOX; +FL_BITMAP_COL1 =FL_COL1; { background of bitmap } +FL_BITMAP_COL2 =FL_COL1; { not used currently } +FL_BITMAP_LCOL =FL_LCOL; { foreground of bitmap } +FL_BITMAP_ALIGN =FL_ALIGN_BOTTOM; + +{**** Others ****} + +{FL_BITMAP_MAXSIZE = 128*128;} + +{**** Routines ****} +Function fl_create_bitmap(p1 : Longint ; p2 : TFL_Coord; p3 : TFL_Coord; p4 : TFL_Coord; p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT; cdecl;external; +Function fl_add_bitmap(p1 : Longint ; p2 : TFL_Coord; p3 : TFL_Coord; p4 : TFL_Coord; p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT; cdecl;external; +Procedure fl_set_bitmap_data(p1 : PFL_OBJECT; p2 : Longint ; p3 : Longint ; p4 : pointer); cdecl;external; +Procedure fl_set_bitmap_file(p1 : PFL_OBJECT; p2 : pchar); cdecl;external; +Function fl_read_bitmapfile(p1 : TWindow; p2 : pchar; p3,p4 : pword; p5,p6 : pointer) : TPixmap ; cdecl;external; + +{ +#define fl_create_from_bitmapdata(p1 : win; p2 : data; p3 : w; p4 : h)\ + XCreateBitmapFromData(p1 : fl_get_display(p1 : ); p2 : win; p3 :\ + (p1 : char *)data; p2 : w; p3 :h) +#define fl_set_bitmap_datafile fl_set_bitmap_file +} + +{ PIXMAP stuff } + +Const +FL_NORMAL_PIXMAP = 0; + +Function fl_create_pixmap(p1 : Longint ; p2,p3,p4,p5 : TFL_Coord; p6 :pchar) : PFL_OBJECT; cdecl;external; +Function fl_add_pixmap(p1 : Longint ; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT; cdecl;external; + +Procedure fl_set_pixmap_data(p1 : PFL_OBJECT; p2 : ppchar); cdecl;external; +Procedure fl_set_pixmap_file(p1 : PFL_OBJECT; p2 : pchar); cdecl;external; +Procedure fl_set_pixmap_align(p1 : PFL_OBJECT; p2 : Longint ; p3 : Longint ; p4 : Longint ); cdecl;external; +Procedure fl_set_pixmap_pixmap(p1 : PFL_OBJECT; p2 : TPixmap; p3 :TPixmap); cdecl;external; +Procedure fl_set_pixmap_colorcloseness(p1 : Longint ; p2 : Longint ; p3 :Longint ); cdecl;external; +Procedure fl_free_pixmap_pixmap(p1 : PFL_OBJECT); cdecl;external; +Function fl_get_pixmap_pixmap(p1 : PFL_OBJECT; p2 : PPixmap; p3 : PPixmap) : TPixmap ; cdecl;external; + +Function fl_read_pixmapfile(p1 : TWindow; p2 : pchar;p3,p4 : pword; p5 : PPixmap;p6,p7 : pointer; p8 : TFL_COLOR) : TPixmap ; cdecl;external; +Function fl_create_from_pixmapdata(p1 : TWindow; p2 : ppchar;p3,p4 : pword; p5 : PPixmap;p6,p7 : pointer; p8 : TFL_COLOR) : TPixmap ; cdecl;external; +{ +#define fl_free_pixmap(p1 : id) if(p1 : id != None) XFreePixmap(p1 : fl_display; p2 : id); +} + +Function fl_create_box(p1 : Longint ; p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT; cdecl;external; +Function fl_add_box(p1 : Longint ; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT; cdecl;external; + +Type TFL_BROWSER_TYPE = Longint; + +Const + FL_NORMAL_BROWSER = 0; + FL_SELECT_BROWSER = 1; + FL_HOLD_BROWSER = 2; + FL_MULTI_BROWSER = 3; + +{**** Defaults ****} + + FL_BROWSER_BOXTYPE = FL_DOWN_BOX; + FL_BROWSER_COL1 = FL_COL1; + FL_BROWSER_COL2 = FL_YELLOW; + FL_BROWSER_LCOL = FL_LCOL; + FL_BROWSER_ALIGN = FL_ALIGN_BOTTOM; + +{**** Others ****} + + FL_BROWSER_SLCOL = FL_COL1; + FL_BROWSER_LINELENGTH = 1024; + FL_BROWSER_FONTSIZE = FL_SMALL_FONT; + +{ as of .86 + FL_SCROLLBAR_OFF = 0; + FL_SCROLLBAR_ON = 1; + FL_SCROLLBAR_ALWAYS_ON = 2; +} + +{**** Routines ****} + +Function fl_create_browser(p1 : Longint ; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT; cdecl;external; +Function fl_add_browser(p1 : Longint ; p2,p3,p4,p5 : TFL_Coord;p6: pchar) : PFL_OBJECT; cdecl;external; +Procedure fl_clear_browser(p1 : PFL_OBJECT); cdecl;external; +Procedure fl_add_browser_line(p1 : PFL_OBJECT; p2 : pchar); cdecl;external; +Procedure fl_addto_browser(p1 : PFL_OBJECT; p2 : pchar); cdecl;external; +Procedure fl_addto_browserchars(p1 : PFL_OBJECT; p2 : pchar); cdecl;external; + +Procedure fl_insert_browser_line(p1 : PFL_OBJECT; p2 : Longint ; p3 :pchar); cdecl;external; +Procedure fl_delete_browser_line(p1 : PFL_OBJECT; p2 : Longint ); cdecl;external; +Procedure fl_replace_browser_line(p1 : PFL_OBJECT; p2 : Longint ; p3 :pchar); cdecl;external; +Function fl_get_browser_line(p1 : PFL_OBJECT; p2 : Longint ) : pchar; cdecl;external; +Function fl_load_browser(p1 : PFL_OBJECT; p2 : pchar ) : Longint ; cdecl;external; + +Procedure fl_select_browser_line(p1 : PFL_OBJECT; p2 : Longint ); cdecl;external; +Procedure fl_deselect_browser_line(p1 : PFL_OBJECT; p2 : Longint ); cdecl;external; +Procedure fl_deselect_browser(p1 : PFL_OBJECT); cdecl;external; +Function fl_isselected_browser_line(p1 : PFL_OBJECT; p2 : Longint ) : Longint ; cdecl;external; + +Function fl_get_browser_topline(p1 : PFL_OBJECT ) : Longint ; cdecl;external; +Function fl_get_browser(p1 : PFL_OBJECT ) : Longint ; cdecl;external; +Function fl_get_browser_maxline(p1 : PFL_OBJECT ) : Longint ; cdecl;external; +Function fl_get_browser_screenlines(p1 : PFL_OBJECT ) : Longint ; cdecl;external; + +Procedure fl_set_browser_topline(p1 : PFL_OBJECT; p2 : Longint ); cdecl;external; +Procedure fl_set_browser_fontsize(p1 : PFL_OBJECT; p2 : Longint ); cdecl;external; +Procedure fl_set_browser_fontstyle(p1 : PFL_OBJECT; p2 : Longint ); cdecl;external; +Procedure fl_set_browser_specialkey(p1 : PFL_OBJECT; p2 : Longint ); cdecl;external; +Procedure fl_set_browser_vscrollbar(p1 : PFL_OBJECT; p2 : Longint ); cdecl;external; +Procedure fl_set_browser_hscrollbar(p1 : PFL_OBJECT; p2 : Longint ); cdecl;external; +Procedure fl_set_browser_leftslider(p1 : PFL_OBJECT; p2 : Longint ); cdecl;external; +Procedure fl_set_browser_line_selectable(p1 : PFL_OBJECT; p2 : Longint ; p3 :Longint ); cdecl;external; +Procedure fl_get_browser_dimension(p1 : PFL_OBJECT; p2,p3,p4,p5 : PFL_COORD); cdecl;external; +Procedure fl_set_browser_dblclick_callback(p1 : PFL_OBJECT; p2 : PFL_CALLBACKPTR; p3 :longint); cdecl;external; +{ +#define fl_set_browser_leftscrollbar fl_set_browser_leftslider +} +Procedure fl_set_browser_xoffset(p1 : PFL_OBJECT; p2 : TFL_Coord); cdecl;external; +Procedure fl_set_browser_scrollbarsize (p1 : PFL_OBJECT;p2,p3 : longint); cdecl;external; +Procedure fl_show_browser_line(p1 : PFL_OBJECT; p2 : longint); cdecl;external; +Function fl_get_browser_xoffset(p1 : PFL_OBJECT) : TFL_Coord ; cdecl;external; + +type + TFL_BUTTON_TYPE= Longint; + +Const + FL_NORMAL_BUTTON = 0; + FL_PUSH_BUTTON = 1; + FL_RADIO_BUTTON = 2; + FL_HIDDEN_BUTTON = 3; + FL_TOUCH_BUTTON = 4; + FL_INOUT_BUTTON = 5; + FL_RETURN_BUTTON = 6; + FL_HIDDEN_RET_BUTTON= 7; + FL_MENU_BUTTON = 8; + +type TFL_BUTTON_SPEC = record + pixmap,mask : TPixmap; + bits_w, bits_h : Cardinal; + val, { whether on } + mousebut, { mouse button that caused the push } + timdel, { time since last touch (p1 : TOUCH buttons) } + event : Longint; { what event triggers redraw } + cspecl : longint; { reserved for class specfic stuff } + cspecv : pointer; { misc. things } + filename : pchar; +end; +TFL_BUTTON_STRUCT = TFL_BUTTON_SPEC; +PFL_BUTTON_STRUCT = ^TFL_BUTTON_STRUCT; + +TFL_DrawButton = Procedure (p1 : PFL_OBJECT); cdecl; +PFL_DrawButton = ^TFL_DrawButton; +TFL_CleanupButton = Procedure (p1 : PFL_BUTTON_STRUCT); cdecl; +PFL_CleanupButton= ^TFL_CleanupButton; + +Const +FL_BUTTON_BOXTYPE = FL_UP_BOX; +FL_BUTTON_COL1 = FL_COL1; +FL_BUTTON_COL2 = FL_COL1; +FL_BUTTON_LCOL = FL_LCOL; +FL_BUTTON_ALIGN = FL_ALIGN_CENTER; + +FL_BUTTON_MCOL1 = FL_MCOL; +FL_BUTTON_MCOL2 = FL_MCOL; + +FL_BUTTON_BW = FL_BOUND_WIDTH; + +{ + * light button defaults + } +FL_LIGHTBUTTON_BOXTYPE = FL_UP_BOX; +FL_LIGHTBUTTON_COL1 = FL_COL1; +FL_LIGHTBUTTON_COL2 = FL_YELLOW; +FL_LIGHTBUTTON_LCOL = FL_LCOL; +FL_LIGHTBUTTON_ALIGN = FL_ALIGN_CENTER; + +{**** Others ****} + +FL_LIGHTBUTTON_TOPCOL = FL_COL1; +FL_LIGHTBUTTON_MCOL = FL_MCOL; +FL_LIGHTBUTTON_MINSIZE = 12; + +{* round button defaults **} + + FL_ROUNDBUTTON_BOXTYPE = FL_NO_BOX; + FL_ROUNDBUTTON_COL1 = FL_MCOL; + FL_ROUNDBUTTON_COL2 = FL_YELLOW; + FL_ROUNDBUTTON_LCOL = FL_LCOL; + FL_ROUNDBUTTON_ALIGN = FL_ALIGN_CENTER; + + FL_ROUNDBUTTON_TOPCOL = FL_COL1; + FL_ROUNDBUTTON_MCOL = FL_MCOL; + +{* round3d button defaults **} + + FL_ROUND3DBUTTON_BOXTYPE = FL_NO_BOX; + FL_ROUND3DBUTTON3D_COL1 = FL_MCOL; + FL_ROUND3DBUTTON_COL2 = FL_YELLOW; + FL_ROUND3DBUTTON_LCOL = FL_LCOL; + FL_ROUND3DBUTTON_ALIGN = FL_ALIGN_CENTER; + + FL_ROUND3DBUTTON_TOPCOL = FL_COL1; + FL_ROUND3DBUTTON_MCOL = FL_MCOL; + +{* check button defaults **} + + FL_CHECKBUTTON_BOXTYPE = FL_NO_BOX; + FL_CHECKBUTTON_COL1 = FL_COL1; + FL_CHECKBUTTON_COL2 = FL_YELLOW; + FL_CHECKBUTTON_LCOL = FL_LCOL; + FL_CHECKBUTTON_ALIGN = FL_ALIGN_CENTER; + + FL_CHECKBUTTON_TOPCOL = FL_COL1; + FL_CHECKBUTTON_MCOL = FL_MCOL; + +{* bitmap button defaults *} + FL_BITMAPBUTTON_BOXTYPE = FL_UP_BOX; + FL_BITMAPBUTTON_COL1 = FL_COL1; { bitmap background } + FL_BITMAPBUTTON_COL2 = FL_BLUE; { "focus" color } + FL_BITMAPBUTTON_LCOL = FL_LCOL; { bitmap foreground } + FL_BITMAPBUTTON_ALIGN = FL_ALIGN_BOTTOM; + +{* bitmap button defaults *} + FL_PIXMAPBUTTON_BOXTYPE = FL_UP_BOX; + FL_PIXMAPBUTTON_COL1 = FL_COL1; { box col } + FL_PIXMAPBUTTON_COL2 = FL_YELLOW; { bound rect } + FL_PIXMAPBUTTON_LCOL = FL_LCOL; + FL_PIXMAPBUTTON_ALIGN = FL_ALIGN_BOTTOM; + +{**** Routines ****} + +Function fl_create_button(p1 : Longint ; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT; cdecl;external; +Function fl_create_roundbutton(p1 : Longint ; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT; cdecl;external; +Function fl_create_round3dbutton(p1 : Longint ; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT; cdecl;external; +Function fl_create_lightbutton(p1 : Longint ; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT; cdecl;external; +Function fl_create_checkbutton(p1 : Longint ; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT; cdecl;external; +Function fl_create_bitmapbutton(p1 : Longint ; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT; cdecl;external; +Function fl_create_pixmapbutton(p1 : Longint ; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT; cdecl;external; + +Function fl_add_roundbutton(p1 : Longint ; p2,p3,p4,p5 :TFL_Coord; p6: pchar) : PFL_OBJECT; cdecl;external; +Function fl_add_round3dbutton(p1 : Longint ; p2,p3,p4,p5 :TFL_Coord; p6: pchar) : PFL_OBJECT; cdecl;external; + +Function fl_add_lightbutton(p1 : Longint ; p2,p3,p4,p5 :TFL_Coord; p6: pchar) : PFL_OBJECT; cdecl;external; +Function fl_add_checkbutton(p1 : Longint ; p2,p3,p4,p5 :TFL_Coord; p6: pchar) : PFL_OBJECT; cdecl;external; +Function fl_add_button(p1 : Longint ; p2,p3,p4,p5 :TFL_Coord; p6: pchar) : PFL_OBJECT; cdecl;external; + + +Procedure fl_set_bitmapbutton_data (p1 : PFL_OBJECT; p2,p3 : Longint ; p4 : pchar); cdecl;external; +Procedure fl_set_bitmapbutton_file (p1 : PFL_OBJECT; p2: pchar); cdecl;external; +Function fl_add_bitmapbutton (p1 : longint; p2,p3,p4,p5: TFL_Coord;p6 : pchar) : PFL_OBJECT; cdecl;external; + +{ +#define fl_set_bitmapbutton_datafile fl_set_bitmapbutton_file +} + +Function fl_add_pixmapbutton(p1 : Longint ; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT; cdecl;external; +Procedure fl_set_pixmapbutton_data(p1 : PFL_OBJECT; p2 : ppchar); +Procedure fl_set_pixmapbutton_file(p1 : PFL_OBJECT; p2 : pchar); +Procedure fl_set_pixmapbutton_align(p1 : PFL_OBJECT; p2 : Longint ; p3 : Longint ; p4 : Longint ); +Procedure fl_set_pixmapbutton_pixmap(p1 : PFL_OBJECT; p2 : TPixmap; p3 :TPixmap); +Procedure fl_set_pixmapbutton_colorcloseness(p1 : Longint ; p2 : Longint ; p3 :Longint ); +Procedure fl_free_pixmapbutton_pixmap(p1 : PFL_OBJECT); +Function fl_get_pixmapbutton_pixmap(p1 : PFL_OBJECT; p2 : PPixmap; p3 : PPixmap) : TPixmap; + +Function fl_get_button(p1 : PFL_OBJECT ) : Longint ; cdecl;external; +Procedure fl_set_button(p1 : PFL_OBJECT; p2 : Longint ); cdecl;external; +Function fl_get_button_numb(p1 : PFL_OBJECT ) : Longint ; cdecl;external; + +Procedure fl_set_button_shortcut(p1 : PFL_OBJECT; p2 : pchar;p3 : Longint ); + +Function fl_create_generic_button(p1,p2 : Longint ; p3,p4,p5,p6 : TFL_Coord;p7 : pchar) : PFL_OBJECT; cdecl;external; +Procedure fl_add_button_class(p1 : Longint ; p2 : PFL_DRAWBUTTON; p3 : PFL_CLEANUPBUTTON); cdecl;external; + + +{ + * + * Header for FL_CANVAS + * + } + + + +type TFL_CANVAS_TYPE = Longint; + +const + FL_NORMAL_CANVAS = 0; + FL_SCROLLED_CANVAS = 1; + +Type +TFL_HANDLE_CANVAS = Procedure (P1 : PFL_OBJECT; P2 : TWindow; P3 : Longint ; P4 : Longint ; + P5 : PXEvent; P6 : pointer);cdecl; +PFL_HANDLE_CANVAS = ^TFL_HANDLE_CANVAS; + +TFL_MODIFY_CANVAS_PROP = Procedure (p1 : PFL_OBJECT); cdecl; +PFL_MODIFY_CANVAS_PROP = ^TFL_MODIFY_CANVAS_PROP; + +{******************* Default ********************} + +Const FL_CANVAS_BOXTYPE = FL_DOWN_BOX; + FL_CANVAS_ALIGN = FL_ALIGN_TOP; + + +{*********** Interfaces ***********************} + + +Function fl_create_generic_canvas(p1 : Longint; p2 : Longint ; p3,p4,p5,p6 : TFL_Coord; p7 : pchar) : PFL_OBJECT; cdecl;external; + +Function fl_add_canvas(p1 : Longint; p2,p3,p4,p5 : TFL_Coord; p6 : pchar): PFL_OBJECT; cdecl;external; + +Function fl_create_canvas(p1 : Longint; p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT; cdecl;external; + +Function fl_create_mesacanvas(p1 : Longint; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT; cdecl;external; + +Function fl_add_mesacanvas(p1 : Longint; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT; cdecl;external; + + + +Procedure fl_set_canvas_decoration(p1 : PFL_OBJECT; p2 : Longint ); +Procedure fl_set_canvas_colormap(p1 : PFL_OBJECT; p2 : TColormap);cdecl;external; +Procedure fl_set_canvas_visual(p1 : PFL_OBJECT; p2 : PVisual);cdecl;external; +Procedure fl_set_canvas_depth(p1 : PFL_OBJECT; p2 : Longint );cdecl;external; +Procedure fl_set_canvas_attributes(p1 : PFL_OBJECT; p2 : word; p3 : PXSetWindowAttributes);cdecl;external; + +Function fl_add_canvas_handler(p1 : PFL_OBJECT; p2 : Longint ; p3 : PFL_HANDLE_CANVAS; p4 : pointer) : PFL_HANDLE_CANVAS ; cdecl;external; + +Function fl_get_canvas_id(p1 : PFL_OBJECT ) : TWindow ; cdecl;external; +Function fl_get_canvas_colormap(p1 : PFL_OBJECT ) : TColormap; cdecl;external; +Function fl_get_canvas_depth(p1 : PFL_OBJECT ) : Longint ; cdecl;external; +Procedure fl_remove_canvas_handler(p1 : PFL_OBJECT; p2 : Longint ; p3 : PFL_HANDLE_CANVAS); cdecl;external; +Procedure fl_hide_canvas(p1 : PFL_OBJECT); { internal use only } cdecl;external; +Procedure fl_canvas_yield_to_shortcut(p1 : PFL_OBJECT; p2 : Longint ); cdecl;external; +Procedure fl_share_canvas_colormap(p1 : PFL_OBJECT; p2 : TColormap); cdecl;external; +Procedure fl_modify_canvas_prop(p1 : PFL_OBJECT; + P2 : PFL_MODIFY_CANVAS_PROP; + p3 : PFL_MODIFY_CANVAS_PROP; + p4 : PFL_MODIFY_CANVAS_PROP);cdecl;external; + +{ OpenGL canvases } +Function fl_create_glcanvas(p1 : Longint; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT; cdecl;external; + +Function fl_add_glcanvas(p1 : Longint; p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT; cdecl;external; + +Procedure fl_set_glcanvas_defaults(p1 : pointer); cdecl;external; +Procedure fl_get_glcanvas_defaults(p1 : pointer); cdecl;external; +Procedure fl_set_glcanvas_attributes(p1 : PFL_OBJECT; p2 : pointer); cdecl;external; +Procedure fl_get_glcanvas_attributes(p1 : PFL_OBJECT; p2 : pointer); cdecl;external; +Procedure fl_set_glcanvas_direct(p1 : PFL_OBJECT; p2 : Longint ); cdecl;external; +Procedure fl_activate_glcanvas(p1 : PFL_OBJECT); cdecl;external; + +Function fl_get_glcanvas_xvisualinfo(p1 : PFL_OBJECT ) : PXVisualInfo; cdecl;external; + +{ +# if defined(p1 : __GLX_glx_h__) || defined(p1 : GLX_H) +Function fl_get_glcanvas_context(p1 : PFL_OBJECT ob ) : GLXContext ; cdecl;external; +Function fl_glwincreate(p1 : *; p2 : GLXContext *; p3 : Longint ; p4 : Longint ) : TWindow ; cdecl;external; +Function fl_glwinopen(p1 : *; p2 : GLXContext *; p3 : Longint ; p4 : Longint ) : TWindow ; cdecl;external; +} + + + +{ + * + * Object Class: Chart + * + } + + +const + FL_BAR_CHART = 0; + FL_HORBAR_CHART = 1; + FL_LINE_CHART = 2; + FL_FILL_CHART = 3; + FL_SPIKE_CHART = 4; + FL_PIE_CHART = 5; + FL_SPECIALPIE_CHART = 6; + +Type TFL_CHART_TYPE = Longint; + +{**** Defaults ****} + +Const + FL_CHART_BOXTYPE = FL_BORDER_BOX; + FL_CHART_COL1 = FL_COL1; + FL_CHART_LCOL = FL_LCOL; + FL_CHART_ALIGN = FL_ALIGN_BOTTOM; + +{**** Others ****} + FL_CHART_MAX = 512; + +{**** Routines ****} + +Function fl_create_chart(p1 : Longint; p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT; cdecl;external; +Function fl_add_chart(p1 : longint; p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT; cdecl;external; + +Procedure fl_clear_chart(p1 : PFL_OBJECT); cdecl;external; +Procedure fl_add_chart_value(p1 : PFL_OBJECT; p2 : double; p3 : pchar; p4 : Longint ); cdecl;external; +Procedure fl_insert_chart_value(p1 : PFL_OBJECT; p2 : Longint ; p3 : double; p4 : pchar; p5 : Longint ); cdecl;external; +Procedure fl_replace_chart_value(p1 : PFL_OBJECT; p2 : Longint ; p3 : double; p4 : pchar; p5 : Longint ); cdecl;external; +Procedure fl_set_chart_bounds(p1 : PFL_OBJECT; p2 : double; p3 :double); cdecl;external; +Procedure fl_set_chart_maxnumb(p1 : PFL_OBJECT; p2 : Longint ); cdecl;external; +Procedure fl_set_chart_autosize(p1 : PFL_OBJECT; p2 : Longint ); cdecl;external; +Procedure fl_set_chart_lstyle(p1 : PFL_OBJECT; p2 : Longint ); cdecl;external; +Procedure fl_set_chart_lsize(p1 : PFL_OBJECT; p2 : Longint ); cdecl;external; +Procedure fl_set_chart_lcolor(p1 : PFL_OBJECT; p2 : TFL_COLOR); cdecl;external; + + +const + FL_NORMAL_CHOICE = 0; + FL_NORMAL_CHOICE2 = 1; + FL_DROPLIST_CHOICE = 2; + +Type + TFL_CHOICE_TYPE = Longint; + +Const + FL_SIMPLE_CHOICE = FL_NORMAL_CHOICE; + +{**** Defaults ****} + + FL_CHOICE_BOXTYPE = FL_ROUNDED_BOX; + FL_CHOICE_COL1 = FL_COL1; + FL_CHOICE_COL2 = FL_LCOL; + FL_CHOICE_LCOL = FL_LCOL; + FL_CHOICE_ALIGN = FL_ALIGN_LEFT; + +{**** Others ****} + + FL_CHOICE_MCOL = FL_MCOL; + FL_CHOICE_MAXITEMS = 63; + +{**** Routines ****} + +Function fl_create_choice(p1 : longint; p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT; cdecl;external; + +Function fl_add_choice(p1 : longint; p2,p3,p4,p5 : TFL_Coord; p6 : pchar ) : PFL_OBJECT; cdecl;external; +Procedure fl_clear_choice(p1 : PFL_OBJECT); cdecl;external; +Procedure fl_addto_choice(p1 : PFL_OBJECT; p2 : pchar); cdecl;external; +Procedure fl_replace_choice(p1 : PFL_OBJECT; p2 : Longint ; p3 :pchar); cdecl;external; +Procedure fl_delete_choice(p1 : PFL_OBJECT; p2 : Longint ); cdecl;external; +Procedure fl_set_choice(p1 : PFL_OBJECT; p2 : Longint ); cdecl;external; +Procedure fl_set_choice_text(p1 : PFL_OBJECT; p2 : pchar); cdecl;external; +Function fl_get_choice(p1 : PFL_OBJECT ) : Longint ; cdecl;external; +Function fl_get_choice_item_text(p1 : PFL_OBJECT; p2 : Longint ) : pchar; cdecl;external; +Function fl_get_choice_maxitems(p1 : PFL_OBJECT ) : Longint ; cdecl;external; +Function fl_get_choice_text(p1 : PFL_OBJECT ) : pchar; cdecl;external; +Procedure fl_set_choice_fontsize(p1 : PFL_OBJECT; p2 : Longint ); cdecl;external; +Procedure fl_set_choice_fontstyle(p1 : PFL_OBJECT; p2 : Longint ); cdecl;external; +Procedure fl_set_choice_align(p1 : PFL_OBJECT; p2 : Longint ); cdecl;external; +Procedure fl_set_choice_item_mode(p1 : PFL_OBJECT; p2 : Longint ; p3 : word); cdecl;external; +Procedure fl_set_choice_item_shortcut(p1 : PFL_OBJECT; p2 : Longint ; p3 :pchar); cdecl;external; +Function fl_set_choice_entries(p1 : PFL_OBJECT ; p2 : PFL_PUP_ENTRY) : longint; cdecl;external; + + +Const + FL_ANALOG_CLOCK = 0; + FL_DIGITAL_CLOCK = 1; + + FL_CLOCK_BOXTYPE = FL_UP_BOX; + FL_CLOCK_COL1 = FL_INACTIVE_COL; + FL_CLOCK_COL2 = FL_BOTTOM_BCOL; + FL_CLOCK_LCOL = FL_BLACK; + FL_CLOCK_ALIGN = FL_ALIGN_BOTTOM; + + FL_CLOCK_TOPCOL = FL_COL1; + +Function fl_create_clock(p1 : longint; p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT; cdecl;external; + +Function fl_add_clock(p1 : longint; p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT; cdecl;external; +Procedure fl_get_clock(p1 : PFL_OBJECT; p2,p3,p4 : pointer); cdecl;external; +Function fl_set_clock_adjustment ( p1 : PFL_OBJECT; p2 : longint) : longint; cdecl;external; +Procedure fl_set_clock_ampm(p1 : PFL_OBJECT; p2 : Longint); cdecl;external; + + +Const + FL_NORMAL_COUNTER = 0; + FL_SIMPLE_COUNTER = 1; + +type TFL_COUNTER_TYPE = Longint; + +{**** Defaults ****} +Const + FL_COUNTER_BOXTYPE = FL_UP_BOX; + FL_COUNTER_COL1 = FL_COL1; + FL_COUNTER_COL2 = FL_BLUE; { ct label } + FL_COUNTER_LCOL = FL_LCOL; { ct reporting } + FL_COUNTER_ALIGN = FL_ALIGN_BOTTOM; + +{**** Others ****} + + FL_COUNTER_BW = FL_BOUND_WIDTH-1; + +{**** Routines ****} + +Function fl_create_counter(p1 : longint; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT; cdecl;external; + +Function fl_add_counter(p1 : longint; p2,p3,p4,p5 : TFL_Coord;p6: pchar) : PFL_OBJECT; cdecl;external; + +Procedure fl_set_counter_value(p1 : PFL_OBJECT; p2 : double); cdecl;external; +Procedure fl_set_counter_bounds(p1 : PFL_OBJECT; p2 : double; p3 :double); cdecl;external; +Procedure fl_set_counter_step(p1 : PFL_OBJECT; p2 : double; p3 :double); cdecl;external; +Procedure fl_set_counter_precision(p1 : PFL_OBJECT; p2 : Longint ); cdecl;external; +Function fl_get_counter_value(p1 : PFL_OBJECT ) : double ; cdecl;external; +Procedure fl_get_counter_bounds(p1 : PFL_OBJECT; p2,p3 : pdouble); cdecl;external; +Procedure fl_get_counter_step(p1 : PFL_OBJECT; p2,p3 : pdouble); cdecl;external; +Procedure fl_set_counter_return(p1 : PFL_OBJECT; p2 : Longint ); cdecl;external; +Procedure fl_set_counter_filter(p1 : PFL_OBJECT;p2 : pointer); {!!!!} cdecl;external; +{ + pchar(p1 : *)(p1 : PFL_OBJECT; p2 : double; p3 :Longint )); +} + +{ + * + * Cursor defs and prototypes + * + } + + +{$i cursorfont.inc} + +const FL_DEFAULT_CURSOR = -1; + FL_INVISIBLE_CURSOR = -2; + +Procedure fl_set_cursor(p1 : TWindow; p2 : Longint ); cdecl;external; +Procedure fl_set_cursor_color(p1 : longint; p2 : TFL_COLOR; p3 :TFL_COLOR); cdecl;external; +Function fl_create_bitmap_cursor(p1 : pchar; p2 : pchar; p3,p4,p5,p6 : Longint ) : TCursor; cdecl;external; +Function fl_get_cursor_byname(p1 : longint ) : TCursor; cdecl;external; +Function fl_create_animated_cursor(p1 : Plongint;p2 : longint): Longint; cdecl;external; + +{ +#define fl_reset_cursor(p1 : win) fl_set_cursor(p1 : win; p2 : -1); +} + + +Const + FL_NORMAL_DIAL = 0; + FL_LINE_DIAL = 1; + FL_FILL_DIAL = 2; + + FL_DIAL_CW = 0; + FL_DIAL_CCW = 1; + +Type + TFL_DIAL_TYPE = Longint; + +{**** Defaults ****} +Const + + FL_DIAL_BOXTYPE = FL_FLAT_BOX; + FL_DIAL_COL1 = FL_COL1; + FL_DIAL_COL2 = FL_RIGHT_BCOL; + FL_DIAL_LCOL = FL_LCOL; + FL_DIAL_ALIGN = FL_ALIGN_BOTTOM; + +{**** Others ****} + + FL_DIAL_TOPCOL = FL_COL1; + +{**** Routines ****} + +Function fl_create_dial(p1 : longint; p2,p3,p4,p5 : TFL_Coord;p6 :pchar) : PFL_OBJECT; cdecl;external; +Function fl_add_dial(p1 : longint; p2,p3,p4,p5 : TFL_Coord;p6: pchar) : PFL_OBJECT; cdecl;external; + +Procedure fl_set_dial_value(p1 : PFL_OBJECT; p2 : double); cdecl;external; +Function fl_get_dial_value(p1 : PFL_OBJECT ) : double ; cdecl;external; +Procedure fl_set_dial_bounds(p1 : PFL_OBJECT; p2 : double; p3 :double); cdecl;external; +Procedure fl_get_dial_bounds(p1 : PFL_OBJECT; p2 : pdouble; p3 :pdouble); cdecl;external; + +Procedure fl_set_dial_step(p1 : PFL_OBJECT; p2 : double); cdecl;external; +Procedure fl_set_dial_return(p1 : PFL_OBJECT; p2 : Longint ); cdecl;external; +Procedure fl_set_dial_angles(p1 : PFL_OBJECT; p2 : double; p3 :double); cdecl;external; +Procedure fl_set_dial_cross(p1 : PFL_OBJECT; p2 : Longint ); cdecl;external; +Procedure fl_set_dial_direction (p1 : PFL_OBJECT; p2 : Longint); cdecl;external; + +{ + * + * Convenience Functions to read a directory cdecl;external; + } + + +{ File types } + +Const + FT_FILE = 0; + FT_DIR = 1; + FT_LINK = 2; + FT_SOCK = 3; + FT_FIFO = 4; + FT_BLK = 5; + FT_CHR = 6; + FT_OTHER = 7; + +type TFL_Dirlist = record + name : pchar; { entry name } + ftype : longint; { FILE_TYPE } + dl_mtime : longint; + dl_size : cardinal; + filler : array[0..2] of longint; + end; + PFL_Dirlist = ^TFL_Dirlist; + + +TFL_DIRLIST_FILTER = Procedure (p1 : pchar; p2 : Longint ); cdecl; +PFL_DIRLIST_FILTER = ^TFL_DIRLIST_FILTER; + +Const + FL_ALPHASORT = 1; + FL_RALPHASORT = 2; + FL_MTIMESORT = 3; + FL_RMTIMESORT = 4; + FL_SIZESORT = 5; + FL_RSIZESORT = 6; + + +{ read dir with pattern filtering. All dirs read might be cached. + * must not change dirlist in anyway. + } +Function fl_get_dirlist(p1 : pchar; p2 : pchar; p3 : pointer;p4 :longint) : PFL_Dirlist; { rescan } cdecl;external; + + +Function fl_set_dirlist_filter (p1 : PFL_DIRLIST_FILTER ) : PFL_DIRLIST_FILTER ; cdecl;external; +Procedure fl_set_dirlist_sort ( p1 : longint); cdecl;external; + +Procedure fl_free_dirlist(p1 : PFL_Dirlist); cdecl;external; + +{ Free all directory caches } +Procedure fl_free_all_dirlist; cdecl;external; + +Function fl_is_valid_dir(p1 : pchar ) : Longint; cdecl;external; +Function fl_fmtime(p1 : pchar ) : cardinal ; cdecl;external; +Function fl_fix_dirname(p1 : pchar) : pchar; cdecl;external; + +Const + FLPS_AUTO = 0; + FLPS_LANDSCAPE = 1; + FLPS_PORTRAIT = 2; + + + FLPS_BW = -1; + FLPS_GRAYSCALE=0; + + type + TFLPS_CONTROL = record + ps_color,orientation,auto_fit,drawbox,eps : longint; + xdpi,ydpi,paper_w,paper_h, gamma : real; { Must be float } + end; + PFLPS_CONTROL = ^TFLPS_CONTROL; + +Function flps_init : PFLPS_CONTROL; cdecl;external; +Function fl_object_ps_dump (p1 : PFL_OBJECT; p2 : pchar) : longint; cdecl;external; + +{ types of frames } +Const + FL_NO_FRAME = 0; + FL_UP_FRAME = 1; + FL_DOWN_FRAME = 2; + FL_BORDER_FRAME = 3; + FL_SHADOW_FRAME = 4; + FL_ENGRAVED_FRAME = 5; + FL_ROUNDED_FRAME = 6; + FL_EMBOSSED_FRAME = 7; + FL_OVAL_FRAME = 8; + + FL_FRAME_COL1 = FL_BLACK; + FL_FRAME_COL2 = FL_COL1; + FL_FRAME_LCOL = FL_BLACK; + +Function fl_create_frame(p1 : longint; p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT; cdecl;external; +Function fl_add_frame(p1 : longint; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT; cdecl;external; +Function fl_create_labelframe(p1 : longint; p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT; cdecl;external; +Function fl_add_labelframe(p1 : longint; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT; cdecl;external; + + +{ + * + * Object Class: Free + } + +Const + FL_NORMAL_FREE = 0; + FL_INACTIVE_FREE = 1; + FL_INPUT_FREE = 2; + FL_CONTINUOUS_FREE = 3; + FL_ALL_FREE = 4; +Type + TFL_FREE_TYPE = Longint; + PFL_FREE_TYPE = ^TFL_FREE_TYPE; + +Const FL_SLEEPING_FREE = FL_INACTIVE_FREE; + + +Function fl_create_free(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord;p6: pchar; p7 : PFL_HANDLEPTR) : PFL_OBJECT; cdecl;external; +Function fl_add_free(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord;p6 : pchar; P7 : PFL_HANDLEPTR) : PFL_OBJECT; cdecl;external; + +Const + FLAlertDismissLabel = 'flAlert.dismiss.label'; + FLQuestionYesLabel = 'flQuestion.yes.label'; + FLQuestionNoLabel = 'flQuestion.no.label'; + FLOKLabel = 'flInput.ok.label'; + FLInputClearLabel = 'flInput.clear.label'; + FLInputCancelLabel = 'flInput.cancel.label'; + +{ from goodies.c } +Procedure fl_set_goodies_font(p1 : LongInt; p2 : Longint ); cdecl;external; +Procedure fl_show_message(p1 : pchar; p2 : pchar; p3 :pchar); cdecl;external; +Procedure fl_show_messages(p1 : pchar); cdecl;external; +Procedure fl_show_alert(p1 : pchar; p2 : pchar; p3 : pchar; p4 : Longint ); cdecl;external; +Function fl_show_question(p1 : pchar; p2 : longint) : Longint ; cdecl;external; +Function fl_show_input(p1 : pchar; p2 : pchar ) : pchar; cdecl;external; +Function fl_show_simple_input(p1 : pchar; p2 : pchar ) : pchar; cdecl;external; +Function fl_show_colormap(p1 : Longint ) : Longint ; cdecl;external; +Function fl_show_choice(p1,p2,p3 : pchar; p4 : Longint ; p5,p6,p7 : pchar; p8 : Longint) : Longint; cdecl;external; +Function fl_show_choices(p1 : pchar; p4 : Longint ; p5,p6,p7 : pchar; p8 : Longint) : Longint; cdecl;external; +Procedure fl_set_choices_shortcut(p1,p2,p3 :pchar); cdecl;external; + +Procedure fl_show_oneliner(p1 : pchar; p2 : TFL_Coord; p3 :TFL_Coord); cdecl;external; +Procedure fl_hide_oneliner; cdecl;external; +Procedure fl_set_oneliner_font(p1 : LongInt; p2 : Longint ); cdecl;external; +Procedure fl_set_oneliner_color(p1 : TFL_COLOR; p2 : TFL_COLOR); cdecl;external; + +type TFD_CMDLOG = record + form : PFL_FORM; + browser,close_browser,clear_browser : PFL_OBJECT; +end; +PFD_CMDLOG = ^TFD_CMDLOG; + +Function fl_exe_command(p1 : pchar; p2 : Longint) : Longint; cdecl;external; +Function fl_end_command(p1 : longint) : Longint; cdecl;external; +Function fl_check_command(p1 : longint) : longint; cdecl;external; +Function fl_end_all_command : Longint; cdecl;external; +Procedure fl_show_command_log(p1 : Longint); cdecl;external; +Procedure fl_hide_command_log; cdecl;external; +Procedure fl_clear_command_log; cdecl;external; +Procedure fl_addto_command_log(p1 : pchar); cdecl;external; +Procedure fl_set_command_log_position(p1,p2 :longint); cdecl;external; +Function fl_get_command_log_fdstruct : PFD_CMDLOG; cdecl;external; + +{ aliases } +{ +#define fl_open_command fl_exe_command +#define fl_close_command fl_end_command +} + +{****** from file selector ****************} + +Const FL_MAX_FSELECTOR = 6; + +type TFD_FSELECTOR = record + fselect : PFL_FORM; + browser, theinput, prompt, resbutt, + patbutt,dirbutt, cancel, ready : PFL_OBJECT; + dirlabel,patlabel : PFL_OBJECT; + appbut : array[0..2] of PFL_OBJECT; +end; + +PFD_FSELECTOR = ^TFD_FSELECTOR; + +Function fl_use_fselector(p1 : LongInt ) : LongInt; cdecl;external; +Function fl_show_fselector(p1,p2,p3,p4 : pchar) : pchar; cdecl;external; + +Procedure fl_set_fselector_fontsize (p1 : Longint); cdecl;external; +Procedure fl_set_fselector_fontstyle (p1 : longint); cdecl;external; +Procedure fl_set_fselector_placement(p1 : LongInt); cdecl;external; +Procedure fl_set_fselector_border(p1 : LongInt); cdecl;external; + +{ +#define fl_set_fselector_transient(p1 : b) \ + fl_set_fselector_border(p1 : (p1 : b)?FL_TRANSIENT:FL_FULLBORDER) +} + +Type TFSelector_Callback = Function (P1 : Pchar; P2 : Pointer) : Longint; cdecl; + PFSelector_Callback = ^TFSelector_Callback; + TFL_Procedure = Procedure; cdecl; + PFL_Procedure = ^TFL_Procedure; + +Procedure fl_set_fselector_callback( p1 : PFSelector_Callback; p2 : pointer); cdecl;external; +Function fl_get_filename : pchar; cdecl;external; +Function fl_get_directory : pchar; cdecl;external; +Function fl_get_pattern : pchar; cdecl;external; +Function fl_set_directory (p1 : pchar ) : LongInt; cdecl;external; +Procedure fl_set_pattern (p1 : pchar); cdecl;external; +Procedure fl_refresh_fselector; cdecl;external; +Procedure fl_add_fselector_appbutton(p1 : pchar; p2 : PFL_Procedure; p3 : pointer); cdecl;external; +Procedure fl_remove_fselector_appbutton(p1 : pchar); cdecl;external; +Procedure fl_disable_fselector_cache(p1 : LongInt); cdecl;external; +Procedure fl_invalidate_fselector_cache; cdecl;external; +Function fl_get_fselector_form : PFL_FORM; cdecl;external; +Function fl_get_fselector_fdstruct : PFD_FSELECTOR; cdecl;external; +Procedure fl_hide_fselector; cdecl;external; + + +Procedure fl_set_fselector_filetype_marker(p1,p2,p3,p4,p5 : Longint); cdecl;external; + +{ +#define fl_show_file_selector fl_show_fselector +#define fl_set_fselector_cb fl_set_fselector_callback +#define fl_set_fselector_title(p1 : s) fl_set_form_title(p1 : fl_get_fselector_form(p1 : ); p2 : s) +} + + +{**** Types ****} + +Const + FL_NORMAL_INPUT = 0; + FL_FLOAT_INPUT = 1; + FL_INT_INPUT = 2; + FL_DATE_INPUT = 3; + FL_MULTILINE_INPUT = 4; + FL_HIDDEN_INPUT = 5; + FL_SECRET_INPUT = 6; + + FL_INPUT_MMDD = 0; + FL_INPUT_DDMM = 1; + +Type TFL_INPUT_TYPE = Longint; + +{**** Defaults ****} + +Const + FL_INPUT_BOXTYPE = FL_DOWN_BOX; + FL_INPUT_COL1 = FL_COL1; + FL_INPUT_COL2 = FL_MCOL; + FL_INPUT_LCOL = FL_LCOL; + FL_INPUT_ALIGN = FL_ALIGN_LEFT; + +{**** Others ****} + + FL_INPUT_TCOL = FL_LCOL; + FL_INPUT_CCOL = FL_BLUE; + + cFL_RINGBELL = (1 shl 4); + +{**** Routines ****} + +Function fl_create_input(p1 : Longint; p2,p3,p4,p5 : TFL_Coord; p6: pchar) : PFL_OBJECT; cdecl;external; + +Function fl_add_input(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord; P6 : pchar ) : PFL_OBJECT; cdecl;external; + +Procedure fl_set_input(p1 : PFL_OBJECT; p2 : pchar); cdecl;external; +Procedure fl_set_input_color(p1 : PFL_OBJECT; p2 : Longint ; p3 :Longint ); cdecl;external; +Procedure fl_set_input_return(p1 : PFL_OBJECT; p2 : Longint ); cdecl;external; +Procedure fl_set_input_scroll(p1 : PFL_OBJECT; p2 : Longint ); cdecl;external; +Procedure fl_set_input_cursorpos(p1 : PFL_OBJECT; p2 : Longint ; p3 :Longint ); cdecl;external; +Procedure fl_set_input_selected(p1 : PFL_OBJECT; p2 : Longint ); cdecl;external; +Procedure fl_set_input_selected_range(p1 : PFL_OBJECT; p2 : Longint ; p3 :Longint ); cdecl;external; +Procedure fl_set_input_maxchars(p1 : PFL_OBJECT; p2 : Longint ); cdecl;external; +Procedure fl_set_input_format(p1 : PFL_OBJECT; p2,p3 : Longint ); cdecl;external; +Procedure fl_set_input_hscrollbar(p1 : PFL_OBJECT; p2 : Longint ); cdecl;external; +Procedure fl_set_input_vscrollbar(p1 : PFL_OBJECT; p2 : Longint ); cdecl;external; +Procedure fl_set_input_xoffset(p1 : PFL_OBJECT; p2 : Longint ); cdecl;external; +Procedure fl_set_input_topline(p1 : PFL_OBJECT; p2 : Longint ); cdecl;external; +Procedure fl_set_input_scrollbarsize(p1 : PFL_OBJECT; p2,p3 : Longint ); cdecl;external; + +Function fl_get_input(p1 : PFL_OBJECT ) : pchar; cdecl;external; +Function fl_get_input_cursorpos(p1 : PFL_OBJECT; p2,p3 : Pointer ) : LongInt; cdecl;external; +Function fl_get_input_topline(p1 : PFL_OBJECT;p2,p3 : PLongint) : Longint; cdecl;external; +Function fl_get_input_screenlines(p1 : PFL_OBJECT) : Longint; cdecl;external; +Function fl_get_input_numberoflines(p1 : PFL_OBJECT) : Longint; cdecl;external; +Procedure fl_get_input_format(p1 : PFL_OBJECT;p2,p3 : PLongint); cdecl;external; +Function fl_get_input_selected_range(p1 : PFL_OBJECT; p2 : Longint ; p3 :Longint ) : pchar ; cdecl;external; + + + +type + TFL_INPUTVALIDATOR = Procedure (p1 : PFL_OBJECT; p2,p3 : pchar; p4 : Longint ); cdecl; + PFL_INPUTVALIDATOR= ^TFL_INPUTVALIDATOR; + +Function fl_set_input_filter(p1 : PFL_OBJECT; p2 : PFL_INPUTVALIDATOR ) : PFL_INPUTVALIDATOR ; cdecl;external; + +{ +#define fl_set_input_shortcut fl_set_object_shortcut +#define ringbell(p1 : ) XBell(p1 : fl_display; p2 : 0) +} + +type TFL_EditKeymap = record + { basic editing } + del_prev_char : Longint; { delete previous char } + del_next_char : Longint; { delete next char } + del_prev_word : Longint; { delete previous word } + del_next_word : Longint; { delete next word } + + { movement } + moveto_prev_line : Longint; { one line up } + moveto_next_line : Longint; { one line down } + moveto_prev_char : Longint; { one char left } + moveto_next_char : Longint; { one char right } + moveto_prev_word : Longint; { one word left } + moveto_next_word : Longint; { one word right } + moveto_prev_page : Longint; { one page up } + moveto_next_page : Longint; { one page down } + moveto_bol : Longint; { move to begining of line } + moveto_eol : Longint; { move to end of line } + moveto_bof : Longint; { move to begin of file } + moveto_eof : Longint; { move to end of file } + + { misc. stuff } + transpose : Longint; { switch two char positions } + paste : Longint; { paste the edit buffer } + backspace : Longint; { another del_prev_char } + del_to_bol : Longint; { cut to begining of line } + del_to_eol : Longint; { cut to end of line } + clear_field : Longint; { delete everything } + del_to_eos : Longint; { not implemented } + reserverd : array[0..3] of Longint; { fillter } +end; +PFL_EditKeymap = ^TFL_EditKeymap; + +Procedure fl_set_input_editkeymap(a: PFL_EditKeymap); cdecl;external; + + +{*********** Object Class: Menu ***********} + +Const + FL_TOUCH_MENU = 0; + FL_PUSH_MENU = 1; + FL_PULLDOWN_MENU = 2; + +Type TFL_MENU_TYPE = Longint; + +{**** Defaults ****} + +Const + FL_MENU_BOXTYPE = FL_BORDER_BOX; + FL_MENU_COL1 = FL_COL1; + FL_MENU_COL2 = FL_MCOL; + FL_MENU_LCOL = FL_LCOL; + FL_MENU_ALIGN = FL_ALIGN_CENTER; + +{**** Others ****} + + FL_MENU_MAXITEMS = 128; + FL_MENU_MAXSTR = 64; + +{**** Routines ****} + +Function fl_create_menu(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord; P6 : pchar) : PFL_OBJECT; cdecl;external; + +Function fl_add_menu(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord; P6 : pchar) : PFL_OBJECT; cdecl;external; + +Procedure fl_clear_menu(p1 : PFL_OBJECT); cdecl;external; +Procedure fl_set_menu(p1 : PFL_OBJECT; p2 : pchar); cdecl;external; +Procedure fl_addto_menu(p1 : PFL_OBJECT; p2 : pchar); cdecl;external; +Procedure fl_replace_menu_item(p1 : PFL_OBJECT; p2 : Longint ; p3 :pchar); cdecl;external; +Procedure fl_delete_menu_item(p1 : PFL_OBJECT; p2 : Longint ); cdecl;external; + +Procedure fl_set_menu_item_shortcut(p1 : PFL_OBJECT; p2 : Longint ; p3 :pchar); cdecl;external; +Procedure fl_set_menu_item_mode(p1 : PFL_OBJECT; p2 : Longint ; p3 : Cardinal); cdecl;external; +Procedure fl_show_menu_symbol(p1 : PFL_OBJECT; p2 : Longint ); cdecl;external; +Procedure fl_set_menu_popup(p1 : PFL_OBJECT; p2 : Longint ); cdecl;external; +Function fl_get_menu_popup(p1 : pfl_object): longint; cdecl;external; + +Function fl_get_menu(p1 : PFL_OBJECT ) : Longint ; cdecl;external; +Function fl_get_menu_item_text(p1 : PFL_OBJECT; p2 : Longint ) : pchar; cdecl;external; +Function fl_get_menu_maxitems(p1 : PFL_OBJECT ) : Longint ; cdecl;external; +Function fl_get_menu_item_mode(p1 : PFL_OBJECT; p2 : Longint ) : Cardinal ; cdecl;external; +Function fl_get_menu_text(p1 : PFL_OBJECT ) : pchar; cdecl;external; + + + +Const + FL_NORMAL_MENUBAR = 0; + + FL_MENUBAR_BOXTYPE =FL_UP_BOX; + FL_MENUBAR_COL1 =FL_COL1; + FL_MENUBAR_COL2 =FL_MCOL; + FL_MENUBAR_LCOL =FL_LCOL; + +Function fl_create_menubar(p1 : longint; p2,p3,p4,p5 : TFL_COORD;p6 : Pchar): PFL_OBJECT; cdecl;external; +Function fl_add_menubar(p1 : longint;p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT; cdecl;external; + +Procedure fl_clear_menubar(p1 : PFL_OBJECT); cdecl;external; +Procedure fl_set_menubar(p1 : PFL_OBJECT; p2 : pchar); cdecl;external; +Procedure fl_set_menubar_entries(p1 : PFL_OBJECT; p2 : pchar;p3 : PFL_PUP_ENTRY); cdecl;external; + + +{ + * + * Prototypes for pop-up menus + } + + +Const + FL_MAXPUPI = 80; { max item each pup } + FL_PUP_PADH = 4; { space between each items } + + type + TFL_PUP_ENTERCB = Procedure (p1 : longint; p2: pointer); cdecl; + PFL_PUP_ENTERCB = ^TFL_PUP_ENTERCB; + + TFL_PUP_LEAVECB =Procedure (p1 : longint; p2: pointer); cdecl; + PFL_PUP_LEAVECB = ^TFL_PUP_LEAVECB; + +Function fl_setpup_entries(p1 : Longint; p2 : PFL_PUP_ENTRY) : Longint; cdecl;external; +Function fl_newpup(p1 : TWindow ) : LongInt; cdecl;external; + +Function fl_defpup(p1 : TWindow; p2 : pchar) : LongInt; cdecl;external; +Function fl_addtopup(p1 : longint; p2 : pchar) : LongInt; cdecl;external; + +Function fl_setpup_mode(p1 : Longint; p2 : Longint ; p3 : Cardinal) : Longint; cdecl;external; +Procedure fl_freepup(p1 : Longint); cdecl;external; +Function fl_dopup(p1 : Longint ) : LongInt; cdecl;external; + +Procedure fl_setpup_shortcut(p1 : Longint; p2 : Longint ; p3 :pchar); cdecl;external; +Procedure fl_setpup_position(p1 : Longint; p2 : Longint ); cdecl;external; +Procedure fl_setpup_selection(p1 : Longint; p2 : Longint ); cdecl;external; +Procedure fl_setpup_shadow(p1 : LongInt; p2 : Longint {was LongInt}); cdecl;external; +Procedure fl_setpup_softedge(p1 : LongInt; p2 : Longint ); cdecl;external; +Function fl_setpup_fontsize(p1 : LongInt) : Longint; cdecl;external; +Function fl_setpup_fontstyle(p1 : LongInt) : Longint; cdecl;external; +Procedure fl_setpup_color(p1 : TFL_COLOR; p2 : TFL_COLOR); cdecl;external; +Procedure fl_setpup_checkcolor(p1 : TFL_COLOR); cdecl;external; +Function fl_setpup_default_fontsize(p1 : LongInt) : Longint; +Function fl_setpup_default_fontstyle(p1 : LongInt) : Longint; +Procedure fl_setpup_default_color(p1 : TFL_COLOR; p2 : TFL_COLOR); +Procedure fl_setpup_default_checkcolor(p1 : TFL_COLOR); +Procedure fl_setpup_title(p1 : LongInt; p2 : pchar); cdecl;external; +Procedure fl_setpup_bw(p1 : LongInt; p2 : Longint ); cdecl;external; +Procedure fl_setpup_pad(p1 : LongInt; p2 : Longint ; p3 :Longint ); cdecl;external; +Function fl_setpup_cursor(p1 : LongInt; p2 : Longint ) : TCursor ; cdecl;external; +Function fl_setpup_default_cursor(p1 : LongInt ) : TCursor ; cdecl;external; +Function fl_setpup_maxpup(p1 : LongInt ) : LongInt; cdecl;external; +Function fl_getpup_mode(p1 : LongInt; p2 : Longint ) : Cardinal; cdecl;external; +Function fl_getpup_text(p1 : LongInt; p2 : Longint ) : pchar; cdecl;external; +Procedure fl_showpup(p1 : LongInt); cdecl;external; +Procedure fl_hidepup(p1 : LongInt); cdecl;external; + +{ +#define fl_setpup_hotkey fl_setpup_shortcut +} + +Function fl_setpup_itemcb(p1 : LongInt; p2 : Longint ; p3 :PFL_PUP_CB ) : PFL_PUP_CB ; cdecl;external; +Function fl_setpup_menucb(p1 : LongInt; p2 : PFL_PUP_CB ) : PFL_PUP_CB ; cdecl;external; +Procedure fl_setpup_submenu(p1 : LongInt; p2 : Longint ; p3 :Longint ); cdecl;external; + +{ +#define fl_setpup fl_setpup_mode +} + +Const + FL_NORMAL_POSITIONER = 0; + +{**** Defaults ****} + + FL_POSITIONER_BOXTYPE = FL_DOWN_BOX; + FL_POSITIONER_COL1 = FL_COL1; + FL_POSITIONER_COL2 = FL_RED; + FL_POSITIONER_LCOL = FL_LCOL; + FL_POSITIONER_ALIGN = FL_ALIGN_BOTTOM; + +{**** Others ****} + + +{**** Routines ****} + +Function fl_create_positioner(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT; cdecl;external; +Function fl_add_positioner(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT; cdecl;external; + +Procedure fl_set_positioner_xvalue(p1 : PFL_OBJECT; p2 : double); cdecl;external; +Function fl_get_positioner_xvalue(p1 : PFL_OBJECT ) : double ; cdecl;external; +Procedure fl_set_positioner_xbounds(p1 : PFL_OBJECT; p2 : double; p3 :double); cdecl;external; +Procedure fl_get_positioner_xbounds(p1 : PFL_OBJECT; p2 : pdouble ; p3 : pdouble); cdecl;external; +Procedure fl_set_positioner_yvalue(p1 : PFL_OBJECT; p2 : double); cdecl;external; +Function fl_get_positioner_yvalue(p1 : PFL_OBJECT ) : double ; cdecl;external; +Procedure fl_set_positioner_ybounds(p1 : PFL_OBJECT; p2 : double; p3 :double); cdecl;external; +Procedure fl_get_positioner_ybounds(p1 : PFL_OBJECT; p2 ,p3 :pdouble); cdecl;external; +Procedure fl_set_positioner_xstep(p1 : PFL_OBJECT; p2 : double); cdecl;external; +Procedure fl_set_positioner_ystep(p1 : PFL_OBJECT; p2 : double); cdecl;external; +Procedure fl_set_positioner_return(p1 : PFL_OBJECT; p2 : Longint ); cdecl;external; + +Const + FL_HOR_SCROLLBAR = 0; + FL_VERT_SCROLLBAR = 1; + FL_HOR_THIN_SCROLLBAR = 2; + FL_VERT_THIN_SCROLLBAR = 3; + FL_HOR_NICE_SCROLLBAR = 4; + FL_VERT_NICE_SCROLLBAR = 5; + FL_HOR_PLAIN_SCROLLBAR = 6; + FL_VERT_PLAIN_SCROLLBAR = 7; + + FL_HOR_BASIC_SCROLLBAR = FL_HOR_PLAIN_SCROLLBAR; + FL_VERT_BASIC_SCROLLBAR = FL_VERT_PLAIN_SCROLLBAR; + + FL_THIN_SCROLLBAR = 0; + FL_PLAIN_SCROLLBAR = 1; + FL_NORMAL_SCROLLBAR = 2; + FL_NICE_SCROLLBAR = 3; + +Function fl_create_scrollbar(p1 : longint;p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT ; cdecl;external; +Function fl_add_scrollbar(p1 : longint;p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT ; cdecl;external; + +Function fl_get_scrollbar_value(p1 : PFL_OBJECT) : double ; cdecl;external; +Procedure fl_set_scrollbar_value(p1 : PFL_OBJECT; p2: double); cdecl;external; +Procedure fl_set_scrollbar_size(p1 : PFL_OBJECT; p2 : double); cdecl;external; +Procedure fl_set_scrollbar_increment(p1 : PFL_OBJECT;p2,p3: double); cdecl;external; +Procedure fl_get_scrollbar_increment(p1 : PFL_OBJECT; p2,p3 : real {float !!}); cdecl;external; +Procedure fl_set_scrollbar_bounds(p1 : PFL_OBJECT; p2,p3 : double); cdecl;external; +Procedure fl_get_scrollbar_bounds(p1 : PFL_OBJECT; p2,p3 : real {float !!!}); cdecl;external; +Procedure fl_set_scrollbar_return(p1 : PFL_OBJECT; p2 : longint); cdecl;external; +Procedure fl_set_scrollbar_step(P1 : PFL_OBJECT;p2 : double); cdecl;external; + + + +{ + * + * Object Class: Slider + * + } + + +Const + FL_VERT_SLIDER = 0; + FL_HOR_SLIDER = 1; + FL_VERT_FILL_SLIDER = 2; + FL_HOR_FILL_SLIDER = 3; + FL_VERT_NICE_SLIDER = 4; + FL_HOR_NICE_SLIDER = 5; + FL_HOR_BROWSER_SLIDER = 6; + FL_VERT_BROWSER_SLIDER = 7; + FL_HOR_BROWSER_SLIDER2 = 8; { for Longint ernal use only } + FL_VERT_BROWSER_SLIDER2 = 9; { for Longint ernal use only } + FL_HOR_THIN_SLIDER = 10; { internal use } + FL_VERT_THIN_SLIDER = 11; { internal use } + FL_HOR_BASIC_SLIDER = 12; { internal use } + FL_VERT_BASIC_SLIDER = 13; { internal use } + +Type + TFL_SLIDER_TYPE = Longint; + PFL_SLIDER_TYPE = ^TFL_SLIDER_TYPE; + + +{**** Defaults ****} +Const + FL_SLIDER_BW1 = FL_BOUND_WIDTH; + FL_SLIDER_BW2 = FL_BOUND_WIDTH-1; + + FL_SLIDER_BOXTYPE = FL_DOWN_BOX; + FL_SLIDER_COL1 = FL_COL1; + FL_SLIDER_COL2 = FL_COL1; + FL_SLIDER_LCOL = FL_LCOL; + FL_SLIDER_ALIGN = FL_ALIGN_BOTTOM; + +{**** Others ****} + + FL_SLIDER_FINE = 0.05; + FL_SLIDER_WIDTH = 0.10; + + +{**** Routines ****} + +Function fl_create_slider(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord;p6: pchar) : PFL_OBJECT; cdecl;external; +Function fl_add_slider(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord;p6: pchar) : PFL_OBJECT; cdecl;external; + +Function fl_create_valslider(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord;p6: pchar): PFL_OBJECT; cdecl;external; +Function fl_add_valslider(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord;P6: pchar) : PFL_OBJECT; cdecl;external; + +Procedure fl_set_slider_value(p1 : PFL_OBJECT; p2 : double); cdecl;external; +Function fl_get_slider_value(p1 : PFL_OBJECT ) : double ; cdecl;external; +Procedure fl_set_slider_bounds(p1 : PFL_OBJECT; p2 : double; p3 :double); cdecl;external; +Procedure fl_get_slider_bounds(p1 : PFL_OBJECT; p2,p3 : pdouble); cdecl;external; + +Procedure fl_set_slider_return(p1 : PFL_OBJECT; p2 : Longint ); cdecl;external; + +Procedure fl_set_slider_step(p1 : PFL_OBJECT; p2 : double); cdecl;external; +Procedure fl_set_slider_increment(p1 : PFL_OBJECT; p2,p3 : double); cdecl;external; +Procedure fl_set_slider_size(p1 : PFL_OBJECT; p2 : double); cdecl;external; +Procedure fl_set_slider_precision(p1 : PFL_OBJECT; p2 : Longint ); cdecl;external; + +Type + TFL_SLIDER_FILTER = Procedure (p1 : PFL_OBJECT; p2 : double; p3 :Longint ); cdecl; + PTFL_SLIDER_FILTER= ^TFL_SLIDER_FILTER ; + +Procedure fl_set_slider_filter(p1 : PFL_OBJECT; p2 : PTFL_SLIDER_FILTER); cdecl;external; + +const +FL_TOP_TABFOLDER = 0; +FL_BOTTOM_TABFOLDER = 1; +FL_LEFT_TABFOLDER = 2; +FL_RIGHT_TABFOLDER = 3; + +FL_NORMAL_TABFOLDER = FL_TOP_TABFOLDER; + +Function fl_create_tabfolder (p1 : longint;p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT ; cdecl;external; +Function fl_add_tabfolder(p1 : longint;p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT ; cdecl;external; +Function fl_addto_tabfolder(p1 : PFL_OBJECT; p2 : pchar; p3 : PFL_FORM) : PFL_OBJECT; cdecl;external; +Procedure fl_delete_folder(p1 : PFL_OBJECT; p2 : PFL_FORM); cdecl;external; +Procedure fl_delete_folder_bynumber(p1 : PFL_OBJECT; p2 : longint); cdecl;external; +Procedure fl_delete_folder_byname(p1 : PFL_OBJECT; p2 : pchar); cdecl;external; + +Procedure fl_set_folder(p1 : PFL_OBJECT; P2 : PFL_FORM); cdecl;external; +Procedure fl_set_folder_byname(p1 : PFL_OBJECT; p2 : pchar); cdecl;external; +Procedure fl_set_folder_bynumber(p1 : PFL_OBJECT; p2 : longint); cdecl;external; +Function fl_get_folder(p1 : PFL_OBJECT) : PFL_FORM; cdecl;external; +Function fl_get_folder_number(p1 : PFL_OBJECT) : longint; cdecl;external; +Function fl_get_folder_name(p1 : PFL_OBJECT) : pchar; cdecl;external; +Function fl_get_active_folder(p1 : PFL_OBJECT) : PFL_FORM; cdecl;external; +Function fl_get_active_folder_number(P1 : PFL_OBJECT) : longint; cdecl;external; +Function fl_get_active_folder_name(p1 : PFL_OBJECT) : Pchar; cdecl;external; +Procedure fl_get_folder_area(p1 : PFL_OBJECT; p2,p3,p4,p5 : PFL_Coord); cdecl;external; + +Procedure fl_replace_folder_bynumber(p1 : PFL_OBJECT;p2 : longint;p3 : PFL_FORM); cdecl;external; + +Const + FL_NORMAL_TEXT = 0; + + FL_TEXT_BOXTYPE = FL_FLAT_BOX; + FL_TEXT_COL1 = FL_COL1; + FL_TEXT_COL2 = FL_MCOL; + FL_TEXT_LCOL = FL_LCOL; + FL_TEXT_ALIGN = FL_ALIGN_LEFT; + +Function fl_create_text(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT; cdecl;external; +Function fl_add_text(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord; p6 : pchar): PFL_OBJECT; cdecl;external; + + + +{ + * + * Object Class: Timer + * + } + + +Const + FL_NORMAL_TIMER = 0; + FL_VALUE_TIMER = 1; + FL_HIDDEN_TIMER = 2; + +Type TFL_TIMER_TYPE = Longint; + +{**** Defaults ****} +Const + +FL_TIMER_BOXTYPE = FL_DOWN_BOX; +FL_TIMER_COL1 = FL_COL1; +FL_TIMER_COL2 = FL_RED; +FL_TIMER_LCOL = FL_LCOL; +FL_TIMER_ALIGN = FL_ALIGN_CENTER; + +{**** Others ****} + + FL_TIMER_BLINKRATE = 0.2; + +Type TFL_TIMER_FILTER = Function (P1 : PFL_OBJECT;p2 : double) : pchar; cdecl; + PFL_TIMER_FILTER = ^TFL_TIMER_FILTER; + +{**** Routines ****} + +Function fl_create_timer(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT; cdecl;external; + +Function fl_add_timer(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord;p6: pchar) : PFL_OBJECT; cdecl;external; + +Procedure fl_set_timer(p1 : PFL_OBJECT; p2 : double); cdecl;external; +Function fl_get_timer(p1 : PFL_OBJECT ) : double ; cdecl;external; +Procedure fl_set_timer_countup(p1 : PFL_OBJECT; p2 : Longint); cdecl;external; +Function fl_set_timer_filter (p1 : PFL_OBJECT; p2 : PFL_TIMER_FILTER) : PFL_TIMER_FILTER; cdecl;external; +Procedure fl_suspend_timer(p1 : PFL_OBJECT); cdecl;external; +Procedure fl_resume_timer(p1 : PFL_OBJECT); cdecl;external; + +{ + * Class FL_XYPLOT + } + +Const + FL_NORMAL_XYPLOT = 0; { solid line } + FL_SQUARE_XYPLOT = 1; { with added square } + FL_CIRCLE_XYPLOT = 2; { with added circle } + FL_FILL_XYPLOT = 3; { fill completely } + FL_POINTS_XYPLOT = 4; { only data points } + FL_DASHED_XYPLOT = 5; { dashed line } + FL_IMPULSE_XYPLOT = 6; + FL_ACTIVE_XYPLOT = 7; { accepts Longint eractive manipulations } + FL_EMPTY_XYPLOT = 8; +Type + TFL_XYPLOT_TYPE = Longint; + +Const + FL_LINEAR = 0; + FL_LOG = 1; + +Const + FL_GRID_NONE = 0; + FL_GRID_MAJOR = 1; + FL_GRID_MINOR = 2; + +{**** Defaults ****} + + FL_XYPLOT_BOXTYPE = FL_FLAT_BOX; + FL_XYPLOT_COL1 = FL_COL1; + FL_XYPLOT_LCOL = FL_LCOL; + FL_XYPLOT_ALIGN = FL_ALIGN_BOTTOM; + FL_MAX_XYPLOTOVERLAY = 32; + +{**** Others ****} + +Function fl_create_xyplot(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord; p6: pchar) : PFL_OBJECT; cdecl;external; +Function fl_add_xyplot(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord; P6 : pchar ) : PFL_OBJECT; cdecl;external; +Procedure fl_set_xyplot_data(p1 : PFL_OBJECT; p2,p3 : pfloat; p4 : Longint ; p5,p6,p7 : pchar); cdecl;external; +Procedure fl_set_xyplot_file(p1 : PFL_OBJECT; p2,p3,p4,p5 :pchar); cdecl;external; + +Procedure fl_set_xyplot_return(p1 : PFL_OBJECT; p2 : Longint ); cdecl;external; +Procedure fl_set_xyplot_xtics(p1 : PFL_OBJECT; p2 : Longint ; p3 :Longint ); cdecl;external; +Procedure fl_set_xyplot_ytics(p1 : PFL_OBJECT; p2 : Longint ; p3 :Longint ); cdecl;external; +Procedure fl_set_xyplot_xbounds(p1 : PFL_OBJECT; p2 : double; p3 :double); cdecl;external; +Procedure fl_set_xyplot_ybounds(p1 : PFL_OBJECT; p2 : double; p3 :double); cdecl;external; +Function fl_set_xyplot_maxoverlays(p1 : PFL_OBJECT; p2 : Longint ) : Longint ; cdecl;external; +Procedure fl_set_xyplot_overlay_type(p1 : PFL_OBJECT; p2 : Longint ; p3 : Longint ); cdecl;external; +Procedure fl_set_xyplot_interpolate(p1 : PFL_OBJECT; p2 : Longint ; p3 : Longint ; p4 : double); cdecl;external; +Procedure fl_set_xyplot_fontsize(p1 : PFL_OBJECT; p2 : Longint ); cdecl;external; +Procedure fl_set_xyplot_fontstyle(p1 : PFL_OBJECT; p2 : Longint ); cdecl;external; +Procedure fl_set_xyplot_inspect(p1 : PFL_OBJECT; p2 : Longint ); cdecl;external; +Procedure fl_set_xyplot_symbolsize(p1 : PFL_OBJECT; p2 : Longint ); cdecl;external; +Procedure fl_set_xyplot_xscale(p1 : PFL_OBJECT; p2 : Longint ; p3 :double); cdecl;external; +Procedure fl_set_xyplot_yscale(p1 : PFL_OBJECT; p2 : Longint ; p3 :double); cdecl;external; + +Procedure fl_set_xyplot_linewidth(p1 : PFL_OBJECT; p2,p3 : Longint); cdecl;external; +Procedure fl_set_xyplot_xgrid(p1 : PFL_OBJECT; p2 : Longint); cdecl;external; +Procedure fl_set_xyplot_ygrid(p1 : PFL_OBJECT; p2 : Longint); cdecl;external; +Procedure fl_set_xyplot_alphaxtics(p1 : PFL_OBJECT; p2,p3 : pchar); cdecl;external; +Procedure fl_set_xyplot_alphaytics(p1 : PFL_OBJECT; p2,p3 : pchar); cdecl;external; +Procedure fl_set_xyplot_fixed_xaxis(p1 : PFL_OBJECT; p2,p3 : pchar); cdecl;external; +Procedure fl_set_xyplot_fixed_yaxis(p1 : PFL_OBJECT; p2,p3 : pchar); cdecl;external; + + +Procedure fl_get_xyplot_xbounds(p1 : PFL_OBJECT; p2,p3 : pfloat ); cdecl;external; +Procedure fl_get_xyplot_ybounds(p1 : PFL_OBJECT; p2,p3 : pfloat ); cdecl;external; +Procedure fl_get_xyplot(p1 : PFL_OBJECT; p2,p3 : pfloat; p4 : pointer); cdecl;external; +Procedure fl_get_xyplot_data(p1 : PFL_OBJECT; p2,p3 : pfloat; p4 : pointer); cdecl;external; +Procedure fl_get_xyplot_xmapping(p1 : PFL_OBJECT; p2,p3 : pfloat); cdecl;external; +Procedure fl_get_xyplot_ymapping(p1 : PFL_OBJECT; p2,p3 : pfloat); cdecl;external; + +{ +#define fl_set_xyplot_datafile fl_set_xyplot_file +} +Procedure fl_add_xyplot_text(p1 : PFL_OBJECT; p2,p3 : double; p4 : pchar;p5 : Longint ; p6 :TFL_COLOR); cdecl;external; +Procedure fl_add_xyplot_overlay(p1 : PFL_OBJECT; p2 : Longint ; p3,p4 : pfloat; p5 : Longint ; p6 :TFL_COLOR); cdecl;external; +Procedure fl_delete_xyplot_text(p1 : PFL_OBJECT; p2 : pchar); cdecl;external; +Procedure fl_delete_xyplot_overlay(p1 : PFL_OBJECT; p2 : Longint ); cdecl;external; + +Procedure fl_replace_xyplot_point(p1 : PFL_OBJECT; p2 : Longint ; p3 : double; p4 : double); cdecl;external; +Function fl_interpolate(p1,p2 : pfloat; p3 :Longint ;p4,p5 : pfloat; p6 : double; p7 : Longint ) : Longint; cdecl;external; +Procedure fl_xyplot_s2w(p1 : PFL_OBJECT; p2 : double; p3 : double; p4,p5 : pfloat); cdecl;external; +Procedure fl_xyplot_w2s(p1 : PFL_OBJECT; p2 : double; p3 : double; p4,p5 : pfloat); cdecl;external; + +implementation + +{ From here we implement function aliases which were #defined } + +procedure fl_set_button_shortcut(p1 : PFL_OBJECT; p2 : pchar;p3 : Longint ); + +begin + fl_set_object_shortcut (p1,p2,p3); +end; + +procedure fl_set_pixmapbutton_data(p1 : PFL_OBJECT; p2 : ppchar); + +begin + fl_set_pixmap_data(p1,p2); +end; + +procedure fl_set_pixmapbutton_file(p1 : PFL_OBJECT; p2 : pchar); + +begin + fl_set_pixmap_file(p1,p2); +end; + +procedure fl_set_pixmapbutton_align(p1 : PFL_OBJECT; p2 : Longint ; p3 : Longint ; p4 : Longint ); +begin + fl_set_pixmap_align(p1,p2,p3,p4); +end; + +procedure fl_set_pixmapbutton_pixmap(p1 : PFL_OBJECT; p2 : TPixmap; p3 :TPixmap); +begin + fl_set_pixmap_pixmap(p1,p2,p3); +end; + +procedure fl_set_pixmapbutton_colorcloseness(p1 : Longint ; p2 : Longint ; p3 :Longint ); +begin +fl_set_pixmap_colorcloseness(p1,p2,p3); +end; + +procedure fl_free_pixmapbutton_pixmap(p1 : PFL_OBJECT); +begin + fl_free_pixmap_pixmap(p1); +end; + +function fl_get_pixmapbutton_pixmap(p1 : PFL_OBJECT; p2 : PPixmap; p3 : PPixmap) : TPixmap ; + +begin + fl_get_pixmapbutton_pixmap:=fl_get_pixmap_pixmap(p1,p2,p3); +end; + +Function FL_ObjWin ( P : PFL_Object) : TWindow; + +begin +if P^.objclass <> FL_CANVAS then + FL_ObjWin :=P^.form^.window +else + FL_objWin := fl_get_canvas_id (p) +end; + +procedure fl_rectf(x,y,w,h : TFL_COORD;c : TFL_COLOR); +begin + fl_rectangle(1,x,y,w,h,c) +end; + +procedure fl_rect(x,y,w,h : TFL_COORD;c : TFL_COLOR); +begin + fl_rectangle(0,x,y,w,h,c) +end; + + +procedure fl_set_canvas_decoration(p1 : PFL_OBJECT; p2 : Longint ); + +begin +fl_set_object_boxtype (p1,p2); +end; + +function fl_setpup_default_fontsize(p1 : LongInt) : Longint; + +begin + fl_setpup_default_fontsize:=fl_setpup_fontsize(p1) +end; + +function fl_setpup_default_fontstyle(p1 : LongInt) : Longint; + +begin + fl_setpup_default_fontstyle:=fl_setpup_fontstyle(p1); +end; + +procedure fl_setpup_default_color(p1 : TFL_COLOR; p2 : TFL_COLOR); +begin + fl_setpup_color(p1,p2); +end; + +procedure fl_setpup_default_checkcolor(p1 : TFL_COLOR); +begin + fl_setpup_default_checkcolor(p1); +end; + +end. |
