diff options
-rw-r--r-- | .gitignore | 3 | ||||
-rw-r--r-- | SConstruct | 25 | ||||
-rw-r--r-- | core/hq2x.cpp | 2636 | ||||
-rw-r--r-- | core/hq2x.h | 19 | ||||
-rw-r--r-- | core/image.cpp | 40 | ||||
-rw-r--r-- | core/image.h | 1 | ||||
-rw-r--r-- | core/os/input.cpp | 1 | ||||
-rw-r--r-- | core/os/input.h | 1 | ||||
-rw-r--r-- | doc/base/classes.xml | 64 | ||||
-rw-r--r-- | drivers/SCsub | 2 | ||||
-rw-r--r-- | drivers/freetype/FTL.TXT | 169 | ||||
-rw-r--r-- | drivers/freetype/LICENSE.TXT | 39 | ||||
-rw-r--r-- | drivers/freetype/SCsub (renamed from tools/freetype/SCsub) | 2 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/config/ftconfig.h (renamed from tools/freetype/freetype/include/freetype/config/ftconfig.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/config/ftheader.h (renamed from tools/freetype/freetype/include/freetype/config/ftheader.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/config/ftmodule.h (renamed from tools/freetype/freetype/include/freetype/config/ftmodule.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/config/ftoption.h (renamed from tools/freetype/freetype/include/freetype/config/ftoption.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/config/ftstdlib.h (renamed from tools/freetype/freetype/include/freetype/config/ftstdlib.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/freetype.h (renamed from tools/freetype/freetype/include/freetype/freetype.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/ftadvanc.h (renamed from tools/freetype/freetype/include/freetype/ftadvanc.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/ftautoh.h (renamed from tools/freetype/freetype/include/freetype/ftautoh.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/ftbbox.h (renamed from tools/freetype/freetype/include/freetype/ftbbox.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/ftbdf.h (renamed from tools/freetype/freetype/include/freetype/ftbdf.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/ftbitmap.h (renamed from tools/freetype/freetype/include/freetype/ftbitmap.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/ftbzip2.h (renamed from tools/freetype/freetype/include/freetype/ftbzip2.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/ftcache.h (renamed from tools/freetype/freetype/include/freetype/ftcache.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/ftcffdrv.h (renamed from tools/freetype/freetype/include/freetype/ftcffdrv.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/ftchapters.h (renamed from tools/freetype/freetype/include/freetype/ftchapters.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/ftcid.h (renamed from tools/freetype/freetype/include/freetype/ftcid.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/fterrdef.h (renamed from tools/freetype/freetype/include/freetype/fterrdef.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/fterrors.h (renamed from tools/freetype/freetype/include/freetype/fterrors.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/ftgasp.h (renamed from tools/freetype/freetype/include/freetype/ftgasp.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/ftglyph.h (renamed from tools/freetype/freetype/include/freetype/ftglyph.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/ftgxval.h (renamed from tools/freetype/freetype/include/freetype/ftgxval.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/ftgzip.h (renamed from tools/freetype/freetype/include/freetype/ftgzip.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/ftimage.h (renamed from tools/freetype/freetype/include/freetype/ftimage.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/ftincrem.h (renamed from tools/freetype/freetype/include/freetype/ftincrem.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/ftlcdfil.h (renamed from tools/freetype/freetype/include/freetype/ftlcdfil.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/ftlist.h (renamed from tools/freetype/freetype/include/freetype/ftlist.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/ftlzw.h (renamed from tools/freetype/freetype/include/freetype/ftlzw.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/ftmac.h (renamed from tools/freetype/freetype/include/freetype/ftmac.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/ftmm.h (renamed from tools/freetype/freetype/include/freetype/ftmm.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/ftmodapi.h (renamed from tools/freetype/freetype/include/freetype/ftmodapi.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/ftmoderr.h (renamed from tools/freetype/freetype/include/freetype/ftmoderr.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/ftotval.h (renamed from tools/freetype/freetype/include/freetype/ftotval.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/ftoutln.h (renamed from tools/freetype/freetype/include/freetype/ftoutln.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/ftpfr.h (renamed from tools/freetype/freetype/include/freetype/ftpfr.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/ftrender.h (renamed from tools/freetype/freetype/include/freetype/ftrender.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/ftsizes.h (renamed from tools/freetype/freetype/include/freetype/ftsizes.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/ftsnames.h (renamed from tools/freetype/freetype/include/freetype/ftsnames.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/ftstroke.h (renamed from tools/freetype/freetype/include/freetype/ftstroke.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/ftsynth.h (renamed from tools/freetype/freetype/include/freetype/ftsynth.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/ftsystem.h (renamed from tools/freetype/freetype/include/freetype/ftsystem.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/fttrigon.h (renamed from tools/freetype/freetype/include/freetype/fttrigon.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/ftttdrv.h (renamed from tools/freetype/freetype/include/freetype/ftttdrv.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/fttypes.h (renamed from tools/freetype/freetype/include/freetype/fttypes.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/ftwinfnt.h (renamed from tools/freetype/freetype/include/freetype/ftwinfnt.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/ftxf86.h (renamed from tools/freetype/freetype/include/freetype/ftxf86.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/internal/autohint.h (renamed from tools/freetype/freetype/include/freetype/internal/autohint.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/internal/ftcalc.h (renamed from tools/freetype/freetype/include/freetype/internal/ftcalc.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/internal/ftdebug.h (renamed from tools/freetype/freetype/include/freetype/internal/ftdebug.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/internal/ftdriver.h (renamed from tools/freetype/freetype/include/freetype/internal/ftdriver.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/internal/ftgloadr.h (renamed from tools/freetype/freetype/include/freetype/internal/ftgloadr.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/internal/ftmemory.h (renamed from tools/freetype/freetype/include/freetype/internal/ftmemory.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/internal/ftobjs.h (renamed from tools/freetype/freetype/include/freetype/internal/ftobjs.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/internal/ftpic.h (renamed from tools/freetype/freetype/include/freetype/internal/ftpic.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/internal/ftrfork.h (renamed from tools/freetype/freetype/include/freetype/internal/ftrfork.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/internal/ftserv.h (renamed from tools/freetype/freetype/include/freetype/internal/ftserv.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/internal/ftstream.h (renamed from tools/freetype/freetype/include/freetype/internal/ftstream.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/internal/fttrace.h (renamed from tools/freetype/freetype/include/freetype/internal/fttrace.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/internal/ftvalid.h (renamed from tools/freetype/freetype/include/freetype/internal/ftvalid.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/internal/internal.h (renamed from tools/freetype/freetype/include/freetype/internal/internal.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/internal/psaux.h (renamed from tools/freetype/freetype/include/freetype/internal/psaux.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/internal/pshints.h (renamed from tools/freetype/freetype/include/freetype/internal/pshints.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/internal/services/svbdf.h (renamed from tools/freetype/freetype/include/freetype/internal/services/svbdf.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/internal/services/svcid.h (renamed from tools/freetype/freetype/include/freetype/internal/services/svcid.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/internal/services/svgldict.h (renamed from tools/freetype/freetype/include/freetype/internal/services/svgldict.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/internal/services/svgxval.h (renamed from tools/freetype/freetype/include/freetype/internal/services/svgxval.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/internal/services/svkern.h (renamed from tools/freetype/freetype/include/freetype/internal/services/svkern.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/internal/services/svmm.h (renamed from tools/freetype/freetype/include/freetype/internal/services/svmm.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/internal/services/svotval.h (renamed from tools/freetype/freetype/include/freetype/internal/services/svotval.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/internal/services/svpfr.h (renamed from tools/freetype/freetype/include/freetype/internal/services/svpfr.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/internal/services/svpostnm.h (renamed from tools/freetype/freetype/include/freetype/internal/services/svpostnm.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/internal/services/svprop.h (renamed from tools/freetype/freetype/include/freetype/internal/services/svprop.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/internal/services/svpscmap.h (renamed from tools/freetype/freetype/include/freetype/internal/services/svpscmap.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/internal/services/svpsinfo.h (renamed from tools/freetype/freetype/include/freetype/internal/services/svpsinfo.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/internal/services/svsfnt.h (renamed from tools/freetype/freetype/include/freetype/internal/services/svsfnt.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/internal/services/svttcmap.h (renamed from tools/freetype/freetype/include/freetype/internal/services/svttcmap.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/internal/services/svtteng.h (renamed from tools/freetype/freetype/include/freetype/internal/services/svtteng.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/internal/services/svttglyf.h (renamed from tools/freetype/freetype/include/freetype/internal/services/svttglyf.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/internal/services/svwinfnt.h (renamed from tools/freetype/freetype/include/freetype/internal/services/svwinfnt.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/internal/services/svxf86nm.h (renamed from tools/freetype/freetype/include/freetype/internal/services/svxf86nm.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/internal/sfnt.h (renamed from tools/freetype/freetype/include/freetype/internal/sfnt.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/internal/t1types.h (renamed from tools/freetype/freetype/include/freetype/internal/t1types.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/internal/tttypes.h (renamed from tools/freetype/freetype/include/freetype/internal/tttypes.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/t1tables.h (renamed from tools/freetype/freetype/include/freetype/t1tables.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/ttnameid.h (renamed from tools/freetype/freetype/include/freetype/ttnameid.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/tttables.h (renamed from tools/freetype/freetype/include/freetype/tttables.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/tttags.h (renamed from tools/freetype/freetype/include/freetype/tttags.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/ttunpat.h (renamed from tools/freetype/freetype/include/freetype/ttunpat.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/ftoption.h (renamed from tools/freetype/freetype/include/ftoption.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/Jamfile (renamed from tools/freetype/freetype/src/Jamfile) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/autofit/Jamfile (renamed from tools/freetype/freetype/src/autofit/Jamfile) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/autofit/afangles.c (renamed from tools/freetype/freetype/src/autofit/afangles.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/autofit/afangles.h (renamed from tools/freetype/freetype/src/autofit/afangles.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/autofit/afcjk.c (renamed from tools/freetype/freetype/src/autofit/afcjk.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/autofit/afcjk.h (renamed from tools/freetype/freetype/src/autofit/afcjk.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/autofit/afdummy.c (renamed from tools/freetype/freetype/src/autofit/afdummy.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/autofit/afdummy.h (renamed from tools/freetype/freetype/src/autofit/afdummy.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/autofit/aferrors.h (renamed from tools/freetype/freetype/src/autofit/aferrors.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/autofit/afglobal.c (renamed from tools/freetype/freetype/src/autofit/afglobal.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/autofit/afglobal.h (renamed from tools/freetype/freetype/src/autofit/afglobal.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/autofit/afhints.c (renamed from tools/freetype/freetype/src/autofit/afhints.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/autofit/afhints.h (renamed from tools/freetype/freetype/src/autofit/afhints.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/autofit/afindic.c (renamed from tools/freetype/freetype/src/autofit/afindic.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/autofit/afindic.h (renamed from tools/freetype/freetype/src/autofit/afindic.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/autofit/aflatin.c (renamed from tools/freetype/freetype/src/autofit/aflatin.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/autofit/aflatin.h (renamed from tools/freetype/freetype/src/autofit/aflatin.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/autofit/aflatin2.c (renamed from tools/freetype/freetype/src/autofit/aflatin2.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/autofit/aflatin2.h (renamed from tools/freetype/freetype/src/autofit/aflatin2.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/autofit/afloader.c (renamed from tools/freetype/freetype/src/autofit/afloader.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/autofit/afloader.h (renamed from tools/freetype/freetype/src/autofit/afloader.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/autofit/afmodule.c (renamed from tools/freetype/freetype/src/autofit/afmodule.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/autofit/afmodule.h (renamed from tools/freetype/freetype/src/autofit/afmodule.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/autofit/afpic.c (renamed from tools/freetype/freetype/src/autofit/afpic.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/autofit/afpic.h (renamed from tools/freetype/freetype/src/autofit/afpic.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/autofit/aftypes.h (renamed from tools/freetype/freetype/src/autofit/aftypes.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/autofit/afwarp.c (renamed from tools/freetype/freetype/src/autofit/afwarp.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/autofit/afwarp.h (renamed from tools/freetype/freetype/src/autofit/afwarp.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/autofit/autofit.c (renamed from tools/freetype/freetype/src/autofit/autofit.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/autofit/module.mk (renamed from tools/freetype/freetype/src/autofit/module.mk) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/autofit/rules.mk (renamed from tools/freetype/freetype/src/autofit/rules.mk) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/base/Jamfile (renamed from tools/freetype/freetype/src/base/Jamfile) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/base/basepic.c (renamed from tools/freetype/freetype/src/base/basepic.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/base/basepic.h (renamed from tools/freetype/freetype/src/base/basepic.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/base/ftadvanc.c (renamed from tools/freetype/freetype/src/base/ftadvanc.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/base/ftapi.c (renamed from tools/freetype/freetype/src/base/ftapi.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/base/ftbase.c (renamed from tools/freetype/freetype/src/base/ftbase.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/base/ftbase.h (renamed from tools/freetype/freetype/src/base/ftbase.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/base/ftbbox.c (renamed from tools/freetype/freetype/src/base/ftbbox.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/base/ftbdf.c (renamed from tools/freetype/freetype/src/base/ftbdf.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/base/ftbitmap.c (renamed from tools/freetype/freetype/src/base/ftbitmap.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/base/ftcalc.c (renamed from tools/freetype/freetype/src/base/ftcalc.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/base/ftcid.c (renamed from tools/freetype/freetype/src/base/ftcid.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/base/ftdbgmem.c (renamed from tools/freetype/freetype/src/base/ftdbgmem.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/base/ftdebug.c (renamed from tools/freetype/freetype/src/base/ftdebug.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/base/ftfstype.c (renamed from tools/freetype/freetype/src/base/ftfstype.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/base/ftgasp.c (renamed from tools/freetype/freetype/src/base/ftgasp.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/base/ftgloadr.c (renamed from tools/freetype/freetype/src/base/ftgloadr.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/base/ftglyph.c (renamed from tools/freetype/freetype/src/base/ftglyph.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/base/ftgxval.c (renamed from tools/freetype/freetype/src/base/ftgxval.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/base/ftinit.c (renamed from tools/freetype/freetype/src/base/ftinit.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/base/ftlcdfil.c (renamed from tools/freetype/freetype/src/base/ftlcdfil.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/base/ftmac.c (renamed from tools/freetype/freetype/src/base/ftmac.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/base/ftmm.c (renamed from tools/freetype/freetype/src/base/ftmm.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/base/ftobjs.c (renamed from tools/freetype/freetype/src/base/ftobjs.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/base/ftotval.c (renamed from tools/freetype/freetype/src/base/ftotval.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/base/ftoutln.c (renamed from tools/freetype/freetype/src/base/ftoutln.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/base/ftpatent.c (renamed from tools/freetype/freetype/src/base/ftpatent.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/base/ftpfr.c (renamed from tools/freetype/freetype/src/base/ftpfr.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/base/ftpic.c (renamed from tools/freetype/freetype/src/base/ftpic.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/base/ftrfork.c (renamed from tools/freetype/freetype/src/base/ftrfork.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/base/ftsnames.c (renamed from tools/freetype/freetype/src/base/ftsnames.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/base/ftstream.c (renamed from tools/freetype/freetype/src/base/ftstream.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/base/ftstroke.c (renamed from tools/freetype/freetype/src/base/ftstroke.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/base/ftsynth.c (renamed from tools/freetype/freetype/src/base/ftsynth.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/base/ftsystem.c (renamed from tools/freetype/freetype/src/base/ftsystem.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/base/fttrigon.c (renamed from tools/freetype/freetype/src/base/fttrigon.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/base/fttype1.c (renamed from tools/freetype/freetype/src/base/fttype1.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/base/ftutil.c (renamed from tools/freetype/freetype/src/base/ftutil.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/base/ftwinfnt.c (renamed from tools/freetype/freetype/src/base/ftwinfnt.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/base/ftxf86.c (renamed from tools/freetype/freetype/src/base/ftxf86.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/base/md5.c (renamed from tools/freetype/freetype/src/base/md5.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/base/md5.h (renamed from tools/freetype/freetype/src/base/md5.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/base/rules.mk (renamed from tools/freetype/freetype/src/base/rules.mk) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/bdf/Jamfile (renamed from tools/freetype/freetype/src/bdf/Jamfile) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/bdf/README (renamed from tools/freetype/freetype/src/bdf/README) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/bdf/bdf.c (renamed from tools/freetype/freetype/src/bdf/bdf.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/bdf/bdf.h (renamed from tools/freetype/freetype/src/bdf/bdf.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/bdf/bdfdrivr.c (renamed from tools/freetype/freetype/src/bdf/bdfdrivr.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/bdf/bdfdrivr.h (renamed from tools/freetype/freetype/src/bdf/bdfdrivr.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/bdf/bdferror.h (renamed from tools/freetype/freetype/src/bdf/bdferror.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/bdf/bdflib.c (renamed from tools/freetype/freetype/src/bdf/bdflib.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/bdf/module.mk (renamed from tools/freetype/freetype/src/bdf/module.mk) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/bdf/rules.mk (renamed from tools/freetype/freetype/src/bdf/rules.mk) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cache/Jamfile (renamed from tools/freetype/freetype/src/cache/Jamfile) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cache/ftcache.c (renamed from tools/freetype/freetype/src/cache/ftcache.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cache/ftcbasic.c (renamed from tools/freetype/freetype/src/cache/ftcbasic.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cache/ftccache.c (renamed from tools/freetype/freetype/src/cache/ftccache.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cache/ftccache.h (renamed from tools/freetype/freetype/src/cache/ftccache.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cache/ftccback.h (renamed from tools/freetype/freetype/src/cache/ftccback.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cache/ftccmap.c (renamed from tools/freetype/freetype/src/cache/ftccmap.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cache/ftcerror.h (renamed from tools/freetype/freetype/src/cache/ftcerror.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cache/ftcglyph.c (renamed from tools/freetype/freetype/src/cache/ftcglyph.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cache/ftcglyph.h (renamed from tools/freetype/freetype/src/cache/ftcglyph.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cache/ftcimage.c (renamed from tools/freetype/freetype/src/cache/ftcimage.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cache/ftcimage.h (renamed from tools/freetype/freetype/src/cache/ftcimage.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cache/ftcmanag.c (renamed from tools/freetype/freetype/src/cache/ftcmanag.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cache/ftcmanag.h (renamed from tools/freetype/freetype/src/cache/ftcmanag.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cache/ftcmru.c (renamed from tools/freetype/freetype/src/cache/ftcmru.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cache/ftcmru.h (renamed from tools/freetype/freetype/src/cache/ftcmru.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cache/ftcsbits.c (renamed from tools/freetype/freetype/src/cache/ftcsbits.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cache/ftcsbits.h (renamed from tools/freetype/freetype/src/cache/ftcsbits.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cache/rules.mk (renamed from tools/freetype/freetype/src/cache/rules.mk) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cff/Jamfile (renamed from tools/freetype/freetype/src/cff/Jamfile) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cff/cf2arrst.c (renamed from tools/freetype/freetype/src/cff/cf2arrst.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cff/cf2arrst.h (renamed from tools/freetype/freetype/src/cff/cf2arrst.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cff/cf2blues.c (renamed from tools/freetype/freetype/src/cff/cf2blues.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cff/cf2blues.h (renamed from tools/freetype/freetype/src/cff/cf2blues.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cff/cf2error.c (renamed from tools/freetype/freetype/src/cff/cf2error.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cff/cf2error.h (renamed from tools/freetype/freetype/src/cff/cf2error.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cff/cf2fixed.h (renamed from tools/freetype/freetype/src/cff/cf2fixed.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cff/cf2font.c (renamed from tools/freetype/freetype/src/cff/cf2font.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cff/cf2font.h (renamed from tools/freetype/freetype/src/cff/cf2font.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cff/cf2ft.c (renamed from tools/freetype/freetype/src/cff/cf2ft.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cff/cf2ft.h (renamed from tools/freetype/freetype/src/cff/cf2ft.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cff/cf2glue.h (renamed from tools/freetype/freetype/src/cff/cf2glue.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cff/cf2hints.c (renamed from tools/freetype/freetype/src/cff/cf2hints.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cff/cf2hints.h (renamed from tools/freetype/freetype/src/cff/cf2hints.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cff/cf2intrp.c (renamed from tools/freetype/freetype/src/cff/cf2intrp.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cff/cf2intrp.h (renamed from tools/freetype/freetype/src/cff/cf2intrp.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cff/cf2read.c (renamed from tools/freetype/freetype/src/cff/cf2read.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cff/cf2read.h (renamed from tools/freetype/freetype/src/cff/cf2read.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cff/cf2stack.c (renamed from tools/freetype/freetype/src/cff/cf2stack.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cff/cf2stack.h (renamed from tools/freetype/freetype/src/cff/cf2stack.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cff/cf2types.h (renamed from tools/freetype/freetype/src/cff/cf2types.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cff/cff.c (renamed from tools/freetype/freetype/src/cff/cff.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cff/cffcmap.c (renamed from tools/freetype/freetype/src/cff/cffcmap.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cff/cffcmap.h (renamed from tools/freetype/freetype/src/cff/cffcmap.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cff/cffdrivr.c (renamed from tools/freetype/freetype/src/cff/cffdrivr.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cff/cffdrivr.h (renamed from tools/freetype/freetype/src/cff/cffdrivr.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cff/cfferrs.h (renamed from tools/freetype/freetype/src/cff/cfferrs.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cff/cffgload.c (renamed from tools/freetype/freetype/src/cff/cffgload.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cff/cffgload.h (renamed from tools/freetype/freetype/src/cff/cffgload.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cff/cffload.c (renamed from tools/freetype/freetype/src/cff/cffload.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cff/cffload.h (renamed from tools/freetype/freetype/src/cff/cffload.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cff/cffobjs.c (renamed from tools/freetype/freetype/src/cff/cffobjs.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cff/cffobjs.h (renamed from tools/freetype/freetype/src/cff/cffobjs.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cff/cffparse.c (renamed from tools/freetype/freetype/src/cff/cffparse.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cff/cffparse.h (renamed from tools/freetype/freetype/src/cff/cffparse.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cff/cffpic.c (renamed from tools/freetype/freetype/src/cff/cffpic.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cff/cffpic.h (renamed from tools/freetype/freetype/src/cff/cffpic.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cff/cfftoken.h (renamed from tools/freetype/freetype/src/cff/cfftoken.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cff/cfftypes.h (renamed from tools/freetype/freetype/src/cff/cfftypes.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cff/module.mk (renamed from tools/freetype/freetype/src/cff/module.mk) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cff/rules.mk (renamed from tools/freetype/freetype/src/cff/rules.mk) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cid/Jamfile (renamed from tools/freetype/freetype/src/cid/Jamfile) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cid/ciderrs.h (renamed from tools/freetype/freetype/src/cid/ciderrs.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cid/cidgload.c (renamed from tools/freetype/freetype/src/cid/cidgload.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cid/cidgload.h (renamed from tools/freetype/freetype/src/cid/cidgload.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cid/cidload.c (renamed from tools/freetype/freetype/src/cid/cidload.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cid/cidload.h (renamed from tools/freetype/freetype/src/cid/cidload.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cid/cidobjs.c (renamed from tools/freetype/freetype/src/cid/cidobjs.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cid/cidobjs.h (renamed from tools/freetype/freetype/src/cid/cidobjs.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cid/cidparse.c (renamed from tools/freetype/freetype/src/cid/cidparse.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cid/cidparse.h (renamed from tools/freetype/freetype/src/cid/cidparse.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cid/cidriver.c (renamed from tools/freetype/freetype/src/cid/cidriver.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cid/cidriver.h (renamed from tools/freetype/freetype/src/cid/cidriver.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cid/cidtoken.h (renamed from tools/freetype/freetype/src/cid/cidtoken.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cid/module.mk (renamed from tools/freetype/freetype/src/cid/module.mk) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cid/rules.mk (renamed from tools/freetype/freetype/src/cid/rules.mk) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cid/type1cid.c (renamed from tools/freetype/freetype/src/cid/type1cid.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/gxvalid/Jamfile (renamed from tools/freetype/freetype/src/gxvalid/Jamfile) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/gxvalid/README (renamed from tools/freetype/freetype/src/gxvalid/README) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/gxvalid/gxvalid.c (renamed from tools/freetype/freetype/src/gxvalid/gxvalid.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/gxvalid/gxvalid.h (renamed from tools/freetype/freetype/src/gxvalid/gxvalid.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/gxvalid/gxvbsln.c (renamed from tools/freetype/freetype/src/gxvalid/gxvbsln.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/gxvalid/gxvcommn.c (renamed from tools/freetype/freetype/src/gxvalid/gxvcommn.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/gxvalid/gxvcommn.h (renamed from tools/freetype/freetype/src/gxvalid/gxvcommn.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/gxvalid/gxverror.h (renamed from tools/freetype/freetype/src/gxvalid/gxverror.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/gxvalid/gxvfeat.c (renamed from tools/freetype/freetype/src/gxvalid/gxvfeat.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/gxvalid/gxvfeat.h (renamed from tools/freetype/freetype/src/gxvalid/gxvfeat.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/gxvalid/gxvfgen.c (renamed from tools/freetype/freetype/src/gxvalid/gxvfgen.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/gxvalid/gxvjust.c (renamed from tools/freetype/freetype/src/gxvalid/gxvjust.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/gxvalid/gxvkern.c (renamed from tools/freetype/freetype/src/gxvalid/gxvkern.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/gxvalid/gxvlcar.c (renamed from tools/freetype/freetype/src/gxvalid/gxvlcar.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/gxvalid/gxvmod.c (renamed from tools/freetype/freetype/src/gxvalid/gxvmod.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/gxvalid/gxvmod.h (renamed from tools/freetype/freetype/src/gxvalid/gxvmod.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/gxvalid/gxvmort.c (renamed from tools/freetype/freetype/src/gxvalid/gxvmort.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/gxvalid/gxvmort.h (renamed from tools/freetype/freetype/src/gxvalid/gxvmort.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/gxvalid/gxvmort0.c (renamed from tools/freetype/freetype/src/gxvalid/gxvmort0.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/gxvalid/gxvmort1.c (renamed from tools/freetype/freetype/src/gxvalid/gxvmort1.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/gxvalid/gxvmort2.c (renamed from tools/freetype/freetype/src/gxvalid/gxvmort2.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/gxvalid/gxvmort4.c (renamed from tools/freetype/freetype/src/gxvalid/gxvmort4.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/gxvalid/gxvmort5.c (renamed from tools/freetype/freetype/src/gxvalid/gxvmort5.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/gxvalid/gxvmorx.c (renamed from tools/freetype/freetype/src/gxvalid/gxvmorx.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/gxvalid/gxvmorx.h (renamed from tools/freetype/freetype/src/gxvalid/gxvmorx.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/gxvalid/gxvmorx0.c (renamed from tools/freetype/freetype/src/gxvalid/gxvmorx0.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/gxvalid/gxvmorx1.c (renamed from tools/freetype/freetype/src/gxvalid/gxvmorx1.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/gxvalid/gxvmorx2.c (renamed from tools/freetype/freetype/src/gxvalid/gxvmorx2.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/gxvalid/gxvmorx4.c (renamed from tools/freetype/freetype/src/gxvalid/gxvmorx4.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/gxvalid/gxvmorx5.c (renamed from tools/freetype/freetype/src/gxvalid/gxvmorx5.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/gxvalid/gxvopbd.c (renamed from tools/freetype/freetype/src/gxvalid/gxvopbd.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/gxvalid/gxvprop.c (renamed from tools/freetype/freetype/src/gxvalid/gxvprop.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/gxvalid/gxvtrak.c (renamed from tools/freetype/freetype/src/gxvalid/gxvtrak.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/gxvalid/module.mk (renamed from tools/freetype/freetype/src/gxvalid/module.mk) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/gxvalid/rules.mk (renamed from tools/freetype/freetype/src/gxvalid/rules.mk) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/otvalid/Jamfile (renamed from tools/freetype/freetype/src/otvalid/Jamfile) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/otvalid/module.mk (renamed from tools/freetype/freetype/src/otvalid/module.mk) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/otvalid/otvalid.c (renamed from tools/freetype/freetype/src/otvalid/otvalid.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/otvalid/otvalid.h (renamed from tools/freetype/freetype/src/otvalid/otvalid.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/otvalid/otvbase.c (renamed from tools/freetype/freetype/src/otvalid/otvbase.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/otvalid/otvcommn.c (renamed from tools/freetype/freetype/src/otvalid/otvcommn.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/otvalid/otvcommn.h (renamed from tools/freetype/freetype/src/otvalid/otvcommn.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/otvalid/otverror.h (renamed from tools/freetype/freetype/src/otvalid/otverror.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/otvalid/otvgdef.c (renamed from tools/freetype/freetype/src/otvalid/otvgdef.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/otvalid/otvgpos.c (renamed from tools/freetype/freetype/src/otvalid/otvgpos.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/otvalid/otvgpos.h (renamed from tools/freetype/freetype/src/otvalid/otvgpos.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/otvalid/otvgsub.c (renamed from tools/freetype/freetype/src/otvalid/otvgsub.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/otvalid/otvjstf.c (renamed from tools/freetype/freetype/src/otvalid/otvjstf.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/otvalid/otvmath.c (renamed from tools/freetype/freetype/src/otvalid/otvmath.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/otvalid/otvmod.c (renamed from tools/freetype/freetype/src/otvalid/otvmod.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/otvalid/otvmod.h (renamed from tools/freetype/freetype/src/otvalid/otvmod.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/otvalid/rules.mk (renamed from tools/freetype/freetype/src/otvalid/rules.mk) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/pcf/Jamfile (renamed from tools/freetype/freetype/src/pcf/Jamfile) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/pcf/README (renamed from tools/freetype/freetype/src/pcf/README) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/pcf/module.mk (renamed from tools/freetype/freetype/src/pcf/module.mk) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/pcf/pcf.c (renamed from tools/freetype/freetype/src/pcf/pcf.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/pcf/pcf.h (renamed from tools/freetype/freetype/src/pcf/pcf.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/pcf/pcfdrivr.c (renamed from tools/freetype/freetype/src/pcf/pcfdrivr.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/pcf/pcfdrivr.h (renamed from tools/freetype/freetype/src/pcf/pcfdrivr.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/pcf/pcferror.h (renamed from tools/freetype/freetype/src/pcf/pcferror.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/pcf/pcfread.c (renamed from tools/freetype/freetype/src/pcf/pcfread.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/pcf/pcfread.h (renamed from tools/freetype/freetype/src/pcf/pcfread.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/pcf/pcfutil.c (renamed from tools/freetype/freetype/src/pcf/pcfutil.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/pcf/pcfutil.h (renamed from tools/freetype/freetype/src/pcf/pcfutil.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/pcf/rules.mk (renamed from tools/freetype/freetype/src/pcf/rules.mk) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/pfr/Jamfile (renamed from tools/freetype/freetype/src/pfr/Jamfile) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/pfr/module.mk (renamed from tools/freetype/freetype/src/pfr/module.mk) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/pfr/pfr.c (renamed from tools/freetype/freetype/src/pfr/pfr.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/pfr/pfrcmap.c (renamed from tools/freetype/freetype/src/pfr/pfrcmap.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/pfr/pfrcmap.h (renamed from tools/freetype/freetype/src/pfr/pfrcmap.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/pfr/pfrdrivr.c (renamed from tools/freetype/freetype/src/pfr/pfrdrivr.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/pfr/pfrdrivr.h (renamed from tools/freetype/freetype/src/pfr/pfrdrivr.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/pfr/pfrerror.h (renamed from tools/freetype/freetype/src/pfr/pfrerror.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/pfr/pfrgload.c (renamed from tools/freetype/freetype/src/pfr/pfrgload.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/pfr/pfrgload.h (renamed from tools/freetype/freetype/src/pfr/pfrgload.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/pfr/pfrload.c (renamed from tools/freetype/freetype/src/pfr/pfrload.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/pfr/pfrload.h (renamed from tools/freetype/freetype/src/pfr/pfrload.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/pfr/pfrobjs.c (renamed from tools/freetype/freetype/src/pfr/pfrobjs.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/pfr/pfrobjs.h (renamed from tools/freetype/freetype/src/pfr/pfrobjs.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/pfr/pfrsbit.c (renamed from tools/freetype/freetype/src/pfr/pfrsbit.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/pfr/pfrsbit.h (renamed from tools/freetype/freetype/src/pfr/pfrsbit.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/pfr/pfrtypes.h (renamed from tools/freetype/freetype/src/pfr/pfrtypes.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/pfr/rules.mk (renamed from tools/freetype/freetype/src/pfr/rules.mk) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/psaux/Jamfile (renamed from tools/freetype/freetype/src/psaux/Jamfile) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/psaux/afmparse.c (renamed from tools/freetype/freetype/src/psaux/afmparse.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/psaux/afmparse.h (renamed from tools/freetype/freetype/src/psaux/afmparse.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/psaux/module.mk (renamed from tools/freetype/freetype/src/psaux/module.mk) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/psaux/psaux.c (renamed from tools/freetype/freetype/src/psaux/psaux.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/psaux/psauxerr.h (renamed from tools/freetype/freetype/src/psaux/psauxerr.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/psaux/psauxmod.c (renamed from tools/freetype/freetype/src/psaux/psauxmod.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/psaux/psauxmod.h (renamed from tools/freetype/freetype/src/psaux/psauxmod.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/psaux/psconv.c (renamed from tools/freetype/freetype/src/psaux/psconv.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/psaux/psconv.h (renamed from tools/freetype/freetype/src/psaux/psconv.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/psaux/psobjs.c (renamed from tools/freetype/freetype/src/psaux/psobjs.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/psaux/psobjs.h (renamed from tools/freetype/freetype/src/psaux/psobjs.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/psaux/rules.mk (renamed from tools/freetype/freetype/src/psaux/rules.mk) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/psaux/t1cmap.c (renamed from tools/freetype/freetype/src/psaux/t1cmap.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/psaux/t1cmap.h (renamed from tools/freetype/freetype/src/psaux/t1cmap.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/psaux/t1decode.c (renamed from tools/freetype/freetype/src/psaux/t1decode.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/psaux/t1decode.h (renamed from tools/freetype/freetype/src/psaux/t1decode.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/pshinter/Jamfile (renamed from tools/freetype/freetype/src/pshinter/Jamfile) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/pshinter/module.mk (renamed from tools/freetype/freetype/src/pshinter/module.mk) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/pshinter/pshalgo.c (renamed from tools/freetype/freetype/src/pshinter/pshalgo.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/pshinter/pshalgo.h (renamed from tools/freetype/freetype/src/pshinter/pshalgo.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/pshinter/pshglob.c (renamed from tools/freetype/freetype/src/pshinter/pshglob.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/pshinter/pshglob.h (renamed from tools/freetype/freetype/src/pshinter/pshglob.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/pshinter/pshinter.c (renamed from tools/freetype/freetype/src/pshinter/pshinter.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/pshinter/pshmod.c (renamed from tools/freetype/freetype/src/pshinter/pshmod.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/pshinter/pshmod.h (renamed from tools/freetype/freetype/src/pshinter/pshmod.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/pshinter/pshnterr.h (renamed from tools/freetype/freetype/src/pshinter/pshnterr.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/pshinter/pshpic.c (renamed from tools/freetype/freetype/src/pshinter/pshpic.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/pshinter/pshpic.h (renamed from tools/freetype/freetype/src/pshinter/pshpic.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/pshinter/pshrec.c (renamed from tools/freetype/freetype/src/pshinter/pshrec.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/pshinter/pshrec.h (renamed from tools/freetype/freetype/src/pshinter/pshrec.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/pshinter/rules.mk (renamed from tools/freetype/freetype/src/pshinter/rules.mk) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/psnames/Jamfile (renamed from tools/freetype/freetype/src/psnames/Jamfile) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/psnames/module.mk (renamed from tools/freetype/freetype/src/psnames/module.mk) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/psnames/psmodule.c (renamed from tools/freetype/freetype/src/psnames/psmodule.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/psnames/psmodule.h (renamed from tools/freetype/freetype/src/psnames/psmodule.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/psnames/psnamerr.h (renamed from tools/freetype/freetype/src/psnames/psnamerr.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/psnames/psnames.c (renamed from tools/freetype/freetype/src/psnames/psnames.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/psnames/pspic.c (renamed from tools/freetype/freetype/src/psnames/pspic.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/psnames/pspic.h (renamed from tools/freetype/freetype/src/psnames/pspic.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/psnames/pstables.h (renamed from tools/freetype/freetype/src/psnames/pstables.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/psnames/rules.mk (renamed from tools/freetype/freetype/src/psnames/rules.mk) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/raster/Jamfile (renamed from tools/freetype/freetype/src/raster/Jamfile) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/raster/ftmisc.h (renamed from tools/freetype/freetype/src/raster/ftmisc.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/raster/ftraster.c (renamed from tools/freetype/freetype/src/raster/ftraster.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/raster/ftraster.h (renamed from tools/freetype/freetype/src/raster/ftraster.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/raster/ftrend1.c (renamed from tools/freetype/freetype/src/raster/ftrend1.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/raster/ftrend1.h (renamed from tools/freetype/freetype/src/raster/ftrend1.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/raster/module.mk (renamed from tools/freetype/freetype/src/raster/module.mk) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/raster/raster.c (renamed from tools/freetype/freetype/src/raster/raster.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/raster/rasterrs.h (renamed from tools/freetype/freetype/src/raster/rasterrs.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/raster/rastpic.c (renamed from tools/freetype/freetype/src/raster/rastpic.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/raster/rastpic.h (renamed from tools/freetype/freetype/src/raster/rastpic.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/raster/rules.mk (renamed from tools/freetype/freetype/src/raster/rules.mk) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/sfnt/Jamfile (renamed from tools/freetype/freetype/src/sfnt/Jamfile) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/sfnt/module.mk (renamed from tools/freetype/freetype/src/sfnt/module.mk) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/sfnt/pngshim.c (renamed from tools/freetype/freetype/src/sfnt/pngshim.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/sfnt/pngshim.h (renamed from tools/freetype/freetype/src/sfnt/pngshim.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/sfnt/rules.mk (renamed from tools/freetype/freetype/src/sfnt/rules.mk) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/sfnt/sfdriver.c (renamed from tools/freetype/freetype/src/sfnt/sfdriver.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/sfnt/sfdriver.h (renamed from tools/freetype/freetype/src/sfnt/sfdriver.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/sfnt/sferrors.h (renamed from tools/freetype/freetype/src/sfnt/sferrors.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/sfnt/sfnt.c (renamed from tools/freetype/freetype/src/sfnt/sfnt.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/sfnt/sfntpic.c (renamed from tools/freetype/freetype/src/sfnt/sfntpic.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/sfnt/sfntpic.h (renamed from tools/freetype/freetype/src/sfnt/sfntpic.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/sfnt/sfobjs.c (renamed from tools/freetype/freetype/src/sfnt/sfobjs.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/sfnt/sfobjs.h (renamed from tools/freetype/freetype/src/sfnt/sfobjs.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/sfnt/ttbdf.c (renamed from tools/freetype/freetype/src/sfnt/ttbdf.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/sfnt/ttbdf.h (renamed from tools/freetype/freetype/src/sfnt/ttbdf.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/sfnt/ttcmap.c (renamed from tools/freetype/freetype/src/sfnt/ttcmap.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/sfnt/ttcmap.h (renamed from tools/freetype/freetype/src/sfnt/ttcmap.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/sfnt/ttcmapc.h (renamed from tools/freetype/freetype/src/sfnt/ttcmapc.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/sfnt/ttkern.c (renamed from tools/freetype/freetype/src/sfnt/ttkern.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/sfnt/ttkern.h (renamed from tools/freetype/freetype/src/sfnt/ttkern.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/sfnt/ttload.c (renamed from tools/freetype/freetype/src/sfnt/ttload.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/sfnt/ttload.h (renamed from tools/freetype/freetype/src/sfnt/ttload.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/sfnt/ttmtx.c (renamed from tools/freetype/freetype/src/sfnt/ttmtx.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/sfnt/ttmtx.h (renamed from tools/freetype/freetype/src/sfnt/ttmtx.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/sfnt/ttpost.c (renamed from tools/freetype/freetype/src/sfnt/ttpost.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/sfnt/ttpost.h (renamed from tools/freetype/freetype/src/sfnt/ttpost.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/sfnt/ttsbit.c (renamed from tools/freetype/freetype/src/sfnt/ttsbit.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/sfnt/ttsbit.h (renamed from tools/freetype/freetype/src/sfnt/ttsbit.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/smooth/Jamfile (renamed from tools/freetype/freetype/src/smooth/Jamfile) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/smooth/ftgrays.c (renamed from tools/freetype/freetype/src/smooth/ftgrays.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/smooth/ftgrays.h (renamed from tools/freetype/freetype/src/smooth/ftgrays.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/smooth/ftsmerrs.h (renamed from tools/freetype/freetype/src/smooth/ftsmerrs.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/smooth/ftsmooth.c (renamed from tools/freetype/freetype/src/smooth/ftsmooth.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/smooth/ftsmooth.h (renamed from tools/freetype/freetype/src/smooth/ftsmooth.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/smooth/ftspic.c (renamed from tools/freetype/freetype/src/smooth/ftspic.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/smooth/ftspic.h (renamed from tools/freetype/freetype/src/smooth/ftspic.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/smooth/module.mk (renamed from tools/freetype/freetype/src/smooth/module.mk) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/smooth/rules.mk (renamed from tools/freetype/freetype/src/smooth/rules.mk) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/smooth/smooth.c (renamed from tools/freetype/freetype/src/smooth/smooth.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/truetype/Jamfile (renamed from tools/freetype/freetype/src/truetype/Jamfile) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/truetype/module.mk (renamed from tools/freetype/freetype/src/truetype/module.mk) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/truetype/rules.mk (renamed from tools/freetype/freetype/src/truetype/rules.mk) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/truetype/truetype.c (renamed from tools/freetype/freetype/src/truetype/truetype.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/truetype/ttdriver.c (renamed from tools/freetype/freetype/src/truetype/ttdriver.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/truetype/ttdriver.h (renamed from tools/freetype/freetype/src/truetype/ttdriver.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/truetype/tterrors.h (renamed from tools/freetype/freetype/src/truetype/tterrors.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/truetype/ttgload.c (renamed from tools/freetype/freetype/src/truetype/ttgload.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/truetype/ttgload.h (renamed from tools/freetype/freetype/src/truetype/ttgload.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/truetype/ttgxvar.c (renamed from tools/freetype/freetype/src/truetype/ttgxvar.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/truetype/ttgxvar.h (renamed from tools/freetype/freetype/src/truetype/ttgxvar.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/truetype/ttinterp.c (renamed from tools/freetype/freetype/src/truetype/ttinterp.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/truetype/ttinterp.h (renamed from tools/freetype/freetype/src/truetype/ttinterp.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/truetype/ttobjs.c (renamed from tools/freetype/freetype/src/truetype/ttobjs.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/truetype/ttobjs.h (renamed from tools/freetype/freetype/src/truetype/ttobjs.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/truetype/ttpic.c (renamed from tools/freetype/freetype/src/truetype/ttpic.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/truetype/ttpic.h (renamed from tools/freetype/freetype/src/truetype/ttpic.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/truetype/ttpload.c (renamed from tools/freetype/freetype/src/truetype/ttpload.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/truetype/ttpload.h (renamed from tools/freetype/freetype/src/truetype/ttpload.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/truetype/ttsubpix.c (renamed from tools/freetype/freetype/src/truetype/ttsubpix.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/truetype/ttsubpix.h (renamed from tools/freetype/freetype/src/truetype/ttsubpix.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/type1/Jamfile (renamed from tools/freetype/freetype/src/type1/Jamfile) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/type1/module.mk (renamed from tools/freetype/freetype/src/type1/module.mk) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/type1/rules.mk (renamed from tools/freetype/freetype/src/type1/rules.mk) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/type1/t1afm.c (renamed from tools/freetype/freetype/src/type1/t1afm.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/type1/t1afm.h (renamed from tools/freetype/freetype/src/type1/t1afm.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/type1/t1driver.c (renamed from tools/freetype/freetype/src/type1/t1driver.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/type1/t1driver.h (renamed from tools/freetype/freetype/src/type1/t1driver.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/type1/t1errors.h (renamed from tools/freetype/freetype/src/type1/t1errors.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/type1/t1gload.c (renamed from tools/freetype/freetype/src/type1/t1gload.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/type1/t1gload.h (renamed from tools/freetype/freetype/src/type1/t1gload.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/type1/t1load.c (renamed from tools/freetype/freetype/src/type1/t1load.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/type1/t1load.h (renamed from tools/freetype/freetype/src/type1/t1load.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/type1/t1objs.c (renamed from tools/freetype/freetype/src/type1/t1objs.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/type1/t1objs.h (renamed from tools/freetype/freetype/src/type1/t1objs.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/type1/t1parse.c (renamed from tools/freetype/freetype/src/type1/t1parse.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/type1/t1parse.h (renamed from tools/freetype/freetype/src/type1/t1parse.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/type1/t1tokens.h (renamed from tools/freetype/freetype/src/type1/t1tokens.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/type1/type1.c (renamed from tools/freetype/freetype/src/type1/type1.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/type42/Jamfile (renamed from tools/freetype/freetype/src/type42/Jamfile) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/type42/module.mk (renamed from tools/freetype/freetype/src/type42/module.mk) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/type42/rules.mk (renamed from tools/freetype/freetype/src/type42/rules.mk) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/type42/t42drivr.c (renamed from tools/freetype/freetype/src/type42/t42drivr.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/type42/t42drivr.h (renamed from tools/freetype/freetype/src/type42/t42drivr.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/type42/t42error.h (renamed from tools/freetype/freetype/src/type42/t42error.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/type42/t42objs.c (renamed from tools/freetype/freetype/src/type42/t42objs.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/type42/t42objs.h (renamed from tools/freetype/freetype/src/type42/t42objs.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/type42/t42parse.c (renamed from tools/freetype/freetype/src/type42/t42parse.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/type42/t42parse.h (renamed from tools/freetype/freetype/src/type42/t42parse.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/type42/t42types.h (renamed from tools/freetype/freetype/src/type42/t42types.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/type42/type42.c (renamed from tools/freetype/freetype/src/type42/type42.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/winfonts/Jamfile (renamed from tools/freetype/freetype/src/winfonts/Jamfile) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/winfonts/fnterrs.h (renamed from tools/freetype/freetype/src/winfonts/fnterrs.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/winfonts/module.mk (renamed from tools/freetype/freetype/src/winfonts/module.mk) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/winfonts/rules.mk (renamed from tools/freetype/freetype/src/winfonts/rules.mk) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/winfonts/winfnt.c (renamed from tools/freetype/freetype/src/winfonts/winfnt.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/winfonts/winfnt.h (renamed from tools/freetype/freetype/src/winfonts/winfnt.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/ft2build.h (renamed from tools/freetype/ft2build.h) | 0 | ||||
-rw-r--r-- | drivers/register_driver_types.cpp | 3 | ||||
-rw-r--r-- | main/input_default.cpp | 14 | ||||
-rw-r--r-- | main/input_default.h | 3 | ||||
-rw-r--r-- | modules/gdscript/gd_parser.cpp | 2 | ||||
-rw-r--r-- | platform/android/godot_android.cpp | 31 | ||||
-rw-r--r-- | platform/android/java/src/org/godotengine/godot/Godot.java | 13 | ||||
-rw-r--r-- | platform/android/java/src/org/godotengine/godot/GodotLib.java | 1 | ||||
-rw-r--r-- | platform/android/java_glue.cpp | 11 | ||||
-rw-r--r-- | platform/android/java_glue.h | 1 | ||||
-rw-r--r-- | platform/android/os_android.cpp | 5 | ||||
-rw-r--r-- | platform/android/os_android.h | 1 | ||||
-rw-r--r-- | platform/osx/detect.py | 4 | ||||
-rw-r--r-- | platform/osx/export/export.cpp | 9 | ||||
-rw-r--r-- | platform/windows/detect.py | 9 | ||||
-rw-r--r-- | platform/x11/detect.py | 4 | ||||
-rw-r--r-- | scene/gui/item_list.cpp | 75 | ||||
-rw-r--r-- | scene/gui/item_list.h | 17 | ||||
-rw-r--r-- | scene/gui/text_edit.cpp | 159 | ||||
-rw-r--r-- | scene/gui/text_edit.h | 22 | ||||
-rw-r--r-- | scene/register_scene_types.cpp | 5 | ||||
-rw-r--r-- | scene/resources/dynamic_font.cpp | 301 | ||||
-rw-r--r-- | scene/resources/dynamic_font.h | 76 | ||||
-rw-r--r-- | scene/resources/dynamic_font_stb.cpp | 527 | ||||
-rw-r--r-- | scene/resources/dynamic_font_stb.h | 178 | ||||
-rw-r--r-- | tools/SCsub | 43 | ||||
-rw-r--r-- | tools/doc/doc_data.h | 3 | ||||
-rw-r--r-- | tools/editor/code_editor.cpp | 494 | ||||
-rw-r--r-- | tools/editor/code_editor.h | 72 | ||||
-rw-r--r-- | tools/editor/dependency_editor.cpp | 8 | ||||
-rw-r--r-- | tools/editor/editor_fonts.cpp | 57 | ||||
-rw-r--r-- | tools/editor/editor_help.cpp | 56 | ||||
-rw-r--r-- | tools/editor/editor_node.cpp | 2 | ||||
-rw-r--r-- | tools/editor/editor_plugin_settings.cpp | 9 | ||||
-rw-r--r-- | tools/editor/editor_settings.cpp | 13 | ||||
-rw-r--r-- | tools/editor/icons/SCsub | 4 | ||||
-rw-r--r-- | tools/editor/io_plugins/editor_font_import_plugin.cpp | 2 | ||||
-rw-r--r-- | tools/editor/io_plugins/editor_mesh_import_plugin.cpp | 3 | ||||
-rw-r--r-- | tools/editor/io_plugins/editor_sample_import_plugin.cpp | 4 | ||||
-rw-r--r-- | tools/editor/io_plugins/editor_scene_import_plugin.cpp | 3 | ||||
-rw-r--r-- | tools/editor/io_plugins/editor_texture_import_plugin.cpp | 4 | ||||
-rw-r--r-- | tools/editor/io_plugins/editor_translation_import_plugin.cpp | 2 | ||||
-rw-r--r-- | tools/editor/plugins/animation_player_editor_plugin.cpp | 4 | ||||
-rw-r--r-- | tools/editor/plugins/script_editor_plugin.cpp | 81 | ||||
-rw-r--r-- | tools/editor/plugins/script_editor_plugin.h | 5 | ||||
-rw-r--r-- | tools/editor/plugins/shader_editor_plugin.cpp | 19 | ||||
-rw-r--r-- | tools/editor/plugins/shader_editor_plugin.h | 2 | ||||
-rw-r--r-- | tools/editor/plugins/tile_map_editor_plugin.cpp | 9 | ||||
-rw-r--r-- | tools/editor/project_export.cpp | 2 | ||||
-rw-r--r-- | tools/editor/project_manager.cpp | 2 | ||||
-rw-r--r-- | tools/editor/project_settings.cpp | 4 | ||||
-rw-r--r-- | tools/editor/script_editor_debugger.cpp | 2 | ||||
-rw-r--r-- | tools/editor_fonts/droid_sans.ttf | bin | 0 -> 6314324 bytes | |||
-rw-r--r-- | tools/editor_fonts/source_code_pro.otf | bin | 0 -> 140088 bytes | |||
-rw-r--r-- | tools/translations/zh_CN.po | 5781 |
550 files changed, 10818 insertions, 345 deletions
diff --git a/.gitignore b/.gitignore index 51df27507d..ef17e13534 100644 --- a/.gitignore +++ b/.gitignore @@ -20,6 +20,7 @@ tools/editor/doc_data_compressed.h tools/editor/certs_compressed.h tools/editor/editor_icons.cpp tools/editor/translations.h +tools/editor/builtin_fonts.h -fpic .fscache make.bat @@ -148,6 +149,8 @@ ipch/ *.opensdf *.sdf *.cachefile +*.VC.db +*.VC.VC.opendb # Visual Studio profiler *.psess diff --git a/SConstruct b/SConstruct index 8a3a7c4565..5e821751f3 100644 --- a/SConstruct +++ b/SConstruct @@ -396,14 +396,25 @@ if selected_platform in platform_list: AddToVSProject(env.servers_sources) AddToVSProject(env.tool_sources) + # this env flag won't work, it needs to be set in env_base=Environment(MSVC_VERSION='9.0') + # Even then, SCons still seems to ignore it and builds with the latest MSVC... + # That said, it's not needed to be set so far but I'm leaving it here so that this comment + # has a purpose. #env['MSVS_VERSION']='9.0' - env['MSVSBUILDCOM'] = "scons platform=" + selected_platform + " target=" + env["target"] + " bits=" + env["bits"] + " tools=yes" - env['MSVSREBUILDCOM'] = "scons platform=" + selected_platform + " target=" + env["target"] + " bits=" + env["bits"] + " tools=yes vsproj=true" - env['MSVSCLEANCOM'] = "scons --clean platform=" + selected_platform + " target=" + env["target"] + " bits=" + env["bits"] + " tools=yes" - - debug_variants = ['Debug|Win32']+['Debug|x64'] - release_variants = ['Release|Win32']+['Release|x64'] - release_debug_variants = ['Release_Debug|Win32']+['Release_Debug|x64'] + + + # Calls a CMD with /C(lose) and /V(delayed environment variable expansion) options. + # And runs vcvarsall bat for the propper arhitecture and scons for propper configuration + env['MSVSBUILDCOM'] = 'cmd /V /C set "plat=$(PlatformTarget)" ^& (if "$(PlatformTarget)"=="x64" (set "plat=x86_amd64")) ^& set "tools=yes" ^& (if "$(Configuration)"=="release" (set "tools=no")) ^& call "$(VCInstallDir)vcvarsall.bat" !plat! ^& scons platform=windows target=$(Configuration) tools=!tools! -j2' + env['MSVSREBUILDCOM'] = 'cmd /V /C set "plat=$(PlatformTarget)" ^& (if "$(PlatformTarget)"=="x64" (set "plat=x86_amd64")) ^& set "tools=yes" ^& (if "$(Configuration)"=="release" (set "tools=no")) & call "$(VCInstallDir)vcvarsall.bat" !plat! ^& scons platform=windows target=$(Configuration) tools=!tools! vsproj=yes -j2' + env['MSVSCLEANCOM'] = 'cmd /V /C set "plat=$(PlatformTarget)" ^& (if "$(PlatformTarget)"=="x64" (set "plat=x86_amd64")) ^& set "tools=yes" ^& (if "$(Configuration)"=="release" (set "tools=no")) ^& call "$(VCInstallDir)vcvarsall.bat" !plat! ^& scons --clean platform=windows target=$(Configuration) tools=!tools! -j2' + + # This version information (Win32, x64, Debug, Release, Release_Debug seems to be + # required for Visual Studio to understand that it needs to generate an NMAKE + # project. Do not modify without knowing what you are doing. + debug_variants = ['debug|Win32']+['debug|x64'] + release_variants = ['release|Win32']+['release|x64'] + release_debug_variants = ['release_debug|Win32']+['release_debug|x64'] variants = debug_variants + release_variants + release_debug_variants debug_targets = ['Debug']+['Debug'] release_targets = ['Release']+['Release'] diff --git a/core/hq2x.cpp b/core/hq2x.cpp new file mode 100644 index 0000000000..6495c77b2a --- /dev/null +++ b/core/hq2x.cpp @@ -0,0 +1,2636 @@ +/* + * Copyright 2016 Bruno Ribeiro + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +#include "hq2x.h" +#include "math_funcs.h" + + +static const uint32_t AMASK = 0xFF000000; +static const uint32_t YMASK = 0x00FF0000; +static const uint32_t UMASK = 0x0000FF00; +static const uint32_t VMASK = 0x000000FF; + +_FORCE_INLINE_ static uint32_t ARGBtoAYUV( + uint32_t value ) +{ + uint32_t A, R, G, B, Y, U, V; +//todo big endian check + A = value >> 24; + R = (value >> 16) & 0xFF; + G = (value >> 8) & 0xFF; + B = value & 0xFF; + + Y = Math::fast_ftoi( 0.299 * R + 0.587 * G + 0.114 * B); + U = Math::fast_ftoi(-0.169 * R - 0.331 * G + 0.5 * B) + 128; + V = Math::fast_ftoi( 0.5 * R - 0.419 * G - 0.081 * B) + 128; + return (A << 24) + (Y << 16) + (U << 8) + V; +} + + +/* + * Use this function for sharper images (good for cartoon style, used by DOSBOX) + */ + +_FORCE_INLINE_ static bool isDifferent( + uint32_t color1, + uint32_t color2, + uint32_t trY, + uint32_t trU, + uint32_t trV, + uint32_t trA ) +{ + color1 = ARGBtoAYUV(color1); + color2 = ARGBtoAYUV(color2); + + uint32_t value; + + value = ((color1 & YMASK) - (color2 & YMASK)); + value = (value ^ (value >> 31)) - (value >> 31); + if (value > trY) return true; + + value = ((color1 & UMASK) - (color2 & UMASK)); + value = (value ^ (value >> 31)) - (value >> 31); + if (value > trU) return true; + + value = ((color1 & VMASK) - (color2 & VMASK)); + value = (value ^ (value >> 31)) - (value >> 31); + if (value > trV) return true; + + value = ((color1 & AMASK) - (color2 & AMASK)); + value = (value ^ (value >> 31)) - (value >> 31); + if (value > trA) return true; + + return false; + +} + + + +#define MASK_RB 0x00FF00FF +#define MASK_G 0x0000FF00 +#define MASK_A 0xFF000000 + + +/** + * @brief Mixes two colors using the given weights. + */ +#define HQX_MIX_2(C0,C1,W0,W1) \ + ((((C0 & MASK_RB) * W0 + (C1 & MASK_RB) * W1) / (W0 + W1)) & MASK_RB) | \ + ((((C0 & MASK_G) * W0 + (C1 & MASK_G) * W1) / (W0 + W1)) & MASK_G) | \ + (((((C0 & MASK_A) >> 8) * W0 + ((C1 & MASK_A) >> 8) * W1) / (W0 + W1)) << 8) & MASK_A + +/** + * @brief Mixes three colors using the given weights. + */ +#define HQX_MIX_3(C0,C1,C2,W0,W1,W2) \ + ((((C0 & MASK_RB) * W0 + (C1 & MASK_RB) * W1 + (C2 & MASK_RB) * W2) / (W0 + W1 + W2)) & MASK_RB) | \ + ((((C0 & MASK_G) * W0 + (C1 & MASK_G) * W1 + (C2 & MASK_G) * W2) / (W0 + W1 + W2)) & MASK_G) | \ + (((((C0 & MASK_A) >> 8) * W0 + ((C1 & MASK_A) >> 8) * W1 + ((C2 & MASK_A) >> 8) * W2) / (W0 + W1 + W2)) << 8) & MASK_A + + +#define MIX_00_4 *output = w[4]; +#define MIX_00_MIX_00_4_0_3_1 *output = HQX_MIX_2(w[4],w[0],3U,1U); +#define MIX_00_4_3_3_1 *output = HQX_MIX_2(w[4],w[3],3U,1U); +#define MIX_00_4_1_3_1 *output = HQX_MIX_2(w[4],w[1],3U,1U); +#define MIX_00_3_1_1_1 *output = HQX_MIX_2(w[3],w[1],1U,1U); +#define MIX_00_4_3_1_2_1_1 *output = HQX_MIX_3(w[4],w[3],w[1],2U,1U,1U); +#define MIX_00_4_3_1_2_7_7 *output = HQX_MIX_3(w[4],w[3],w[1],2U,7U,7U); +#define MIX_00_4_0_1_2_1_1 *output = HQX_MIX_3(w[4],w[0],w[1],2U,1U,1U); +#define MIX_00_4_0_3_2_1_1 *output = HQX_MIX_3(w[4],w[0],w[3],2U,1U,1U); +#define MIX_00_4_1_3_5_2_1 *output = HQX_MIX_3(w[4],w[1],w[3],5U,2U,1U); +#define MIX_00_4_3_1_5_2_1 *output = HQX_MIX_3(w[4],w[3],w[1],5U,2U,1U); +#define MIX_00_4_3_1_6_1_1 *output = HQX_MIX_3(w[4],w[3],w[1],6U,1U,1U); +#define MIX_00_4_3_1_2_3_3 *output = HQX_MIX_3(w[4],w[3],w[1],2U,3U,3U); +#define MIX_00_MIX_00_4_0_3_10 *output = HQX_MIX_3(w[4],w[3],w[1],14U,1U,1U); + +#define MIX_01_4 *(output + 1) = w[4]; +#define MIX_01_4_2_3_1 *(output + 1) = HQX_MIX_2(w[4],w[2],3U,1U); +#define MIX_01_4_1_3_1 *(output + 1) = HQX_MIX_2(w[4],w[1],3U,1U); +#define MIX_01_1_4_3_1 *(output + 1) = HQX_MIX_2(w[1],w[4],3U,1U); +#define MIX_01_4_5_3_1 *(output + 1) = HQX_MIX_2(w[4],w[5],3U,1U); +#define MIX_01_4_1_7_1 *(output + 1) = HQX_MIX_2(w[4],w[1],7U,1U); +#define MIX_01_4_1_5_2_1_1 *(output + 1) = HQX_MIX_3(w[4],w[1],w[5],2U,1U,1U); +#define MIX_01_4_2_5_2_1_1 *(output + 1) = HQX_MIX_3(w[4],w[2],w[5],2U,1U,1U); +#define MIX_01_4_2_1_2_1_1 *(output + 1) = HQX_MIX_3(w[4],w[2],w[1],2U,1U,1U); +#define MIX_01_4_5_1_5_2_1 *(output + 1) = HQX_MIX_3(w[4],w[5],w[1],5U,2U,1U); +#define MIX_01_4_1_5_5_2_1 *(output + 1) = HQX_MIX_3(w[4],w[1],w[5],5U,2U,1U); +#define MIX_01_4_1_5_6_1_1 *(output + 1) = HQX_MIX_3(w[4],w[1],w[5],6U,1U,1U); +#define MIX_01_4_1_5_2_3_3 *(output + 1) = HQX_MIX_3(w[4],w[1],w[5],2U,3U,3U); +#define MIX_01_4_2_3_10 *(output + 1) = HQX_MIX_3(w[4],w[1],w[5],14U,1U,1U); + +#define MIX_02_4 *(output + 2) = w[4]; +#define MIX_02_4_2_3_1 *(output + 2) = HQX_MIX_2(w[4],w[2],3U,1U); +#define MIX_02_4_1_3_1 *(output + 2) = HQX_MIX_2(w[4],w[1],3U,1U); +#define MIX_02_4_5_3_1 *(output + 2) = HQX_MIX_2(w[4],w[5],3U,1U); +#define MIX_02_4_1_5_2_1_1 *(output + 2) = HQX_MIX_3(w[4],w[1],w[5],2U,1U,1U); +#define MIX_02_4_1_5_2_7_7 *(output + 2) = HQX_MIX_3(w[4],w[1],w[5],2U,7U,7U); +#define MIX_02_1_5_1_1 *(output + 2) = HQX_MIX_2(w[1],w[5],1U,1U); + +#define MIX_10_4 *(output + lineSize) = w[4]; +#define MIX_10_4_6_3_1 *(output + lineSize) = HQX_MIX_2(w[4],w[6],3U,1U); +#define MIX_10_4_7_3_1 *(output + lineSize) = HQX_MIX_2(w[4],w[7],3U,1U); +#define MIX_10_4_3_3_1 *(output + lineSize) = HQX_MIX_2(w[4],w[3],3U,1U); +#define MIX_10_4_7_3_2_1_1 *(output + lineSize) = HQX_MIX_3(w[4],w[7],w[3],2U,1U,1U); +#define MIX_10_4_6_3_2_1_1 *(output + lineSize) = HQX_MIX_3(w[4],w[6],w[3],2U,1U,1U); +#define MIX_10_4_6_7_2_1_1 *(output + lineSize) = HQX_MIX_3(w[4],w[6],w[7],2U,1U,1U); +#define MIX_10_4_3_7_5_2_1 *(output + lineSize) = HQX_MIX_3(w[4],w[3],w[7],5U,2U,1U); +#define MIX_10_4_7_3_5_2_1 *(output + lineSize) = HQX_MIX_3(w[4],w[7],w[3],5U,2U,1U); +#define MIX_10_4_7_3_6_1_1 *(output + lineSize) = HQX_MIX_3(w[4],w[7],w[3],6U,1U,1U); +#define MIX_10_4_7_3_2_3_3 *(output + lineSize) = HQX_MIX_3(w[4],w[7],w[3],2U,3U,3U); +#define MIX_10_4_6_3_10 *(output + lineSize) = HQX_MIX_3(w[4],w[7],w[3],14U,1U,1U); +#define MIX_10_4_3_7_1 *(output + lineSize) = HQX_MIX_2(w[4],w[3],7U,1U); +#define MIX_10_3_4_3_1 *(output + lineSize) = HQX_MIX_2(w[3],w[4],3U,1U); + +#define MIX_11_4 *(output + lineSize + 1) = w[4]; +#define MIX_11_4_8_3_1 *(output + lineSize + 1) = HQX_MIX_2(w[4],w[8],3U,1U); +#define MIX_11_4_5_3_1 *(output + lineSize + 1) = HQX_MIX_2(w[4],w[5],3U,1U); +#define MIX_11_4_7_3_1 *(output + lineSize + 1) = HQX_MIX_2(w[4],w[7],3U,1U); +#define MIX_11_4_5_7_2_1_1 *(output + lineSize + 1) = HQX_MIX_3(w[4],w[5],w[7],2U,1U,1U); +#define MIX_11_4_8_7_2_1_1 *(output + lineSize + 1) = HQX_MIX_3(w[4],w[8],w[7],2U,1U,1U); +#define MIX_11_4_8_5_2_1_1 *(output + lineSize + 1) = HQX_MIX_3(w[4],w[8],w[5],2U,1U,1U); +#define MIX_11_4_7_5_5_2_1 *(output + lineSize + 1) = HQX_MIX_3(w[4],w[7],w[5],5U,2U,1U); +#define MIX_11_4_5_7_5_2_1 *(output + lineSize + 1) = HQX_MIX_3(w[4],w[5],w[7],5U,2U,1U); +#define MIX_11_4_5_7_6_1_1 *(output + lineSize + 1) = HQX_MIX_3(w[4],w[5],w[7],6U,1U,1U); +#define MIX_11_4_5_7_2_3_3 *(output + lineSize + 1) = HQX_MIX_3(w[4],w[5],w[7],2U,3U,3U); +#define MIX_11_4_8_3_10 *(output + lineSize + 1) = HQX_MIX_3(w[4],w[5],w[7],14U,1U,1U); + +#define MIX_12_4 *(output + lineSize + 2) = w[4]; +#define MIX_12_4_5_3_1 *(output + lineSize + 2) = HQX_MIX_2(w[4],w[5],3U,1U); +#define MIX_12_4_5_7_1 *(output + lineSize + 2) = HQX_MIX_2(w[4],w[5],7U,1U); +#define MIX_12_5_4_3_1 *(output + lineSize + 2) = HQX_MIX_2(w[5],w[4],3U,1U); + +#define MIX_20_4 *(output + lineSize + lineSize) = w[4]; +#define MIX_20_4_6_3_1 *(output + lineSize + lineSize) = HQX_MIX_2(w[4],w[6],3U,1U); +#define MIX_20_4_7_3_1 *(output + lineSize + lineSize) = HQX_MIX_2(w[4],w[7],3U,1U); +#define MIX_20_4_3_3_1 *(output + lineSize + lineSize) = HQX_MIX_2(w[4],w[3],3U,1U); +#define MIX_20_4_7_3_2_1_1 *(output + lineSize + lineSize) = HQX_MIX_3(w[4],w[7],w[3],2U,1U,1U); +#define MIX_20_4_7_3_2_7_7 *(output + lineSize + lineSize) = HQX_MIX_3(w[4],w[7],w[3],2U,7U,7U); +#define MIX_20_7_3_1_1 *(output + lineSize + lineSize) = HQX_MIX_2(w[7],w[3],1U,1U); + +#define MIX_21_4 *(output + lineSize + lineSize + 1) = w[4]; +#define MIX_21_4_7_3_1 *(output + lineSize + lineSize + 1) = HQX_MIX_2(w[4],w[7],3U,1U); +#define MIX_21_4_7_7_1 *(output + lineSize + lineSize + 1) = HQX_MIX_2(w[4],w[7],7U,1U); +#define MIX_21_7_4_3_1 *(output + lineSize + lineSize + 1) = HQX_MIX_2(w[7],w[4],3U,1U); + +#define MIX_22_4 *(output + lineSize + lineSize + 2) = w[4]; +#define MIX_22_4_8_3_1 *(output + lineSize + lineSize + 2) = HQX_MIX_2(w[4],w[8],3U,1U); +#define MIX_22_4_7_3_1 *(output + lineSize + lineSize + 2) = HQX_MIX_2(w[4],w[7],3U,1U); +#define MIX_22_4_5_3_1 *(output + lineSize + lineSize + 2) = HQX_MIX_2(w[4],w[5],3U,1U); +#define MIX_22_4_5_7_2_1_1 *(output + lineSize + lineSize + 2) = HQX_MIX_3(w[4],w[5],w[7],2U,1U,1U); +#define MIX_22_4_5_7_2_7_7 *(output + lineSize + lineSize + 2) = HQX_MIX_3(w[4],w[5],w[7],2U,7U,7U); +#define MIX_22_5_7_1_1 *(output + lineSize + lineSize + 2) = HQX_MIX_2(w[5],w[7],1U,1U); + + + +uint32_t *hq2x_resize( + const uint32_t *image, + uint32_t width, + uint32_t height, + uint32_t *output, + uint32_t trY, + uint32_t trU, + uint32_t trV, + uint32_t trA, + bool wrapX, + bool wrapY ) +{ + int lineSize = width * 2; + + int previous, next; + uint32_t w[9]; + + trY <<= 16; + trU <<= 8; + trA <<= 24; + + // iterates between the lines + for (uint32_t row = 0; row < height; row++) + { + /* + * Note: this function uses a 3x3 sliding window over the original image. + * + * +----+----+----+ + * | | | | + * | w0 | w1 | w2 | + * +----+----+----+ + * | | | | + * | w3 | w4 | w5 | + * +----+----+----+ + * | | | | + * | w6 | w7 | w8 | + * +----+----+----+ + */ + + // adjusts the previous and next line pointers + if (row > 0) + previous = -width; + else + { + if (wrapY) + previous = width * (height - 1); + else + previous = 0; + } + if (row < height - 1) + next = width; + else + { + if (wrapY) + next = -(width * (height - 1)); + else + next = 0; + } + + // iterates between the columns + for (uint32_t col = 0; col < width; col++) + { + w[1] = *(image + previous); + w[4] = *image; + w[7] = *(image + next); + + if (col > 0) + { + w[0] = *(image + previous - 1); + w[3] = *(image - 1); + w[6] = *(image + next - 1); + } + else + { + if (wrapX) + { + w[0] = *(image + previous + width - 1); + w[3] = *(image + width - 1); + w[6] = *(image + next + width - 1); + } + else + { + w[0] = w[1]; + w[3] = w[4]; + w[6] = w[7]; + } + } + + if (col < width - 1) + { + w[2] = *(image + previous + 1); + w[5] = *(image + 1); + w[8] = *(image + next + 1); + } + else + { + if (wrapX) + { + w[2] = *(image + previous - width + 1); + w[5] = *(image - width + 1); + w[8] = *(image + next - width + 1); + } + else + { + w[2] = w[1]; + w[5] = w[4]; + w[8] = w[7]; + } + } + + int pattern = 0; + + // computes the pattern to be used considering the neighbor pixels + for (int k = 0, flag = 1; k < 9; k++) + { + // ignores the central pixel + if (k == 4) continue; + + if (w[k] != w[4]) + if (isDifferent(w[4], w[k], trY, trU, trV, trA)) pattern |= flag; + flag <<= 1; + } + + switch (pattern) + { + case 0: + case 1: + case 4: + case 32: + case 128: + case 5: + case 132: + case 160: + case 33: + case 129: + case 36: + case 133: + case 164: + case 161: + case 37: + case 165: + MIX_00_4_3_1_2_1_1 + MIX_01_4_1_5_2_1_1 + MIX_10_4_7_3_2_1_1 + MIX_11_4_5_7_2_1_1 + break; + case 2: + case 34: + case 130: + case 162: + MIX_00_4_0_3_2_1_1 + MIX_01_4_2_5_2_1_1 + MIX_10_4_7_3_2_1_1 + MIX_11_4_5_7_2_1_1 + break; + case 16: + case 17: + case 48: + case 49: + MIX_00_4_3_1_2_1_1 + MIX_01_4_2_1_2_1_1 + MIX_10_4_7_3_2_1_1 + MIX_11_4_8_7_2_1_1 + break; + case 64: + case 65: + case 68: + case 69: + MIX_00_4_3_1_2_1_1 + MIX_01_4_1_5_2_1_1 + MIX_10_4_6_3_2_1_1 + MIX_11_4_8_5_2_1_1 + break; + case 8: + case 12: + case 136: + case 140: + MIX_00_4_0_1_2_1_1 + MIX_01_4_1_5_2_1_1 + MIX_10_4_6_7_2_1_1 + MIX_11_4_5_7_2_1_1 + break; + case 3: + case 35: + case 131: + case 163: + MIX_00_4_3_3_1 + MIX_01_4_2_5_2_1_1 + MIX_10_4_7_3_2_1_1 + MIX_11_4_5_7_2_1_1 + break; + case 6: + case 38: + case 134: + case 166: + MIX_00_4_0_3_2_1_1 + MIX_01_4_5_3_1 + MIX_10_4_7_3_2_1_1 + MIX_11_4_5_7_2_1_1 + break; + case 20: + case 21: + case 52: + case 53: + MIX_00_4_3_1_2_1_1 + MIX_01_4_1_3_1 + MIX_10_4_7_3_2_1_1 + MIX_11_4_8_7_2_1_1 + break; + case 144: + case 145: + case 176: + case 177: + MIX_00_4_3_1_2_1_1 + MIX_01_4_2_1_2_1_1 + MIX_10_4_7_3_2_1_1 + MIX_11_4_7_3_1 + break; + case 192: + case 193: + case 196: + case 197: + MIX_00_4_3_1_2_1_1 + MIX_01_4_1_5_2_1_1 + MIX_10_4_6_3_2_1_1 + MIX_11_4_5_3_1 + break; + case 96: + case 97: + case 100: + case 101: + MIX_00_4_3_1_2_1_1 + MIX_01_4_1_5_2_1_1 + MIX_10_4_3_3_1 + MIX_11_4_8_5_2_1_1 + break; + case 40: + case 44: + case 168: + case 172: + MIX_00_4_0_1_2_1_1 + MIX_01_4_1_5_2_1_1 + MIX_10_4_7_3_1 + MIX_11_4_5_7_2_1_1 + break; + case 9: + case 13: + case 137: + case 141: + MIX_00_4_1_3_1 + MIX_01_4_1_5_2_1_1 + MIX_10_4_6_7_2_1_1 + MIX_11_4_5_7_2_1_1 + break; + case 18: + case 50: + MIX_00_4_0_3_2_1_1 + if (isDifferent(w[1], w[5], trY, trU, trV, trA)) + { + MIX_01_4_2_3_1 + } + else + { + MIX_01_4_1_5_2_1_1 + } + MIX_10_4_7_3_2_1_1 + MIX_11_4_8_7_2_1_1 + break; + case 80: + case 81: + MIX_00_4_3_1_2_1_1 + MIX_01_4_2_1_2_1_1 + MIX_10_4_6_3_2_1_1 + if (isDifferent(w[5], w[7], trY, trU, trV, trA)) + { + MIX_11_4_8_3_1 + } + else + { + MIX_11_4_5_7_2_1_1 + } + break; + case 72: + case 76: + MIX_00_4_0_1_2_1_1 + MIX_01_4_1_5_2_1_1 + if (isDifferent(w[7], w[3], trY, trU, trV, trA)) + { + MIX_10_4_6_3_1 + } + else + { + MIX_10_4_7_3_2_1_1 + } + MIX_11_4_8_5_2_1_1 + break; + case 10: + case 138: + if (isDifferent(w[3], w[1], trY, trU, trV, trA)) + { + MIX_00_MIX_00_4_0_3_1 + } + else + { + MIX_00_4_3_1_2_1_1 + } + MIX_01_4_2_5_2_1_1 + MIX_10_4_6_7_2_1_1 + MIX_11_4_5_7_2_1_1 + break; + case 66: + MIX_00_4_0_3_2_1_1 + MIX_01_4_2_5_2_1_1 + MIX_10_4_6_3_2_1_1 + MIX_11_4_8_5_2_1_1 + break; + case 24: + MIX_00_4_0_1_2_1_1 + MIX_01_4_2_1_2_1_1 + MIX_10_4_6_7_2_1_1 + MIX_11_4_8_7_2_1_1 + break; + case 7: + case 39: + case 135: + MIX_00_4_3_3_1 + MIX_01_4_5_3_1 + MIX_10_4_7_3_2_1_1 + MIX_11_4_5_7_2_1_1 + break; + case 148: + case 149: + case 180: + MIX_00_4_3_1_2_1_1 + MIX_01_4_1_3_1 + MIX_10_4_7_3_2_1_1 + MIX_11_4_7_3_1 + break; + case 224: + case 228: + case 225: + MIX_00_4_3_1_2_1_1 + MIX_01_4_1_5_2_1_1 + MIX_10_4_3_3_1 + MIX_11_4_5_3_1 + break; + case 41: + case 169: + case 45: + MIX_00_4_1_3_1 + MIX_01_4_1_5_2_1_1 + MIX_10_4_7_3_1 + MIX_11_4_5_7_2_1_1 + break; + case 22: + case 54: + MIX_00_4_0_3_2_1_1 + if (isDifferent(w[1], w[5], trY, trU, trV, trA)) + { + MIX_01_4 + } + else + { + MIX_01_4_1_5_2_1_1 + } + MIX_10_4_7_3_2_1_1 + MIX_11_4_8_7_2_1_1 + break; + case 208: + case 209: + MIX_00_4_3_1_2_1_1 + MIX_01_4_2_1_2_1_1 + MIX_10_4_6_3_2_1_1 + if (isDifferent(w[5], w[7], trY, trU, trV, trA)) + { + MIX_11_4 + } + else + { + MIX_11_4_5_7_2_1_1 + } + break; + case 104: + case 108: + MIX_00_4_0_1_2_1_1 + MIX_01_4_1_5_2_1_1 + if (isDifferent(w[7], w[3], trY, trU, trV, trA)) + { + MIX_10_4 + } + else + { + MIX_10_4_7_3_2_1_1 + } + MIX_11_4_8_5_2_1_1 + break; + case 11: + case 139: + if (isDifferent(w[3], w[1], trY, trU, trV, trA)) + { + MIX_00_4 + } + else + { + MIX_00_4_3_1_2_1_1 + } + MIX_01_4_2_5_2_1_1 + MIX_10_4_6_7_2_1_1 + MIX_11_4_5_7_2_1_1 + break; + case 19: + case 51: + if (isDifferent(w[1], w[5], trY, trU, trV, trA)) + { + MIX_00_4_3_3_1 + MIX_01_4_2_3_1 + } + else + { + MIX_00_4_1_3_5_2_1 + MIX_01_4_1_5_2_3_3 + } + MIX_10_4_7_3_2_1_1 + MIX_11_4_8_7_2_1_1 + break; + case 146: + case 178: + MIX_00_4_0_3_2_1_1 + if (isDifferent(w[1], w[5], trY, trU, trV, trA)) + { + MIX_01_4_2_3_1 + MIX_11_4_7_3_1 + } + else + { + MIX_01_4_1_5_2_3_3 + MIX_11_4_5_7_5_2_1 + } + MIX_10_4_7_3_2_1_1 + break; + case 84: + case 85: + MIX_00_4_3_1_2_1_1 + if (isDifferent(w[5], w[7], trY, trU, trV, trA)) + { + MIX_01_4_1_3_1 + MIX_11_4_8_3_1 + } + else + { + MIX_01_4_5_1_5_2_1 + MIX_11_4_5_7_2_3_3 + } + MIX_10_4_6_3_2_1_1 + break; + case 112: + case 113: + MIX_00_4_3_1_2_1_1 + MIX_01_4_2_1_2_1_1 + if (isDifferent(w[5], w[7], trY, trU, trV, trA)) + { + MIX_10_4_3_3_1 + MIX_11_4_8_3_1 + } + else + { + MIX_10_4_7_3_5_2_1 + MIX_11_4_5_7_2_3_3 + } + break; + case 200: + case 204: + MIX_00_4_0_1_2_1_1 + MIX_01_4_1_5_2_1_1 + if (isDifferent(w[7], w[3], trY, trU, trV, trA)) + { + MIX_10_4_6_3_1 + MIX_11_4_5_3_1 + } + else + { + MIX_10_4_7_3_2_3_3 + MIX_11_4_7_5_5_2_1 + } + break; + case 73: + case 77: + if (isDifferent(w[7], w[3], trY, trU, trV, trA)) + { + MIX_00_4_1_3_1 + MIX_10_4_6_3_1 + } + else + { + MIX_00_4_3_1_5_2_1 + MIX_10_4_7_3_2_3_3 + } + MIX_01_4_1_5_2_1_1 + MIX_11_4_8_5_2_1_1 + break; + case 42: + case 170: + if (isDifferent(w[3], w[1], trY, trU, trV, trA)) + { + MIX_00_MIX_00_4_0_3_1 + MIX_10_4_7_3_1 + } + else + { + MIX_00_4_3_1_2_3_3 + MIX_10_4_3_7_5_2_1 + } + MIX_01_4_2_5_2_1_1 + MIX_11_4_5_7_2_1_1 + break; + case 14: + case 142: + if (isDifferent(w[3], w[1], trY, trU, trV, trA)) + { + MIX_00_MIX_00_4_0_3_1 + MIX_01_4_5_3_1 + } + else + { + MIX_00_4_3_1_2_3_3 + MIX_01_4_1_5_5_2_1 + } + MIX_10_4_6_7_2_1_1 + MIX_11_4_5_7_2_1_1 + break; + case 67: + MIX_00_4_3_3_1 + MIX_01_4_2_5_2_1_1 + MIX_10_4_6_3_2_1_1 + MIX_11_4_8_5_2_1_1 + break; + case 70: + MIX_00_4_0_3_2_1_1 + MIX_01_4_5_3_1 + MIX_10_4_6_3_2_1_1 + MIX_11_4_8_5_2_1_1 + break; + case 28: + MIX_00_4_0_1_2_1_1 + MIX_01_4_1_3_1 + MIX_10_4_6_7_2_1_1 + MIX_11_4_8_7_2_1_1 + break; + case 152: + MIX_00_4_0_1_2_1_1 + MIX_01_4_2_1_2_1_1 + MIX_10_4_6_7_2_1_1 + MIX_11_4_7_3_1 + break; + case 194: + MIX_00_4_0_3_2_1_1 + MIX_01_4_2_5_2_1_1 + MIX_10_4_6_3_2_1_1 + MIX_11_4_5_3_1 + break; + case 98: + MIX_00_4_0_3_2_1_1 + MIX_01_4_2_5_2_1_1 + MIX_10_4_3_3_1 + MIX_11_4_8_5_2_1_1 + break; + case 56: + MIX_00_4_0_1_2_1_1 + MIX_01_4_2_1_2_1_1 + MIX_10_4_7_3_1 + MIX_11_4_8_7_2_1_1 + break; + case 25: + MIX_00_4_1_3_1 + MIX_01_4_2_1_2_1_1 + MIX_10_4_6_7_2_1_1 + MIX_11_4_8_7_2_1_1 + break; + case 26: + case 31: + if (isDifferent(w[3], w[1], trY, trU, trV, trA)) + { + MIX_00_4 + } + else + { + MIX_00_4_3_1_2_1_1 + } + if (isDifferent(w[1], w[5], trY, trU, trV, trA)) + { + MIX_01_4 + } + else + { + MIX_01_4_1_5_2_1_1 + } + MIX_10_4_6_7_2_1_1 + MIX_11_4_8_7_2_1_1 + break; + case 82: + case 214: + MIX_00_4_0_3_2_1_1 + if (isDifferent(w[1], w[5], trY, trU, trV, trA)) + { + MIX_01_4 + } + else + { + MIX_01_4_1_5_2_1_1 + } + MIX_10_4_6_3_2_1_1 + if (isDifferent(w[5], w[7], trY, trU, trV, trA)) + { + MIX_11_4 + } + else + { + MIX_11_4_5_7_2_1_1 + } + break; + case 88: + case 248: + MIX_00_4_0_1_2_1_1 + MIX_01_4_2_1_2_1_1 + if (isDifferent(w[7], w[3], trY, trU, trV, trA)) + { + MIX_10_4 + } + else + { + MIX_10_4_7_3_2_1_1 + } + if (isDifferent(w[5], w[7], trY, trU, trV, trA)) + { + MIX_11_4 + } + else + { + MIX_11_4_5_7_2_1_1 + } + break; + case 74: + case 107: + if (isDifferent(w[3], w[1], trY, trU, trV, trA)) + { + MIX_00_4 + } + else + { + MIX_00_4_3_1_2_1_1 + } + MIX_01_4_2_5_2_1_1 + if (isDifferent(w[7], w[3], trY, trU, trV, trA)) + { + MIX_10_4 + } + else + { + MIX_10_4_7_3_2_1_1 + } + MIX_11_4_8_5_2_1_1 + break; + case 27: + if (isDifferent(w[3], w[1], trY, trU, trV, trA)) + { + MIX_00_4 + } + else + { + MIX_00_4_3_1_2_1_1 + } + MIX_01_4_2_3_1 + MIX_10_4_6_7_2_1_1 + MIX_11_4_8_7_2_1_1 + break; + case 86: + MIX_00_4_0_3_2_1_1 + if (isDifferent(w[1], w[5], trY, trU, trV, trA)) + { + MIX_01_4 + } + else + { + MIX_01_4_1_5_2_1_1 + } + MIX_10_4_6_3_2_1_1 + MIX_11_4_8_3_1 + break; + case 216: + MIX_00_4_0_1_2_1_1 + MIX_01_4_2_1_2_1_1 + MIX_10_4_6_3_1 + if (isDifferent(w[5], w[7], trY, trU, trV, trA)) + { + MIX_11_4 + } + else + { + MIX_11_4_5_7_2_1_1 + } + break; + case 106: + MIX_00_MIX_00_4_0_3_1 + MIX_01_4_2_5_2_1_1 + if (isDifferent(w[7], w[3], trY, trU, trV, trA)) + { + MIX_10_4 + } + else + { + MIX_10_4_7_3_2_1_1 + } + MIX_11_4_8_5_2_1_1 + break; + case 30: + MIX_00_MIX_00_4_0_3_1 + if (isDifferent(w[1], w[5], trY, trU, trV, trA)) + { + MIX_01_4 + } + else + { + MIX_01_4_1_5_2_1_1 + } + MIX_10_4_6_7_2_1_1 + MIX_11_4_8_7_2_1_1 + break; + case 210: + MIX_00_4_0_3_2_1_1 + MIX_01_4_2_3_1 + MIX_10_4_6_3_2_1_1 + if (isDifferent(w[5], w[7], trY, trU, trV, trA)) + { + MIX_11_4 + } + else + { + MIX_11_4_5_7_2_1_1 + } + break; + case 120: + MIX_00_4_0_1_2_1_1 + MIX_01_4_2_1_2_1_1 + if (isDifferent(w[7], w[3], trY, trU, trV, trA)) + { + MIX_10_4 + } + else + { + MIX_10_4_7_3_2_1_1 + } + MIX_11_4_8_3_1 + break; + case 75: + if (isDifferent(w[3], w[1], trY, trU, trV, trA)) + { + MIX_00_4 + } + else + { + MIX_00_4_3_1_2_1_1 + } + MIX_01_4_2_5_2_1_1 + MIX_10_4_6_3_1 + MIX_11_4_8_5_2_1_1 + break; + case 29: + MIX_00_4_1_3_1 + MIX_01_4_1_3_1 + MIX_10_4_6_7_2_1_1 + MIX_11_4_8_7_2_1_1 + break; + case 198: + MIX_00_4_0_3_2_1_1 + MIX_01_4_5_3_1 + MIX_10_4_6_3_2_1_1 + MIX_11_4_5_3_1 + break; + case 184: + MIX_00_4_0_1_2_1_1 + MIX_01_4_2_1_2_1_1 + MIX_10_4_7_3_1 + MIX_11_4_7_3_1 + break; + case 99: + MIX_00_4_3_3_1 + MIX_01_4_2_5_2_1_1 + MIX_10_4_3_3_1 + MIX_11_4_8_5_2_1_1 + break; + case 57: + MIX_00_4_1_3_1 + MIX_01_4_2_1_2_1_1 + MIX_10_4_7_3_1 + MIX_11_4_8_7_2_1_1 + break; + case 71: + MIX_00_4_3_3_1 + MIX_01_4_5_3_1 + MIX_10_4_6_3_2_1_1 + MIX_11_4_8_5_2_1_1 + break; + case 156: + MIX_00_4_0_1_2_1_1 + MIX_01_4_1_3_1 + MIX_10_4_6_7_2_1_1 + MIX_11_4_7_3_1 + break; + case 226: + MIX_00_4_0_3_2_1_1 + MIX_01_4_2_5_2_1_1 + MIX_10_4_3_3_1 + MIX_11_4_5_3_1 + break; + case 60: + MIX_00_4_0_1_2_1_1 + MIX_01_4_1_3_1 + MIX_10_4_7_3_1 + MIX_11_4_8_7_2_1_1 + break; + case 195: + MIX_00_4_3_3_1 + MIX_01_4_2_5_2_1_1 + MIX_10_4_6_3_2_1_1 + MIX_11_4_5_3_1 + break; + case 102: + MIX_00_4_0_3_2_1_1 + MIX_01_4_5_3_1 + MIX_10_4_3_3_1 + MIX_11_4_8_5_2_1_1 + break; + case 153: + MIX_00_4_1_3_1 + MIX_01_4_2_1_2_1_1 + MIX_10_4_6_7_2_1_1 + MIX_11_4_7_3_1 + break; + case 58: + if (isDifferent(w[3], w[1], trY, trU, trV, trA)) + { + MIX_00_MIX_00_4_0_3_1 + } + else + { + MIX_00_4_3_1_6_1_1 + } + if (isDifferent(w[1], w[5], trY, trU, trV, trA)) + { + MIX_01_4_2_3_1 + } + else + { + MIX_01_4_1_5_6_1_1 + } + MIX_10_4_7_3_1 + MIX_11_4_8_7_2_1_1 + break; + case 83: + MIX_00_4_3_3_1 + if (isDifferent(w[1], w[5], trY, trU, trV, trA)) + { + MIX_01_4_2_3_1 + } + else + { + MIX_01_4_1_5_6_1_1 + } + MIX_10_4_6_3_2_1_1 + if (isDifferent(w[5], w[7], trY, trU, trV, trA)) + { + MIX_11_4_8_3_1 + } + else + { + MIX_11_4_5_7_6_1_1 + } + break; + case 92: + MIX_00_4_0_1_2_1_1 + MIX_01_4_1_3_1 + if (isDifferent(w[7], w[3], trY, trU, trV, trA)) + { + MIX_10_4_6_3_1 + } + else + { + MIX_10_4_7_3_6_1_1 + } + if (isDifferent(w[5], w[7], trY, trU, trV, trA)) + { + MIX_11_4_8_3_1 + } + else + { + MIX_11_4_5_7_6_1_1 + } + break; + case 202: + if (isDifferent(w[3], w[1], trY, trU, trV, trA)) + { + MIX_00_MIX_00_4_0_3_1 + } + else + { + MIX_00_4_3_1_6_1_1 + } + MIX_01_4_2_5_2_1_1 + if (isDifferent(w[7], w[3], trY, trU, trV, trA)) + { + MIX_10_4_6_3_1 + } + else + { + MIX_10_4_7_3_6_1_1 + } + MIX_11_4_5_3_1 + break; + case 78: + if (isDifferent(w[3], w[1], trY, trU, trV, trA)) + { + MIX_00_MIX_00_4_0_3_1 + } + else + { + MIX_00_4_3_1_6_1_1 + } + MIX_01_4_5_3_1 + if (isDifferent(w[7], w[3], trY, trU, trV, trA)) + { + MIX_10_4_6_3_1 + } + else + { + MIX_10_4_7_3_6_1_1 + } + MIX_11_4_8_5_2_1_1 + break; + case 154: + if (isDifferent(w[3], w[1], trY, trU, trV, trA)) + { + MIX_00_MIX_00_4_0_3_1 + } + else + { + MIX_00_4_3_1_6_1_1 + } + if (isDifferent(w[1], w[5], trY, trU, trV, trA)) + { + MIX_01_4_2_3_1 + } + else + { + MIX_01_4_1_5_6_1_1 + } + MIX_10_4_6_7_2_1_1 + MIX_11_4_7_3_1 + break; + case 114: + MIX_00_4_0_3_2_1_1 + if (isDifferent(w[1], w[5], trY, trU, trV, trA)) + { + MIX_01_4_2_3_1 + } + else + { + MIX_01_4_1_5_6_1_1 + } + MIX_10_4_3_3_1 + if (isDifferent(w[5], w[7], trY, trU, trV, trA)) + { + MIX_11_4_8_3_1 + } + else + { + MIX_11_4_5_7_6_1_1 + } + break; + case 89: + MIX_00_4_1_3_1 + MIX_01_4_2_1_2_1_1 + if (isDifferent(w[7], w[3], trY, trU, trV, trA)) + { + MIX_10_4_6_3_1 + } + else + { + MIX_10_4_7_3_6_1_1 + } + if (isDifferent(w[5], w[7], trY, trU, trV, trA)) + { + MIX_11_4_8_3_1 + } + else + { + MIX_11_4_5_7_6_1_1 + } + break; + case 90: + if (isDifferent(w[3], w[1], trY, trU, trV, trA)) + { + MIX_00_MIX_00_4_0_3_1 + } + else + { + MIX_00_4_3_1_6_1_1 + } + if (isDifferent(w[1], w[5], trY, trU, trV, trA)) + { + MIX_01_4_2_3_1 + } + else + { + MIX_01_4_1_5_6_1_1 + } + if (isDifferent(w[7], w[3], trY, trU, trV, trA)) + { + MIX_10_4_6_3_1 + } + else + { + MIX_10_4_7_3_6_1_1 + } + if (isDifferent(w[5], w[7], trY, trU, trV, trA)) + { + MIX_11_4_8_3_1 + } + else + { + MIX_11_4_5_7_6_1_1 + } + break; + case 55: + case 23: + if (isDifferent(w[1], w[5], trY, trU, trV, trA)) + { + MIX_00_4_3_3_1 + MIX_01_4 + } + else + { + MIX_00_4_1_3_5_2_1 + MIX_01_4_1_5_2_3_3 + } + MIX_10_4_7_3_2_1_1 + MIX_11_4_8_7_2_1_1 + break; + case 182: + case 150: + MIX_00_4_0_3_2_1_1 + if (isDifferent(w[1], w[5], trY, trU, trV, trA)) + { + MIX_01_4 + MIX_11_4_7_3_1 + } + else + { + MIX_01_4_1_5_2_3_3 + MIX_11_4_5_7_5_2_1 + } + MIX_10_4_7_3_2_1_1 + break; + case 213: + case 212: + MIX_00_4_3_1_2_1_1 + if (isDifferent(w[5], w[7], trY, trU, trV, trA)) + { + MIX_01_4_1_3_1 + MIX_11_4 + } + else + { + MIX_01_4_5_1_5_2_1 + MIX_11_4_5_7_2_3_3 + } + MIX_10_4_6_3_2_1_1 + break; + case 241: + case 240: + MIX_00_4_3_1_2_1_1 + MIX_01_4_2_1_2_1_1 + if (isDifferent(w[5], w[7], trY, trU, trV, trA)) + { + MIX_10_4_3_3_1 + MIX_11_4 + } + else + { + MIX_10_4_7_3_5_2_1 + MIX_11_4_5_7_2_3_3 + } + break; + case 236: + case 232: + MIX_00_4_0_1_2_1_1 + MIX_01_4_1_5_2_1_1 + if (isDifferent(w[7], w[3], trY, trU, trV, trA)) + { + MIX_10_4 + MIX_11_4_5_3_1 + } + else + { + MIX_10_4_7_3_2_3_3 + MIX_11_4_7_5_5_2_1 + } + break; + case 109: + case 105: + if (isDifferent(w[7], w[3], trY, trU, trV, trA)) + { + MIX_00_4_1_3_1 + MIX_10_4 + } + else + { + MIX_00_4_3_1_5_2_1 + MIX_10_4_7_3_2_3_3 + } + MIX_01_4_1_5_2_1_1 + MIX_11_4_8_5_2_1_1 + break; + case 171: + case 43: + if (isDifferent(w[3], w[1], trY, trU, trV, trA)) + { + MIX_00_4 + MIX_10_4_7_3_1 + } + else + { + MIX_00_4_3_1_2_3_3 + MIX_10_4_3_7_5_2_1 + } + MIX_01_4_2_5_2_1_1 + MIX_11_4_5_7_2_1_1 + break; + case 143: + case 15: + if (isDifferent(w[3], w[1], trY, trU, trV, trA)) + { + MIX_00_4 + MIX_01_4_5_3_1 + } + else + { + MIX_00_4_3_1_2_3_3 + MIX_01_4_1_5_5_2_1 + } + MIX_10_4_6_7_2_1_1 + MIX_11_4_5_7_2_1_1 + break; + case 124: + MIX_00_4_0_1_2_1_1 + MIX_01_4_1_3_1 + if (isDifferent(w[7], w[3], trY, trU, trV, trA)) + { + MIX_10_4 + } + else + { + MIX_10_4_7_3_2_1_1 + } + MIX_11_4_8_3_1 + break; + case 203: + if (isDifferent(w[3], w[1], trY, trU, trV, trA)) + { + MIX_00_4 + } + else + { + MIX_00_4_3_1_2_1_1 + } + MIX_01_4_2_5_2_1_1 + MIX_10_4_6_3_1 + MIX_11_4_5_3_1 + break; + case 62: + MIX_00_MIX_00_4_0_3_1 + if (isDifferent(w[1], w[5], trY, trU, trV, trA)) + { + MIX_01_4 + } + else + { + MIX_01_4_1_5_2_1_1 + } + MIX_10_4_7_3_1 + MIX_11_4_8_7_2_1_1 + break; + case 211: + MIX_00_4_3_3_1 + MIX_01_4_2_3_1 + MIX_10_4_6_3_2_1_1 + if (isDifferent(w[5], w[7], trY, trU, trV, trA)) + { + MIX_11_4 + } + else + { + MIX_11_4_5_7_2_1_1 + } + break; + case 118: + MIX_00_4_0_3_2_1_1 + if (isDifferent(w[1], w[5], trY, trU, trV, trA)) + { + MIX_01_4 + } + else + { + MIX_01_4_1_5_2_1_1 + } + MIX_10_4_3_3_1 + MIX_11_4_8_3_1 + break; + case 217: + MIX_00_4_1_3_1 + MIX_01_4_2_1_2_1_1 + MIX_10_4_6_3_1 + if (isDifferent(w[5], w[7], trY, trU, trV, trA)) + { + MIX_11_4 + } + else + { + MIX_11_4_5_7_2_1_1 + } + break; + case 110: + MIX_00_MIX_00_4_0_3_1 + MIX_01_4_5_3_1 + if (isDifferent(w[7], w[3], trY, trU, trV, trA)) + { + MIX_10_4 + } + else + { + MIX_10_4_7_3_2_1_1 + } + MIX_11_4_8_5_2_1_1 + break; + case 155: + if (isDifferent(w[3], w[1], trY, trU, trV, trA)) + { + MIX_00_4 + } + else + { + MIX_00_4_3_1_2_1_1 + } + MIX_01_4_2_3_1 + MIX_10_4_6_7_2_1_1 + MIX_11_4_7_3_1 + break; + case 188: + MIX_00_4_0_1_2_1_1 + MIX_01_4_1_3_1 + MIX_10_4_7_3_1 + MIX_11_4_7_3_1 + break; + case 185: + MIX_00_4_1_3_1 + MIX_01_4_2_1_2_1_1 + MIX_10_4_7_3_1 + MIX_11_4_7_3_1 + break; + case 61: + MIX_00_4_1_3_1 + MIX_01_4_1_3_1 + MIX_10_4_7_3_1 + MIX_11_4_8_7_2_1_1 + break; + case 157: + MIX_00_4_1_3_1 + MIX_01_4_1_3_1 + MIX_10_4_6_7_2_1_1 + MIX_11_4_7_3_1 + break; + case 103: + MIX_00_4_3_3_1 + MIX_01_4_5_3_1 + MIX_10_4_3_3_1 + MIX_11_4_8_5_2_1_1 + break; + case 227: + MIX_00_4_3_3_1 + MIX_01_4_2_5_2_1_1 + MIX_10_4_3_3_1 + MIX_11_4_5_3_1 + break; + case 230: + MIX_00_4_0_3_2_1_1 + MIX_01_4_5_3_1 + MIX_10_4_3_3_1 + MIX_11_4_5_3_1 + break; + case 199: + MIX_00_4_3_3_1 + MIX_01_4_5_3_1 + MIX_10_4_6_3_2_1_1 + MIX_11_4_5_3_1 + break; + case 220: + MIX_00_4_0_1_2_1_1 + MIX_01_4_1_3_1 + if (isDifferent(w[7], w[3], trY, trU, trV, trA)) + { + MIX_10_4_6_3_1 + } + else + { + MIX_10_4_7_3_6_1_1 + } + if (isDifferent(w[5], w[7], trY, trU, trV, trA)) + { + MIX_11_4 + } + else + { + MIX_11_4_5_7_2_1_1 + } + break; + case 158: + if (isDifferent(w[3], w[1], trY, trU, trV, trA)) + { + MIX_00_MIX_00_4_0_3_1 + } + else + { + MIX_00_4_3_1_6_1_1 + } + if (isDifferent(w[1], w[5], trY, trU, trV, trA)) + { + MIX_01_4 + } + else + { + MIX_01_4_1_5_2_1_1 + } + MIX_10_4_6_7_2_1_1 + MIX_11_4_7_3_1 + break; + case 234: + if (isDifferent(w[3], w[1], trY, trU, trV, trA)) + { + MIX_00_MIX_00_4_0_3_1 + } + else + { + MIX_00_4_3_1_6_1_1 + } + MIX_01_4_2_5_2_1_1 + if (isDifferent(w[7], w[3], trY, trU, trV, trA)) + { + MIX_10_4 + } + else + { + MIX_10_4_7_3_2_1_1 + } + MIX_11_4_5_3_1 + break; + case 242: + MIX_00_4_0_3_2_1_1 + if (isDifferent(w[1], w[5], trY, trU, trV, trA)) + { + MIX_01_4_2_3_1 + } + else + { + MIX_01_4_1_5_6_1_1 + } + MIX_10_4_3_3_1 + if (isDifferent(w[5], w[7], trY, trU, trV, trA)) + { + MIX_11_4 + } + else + { + MIX_11_4_5_7_2_1_1 + } + break; + case 59: + if (isDifferent(w[3], w[1], trY, trU, trV, trA)) + { + MIX_00_4 + } + else + { + MIX_00_4_3_1_2_1_1 + } + if (isDifferent(w[1], w[5], trY, trU, trV, trA)) + { + MIX_01_4_2_3_1 + } + else + { + MIX_01_4_1_5_6_1_1 + } + MIX_10_4_7_3_1 + MIX_11_4_8_7_2_1_1 + break; + case 121: + MIX_00_4_1_3_1 + MIX_01_4_2_1_2_1_1 + if (isDifferent(w[7], w[3], trY, trU, trV, trA)) + { + MIX_10_4 + } + else + { + MIX_10_4_7_3_2_1_1 + } + if (isDifferent(w[5], w[7], trY, trU, trV, trA)) + { + MIX_11_4_8_3_1 + } + else + { + MIX_11_4_5_7_6_1_1 + } + break; + case 87: + MIX_00_4_3_3_1 + if (isDifferent(w[1], w[5], trY, trU, trV, trA)) + { + MIX_01_4 + } + else + { + MIX_01_4_1_5_2_1_1 + } + MIX_10_4_6_3_2_1_1 + if (isDifferent(w[5], w[7], trY, trU, trV, trA)) + { + MIX_11_4_8_3_1 + } + else + { + MIX_11_4_5_7_6_1_1 + } + break; + case 79: + if (isDifferent(w[3], w[1], trY, trU, trV, trA)) + { + MIX_00_4 + } + else + { + MIX_00_4_3_1_2_1_1 + } + MIX_01_4_5_3_1 + if (isDifferent(w[7], w[3], trY, trU, trV, trA)) + { + MIX_10_4_6_3_1 + } + else + { + MIX_10_4_7_3_6_1_1 + } + MIX_11_4_8_5_2_1_1 + break; + case 122: + if (isDifferent(w[3], w[1], trY, trU, trV, trA)) + { + MIX_00_MIX_00_4_0_3_1 + } + else + { + MIX_00_4_3_1_6_1_1 + } + if (isDifferent(w[1], w[5], trY, trU, trV, trA)) + { + MIX_01_4_2_3_1 + } + else + { + MIX_01_4_1_5_6_1_1 + } + if (isDifferent(w[7], w[3], trY, trU, trV, trA)) + { + MIX_10_4 + } + else + { + MIX_10_4_7_3_2_1_1 + } + if (isDifferent(w[5], w[7], trY, trU, trV, trA)) + { + MIX_11_4_8_3_1 + } + else + { + MIX_11_4_5_7_6_1_1 + } + break; + case 94: + if (isDifferent(w[3], w[1], trY, trU, trV, trA)) + { + MIX_00_MIX_00_4_0_3_1 + } + else + { + MIX_00_4_3_1_6_1_1 + } + if (isDifferent(w[1], w[5], trY, trU, trV, trA)) + { + MIX_01_4 + } + else + { + MIX_01_4_1_5_2_1_1 + } + if (isDifferent(w[7], w[3], trY, trU, trV, trA)) + { + MIX_10_4_6_3_1 + } + else + { + MIX_10_4_7_3_6_1_1 + } + if (isDifferent(w[5], w[7], trY, trU, trV, trA)) + { + MIX_11_4_8_3_1 + } + else + { + MIX_11_4_5_7_6_1_1 + } + break; + case 218: + if (isDifferent(w[3], w[1], trY, trU, trV, trA)) + { + MIX_00_MIX_00_4_0_3_1 + } + else + { + MIX_00_4_3_1_6_1_1 + } + if (isDifferent(w[1], w[5], trY, trU, trV, trA)) + { + MIX_01_4_2_3_1 + } + else + { + MIX_01_4_1_5_6_1_1 + } + if (isDifferent(w[7], w[3], trY, trU, trV, trA)) + { + MIX_10_4_6_3_1 + } + else + { + MIX_10_4_7_3_6_1_1 + } + if (isDifferent(w[5], w[7], trY, trU, trV, trA)) + { + MIX_11_4 + } + else + { + MIX_11_4_5_7_2_1_1 + } + break; + case 91: + if (isDifferent(w[3], w[1], trY, trU, trV, trA)) + { + MIX_00_4 + } + else + { + MIX_00_4_3_1_2_1_1 + } + if (isDifferent(w[1], w[5], trY, trU, trV, trA)) + { + MIX_01_4_2_3_1 + } + else + { + MIX_01_4_1_5_6_1_1 + } + if (isDifferent(w[7], w[3], trY, trU, trV, trA)) + { + MIX_10_4_6_3_1 + } + else + { + MIX_10_4_7_3_6_1_1 + } + if (isDifferent(w[5], w[7], trY, trU, trV, trA)) + { + MIX_11_4_8_3_1 + } + else + { + MIX_11_4_5_7_6_1_1 + } + break; + case 229: + MIX_00_4_3_1_2_1_1 + MIX_01_4_1_5_2_1_1 + MIX_10_4_3_3_1 + MIX_11_4_5_3_1 + break; + case 167: + MIX_00_4_3_3_1 + MIX_01_4_5_3_1 + MIX_10_4_7_3_2_1_1 + MIX_11_4_5_7_2_1_1 + break; + case 173: + MIX_00_4_1_3_1 + MIX_01_4_1_5_2_1_1 + MIX_10_4_7_3_1 + MIX_11_4_5_7_2_1_1 + break; + case 181: + MIX_00_4_3_1_2_1_1 + MIX_01_4_1_3_1 + MIX_10_4_7_3_2_1_1 + MIX_11_4_7_3_1 + break; + case 186: + if (isDifferent(w[3], w[1], trY, trU, trV, trA)) + { + MIX_00_MIX_00_4_0_3_1 + } + else + { + MIX_00_4_3_1_6_1_1 + } + if (isDifferent(w[1], w[5], trY, trU, trV, trA)) + { + MIX_01_4_2_3_1 + } + else + { + MIX_01_4_1_5_6_1_1 + } + MIX_10_4_7_3_1 + MIX_11_4_7_3_1 + break; + case 115: + MIX_00_4_3_3_1 + if (isDifferent(w[1], w[5], trY, trU, trV, trA)) + { + MIX_01_4_2_3_1 + } + else + { + MIX_01_4_1_5_6_1_1 + } + MIX_10_4_3_3_1 + if (isDifferent(w[5], w[7], trY, trU, trV, trA)) + { + MIX_11_4_8_3_1 + } + else + { + MIX_11_4_5_7_6_1_1 + } + break; + case 93: + MIX_00_4_1_3_1 + MIX_01_4_1_3_1 + if (isDifferent(w[7], w[3], trY, trU, trV, trA)) + { + MIX_10_4_6_3_1 + } + else + { + MIX_10_4_7_3_6_1_1 + } + if (isDifferent(w[5], w[7], trY, trU, trV, trA)) + { + MIX_11_4_8_3_1 + } + else + { + MIX_11_4_5_7_6_1_1 + } + break; + case 206: + if (isDifferent(w[3], w[1], trY, trU, trV, trA)) + { + MIX_00_MIX_00_4_0_3_1 + } + else + { + MIX_00_4_3_1_6_1_1 + } + MIX_01_4_5_3_1 + if (isDifferent(w[7], w[3], trY, trU, trV, trA)) + { + MIX_10_4_6_3_1 + } + else + { + MIX_10_4_7_3_6_1_1 + } + MIX_11_4_5_3_1 + break; + case 205: + case 201: + MIX_00_4_1_3_1 + MIX_01_4_1_5_2_1_1 + if (isDifferent(w[7], w[3], trY, trU, trV, trA)) + { + MIX_10_4_6_3_1 + } + else + { + MIX_10_4_7_3_6_1_1 + } + MIX_11_4_5_3_1 + break; + case 174: + case 46: + if (isDifferent(w[3], w[1], trY, trU, trV, trA)) + { + MIX_00_MIX_00_4_0_3_1 + } + else + { + MIX_00_4_3_1_6_1_1 + } + MIX_01_4_5_3_1 + MIX_10_4_7_3_1 + MIX_11_4_5_7_2_1_1 + break; + case 179: + case 147: + MIX_00_4_3_3_1 + if (isDifferent(w[1], w[5], trY, trU, trV, trA)) + { + MIX_01_4_2_3_1 + } + else + { + MIX_01_4_1_5_6_1_1 + } + MIX_10_4_7_3_2_1_1 + MIX_11_4_7_3_1 + break; + case 117: + case 116: + MIX_00_4_3_1_2_1_1 + MIX_01_4_1_3_1 + MIX_10_4_3_3_1 + if (isDifferent(w[5], w[7], trY, trU, trV, trA)) + { + MIX_11_4_8_3_1 + } + else + { + MIX_11_4_5_7_6_1_1 + } + break; + case 189: + MIX_00_4_1_3_1 + MIX_01_4_1_3_1 + MIX_10_4_7_3_1 + MIX_11_4_7_3_1 + break; + case 231: + MIX_00_4_3_3_1 + MIX_01_4_5_3_1 + MIX_10_4_3_3_1 + MIX_11_4_5_3_1 + break; + case 126: + MIX_00_MIX_00_4_0_3_1 + if (isDifferent(w[1], w[5], trY, trU, trV, trA)) + { + MIX_01_4 + } + else + { + MIX_01_4_1_5_2_1_1 + } + if (isDifferent(w[7], w[3], trY, trU, trV, trA)) + { + MIX_10_4 + } + else + { + MIX_10_4_7_3_2_1_1 + } + MIX_11_4_8_3_1 + break; + case 219: + if (isDifferent(w[3], w[1], trY, trU, trV, trA)) + { + MIX_00_4 + } + else + { + MIX_00_4_3_1_2_1_1 + } + MIX_01_4_2_3_1 + MIX_10_4_6_3_1 + if (isDifferent(w[5], w[7], trY, trU, trV, trA)) + { + MIX_11_4 + } + else + { + MIX_11_4_5_7_2_1_1 + } + break; + case 125: + if (isDifferent(w[7], w[3], trY, trU, trV, trA)) + { + MIX_00_4_1_3_1 + MIX_10_4 + } + else + { + MIX_00_4_3_1_5_2_1 + MIX_10_4_7_3_2_3_3 + } + MIX_01_4_1_3_1 + MIX_11_4_8_3_1 + break; + case 221: + MIX_00_4_1_3_1 + if (isDifferent(w[5], w[7], trY, trU, trV, trA)) + { + MIX_01_4_1_3_1 + MIX_11_4 + } + else + { + MIX_01_4_5_1_5_2_1 + MIX_11_4_5_7_2_3_3 + } + MIX_10_4_6_3_1 + break; + case 207: + if (isDifferent(w[3], w[1], trY, trU, trV, trA)) + { + MIX_00_4 + MIX_01_4_5_3_1 + } + else + { + MIX_00_4_3_1_2_3_3 + MIX_01_4_1_5_5_2_1 + } + MIX_10_4_6_3_1 + MIX_11_4_5_3_1 + break; + case 238: + MIX_00_MIX_00_4_0_3_1 + MIX_01_4_5_3_1 + if (isDifferent(w[7], w[3], trY, trU, trV, trA)) + { + MIX_10_4 + MIX_11_4_5_3_1 + } + else + { + MIX_10_4_7_3_2_3_3 + MIX_11_4_7_5_5_2_1 + } + break; + case 190: + MIX_00_MIX_00_4_0_3_1 + if (isDifferent(w[1], w[5], trY, trU, trV, trA)) + { + MIX_01_4 + MIX_11_4_7_3_1 + } + else + { + MIX_01_4_1_5_2_3_3 + MIX_11_4_5_7_5_2_1 + } + MIX_10_4_7_3_1 + break; + case 187: + if (isDifferent(w[3], w[1], trY, trU, trV, trA)) + { + MIX_00_4 + MIX_10_4_7_3_1 + } + else + { + MIX_00_4_3_1_2_3_3 + MIX_10_4_3_7_5_2_1 + } + MIX_01_4_2_3_1 + MIX_11_4_7_3_1 + break; + case 243: + MIX_00_4_3_3_1 + MIX_01_4_2_3_1 + if (isDifferent(w[5], w[7], trY, trU, trV, trA)) + { + MIX_10_4_3_3_1 + MIX_11_4 + } + else + { + MIX_10_4_7_3_5_2_1 + MIX_11_4_5_7_2_3_3 + } + break; + case 119: + if (isDifferent(w[1], w[5], trY, trU, trV, trA)) + { + MIX_00_4_3_3_1 + MIX_01_4 + } + else + { + MIX_00_4_1_3_5_2_1 + MIX_01_4_1_5_2_3_3 + } + MIX_10_4_3_3_1 + MIX_11_4_8_3_1 + break; + case 237: + case 233: + MIX_00_4_1_3_1 + MIX_01_4_1_5_2_1_1 + if (isDifferent(w[7], w[3], trY, trU, trV, trA)) + { + MIX_10_4 + } + else + { + MIX_10_4_6_3_10 + } + MIX_11_4_5_3_1 + break; + case 175: + case 47: + if (isDifferent(w[3], w[1], trY, trU, trV, trA)) + { + MIX_00_4 + } + else + { + MIX_00_MIX_00_4_0_3_10 + } + MIX_01_4_5_3_1 + MIX_10_4_7_3_1 + MIX_11_4_5_7_2_1_1 + break; + case 183: + case 151: + MIX_00_4_3_3_1 + if (isDifferent(w[1], w[5], trY, trU, trV, trA)) + { + MIX_01_4 + } + else + { + MIX_01_4_2_3_10 + } + MIX_10_4_7_3_2_1_1 + MIX_11_4_7_3_1 + break; + case 245: + case 244: + MIX_00_4_3_1_2_1_1 + MIX_01_4_1_3_1 + MIX_10_4_3_3_1 + if (isDifferent(w[5], w[7], trY, trU, trV, trA)) + { + MIX_11_4 + } + else + { + MIX_11_4_8_3_10 + } + break; + case 250: + MIX_00_MIX_00_4_0_3_1 + MIX_01_4_2_3_1 + if (isDifferent(w[7], w[3], trY, trU, trV, trA)) + { + MIX_10_4 + } + else + { + MIX_10_4_7_3_2_1_1 + } + if (isDifferent(w[5], w[7], trY, trU, trV, trA)) + { + MIX_11_4 + } + else + { + MIX_11_4_5_7_2_1_1 + } + break; + case 123: + if (isDifferent(w[3], w[1], trY, trU, trV, trA)) + { + MIX_00_4 + } + else + { + MIX_00_4_3_1_2_1_1 + } + MIX_01_4_2_3_1 + if (isDifferent(w[7], w[3], trY, trU, trV, trA)) + { + MIX_10_4 + } + else + { + MIX_10_4_7_3_2_1_1 + } + MIX_11_4_8_3_1 + break; + case 95: + if (isDifferent(w[3], w[1], trY, trU, trV, trA)) + { + MIX_00_4 + } + else + { + MIX_00_4_3_1_2_1_1 + } + if (isDifferent(w[1], w[5], trY, trU, trV, trA)) + { + MIX_01_4 + } + else + { + MIX_01_4_1_5_2_1_1 + } + MIX_10_4_6_3_1 + MIX_11_4_8_3_1 + break; + case 222: + MIX_00_MIX_00_4_0_3_1 + if (isDifferent(w[1], w[5], trY, trU, trV, trA)) + { + MIX_01_4 + } + else + { + MIX_01_4_1_5_2_1_1 + } + MIX_10_4_6_3_1 + if (isDifferent(w[5], w[7], trY, trU, trV, trA)) + { + MIX_11_4 + } + else + { + MIX_11_4_5_7_2_1_1 + } + break; + case 252: + MIX_00_4_0_1_2_1_1 + MIX_01_4_1_3_1 + if (isDifferent(w[7], w[3], trY, trU, trV, trA)) + { + MIX_10_4 + } + else + { + MIX_10_4_7_3_2_1_1 + } + if (isDifferent(w[5], w[7], trY, trU, trV, trA)) + { + MIX_11_4 + } + else + { + MIX_11_4_8_3_10 + } + break; + case 249: + MIX_00_4_1_3_1 + MIX_01_4_2_1_2_1_1 + if (isDifferent(w[7], w[3], trY, trU, trV, trA)) + { + MIX_10_4 + } + else + { + MIX_10_4_6_3_10 + } + if (isDifferent(w[5], w[7], trY, trU, trV, trA)) + { + MIX_11_4 + } + else + { + MIX_11_4_5_7_2_1_1 + } + break; + case 235: + if (isDifferent(w[3], w[1], trY, trU, trV, trA)) + { + MIX_00_4 + } + else + { + MIX_00_4_3_1_2_1_1 + } + MIX_01_4_2_5_2_1_1 + if (isDifferent(w[7], w[3], trY, trU, trV, trA)) + { + MIX_10_4 + } + else + { + MIX_10_4_6_3_10 + } + MIX_11_4_5_3_1 + break; + case 111: + if (isDifferent(w[3], w[1], trY, trU, trV, trA)) + { + MIX_00_4 + } + else + { + MIX_00_MIX_00_4_0_3_10 + } + MIX_01_4_5_3_1 + if (isDifferent(w[7], w[3], trY, trU, trV, trA)) + { + MIX_10_4 + } + else + { + MIX_10_4_7_3_2_1_1 + } + MIX_11_4_8_5_2_1_1 + break; + case 63: + if (isDifferent(w[3], w[1], trY, trU, trV, trA)) + { + MIX_00_4 + } + else + { + MIX_00_MIX_00_4_0_3_10 + } + if (isDifferent(w[1], w[5], trY, trU, trV, trA)) + { + MIX_01_4 + } + else + { + MIX_01_4_1_5_2_1_1 + } + MIX_10_4_7_3_1 + MIX_11_4_8_7_2_1_1 + break; + case 159: + if (isDifferent(w[3], w[1], trY, trU, trV, trA)) + { + MIX_00_4 + } + else + { + MIX_00_4_3_1_2_1_1 + } + if (isDifferent(w[1], w[5], trY, trU, trV, trA)) + { + MIX_01_4 + } + else + { + MIX_01_4_2_3_10 + } + MIX_10_4_6_7_2_1_1 + MIX_11_4_7_3_1 + break; + case 215: + MIX_00_4_3_3_1 + if (isDifferent(w[1], w[5], trY, trU, trV, trA)) + { + MIX_01_4 + } + else + { + MIX_01_4_2_3_10 + } + MIX_10_4_6_3_2_1_1 + if (isDifferent(w[5], w[7], trY, trU, trV, trA)) + { + MIX_11_4 + } + else + { + MIX_11_4_5_7_2_1_1 + } + break; + case 246: + MIX_00_4_0_3_2_1_1 + if (isDifferent(w[1], w[5], trY, trU, trV, trA)) + { + MIX_01_4 + } + else + { + MIX_01_4_1_5_2_1_1 + } + MIX_10_4_3_3_1 + if (isDifferent(w[5], w[7], trY, trU, trV, trA)) + { + MIX_11_4 + } + else + { + MIX_11_4_8_3_10 + } + break; + case 254: + MIX_00_MIX_00_4_0_3_1 + if (isDifferent(w[1], w[5], trY, trU, trV, trA)) + { + MIX_01_4 + } + else + { + MIX_01_4_1_5_2_1_1 + } + if (isDifferent(w[7], w[3], trY, trU, trV, trA)) + { + MIX_10_4 + } + else + { + MIX_10_4_7_3_2_1_1 + } + if (isDifferent(w[5], w[7], trY, trU, trV, trA)) + { + MIX_11_4 + } + else + { + MIX_11_4_8_3_10 + } + break; + case 253: + MIX_00_4_1_3_1 + MIX_01_4_1_3_1 + if (isDifferent(w[7], w[3], trY, trU, trV, trA)) + { + MIX_10_4 + } + else + { + MIX_10_4_6_3_10 + } + if (isDifferent(w[5], w[7], trY, trU, trV, trA)) + { + MIX_11_4 + } + else + { + MIX_11_4_8_3_10 + } + break; + case 251: + if (isDifferent(w[3], w[1], trY, trU, trV, trA)) + { + MIX_00_4 + } + else + { + MIX_00_4_3_1_2_1_1 + } + MIX_01_4_2_3_1 + if (isDifferent(w[7], w[3], trY, trU, trV, trA)) + { + MIX_10_4 + } + else + { + MIX_10_4_6_3_10 + } + if (isDifferent(w[5], w[7], trY, trU, trV, trA)) + { + MIX_11_4 + } + else + { + MIX_11_4_5_7_2_1_1 + } + break; + case 239: + if (isDifferent(w[3], w[1], trY, trU, trV, trA)) + { + MIX_00_4 + } + else + { + MIX_00_MIX_00_4_0_3_10 + } + MIX_01_4_5_3_1 + if (isDifferent(w[7], w[3], trY, trU, trV, trA)) + { + MIX_10_4 + } + else + { + MIX_10_4_6_3_10 + } + MIX_11_4_5_3_1 + break; + case 127: + if (isDifferent(w[3], w[1], trY, trU, trV, trA)) + { + MIX_00_4 + } + else + { + MIX_00_MIX_00_4_0_3_10 + } + if (isDifferent(w[1], w[5], trY, trU, trV, trA)) + { + MIX_01_4 + } + else + { + MIX_01_4_1_5_2_1_1 + } + if (isDifferent(w[7], w[3], trY, trU, trV, trA)) + { + MIX_10_4 + } + else + { + MIX_10_4_7_3_2_1_1 + } + MIX_11_4_8_3_1 + break; + case 191: + if (isDifferent(w[3], w[1], trY, trU, trV, trA)) + { + MIX_00_4 + } + else + { + MIX_00_MIX_00_4_0_3_10 + } + if (isDifferent(w[1], w[5], trY, trU, trV, trA)) + { + MIX_01_4 + } + else + { + MIX_01_4_2_3_10 + } + MIX_10_4_7_3_1 + MIX_11_4_7_3_1 + break; + case 223: + if (isDifferent(w[3], w[1], trY, trU, trV, trA)) + { + MIX_00_4 + } + else + { + MIX_00_4_3_1_2_1_1 + } + if (isDifferent(w[1], w[5], trY, trU, trV, trA)) + { + MIX_01_4 + } + else + { + MIX_01_4_2_3_10 + } + MIX_10_4_6_3_1 + if (isDifferent(w[5], w[7], trY, trU, trV, trA)) + { + MIX_11_4 + } + else + { + MIX_11_4_5_7_2_1_1 + } + break; + case 247: + MIX_00_4_3_3_1 + if (isDifferent(w[1], w[5], trY, trU, trV, trA)) + { + MIX_01_4 + } + else + { + MIX_01_4_2_3_10 + } + MIX_10_4_3_3_1 + if (isDifferent(w[5], w[7], trY, trU, trV, trA)) + { + MIX_11_4 + } + else + { + MIX_11_4_8_3_10 + } + break; + case 255: + if (isDifferent(w[3], w[1], trY, trU, trV, trA)) + MIX_00_4 + else + MIX_00_MIX_00_4_0_3_10 + + if (isDifferent(w[1], w[5], trY, trU, trV, trA)) + MIX_01_4 + else + MIX_01_4_2_3_10 + + if (isDifferent(w[7], w[3], trY, trU, trV, trA)) + MIX_10_4 + else + MIX_10_4_6_3_10 + + if (isDifferent(w[5], w[7], trY, trU, trV, trA)) + MIX_11_4 + else + MIX_11_4_8_3_10 + break; + } + image++; + output += 2; + } + output += lineSize; + } + + return output; +} diff --git a/core/hq2x.h b/core/hq2x.h new file mode 100644 index 0000000000..8f119d2a01 --- /dev/null +++ b/core/hq2x.h @@ -0,0 +1,19 @@ +#ifndef HQ2X_H +#define HQ2X_H + +#include "typedefs.h" + + +uint32_t *hq2x_resize( + const uint32_t *image, + uint32_t width, + uint32_t height, + uint32_t *output, + uint32_t trY = 0x30, + uint32_t trU = 0x07, + uint32_t trV = 0x06, + uint32_t trA = 0x50, + bool wrapX = false, + bool wrapY = false ); + +#endif // HQ2X_H diff --git a/core/image.cpp b/core/image.cpp index 8635aa1b29..57496683ef 100644 --- a/core/image.cpp +++ b/core/image.cpp @@ -30,7 +30,7 @@ #include "hash_map.h" #include "core/io/image_loader.h" #include "core/os/copymem.h" - +#include "hq2x.h" #include "print_string.h" #include <stdio.h> @@ -901,6 +901,44 @@ static void _generate_po2_mipmap(const uint8_t* p_src, uint8_t* p_dst, uint32_t } +void Image::expand_x2_hq2x() { + + ERR_FAIL_COND(format>=FORMAT_INDEXED); + + Format current = format; + bool mipmaps=get_mipmaps(); + if (mipmaps) { + clear_mipmaps(); + } + + if (current!=FORMAT_RGBA) + convert(FORMAT_RGBA); + + DVector<uint8_t> dest; + dest.resize(width*2*height*2*4); + + { + DVector<uint8_t>::Read r = data.read(); + DVector<uint8_t>::Write w = dest.write(); + + hq2x_resize((const uint32_t*)r.ptr(),width,height,(uint32_t*)w.ptr()); + + } + + width*=2; + height*=2; + data=dest; + + + if (current!=FORMAT_RGBA) + convert(current); + + if (mipmaps) { + generate_mipmaps(); + } + +} + void Image::shrink_x2() { ERR_FAIL_COND(format==FORMAT_INDEXED || format==FORMAT_INDEXED_ALPHA); diff --git a/core/image.h b/core/image.h index 35bbd1a684..0f0b345eb9 100644 --- a/core/image.h +++ b/core/image.h @@ -250,6 +250,7 @@ public: void resize( int p_width, int p_height, Interpolation p_interpolation=INTERPOLATE_BILINEAR ); Image resized( int p_width, int p_height, int p_interpolation=INTERPOLATE_BILINEAR ); void shrink_x2(); + void expand_x2_hq2x(); /** * Crop the image to a specific size, if larger, then the image is filled by black */ diff --git a/core/os/input.cpp b/core/os/input.cpp index 6e1e618d9a..a766ef87fc 100644 --- a/core/os/input.cpp +++ b/core/os/input.cpp @@ -60,6 +60,7 @@ void Input::_bind_methods() { ObjectTypeDB::bind_method(_MD("get_joy_name","device"),&Input::get_joy_name); ObjectTypeDB::bind_method(_MD("get_joy_guid","device"),&Input::get_joy_guid); ObjectTypeDB::bind_method(_MD("get_accelerometer"),&Input::get_accelerometer); + ObjectTypeDB::bind_method(_MD("get_magnetometer"),&Input::get_magnetometer); //ObjectTypeDB::bind_method(_MD("get_mouse_pos"),&Input::get_mouse_pos); - this is not the function you want ObjectTypeDB::bind_method(_MD("get_mouse_speed"),&Input::get_mouse_speed); ObjectTypeDB::bind_method(_MD("get_mouse_button_mask"),&Input::get_mouse_button_mask); diff --git a/core/os/input.h b/core/os/input.h index 535776f39c..46edb30aa1 100644 --- a/core/os/input.h +++ b/core/os/input.h @@ -75,6 +75,7 @@ public: virtual void warp_mouse_pos(const Vector2& p_to)=0; virtual Vector3 get_accelerometer()=0; + virtual Vector3 get_magnetometer()=0; virtual void action_press(const StringName& p_action)=0; virtual void action_release(const StringName& p_action)=0; diff --git a/doc/base/classes.xml b/doc/base/classes.xml index 81adb78e53..4893f0c483 100644 --- a/doc/base/classes.xml +++ b/doc/base/classes.xml @@ -5123,41 +5123,50 @@ </class> <class name="BackBufferCopy" inherits="Node2D" category="Core"> <brief_description> + Copies a region of the screen (or the whole screen) to a buffer so it can be accessed with the texscreen() shader instruction. </brief_description> <description> + Node for back-buffering the currently displayed screen. The region defined in the BackBufferCopy node is bufferized with the content of the screen it covers, or the entire screen according to the copy mode set. Accessing this buffer is done with the texscreen() shader instruction. </description> <methods> <method name="set_rect"> <argument index="0" name="rect" type="Rect2"> </argument> <description> + Defines the area covered by the BackBufferCopy. </description> </method> <method name="get_rect" qualifiers="const"> <return type="Rect2"> </return> <description> + Return the area covered by the BackBufferCopy. </description> </method> <method name="set_copy_mode"> <argument index="0" name="copy_mode" type="int"> </argument> <description> + Set the copy mode of the BackBufferCopy (refer to constants section). </description> </method> <method name="get_copy_mode" qualifiers="const"> <return type="int"> </return> <description> + Return the copy mode currently applied to the BackBufferCopy (refer to constants section). </description> </method> </methods> <constants> <constant name="COPY_MODE_DISABLED" value="0"> + Disables the buffering mode. This means the BackBufferCopy node will directly use the portion of screen it covers. </constant> <constant name="COPY_MODE_RECT" value="1"> + Sets the copy mode to a region. </constant> <constant name="COPY_MODE_VIEWPORT" value="2"> + Sets the copy mode to the entire screen. </constant> </constants> </class> @@ -15378,6 +15387,13 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) If the device has an accelerometer, this will return the movement. </description> </method> + <method name="get_magnetometer"> + <return type="Vector3"> + </return> + <description> + If the device has a magnetometer, this will return the magnetic field strength in micro-Tesla for all axes. + </description> + </method> <method name="get_mouse_speed" qualifiers="const"> <return type="Vector2"> </return> @@ -17742,266 +17758,314 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) </class> <class name="Light2D" inherits="Node2D" category="Core"> <brief_description> + Node that casts light in a 2D environment. </brief_description> <description> + Node that casts light in a 2D environment. Light is defined by a (usually grayscale) texture, a color, an energy value, a mode (see constants), and various other parameters (range and shadows-related). Note that Light2D can be used as a mask. </description> <methods> <method name="set_enabled"> <argument index="0" name="enabled" type="bool"> </argument> <description> + Switches the Light2D on or off, depending on the 'enabled' parameter. </description> </method> <method name="is_enabled" qualifiers="const"> <return type="bool"> </return> <description> + Return true if the Light2D is enabled, false if it is not. </description> </method> <method name="set_texture"> <argument index="0" name="texture" type="Object"> </argument> <description> + Set the texture of the Light2D. </description> </method> <method name="get_texture" qualifiers="const"> <return type="Object"> </return> <description> + Return the texture of the Light2D. </description> </method> <method name="set_texture_offset"> <argument index="0" name="texture_offset" type="Vector2"> </argument> <description> + Set the offset of the light texture. </description> </method> <method name="get_texture_offset" qualifiers="const"> <return type="Vector2"> </return> <description> + Return the offset of the light texture. </description> </method> <method name="set_color"> <argument index="0" name="color" type="Color"> </argument> <description> + Set the color of the Light2D. </description> </method> <method name="get_color" qualifiers="const"> <return type="Color"> </return> <description> + Return the color of the Light2D. </description> </method> <method name="set_height"> <argument index="0" name="height" type="float"> </argument> <description> + Set the height of the Light2D. Used with 2D normalmapping. </description> </method> <method name="get_height" qualifiers="const"> <return type="float"> </return> <description> + Return the height of the Light2D. Used with 2D normalmapping. </description> </method> <method name="set_energy"> <argument index="0" name="energy" type="float"> </argument> <description> + Set the energy value of the Light2D. The bigger the value, the stronger the light. </description> </method> <method name="get_energy" qualifiers="const"> <return type="float"> </return> <description> + Return the energy value of the Light2D. </description> </method> <method name="set_texture_scale"> <argument index="0" name="texture_scale" type="float"> </argument> <description> + Set the scale value of the light texture. </description> </method> <method name="get_texture_scale" qualifiers="const"> <return type="float"> </return> <description> + Return the scale value of the light texture. </description> </method> <method name="set_z_range_min"> <argument index="0" name="z" type="int"> </argument> <description> + Set the minimum Z value that objects of the scene have to be in order to be affected by the Light2D. </description> </method> <method name="get_z_range_min" qualifiers="const"> <return type="int"> </return> <description> + Get the minimum Z value that objects of the scene have to be in order to be affected by the Light2D. </description> </method> <method name="set_z_range_max"> <argument index="0" name="z" type="int"> </argument> <description> + Set the maximum Z value that objects of the scene can be in order to be affected by the Light2D. </description> </method> <method name="get_z_range_max" qualifiers="const"> <return type="int"> </return> <description> + Get the maximum Z value that objects of the scene can be in order to be affected by the Light2D. </description> </method> <method name="set_layer_range_min"> <argument index="0" name="layer" type="int"> </argument> <description> + Set the minimum layer value of objects of the scene that are affected by the Light2D. </description> </method> <method name="get_layer_range_min" qualifiers="const"> <return type="int"> </return> <description> + Get the minimum layer value of objects of the scene that are affected by the Light2D. </description> </method> <method name="set_layer_range_max"> <argument index="0" name="layer" type="int"> </argument> <description> + Set the maximum layer value of objects of the scene that are affected by the Light2D. </description> </method> <method name="get_layer_range_max" qualifiers="const"> <return type="int"> </return> <description> + Set the maximum layer value of objects of the scene that are affected by the Light2D. </description> </method> <method name="set_item_mask"> <argument index="0" name="item_mask" type="int"> </argument> <description> + Set the item mask of the Light2D to 'item_mask' value. </description> </method> <method name="get_item_mask" qualifiers="const"> <return type="int"> </return> <description> + Return the item mask of the Light2D. </description> </method> <method name="set_item_shadow_mask"> <argument index="0" name="item_shadow_mask" type="int"> </argument> <description> + Set the item shadow mask to 'item_shadow_mask' value. </description> </method> <method name="get_item_shadow_mask" qualifiers="const"> <return type="int"> </return> <description> + Return the item shadow mask of the Light2D. </description> </method> <method name="set_mode"> <argument index="0" name="mode" type="int"> </argument> <description> + Set the behaviour mode of the Light2D. Use constants defined in the constants section. </description> </method> <method name="get_mode" qualifiers="const"> <return type="int"> </return> <description> + Return the current mode set to the Light2D. </description> </method> <method name="set_shadow_enabled"> <argument index="0" name="enabled" type="bool"> </argument> <description> + Enable or disable shadows casting from this Light2D according to the 'enabled' parameter. </description> </method> <method name="is_shadow_enabled" qualifiers="const"> <return type="bool"> </return> <description> + Return true if shadow casting is enabled for this Light2D, else return false. </description> </method> <method name="set_shadow_buffer_size"> <argument index="0" name="size" type="int"> </argument> <description> + Set the shadow buffer size. </description> </method> <method name="get_shadow_buffer_size" qualifiers="const"> <return type="int"> </return> <description> + Return the shadow buffer size. </description> </method> <method name="set_shadow_esm_multiplier"> <argument index="0" name="multiplier" type="float"> </argument> <description> + Set the Exponential Shadow Multiplier (ESM) value of the Light2D. </description> </method> <method name="get_shadow_esm_multiplier" qualifiers="const"> <return type="float"> </return> <description> + Return the Exponential Shadow Multiplier (ESM) value of the Light2D. </description> </method> <method name="set_shadow_color"> <argument index="0" name="shadow_color" type="Color"> </argument> <description> + Set the color of casted shadows for this Light2D. </description> </method> <method name="get_shadow_color" qualifiers="const"> <return type="Color"> </return> <description> + Return the color of casted shadows for this Light2D. </description> </method> </methods> <constants> <constant name="MODE_ADD" value="0"> + Adds the value of pixels corresponding to the Light2D to the values of pixels under it. This is the common behaviour of a light. </constant> <constant name="MODE_SUB" value="1"> + Substract the value of pixels corresponding to the Light2D to the values of pixels under it, resulting in inversed light effect. </constant> <constant name="MODE_MIX" value="2"> + Mix the value of pixels corresponding to the Light2D to the values of pixels under it by linear interpolation. </constant> <constant name="MODE_MASK" value="3"> + The light texture of the Light2D is used as a mask, hiding or revealing parts of the screen underneath depending on the value of each pixel of the light (mask) texture. </constant> </constants> </class> <class name="LightOccluder2D" inherits="Node2D" category="Core"> <brief_description> + Occludes light cast by a Light2D, thus casting shadows. </brief_description> <description> + Occludes light cast by a Light2D, thus casting shadows. The LightOccluder2D must be provided with a shape (see OccluderPolygon2D) that allows the shadow to be computed. This shape affects the resulting shadow, while the shape of the representating asset shadowed does not actually affect shadows. </description> <methods> <method name="set_occluder_polygon"> <argument index="0" name="polygon" type="OccluderPolygon2D"> </argument> <description> + Set the OccluderPolygon2D that defines the LightOccluder2D. </description> </method> <method name="get_occluder_polygon" qualifiers="const"> <return type="OccluderPolygon2D"> </return> <description> + Return the OccluderPolygon2D that defines the LightOccluder2D. </description> </method> <method name="set_occluder_light_mask"> <argument index="0" name="mask" type="int"> </argument> <description> + Set the LightOccluder2D light mask. The LightOccluder2D will cast shadows only from Light2Ds that belong to the same light mask(s). </description> </method> <method name="get_occluder_light_mask" qualifiers="const"> <return type="int"> </return> <description> + Return the light mask of the LightOccluder2D. </description> </method> </methods> diff --git a/drivers/SCsub b/drivers/SCsub index 7337482628..79cbe50685 100644 --- a/drivers/SCsub +++ b/drivers/SCsub @@ -59,6 +59,8 @@ if (env['musepack']=='yes'): SConscript("mpc/SCsub"); if (env["squish"]=="yes" and env["tools"]=="yes"): SConscript("squish/SCsub"); +if (env["freetype"]!="no"): + SConscript("freetype/SCsub"); num = 0 cur_base = "" diff --git a/drivers/freetype/FTL.TXT b/drivers/freetype/FTL.TXT new file mode 100644 index 0000000000..433ab060e3 --- /dev/null +++ b/drivers/freetype/FTL.TXT @@ -0,0 +1,169 @@ + The FreeType Project LICENSE + ---------------------------- + + 2006-Jan-27 + + Copyright 1996-2002, 2006 by + David Turner, Robert Wilhelm, and Werner Lemberg + + + +Introduction +============ + + The FreeType Project is distributed in several archive packages; + some of them may contain, in addition to the FreeType font engine, + various tools and contributions which rely on, or relate to, the + FreeType Project. + + This license applies to all files found in such packages, and + which do not fall under their own explicit license. The license + affects thus the FreeType font engine, the test programs, + documentation and makefiles, at the very least. + + This license was inspired by the BSD, Artistic, and IJG + (Independent JPEG Group) licenses, which all encourage inclusion + and use of free software in commercial and freeware products + alike. As a consequence, its main points are that: + + o We don't promise that this software works. However, we will be + interested in any kind of bug reports. (`as is' distribution) + + o You can use this software for whatever you want, in parts or + full form, without having to pay us. (`royalty-free' usage) + + o You may not pretend that you wrote this software. If you use + it, or only parts of it, in a program, you must acknowledge + somewhere in your documentation that you have used the + FreeType code. (`credits') + + We specifically permit and encourage the inclusion of this + software, with or without modifications, in commercial products. + We disclaim all warranties covering The FreeType Project and + assume no liability related to The FreeType Project. + + + Finally, many people asked us for a preferred form for a + credit/disclaimer to use in compliance with this license. We thus + encourage you to use the following text: + + """ + Portions of this software are copyright © <year> The FreeType + Project (www.freetype.org). All rights reserved. + """ + + Please replace <year> with the value from the FreeType version you + actually use. + + +Legal Terms +=========== + +0. Definitions +-------------- + + Throughout this license, the terms `package', `FreeType Project', + and `FreeType archive' refer to the set of files originally + distributed by the authors (David Turner, Robert Wilhelm, and + Werner Lemberg) as the `FreeType Project', be they named as alpha, + beta or final release. + + `You' refers to the licensee, or person using the project, where + `using' is a generic term including compiling the project's source + code as well as linking it to form a `program' or `executable'. + This program is referred to as `a program using the FreeType + engine'. + + This license applies to all files distributed in the original + FreeType Project, including all source code, binaries and + documentation, unless otherwise stated in the file in its + original, unmodified form as distributed in the original archive. + If you are unsure whether or not a particular file is covered by + this license, you must contact us to verify this. + + The FreeType Project is copyright (C) 1996-2000 by David Turner, + Robert Wilhelm, and Werner Lemberg. All rights reserved except as + specified below. + +1. No Warranty +-------------- + + THE FREETYPE PROJECT IS PROVIDED `AS IS' WITHOUT WARRANTY OF ANY + KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + PURPOSE. IN NO EVENT WILL ANY OF THE AUTHORS OR COPYRIGHT HOLDERS + BE LIABLE FOR ANY DAMAGES CAUSED BY THE USE OR THE INABILITY TO + USE, OF THE FREETYPE PROJECT. + +2. Redistribution +----------------- + + This license grants a worldwide, royalty-free, perpetual and + irrevocable right and license to use, execute, perform, compile, + display, copy, create derivative works of, distribute and + sublicense the FreeType Project (in both source and object code + forms) and derivative works thereof for any purpose; and to + authorize others to exercise some or all of the rights granted + herein, subject to the following conditions: + + o Redistribution of source code must retain this license file + (`FTL.TXT') unaltered; any additions, deletions or changes to + the original files must be clearly indicated in accompanying + documentation. The copyright notices of the unaltered, + original files must be preserved in all copies of source + files. + + o Redistribution in binary form must provide a disclaimer that + states that the software is based in part of the work of the + FreeType Team, in the distribution documentation. We also + encourage you to put an URL to the FreeType web page in your + documentation, though this isn't mandatory. + + These conditions apply to any software derived from or based on + the FreeType Project, not just the unmodified files. If you use + our work, you must acknowledge us. However, no fee need be paid + to us. + +3. Advertising +-------------- + + Neither the FreeType authors and contributors nor you shall use + the name of the other for commercial, advertising, or promotional + purposes without specific prior written permission. + + We suggest, but do not require, that you use one or more of the + following phrases to refer to this software in your documentation + or advertising materials: `FreeType Project', `FreeType Engine', + `FreeType library', or `FreeType Distribution'. + + As you have not signed this license, you are not required to + accept it. However, as the FreeType Project is copyrighted + material, only this license, or another one contracted with the + authors, grants you the right to use, distribute, and modify it. + Therefore, by using, distributing, or modifying the FreeType + Project, you indicate that you understand and accept all the terms + of this license. + +4. Contacts +----------- + + There are two mailing lists related to FreeType: + + o freetype@nongnu.org + + Discusses general use and applications of FreeType, as well as + future and wanted additions to the library and distribution. + If you are looking for support, start in this list if you + haven't found anything to help you in the documentation. + + o freetype-devel@nongnu.org + + Discusses bugs, as well as engine internals, design issues, + specific licenses, porting, etc. + + Our home page can be found at + + http://www.freetype.org + + +--- end of FTL.TXT --- diff --git a/drivers/freetype/LICENSE.TXT b/drivers/freetype/LICENSE.TXT new file mode 100644 index 0000000000..af5a1c50f6 --- /dev/null +++ b/drivers/freetype/LICENSE.TXT @@ -0,0 +1,39 @@ + +The FreeType 2 font engine is copyrighted work and cannot be used +legally without a software license. In order to make this project +usable to a vast majority of developers, we distribute it under two +mutually exclusive open-source licenses. + +This means that *you* must choose *one* of the two licenses described +below, then obey all its terms and conditions when using FreeType 2 in +any of your projects or products. + + - The FreeType License, found in the file `FTL.TXT', which is similar + to the original BSD license *with* an advertising clause that forces + you to explicitly cite the FreeType project in your product's + documentation. All details are in the license file. This license + is suited to products which don't use the GNU General Public + License. + + Note that this license is compatible to the GNU General Public + License version 3, but not version 2. + + - The GNU General Public License version 2, found in `GPLv2.TXT' (any + later version can be used also), for programs which already use the + GPL. Note that the FTL is incompatible with GPLv2 due to its + advertisement clause. + +The contributed BDF and PCF drivers come with a license similar to that +of the X Window System. It is compatible to the above two licenses (see +file src/bdf/README and src/pcf/README). The same holds for the files +`fthash.c' and `fthash.h'; their code was part of the BDF driver in +earlier FreeType versions. + +The gzip module uses the zlib license (see src/gzip/zlib.h) which too is +compatible to the above two licenses. + +The MD5 checksum support (only used for debugging in development builds) +is in the public domain. + + +--- end of LICENSE.TXT --- diff --git a/tools/freetype/SCsub b/drivers/freetype/SCsub index 65b4827f9c..75e872a06f 100644 --- a/tools/freetype/SCsub +++ b/drivers/freetype/SCsub @@ -66,4 +66,6 @@ if (env["freetype"]=="builtin"): # lib = env.Library("freetype_builtin",ft_sources) # env.Prepend(LIBS=[lib]) + + Export('env') diff --git a/tools/freetype/freetype/include/freetype/config/ftconfig.h b/drivers/freetype/freetype/include/freetype/config/ftconfig.h index 5dce30ef3e..5dce30ef3e 100644 --- a/tools/freetype/freetype/include/freetype/config/ftconfig.h +++ b/drivers/freetype/freetype/include/freetype/config/ftconfig.h diff --git a/tools/freetype/freetype/include/freetype/config/ftheader.h b/drivers/freetype/freetype/include/freetype/config/ftheader.h index 8371a31611..8371a31611 100644 --- a/tools/freetype/freetype/include/freetype/config/ftheader.h +++ b/drivers/freetype/freetype/include/freetype/config/ftheader.h diff --git a/tools/freetype/freetype/include/freetype/config/ftmodule.h b/drivers/freetype/freetype/include/freetype/config/ftmodule.h index 76d271a74b..76d271a74b 100644 --- a/tools/freetype/freetype/include/freetype/config/ftmodule.h +++ b/drivers/freetype/freetype/include/freetype/config/ftmodule.h diff --git a/tools/freetype/freetype/include/freetype/config/ftoption.h b/drivers/freetype/freetype/include/freetype/config/ftoption.h index d162780665..d162780665 100644 --- a/tools/freetype/freetype/include/freetype/config/ftoption.h +++ b/drivers/freetype/freetype/include/freetype/config/ftoption.h diff --git a/tools/freetype/freetype/include/freetype/config/ftstdlib.h b/drivers/freetype/freetype/include/freetype/config/ftstdlib.h index b940efc427..b940efc427 100644 --- a/tools/freetype/freetype/include/freetype/config/ftstdlib.h +++ b/drivers/freetype/freetype/include/freetype/config/ftstdlib.h diff --git a/tools/freetype/freetype/include/freetype/freetype.h b/drivers/freetype/freetype/include/freetype/freetype.h index fe46d22978..fe46d22978 100644 --- a/tools/freetype/freetype/include/freetype/freetype.h +++ b/drivers/freetype/freetype/include/freetype/freetype.h diff --git a/tools/freetype/freetype/include/freetype/ftadvanc.h b/drivers/freetype/freetype/include/freetype/ftadvanc.h index 012b74b812..012b74b812 100644 --- a/tools/freetype/freetype/include/freetype/ftadvanc.h +++ b/drivers/freetype/freetype/include/freetype/ftadvanc.h diff --git a/tools/freetype/freetype/include/freetype/ftautoh.h b/drivers/freetype/freetype/include/freetype/ftautoh.h index 5e1153a1c1..5e1153a1c1 100644 --- a/tools/freetype/freetype/include/freetype/ftautoh.h +++ b/drivers/freetype/freetype/include/freetype/ftautoh.h diff --git a/tools/freetype/freetype/include/freetype/ftbbox.h b/drivers/freetype/freetype/include/freetype/ftbbox.h index 976691956f..976691956f 100644 --- a/tools/freetype/freetype/include/freetype/ftbbox.h +++ b/drivers/freetype/freetype/include/freetype/ftbbox.h diff --git a/tools/freetype/freetype/include/freetype/ftbdf.h b/drivers/freetype/freetype/include/freetype/ftbdf.h index 4f8baf8401..4f8baf8401 100644 --- a/tools/freetype/freetype/include/freetype/ftbdf.h +++ b/drivers/freetype/freetype/include/freetype/ftbdf.h diff --git a/tools/freetype/freetype/include/freetype/ftbitmap.h b/drivers/freetype/freetype/include/freetype/ftbitmap.h index 7dbf5ba3fe..7dbf5ba3fe 100644 --- a/tools/freetype/freetype/include/freetype/ftbitmap.h +++ b/drivers/freetype/freetype/include/freetype/ftbitmap.h diff --git a/tools/freetype/freetype/include/freetype/ftbzip2.h b/drivers/freetype/freetype/include/freetype/ftbzip2.h index 1bf81b15e8..1bf81b15e8 100644 --- a/tools/freetype/freetype/include/freetype/ftbzip2.h +++ b/drivers/freetype/freetype/include/freetype/ftbzip2.h diff --git a/tools/freetype/freetype/include/freetype/ftcache.h b/drivers/freetype/freetype/include/freetype/ftcache.h index 4ec9587cf6..4ec9587cf6 100644 --- a/tools/freetype/freetype/include/freetype/ftcache.h +++ b/drivers/freetype/freetype/include/freetype/ftcache.h diff --git a/tools/freetype/freetype/include/freetype/ftcffdrv.h b/drivers/freetype/freetype/include/freetype/ftcffdrv.h index ccbcbccaa8..ccbcbccaa8 100644 --- a/tools/freetype/freetype/include/freetype/ftcffdrv.h +++ b/drivers/freetype/freetype/include/freetype/ftcffdrv.h diff --git a/tools/freetype/freetype/include/freetype/ftchapters.h b/drivers/freetype/freetype/include/freetype/ftchapters.h index c55670d1d2..c55670d1d2 100644 --- a/tools/freetype/freetype/include/freetype/ftchapters.h +++ b/drivers/freetype/freetype/include/freetype/ftchapters.h diff --git a/tools/freetype/freetype/include/freetype/ftcid.h b/drivers/freetype/freetype/include/freetype/ftcid.h index 203a30caf8..203a30caf8 100644 --- a/tools/freetype/freetype/include/freetype/ftcid.h +++ b/drivers/freetype/freetype/include/freetype/ftcid.h diff --git a/tools/freetype/freetype/include/freetype/fterrdef.h b/drivers/freetype/freetype/include/freetype/fterrdef.h index 76c7b9e36f..76c7b9e36f 100644 --- a/tools/freetype/freetype/include/freetype/fterrdef.h +++ b/drivers/freetype/freetype/include/freetype/fterrdef.h diff --git a/tools/freetype/freetype/include/freetype/fterrors.h b/drivers/freetype/freetype/include/freetype/fterrors.h index 0fa3e4dce1..0fa3e4dce1 100644 --- a/tools/freetype/freetype/include/freetype/fterrors.h +++ b/drivers/freetype/freetype/include/freetype/fterrors.h diff --git a/tools/freetype/freetype/include/freetype/ftgasp.h b/drivers/freetype/freetype/include/freetype/ftgasp.h index 453d4fa42c..453d4fa42c 100644 --- a/tools/freetype/freetype/include/freetype/ftgasp.h +++ b/drivers/freetype/freetype/include/freetype/ftgasp.h diff --git a/tools/freetype/freetype/include/freetype/ftglyph.h b/drivers/freetype/freetype/include/freetype/ftglyph.h index 31dc33187d..31dc33187d 100644 --- a/tools/freetype/freetype/include/freetype/ftglyph.h +++ b/drivers/freetype/freetype/include/freetype/ftglyph.h diff --git a/tools/freetype/freetype/include/freetype/ftgxval.h b/drivers/freetype/freetype/include/freetype/ftgxval.h index 497015c101..497015c101 100644 --- a/tools/freetype/freetype/include/freetype/ftgxval.h +++ b/drivers/freetype/freetype/include/freetype/ftgxval.h diff --git a/tools/freetype/freetype/include/freetype/ftgzip.h b/drivers/freetype/freetype/include/freetype/ftgzip.h index acbc4f0327..acbc4f0327 100644 --- a/tools/freetype/freetype/include/freetype/ftgzip.h +++ b/drivers/freetype/freetype/include/freetype/ftgzip.h diff --git a/tools/freetype/freetype/include/freetype/ftimage.h b/drivers/freetype/freetype/include/freetype/ftimage.h index 3b826b1d32..3b826b1d32 100644 --- a/tools/freetype/freetype/include/freetype/ftimage.h +++ b/drivers/freetype/freetype/include/freetype/ftimage.h diff --git a/tools/freetype/freetype/include/freetype/ftincrem.h b/drivers/freetype/freetype/include/freetype/ftincrem.h index aaf689ff16..aaf689ff16 100644 --- a/tools/freetype/freetype/include/freetype/ftincrem.h +++ b/drivers/freetype/freetype/include/freetype/ftincrem.h diff --git a/tools/freetype/freetype/include/freetype/ftlcdfil.h b/drivers/freetype/freetype/include/freetype/ftlcdfil.h index 8b253f118b..8b253f118b 100644 --- a/tools/freetype/freetype/include/freetype/ftlcdfil.h +++ b/drivers/freetype/freetype/include/freetype/ftlcdfil.h diff --git a/tools/freetype/freetype/include/freetype/ftlist.h b/drivers/freetype/freetype/include/freetype/ftlist.h index bb6f7f119d..bb6f7f119d 100644 --- a/tools/freetype/freetype/include/freetype/ftlist.h +++ b/drivers/freetype/freetype/include/freetype/ftlist.h diff --git a/tools/freetype/freetype/include/freetype/ftlzw.h b/drivers/freetype/freetype/include/freetype/ftlzw.h index 00d40169a7..00d40169a7 100644 --- a/tools/freetype/freetype/include/freetype/ftlzw.h +++ b/drivers/freetype/freetype/include/freetype/ftlzw.h diff --git a/tools/freetype/freetype/include/freetype/ftmac.h b/drivers/freetype/freetype/include/freetype/ftmac.h index ab5bab5170..ab5bab5170 100644 --- a/tools/freetype/freetype/include/freetype/ftmac.h +++ b/drivers/freetype/freetype/include/freetype/ftmac.h diff --git a/tools/freetype/freetype/include/freetype/ftmm.h b/drivers/freetype/freetype/include/freetype/ftmm.h index 3aefb9e4f2..3aefb9e4f2 100644 --- a/tools/freetype/freetype/include/freetype/ftmm.h +++ b/drivers/freetype/freetype/include/freetype/ftmm.h diff --git a/tools/freetype/freetype/include/freetype/ftmodapi.h b/drivers/freetype/freetype/include/freetype/ftmodapi.h index 8abffb558f..8abffb558f 100644 --- a/tools/freetype/freetype/include/freetype/ftmodapi.h +++ b/drivers/freetype/freetype/include/freetype/ftmodapi.h diff --git a/tools/freetype/freetype/include/freetype/ftmoderr.h b/drivers/freetype/freetype/include/freetype/ftmoderr.h index 5a27db151a..5a27db151a 100644 --- a/tools/freetype/freetype/include/freetype/ftmoderr.h +++ b/drivers/freetype/freetype/include/freetype/ftmoderr.h diff --git a/tools/freetype/freetype/include/freetype/ftotval.h b/drivers/freetype/freetype/include/freetype/ftotval.h index 027f2e8865..027f2e8865 100644 --- a/tools/freetype/freetype/include/freetype/ftotval.h +++ b/drivers/freetype/freetype/include/freetype/ftotval.h diff --git a/tools/freetype/freetype/include/freetype/ftoutln.h b/drivers/freetype/freetype/include/freetype/ftoutln.h index fd69f28292..fd69f28292 100644 --- a/tools/freetype/freetype/include/freetype/ftoutln.h +++ b/drivers/freetype/freetype/include/freetype/ftoutln.h diff --git a/tools/freetype/freetype/include/freetype/ftpfr.h b/drivers/freetype/freetype/include/freetype/ftpfr.h index 0b7b7d427c..0b7b7d427c 100644 --- a/tools/freetype/freetype/include/freetype/ftpfr.h +++ b/drivers/freetype/freetype/include/freetype/ftpfr.h diff --git a/tools/freetype/freetype/include/freetype/ftrender.h b/drivers/freetype/freetype/include/freetype/ftrender.h index dd0229b815..dd0229b815 100644 --- a/tools/freetype/freetype/include/freetype/ftrender.h +++ b/drivers/freetype/freetype/include/freetype/ftrender.h diff --git a/tools/freetype/freetype/include/freetype/ftsizes.h b/drivers/freetype/freetype/include/freetype/ftsizes.h index 3e548cc39f..3e548cc39f 100644 --- a/tools/freetype/freetype/include/freetype/ftsizes.h +++ b/drivers/freetype/freetype/include/freetype/ftsizes.h diff --git a/tools/freetype/freetype/include/freetype/ftsnames.h b/drivers/freetype/freetype/include/freetype/ftsnames.h index 485e4e162e..485e4e162e 100644 --- a/tools/freetype/freetype/include/freetype/ftsnames.h +++ b/drivers/freetype/freetype/include/freetype/ftsnames.h diff --git a/tools/freetype/freetype/include/freetype/ftstroke.h b/drivers/freetype/freetype/include/freetype/ftstroke.h index a498e4a883..a498e4a883 100644 --- a/tools/freetype/freetype/include/freetype/ftstroke.h +++ b/drivers/freetype/freetype/include/freetype/ftstroke.h diff --git a/tools/freetype/freetype/include/freetype/ftsynth.h b/drivers/freetype/freetype/include/freetype/ftsynth.h index 2074503cf6..2074503cf6 100644 --- a/tools/freetype/freetype/include/freetype/ftsynth.h +++ b/drivers/freetype/freetype/include/freetype/ftsynth.h diff --git a/tools/freetype/freetype/include/freetype/ftsystem.h b/drivers/freetype/freetype/include/freetype/ftsystem.h index e07460c55d..e07460c55d 100644 --- a/tools/freetype/freetype/include/freetype/ftsystem.h +++ b/drivers/freetype/freetype/include/freetype/ftsystem.h diff --git a/tools/freetype/freetype/include/freetype/fttrigon.h b/drivers/freetype/freetype/include/freetype/fttrigon.h index 65143cb8c8..65143cb8c8 100644 --- a/tools/freetype/freetype/include/freetype/fttrigon.h +++ b/drivers/freetype/freetype/include/freetype/fttrigon.h diff --git a/tools/freetype/freetype/include/freetype/ftttdrv.h b/drivers/freetype/freetype/include/freetype/ftttdrv.h index d5d3f1ccc1..d5d3f1ccc1 100644 --- a/tools/freetype/freetype/include/freetype/ftttdrv.h +++ b/drivers/freetype/freetype/include/freetype/ftttdrv.h diff --git a/tools/freetype/freetype/include/freetype/fttypes.h b/drivers/freetype/freetype/include/freetype/fttypes.h index 027e59ce11..027e59ce11 100644 --- a/tools/freetype/freetype/include/freetype/fttypes.h +++ b/drivers/freetype/freetype/include/freetype/fttypes.h diff --git a/tools/freetype/freetype/include/freetype/ftwinfnt.h b/drivers/freetype/freetype/include/freetype/ftwinfnt.h index ea33353536..ea33353536 100644 --- a/tools/freetype/freetype/include/freetype/ftwinfnt.h +++ b/drivers/freetype/freetype/include/freetype/ftwinfnt.h diff --git a/tools/freetype/freetype/include/freetype/ftxf86.h b/drivers/freetype/freetype/include/freetype/ftxf86.h index 8c68afdcc5..8c68afdcc5 100644 --- a/tools/freetype/freetype/include/freetype/ftxf86.h +++ b/drivers/freetype/freetype/include/freetype/ftxf86.h diff --git a/tools/freetype/freetype/include/freetype/internal/autohint.h b/drivers/freetype/freetype/include/freetype/internal/autohint.h index 545de938c2..545de938c2 100644 --- a/tools/freetype/freetype/include/freetype/internal/autohint.h +++ b/drivers/freetype/freetype/include/freetype/internal/autohint.h diff --git a/tools/freetype/freetype/include/freetype/internal/ftcalc.h b/drivers/freetype/freetype/include/freetype/internal/ftcalc.h index faac3a3867..faac3a3867 100644 --- a/tools/freetype/freetype/include/freetype/internal/ftcalc.h +++ b/drivers/freetype/freetype/include/freetype/internal/ftcalc.h diff --git a/tools/freetype/freetype/include/freetype/internal/ftdebug.h b/drivers/freetype/freetype/include/freetype/internal/ftdebug.h index 58a3916d7e..58a3916d7e 100644 --- a/tools/freetype/freetype/include/freetype/internal/ftdebug.h +++ b/drivers/freetype/freetype/include/freetype/internal/ftdebug.h diff --git a/tools/freetype/freetype/include/freetype/internal/ftdriver.h b/drivers/freetype/freetype/include/freetype/internal/ftdriver.h index 940218e62d..940218e62d 100644 --- a/tools/freetype/freetype/include/freetype/internal/ftdriver.h +++ b/drivers/freetype/freetype/include/freetype/internal/ftdriver.h diff --git a/tools/freetype/freetype/include/freetype/internal/ftgloadr.h b/drivers/freetype/freetype/include/freetype/internal/ftgloadr.h index ce4dc6c9cc..ce4dc6c9cc 100644 --- a/tools/freetype/freetype/include/freetype/internal/ftgloadr.h +++ b/drivers/freetype/freetype/include/freetype/internal/ftgloadr.h diff --git a/tools/freetype/freetype/include/freetype/internal/ftmemory.h b/drivers/freetype/freetype/include/freetype/internal/ftmemory.h index 3d51aeec69..3d51aeec69 100644 --- a/tools/freetype/freetype/include/freetype/internal/ftmemory.h +++ b/drivers/freetype/freetype/include/freetype/internal/ftmemory.h diff --git a/tools/freetype/freetype/include/freetype/internal/ftobjs.h b/drivers/freetype/freetype/include/freetype/internal/ftobjs.h index 701c850eb7..701c850eb7 100644 --- a/tools/freetype/freetype/include/freetype/internal/ftobjs.h +++ b/drivers/freetype/freetype/include/freetype/internal/ftobjs.h diff --git a/tools/freetype/freetype/include/freetype/internal/ftpic.h b/drivers/freetype/freetype/include/freetype/internal/ftpic.h index 485ce7a24e..485ce7a24e 100644 --- a/tools/freetype/freetype/include/freetype/internal/ftpic.h +++ b/drivers/freetype/freetype/include/freetype/internal/ftpic.h diff --git a/tools/freetype/freetype/include/freetype/internal/ftrfork.h b/drivers/freetype/freetype/include/freetype/internal/ftrfork.h index 6307f2d0c5..6307f2d0c5 100644 --- a/tools/freetype/freetype/include/freetype/internal/ftrfork.h +++ b/drivers/freetype/freetype/include/freetype/internal/ftrfork.h diff --git a/tools/freetype/freetype/include/freetype/internal/ftserv.h b/drivers/freetype/freetype/include/freetype/internal/ftserv.h index cd5fbd0fac..cd5fbd0fac 100644 --- a/tools/freetype/freetype/include/freetype/internal/ftserv.h +++ b/drivers/freetype/freetype/include/freetype/internal/ftserv.h diff --git a/tools/freetype/freetype/include/freetype/internal/ftstream.h b/drivers/freetype/freetype/include/freetype/internal/ftstream.h index 2661858320..2661858320 100644 --- a/tools/freetype/freetype/include/freetype/internal/ftstream.h +++ b/drivers/freetype/freetype/include/freetype/internal/ftstream.h diff --git a/tools/freetype/freetype/include/freetype/internal/fttrace.h b/drivers/freetype/freetype/include/freetype/internal/fttrace.h index a9d98b60aa..a9d98b60aa 100644 --- a/tools/freetype/freetype/include/freetype/internal/fttrace.h +++ b/drivers/freetype/freetype/include/freetype/internal/fttrace.h diff --git a/tools/freetype/freetype/include/freetype/internal/ftvalid.h b/drivers/freetype/freetype/include/freetype/internal/ftvalid.h index 12ad03685a..12ad03685a 100644 --- a/tools/freetype/freetype/include/freetype/internal/ftvalid.h +++ b/drivers/freetype/freetype/include/freetype/internal/ftvalid.h diff --git a/tools/freetype/freetype/include/freetype/internal/internal.h b/drivers/freetype/freetype/include/freetype/internal/internal.h index 262afcfa8a..262afcfa8a 100644 --- a/tools/freetype/freetype/include/freetype/internal/internal.h +++ b/drivers/freetype/freetype/include/freetype/internal/internal.h diff --git a/tools/freetype/freetype/include/freetype/internal/psaux.h b/drivers/freetype/freetype/include/freetype/internal/psaux.h index e903114f84..e903114f84 100644 --- a/tools/freetype/freetype/include/freetype/internal/psaux.h +++ b/drivers/freetype/freetype/include/freetype/internal/psaux.h diff --git a/tools/freetype/freetype/include/freetype/internal/pshints.h b/drivers/freetype/freetype/include/freetype/internal/pshints.h index 3fb18dc2d5..3fb18dc2d5 100644 --- a/tools/freetype/freetype/include/freetype/internal/pshints.h +++ b/drivers/freetype/freetype/include/freetype/internal/pshints.h diff --git a/tools/freetype/freetype/include/freetype/internal/services/svbdf.h b/drivers/freetype/freetype/include/freetype/internal/services/svbdf.h index 0974752a79..0974752a79 100644 --- a/tools/freetype/freetype/include/freetype/internal/services/svbdf.h +++ b/drivers/freetype/freetype/include/freetype/internal/services/svbdf.h diff --git a/tools/freetype/freetype/include/freetype/internal/services/svcid.h b/drivers/freetype/freetype/include/freetype/internal/services/svcid.h index 6be3f9374d..6be3f9374d 100644 --- a/tools/freetype/freetype/include/freetype/internal/services/svcid.h +++ b/drivers/freetype/freetype/include/freetype/internal/services/svcid.h diff --git a/tools/freetype/freetype/include/freetype/internal/services/svgldict.h b/drivers/freetype/freetype/include/freetype/internal/services/svgldict.h index 1d12534725..1d12534725 100644 --- a/tools/freetype/freetype/include/freetype/internal/services/svgldict.h +++ b/drivers/freetype/freetype/include/freetype/internal/services/svgldict.h diff --git a/tools/freetype/freetype/include/freetype/internal/services/svgxval.h b/drivers/freetype/freetype/include/freetype/internal/services/svgxval.h index 2cdab50655..2cdab50655 100644 --- a/tools/freetype/freetype/include/freetype/internal/services/svgxval.h +++ b/drivers/freetype/freetype/include/freetype/internal/services/svgxval.h diff --git a/tools/freetype/freetype/include/freetype/internal/services/svkern.h b/drivers/freetype/freetype/include/freetype/internal/services/svkern.h index 1488adf493..1488adf493 100644 --- a/tools/freetype/freetype/include/freetype/internal/services/svkern.h +++ b/drivers/freetype/freetype/include/freetype/internal/services/svkern.h diff --git a/tools/freetype/freetype/include/freetype/internal/services/svmm.h b/drivers/freetype/freetype/include/freetype/internal/services/svmm.h index b08a663d66..b08a663d66 100644 --- a/tools/freetype/freetype/include/freetype/internal/services/svmm.h +++ b/drivers/freetype/freetype/include/freetype/internal/services/svmm.h diff --git a/tools/freetype/freetype/include/freetype/internal/services/svotval.h b/drivers/freetype/freetype/include/freetype/internal/services/svotval.h index 970bbd5759..970bbd5759 100644 --- a/tools/freetype/freetype/include/freetype/internal/services/svotval.h +++ b/drivers/freetype/freetype/include/freetype/internal/services/svotval.h diff --git a/tools/freetype/freetype/include/freetype/internal/services/svpfr.h b/drivers/freetype/freetype/include/freetype/internal/services/svpfr.h index 462786f9ce..462786f9ce 100644 --- a/tools/freetype/freetype/include/freetype/internal/services/svpfr.h +++ b/drivers/freetype/freetype/include/freetype/internal/services/svpfr.h diff --git a/tools/freetype/freetype/include/freetype/internal/services/svpostnm.h b/drivers/freetype/freetype/include/freetype/internal/services/svpostnm.h index a76b4fe057..a76b4fe057 100644 --- a/tools/freetype/freetype/include/freetype/internal/services/svpostnm.h +++ b/drivers/freetype/freetype/include/freetype/internal/services/svpostnm.h diff --git a/tools/freetype/freetype/include/freetype/internal/services/svprop.h b/drivers/freetype/freetype/include/freetype/internal/services/svprop.h index 22da0bbc69..22da0bbc69 100644 --- a/tools/freetype/freetype/include/freetype/internal/services/svprop.h +++ b/drivers/freetype/freetype/include/freetype/internal/services/svprop.h diff --git a/tools/freetype/freetype/include/freetype/internal/services/svpscmap.h b/drivers/freetype/freetype/include/freetype/internal/services/svpscmap.h index 030948ea64..030948ea64 100644 --- a/tools/freetype/freetype/include/freetype/internal/services/svpscmap.h +++ b/drivers/freetype/freetype/include/freetype/internal/services/svpscmap.h diff --git a/tools/freetype/freetype/include/freetype/internal/services/svpsinfo.h b/drivers/freetype/freetype/include/freetype/internal/services/svpsinfo.h index 4bfb506711..4bfb506711 100644 --- a/tools/freetype/freetype/include/freetype/internal/services/svpsinfo.h +++ b/drivers/freetype/freetype/include/freetype/internal/services/svpsinfo.h diff --git a/tools/freetype/freetype/include/freetype/internal/services/svsfnt.h b/drivers/freetype/freetype/include/freetype/internal/services/svsfnt.h index d3835aa1c2..d3835aa1c2 100644 --- a/tools/freetype/freetype/include/freetype/internal/services/svsfnt.h +++ b/drivers/freetype/freetype/include/freetype/internal/services/svsfnt.h diff --git a/tools/freetype/freetype/include/freetype/internal/services/svttcmap.h b/drivers/freetype/freetype/include/freetype/internal/services/svttcmap.h index 83994aaf8a..83994aaf8a 100644 --- a/tools/freetype/freetype/include/freetype/internal/services/svttcmap.h +++ b/drivers/freetype/freetype/include/freetype/internal/services/svttcmap.h diff --git a/tools/freetype/freetype/include/freetype/internal/services/svtteng.h b/drivers/freetype/freetype/include/freetype/internal/services/svtteng.h index 58e02a6f9d..58e02a6f9d 100644 --- a/tools/freetype/freetype/include/freetype/internal/services/svtteng.h +++ b/drivers/freetype/freetype/include/freetype/internal/services/svtteng.h diff --git a/tools/freetype/freetype/include/freetype/internal/services/svttglyf.h b/drivers/freetype/freetype/include/freetype/internal/services/svttglyf.h index 369eb8421b..369eb8421b 100644 --- a/tools/freetype/freetype/include/freetype/internal/services/svttglyf.h +++ b/drivers/freetype/freetype/include/freetype/internal/services/svttglyf.h diff --git a/tools/freetype/freetype/include/freetype/internal/services/svwinfnt.h b/drivers/freetype/freetype/include/freetype/internal/services/svwinfnt.h index 57f7765d92..57f7765d92 100644 --- a/tools/freetype/freetype/include/freetype/internal/services/svwinfnt.h +++ b/drivers/freetype/freetype/include/freetype/internal/services/svwinfnt.h diff --git a/tools/freetype/freetype/include/freetype/internal/services/svxf86nm.h b/drivers/freetype/freetype/include/freetype/internal/services/svxf86nm.h index ca5d884a83..ca5d884a83 100644 --- a/tools/freetype/freetype/include/freetype/internal/services/svxf86nm.h +++ b/drivers/freetype/freetype/include/freetype/internal/services/svxf86nm.h diff --git a/tools/freetype/freetype/include/freetype/internal/sfnt.h b/drivers/freetype/freetype/include/freetype/internal/sfnt.h index 6b5e41f1ad..6b5e41f1ad 100644 --- a/tools/freetype/freetype/include/freetype/internal/sfnt.h +++ b/drivers/freetype/freetype/include/freetype/internal/sfnt.h diff --git a/tools/freetype/freetype/include/freetype/internal/t1types.h b/drivers/freetype/freetype/include/freetype/internal/t1types.h index e20237c14d..e20237c14d 100644 --- a/tools/freetype/freetype/include/freetype/internal/t1types.h +++ b/drivers/freetype/freetype/include/freetype/internal/t1types.h diff --git a/tools/freetype/freetype/include/freetype/internal/tttypes.h b/drivers/freetype/freetype/include/freetype/internal/tttypes.h index 1bbfe499c5..1bbfe499c5 100644 --- a/tools/freetype/freetype/include/freetype/internal/tttypes.h +++ b/drivers/freetype/freetype/include/freetype/internal/tttypes.h diff --git a/tools/freetype/freetype/include/freetype/t1tables.h b/drivers/freetype/freetype/include/freetype/t1tables.h index a14255e5f5..a14255e5f5 100644 --- a/tools/freetype/freetype/include/freetype/t1tables.h +++ b/drivers/freetype/freetype/include/freetype/t1tables.h diff --git a/tools/freetype/freetype/include/freetype/ttnameid.h b/drivers/freetype/freetype/include/freetype/ttnameid.h index 173f88c950..173f88c950 100644 --- a/tools/freetype/freetype/include/freetype/ttnameid.h +++ b/drivers/freetype/freetype/include/freetype/ttnameid.h diff --git a/tools/freetype/freetype/include/freetype/tttables.h b/drivers/freetype/freetype/include/freetype/tttables.h index fe07117b0b..fe07117b0b 100644 --- a/tools/freetype/freetype/include/freetype/tttables.h +++ b/drivers/freetype/freetype/include/freetype/tttables.h diff --git a/tools/freetype/freetype/include/freetype/tttags.h b/drivers/freetype/freetype/include/freetype/tttags.h index be8c524edb..be8c524edb 100644 --- a/tools/freetype/freetype/include/freetype/tttags.h +++ b/drivers/freetype/freetype/include/freetype/tttags.h diff --git a/tools/freetype/freetype/include/freetype/ttunpat.h b/drivers/freetype/freetype/include/freetype/ttunpat.h index a0162759b7..a0162759b7 100644 --- a/tools/freetype/freetype/include/freetype/ttunpat.h +++ b/drivers/freetype/freetype/include/freetype/ttunpat.h diff --git a/tools/freetype/freetype/include/ftoption.h b/drivers/freetype/freetype/include/ftoption.h index c9f4708691..c9f4708691 100644 --- a/tools/freetype/freetype/include/ftoption.h +++ b/drivers/freetype/freetype/include/ftoption.h diff --git a/tools/freetype/freetype/src/Jamfile b/drivers/freetype/freetype/src/Jamfile index 76ee0f46e6..76ee0f46e6 100644 --- a/tools/freetype/freetype/src/Jamfile +++ b/drivers/freetype/freetype/src/Jamfile diff --git a/tools/freetype/freetype/src/autofit/Jamfile b/drivers/freetype/freetype/src/autofit/Jamfile index 2714765b5b..2714765b5b 100644 --- a/tools/freetype/freetype/src/autofit/Jamfile +++ b/drivers/freetype/freetype/src/autofit/Jamfile diff --git a/tools/freetype/freetype/src/autofit/afangles.c b/drivers/freetype/freetype/src/autofit/afangles.c index b44a5ba2c6..b44a5ba2c6 100644 --- a/tools/freetype/freetype/src/autofit/afangles.c +++ b/drivers/freetype/freetype/src/autofit/afangles.c diff --git a/tools/freetype/freetype/src/autofit/afangles.h b/drivers/freetype/freetype/src/autofit/afangles.h index f33f9e108e..f33f9e108e 100644 --- a/tools/freetype/freetype/src/autofit/afangles.h +++ b/drivers/freetype/freetype/src/autofit/afangles.h diff --git a/tools/freetype/freetype/src/autofit/afcjk.c b/drivers/freetype/freetype/src/autofit/afcjk.c index f69a528e3b..f69a528e3b 100644 --- a/tools/freetype/freetype/src/autofit/afcjk.c +++ b/drivers/freetype/freetype/src/autofit/afcjk.c diff --git a/tools/freetype/freetype/src/autofit/afcjk.h b/drivers/freetype/freetype/src/autofit/afcjk.h index ab816f20b1..ab816f20b1 100644 --- a/tools/freetype/freetype/src/autofit/afcjk.h +++ b/drivers/freetype/freetype/src/autofit/afcjk.h diff --git a/tools/freetype/freetype/src/autofit/afdummy.c b/drivers/freetype/freetype/src/autofit/afdummy.c index 22944559da..22944559da 100644 --- a/tools/freetype/freetype/src/autofit/afdummy.c +++ b/drivers/freetype/freetype/src/autofit/afdummy.c diff --git a/tools/freetype/freetype/src/autofit/afdummy.h b/drivers/freetype/freetype/src/autofit/afdummy.h index 95d8f8cf19..95d8f8cf19 100644 --- a/tools/freetype/freetype/src/autofit/afdummy.h +++ b/drivers/freetype/freetype/src/autofit/afdummy.h diff --git a/tools/freetype/freetype/src/autofit/aferrors.h b/drivers/freetype/freetype/src/autofit/aferrors.h index 50e1a22dd5..50e1a22dd5 100644 --- a/tools/freetype/freetype/src/autofit/aferrors.h +++ b/drivers/freetype/freetype/src/autofit/aferrors.h diff --git a/tools/freetype/freetype/src/autofit/afglobal.c b/drivers/freetype/freetype/src/autofit/afglobal.c index 3e41465756..3e41465756 100644 --- a/tools/freetype/freetype/src/autofit/afglobal.c +++ b/drivers/freetype/freetype/src/autofit/afglobal.c diff --git a/tools/freetype/freetype/src/autofit/afglobal.h b/drivers/freetype/freetype/src/autofit/afglobal.h index 2e24900822..2e24900822 100644 --- a/tools/freetype/freetype/src/autofit/afglobal.h +++ b/drivers/freetype/freetype/src/autofit/afglobal.h diff --git a/tools/freetype/freetype/src/autofit/afhints.c b/drivers/freetype/freetype/src/autofit/afhints.c index e8defaa88d..e8defaa88d 100644 --- a/tools/freetype/freetype/src/autofit/afhints.c +++ b/drivers/freetype/freetype/src/autofit/afhints.c diff --git a/tools/freetype/freetype/src/autofit/afhints.h b/drivers/freetype/freetype/src/autofit/afhints.h index 776b3c844e..776b3c844e 100644 --- a/tools/freetype/freetype/src/autofit/afhints.h +++ b/drivers/freetype/freetype/src/autofit/afhints.h diff --git a/tools/freetype/freetype/src/autofit/afindic.c b/drivers/freetype/freetype/src/autofit/afindic.c index 8c24972598..8c24972598 100644 --- a/tools/freetype/freetype/src/autofit/afindic.c +++ b/drivers/freetype/freetype/src/autofit/afindic.c diff --git a/tools/freetype/freetype/src/autofit/afindic.h b/drivers/freetype/freetype/src/autofit/afindic.h index c252cf20da..c252cf20da 100644 --- a/tools/freetype/freetype/src/autofit/afindic.h +++ b/drivers/freetype/freetype/src/autofit/afindic.h diff --git a/tools/freetype/freetype/src/autofit/aflatin.c b/drivers/freetype/freetype/src/autofit/aflatin.c index ef0157a13e..ef0157a13e 100644 --- a/tools/freetype/freetype/src/autofit/aflatin.c +++ b/drivers/freetype/freetype/src/autofit/aflatin.c diff --git a/tools/freetype/freetype/src/autofit/aflatin.h b/drivers/freetype/freetype/src/autofit/aflatin.h index d9170b3dcc..d9170b3dcc 100644 --- a/tools/freetype/freetype/src/autofit/aflatin.h +++ b/drivers/freetype/freetype/src/autofit/aflatin.h diff --git a/tools/freetype/freetype/src/autofit/aflatin2.c b/drivers/freetype/freetype/src/autofit/aflatin2.c index b1e9658d5d..b1e9658d5d 100644 --- a/tools/freetype/freetype/src/autofit/aflatin2.c +++ b/drivers/freetype/freetype/src/autofit/aflatin2.c diff --git a/tools/freetype/freetype/src/autofit/aflatin2.h b/drivers/freetype/freetype/src/autofit/aflatin2.h index cbfa395522..cbfa395522 100644 --- a/tools/freetype/freetype/src/autofit/aflatin2.h +++ b/drivers/freetype/freetype/src/autofit/aflatin2.h diff --git a/tools/freetype/freetype/src/autofit/afloader.c b/drivers/freetype/freetype/src/autofit/afloader.c index 17a6fb7c3b..17a6fb7c3b 100644 --- a/tools/freetype/freetype/src/autofit/afloader.c +++ b/drivers/freetype/freetype/src/autofit/afloader.c diff --git a/tools/freetype/freetype/src/autofit/afloader.h b/drivers/freetype/freetype/src/autofit/afloader.h index 1f34d17cce..1f34d17cce 100644 --- a/tools/freetype/freetype/src/autofit/afloader.h +++ b/drivers/freetype/freetype/src/autofit/afloader.h diff --git a/tools/freetype/freetype/src/autofit/afmodule.c b/drivers/freetype/freetype/src/autofit/afmodule.c index b1bb5ee0ed..b1bb5ee0ed 100644 --- a/tools/freetype/freetype/src/autofit/afmodule.c +++ b/drivers/freetype/freetype/src/autofit/afmodule.c diff --git a/tools/freetype/freetype/src/autofit/afmodule.h b/drivers/freetype/freetype/src/autofit/afmodule.h index c4e8f8f66a..c4e8f8f66a 100644 --- a/tools/freetype/freetype/src/autofit/afmodule.h +++ b/drivers/freetype/freetype/src/autofit/afmodule.h diff --git a/tools/freetype/freetype/src/autofit/afpic.c b/drivers/freetype/freetype/src/autofit/afpic.c index 45e1448c08..45e1448c08 100644 --- a/tools/freetype/freetype/src/autofit/afpic.c +++ b/drivers/freetype/freetype/src/autofit/afpic.c diff --git a/tools/freetype/freetype/src/autofit/afpic.h b/drivers/freetype/freetype/src/autofit/afpic.h index 0acf803894..0acf803894 100644 --- a/tools/freetype/freetype/src/autofit/afpic.h +++ b/drivers/freetype/freetype/src/autofit/afpic.h diff --git a/tools/freetype/freetype/src/autofit/aftypes.h b/drivers/freetype/freetype/src/autofit/aftypes.h index 9acd7ad6d2..9acd7ad6d2 100644 --- a/tools/freetype/freetype/src/autofit/aftypes.h +++ b/drivers/freetype/freetype/src/autofit/aftypes.h diff --git a/tools/freetype/freetype/src/autofit/afwarp.c b/drivers/freetype/freetype/src/autofit/afwarp.c index 34a97ffc57..34a97ffc57 100644 --- a/tools/freetype/freetype/src/autofit/afwarp.c +++ b/drivers/freetype/freetype/src/autofit/afwarp.c diff --git a/tools/freetype/freetype/src/autofit/afwarp.h b/drivers/freetype/freetype/src/autofit/afwarp.h index 7343fdd5ef..7343fdd5ef 100644 --- a/tools/freetype/freetype/src/autofit/afwarp.h +++ b/drivers/freetype/freetype/src/autofit/afwarp.h diff --git a/tools/freetype/freetype/src/autofit/autofit.c b/drivers/freetype/freetype/src/autofit/autofit.c index 3883a0a706..3883a0a706 100644 --- a/tools/freetype/freetype/src/autofit/autofit.c +++ b/drivers/freetype/freetype/src/autofit/autofit.c diff --git a/tools/freetype/freetype/src/autofit/module.mk b/drivers/freetype/freetype/src/autofit/module.mk index 6ec60912ab..6ec60912ab 100644 --- a/tools/freetype/freetype/src/autofit/module.mk +++ b/drivers/freetype/freetype/src/autofit/module.mk diff --git a/tools/freetype/freetype/src/autofit/rules.mk b/drivers/freetype/freetype/src/autofit/rules.mk index b76bb79ab4..b76bb79ab4 100644 --- a/tools/freetype/freetype/src/autofit/rules.mk +++ b/drivers/freetype/freetype/src/autofit/rules.mk diff --git a/tools/freetype/freetype/src/base/Jamfile b/drivers/freetype/freetype/src/base/Jamfile index 832e8b8424..832e8b8424 100644 --- a/tools/freetype/freetype/src/base/Jamfile +++ b/drivers/freetype/freetype/src/base/Jamfile diff --git a/tools/freetype/freetype/src/base/basepic.c b/drivers/freetype/freetype/src/base/basepic.c index 0af770ebc2..0af770ebc2 100644 --- a/tools/freetype/freetype/src/base/basepic.c +++ b/drivers/freetype/freetype/src/base/basepic.c diff --git a/tools/freetype/freetype/src/base/basepic.h b/drivers/freetype/freetype/src/base/basepic.h index 329d7c8fd6..329d7c8fd6 100644 --- a/tools/freetype/freetype/src/base/basepic.h +++ b/drivers/freetype/freetype/src/base/basepic.h diff --git a/tools/freetype/freetype/src/base/ftadvanc.c b/drivers/freetype/freetype/src/base/ftadvanc.c index 52078478df..52078478df 100644 --- a/tools/freetype/freetype/src/base/ftadvanc.c +++ b/drivers/freetype/freetype/src/base/ftadvanc.c diff --git a/tools/freetype/freetype/src/base/ftapi.c b/drivers/freetype/freetype/src/base/ftapi.c index 8914d1f4e9..8914d1f4e9 100644 --- a/tools/freetype/freetype/src/base/ftapi.c +++ b/drivers/freetype/freetype/src/base/ftapi.c diff --git a/tools/freetype/freetype/src/base/ftbase.c b/drivers/freetype/freetype/src/base/ftbase.c index 5e5d70ec4b..5e5d70ec4b 100644 --- a/tools/freetype/freetype/src/base/ftbase.c +++ b/drivers/freetype/freetype/src/base/ftbase.c diff --git a/tools/freetype/freetype/src/base/ftbase.h b/drivers/freetype/freetype/src/base/ftbase.h index 51a1db18b8..51a1db18b8 100644 --- a/tools/freetype/freetype/src/base/ftbase.h +++ b/drivers/freetype/freetype/src/base/ftbase.h diff --git a/tools/freetype/freetype/src/base/ftbbox.c b/drivers/freetype/freetype/src/base/ftbbox.c index 6d1c44cb2e..6d1c44cb2e 100644 --- a/tools/freetype/freetype/src/base/ftbbox.c +++ b/drivers/freetype/freetype/src/base/ftbbox.c diff --git a/tools/freetype/freetype/src/base/ftbdf.c b/drivers/freetype/freetype/src/base/ftbdf.c index 5755f8558d..5755f8558d 100644 --- a/tools/freetype/freetype/src/base/ftbdf.c +++ b/drivers/freetype/freetype/src/base/ftbdf.c diff --git a/tools/freetype/freetype/src/base/ftbitmap.c b/drivers/freetype/freetype/src/base/ftbitmap.c index 975818e14f..975818e14f 100644 --- a/tools/freetype/freetype/src/base/ftbitmap.c +++ b/drivers/freetype/freetype/src/base/ftbitmap.c diff --git a/tools/freetype/freetype/src/base/ftcalc.c b/drivers/freetype/freetype/src/base/ftcalc.c index 0ec0d78930..0ec0d78930 100644 --- a/tools/freetype/freetype/src/base/ftcalc.c +++ b/drivers/freetype/freetype/src/base/ftcalc.c diff --git a/tools/freetype/freetype/src/base/ftcid.c b/drivers/freetype/freetype/src/base/ftcid.c index 741879d922..741879d922 100644 --- a/tools/freetype/freetype/src/base/ftcid.c +++ b/drivers/freetype/freetype/src/base/ftcid.c diff --git a/tools/freetype/freetype/src/base/ftdbgmem.c b/drivers/freetype/freetype/src/base/ftdbgmem.c index 6fb86fe77d..6fb86fe77d 100644 --- a/tools/freetype/freetype/src/base/ftdbgmem.c +++ b/drivers/freetype/freetype/src/base/ftdbgmem.c diff --git a/tools/freetype/freetype/src/base/ftdebug.c b/drivers/freetype/freetype/src/base/ftdebug.c index b9156d15ee..b9156d15ee 100644 --- a/tools/freetype/freetype/src/base/ftdebug.c +++ b/drivers/freetype/freetype/src/base/ftdebug.c diff --git a/tools/freetype/freetype/src/base/ftfstype.c b/drivers/freetype/freetype/src/base/ftfstype.c index d0ef7b7c1b..d0ef7b7c1b 100644 --- a/tools/freetype/freetype/src/base/ftfstype.c +++ b/drivers/freetype/freetype/src/base/ftfstype.c diff --git a/tools/freetype/freetype/src/base/ftgasp.c b/drivers/freetype/freetype/src/base/ftgasp.c index 8485d29259..8485d29259 100644 --- a/tools/freetype/freetype/src/base/ftgasp.c +++ b/drivers/freetype/freetype/src/base/ftgasp.c diff --git a/tools/freetype/freetype/src/base/ftgloadr.c b/drivers/freetype/freetype/src/base/ftgloadr.c index 3cc5c7a805..3cc5c7a805 100644 --- a/tools/freetype/freetype/src/base/ftgloadr.c +++ b/drivers/freetype/freetype/src/base/ftgloadr.c diff --git a/tools/freetype/freetype/src/base/ftglyph.c b/drivers/freetype/freetype/src/base/ftglyph.c index 5dd28a8c52..5dd28a8c52 100644 --- a/tools/freetype/freetype/src/base/ftglyph.c +++ b/drivers/freetype/freetype/src/base/ftglyph.c diff --git a/tools/freetype/freetype/src/base/ftgxval.c b/drivers/freetype/freetype/src/base/ftgxval.c index a8ec44ac00..a8ec44ac00 100644 --- a/tools/freetype/freetype/src/base/ftgxval.c +++ b/drivers/freetype/freetype/src/base/ftgxval.c diff --git a/tools/freetype/freetype/src/base/ftinit.c b/drivers/freetype/freetype/src/base/ftinit.c index 85f321fd2d..85f321fd2d 100644 --- a/tools/freetype/freetype/src/base/ftinit.c +++ b/drivers/freetype/freetype/src/base/ftinit.c diff --git a/tools/freetype/freetype/src/base/ftlcdfil.c b/drivers/freetype/freetype/src/base/ftlcdfil.c index 852fb32982..852fb32982 100644 --- a/tools/freetype/freetype/src/base/ftlcdfil.c +++ b/drivers/freetype/freetype/src/base/ftlcdfil.c diff --git a/tools/freetype/freetype/src/base/ftmac.c b/drivers/freetype/freetype/src/base/ftmac.c index 5b5aae61cc..5b5aae61cc 100644 --- a/tools/freetype/freetype/src/base/ftmac.c +++ b/drivers/freetype/freetype/src/base/ftmac.c diff --git a/tools/freetype/freetype/src/base/ftmm.c b/drivers/freetype/freetype/src/base/ftmm.c index 18ff879bfc..18ff879bfc 100644 --- a/tools/freetype/freetype/src/base/ftmm.c +++ b/drivers/freetype/freetype/src/base/ftmm.c diff --git a/tools/freetype/freetype/src/base/ftobjs.c b/drivers/freetype/freetype/src/base/ftobjs.c index 157bf45634..157bf45634 100644 --- a/tools/freetype/freetype/src/base/ftobjs.c +++ b/drivers/freetype/freetype/src/base/ftobjs.c diff --git a/tools/freetype/freetype/src/base/ftotval.c b/drivers/freetype/freetype/src/base/ftotval.c index 5fc73d76ab..5fc73d76ab 100644 --- a/tools/freetype/freetype/src/base/ftotval.c +++ b/drivers/freetype/freetype/src/base/ftotval.c diff --git a/tools/freetype/freetype/src/base/ftoutln.c b/drivers/freetype/freetype/src/base/ftoutln.c index 54ca5cdcf6..54ca5cdcf6 100644 --- a/tools/freetype/freetype/src/base/ftoutln.c +++ b/drivers/freetype/freetype/src/base/ftoutln.c diff --git a/tools/freetype/freetype/src/base/ftpatent.c b/drivers/freetype/freetype/src/base/ftpatent.c index 82b42f0343..82b42f0343 100644 --- a/tools/freetype/freetype/src/base/ftpatent.c +++ b/drivers/freetype/freetype/src/base/ftpatent.c diff --git a/tools/freetype/freetype/src/base/ftpfr.c b/drivers/freetype/freetype/src/base/ftpfr.c index 0ba955f01f..0ba955f01f 100644 --- a/tools/freetype/freetype/src/base/ftpfr.c +++ b/drivers/freetype/freetype/src/base/ftpfr.c diff --git a/tools/freetype/freetype/src/base/ftpic.c b/drivers/freetype/freetype/src/base/ftpic.c index 1c87101696..1c87101696 100644 --- a/tools/freetype/freetype/src/base/ftpic.c +++ b/drivers/freetype/freetype/src/base/ftpic.c diff --git a/tools/freetype/freetype/src/base/ftrfork.c b/drivers/freetype/freetype/src/base/ftrfork.c index 804911721d..804911721d 100644 --- a/tools/freetype/freetype/src/base/ftrfork.c +++ b/drivers/freetype/freetype/src/base/ftrfork.c diff --git a/tools/freetype/freetype/src/base/ftsnames.c b/drivers/freetype/freetype/src/base/ftsnames.c index 260e91c148..260e91c148 100644 --- a/tools/freetype/freetype/src/base/ftsnames.c +++ b/drivers/freetype/freetype/src/base/ftsnames.c diff --git a/tools/freetype/freetype/src/base/ftstream.c b/drivers/freetype/freetype/src/base/ftstream.c index d965333daa..d965333daa 100644 --- a/tools/freetype/freetype/src/base/ftstream.c +++ b/drivers/freetype/freetype/src/base/ftstream.c diff --git a/tools/freetype/freetype/src/base/ftstroke.c b/drivers/freetype/freetype/src/base/ftstroke.c index ee61ceca0e..ee61ceca0e 100644 --- a/tools/freetype/freetype/src/base/ftstroke.c +++ b/drivers/freetype/freetype/src/base/ftstroke.c diff --git a/tools/freetype/freetype/src/base/ftsynth.c b/drivers/freetype/freetype/src/base/ftsynth.c index 241d37f426..241d37f426 100644 --- a/tools/freetype/freetype/src/base/ftsynth.c +++ b/drivers/freetype/freetype/src/base/ftsynth.c diff --git a/tools/freetype/freetype/src/base/ftsystem.c b/drivers/freetype/freetype/src/base/ftsystem.c index 2c6ddac10c..2c6ddac10c 100644 --- a/tools/freetype/freetype/src/base/ftsystem.c +++ b/drivers/freetype/freetype/src/base/ftsystem.c diff --git a/tools/freetype/freetype/src/base/fttrigon.c b/drivers/freetype/freetype/src/base/fttrigon.c index 4ffdcb77f1..4ffdcb77f1 100644 --- a/tools/freetype/freetype/src/base/fttrigon.c +++ b/drivers/freetype/freetype/src/base/fttrigon.c diff --git a/tools/freetype/freetype/src/base/fttype1.c b/drivers/freetype/freetype/src/base/fttype1.c index c1f9931dbb..c1f9931dbb 100644 --- a/tools/freetype/freetype/src/base/fttype1.c +++ b/drivers/freetype/freetype/src/base/fttype1.c diff --git a/tools/freetype/freetype/src/base/ftutil.c b/drivers/freetype/freetype/src/base/ftutil.c index 879d027529..879d027529 100644 --- a/tools/freetype/freetype/src/base/ftutil.c +++ b/drivers/freetype/freetype/src/base/ftutil.c diff --git a/tools/freetype/freetype/src/base/ftwinfnt.c b/drivers/freetype/freetype/src/base/ftwinfnt.c index 463ae761d8..463ae761d8 100644 --- a/tools/freetype/freetype/src/base/ftwinfnt.c +++ b/drivers/freetype/freetype/src/base/ftwinfnt.c diff --git a/tools/freetype/freetype/src/base/ftxf86.c b/drivers/freetype/freetype/src/base/ftxf86.c index a4bf767dfa..a4bf767dfa 100644 --- a/tools/freetype/freetype/src/base/ftxf86.c +++ b/drivers/freetype/freetype/src/base/ftxf86.c diff --git a/tools/freetype/freetype/src/base/md5.c b/drivers/freetype/freetype/src/base/md5.c index 2f01c9302c..2f01c9302c 100644 --- a/tools/freetype/freetype/src/base/md5.c +++ b/drivers/freetype/freetype/src/base/md5.c diff --git a/tools/freetype/freetype/src/base/md5.h b/drivers/freetype/freetype/src/base/md5.h index f1a6857640..f1a6857640 100644 --- a/tools/freetype/freetype/src/base/md5.h +++ b/drivers/freetype/freetype/src/base/md5.h diff --git a/tools/freetype/freetype/src/base/rules.mk b/drivers/freetype/freetype/src/base/rules.mk index e932191157..e932191157 100644 --- a/tools/freetype/freetype/src/base/rules.mk +++ b/drivers/freetype/freetype/src/base/rules.mk diff --git a/tools/freetype/freetype/src/bdf/Jamfile b/drivers/freetype/freetype/src/bdf/Jamfile index da23ccd0ad..da23ccd0ad 100644 --- a/tools/freetype/freetype/src/bdf/Jamfile +++ b/drivers/freetype/freetype/src/bdf/Jamfile diff --git a/tools/freetype/freetype/src/bdf/README b/drivers/freetype/freetype/src/bdf/README index b761aba2b2..b761aba2b2 100644 --- a/tools/freetype/freetype/src/bdf/README +++ b/drivers/freetype/freetype/src/bdf/README diff --git a/tools/freetype/freetype/src/bdf/bdf.c b/drivers/freetype/freetype/src/bdf/bdf.c index f95fb76225..f95fb76225 100644 --- a/tools/freetype/freetype/src/bdf/bdf.c +++ b/drivers/freetype/freetype/src/bdf/bdf.c diff --git a/tools/freetype/freetype/src/bdf/bdf.h b/drivers/freetype/freetype/src/bdf/bdf.h index d11be6f147..d11be6f147 100644 --- a/tools/freetype/freetype/src/bdf/bdf.h +++ b/drivers/freetype/freetype/src/bdf/bdf.h diff --git a/tools/freetype/freetype/src/bdf/bdfdrivr.c b/drivers/freetype/freetype/src/bdf/bdfdrivr.c index 0ea0a5ea5e..0ea0a5ea5e 100644 --- a/tools/freetype/freetype/src/bdf/bdfdrivr.c +++ b/drivers/freetype/freetype/src/bdf/bdfdrivr.c diff --git a/tools/freetype/freetype/src/bdf/bdfdrivr.h b/drivers/freetype/freetype/src/bdf/bdfdrivr.h index ca0dae50d2..ca0dae50d2 100644 --- a/tools/freetype/freetype/src/bdf/bdfdrivr.h +++ b/drivers/freetype/freetype/src/bdf/bdfdrivr.h diff --git a/tools/freetype/freetype/src/bdf/bdferror.h b/drivers/freetype/freetype/src/bdf/bdferror.h index ea545aca06..ea545aca06 100644 --- a/tools/freetype/freetype/src/bdf/bdferror.h +++ b/drivers/freetype/freetype/src/bdf/bdferror.h diff --git a/tools/freetype/freetype/src/bdf/bdflib.c b/drivers/freetype/freetype/src/bdf/bdflib.c index 0b8412d9eb..0b8412d9eb 100644 --- a/tools/freetype/freetype/src/bdf/bdflib.c +++ b/drivers/freetype/freetype/src/bdf/bdflib.c diff --git a/tools/freetype/freetype/src/bdf/module.mk b/drivers/freetype/freetype/src/bdf/module.mk index fe06ae8e06..fe06ae8e06 100644 --- a/tools/freetype/freetype/src/bdf/module.mk +++ b/drivers/freetype/freetype/src/bdf/module.mk diff --git a/tools/freetype/freetype/src/bdf/rules.mk b/drivers/freetype/freetype/src/bdf/rules.mk index 6ff1614dde..6ff1614dde 100644 --- a/tools/freetype/freetype/src/bdf/rules.mk +++ b/drivers/freetype/freetype/src/bdf/rules.mk diff --git a/tools/freetype/freetype/src/cache/Jamfile b/drivers/freetype/freetype/src/cache/Jamfile index 340cff7742..340cff7742 100644 --- a/tools/freetype/freetype/src/cache/Jamfile +++ b/drivers/freetype/freetype/src/cache/Jamfile diff --git a/tools/freetype/freetype/src/cache/ftcache.c b/drivers/freetype/freetype/src/cache/ftcache.c index d41e91e5ec..d41e91e5ec 100644 --- a/tools/freetype/freetype/src/cache/ftcache.c +++ b/drivers/freetype/freetype/src/cache/ftcache.c diff --git a/tools/freetype/freetype/src/cache/ftcbasic.c b/drivers/freetype/freetype/src/cache/ftcbasic.c index 84d336d5d6..84d336d5d6 100644 --- a/tools/freetype/freetype/src/cache/ftcbasic.c +++ b/drivers/freetype/freetype/src/cache/ftcbasic.c diff --git a/tools/freetype/freetype/src/cache/ftccache.c b/drivers/freetype/freetype/src/cache/ftccache.c index f20dd4502c..f20dd4502c 100644 --- a/tools/freetype/freetype/src/cache/ftccache.c +++ b/drivers/freetype/freetype/src/cache/ftccache.c diff --git a/tools/freetype/freetype/src/cache/ftccache.h b/drivers/freetype/freetype/src/cache/ftccache.h index 4155f320e0..4155f320e0 100644 --- a/tools/freetype/freetype/src/cache/ftccache.h +++ b/drivers/freetype/freetype/src/cache/ftccache.h diff --git a/tools/freetype/freetype/src/cache/ftccback.h b/drivers/freetype/freetype/src/cache/ftccback.h index 9528279273..9528279273 100644 --- a/tools/freetype/freetype/src/cache/ftccback.h +++ b/drivers/freetype/freetype/src/cache/ftccback.h diff --git a/tools/freetype/freetype/src/cache/ftccmap.c b/drivers/freetype/freetype/src/cache/ftccmap.c index 848349be2d..848349be2d 100644 --- a/tools/freetype/freetype/src/cache/ftccmap.c +++ b/drivers/freetype/freetype/src/cache/ftccmap.c diff --git a/tools/freetype/freetype/src/cache/ftcerror.h b/drivers/freetype/freetype/src/cache/ftcerror.h index 0e055709bb..0e055709bb 100644 --- a/tools/freetype/freetype/src/cache/ftcerror.h +++ b/drivers/freetype/freetype/src/cache/ftcerror.h diff --git a/tools/freetype/freetype/src/cache/ftcglyph.c b/drivers/freetype/freetype/src/cache/ftcglyph.c index 441e177238..441e177238 100644 --- a/tools/freetype/freetype/src/cache/ftcglyph.c +++ b/drivers/freetype/freetype/src/cache/ftcglyph.c diff --git a/tools/freetype/freetype/src/cache/ftcglyph.h b/drivers/freetype/freetype/src/cache/ftcglyph.h index 5fed19cb8f..5fed19cb8f 100644 --- a/tools/freetype/freetype/src/cache/ftcglyph.h +++ b/drivers/freetype/freetype/src/cache/ftcglyph.h diff --git a/tools/freetype/freetype/src/cache/ftcimage.c b/drivers/freetype/freetype/src/cache/ftcimage.c index c242ece021..c242ece021 100644 --- a/tools/freetype/freetype/src/cache/ftcimage.c +++ b/drivers/freetype/freetype/src/cache/ftcimage.c diff --git a/tools/freetype/freetype/src/cache/ftcimage.h b/drivers/freetype/freetype/src/cache/ftcimage.h index 20d5d3e07d..20d5d3e07d 100644 --- a/tools/freetype/freetype/src/cache/ftcimage.h +++ b/drivers/freetype/freetype/src/cache/ftcimage.h diff --git a/tools/freetype/freetype/src/cache/ftcmanag.c b/drivers/freetype/freetype/src/cache/ftcmanag.c index 4eb2c5bfd6..4eb2c5bfd6 100644 --- a/tools/freetype/freetype/src/cache/ftcmanag.c +++ b/drivers/freetype/freetype/src/cache/ftcmanag.c diff --git a/tools/freetype/freetype/src/cache/ftcmanag.h b/drivers/freetype/freetype/src/cache/ftcmanag.h index 0aec33c584..0aec33c584 100644 --- a/tools/freetype/freetype/src/cache/ftcmanag.h +++ b/drivers/freetype/freetype/src/cache/ftcmanag.h diff --git a/tools/freetype/freetype/src/cache/ftcmru.c b/drivers/freetype/freetype/src/cache/ftcmru.c index dc8b4cc397..dc8b4cc397 100644 --- a/tools/freetype/freetype/src/cache/ftcmru.c +++ b/drivers/freetype/freetype/src/cache/ftcmru.c diff --git a/tools/freetype/freetype/src/cache/ftcmru.h b/drivers/freetype/freetype/src/cache/ftcmru.h index 6fccf11781..6fccf11781 100644 --- a/tools/freetype/freetype/src/cache/ftcmru.h +++ b/drivers/freetype/freetype/src/cache/ftcmru.h diff --git a/tools/freetype/freetype/src/cache/ftcsbits.c b/drivers/freetype/freetype/src/cache/ftcsbits.c index 6df1c19930..6df1c19930 100644 --- a/tools/freetype/freetype/src/cache/ftcsbits.c +++ b/drivers/freetype/freetype/src/cache/ftcsbits.c diff --git a/tools/freetype/freetype/src/cache/ftcsbits.h b/drivers/freetype/freetype/src/cache/ftcsbits.h index df55dca806..df55dca806 100644 --- a/tools/freetype/freetype/src/cache/ftcsbits.h +++ b/drivers/freetype/freetype/src/cache/ftcsbits.h diff --git a/tools/freetype/freetype/src/cache/rules.mk b/drivers/freetype/freetype/src/cache/rules.mk index ed75a6a91f..ed75a6a91f 100644 --- a/tools/freetype/freetype/src/cache/rules.mk +++ b/drivers/freetype/freetype/src/cache/rules.mk diff --git a/tools/freetype/freetype/src/cff/Jamfile b/drivers/freetype/freetype/src/cff/Jamfile index 6705d3cfdb..6705d3cfdb 100644 --- a/tools/freetype/freetype/src/cff/Jamfile +++ b/drivers/freetype/freetype/src/cff/Jamfile diff --git a/tools/freetype/freetype/src/cff/cf2arrst.c b/drivers/freetype/freetype/src/cff/cf2arrst.c index c8d6f13098..c8d6f13098 100644 --- a/tools/freetype/freetype/src/cff/cf2arrst.c +++ b/drivers/freetype/freetype/src/cff/cf2arrst.c diff --git a/tools/freetype/freetype/src/cff/cf2arrst.h b/drivers/freetype/freetype/src/cff/cf2arrst.h index ff5ad8b126..ff5ad8b126 100644 --- a/tools/freetype/freetype/src/cff/cf2arrst.h +++ b/drivers/freetype/freetype/src/cff/cf2arrst.h diff --git a/tools/freetype/freetype/src/cff/cf2blues.c b/drivers/freetype/freetype/src/cff/cf2blues.c index 5b348398af..5b348398af 100644 --- a/tools/freetype/freetype/src/cff/cf2blues.c +++ b/drivers/freetype/freetype/src/cff/cf2blues.c diff --git a/tools/freetype/freetype/src/cff/cf2blues.h b/drivers/freetype/freetype/src/cff/cf2blues.h index 2f38fcad8f..2f38fcad8f 100644 --- a/tools/freetype/freetype/src/cff/cf2blues.h +++ b/drivers/freetype/freetype/src/cff/cf2blues.h diff --git a/tools/freetype/freetype/src/cff/cf2error.c b/drivers/freetype/freetype/src/cff/cf2error.c index b5595a3d1f..b5595a3d1f 100644 --- a/tools/freetype/freetype/src/cff/cf2error.c +++ b/drivers/freetype/freetype/src/cff/cf2error.c diff --git a/tools/freetype/freetype/src/cff/cf2error.h b/drivers/freetype/freetype/src/cff/cf2error.h index 6453ebcb7b..6453ebcb7b 100644 --- a/tools/freetype/freetype/src/cff/cf2error.h +++ b/drivers/freetype/freetype/src/cff/cf2error.h diff --git a/tools/freetype/freetype/src/cff/cf2fixed.h b/drivers/freetype/freetype/src/cff/cf2fixed.h index ed1452a7da..ed1452a7da 100644 --- a/tools/freetype/freetype/src/cff/cf2fixed.h +++ b/drivers/freetype/freetype/src/cff/cf2fixed.h diff --git a/tools/freetype/freetype/src/cff/cf2font.c b/drivers/freetype/freetype/src/cff/cf2font.c index 479d9125d1..479d9125d1 100644 --- a/tools/freetype/freetype/src/cff/cf2font.c +++ b/drivers/freetype/freetype/src/cff/cf2font.c diff --git a/tools/freetype/freetype/src/cff/cf2font.h b/drivers/freetype/freetype/src/cff/cf2font.h index f9dd1bbd40..f9dd1bbd40 100644 --- a/tools/freetype/freetype/src/cff/cf2font.h +++ b/drivers/freetype/freetype/src/cff/cf2font.h diff --git a/tools/freetype/freetype/src/cff/cf2ft.c b/drivers/freetype/freetype/src/cff/cf2ft.c index c09a0244a8..c09a0244a8 100644 --- a/tools/freetype/freetype/src/cff/cf2ft.c +++ b/drivers/freetype/freetype/src/cff/cf2ft.c diff --git a/tools/freetype/freetype/src/cff/cf2ft.h b/drivers/freetype/freetype/src/cff/cf2ft.h index 731da3ca8c..731da3ca8c 100644 --- a/tools/freetype/freetype/src/cff/cf2ft.h +++ b/drivers/freetype/freetype/src/cff/cf2ft.h diff --git a/tools/freetype/freetype/src/cff/cf2glue.h b/drivers/freetype/freetype/src/cff/cf2glue.h index a24da39e93..a24da39e93 100644 --- a/tools/freetype/freetype/src/cff/cf2glue.h +++ b/drivers/freetype/freetype/src/cff/cf2glue.h diff --git a/tools/freetype/freetype/src/cff/cf2hints.c b/drivers/freetype/freetype/src/cff/cf2hints.c index 96bd49f186..96bd49f186 100644 --- a/tools/freetype/freetype/src/cff/cf2hints.c +++ b/drivers/freetype/freetype/src/cff/cf2hints.c diff --git a/tools/freetype/freetype/src/cff/cf2hints.h b/drivers/freetype/freetype/src/cff/cf2hints.h index c4fa922a39..c4fa922a39 100644 --- a/tools/freetype/freetype/src/cff/cf2hints.h +++ b/drivers/freetype/freetype/src/cff/cf2hints.h diff --git a/tools/freetype/freetype/src/cff/cf2intrp.c b/drivers/freetype/freetype/src/cff/cf2intrp.c index 5610917cc3..5610917cc3 100644 --- a/tools/freetype/freetype/src/cff/cf2intrp.c +++ b/drivers/freetype/freetype/src/cff/cf2intrp.c diff --git a/tools/freetype/freetype/src/cff/cf2intrp.h b/drivers/freetype/freetype/src/cff/cf2intrp.h index b5d8947838..b5d8947838 100644 --- a/tools/freetype/freetype/src/cff/cf2intrp.h +++ b/drivers/freetype/freetype/src/cff/cf2intrp.h diff --git a/tools/freetype/freetype/src/cff/cf2read.c b/drivers/freetype/freetype/src/cff/cf2read.c index 2b429e3eeb..2b429e3eeb 100644 --- a/tools/freetype/freetype/src/cff/cf2read.c +++ b/drivers/freetype/freetype/src/cff/cf2read.c diff --git a/tools/freetype/freetype/src/cff/cf2read.h b/drivers/freetype/freetype/src/cff/cf2read.h index 7ef7c8c149..7ef7c8c149 100644 --- a/tools/freetype/freetype/src/cff/cf2read.h +++ b/drivers/freetype/freetype/src/cff/cf2read.h diff --git a/tools/freetype/freetype/src/cff/cf2stack.c b/drivers/freetype/freetype/src/cff/cf2stack.c index 8332b5d91a..8332b5d91a 100644 --- a/tools/freetype/freetype/src/cff/cf2stack.c +++ b/drivers/freetype/freetype/src/cff/cf2stack.c diff --git a/tools/freetype/freetype/src/cff/cf2stack.h b/drivers/freetype/freetype/src/cff/cf2stack.h index 7d6d1961fe..7d6d1961fe 100644 --- a/tools/freetype/freetype/src/cff/cf2stack.h +++ b/drivers/freetype/freetype/src/cff/cf2stack.h diff --git a/tools/freetype/freetype/src/cff/cf2types.h b/drivers/freetype/freetype/src/cff/cf2types.h index ac6a02266e..ac6a02266e 100644 --- a/tools/freetype/freetype/src/cff/cf2types.h +++ b/drivers/freetype/freetype/src/cff/cf2types.h diff --git a/tools/freetype/freetype/src/cff/cff.c b/drivers/freetype/freetype/src/cff/cff.c index c3840b5838..c3840b5838 100644 --- a/tools/freetype/freetype/src/cff/cff.c +++ b/drivers/freetype/freetype/src/cff/cff.c diff --git a/tools/freetype/freetype/src/cff/cffcmap.c b/drivers/freetype/freetype/src/cff/cffcmap.c index f6e03c6420..f6e03c6420 100644 --- a/tools/freetype/freetype/src/cff/cffcmap.c +++ b/drivers/freetype/freetype/src/cff/cffcmap.c diff --git a/tools/freetype/freetype/src/cff/cffcmap.h b/drivers/freetype/freetype/src/cff/cffcmap.h index 3f7f67bbe0..3f7f67bbe0 100644 --- a/tools/freetype/freetype/src/cff/cffcmap.h +++ b/drivers/freetype/freetype/src/cff/cffcmap.h diff --git a/tools/freetype/freetype/src/cff/cffdrivr.c b/drivers/freetype/freetype/src/cff/cffdrivr.c index c8ca96ba49..c8ca96ba49 100644 --- a/tools/freetype/freetype/src/cff/cffdrivr.c +++ b/drivers/freetype/freetype/src/cff/cffdrivr.c diff --git a/tools/freetype/freetype/src/cff/cffdrivr.h b/drivers/freetype/freetype/src/cff/cffdrivr.h index 50e8138701..50e8138701 100644 --- a/tools/freetype/freetype/src/cff/cffdrivr.h +++ b/drivers/freetype/freetype/src/cff/cffdrivr.h diff --git a/tools/freetype/freetype/src/cff/cfferrs.h b/drivers/freetype/freetype/src/cff/cfferrs.h index 801d73ec6b..801d73ec6b 100644 --- a/tools/freetype/freetype/src/cff/cfferrs.h +++ b/drivers/freetype/freetype/src/cff/cfferrs.h diff --git a/tools/freetype/freetype/src/cff/cffgload.c b/drivers/freetype/freetype/src/cff/cffgload.c index 6a8494fa9f..6a8494fa9f 100644 --- a/tools/freetype/freetype/src/cff/cffgload.c +++ b/drivers/freetype/freetype/src/cff/cffgload.c diff --git a/tools/freetype/freetype/src/cff/cffgload.h b/drivers/freetype/freetype/src/cff/cffgload.h index 41df7db692..41df7db692 100644 --- a/tools/freetype/freetype/src/cff/cffgload.h +++ b/drivers/freetype/freetype/src/cff/cffgload.h diff --git a/tools/freetype/freetype/src/cff/cffload.c b/drivers/freetype/freetype/src/cff/cffload.c index 64b497168d..64b497168d 100644 --- a/tools/freetype/freetype/src/cff/cffload.c +++ b/drivers/freetype/freetype/src/cff/cffload.c diff --git a/tools/freetype/freetype/src/cff/cffload.h b/drivers/freetype/freetype/src/cff/cffload.h index 804961964b..804961964b 100644 --- a/tools/freetype/freetype/src/cff/cffload.h +++ b/drivers/freetype/freetype/src/cff/cffload.h diff --git a/tools/freetype/freetype/src/cff/cffobjs.c b/drivers/freetype/freetype/src/cff/cffobjs.c index dd750d1041..dd750d1041 100644 --- a/tools/freetype/freetype/src/cff/cffobjs.c +++ b/drivers/freetype/freetype/src/cff/cffobjs.c diff --git a/tools/freetype/freetype/src/cff/cffobjs.h b/drivers/freetype/freetype/src/cff/cffobjs.h index b375c20c74..b375c20c74 100644 --- a/tools/freetype/freetype/src/cff/cffobjs.h +++ b/drivers/freetype/freetype/src/cff/cffobjs.h diff --git a/tools/freetype/freetype/src/cff/cffparse.c b/drivers/freetype/freetype/src/cff/cffparse.c index 96222120b0..96222120b0 100644 --- a/tools/freetype/freetype/src/cff/cffparse.c +++ b/drivers/freetype/freetype/src/cff/cffparse.c diff --git a/tools/freetype/freetype/src/cff/cffparse.h b/drivers/freetype/freetype/src/cff/cffparse.h index 61d91ed2e2..61d91ed2e2 100644 --- a/tools/freetype/freetype/src/cff/cffparse.h +++ b/drivers/freetype/freetype/src/cff/cffparse.h diff --git a/tools/freetype/freetype/src/cff/cffpic.c b/drivers/freetype/freetype/src/cff/cffpic.c index f22e4f0d53..f22e4f0d53 100644 --- a/tools/freetype/freetype/src/cff/cffpic.c +++ b/drivers/freetype/freetype/src/cff/cffpic.c diff --git a/tools/freetype/freetype/src/cff/cffpic.h b/drivers/freetype/freetype/src/cff/cffpic.h index 50bab4c173..50bab4c173 100644 --- a/tools/freetype/freetype/src/cff/cffpic.h +++ b/drivers/freetype/freetype/src/cff/cffpic.h diff --git a/tools/freetype/freetype/src/cff/cfftoken.h b/drivers/freetype/freetype/src/cff/cfftoken.h index bcb4276a78..bcb4276a78 100644 --- a/tools/freetype/freetype/src/cff/cfftoken.h +++ b/drivers/freetype/freetype/src/cff/cfftoken.h diff --git a/tools/freetype/freetype/src/cff/cfftypes.h b/drivers/freetype/freetype/src/cff/cfftypes.h index 8727446664..8727446664 100644 --- a/tools/freetype/freetype/src/cff/cfftypes.h +++ b/drivers/freetype/freetype/src/cff/cfftypes.h diff --git a/tools/freetype/freetype/src/cff/module.mk b/drivers/freetype/freetype/src/cff/module.mk index ef1391c279..ef1391c279 100644 --- a/tools/freetype/freetype/src/cff/module.mk +++ b/drivers/freetype/freetype/src/cff/module.mk diff --git a/tools/freetype/freetype/src/cff/rules.mk b/drivers/freetype/freetype/src/cff/rules.mk index 13115c2550..13115c2550 100644 --- a/tools/freetype/freetype/src/cff/rules.mk +++ b/drivers/freetype/freetype/src/cff/rules.mk diff --git a/tools/freetype/freetype/src/cid/Jamfile b/drivers/freetype/freetype/src/cid/Jamfile index ebeaed54ea..ebeaed54ea 100644 --- a/tools/freetype/freetype/src/cid/Jamfile +++ b/drivers/freetype/freetype/src/cid/Jamfile diff --git a/tools/freetype/freetype/src/cid/ciderrs.h b/drivers/freetype/freetype/src/cid/ciderrs.h index ef13155504..ef13155504 100644 --- a/tools/freetype/freetype/src/cid/ciderrs.h +++ b/drivers/freetype/freetype/src/cid/ciderrs.h diff --git a/tools/freetype/freetype/src/cid/cidgload.c b/drivers/freetype/freetype/src/cid/cidgload.c index a1a8658693..a1a8658693 100644 --- a/tools/freetype/freetype/src/cid/cidgload.c +++ b/drivers/freetype/freetype/src/cid/cidgload.c diff --git a/tools/freetype/freetype/src/cid/cidgload.h b/drivers/freetype/freetype/src/cid/cidgload.h index a0a91bfea8..a0a91bfea8 100644 --- a/tools/freetype/freetype/src/cid/cidgload.h +++ b/drivers/freetype/freetype/src/cid/cidgload.h diff --git a/tools/freetype/freetype/src/cid/cidload.c b/drivers/freetype/freetype/src/cid/cidload.c index f2a18ea510..f2a18ea510 100644 --- a/tools/freetype/freetype/src/cid/cidload.c +++ b/drivers/freetype/freetype/src/cid/cidload.c diff --git a/tools/freetype/freetype/src/cid/cidload.h b/drivers/freetype/freetype/src/cid/cidload.h index 8c172ffee2..8c172ffee2 100644 --- a/tools/freetype/freetype/src/cid/cidload.h +++ b/drivers/freetype/freetype/src/cid/cidload.h diff --git a/tools/freetype/freetype/src/cid/cidobjs.c b/drivers/freetype/freetype/src/cid/cidobjs.c index 46555e2dc8..46555e2dc8 100644 --- a/tools/freetype/freetype/src/cid/cidobjs.c +++ b/drivers/freetype/freetype/src/cid/cidobjs.c diff --git a/tools/freetype/freetype/src/cid/cidobjs.h b/drivers/freetype/freetype/src/cid/cidobjs.h index aee346d1c8..aee346d1c8 100644 --- a/tools/freetype/freetype/src/cid/cidobjs.h +++ b/drivers/freetype/freetype/src/cid/cidobjs.h diff --git a/tools/freetype/freetype/src/cid/cidparse.c b/drivers/freetype/freetype/src/cid/cidparse.c index 53df3155d1..53df3155d1 100644 --- a/tools/freetype/freetype/src/cid/cidparse.c +++ b/drivers/freetype/freetype/src/cid/cidparse.c diff --git a/tools/freetype/freetype/src/cid/cidparse.h b/drivers/freetype/freetype/src/cid/cidparse.h index ca37deab93..ca37deab93 100644 --- a/tools/freetype/freetype/src/cid/cidparse.h +++ b/drivers/freetype/freetype/src/cid/cidparse.h diff --git a/tools/freetype/freetype/src/cid/cidriver.c b/drivers/freetype/freetype/src/cid/cidriver.c index 6132a27763..6132a27763 100644 --- a/tools/freetype/freetype/src/cid/cidriver.c +++ b/drivers/freetype/freetype/src/cid/cidriver.c diff --git a/tools/freetype/freetype/src/cid/cidriver.h b/drivers/freetype/freetype/src/cid/cidriver.h index 3c45e06886..3c45e06886 100644 --- a/tools/freetype/freetype/src/cid/cidriver.h +++ b/drivers/freetype/freetype/src/cid/cidriver.h diff --git a/tools/freetype/freetype/src/cid/cidtoken.h b/drivers/freetype/freetype/src/cid/cidtoken.h index 904cb09cf4..904cb09cf4 100644 --- a/tools/freetype/freetype/src/cid/cidtoken.h +++ b/drivers/freetype/freetype/src/cid/cidtoken.h diff --git a/tools/freetype/freetype/src/cid/module.mk b/drivers/freetype/freetype/src/cid/module.mk index ce30bfd7ae..ce30bfd7ae 100644 --- a/tools/freetype/freetype/src/cid/module.mk +++ b/drivers/freetype/freetype/src/cid/module.mk diff --git a/tools/freetype/freetype/src/cid/rules.mk b/drivers/freetype/freetype/src/cid/rules.mk index f362744612..f362744612 100644 --- a/tools/freetype/freetype/src/cid/rules.mk +++ b/drivers/freetype/freetype/src/cid/rules.mk diff --git a/tools/freetype/freetype/src/cid/type1cid.c b/drivers/freetype/freetype/src/cid/type1cid.c index 0b866e97c4..0b866e97c4 100644 --- a/tools/freetype/freetype/src/cid/type1cid.c +++ b/drivers/freetype/freetype/src/cid/type1cid.c diff --git a/tools/freetype/freetype/src/gxvalid/Jamfile b/drivers/freetype/freetype/src/gxvalid/Jamfile index 88049a625d..88049a625d 100644 --- a/tools/freetype/freetype/src/gxvalid/Jamfile +++ b/drivers/freetype/freetype/src/gxvalid/Jamfile diff --git a/tools/freetype/freetype/src/gxvalid/README b/drivers/freetype/freetype/src/gxvalid/README index 28e535b0bc..28e535b0bc 100644 --- a/tools/freetype/freetype/src/gxvalid/README +++ b/drivers/freetype/freetype/src/gxvalid/README diff --git a/tools/freetype/freetype/src/gxvalid/gxvalid.c b/drivers/freetype/freetype/src/gxvalid/gxvalid.c index bc36e675d1..bc36e675d1 100644 --- a/tools/freetype/freetype/src/gxvalid/gxvalid.c +++ b/drivers/freetype/freetype/src/gxvalid/gxvalid.c diff --git a/tools/freetype/freetype/src/gxvalid/gxvalid.h b/drivers/freetype/freetype/src/gxvalid/gxvalid.h index 27be9ecca8..27be9ecca8 100644 --- a/tools/freetype/freetype/src/gxvalid/gxvalid.h +++ b/drivers/freetype/freetype/src/gxvalid/gxvalid.h diff --git a/tools/freetype/freetype/src/gxvalid/gxvbsln.c b/drivers/freetype/freetype/src/gxvalid/gxvbsln.c index 3d10031563..3d10031563 100644 --- a/tools/freetype/freetype/src/gxvalid/gxvbsln.c +++ b/drivers/freetype/freetype/src/gxvalid/gxvbsln.c diff --git a/tools/freetype/freetype/src/gxvalid/gxvcommn.c b/drivers/freetype/freetype/src/gxvalid/gxvcommn.c index 2ac80be8c7..2ac80be8c7 100644 --- a/tools/freetype/freetype/src/gxvalid/gxvcommn.c +++ b/drivers/freetype/freetype/src/gxvalid/gxvcommn.c diff --git a/tools/freetype/freetype/src/gxvalid/gxvcommn.h b/drivers/freetype/freetype/src/gxvalid/gxvcommn.h index 1ff87e4423..1ff87e4423 100644 --- a/tools/freetype/freetype/src/gxvalid/gxvcommn.h +++ b/drivers/freetype/freetype/src/gxvalid/gxvcommn.h diff --git a/tools/freetype/freetype/src/gxvalid/gxverror.h b/drivers/freetype/freetype/src/gxvalid/gxverror.h index c573b72de7..c573b72de7 100644 --- a/tools/freetype/freetype/src/gxvalid/gxverror.h +++ b/drivers/freetype/freetype/src/gxvalid/gxverror.h diff --git a/tools/freetype/freetype/src/gxvalid/gxvfeat.c b/drivers/freetype/freetype/src/gxvalid/gxvfeat.c index 6f75650991..6f75650991 100644 --- a/tools/freetype/freetype/src/gxvalid/gxvfeat.c +++ b/drivers/freetype/freetype/src/gxvalid/gxvfeat.c diff --git a/tools/freetype/freetype/src/gxvalid/gxvfeat.h b/drivers/freetype/freetype/src/gxvalid/gxvfeat.h index 049d23a0b9..049d23a0b9 100644 --- a/tools/freetype/freetype/src/gxvalid/gxvfeat.h +++ b/drivers/freetype/freetype/src/gxvalid/gxvfeat.h diff --git a/tools/freetype/freetype/src/gxvalid/gxvfgen.c b/drivers/freetype/freetype/src/gxvalid/gxvfgen.c index e48778a2a1..e48778a2a1 100644 --- a/tools/freetype/freetype/src/gxvalid/gxvfgen.c +++ b/drivers/freetype/freetype/src/gxvalid/gxvfgen.c diff --git a/tools/freetype/freetype/src/gxvalid/gxvjust.c b/drivers/freetype/freetype/src/gxvalid/gxvjust.c index 7816e0b7fb..7816e0b7fb 100644 --- a/tools/freetype/freetype/src/gxvalid/gxvjust.c +++ b/drivers/freetype/freetype/src/gxvalid/gxvjust.c diff --git a/tools/freetype/freetype/src/gxvalid/gxvkern.c b/drivers/freetype/freetype/src/gxvalid/gxvkern.c index 557c5f1fe4..557c5f1fe4 100644 --- a/tools/freetype/freetype/src/gxvalid/gxvkern.c +++ b/drivers/freetype/freetype/src/gxvalid/gxvkern.c diff --git a/tools/freetype/freetype/src/gxvalid/gxvlcar.c b/drivers/freetype/freetype/src/gxvalid/gxvlcar.c index f14fa5b131..f14fa5b131 100644 --- a/tools/freetype/freetype/src/gxvalid/gxvlcar.c +++ b/drivers/freetype/freetype/src/gxvalid/gxvlcar.c diff --git a/tools/freetype/freetype/src/gxvalid/gxvmod.c b/drivers/freetype/freetype/src/gxvalid/gxvmod.c index 278d47688a..278d47688a 100644 --- a/tools/freetype/freetype/src/gxvalid/gxvmod.c +++ b/drivers/freetype/freetype/src/gxvalid/gxvmod.c diff --git a/tools/freetype/freetype/src/gxvalid/gxvmod.h b/drivers/freetype/freetype/src/gxvalid/gxvmod.h index 22732ba992..22732ba992 100644 --- a/tools/freetype/freetype/src/gxvalid/gxvmod.h +++ b/drivers/freetype/freetype/src/gxvalid/gxvmod.h diff --git a/tools/freetype/freetype/src/gxvalid/gxvmort.c b/drivers/freetype/freetype/src/gxvalid/gxvmort.c index 5356e67ca7..5356e67ca7 100644 --- a/tools/freetype/freetype/src/gxvalid/gxvmort.c +++ b/drivers/freetype/freetype/src/gxvalid/gxvmort.c diff --git a/tools/freetype/freetype/src/gxvalid/gxvmort.h b/drivers/freetype/freetype/src/gxvalid/gxvmort.h index 1e5a1f5ab6..1e5a1f5ab6 100644 --- a/tools/freetype/freetype/src/gxvalid/gxvmort.h +++ b/drivers/freetype/freetype/src/gxvalid/gxvmort.h diff --git a/tools/freetype/freetype/src/gxvalid/gxvmort0.c b/drivers/freetype/freetype/src/gxvalid/gxvmort0.c index b136ceda27..b136ceda27 100644 --- a/tools/freetype/freetype/src/gxvalid/gxvmort0.c +++ b/drivers/freetype/freetype/src/gxvalid/gxvmort0.c diff --git a/tools/freetype/freetype/src/gxvalid/gxvmort1.c b/drivers/freetype/freetype/src/gxvalid/gxvmort1.c index 1c17a5d92a..1c17a5d92a 100644 --- a/tools/freetype/freetype/src/gxvalid/gxvmort1.c +++ b/drivers/freetype/freetype/src/gxvalid/gxvmort1.c diff --git a/tools/freetype/freetype/src/gxvalid/gxvmort2.c b/drivers/freetype/freetype/src/gxvalid/gxvmort2.c index 9e08fb792a..9e08fb792a 100644 --- a/tools/freetype/freetype/src/gxvalid/gxvmort2.c +++ b/drivers/freetype/freetype/src/gxvalid/gxvmort2.c diff --git a/tools/freetype/freetype/src/gxvalid/gxvmort4.c b/drivers/freetype/freetype/src/gxvalid/gxvmort4.c index 83470988c0..83470988c0 100644 --- a/tools/freetype/freetype/src/gxvalid/gxvmort4.c +++ b/drivers/freetype/freetype/src/gxvalid/gxvmort4.c diff --git a/tools/freetype/freetype/src/gxvalid/gxvmort5.c b/drivers/freetype/freetype/src/gxvalid/gxvmort5.c index 32cfb03639..32cfb03639 100644 --- a/tools/freetype/freetype/src/gxvalid/gxvmort5.c +++ b/drivers/freetype/freetype/src/gxvalid/gxvmort5.c diff --git a/tools/freetype/freetype/src/gxvalid/gxvmorx.c b/drivers/freetype/freetype/src/gxvalid/gxvmorx.c index 5ae04d3212..5ae04d3212 100644 --- a/tools/freetype/freetype/src/gxvalid/gxvmorx.c +++ b/drivers/freetype/freetype/src/gxvalid/gxvmorx.c diff --git a/tools/freetype/freetype/src/gxvalid/gxvmorx.h b/drivers/freetype/freetype/src/gxvalid/gxvmorx.h index 28c1a44f6f..28c1a44f6f 100644 --- a/tools/freetype/freetype/src/gxvalid/gxvmorx.h +++ b/drivers/freetype/freetype/src/gxvalid/gxvmorx.h diff --git a/tools/freetype/freetype/src/gxvalid/gxvmorx0.c b/drivers/freetype/freetype/src/gxvalid/gxvmorx0.c index 6a736c1775..6a736c1775 100644 --- a/tools/freetype/freetype/src/gxvalid/gxvmorx0.c +++ b/drivers/freetype/freetype/src/gxvalid/gxvmorx0.c diff --git a/tools/freetype/freetype/src/gxvalid/gxvmorx1.c b/drivers/freetype/freetype/src/gxvalid/gxvmorx1.c index ce0009a16f..ce0009a16f 100644 --- a/tools/freetype/freetype/src/gxvalid/gxvmorx1.c +++ b/drivers/freetype/freetype/src/gxvalid/gxvmorx1.c diff --git a/tools/freetype/freetype/src/gxvalid/gxvmorx2.c b/drivers/freetype/freetype/src/gxvalid/gxvmorx2.c index 9d2b0bc4af..9d2b0bc4af 100644 --- a/tools/freetype/freetype/src/gxvalid/gxvmorx2.c +++ b/drivers/freetype/freetype/src/gxvalid/gxvmorx2.c diff --git a/tools/freetype/freetype/src/gxvalid/gxvmorx4.c b/drivers/freetype/freetype/src/gxvalid/gxvmorx4.c index c0d2f78e39..c0d2f78e39 100644 --- a/tools/freetype/freetype/src/gxvalid/gxvmorx4.c +++ b/drivers/freetype/freetype/src/gxvalid/gxvmorx4.c diff --git a/tools/freetype/freetype/src/gxvalid/gxvmorx5.c b/drivers/freetype/freetype/src/gxvalid/gxvmorx5.c index d8cf700797..d8cf700797 100644 --- a/tools/freetype/freetype/src/gxvalid/gxvmorx5.c +++ b/drivers/freetype/freetype/src/gxvalid/gxvmorx5.c diff --git a/tools/freetype/freetype/src/gxvalid/gxvopbd.c b/drivers/freetype/freetype/src/gxvalid/gxvopbd.c index e125060946..e125060946 100644 --- a/tools/freetype/freetype/src/gxvalid/gxvopbd.c +++ b/drivers/freetype/freetype/src/gxvalid/gxvopbd.c diff --git a/tools/freetype/freetype/src/gxvalid/gxvprop.c b/drivers/freetype/freetype/src/gxvalid/gxvprop.c index 0be21336f8..0be21336f8 100644 --- a/tools/freetype/freetype/src/gxvalid/gxvprop.c +++ b/drivers/freetype/freetype/src/gxvalid/gxvprop.c diff --git a/tools/freetype/freetype/src/gxvalid/gxvtrak.c b/drivers/freetype/freetype/src/gxvalid/gxvtrak.c index 11fbd7ccfb..11fbd7ccfb 100644 --- a/tools/freetype/freetype/src/gxvalid/gxvtrak.c +++ b/drivers/freetype/freetype/src/gxvalid/gxvtrak.c diff --git a/tools/freetype/freetype/src/gxvalid/module.mk b/drivers/freetype/freetype/src/gxvalid/module.mk index 9fd098e2c5..9fd098e2c5 100644 --- a/tools/freetype/freetype/src/gxvalid/module.mk +++ b/drivers/freetype/freetype/src/gxvalid/module.mk diff --git a/tools/freetype/freetype/src/gxvalid/rules.mk b/drivers/freetype/freetype/src/gxvalid/rules.mk index 57bc0823db..57bc0823db 100644 --- a/tools/freetype/freetype/src/gxvalid/rules.mk +++ b/drivers/freetype/freetype/src/gxvalid/rules.mk diff --git a/tools/freetype/freetype/src/otvalid/Jamfile b/drivers/freetype/freetype/src/otvalid/Jamfile index b457143de4..b457143de4 100644 --- a/tools/freetype/freetype/src/otvalid/Jamfile +++ b/drivers/freetype/freetype/src/otvalid/Jamfile diff --git a/tools/freetype/freetype/src/otvalid/module.mk b/drivers/freetype/freetype/src/otvalid/module.mk index 9cadde55e4..9cadde55e4 100644 --- a/tools/freetype/freetype/src/otvalid/module.mk +++ b/drivers/freetype/freetype/src/otvalid/module.mk diff --git a/tools/freetype/freetype/src/otvalid/otvalid.c b/drivers/freetype/freetype/src/otvalid/otvalid.c index d5c2b75abb..d5c2b75abb 100644 --- a/tools/freetype/freetype/src/otvalid/otvalid.c +++ b/drivers/freetype/freetype/src/otvalid/otvalid.c diff --git a/tools/freetype/freetype/src/otvalid/otvalid.h b/drivers/freetype/freetype/src/otvalid/otvalid.h index eb99b9cc48..eb99b9cc48 100644 --- a/tools/freetype/freetype/src/otvalid/otvalid.h +++ b/drivers/freetype/freetype/src/otvalid/otvalid.h diff --git a/tools/freetype/freetype/src/otvalid/otvbase.c b/drivers/freetype/freetype/src/otvalid/otvbase.c index d742d2dc95..d742d2dc95 100644 --- a/tools/freetype/freetype/src/otvalid/otvbase.c +++ b/drivers/freetype/freetype/src/otvalid/otvbase.c diff --git a/tools/freetype/freetype/src/otvalid/otvcommn.c b/drivers/freetype/freetype/src/otvalid/otvcommn.c index a4f885b51f..a4f885b51f 100644 --- a/tools/freetype/freetype/src/otvalid/otvcommn.c +++ b/drivers/freetype/freetype/src/otvalid/otvcommn.c diff --git a/tools/freetype/freetype/src/otvalid/otvcommn.h b/drivers/freetype/freetype/src/otvalid/otvcommn.h index 898887fc95..898887fc95 100644 --- a/tools/freetype/freetype/src/otvalid/otvcommn.h +++ b/drivers/freetype/freetype/src/otvalid/otvcommn.h diff --git a/tools/freetype/freetype/src/otvalid/otverror.h b/drivers/freetype/freetype/src/otvalid/otverror.h index b6f00c9dba..b6f00c9dba 100644 --- a/tools/freetype/freetype/src/otvalid/otverror.h +++ b/drivers/freetype/freetype/src/otvalid/otverror.h diff --git a/tools/freetype/freetype/src/otvalid/otvgdef.c b/drivers/freetype/freetype/src/otvalid/otvgdef.c index 3633ad0de1..3633ad0de1 100644 --- a/tools/freetype/freetype/src/otvalid/otvgdef.c +++ b/drivers/freetype/freetype/src/otvalid/otvgdef.c diff --git a/tools/freetype/freetype/src/otvalid/otvgpos.c b/drivers/freetype/freetype/src/otvalid/otvgpos.c index 49b46183a3..49b46183a3 100644 --- a/tools/freetype/freetype/src/otvalid/otvgpos.c +++ b/drivers/freetype/freetype/src/otvalid/otvgpos.c diff --git a/tools/freetype/freetype/src/otvalid/otvgpos.h b/drivers/freetype/freetype/src/otvalid/otvgpos.h index 14ca408261..14ca408261 100644 --- a/tools/freetype/freetype/src/otvalid/otvgpos.h +++ b/drivers/freetype/freetype/src/otvalid/otvgpos.h diff --git a/tools/freetype/freetype/src/otvalid/otvgsub.c b/drivers/freetype/freetype/src/otvalid/otvgsub.c index ed499d1e92..ed499d1e92 100644 --- a/tools/freetype/freetype/src/otvalid/otvgsub.c +++ b/drivers/freetype/freetype/src/otvalid/otvgsub.c diff --git a/tools/freetype/freetype/src/otvalid/otvjstf.c b/drivers/freetype/freetype/src/otvalid/otvjstf.c index a616a23432..a616a23432 100644 --- a/tools/freetype/freetype/src/otvalid/otvjstf.c +++ b/drivers/freetype/freetype/src/otvalid/otvjstf.c diff --git a/tools/freetype/freetype/src/otvalid/otvmath.c b/drivers/freetype/freetype/src/otvalid/otvmath.c index 96f841f2a9..96f841f2a9 100644 --- a/tools/freetype/freetype/src/otvalid/otvmath.c +++ b/drivers/freetype/freetype/src/otvalid/otvmath.c diff --git a/tools/freetype/freetype/src/otvalid/otvmod.c b/drivers/freetype/freetype/src/otvalid/otvmod.c index 37c6e869dd..37c6e869dd 100644 --- a/tools/freetype/freetype/src/otvalid/otvmod.c +++ b/drivers/freetype/freetype/src/otvalid/otvmod.c diff --git a/tools/freetype/freetype/src/otvalid/otvmod.h b/drivers/freetype/freetype/src/otvalid/otvmod.h index f7e1550787..f7e1550787 100644 --- a/tools/freetype/freetype/src/otvalid/otvmod.h +++ b/drivers/freetype/freetype/src/otvalid/otvmod.h diff --git a/tools/freetype/freetype/src/otvalid/rules.mk b/drivers/freetype/freetype/src/otvalid/rules.mk index 53bd41e5e7..53bd41e5e7 100644 --- a/tools/freetype/freetype/src/otvalid/rules.mk +++ b/drivers/freetype/freetype/src/otvalid/rules.mk diff --git a/tools/freetype/freetype/src/pcf/Jamfile b/drivers/freetype/freetype/src/pcf/Jamfile index 752fcac2a1..752fcac2a1 100644 --- a/tools/freetype/freetype/src/pcf/Jamfile +++ b/drivers/freetype/freetype/src/pcf/Jamfile diff --git a/tools/freetype/freetype/src/pcf/README b/drivers/freetype/freetype/src/pcf/README index 10eff15fbe..10eff15fbe 100644 --- a/tools/freetype/freetype/src/pcf/README +++ b/drivers/freetype/freetype/src/pcf/README diff --git a/tools/freetype/freetype/src/pcf/module.mk b/drivers/freetype/freetype/src/pcf/module.mk index df383ff0fb..df383ff0fb 100644 --- a/tools/freetype/freetype/src/pcf/module.mk +++ b/drivers/freetype/freetype/src/pcf/module.mk diff --git a/tools/freetype/freetype/src/pcf/pcf.c b/drivers/freetype/freetype/src/pcf/pcf.c index 11d5b7b2a0..11d5b7b2a0 100644 --- a/tools/freetype/freetype/src/pcf/pcf.c +++ b/drivers/freetype/freetype/src/pcf/pcf.c diff --git a/tools/freetype/freetype/src/pcf/pcf.h b/drivers/freetype/freetype/src/pcf/pcf.h index af0ffc3378..af0ffc3378 100644 --- a/tools/freetype/freetype/src/pcf/pcf.h +++ b/drivers/freetype/freetype/src/pcf/pcf.h diff --git a/tools/freetype/freetype/src/pcf/pcfdrivr.c b/drivers/freetype/freetype/src/pcf/pcfdrivr.c index df25a645a0..df25a645a0 100644 --- a/tools/freetype/freetype/src/pcf/pcfdrivr.c +++ b/drivers/freetype/freetype/src/pcf/pcfdrivr.c diff --git a/tools/freetype/freetype/src/pcf/pcfdrivr.h b/drivers/freetype/freetype/src/pcf/pcfdrivr.h index 54614951b5..54614951b5 100644 --- a/tools/freetype/freetype/src/pcf/pcfdrivr.h +++ b/drivers/freetype/freetype/src/pcf/pcfdrivr.h diff --git a/tools/freetype/freetype/src/pcf/pcferror.h b/drivers/freetype/freetype/src/pcf/pcferror.h index e51fff8ea6..e51fff8ea6 100644 --- a/tools/freetype/freetype/src/pcf/pcferror.h +++ b/drivers/freetype/freetype/src/pcf/pcferror.h diff --git a/tools/freetype/freetype/src/pcf/pcfread.c b/drivers/freetype/freetype/src/pcf/pcfread.c index 3c1bb7dfa2..3c1bb7dfa2 100644 --- a/tools/freetype/freetype/src/pcf/pcfread.c +++ b/drivers/freetype/freetype/src/pcf/pcfread.c diff --git a/tools/freetype/freetype/src/pcf/pcfread.h b/drivers/freetype/freetype/src/pcf/pcfread.h index c9524f1346..c9524f1346 100644 --- a/tools/freetype/freetype/src/pcf/pcfread.h +++ b/drivers/freetype/freetype/src/pcf/pcfread.h diff --git a/tools/freetype/freetype/src/pcf/pcfutil.c b/drivers/freetype/freetype/src/pcf/pcfutil.c index b91274f935..b91274f935 100644 --- a/tools/freetype/freetype/src/pcf/pcfutil.c +++ b/drivers/freetype/freetype/src/pcf/pcfutil.c diff --git a/tools/freetype/freetype/src/pcf/pcfutil.h b/drivers/freetype/freetype/src/pcf/pcfutil.h index ce10fb541d..ce10fb541d 100644 --- a/tools/freetype/freetype/src/pcf/pcfutil.h +++ b/drivers/freetype/freetype/src/pcf/pcfutil.h diff --git a/tools/freetype/freetype/src/pcf/rules.mk b/drivers/freetype/freetype/src/pcf/rules.mk index 78641528fa..78641528fa 100644 --- a/tools/freetype/freetype/src/pcf/rules.mk +++ b/drivers/freetype/freetype/src/pcf/rules.mk diff --git a/tools/freetype/freetype/src/pfr/Jamfile b/drivers/freetype/freetype/src/pfr/Jamfile index 9e2f2b8d05..9e2f2b8d05 100644 --- a/tools/freetype/freetype/src/pfr/Jamfile +++ b/drivers/freetype/freetype/src/pfr/Jamfile diff --git a/tools/freetype/freetype/src/pfr/module.mk b/drivers/freetype/freetype/src/pfr/module.mk index 8d1d28a9d2..8d1d28a9d2 100644 --- a/tools/freetype/freetype/src/pfr/module.mk +++ b/drivers/freetype/freetype/src/pfr/module.mk diff --git a/tools/freetype/freetype/src/pfr/pfr.c b/drivers/freetype/freetype/src/pfr/pfr.c index eb2c4edb7e..eb2c4edb7e 100644 --- a/tools/freetype/freetype/src/pfr/pfr.c +++ b/drivers/freetype/freetype/src/pfr/pfr.c diff --git a/tools/freetype/freetype/src/pfr/pfrcmap.c b/drivers/freetype/freetype/src/pfr/pfrcmap.c index 740c433d66..740c433d66 100644 --- a/tools/freetype/freetype/src/pfr/pfrcmap.c +++ b/drivers/freetype/freetype/src/pfr/pfrcmap.c diff --git a/tools/freetype/freetype/src/pfr/pfrcmap.h b/drivers/freetype/freetype/src/pfr/pfrcmap.h index a626953054..a626953054 100644 --- a/tools/freetype/freetype/src/pfr/pfrcmap.h +++ b/drivers/freetype/freetype/src/pfr/pfrcmap.h diff --git a/tools/freetype/freetype/src/pfr/pfrdrivr.c b/drivers/freetype/freetype/src/pfr/pfrdrivr.c index 4c43947bf4..4c43947bf4 100644 --- a/tools/freetype/freetype/src/pfr/pfrdrivr.c +++ b/drivers/freetype/freetype/src/pfr/pfrdrivr.c diff --git a/tools/freetype/freetype/src/pfr/pfrdrivr.h b/drivers/freetype/freetype/src/pfr/pfrdrivr.h index 75f86c5cdd..75f86c5cdd 100644 --- a/tools/freetype/freetype/src/pfr/pfrdrivr.h +++ b/drivers/freetype/freetype/src/pfr/pfrdrivr.h diff --git a/tools/freetype/freetype/src/pfr/pfrerror.h b/drivers/freetype/freetype/src/pfr/pfrerror.h index 94dc8c5e1c..94dc8c5e1c 100644 --- a/tools/freetype/freetype/src/pfr/pfrerror.h +++ b/drivers/freetype/freetype/src/pfr/pfrerror.h diff --git a/tools/freetype/freetype/src/pfr/pfrgload.c b/drivers/freetype/freetype/src/pfr/pfrgload.c index 88b4d66a13..88b4d66a13 100644 --- a/tools/freetype/freetype/src/pfr/pfrgload.c +++ b/drivers/freetype/freetype/src/pfr/pfrgload.c diff --git a/tools/freetype/freetype/src/pfr/pfrgload.h b/drivers/freetype/freetype/src/pfr/pfrgload.h index 7cc7a8702a..7cc7a8702a 100644 --- a/tools/freetype/freetype/src/pfr/pfrgload.h +++ b/drivers/freetype/freetype/src/pfr/pfrgload.h diff --git a/tools/freetype/freetype/src/pfr/pfrload.c b/drivers/freetype/freetype/src/pfr/pfrload.c index c19fceb1ee..c19fceb1ee 100644 --- a/tools/freetype/freetype/src/pfr/pfrload.c +++ b/drivers/freetype/freetype/src/pfr/pfrload.c diff --git a/tools/freetype/freetype/src/pfr/pfrload.h b/drivers/freetype/freetype/src/pfr/pfrload.h index ed010715d1..ed010715d1 100644 --- a/tools/freetype/freetype/src/pfr/pfrload.h +++ b/drivers/freetype/freetype/src/pfr/pfrload.h diff --git a/tools/freetype/freetype/src/pfr/pfrobjs.c b/drivers/freetype/freetype/src/pfr/pfrobjs.c index 75fc4c3f1f..75fc4c3f1f 100644 --- a/tools/freetype/freetype/src/pfr/pfrobjs.c +++ b/drivers/freetype/freetype/src/pfr/pfrobjs.c diff --git a/tools/freetype/freetype/src/pfr/pfrobjs.h b/drivers/freetype/freetype/src/pfr/pfrobjs.h index f6aa8b44cc..f6aa8b44cc 100644 --- a/tools/freetype/freetype/src/pfr/pfrobjs.h +++ b/drivers/freetype/freetype/src/pfr/pfrobjs.h diff --git a/tools/freetype/freetype/src/pfr/pfrsbit.c b/drivers/freetype/freetype/src/pfr/pfrsbit.c index 2da1500707..2da1500707 100644 --- a/tools/freetype/freetype/src/pfr/pfrsbit.c +++ b/drivers/freetype/freetype/src/pfr/pfrsbit.c diff --git a/tools/freetype/freetype/src/pfr/pfrsbit.h b/drivers/freetype/freetype/src/pfr/pfrsbit.h index 015e9e6dad..015e9e6dad 100644 --- a/tools/freetype/freetype/src/pfr/pfrsbit.h +++ b/drivers/freetype/freetype/src/pfr/pfrsbit.h diff --git a/tools/freetype/freetype/src/pfr/pfrtypes.h b/drivers/freetype/freetype/src/pfr/pfrtypes.h index 918310814c..918310814c 100644 --- a/tools/freetype/freetype/src/pfr/pfrtypes.h +++ b/drivers/freetype/freetype/src/pfr/pfrtypes.h diff --git a/tools/freetype/freetype/src/pfr/rules.mk b/drivers/freetype/freetype/src/pfr/rules.mk index 60b96c7415..60b96c7415 100644 --- a/tools/freetype/freetype/src/pfr/rules.mk +++ b/drivers/freetype/freetype/src/pfr/rules.mk diff --git a/tools/freetype/freetype/src/psaux/Jamfile b/drivers/freetype/freetype/src/psaux/Jamfile index faeded9044..faeded9044 100644 --- a/tools/freetype/freetype/src/psaux/Jamfile +++ b/drivers/freetype/freetype/src/psaux/Jamfile diff --git a/tools/freetype/freetype/src/psaux/afmparse.c b/drivers/freetype/freetype/src/psaux/afmparse.c index 6a40e110dc..6a40e110dc 100644 --- a/tools/freetype/freetype/src/psaux/afmparse.c +++ b/drivers/freetype/freetype/src/psaux/afmparse.c diff --git a/tools/freetype/freetype/src/psaux/afmparse.h b/drivers/freetype/freetype/src/psaux/afmparse.h index 35d96046c5..35d96046c5 100644 --- a/tools/freetype/freetype/src/psaux/afmparse.h +++ b/drivers/freetype/freetype/src/psaux/afmparse.h diff --git a/tools/freetype/freetype/src/psaux/module.mk b/drivers/freetype/freetype/src/psaux/module.mk index 42bf6f5199..42bf6f5199 100644 --- a/tools/freetype/freetype/src/psaux/module.mk +++ b/drivers/freetype/freetype/src/psaux/module.mk diff --git a/tools/freetype/freetype/src/psaux/psaux.c b/drivers/freetype/freetype/src/psaux/psaux.c index a4b9c5c6e4..a4b9c5c6e4 100644 --- a/tools/freetype/freetype/src/psaux/psaux.c +++ b/drivers/freetype/freetype/src/psaux/psaux.c diff --git a/tools/freetype/freetype/src/psaux/psauxerr.h b/drivers/freetype/freetype/src/psaux/psauxerr.h index d52375f8cb..d52375f8cb 100644 --- a/tools/freetype/freetype/src/psaux/psauxerr.h +++ b/drivers/freetype/freetype/src/psaux/psauxerr.h diff --git a/tools/freetype/freetype/src/psaux/psauxmod.c b/drivers/freetype/freetype/src/psaux/psauxmod.c index 4b1249d49b..4b1249d49b 100644 --- a/tools/freetype/freetype/src/psaux/psauxmod.c +++ b/drivers/freetype/freetype/src/psaux/psauxmod.c diff --git a/tools/freetype/freetype/src/psaux/psauxmod.h b/drivers/freetype/freetype/src/psaux/psauxmod.h index 1217236924..1217236924 100644 --- a/tools/freetype/freetype/src/psaux/psauxmod.h +++ b/drivers/freetype/freetype/src/psaux/psauxmod.h diff --git a/tools/freetype/freetype/src/psaux/psconv.c b/drivers/freetype/freetype/src/psaux/psconv.c index d0d8861c22..d0d8861c22 100644 --- a/tools/freetype/freetype/src/psaux/psconv.c +++ b/drivers/freetype/freetype/src/psaux/psconv.c diff --git a/tools/freetype/freetype/src/psaux/psconv.h b/drivers/freetype/freetype/src/psaux/psconv.h index d91c762210..d91c762210 100644 --- a/tools/freetype/freetype/src/psaux/psconv.h +++ b/drivers/freetype/freetype/src/psaux/psconv.h diff --git a/tools/freetype/freetype/src/psaux/psobjs.c b/drivers/freetype/freetype/src/psaux/psobjs.c index dd976d3a96..dd976d3a96 100644 --- a/tools/freetype/freetype/src/psaux/psobjs.c +++ b/drivers/freetype/freetype/src/psaux/psobjs.c diff --git a/tools/freetype/freetype/src/psaux/psobjs.h b/drivers/freetype/freetype/src/psaux/psobjs.h index e380c60dab..e380c60dab 100644 --- a/tools/freetype/freetype/src/psaux/psobjs.h +++ b/drivers/freetype/freetype/src/psaux/psobjs.h diff --git a/tools/freetype/freetype/src/psaux/rules.mk b/drivers/freetype/freetype/src/psaux/rules.mk index 7a1be37b69..7a1be37b69 100644 --- a/tools/freetype/freetype/src/psaux/rules.mk +++ b/drivers/freetype/freetype/src/psaux/rules.mk diff --git a/tools/freetype/freetype/src/psaux/t1cmap.c b/drivers/freetype/freetype/src/psaux/t1cmap.c index 9e5bd34ffe..9e5bd34ffe 100644 --- a/tools/freetype/freetype/src/psaux/t1cmap.c +++ b/drivers/freetype/freetype/src/psaux/t1cmap.c diff --git a/tools/freetype/freetype/src/psaux/t1cmap.h b/drivers/freetype/freetype/src/psaux/t1cmap.h index 7ae65d2fa1..7ae65d2fa1 100644 --- a/tools/freetype/freetype/src/psaux/t1cmap.h +++ b/drivers/freetype/freetype/src/psaux/t1cmap.h diff --git a/tools/freetype/freetype/src/psaux/t1decode.c b/drivers/freetype/freetype/src/psaux/t1decode.c index 6ce370bfaa..6ce370bfaa 100644 --- a/tools/freetype/freetype/src/psaux/t1decode.c +++ b/drivers/freetype/freetype/src/psaux/t1decode.c diff --git a/tools/freetype/freetype/src/psaux/t1decode.h b/drivers/freetype/freetype/src/psaux/t1decode.h index 00728db501..00728db501 100644 --- a/tools/freetype/freetype/src/psaux/t1decode.h +++ b/drivers/freetype/freetype/src/psaux/t1decode.h diff --git a/tools/freetype/freetype/src/pshinter/Jamfile b/drivers/freetype/freetype/src/pshinter/Jamfile index 779f1b0b82..779f1b0b82 100644 --- a/tools/freetype/freetype/src/pshinter/Jamfile +++ b/drivers/freetype/freetype/src/pshinter/Jamfile diff --git a/tools/freetype/freetype/src/pshinter/module.mk b/drivers/freetype/freetype/src/pshinter/module.mk index ed24eb7fa8..ed24eb7fa8 100644 --- a/tools/freetype/freetype/src/pshinter/module.mk +++ b/drivers/freetype/freetype/src/pshinter/module.mk diff --git a/tools/freetype/freetype/src/pshinter/pshalgo.c b/drivers/freetype/freetype/src/pshinter/pshalgo.c index 343472ddb3..343472ddb3 100644 --- a/tools/freetype/freetype/src/pshinter/pshalgo.c +++ b/drivers/freetype/freetype/src/pshinter/pshalgo.c diff --git a/tools/freetype/freetype/src/pshinter/pshalgo.h b/drivers/freetype/freetype/src/pshinter/pshalgo.h index c70f31ea94..c70f31ea94 100644 --- a/tools/freetype/freetype/src/pshinter/pshalgo.h +++ b/drivers/freetype/freetype/src/pshinter/pshalgo.h diff --git a/tools/freetype/freetype/src/pshinter/pshglob.c b/drivers/freetype/freetype/src/pshinter/pshglob.c index 9285efc9e1..9285efc9e1 100644 --- a/tools/freetype/freetype/src/pshinter/pshglob.c +++ b/drivers/freetype/freetype/src/pshinter/pshglob.c diff --git a/tools/freetype/freetype/src/pshinter/pshglob.h b/drivers/freetype/freetype/src/pshinter/pshglob.h index c511626157..c511626157 100644 --- a/tools/freetype/freetype/src/pshinter/pshglob.h +++ b/drivers/freetype/freetype/src/pshinter/pshglob.h diff --git a/tools/freetype/freetype/src/pshinter/pshinter.c b/drivers/freetype/freetype/src/pshinter/pshinter.c index b35a2a91c5..b35a2a91c5 100644 --- a/tools/freetype/freetype/src/pshinter/pshinter.c +++ b/drivers/freetype/freetype/src/pshinter/pshinter.c diff --git a/tools/freetype/freetype/src/pshinter/pshmod.c b/drivers/freetype/freetype/src/pshinter/pshmod.c index cdeaca18c9..cdeaca18c9 100644 --- a/tools/freetype/freetype/src/pshinter/pshmod.c +++ b/drivers/freetype/freetype/src/pshinter/pshmod.c diff --git a/tools/freetype/freetype/src/pshinter/pshmod.h b/drivers/freetype/freetype/src/pshinter/pshmod.h index 0ae7e96f54..0ae7e96f54 100644 --- a/tools/freetype/freetype/src/pshinter/pshmod.h +++ b/drivers/freetype/freetype/src/pshinter/pshmod.h diff --git a/tools/freetype/freetype/src/pshinter/pshnterr.h b/drivers/freetype/freetype/src/pshinter/pshnterr.h index 7cc180f0ca..7cc180f0ca 100644 --- a/tools/freetype/freetype/src/pshinter/pshnterr.h +++ b/drivers/freetype/freetype/src/pshinter/pshnterr.h diff --git a/tools/freetype/freetype/src/pshinter/pshpic.c b/drivers/freetype/freetype/src/pshinter/pshpic.c index 568f4ac4b0..568f4ac4b0 100644 --- a/tools/freetype/freetype/src/pshinter/pshpic.c +++ b/drivers/freetype/freetype/src/pshinter/pshpic.c diff --git a/tools/freetype/freetype/src/pshinter/pshpic.h b/drivers/freetype/freetype/src/pshinter/pshpic.h index b46f853113..b46f853113 100644 --- a/tools/freetype/freetype/src/pshinter/pshpic.h +++ b/drivers/freetype/freetype/src/pshinter/pshpic.h diff --git a/tools/freetype/freetype/src/pshinter/pshrec.c b/drivers/freetype/freetype/src/pshinter/pshrec.c index cd66ea869a..cd66ea869a 100644 --- a/tools/freetype/freetype/src/pshinter/pshrec.c +++ b/drivers/freetype/freetype/src/pshinter/pshrec.c diff --git a/tools/freetype/freetype/src/pshinter/pshrec.h b/drivers/freetype/freetype/src/pshinter/pshrec.h index dcb3197f94..dcb3197f94 100644 --- a/tools/freetype/freetype/src/pshinter/pshrec.h +++ b/drivers/freetype/freetype/src/pshinter/pshrec.h diff --git a/tools/freetype/freetype/src/pshinter/rules.mk b/drivers/freetype/freetype/src/pshinter/rules.mk index 888ece1058..888ece1058 100644 --- a/tools/freetype/freetype/src/pshinter/rules.mk +++ b/drivers/freetype/freetype/src/pshinter/rules.mk diff --git a/tools/freetype/freetype/src/psnames/Jamfile b/drivers/freetype/freetype/src/psnames/Jamfile index 06c0dda66f..06c0dda66f 100644 --- a/tools/freetype/freetype/src/psnames/Jamfile +++ b/drivers/freetype/freetype/src/psnames/Jamfile diff --git a/tools/freetype/freetype/src/psnames/module.mk b/drivers/freetype/freetype/src/psnames/module.mk index a6e908257c..a6e908257c 100644 --- a/tools/freetype/freetype/src/psnames/module.mk +++ b/drivers/freetype/freetype/src/psnames/module.mk diff --git a/tools/freetype/freetype/src/psnames/psmodule.c b/drivers/freetype/freetype/src/psnames/psmodule.c index 0a5bcb7d2a..0a5bcb7d2a 100644 --- a/tools/freetype/freetype/src/psnames/psmodule.c +++ b/drivers/freetype/freetype/src/psnames/psmodule.c diff --git a/tools/freetype/freetype/src/psnames/psmodule.h b/drivers/freetype/freetype/src/psnames/psmodule.h index 28fa14807c..28fa14807c 100644 --- a/tools/freetype/freetype/src/psnames/psmodule.h +++ b/drivers/freetype/freetype/src/psnames/psmodule.h diff --git a/tools/freetype/freetype/src/psnames/psnamerr.h b/drivers/freetype/freetype/src/psnames/psnamerr.h index acda7f967e..acda7f967e 100644 --- a/tools/freetype/freetype/src/psnames/psnamerr.h +++ b/drivers/freetype/freetype/src/psnames/psnamerr.h diff --git a/tools/freetype/freetype/src/psnames/psnames.c b/drivers/freetype/freetype/src/psnames/psnames.c index 1ede225dc9..1ede225dc9 100644 --- a/tools/freetype/freetype/src/psnames/psnames.c +++ b/drivers/freetype/freetype/src/psnames/psnames.c diff --git a/tools/freetype/freetype/src/psnames/pspic.c b/drivers/freetype/freetype/src/psnames/pspic.c index 3820f65a74..3820f65a74 100644 --- a/tools/freetype/freetype/src/psnames/pspic.c +++ b/drivers/freetype/freetype/src/psnames/pspic.c diff --git a/tools/freetype/freetype/src/psnames/pspic.h b/drivers/freetype/freetype/src/psnames/pspic.h index 6ff002c603..6ff002c603 100644 --- a/tools/freetype/freetype/src/psnames/pspic.h +++ b/drivers/freetype/freetype/src/psnames/pspic.h diff --git a/tools/freetype/freetype/src/psnames/pstables.h b/drivers/freetype/freetype/src/psnames/pstables.h index 0a6637f985..0a6637f985 100644 --- a/tools/freetype/freetype/src/psnames/pstables.h +++ b/drivers/freetype/freetype/src/psnames/pstables.h diff --git a/tools/freetype/freetype/src/psnames/rules.mk b/drivers/freetype/freetype/src/psnames/rules.mk index 4cd39a8ccf..4cd39a8ccf 100644 --- a/tools/freetype/freetype/src/psnames/rules.mk +++ b/drivers/freetype/freetype/src/psnames/rules.mk diff --git a/tools/freetype/freetype/src/raster/Jamfile b/drivers/freetype/freetype/src/raster/Jamfile index 4f60e87c78..4f60e87c78 100644 --- a/tools/freetype/freetype/src/raster/Jamfile +++ b/drivers/freetype/freetype/src/raster/Jamfile diff --git a/tools/freetype/freetype/src/raster/ftmisc.h b/drivers/freetype/freetype/src/raster/ftmisc.h index 703155a429..703155a429 100644 --- a/tools/freetype/freetype/src/raster/ftmisc.h +++ b/drivers/freetype/freetype/src/raster/ftmisc.h diff --git a/tools/freetype/freetype/src/raster/ftraster.c b/drivers/freetype/freetype/src/raster/ftraster.c index bbd503d97d..bbd503d97d 100644 --- a/tools/freetype/freetype/src/raster/ftraster.c +++ b/drivers/freetype/freetype/src/raster/ftraster.c diff --git a/tools/freetype/freetype/src/raster/ftraster.h b/drivers/freetype/freetype/src/raster/ftraster.h index 80fe46deba..80fe46deba 100644 --- a/tools/freetype/freetype/src/raster/ftraster.h +++ b/drivers/freetype/freetype/src/raster/ftraster.h diff --git a/tools/freetype/freetype/src/raster/ftrend1.c b/drivers/freetype/freetype/src/raster/ftrend1.c index aa7f6d5664..aa7f6d5664 100644 --- a/tools/freetype/freetype/src/raster/ftrend1.c +++ b/drivers/freetype/freetype/src/raster/ftrend1.c diff --git a/tools/freetype/freetype/src/raster/ftrend1.h b/drivers/freetype/freetype/src/raster/ftrend1.h index 4cf128622a..4cf128622a 100644 --- a/tools/freetype/freetype/src/raster/ftrend1.h +++ b/drivers/freetype/freetype/src/raster/ftrend1.h diff --git a/tools/freetype/freetype/src/raster/module.mk b/drivers/freetype/freetype/src/raster/module.mk index cbff5df96e..cbff5df96e 100644 --- a/tools/freetype/freetype/src/raster/module.mk +++ b/drivers/freetype/freetype/src/raster/module.mk diff --git a/tools/freetype/freetype/src/raster/raster.c b/drivers/freetype/freetype/src/raster/raster.c index 1202a116cd..1202a116cd 100644 --- a/tools/freetype/freetype/src/raster/raster.c +++ b/drivers/freetype/freetype/src/raster/raster.c diff --git a/tools/freetype/freetype/src/raster/rasterrs.h b/drivers/freetype/freetype/src/raster/rasterrs.h index ab85c002a3..ab85c002a3 100644 --- a/tools/freetype/freetype/src/raster/rasterrs.h +++ b/drivers/freetype/freetype/src/raster/rasterrs.h diff --git a/tools/freetype/freetype/src/raster/rastpic.c b/drivers/freetype/freetype/src/raster/rastpic.c index 5e9f7cc9c4..5e9f7cc9c4 100644 --- a/tools/freetype/freetype/src/raster/rastpic.c +++ b/drivers/freetype/freetype/src/raster/rastpic.c diff --git a/tools/freetype/freetype/src/raster/rastpic.h b/drivers/freetype/freetype/src/raster/rastpic.h index e0ddba624e..e0ddba624e 100644 --- a/tools/freetype/freetype/src/raster/rastpic.h +++ b/drivers/freetype/freetype/src/raster/rastpic.h diff --git a/tools/freetype/freetype/src/raster/rules.mk b/drivers/freetype/freetype/src/raster/rules.mk index 0e0b5e4ebd..0e0b5e4ebd 100644 --- a/tools/freetype/freetype/src/raster/rules.mk +++ b/drivers/freetype/freetype/src/raster/rules.mk diff --git a/tools/freetype/freetype/src/sfnt/Jamfile b/drivers/freetype/freetype/src/sfnt/Jamfile index cb20b1b04b..cb20b1b04b 100644 --- a/tools/freetype/freetype/src/sfnt/Jamfile +++ b/drivers/freetype/freetype/src/sfnt/Jamfile diff --git a/tools/freetype/freetype/src/sfnt/module.mk b/drivers/freetype/freetype/src/sfnt/module.mk index 95fd6a3143..95fd6a3143 100644 --- a/tools/freetype/freetype/src/sfnt/module.mk +++ b/drivers/freetype/freetype/src/sfnt/module.mk diff --git a/tools/freetype/freetype/src/sfnt/pngshim.c b/drivers/freetype/freetype/src/sfnt/pngshim.c index 408f879c34..408f879c34 100644 --- a/tools/freetype/freetype/src/sfnt/pngshim.c +++ b/drivers/freetype/freetype/src/sfnt/pngshim.c diff --git a/tools/freetype/freetype/src/sfnt/pngshim.h b/drivers/freetype/freetype/src/sfnt/pngshim.h index 8a2e69ccf9..8a2e69ccf9 100644 --- a/tools/freetype/freetype/src/sfnt/pngshim.h +++ b/drivers/freetype/freetype/src/sfnt/pngshim.h diff --git a/tools/freetype/freetype/src/sfnt/rules.mk b/drivers/freetype/freetype/src/sfnt/rules.mk index a6c956ab65..a6c956ab65 100644 --- a/tools/freetype/freetype/src/sfnt/rules.mk +++ b/drivers/freetype/freetype/src/sfnt/rules.mk diff --git a/tools/freetype/freetype/src/sfnt/sfdriver.c b/drivers/freetype/freetype/src/sfnt/sfdriver.c index a368b8caea..a368b8caea 100644 --- a/tools/freetype/freetype/src/sfnt/sfdriver.c +++ b/drivers/freetype/freetype/src/sfnt/sfdriver.c diff --git a/tools/freetype/freetype/src/sfnt/sfdriver.h b/drivers/freetype/freetype/src/sfnt/sfdriver.h index 5de25d51ca..5de25d51ca 100644 --- a/tools/freetype/freetype/src/sfnt/sfdriver.h +++ b/drivers/freetype/freetype/src/sfnt/sfdriver.h diff --git a/tools/freetype/freetype/src/sfnt/sferrors.h b/drivers/freetype/freetype/src/sfnt/sferrors.h index e981e1d26f..e981e1d26f 100644 --- a/tools/freetype/freetype/src/sfnt/sferrors.h +++ b/drivers/freetype/freetype/src/sfnt/sferrors.h diff --git a/tools/freetype/freetype/src/sfnt/sfnt.c b/drivers/freetype/freetype/src/sfnt/sfnt.c index d62ed4e0b5..d62ed4e0b5 100644 --- a/tools/freetype/freetype/src/sfnt/sfnt.c +++ b/drivers/freetype/freetype/src/sfnt/sfnt.c diff --git a/tools/freetype/freetype/src/sfnt/sfntpic.c b/drivers/freetype/freetype/src/sfnt/sfntpic.c index b3fb24b3f0..b3fb24b3f0 100644 --- a/tools/freetype/freetype/src/sfnt/sfntpic.c +++ b/drivers/freetype/freetype/src/sfnt/sfntpic.c diff --git a/tools/freetype/freetype/src/sfnt/sfntpic.h b/drivers/freetype/freetype/src/sfnt/sfntpic.h index b09a9141e0..b09a9141e0 100644 --- a/tools/freetype/freetype/src/sfnt/sfntpic.h +++ b/drivers/freetype/freetype/src/sfnt/sfntpic.h diff --git a/tools/freetype/freetype/src/sfnt/sfobjs.c b/drivers/freetype/freetype/src/sfnt/sfobjs.c index f975e71c3b..f975e71c3b 100644 --- a/tools/freetype/freetype/src/sfnt/sfobjs.c +++ b/drivers/freetype/freetype/src/sfnt/sfobjs.c diff --git a/tools/freetype/freetype/src/sfnt/sfobjs.h b/drivers/freetype/freetype/src/sfnt/sfobjs.h index 6241c93b39..6241c93b39 100644 --- a/tools/freetype/freetype/src/sfnt/sfobjs.h +++ b/drivers/freetype/freetype/src/sfnt/sfobjs.h diff --git a/tools/freetype/freetype/src/sfnt/ttbdf.c b/drivers/freetype/freetype/src/sfnt/ttbdf.c index 9401dae5f8..9401dae5f8 100644 --- a/tools/freetype/freetype/src/sfnt/ttbdf.c +++ b/drivers/freetype/freetype/src/sfnt/ttbdf.c diff --git a/tools/freetype/freetype/src/sfnt/ttbdf.h b/drivers/freetype/freetype/src/sfnt/ttbdf.h index 48a10d6e9b..48a10d6e9b 100644 --- a/tools/freetype/freetype/src/sfnt/ttbdf.h +++ b/drivers/freetype/freetype/src/sfnt/ttbdf.h diff --git a/tools/freetype/freetype/src/sfnt/ttcmap.c b/drivers/freetype/freetype/src/sfnt/ttcmap.c index 1507202ea8..1507202ea8 100644 --- a/tools/freetype/freetype/src/sfnt/ttcmap.c +++ b/drivers/freetype/freetype/src/sfnt/ttcmap.c diff --git a/tools/freetype/freetype/src/sfnt/ttcmap.h b/drivers/freetype/freetype/src/sfnt/ttcmap.h index 0fde1676bf..0fde1676bf 100644 --- a/tools/freetype/freetype/src/sfnt/ttcmap.h +++ b/drivers/freetype/freetype/src/sfnt/ttcmap.h diff --git a/tools/freetype/freetype/src/sfnt/ttcmapc.h b/drivers/freetype/freetype/src/sfnt/ttcmapc.h index 2ea204309c..2ea204309c 100644 --- a/tools/freetype/freetype/src/sfnt/ttcmapc.h +++ b/drivers/freetype/freetype/src/sfnt/ttcmapc.h diff --git a/tools/freetype/freetype/src/sfnt/ttkern.c b/drivers/freetype/freetype/src/sfnt/ttkern.c index 60ee546d79..60ee546d79 100644 --- a/tools/freetype/freetype/src/sfnt/ttkern.c +++ b/drivers/freetype/freetype/src/sfnt/ttkern.c diff --git a/tools/freetype/freetype/src/sfnt/ttkern.h b/drivers/freetype/freetype/src/sfnt/ttkern.h index df1da9b273..df1da9b273 100644 --- a/tools/freetype/freetype/src/sfnt/ttkern.h +++ b/drivers/freetype/freetype/src/sfnt/ttkern.h diff --git a/tools/freetype/freetype/src/sfnt/ttload.c b/drivers/freetype/freetype/src/sfnt/ttload.c index fbe70f7974..fbe70f7974 100644 --- a/tools/freetype/freetype/src/sfnt/ttload.c +++ b/drivers/freetype/freetype/src/sfnt/ttload.c diff --git a/tools/freetype/freetype/src/sfnt/ttload.h b/drivers/freetype/freetype/src/sfnt/ttload.h index 49a1aee163..49a1aee163 100644 --- a/tools/freetype/freetype/src/sfnt/ttload.h +++ b/drivers/freetype/freetype/src/sfnt/ttload.h diff --git a/tools/freetype/freetype/src/sfnt/ttmtx.c b/drivers/freetype/freetype/src/sfnt/ttmtx.c index 371a9edabe..371a9edabe 100644 --- a/tools/freetype/freetype/src/sfnt/ttmtx.c +++ b/drivers/freetype/freetype/src/sfnt/ttmtx.c diff --git a/tools/freetype/freetype/src/sfnt/ttmtx.h b/drivers/freetype/freetype/src/sfnt/ttmtx.h index 8b91a113d8..8b91a113d8 100644 --- a/tools/freetype/freetype/src/sfnt/ttmtx.h +++ b/drivers/freetype/freetype/src/sfnt/ttmtx.h diff --git a/tools/freetype/freetype/src/sfnt/ttpost.c b/drivers/freetype/freetype/src/sfnt/ttpost.c index 47a85c0c9f..47a85c0c9f 100644 --- a/tools/freetype/freetype/src/sfnt/ttpost.c +++ b/drivers/freetype/freetype/src/sfnt/ttpost.c diff --git a/tools/freetype/freetype/src/sfnt/ttpost.h b/drivers/freetype/freetype/src/sfnt/ttpost.h index 6f06d75a71..6f06d75a71 100644 --- a/tools/freetype/freetype/src/sfnt/ttpost.h +++ b/drivers/freetype/freetype/src/sfnt/ttpost.h diff --git a/tools/freetype/freetype/src/sfnt/ttsbit.c b/drivers/freetype/freetype/src/sfnt/ttsbit.c index cd3e5a4a00..cd3e5a4a00 100644 --- a/tools/freetype/freetype/src/sfnt/ttsbit.c +++ b/drivers/freetype/freetype/src/sfnt/ttsbit.c diff --git a/tools/freetype/freetype/src/sfnt/ttsbit.h b/drivers/freetype/freetype/src/sfnt/ttsbit.h index ea0b5f8ada..ea0b5f8ada 100644 --- a/tools/freetype/freetype/src/sfnt/ttsbit.h +++ b/drivers/freetype/freetype/src/sfnt/ttsbit.h diff --git a/tools/freetype/freetype/src/smooth/Jamfile b/drivers/freetype/freetype/src/smooth/Jamfile index a8496aa2c2..a8496aa2c2 100644 --- a/tools/freetype/freetype/src/smooth/Jamfile +++ b/drivers/freetype/freetype/src/smooth/Jamfile diff --git a/tools/freetype/freetype/src/smooth/ftgrays.c b/drivers/freetype/freetype/src/smooth/ftgrays.c index 7532a35829..7532a35829 100644 --- a/tools/freetype/freetype/src/smooth/ftgrays.c +++ b/drivers/freetype/freetype/src/smooth/ftgrays.c diff --git a/tools/freetype/freetype/src/smooth/ftgrays.h b/drivers/freetype/freetype/src/smooth/ftgrays.h index f20f55f14b..f20f55f14b 100644 --- a/tools/freetype/freetype/src/smooth/ftgrays.h +++ b/drivers/freetype/freetype/src/smooth/ftgrays.h diff --git a/tools/freetype/freetype/src/smooth/ftsmerrs.h b/drivers/freetype/freetype/src/smooth/ftsmerrs.h index 413d2f1f70..413d2f1f70 100644 --- a/tools/freetype/freetype/src/smooth/ftsmerrs.h +++ b/drivers/freetype/freetype/src/smooth/ftsmerrs.h diff --git a/tools/freetype/freetype/src/smooth/ftsmooth.c b/drivers/freetype/freetype/src/smooth/ftsmooth.c index 89088cd091..89088cd091 100644 --- a/tools/freetype/freetype/src/smooth/ftsmooth.c +++ b/drivers/freetype/freetype/src/smooth/ftsmooth.c diff --git a/tools/freetype/freetype/src/smooth/ftsmooth.h b/drivers/freetype/freetype/src/smooth/ftsmooth.h index 3708790df1..3708790df1 100644 --- a/tools/freetype/freetype/src/smooth/ftsmooth.h +++ b/drivers/freetype/freetype/src/smooth/ftsmooth.h diff --git a/tools/freetype/freetype/src/smooth/ftspic.c b/drivers/freetype/freetype/src/smooth/ftspic.c index 67a2b8310c..67a2b8310c 100644 --- a/tools/freetype/freetype/src/smooth/ftspic.c +++ b/drivers/freetype/freetype/src/smooth/ftspic.c diff --git a/tools/freetype/freetype/src/smooth/ftspic.h b/drivers/freetype/freetype/src/smooth/ftspic.h index 334b51c3f1..334b51c3f1 100644 --- a/tools/freetype/freetype/src/smooth/ftspic.h +++ b/drivers/freetype/freetype/src/smooth/ftspic.h diff --git a/tools/freetype/freetype/src/smooth/module.mk b/drivers/freetype/freetype/src/smooth/module.mk index 47f6c04076..47f6c04076 100644 --- a/tools/freetype/freetype/src/smooth/module.mk +++ b/drivers/freetype/freetype/src/smooth/module.mk diff --git a/tools/freetype/freetype/src/smooth/rules.mk b/drivers/freetype/freetype/src/smooth/rules.mk index 88d0aa53ac..88d0aa53ac 100644 --- a/tools/freetype/freetype/src/smooth/rules.mk +++ b/drivers/freetype/freetype/src/smooth/rules.mk diff --git a/tools/freetype/freetype/src/smooth/smooth.c b/drivers/freetype/freetype/src/smooth/smooth.c index a8ac51f9f8..a8ac51f9f8 100644 --- a/tools/freetype/freetype/src/smooth/smooth.c +++ b/drivers/freetype/freetype/src/smooth/smooth.c diff --git a/tools/freetype/freetype/src/truetype/Jamfile b/drivers/freetype/freetype/src/truetype/Jamfile index a8cccfe137..a8cccfe137 100644 --- a/tools/freetype/freetype/src/truetype/Jamfile +++ b/drivers/freetype/freetype/src/truetype/Jamfile diff --git a/tools/freetype/freetype/src/truetype/module.mk b/drivers/freetype/freetype/src/truetype/module.mk index baee81a773..baee81a773 100644 --- a/tools/freetype/freetype/src/truetype/module.mk +++ b/drivers/freetype/freetype/src/truetype/module.mk diff --git a/tools/freetype/freetype/src/truetype/rules.mk b/drivers/freetype/freetype/src/truetype/rules.mk index d4b69f578b..d4b69f578b 100644 --- a/tools/freetype/freetype/src/truetype/rules.mk +++ b/drivers/freetype/freetype/src/truetype/rules.mk diff --git a/tools/freetype/freetype/src/truetype/truetype.c b/drivers/freetype/freetype/src/truetype/truetype.c index 576912b219..576912b219 100644 --- a/tools/freetype/freetype/src/truetype/truetype.c +++ b/drivers/freetype/freetype/src/truetype/truetype.c diff --git a/tools/freetype/freetype/src/truetype/ttdriver.c b/drivers/freetype/freetype/src/truetype/ttdriver.c index fb25706ab8..fb25706ab8 100644 --- a/tools/freetype/freetype/src/truetype/ttdriver.c +++ b/drivers/freetype/freetype/src/truetype/ttdriver.c diff --git a/tools/freetype/freetype/src/truetype/ttdriver.h b/drivers/freetype/freetype/src/truetype/ttdriver.h index aae00f2617..aae00f2617 100644 --- a/tools/freetype/freetype/src/truetype/ttdriver.h +++ b/drivers/freetype/freetype/src/truetype/ttdriver.h diff --git a/tools/freetype/freetype/src/truetype/tterrors.h b/drivers/freetype/freetype/src/truetype/tterrors.h index 78d138fab2..78d138fab2 100644 --- a/tools/freetype/freetype/src/truetype/tterrors.h +++ b/drivers/freetype/freetype/src/truetype/tterrors.h diff --git a/tools/freetype/freetype/src/truetype/ttgload.c b/drivers/freetype/freetype/src/truetype/ttgload.c index f640a6c78e..f640a6c78e 100644 --- a/tools/freetype/freetype/src/truetype/ttgload.c +++ b/drivers/freetype/freetype/src/truetype/ttgload.c diff --git a/tools/freetype/freetype/src/truetype/ttgload.h b/drivers/freetype/freetype/src/truetype/ttgload.h index 05f75882dc..05f75882dc 100644 --- a/tools/freetype/freetype/src/truetype/ttgload.h +++ b/drivers/freetype/freetype/src/truetype/ttgload.h diff --git a/tools/freetype/freetype/src/truetype/ttgxvar.c b/drivers/freetype/freetype/src/truetype/ttgxvar.c index 7899d3671d..7899d3671d 100644 --- a/tools/freetype/freetype/src/truetype/ttgxvar.c +++ b/drivers/freetype/freetype/src/truetype/ttgxvar.c diff --git a/tools/freetype/freetype/src/truetype/ttgxvar.h b/drivers/freetype/freetype/src/truetype/ttgxvar.h index 82dfc4431f..82dfc4431f 100644 --- a/tools/freetype/freetype/src/truetype/ttgxvar.h +++ b/drivers/freetype/freetype/src/truetype/ttgxvar.h diff --git a/tools/freetype/freetype/src/truetype/ttinterp.c b/drivers/freetype/freetype/src/truetype/ttinterp.c index e7ffb987ce..e7ffb987ce 100644 --- a/tools/freetype/freetype/src/truetype/ttinterp.c +++ b/drivers/freetype/freetype/src/truetype/ttinterp.c diff --git a/tools/freetype/freetype/src/truetype/ttinterp.h b/drivers/freetype/freetype/src/truetype/ttinterp.h index 69f5011ed4..69f5011ed4 100644 --- a/tools/freetype/freetype/src/truetype/ttinterp.h +++ b/drivers/freetype/freetype/src/truetype/ttinterp.h diff --git a/tools/freetype/freetype/src/truetype/ttobjs.c b/drivers/freetype/freetype/src/truetype/ttobjs.c index 7897efa77a..7897efa77a 100644 --- a/tools/freetype/freetype/src/truetype/ttobjs.c +++ b/drivers/freetype/freetype/src/truetype/ttobjs.c diff --git a/tools/freetype/freetype/src/truetype/ttobjs.h b/drivers/freetype/freetype/src/truetype/ttobjs.h index a11dd3752a..a11dd3752a 100644 --- a/tools/freetype/freetype/src/truetype/ttobjs.h +++ b/drivers/freetype/freetype/src/truetype/ttobjs.h diff --git a/tools/freetype/freetype/src/truetype/ttpic.c b/drivers/freetype/freetype/src/truetype/ttpic.c index edefae72c5..edefae72c5 100644 --- a/tools/freetype/freetype/src/truetype/ttpic.c +++ b/drivers/freetype/freetype/src/truetype/ttpic.c diff --git a/tools/freetype/freetype/src/truetype/ttpic.h b/drivers/freetype/freetype/src/truetype/ttpic.h index cfb4ee6281..cfb4ee6281 100644 --- a/tools/freetype/freetype/src/truetype/ttpic.h +++ b/drivers/freetype/freetype/src/truetype/ttpic.h diff --git a/tools/freetype/freetype/src/truetype/ttpload.c b/drivers/freetype/freetype/src/truetype/ttpload.c index 9723a515b9..9723a515b9 100644 --- a/tools/freetype/freetype/src/truetype/ttpload.c +++ b/drivers/freetype/freetype/src/truetype/ttpload.c diff --git a/tools/freetype/freetype/src/truetype/ttpload.h b/drivers/freetype/freetype/src/truetype/ttpload.h index f61ac079ce..f61ac079ce 100644 --- a/tools/freetype/freetype/src/truetype/ttpload.h +++ b/drivers/freetype/freetype/src/truetype/ttpload.h diff --git a/tools/freetype/freetype/src/truetype/ttsubpix.c b/drivers/freetype/freetype/src/truetype/ttsubpix.c index 28470ad655..28470ad655 100644 --- a/tools/freetype/freetype/src/truetype/ttsubpix.c +++ b/drivers/freetype/freetype/src/truetype/ttsubpix.c diff --git a/tools/freetype/freetype/src/truetype/ttsubpix.h b/drivers/freetype/freetype/src/truetype/ttsubpix.h index 8a54fc7cc7..8a54fc7cc7 100644 --- a/tools/freetype/freetype/src/truetype/ttsubpix.h +++ b/drivers/freetype/freetype/src/truetype/ttsubpix.h diff --git a/tools/freetype/freetype/src/type1/Jamfile b/drivers/freetype/freetype/src/type1/Jamfile index 8e366baae5..8e366baae5 100644 --- a/tools/freetype/freetype/src/type1/Jamfile +++ b/drivers/freetype/freetype/src/type1/Jamfile diff --git a/tools/freetype/freetype/src/type1/module.mk b/drivers/freetype/freetype/src/type1/module.mk index ade0210d76..ade0210d76 100644 --- a/tools/freetype/freetype/src/type1/module.mk +++ b/drivers/freetype/freetype/src/type1/module.mk diff --git a/tools/freetype/freetype/src/type1/rules.mk b/drivers/freetype/freetype/src/type1/rules.mk index 15087b0304..15087b0304 100644 --- a/tools/freetype/freetype/src/type1/rules.mk +++ b/drivers/freetype/freetype/src/type1/rules.mk diff --git a/tools/freetype/freetype/src/type1/t1afm.c b/drivers/freetype/freetype/src/type1/t1afm.c index de9c1997c4..de9c1997c4 100644 --- a/tools/freetype/freetype/src/type1/t1afm.c +++ b/drivers/freetype/freetype/src/type1/t1afm.c diff --git a/tools/freetype/freetype/src/type1/t1afm.h b/drivers/freetype/freetype/src/type1/t1afm.h index 8eb1764de7..8eb1764de7 100644 --- a/tools/freetype/freetype/src/type1/t1afm.h +++ b/drivers/freetype/freetype/src/type1/t1afm.h diff --git a/tools/freetype/freetype/src/type1/t1driver.c b/drivers/freetype/freetype/src/type1/t1driver.c index 697288d66d..697288d66d 100644 --- a/tools/freetype/freetype/src/type1/t1driver.c +++ b/drivers/freetype/freetype/src/type1/t1driver.c diff --git a/tools/freetype/freetype/src/type1/t1driver.h b/drivers/freetype/freetype/src/type1/t1driver.h index 639cd4a7ad..639cd4a7ad 100644 --- a/tools/freetype/freetype/src/type1/t1driver.h +++ b/drivers/freetype/freetype/src/type1/t1driver.h diff --git a/tools/freetype/freetype/src/type1/t1errors.h b/drivers/freetype/freetype/src/type1/t1errors.h index 8740530eef..8740530eef 100644 --- a/tools/freetype/freetype/src/type1/t1errors.h +++ b/drivers/freetype/freetype/src/type1/t1errors.h diff --git a/tools/freetype/freetype/src/type1/t1gload.c b/drivers/freetype/freetype/src/type1/t1gload.c index 23478d1288..23478d1288 100644 --- a/tools/freetype/freetype/src/type1/t1gload.c +++ b/drivers/freetype/freetype/src/type1/t1gload.c diff --git a/tools/freetype/freetype/src/type1/t1gload.h b/drivers/freetype/freetype/src/type1/t1gload.h index 0bdea3a8d5..0bdea3a8d5 100644 --- a/tools/freetype/freetype/src/type1/t1gload.h +++ b/drivers/freetype/freetype/src/type1/t1gload.h diff --git a/tools/freetype/freetype/src/type1/t1load.c b/drivers/freetype/freetype/src/type1/t1load.c index 1c834a17bb..1c834a17bb 100644 --- a/tools/freetype/freetype/src/type1/t1load.c +++ b/drivers/freetype/freetype/src/type1/t1load.c diff --git a/tools/freetype/freetype/src/type1/t1load.h b/drivers/freetype/freetype/src/type1/t1load.h index 546fc33530..546fc33530 100644 --- a/tools/freetype/freetype/src/type1/t1load.h +++ b/drivers/freetype/freetype/src/type1/t1load.h diff --git a/tools/freetype/freetype/src/type1/t1objs.c b/drivers/freetype/freetype/src/type1/t1objs.c index 837b7911d4..837b7911d4 100644 --- a/tools/freetype/freetype/src/type1/t1objs.c +++ b/drivers/freetype/freetype/src/type1/t1objs.c diff --git a/tools/freetype/freetype/src/type1/t1objs.h b/drivers/freetype/freetype/src/type1/t1objs.h index 54ccbb996a..54ccbb996a 100644 --- a/tools/freetype/freetype/src/type1/t1objs.h +++ b/drivers/freetype/freetype/src/type1/t1objs.h diff --git a/tools/freetype/freetype/src/type1/t1parse.c b/drivers/freetype/freetype/src/type1/t1parse.c index 106e4e7ecd..106e4e7ecd 100644 --- a/tools/freetype/freetype/src/type1/t1parse.c +++ b/drivers/freetype/freetype/src/type1/t1parse.c diff --git a/tools/freetype/freetype/src/type1/t1parse.h b/drivers/freetype/freetype/src/type1/t1parse.h index fb1c8a8830..fb1c8a8830 100644 --- a/tools/freetype/freetype/src/type1/t1parse.h +++ b/drivers/freetype/freetype/src/type1/t1parse.h diff --git a/tools/freetype/freetype/src/type1/t1tokens.h b/drivers/freetype/freetype/src/type1/t1tokens.h index e37276b908..e37276b908 100644 --- a/tools/freetype/freetype/src/type1/t1tokens.h +++ b/drivers/freetype/freetype/src/type1/t1tokens.h diff --git a/tools/freetype/freetype/src/type1/type1.c b/drivers/freetype/freetype/src/type1/type1.c index ccc12be103..ccc12be103 100644 --- a/tools/freetype/freetype/src/type1/type1.c +++ b/drivers/freetype/freetype/src/type1/type1.c diff --git a/tools/freetype/freetype/src/type42/Jamfile b/drivers/freetype/freetype/src/type42/Jamfile index 00371d54f3..00371d54f3 100644 --- a/tools/freetype/freetype/src/type42/Jamfile +++ b/drivers/freetype/freetype/src/type42/Jamfile diff --git a/tools/freetype/freetype/src/type42/module.mk b/drivers/freetype/freetype/src/type42/module.mk index b3f10a8d3c..b3f10a8d3c 100644 --- a/tools/freetype/freetype/src/type42/module.mk +++ b/drivers/freetype/freetype/src/type42/module.mk diff --git a/tools/freetype/freetype/src/type42/rules.mk b/drivers/freetype/freetype/src/type42/rules.mk index eac1081eb1..eac1081eb1 100644 --- a/tools/freetype/freetype/src/type42/rules.mk +++ b/drivers/freetype/freetype/src/type42/rules.mk diff --git a/tools/freetype/freetype/src/type42/t42drivr.c b/drivers/freetype/freetype/src/type42/t42drivr.c index 3ad1bde79f..3ad1bde79f 100644 --- a/tools/freetype/freetype/src/type42/t42drivr.c +++ b/drivers/freetype/freetype/src/type42/t42drivr.c diff --git a/tools/freetype/freetype/src/type42/t42drivr.h b/drivers/freetype/freetype/src/type42/t42drivr.h index 9a1e97e30e..9a1e97e30e 100644 --- a/tools/freetype/freetype/src/type42/t42drivr.h +++ b/drivers/freetype/freetype/src/type42/t42drivr.h diff --git a/tools/freetype/freetype/src/type42/t42error.h b/drivers/freetype/freetype/src/type42/t42error.h index 217ae8bd52..217ae8bd52 100644 --- a/tools/freetype/freetype/src/type42/t42error.h +++ b/drivers/freetype/freetype/src/type42/t42error.h diff --git a/tools/freetype/freetype/src/type42/t42objs.c b/drivers/freetype/freetype/src/type42/t42objs.c index 18e2c0b625..18e2c0b625 100644 --- a/tools/freetype/freetype/src/type42/t42objs.c +++ b/drivers/freetype/freetype/src/type42/t42objs.c diff --git a/tools/freetype/freetype/src/type42/t42objs.h b/drivers/freetype/freetype/src/type42/t42objs.h index 02d13259be..02d13259be 100644 --- a/tools/freetype/freetype/src/type42/t42objs.h +++ b/drivers/freetype/freetype/src/type42/t42objs.h diff --git a/tools/freetype/freetype/src/type42/t42parse.c b/drivers/freetype/freetype/src/type42/t42parse.c index 3cdd8a1acf..3cdd8a1acf 100644 --- a/tools/freetype/freetype/src/type42/t42parse.c +++ b/drivers/freetype/freetype/src/type42/t42parse.c diff --git a/tools/freetype/freetype/src/type42/t42parse.h b/drivers/freetype/freetype/src/type42/t42parse.h index f77ec4af4f..f77ec4af4f 100644 --- a/tools/freetype/freetype/src/type42/t42parse.h +++ b/drivers/freetype/freetype/src/type42/t42parse.h diff --git a/tools/freetype/freetype/src/type42/t42types.h b/drivers/freetype/freetype/src/type42/t42types.h index c7c2db490d..c7c2db490d 100644 --- a/tools/freetype/freetype/src/type42/t42types.h +++ b/drivers/freetype/freetype/src/type42/t42types.h diff --git a/tools/freetype/freetype/src/type42/type42.c b/drivers/freetype/freetype/src/type42/type42.c index d13df56b10..d13df56b10 100644 --- a/tools/freetype/freetype/src/type42/type42.c +++ b/drivers/freetype/freetype/src/type42/type42.c diff --git a/tools/freetype/freetype/src/winfonts/Jamfile b/drivers/freetype/freetype/src/winfonts/Jamfile index 71cf5678e8..71cf5678e8 100644 --- a/tools/freetype/freetype/src/winfonts/Jamfile +++ b/drivers/freetype/freetype/src/winfonts/Jamfile diff --git a/tools/freetype/freetype/src/winfonts/fnterrs.h b/drivers/freetype/freetype/src/winfonts/fnterrs.h index 463ba77ee2..463ba77ee2 100644 --- a/tools/freetype/freetype/src/winfonts/fnterrs.h +++ b/drivers/freetype/freetype/src/winfonts/fnterrs.h diff --git a/tools/freetype/freetype/src/winfonts/module.mk b/drivers/freetype/freetype/src/winfonts/module.mk index b44d7f0570..b44d7f0570 100644 --- a/tools/freetype/freetype/src/winfonts/module.mk +++ b/drivers/freetype/freetype/src/winfonts/module.mk diff --git a/tools/freetype/freetype/src/winfonts/rules.mk b/drivers/freetype/freetype/src/winfonts/rules.mk index 71a7df2d8a..71a7df2d8a 100644 --- a/tools/freetype/freetype/src/winfonts/rules.mk +++ b/drivers/freetype/freetype/src/winfonts/rules.mk diff --git a/tools/freetype/freetype/src/winfonts/winfnt.c b/drivers/freetype/freetype/src/winfonts/winfnt.c index e8055c0898..e8055c0898 100644 --- a/tools/freetype/freetype/src/winfonts/winfnt.c +++ b/drivers/freetype/freetype/src/winfonts/winfnt.c diff --git a/tools/freetype/freetype/src/winfonts/winfnt.h b/drivers/freetype/freetype/src/winfonts/winfnt.h index b7a80736d8..b7a80736d8 100644 --- a/tools/freetype/freetype/src/winfonts/winfnt.h +++ b/drivers/freetype/freetype/src/winfonts/winfnt.h diff --git a/tools/freetype/ft2build.h b/drivers/freetype/ft2build.h index 5137b50f38..5137b50f38 100644 --- a/tools/freetype/ft2build.h +++ b/drivers/freetype/ft2build.h diff --git a/drivers/register_driver_types.cpp b/drivers/register_driver_types.cpp index 235438f126..afa5f34bea 100644 --- a/drivers/register_driver_types.cpp +++ b/drivers/register_driver_types.cpp @@ -113,6 +113,7 @@ static ResourceFormatLoaderAudioStreamMPC * mpc_stream_loader=NULL; #endif + static ResourceFormatPBM * pbm_loader=NULL; void register_core_driver_types() { @@ -141,6 +142,7 @@ void register_core_driver_types() { ImageLoader::add_image_format_loader( image_loader_jpg ); #endif + pbm_loader = memnew( ResourceFormatPBM ); ResourceLoader::add_resource_format_loader(pbm_loader); @@ -250,6 +252,7 @@ void register_driver_types() { void unregister_driver_types() { + #ifdef TREMOR_ENABLED memdelete( vorbis_stream_loader ); #endif diff --git a/main/input_default.cpp b/main/input_default.cpp index c8b8062eee..5b4ae7f2cb 100644 --- a/main/input_default.cpp +++ b/main/input_default.cpp @@ -200,6 +200,12 @@ Vector3 InputDefault::get_accelerometer() { return accelerometer; } +Vector3 InputDefault::get_magnetometer() { + + _THREAD_SAFE_METHOD_ + return magnetometer; +} + void InputDefault::parse_input_event(const InputEvent& p_event) { _THREAD_SAFE_METHOD_ @@ -296,6 +302,14 @@ void InputDefault::set_accelerometer(const Vector3& p_accel) { } +void InputDefault::set_magnetometer(const Vector3& p_magnetometer) { + + _THREAD_SAFE_METHOD_ + + magnetometer=p_magnetometer; + +} + void InputDefault::set_main_loop(MainLoop *p_main_loop) { main_loop=p_main_loop; diff --git a/main/input_default.h b/main/input_default.h index 471ae9e692..8f6a430436 100644 --- a/main/input_default.h +++ b/main/input_default.h @@ -14,6 +14,7 @@ class InputDefault : public Input { Map<int,float> _joy_axis; Map<StringName,int> custom_action_press; Vector3 accelerometer; + Vector3 magnetometer; Vector2 mouse_pos; MainLoop *main_loop; @@ -132,6 +133,7 @@ public: void parse_joystick_mapping(String p_mapping, bool p_update_existing); virtual Vector3 get_accelerometer(); + virtual Vector3 get_magnetometer(); virtual Point2 get_mouse_pos() const; virtual Point2 get_mouse_speed() const; @@ -142,6 +144,7 @@ public: void parse_input_event(const InputEvent& p_event); void set_accelerometer(const Vector3& p_accel); + void set_magnetometer(const Vector3& p_magnetometer); void set_joy_axis(int p_device,int p_axis,float p_value); void set_main_loop(MainLoop *main_loop); diff --git a/modules/gdscript/gd_parser.cpp b/modules/gdscript/gd_parser.cpp index b713dc318f..9e90027a70 100644 --- a/modules/gdscript/gd_parser.cpp +++ b/modules/gdscript/gd_parser.cpp @@ -86,7 +86,7 @@ bool GDParser::_enter_indent_block(BlockNode* p_block) { while(true) { if (tokenizer->get_token()!=GDTokenizer::TK_NEWLINE) { - print_line("no newline"); + return false; //wtf } else if (tokenizer->get_token(1)!=GDTokenizer::TK_NEWLINE) { diff --git a/platform/android/godot_android.cpp b/platform/android/godot_android.cpp index f9feb3481f..edb051575f 100644 --- a/platform/android/godot_android.cpp +++ b/platform/android/godot_android.cpp @@ -313,6 +313,7 @@ struct engine { ASensorManager* sensorManager; const ASensor* accelerometerSensor; + const ASensor* magnetometerSensor; ASensorEventQueue* sensorEventQueue; bool display_active; @@ -736,15 +737,28 @@ static void engine_handle_cmd(struct android_app* app, int32_t cmd) { engine->accelerometerSensor, (1000L/60)*1000); } + // Also start monitoring the magnetometer. + if (engine->magnetometerSensor != NULL) { + ASensorEventQueue_enableSensor(engine->sensorEventQueue, + engine->magnetometerSensor); + // We'd like to get 60 events per second (in us). + ASensorEventQueue_setEventRate(engine->sensorEventQueue, + engine->magnetometerSensor, (1000L/60)*1000); + + } engine->animating = 1; break; case APP_CMD_LOST_FOCUS: - // When our app loses focus, we stop monitoring the accelerometer. + // When our app loses focus, we stop monitoring the sensors. // This is to avoid consuming battery while not being used. if (engine->accelerometerSensor != NULL) { ASensorEventQueue_disableSensor(engine->sensorEventQueue, engine->accelerometerSensor); } + if (engine->magnetometerSensor != NULL) { + ASensorEventQueue_disableSensor(engine->sensorEventQueue, + engine->magnetometerSensor); + } // Also stop animating. engine->animating = 0; engine_draw_frame(engine); @@ -768,10 +782,12 @@ void android_main(struct android_app* state) { FileAccessAndroid::asset_manager=state->activity->assetManager; - // Prepare to monitor accelerometer + // Prepare to monitor sensors engine.sensorManager = ASensorManager_getInstance(); engine.accelerometerSensor = ASensorManager_getDefaultSensor(engine.sensorManager, - ASENSOR_TYPE_ACCELEROMETER); + ASENSOR_TYPE_ACCELEROMETER); + engine.magnetometerSensor = ASensorManager_getDefaultSensor(engine.sensorManager, + ASENSOR_TYPE_MAGNETIC_FIELD); engine.sensorEventQueue = ASensorManager_createEventQueue(engine.sensorManager, state->looper, LOOPER_ID_USER, NULL, NULL); @@ -812,16 +828,21 @@ void android_main(struct android_app* state) { // If a sensor has data, process it now. // LOGI("events\n"); if (ident == LOOPER_ID_USER) { - if (engine.accelerometerSensor != NULL) { + if (engine.accelerometerSensor != NULL || engine.magnetometerSensor != NULL) { ASensorEvent event; while (ASensorEventQueue_getEvents(engine.sensorEventQueue, &event, 1) > 0) { if (engine.os) { + if (event.acceleration != NULL) { engine.os->process_accelerometer(Vector3(event.acceleration.x, event.acceleration.y, event.acceleration.z)); - + } + if (event.magnetic != NULL) { + engine.os->process_magnetometer(Vector3(event.magnetic.x, event.magnetic.y, + event.magnetic.z)); + } } } diff --git a/platform/android/java/src/org/godotengine/godot/Godot.java b/platform/android/java/src/org/godotengine/godot/Godot.java index 1f208f8fb6..c4ba2da751 100644 --- a/platform/android/java/src/org/godotengine/godot/Godot.java +++ b/platform/android/java/src/org/godotengine/godot/Godot.java @@ -206,6 +206,7 @@ public class Godot extends Activity implements SensorEventListener, IDownloaderC private SensorManager mSensorManager; private Sensor mAccelerometer; + private Sensor mMagnetometer; public FrameLayout layout; public RelativeLayout adLayout; @@ -374,6 +375,8 @@ public class Godot extends Activity implements SensorEventListener, IDownloaderC mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE); mAccelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); mSensorManager.registerListener(this, mAccelerometer, SensorManager.SENSOR_DELAY_GAME); + mMagnetometer = mSensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD); + mSensorManager.registerListener(this, mMagnetometer, SensorManager.SENSOR_DELAY_GAME); result_callback = null; @@ -588,6 +591,7 @@ public class Godot extends Activity implements SensorEventListener, IDownloaderC mView.onResume(); mSensorManager.registerListener(this, mAccelerometer, SensorManager.SENSOR_DELAY_NORMAL); + mSensorManager.registerListener(this, mMagnetometer, SensorManager.SENSOR_DELAY_NORMAL); GodotLib.focusin(); if(use_immersive && Build.VERSION.SDK_INT >= 19.0){ // check if the application runs on an android 4.4+ Window window = getWindow(); @@ -646,7 +650,14 @@ public class Godot extends Activity implements SensorEventListener, IDownloaderC float x = adjustedValues[0]; float y = adjustedValues[1]; float z = adjustedValues[2]; - GodotLib.accelerometer(x,y,z); + + int typeOfSensor = event.sensor.getType(); + if (typeOfSensor == event.sensor.TYPE_ACCELEROMETER) { + GodotLib.accelerometer(x,y,z); + } + if (typeOfSensor == event.sensor.TYPE_MAGNETIC_FIELD) { + GodotLib.magnetometer(x,y,z); + } } @Override public final void onAccuracyChanged(Sensor sensor, int accuracy) { diff --git a/platform/android/java/src/org/godotengine/godot/GodotLib.java b/platform/android/java/src/org/godotengine/godot/GodotLib.java index 7c5ac33c85..df181ae1bb 100644 --- a/platform/android/java/src/org/godotengine/godot/GodotLib.java +++ b/platform/android/java/src/org/godotengine/godot/GodotLib.java @@ -51,6 +51,7 @@ public class GodotLib { public static native void step(); public static native void touch(int what,int pointer,int howmany, int[] arr); public static native void accelerometer(float x, float y, float z); + public static native void magnetometer(float x, float y, float z); public static native void key(int p_scancode, int p_unicode_char, boolean p_pressed); public static native void joybutton(int p_device, int p_but, boolean p_pressed); public static native void joyaxis(int p_device, int p_axis, float p_value); diff --git a/platform/android/java_glue.cpp b/platform/android/java_glue.cpp index b5beb8fa2c..1ea7cd7ebb 100644 --- a/platform/android/java_glue.cpp +++ b/platform/android/java_glue.cpp @@ -650,6 +650,7 @@ static bool resized_reload=false; static bool quit_request=false; static Size2 new_size; static Vector3 accelerometer; +static Vector3 magnetometer; static HashMap<String,JNISingleton*> jni_singletons; static jobject godot_io; @@ -1088,6 +1089,8 @@ JNIEXPORT void JNICALL Java_org_godotengine_godot_GodotLib_step(JNIEnv * env, jo os_android->process_accelerometer(accelerometer); + os_android->process_magnetometer(magnetometer); + if (os_android->main_loop_iterate()==true) { jclass cls = env->FindClass("org/godotengine/godot/Godot"); @@ -1488,6 +1491,14 @@ JNIEXPORT void JNICALL Java_org_godotengine_godot_GodotLib_accelerometer(JNIEnv } +JNIEXPORT void JNICALL Java_org_godotengine_godot_GodotLib_magnetometer(JNIEnv * env, jobject obj, jfloat x, jfloat y, jfloat z) { + + input_mutex->lock(); + magnetometer=Vector3(x,y,z); + input_mutex->unlock(); + +} + JNIEXPORT void JNICALL Java_org_godotengine_godot_GodotLib_focusin(JNIEnv * env, jobject obj){ if (!suspend_mutex) diff --git a/platform/android/java_glue.h b/platform/android/java_glue.h index 1d65d21251..f7916efe2c 100644 --- a/platform/android/java_glue.h +++ b/platform/android/java_glue.h @@ -49,6 +49,7 @@ extern "C" { JNIEXPORT void JNICALL Java_org_godotengine_godot_GodotLib_joyconnectionchanged(JNIEnv * env, jobject obj, jint p_device, jboolean p_connected, jstring p_name); JNIEXPORT void JNICALL Java_org_godotengine_godot_GodotLib_audio(JNIEnv * env, jobject obj); JNIEXPORT void JNICALL Java_org_godotengine_godot_GodotLib_accelerometer(JNIEnv * env, jobject obj, jfloat x, jfloat y, jfloat z); + JNIEXPORT void JNICALL Java_org_godotengine_godot_GodotLib_magnetometer(JNIEnv * env, jobject obj, jfloat x, jfloat y, jfloat z); JNIEXPORT void JNICALL Java_org_godotengine_godot_GodotLib_focusin(JNIEnv * env, jobject obj); JNIEXPORT void JNICALL Java_org_godotengine_godot_GodotLib_focusout(JNIEnv * env, jobject obj); JNIEXPORT void JNICALL Java_org_godotengine_godot_GodotLib_singleton(JNIEnv * env, jobject obj, jstring name,jobject p_object); diff --git a/platform/android/os_android.cpp b/platform/android/os_android.cpp index 2ef28333be..4e6dfb2db2 100644 --- a/platform/android/os_android.cpp +++ b/platform/android/os_android.cpp @@ -609,6 +609,11 @@ void OS_Android::process_accelerometer(const Vector3& p_accelerometer) { input->set_accelerometer(p_accelerometer); } +void OS_Android::process_magnetometer(const Vector3& p_magnetometer) { + + input->set_magnetometer(p_magnetometer); +} + bool OS_Android::has_touchscreen_ui_hint() const { return true; diff --git a/platform/android/os_android.h b/platform/android/os_android.h index ec1f4119b4..843b3c4788 100644 --- a/platform/android/os_android.h +++ b/platform/android/os_android.h @@ -239,6 +239,7 @@ public: void process_accelerometer(const Vector3& p_accelerometer); + void process_magnetometer(const Vector3& p_magnetometer); void process_touch(int p_what,int p_pointer, const Vector<TouchPos>& p_points); void process_joy_event(JoystickEvent p_event); void process_event(InputEvent p_event); diff --git a/platform/osx/detect.py b/platform/osx/detect.py index 28bc42f6bb..d668509b90 100644 --- a/platform/osx/detect.py +++ b/platform/osx/detect.py @@ -58,8 +58,8 @@ def configure(env): if (env["freetype"]!="no"): env.Append(CCFLAGS=['-DFREETYPE_ENABLED']) - env.Append(CPPPATH=['#tools/freetype']) - env.Append(CPPPATH=['#tools/freetype/freetype/include']) + env.Append(CPPPATH=['#drivers/freetype']) + env.Append(CPPPATH=['#drivers/freetype/freetype/include']) diff --git a/platform/osx/export/export.cpp b/platform/osx/export/export.cpp index 3bc4ebdb1a..2604c2c15a 100644 --- a/platform/osx/export/export.cpp +++ b/platform/osx/export/export.cpp @@ -32,6 +32,7 @@ class EditorExportPlatformOSX : public EditorExportPlatform { String signature; String copyright; bool use64; + bool useFat; bool high_resolution; Ref<ImageTexture> logo; @@ -95,6 +96,8 @@ bool EditorExportPlatformOSX::_set(const StringName& p_name, const Variant& p_va copyright=p_value; else if (n=="application/64_bits") use64=p_value; + else if (n=="application/fat_bits") + useFat=p_value; else if (n=="display/high_res") high_resolution=p_value; else @@ -129,6 +132,8 @@ bool EditorExportPlatformOSX::_get(const StringName& p_name,Variant &r_ret) cons r_ret=copyright; else if (n=="application/64_bits") r_ret=use64; + else if (n=="application/fat_bits") + r_ret=useFat; else if (n=="display/high_res") r_ret=high_resolution; else @@ -150,6 +155,7 @@ void EditorExportPlatformOSX::_get_property_list( List<PropertyInfo> *p_list) co p_list->push_back( PropertyInfo( Variant::STRING, "application/version") ); p_list->push_back( PropertyInfo( Variant::STRING, "application/copyright") ); p_list->push_back( PropertyInfo( Variant::BOOL, "application/64_bits") ); + p_list->push_back( PropertyInfo( Variant::BOOL, "application/fat_bits") ); p_list->push_back( PropertyInfo( Variant::BOOL, "display/high_res") ); @@ -287,7 +293,7 @@ Error EditorExportPlatformOSX::export_project(const String& p_path, bool p_debug io2.opaque=&dst_f; zipFile dpkg=zipOpen2(p_path.utf8().get_data(),APPEND_STATUS_CREATE,NULL,&io2); - String binary_to_use="godot_osx_"+String(p_debug?"debug":"release")+"."+String(use64?"64":"32"); + String binary_to_use="godot_osx_"+String(p_debug?"debug":"release")+"."+String(useFat?"fat":use64?"64":"32"); print_line("binary: "+binary_to_use); String pkg_name; @@ -459,6 +465,7 @@ EditorExportPlatformOSX::EditorExportPlatformOSX() { short_version="1.0"; version="1.0"; use64=false; + useFat=false; high_resolution=false; } diff --git a/platform/windows/detect.py b/platform/windows/detect.py index 56e8a5d45d..97d2461e58 100644 --- a/platform/windows/detect.py +++ b/platform/windows/detect.py @@ -204,8 +204,8 @@ def configure(env): if (env["freetype"]!="no"): env.Append(CCFLAGS=['/DFREETYPE_ENABLED']) - env.Append(CPPPATH=['#tools/freetype']) - env.Append(CPPPATH=['#tools/freetype/freetype/include']) + env.Append(CPPPATH=['#drivers/freetype']) + env.Append(CPPPATH=['#drivers/freetype/freetype/include']) if (env["target"]=="release"): @@ -352,8 +352,9 @@ def configure(env): if (env["freetype"]!="no"): env.Append(CCFLAGS=['-DFREETYPE_ENABLED']) - env.Append(CPPPATH=['#tools/freetype']) - env.Append(CPPPATH=['#tools/freetype/freetype/include']) + env.Append(CPPPATH=['#drivers/freetype']) + env.Append(CPPPATH=['#drivers/freetype/freetype/include']) + env["CC"]=mingw_prefix+"gcc" env['AS']=mingw_prefix+"as" diff --git a/platform/x11/detect.py b/platform/x11/detect.py index 6b3f7147ef..5a43bf9323 100644 --- a/platform/x11/detect.py +++ b/platform/x11/detect.py @@ -143,8 +143,8 @@ def configure(env): if (env["freetype"]!="no"): env.Append(CCFLAGS=['-DFREETYPE_ENABLED']) if (env["freetype"]=="builtin"): - env.Append(CPPPATH=['#tools/freetype']) - env.Append(CPPPATH=['#tools/freetype/freetype/include']) + env.Append(CPPPATH=['#drivers/freetype']) + env.Append(CPPPATH=['#drivers/freetype/freetype/include']) env.Append(CPPFLAGS=['-DOPENGL_ENABLED','-DGLEW_ENABLED']) diff --git a/scene/gui/item_list.cpp b/scene/gui/item_list.cpp index a616dc9254..fc4ab5f8ca 100644 --- a/scene/gui/item_list.cpp +++ b/scene/gui/item_list.cpp @@ -325,6 +325,18 @@ int ItemList::get_fixed_column_width() const{ return fixed_column_width; } +void ItemList::set_same_column_width(bool p_enable){ + + same_column_width=p_enable; + update(); + shape_changed=true; + +} +int ItemList::is_same_column_width() const{ + + return same_column_width; +} + void ItemList::set_max_text_lines(int p_lines){ ERR_FAIL_COND(p_lines<1); @@ -720,7 +732,7 @@ void ItemList::ensure_current_is_visible() { update(); } -static Size2 _adjust_to_max_size(Size2 p_size, Size2 p_max_size, bool p_stretch) { +static Size2 _adjust_to_max_size(Size2 p_size, Size2 p_max_size) { if (p_max_size.x<=0) p_max_size.x=1e20; @@ -730,10 +742,6 @@ static Size2 _adjust_to_max_size(Size2 p_size, Size2 p_max_size, bool p_stretch) Size2 new_size; - if (p_stretch && (p_size.x * p_size.y < p_max_size.x * p_max_size.y)) { - return p_max_size; - } - if (p_size.x > p_max_size.x) { new_size.width=p_max_size.x; @@ -828,6 +836,8 @@ void ItemList::_notification(int p_what) { } if (shape_changed) { + + float max_column_width = 0; //1- compute item minimum sizes for(int i=0;i<items.size();i++) { @@ -835,7 +845,7 @@ void ItemList::_notification(int p_what) { Size2 minsize; if (items[i].icon.is_valid()) { - minsize=_adjust_to_max_size(items[i].get_icon_size(),max_icon_size, icon_stretch); + minsize=_adjust_to_max_size(items[i].get_icon_size(),max_icon_size) * icon_scale; if (items[i].text!="") { if (icon_mode==ICON_MODE_TOP) { @@ -868,10 +878,11 @@ void ItemList::_notification(int p_what) { } - - items[i].rect_cache.size=minsize; if (fixed_column_width>0) - items[i].rect_cache.size.x=fixed_column_width; + minsize.x=fixed_column_width; + max_column_width=MAX(max_column_width,minsize.x); + items[i].rect_cache.size=minsize; + items[i].min_rect_cache.size=minsize; } @@ -900,17 +911,23 @@ void ItemList::_notification(int p_what) { break; } + items[i].rect_cache=items[i].min_rect_cache; + if(same_column_width) + items[i].rect_cache.size.x=max_column_width; items[i].rect_cache.pos=ofs; max_h=MAX(max_h,items[i].rect_cache.size.y); - ofs.x+=items[i].rect_cache.size.x; + ofs.x+=items[i].rect_cache.size.x + hseparation; //print_line("item "+itos(i)+" ofs "+rtos(items[i].rect_cache.size.x)); - if (col>0) - ofs.x+=hseparation; col++; if (col==current_columns) { if (i<items.size()-1) separators.push_back(ofs.y+max_h+vseparation/2); + + for(int j=i;j>=0 && col>0;j--, col--) { + items[j].rect_cache.size.y = max_h; + } + ofs.x=0; ofs.y+=max_h+vseparation; col=0; @@ -918,6 +935,10 @@ void ItemList::_notification(int p_what) { } } + for(int j=items.size()-1;j>=0 && col>0;j--, col--) { + items[j].rect_cache.size.y = max_h; + } + if (all_fit) { float max = MAX(page,ofs.y+max_h); scroll_bar->set_max(max); @@ -980,7 +1001,7 @@ void ItemList::_notification(int p_what) { Vector2 text_ofs; if (items[i].icon.is_valid()) { - Size2 icon_size = _adjust_to_max_size(items[i].get_icon_size(),max_icon_size, icon_stretch); + Size2 icon_size = _adjust_to_max_size(items[i].get_icon_size(),max_icon_size) * icon_scale; Vector2 icon_ofs; if (min_icon_size!=Vector2()) { @@ -992,7 +1013,12 @@ void ItemList::_notification(int p_what) { if (icon_mode==ICON_MODE_TOP) { pos.x += Math::floor((items[i].rect_cache.size.width - icon_size.width)/2); + pos.y += MIN( + Math::floor((items[i].rect_cache.size.height - icon_size.height)/2), + items[i].rect_cache.size.height - items[i].min_rect_cache.size.height + ); text_ofs.y = MAX(icon_size.height, min_icon_size.y) + icon_margin; + text_ofs.y += items[i].rect_cache.size.height - items[i].min_rect_cache.size.height; } else { pos.y += Math::floor((items[i].rect_cache.size.height - icon_size.height)/2); @@ -1018,6 +1044,8 @@ void ItemList::_notification(int p_what) { Vector2 size = font->get_string_size(items[i].text); if (fixed_column_width) max_len=fixed_column_width; + else if(same_column_width) + max_len=items[i].rect_cache.size.x; else max_len=size.x; @@ -1205,14 +1233,12 @@ bool ItemList::get_allow_rmb_select() const { return allow_rmb_select; } -void ItemList::set_icon_stretch_to_max_size(bool p_stretch) { - - icon_stretch = p_stretch; +void ItemList::set_icon_scale(real_t p_scale) { + icon_scale = p_scale; } -bool ItemList::get_icon_stretch_to_max_size() const { - - return icon_stretch; +real_t ItemList::get_icon_scale() const { + return icon_scale; } void ItemList::_bind_methods(){ @@ -1257,6 +1283,9 @@ void ItemList::_bind_methods(){ ObjectTypeDB::bind_method(_MD("set_fixed_column_width","width"),&ItemList::set_fixed_column_width); ObjectTypeDB::bind_method(_MD("get_fixed_column_width"),&ItemList::get_fixed_column_width); + ObjectTypeDB::bind_method(_MD("set_same_column_width","enable"),&ItemList::set_same_column_width); + ObjectTypeDB::bind_method(_MD("is_same_column_width"),&ItemList::is_same_column_width); + ObjectTypeDB::bind_method(_MD("set_max_text_lines","lines"),&ItemList::set_max_text_lines); ObjectTypeDB::bind_method(_MD("get_max_text_lines"),&ItemList::get_max_text_lines); @@ -1275,8 +1304,8 @@ void ItemList::_bind_methods(){ ObjectTypeDB::bind_method(_MD("set_max_icon_size","size"),&ItemList::set_max_icon_size); ObjectTypeDB::bind_method(_MD("get_max_icon_size"),&ItemList::get_max_icon_size); - ObjectTypeDB::bind_method(_MD("set_icon_stretch_to_max_size","stretch"),&ItemList::set_icon_stretch_to_max_size); - ObjectTypeDB::bind_method(_MD("get_icon_stretch_to_max_size"),&ItemList::get_icon_stretch_to_max_size); + ObjectTypeDB::bind_method(_MD("set_icon_scale","scale"),&ItemList::set_icon_scale); + ObjectTypeDB::bind_method(_MD("get_icon_scale"),&ItemList::get_icon_scale); ObjectTypeDB::bind_method(_MD("set_allow_rmb_select","allow"),&ItemList::set_allow_rmb_select); ObjectTypeDB::bind_method(_MD("get_allow_rmb_select"),&ItemList::get_allow_rmb_select); @@ -1309,6 +1338,7 @@ ItemList::ItemList() { icon_mode=ICON_MODE_LEFT; fixed_column_width=0; + same_column_width = false; max_text_lines=1; max_columns=1; @@ -1325,8 +1355,7 @@ ItemList::ItemList() { defer_select_single=-1; allow_rmb_select=false; - icon_stretch = false; - + icon_scale = 1.0f; } ItemList::~ItemList() { diff --git a/scene/gui/item_list.h b/scene/gui/item_list.h index a79d2575bd..087c585128 100644 --- a/scene/gui/item_list.h +++ b/scene/gui/item_list.h @@ -33,6 +33,7 @@ private: Color custom_bg; Rect2 rect_cache; + Rect2 min_rect_cache; Size2 get_icon_size() const; @@ -44,8 +45,7 @@ private: bool shape_changed; bool ensure_selected_visible; - - bool icon_stretch; + bool same_column_width; Vector<Item> items; Vector<int> separators; @@ -61,12 +61,18 @@ private: int fixed_column_width; int max_text_lines; int max_columns; + Size2 min_icon_size; Size2 max_icon_size; + + Size2 max_item_size_cache; + int defer_select_single; bool allow_rmb_select; + real_t icon_scale; + void _scroll_changed(double); void _input_event(const InputEvent& p_event); protected: @@ -123,6 +129,9 @@ public: void set_fixed_column_width(int p_size); int get_fixed_column_width() const; + void set_same_column_width(bool p_enable); + int is_same_column_width() const; + void set_max_text_lines(int p_amount); int get_max_text_lines() const; @@ -152,8 +161,8 @@ public: virtual String get_tooltip(const Point2& p_pos) const; int get_item_at_pos(const Point2& p_pos,bool p_exact=false) const; - void set_icon_stretch_to_max_size(bool p_stretch); - bool get_icon_stretch_to_max_size() const; + void set_icon_scale(real_t p_scale); + real_t get_icon_scale() const; ItemList(); ~ItemList(); diff --git a/scene/gui/text_edit.cpp b/scene/gui/text_edit.cpp index 03024daff5..ceb40925ec 100644 --- a/scene/gui/text_edit.cpp +++ b/scene/gui/text_edit.cpp @@ -314,6 +314,10 @@ void TextEdit::_update_scrollbars() { if (line_numbers) total_width += cache.line_number_w; + if (draw_breakpoint_gutter) { + total_width += cache.breakpoint_gutter_width; + } + bool use_hscroll=true; bool use_vscroll=true; @@ -412,9 +416,15 @@ void TextEdit::_notification(int p_what) { case NOTIFICATION_THEME_CHANGED: { _update_caches(); - }; + } break; case NOTIFICATION_DRAW: { + if (draw_breakpoint_gutter) { + cache.breakpoint_gutter_width = breakpoint_gutter_width; + } else { + cache.breakpoint_gutter_width = 0; + } + int line_number_char_count=0; { @@ -439,7 +449,7 @@ void TextEdit::_notification(int p_what) { RID ci = get_canvas_item(); - int xmargin_beg=cache.style_normal->get_margin(MARGIN_LEFT)+cache.line_number_w; + int xmargin_beg=cache.style_normal->get_margin(MARGIN_LEFT)+cache.line_number_w+cache.breakpoint_gutter_width; int xmargin_end=cache.size.width-cache.style_normal->get_margin(MARGIN_RIGHT); //let's do it easy for now: cache.style_normal->draw(ci,Rect2(Point2(),cache.size)); @@ -682,9 +692,13 @@ void TextEdit::_notification(int p_what) { // check if line contains highlighted word int highlighted_text_col = -1; - if (highlighted_text.length() != 0) { - highlighted_text_col = _get_column_pos_of_word(highlighted_text, str, 0); - } + int search_text_col = -1; + + if (!search_text.empty()) + search_text_col = _get_column_pos_of_word(search_text, str, search_flags, 0); + + if (highlighted_text.length() != 0 && highlighted_text != search_text) + highlighted_text_col = _get_column_pos_of_word(highlighted_text, str, SEARCH_MATCH_CASE|SEARCH_WHOLE_WORDS, 0); if (cache.line_number_w) { String fc = String::num(line+1); @@ -692,7 +706,7 @@ void TextEdit::_notification(int p_what) { fc="0"+fc; } - cache.font->draw(ci,Point2(cache.style_normal->get_margin(MARGIN_LEFT),ofs_y+cache.font->get_ascent()),fc,cache.line_number_color); + cache.font->draw(ci,Point2(cache.style_normal->get_margin(MARGIN_LEFT)+cache.breakpoint_gutter_width,ofs_y+cache.font->get_ascent()),fc,cache.line_number_color); } const Map<int,Text::ColorRegionInfo>& cri_map=text.get_color_region_info(line); @@ -706,6 +720,14 @@ void TextEdit::_notification(int p_what) { if (text.is_breakpoint(line)) { VisualServer::get_singleton()->canvas_item_add_rect(ci,Rect2(xmargin_beg, ofs_y,xmargin_end-xmargin_beg,get_row_height()),cache.breakpoint_color); + + // draw breakpoint marker + if (draw_breakpoint_gutter) { + int vertical_gap = cache.breakpoint_gutter_width / 2; + int marker_size = cache.breakpoint_gutter_width - vertical_gap; + // no transparency on marker + VisualServer::get_singleton()->canvas_item_add_rect(ci,Rect2(cache.style_normal->get_margin(MARGIN_LEFT) + 1, ofs_y + vertical_gap ,marker_size, marker_size),Color(cache.breakpoint_color.r, cache.breakpoint_color.g, cache.breakpoint_color.b)); + } } @@ -879,20 +901,45 @@ void TextEdit::_notification(int p_what) { break; } - bool in_selection = (selection.active && line>=selection.from_line && line<=selection.to_line && (line>selection.from_line || j>=selection.from_column) && (line<selection.to_line || j<selection.to_column)); + bool in_search_result=false; + if (search_text_col != -1) { + // if we are at the end check for new search result on same line + if (j >= search_text_col+search_text.length()) + search_text_col = _get_column_pos_of_word(search_text, str, search_flags, j); + + in_search_result = j >= search_text_col && j < search_text_col+search_text.length(); + + if (in_search_result) { + VisualServer::get_singleton()->canvas_item_add_rect(ci,Rect2(Point2i( char_ofs+char_margin, ofs_y ), Size2i(char_w, get_row_height())),cache.search_result_color); + } + } + + bool in_selection = (selection.active && line>=selection.from_line && line<=selection.to_line && (line>selection.from_line || j>=selection.from_column) && (line<selection.to_line || j<selection.to_column)); if (in_selection) { //inside selection! VisualServer::get_singleton()->canvas_item_add_rect(ci,Rect2(Point2i( char_ofs+char_margin, ofs_y ), Size2i(char_w,get_row_height())),cache.selection_color); } + if (in_search_result) { + Color border_color=(line==search_result_line && j>=search_result_col && j<search_result_col+search_text.length())?cache.font_color:cache.search_result_border_color; + + VisualServer::get_singleton()->canvas_item_add_rect(ci,Rect2(Point2i( char_ofs+char_margin, ofs_y ), Size2i(char_w,1)),border_color); + VisualServer::get_singleton()->canvas_item_add_rect(ci,Rect2(Point2i( char_ofs+char_margin, ofs_y+get_row_height()-1 ), Size2i(char_w,1)),border_color); + + if (j==search_text_col) + VisualServer::get_singleton()->canvas_item_add_rect(ci,Rect2(Point2i( char_ofs+char_margin, ofs_y ), Size2i(1,get_row_height())),border_color); + if (j==search_text_col+search_text.length()-1) + VisualServer::get_singleton()->canvas_item_add_rect(ci,Rect2(Point2i( char_ofs+char_margin+char_w-1, ofs_y ), Size2i(1,get_row_height())),border_color); + } + if (highlight_all_occurrences) { if (highlighted_text_col != -1) { // if we are at the end check for new word on same line if (j > highlighted_text_col+highlighted_text.length()) { - highlighted_text_col = _get_column_pos_of_word(highlighted_text, str, j); + highlighted_text_col = _get_column_pos_of_word(highlighted_text, str, SEARCH_MATCH_CASE|SEARCH_WHOLE_WORDS, j); } bool in_highlighted_word = (j >= highlighted_text_col && j < highlighted_text_col+highlighted_text.length()); @@ -1347,7 +1394,7 @@ void TextEdit::_get_mouse_pos(const Point2i& p_mouse, int &r_row, int &r_col) co col=text[row].size(); } else { - col=p_mouse.x-(cache.style_normal->get_margin(MARGIN_LEFT)+cache.line_number_w); + col=p_mouse.x-(cache.style_normal->get_margin(MARGIN_LEFT)+cache.line_number_w+cache.breakpoint_gutter_width); col+=cursor.x_ofs; col=get_char_pos_for( col, get_line(row) ); } @@ -1421,6 +1468,15 @@ void TextEdit::_input_event(const InputEvent& p_input_event) { int row,col; _get_mouse_pos(Point2i(mb.x,mb.y), row,col); + // toggle breakpoint on gutter click + if (draw_breakpoint_gutter) { + int gutter=cache.style_normal->get_margin(MARGIN_LEFT); + if (mb.x > gutter && mb.x <= gutter + cache.breakpoint_gutter_width + 3) { + set_line_as_breakpoint(row, !is_line_set_as_breakpoint(row)); + return; + } + } + int prev_col=cursor.column; int prev_line=cursor.line; @@ -1820,7 +1876,9 @@ void TextEdit::_input_event(const InputEvent& p_input_event) { } if (clear) { - begin_complex_operation(); + if (!dobreak) { + begin_complex_operation(); + } selection.active=false; update(); _remove_text(selection.from_line,selection.from_column,selection.to_line,selection.to_column); @@ -1892,7 +1950,8 @@ void TextEdit::_input_event(const InputEvent& p_input_event) { if (completion_hint!="") { completion_hint=""; update(); - + } else { + scancode_handled=false; } } break; case KEY_TAB: { @@ -2846,7 +2905,7 @@ void TextEdit::adjust_viewport_to_cursor() { if (cursor.line_ofs>cursor.line) cursor.line_ofs=cursor.line; - int visible_width=cache.size.width-cache.style_normal->get_minimum_size().width-cache.line_number_w; + int visible_width=cache.size.width-cache.style_normal->get_minimum_size().width-cache.line_number_w-cache.breakpoint_gutter_width; if (v_scroll->is_visible()) visible_width-=v_scroll->get_combined_minimum_size().width; visible_width-=20; // give it a little more space @@ -3075,7 +3134,8 @@ void TextEdit::insert_text_at_cursor(const String& p_text) { } Control::CursorShape TextEdit::get_cursor_shape(const Point2& p_pos) const { - if(completion_active && completion_rect.has_point(p_pos)) { + int gutter=cache.style_normal->get_margin(MARGIN_LEFT)+cache.line_number_w+cache.breakpoint_gutter_width; + if((completion_active && completion_rect.has_point(p_pos)) || p_pos.x < gutter) { return CURSOR_ARROW; } return CURSOR_IBEAM; @@ -3220,6 +3280,8 @@ void TextEdit::_update_caches() { cache.breakpoint_color=get_color("breakpoint_color"); cache.brace_mismatch_color=get_color("brace_mismatch_color"); cache.word_highlighted_color=get_color("word_highlighted_color"); + cache.search_result_color=get_color("search_result_color"); + cache.search_result_border_color=get_color("search_result_border_color"); cache.line_spacing=get_constant("line_spacing"); cache.row_height = cache.font->get_height() + cache.line_spacing; cache.tab_icon=get_icon("tab"); @@ -3481,12 +3543,25 @@ String TextEdit::get_word_under_cursor() const { return text[cursor.line].substr(prev_cc, next_cc-prev_cc); } +void TextEdit::set_search_text(const String &p_search_text) { + search_text = p_search_text; +} + +void TextEdit::set_search_flags(uint32_t p_flags) { + search_flags = p_flags; +} + +void TextEdit::set_current_search_result(int line, int col) { + search_result_line = line; + search_result_col = col; +} + void TextEdit::set_highlight_all_occurrences(const bool p_enabled) { highlight_all_occurrences = p_enabled; update(); } -int TextEdit::_get_column_pos_of_word(const String &p_key, const String &p_search, int p_from_column) { +int TextEdit::_get_column_pos_of_word(const String &p_key, const String &p_search, uint32_t p_search_flags, int p_from_column) { int col = -1; if (p_key.length() > 0 && p_search.length() > 0) { @@ -3494,12 +3569,15 @@ int TextEdit::_get_column_pos_of_word(const String &p_key, const String &p_searc p_from_column = 0; } - while (col == -1 && p_from_column <= p_search.length()) { - // match case - col = p_search.findn(p_key, p_from_column); + while (col == -1 && p_from_column <= p_search.length()) { + if (p_search_flags&SEARCH_MATCH_CASE) { + col = p_search.find(p_key,p_from_column); + } else { + col = p_search.findn(p_key,p_from_column); + } // whole words only - if (col != -1) { + if (col != -1 && p_search_flags&SEARCH_WHOLE_WORDS) { p_from_column=col; if (col > 0 && _is_text_char(p_search[col-1])) { @@ -3565,10 +3643,8 @@ bool TextEdit::search(const String &p_key,uint32_t p_search_flags, int p_from_li //wrapped if (p_search_flags&SEARCH_BACKWARDS) { - text_line=text_line.substr(from_column,text_line.length()); from_column=text_line.length(); } else { - text_line=text_line.substr(0,from_column); from_column=0; } @@ -3579,7 +3655,6 @@ bool TextEdit::search(const String &p_key,uint32_t p_search_flags, int p_from_li } else { - //text_line=text_line.substr(0,p_from_column); //wrap around for missing begining. if (p_search_flags&SEARCH_BACKWARDS) from_column=text_line.length()-1; else @@ -3588,12 +3663,25 @@ bool TextEdit::search(const String &p_key,uint32_t p_search_flags, int p_from_li pos=-1; - if (!(p_search_flags&SEARCH_BACKWARDS)) { + int pos_from=0; + int last_pos=-1; + while ((last_pos=(p_search_flags&SEARCH_MATCH_CASE)?text_line.find(p_key,pos_from):text_line.findn(p_key,pos_from))!=-1) { - pos = (p_search_flags&SEARCH_MATCH_CASE)?text_line.find(p_key,from_column):text_line.findn(p_key,from_column); - } else { + if (p_search_flags&SEARCH_BACKWARDS) { + + if (last_pos>from_column) + break; + pos=last_pos; + + } else { - pos = (p_search_flags&SEARCH_MATCH_CASE)?text_line.rfind(p_key,from_column):text_line.rfindn(p_key,from_column); + if (last_pos>=from_column) { + pos=last_pos; + break; + } + } + + pos_from=last_pos+p_key.length(); } if (pos!=-1 && (p_search_flags&SEARCH_WHOLE_WORDS)) { @@ -4167,6 +4255,24 @@ void TextEdit::set_show_line_numbers(bool p_show) { update(); } +void TextEdit::set_draw_breakpoint_gutter(bool p_draw) { + draw_breakpoint_gutter = p_draw; + update(); +} + +bool TextEdit::is_drawing_breakpoint_gutter() const { + return draw_breakpoint_gutter; +} + +void TextEdit::set_breakpoint_gutter_width(int p_gutter_width) { + breakpoint_gutter_width = p_gutter_width; + update(); +} + +int TextEdit::get_breakpoint_gutter_width() const { + return cache.breakpoint_gutter_width; +} + bool TextEdit::is_text_field() const { return true; @@ -4308,6 +4414,8 @@ TextEdit::TextEdit() { cache.row_height=1; cache.line_spacing=1; cache.line_number_w=1; + cache.breakpoint_gutter_width=0; + breakpoint_gutter_width = 0; tab_size=4; text.set_tab_size(tab_size); @@ -4389,6 +4497,7 @@ TextEdit::TextEdit() { completion_line_ofs=0; tooltip_obj=NULL; line_numbers=false; + draw_breakpoint_gutter=false; next_operation_is_complex=false; scroll_past_end_of_file_enabled=false; auto_brace_completion_enabled=false; diff --git a/scene/gui/text_edit.h b/scene/gui/text_edit.h index dbe6293240..24a72afd48 100644 --- a/scene/gui/text_edit.h +++ b/scene/gui/text_edit.h @@ -88,10 +88,13 @@ class TextEdit : public Control { Color current_line_color; Color brace_mismatch_color; Color word_highlighted_color; + Color search_result_color; + Color search_result_border_color; int row_height; int line_spacing; int line_number_w; + int breakpoint_gutter_width; Size2 size; } cache; @@ -222,6 +225,8 @@ class TextEdit : public Control { bool text_changed_dirty; bool undo_enabled; bool line_numbers; + bool draw_breakpoint_gutter; + int breakpoint_gutter_width; bool highlight_all_occurrences; bool scroll_past_end_of_file_enabled; @@ -249,6 +254,11 @@ class TextEdit : public Control { bool callhint_below; Vector2 callhint_offset; + String search_text; + uint32_t search_flags; + int search_result_line; + int search_result_col; + int get_visible_rows() const; int get_char_count(); @@ -287,7 +297,7 @@ class TextEdit : public Control { String _base_get_text(int p_from_line, int p_from_column,int p_to_line,int p_to_column) const; void _base_remove_text(int p_from_line, int p_from_column,int p_to_line,int p_to_column); - int _get_column_pos_of_word(const String &p_key, const String &p_search, int p_from_column); + int _get_column_pos_of_word(const String &p_key, const String &p_search, uint32_t p_search_flags, int p_from_column); DVector<int> _search_bind(const String &p_key,uint32_t p_search_flags, int p_from_line,int p_from_column) const; @@ -408,6 +418,10 @@ public: void select(int p_from_line,int p_from_column,int p_to_line,int p_to_column); void deselect(); + void set_search_text(const String& p_search_text); + void set_search_flags(uint32_t p_flags); + void set_current_search_result(int line, int col); + void set_highlight_all_occurrences(const bool p_enabled); bool is_selection_active() const; int get_selection_from_line() const; @@ -451,6 +465,12 @@ public: void set_show_line_numbers(bool p_show); + void set_draw_breakpoint_gutter(bool p_draw); + bool is_drawing_breakpoint_gutter() const; + + void set_breakpoint_gutter_width(int p_gutter_width); + int get_breakpoint_gutter_width() const; + void set_tooltip_request_func(Object *p_obj, const StringName& p_function, const Variant& p_udata); void set_completion(bool p_enabled,const Vector<String>& p_prefixes); diff --git a/scene/register_scene_types.cpp b/scene/register_scene_types.cpp index 8327473a60..1fd1c77dca 100644 --- a/scene/register_scene_types.cpp +++ b/scene/register_scene_types.cpp @@ -133,6 +133,7 @@ #include "scene/resources/mesh_data_tool.h" #include "scene/resources/scene_preloader.h" #include "scene/resources/dynamic_font.h" +#include "scene/resources/dynamic_font_stb.h" #include "scene/main/timer.h" @@ -254,7 +255,6 @@ void register_scene_types() { resource_loader_wav = memnew( ResourceFormatLoaderWAV ); ResourceLoader::add_resource_format_loader( resource_loader_wav ); - resource_loader_dynamic_font = memnew( ResourceFormatLoaderDynamicFont ); ResourceLoader::add_resource_format_loader( resource_loader_dynamic_font ); @@ -578,8 +578,10 @@ void register_scene_types() { ObjectTypeDB::register_type<Animation>(); ObjectTypeDB::register_virtual_type<Font>(); ObjectTypeDB::register_type<BitmapFont>(); + ObjectTypeDB::register_type<DynamicFontData>(); ObjectTypeDB::register_type<DynamicFont>(); + ObjectTypeDB::register_type<StyleBoxEmpty>(); ObjectTypeDB::register_type<StyleBoxTexture>(); ObjectTypeDB::register_type<StyleBoxFlat>(); @@ -647,6 +649,7 @@ void unregister_scene_types() { memdelete( resource_loader_image ); memdelete( resource_loader_wav ); memdelete( resource_loader_dynamic_font ); + #ifdef TOOLS_ENABLED diff --git a/scene/resources/dynamic_font.cpp b/scene/resources/dynamic_font.cpp index 19aa0e79cc..c76b5f3d3a 100644 --- a/scene/resources/dynamic_font.cpp +++ b/scene/resources/dynamic_font.cpp @@ -1,65 +1,11 @@ +#ifdef FREETYPE_ENABLED #include "dynamic_font.h" -#define STB_TRUETYPE_IMPLEMENTATION -#include "stb_truetype.h" #include "os/file_access.h" -void DynamicFontData::lock() { - fr=font_data.read(); - - if (fr.ptr()!=last_data_ptr) { - - last_data_ptr=fr.ptr(); - - if (!stbtt_InitFont(&info, last_data_ptr, 0)) { - valid=false; - } else { - valid=true; - } - - last_data_ptr=fr.ptr(); - } -} - -void DynamicFontData::unlock() { - - fr = DVector<uint8_t>::Read(); -} - -void DynamicFontData::set_font_data(const DVector<uint8_t>& p_font) { - //clear caches and stuff - ERR_FAIL_COND(font_data.size()) ; - font_data=p_font; - - lock(); - - if (valid) { - stbtt_GetFontVMetrics(&info, &ascent, &descent, &linegap); - descent=-descent + linegap; - - for(int i=32;i<1024;i++) { - for(int j=32;j<1024;j++) { - - int kern = stbtt_GetCodepointKernAdvance(&info, i,j); - if (kern!=0) { - KerningPairKey kpk; - kpk.A=i; - kpk.B=j; - kerning_map[kpk]=kern; - } - } - } - } - - unlock(); - //clear existing stuff - - ERR_FAIL_COND(!valid); -} Ref<DynamicFontAtSize> DynamicFontData::_get_dynamic_font_at_size(int p_size) { - ERR_FAIL_COND_V(!valid,Ref<DynamicFontAtSize>()); if (size_cache.has(p_size)) { return Ref<DynamicFontAtSize>( size_cache[p_size] ); @@ -67,6 +13,7 @@ Ref<DynamicFontAtSize> DynamicFontData::_get_dynamic_font_at_size(int p_size) { Ref<DynamicFontAtSize> dfas; + dfas.instance(); dfas->font=Ref<DynamicFontData>( this ); @@ -74,21 +21,34 @@ Ref<DynamicFontAtSize> DynamicFontData::_get_dynamic_font_at_size(int p_size) { size_cache[p_size]=dfas.ptr(); dfas->size=p_size; + dfas->_load(); + + return dfas; - lock(); +} - dfas->scale = stbtt_ScaleForPixelHeight(&info, p_size); +void DynamicFontData::set_font_ptr(const uint8_t* p_font_mem,int p_font_mem_size) { - unlock(); + font_mem=p_font_mem; + font_mem_size=p_font_mem_size; +} - return dfas; +void DynamicFontData::set_font_path(const String& p_path) { + + font_path=p_path; +} + +void DynamicFontData::set_force_autohinter(bool p_force) { + force_autohinter=p_force; } DynamicFontData::DynamicFontData() { - last_data_ptr=NULL; - valid=false; + + force_autohinter=false; + font_mem=NULL; + font_mem_size=0; } DynamicFontData::~DynamicFontData() @@ -100,22 +60,106 @@ DynamicFontData::~DynamicFontData() //////////////////// +Error DynamicFontAtSize::_load() { + + + int error = FT_Init_FreeType( &library ); + + ERR_EXPLAIN(TTR("Error initializing FreeType.")); + ERR_FAIL_COND_V( error !=0, ERR_CANT_CREATE ); + + if (font->font_path!=String()) { + + FileAccess *f=FileAccess::open(font->font_path,FileAccess::READ); + ERR_FAIL_COND_V(!f,ERR_CANT_OPEN); + + memset(&stream,0,sizeof(FT_StreamRec)); + stream.base=NULL; + stream.size=f->get_len(); + stream.pos=0; + stream.descriptor.pointer=f; + stream.read=_ft_stream_io; + stream.close=_ft_stream_close; + + FT_Open_Args fargs; + memset(&fargs,0,sizeof(FT_Open_Args)); + fargs.flags=FT_OPEN_STREAM; + fargs.stream=&stream; + error = FT_Open_Face( library,&fargs,0,&face); + } else if (font->font_mem) { + + memset(&stream,0,sizeof(FT_StreamRec)); + stream.base=(unsigned char*)font->font_mem; + stream.size=font->font_mem_size; + stream.pos=0; + + FT_Open_Args fargs; + memset(&fargs,0,sizeof(FT_Open_Args)); + fargs.memory_base=(unsigned char*)font->font_mem; + fargs.memory_size=font->font_mem_size; + fargs.flags= FT_OPEN_MEMORY; + fargs.stream=&stream; + error = FT_Open_Face( library,&fargs,0,&face); + + } else { + ERR_EXPLAIN("DynamicFont uninitialized"); + ERR_FAIL_V(ERR_UNCONFIGURED); + } + + //error = FT_New_Face( library, src_path.utf8().get_data(),0,&face ); + + if ( error == FT_Err_Unknown_File_Format ) { + ERR_EXPLAIN(TTR("Unknown font format.")); + FT_Done_FreeType( library ); + + } else if ( error ) { + + ERR_EXPLAIN(TTR("Error loading font.")); + FT_Done_FreeType( library ); + + } + + ERR_FAIL_COND_V(error,ERR_FILE_CANT_OPEN); + + + /*error = FT_Set_Char_Size(face,0,64*size,512,512); + + if ( error ) { + FT_Done_FreeType( library ); + ERR_EXPLAIN(TTR("Invalid font size.")); + ERR_FAIL_COND_V( error, ERR_INVALID_PARAMETER ); + }*/ + + error = FT_Set_Pixel_Sizes(face,0,size); + + ascent=face->size->metrics.ascender>>6; + descent=-face->size->metrics.descender>>6; + linegap=0; + + //print_line("ASCENT: "+itos(ascent)+" descent "+itos(descent)+" hinted: "+itos(face->face_flags&FT_FACE_FLAG_HINTER)); + + valid=true; + return OK; +} + float DynamicFontAtSize::get_height() const { - return (font->ascent+font->descent)*scale; + return ascent+descent; } float DynamicFontAtSize::get_ascent() const { - return font->ascent*scale; + return ascent; } float DynamicFontAtSize::get_descent() const { - return font->descent*scale; + return descent; } Size2 DynamicFontAtSize::get_char_size(CharType p_char,CharType p_next) const { + if (!valid) + return Size2(1,1); const_cast<DynamicFontAtSize*>(this)->_update_char(p_char); const Character *c = char_map.getptr(p_char); @@ -124,14 +168,9 @@ Size2 DynamicFontAtSize::get_char_size(CharType p_char,CharType p_next) const { Size2 ret( c->advance, get_height()); if (p_next) { - DynamicFontData::KerningPairKey kpk; - kpk.A=p_char; - kpk.B=p_next; - - const Map<DynamicFontData::KerningPairKey,int>::Element *K=font->kerning_map.find(kpk); - if (K) { - ret.x+=K->get()*scale; - } + FT_Vector delta; + FT_Get_Kerning( face, p_char,p_next, FT_KERNING_DEFAULT, &delta ); + ret.x+=delta.x>>6; } @@ -141,6 +180,9 @@ Size2 DynamicFontAtSize::get_char_size(CharType p_char,CharType p_next) const { float DynamicFontAtSize::draw_char(RID p_canvas_item, const Point2& p_pos, const CharType& p_char,const CharType& p_next,const Color& p_modulate) const { + if (!valid) + return 0; + const_cast<DynamicFontAtSize*>(this)->_update_char(p_char); const Character * c = char_map.getptr(p_char); @@ -161,58 +203,84 @@ float DynamicFontAtSize::draw_char(RID p_canvas_item, const Point2& p_pos, const float ret = c->advance; if (p_next) { - DynamicFontData::KerningPairKey kpk; - kpk.A=p_char; - kpk.B=p_next; - const Map<DynamicFontData::KerningPairKey,int>::Element *K=font->kerning_map.find(kpk); - if (K) { - ret+=K->get()*scale; - } + FT_Vector delta; + FT_Get_Kerning( face, p_char,p_next, FT_KERNING_DEFAULT, &delta ); + ret+=delta.x>>6; } return ret; } +unsigned long DynamicFontAtSize::_ft_stream_io(FT_Stream stream, unsigned long offset, unsigned char* buffer, unsigned long count ) { + + + FileAccess *f=(FileAccess*)stream->descriptor.pointer; + + if (f->get_pos()!=offset) { + f->seek(offset); + + } + + if (count==0) + return 0; + + return f->get_buffer(buffer,count); +} +void DynamicFontAtSize::_ft_stream_close(FT_Stream stream) { + + FileAccess *f=(FileAccess*)stream->descriptor.pointer; + f->close(); + memdelete(f); +} + void DynamicFontAtSize::_update_char(CharType p_char) { if (char_map.has(p_char)) return; - font->lock(); - + _THREAD_SAFE_METHOD_ - int w,h,xofs,yofs; - unsigned char * cpbitmap = stbtt_GetCodepointBitmap(&font->info, scale, scale, p_char, &w, &h, &xofs, &yofs ); + FT_GlyphSlot slot = face->glyph; - if (!cpbitmap) { - //no glyph + int error = FT_Load_Char( face, p_char, FT_LOAD_RENDER|(font->force_autohinter?FT_LOAD_FORCE_AUTOHINT:0) ); + if (!error) { + error = FT_Render_Glyph( face->glyph, ft_render_mode_normal ); + } + if (error) { - int advance; - stbtt_GetCodepointHMetrics(&font->info, p_char, &advance, 0); + int advance=0; + //stbtt_GetCodepointHMetrics(&font->info, p_char, &advance, 0); //print_line("char has no bitmap: "+itos(p_char)+" but advance is "+itos(advance*scale)); Character ch; ch.texture_idx=-1; - ch.advance=advance*scale; + ch.advance=advance; ch.h_align=0; ch.v_align=0; char_map[p_char]=ch; - font->unlock(); return; } + + + int w = slot->bitmap.width; + int h = slot->bitmap.rows; + int p = slot->bitmap.pitch; + int yofs=slot->bitmap_top; + int xofs=slot->bitmap_left; + int advance=slot->advance.x>>6; + + int mw=w+rect_margin*2; int mh=h+rect_margin*2; if (mw>4096 || mh>4096) { - stbtt_FreeBitmap(cpbitmap,NULL); - font->unlock(); ERR_FAIL_COND(mw>4096); ERR_FAIL_COND(mh>4096); } @@ -304,13 +372,14 @@ void DynamicFontAtSize::_update_char(CharType p_char) { { DVector<uint8_t>::Write wr = tex.imgdata.write(); + for(int i=0;i<h;i++) { for(int j=0;j<w;j++) { int ofs = ( (i+tex_y+rect_margin)*tex.texture_size+j+tex_x+rect_margin)*2; ERR_FAIL_COND(ofs >= tex.imgdata.size()); wr[ofs+0]=255; //grayscale as 1 - wr[ofs+1]=cpbitmap[i*w+j]; //alpha as 0 + wr[ofs+1]=slot->bitmap.buffer[i*slot->bitmap.width+j]; } } } @@ -322,7 +391,7 @@ void DynamicFontAtSize::_update_char(CharType p_char) { if (tex.texture.is_null()) { tex.texture.instance(); - tex.texture->create_from_image(img,Texture::FLAG_FILTER); + tex.texture->create_from_image(img,0/*Texture::FLAG_FILTER*/); } else { tex.texture->set_data(img); //update } @@ -337,13 +406,11 @@ void DynamicFontAtSize::_update_char(CharType p_char) { tex.offsets[k]=tex_y+mh; } - int advance; - stbtt_GetCodepointHMetrics(&font->info, p_char, &advance, 0); Character chr; chr.h_align=xofs; - chr.v_align=yofs + get_ascent(); - chr.advance=advance*scale; + chr.v_align=ascent-yofs;// + ascent - descent; + chr.advance=advance; chr.texture_idx=tex_index; @@ -353,21 +420,24 @@ void DynamicFontAtSize::_update_char(CharType p_char) { char_map[p_char]=chr; - stbtt_FreeBitmap(cpbitmap,NULL); - - font->unlock(); } DynamicFontAtSize::DynamicFontAtSize() { + valid=false; rect_margin=1; + ascent=1; + descent=1; + linegap=1; } DynamicFontAtSize::~DynamicFontAtSize(){ - ERR_FAIL_COND(!font.ptr()); - font->size_cache.erase(size); + if (valid) { + FT_Done_FreeType( library ); + font->size_cache.erase(size); + } } ///////////////////////// @@ -478,34 +548,21 @@ RES ResourceFormatLoaderDynamicFont::load(const String &p_path, const String& p_ if (r_error) *r_error=ERR_FILE_CANT_OPEN; + Ref<DynamicFontData> dfont; + dfont.instance();; + dfont->set_font_path(p_path); - FileAccess *f = FileAccess::open(p_path,FileAccess::READ); - ERR_FAIL_COND_V(!f,RES()); - - DVector<uint8_t> data; - - data.resize(f->get_len()); - - ERR_FAIL_COND_V(data.size()==0,RES()); - - { - DVector<uint8_t>::Write w = data.write(); - f->get_buffer(w.ptr(),data.size()); - } - - Ref<DynamicFontData> dfd; - dfd.instance(); - dfd->set_font_data(data); if (r_error) *r_error=OK; - return dfd; + return dfont; } void ResourceFormatLoaderDynamicFont::get_recognized_extensions(List<String> *p_extensions) const { p_extensions->push_back("ttf"); + p_extensions->push_back("otf"); } bool ResourceFormatLoaderDynamicFont::handles_type(const String& p_type) const { @@ -516,8 +573,10 @@ bool ResourceFormatLoaderDynamicFont::handles_type(const String& p_type) const { String ResourceFormatLoaderDynamicFont::get_resource_type(const String &p_path) const { String el = p_path.extension().to_lower(); - if (el=="ttf") + if (el=="ttf" || el=="otf") return "DynamicFontData"; return ""; } + +#endif diff --git a/scene/resources/dynamic_font.h b/scene/resources/dynamic_font.h index ba7249a7b7..f0cf80b042 100644 --- a/scene/resources/dynamic_font.h +++ b/scene/resources/dynamic_font.h @@ -1,10 +1,14 @@ -#ifndef DYNAMICFONT_H -#define DYNAMICFONT_H +#ifndef DYNAMIC_FONT_H +#define DYNAMIC_FONT_H -#include "font.h" -#include "stb_truetype.h" +#ifdef FREETYPE_ENABLED +#include "scene/resources/font.h" +#include "os/thread_safe.h" #include "io/resource_loader.h" +#include <ft2build.h> +#include FT_FREETYPE_H + class DynamicFontAtSize; class DynamicFont; @@ -13,39 +17,16 @@ class DynamicFontData : public Resource { OBJ_TYPE(DynamicFontData,Resource); - bool valid; - - DVector<uint8_t> font_data; - DVector<uint8_t>::Read fr; - const uint8_t* last_data_ptr; - - struct KerningPairKey { - - union { - struct { - uint32_t A,B; - }; - - uint64_t pair; - }; - - _FORCE_INLINE_ bool operator<(const KerningPairKey& p_r) const { return pair<p_r.pair; } - }; - Map<KerningPairKey,int> kerning_map; + const uint8_t *font_mem; + int font_mem_size; + bool force_autohinter; + String font_path; Map<int,DynamicFontAtSize*> size_cache; -friend class DynamicFontAtSize; - - stbtt_fontinfo info; - int ascent; - int descent; - int linegap; - - void lock(); - void unlock(); + friend class DynamicFontAtSize; friend class DynamicFont; @@ -53,7 +34,10 @@ friend class DynamicFont; Ref<DynamicFontAtSize> _get_dynamic_font_at_size(int p_size); public: - void set_font_data(const DVector<uint8_t>& p_font); + void set_font_ptr(const uint8_t* p_font_mem,int p_font_mem_size); + void set_font_path(const String& p_path); + void set_force_autohinter(bool p_force); + DynamicFontData(); ~DynamicFontData(); }; @@ -61,11 +45,21 @@ public: class DynamicFontAtSize : public Reference { - OBJ_TYPE(DynamicFontAtSize,Reference); + OBJ_TYPE(DynamicFontAtSize,Reference) + _THREAD_SAFE_CLASS_ + FT_Library library; /* handle to library */ + FT_Face face; /* handle to face object */ + FT_StreamRec stream; + + int ascent; + int descent; + int linegap; int rect_margin; + bool valid; + struct CharTexture { DVector<uint8_t> imgdata; @@ -88,6 +82,8 @@ class DynamicFontAtSize : public Reference { }; + static unsigned long _ft_stream_io(FT_Stream stream, unsigned long offset, unsigned char* buffer, unsigned long count ); + static void _ft_stream_close(FT_Stream stream); HashMap< CharType, Character > char_map; @@ -95,13 +91,18 @@ class DynamicFontAtSize : public Reference { friend class DynamicFontData; Ref<DynamicFontData> font; - float scale; int size; + + + Error _load(); protected: + + public: + float get_height() const; float get_ascent() const; @@ -126,7 +127,7 @@ class DynamicFont : public Font { Ref<DynamicFontData> data; Ref<DynamicFontAtSize> data_at_size; int size; - + bool valid; protected: @@ -171,5 +172,6 @@ public: }; +#endif -#endif // DYNAMICFONT_H +#endif diff --git a/scene/resources/dynamic_font_stb.cpp b/scene/resources/dynamic_font_stb.cpp new file mode 100644 index 0000000000..344043fcdd --- /dev/null +++ b/scene/resources/dynamic_font_stb.cpp @@ -0,0 +1,527 @@ +#include "dynamic_font_stb.h" + +#ifndef FREETYPE_ENABLED + +#define STB_TRUETYPE_IMPLEMENTATION +#include "stb_truetype.h" +#include "os/file_access.h" + +void DynamicFontData::lock() { + + fr=font_data.read(); + + if (fr.ptr()!=last_data_ptr) { + + last_data_ptr=fr.ptr(); + + if (!stbtt_InitFont(&info, last_data_ptr, 0)) { + valid=false; + } else { + valid=true; + } + + last_data_ptr=fr.ptr(); + } +} + +void DynamicFontData::unlock() { + + fr = DVector<uint8_t>::Read(); +} + +void DynamicFontData::set_font_data(const DVector<uint8_t>& p_font) { + //clear caches and stuff + ERR_FAIL_COND(font_data.size()) ; + font_data=p_font; + + lock(); + + if (valid) { + stbtt_GetFontVMetrics(&info, &ascent, &descent, &linegap); + descent=-descent + linegap; + + for(int i=32;i<1024;i++) { + for(int j=32;j<1024;j++) { + + int kern = stbtt_GetCodepointKernAdvance(&info, i,j); + if (kern!=0) { + KerningPairKey kpk; + kpk.A=i; + kpk.B=j; + kerning_map[kpk]=kern; + } + } + } + } + + unlock(); + //clear existing stuff + + ERR_FAIL_COND(!valid); +} + +Ref<DynamicFontAtSize> DynamicFontData::_get_dynamic_font_at_size(int p_size) { + + ERR_FAIL_COND_V(!valid,Ref<DynamicFontAtSize>()); + + if (size_cache.has(p_size)) { + return Ref<DynamicFontAtSize>( size_cache[p_size] ); + } + + + Ref<DynamicFontAtSize> dfas; + dfas.instance(); + + dfas->font=Ref<DynamicFontData>( this ); + + size_cache[p_size]=dfas.ptr(); + + dfas->size=p_size; + + lock(); + + dfas->scale = stbtt_ScaleForPixelHeight(&info, p_size); + + unlock(); + + return dfas; + +} + +DynamicFontData::DynamicFontData() +{ + last_data_ptr=NULL; + valid=false; +} + +DynamicFontData::~DynamicFontData() +{ + +} + + + +//////////////////// + +float DynamicFontAtSize::get_height() const { + + return (font->ascent+font->descent)*scale; +} + +float DynamicFontAtSize::get_ascent() const { + + return font->ascent*scale; +} +float DynamicFontAtSize::get_descent() const { + + return font->descent*scale; +} + +Size2 DynamicFontAtSize::get_char_size(CharType p_char,CharType p_next) const { + + const_cast<DynamicFontAtSize*>(this)->_update_char(p_char); + + const Character *c = char_map.getptr(p_char); + ERR_FAIL_COND_V(!c,Size2()); + + Size2 ret( c->advance, get_height()); + + if (p_next) { + DynamicFontData::KerningPairKey kpk; + kpk.A=p_char; + kpk.B=p_next; + + const Map<DynamicFontData::KerningPairKey,int>::Element *K=font->kerning_map.find(kpk); + if (K) { + ret.x+=K->get()*scale; + } + + } + + return ret; +} + + +float DynamicFontAtSize::draw_char(RID p_canvas_item, const Point2& p_pos, const CharType& p_char,const CharType& p_next,const Color& p_modulate) const { + + const_cast<DynamicFontAtSize*>(this)->_update_char(p_char); + + const Character * c = char_map.getptr(p_char); + + if (!c) { + return 0; + } + + Point2 cpos=p_pos; + cpos.x+=c->h_align; + cpos.y-=get_ascent(); + cpos.y+=c->v_align; + ERR_FAIL_COND_V( c->texture_idx<-1 || c->texture_idx>=textures.size(),0); + if (c->texture_idx!=-1) + VisualServer::get_singleton()->canvas_item_add_texture_rect_region( p_canvas_item, Rect2( cpos, c->rect.size ), textures[c->texture_idx].texture->get_rid(),c->rect, p_modulate ); + + //textures[c->texture_idx].texture->draw(p_canvas_item,Vector2()); + + float ret = c->advance; + if (p_next) { + DynamicFontData::KerningPairKey kpk; + kpk.A=p_char; + kpk.B=p_next; + + const Map<DynamicFontData::KerningPairKey,int>::Element *K=font->kerning_map.find(kpk); + if (K) { + ret+=K->get()*scale; + } + + } + + return ret; +} + + +void DynamicFontAtSize::_update_char(CharType p_char) { + + if (char_map.has(p_char)) + return; + + font->lock(); + + + int w,h,xofs,yofs; + unsigned char * cpbitmap = stbtt_GetCodepointBitmap(&font->info, scale, scale, p_char, &w, &h, &xofs, &yofs ); + + if (!cpbitmap) { + //no glyph + + int advance; + stbtt_GetCodepointHMetrics(&font->info, p_char, &advance, 0); + //print_line("char has no bitmap: "+itos(p_char)+" but advance is "+itos(advance*scale)); + Character ch; + ch.texture_idx=-1; + ch.advance=advance*scale; + ch.h_align=0; + ch.v_align=0; + + char_map[p_char]=ch; + + font->unlock(); + + return; + } + + int mw=w+rect_margin*2; + int mh=h+rect_margin*2; + + if (mw>4096 || mh>4096) { + + stbtt_FreeBitmap(cpbitmap,NULL); + font->unlock(); + ERR_FAIL_COND(mw>4096); + ERR_FAIL_COND(mh>4096); + } + + //find a texture to fit this... + + int tex_index=-1; + int tex_x=0; + int tex_y=0; + + for(int i=0;i<textures.size();i++) { + + CharTexture &ct=textures[i]; + + if (mw > ct.texture_size || mh > ct.texture_size) //too big for this texture + continue; + + tex_y=0x7FFFFFFF; + tex_x=0; + + for(int j=0;j<ct.texture_size-mw;j++) { + + int max_y=0; + + for(int k=j;k<j+mw;k++) { + + int y = ct.offsets[k]; + if (y>max_y) + max_y=y; + } + + if (max_y<tex_y) { + tex_y=max_y; + tex_x=j; + } + } + + if (tex_y==0x7FFFFFFF || tex_y+mh > ct.texture_size) + continue; //fail, could not fit it here + + tex_index=i; + break; + } + +// print_line("CHAR: "+String::chr(p_char)+" TEX INDEX: "+itos(tex_index)+" X: "+itos(tex_x)+" Y: "+itos(tex_y)); + + if (tex_index==-1) { + //could not find texture to fit, create one + tex_x = 0; + tex_y = 0; + + int texsize = MAX(size*8,256); + if (mw>texsize) + texsize=mw; //special case, adapt to it? + if (mh>texsize) + texsize=mh; //special case, adapt to it? + + texsize=nearest_power_of_2(texsize); + + texsize=MIN(texsize,4096); + + + CharTexture tex; + tex.texture_size=texsize; + tex.imgdata.resize(texsize*texsize*2); //grayscale alpha + + { + //zero texture + DVector<uint8_t>::Write w = tex.imgdata.write(); + ERR_FAIL_COND(texsize*texsize*2 > tex.imgdata.size()); + for(int i=0;i<texsize*texsize*2;i++) { + w[i]=0; + } + } + tex.offsets.resize(texsize); + for(int i=0;i<texsize;i++) //zero offsets + tex.offsets[i]=0; + + textures.push_back(tex); + tex_index=textures.size()-1; + + } + + + //fit character in char texture + + CharTexture &tex=textures[tex_index]; + + { + DVector<uint8_t>::Write wr = tex.imgdata.write(); + + for(int i=0;i<h;i++) { + for(int j=0;j<w;j++) { + + int ofs = ( (i+tex_y+rect_margin)*tex.texture_size+j+tex_x+rect_margin)*2; + ERR_FAIL_COND(ofs >= tex.imgdata.size()); + wr[ofs+0]=255; //grayscale as 1 + wr[ofs+1]=cpbitmap[i*w+j]; //alpha as 0 + } + } + } + + //blit to image and texture + { + + Image img(tex.texture_size,tex.texture_size,0,Image::FORMAT_GRAYSCALE_ALPHA,tex.imgdata); + + if (tex.texture.is_null()) { + tex.texture.instance(); + tex.texture->create_from_image(img,Texture::FLAG_FILTER); + } else { + tex.texture->set_data(img); //update + } + + } + + + // update height array + + for(int k=tex_x;k<tex_x+mw;k++) { + + tex.offsets[k]=tex_y+mh; + } + + int advance; + stbtt_GetCodepointHMetrics(&font->info, p_char, &advance, 0); + + Character chr; + chr.h_align=xofs; + chr.v_align=yofs + get_ascent(); + chr.advance=advance*scale; + chr.texture_idx=tex_index; + + + chr.rect=Rect2(tex_x+rect_margin,tex_y+rect_margin,w,h); + + //print_line("CHAR: "+String::chr(p_char)+" TEX INDEX: "+itos(tex_index)+" RECT: "+chr.rect+" X OFS: "+itos(xofs)+" Y OFS: "+itos(yofs)); + + char_map[p_char]=chr; + + stbtt_FreeBitmap(cpbitmap,NULL); + + font->unlock(); + +} + +DynamicFontAtSize::DynamicFontAtSize() { + + rect_margin=1; +} + +DynamicFontAtSize::~DynamicFontAtSize(){ + + ERR_FAIL_COND(!font.ptr()); + font->size_cache.erase(size); +} + +///////////////////////// + + +void DynamicFont::_bind_methods() { + + ObjectTypeDB::bind_method(_MD("set_font_data","data:DynamicFontData"),&DynamicFont::set_font_data); + ObjectTypeDB::bind_method(_MD("get_font_data:DynamicFontData"),&DynamicFont::get_font_data); + + ObjectTypeDB::bind_method(_MD("set_size","data"),&DynamicFont::set_size); + ObjectTypeDB::bind_method(_MD("get_size"),&DynamicFont::get_size); + + ADD_PROPERTY(PropertyInfo(Variant::INT,"size"),_SCS("set_size"),_SCS("get_size")); + ADD_PROPERTY(PropertyInfo(Variant::OBJECT,"font",PROPERTY_HINT_RESOURCE_TYPE,"DynamicFontData"),_SCS("set_font_data"),_SCS("get_font_data")); +} + + +void DynamicFont::set_font_data(const Ref<DynamicFontData>& p_data) { + + data=p_data; + data_at_size=data->_get_dynamic_font_at_size(size); +} + +Ref<DynamicFontData> DynamicFont::get_font_data() const{ + + return data; +} + +void DynamicFont::set_size(int p_size){ + + if (size==p_size) + return; + size=p_size; + ERR_FAIL_COND(p_size<1); + if (!data.is_valid()) + return; + data_at_size=data->_get_dynamic_font_at_size(size); + +} +int DynamicFont::get_size() const{ + + return size; +} + +float DynamicFont::get_height() const{ + + if (!data_at_size.is_valid()) + return 1; + + return data_at_size->get_height(); +} + +float DynamicFont::get_ascent() const{ + + if (!data_at_size.is_valid()) + return 1; + + return data_at_size->get_ascent(); +} + +float DynamicFont::get_descent() const{ + + if (!data_at_size.is_valid()) + return 1; + + return data_at_size->get_descent(); + +} + +Size2 DynamicFont::get_char_size(CharType p_char,CharType p_next) const{ + + if (!data_at_size.is_valid()) + return Size2(1,1); + + return data_at_size->get_char_size(p_char,p_next); + +} + +bool DynamicFont::is_distance_field_hint() const{ + + return false; +} + +float DynamicFont::draw_char(RID p_canvas_item, const Point2& p_pos, const CharType& p_char,const CharType& p_next,const Color& p_modulate) const { + + if (!data_at_size.is_valid()) + return 0; + + return data_at_size->draw_char(p_canvas_item,p_pos,p_char,p_next,p_modulate); + +} + +DynamicFont::DynamicFont() { + + size=16; +} + +DynamicFont::~DynamicFont() { + +} + +///////////////////////// + + +RES ResourceFormatLoaderDynamicFont::load(const String &p_path, const String& p_original_path, Error *r_error) { + + if (r_error) + *r_error=ERR_FILE_CANT_OPEN; + + + FileAccess *f = FileAccess::open(p_path,FileAccess::READ); + ERR_FAIL_COND_V(!f,RES()); + + DVector<uint8_t> data; + + data.resize(f->get_len()); + + ERR_FAIL_COND_V(data.size()==0,RES()); + + { + DVector<uint8_t>::Write w = data.write(); + f->get_buffer(w.ptr(),data.size()); + } + + Ref<DynamicFontData> dfd; + dfd.instance(); + dfd->set_font_data(data); + + if (r_error) + *r_error=OK; + + return dfd; +} + +void ResourceFormatLoaderDynamicFont::get_recognized_extensions(List<String> *p_extensions) const { + + p_extensions->push_back("ttf"); +} + +bool ResourceFormatLoaderDynamicFont::handles_type(const String& p_type) const { + + return (p_type=="DynamicFontData"); +} + +String ResourceFormatLoaderDynamicFont::get_resource_type(const String &p_path) const { + + String el = p_path.extension().to_lower(); + if (el=="ttf") + return "DynamicFontData"; + return ""; +} + +#endif diff --git a/scene/resources/dynamic_font_stb.h b/scene/resources/dynamic_font_stb.h new file mode 100644 index 0000000000..6b72fb3703 --- /dev/null +++ b/scene/resources/dynamic_font_stb.h @@ -0,0 +1,178 @@ +#ifndef DYNAMICFONT_STB_H +#define DYNAMICFONT_STB_H + +#ifndef FREETYPE_ENABLED + +#include "font.h" +#include "stb_truetype.h" +#include "io/resource_loader.h" + + + +class DynamicFontAtSize; +class DynamicFont; + +class DynamicFontData : public Resource { + + OBJ_TYPE(DynamicFontData,Resource); + + bool valid; + + DVector<uint8_t> font_data; + DVector<uint8_t>::Read fr; + const uint8_t* last_data_ptr; + + struct KerningPairKey { + + union { + struct { + uint32_t A,B; + }; + + uint64_t pair; + }; + + _FORCE_INLINE_ bool operator<(const KerningPairKey& p_r) const { return pair<p_r.pair; } + }; + + Map<KerningPairKey,int> kerning_map; + + + Map<int,DynamicFontAtSize*> size_cache; + +friend class DynamicFontAtSize; + + stbtt_fontinfo info; + int ascent; + int descent; + int linegap; + + void lock(); + void unlock(); + +friend class DynamicFont; + + + Ref<DynamicFontAtSize> _get_dynamic_font_at_size(int p_size); +public: + + void set_font_data(const DVector<uint8_t>& p_font); + DynamicFontData(); + ~DynamicFontData(); +}; + + +class DynamicFontAtSize : public Reference { + + OBJ_TYPE(DynamicFontAtSize,Reference); + + + int rect_margin; + + struct CharTexture { + + DVector<uint8_t> imgdata; + int texture_size; + Vector<int> offsets; + Ref<ImageTexture> texture; + }; + + Vector<CharTexture> textures; + + struct Character { + + int texture_idx; + Rect2 rect; + float v_align; + float h_align; + float advance; + + Character() { texture_idx=0; v_align=0; } + }; + + + + HashMap< CharType, Character > char_map; + + _FORCE_INLINE_ void _update_char(CharType p_char); + +friend class DynamicFontData; + Ref<DynamicFontData> font; + float scale; + int size; + +protected: + +public: + + float get_height() const; + + float get_ascent() const; + float get_descent() const; + + Size2 get_char_size(CharType p_char,CharType p_next=0) const; + + float draw_char(RID p_canvas_item, const Point2& p_pos, const CharType& p_char,const CharType& p_next=0,const Color& p_modulate=Color(1,1,1)) const; + + + + DynamicFontAtSize(); + ~DynamicFontAtSize(); +}; + +/////////////// + +class DynamicFont : public Font { + + OBJ_TYPE( DynamicFont, Font ); + + Ref<DynamicFontData> data; + Ref<DynamicFontAtSize> data_at_size; + int size; + + +protected: + + static void _bind_methods(); + +public: + + void set_font_data(const Ref<DynamicFontData>& p_data); + Ref<DynamicFontData> get_font_data() const; + + void set_size(int p_size); + int get_size() const; + + virtual float get_height() const; + + virtual float get_ascent() const; + virtual float get_descent() const; + + virtual Size2 get_char_size(CharType p_char,CharType p_next=0) const; + + virtual bool is_distance_field_hint() const; + + virtual float draw_char(RID p_canvas_item, const Point2& p_pos, const CharType& p_char,const CharType& p_next=0,const Color& p_modulate=Color(1,1,1)) const; + + DynamicFont(); + ~DynamicFont(); + +}; + + + +///////////// + +class ResourceFormatLoaderDynamicFont : public ResourceFormatLoader { +public: + + virtual RES load(const String &p_path,const String& p_original_path="",Error *r_error=NULL); + virtual void get_recognized_extensions(List<String> *p_extensions) const; + virtual bool handles_type(const String& p_type) const; + virtual String get_resource_type(const String &p_path) const; + +}; + + +#endif +#endif // DYNAMICFONT_H diff --git a/tools/SCsub b/tools/SCsub index 2210538a25..7a0feb6e3d 100644 --- a/tools/SCsub +++ b/tools/SCsub @@ -58,7 +58,41 @@ def make_translations_header(target,source,env): g.write("#endif") +def make_fonts_header(target,source,env): + + dst = target[0].srcnode().abspath + + g = open(dst,"wb") + + + """" + """ + + g.write("/* THIS FILE IS GENERATED DO NOT EDIT */\n") + g.write("#ifndef _EDITOR_FONTS_H\n") + g.write("#define _EDITOR_FONTS_H\n") + + #saving uncompressed, since freetype will reference from memory pointer + xl_names=[] + for i in range(len(source)): + print("Appending font: "+source[i].srcnode().abspath) + f = open(source[i].srcnode().abspath,"rb") + buf = f.read() + import os.path + + name = os.path.splitext(os.path.basename(source[i].srcnode().abspath))[0] + + g.write("static const int _font_"+name+"_size="+str(len(buf))+";\n") + g.write("static const unsigned char _font_"+name+"[]={\n") + for i in range(len(buf)): + g.write(str(ord(buf[i]))+",\n") + + g.write("};\n") + + g.write("#endif") + + if (env["tools"]!="no"): import glob @@ -70,11 +104,18 @@ if (env["tools"]!="no"): env.Depends('#tools/editor/translations.h',tlist) env.Command('#tools/editor/translations.h',tlist,make_translations_header) + flist = glob.glob(dir + "/editor_fonts/*.ttf") + flist.append( glob.glob(dir + "/editor_fonts/*.otf") ) + + print("fonts: ",flist) + env.Depends('#tools/editor/builtin_fonts.h',flist) + env.Command('#tools/editor/builtin_fonts.h',flist,make_fonts_header) + SConscript('editor/SCsub'); #SConscript('scintilla/SCsub'); SConscript('collada/SCsub'); SConscript('docdump/SCsub'); - SConscript('freetype/SCsub'); + #SConscript('freetype/SCsub'); SConscript('doc/SCsub') SConscript('pck/SCsub') diff --git a/tools/doc/doc_data.h b/tools/doc/doc_data.h index 877f30defb..d1aebff4ce 100644 --- a/tools/doc/doc_data.h +++ b/tools/doc/doc_data.h @@ -50,6 +50,9 @@ public: String qualifiers; String description; Vector<ArgumentDoc> arguments; + bool operator<(const MethodDoc& p_md) const { + return name<p_md.name; + } }; struct ConstantDoc { diff --git a/tools/editor/code_editor.cpp b/tools/editor/code_editor.cpp index c92b40628c..a9e31a6561 100644 --- a/tools/editor/code_editor.cpp +++ b/tools/editor/code_editor.cpp @@ -30,6 +30,7 @@ #include "editor_settings.h" #include "scene/gui/margin_container.h" #include "scene/gui/separator.h" +#include "os/keyboard.h" void GotoLineDialog::popup_find_line(TextEdit *p_edit) { @@ -76,6 +77,436 @@ GotoLineDialog::GotoLineDialog() { } +void FindReplaceBar::_notification(int p_what) { + + if (p_what == NOTIFICATION_READY) { + + find_prev->set_icon(get_icon("MoveUp", "EditorIcons")); + find_next->set_icon(get_icon("MoveDown", "EditorIcons")); + hide_button->set_normal_texture(get_icon("Close","EditorIcons")); + hide_button->set_hover_texture(get_icon("CloseHover","EditorIcons")); + hide_button->set_pressed_texture(get_icon("Close","EditorIcons")); + + } else if (p_what == NOTIFICATION_VISIBILITY_CHANGED) { + + set_process_unhandled_input(is_visible()); + } +} + +void FindReplaceBar::_unhandled_input(const InputEvent &p_event) { + + if (p_event.type == InputEvent::KEY) { + + const InputEventKey& k = p_event.key; + + if (k.pressed && (text_edit->has_focus() || text_vbc->is_a_parent_of(get_focus_owner()))) { + + bool accepted = true; + + switch (k.scancode) { + + case KEY_ESCAPE: { + + _hide_bar(); + } break; + default: { + + accepted = false; + } break; + } + + if (accepted) { + accept_event(); + } + } + } +} + +bool FindReplaceBar::_search(bool p_include_current, bool p_backwards) { + + String text=get_search_text(); + uint32_t flags=0; + + if (is_whole_words()) + flags|=TextEdit::SEARCH_WHOLE_WORDS; + if (is_case_sensitive()) + flags|=TextEdit::SEARCH_MATCH_CASE; + if (p_backwards) + flags|=TextEdit::SEARCH_BACKWARDS; + + int line=text_edit->cursor_get_line(); + int col=text_edit->cursor_get_column(); + + if (text_edit->is_selection_active() && !replace_all_mode) { + line = text_edit->get_selection_from_line(); + col = text_edit->get_selection_from_column(); + } + + bool cursor_at_result=false; + + if (line==current_result_line && col>=current_result_col && col<=current_result_col+text.length()) { + col=current_result_col; + cursor_at_result=true; + } + + if (!p_include_current) { + if (p_backwards) { + col-=text.length(); + if (col<0) { + line-=1; + if (line<0) + line=text_edit->get_line_count()-1; + col=text_edit->get_line(line).length(); + } + } else if (cursor_at_result) { + col+=text.length(); + if (col>text_edit->get_line(line).length()) { + line+=1; + if (line>=text_edit->get_line_count()) + line=0; + col=0; + } + } + } + + bool found = text_edit->search(text,flags,line,col,line,col); + + if (!found) { + if (p_backwards) { + line = text_edit->get_line_count()-1; + col = text_edit->get_line(line).length()-1; + } else { + line = 0; + col = 0; + } + + found = text_edit->search(text,flags,line,col,line,col); + } + + if (found) { + text_edit->cursor_set_line(line); + text_edit->cursor_set_column(p_backwards?col:col+text.length()); + text_edit->select(line,col,line,col+text.length()); + text_edit->set_search_text(text); + text_edit->set_search_flags(flags); + text_edit->set_current_search_result(line,col); + + current_result_line = line; + current_result_col = col; + + set_error(""); + } else { + current_result_line = -1; + current_result_col = -1; + text_edit->set_search_text(""); + set_error(text.empty()?"":TTR("No Matches")); + } + + return found; +} + +void FindReplaceBar::_replace() { + + if (text_edit->get_selection_text()==get_search_text()) { + text_edit->insert_text_at_cursor(get_replace_text()); + } + + search_current(); +} + +void FindReplaceBar::_replace_all() { + + // line as x so it gets priority in comparison, column as y + Point2i orig_cursor(text_edit->cursor_get_line(),text_edit->cursor_get_column()); + Point2i prev_match=Point2(-1,-1); + + bool selection_enabled = text_edit->is_selection_active(); + Point2i selection_begin,selection_end; + if (selection_enabled) { + selection_begin=Point2i(text_edit->get_selection_from_line(),text_edit->get_selection_from_column()); + selection_end=Point2i(text_edit->get_selection_to_line(),text_edit->get_selection_to_column()); + } + + int vsval = text_edit->get_v_scroll(); + + text_edit->cursor_set_line(0); + text_edit->cursor_set_column(0); + + int rc=0; + + replace_all_mode = true; + + text_edit->begin_complex_operation(); + + while(_search(false)) { + + if (!text_edit->is_selection_active()) { + // search selects + break; + } + + // replace area + Point2i match_from(text_edit->get_selection_from_line(),text_edit->get_selection_from_column()); + Point2i match_to(text_edit->get_selection_to_line(),text_edit->get_selection_to_column()); + + if (match_from < prev_match) + break; // done + + prev_match=match_to; + + if (selection_enabled && is_selection_only()) { + + if (match_from<selection_begin || match_to>selection_end) + continue; + + // replace but adjust selection bounds + text_edit->insert_text_at_cursor(get_replace_text()); + if (match_to.x==selection_end.x) + selection_end.y+=get_replace_text().length() - get_search_text().length(); + } else { + //just replace + text_edit->insert_text_at_cursor(get_replace_text()); + } + + rc++; + } + + text_edit->end_complex_operation(); + + replace_all_mode = false; + + // restore editor state (selection, cursor, scroll) + text_edit->cursor_set_line(orig_cursor.x); + text_edit->cursor_set_column(orig_cursor.y); + + if (selection_enabled && is_selection_only()) { + // reselect + text_edit->select(selection_begin.x,selection_begin.y,selection_end.x,selection_end.y); + } else { + text_edit->deselect(); + } + + text_edit->set_v_scroll(vsval); + set_error(vformat(TTR("Replaced %d Ocurrence(s)."), rc)); +} + +void FindReplaceBar::search_current() { + + _search(true); +} + +void FindReplaceBar::search_prev() { + + _search(false, true); +} + +void FindReplaceBar::search_next() { + + _search(); +} + +void FindReplaceBar::_hide_bar() { + + text_edit->set_search_text(""); + current_result_line = -1; + current_result_col = -1; + replace_hbc->hide(); + replace_options_hbc->hide(); + hide(); +} + +void FindReplaceBar::_show_search() { + + show(); + search_text->grab_focus(); + + if (text_edit->is_selection_active()) { + search_text->set_text(text_edit->get_selection_text()); + } + + if (!get_search_text().empty()) { + search_text->select_all(); + search_text->set_cursor_pos(search_text->get_text().length()); + search_current(); + } +} + +void FindReplaceBar::popup_search() { + + replace_hbc->hide(); + replace_options_hbc->hide(); + _show_search(); +} + +void FindReplaceBar::popup_replace() { + + if (!replace_hbc->is_visible() || !replace_options_hbc->is_visible()) { + replace_text->clear(); + replace_hbc->show(); + replace_options_hbc->show(); + } + + _show_search(); +} + +void FindReplaceBar::_search_options_changed(bool p_pressed) { + + search_current(); +} + +void FindReplaceBar::_search_text_changed(const String& p_text) { + + search_current(); +} + +void FindReplaceBar::_search_text_entered(const String& p_text) { + + search_next(); +} + +String FindReplaceBar::get_search_text() const { + + return search_text->get_text(); +} + +String FindReplaceBar::get_replace_text() const { + + return replace_text->get_text(); +} + +bool FindReplaceBar::is_case_sensitive() const { + + return case_sensitive->is_pressed(); +} + +bool FindReplaceBar::is_whole_words() const { + + return whole_words->is_pressed(); +} + +bool FindReplaceBar::is_selection_only() const { + + return selection_only->is_pressed(); +} + +void FindReplaceBar::set_error(const String &p_label) { + + error_label->set_text(p_label); +} + +void FindReplaceBar::set_text_edit(TextEdit *p_text_edit) { + + text_edit = p_text_edit; + text_edit->connect("_text_changed",this,"_search_text_changed",varray(String())); +} + +void FindReplaceBar::_bind_methods() { + + ObjectTypeDB::bind_method("_unhandled_input",&FindReplaceBar::_unhandled_input); + + ObjectTypeDB::bind_method("_search_text_changed",&FindReplaceBar::_search_text_changed); + ObjectTypeDB::bind_method("_search_text_entered",&FindReplaceBar::_search_text_entered); + ObjectTypeDB::bind_method("_search_current",&FindReplaceBar::search_current); + ObjectTypeDB::bind_method("_search_next",&FindReplaceBar::search_next); + ObjectTypeDB::bind_method("_search_prev",&FindReplaceBar::search_prev); + ObjectTypeDB::bind_method("_replace_pressed",&FindReplaceBar::_replace); + ObjectTypeDB::bind_method("_replace_all_pressed",&FindReplaceBar::_replace_all); + ObjectTypeDB::bind_method("_search_options_changed",&FindReplaceBar::_search_options_changed); + ObjectTypeDB::bind_method("_hide_pressed",&FindReplaceBar::_hide_bar); + + ADD_SIGNAL(MethodInfo("search")); +} + +FindReplaceBar::FindReplaceBar() { + + text_vbc = memnew(VBoxContainer); + add_child(text_vbc); + + HBoxContainer *search_hbc = memnew(HBoxContainer); + text_vbc->add_child(search_hbc); + + search_text = memnew(LineEdit); + search_hbc->add_child(search_text); + search_text->set_custom_minimum_size(Size2(200, 0)); + search_text->connect("text_changed",this,"_search_text_changed"); + search_text->connect("text_entered",this,"_search_text_entered"); + + find_prev = memnew(ToolButton); + search_hbc->add_child(find_prev); + find_prev->set_focus_mode(FOCUS_NONE); + find_prev->connect("pressed",this,"_search_prev"); + + find_next = memnew(ToolButton); + search_hbc->add_child(find_next); + find_next->set_focus_mode(FOCUS_NONE); + find_next->connect("pressed",this,"_search_next"); + + replace_hbc = memnew(HBoxContainer); + text_vbc->add_child(replace_hbc); + replace_hbc->hide(); + + replace_text = memnew(LineEdit); + replace_hbc->add_child(replace_text); + replace_text->set_custom_minimum_size(Size2(200, 0)); + replace_text->connect("text_entered",this,"_search_text_entered"); + + replace = memnew(ToolButton); + replace_hbc->add_child(replace); + replace->set_text(TTR("Replace")); + replace->set_focus_mode(FOCUS_NONE); + replace->connect("pressed",this,"_replace_pressed"); + + replace_all = memnew(ToolButton); + replace_hbc->add_child(replace_all); + replace_all->set_text(TTR("Replace All")); + replace_all->set_focus_mode(FOCUS_NONE); + replace_all->connect("pressed",this,"_replace_all_pressed"); + + Control *spacer_split = memnew( Control ); + spacer_split->set_custom_minimum_size(Size2(0, 1)); + text_vbc->add_child(spacer_split); + + VBoxContainer *options_vbc = memnew(VBoxContainer); + add_child(options_vbc); + options_vbc->set_h_size_flags(SIZE_EXPAND_FILL); + + HBoxContainer *search_options = memnew(HBoxContainer); + options_vbc->add_child(search_options); + + case_sensitive = memnew(CheckBox); + search_options->add_child(case_sensitive); + case_sensitive->set_text(TTR("Match Case")); + case_sensitive->set_focus_mode(FOCUS_NONE); + case_sensitive->connect("toggled",this,"_search_options_changed"); + + whole_words = memnew(CheckBox); + search_options->add_child(whole_words); + whole_words->set_text(TTR("Whole Words")); + whole_words->set_focus_mode(FOCUS_NONE); + whole_words->connect("toggled",this,"_search_options_changed"); + + error_label = memnew(Label); + search_options->add_child(error_label); + + search_options->add_spacer(); + + hide_button = memnew(TextureButton); + search_options->add_child(hide_button); + hide_button->set_focus_mode(FOCUS_NONE); + hide_button->connect("pressed",this,"_hide_pressed"); + + replace_options_hbc = memnew(HBoxContainer); + options_vbc->add_child(replace_options_hbc); + replace_options_hbc->hide(); + + selection_only = memnew(CheckBox); + replace_options_hbc->add_child(selection_only); + selection_only->set_text(TTR("Selection Only")); + selection_only->set_focus_mode(FOCUS_NONE); + selection_only->connect("toggled",this,"_search_options_changed"); +} + + void FindReplaceDialog::popup_search() { set_title(TTR("Search")); @@ -544,7 +975,7 @@ void CodeTextEditor::set_error(const String& p_error) { } -void CodeTextEditor::_on_settings_change() { +void CodeTextEditor::_update_font() { // FONTS String editor_font = EDITOR_DEF("text_editor/font", ""); @@ -557,7 +988,12 @@ void CodeTextEditor::_on_settings_change() { } } if(!font_overrode) - text_editor->add_font_override("font",get_font("source","Fonts")); + text_editor->add_font_override("font",get_font("source","EditorFonts")); +} + +void CodeTextEditor::_on_settings_change() { + + _update_font(); // AUTO BRACE COMPLETION text_editor->set_auto_brace_completion( @@ -588,6 +1024,9 @@ void CodeTextEditor::_notification(int p_what) { if (p_what==EditorSettings::NOTIFICATION_EDITOR_SETTINGS_CHANGED) _load_theme_settings(); + if (p_what==NOTIFICATION_ENTER_TREE) { + _update_font(); + } } void CodeTextEditor::_bind_methods() { @@ -602,35 +1041,32 @@ void CodeTextEditor::_bind_methods() { CodeTextEditor::CodeTextEditor() { + find_replace_bar = memnew( FindReplaceBar ); + add_child(find_replace_bar); + find_replace_bar->set_h_size_flags(SIZE_EXPAND_FILL); + find_replace_bar->hide(); + text_editor = memnew( TextEdit ); add_child(text_editor); - text_editor->set_area_as_parent_rect(); - text_editor->set_margin(MARGIN_BOTTOM,20); + text_editor->set_v_size_flags(SIZE_EXPAND_FILL); - String editor_font = EDITOR_DEF("text_editor/font", ""); - bool font_overrode = false; - if (editor_font!="") { - Ref<Font> fnt = ResourceLoader::load(editor_font); - if (fnt.is_valid()) { - text_editor->add_font_override("font",fnt); - font_overrode = true; - } - } - - if (!font_overrode) - text_editor->add_font_override("font",get_font("source","Fonts")); + find_replace_bar->set_text_edit(text_editor); text_editor->set_show_line_numbers(true); text_editor->set_brace_matching(true); text_editor->set_auto_indent(true); - line_col = memnew( Label ); - add_child(line_col); - line_col->set_anchor_and_margin(MARGIN_LEFT,ANCHOR_END,135); - line_col->set_anchor_and_margin(MARGIN_TOP,ANCHOR_END,15); - line_col->set_anchor_and_margin(MARGIN_BOTTOM,ANCHOR_END,1); - line_col->set_anchor_and_margin(MARGIN_RIGHT,ANCHOR_END,5); - //line_col->set_align(Label::ALIGN_RIGHT); + MarginContainer *status_mc = memnew( MarginContainer ); + add_child(status_mc); + status_mc->set("custom_constants/margin_left", 2); + status_mc->set("custom_constants/margin_top", 5); + status_mc->set("custom_constants/margin_right", 2); + status_mc->set("custom_constants/margin_bottom", 1); + + HBoxContainer *status_bar = memnew( HBoxContainer ); + status_mc->add_child(status_bar); + status_bar->set_h_size_flags(SIZE_EXPAND_FILL); + idle = memnew( Timer ); add_child(idle); idle->set_one_shot(true); @@ -644,14 +1080,16 @@ CodeTextEditor::CodeTextEditor() { code_complete_timer->set_wait_time(EDITOR_DEF("text_editor/code_complete_delay",.3f)); error = memnew( Label ); - add_child(error); - error->set_anchor_and_margin(MARGIN_LEFT,ANCHOR_BEGIN,5); - error->set_anchor_and_margin(MARGIN_TOP,ANCHOR_END,15); - error->set_anchor_and_margin(MARGIN_BOTTOM,ANCHOR_END,1); - error->set_anchor_and_margin(MARGIN_RIGHT,ANCHOR_END,130); + status_bar->add_child(error); error->hide(); + error->set_valign(Label::VALIGN_CENTER); error->add_color_override("font_color",Color(1,0.7,0.6,0.9)); + status_bar->add_spacer(); + + line_col = memnew( Label ); + status_bar->add_child(line_col); + line_col->set_valign(Label::VALIGN_CENTER); text_editor->connect("cursor_changed", this,"_line_col_changed"); diff --git a/tools/editor/code_editor.h b/tools/editor/code_editor.h index e28517c601..52a36c979d 100644 --- a/tools/editor/code_editor.h +++ b/tools/editor/code_editor.h @@ -33,7 +33,9 @@ #include "scene/gui/text_edit.h" #include "scene/gui/dialogs.h" #include "scene/main/timer.h" +#include "scene/gui/tool_button.h" #include "scene/gui/check_button.h" +#include "scene/gui/check_box.h" #include "scene/gui/line_edit.h" @@ -58,8 +60,71 @@ public: GotoLineDialog(); }; +class FindReplaceBar : public HBoxContainer { + OBJ_TYPE(FindReplaceBar,HBoxContainer); + LineEdit *search_text; + ToolButton *find_prev; + ToolButton *find_next; + CheckBox *case_sensitive; + CheckBox *whole_words; + Label *error_label; + TextureButton *hide_button; + + LineEdit *replace_text; + ToolButton *replace; + ToolButton *replace_all; + CheckBox *selection_only; + + VBoxContainer *text_vbc; + HBoxContainer *replace_hbc; + HBoxContainer *replace_options_hbc; + + TextEdit *text_edit; + + int current_result_line; + int current_result_col; + + bool replace_all_mode; + + void _show_search(); + void _hide_bar(); + void _search_options_changed(bool p_pressed); + void _search_text_changed(const String& p_text); + void _search_text_entered(const String& p_text); + +protected: + void _notification(int p_what); + void _unhandled_input(const InputEvent &p_event); + + bool _search(bool p_include_current=false, bool p_backwards=false); + + void _replace(); + void _replace_all(); + + static void _bind_methods(); + +public: + String get_search_text() const; + String get_replace_text() const; + + bool is_case_sensitive() const; + bool is_whole_words() const; + bool is_selection_only() const; + void set_error(const String& p_label); + + void set_text_edit(TextEdit *p_text_edit); + + void popup_search(); + void popup_replace(); + + void search_current(); + void search_prev(); + void search_next(); + + FindReplaceBar(); +}; class FindReplaceDialog : public ConfirmationDialog { @@ -119,11 +184,12 @@ public: }; -class CodeTextEditor : public Control { +class CodeTextEditor : public VBoxContainer { - OBJ_TYPE(CodeTextEditor,Control); + OBJ_TYPE(CodeTextEditor,VBoxContainer); TextEdit *text_editor; + FindReplaceBar *find_replace_bar; Label *line_col; Label *info; @@ -135,6 +201,7 @@ class CodeTextEditor : public Control { void _on_settings_change(); + void _update_font(); void _complete_request(); protected: @@ -157,6 +224,7 @@ protected: public: TextEdit *get_text_edit() { return text_editor; } + FindReplaceBar *get_find_replace_bar() { return find_replace_bar; } virtual void apply_code() {} CodeTextEditor(); diff --git a/tools/editor/dependency_editor.cpp b/tools/editor/dependency_editor.cpp index 633a414b07..a702d3c687 100644 --- a/tools/editor/dependency_editor.cpp +++ b/tools/editor/dependency_editor.cpp @@ -240,8 +240,8 @@ DependencyEditor::DependencyEditor() { tree = memnew( Tree ); tree->set_columns(2); tree->set_column_titles_visible(true); - tree->set_column_title(0,"Resource"); - tree->set_column_title(1,"Path"); + tree->set_column_title(0,TTR("Resource")); + tree->set_column_title(1,TTR("Path")); tree->set_hide_root(true); tree->connect("button_pressed",this,"_load_pressed"); @@ -401,7 +401,7 @@ void DependencyRemoveDialog::show(const Vector<String> &to_erase) { if (exist) { owners->show(); - text->set_text("The files being removed are required by other resources in order for them to work.\nRemove them anyway? (no undo)"); + text->set_text(TTR("The files being removed are required by other resources in order for them to work.\nRemove them anyway? (no undo)")); popup_centered_minsize(Size2(500,220)); } else { owners->hide(); @@ -675,7 +675,7 @@ OrphanResourcesDialog::OrphanResourcesDialog(){ files->set_column_min_width(1,100); files->set_column_expand(0,true); files->set_column_expand(1,false); - files->set_column_title(0,"Resource"); + files->set_column_title(0,TTR("Resource")); files->set_column_title(1,TTR("Owns")); files->set_hide_root(true); vbc->add_margin_child(TTR("Resources Without Explicit Ownership:"),files,true); diff --git a/tools/editor/editor_fonts.cpp b/tools/editor/editor_fonts.cpp index a3ec08f986..e04dce294a 100644 --- a/tools/editor/editor_fonts.cpp +++ b/tools/editor/editor_fonts.cpp @@ -30,6 +30,9 @@ #include "doc_font.h" #include "doc_title_font.h" #include "doc_code_font.h" +#include "builtin_fonts.h" +#include "editor_settings.h" +#include "scene/resources/dynamic_font.h" static Ref<BitmapFont> make_font(int p_height,int p_ascent, int p_valign, int p_charcount, const int *p_chars,const Ref<Texture> &p_texture) { @@ -64,12 +67,54 @@ static Ref<BitmapFont> make_font(int p_height,int p_ascent, int p_valign, int p_ void editor_register_fonts(Ref<Theme> p_theme) { + Ref<DynamicFontData> dfd; + dfd.instance(); + dfd->set_font_ptr(_font_droid_sans,_font_droid_sans_size); + dfd->set_force_autohinter(true); //just looks better..i think? - Ref<BitmapFont> doc_font = make_font(_bi_font_doc_font_height,_bi_font_doc_font_ascent,0,_bi_font_doc_font_charcount,_bi_font_doc_font_characters,p_theme->get_icon("DocFont","EditorIcons")); - Ref<BitmapFont> doc_code_font = make_font(_bi_font_doc_code_font_height,_bi_font_doc_code_font_ascent,0,_bi_font_doc_code_font_charcount,_bi_font_doc_code_font_characters,p_theme->get_icon("DocCodeFont","EditorIcons")); - Ref<BitmapFont> doc_title_font = make_font(_bi_font_doc_title_font_height,_bi_font_doc_title_font_ascent,0,_bi_font_doc_title_font_charcount,_bi_font_doc_title_font_characters,p_theme->get_icon("DocTitleFont","EditorIcons")); - p_theme->set_font("doc","EditorFonts",doc_font); - p_theme->set_font("doc_code","EditorFonts",doc_code_font); - p_theme->set_font("doc_title","EditorFonts",doc_title_font); + Ref<DynamicFontData> dfmono; + dfmono.instance(); + dfmono->set_font_ptr(_font_source_code_pro,_font_source_code_pro_size); + //dfd->set_force_autohinter(true); //just looks better..i think? + + Ref<DynamicFont> df; + df.instance(); + df->set_size(int(EditorSettings::get_singleton()->get("global/font_size"))); + df->set_font_data(dfd); + + + p_theme->set_default_theme_font(df); + +// Ref<BitmapFont> doc_font = make_font(_bi_font_doc_font_height,_bi_font_doc_font_ascent,0,_bi_font_doc_font_charcount,_bi_font_doc_font_characters,p_theme->get_icon("DocFont","EditorIcons")); +// Ref<BitmapFont> doc_title_font = make_font(_bi_font_doc_title_font_height,_bi_font_doc_title_font_ascent,0,_bi_font_doc_title_font_charcount,_bi_font_doc_title_font_characters,p_theme->get_icon("DocTitleFont","EditorIcons")); +// Ref<BitmapFont> doc_code_font = make_font(_bi_font_doc_code_font_height,_bi_font_doc_code_font_ascent,0,_bi_font_doc_code_font_charcount,_bi_font_doc_code_font_characters,p_theme->get_icon("DocCodeFont","EditorIcons")); + + Ref<DynamicFont> df_title; + df_title.instance(); + df_title->set_size(int(EDITOR_DEF("help/help_title_font_size",18))); + df_title->set_font_data(dfd); + + Ref<DynamicFont> df_doc; + df_doc.instance(); + df_doc->set_size(int(EDITOR_DEF("help/help_font_size",16))); + df_doc->set_font_data(dfd); + + p_theme->set_font("doc","EditorFonts",df_doc); + p_theme->set_font("doc_title","EditorFonts",df_title); + + + Ref<DynamicFont> df_code; + df_code.instance(); + df_code->set_size(int(EditorSettings::get_singleton()->get("global/source_font_size"))); + df_code->set_font_data(dfmono); + + p_theme->set_font("source","EditorFonts",df_code); + + Ref<DynamicFont> df_doc_code; + df_doc_code.instance(); + df_doc_code->set_size(int(EDITOR_DEF("help/help_source_font_size",14))); + df_doc_code->set_font_data(dfmono); + + p_theme->set_font("doc_source","EditorFonts",df_doc_code); } diff --git a/tools/editor/editor_help.cpp b/tools/editor/editor_help.cpp index 616037c545..b426def503 100644 --- a/tools/editor/editor_help.cpp +++ b/tools/editor/editor_help.cpp @@ -130,6 +130,7 @@ void EditorHelpSearch::_update_search() { else cicon=def_icon; + for(int i=0;i<c.methods.size();i++) { if( (term.begins_with(".") && c.methods[i].name.begins_with(term.right(1))) || (term.ends_with("(") && c.methods[i].name.ends_with(term.left(term.length()-1).strip_edges())) @@ -697,13 +698,13 @@ Error EditorHelp::_goto_desc(const String& p_class,int p_vscr) { //edited_class->show(); - DocData::ClassDoc &cd=doc->class_list[p_class]; + DocData::ClassDoc cd=doc->class_list[p_class]; //make a copy, so we can sort without worrying Color h_color; - Ref<Font> doc_font = get_font("normal","Fonts"); - Ref<Font> doc_code_font = get_font("source","Fonts"); - Ref<Font> doc_title_font = get_font("large","Fonts"); + Ref<Font> doc_font = get_font("doc","EditorFonts"); + Ref<Font> doc_title_font = get_font("doc_title","EditorFonts"); + Ref<Font> doc_code_font = get_font("doc_source","EditorFonts"); h_color=Color(1,1,1,1); @@ -794,7 +795,7 @@ Error EditorHelp::_goto_desc(const String& p_class,int p_vscr) { //class_desc->add_newline(); class_desc->add_newline(); class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/text_color")); - class_desc->push_font( get_font("normal","Fonts") ); + class_desc->push_font( doc_font ); class_desc->push_indent(1); _add_text(cd.brief_description); class_desc->pop(); @@ -805,9 +806,14 @@ Error EditorHelp::_goto_desc(const String& p_class,int p_vscr) { } bool method_descr=false; + bool sort_methods = EditorSettings::get_singleton()->get("help/sort_functions_alphabetically"); + if (cd.methods.size()) { + if (sort_methods) + cd.methods.sort(); + class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/keyword_color")); class_desc->push_font(doc_title_font); class_desc->add_text(TTR("Public Methods:")); @@ -979,6 +985,9 @@ Error EditorHelp::_goto_desc(const String& p_class,int p_vscr) { } if (cd.signals.size()) { + if (sort_methods) { + cd.signals.sort(); + } class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/keyword_color")); class_desc->push_font(doc_title_font); class_desc->add_text(TTR("Signals:")); @@ -1098,7 +1107,7 @@ Error EditorHelp::_goto_desc(const String& p_class,int p_vscr) { class_desc->add_newline(); class_desc->add_newline(); class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/text_color")); - class_desc->push_font( get_font("normal","Fonts") ); + class_desc->push_font( doc_font ); class_desc->push_indent(1); _add_text(cd.description); class_desc->pop(); @@ -1168,7 +1177,7 @@ Error EditorHelp::_goto_desc(const String& p_class,int p_vscr) { class_desc->add_newline(); class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/text_color")); - class_desc->push_font( get_font("normal","Fonts") ); + class_desc->push_font( doc_font ); class_desc->push_indent(1); _add_text(cd.methods[i].description); class_desc->pop(); @@ -1248,9 +1257,12 @@ void EditorHelp::_add_text(const String& p_bbcode) { class_desc->push_indent(1);*/ int pos = 0; + Ref<Font> doc_font = get_font("doc","EditorFonts"); + Ref<Font> doc_code_font = get_font("doc_source","EditorFonts"); + String bbcode=p_bbcode.replace("\t"," ").replace("\r"," ").strip_edges(); - //find double newlines, keep them + //change newlines for double newlines for(int i=0;i<bbcode.length();i++) { //find valid newlines (double) @@ -1269,10 +1281,13 @@ void EditorHelp::_add_text(const String& p_bbcode) { if (dnl) { bbcode[i]=0xFFFF; + //keep i=j; } else { - bbcode[i]=' '; - i=j-1; + bbcode=bbcode.insert(i,"\n"); + i++; + //bbcode[i]=' '; + //i=j-1; } } } @@ -1280,7 +1295,7 @@ void EditorHelp::_add_text(const String& p_bbcode) { //remove double spaces or spaces after newlines for(int i=0;i<bbcode.length();i++) { - if (bbcode[i]==' ' || bbcode[i]==0xFFFF) { + if (bbcode[i]==' ' || bbcode[i]=='\n' || bbcode[i]==0xFFFF) { for(int j=i+1;j<p_bbcode.length();j++) { if (bbcode[j]==' ') { @@ -1353,35 +1368,45 @@ void EditorHelp::_add_text(const String& p_bbcode) { } else if (tag.begins_with("method ")) { String m = tag.substr(7,tag.length()); + class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/keyword_color")); class_desc->push_meta("@"+m); class_desc->add_text(m+"()"); class_desc->pop(); + class_desc->pop(); pos=brk_end+1; } else if (doc->class_list.has(tag)) { + class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/keyword_color")); class_desc->push_meta("#"+tag); class_desc->add_text(tag); class_desc->pop(); + class_desc->pop(); pos=brk_end+1; } else if (tag=="b") { //use bold font - class_desc->push_font(get_font("source","Fonts")); + class_desc->push_font(doc_code_font); pos=brk_end+1; tag_stack.push_front(tag); } else if (tag=="i") { //use italics font - class_desc->push_font(get_font("italic","Fonts")); + Color text_color = EditorSettings::get_singleton()->get("text_editor/text_color"); + //no italics so emphasize with color + text_color.r*=1.1; + text_color.g*=1.1; + text_color.b*=1.1; + class_desc->push_color(text_color); + //class_desc->push_font(get_font("italic","Fonts")); pos=brk_end+1; tag_stack.push_front(tag); } else if (tag=="code" || tag=="codeblock") { //use monospace font - class_desc->push_font(get_font("source","EditorFonts")); + class_desc->push_font(doc_code_font); pos=brk_end+1; tag_stack.push_front(tag); } else if (tag=="center") { @@ -1496,7 +1521,7 @@ void EditorHelp::_add_text(const String& p_bbcode) { if (font.is_valid()) class_desc->push_font(font); else { - class_desc->push_font(get_font("source","rFonts")); + class_desc->push_font(doc_font); } pos=brk_end+1; @@ -1618,6 +1643,7 @@ EditorHelp::EditorHelp() { VBoxContainer *vbc = this; + EDITOR_DEF("help/sort_functions_alphabetically",true); //class_list->connect("meta_clicked",this,"_class_list_select"); //class_list->set_selection_enabled(true); diff --git a/tools/editor/editor_node.cpp b/tools/editor/editor_node.cpp index fedf738af4..8313e38f02 100644 --- a/tools/editor/editor_node.cpp +++ b/tools/editor/editor_node.cpp @@ -5225,7 +5225,7 @@ EditorNode::EditorNode() { //theme->set_icon("folder","EditorFileDialog",Theme::get_default()->get_icon("folder","EditorFileDialog")); //theme->set_color("files_disabled","EditorFileDialog",Color(0,0,0,0.7)); - String global_font = EditorSettings::get_singleton()->get("global/font"); + String global_font = EditorSettings::get_singleton()->get("global/custom_font"); if (global_font!="") { Ref<Font> fnt = ResourceLoader::load(global_font); if (fnt.is_valid()) { diff --git a/tools/editor/editor_plugin_settings.cpp b/tools/editor/editor_plugin_settings.cpp index 3eefe10448..1a6be05af3 100644 --- a/tools/editor/editor_plugin_settings.cpp +++ b/tools/editor/editor_plugin_settings.cpp @@ -150,7 +150,7 @@ void EditorPluginSettings::_bind_methods() { EditorPluginSettings::EditorPluginSettings() { HBoxContainer *title_hb = memnew( HBoxContainer ); - title_hb->add_child(memnew( Label("Installed Plugins:"))); + title_hb->add_child(memnew( Label(TTR("Installed Plugins:")))); title_hb->add_spacer(); update_list = memnew( Button(TTR("Update")) ); update_list->connect("pressed",this,"update_plugins"); @@ -162,9 +162,9 @@ EditorPluginSettings::EditorPluginSettings() { plugin_list->set_columns(4); plugin_list->set_column_titles_visible(true); plugin_list->set_column_title(0,TTR("Name:")); - plugin_list->set_column_title(1,"Version:"); - plugin_list->set_column_title(2,"Author:"); - plugin_list->set_column_title(3,"Status:"); + plugin_list->set_column_title(1,TTR("Version:")); + plugin_list->set_column_title(2,TTR("Author:")); + plugin_list->set_column_title(3,TTR("Status:")); plugin_list->set_column_expand(0,true); plugin_list->set_column_expand(1,false); plugin_list->set_column_expand(2,false); @@ -185,4 +185,3 @@ EditorPluginSettings::EditorPluginSettings() { updating=false; } - diff --git a/tools/editor/editor_settings.cpp b/tools/editor/editor_settings.cpp index 0b7e389773..1080509b8f 100644 --- a/tools/editor/editor_settings.cpp +++ b/tools/editor/editor_settings.cpp @@ -443,8 +443,12 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> p_extra_config) { } set("global/show_script_in_scene_tabs",false); - set("global/font",""); - hints["global/font"]=PropertyInfo(Variant::STRING,"global/font",PROPERTY_HINT_GLOBAL_FILE,"*.fnt"); + set("global/font_size",14); + hints["global/font_size"]=PropertyInfo(Variant::INT,"global/font_size",PROPERTY_HINT_RANGE,"10,40,1",PROPERTY_USAGE_DEFAULT|PROPERTY_USAGE_RESTART_IF_CHANGED); + set("global/source_font_size",14); + hints["global/source_font_size"]=PropertyInfo(Variant::INT,"global/source_font_size",PROPERTY_HINT_RANGE,"10,40,1",PROPERTY_USAGE_DEFAULT|PROPERTY_USAGE_RESTART_IF_CHANGED); + set("global/custom_font",""); + hints["global/custom_font"]=PropertyInfo(Variant::STRING,"global/custom_font",PROPERTY_HINT_GLOBAL_FILE,"*.fnt",PROPERTY_USAGE_DEFAULT|PROPERTY_USAGE_RESTART_IF_CHANGED); set("global/autoscan_project_path",""); hints["global/autoscan_project_path"]=PropertyInfo(Variant::STRING,"global/autoscan_project_path",PROPERTY_HINT_GLOBAL_DIR); set("global/default_project_path",""); @@ -469,6 +473,7 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> p_extra_config) { set("text_editor/draw_tabs", true); set("text_editor/show_line_numbers", true); + set("text_editor/show_breakpoint_gutter", true); set("text_editor/trim_trailing_whitespace_on_save", false); set("text_editor/idle_parse_delay",2); @@ -616,6 +621,8 @@ void EditorSettings::_load_default_text_editor_theme() { set("text_editor/mark_color", Color(1.0,0.4,0.4,0.4)); set("text_editor/breakpoint_color", Color(0.8,0.8,0.4,0.2)); set("text_editor/word_highlighted_color",Color(0.8,0.9,0.9,0.15)); + set("text_editor/search_result_color",Color(0.05,0.25,0.05,1)); + set("text_editor/search_result_border_color",Color(0.1,0.45,0.1,1)); } void EditorSettings::notify_changes() { @@ -847,6 +854,8 @@ bool EditorSettings::_save_text_editor_theme(String p_file) { cf->set_value(theme_section, "mark_color", ((Color)get("text_editor/mark_color")).to_html()); cf->set_value(theme_section, "breakpoint_color", ((Color)get("text_editor/breakpoint_color")).to_html()); cf->set_value(theme_section, "word_highlighted_color", ((Color)get("text_editor/word_highlighted_color")).to_html()); + cf->set_value(theme_section, "search_result_color", ((Color)get("text_editor/search_result_color")).to_html()); + cf->set_value(theme_section, "search_result_border_color", ((Color)get("text_editor/search_result_border_color")).to_html()); Error err = cf->save(p_file); if (err == OK) { diff --git a/tools/editor/icons/SCsub b/tools/editor/icons/SCsub index addf6879a2..14d2be66f6 100644 --- a/tools/editor/icons/SCsub +++ b/tools/editor/icons/SCsub @@ -35,7 +35,9 @@ def make_editor_icons_action(target, source, env): s.write("static Ref<ImageTexture> make_icon(const uint8_t* p_png) {\n") s.write("\tRef<ImageTexture> texture( memnew( ImageTexture ) );\n") - s.write("\ttexture->create_from_image( Image(p_png),ImageTexture::FLAG_FILTER );\n") + s.write("\tImage img(p_png);\n") + #s.write("\timg.expand_x2_hq2x();\n") + s.write("\ttexture->create_from_image( img,ImageTexture::FLAG_FILTER );\n") s.write("\treturn texture;\n") s.write("}\n\n") diff --git a/tools/editor/io_plugins/editor_font_import_plugin.cpp b/tools/editor/io_plugins/editor_font_import_plugin.cpp index 7cc5b579fe..f4d6af7e10 100644 --- a/tools/editor/io_plugins/editor_font_import_plugin.cpp +++ b/tools/editor/io_plugins/editor_font_import_plugin.cpp @@ -1614,7 +1614,7 @@ String EditorFontImportPlugin::get_name() const { } String EditorFontImportPlugin::get_visible_name() const{ - return "Font"; + return TTR("Font"); } void EditorFontImportPlugin::import_dialog(const String& p_from){ diff --git a/tools/editor/io_plugins/editor_mesh_import_plugin.cpp b/tools/editor/io_plugins/editor_mesh_import_plugin.cpp index c77256f27b..45da42969c 100644 --- a/tools/editor/io_plugins/editor_mesh_import_plugin.cpp +++ b/tools/editor/io_plugins/editor_mesh_import_plugin.cpp @@ -331,7 +331,7 @@ String EditorMeshImportPlugin::get_name() const { } String EditorMeshImportPlugin::get_visible_name() const{ - return "Mesh"; + return TTR("Mesh"); } void EditorMeshImportPlugin::import_dialog(const String& p_from){ @@ -561,4 +561,3 @@ EditorMeshImportPlugin::EditorMeshImportPlugin(EditorNode* p_editor) { dialog = memnew( EditorMeshImportDialog(this)); p_editor->get_gui_base()->add_child(dialog); } - diff --git a/tools/editor/io_plugins/editor_sample_import_plugin.cpp b/tools/editor/io_plugins/editor_sample_import_plugin.cpp index 631273a878..120bdc6f44 100644 --- a/tools/editor/io_plugins/editor_sample_import_plugin.cpp +++ b/tools/editor/io_plugins/editor_sample_import_plugin.cpp @@ -406,7 +406,7 @@ String EditorSampleImportPlugin::get_name() const { } String EditorSampleImportPlugin::get_visible_name() const{ - return "Audio Sample"; + return TTR("Audio Sample"); } void EditorSampleImportPlugin::import_dialog(const String& p_from){ @@ -921,5 +921,3 @@ Vector<uint8_t> EditorSampleExportPlugin::custom_export(String& p_path,const Ref EditorSampleExportPlugin::EditorSampleExportPlugin() { } - - diff --git a/tools/editor/io_plugins/editor_scene_import_plugin.cpp b/tools/editor/io_plugins/editor_scene_import_plugin.cpp index 00bd5413d3..3effb1d0aa 100644 --- a/tools/editor/io_plugins/editor_scene_import_plugin.cpp +++ b/tools/editor/io_plugins/editor_scene_import_plugin.cpp @@ -2647,7 +2647,7 @@ String EditorSceneAnimationImportPlugin::get_name() const { String EditorSceneAnimationImportPlugin::get_visible_name() const{ - return "3D Scene Animation"; + return TTR("3D Scene Animation"); } void EditorSceneAnimationImportPlugin::import_dialog(const String& p_from){ @@ -2662,4 +2662,3 @@ EditorSceneAnimationImportPlugin::EditorSceneAnimationImportPlugin(EditorNode* p } - diff --git a/tools/editor/io_plugins/editor_texture_import_plugin.cpp b/tools/editor/io_plugins/editor_texture_import_plugin.cpp index c7598466d5..2376f3a395 100644 --- a/tools/editor/io_plugins/editor_texture_import_plugin.cpp +++ b/tools/editor/io_plugins/editor_texture_import_plugin.cpp @@ -828,7 +828,7 @@ String EditorTextureImportPlugin::get_name() const { String EditorTextureImportPlugin::get_visible_name() const { - return "Texture"; + return TTR("Texture"); } void EditorTextureImportPlugin::import_dialog(const String& p_from) { @@ -1805,7 +1805,7 @@ EditorTextureImportPlugin *EditorTextureImportPlugin::singleton=NULL; EditorTextureImportPlugin::EditorTextureImportPlugin(EditorNode *p_editor) { singleton=this; - editor=p_editor; + editor=p_editor; dialog = memnew( EditorTextureImportDialog(this) ); editor->get_gui_base()->add_child(dialog); diff --git a/tools/editor/io_plugins/editor_translation_import_plugin.cpp b/tools/editor/io_plugins/editor_translation_import_plugin.cpp index 282153fa73..2b5bd29ac8 100644 --- a/tools/editor/io_plugins/editor_translation_import_plugin.cpp +++ b/tools/editor/io_plugins/editor_translation_import_plugin.cpp @@ -387,7 +387,7 @@ String EditorTranslationImportPlugin::get_name() const { } String EditorTranslationImportPlugin::get_visible_name() const { - return "Translation"; + return TTR("Translation"); } void EditorTranslationImportPlugin::import_dialog(const String& p_from) { diff --git a/tools/editor/plugins/animation_player_editor_plugin.cpp b/tools/editor/plugins/animation_player_editor_plugin.cpp index 343fcce5cd..4bbcb396af 100644 --- a/tools/editor/plugins/animation_player_editor_plugin.cpp +++ b/tools/editor/plugins/animation_player_editor_plugin.cpp @@ -1544,7 +1544,7 @@ AnimationPlayerEditorPlugin::AnimationPlayerEditorPlugin(EditorNode *p_node) { anim_editor = memnew( AnimationPlayerEditor(editor) ); anim_editor->set_undo_redo(editor->get_undo_redo()); - editor->add_bottom_panel_item("Animation",anim_editor); + editor->add_bottom_panel_item(TTR("Animation"),anim_editor); /* editor->get_viewport()->add_child(anim_editor); anim_editor->set_area_as_parent_rect(); @@ -1562,5 +1562,3 @@ AnimationPlayerEditorPlugin::AnimationPlayerEditorPlugin(EditorNode *p_node) { AnimationPlayerEditorPlugin::~AnimationPlayerEditorPlugin() { } - - diff --git a/tools/editor/plugins/script_editor_plugin.cpp b/tools/editor/plugins/script_editor_plugin.cpp index e3c339f1d6..6d87777a79 100644 --- a/tools/editor/plugins/script_editor_plugin.cpp +++ b/tools/editor/plugins/script_editor_plugin.cpp @@ -300,6 +300,8 @@ void ScriptTextEditor::_load_theme_settings() { get_text_edit()->add_color_override("member_variable_color",EDITOR_DEF("text_editor/member_variable_color",Color(0.9,0.3,0.3))); get_text_edit()->add_color_override("mark_color", EDITOR_DEF("text_editor/mark_color", Color(1.0,0.4,0.4,0.4))); get_text_edit()->add_color_override("breakpoint_color", EDITOR_DEF("text_editor/breakpoint_color", Color(0.8,0.8,0.4,0.2))); + get_text_edit()->add_color_override("search_result_color",EDITOR_DEF("text_editor/search_result_color",Color(0.05,0.25,0.05,1))); + get_text_edit()->add_color_override("search_result_border_color",EDITOR_DEF("text_editor/search_result_border_color",Color(0.1,0.45,0.1,1))); Color keyword_color= EDITOR_DEF("text_editor/keyword_color",Color(0.5,0.0,0.2)); @@ -586,7 +588,7 @@ void ScriptTextEditor::_bind_methods() { } ScriptTextEditor::ScriptTextEditor() { - + get_text_edit()->set_breakpoint_gutter_width(12); } /*** SCRIPT EDITOR ******/ @@ -1405,18 +1407,19 @@ void ScriptEditor::_menu_option(int p_option) { } break; case SEARCH_FIND: { - find_replace_dialog->set_text_edit(current->get_text_edit()); - find_replace_dialog->popup_search(); + current->get_find_replace_bar()->popup_search(); } break; case SEARCH_FIND_NEXT: { - find_replace_dialog->set_text_edit(current->get_text_edit()); - find_replace_dialog->search_next(); + current->get_find_replace_bar()->search_next(); + } break; + case SEARCH_FIND_PREV: { + + current->get_find_replace_bar()->search_prev(); } break; case SEARCH_REPLACE: { - find_replace_dialog->set_text_edit(current->get_text_edit()); - find_replace_dialog->popup_replace(); + current->get_find_replace_bar()->popup_replace(); } break; case SEARCH_LOCATE_FUNCTION: { @@ -1434,6 +1437,61 @@ void ScriptEditor::_menu_option(int p_option) { current->get_text_edit()->set_line_as_breakpoint(line,dobreak); get_debugger()->set_breakpoint(current->get_edited_script()->get_path(),line+1,dobreak); } break; + case DEBUG_REMOVE_ALL_BREAKPOINTS: { + List<int> bpoints; + current->get_text_edit()->get_breakpoints(&bpoints); + + for(List<int>::Element *E=bpoints.front();E;E=E->next()) { + int line = E->get(); + bool dobreak = !current->get_text_edit()->is_line_set_as_breakpoint(line); + current->get_text_edit()->set_line_as_breakpoint(line,dobreak); + get_debugger()->set_breakpoint(current->get_edited_script()->get_path(),line+1,dobreak); + } + } + case DEBUG_GOTO_NEXT_BREAKPOINT: { + List<int> bpoints; + current->get_text_edit()->get_breakpoints(&bpoints); + if (bpoints.size() <= 0) { + return; + } + + int line=current->get_text_edit()->cursor_get_line(); + // wrap around + if (line >= bpoints[bpoints.size() - 1]) { + current->get_text_edit()->cursor_set_line(bpoints[0]); + } else { + for(List<int>::Element *E=bpoints.front();E;E=E->next()) { + int bline = E->get(); + if (bline > line) { + current->get_text_edit()->cursor_set_line(bline); + return; + } + } + } + + } break; + case DEBUG_GOTO_PREV_BREAKPOINT: { + List<int> bpoints; + current->get_text_edit()->get_breakpoints(&bpoints); + if (bpoints.size() <= 0) { + return; + } + + int line=current->get_text_edit()->cursor_get_line(); + // wrap around + if (line <= bpoints[0]) { + current->get_text_edit()->cursor_set_line(bpoints[bpoints.size() - 1]); + } else { + for(List<int>::Element *E=bpoints.back();E;E=E->prev()) { + int bline = E->get(); + if (bline < line) { + current->get_text_edit()->cursor_set_line(bline); + return; + } + } + } + + } break; case DEBUG_NEXT: { if (debugger) @@ -2034,6 +2092,7 @@ void ScriptEditor::edit(const Ref<Script>& p_script) { ste->get_text_edit()->set_highlight_all_occurrences(EditorSettings::get_singleton()->get("text_editor/highlight_all_occurrences")); ste->get_text_edit()->cursor_set_blink_enabled(EditorSettings::get_singleton()->get("text_editor/caret_blink")); ste->get_text_edit()->cursor_set_blink_speed(EditorSettings::get_singleton()->get("text_editor/caret_blink_speed")); + ste->get_text_edit()->set_draw_breakpoint_gutter(EditorSettings::get_singleton()->get("text_editor/show_breakpoint_gutter")); ste->get_text_edit()->set_callhint_settings( EditorSettings::get_singleton()->get("text_editor/put_callhint_tooltip_below_current_line"), EditorSettings::get_singleton()->get("text_editor/callhint_tooltip_offset")); @@ -2190,6 +2249,7 @@ void ScriptEditor::_editor_settings_changed() { ste->get_text_edit()->set_highlight_all_occurrences(EditorSettings::get_singleton()->get("text_editor/highlight_all_occurrences")); ste->get_text_edit()->cursor_set_blink_enabled(EditorSettings::get_singleton()->get("text_editor/caret_blink")); ste->get_text_edit()->cursor_set_blink_speed(EditorSettings::get_singleton()->get("text_editor/caret_blink_speed")); + ste->get_text_edit()->set_draw_breakpoint_gutter(EditorSettings::get_singleton()->get("text_editor/show_breakpoint_gutter")); } } @@ -2531,6 +2591,7 @@ ScriptEditor::ScriptEditor(EditorNode *p_editor) { search_menu->set_text(TTR("Search")); search_menu->get_popup()->add_item(TTR("Find.."),SEARCH_FIND,KEY_MASK_CMD|KEY_F); search_menu->get_popup()->add_item(TTR("Find Next"),SEARCH_FIND_NEXT,KEY_F3); + search_menu->get_popup()->add_item(TTR("Find Previous"),SEARCH_FIND_PREV,KEY_MASK_SHIFT|KEY_F3); search_menu->get_popup()->add_item(TTR("Replace.."),SEARCH_REPLACE,KEY_MASK_CMD|KEY_R); search_menu->get_popup()->add_separator(); search_menu->get_popup()->add_item(TTR("Goto Function.."),SEARCH_LOCATE_FUNCTION,KEY_MASK_SHIFT|KEY_MASK_CMD|KEY_F); @@ -2550,6 +2611,9 @@ ScriptEditor::ScriptEditor(EditorNode *p_editor) { menu_hb->add_child(debug_menu); debug_menu->set_text(TTR("Debug")); debug_menu->get_popup()->add_item(TTR("Toggle Breakpoint"),DEBUG_TOGGLE_BREAKPOINT,KEY_F9); + debug_menu->get_popup()->add_item(TTR("Remove All Breakpoints"), DEBUG_REMOVE_ALL_BREAKPOINTS, KEY_MASK_CTRL|KEY_MASK_SHIFT|KEY_F9); + debug_menu->get_popup()->add_item(TTR("Goto Next Breakpoint"), DEBUG_GOTO_NEXT_BREAKPOINT, KEY_MASK_CTRL|KEY_PERIOD); + debug_menu->get_popup()->add_item(TTR("Goto Previous Breakpoint"), DEBUG_GOTO_PREV_BREAKPOINT, KEY_MASK_CTRL|KEY_COMMA); debug_menu->get_popup()->add_separator(); debug_menu->get_popup()->add_item(TTR("Step Over"),DEBUG_NEXT,KEY_F10); debug_menu->get_popup()->add_item(TTR("Step Into"),DEBUG_STEP,KEY_F11); @@ -2635,9 +2699,6 @@ ScriptEditor::ScriptEditor(EditorNode *p_editor) { tab_container->connect("tab_changed", this,"_tab_changed"); - find_replace_dialog = memnew(FindReplaceDialog); - add_child(find_replace_dialog); - erase_tab_confirm = memnew( ConfirmationDialog ); add_child(erase_tab_confirm); erase_tab_confirm->connect("confirmed", this,"_close_current_tab"); diff --git a/tools/editor/plugins/script_editor_plugin.h b/tools/editor/plugins/script_editor_plugin.h index 20e0b621c4..cbcfd9a77e 100644 --- a/tools/editor/plugins/script_editor_plugin.h +++ b/tools/editor/plugins/script_editor_plugin.h @@ -144,6 +144,7 @@ class ScriptEditor : public VBoxContainer { EDIT_CLONE_DOWN, SEARCH_FIND, SEARCH_FIND_NEXT, + SEARCH_FIND_PREV, SEARCH_REPLACE, SEARCH_LOCATE_FUNCTION, SEARCH_GOTO_LINE, @@ -151,6 +152,9 @@ class ScriptEditor : public VBoxContainer { SEARCH_CLASSES, SEARCH_WEBSITE, DEBUG_TOGGLE_BREAKPOINT, + DEBUG_REMOVE_ALL_BREAKPOINTS, + DEBUG_GOTO_NEXT_BREAKPOINT, + DEBUG_GOTO_PREV_BREAKPOINT, DEBUG_NEXT, DEBUG_STEP, DEBUG_BREAK, @@ -184,7 +188,6 @@ class ScriptEditor : public VBoxContainer { HSplitContainer *script_split; TabContainer *tab_container; EditorFileDialog *file_dialog; - FindReplaceDialog *find_replace_dialog; GotoLineDialog *goto_line_dialog; ConfirmationDialog *erase_tab_confirm; ScriptCreateDialog *script_create_dialog; diff --git a/tools/editor/plugins/shader_editor_plugin.cpp b/tools/editor/plugins/shader_editor_plugin.cpp index cc121d6c6f..0ca6a069bc 100644 --- a/tools/editor/plugins/shader_editor_plugin.cpp +++ b/tools/editor/plugins/shader_editor_plugin.cpp @@ -90,6 +90,8 @@ void ShaderTextEditor::_load_theme_settings() { get_text_edit()->add_color_override("member_variable_color",EDITOR_DEF("text_editor/member_variable_color",Color(0.9,0.3,0.3))); get_text_edit()->add_color_override("mark_color", EDITOR_DEF("text_editor/mark_color", Color(1.0,0.4,0.4,0.4))); get_text_edit()->add_color_override("breakpoint_color", EDITOR_DEF("text_editor/breakpoint_color", Color(0.8,0.8,0.4,0.2))); + get_text_edit()->add_color_override("search_result_color",EDITOR_DEF("text_editor/search_result_color",Color(0.05,0.25,0.05,1))); + get_text_edit()->add_color_override("search_result_border_color",EDITOR_DEF("text_editor/search_result_border_color",Color(0.1,0.45,0.1,1))); Color keyword_color= EDITOR_DEF("text_editor/keyword_color",Color(0.5,0.0,0.2)); @@ -212,18 +214,19 @@ void ShaderEditor::_menu_option(int p_option) { } break; case SEARCH_FIND: { - find_replace_dialog->set_text_edit(current->get_text_edit()); - find_replace_dialog->popup_search(); + current->get_find_replace_bar()->popup_search(); } break; case SEARCH_FIND_NEXT: { - find_replace_dialog->set_text_edit(current->get_text_edit()); - find_replace_dialog->search_next(); + current->get_find_replace_bar()->search_next(); + } break; + case SEARCH_FIND_PREV: { + + current->get_find_replace_bar()->search_prev(); } break; case SEARCH_REPLACE: { - find_replace_dialog->set_text_edit(current->get_text_edit()); - find_replace_dialog->popup_replace(); + current->get_find_replace_bar()->popup_replace(); } break; // case SEARCH_LOCATE_SYMBOL: { @@ -507,6 +510,7 @@ ShaderEditor::ShaderEditor() { search_menu->set_text(TTR("Search")); search_menu->get_popup()->add_item(TTR("Find.."),SEARCH_FIND,KEY_MASK_CMD|KEY_F); search_menu->get_popup()->add_item(TTR("Find Next"),SEARCH_FIND_NEXT,KEY_F3); + search_menu->get_popup()->add_item(TTR("Find Previous"),SEARCH_FIND_PREV,KEY_MASK_SHIFT|KEY_F3); search_menu->get_popup()->add_item(TTR("Replace.."),SEARCH_REPLACE,KEY_MASK_CMD|KEY_R); search_menu->get_popup()->add_separator(); // search_menu->get_popup()->add_item("Locate Symbol..",SEARCH_LOCATE_SYMBOL,KEY_MASK_CMD|KEY_K); @@ -516,9 +520,6 @@ ShaderEditor::ShaderEditor() { tab_container->connect("tab_changed", this,"_tab_changed"); - find_replace_dialog = memnew(FindReplaceDialog); - add_child(find_replace_dialog); - erase_tab_confirm = memnew( ConfirmationDialog ); add_child(erase_tab_confirm); erase_tab_confirm->connect("confirmed", this,"_close_current_tab"); diff --git a/tools/editor/plugins/shader_editor_plugin.h b/tools/editor/plugins/shader_editor_plugin.h index e10c10a446..9219a1fbc2 100644 --- a/tools/editor/plugins/shader_editor_plugin.h +++ b/tools/editor/plugins/shader_editor_plugin.h @@ -76,6 +76,7 @@ class ShaderEditor : public Control { EDIT_SELECT_ALL, SEARCH_FIND, SEARCH_FIND_NEXT, + SEARCH_FIND_PREV, SEARCH_REPLACE, //SEARCH_LOCATE_SYMBOL, SEARCH_GOTO_LINE, @@ -88,7 +89,6 @@ class ShaderEditor : public Control { uint64_t idle; TabContainer *tab_container; - FindReplaceDialog *find_replace_dialog; GotoLineDialog *goto_line_dialog; ConfirmationDialog *erase_tab_confirm; diff --git a/tools/editor/plugins/tile_map_editor_plugin.cpp b/tools/editor/plugins/tile_map_editor_plugin.cpp index a5147851ac..6d5f2a519c 100644 --- a/tools/editor/plugins/tile_map_editor_plugin.cpp +++ b/tools/editor/plugins/tile_map_editor_plugin.cpp @@ -205,7 +205,9 @@ void TileMapEditor::_update_palette() { if (tiles.empty()) return; + palette->set_max_columns(0); + palette->add_constant_override("hseparation", 6); palette->set_icon_mode(ItemList::ICON_MODE_TOP); palette->set_max_text_lines(2); @@ -239,6 +241,8 @@ void TileMapEditor::_update_palette() { palette->set_item_metadata(palette->get_item_count()-1, E->get()); } + + palette->set_same_column_width(true); if (selected != -1) set_selected_tile(selected); @@ -1210,10 +1214,7 @@ void TileMapEditor::_tileset_settings_changed() { void TileMapEditor::_icon_size_changed(float p_value) { if (node) { - Size2 size = node->get_cell_size() * p_value; - palette->set_min_icon_size(size + Size2(4, 0)); //4px gap between tiles - palette->set_icon_stretch_to_max_size(true); - palette->set_max_icon_size(size); + palette->set_icon_scale(p_value); _update_palette(); } } diff --git a/tools/editor/project_export.cpp b/tools/editor/project_export.cpp index dea15ebd35..2045f2c030 100644 --- a/tools/editor/project_export.cpp +++ b/tools/editor/project_export.cpp @@ -1427,7 +1427,7 @@ ProjectExportDialog::ProjectExportDialog(EditorNode *p_editor) { sample_vbox->add_margin_child(TTR("Trailing Silence:"),sample_trim); script_vbox = memnew( VBoxContainer ); - script_vbox->set_name("Script"); + script_vbox->set_name(TTR("Script")); sections->add_child(script_vbox); script_mode = memnew( OptionButton ); script_vbox->add_margin_child(TTR("Script Export Mode:"),script_mode); diff --git a/tools/editor/project_manager.cpp b/tools/editor/project_manager.cpp index c06a8cd081..af57d5264e 100644 --- a/tools/editor/project_manager.cpp +++ b/tools/editor/project_manager.cpp @@ -1016,7 +1016,7 @@ void ProjectListFilter::_setup_filters() { filter_option->clear(); filter_option->add_item(TTR("Name")); - filter_option->add_item("Path"); + filter_option->add_item(TTR("Path")); } void ProjectListFilter::_command(int p_command) { diff --git a/tools/editor/project_settings.cpp b/tools/editor/project_settings.cpp index 605b12c879..ed26af29f7 100644 --- a/tools/editor/project_settings.cpp +++ b/tools/editor/project_settings.cpp @@ -1761,7 +1761,7 @@ ProjectSettings::ProjectSettings(EditorData *p_data) { tmc->add_child(translation_remap_options); translation_remap_options->set_columns(2); - translation_remap_options->set_column_title(0,"Path"); + translation_remap_options->set_column_title(0,TTR("Path")); translation_remap_options->set_column_title(1,TTR("Locale")); translation_remap_options->set_column_titles_visible(true); translation_remap_options->set_column_expand(0,true); @@ -1827,7 +1827,7 @@ ProjectSettings::ProjectSettings(EditorData *p_data) { autoload_list->set_column_title(0,TTR("Name")); autoload_list->set_column_expand(0,true); autoload_list->set_column_min_width(0,100); - autoload_list->set_column_title(1,"Path"); + autoload_list->set_column_title(1,TTR("Path")); autoload_list->set_column_expand(1,true); autoload_list->set_column_min_width(1,100); autoload_list->set_column_title(2,TTR("Singleton")); diff --git a/tools/editor/script_editor_debugger.cpp b/tools/editor/script_editor_debugger.cpp index 7c7801a203..bd01e62158 100644 --- a/tools/editor/script_editor_debugger.cpp +++ b/tools/editor/script_editor_debugger.cpp @@ -615,7 +615,7 @@ void ScriptEditorDebugger::_parse_message(const String& p_msg,const Array& p_dat bool warning = err[9]; bool e; String time = String("%d:%02d:%02d:%04d").sprintf(vals,&e); - String txt=time+" - "+String(err[8]); + String txt=time+" - "+(err[8].is_zero()?String(err[7]):String(err[8])); String tooltip=TTR("Type:")+String(warning?TTR("Warning"):TTR("Error")); tooltip+="\n"+TTR("Description:")+" "+String(err[8]); diff --git a/tools/editor_fonts/droid_sans.ttf b/tools/editor_fonts/droid_sans.ttf Binary files differnew file mode 100644 index 0000000000..a117feac85 --- /dev/null +++ b/tools/editor_fonts/droid_sans.ttf diff --git a/tools/editor_fonts/source_code_pro.otf b/tools/editor_fonts/source_code_pro.otf Binary files differnew file mode 100644 index 0000000000..4e3b9d0bcd --- /dev/null +++ b/tools/editor_fonts/source_code_pro.otf diff --git a/tools/translations/zh_CN.po b/tools/translations/zh_CN.po new file mode 100644 index 0000000000..3e3f8444cf --- /dev/null +++ b/tools/translations/zh_CN.po @@ -0,0 +1,5781 @@ +# LANGUAGE translation of the Godot Engine editor +# Copyright (C) 2016 Juan Linietsky, Ariel Manzur and the Godot community +# This file is distributed under the same license as the Godot source code. +# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. +# Geequlim <geequlim@gmail.com>, 2016. +# +msgid "" +msgstr "" +"Project-Id-Version: Godot Engine editor\n" +"POT-Creation-Date: \n" +"PO-Revision-Date: 2016-05-30 00:04+0800\n" +"Last-Translator: Geequlim <geequlim@gmail.com>\n" +"Language-Team: 汉语 <geequlim@gmail.com>\n" +"Language: zh_CN\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Gtranslator 2.91.7\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: scene/3d/navigation_mesh.cpp +msgid "A NavigationMesh resource must be set or created for this node to work." +msgstr "此节点需要设置NavigationMesh资源才能工作。" + +#: scene/3d/navigation_mesh.cpp +msgid "" +"NavigationMeshInstance must be a child or grandchild to a Navigation node. " +"It only provides navigation data." +msgstr "" +"NavigationMeshInstance类型节点必须作为Navigation节点的子孙才能提供导航数据。" + +#: scene/3d/scenario_fx.cpp +msgid "" +"Only one WorldEnvironment is allowed per scene (or set of instanced scenes)." +msgstr "每个场景中只允许有一个WorldEnvironment类型的节点。" + +#: scene/3d/collision_polygon.cpp +msgid "" +"CollisionPolygon only serves to provide a collision shape to a " +"CollisionObject derived node. Please only use it as a child of Area, " +"StaticBody, RigidBody, KinematicBody, etc. to give them a shape." +msgstr "" +"CollisionPolygon类型节点只能为CollisionObject的派生类提供碰撞形状数据,请将其" +"放在Area、StaticBody、RigidBody或KinematicBody节点下。" + +#: scene/3d/collision_polygon.cpp +msgid "An empty CollisionPolygon has no effect on collision." +msgstr "空CollisionPolygon节点不起碰撞检测作用。" + +#: scene/3d/spatial_sample_player.cpp +msgid "" +"A SampleLibrary resource must be created or set in the 'samples' property in " +"order for SpatialSamplePlayer to play sound." +msgstr "" +"SampleLibrary类型的资源必须通过SpatialSamplePlayer节点的'samples'属性创建才能" +"正常播放声音。" + +#: scene/3d/body_shape.cpp +msgid "" +"CollisionShape only serves to provide a collision shape to a CollisionObject " +"derived node. Please only use it as a child of Area, StaticBody, RigidBody, " +"KinematicBody, etc. to give them a shape." +msgstr "" +"CollisionShape类型节点只能为CollisionObject的派生类提供碰撞形状数据,请将其放" +"在Area、StaticBody、RigidBody或KinematicBody节点下。" + +#: scene/3d/body_shape.cpp +msgid "" +"A shape must be provided for CollisionShape to function. Please create a " +"shape resource for it!" +msgstr "" +"CollisionShape节点必须拥有一个形状才能进行碰撞检测工作,请为它创建一个形状资" +"源!" + +#: scene/main/viewport.cpp +msgid "" +"This viewport is not set as render target. If you intend for it to display " +"its contents directly to the screen, make it a child of a Control so it can " +"obtain a size. Otherwise, make it a RenderTarget and assign its internal " +"texture to some node for display." +msgstr "" + +#: scene/gui/text_edit.cpp scene/gui/line_edit.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Cut" +msgstr "剪切" + +#: scene/gui/text_edit.cpp scene/gui/line_edit.cpp +#: tools/editor/property_editor.cpp tools/editor/resources_dock.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Copy" +msgstr "复制" + +#: scene/gui/text_edit.cpp scene/gui/line_edit.cpp +#: tools/editor/property_editor.cpp tools/editor/resources_dock.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +msgid "Paste" +msgstr "粘贴" + +#: scene/gui/text_edit.cpp scene/gui/line_edit.cpp +#: tools/editor/project_export.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Select All" +msgstr "全选" + +#: scene/gui/text_edit.cpp scene/gui/line_edit.cpp +#: tools/editor/script_editor_debugger.cpp tools/editor/property_editor.cpp +#: tools/editor/editor_log.cpp +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +#: tools/editor/plugins/rich_text_editor_plugin.cpp +msgid "Clear" +msgstr "清除" + +#: scene/gui/text_edit.cpp scene/gui/line_edit.cpp tools/editor/editor_node.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Undo" +msgstr "撤销" + +#: scene/gui/popup.cpp +msgid "" +"Popups will hide by default unless you call popup() or any of the popup*() " +"functions. Making them visible for editing is fine though, but they will " +"hide upon running." +msgstr "" +"Popup对象在你调用popup()方法之前将保持隐藏,这里设置为可见并不代表执行场景时" +"它会出现。" + +#: scene/audio/sample_player.cpp scene/2d/sample_player_2d.cpp +msgid "" +"A SampleLibrary resource must be created or set in the 'samples' property in " +"order for SamplePlayer to play sound." +msgstr "" +"SampleLibrary类型的资源必须是通过SamplePlayer类型节点的samples属性创建的,这" +"样的资源才能用于播放声音。" + +#: scene/2d/sprite.cpp tools/editor/project_settings.cpp +#: tools/editor/dependency_editor.cpp +msgid "" +"Path property must point to a valid Viewport node to work. Such Viewport " +"must be set to 'render target' mode." +msgstr "" +"Path属性必须指向一个合法的Viewport节点才能工作,同时此Viewport还需要启" +"用'render target'。" + +#: scene/2d/sprite.cpp +msgid "" +"The Viewport set in the path property must be set as 'render target' in " +"order for this sprite to work." +msgstr "" +"为了让此精灵正常工作,它的path属性所指向的Viewport需要开启'render target'。" + +#: scene/2d/visibility_notifier_2d.cpp +msgid "" +"VisibilityEnable2D works best when used with the edited scene root directly " +"as parent." +msgstr "VisibilityEnable2D类型的节点用于场景的根节点才能获得最好的效果。" + +#: scene/2d/animated_sprite.cpp +msgid "" +"A SpriteFrames resource must be created or set in the 'Frames' property in " +"order for AnimatedSprite to display frames." +msgstr "" +"SpriteFrames资源必须是通过AnimatedSprite节点的frames属性创建的,否则无法显示" +"动画帧。" + +#: scene/2d/canvas_modulate.cpp +msgid "" +"Only one visible CanvasModulate is allowed per scene (or set of instanced " +"scenes). The first created one will work, while the rest will be ignored." +msgstr "" +"每个场景中只允许有一个CanvasModulate类型的节点,场景中的第一个CanvasModulate" +"节点能正常工作,其余的将被忽略。" + +#: scene/2d/parallax_layer.cpp +msgid "" +"ParallaxLayer node only works when set as child of a ParallaxBackground node." +msgstr "" +"ParallaxLayer类型的节点必须作为ParallaxBackground的子节点才能正常工作。" + +#: scene/2d/navigation_polygon.cpp +msgid "" +"A NavigationPolygon resource must be set or created for this node to work. " +"Please set a property or draw a polygon." +msgstr "" +"请为此节点设置一个NavigationPolygon类型的资源作为形状,这样它才能正常工作。" + +#: scene/2d/navigation_polygon.cpp +msgid "" +"NavigationPolygonInstance must be a child or grandchild to a Navigation2D " +"node. It only provides navigation data." +msgstr "" +"NavigationPolygonInstance类型的节点必须作为Navigation2D的子孙才能为其提供导航" +"数据。" + +#: scene/2d/light_occluder_2d.cpp +msgid "" +"An occluder polygon must be set (or drawn) for this occluder to take effect." +msgstr "此遮光体必须设置遮光形状才能起到遮光作用。" + +#: scene/2d/light_occluder_2d.cpp +msgid "The occluder polygon for this occluder is empty. Please draw a polygon!" +msgstr "此遮光体的遮光形状为空,请为其绘制一个遮光形状!" + +#: scene/2d/light_2d.cpp +msgid "" +"A texture with the shape of the light must be supplied to the 'texture' " +"property." +msgstr "" + +#: scene/2d/collision_polygon_2d.cpp +msgid "" +"CollisionPolygon2D only serves to provide a collision shape to a " +"CollisionObject2D derived node. Please only use it as a child of Area2D, " +"StaticBody2D, RigidBody2D, KinematicBody2D, etc. to give them a shape." +msgstr "" +"CollisionPolygon2D类型节点只能为CollisionObject2D的派生类提供碰撞形状数据,请" +"将其放在Area2D、StaticBody2D、RigidBody2D或KinematicBody2D节点下。" + +#: scene/2d/collision_polygon_2d.cpp +msgid "An empty CollisionPolygon2D has no effect on collision." +msgstr "空的CollisionPolygon2D不起任何碰撞检测作用。" + +#: scene/2d/particles_2d.cpp +msgid "Path property must point to a valid Particles2D node to work." +msgstr "path属性必须指向一个合法的Particles2D节点才能正常工作。" + +#: scene/2d/collision_shape_2d.cpp +msgid "" +"CollisionShape2D only serves to provide a collision shape to a " +"CollisionObject2D derived node. Please only use it as a child of Area2D, " +"StaticBody2D, RigidBody2D, KinematicBody2D, etc. to give them a shape." +msgstr "" +"CollisionShape2D类型节点只能为CollisionObject2D的派生类提供碰撞形状数据,请将" +"其放在Area2D、StaticBody2D、RigidBody2D或者是KinematicBody2D节点下。" + +#: scene/2d/collision_shape_2d.cpp +msgid "" +"A shape must be provided for CollisionShape2D to function. Please create a " +"shape resource for it!" +msgstr "形状资源必须是通过CollisionShape2D节点的shape属性创建的!" + +#: scene/2d/path_2d.cpp +msgid "PathFollow2D only works when set as a child of a Path2D node." +msgstr "PathFollow2D类型的节点只有放在Path2D节点下才能正常工作。" + +#: scene/2d/remote_transform_2d.cpp +msgid "Path property must point to a valid Node2D node to work." +msgstr "path属性必须指向一个合法的Node2D节点才能正常工作。" + +#: tools/editor/editor_data.cpp +msgid "Updating Scene" +msgstr "更新场景" + +#: tools/editor/editor_data.cpp +msgid "Storing local changes.." +msgstr "保存修改中.." + +#: tools/editor/editor_data.cpp +msgid "Updating scene.." +msgstr "更新场景中.." + +#: tools/editor/array_property_edit.cpp +msgid "Resize Array" +msgstr "修改数组大小" + +#: tools/editor/array_property_edit.cpp +msgid "Change Array Value Type" +msgstr "修改数组类型" + +#: tools/editor/array_property_edit.cpp +msgid "Change Array Value" +msgstr "修改数组值" + +#: tools/editor/editor_file_dialog.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "File Exists, Overwrite?" +msgstr "文件已存在,确定要覆盖它吗?" + +#: tools/editor/editor_file_dialog.cpp +msgid "All Recognized" +msgstr "所有可用类型" + +#: tools/editor/editor_file_dialog.cpp +msgid "All Files (*)" +msgstr "所有文件(*)" + +#: tools/editor/editor_file_dialog.cpp tools/editor/editor_node.cpp +#: tools/editor/quick_open.cpp tools/editor/editor_help.cpp +#: tools/editor/scenes_dock.cpp tools/editor/plugins/script_editor_plugin.cpp +msgid "Open" +msgstr "打开" + +#: tools/editor/editor_file_dialog.cpp tools/editor/editor_node.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Save" +msgstr "保存" + +#: tools/editor/editor_file_dialog.cpp +msgid "Save a File" +msgstr "保存文件" + +#: tools/editor/editor_file_dialog.cpp tools/editor/project_manager.cpp +#: tools/editor/create_dialog.cpp tools/editor/animation_editor.cpp +#: tools/editor/editor_dir_dialog.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Create Folder" +msgstr "新建目录" + +#: tools/editor/editor_file_dialog.cpp tools/editor/script_create_dialog.cpp +#: tools/editor/project_settings.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Path:" +msgstr "路径:" + +#: tools/editor/editor_file_dialog.cpp tools/editor/scenes_dock.cpp +msgid "Favorites:" +msgstr "收藏:" + +#: tools/editor/editor_file_dialog.cpp +msgid "Recent:" +msgstr "最近文件:" + +#: tools/editor/editor_file_dialog.cpp +msgid "Directories & Files:" +msgstr "目录|文件:" + +#: tools/editor/editor_file_dialog.cpp +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Preview:" +msgstr "预览" + +#: tools/editor/editor_file_dialog.cpp tools/editor/script_editor_debugger.cpp +msgid "File:" +msgstr "文件:" + +#: tools/editor/editor_file_dialog.cpp +msgid "Filter:" +msgstr "筛选:" + +#: tools/editor/editor_file_dialog.cpp tools/editor/editor_plugin_settings.cpp +#: tools/editor/editor_dir_dialog.cpp tools/editor/project_settings.cpp +#: tools/editor/plugins/theme_editor_plugin.cpp +#: tools/editor/plugins/sample_library_editor_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Name:" +msgstr "名称" + +#: tools/editor/editor_file_dialog.cpp tools/editor/editor_dir_dialog.cpp +msgid "Could not create folder." +msgstr "无法创建目录。" + +#: tools/editor/editor_file_dialog.cpp +msgid "Must use a valid extension." +msgstr "必须使用合法的拓展名。" + +#: tools/editor/scene_tree_editor.cpp +msgid "" +"This item cannot be made visible because the parent is hidden. Unhide the " +"parent first." +msgstr "无法显示此节点,请先取消隐藏其父节点。" + +#: tools/editor/scene_tree_editor.cpp +msgid "Toggle Spatial Visible" +msgstr "切换Spatial可见" + +#: tools/editor/scene_tree_editor.cpp +msgid "Toggle CanvasItem Visible" +msgstr "切换CanvasItem可见" + +#: tools/editor/scene_tree_editor.cpp tools/editor/script_create_dialog.cpp +#: tools/editor/editor_help.cpp +msgid "Inherits:" +msgstr "基类:" + +#: tools/editor/scene_tree_editor.cpp tools/editor/script_editor_debugger.cpp +#: tools/editor/project_settings.cpp +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Type:" +msgstr "类型:" + +#: tools/editor/scene_tree_editor.cpp +msgid "Instance:" +msgstr "实例:" + +#: tools/editor/scene_tree_editor.cpp +msgid "Invalid node name, the following characters are not allowed:" +msgstr "节点名称非法,不允许包含以下字符:" + +#: tools/editor/scene_tree_editor.cpp +msgid "Rename Node" +msgstr "重命名节点" + +#: tools/editor/scene_tree_editor.cpp +msgid "Scene Tree (Nodes):" +msgstr "场景树:" + +#: tools/editor/scene_tree_editor.cpp +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Editable Children" +msgstr "允许编辑子孙节点" + +#: tools/editor/scene_tree_editor.cpp +msgid "Load As Placeholder" +msgstr "加载为占位符" + +#: tools/editor/scene_tree_editor.cpp +msgid "Open in Editor" +msgstr "在编辑器中打开" + +#: tools/editor/scene_tree_editor.cpp +msgid "Clear Inheritance" +msgstr "清除继承" + +#: tools/editor/scene_tree_editor.cpp +msgid "Clear Inheritance? (No Undo!)" +msgstr "确定要清除继承吗(无法撤销!)?" + +#: tools/editor/scene_tree_editor.cpp +msgid "Clear!" +msgstr "清除!" + +#: tools/editor/scene_tree_editor.cpp +msgid "Select a Node" +msgstr "选择一个节点" + +#: tools/editor/file_type_cache.cpp +msgid "Can't open file_type_cache.cch for writing, not saving file type cache!" +msgstr "无法以可写方式打开file_type_cache.cch!" + +#: tools/editor/pvrtc_compress.cpp +msgid "Could not execute PVRTC tool:" +msgstr "无法执行PVPTC工具:" + +#: tools/editor/pvrtc_compress.cpp +msgid "Can't load back converted image using PVRTC tool:" +msgstr "无法加载使用PVRTC工具转换的图片:" + +#: tools/editor/editor_sub_scene.cpp +msgid "Select Node(s) to Import" +msgstr "选择要导入的节点" + +#: tools/editor/editor_sub_scene.cpp +msgid "Scene Path:" +msgstr "场景路径:" + +#: tools/editor/editor_sub_scene.cpp tools/editor/editor_node.cpp +#: tools/editor/project_manager.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +msgid "Import From Node:" +msgstr "从节点中导入:" + +#: tools/editor/script_editor_debugger.cpp +msgid "Bytes:" +msgstr "字节:" + +#: tools/editor/script_editor_debugger.cpp +msgid "Warning" +msgstr "警告:" + +#: tools/editor/script_editor_debugger.cpp +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Error" +msgstr "错误" + +#: tools/editor/script_editor_debugger.cpp tools/editor/editor_help.cpp +msgid "Description:" +msgstr "描述:" + +#: tools/editor/script_editor_debugger.cpp tools/editor/editor_profiler.cpp +msgid "Time:" +msgstr "时间:" + +#: tools/editor/script_editor_debugger.cpp +msgid "Error:" +msgstr "错误:" + +#: tools/editor/script_editor_debugger.cpp +msgid "Source:" +msgstr "源:" + +#: tools/editor/script_editor_debugger.cpp +msgid "Function:" +msgstr "函数:" + +#: tools/editor/script_editor_debugger.cpp +msgid "Errors" +msgstr "错误" + +#: tools/editor/script_editor_debugger.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Debugger" +msgstr "调试器" + +#: tools/editor/script_editor_debugger.cpp +msgid "Child Process Connected" +msgstr "子进程已连接" + +#: tools/editor/script_editor_debugger.cpp tools/editor/code_editor.cpp +msgid "Line:" +msgstr "行:" + +#: tools/editor/script_editor_debugger.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Step Into" +msgstr "单步进入" + +#: tools/editor/script_editor_debugger.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Step Over" +msgstr "单步跳过" + +#: tools/editor/script_editor_debugger.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Break" +msgstr "跳过" + +#: tools/editor/script_editor_debugger.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Continue" +msgstr "继续" + +#: tools/editor/script_editor_debugger.cpp +msgid "Inspect Previous Instance" +msgstr "编辑上一个实例" + +#: tools/editor/script_editor_debugger.cpp +msgid "Inspect Next Instance" +msgstr "编辑下一个实例" + +#: tools/editor/script_editor_debugger.cpp +msgid "Stack Frames" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Variable" +msgstr "变量" + +#: tools/editor/script_editor_debugger.cpp +msgid "Errors:" +msgstr "错误:" + +#: tools/editor/script_editor_debugger.cpp +msgid "Stack Trace (if applicable):" +msgstr "调用堆栈:" + +#: tools/editor/script_editor_debugger.cpp +msgid "Remote Inspector" +msgstr "远程属性面板" + +#: tools/editor/script_editor_debugger.cpp +msgid "Monitor" +msgstr "键名" + +#: tools/editor/script_editor_debugger.cpp +msgid "Value" +msgstr "值" + +#: tools/editor/script_editor_debugger.cpp +msgid "List of Video Memory Usage by Resource:" +msgstr "占用显存的资源列表:" + +#: tools/editor/script_editor_debugger.cpp +msgid "Total:" +msgstr "合计:" + +#: tools/editor/script_editor_debugger.cpp +msgid "Video Mem" +msgstr "显存" + +#: tools/editor/script_editor_debugger.cpp +msgid "Resource Path" +msgstr "资源路径" + +#: tools/editor/script_editor_debugger.cpp +msgid "Type" +msgstr "类型" + +#: tools/editor/script_editor_debugger.cpp +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Format" +msgstr "格式" + +#: tools/editor/script_editor_debugger.cpp +msgid "Usage" +msgstr "用量" + +#: tools/editor/script_editor_debugger.cpp +msgid "Clicked Control:" +msgstr "点击的控件:" + +#: tools/editor/script_editor_debugger.cpp +msgid "Clicked Control Type:" +msgstr "点击的控件类型:" + +#: tools/editor/script_editor_debugger.cpp +msgid "Live Edit Root:" +msgstr "实时编辑根节点:" + +#: tools/editor/script_editor_debugger.cpp +msgid "Set From Tree" +msgstr "从场景树设置" + +#: tools/editor/addon_editor_plugin.cpp tools/editor/import_settings.cpp +#: tools/editor/property_editor.cpp tools/editor/call_dialog.cpp +#: tools/editor/groups_editor.cpp tools/editor/connections_dialog.cpp +#: tools/editor/project_settings.cpp tools/editor/settings_config_dialog.cpp +#: tools/editor/run_settings_dialog.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/plugins/sample_library_editor_plugin.cpp +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +msgid "Close" +msgstr "关闭" + +#: tools/editor/addon_editor_plugin.cpp tools/editor/editor_node.cpp +#: tools/editor/quick_open.cpp tools/editor/create_dialog.cpp +#: tools/editor/editor_help.cpp tools/editor/project_settings.cpp +#: tools/editor/code_editor.cpp tools/editor/settings_config_dialog.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Search:" +msgstr "搜索:" + +#: tools/editor/addon_editor_plugin.cpp +msgid "Search" +msgstr "搜索" + +#: tools/editor/addon_editor_plugin.cpp +msgid "Import" +msgstr "导入" + +#: tools/editor/addon_editor_plugin.cpp tools/editor/project_settings.cpp +#: tools/editor/settings_config_dialog.cpp +msgid "Plugins" +msgstr "插件" + +#: tools/editor/addon_editor_plugin.cpp +msgid "Sort:" +msgstr "排序:" + +#: tools/editor/addon_editor_plugin.cpp +msgid "Reverse" +msgstr "反选" + +#: tools/editor/addon_editor_plugin.cpp tools/editor/project_settings.cpp +msgid "Category:" +msgstr "分类:" + +#: tools/editor/addon_editor_plugin.cpp +msgid "All" +msgstr "全部" + +#: tools/editor/addon_editor_plugin.cpp +msgid "Site:" +msgstr "站点:" + +#: tools/editor/addon_editor_plugin.cpp +msgid "Assets ZIP File" +msgstr "" + +#: tools/editor/editor_plugin_settings.cpp +msgid "Installed Plugins:" +msgstr "已安装插件:" + +#: tools/editor/editor_plugin_settings.cpp tools/editor/editor_node.cpp +msgid "Update" +msgstr "更新" + +#: tools/editor/editor_plugin_settings.cpp +msgid "Version:" +msgstr "版本" + +#: tools/editor/editor_plugin_settings.cpp +msgid "Author:" +msgstr "作者" + +#: tools/editor/editor_plugin_settings.cpp +msgid "Status:" +msgstr "状态" + +#: tools/editor/script_create_dialog.cpp +msgid "Invalid parent class name" +msgstr "基类名称非法" + +#: tools/editor/script_create_dialog.cpp +msgid "Valid chars:" +msgstr "合法的字符:" + +#: tools/editor/script_create_dialog.cpp +msgid "Invalid class name" +msgstr "类名非法" + +#: tools/editor/script_create_dialog.cpp +msgid "Valid name" +msgstr "名称可用" + +#: tools/editor/script_create_dialog.cpp +msgid "N/A" +msgstr "N/A" + +#: tools/editor/script_create_dialog.cpp +msgid "Class name is invalid!" +msgstr "类名非法" + +#: tools/editor/script_create_dialog.cpp +msgid "Parent class name is invalid!" +msgstr "基类名称非法" + +#: tools/editor/script_create_dialog.cpp +msgid "Invalid path!" +msgstr "路径非法!" + +#: tools/editor/script_create_dialog.cpp +msgid "Could not create script in filesystem." +msgstr "无法创建脚本。" + +#: tools/editor/script_create_dialog.cpp +msgid "Path is empty" +msgstr "文件路径为空" + +#: tools/editor/script_create_dialog.cpp +msgid "Path is not local" +msgstr "必须是项目路径" + +#: tools/editor/script_create_dialog.cpp +msgid "Invalid base path" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "File exists" +msgstr "文件已存在" + +#: tools/editor/script_create_dialog.cpp +msgid "Invalid extension" +msgstr "扩展名非法" + +#: tools/editor/script_create_dialog.cpp +msgid "Valid path" +msgstr "路径可用" + +#: tools/editor/script_create_dialog.cpp +msgid "Class Name:" +msgstr "类名:" + +#: tools/editor/script_create_dialog.cpp +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Language" +msgstr "语言:" + +#: tools/editor/script_create_dialog.cpp tools/editor/property_editor.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/plugins/sample_library_editor_plugin.cpp +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +msgid "Error!" +msgstr "错误!" + +#: tools/editor/script_create_dialog.cpp +msgid "Built-In Script" +msgstr "内置脚本" + +#: tools/editor/script_create_dialog.cpp +msgid "Create Node Script" +msgstr "创建脚本" + +#: tools/editor/script_create_dialog.cpp +msgid "Create" +msgstr "创建" + +#: tools/editor/editor_node.cpp tools/editor/import_settings.cpp +#: tools/editor/editor_reimport_dialog.cpp +msgid "Re-Importing" +msgstr "重新导入" + +#: tools/editor/editor_node.cpp +msgid "Importing:" +msgstr "导入:" + +#: tools/editor/editor_node.cpp +msgid "Node From Scene" +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/scenes_dock.cpp +msgid "Re-Import.." +msgstr "重新导入.." + +#: tools/editor/editor_node.cpp tools/editor/resources_dock.cpp +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Error saving resource!" +msgstr "保存资源出错!" + +#: tools/editor/editor_node.cpp tools/editor/resources_dock.cpp +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Save Resource As.." +msgstr "资源另存为.." + +#: tools/editor/editor_node.cpp tools/editor/scene_tree_dock.cpp +msgid "I see.." +msgstr "好吧.." + +#: tools/editor/editor_node.cpp +msgid "Can't open file for writing:" +msgstr "无法以可写模式打开文件:" + +#: tools/editor/editor_node.cpp +msgid "Requested file format unknown:" +msgstr "未知的文件类型请求:" + +#: tools/editor/editor_node.cpp +msgid "Error while saving." +msgstr "保存出错。" + +#: tools/editor/editor_node.cpp +msgid "Saving Scene" +msgstr "正在保存场景" + +#: tools/editor/editor_node.cpp +msgid "Analyzing" +msgstr "正在分析" + +#: tools/editor/editor_node.cpp +msgid "Creating Thumbnail" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "" +"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied." +msgstr "无法保存场景,依赖项(实例)验证失败。" + +#: tools/editor/editor_node.cpp +msgid "Failed to load resource." +msgstr "加载资源失败。" + +#: tools/editor/editor_node.cpp +msgid "Can't load MeshLibrary for merging!" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Error saving MeshLibrary!" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Can't load TileSet for merging!" +msgstr "无法加载要合并的砖块集!" + +#: tools/editor/editor_node.cpp +msgid "Error saving TileSet!" +msgstr "保存砖块集失败!" + +#: tools/editor/editor_node.cpp +msgid "Can't open export templates zip." +msgstr "无法打开ZIP导出模板" + +#: tools/editor/editor_node.cpp +msgid "Loading Export Templates" +msgstr "正在加载导出模板" + +#: tools/editor/editor_node.cpp +msgid "Error trying to save layout!" +msgstr "保存布局出错!" + +#: tools/editor/editor_node.cpp tools/editor/project_export.cpp +msgid "Default editor layout overridden." +msgstr "覆盖编辑器默认布局。" + +#: tools/editor/editor_node.cpp +msgid "Layout name not found!" +msgstr "布局名称未找到!" + +#: tools/editor/editor_node.cpp +msgid "Restored default layout to base settings." +msgstr "重置为默认布局设置。" + +#: tools/editor/editor_node.cpp +msgid "Copy Params" +msgstr "拷贝参数" + +#: tools/editor/editor_node.cpp +msgid "Set Params" +msgstr "设置参数" + +#: tools/editor/editor_node.cpp +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +msgid "Paste Resource" +msgstr "粘贴资源" + +#: tools/editor/editor_node.cpp +msgid "Copy Resource" +msgstr "拷贝资源" + +#: tools/editor/editor_node.cpp +msgid "Make Built-In" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Make Sub-Resources Unique" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "There is no defined scene to run." +msgstr "没有设置要执行的场景。" + +#: tools/editor/editor_node.cpp +msgid "Current scene was never saved, please save it prior to running." +msgstr "当前场景尚未保存,请保存后再尝试执行。" + +#: tools/editor/editor_node.cpp +msgid "Could not start subprocess!" +msgstr "无法启动子进程!" + +#: tools/editor/editor_node.cpp +msgid "Open Scene" +msgstr "打开场景" + +#: tools/editor/editor_node.cpp +msgid "Open Base Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Quick Open Scene.." +msgstr "快速打开场景.." + +#: tools/editor/editor_node.cpp +msgid "Quick Open Script.." +msgstr "快速打开脚本.." + +#: tools/editor/editor_node.cpp +msgid "Yes" +msgstr "是" + +#: tools/editor/editor_node.cpp +msgid "Close scene? (Unsaved changes will be lost)" +msgstr "确定要关闭场景吗,未保存的修改将丢失?" + +#: tools/editor/editor_node.cpp +msgid "Save Scene As.." +msgstr "场景另存为" + +#: tools/editor/editor_node.cpp +msgid "This scene has never been saved. Save before running?" +msgstr "此场景尚未保存,要在运行之前保存它吗?" + +#: tools/editor/editor_node.cpp +msgid "Please save the scene first." +msgstr "请先保存场景。" + +#: tools/editor/editor_node.cpp +msgid "Save Translatable Strings" +msgstr "保存可翻译字符串" + +#: tools/editor/editor_node.cpp tools/editor/project_export.cpp +msgid "Export Mesh Library" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Export Tile Set" +msgstr "导出砖块集" + +#: tools/editor/editor_node.cpp +msgid "Quit" +msgstr "退出" + +#: tools/editor/editor_node.cpp +msgid "Exit the editor?" +msgstr "确定要退出编辑器吗?" + +#: tools/editor/editor_node.cpp +msgid "Current scene not saved. Open anyway?" +msgstr "当前场景尚未保存,仍要打开?" + +#: tools/editor/editor_node.cpp +msgid "Can't reload a scene that was never saved." +msgstr "无法重新加载未保存的场景。" + +#: tools/editor/editor_node.cpp +msgid "Revert" +msgstr "恢复" + +#: tools/editor/editor_node.cpp +msgid "This action cannot be undone. Revert anyway?" +msgstr "此操作无法撤销,确定要继续吗?" + +#: tools/editor/editor_node.cpp +msgid "Quick Run Scene.." +msgstr "快速运行场景" + +#: tools/editor/editor_node.cpp tools/editor/scene_tree_dock.cpp +msgid "Ugh" +msgstr "额" + +#: tools/editor/editor_node.cpp +msgid "" +"Error loading scene, it must be inside the project path. Use 'Import' to " +"open the scene, then save it inside the project path." +msgstr "" +"加载场景出错,场景必须放在项目目录下。请尝试使用'导入'菜单导入此场景后再试。" + +#: tools/editor/editor_node.cpp +msgid "Error loading scene." +msgstr "加载场景出错。" + +#: tools/editor/editor_node.cpp +msgid "Scene '%s' has broken dependencies:" +msgstr "场景%s的依赖已被破坏:" + +#: tools/editor/editor_node.cpp +msgid "Save Layout" +msgstr "保存布局" + +#: tools/editor/editor_node.cpp tools/editor/scenes_dock.cpp +#: tools/editor/dependency_editor.cpp +#: tools/editor/plugins/item_list_editor_plugin.cpp +msgid "Delete Layout" +msgstr "删除布局" + +#: tools/editor/editor_node.cpp +msgid "Default" +msgstr "默认" + +#: tools/editor/editor_node.cpp +msgid "Delete" +msgstr "删除" + +#: tools/editor/editor_node.cpp +msgid "Switch Scene Tab" +msgstr "切换场景标签页" + +#: tools/editor/editor_node.cpp +msgid "%d more file(s)" +msgstr "更多的%d个文件" + +#: tools/editor/editor_node.cpp +msgid "%d more file(s) or folder(s)" +msgstr "更多的%d个文件或目录" + +#: tools/editor/editor_node.cpp +msgid "Scene" +msgstr "场景" + +#: tools/editor/editor_node.cpp +msgid "Go to previously opened scene." +msgstr "前往上一个打开的场景。" + +#: tools/editor/editor_node.cpp +msgid "Operations with scene files." +msgstr "操作场景文件。" + +#: tools/editor/editor_node.cpp tools/editor/plugins/script_editor_plugin.cpp +msgid "New Scene" +msgstr "新建场景" + +#: tools/editor/editor_node.cpp +msgid "New Inherited Scene.." +msgstr "从现有场景中创建.." + +#: tools/editor/editor_node.cpp +msgid "Open Scene.." +msgstr "打开场景" + +#: tools/editor/editor_node.cpp +msgid "Save Scene" +msgstr "保存场景" + +#: tools/editor/editor_node.cpp +msgid "Close Scene" +msgstr "关闭场景" + +#: tools/editor/editor_node.cpp +msgid "Close Goto Prev. Scene" +msgstr "关闭并前往上一个场景" + +#: tools/editor/editor_node.cpp +msgid "Open Recent" +msgstr "最近打开" + +#: tools/editor/editor_node.cpp +msgid "Quick Search File.." +msgstr "快速查找文件.." + +#: tools/editor/editor_node.cpp +msgid "Convert To.." +msgstr "转换为.." + +#: tools/editor/editor_node.cpp +msgid "Translatable Strings.." +msgstr "可翻译字符串" + +#: tools/editor/editor_node.cpp +msgid "MeshLibrary.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "TileSet.." +msgstr "砖块集.." + +#: tools/editor/editor_node.cpp tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Redo" +msgstr "重做" + +#: tools/editor/editor_node.cpp +msgid "Run Script" +msgstr "运行脚本" + +#: tools/editor/editor_node.cpp +msgid "Project Settings" +msgstr "项目设置" + +#: tools/editor/editor_node.cpp +msgid "Revert Scene" +msgstr "恢复场景" + +#: tools/editor/editor_node.cpp +msgid "Quit to Project List" +msgstr "退出到项目列表" + +#: tools/editor/editor_node.cpp +msgid "Import assets to the project." +msgstr "导入资源" + +#: tools/editor/editor_node.cpp +msgid "Miscellaneous project or scene-wide tools." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Tools" +msgstr "工具" + +#: tools/editor/editor_node.cpp tools/editor/dependency_editor.cpp +msgid "Orphan Resource Explorer" +msgstr "查看孤立资源" + +#: tools/editor/editor_node.cpp +msgid "Export the project to many platforms." +msgstr "导出项目到多个平台。" + +#: tools/editor/editor_node.cpp +msgid "Export" +msgstr "导出" + +#: tools/editor/editor_node.cpp +msgid "Play the project (F5)." +msgstr "运行此项目(F5)" + +#: tools/editor/editor_node.cpp +msgid "Pause the scene" +msgstr "暂停运行场景" + +#: tools/editor/editor_node.cpp +msgid "Stop the scene (F8)." +msgstr "停止运行场景(F8)" + +#: tools/editor/editor_node.cpp +msgid "Play the edited scene (F6)." +msgstr "运行打开的场景(F6)" + +#: tools/editor/editor_node.cpp +msgid "Play custom scene" +msgstr "运行自定义场景" + +#: tools/editor/editor_node.cpp +msgid "Debug options" +msgstr "调试选项" + +#: tools/editor/editor_node.cpp +msgid "Live Editing" +msgstr "实时编辑" + +#: tools/editor/editor_node.cpp +msgid "File Server" +msgstr "文件服务" + +#: tools/editor/editor_node.cpp +msgid "Deploy Remote Debug" +msgstr "部署远程调试" + +#: tools/editor/editor_node.cpp +msgid "Deploy File Server Clients" +msgstr "部署文件服务客户端" + +#: tools/editor/editor_node.cpp +msgid "Visible Collision Shapes" +msgstr "碰撞区域可见" + +#: tools/editor/editor_node.cpp +msgid "Visible Navigation" +msgstr "Navigation可见" + +#: tools/editor/editor_node.cpp tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Settings" +msgstr "设置" + +#: tools/editor/editor_node.cpp tools/editor/settings_config_dialog.cpp +msgid "Editor Settings" +msgstr "编辑器设置" + +#: tools/editor/editor_node.cpp +msgid "Editor Layout" +msgstr "编辑器布局" + +#: tools/editor/editor_node.cpp +msgid "Install Export Templates" +msgstr "安装导出模板" + +#: tools/editor/editor_node.cpp +msgid "About" +msgstr "关于" + +#: tools/editor/editor_node.cpp +msgid "Alerts when an external resource has changed." +msgstr "外部资源改变后弹出提示。" + +#: tools/editor/editor_node.cpp +msgid "Spins when the editor window repaints!" +msgstr "旋转时,重新绘制编辑器窗口!" + +#: tools/editor/editor_node.cpp +msgid "Update Always" +msgstr "持续更新UI" + +#: tools/editor/editor_node.cpp +msgid "Update Changes" +msgstr "有更改时更新UI" + +#: tools/editor/editor_node.cpp +msgid "Inspector" +msgstr "属性面板" + +#: tools/editor/editor_node.cpp +msgid "Create a new resource in memory and edit it." +msgstr "在内存中新建资源并编辑。" + +#: tools/editor/editor_node.cpp +msgid "Load an existing resource from disk and edit it." +msgstr "从磁盘中加载资源并编辑。" + +#: tools/editor/editor_node.cpp +msgid "Save the currently edited resource." +msgstr "保存当前编辑的资源。" + +#: tools/editor/editor_node.cpp tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Save As.." +msgstr "另存为" + +#: tools/editor/editor_node.cpp +msgid "Go to the previous edited object in history." +msgstr "前往上一个编辑对象。" + +#: tools/editor/editor_node.cpp +msgid "Go to the next edited object in history." +msgstr "前往下一个编辑对象。" + +#: tools/editor/editor_node.cpp +msgid "History of recently edited objects." +msgstr "最近编辑历史对象。" + +#: tools/editor/editor_node.cpp +msgid "Object properties." +msgstr "对象属性。" + +#: tools/editor/editor_node.cpp +msgid "FileSystem" +msgstr "文件系统" + +#: tools/editor/editor_node.cpp +msgid "Output" +msgstr "输出" + +#: tools/editor/editor_node.cpp +msgid "Re-Import" +msgstr "重新导入" + +#: tools/editor/editor_node.cpp +msgid "Thanks from the Godot community!" +msgstr "感谢Godot社区" + +#: tools/editor/editor_node.cpp +msgid "Thanks!" +msgstr "谢谢!" + +#: tools/editor/editor_node.cpp +msgid "Import Templates From ZIP File" +msgstr "从ZIP文件中导入模板" + +#: tools/editor/editor_node.cpp tools/editor/project_export.cpp +msgid "Export Project" +msgstr "导出项目" + +#: tools/editor/editor_node.cpp +msgid "Export Library" +msgstr "导出库" + +#: tools/editor/editor_node.cpp +msgid "Merge With Existing" +msgstr "与现有合并" + +#: tools/editor/editor_node.cpp tools/editor/project_export.cpp +msgid "Password:" +msgstr "密码" + +#: tools/editor/editor_node.cpp +msgid "Open & Run a Script" +msgstr "打开并运行脚本" + +#: tools/editor/editor_node.cpp +msgid "Load Errors" +msgstr "加载错误" + +#: tools/editor/import_settings.cpp +msgid "Imported Resources" +msgstr "已导入的资源" + +#: tools/editor/property_editor.cpp +msgid "Preset.." +msgstr "预设.." + +#: tools/editor/property_editor.cpp tools/editor/animation_editor.cpp +msgid "Linear" +msgstr "线性" + +#: tools/editor/property_editor.cpp +msgid "Ease In" +msgstr "慢速开始" + +#: tools/editor/property_editor.cpp +msgid "Ease Out" +msgstr "慢速结束" + +#: tools/editor/property_editor.cpp +msgid "Zero" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Easing In-Out" +msgstr "慢速开始和结束" + +#: tools/editor/property_editor.cpp +msgid "Easing Out-In" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "File.." +msgstr "文件.." + +#: tools/editor/property_editor.cpp +msgid "Dir.." +msgstr "目录.." + +#: tools/editor/property_editor.cpp +msgid "New" +msgstr "新建" + +#: tools/editor/property_editor.cpp +msgid "Load" +msgstr "加载" + +#: tools/editor/property_editor.cpp +msgid "Assign" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Error loading file: Not a resource!" +msgstr "加载文件出错:不是资源文件!" + +#: tools/editor/property_editor.cpp +msgid "Couldn't load image" +msgstr "无法加载图片" + +#: tools/editor/property_editor.cpp +msgid "Bit %d, val %d." +msgstr "" + +#: tools/editor/property_editor.cpp tools/editor/editor_help.cpp +msgid "Class:" +msgstr "类:" + +#: tools/editor/property_editor.cpp tools/editor/project_settings.cpp +msgid "Property:" +msgstr "属性:" + +#: tools/editor/property_editor.cpp +msgid "On" +msgstr "启用" + +#: tools/editor/property_editor.cpp +msgid "Set" +msgstr "设置" + +#: tools/editor/property_editor.cpp +msgid "Properties:" +msgstr "属性:" + +#: tools/editor/property_editor.cpp +msgid "Global" +msgstr "全局" + +#: tools/editor/property_editor.cpp +msgid "Sections:" +msgstr "选项:" + +#: tools/editor/editor_import_export.cpp tools/editor/connections_dialog.cpp +#: tools/editor/project_settings.cpp +#: tools/editor/plugins/theme_editor_plugin.cpp +#: tools/editor/plugins/item_list_editor_plugin.cpp +msgid "Added:" +msgstr "已添加:" + +#: tools/editor/editor_import_export.cpp tools/editor/connections_dialog.cpp +#: tools/editor/dependency_editor.cpp +#: tools/editor/plugins/theme_editor_plugin.cpp +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Removed:" +msgstr "已移除:" + +#: tools/editor/editor_import_export.cpp tools/editor/project_export.cpp +msgid "Error saving atlas:" +msgstr "保存贴图集出错:" + +#: tools/editor/editor_import_export.cpp +msgid "Could not save atlas subtexture:" +msgstr "无法保存精灵集子贴图:" + +#: tools/editor/editor_import_export.cpp +msgid "Storing File:" +msgstr "文件排序:" + +#: tools/editor/editor_import_export.cpp +msgid "Packing" +msgstr "打包中" + +#: tools/editor/editor_import_export.cpp +msgid "Exporting for %s" +msgstr "正在导出 %s" + +#: tools/editor/editor_import_export.cpp +msgid "Setting Up.." +msgstr "配置.." + +#: tools/editor/scene_tree_dock.cpp +msgid "OK :(" +msgstr "好吧" + +#: tools/editor/scene_tree_dock.cpp +msgid "No parent to instance a child at." +msgstr "没有选中节点来添加实例。" + +#: tools/editor/scene_tree_dock.cpp +msgid "Error loading scene from %s" +msgstr "从%s加载场景出错!" + +#: tools/editor/scene_tree_dock.cpp +msgid "Error instancing scene from %s" +msgstr "从%s实例化场景出错!" + +#: tools/editor/scene_tree_dock.cpp +msgid "Ok" +msgstr "好的" + +#: tools/editor/scene_tree_dock.cpp +msgid "" +"Cannot instance the scene '%s' because the current scene exists within one " +"of its nodes." +msgstr "无法实例化场景%s当前场景已存在于它的子节点中。" + +#: tools/editor/scene_tree_dock.cpp +msgid "Instance Scene(s)" +msgstr "实例化场景" + +#: tools/editor/scene_tree_dock.cpp +msgid "This operation can't be done on the tree root." +msgstr "此操作不能被用于根节点。" + +#: tools/editor/scene_tree_dock.cpp +msgid "Move Node In Parent" +msgstr "在父节点中移动" + +#: tools/editor/scene_tree_dock.cpp +msgid "Move Nodes In Parent" +msgstr "在父节点中移动多个节点" + +#: tools/editor/scene_tree_dock.cpp +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Duplicate Node(s)" +msgstr "复制节点" + +#: tools/editor/scene_tree_dock.cpp +msgid "Delete Node(s)?" +msgstr "确定要删除节点吗?" + +#: tools/editor/scene_tree_dock.cpp +msgid "This operation can't be done without a scene." +msgstr "此操作必须在打开一个场景后才能执行。" + +#: tools/editor/scene_tree_dock.cpp +msgid "This operation requires a single selected node." +msgstr "此操作只能应用于单个选中节点。" + +#: tools/editor/scene_tree_dock.cpp +msgid "This operation can't be done on instanced scenes." +msgstr "此操作不能应用于实例化的场景。" + +#: tools/editor/scene_tree_dock.cpp +msgid "Save New Scene As.." +msgstr "将新场景另存为.." + +#: tools/editor/scene_tree_dock.cpp +msgid "Makes Sense!" +msgstr "有道理!" + +#: tools/editor/scene_tree_dock.cpp +msgid "Can't operate on nodes from a foreign scene!" +msgstr "无法操作外部场景的节点!" + +#: tools/editor/scene_tree_dock.cpp +msgid "Can't operate on nodes the current scene inherits from!" +msgstr "无法操作此节点,因为当前场景继承自该节点!" + +#: tools/editor/scene_tree_dock.cpp tools/editor/reparent_dialog.cpp +msgid "Reparent Node" +msgstr "重设父节点" + +#: tools/editor/scene_tree_dock.cpp +msgid "Remove Node(s)" +msgstr "移除节点" + +#: tools/editor/scene_tree_dock.cpp +msgid "Create Node" +msgstr "新节点" + +#: tools/editor/scene_tree_dock.cpp +msgid "" +"Couldn't save new scene. Likely dependencies (instances) couldn't be " +"satisfied." +msgstr "无法保存场景,场景或其实例的的依赖存在问题。" + +#: tools/editor/scene_tree_dock.cpp +msgid "Error saving scene." +msgstr "保存场景出错。" + +#: tools/editor/scene_tree_dock.cpp +msgid "Error duplicating scene to save it." +msgstr "复制场景出错。" + +#: tools/editor/scene_tree_dock.cpp +msgid "New Scene Root" +msgstr "创建场景根节点" + +#: tools/editor/scene_tree_dock.cpp +msgid "Inherit Scene" +msgstr "继承场景" + +#: tools/editor/scene_tree_dock.cpp +msgid "Add Child Node" +msgstr "添加子节点" + +#: tools/editor/scene_tree_dock.cpp +msgid "Instance Child Scene" +msgstr "实例化子场景" + +#: tools/editor/scene_tree_dock.cpp +msgid "Change Type" +msgstr "更改类型" + +#: tools/editor/scene_tree_dock.cpp +msgid "Edit Groups" +msgstr "编辑分组" + +#: tools/editor/scene_tree_dock.cpp +msgid "Edit Connections" +msgstr "编辑事件连接" + +#: tools/editor/scene_tree_dock.cpp +msgid "Add Script" +msgstr "添加脚本" + +#: tools/editor/scene_tree_dock.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Move Up" +msgstr "向上移动" + +#: tools/editor/scene_tree_dock.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Move Down" +msgstr "向下移动" + +#: tools/editor/scene_tree_dock.cpp +msgid "Duplicate" +msgstr "拷贝" + +#: tools/editor/scene_tree_dock.cpp +msgid "Reparent" +msgstr "重设父节点" + +#: tools/editor/scene_tree_dock.cpp +msgid "Merge From Scene" +msgstr "从场景中合并" + +#: tools/editor/scene_tree_dock.cpp +msgid "Save Branch as Scene" +msgstr "将分支保存为场景" + +#: tools/editor/scene_tree_dock.cpp +msgid "Delete Node(s)" +msgstr "删除节点" + +#: tools/editor/scene_tree_dock.cpp +msgid "Add/Create a New Node" +msgstr "添加/创建节点" + +#: tools/editor/scene_tree_dock.cpp +msgid "" +"Instance a scene file as a Node. Creates an inherited scene if no root node " +"exists." +msgstr "实例化场景文件为一个节点,如果没有根节点则创建一个继承自该文件的场景。" + +#: tools/editor/editor_run_script.cpp +msgid "Write your logic in the _run() method." +msgstr "在_run()方中填写您的逻辑代码。" + +#: tools/editor/editor_run_script.cpp +msgid "There is an edited scene already." +msgstr "已经存在一个正在编辑的场景。" + +#: tools/editor/editor_run_script.cpp +msgid "Couldn't instance script:" +msgstr "无法实例化脚本:" + +#: tools/editor/editor_run_script.cpp +msgid "Did you forget the 'tool' keyword?" +msgstr "您是否遗漏了tool关键字?" + +#: tools/editor/editor_run_script.cpp +msgid "Couldn't run script:" +msgstr "无法执行脚本:" + +#: tools/editor/editor_run_script.cpp +msgid "Did you forget the '_run' method?" +msgstr "您是否遗漏了_run()方法?" + +#: tools/editor/multi_node_edit.cpp +msgid "MultiNode Set" +msgstr "" + +#: tools/editor/quick_open.cpp tools/editor/create_dialog.cpp +#: tools/editor/editor_help.cpp tools/editor/plugins/script_editor_plugin.cpp +msgid "Matches:" +msgstr "匹配项:" + +#: tools/editor/project_manager.cpp +msgid "Invalid project path, the path must exist!" +msgstr "项目目录不存在!" + +#: tools/editor/project_manager.cpp +msgid "Invalid project path, engine.cfg must not exist." +msgstr "项目目录下必须包含engin.cfg文件。" + +#: tools/editor/project_manager.cpp +msgid "Invalid project path, engine.cfg must exist." +msgstr "项目目录下必须包含engin.cfg文件。" + +#: tools/editor/project_manager.cpp +msgid "Imported Project" +msgstr "已导入的项目" + +#: tools/editor/project_manager.cpp +msgid "Invalid project path (changed anything?)." +msgstr "项目路径非法(被外部修改?)。" + +#: tools/editor/project_manager.cpp +msgid "Couldn't create engine.cfg in project path." +msgstr "无法在项目目录下创建engine.cfg文件。" + +#: tools/editor/project_manager.cpp +msgid "Import Existing Project" +msgstr "导入现有项目" + +#: tools/editor/project_manager.cpp +msgid "Project Path (Must Exist):" +msgstr "项目目录(必须存在)" + +#: tools/editor/project_manager.cpp +msgid "Project Name:" +msgstr "项目名称:" + +#: tools/editor/project_manager.cpp +msgid "Create New Project" +msgstr "新建项目" + +#: tools/editor/project_manager.cpp +msgid "Project Path:" +msgstr "项目目录" + +#: tools/editor/project_manager.cpp +msgid "Browse" +msgstr "浏览" + +#: tools/editor/project_manager.cpp +msgid "New Game Project" +msgstr "新建游戏项目" + +#: tools/editor/project_manager.cpp +msgid "That's a BINGO!" +msgstr "碉堡了!" + +#: tools/editor/project_manager.cpp +msgid "Unnamed Project" +msgstr "未命名项目" + +#: tools/editor/project_manager.cpp +msgid "Are you sure to open more than one projects?" +msgstr "您确定要打开多个项目吗?" + +#: tools/editor/project_manager.cpp +msgid "Are you sure to run more than one projects?" +msgstr "您确定要执行多个项目吗?" + +#: tools/editor/project_manager.cpp +msgid "Remove project from the list? (Folder contents will not be modified)" +msgstr "移除此项目(项目的文件不受影响)" + +#: tools/editor/project_manager.cpp +msgid "Recent Projects:" +msgstr "最近打开的项目:" + +#: tools/editor/project_manager.cpp +msgid "Edit" +msgstr "编辑" + +#: tools/editor/project_manager.cpp +msgid "Run" +msgstr "运行" + +#: tools/editor/project_manager.cpp +msgid "Scan" +msgstr "扫描" + +#: tools/editor/project_manager.cpp +msgid "New Project" +msgstr "新建" + +#: tools/editor/project_manager.cpp +msgid "Remove" +msgstr "移除" + +#: tools/editor/project_manager.cpp +msgid "Exit" +msgstr "退出" + +#: tools/editor/project_manager.cpp +msgid "Name" +msgstr "名称" + +#: tools/editor/project_manager.cpp +msgid "Path" +msgstr "路径" + +#: tools/editor/create_dialog.cpp +msgid "Create New" +msgstr "新建" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Light Radius" +msgstr "设置光照半径" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Camera FOV" +msgstr "更改摄像机视角" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Camera Size" +msgstr "修改摄像机尺寸" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Sphere Shape Radius" +msgstr "更改球体半径" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Box Shape Extents" +msgstr "" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Capsule Shape Radius" +msgstr "更改胶囊半径" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Capsule Shape Height" +msgstr "更改胶囊高度" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Ray Shape Length" +msgstr "" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Notifier Extents" +msgstr "" + +#: tools/editor/editor_settings.cpp +msgid "Default (Same as Editor)" +msgstr "默认(与编辑器相同)" + +#: tools/editor/animation_editor.cpp +msgid "Disabled" +msgstr "已禁用" + +#: tools/editor/animation_editor.cpp +msgid "All Selection" +msgstr "所有选项" + +#: tools/editor/animation_editor.cpp +msgid "Move Add Key" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Change Transition" +msgstr "修改过度效果" + +#: tools/editor/animation_editor.cpp +msgid "Anim Change Transform" +msgstr "修改变换" + +#: tools/editor/animation_editor.cpp +msgid "Anim Change Value" +msgstr "修改动画值" + +#: tools/editor/animation_editor.cpp +msgid "Anim Change Call" +msgstr "修改回调" + +#: tools/editor/animation_editor.cpp +msgid "Anim Add Track" +msgstr "添加轨道" + +#: tools/editor/animation_editor.cpp +msgid "Move Anim Track Up" +msgstr "上移轨道" + +#: tools/editor/animation_editor.cpp +msgid "Move Anim Track Down" +msgstr "下移轨道" + +#: tools/editor/animation_editor.cpp +msgid "Remove Anim Track" +msgstr "移除轨道" + +#: tools/editor/animation_editor.cpp +msgid "Anim Duplicate Keys" +msgstr "复制关键帧" + +#: tools/editor/animation_editor.cpp +msgid "Set Transitions to:" +msgstr "设置过渡效果:" + +#: tools/editor/animation_editor.cpp +msgid "Anim Track Rename" +msgstr "重命名轨道" + +#: tools/editor/animation_editor.cpp +msgid "Anim Track Change Interpolation" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Track Change Value Mode" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Edit Node Curve" +msgstr "编辑节点曲线" + +#: tools/editor/animation_editor.cpp +msgid "Edit Selection Curve" +msgstr "编辑选项曲线" + +#: tools/editor/animation_editor.cpp +msgid "Anim Delete Keys" +msgstr "删除关键帧" + +#: tools/editor/animation_editor.cpp +msgid "Anim Add Key" +msgstr "添加关键帧" + +#: tools/editor/animation_editor.cpp +msgid "Anim Move Keys" +msgstr "移动关键帧" + +#: tools/editor/animation_editor.cpp +msgid "Scale Selection" +msgstr "缩放选中项" + +#: tools/editor/animation_editor.cpp +msgid "Scale From Cursor" +msgstr "通过光标缩放" + +#: tools/editor/animation_editor.cpp +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Duplicate Selection" +msgstr "复制选中项" + +#: tools/editor/animation_editor.cpp +msgid "Duplicate Transposed" +msgstr "复制并转置" + +#: tools/editor/animation_editor.cpp +msgid "Goto Next Step" +msgstr "前往下一步" + +#: tools/editor/animation_editor.cpp +msgid "Goto Prev Step" +msgstr "前往上一步" + +#: tools/editor/animation_editor.cpp +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Constant" +msgstr "常量" + +#: tools/editor/animation_editor.cpp +msgid "In" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Out" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "In-Out" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Out-In" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Transitions" +msgstr "过渡" + +#: tools/editor/animation_editor.cpp +msgid "Optimize Animation" +msgstr "优化动画" + +#: tools/editor/animation_editor.cpp +msgid "Clean-Up Animation" +msgstr "清理动画" + +#: tools/editor/animation_editor.cpp +msgid "Create NEW track for %s and insert key?" +msgstr "为%s创建新轨道并插入关键帧?" + +#: tools/editor/animation_editor.cpp +msgid "Create %d NEW tracks and insert keys?" +msgstr "创建%d个新轨道并插入关键帧?" + +#: tools/editor/animation_editor.cpp +msgid "Anim Create & Insert" +msgstr "创建|插入动画" + +#: tools/editor/animation_editor.cpp +msgid "Anim Insert Track & Key" +msgstr "创建|插入 轨道和关键帧" + +#: tools/editor/animation_editor.cpp +msgid "Anim Insert Key" +msgstr "插入关键帧" + +#: tools/editor/animation_editor.cpp +msgid "Change Anim Len" +msgstr "修改动画时长" + +#: tools/editor/animation_editor.cpp +msgid "Change Anim Loop" +msgstr "修改动画循环" + +#: tools/editor/animation_editor.cpp +msgid "Anim Create Typed Value Key" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Insert" +msgstr "插入动画" + +#: tools/editor/animation_editor.cpp +msgid "Anim Scale Keys" +msgstr "缩放键" + +#: tools/editor/animation_editor.cpp +msgid "Anim Add Call Track" +msgstr "添加回调轨道" + +#: tools/editor/animation_editor.cpp +msgid "Animation zoom." +msgstr "动画时间缩放" + +#: tools/editor/animation_editor.cpp +msgid "Length (s):" +msgstr "时长(秒):" + +#: tools/editor/animation_editor.cpp +msgid "Animation length (in seconds)." +msgstr "动画时长(秒)" + +#: tools/editor/animation_editor.cpp +msgid "Step (s):" +msgstr "步长(秒)" + +#: tools/editor/animation_editor.cpp +msgid "Cursor step snap (in seconds)." +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Enable/Disable looping in animation." +msgstr "启用/禁用循环" + +#: tools/editor/animation_editor.cpp +msgid "Add new tracks." +msgstr "新建轨道" + +#: tools/editor/animation_editor.cpp +msgid "Move current track up." +msgstr "上移当前轨道" + +#: tools/editor/animation_editor.cpp +msgid "Move current track down." +msgstr "下移当前轨道" + +#: tools/editor/animation_editor.cpp +msgid "Remove selected track." +msgstr "移除选中轨道" + +#: tools/editor/animation_editor.cpp +msgid "Track tools" +msgstr "轨道工具" + +#: tools/editor/animation_editor.cpp +msgid "Enable editing of individual keys by clicking them." +msgstr "允许通过单击启用各个键的编辑。" + +#: tools/editor/animation_editor.cpp +msgid "Anim. Optimizer" +msgstr "优化动画" + +#: tools/editor/animation_editor.cpp +msgid "Max. Linear Error:" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Max. Angular Error:" +msgstr "最大角错误:" + +#: tools/editor/animation_editor.cpp +msgid "Max Optimizable Angle:" +msgstr "调整最大的角度:" + +#: tools/editor/animation_editor.cpp +msgid "Optimize" +msgstr "优化" + +#: tools/editor/animation_editor.cpp +msgid "Key" +msgstr "键" + +#: tools/editor/animation_editor.cpp +msgid "Transition" +msgstr "过渡" + +#: tools/editor/animation_editor.cpp +msgid "Scale Ratio:" +msgstr "缩放比率" + +#: tools/editor/animation_editor.cpp +msgid "Call Functions in Which Node?" +msgstr "在那个节点中调用函数?" + +#: tools/editor/animation_editor.cpp +msgid "Remove invalid keys" +msgstr "移除无效键" + +#: tools/editor/animation_editor.cpp +msgid "Remove unresolved and empty tracks" +msgstr "移除未分解的空轨道" + +#: tools/editor/animation_editor.cpp +msgid "Clean-up all animations" +msgstr "清除所有动画" + +#: tools/editor/animation_editor.cpp +msgid "Clean-Up Animation(s) (NO UNDO!)" +msgstr "清除所有动画吗(无法撤销)?" + +#: tools/editor/animation_editor.cpp +msgid "Clean-Up" +msgstr "清理" + +#: tools/editor/editor_help.cpp +msgid "Search Classes" +msgstr "搜索类型" + +#: tools/editor/editor_help.cpp +msgid "Class List:" +msgstr "类型列表" + +#: tools/editor/editor_help.cpp +msgid "Inherited by:" +msgstr "派生类:" + +#: tools/editor/editor_help.cpp +msgid "Brief Description:" +msgstr "简介:" + +#: tools/editor/editor_help.cpp +msgid "Public Methods:" +msgstr "公共方法:" + +#: tools/editor/editor_help.cpp +msgid "Members:" +msgstr "成员:" + +#: tools/editor/editor_help.cpp +msgid "GUI Theme Items:" +msgstr "GUI主题:" + +#: tools/editor/editor_help.cpp +msgid "Signals:" +msgstr "事件:" + +#: tools/editor/editor_help.cpp +msgid "Constants:" +msgstr "常量:" + +#: tools/editor/editor_help.cpp +msgid "Method Description:" +msgstr "方法描述:" + +#: tools/editor/editor_help.cpp +msgid "Search Text" +msgstr "搜索文本" + +#: tools/editor/editor_help.cpp tools/editor/code_editor.cpp +msgid "Find" +msgstr "查找" + +#: tools/editor/editor_dir_dialog.cpp +msgid "Choose a Directory" +msgstr "选择目录" + +#: tools/editor/editor_dir_dialog.cpp +msgid "Choose" +msgstr "选择" + +#: tools/editor/editor_reimport_dialog.cpp +msgid "Please wait for scan to complete." +msgstr "扫描中,请稍后..." + +#: tools/editor/editor_reimport_dialog.cpp +msgid "Current scene must be saved to re-import." +msgstr "需要先保存当前场景才能重新导入。" + +#: tools/editor/editor_reimport_dialog.cpp +msgid "Save & Re-Import" +msgstr "保存并重新导入" + +#: tools/editor/editor_reimport_dialog.cpp +msgid "Re-Import Changed Resources" +msgstr "重新导入改变的资源" + +#: tools/editor/reparent_dialog.cpp +msgid "Reparent Location (Select new Parent):" +msgstr "重设位置(选择父节点)" + +#: tools/editor/reparent_dialog.cpp +msgid "Keep Global Transform" +msgstr "保持全局变换" + +#: tools/editor/call_dialog.cpp +msgid "Method List For '%s':" +msgstr "%s的方法列表" + +#: tools/editor/call_dialog.cpp +msgid "Call" +msgstr "调用" + +#: tools/editor/call_dialog.cpp +msgid "Method List:" +msgstr "方法列表:" + +#: tools/editor/call_dialog.cpp +msgid "Arguments:" +msgstr "参数:" + +#: tools/editor/call_dialog.cpp +msgid "Return:" +msgstr "返回:" + +#: tools/editor/groups_editor.cpp +msgid "Add to Group" +msgstr "添加到分组" + +#: tools/editor/groups_editor.cpp +msgid "Remove from Group" +msgstr "从分组中移除" + +#: tools/editor/groups_editor.cpp tools/editor/project_export.cpp +msgid "Group Editor" +msgstr "分组编辑" + +#: tools/editor/groups_editor.cpp +msgid "Group" +msgstr "分组" + +#: tools/editor/groups_editor.cpp +msgid "Add" +msgstr "添加" + +#: tools/editor/groups_editor.cpp +msgid "Node Group(s)" +msgstr "节点分组" + +#: tools/editor/connections_dialog.cpp +msgid "Method in target Node must be specified!" +msgstr "必须设置方法的对象节点!" + +#: tools/editor/connections_dialog.cpp +msgid "Connect To Node:" +msgstr "连接到节点:" + +#: tools/editor/connections_dialog.cpp +msgid "Binds (Extra Params):" +msgstr "绑定(附加参数):" + +#: tools/editor/connections_dialog.cpp +msgid "Path To Node:" +msgstr "节点路径:" + +#: tools/editor/connections_dialog.cpp +msgid "Method In Node:" +msgstr "节点方法:" + +#: tools/editor/connections_dialog.cpp +msgid "Make Function" +msgstr "创建方法" + +#: tools/editor/connections_dialog.cpp +msgid "Deferred" +msgstr "" + +#: tools/editor/connections_dialog.cpp +msgid "Oneshot" +msgstr "" + +#: tools/editor/connections_dialog.cpp +msgid "Connect" +msgstr "连接" + +#: tools/editor/connections_dialog.cpp +msgid "Connect '%s' to '%s'" +msgstr "连接'%s'到'%s'" + +#: tools/editor/connections_dialog.cpp +msgid "Create Subscription" +msgstr "" + +#: tools/editor/connections_dialog.cpp +msgid "Connect.." +msgstr "连接事件" + +#: tools/editor/connections_dialog.cpp +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Disconnect" +msgstr "删除事件连接" + +#: tools/editor/connections_dialog.cpp +msgid "Edit Connections.." +msgstr "编辑事件连接" + +#: tools/editor/connections_dialog.cpp +msgid "Connections:" +msgstr "事件:" + +#: tools/editor/editor_profiler.cpp +msgid "Stop Profiling" +msgstr "停止" + +#: tools/editor/editor_profiler.cpp +msgid "Start Profiling" +msgstr "开始" + +#: tools/editor/editor_profiler.cpp +msgid "Measure:" +msgstr "测量:" + +#: tools/editor/editor_profiler.cpp +msgid "Frame Time (sec)" +msgstr "帧时间(秒)" + +#: tools/editor/editor_profiler.cpp +msgid "Average Time (sec)" +msgstr "平均帧时间(秒)" + +#: tools/editor/editor_profiler.cpp +msgid "Frame %" +msgstr "渲染速度" + +#: tools/editor/editor_profiler.cpp +msgid "Fixed Frame %" +msgstr "物理速度" + +#: tools/editor/editor_profiler.cpp +msgid "Inclusive" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Self" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Frame #:" +msgstr "帧序号:" + +#: tools/editor/project_settings.cpp +msgid "Invalid action (anything goes but '/' or ':')." +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Action '%s' already exists!" +msgstr "动作%s已存在!" + +#: tools/editor/project_settings.cpp +msgid "Rename Input Action Event" +msgstr "重命名输入事件" + +#: tools/editor/project_settings.cpp +msgid "Add Input Action Event" +msgstr "添加输入事件" + +#: tools/editor/project_settings.cpp +msgid "Meta+" +msgstr "Meta+" + +#: tools/editor/project_settings.cpp +msgid "Shift+" +msgstr "Shift+" + +#: tools/editor/project_settings.cpp +msgid "Alt+" +msgstr "Alt+" + +#: tools/editor/project_settings.cpp +msgid "Control+" +msgstr "Ctrl+" + +#: tools/editor/project_settings.cpp +msgid "Press a Key.." +msgstr "按下一个键.." + +#: tools/editor/project_settings.cpp +msgid "Mouse Button Index:" +msgstr "鼠标按键:" + +#: tools/editor/project_settings.cpp +msgid "Left Button" +msgstr "左键" + +#: tools/editor/project_settings.cpp +msgid "Right Button" +msgstr "右键" + +#: tools/editor/project_settings.cpp +msgid "Middle Button" +msgstr "中键" + +#: tools/editor/project_settings.cpp +msgid "Wheel Up Button" +msgstr "滚轮向上" + +#: tools/editor/project_settings.cpp +msgid "Wheel Down Button" +msgstr "滚轮向下" + +#: tools/editor/project_settings.cpp +msgid "Button 6" +msgstr "按键 6" + +#: tools/editor/project_settings.cpp +msgid "Button 7" +msgstr "按键 7" + +#: tools/editor/project_settings.cpp +msgid "Button 8" +msgstr "按键 8" + +#: tools/editor/project_settings.cpp +msgid "Button 9" +msgstr "按键 9" + +#: tools/editor/project_settings.cpp +msgid "Joystick Axis Index:" +msgstr "手柄摇杆" + +#: tools/editor/project_settings.cpp +msgid "Axis" +msgstr "轴" + +#: tools/editor/project_settings.cpp +msgid "Joystick Button Index:" +msgstr "手柄按钮" + +#: tools/editor/project_settings.cpp +msgid "Add Input Action" +msgstr "添加输入动作" + +#: tools/editor/project_settings.cpp +msgid "Erase Input Action Event" +msgstr "移除输入事件" + +#: tools/editor/project_settings.cpp +msgid "Device" +msgstr "设备" + +#: tools/editor/project_settings.cpp +msgid "Button" +msgstr "按钮" + +#: tools/editor/project_settings.cpp +msgid "Left Button." +msgstr "左键" + +#: tools/editor/project_settings.cpp +msgid "Right Button." +msgstr "右键" + +#: tools/editor/project_settings.cpp +msgid "Middle Button." +msgstr "中键(滚轮)" + +#: tools/editor/project_settings.cpp +msgid "Wheel Up." +msgstr "滚轮向上滚动" + +#: tools/editor/project_settings.cpp +msgid "Wheel Down." +msgstr "滚轮向下滚动" + +#: tools/editor/project_settings.cpp +msgid "Toggle Persisting" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Error saving settings." +msgstr "保存设置出错。" + +#: tools/editor/project_settings.cpp +msgid "Settings saved OK." +msgstr "保存设置成功。" + +#: tools/editor/project_settings.cpp +msgid "Add Translation" +msgstr "添加语言" + +#: tools/editor/project_settings.cpp +msgid "Toggle AutoLoad Globals" +msgstr "切换全局AutoLoad" + +#: tools/editor/project_settings.cpp +msgid "Invalid name." +msgstr "名称非法:" + +#: tools/editor/project_settings.cpp +msgid "Valid characters:" +msgstr "字符合法:" + +#: tools/editor/project_settings.cpp +msgid "Invalid name. Must not collide with an existing engine class name." +msgstr "名称非法,与引擎内置类型名称冲突。" + +#: tools/editor/project_settings.cpp +msgid "Invalid name. Must not collide with an existing buit-in type name." +msgstr "名称非法,与引擎内置类型名称冲突。" + +#: tools/editor/project_settings.cpp +msgid "Invalid name. Must not collide with an existing global constant name." +msgstr "名称非法,与已存在的全局常量名称冲突。" + +#: tools/editor/project_settings.cpp +msgid "Add Autoload" +msgstr "添加Autoload" + +#: tools/editor/project_settings.cpp +msgid "Remove Autoload" +msgstr "移除Autoload" + +#: tools/editor/project_settings.cpp +msgid "Move Autoload" +msgstr "移动Autoload" + +#: tools/editor/project_settings.cpp +msgid "Remove Translation" +msgstr "移除语言" + +#: tools/editor/project_settings.cpp +msgid "Add Remapped Path" +msgstr "添加重定向路径" + +#: tools/editor/project_settings.cpp +msgid "Resource Remap Add Remap" +msgstr "添加资源重定向" + +#: tools/editor/project_settings.cpp +msgid "Change Resource Remap Language" +msgstr "修改语言资源重定向" + +#: tools/editor/project_settings.cpp +msgid "Remove Resource Remap" +msgstr "移除资源重定向" + +#: tools/editor/project_settings.cpp +msgid "Remove Resource Remap Option" +msgstr "移除资源重定向选项" + +#: tools/editor/project_settings.cpp +msgid "Enable" +msgstr "启用" + +#: tools/editor/project_settings.cpp +msgid "Project Settings (engine.cfg)" +msgstr "项目设置(engine.cfg)" + +#: tools/editor/project_settings.cpp tools/editor/settings_config_dialog.cpp +msgid "General" +msgstr "一般" + +#: tools/editor/project_settings.cpp +msgid "Del" +msgstr "删除" + +#: tools/editor/project_settings.cpp +msgid "Copy To Platform.." +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Input Map" +msgstr "事件表" + +#: tools/editor/project_settings.cpp +msgid "Action:" +msgstr "动作:" + +#: tools/editor/project_settings.cpp +msgid "Device:" +msgstr "设备:" + +#: tools/editor/project_settings.cpp +msgid "Index:" +msgstr "序号:" + +#: tools/editor/project_settings.cpp +msgid "Localization" +msgstr "本地化" + +#: tools/editor/project_settings.cpp +msgid "Translations" +msgstr "语言" + +#: tools/editor/project_settings.cpp +msgid "Translations:" +msgstr "语言:" + +#: tools/editor/project_settings.cpp +msgid "Add.." +msgstr "添加:" + +#: tools/editor/project_settings.cpp +msgid "Remaps" +msgstr "重定向" + +#: tools/editor/project_settings.cpp +msgid "Resources:" +msgstr "资源:" + +#: tools/editor/project_settings.cpp +msgid "Remaps by Locale:" +msgstr "地区重定向:" + +#: tools/editor/project_settings.cpp +msgid "Locale" +msgstr "地区" + +#: tools/editor/project_settings.cpp +msgid "AutoLoad" +msgstr "AutoLoad" + +#: tools/editor/project_settings.cpp +msgid "Node Name:" +msgstr "节点名称:" + +#: tools/editor/project_settings.cpp +msgid "List:" +msgstr "列表:" + +#: tools/editor/project_settings.cpp +msgid "Singleton" +msgstr "单例" + +#: tools/editor/scenes_dock.cpp +msgid "Same source and destination files, doing nothing." +msgstr "源文件和目标文件相同,操作忽略。" + +#: tools/editor/scenes_dock.cpp +msgid "Same source and destination paths, doing nothing." +msgstr "源路径和目标路径相同,操作忽略。" + +#: tools/editor/scenes_dock.cpp +msgid "Can't move directories to within themselves." +msgstr "无法将目录移动到自身下。" + +#: tools/editor/scenes_dock.cpp +msgid "Can't operate on '..'" +msgstr "无法对'..'引用操作。" + +#: tools/editor/scenes_dock.cpp +msgid "Pick New Name and Location For:" +msgstr "选择新名称和路径:" + +#: tools/editor/scenes_dock.cpp +msgid "No files selected!" +msgstr "没有选中任何文件!" + +#: tools/editor/scenes_dock.cpp +msgid "Instance" +msgstr "创建实例节点" + +#: tools/editor/scenes_dock.cpp +msgid "Edit Dependencies.." +msgstr "编辑依赖.." + +#: tools/editor/scenes_dock.cpp tools/editor/plugins/spatial_editor_plugin.cpp +msgid "View Owners.." +msgstr "查看所有者" + +#: tools/editor/scenes_dock.cpp +msgid "Rename or Move.." +msgstr "移动或重命名" + +#: tools/editor/scenes_dock.cpp +msgid "Move To.." +msgstr "移动" + +#: tools/editor/scenes_dock.cpp +msgid "Info" +msgstr "信息" + +#: tools/editor/scenes_dock.cpp +msgid "Show In File Manager" +msgstr "在资源管理器中打开" + +#: tools/editor/scenes_dock.cpp +msgid "Previous Directory" +msgstr "上一个目录:" + +#: tools/editor/scenes_dock.cpp +msgid "Next Directory" +msgstr "下一个目录:" + +#: tools/editor/scenes_dock.cpp +msgid "Re-Scan Filesystem" +msgstr "重新扫描文件系统" + +#: tools/editor/scenes_dock.cpp +msgid "Toggle folder status as Favorite" +msgstr "收藏目录" + +#: tools/editor/scenes_dock.cpp +msgid "Instance the selected scene(s) as child of the selected node." +msgstr "将选中的场景实例为选中节点的子节点。" + +#: tools/editor/scenes_dock.cpp +msgid "Move" +msgstr "移动" + +#: tools/editor/code_editor.cpp +msgid "Go to Line" +msgstr "转到行" + +#: tools/editor/code_editor.cpp +msgid "Line Number:" +msgstr "行号:" + +#: tools/editor/code_editor.cpp +msgid "Replace" +msgstr "替换" + +#: tools/editor/code_editor.cpp +msgid "Next" +msgstr "下一项" + +#: tools/editor/code_editor.cpp +msgid "Replaced %d ocurrence(s)." +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Not found!" +msgstr "未找到!" + +#: tools/editor/code_editor.cpp +msgid "Replace By" +msgstr "替换" + +#: tools/editor/code_editor.cpp +msgid "Whole Words" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Case Sensitive" +msgstr "区分大小写" + +#: tools/editor/code_editor.cpp +msgid "Backwards" +msgstr "向后" + +#: tools/editor/code_editor.cpp +msgid "Prompt On Replace" +msgstr "更换时提示" + +#: tools/editor/code_editor.cpp +msgid "Selection Only" +msgstr "仅选中" + +#: tools/editor/code_editor.cpp +msgid "Skip" +msgstr "跳过" + +#: tools/editor/code_editor.cpp +msgid "Col:" +msgstr "列:" + +#: tools/editor/settings_config_dialog.cpp +msgid "Plugin List:" +msgstr "插件列表" + +#: tools/editor/dependency_editor.cpp +msgid "Search Replacement For:" +msgstr "搜索替换:" + +#: tools/editor/dependency_editor.cpp +msgid "Dependencies For:" +msgstr "依赖项:" + +#: tools/editor/dependency_editor.cpp +msgid "" +"Scene '%s' is currently being edited.\n" +"Changes will not take effect unless reloaded." +msgstr "场景%s已被修改,重新加载后生效。" + +#: tools/editor/dependency_editor.cpp +msgid "" +"Resource '%s' is in use.\n" +"Changes will take effect when reloaded." +msgstr "资源%s正在使用中,修改将在重新加载后生效。" + +#: tools/editor/dependency_editor.cpp +msgid "Dependencies" +msgstr "依赖" + +#: tools/editor/dependency_editor.cpp +msgid "Resource" +msgstr "资源" + +#: tools/editor/dependency_editor.cpp +msgid "Dependencies:" +msgstr "依赖:" + +#: tools/editor/dependency_editor.cpp +msgid "Fix Broken" +msgstr "修复依赖" + +#: tools/editor/dependency_editor.cpp +msgid "Dependency Editor" +msgstr "依赖编辑器" + +#: tools/editor/dependency_editor.cpp +msgid "Search Replacement Resource:" +msgstr "查找替换资源:" + +#: tools/editor/dependency_editor.cpp +msgid "Owners Of:" +msgstr "拥有者:" + +#: tools/editor/dependency_editor.cpp +msgid "" +"The files being removed are required by other resources in order for them to " +"work.\n" +"Remove them anyway? (no undo)" +msgstr "要删除的文件被其他资源所依赖,仍然要删除吗(无法撤销)?" + +#: tools/editor/dependency_editor.cpp +msgid "Remove selected files from the project? (no undo)" +msgstr "确定从项目中删除文件(此操作无法撤销)?" + +#: tools/editor/dependency_editor.cpp +msgid "Error loading:" +msgstr "加载出错:" + +#: tools/editor/dependency_editor.cpp +msgid "Scene failed to load due to missing dependencies:" +msgstr "加载场景失败,找不到以下依赖项目:" + +#: tools/editor/dependency_editor.cpp +msgid "Open Anyway" +msgstr "仍然打开" + +#: tools/editor/dependency_editor.cpp +msgid "Which action should be taken?" +msgstr "应采取哪项行动?" + +#: tools/editor/dependency_editor.cpp +msgid "Fix Dependencies" +msgstr "修复依赖项" + +#: tools/editor/dependency_editor.cpp +msgid "Errors loading!" +msgstr "加载出错!" + +#: tools/editor/dependency_editor.cpp +msgid "Permanently delete %d item(s)? (No undo!)" +msgstr "永久删除选中的%d条项目吗(此操作无法撤销!)?" + +#: tools/editor/dependency_editor.cpp +msgid "Owns" +msgstr "拥有对象" + +#: tools/editor/dependency_editor.cpp +msgid "Resources Without Explicit Ownership:" +msgstr "没有指定所属关系的资源:" + +#: tools/editor/dependency_editor.cpp +msgid "Delete selected files?" +msgstr "删除选中的文件?" + +#: tools/editor/editor_file_system.cpp +msgid "Cannot go into subdir:" +msgstr "无法打开目录:" + +#: tools/editor/editor_file_system.cpp +msgid "ScanSources" +msgstr "" + +#: tools/editor/run_settings_dialog.cpp +msgid "Run Mode:" +msgstr "运行模式:" + +#: tools/editor/run_settings_dialog.cpp +msgid "Current Scene" +msgstr "当前场景" + +#: tools/editor/run_settings_dialog.cpp +msgid "Main Scene" +msgstr "主场景" + +#: tools/editor/run_settings_dialog.cpp +msgid "Main Scene Arguments:" +msgstr "主场景参数:" + +#: tools/editor/run_settings_dialog.cpp +msgid "Scene Run Settings" +msgstr "场景运行设置" + +#: tools/editor/resources_dock.cpp +msgid "Create New Resource" +msgstr "创建资源" + +#: tools/editor/resources_dock.cpp +msgid "Open Resource" +msgstr "打开资源" + +#: tools/editor/resources_dock.cpp +msgid "Save Resource" +msgstr "保存资源" + +#: tools/editor/resources_dock.cpp +msgid "Resource Tools" +msgstr "资源工具" + +#: tools/editor/resources_dock.cpp +msgid "Make Local" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Edit Script Options" +msgstr "脚本编辑器选项" + +#: tools/editor/project_export.cpp +msgid "Please export outside the project folder!" +msgstr "请导出到项目目录之外!" + +#: tools/editor/project_export.cpp +msgid "Error exporting project!" +msgstr "导出项目出错!" + +#: tools/editor/project_export.cpp +msgid "Error writing the project PCK!" +msgstr "写入项目PCK文件出错!" + +#: tools/editor/project_export.cpp +msgid "No exporter for platform '%s' yet." +msgstr "没有针对'%s'平台的导出模板。" + +#: tools/editor/project_export.cpp +msgid "Include" +msgstr "包含" + +#: tools/editor/project_export.cpp +msgid "Change Image Group" +msgstr "修改图片分组" + +#: tools/editor/project_export.cpp +msgid "Group name can't be empty!" +msgstr "分组名称不能为空!" + +#: tools/editor/project_export.cpp +msgid "Invalid character in group name!" +msgstr "分组名称中包含非法字符!" + +#: tools/editor/project_export.cpp +msgid "Group name already exists!" +msgstr "分组名称已存在!" + +#: tools/editor/project_export.cpp +msgid "Add Image Group" +msgstr "添加图片分组" + +#: tools/editor/project_export.cpp +msgid "Delete Image Group" +msgstr "删除图片分组" + +#: tools/editor/project_export.cpp +msgid "Atlas Preview" +msgstr "预览精灵集" + +#: tools/editor/project_export.cpp +msgid "Project Export Settings" +msgstr "项目导出设置" + +#: tools/editor/project_export.cpp +msgid "Target" +msgstr "平台" + +#: tools/editor/project_export.cpp +msgid "Export to Platform" +msgstr "导出到平台" + +#: tools/editor/project_export.cpp tools/editor/plugins/theme_editor_plugin.cpp +msgid "Options" +msgstr "选项" + +#: tools/editor/project_export.cpp +msgid "Resources" +msgstr "资源" + +#: tools/editor/project_export.cpp +msgid "Export selected resources (including dependencies)." +msgstr "导出选中的资源(包括其依赖资源)" + +#: tools/editor/project_export.cpp +msgid "Export all resources in the project." +msgstr "导出项目中的所有资源" + +#: tools/editor/project_export.cpp +msgid "Export all files in the project directory." +msgstr "导出项目目录下的所有文件" + +#: tools/editor/project_export.cpp +msgid "Export Mode:" +msgstr "导出模式:" + +#: tools/editor/project_export.cpp +msgid "Resources to Export:" +msgstr "导出的资源:" + +#: tools/editor/project_export.cpp +msgid "File" +msgstr "文件" + +#: tools/editor/project_export.cpp +msgid "Action" +msgstr "动作" + +#: tools/editor/project_export.cpp +msgid "" +"Filters to export non-resource files (comma-separated, e.g.: *.json, *.txt):" +msgstr "导出非资源文件筛选(使用英文逗号分隔,如:*.json,*.txt):" + +#: tools/editor/project_export.cpp +msgid "Filters to exclude from export (comma-separated, e.g.: *.json, *.txt):" +msgstr "排除导出的非资源文件筛选(使用英文逗号分隔,如:*.json,*.txt):" + +#: tools/editor/project_export.cpp +msgid "Convert text scenes to binary on export." +msgstr "导出时将文本场景写入二进制文件。" + +#: tools/editor/project_export.cpp +msgid "Images" +msgstr "图片" + +#: tools/editor/project_export.cpp +msgid "Keep Original" +msgstr "保持原样" + +#: tools/editor/project_export.cpp +msgid "Compress for Disk (Lossy, WebP)" +msgstr "节省磁盘空间(有损压缩,WebP)" + +#: tools/editor/project_export.cpp +msgid "Compress for RAM (BC/PVRTC/ETC)" +msgstr "节省内存(BC/PVRTC/ETC)" + +#: tools/editor/project_export.cpp +msgid "Convert Images (*.png):" +msgstr "转换图片(*.png):" + +#: tools/editor/project_export.cpp +msgid "Compress for Disk (Lossy) Quality:" +msgstr "高质量(有损)节省磁盘空间" + +#: tools/editor/project_export.cpp +msgid "Shrink All Images:" +msgstr "收缩所有图片:" + +#: tools/editor/project_export.cpp +msgid "Compress Formats:" +msgstr "压缩格式:" + +#: tools/editor/project_export.cpp +msgid "Image Groups" +msgstr "图片分组" + +#: tools/editor/project_export.cpp +msgid "Groups:" +msgstr "分组:" + +#: tools/editor/project_export.cpp +msgid "Compress Disk" +msgstr "节省磁盘空间" + +#: tools/editor/project_export.cpp +msgid "Compress RAM" +msgstr "节省内存" + +#: tools/editor/project_export.cpp +msgid "Compress Mode:" +msgstr "压缩方式:" + +#: tools/editor/project_export.cpp +msgid "Lossy Quality:" +msgstr "图片质量:" + +#: tools/editor/project_export.cpp +msgid "Atlas:" +msgstr "精灵集:" + +#: tools/editor/project_export.cpp +msgid "Shrink By:" +msgstr "收缩方式:" + +#: tools/editor/project_export.cpp +msgid "Preview Atlas" +msgstr "精灵集预览:" + +#: tools/editor/project_export.cpp +msgid "Image Filter:" +msgstr "纹理过滤:\t\t" + +#: tools/editor/project_export.cpp +msgid "Images:" +msgstr "图片" + +#: tools/editor/project_export.cpp +msgid "Select None" +msgstr "取消选择" + +#: tools/editor/project_export.cpp +msgid "Samples" +msgstr "音效" + +#: tools/editor/project_export.cpp +msgid "Sample Conversion Mode: (.wav files):" +msgstr "音效转换方式(.wav文件):" + +#: tools/editor/project_export.cpp +msgid "Keep" +msgstr "保持不变" + +#: tools/editor/project_export.cpp +msgid "Compress (RAM - IMA-ADPCM)" +msgstr "压缩(RAM - IMA-ADPCM)" + +#: tools/editor/project_export.cpp +msgid "Sampling Rate Limit (Hz):" +msgstr "采样率(Hz):" + +#: tools/editor/project_export.cpp +msgid "Trim" +msgstr "修剪" + +#: tools/editor/project_export.cpp +msgid "Trailing Silence:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Script" +msgstr "脚本" + +#: tools/editor/project_export.cpp +msgid "Script Export Mode:" +msgstr "脚本导出方式:" + +#: tools/editor/project_export.cpp +msgid "Text" +msgstr "文本" + +#: tools/editor/project_export.cpp +msgid "Compiled" +msgstr "编译" + +#: tools/editor/project_export.cpp +msgid "Encrypted (Provide Key Below)" +msgstr "使用下列密码加密" + +#: tools/editor/project_export.cpp +msgid "Script Encryption Key (256-bits as hex):" +msgstr "脚本密匙(256位16进制码)" + +#: tools/editor/project_export.cpp +msgid "Export PCK/Zip" +msgstr "导出 PCK/ZIP" + +#: tools/editor/project_export.cpp +msgid "Export Project PCK" +msgstr "导出项目PCK文件" + +#: tools/editor/project_export.cpp +msgid "Export.." +msgstr "导出.." + +#: tools/editor/project_export.cpp +msgid "Project Export" +msgstr "项目导出" + +#: tools/editor/project_export.cpp +msgid "Export Preset:" +msgstr "导出预设" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Create UV Map" +msgstr "创建UV贴图" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +#: tools/editor/plugins/collision_polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +msgid "Create Poly" +msgstr "创建多边形" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +#: tools/editor/plugins/collision_polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/collision_polygon_editor_plugin.cpp +#: tools/editor/plugins/path_2d_editor_plugin.cpp +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +msgid "Edit Poly" +msgstr "编辑多边形" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +#: tools/editor/plugins/collision_polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/collision_polygon_editor_plugin.cpp +#: tools/editor/plugins/path_2d_editor_plugin.cpp +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +msgid "Edit Poly (Remove Point)" +msgstr "编辑多边形(移除顶点)" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Transform UV Map" +msgstr "变换UV贴图" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Polygon 2D UV Editor" +msgstr "2D多边形UV编辑器" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Move Point" +msgstr "移动点" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Ctrl: Rotate" +msgstr "Ctrl:旋转" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Shift: Move All" +msgstr "Shift: 移动所有" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Shift+Ctrl: Scale" +msgstr "Shift+Ctrl: 缩放" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Move Polygon" +msgstr "移动多边形" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Rotate Polygon" +msgstr "旋转多边形" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Scale Polygon" +msgstr "缩放多边形" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Polygon->UV" +msgstr "多边形->UV" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "UV->Polygon" +msgstr "UV->多边形" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Clear UV" +msgstr "清除UV" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/sprite_region_editor_plugin.cpp +msgid "Snap" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/sprite_region_editor_plugin.cpp +msgid "Enable Snap" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/sprite_region_editor_plugin.cpp +msgid "Grid" +msgstr "网格" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/sprite_region_editor_plugin.cpp +msgid "Show Grid" +msgstr "显示网格" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/sprite_region_editor_plugin.cpp +msgid "Grid Offset:" +msgstr "网格偏移量:" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/sprite_region_editor_plugin.cpp +msgid "Grid Step:" +msgstr "网格大小:" + +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "Create Navigation Polygon" +msgstr "创建导航多边形" + +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "Remove Poly And Point" +msgstr "移除多边形及顶点" + +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +#: tools/editor/plugins/collision_polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +msgid "Create a new polygon from scratch." +msgstr "" + +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +msgid "Edit existing polygon:" +msgstr "编辑已存在的多边形:" + +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +msgid "LMB: Move Point." +msgstr "鼠标左键:移动点" + +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +msgid "Ctrl+LMB: Split Segment." +msgstr "Ctrl+鼠标左键:分割视图块" + +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +msgid "RMB: Erase Point." +msgstr "鼠标右键:移除点" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Parsing %d Triangles:" +msgstr "正在解析第%d个三角形:" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Triangle #" +msgstr "三角形 #" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Light Baker Setup:" +msgstr "建立烘培:" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Parsing Geometry" +msgstr "解析多边形中" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Fixing Lights" +msgstr "修正光照" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Making BVH" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Creating Light Octree" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Creating Octree Texture" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Transfer to Lightmaps:" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Allocating Texture #" +msgstr "分配纹理 #" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Baking Triangle #" +msgstr "烘培三角形 #" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Post-Processing Texture #" +msgstr "" + +#: tools/editor/plugins/camera_editor_plugin.cpp +msgid "Preview" +msgstr "预览" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Can't save theme to file:" +msgstr "无法保存主题到文件:" + +#: tools/editor/plugins/theme_editor_plugin.cpp +#: tools/editor/plugins/tile_set_editor_plugin.cpp +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Add Item" +msgstr "添加项目" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Add All Items" +msgstr "添加所有项目" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Add All" +msgstr "添加所有" + +#: tools/editor/plugins/theme_editor_plugin.cpp +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Remove Item" +msgstr "移除项目" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Add Class Items" +msgstr "添加类项目" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Remove Class Items" +msgstr "移除类项目" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Create Template" +msgstr "创建模板" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "CheckBox Radio1" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "CheckBox Radio2" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Item" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Check Item" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Checked Item" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Has" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Many" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Have,Many,Several,Options!" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Tab 1" +msgstr "分页1" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Tab 2" +msgstr "分页2" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Tab 3" +msgstr "分页3" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Data Type:" +msgstr "数据类型:" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Icon" +msgstr "图标" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Style" +msgstr "样式" + +#: tools/editor/plugins/theme_editor_plugin.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Font" +msgstr "字体" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Color" +msgstr "颜色" + +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Curve Point #" +msgstr "曲线定点 #" + +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Set Curve Point Pos" +msgstr "设置曲线顶点坐标" + +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Set Curve In Pos" +msgstr "" + +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Set Curve Out Pos" +msgstr "" + +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Split Path" +msgstr "" + +#: tools/editor/plugins/path_editor_plugin.cpp +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Add Point to Curve" +msgstr "向曲线添加顶点" + +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Remove Path Point" +msgstr "移除路径顶点" + +#: tools/editor/plugins/path_editor_plugin.cpp +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Select Points" +msgstr "选择顶点" + +#: tools/editor/plugins/path_editor_plugin.cpp +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Shift+Drag: Select Control Points" +msgstr "Shift+拖拽:选择控制点" + +#: tools/editor/plugins/path_editor_plugin.cpp +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Click: Add Point" +msgstr "鼠标左键:添加点" + +#: tools/editor/plugins/path_editor_plugin.cpp +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Right Click: Delete Point" +msgstr "鼠标右键:删除点" + +#: tools/editor/plugins/path_editor_plugin.cpp +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Add Point (in empty space)" +msgstr "" + +#: tools/editor/plugins/path_editor_plugin.cpp +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Split Segment (in curve)" +msgstr "" + +#: tools/editor/plugins/path_editor_plugin.cpp +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Delete Point" +msgstr "删除顶点" + +#: tools/editor/plugins/path_editor_plugin.cpp +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Close Curve" +msgstr "关闭曲线" + +#: tools/editor/plugins/item_list_editor_plugin.cpp +msgid "Item %d" +msgstr "第%d项" + +#: tools/editor/plugins/item_list_editor_plugin.cpp +msgid "Items" +msgstr "项目" + +#: tools/editor/plugins/item_list_editor_plugin.cpp +msgid "Item List Editor" +msgstr "列表编辑器" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Mesh is empty!" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Static Trimesh Body" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Static Convex Body" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "This doesn't work on scene root!" +msgstr "此操作无法引用在根节点上!" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Trimesh Shape" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Convex Shape" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Navigation Mesh" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "MeshInstance lacks a Mesh!" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Could not create outline!" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Outline" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Trimesh Static Body" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Convex Static Body" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Trimesh Collision Sibling" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Convex Collision Sibling" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Outline Mesh.." +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Outline Mesh" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Outline Size:" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Paint TileMap" +msgstr "绘制砖块地图" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Erase TileMap" +msgstr "擦除砖块地图" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Bucket" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Pick Tile" +msgstr "选择砖块" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Select" +msgstr "选择" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Erase Selection" +msgstr "擦除选中" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Transpose" +msgstr "转置" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Mirror X (A)" +msgstr "沿X轴翻转(A)" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Mirror Y (S)" +msgstr "沿Y轴翻转(S)" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Rotate 0 degrees" +msgstr "旋转0度" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Rotate 90 degrees" +msgstr "旋转90度" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Rotate 180 degrees" +msgstr "旋转180度" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Rotate 270 degrees" +msgstr "旋转270度" + +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Find.." +msgstr "查找.." + +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Find Next" +msgstr "查找下一项" + +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Replace.." +msgstr "替换.." + +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Goto Line.." +msgstr "前往行.." + +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Vertex" +msgstr "顶点" + +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Fragment" +msgstr "片段" + +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Lighting" +msgstr "光照" + +#: tools/editor/plugins/collision_shape_2d_editor_plugin.cpp +msgid "Set Handle" +msgstr "" + +#: tools/editor/plugins/style_box_editor_plugin.cpp +msgid "StyleBox Preview:" +msgstr "StyleBox预览:" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Error while saving theme" +msgstr "保存主题出错。" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Error saving" +msgstr "保存出错" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Error importing theme" +msgstr "导入主题出错。" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Error importing" +msgstr "导入出错" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Import Theme" +msgstr "导入主题" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Save Theme As.." +msgstr "主题另存为" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Save All" +msgstr "全部保存" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "History Prev" +msgstr "后退" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "History Next" +msgstr "前进" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Reload Theme" +msgstr "重新加载主题" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Save Theme" +msgstr "保存主题" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Save Theme As" +msgstr "主题另存为" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Indent Left" +msgstr "向左缩进" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Indent Right" +msgstr "向右缩进" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Toggle Comment" +msgstr "切换注释" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Clone Down" +msgstr "拷贝到下一行" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Complete Symbol" +msgstr "代码补全" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Trim Trailing Whitespace" +msgstr "修剪行后空白" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Auto Indent" +msgstr "自动缩进" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Goto Function.." +msgstr "前往函数.." + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Debug" +msgstr "调试" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Toggle Breakpoint" +msgstr "切换断点" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Keep Debugger Open" +msgstr "保持调试器打开" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Window" +msgstr "窗口" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Move Left" +msgstr "向左移动" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Move Right" +msgstr "向右移动" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Help" +msgstr "帮助" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Contextual" +msgstr "搜索光标位置" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Tutorials" +msgstr "教程" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Open https://godotengine.org at tutorials section." +msgstr "打开 https://godotengine.org 中的教程." + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Classes" +msgstr "类型" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Search the class hierarchy." +msgstr "搜索类" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Search Help" +msgstr "搜索帮助" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Search the reference documentation." +msgstr "搜索文档" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Go to previous edited document." +msgstr "前往上一个编辑文档" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Go to next edited document." +msgstr "前往下一个编辑文档" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Create Script" +msgstr "创建脚本" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "" +"The following files are newer on disk.\n" +"What action should be taken?:" +msgstr "" +"磁盘中的下列文件已更新。\n" +"请选择执行那项操作?:" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Reload" +msgstr "重新加载" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Resave" +msgstr "重新保存" + +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Could not find tile:" +msgstr "找不到砖块:" + +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Item name or ID:" +msgstr "项目名称或ID" + +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Create from scene?" +msgstr "从场景中创建?" + +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Merge from scene?" +msgstr "确定要合并场景?" + +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Create from Scene" +msgstr "从场景中创建" + +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Merge from Scene" +msgstr "从场景中合并" + +#: tools/editor/plugins/collision_polygon_editor_plugin.cpp +msgid "Create Poly3D" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Configure Snap" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation Offset:" +msgstr "旋转偏移量:" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation Step:" +msgstr "旋转步长:" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Move Pivot" +msgstr "移动旋转中心位置" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Move Action" +msgstr "移动动作" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Edit IK Chain" +msgstr "编辑IK链" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Edit CanvasItem" +msgstr "编辑CanvasItem" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Change Anchors" +msgstr "编辑锚点" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Zoom (%):" +msgstr "缩放(%)" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Paste Pose" +msgstr "粘贴姿势" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Select Mode (Q)" +msgstr "选择模式(Q)" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Drag: Rotate" +msgstr "拖动来旋转" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Alt+Drag: Move" +msgstr "按住Alt拖动: 移动" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)." +msgstr "按下V键修改旋转中心,在移动时按下Shift+V来拖动它。" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Alt+RMB: Depth list selection" +msgstr "Alt+鼠标右键:显示鼠标点击位置下的所有节点列表" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Move Mode (W)" +msgstr "移动模式(W)" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rotate Mode (E)" +msgstr "旋转模式(E)" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Show a list of all objects at the position clicked\n" +"(same as Alt+RMB in select mode)." +msgstr "显示鼠标点击位置的所有节点(同Alt+鼠标右键)" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Click to change object's rotation pivot." +msgstr "点击设置对象的旋转中心。" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Pan Mode" +msgstr "移动画布" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Lock the selected object in place (can't be moved)." +msgstr "锁定选中对象的位置。" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Unlock the selected object (can be moved)." +msgstr "解锁选中对象的位置。" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Makes sure the object's children are not selectable." +msgstr "确保节点的子孙无法被选中。" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Restores the object's children's ability to be selected." +msgstr "恢复节点的子孙能够被选中。" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Use Snap" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Use Rotation Snap" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Snap Relative" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Configure Snap.." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Use Pixel Snap" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Expand to Parent" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Skeleton.." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Make Bones" +msgstr "添加骨骼" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Clear Bones" +msgstr "清除骨骼" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Make IK Chain" +msgstr "添加IK链" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Clear IK Chain" +msgstr "清除IK链" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "View" +msgstr "视图" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Zoom In" +msgstr "放大" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Zoom Out" +msgstr "缩小" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Zoom Reset" +msgstr "重置缩放" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Zoom Set.." +msgstr "设置缩放.." + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Selection" +msgstr "居中显示选中节点" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Frame Selection" +msgstr "最大化显示选中节点" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Anchor" +msgstr "锚点" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Insert Keys (Ins)" +msgstr "插入关键帧( 创建轨道)" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Insert Key" +msgstr "插入关键帧" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Insert Key (Existing Tracks)" +msgstr "插入关键帧(已有轨道)" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Copy Pose" +msgstr "拷贝姿势" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Clear Pose" +msgstr "清除姿势" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Set a Value" +msgstr "设置值" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Snap (Pixels):" +msgstr "" + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Creating Mesh Library" +msgstr "" + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Thumbnail.." +msgstr "" + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Remove item %d?" +msgstr "确定要移除项目%d吗?" + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Import Scene" +msgstr "导入场景" + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Remove Selected Item" +msgstr "移除选中项目" + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Import from Scene" +msgstr "从场景中导入" + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Update from Scene" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Scalar Constant" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Vec Constant" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change RGB Constant" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Scalar Operator" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Vec Operator" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Vec Scalar Operator" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change RGB Operator" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Toggle Rot Only" +msgstr "切换旋转模式" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Scalar Function" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Vec Function" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Scalar Uniform" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Vec Uniform" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change RGB Uniform" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Default Value" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change XForm Uniform" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Texture Uniform" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Cubemap Uniform" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Comment" +msgstr "更改注释" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Add/Remove to Color Ramp" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +#: tools/editor/plugins/color_ramp_editor_plugin.cpp +msgid "Modify Color Ramp" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Add/Remove to Curve Map" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Modify Curve Map" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Input Name" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Connect Graph Nodes" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Disconnect Graph Nodes" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Remove Shader Graph Node" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Move Shader Graph Node" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Duplicate Graph Node(s)" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Delete Shader Graph Node(s)" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Error: Cyclic Connection Link" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Error: Missing Input Connections" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Add Shader Graph Node" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Remove Point from Curve" +msgstr "从曲线中移除顶点" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Move Point in Curve" +msgstr "在曲线中移动顶点" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Move In-Control in Curve" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Move Out-Control in Curve" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Select Control Points (Shift+Drag)" +msgstr "" + +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +msgid "Create Occluder Polygon" +msgstr "添加遮光多边形" + +#: tools/editor/plugins/sprite_region_editor_plugin.cpp +msgid "Set region_rect" +msgstr "设置纹理区域" + +#: tools/editor/plugins/sprite_region_editor_plugin.cpp +msgid "Sprite Region Editor" +msgstr "精灵纹理区域编辑" + +#: tools/editor/plugins/sample_editor_plugin.cpp +msgid "Length:" +msgstr "长度:" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "ERROR: Couldn't load frame resource!" +msgstr "错误:无法加载帧资源!" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Add Frame" +msgstr "添加帧" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +msgid "Delete Resource" +msgstr "删除资源" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Resource clipboard is empty or not a texture!" +msgstr "资源剪切板中无内容,或内容不是纹理贴图!" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Paste Frame" +msgstr "粘贴帧" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Add Empty" +msgstr "添加空白帧" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Rename Animation" +msgstr "重命名动画" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Add Animation" +msgstr "添加动画" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Remove Animation" +msgstr "移除动画" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Change Animation Loop" +msgstr "修改循环" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Change Animation FPS" +msgstr "修改FPS" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "(empty)" +msgstr "(空)" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Animations" +msgstr "动画" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Speed (FPS):" +msgstr "速度(FPS)" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Loop" +msgstr "循环" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Animation Frames" +msgstr "动画帧" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +msgid "Load Resource" +msgstr "加载资源" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Insert Empty (Before)" +msgstr "插入空白帧(之前)" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Insert Empty (After)" +msgstr "插入空白帧(之后)" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Up" +msgstr "向上" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Down" +msgstr "向下" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Toggle Autoplay" +msgstr "切换AutoPlay" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "New Animation Name:" +msgstr "新动画名称:" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "New Anim" +msgstr "新建动画" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Change Animation Name:" +msgstr "重命名动画:" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "ERROR: Invalid animation name!" +msgstr "错误:动画名不合法!" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "ERROR: Animation name already exists!" +msgstr "错误:已存在同名动画!" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Blend Next Changed" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Change Blend Time" +msgstr "更改混合时间" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Load Animation" +msgstr "加载动画" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Duplicate Animation" +msgstr "复制动画" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "ERROR: No animation to copy!" +msgstr "错误:没有拷贝的动画!" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "ERROR: No animation resource on clipboard!" +msgstr "错误:剪切板中没有动画资源!" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Pasted Animation" +msgstr "已粘贴的动画" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Paste Animation" +msgstr "粘贴动画" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "ERROR: No animation to edit!" +msgstr "错误:没有选中要编辑的动画!" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Play selected animation backwards from current pos. (A)" +msgstr "从当前位置倒放选中动画(A)" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Play selected animation backwards from end. (Shift+A)" +msgstr "从结束时间倒放选中动画(Shift+A)" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Stop animation playback. (S)" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Play selected animation from start. (Shift+D)" +msgstr "从头播放选中动画(Shift+D)" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Play selected animation from current pos. (D)" +msgstr "从当前位置播放选中动画(D)" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Animation position (in seconds)." +msgstr "动画位置(单位:秒)" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Scale animation playback globally for the node." +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Create new animation in player." +msgstr "在播放中创建动画。" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Load an animation from disk." +msgstr "从磁盘中加载动画。" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Save the current animation" +msgstr "保存当前动画" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Display list of animations in player." +msgstr "在播放器中显示动画列表。" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Autoplay on Load" +msgstr "加载后自动播放" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Edit Target Blend Times" +msgstr "编辑目标混合时间" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Animation Tools" +msgstr "动画工具" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Copy Animation" +msgstr "拷贝动画" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Create New Animation" +msgstr "创建新动画" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Animation Name:" +msgstr "动画名称:" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Blend Times:" +msgstr "混合时间:" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Next (Auto Queue):" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Cross-Animation Blend Times" +msgstr "跨动画时间混合" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Animation" +msgstr "动画" + +#: tools/editor/plugins/particles_2d_editor_plugin.cpp +msgid "Error loading image:" +msgstr "加载图片出错:" + +#: tools/editor/plugins/particles_2d_editor_plugin.cpp +msgid "No pixels with transparency > 128 in image.." +msgstr "" + +#: tools/editor/plugins/particles_2d_editor_plugin.cpp +msgid "Set Emission Mask" +msgstr "" + +#: tools/editor/plugins/particles_2d_editor_plugin.cpp +msgid "Clear Emission Mask" +msgstr "" + +#: tools/editor/plugins/particles_2d_editor_plugin.cpp +msgid "Load Emission Mask" +msgstr "" + +#: tools/editor/plugins/particles_2d_editor_plugin.cpp +msgid "Generated Point Count:" +msgstr "" + +#: tools/editor/plugins/color_ramp_editor_plugin.cpp +msgid "Add/Remove Color Ramp Point" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Node does not contain geometry." +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Node does not contain geometry (faces)." +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Faces contain no area!" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "No faces!" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Generate AABB" +msgstr "生成AABB" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Create Emitter From Mesh" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Create Emitter From Node" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Clear Emitter" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Create Emitter" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Emission Positions:" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Emission Fill:" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Surface" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Volume" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "No mesh source specified (and no MultiMesh set in node)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "No mesh source specified (and MultiMesh contains no Mesh)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Mesh source is invalid (invalid path)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Mesh source is invalid (not a MeshInstance)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Mesh source is invalid (contains no Mesh resource)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "No surface source specified." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Surface source is invalid (invalid path)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Surface source is invalid (no geometry)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Surface source is invalid (no faces)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Parent has no solid faces to populate." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Couldn't map area." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Select a Source Mesh:" +msgstr "选择源Mesh:" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Select a Target Surface:" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Populate Surface" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Populate MultiMesh" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Target Surface:" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Source Mesh:" +msgstr "源Mesh:" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "X-Axis" +msgstr "X轴" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Y-Axis" +msgstr "Y轴" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Z-Axis" +msgstr "Z轴" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Mesh Up Axis:" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Random Rotation:" +msgstr "随机旋转:" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Random Tilt:" +msgstr "随机砖块:" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Random Scale:" +msgstr "随机缩放:" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Scale:" +msgstr "缩放" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Amount:" +msgstr "数量:" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Populate" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Open Sample File(s)" +msgstr "打开声音文件" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "ERROR: Couldn't load sample!" +msgstr "错误:无法加载音效!" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Add Sample" +msgstr "添加音效" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Stop" +msgstr "停止" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Play" +msgstr "播放" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Rename Sample" +msgstr "重命名音效" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Delete Sample" +msgstr "删除音效" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "16 Bits" +msgstr "16位" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "8 Bits" +msgstr "8位" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Stereo" +msgstr "立体声" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Mono" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Pitch" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "New name:" +msgstr "新名称:" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Fade In (s):" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Fade Out (s):" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Mix" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Auto Restart:" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Restart (s):" +msgstr "重新开始(秒):" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Random Restart (s):" +msgstr "随机开始(秒):" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Start!" +msgstr "开始!" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend:" +msgstr "混合:" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend 0:" +msgstr "混合0:" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend 1:" +msgstr "混合1:" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "X-Fade Time (s):" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Current:" +msgstr "当前:" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Add Input" +msgstr "添加输入事件" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Clear Auto-Advance" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Set Auto-Advance" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Delete Input" +msgstr "删除输入事件" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Rename" +msgstr "重命名" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Animation tree is valid." +msgstr "动画树可用。" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Animation tree is invalid." +msgstr "动画树不可用。" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Animation Node" +msgstr "动画节点" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "OneShot Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Mix Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend2 Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend3 Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend4 Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "TimeScale Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "TimeSeek Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Transition Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Import Animations.." +msgstr "导入动画" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Edit Node Filters" +msgstr "编辑节点筛选" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Filters.." +msgstr "筛选.." + +#: tools/editor/plugins/rich_text_editor_plugin.cpp +msgid "Parse BBCode" +msgstr "解析BBCode" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Orthogonal" +msgstr "正交" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Perspective" +msgstr "透视" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Transform Aborted." +msgstr "已忽略变换。" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "View Plane Transform." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "X-Axis Transform." +msgstr "X轴变换。" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Y-Axis Transform." +msgstr "Y轴变换。" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Z-Axis Transform." +msgstr "Z轴变换。" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Scaling to %s%%." +msgstr "缩放到%s%%" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rotating %s degrees." +msgstr "旋转%s度" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Bottom View." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Bottom" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Top View." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Top" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rear View." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rear" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Front View." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Front" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Left View." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Left" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Right View." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Right" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Keying is disabled (no key inserted)." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Animation Key Inserted." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Align with view" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Top (Num7)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Bottom (Shift+Num7)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Left (Num3)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Right (Shift+Num3)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Front (Num1)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rear (Shift+Num1)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Perspective (Num5)" +msgstr "透视(Num5)" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Orthogonal (Num5)" +msgstr "正交(Num5)" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Environment" +msgstr "环境" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Audio Listener" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Gizmos" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Selection (F)" +msgstr "选中项(F)" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Align with view (Ctrl+Shift+F)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "XForm Dialog" +msgstr "XForm对话框" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "No scene selected to instance!" +msgstr "没有选用要实例化的场景!" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Instance at Cursor" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Could not instance scene!" +msgstr "无法实例化场景!" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Scale Mode (R)" +msgstr "缩放模式(R)" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Local Coords" +msgstr "本地坐标" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Transform Dialog.." +msgstr "变换对话框.." + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Use Default Light" +msgstr "使用默认光照" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Use Default sRGB" +msgstr "使用默认sRGB" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Display Normal" +msgstr "显示法线" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Display Wireframe" +msgstr "显示线框" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Display Overdraw" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Display Shadeless" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "View Origin" +msgstr "显示原点" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "View Grid" +msgstr "显示网格" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Snap Settings" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Translate Snap:" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rotate Snap (deg.):" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Scale Snap (%):" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Viewport Settings" +msgstr "Viewport设置" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Default Light Normal:" +msgstr "默认光照法线:" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Ambient Light Color:" +msgstr "环境光颜色:" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Perspective FOV (deg.):" +msgstr "透视视角(角度):" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "View Z-Near:" +msgstr "查看Z-Near" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "View Z-Far:" +msgstr "查看Z-Far" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Transform Change" +msgstr "修改变换" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Translate:" +msgstr "移动:" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rotate (deg.):" +msgstr "旋转(角度):" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Scale (ratio):" +msgstr "缩放(比率):" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Transform Type" +msgstr "变换类型" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Pre" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Post" +msgstr "" + +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +msgid "ERROR: Couldn't load resource!" +msgstr "错误:无法加载资源!" + +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +msgid "Add Resource" +msgstr "添加资源" + +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +msgid "Rename Resource" +msgstr "重命名资源" + +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +msgid "Resource clipboard is empty!" +msgstr "资源剪切板中无内容!" + +#: tools/editor/plugins/baked_light_editor_plugin.cpp +msgid "BakedLightInstance does not contain a BakedLight resource." +msgstr "" + +#: tools/editor/plugins/baked_light_editor_plugin.cpp +msgid "Bake!" +msgstr "" + +#: tools/editor/plugins/baked_light_editor_plugin.cpp +msgid "Reset the lightmap octree baking process (start over)." +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "New Clip" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Animation Options" +msgstr "动画选项" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Flags" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Bake FPS:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Optimizer" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Max Linear Error" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Max Angular Error" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Max Angle" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Clips" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Start(s)" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "End(s)" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Filters" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Source path is empty." +msgstr "源路径为空。" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +msgid "Target path is empty." +msgstr "目标路径为空。" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +msgid "Target path must be a complete resource path." +msgstr "目标路径必须是一个完整的资源文件路径。" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +msgid "Target path must exist." +msgstr "目标路径必须存在。" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Couldn't load post-import script." +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Invalid/broken script for post-import." +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Error importing scene." +msgstr "导入场景出错。" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Import 3D Scene" +msgstr "导入3D场景" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Source Scene:" +msgstr "源场景:" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +msgid "Target Path:" +msgstr "目标路径:" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Same as Target Scene" +msgstr "与目标场景相同" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Shared" +msgstr "共享的" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Target Texture Folder:" +msgstr "目标贴图目录:" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +msgid "Options:" +msgstr "选项:" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Post-Process Script:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Accept" +msgstr "接受" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Custom Root Node Type:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Overwrite Existing Scene" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Overwrite Existing, Keep Materials" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Keep Existing, Merge with New" +msgstr "保留已有,与新的合并。" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Keep Existing, Ignore New" +msgstr "保留已有,忽略新的。" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "This Time:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Next Time:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "The Following Files are Missing:" +msgstr "找不到下列文件:" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Import Anyway" +msgstr "仍然导入" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Cancel" +msgstr "取消" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Import & Open" +msgstr "导入|打开" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Edited scene has not been saved, open imported scene anyway?" +msgstr "正在编辑的场景尚未保存,仍然要打开导入的场景吗?" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Importing Scene.." +msgstr "导入场景" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Running Custom Script.." +msgstr "执行自定义脚本.." + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Couldn't load post-import script:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Invalid/broken script for post-import:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Error running post-import script:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Import Image:" +msgstr "导入图片:" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Can't import a file over itself:" +msgstr "不允许导入文件本身:" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Couldn't localize path: %s (already local)" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Saving.." +msgstr "保存中..." + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "3D Scene Animation" +msgstr "3D场景动画" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Uncompressed" +msgstr "不压缩" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Compress Lossless (PNG)" +msgstr "无损压缩(PNG)" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Compress Lossy (WebP)" +msgstr "有损压缩(WebP)" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Compress (VRAM)" +msgstr "VRAM压缩" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Texture Format" +msgstr "纹理格式" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Texture Compression Quality (WebP):" +msgstr "高质量(WebP)压缩方式:" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Texture Options" +msgstr "纹理选项" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Please specify some files!" +msgstr "请添加文件!" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "At least one file needed for Atlas." +msgstr "精灵集至少需要一个文件。" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Error importing:" +msgstr "导入出错:" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Only one file is required for large texture." +msgstr "大图导入仅支持一个输入文件。" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Max Texture Size:" +msgstr "最大纹理尺寸:" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Import Textures for Atlas (2D)" +msgstr "导入2D精灵集" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Cell Size:" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Large Texture" +msgstr "大图" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Import Large Textures (2D)" +msgstr "导入2D大图" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Source Texture" +msgstr "源贴图:" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Base Atlas Texture" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Source Texture(s)" +msgstr "源贴图:" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Import Textures for 2D" +msgstr "导入2D贴图" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Import Textures for 3D" +msgstr "导入3D贴图" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Import Textures" +msgstr "导入贴图" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "2D Texture" +msgstr "2D贴图" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "3D Texture" +msgstr "3D贴图" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Atlas Texture" +msgstr "精灵图集" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "" +"NOTICE: Importing 2D textures is not mandatory. Just copy png/jpg files to " +"the project." +msgstr "" +"提示:大多数2D贴图并不需要导入操作,只要将png/jpg文件放到项目目录下即可。" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Source Texture(s):" +msgstr "源贴图:" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Crop empty space." +msgstr "切除空白区域。" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Texture" +msgstr "贴图" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Import Large Texture" +msgstr "导入大图" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Load Source Image" +msgstr "加载源图片" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Slicing" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Inserting" +msgstr "插入中" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Saving" +msgstr "正在保存文件" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Couldn't save large texture:" +msgstr "无法保存大图:" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Build Atlas For:" +msgstr "使用以下图片生成精灵集:" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Loading Image:" +msgstr "加载图片中:" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Couldn't load image:" +msgstr "无法加载图片:" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Converting Images" +msgstr "正在转换图片" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Cropping Images" +msgstr "剪裁图片" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Blitting Images" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Couldn't save atlas image:" +msgstr "无法保存精灵集图片:" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Couldn't save converted texture:" +msgstr "无法保存转换的贴图:" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "No source font file!" +msgstr "请设置源字体文件!" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "No target font resource!" +msgstr "请设置目标字体资源!" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Can't load/process source font." +msgstr "无法加载/处理源字体。" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Couldn't save font." +msgstr "无法保存字体。" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Source Font:" +msgstr "源字体文件:" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Source Font Size:" +msgstr "源字体大小:" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Dest Resource:" +msgstr "目标资源:" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "The quick brown fox jumps over the lazy dog." +msgstr "" +"The quick brown fox jumps over the lazy dog.\n" +"我能吞下玻璃而不伤身体。" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Test:" +msgstr "测试:" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Font Import" +msgstr "导入字体" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "" +"This file is already a Godot font file, please supply a BMFont type file " +"instead." +msgstr "此文件已经是一个Godot的字体文件,请提供一个位图字体(BMFont)文件。" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Failed opening as BMFont file." +msgstr "打开位图字体失败。" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Error initializing FreeType." +msgstr "初始化FreeType出错。" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Unknown font format." +msgstr "未知的字体格式。" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Error loading font." +msgstr "加载字体出错。" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Invalid font size." +msgstr "字体大小非法。" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Invalid font custom source." +msgstr "自定义字体文件非法。" + +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +msgid "No samples to import!" +msgstr "没有音效要导入!" + +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +msgid "Save path is empty!" +msgstr "保存路径为空!" + +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +msgid "Import Audio Samples" +msgstr "导入声音文件" + +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +msgid "Source Sample(s):" +msgstr "源音效文件:" + +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +msgid "Audio Sample" +msgstr "音效" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Invalid source!" +msgstr "输入源非法!" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Invalid translation source!" +msgstr "源语言文件非法!" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Column" +msgstr "列" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "No items to import!" +msgstr "没有要导入的项目!" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "No target path!" +msgstr "目标路径为空!" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Import Translations" +msgstr "导入多种语言翻译" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Couldn't import!" +msgstr "无法导入!" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Import Translation" +msgstr "导入语言翻译" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Source CSV:" +msgstr "源CSV文件:" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Ignore First Row" +msgstr "忽略第一行" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Compress" +msgstr "压缩" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Add to Project (engine.cfg)" +msgstr "添加到项目(engine.cfg)" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Import Languages:" +msgstr "导入语言:" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Translation" +msgstr "语言" + +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +msgid "No meshes to import!" +msgstr "没有要导入的Mesh" + +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +msgid "Single Mesh Import" +msgstr "导入单个Mesh" + +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +msgid "Source Mesh(es):" +msgstr "源Mesh:" + +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +msgid "Mesh" +msgstr "Mesh" + +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +msgid "Surface %d" +msgstr "" + +#~ msgid "Scene Tree:" +#~ msgstr "场景树:" + +#~ msgid "" +#~ "NOTICE: You are not forced to import textures for 2D projects. Just copy " +#~ "your .jpg or .png files to your project, and change export options later. " +#~ "Atlases can be generated on export too." +#~ msgstr "" +#~ "注意:对于大多数2D纹理图片,一般不需要导入操作。只需要将.jpg或.png文件放到" +#~ "项目目录下,并存导出选项即可。精灵集也可以在导出时生成。" |