mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-19 21:19:31 +02:00
* Added stretchdraw
git-svn-id: trunk@5436 -
This commit is contained in:
parent
ab919747a6
commit
ae11fd3770
2
.gitattributes
vendored
2
.gitattributes
vendored
@ -818,6 +818,7 @@ fcl/image/bmpcomn.pp svneol=native#text/plain
|
||||
fcl/image/clipping.pp svneol=native#text/plain
|
||||
fcl/image/drawing.pp svneol=native#text/plain
|
||||
fcl/image/ellipses.pp svneol=native#text/plain
|
||||
fcl/image/extinterpolation.pp svneol=native#text/plain
|
||||
fcl/image/fpbrush.inc svneol=native#text/plain
|
||||
fcl/image/fpcanvas.inc svneol=native#text/plain
|
||||
fcl/image/fpcanvas.pp svneol=native#text/plain
|
||||
@ -833,6 +834,7 @@ fcl/image/fpimage.inc svneol=native#text/plain
|
||||
fcl/image/fpimage.pp svneol=native#text/plain
|
||||
fcl/image/fpimgcanv.pp svneol=native#text/plain
|
||||
fcl/image/fpimgcmn.pp svneol=native#text/plain
|
||||
fcl/image/fpinterpolation.inc svneol=native#text/plain
|
||||
fcl/image/fpmake.inc svneol=native#text/plain
|
||||
fcl/image/fpmake.pp svneol=native#text/plain
|
||||
fcl/image/fppalette.inc svneol=native#text/plain
|
||||
|
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Don't edit, this file is generated by FPCMake Version 2.0.0 [2006/09/19]
|
||||
# Don't edit, this file is generated by FPCMake Version 2.0.0 [2006/10/13]
|
||||
#
|
||||
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 m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos sparc-linux sparc-netbsd sparc-solaris x86_64-linux x86_64-freebsd x86_64-win64 arm-linux arm-palmos arm-wince arm-gba powerpc64-linux
|
||||
@ -233,127 +233,127 @@ PACKAGESDIR:=$(wildcard $(FPCDIR) $(FPCDIR)/packages/base $(FPCDIR)/packages/ext
|
||||
override PACKAGE_NAME=fcl
|
||||
PACKAGEDIR_MAIN:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /fcl/Makefile.fpc,$(PACKAGESDIR))))))
|
||||
ifeq ($(FULL_TARGET),i386-linux)
|
||||
override TARGET_UNITS+=fpimgcmn fpimage pngcomn fpreadpng fpwritepng fpreadxpm fpwritexpm clipping fpcanvas pixtools fppixlcanv fpimgcanv pscanvas fpwritebmp fpreadbmp bmpcomn fpreadpnm fpwritepnm fpreadjpeg fpwritejpeg targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer freetypeh freetype ftfont
|
||||
override TARGET_UNITS+=fpimgcmn fpimage pngcomn fpreadpng fpwritepng fpreadxpm fpwritexpm clipping fpcanvas pixtools fppixlcanv fpimgcanv pscanvas fpwritebmp fpreadbmp bmpcomn fpreadpnm fpwritepnm fpreadjpeg fpwritejpeg targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer extinterpolation freetypeh freetype ftfont
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-go32v2)
|
||||
override TARGET_UNITS+=fpimgcmn fpimage pngcomn fpreadpng fpwritepng fpreadxpm fpwritexpm clipping fpcanvas pixtools fppixlcanv fpimgcanv pscanvas fpwritebmp fpreadbmp bmpcomn fpreadpnm fpwritepnm fpreadjpeg fpwritejpeg targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer
|
||||
override TARGET_UNITS+=fpimgcmn fpimage pngcomn fpreadpng fpwritepng fpreadxpm fpwritexpm clipping fpcanvas pixtools fppixlcanv fpimgcanv pscanvas fpwritebmp fpreadbmp bmpcomn fpreadpnm fpwritepnm fpreadjpeg fpwritejpeg targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer extinterpolation
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-win32)
|
||||
override TARGET_UNITS+=fpimgcmn fpimage pngcomn fpreadpng fpwritepng fpreadxpm fpwritexpm clipping fpcanvas pixtools fppixlcanv fpimgcanv pscanvas fpwritebmp fpreadbmp bmpcomn fpreadpnm fpwritepnm fpreadjpeg fpwritejpeg targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer freetypeh freetype ftfont
|
||||
override TARGET_UNITS+=fpimgcmn fpimage pngcomn fpreadpng fpwritepng fpreadxpm fpwritexpm clipping fpcanvas pixtools fppixlcanv fpimgcanv pscanvas fpwritebmp fpreadbmp bmpcomn fpreadpnm fpwritepnm fpreadjpeg fpwritejpeg targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer extinterpolation freetypeh freetype ftfont
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-os2)
|
||||
override TARGET_UNITS+=fpimgcmn fpimage pngcomn fpreadpng fpwritepng fpreadxpm fpwritexpm clipping fpcanvas pixtools fppixlcanv fpimgcanv pscanvas fpwritebmp fpreadbmp bmpcomn fpreadpnm fpwritepnm fpreadjpeg fpwritejpeg targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer
|
||||
override TARGET_UNITS+=fpimgcmn fpimage pngcomn fpreadpng fpwritepng fpreadxpm fpwritexpm clipping fpcanvas pixtools fppixlcanv fpimgcanv pscanvas fpwritebmp fpreadbmp bmpcomn fpreadpnm fpwritepnm fpreadjpeg fpwritejpeg targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer extinterpolation
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-freebsd)
|
||||
override TARGET_UNITS+=fpimgcmn fpimage pngcomn fpreadpng fpwritepng fpreadxpm fpwritexpm clipping fpcanvas pixtools fppixlcanv fpimgcanv pscanvas fpwritebmp fpreadbmp bmpcomn fpreadpnm fpwritepnm fpreadjpeg fpwritejpeg targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer freetypeh freetype ftfont
|
||||
override TARGET_UNITS+=fpimgcmn fpimage pngcomn fpreadpng fpwritepng fpreadxpm fpwritexpm clipping fpcanvas pixtools fppixlcanv fpimgcanv pscanvas fpwritebmp fpreadbmp bmpcomn fpreadpnm fpwritepnm fpreadjpeg fpwritejpeg targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer extinterpolation freetypeh freetype ftfont
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-beos)
|
||||
override TARGET_UNITS+=fpimgcmn fpimage pngcomn fpreadpng fpwritepng fpreadxpm fpwritexpm clipping fpcanvas pixtools fppixlcanv fpimgcanv pscanvas fpwritebmp fpreadbmp bmpcomn fpreadpnm fpwritepnm fpreadjpeg fpwritejpeg targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer
|
||||
override TARGET_UNITS+=fpimgcmn fpimage pngcomn fpreadpng fpwritepng fpreadxpm fpwritexpm clipping fpcanvas pixtools fppixlcanv fpimgcanv pscanvas fpwritebmp fpreadbmp bmpcomn fpreadpnm fpwritepnm fpreadjpeg fpwritejpeg targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer extinterpolation
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-netbsd)
|
||||
override TARGET_UNITS+=fpimgcmn fpimage pngcomn fpreadpng fpwritepng fpreadxpm fpwritexpm clipping fpcanvas pixtools fppixlcanv fpimgcanv pscanvas fpwritebmp fpreadbmp bmpcomn fpreadpnm fpwritepnm fpreadjpeg fpwritejpeg targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer
|
||||
override TARGET_UNITS+=fpimgcmn fpimage pngcomn fpreadpng fpwritepng fpreadxpm fpwritexpm clipping fpcanvas pixtools fppixlcanv fpimgcanv pscanvas fpwritebmp fpreadbmp bmpcomn fpreadpnm fpwritepnm fpreadjpeg fpwritejpeg targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer extinterpolation
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-solaris)
|
||||
override TARGET_UNITS+=fpimgcmn fpimage pngcomn fpreadpng fpwritepng fpreadxpm fpwritexpm clipping fpcanvas pixtools fppixlcanv fpimgcanv pscanvas fpwritebmp fpreadbmp bmpcomn fpreadpnm fpwritepnm fpreadjpeg fpwritejpeg targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer
|
||||
override TARGET_UNITS+=fpimgcmn fpimage pngcomn fpreadpng fpwritepng fpreadxpm fpwritexpm clipping fpcanvas pixtools fppixlcanv fpimgcanv pscanvas fpwritebmp fpreadbmp bmpcomn fpreadpnm fpwritepnm fpreadjpeg fpwritejpeg targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer extinterpolation
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-qnx)
|
||||
override TARGET_UNITS+=fpimgcmn fpimage pngcomn fpreadpng fpwritepng fpreadxpm fpwritexpm clipping fpcanvas pixtools fppixlcanv fpimgcanv pscanvas fpwritebmp fpreadbmp bmpcomn fpreadpnm fpwritepnm fpreadjpeg fpwritejpeg targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer
|
||||
override TARGET_UNITS+=fpimgcmn fpimage pngcomn fpreadpng fpwritepng fpreadxpm fpwritexpm clipping fpcanvas pixtools fppixlcanv fpimgcanv pscanvas fpwritebmp fpreadbmp bmpcomn fpreadpnm fpwritepnm fpreadjpeg fpwritejpeg targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer extinterpolation
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-netware)
|
||||
override TARGET_UNITS+=fpimgcmn fpimage pngcomn fpreadpng fpwritepng fpreadxpm fpwritexpm clipping fpcanvas pixtools fppixlcanv fpimgcanv pscanvas fpwritebmp fpreadbmp bmpcomn fpreadpnm fpwritepnm fpreadjpeg fpwritejpeg targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer
|
||||
override TARGET_UNITS+=fpimgcmn fpimage pngcomn fpreadpng fpwritepng fpreadxpm fpwritexpm clipping fpcanvas pixtools fppixlcanv fpimgcanv pscanvas fpwritebmp fpreadbmp bmpcomn fpreadpnm fpwritepnm fpreadjpeg fpwritejpeg targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer extinterpolation
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-openbsd)
|
||||
override TARGET_UNITS+=fpimgcmn fpimage pngcomn fpreadpng fpwritepng fpreadxpm fpwritexpm clipping fpcanvas pixtools fppixlcanv fpimgcanv pscanvas fpwritebmp fpreadbmp bmpcomn fpreadpnm fpwritepnm fpreadjpeg fpwritejpeg targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer
|
||||
override TARGET_UNITS+=fpimgcmn fpimage pngcomn fpreadpng fpwritepng fpreadxpm fpwritexpm clipping fpcanvas pixtools fppixlcanv fpimgcanv pscanvas fpwritebmp fpreadbmp bmpcomn fpreadpnm fpwritepnm fpreadjpeg fpwritejpeg targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer extinterpolation
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-wdosx)
|
||||
override TARGET_UNITS+=fpimgcmn fpimage pngcomn fpreadpng fpwritepng fpreadxpm fpwritexpm clipping fpcanvas pixtools fppixlcanv fpimgcanv pscanvas fpwritebmp fpreadbmp bmpcomn fpreadpnm fpwritepnm fpreadjpeg fpwritejpeg targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer
|
||||
override TARGET_UNITS+=fpimgcmn fpimage pngcomn fpreadpng fpwritepng fpreadxpm fpwritexpm clipping fpcanvas pixtools fppixlcanv fpimgcanv pscanvas fpwritebmp fpreadbmp bmpcomn fpreadpnm fpwritepnm fpreadjpeg fpwritejpeg targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer extinterpolation
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-darwin)
|
||||
override TARGET_UNITS+=fpimgcmn fpimage pngcomn fpreadpng fpwritepng fpreadxpm fpwritexpm clipping fpcanvas pixtools fppixlcanv fpimgcanv pscanvas fpwritebmp fpreadbmp bmpcomn fpreadpnm fpwritepnm fpreadjpeg fpwritejpeg targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer freetypeh freetype ftfont
|
||||
override TARGET_UNITS+=fpimgcmn fpimage pngcomn fpreadpng fpwritepng fpreadxpm fpwritexpm clipping fpcanvas pixtools fppixlcanv fpimgcanv pscanvas fpwritebmp fpreadbmp bmpcomn fpreadpnm fpwritepnm fpreadjpeg fpwritejpeg targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer extinterpolation freetypeh freetype ftfont
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-emx)
|
||||
override TARGET_UNITS+=fpimgcmn fpimage pngcomn fpreadpng fpwritepng fpreadxpm fpwritexpm clipping fpcanvas pixtools fppixlcanv fpimgcanv pscanvas fpwritebmp fpreadbmp bmpcomn fpreadpnm fpwritepnm fpreadjpeg fpwritejpeg targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer
|
||||
override TARGET_UNITS+=fpimgcmn fpimage pngcomn fpreadpng fpwritepng fpreadxpm fpwritexpm clipping fpcanvas pixtools fppixlcanv fpimgcanv pscanvas fpwritebmp fpreadbmp bmpcomn fpreadpnm fpwritepnm fpreadjpeg fpwritejpeg targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer extinterpolation
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-watcom)
|
||||
override TARGET_UNITS+=fpimgcmn fpimage pngcomn fpreadpng fpwritepng fpreadxpm fpwritexpm clipping fpcanvas pixtools fppixlcanv fpimgcanv pscanvas fpwritebmp fpreadbmp bmpcomn fpreadpnm fpwritepnm fpreadjpeg fpwritejpeg targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer
|
||||
override TARGET_UNITS+=fpimgcmn fpimage pngcomn fpreadpng fpwritepng fpreadxpm fpwritexpm clipping fpcanvas pixtools fppixlcanv fpimgcanv pscanvas fpwritebmp fpreadbmp bmpcomn fpreadpnm fpwritepnm fpreadjpeg fpwritejpeg targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer extinterpolation
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-netwlibc)
|
||||
override TARGET_UNITS+=fpimgcmn fpimage pngcomn fpreadpng fpwritepng fpreadxpm fpwritexpm clipping fpcanvas pixtools fppixlcanv fpimgcanv pscanvas fpwritebmp fpreadbmp bmpcomn fpreadpnm fpwritepnm fpreadjpeg fpwritejpeg targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer
|
||||
override TARGET_UNITS+=fpimgcmn fpimage pngcomn fpreadpng fpwritepng fpreadxpm fpwritexpm clipping fpcanvas pixtools fppixlcanv fpimgcanv pscanvas fpwritebmp fpreadbmp bmpcomn fpreadpnm fpwritepnm fpreadjpeg fpwritejpeg targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer extinterpolation
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-wince)
|
||||
override TARGET_UNITS+=fpimgcmn fpimage pngcomn fpreadpng fpwritepng fpreadxpm fpwritexpm clipping fpcanvas pixtools fppixlcanv fpimgcanv pscanvas fpwritebmp fpreadbmp bmpcomn fpreadpnm fpwritepnm fpreadjpeg fpwritejpeg targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer
|
||||
override TARGET_UNITS+=fpimgcmn fpimage pngcomn fpreadpng fpwritepng fpreadxpm fpwritexpm clipping fpcanvas pixtools fppixlcanv fpimgcanv pscanvas fpwritebmp fpreadbmp bmpcomn fpreadpnm fpwritepnm fpreadjpeg fpwritejpeg targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer extinterpolation
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),m68k-linux)
|
||||
override TARGET_UNITS+=fpimgcmn fpimage pngcomn fpreadpng fpwritepng fpreadxpm fpwritexpm clipping fpcanvas pixtools fppixlcanv fpimgcanv pscanvas fpwritebmp fpreadbmp bmpcomn fpreadpnm fpwritepnm fpreadjpeg fpwritejpeg targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer freetypeh freetype ftfont
|
||||
override TARGET_UNITS+=fpimgcmn fpimage pngcomn fpreadpng fpwritepng fpreadxpm fpwritexpm clipping fpcanvas pixtools fppixlcanv fpimgcanv pscanvas fpwritebmp fpreadbmp bmpcomn fpreadpnm fpwritepnm fpreadjpeg fpwritejpeg targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer extinterpolation freetypeh freetype ftfont
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),m68k-freebsd)
|
||||
override TARGET_UNITS+=fpimgcmn fpimage pngcomn fpreadpng fpwritepng fpreadxpm fpwritexpm clipping fpcanvas pixtools fppixlcanv fpimgcanv pscanvas fpwritebmp fpreadbmp bmpcomn fpreadpnm fpwritepnm fpreadjpeg fpwritejpeg targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer freetypeh freetype ftfont
|
||||
override TARGET_UNITS+=fpimgcmn fpimage pngcomn fpreadpng fpwritepng fpreadxpm fpwritexpm clipping fpcanvas pixtools fppixlcanv fpimgcanv pscanvas fpwritebmp fpreadbmp bmpcomn fpreadpnm fpwritepnm fpreadjpeg fpwritejpeg targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer extinterpolation freetypeh freetype ftfont
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),m68k-netbsd)
|
||||
override TARGET_UNITS+=fpimgcmn fpimage pngcomn fpreadpng fpwritepng fpreadxpm fpwritexpm clipping fpcanvas pixtools fppixlcanv fpimgcanv pscanvas fpwritebmp fpreadbmp bmpcomn fpreadpnm fpwritepnm fpreadjpeg fpwritejpeg targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer
|
||||
override TARGET_UNITS+=fpimgcmn fpimage pngcomn fpreadpng fpwritepng fpreadxpm fpwritexpm clipping fpcanvas pixtools fppixlcanv fpimgcanv pscanvas fpwritebmp fpreadbmp bmpcomn fpreadpnm fpwritepnm fpreadjpeg fpwritejpeg targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer extinterpolation
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),m68k-amiga)
|
||||
override TARGET_UNITS+=fpimgcmn fpimage pngcomn fpreadpng fpwritepng fpreadxpm fpwritexpm clipping fpcanvas pixtools fppixlcanv fpimgcanv pscanvas fpwritebmp fpreadbmp bmpcomn fpreadpnm fpwritepnm fpreadjpeg fpwritejpeg targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer
|
||||
override TARGET_UNITS+=fpimgcmn fpimage pngcomn fpreadpng fpwritepng fpreadxpm fpwritexpm clipping fpcanvas pixtools fppixlcanv fpimgcanv pscanvas fpwritebmp fpreadbmp bmpcomn fpreadpnm fpwritepnm fpreadjpeg fpwritejpeg targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer extinterpolation
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),m68k-atari)
|
||||
override TARGET_UNITS+=fpimgcmn fpimage pngcomn fpreadpng fpwritepng fpreadxpm fpwritexpm clipping fpcanvas pixtools fppixlcanv fpimgcanv pscanvas fpwritebmp fpreadbmp bmpcomn fpreadpnm fpwritepnm fpreadjpeg fpwritejpeg targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer
|
||||
override TARGET_UNITS+=fpimgcmn fpimage pngcomn fpreadpng fpwritepng fpreadxpm fpwritexpm clipping fpcanvas pixtools fppixlcanv fpimgcanv pscanvas fpwritebmp fpreadbmp bmpcomn fpreadpnm fpwritepnm fpreadjpeg fpwritejpeg targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer extinterpolation
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),m68k-openbsd)
|
||||
override TARGET_UNITS+=fpimgcmn fpimage pngcomn fpreadpng fpwritepng fpreadxpm fpwritexpm clipping fpcanvas pixtools fppixlcanv fpimgcanv pscanvas fpwritebmp fpreadbmp bmpcomn fpreadpnm fpwritepnm fpreadjpeg fpwritejpeg targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer
|
||||
override TARGET_UNITS+=fpimgcmn fpimage pngcomn fpreadpng fpwritepng fpreadxpm fpwritexpm clipping fpcanvas pixtools fppixlcanv fpimgcanv pscanvas fpwritebmp fpreadbmp bmpcomn fpreadpnm fpwritepnm fpreadjpeg fpwritejpeg targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer extinterpolation
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),m68k-palmos)
|
||||
override TARGET_UNITS+=fpimgcmn fpimage pngcomn fpreadpng fpwritepng fpreadxpm fpwritexpm clipping fpcanvas pixtools fppixlcanv fpimgcanv pscanvas fpwritebmp fpreadbmp bmpcomn fpreadpnm fpwritepnm fpreadjpeg fpwritejpeg targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer
|
||||
override TARGET_UNITS+=fpimgcmn fpimage pngcomn fpreadpng fpwritepng fpreadxpm fpwritexpm clipping fpcanvas pixtools fppixlcanv fpimgcanv pscanvas fpwritebmp fpreadbmp bmpcomn fpreadpnm fpwritepnm fpreadjpeg fpwritejpeg targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer extinterpolation
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),powerpc-linux)
|
||||
override TARGET_UNITS+=fpimgcmn fpimage pngcomn fpreadpng fpwritepng fpreadxpm fpwritexpm clipping fpcanvas pixtools fppixlcanv fpimgcanv pscanvas fpwritebmp fpreadbmp bmpcomn fpreadpnm fpwritepnm fpreadjpeg fpwritejpeg targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer freetypeh freetype ftfont
|
||||
override TARGET_UNITS+=fpimgcmn fpimage pngcomn fpreadpng fpwritepng fpreadxpm fpwritexpm clipping fpcanvas pixtools fppixlcanv fpimgcanv pscanvas fpwritebmp fpreadbmp bmpcomn fpreadpnm fpwritepnm fpreadjpeg fpwritejpeg targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer extinterpolation freetypeh freetype ftfont
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),powerpc-netbsd)
|
||||
override TARGET_UNITS+=fpimgcmn fpimage pngcomn fpreadpng fpwritepng fpreadxpm fpwritexpm clipping fpcanvas pixtools fppixlcanv fpimgcanv pscanvas fpwritebmp fpreadbmp bmpcomn fpreadpnm fpwritepnm fpreadjpeg fpwritejpeg targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer
|
||||
override TARGET_UNITS+=fpimgcmn fpimage pngcomn fpreadpng fpwritepng fpreadxpm fpwritexpm clipping fpcanvas pixtools fppixlcanv fpimgcanv pscanvas fpwritebmp fpreadbmp bmpcomn fpreadpnm fpwritepnm fpreadjpeg fpwritejpeg targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer extinterpolation
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),powerpc-amiga)
|
||||
override TARGET_UNITS+=fpimgcmn fpimage pngcomn fpreadpng fpwritepng fpreadxpm fpwritexpm clipping fpcanvas pixtools fppixlcanv fpimgcanv pscanvas fpwritebmp fpreadbmp bmpcomn fpreadpnm fpwritepnm fpreadjpeg fpwritejpeg targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer
|
||||
override TARGET_UNITS+=fpimgcmn fpimage pngcomn fpreadpng fpwritepng fpreadxpm fpwritexpm clipping fpcanvas pixtools fppixlcanv fpimgcanv pscanvas fpwritebmp fpreadbmp bmpcomn fpreadpnm fpwritepnm fpreadjpeg fpwritejpeg targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer extinterpolation
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),powerpc-macos)
|
||||
override TARGET_UNITS+=fpimgcmn fpimage pngcomn fpreadpng fpwritepng fpreadxpm fpwritexpm clipping fpcanvas pixtools fppixlcanv fpimgcanv pscanvas fpwritebmp fpreadbmp bmpcomn fpreadpnm fpwritepnm fpreadjpeg fpwritejpeg targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer
|
||||
override TARGET_UNITS+=fpimgcmn fpimage pngcomn fpreadpng fpwritepng fpreadxpm fpwritexpm clipping fpcanvas pixtools fppixlcanv fpimgcanv pscanvas fpwritebmp fpreadbmp bmpcomn fpreadpnm fpwritepnm fpreadjpeg fpwritejpeg targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer extinterpolation
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),powerpc-darwin)
|
||||
override TARGET_UNITS+=fpimgcmn fpimage pngcomn fpreadpng fpwritepng fpreadxpm fpwritexpm clipping fpcanvas pixtools fppixlcanv fpimgcanv pscanvas fpwritebmp fpreadbmp bmpcomn fpreadpnm fpwritepnm fpreadjpeg fpwritejpeg targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer freetypeh freetype ftfont
|
||||
override TARGET_UNITS+=fpimgcmn fpimage pngcomn fpreadpng fpwritepng fpreadxpm fpwritexpm clipping fpcanvas pixtools fppixlcanv fpimgcanv pscanvas fpwritebmp fpreadbmp bmpcomn fpreadpnm fpwritepnm fpreadjpeg fpwritejpeg targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer extinterpolation freetypeh freetype ftfont
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),powerpc-morphos)
|
||||
override TARGET_UNITS+=fpimgcmn fpimage pngcomn fpreadpng fpwritepng fpreadxpm fpwritexpm clipping fpcanvas pixtools fppixlcanv fpimgcanv pscanvas fpwritebmp fpreadbmp bmpcomn fpreadpnm fpwritepnm fpreadjpeg fpwritejpeg targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer
|
||||
override TARGET_UNITS+=fpimgcmn fpimage pngcomn fpreadpng fpwritepng fpreadxpm fpwritexpm clipping fpcanvas pixtools fppixlcanv fpimgcanv pscanvas fpwritebmp fpreadbmp bmpcomn fpreadpnm fpwritepnm fpreadjpeg fpwritejpeg targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer extinterpolation
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),sparc-linux)
|
||||
override TARGET_UNITS+=fpimgcmn fpimage pngcomn fpreadpng fpwritepng fpreadxpm fpwritexpm clipping fpcanvas pixtools fppixlcanv fpimgcanv pscanvas fpwritebmp fpreadbmp bmpcomn fpreadpnm fpwritepnm fpreadjpeg fpwritejpeg targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer freetypeh freetype ftfont
|
||||
override TARGET_UNITS+=fpimgcmn fpimage pngcomn fpreadpng fpwritepng fpreadxpm fpwritexpm clipping fpcanvas pixtools fppixlcanv fpimgcanv pscanvas fpwritebmp fpreadbmp bmpcomn fpreadpnm fpwritepnm fpreadjpeg fpwritejpeg targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer extinterpolation freetypeh freetype ftfont
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),sparc-netbsd)
|
||||
override TARGET_UNITS+=fpimgcmn fpimage pngcomn fpreadpng fpwritepng fpreadxpm fpwritexpm clipping fpcanvas pixtools fppixlcanv fpimgcanv pscanvas fpwritebmp fpreadbmp bmpcomn fpreadpnm fpwritepnm fpreadjpeg fpwritejpeg targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer
|
||||
override TARGET_UNITS+=fpimgcmn fpimage pngcomn fpreadpng fpwritepng fpreadxpm fpwritexpm clipping fpcanvas pixtools fppixlcanv fpimgcanv pscanvas fpwritebmp fpreadbmp bmpcomn fpreadpnm fpwritepnm fpreadjpeg fpwritejpeg targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer extinterpolation
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),sparc-solaris)
|
||||
override TARGET_UNITS+=fpimgcmn fpimage pngcomn fpreadpng fpwritepng fpreadxpm fpwritexpm clipping fpcanvas pixtools fppixlcanv fpimgcanv pscanvas fpwritebmp fpreadbmp bmpcomn fpreadpnm fpwritepnm fpreadjpeg fpwritejpeg targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer
|
||||
override TARGET_UNITS+=fpimgcmn fpimage pngcomn fpreadpng fpwritepng fpreadxpm fpwritexpm clipping fpcanvas pixtools fppixlcanv fpimgcanv pscanvas fpwritebmp fpreadbmp bmpcomn fpreadpnm fpwritepnm fpreadjpeg fpwritejpeg targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer extinterpolation
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),x86_64-linux)
|
||||
override TARGET_UNITS+=fpimgcmn fpimage pngcomn fpreadpng fpwritepng fpreadxpm fpwritexpm clipping fpcanvas pixtools fppixlcanv fpimgcanv pscanvas fpwritebmp fpreadbmp bmpcomn fpreadpnm fpwritepnm fpreadjpeg fpwritejpeg targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer freetypeh freetype ftfont
|
||||
override TARGET_UNITS+=fpimgcmn fpimage pngcomn fpreadpng fpwritepng fpreadxpm fpwritexpm clipping fpcanvas pixtools fppixlcanv fpimgcanv pscanvas fpwritebmp fpreadbmp bmpcomn fpreadpnm fpwritepnm fpreadjpeg fpwritejpeg targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer extinterpolation freetypeh freetype ftfont
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),x86_64-freebsd)
|
||||
override TARGET_UNITS+=fpimgcmn fpimage pngcomn fpreadpng fpwritepng fpreadxpm fpwritexpm clipping fpcanvas pixtools fppixlcanv fpimgcanv pscanvas fpwritebmp fpreadbmp bmpcomn fpreadpnm fpwritepnm fpreadjpeg fpwritejpeg targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer freetypeh freetype ftfont
|
||||
override TARGET_UNITS+=fpimgcmn fpimage pngcomn fpreadpng fpwritepng fpreadxpm fpwritexpm clipping fpcanvas pixtools fppixlcanv fpimgcanv pscanvas fpwritebmp fpreadbmp bmpcomn fpreadpnm fpwritepnm fpreadjpeg fpwritejpeg targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer extinterpolation freetypeh freetype ftfont
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),x86_64-win64)
|
||||
override TARGET_UNITS+=fpimgcmn fpimage pngcomn fpreadpng fpwritepng fpreadxpm fpwritexpm clipping fpcanvas pixtools fppixlcanv fpimgcanv pscanvas fpwritebmp fpreadbmp bmpcomn fpreadpnm fpwritepnm fpreadjpeg fpwritejpeg targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer
|
||||
override TARGET_UNITS+=fpimgcmn fpimage pngcomn fpreadpng fpwritepng fpreadxpm fpwritexpm clipping fpcanvas pixtools fppixlcanv fpimgcanv pscanvas fpwritebmp fpreadbmp bmpcomn fpreadpnm fpwritepnm fpreadjpeg fpwritejpeg targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer extinterpolation
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),arm-linux)
|
||||
override TARGET_UNITS+=fpimgcmn fpimage pngcomn fpreadpng fpwritepng fpreadxpm fpwritexpm clipping fpcanvas pixtools fppixlcanv fpimgcanv pscanvas fpwritebmp fpreadbmp bmpcomn fpreadpnm fpwritepnm fpreadjpeg fpwritejpeg targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer freetypeh freetype ftfont
|
||||
override TARGET_UNITS+=fpimgcmn fpimage pngcomn fpreadpng fpwritepng fpreadxpm fpwritexpm clipping fpcanvas pixtools fppixlcanv fpimgcanv pscanvas fpwritebmp fpreadbmp bmpcomn fpreadpnm fpwritepnm fpreadjpeg fpwritejpeg targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer extinterpolation freetypeh freetype ftfont
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),arm-palmos)
|
||||
override TARGET_UNITS+=fpimgcmn fpimage pngcomn fpreadpng fpwritepng fpreadxpm fpwritexpm clipping fpcanvas pixtools fppixlcanv fpimgcanv pscanvas fpwritebmp fpreadbmp bmpcomn fpreadpnm fpwritepnm fpreadjpeg fpwritejpeg targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer
|
||||
override TARGET_UNITS+=fpimgcmn fpimage pngcomn fpreadpng fpwritepng fpreadxpm fpwritexpm clipping fpcanvas pixtools fppixlcanv fpimgcanv pscanvas fpwritebmp fpreadbmp bmpcomn fpreadpnm fpwritepnm fpreadjpeg fpwritejpeg targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer extinterpolation
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),arm-wince)
|
||||
override TARGET_UNITS+=fpimgcmn fpimage pngcomn fpreadpng fpwritepng fpreadxpm fpwritexpm clipping fpcanvas pixtools fppixlcanv fpimgcanv pscanvas fpwritebmp fpreadbmp bmpcomn fpreadpnm fpwritepnm fpreadjpeg fpwritejpeg targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer
|
||||
override TARGET_UNITS+=fpimgcmn fpimage pngcomn fpreadpng fpwritepng fpreadxpm fpwritexpm clipping fpcanvas pixtools fppixlcanv fpimgcanv pscanvas fpwritebmp fpreadbmp bmpcomn fpreadpnm fpwritepnm fpreadjpeg fpwritejpeg targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer extinterpolation
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),arm-gba)
|
||||
override TARGET_UNITS+=fpimgcmn fpimage pngcomn fpreadpng fpwritepng fpreadxpm fpwritexpm clipping fpcanvas pixtools fppixlcanv fpimgcanv pscanvas fpwritebmp fpreadbmp bmpcomn fpreadpnm fpwritepnm fpreadjpeg fpwritejpeg targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer
|
||||
override TARGET_UNITS+=fpimgcmn fpimage pngcomn fpreadpng fpwritepng fpreadxpm fpwritexpm clipping fpcanvas pixtools fppixlcanv fpimgcanv pscanvas fpwritebmp fpreadbmp bmpcomn fpreadpnm fpwritepnm fpreadjpeg fpwritejpeg targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer extinterpolation
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),powerpc64-linux)
|
||||
override TARGET_UNITS+=fpimgcmn fpimage pngcomn fpreadpng fpwritepng fpreadxpm fpwritexpm clipping fpcanvas pixtools fppixlcanv fpimgcanv pscanvas fpwritebmp fpreadbmp bmpcomn fpreadpnm fpwritepnm fpreadjpeg fpwritejpeg targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer freetypeh freetype ftfont
|
||||
override TARGET_UNITS+=fpimgcmn fpimage pngcomn fpreadpng fpwritepng fpreadxpm fpwritexpm clipping fpcanvas pixtools fppixlcanv fpimgcanv pscanvas fpwritebmp fpreadbmp bmpcomn fpreadpnm fpwritepnm fpreadjpeg fpwritejpeg targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer extinterpolation freetypeh freetype ftfont
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),i386-linux)
|
||||
override TARGET_RSTS+=pscanvas
|
||||
|
@ -12,7 +12,8 @@ packages=paszlib pasjpeg hash
|
||||
units=fpimgcmn fpimage pngcomn fpreadpng fpwritepng fpreadxpm fpwritexpm \
|
||||
clipping fpcanvas pixtools fppixlcanv fpimgcanv pscanvas fpwritebmp \
|
||||
fpreadbmp bmpcomn fpreadpnm fpwritepnm fpreadjpeg fpwritejpeg \
|
||||
targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer
|
||||
targacmn fpreadtga fpwritetga ellipses fpcolhash fpditherer fpquantizer \
|
||||
extinterpolation
|
||||
units_win32=freetypeh freetype ftfont
|
||||
units_linux=freetypeh freetype ftfont
|
||||
units_freebsd=freetypeh freetype ftfont
|
||||
|
519
fcl/image/extinterpolation.pp
Normal file
519
fcl/image/extinterpolation.pp
Normal file
@ -0,0 +1,519 @@
|
||||
unit extinterpolation;
|
||||
|
||||
{
|
||||
Some more interpolation filters for TFPCanvas.StretchDraw:
|
||||
Bessel, Gaussian and Sinc are infinite impulse response (IIR),
|
||||
the other are finite impulse response (FIR). The implementation
|
||||
of Bessel and Sinc are windowed with Blackman filter.
|
||||
}
|
||||
|
||||
{$mode objfpc}{$H+}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils, FPImage, FPCanvas;
|
||||
|
||||
type
|
||||
|
||||
{ TBlackmanInterpolation }
|
||||
|
||||
TBlackmanInterpolation = class (TFPBaseInterpolation)
|
||||
protected
|
||||
function Filter (x : double) : double; override;
|
||||
function MaxSupport : double; override;
|
||||
end;
|
||||
|
||||
{ TBlackmanSincInterpolation }
|
||||
|
||||
TBlackmanSincInterpolation = class (TFPBaseInterpolation)
|
||||
protected
|
||||
function Filter (x : double) : double; override;
|
||||
function MaxSupport : double; override;
|
||||
end;
|
||||
|
||||
{ TBlackmanBesselInterpolation }
|
||||
|
||||
TBlackmanBesselInterpolation = class (TFPBaseInterpolation)
|
||||
protected
|
||||
function Filter (x : double) : double; override;
|
||||
function MaxSupport : double; override;
|
||||
end;
|
||||
|
||||
{ TGaussianInterpolation }
|
||||
|
||||
TGaussianInterpolation = class (TFPBaseInterpolation)
|
||||
protected
|
||||
function Filter (x : double) : double; override;
|
||||
function MaxSupport : double; override;
|
||||
end;
|
||||
|
||||
{ TBoxInterpolation }
|
||||
|
||||
TBoxInterpolation = class (TFPBaseInterpolation)
|
||||
protected
|
||||
function Filter (x : double) : double; override;
|
||||
function MaxSupport : double; override;
|
||||
end;
|
||||
|
||||
{ THermiteInterpolation }
|
||||
|
||||
THermiteInterpolation = class (TFPBaseInterpolation)
|
||||
protected
|
||||
function Filter (x : double) : double; override;
|
||||
function MaxSupport : double; override;
|
||||
end;
|
||||
|
||||
{ TLanczosInterpolation }
|
||||
|
||||
TLanczosInterpolation = class (TFPBaseInterpolation)
|
||||
protected
|
||||
function Filter (x : double) : double; override;
|
||||
function MaxSupport : double; override;
|
||||
end;
|
||||
|
||||
{ TQuadraticInterpolation }
|
||||
|
||||
TQuadraticInterpolation = class (TFPBaseInterpolation)
|
||||
protected
|
||||
function Filter (x : double) : double; override;
|
||||
function MaxSupport : double; override;
|
||||
end;
|
||||
|
||||
{ TCubicInterpolation }
|
||||
|
||||
TCubicInterpolation = class (TFPBaseInterpolation)
|
||||
protected
|
||||
function Filter (x : double) : double; override;
|
||||
function MaxSupport : double; override;
|
||||
end;
|
||||
|
||||
{ TCatromInterpolation }
|
||||
|
||||
TCatromInterpolation = class (TFPBaseInterpolation)
|
||||
protected
|
||||
function Filter (x : double) : double; override;
|
||||
function MaxSupport : double; override;
|
||||
end;
|
||||
|
||||
{ TBilineairInterpolation }
|
||||
|
||||
TBilineairInterpolation = class (TFPBaseInterpolation)
|
||||
protected
|
||||
function Filter (x : double) : double; override;
|
||||
function MaxSupport : double; override;
|
||||
end;
|
||||
|
||||
{ THanningInterpolation }
|
||||
|
||||
THanningInterpolation = class (TFPBaseInterpolation)
|
||||
protected
|
||||
function Filter (x : double) : double; override;
|
||||
function MaxSupport : double; override;
|
||||
end;
|
||||
|
||||
{ THammingInterpolation }
|
||||
|
||||
THammingInterpolation = class (TFPBaseInterpolation)
|
||||
protected
|
||||
function Filter (x : double) : double; override;
|
||||
function MaxSupport : double; override;
|
||||
end;
|
||||
|
||||
implementation
|
||||
|
||||
|
||||
// BesselOrderOne: computes Bessel function of x in the first kind of order 0
|
||||
|
||||
function J1 (x : double) : double;
|
||||
const Pone : array[0..8] of double =
|
||||
( 0.581199354001606143928050809e+21,
|
||||
-0.6672106568924916298020941484e+20,
|
||||
0.2316433580634002297931815435e+19,
|
||||
-0.3588817569910106050743641413e+17,
|
||||
0.2908795263834775409737601689e+15,
|
||||
-0.1322983480332126453125473247e+13,
|
||||
0.3413234182301700539091292655e+10,
|
||||
-0.4695753530642995859767162166e+7,
|
||||
0.270112271089232341485679099e+4
|
||||
);
|
||||
Qone : array [0..8] of double =
|
||||
( 0.11623987080032122878585294e+22,
|
||||
0.1185770712190320999837113348e+20,
|
||||
0.6092061398917521746105196863e+17,
|
||||
0.2081661221307607351240184229e+15,
|
||||
0.5243710262167649715406728642e+12,
|
||||
0.1013863514358673989967045588e+10,
|
||||
0.1501793594998585505921097578e+7,
|
||||
0.1606931573481487801970916749e+4,
|
||||
0.1e+1
|
||||
);
|
||||
var p,q : double;
|
||||
r : 0..8;
|
||||
begin
|
||||
p := Pone[8];
|
||||
q := Qone[8];
|
||||
for r := 7 downto 0 do
|
||||
begin
|
||||
p := p*x*x+pOne[r];
|
||||
q := q*X*X+Qone[r];
|
||||
end;
|
||||
result := p / q;
|
||||
end;
|
||||
|
||||
function P1 (x : double) : double;
|
||||
const Pone : array[0..5] of double =
|
||||
( 0.352246649133679798341724373e+5,
|
||||
0.62758845247161281269005675e+5,
|
||||
0.313539631109159574238669888e+5,
|
||||
0.49854832060594338434500455e+4,
|
||||
0.2111529182853962382105718e+3,
|
||||
0.12571716929145341558495e+1
|
||||
);
|
||||
Qone : array [0..5] of double =
|
||||
( 0.352246649133679798068390431e+5,
|
||||
0.626943469593560511888833731e+5,
|
||||
0.312404063819041039923015703e+5,
|
||||
0.4930396490181088979386097e+4,
|
||||
0.2030775189134759322293574e+3,
|
||||
0.1e+1
|
||||
);
|
||||
var x8,p,q : double;
|
||||
r : 0..5;
|
||||
begin
|
||||
p := Pone[5];
|
||||
q := Qone[5];
|
||||
x8 := 8.0 / x;
|
||||
for r := 4 downto 0 do
|
||||
begin
|
||||
p := p*x8*x8+pOne[r];
|
||||
q := q*x8*x8+Qone[r];
|
||||
end;
|
||||
result := p / q;
|
||||
end;
|
||||
|
||||
function Q1 (x : double) : double;
|
||||
const Pone : array[0..5] of double =
|
||||
( 0.3511751914303552822533318e+3,
|
||||
0.7210391804904475039280863e+3,
|
||||
0.4259873011654442389886993e+3,
|
||||
0.831898957673850827325226e+2,
|
||||
0.45681716295512267064405e+1,
|
||||
0.3532840052740123642735e-1
|
||||
);
|
||||
Qone : array [0..5] of double =
|
||||
( 0.74917374171809127714519505e+4,
|
||||
0.154141773392650970499848051e+5,
|
||||
0.91522317015169922705904727e+4,
|
||||
0.18111867005523513506724158e+4,
|
||||
0.1038187585462133728776636e+3,
|
||||
0.1e+1
|
||||
);
|
||||
var x8,p,q : double;
|
||||
r : 0..5;
|
||||
begin
|
||||
p := Pone[5];
|
||||
q := Qone[5];
|
||||
x8 := 8.0 / x;
|
||||
for r := 4 downto 0 do
|
||||
begin
|
||||
p := p*x8*x8+pOne[r];
|
||||
q := q*x8*x8+Qone[r];
|
||||
end;
|
||||
result := p / q;
|
||||
end;
|
||||
|
||||
function BesselOrderOne (x : double) : double;
|
||||
var p,q, OneOverSqrt2,sinx,cosx : double;
|
||||
begin
|
||||
if x = 0.0 then
|
||||
result := 0.0
|
||||
else
|
||||
begin
|
||||
p := x;
|
||||
if x < 0.0 then
|
||||
x := -x;
|
||||
if x < 8.0 then
|
||||
result := p * J1(x)
|
||||
else
|
||||
begin
|
||||
OneOverSqrt2 := 1.0 / sqrt(2.0);
|
||||
sinx := sin(x);
|
||||
cosx := cos(x);
|
||||
result := sqrt(2.0/(PI*x)) *
|
||||
( P1(x)*(OneOverSqrt2*(sinx-cosx))
|
||||
- 8.0/x*Q1(x)*(-OneOverSqrt2*(sinx+cosx))
|
||||
);
|
||||
if p < 0.0 then
|
||||
result := -result;
|
||||
end
|
||||
end;
|
||||
end;
|
||||
|
||||
// Functions to aid calculations
|
||||
|
||||
function Bessel (x : double) : double;
|
||||
begin
|
||||
if x = 0.0 then
|
||||
result := PI / 4.0
|
||||
else
|
||||
result := BesselOrderOne(PI * x) / (2.0 * x);
|
||||
end;
|
||||
|
||||
function Sinc (x : double) : double;
|
||||
var xx : double;
|
||||
begin
|
||||
if x = 0.0 then
|
||||
result := 1.0
|
||||
else
|
||||
begin
|
||||
xx := PI*x;
|
||||
result := sin(xx) / (xx);
|
||||
end;
|
||||
end;
|
||||
|
||||
function Blackman (x : double) : double;
|
||||
var xpi : double;
|
||||
begin
|
||||
xpi := PI * x;
|
||||
result := 0.42 + 0.5 * cos(xpi) + 0.08 * cos(2*xpi);
|
||||
end;
|
||||
|
||||
{ THermiteInterpolation }
|
||||
|
||||
function THermiteInterpolation.Filter(x: double): double;
|
||||
begin
|
||||
if x < -1.0 then
|
||||
result := 0.0
|
||||
else if x < 0.0 then
|
||||
result := (2.0*(-x)-3.0)*(-x)*(-x)+1.0
|
||||
else if x < 1.0 then
|
||||
result := (2.0*x-3.0)*x*x+1.0
|
||||
else
|
||||
result := 0;
|
||||
end;
|
||||
|
||||
function THermiteInterpolation.MaxSupport: double;
|
||||
begin
|
||||
result := 1.0;
|
||||
end;
|
||||
|
||||
{ TLanczosInterpolation }
|
||||
|
||||
function TLanczosInterpolation.Filter(x: double): double;
|
||||
begin
|
||||
if x < -3.0 then
|
||||
result := 0.0
|
||||
else if x < 0.0 then
|
||||
result := sinc(-x)*sinc(-x/3.0)
|
||||
else if x < 3.0 then
|
||||
result := sinc(x)*sinc(x/3.0)
|
||||
else
|
||||
result := 0.0;
|
||||
end;
|
||||
|
||||
function TLanczosInterpolation.MaxSupport: double;
|
||||
begin
|
||||
result := 3.0;
|
||||
end;
|
||||
|
||||
{ TQuadraticInterpolation }
|
||||
|
||||
function TQuadraticInterpolation.Filter(x: double): double;
|
||||
begin
|
||||
if x < -1.5 then
|
||||
result := 0.0
|
||||
else if x < -0.5 then
|
||||
begin
|
||||
x := x + 1.5;
|
||||
result := 0.5*x*x;
|
||||
end
|
||||
else if x < 0.5 then
|
||||
result := 0.75 - x*x
|
||||
else if x < 1.5 then
|
||||
begin
|
||||
x := x - 1.5;
|
||||
result := 0.5*x*x;
|
||||
end
|
||||
else
|
||||
result := 0.0;
|
||||
end;
|
||||
|
||||
function TQuadraticInterpolation.MaxSupport: double;
|
||||
begin
|
||||
result := 1.5;
|
||||
end;
|
||||
|
||||
{ TCubicInterpolation }
|
||||
|
||||
function TCubicInterpolation.Filter(x: double): double;
|
||||
begin
|
||||
if x < -2.0 then
|
||||
result := 0.0
|
||||
else if x < -1.0 then
|
||||
begin
|
||||
x := x +2.0;
|
||||
result := x*x*x / 6.0;
|
||||
end
|
||||
else if x < 0.0 then
|
||||
result := (4.0+x*x*(-6.0-3.0*x)) / 6.0
|
||||
else if x < 1.0 then
|
||||
result := (4.0+x*x*(-6.0+3.0*x)) / 6.0
|
||||
else if x < 2.0 then
|
||||
begin
|
||||
x := 2.0 - x;
|
||||
result := x*x*x / 6.0;
|
||||
end
|
||||
else
|
||||
result := 0.0;
|
||||
end;
|
||||
|
||||
function TCubicInterpolation.MaxSupport: double;
|
||||
begin
|
||||
result := 2.0;
|
||||
end;
|
||||
|
||||
{ TCatromInterpolation }
|
||||
|
||||
function TCatromInterpolation.Filter(x: double): double;
|
||||
begin
|
||||
if x < -2.0 then
|
||||
result := 0.0
|
||||
else if x < -1.0 then
|
||||
result := 0.5*(4.0+x*(8.0+x*(5.0+x)))
|
||||
else if x < 0.0 then
|
||||
result := 0.5*(2.0+x*x*(-5.0-3.0*x))
|
||||
else if x < 1.0 then
|
||||
result := 0.5*(2.0+x*x*(-5.0+3.0*x))
|
||||
else if x < 2.0 then
|
||||
result := 0.5*(4.0+x*(-8.0+x*(5.0-x)))
|
||||
else
|
||||
result := 0.0;
|
||||
end;
|
||||
|
||||
function TCatromInterpolation.MaxSupport: double;
|
||||
begin
|
||||
result := 2.0;
|
||||
end;
|
||||
|
||||
{ THanningInterpolation }
|
||||
|
||||
function THanningInterpolation.Filter(x: double): double;
|
||||
begin
|
||||
if x < -1.0 then
|
||||
result := 0.0
|
||||
else if x <= 1.0 then
|
||||
result := 0.5+0.5*cos(PI*x)
|
||||
else
|
||||
result := 0.0;
|
||||
end;
|
||||
|
||||
function THanningInterpolation.MaxSupport: double;
|
||||
begin
|
||||
result := 1.0;
|
||||
end;
|
||||
|
||||
{ THammingInterpolation }
|
||||
|
||||
function THammingInterpolation.Filter(x: double): double;
|
||||
begin
|
||||
if x < -1.0 then
|
||||
result := 0.0
|
||||
else if x <= 1.0 then
|
||||
result := 0.54+0.46*cos(PI*x)
|
||||
else
|
||||
result := 0.0;
|
||||
end;
|
||||
|
||||
function THammingInterpolation.MaxSupport: double;
|
||||
begin
|
||||
result := 1.0;
|
||||
end;
|
||||
|
||||
{ TBilineairInterpolation }
|
||||
|
||||
function TBilineairInterpolation.Filter(x: double): double;
|
||||
begin
|
||||
if x < -1.0 then
|
||||
result := 0.0
|
||||
else if x < 0.0 then
|
||||
result := 1 + x
|
||||
else if x < 1.0 then
|
||||
result := 1 - x
|
||||
else
|
||||
result := 0.0;
|
||||
end;
|
||||
|
||||
function TBilineairInterpolation.MaxSupport: double;
|
||||
begin
|
||||
result := 1.0;
|
||||
end;
|
||||
|
||||
{ TBoxInterpolation }
|
||||
|
||||
function TBoxInterpolation.Filter(x: double): double;
|
||||
begin
|
||||
if x < -0.5 then
|
||||
result := 0.0
|
||||
else if x < 0.5 then
|
||||
result := 1.0
|
||||
else
|
||||
result := 0.0;
|
||||
end;
|
||||
|
||||
function TBoxInterpolation.MaxSupport: double;
|
||||
begin
|
||||
result := 0.5;
|
||||
end;
|
||||
|
||||
{ TGaussianInterpolation }
|
||||
|
||||
function TGaussianInterpolation.Filter(x: double): double;
|
||||
begin
|
||||
result := exp(-2.0*x*x) * sqrt(2.0/PI);
|
||||
end;
|
||||
|
||||
function TGaussianInterpolation.MaxSupport: double;
|
||||
begin
|
||||
result := 1.25;
|
||||
end;
|
||||
|
||||
{ TBlackmanBesselInterpolation }
|
||||
|
||||
function TBlackmanBesselInterpolation.Filter(x: double): double;
|
||||
begin
|
||||
result := Blackman(x/MaxSupport) * Bessel (x);
|
||||
end;
|
||||
|
||||
function TBlackmanBesselInterpolation.MaxSupport: double;
|
||||
begin
|
||||
Result := 3.2383;
|
||||
end;
|
||||
|
||||
{ TBlackmanSincInterpolation }
|
||||
|
||||
function TBlackmanSincInterpolation.Filter(x: double): double;
|
||||
begin
|
||||
Result := Blackman(x/MaxSupport) * Sinc(x);
|
||||
end;
|
||||
|
||||
function TBlackmanSincInterpolation.MaxSupport: double;
|
||||
begin
|
||||
Result := 4.0;
|
||||
end;
|
||||
|
||||
{ TBlackmanInterpolation }
|
||||
|
||||
function TBlackmanInterpolation.Filter(x: double): double;
|
||||
begin
|
||||
Result := Blackman (x);
|
||||
end;
|
||||
|
||||
function TBlackmanInterpolation.MaxSupport: double;
|
||||
begin
|
||||
Result := 1.0;
|
||||
end;
|
||||
|
||||
end.
|
||||
|
||||
|
@ -605,3 +605,26 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TFPCustomCanvas.StretchDraw(x, y, w, h: integer; source: TFPCustomImage);
|
||||
var i : TFPCustomInterpolation;
|
||||
FreeInterpolation : boolean;
|
||||
IP : TFPCustomInterpolation;
|
||||
begin
|
||||
FreeInterpolation := not assigned (FInterpolation);
|
||||
if FreeInterpolation then
|
||||
IP := TMitchelInterpolation.Create
|
||||
else
|
||||
IP := FInterpolation;
|
||||
try
|
||||
with IP do
|
||||
begin
|
||||
Initialize (source, self);
|
||||
Execute (x,y,w,h);
|
||||
end;
|
||||
finally
|
||||
if FreeInterpolation then
|
||||
IP.Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
|
@ -153,6 +153,43 @@ type
|
||||
end;
|
||||
TFPCustomBrushClass = class of TFPCustomBrush;
|
||||
|
||||
{ TFPCustomInterpolation }
|
||||
|
||||
TFPCustomInterpolation = class
|
||||
private
|
||||
fcanvas: TFPCustomCanvas;
|
||||
fimage: TFPCustomImage;
|
||||
protected
|
||||
procedure Initialize (aimage:TFPCustomImage; acanvas:TFPCustomCanvas); virtual;
|
||||
procedure Execute (x,y,w,h:integer); virtual; abstract;
|
||||
public
|
||||
property Canvas : TFPCustomCanvas read fcanvas;
|
||||
property Image : TFPCustomImage read fimage;
|
||||
end;
|
||||
|
||||
{ TFPBaseInterpolation }
|
||||
|
||||
TFPBaseInterpolation = class (TFPCustomInterpolation)
|
||||
private
|
||||
xfactor, yfactor : double;
|
||||
xsupport,ysupport : double;
|
||||
tempimage : TFPCustomImage;
|
||||
procedure Horizontal (width : integer);
|
||||
procedure vertical (dx,dy,width,height: integer);
|
||||
protected
|
||||
procedure Execute (x,y,w,h:integer); override;
|
||||
function Filter (x : double) : double; virtual; abstract;
|
||||
function MaxSupport : double; virtual; abstract;
|
||||
end;
|
||||
|
||||
{ TMitchelInterpolation }
|
||||
|
||||
TMitchelInterpolation = class (TFPBaseInterpolation)
|
||||
protected
|
||||
function Filter (x : double) : double; override;
|
||||
function MaxSupport : double; override;
|
||||
end;
|
||||
|
||||
{ TFPCustomCanvas }
|
||||
|
||||
TFPCustomCanvas = class(TPersistent)
|
||||
@ -170,6 +207,7 @@ type
|
||||
FClipRect : TRect;
|
||||
FHelpers : TList;
|
||||
FLocks : integer;
|
||||
FInterpolation : TFPCustomInterpolation;
|
||||
function AllowFont (AFont : TFPCustomFont) : boolean;
|
||||
function AllowBrush (ABrush : TFPCustomBrush) : boolean;
|
||||
function AllowPen (APen : TFPCustomPen) : boolean;
|
||||
@ -219,8 +257,6 @@ type
|
||||
procedure DoMoveTo (x,y:integer); virtual;
|
||||
procedure DoLineTo (x,y:integer); virtual;
|
||||
procedure DoLine (x1,y1,x2,y2:integer); virtual; abstract;
|
||||
procedure DoCopyRect (x,y:integer; canvas:TFPCustomCanvas; Const SourceRect:TRect); virtual; abstract;
|
||||
procedure DoDraw (x,y:integer; Const image:TFPCustomImage); virtual; abstract;
|
||||
procedure CheckHelper (AHelper:TFPCanvasHelper); virtual;
|
||||
procedure AddHelper (AHelper:TFPCanvasHelper);
|
||||
public
|
||||
@ -259,11 +295,13 @@ type
|
||||
// other procedures
|
||||
procedure CopyRect (x,y:integer; canvas:TFPCustomCanvas; SourceRect:TRect);
|
||||
procedure Draw (x,y:integer; image:TFPCustomImage);
|
||||
procedure StretchDraw (x,y,w,h:integer; source:TFPCustomImage);
|
||||
procedure Erase;virtual;
|
||||
// properties
|
||||
property Font : TFPCustomFont read GetFont write SetFont;
|
||||
property Pen : TFPCustomPen read GetPen write SetPen;
|
||||
property Brush : TFPCustomBrush read GetBrush write SetBrush;
|
||||
property Interpolation : TFPCustomInterpolation read FInterpolation write FInterpolation;
|
||||
property Colors [x,y:integer] : TFPColor read GetColor write SetColor;
|
||||
property ClipRect : TRect read GetClipRect write SetClipRect;
|
||||
property Clipping : boolean read FClipping write FClipping;
|
||||
@ -375,6 +413,7 @@ end;
|
||||
{$i FPFont.inc}
|
||||
{$i FPPen.inc}
|
||||
{$i FPBrush.inc}
|
||||
{$i fpinterpolation.inc}
|
||||
{$i FPCanvas.inc}
|
||||
{$i FPCDrawH.inc}
|
||||
|
||||
|
216
fcl/image/fpinterpolation.inc
Normal file
216
fcl/image/fpinterpolation.inc
Normal file
@ -0,0 +1,216 @@
|
||||
{ TFPCustomInterpolation }
|
||||
|
||||
procedure TFPCustomInterpolation.Initialize(aimage: TFPCustomImage; acanvas: TFPCustomCanvas);
|
||||
begin
|
||||
fimage := aimage;
|
||||
fcanvas := acanvas;
|
||||
end;
|
||||
|
||||
{ TFPBaseInterpolation }
|
||||
|
||||
type
|
||||
|
||||
TInterpolationContribution = record
|
||||
weight : double;
|
||||
place : integer;
|
||||
end;
|
||||
|
||||
function ColorRound (c : double) : word;
|
||||
begin
|
||||
if c > $FFFF then
|
||||
result := $FFFF
|
||||
else if c < 0.0 then
|
||||
result := 0
|
||||
else
|
||||
result := round(c);
|
||||
end;
|
||||
|
||||
procedure TFPBaseInterpolation.Horizontal (width : integer);
|
||||
var x,y,r : integer;
|
||||
start, stop, maxcontribs : integer;
|
||||
center, re,gr,bl, density : double;
|
||||
contributions : array[0..10] of TInterpolationContribution;
|
||||
dif, w, gamma, a : double;
|
||||
c : TFPColor;
|
||||
begin
|
||||
for x := 0 to width-1 do
|
||||
begin
|
||||
center := x * xfactor;
|
||||
start := round (center-xsupport);
|
||||
if start < 0 then
|
||||
start := 0;
|
||||
stop := round(center+xsupport);
|
||||
if stop >= image.Width then
|
||||
stop := image.Width-1;
|
||||
density := 0.0;
|
||||
maxcontribs := -1;
|
||||
for r := start to stop do
|
||||
begin
|
||||
dif := r - center;
|
||||
w := Filter (dif);
|
||||
if w > 0.0 then
|
||||
begin
|
||||
inc (maxcontribs);
|
||||
with contributions[maxcontribs] do
|
||||
begin
|
||||
weight := w;
|
||||
density := density + w;
|
||||
place := r;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
if (density <> 0.0) and (density <> 1.0) then
|
||||
begin
|
||||
density := 1.0 / density;
|
||||
for r := 0 to maxcontribs do
|
||||
contributions[r].weight := contributions[r].weight * density;
|
||||
end;
|
||||
for y := 0 to image.height-1 do
|
||||
begin
|
||||
gamma := 0.0;
|
||||
re := 0.0;
|
||||
gr := 0.0;
|
||||
bl := 0.0;
|
||||
for r := 0 to maxcontribs do
|
||||
with contributions[r] do
|
||||
with image.colors[place,y] do
|
||||
begin
|
||||
a := weight * alpha / $FFFF;
|
||||
re := re + a * image.colors[place,y].red;
|
||||
gr := gr + a * image.colors[place,y].green;
|
||||
bl := bl + a * image.colors[place,y].blue;
|
||||
gamma := gamma + a;
|
||||
end;
|
||||
with c do
|
||||
begin
|
||||
red := ColorRound (re);
|
||||
green := ColorRound (gr);
|
||||
blue := ColorRound (bl);
|
||||
alpha := ColorRound (gamma * $FFFF) ;
|
||||
end;
|
||||
tempimage.colors[x,y] := c;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TFPBaseInterpolation.vertical(dx,dy,width,height: integer);
|
||||
var x,y,r : integer;
|
||||
start, stop, maxcontribs : integer;
|
||||
center, re,gr,bl, density : double;
|
||||
contributions : array[0..10] of TInterpolationContribution;
|
||||
dif, w, gamma, a : double;
|
||||
c : TFPColor;
|
||||
begin
|
||||
for y := 0 to height-1 do
|
||||
begin
|
||||
center := y * yfactor;
|
||||
start := round (center-ysupport);
|
||||
if start < 0 then
|
||||
start := 0;
|
||||
stop := round(center+ysupport);
|
||||
if stop >= tempimage.height then
|
||||
stop := tempimage.height-1;
|
||||
density := 0.0;
|
||||
maxcontribs := -1;
|
||||
for r := start to stop do
|
||||
begin
|
||||
dif := r - center;
|
||||
w := Filter (dif);
|
||||
if w > 0.0 then
|
||||
begin
|
||||
inc (maxcontribs);
|
||||
with contributions[maxcontribs] do
|
||||
begin
|
||||
weight := w;
|
||||
density := density + w;
|
||||
place := r;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
if (density <> 0.0) and (density <> 1.0) then
|
||||
begin
|
||||
density := 1.0 / density;
|
||||
for r := 0 to maxcontribs do
|
||||
contributions[r].weight := contributions[r].weight * density;
|
||||
end;
|
||||
for x := 0 to width-1 do
|
||||
begin
|
||||
gamma := 0.0;
|
||||
re := 0.0;
|
||||
gr := 0.0;
|
||||
bl := 0.0;
|
||||
for r := 0 to maxcontribs do
|
||||
with contributions[r] do
|
||||
with tempimage.colors[x,place] do
|
||||
begin
|
||||
a := weight * alpha / $FFFF;
|
||||
re := re + a * red;
|
||||
gr := gr + a * green;
|
||||
bl := bl + a * blue;
|
||||
gamma := gamma + a;
|
||||
end;
|
||||
with c do
|
||||
begin
|
||||
red := ColorRound (re);
|
||||
green := ColorRound (gr);
|
||||
blue := ColorRound (bl);
|
||||
alpha := ColorRound (gamma * $FFFF);
|
||||
end;
|
||||
canvas.colors[x+dx,y+dy] := c;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TFPBaseInterpolation.Execute(x, y, w, h: integer);
|
||||
var maxy : integer;
|
||||
rx,ry : integer;
|
||||
begin
|
||||
tempimage := TFPMemoryImage.Create (w,image.height);
|
||||
tempimage.UsePalette := false;
|
||||
xfactor := image.Width / w;
|
||||
yfactor := image.Height / h;
|
||||
if xfactor > 1.0 then
|
||||
xsupport := MaxSupport
|
||||
else
|
||||
xsupport := xfactor * MaxSupport;
|
||||
if yfactor > 1.0 then
|
||||
ysupport := MaxSupport
|
||||
else
|
||||
ysupport := yfactor * MaxSupport;
|
||||
Horizontal (w);
|
||||
Vertical (x,y,w,h);
|
||||
end;
|
||||
|
||||
{ TMitchelInterpolation }
|
||||
|
||||
function TMitchelInterpolation.Filter(x: double): double;
|
||||
const
|
||||
B = (1.0/3.0);
|
||||
C = (1.0/3.0);
|
||||
P0 = (( 6.0- 2.0*B )/6.0);
|
||||
P2 = ((-18.0+12.0*B+ 6.0*C)/6.0);
|
||||
P3 = (( 12.0- 9.0*B- 6.0*C)/6.0);
|
||||
Q0 = (( 8.0*B+24.0*C)/6.0);
|
||||
Q1 = (( -12.0*B-48.0*C)/6.0);
|
||||
Q2 = (( 6.0*B+30.0*C)/6.0);
|
||||
Q3 = (( - 1.0*B- 6.0*C)/6.0);
|
||||
begin
|
||||
if (x < -2.0) then
|
||||
result := 0.0
|
||||
else if (x < -1.0) then
|
||||
result := Q0-x*(Q1-x*(Q2-x*Q3))
|
||||
else if (x < 0.0) then
|
||||
result := P0+x*x*(P2-x*P3)
|
||||
else if (x < 1.0) then
|
||||
result := P0+x*x*(P2+x*P3)
|
||||
else if (x < 2.0) then
|
||||
result := Q0+x*(Q1+x*(Q2+x*Q3))
|
||||
else
|
||||
result := 0.0;
|
||||
end;
|
||||
|
||||
function TMitchelInterpolation.MaxSupport: double;
|
||||
begin
|
||||
result := 2.0;
|
||||
end;
|
||||
|
Loading…
Reference in New Issue
Block a user