mirror of
https://github.com/Fledge68/WiiFlow_Lite.git
synced 2024-11-27 21:54:15 +01:00
- added snes9x gx plugin source to branches/plugins
- updated it to 4.3.2 - next commit i will add wiiu pro controller support.
This commit is contained in:
parent
184dcc4ec7
commit
1719617728
@ -1,163 +0,0 @@
|
|||||||
#---------------------------------------------------------------------------------
|
|
||||||
# Clear the implicit built in rules
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
.SUFFIXES:
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
ifeq ($(strip $(DEVKITPPC)),)
|
|
||||||
$(error "Please set DEVKITPPC in your environment. export DEVKITPPC=<path to>devkitPPC")
|
|
||||||
endif
|
|
||||||
|
|
||||||
include $(DEVKITPPC)/wii_rules
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# TARGET is the name of the output
|
|
||||||
# BUILD is the directory where object files & intermediate files will be placed
|
|
||||||
# SOURCES is a list of directories containing source code
|
|
||||||
# INCLUDES is a list of directories containing extra header files
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
TARGET := snes9xgx-wii
|
|
||||||
TARGETDIR := executables
|
|
||||||
BUILD := build_wii
|
|
||||||
SOURCES := source source/images source/sounds source/fonts source/lang \
|
|
||||||
source/gui source/utils source/utils/sz source/utils/unzip \
|
|
||||||
source/snes9x source/snes9x/apu
|
|
||||||
INCLUDES := source source/snes9x
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# options for code generation
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
CFLAGS = -g -O3 -Wall $(MACHDEP) $(INCLUDE) \
|
|
||||||
-DZLIB -DRIGHTSHIFT_IS_SAR -DCPU_SHUTDOWN -DCORRECT_VRAM_READS \
|
|
||||||
-D_SZ_ONE_DIRECTORY -D_LZMA_IN_CB -D_LZMA_OUT_READ \
|
|
||||||
-fomit-frame-pointer \
|
|
||||||
-Wno-unused-parameter -Wno-strict-aliasing \
|
|
||||||
-Wno-write-strings -Wno-parentheses
|
|
||||||
CXXFLAGS = $(CFLAGS)
|
|
||||||
LDFLAGS = -g $(MACHDEP) -Wl,-Map,$(notdir $@).map,-wrap,wiiuse_register
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# any extra libraries we wish to link with the project
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
LIBS := -ldi -liso9660 -lpng -lmxml \
|
|
||||||
-lfat -lwiiuse -lwupc -lz -lbte -lasnd -logc -lvorbisidec -lfreetype -ltinysmb
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# list of directories containing libraries, this must be the top level containing
|
|
||||||
# include and lib
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
LIBDIRS := $(CURDIR)/portlibs
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# no real need to edit anything past this point unless you need to add additional
|
|
||||||
# rules for different file extensions
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
ifneq ($(BUILD),$(notdir $(CURDIR)))
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
export OUTPUT := $(CURDIR)/$(TARGETDIR)/$(TARGET)
|
|
||||||
export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir))
|
|
||||||
export DEPSDIR := $(CURDIR)/$(BUILD)
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# automatically build a list of object files for our project
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c)))
|
|
||||||
CPPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp)))
|
|
||||||
sFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s)))
|
|
||||||
SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.S)))
|
|
||||||
TTFFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.ttf)))
|
|
||||||
LANGFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.lang)))
|
|
||||||
PNGFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.png)))
|
|
||||||
OGGFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.ogg)))
|
|
||||||
PCMFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.pcm)))
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# use CXX for linking C++ projects, CC for standard C
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
ifeq ($(strip $(CPPFILES)),)
|
|
||||||
export LD := $(CC)
|
|
||||||
else
|
|
||||||
export LD := $(CXX)
|
|
||||||
endif
|
|
||||||
|
|
||||||
export OFILES := $(CPPFILES:.cpp=.o) $(CFILES:.c=.o) \
|
|
||||||
$(sFILES:.s=.o) $(SFILES:.S=.o) \
|
|
||||||
$(TTFFILES:.ttf=.ttf.o) $(LANGFILES:.lang=.lang.o) \
|
|
||||||
$(PNGFILES:.png=.png.o) \
|
|
||||||
$(OGGFILES:.ogg=.ogg.o) $(PCMFILES:.pcm=.pcm.o)
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# build a list of include paths
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
export INCLUDE := $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \
|
|
||||||
$(foreach dir,$(LIBDIRS),-I$(dir)/include) \
|
|
||||||
-I$(CURDIR)/$(BUILD) \
|
|
||||||
-I$(LIBOGC_INC) -I$(CURDIR)/portlibs/include/freetype2
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# build a list of library paths
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
export LIBPATHS := $(foreach dir,$(LIBDIRS),-L$(dir)/lib) \
|
|
||||||
-L$(LIBOGC_LIB)
|
|
||||||
|
|
||||||
export OUTPUT := $(CURDIR)/$(TARGETDIR)/$(TARGET)
|
|
||||||
.PHONY: $(BUILD) clean
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
$(BUILD):
|
|
||||||
@[ -d $@ ] || mkdir -p $@
|
|
||||||
@[ -d $(TARGETDIR) ] || mkdir -p $(TARGETDIR)
|
|
||||||
@make --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
clean:
|
|
||||||
@echo clean ...
|
|
||||||
@rm -fr $(BUILD) $(OUTPUT).elf $(OUTPUT).dol
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
run:
|
|
||||||
wiiload $(OUTPUT).dol
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
reload:
|
|
||||||
wiiload -r $(OUTPUT).dol
|
|
||||||
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
else
|
|
||||||
|
|
||||||
DEPENDS := $(OFILES:.o=.d)
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# main targets
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
$(OUTPUT).dol: $(OUTPUT).elf
|
|
||||||
$(OUTPUT).elf: $(OFILES)
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# This rule links in binary data with these extensions: ttf lang png ogg pcm
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
%.ttf.o : %.ttf
|
|
||||||
@echo $(notdir $<)
|
|
||||||
$(bin2o)
|
|
||||||
|
|
||||||
%.lang.o : %.lang
|
|
||||||
@echo $(notdir $<)
|
|
||||||
$(bin2o)
|
|
||||||
|
|
||||||
%.png.o : %.png
|
|
||||||
@echo $(notdir $<)
|
|
||||||
$(bin2o)
|
|
||||||
|
|
||||||
%.ogg.o : %.ogg
|
|
||||||
@echo $(notdir $<)
|
|
||||||
$(bin2o)
|
|
||||||
|
|
||||||
%.pcm.o : %.pcm
|
|
||||||
@echo $(notdir $<)
|
|
||||||
$(bin2o)
|
|
||||||
|
|
||||||
-include $(DEPENDS)
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
endif
|
|
||||||
#---------------------------------------------------------------------------------
|
|
@ -1,159 +0,0 @@
|
|||||||
#---------------------------------------------------------------------------------
|
|
||||||
# Clear the implicit built in rules
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
.SUFFIXES:
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
ifeq ($(strip $(DEVKITPPC)),)
|
|
||||||
$(error "Please set DEVKITPPC in your environment. export DEVKITPPC=<path to>devkitPPC")
|
|
||||||
endif
|
|
||||||
|
|
||||||
include $(DEVKITPPC)/gamecube_rules
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# TARGET is the name of the output
|
|
||||||
# BUILD is the directory where object files & intermediate files will be placed
|
|
||||||
# SOURCES is a list of directories containing source code
|
|
||||||
# INCLUDES is a list of directories containing extra header files
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
TARGET := snes9xgx-gc
|
|
||||||
TARGETDIR := executables
|
|
||||||
BUILD := build_gc
|
|
||||||
SOURCES := source source/images source/sounds source/fonts source/lang \
|
|
||||||
source/gui source/utils source/utils/sz \
|
|
||||||
source/snes9x source/snes9x/apu
|
|
||||||
INCLUDES := source source/snes9x
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# options for code generation
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
CFLAGS = -g -O3 -Wall $(MACHDEP) $(INCLUDE) -DNO_SOUND \
|
|
||||||
-DZLIB -DRIGHTSHIFT_IS_SAR -DCPU_SHUTDOWN -DCORRECT_VRAM_READS \
|
|
||||||
-D_SZ_ONE_DIRECTORY -D_LZMA_IN_CB -D_LZMA_OUT_READ \
|
|
||||||
-fomit-frame-pointer \
|
|
||||||
-Wno-unused-parameter -Wno-strict-aliasing \
|
|
||||||
-Wno-write-strings -Wno-parentheses
|
|
||||||
CXXFLAGS = $(CFLAGS)
|
|
||||||
LDFLAGS = -g $(MACHDEP) -Wl,-Map,$(notdir $@).map
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# any extra libraries we wish to link with the project
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
LIBS := -lpng -lmxml -ltinysmb -lbba -lfat -liso9660 -lz -logc -lfreetype
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# list of directories containing libraries, this must be the top level containing
|
|
||||||
# include and lib
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
LIBDIRS := $(PORTLIBS)
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# no real need to edit anything past this point unless you need to add additional
|
|
||||||
# rules for different file extensions
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
ifneq ($(BUILD),$(notdir $(CURDIR)))
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
export OUTPUT := $(CURDIR)/$(TARGETDIR)/$(TARGET)
|
|
||||||
export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir))
|
|
||||||
export DEPSDIR := $(CURDIR)/$(BUILD)
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# automatically build a list of object files for our project
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c)))
|
|
||||||
CPPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp)))
|
|
||||||
sFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s)))
|
|
||||||
SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.S)))
|
|
||||||
TTFFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.ttf)))
|
|
||||||
LANGFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.lang)))
|
|
||||||
PNGFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.png)))
|
|
||||||
PCMFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.pcm)))
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# use CXX for linking C++ projects, CC for standard C
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
ifeq ($(strip $(CPPFILES)),)
|
|
||||||
export LD := $(CC)
|
|
||||||
else
|
|
||||||
export LD := $(CXX)
|
|
||||||
endif
|
|
||||||
|
|
||||||
export OFILES := $(CPPFILES:.cpp=.o) $(CFILES:.c=.o) \
|
|
||||||
$(sFILES:.s=.o) $(SFILES:.S=.o) \
|
|
||||||
$(TTFFILES:.ttf=.ttf.o) $(LANGFILES:.lang=.lang.o) \
|
|
||||||
$(PNGFILES:.png=.png.o) \
|
|
||||||
$(PCMFILES:.pcm=.pcm.o)
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# build a list of include paths
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
export INCLUDE := $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \
|
|
||||||
$(foreach dir,$(LIBDIRS),-I$(dir)/include) \
|
|
||||||
-I$(CURDIR)/$(BUILD) \
|
|
||||||
-I$(LIBOGC_INC) -I$(PORTLIBS)/include/freetype2
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# build a list of library paths
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
export LIBPATHS := $(foreach dir,$(LIBDIRS),-L$(dir)/lib) \
|
|
||||||
-L$(LIBOGC_LIB)
|
|
||||||
|
|
||||||
export OUTPUT := $(CURDIR)/$(TARGETDIR)/$(TARGET)
|
|
||||||
.PHONY: $(BUILD) clean
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
$(BUILD):
|
|
||||||
@[ -d $@ ] || mkdir -p $@
|
|
||||||
@[ -d $(TARGETDIR) ] || mkdir -p $(TARGETDIR)
|
|
||||||
@make --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile.gc
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
clean:
|
|
||||||
@echo clean ...
|
|
||||||
@rm -fr $(BUILD) $(OUTPUT).elf $(OUTPUT).dol
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
run:
|
|
||||||
psoload $(OUTPUT).dol
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
reload:
|
|
||||||
psoload -r $(OUTPUT).dol
|
|
||||||
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
else
|
|
||||||
|
|
||||||
DEPENDS := $(OFILES:.o=.d)
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# main targets
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
$(OUTPUT).dol: $(OUTPUT).elf
|
|
||||||
$(OUTPUT).elf: $(OFILES)
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# This rule links in binary data with these extensions: ttf lang png pcm
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
%.ttf.o : %.ttf
|
|
||||||
@echo $(notdir $<)
|
|
||||||
$(bin2o)
|
|
||||||
|
|
||||||
%.lang.o : %.lang
|
|
||||||
@echo $(notdir $<)
|
|
||||||
$(bin2o)
|
|
||||||
|
|
||||||
%.png.o : %.png
|
|
||||||
@echo $(notdir $<)
|
|
||||||
$(bin2o)
|
|
||||||
|
|
||||||
%.pcm.o : %.pcm
|
|
||||||
@echo $(notdir $<)
|
|
||||||
$(bin2o)
|
|
||||||
|
|
||||||
-include $(DEPENDS)
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
endif
|
|
||||||
#---------------------------------------------------------------------------------
|
|
@ -1,161 +0,0 @@
|
|||||||
#---------------------------------------------------------------------------------
|
|
||||||
# Clear the implicit built in rules
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
.SUFFIXES:
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
ifeq ($(strip $(DEVKITXENON)),)
|
|
||||||
$(error "Please set DEVKITXENON in your environment. export DEVKITXENON=<path to>devkitxenon")
|
|
||||||
endif
|
|
||||||
|
|
||||||
include $(DEVKITXENON)/rules
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# TARGET is the name of the output
|
|
||||||
# BUILD is the directory where object files & intermediate files will be placed
|
|
||||||
# SOURCES is a list of directories containing source code
|
|
||||||
# INCLUDES is a list of directories containing extra header files
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
TARGET := snes9xgx-xenon
|
|
||||||
TARGETDIR := executables
|
|
||||||
BUILD := build_xenon
|
|
||||||
SOURCES := source/xenon source/snes9x source/utils/sz
|
|
||||||
INCLUDES := source/snes9x source/xenon
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# options for code generation
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
CFLAGS = -g -O3 -Wall $(MACHDEP) $(INCLUDE) \
|
|
||||||
-DNGC -DNO_SOUND \
|
|
||||||
-DNO_ASM -DRIGHTSHIFT_IS_SAR \
|
|
||||||
-DCPU_SHUTDOWN -DSPC700_SHUTDOWN \
|
|
||||||
-DSPC700_C -DSDD1_DECOMP \
|
|
||||||
-DCORRECT_VRAM_READS -DNEW_COLOUR_BLENDING \
|
|
||||||
-D_SZ_ONE_DIRECTORY -D_LZMA_IN_CB -D_LZMA_OUT_READ \
|
|
||||||
-fomit-frame-pointer \
|
|
||||||
-Wno-unused-parameter -Wno-strict-aliasing
|
|
||||||
|
|
||||||
CXXFLAGS = -save-temps -Xassembler -aln=$@.lst $(CFLAGS)
|
|
||||||
|
|
||||||
LDFLAGS = -g $(MACHDEP) -Wl,-Map,$(notdir $@).map
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# any extra libraries we wish to link with the project
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
LIBS = -lm -lxenon
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# list of directories containing libraries, this must be the top level containing
|
|
||||||
# include and lib
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
LIBDIRS := $(CURDIR)
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# no real need to edit anything past this point unless you need to add additional
|
|
||||||
# rules for different file extensions
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
ifneq ($(BUILD),$(notdir $(CURDIR)))
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
export OUTPUT := $(CURDIR)/$(TARGETDIR)/$(TARGET)
|
|
||||||
export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir))
|
|
||||||
export DEPSDIR := $(CURDIR)/$(BUILD)
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# automatically build a list of object files for our project
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c)))
|
|
||||||
CPPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp)))
|
|
||||||
sFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s)))
|
|
||||||
SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.S)))
|
|
||||||
TTFFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.ttf)))
|
|
||||||
PNGFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.png)))
|
|
||||||
OGGFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.ogg)))
|
|
||||||
PCMFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.pcm)))
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# use CXX for linking C++ projects, CC for standard C
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
ifeq ($(strip $(CPPFILES)),)
|
|
||||||
export LD := $(CC)
|
|
||||||
else
|
|
||||||
export LD := $(CXX)
|
|
||||||
endif
|
|
||||||
|
|
||||||
export OFILES := $(CPPFILES:.cpp=.o) $(CFILES:.c=.o) \
|
|
||||||
$(sFILES:.s=.o) $(SFILES:.S=.o) \
|
|
||||||
$(TTFFILES:.ttf=.ttf.o) $(PNGFILES:.png=.png.o) \
|
|
||||||
$(OGGFILES:.ogg=.ogg.o) $(PCMFILES:.pcm=.pcm.o)
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# build a list of include paths
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
export INCLUDE := $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \
|
|
||||||
$(foreach dir,$(LIBDIRS),-I$(dir)/include) \
|
|
||||||
-I$(CURDIR)/$(BUILD) \
|
|
||||||
-I$(LIBXENON_INC)
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# build a list of library paths
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
export LIBPATHS := $(foreach dir,$(LIBDIRS),-L$(dir)/lib) \
|
|
||||||
-L$(LIBXENON_LIB)
|
|
||||||
|
|
||||||
export OUTPUT := $(CURDIR)/$(TARGETDIR)/$(TARGET)
|
|
||||||
.PHONY: $(BUILD) clean
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
$(BUILD):
|
|
||||||
@[ -d $@ ] || mkdir -p $@
|
|
||||||
@[ -d $(TARGETDIR) ] || mkdir -p $(TARGETDIR)
|
|
||||||
@make --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile.xenon
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
clean:
|
|
||||||
@echo clean ...
|
|
||||||
@rm -fr $(BUILD) $(OUTPUT).elf $(OUTPUT).elf32
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
source/xenon/ffs_content.c: genffs.py data/ps.psu data/vs.vsu
|
|
||||||
python genffs.py > source/xenon/ffs_content.c
|
|
||||||
|
|
||||||
run: $(OUTPUT).elf32
|
|
||||||
cp $(OUTPUT).elf32 /tftpboot/xenon
|
|
||||||
/home/dev360/run
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
else
|
|
||||||
|
|
||||||
DEPENDS := $(OFILES:.o=.d)
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# main targets
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
$(OUTPUT).elf32: $(OUTPUT).elf
|
|
||||||
$(OUTPUT).elf: $(OFILES)
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# This rule links in binary data with .ttf, .png, and .mp3 extensions
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
%.ttf.o : %.ttf
|
|
||||||
@echo $(notdir $<)
|
|
||||||
$(bin2o)
|
|
||||||
|
|
||||||
%.png.o : %.png
|
|
||||||
@echo $(notdir $<)
|
|
||||||
$(bin2o)
|
|
||||||
|
|
||||||
%.ogg.o : %.ogg
|
|
||||||
@echo $(notdir $<)
|
|
||||||
$(bin2o)
|
|
||||||
|
|
||||||
%.pcm.o : %.pcm
|
|
||||||
@echo $(notdir $<)
|
|
||||||
$(bin2o)
|
|
||||||
|
|
||||||
-include $(DEPENDS)
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
endif
|
|
||||||
#---------------------------------------------------------------------------------
|
|
@ -1,25 +0,0 @@
|
|||||||
.PHONY = all wii gc wii-clean gc-clean wii-run gc-run
|
|
||||||
|
|
||||||
all: wii gc
|
|
||||||
|
|
||||||
run: wii-run
|
|
||||||
|
|
||||||
clean: wii-clean gc-clean
|
|
||||||
|
|
||||||
wii:
|
|
||||||
$(MAKE) -f Makefile.wii
|
|
||||||
|
|
||||||
wii-clean:
|
|
||||||
$(MAKE) -f Makefile.wii clean
|
|
||||||
|
|
||||||
wii-run: wii
|
|
||||||
$(MAKE) -f Makefile.wii run
|
|
||||||
|
|
||||||
gc:
|
|
||||||
$(MAKE) -f Makefile.gc
|
|
||||||
|
|
||||||
gc-clean:
|
|
||||||
$(MAKE) -f Makefile.gc clean
|
|
||||||
|
|
||||||
gc-run: gc
|
|
||||||
$(MAKE) -f Makefile.gc run
|
|
Binary file not shown.
Before Width: | Height: | Size: 7.2 KiB |
@ -1,10 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
|
||||||
<app version="1">
|
|
||||||
<name>Snes9x GX</name>
|
|
||||||
<coder>Tantric</coder>
|
|
||||||
<version>4.3.4</version>
|
|
||||||
<release_date>20121109</release_date>
|
|
||||||
<short_description>Super Nintendo Emulator</short_description>
|
|
||||||
<long_description>A port of Snes9x to the Wii.</long_description>
|
|
||||||
<ahb_access />
|
|
||||||
</app>
|
|
@ -1,106 +0,0 @@
|
|||||||
/********************************************************************************
|
|
||||||
* ext2.h - devoptab file routines for EXT2/3/4-based devices. *
|
|
||||||
* *
|
|
||||||
* Copyright (c) 2010 Dimok *
|
|
||||||
* *
|
|
||||||
* This program/include file is free software; you can redistribute it and/or *
|
|
||||||
* modify it under the terms of the GNU General Public License as published *
|
|
||||||
* by the Free Software Foundation; either version 2 of the License, or *
|
|
||||||
* (at your option) any later version. *
|
|
||||||
* *
|
|
||||||
* This program/include file is distributed in the hope that it will be *
|
|
||||||
* useful, but WITHOUT ANY WARRANTY; without even the implied warranty *
|
|
||||||
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
|
||||||
* GNU General Public License for more details. *
|
|
||||||
* *
|
|
||||||
* You should have received a copy of the GNU General Public License *
|
|
||||||
* along with this program; if not, write to the Free Software Foundation, *
|
|
||||||
* Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *
|
|
||||||
********************************************************************************/
|
|
||||||
#ifndef __EXT2_H_
|
|
||||||
#define __EXT2_H_
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <gctypes.h>
|
|
||||||
#include <gccore.h>
|
|
||||||
#include <ogc/disc_io.h>
|
|
||||||
|
|
||||||
/**
|
|
||||||
* EXT2 cache options
|
|
||||||
*
|
|
||||||
* It is recommended to use more pages instead of large page sizes for cache due to the sporadic write behaviour of ext file system.
|
|
||||||
* It will significantly increase the speed. A page size of 32 is mostly suffiecient. The larger the page count the faster the
|
|
||||||
* read/write between smaller files will be. Larger page sizes result in faster read/write of single big files.
|
|
||||||
*/
|
|
||||||
#define EXT2_CACHE_DEFAULT_PAGE_COUNT 64 /* The default number of pages in the cache */
|
|
||||||
#define EXT2_CACHE_DEFAULT_PAGE_SIZE 32 /* The default number of sectors per cache page */
|
|
||||||
|
|
||||||
/* EXT2 mount flags */
|
|
||||||
#define EXT2_FLAG_RW 0x00001 /* Open the filesystem for reading and writing. Without this flag, the filesystem is opened for reading only. */
|
|
||||||
#define EXT2_FLAG_FORCE 0x00400 /* Open the filesystem regardless of the feature sets listed in the superblock */
|
|
||||||
#define EXT2_FLAG_JOURNAL_DEV_OK 0x01000 /* Only open external journal devices if this flag is set (e.g. ext3/ext4) */
|
|
||||||
#define EXT2_FLAG_64BITS 0x20000 /* Allow 64-bit bitfields (needed for large filesystems) */
|
|
||||||
#define EXT2_FLAG_PRINT_PROGRESS 0x40000 /* If this flag is set the progress of file operations will be printed to stdout */
|
|
||||||
#define EXT2_FLAG_SKIP_MMP 0x100000 /* Open without multi-mount protection check. */
|
|
||||||
#define EXT2_FLAG_DEFAULT (EXT2_FLAG_RW | EXT2_FLAG_64BITS | EXT2_FLAG_JOURNAL_DEV_OK | EXT2_FLAG_SKIP_MMP)
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Find all EXT2/3/4 partitions on a block device.
|
|
||||||
*
|
|
||||||
* @param INTERFACE The block device to search
|
|
||||||
* @param PARTITIONS (out) A pointer to receive the array of partition start sectors
|
|
||||||
*
|
|
||||||
* @return The number of entries in PARTITIONS or -1 if an error occurred (see errno)
|
|
||||||
* @note The caller is responsible for freeing PARTITIONS when finished with it
|
|
||||||
*/
|
|
||||||
int ext2FindPartitions(const DISC_INTERFACE *interface, sec_t **partitions);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Mount a EXT2/3/4 partition from a specific sector on a block device.
|
|
||||||
*
|
|
||||||
* @param NAME The name to mount the device under (can then be accessed as "NAME:/")
|
|
||||||
* @param INTERFACE The block device to mount
|
|
||||||
* @param STARTSECTOR The sector the partition begins at
|
|
||||||
* @param CACHEPAGECOUNT The total number of pages in the device cache
|
|
||||||
* @param CACHEPAGESIZE The number of sectors per cache page
|
|
||||||
* @param FLAGS Additional mounting flags (see above)
|
|
||||||
*
|
|
||||||
* @return True if mount was successful, false if no partition was found or an error occurred (see errno)
|
|
||||||
*/
|
|
||||||
bool ext2Mount(const char *name, const DISC_INTERFACE *interface, sec_t startSector, u32 cachePageCount, u32 cachePageSize, u32 flags);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Unmount a EXT2/3/4 partition.
|
|
||||||
*
|
|
||||||
* @param NAME The name of mount used in ext2Mount()
|
|
||||||
*/
|
|
||||||
void ext2Unmount(const char *name);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get the volume name of a mounted EXT2/3/4 partition.
|
|
||||||
*
|
|
||||||
* @param NAME The name of mount
|
|
||||||
*
|
|
||||||
* @return The volumes name if successful or NULL if an error occurred (see errno)
|
|
||||||
*/
|
|
||||||
const char *ext2GetVolumeName (const char *name);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Set the volume name of a mounted EXT2/3/4 partition.
|
|
||||||
*
|
|
||||||
* @param NAME The name of mount
|
|
||||||
* @param VOLUMENAME The new volume name
|
|
||||||
*
|
|
||||||
* @return True if mount was successful, false if an error occurred (see errno)
|
|
||||||
* @note The mount must be write-enabled else this will fail
|
|
||||||
*/
|
|
||||||
bool ext2SetVolumeName (const char *name, const char *volumeName);
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
@ -1,477 +0,0 @@
|
|||||||
/* ftconfig.h. Generated from ftconfig.in by configure. */
|
|
||||||
/***************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* ftconfig.in */
|
|
||||||
/* */
|
|
||||||
/* UNIX-specific configuration file (specification only). */
|
|
||||||
/* */
|
|
||||||
/* Copyright 1996-2001, 2002, 2003, 2004, 2006, 2007, 2008, 2009 by */
|
|
||||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
|
||||||
/* */
|
|
||||||
/* This file is part of the FreeType project, and may only be used, */
|
|
||||||
/* modified, and distributed under the terms of the FreeType project */
|
|
||||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
|
||||||
/* this file you indicate that you have read the license and */
|
|
||||||
/* understand and accept it fully. */
|
|
||||||
/* */
|
|
||||||
/***************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* This header file contains a number of macro definitions that are used */
|
|
||||||
/* by the rest of the engine. Most of the macros here are automatically */
|
|
||||||
/* determined at compile time, and you should not need to change it to */
|
|
||||||
/* port FreeType, except to compile the library with a non-ANSI */
|
|
||||||
/* compiler. */
|
|
||||||
/* */
|
|
||||||
/* Note however that if some specific modifications are needed, we */
|
|
||||||
/* advise you to place a modified copy in your build directory. */
|
|
||||||
/* */
|
|
||||||
/* The build directory is usually `freetype/builds/<system>', and */
|
|
||||||
/* contains system-specific files that are always included first when */
|
|
||||||
/* building the library. */
|
|
||||||
/* */
|
|
||||||
/*************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef __FTCONFIG_H__
|
|
||||||
#define __FTCONFIG_H__
|
|
||||||
|
|
||||||
#include <ft2build.h>
|
|
||||||
#include FT_CONFIG_OPTIONS_H
|
|
||||||
#include FT_CONFIG_STANDARD_LIBRARY_H
|
|
||||||
|
|
||||||
|
|
||||||
FT_BEGIN_HEADER
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* PLATFORM-SPECIFIC CONFIGURATION MACROS */
|
|
||||||
/* */
|
|
||||||
/* These macros can be toggled to suit a specific system. The current */
|
|
||||||
/* ones are defaults used to compile FreeType in an ANSI C environment */
|
|
||||||
/* (16bit compilers are also supported). Copy this file to your own */
|
|
||||||
/* `freetype/builds/<system>' directory, and edit it to port the engine. */
|
|
||||||
/* */
|
|
||||||
/*************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
#define HAVE_UNISTD_H 1
|
|
||||||
#define HAVE_FCNTL_H 1
|
|
||||||
#define HAVE_STDINT_H 1
|
|
||||||
|
|
||||||
|
|
||||||
/* There are systems (like the Texas Instruments 'C54x) where a `char' */
|
|
||||||
/* has 16 bits. ANSI C says that sizeof(char) is always 1. Since an */
|
|
||||||
/* `int' has 16 bits also for this system, sizeof(int) gives 1 which */
|
|
||||||
/* is probably unexpected. */
|
|
||||||
/* */
|
|
||||||
/* `CHAR_BIT' (defined in limits.h) gives the number of bits in a */
|
|
||||||
/* `char' type. */
|
|
||||||
|
|
||||||
#ifndef FT_CHAR_BIT
|
|
||||||
#define FT_CHAR_BIT CHAR_BIT
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/* #undef FT_USE_AUTOCONF_SIZEOF_TYPES */
|
|
||||||
#ifdef FT_USE_AUTOCONF_SIZEOF_TYPES
|
|
||||||
|
|
||||||
#define SIZEOF_INT 4
|
|
||||||
#define SIZEOF_LONG 4
|
|
||||||
#define FT_SIZEOF_INT SIZEOF_INT
|
|
||||||
#define FT_SIZEOF_LONG SIZEOF_LONG
|
|
||||||
|
|
||||||
#else /* !FT_USE_AUTOCONF_SIZEOF_TYPES */
|
|
||||||
|
|
||||||
/* Following cpp computation of the bit length of int and long */
|
|
||||||
/* is copied from default include/freetype/config/ftconfig.h. */
|
|
||||||
/* If any improvement is required for this file, it should be */
|
|
||||||
/* applied to the original header file for the builders that */
|
|
||||||
/* does not use configure script. */
|
|
||||||
|
|
||||||
/* The size of an `int' type. */
|
|
||||||
#if FT_UINT_MAX == 0xFFFFUL
|
|
||||||
#define FT_SIZEOF_INT (16 / FT_CHAR_BIT)
|
|
||||||
#elif FT_UINT_MAX == 0xFFFFFFFFUL
|
|
||||||
#define FT_SIZEOF_INT (32 / FT_CHAR_BIT)
|
|
||||||
#elif FT_UINT_MAX > 0xFFFFFFFFUL && FT_UINT_MAX == 0xFFFFFFFFFFFFFFFFUL
|
|
||||||
#define FT_SIZEOF_INT (64 / FT_CHAR_BIT)
|
|
||||||
#else
|
|
||||||
#error "Unsupported size of `int' type!"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* The size of a `long' type. A five-byte `long' (as used e.g. on the */
|
|
||||||
/* DM642) is recognized but avoided. */
|
|
||||||
#if FT_ULONG_MAX == 0xFFFFFFFFUL
|
|
||||||
#define FT_SIZEOF_LONG (32 / FT_CHAR_BIT)
|
|
||||||
#elif FT_ULONG_MAX > 0xFFFFFFFFUL && FT_ULONG_MAX == 0xFFFFFFFFFFUL
|
|
||||||
#define FT_SIZEOF_LONG (32 / FT_CHAR_BIT)
|
|
||||||
#elif FT_ULONG_MAX > 0xFFFFFFFFUL && FT_ULONG_MAX == 0xFFFFFFFFFFFFFFFFUL
|
|
||||||
#define FT_SIZEOF_LONG (64 / FT_CHAR_BIT)
|
|
||||||
#else
|
|
||||||
#error "Unsupported size of `long' type!"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /* !FT_USE_AUTOCONF_SIZEOF_TYPES */
|
|
||||||
|
|
||||||
|
|
||||||
/* Preferred alignment of data */
|
|
||||||
#define FT_ALIGNMENT 8
|
|
||||||
|
|
||||||
|
|
||||||
/* FT_UNUSED is a macro used to indicate that a given parameter is not */
|
|
||||||
/* used -- this is only used to get rid of unpleasant compiler warnings */
|
|
||||||
#ifndef FT_UNUSED
|
|
||||||
#define FT_UNUSED( arg ) ( (arg) = (arg) )
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* AUTOMATIC CONFIGURATION MACROS */
|
|
||||||
/* */
|
|
||||||
/* These macros are computed from the ones defined above. Don't touch */
|
|
||||||
/* their definition, unless you know precisely what you are doing. No */
|
|
||||||
/* porter should need to mess with them. */
|
|
||||||
/* */
|
|
||||||
/*************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* Mac support */
|
|
||||||
/* */
|
|
||||||
/* This is the only necessary change, so it is defined here instead */
|
|
||||||
/* providing a new configuration file. */
|
|
||||||
/* */
|
|
||||||
#if ( defined( __APPLE__ ) && !defined( DARWIN_NO_CARBON ) ) || \
|
|
||||||
( defined( __MWERKS__ ) && defined( macintosh ) )
|
|
||||||
/* no Carbon frameworks for 64bit 10.4.x */
|
|
||||||
#include "AvailabilityMacros.h"
|
|
||||||
#if defined( __LP64__ ) && \
|
|
||||||
( MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4 )
|
|
||||||
#define DARWIN_NO_CARBON 1
|
|
||||||
#else
|
|
||||||
#define FT_MACINTOSH 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#elif defined( __SC__ ) || defined( __MRC__ )
|
|
||||||
/* Classic MacOS compilers */
|
|
||||||
#include "ConditionalMacros.h"
|
|
||||||
#if TARGET_OS_MAC
|
|
||||||
#define FT_MACINTOSH 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/* Fix compiler warning with sgi compiler */
|
|
||||||
#if defined( __sgi ) && !defined( __GNUC__ )
|
|
||||||
#if defined( _COMPILER_VERSION ) && ( _COMPILER_VERSION >= 730 )
|
|
||||||
#pragma set woff 3505
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* IntN types */
|
|
||||||
/* */
|
|
||||||
/* Used to guarantee the size of some specific integers. */
|
|
||||||
/* */
|
|
||||||
typedef signed short FT_Int16;
|
|
||||||
typedef unsigned short FT_UInt16;
|
|
||||||
|
|
||||||
#if FT_SIZEOF_INT == 4
|
|
||||||
|
|
||||||
typedef signed int FT_Int32;
|
|
||||||
typedef unsigned int FT_UInt32;
|
|
||||||
|
|
||||||
#elif FT_SIZEOF_LONG == 4
|
|
||||||
|
|
||||||
typedef signed long FT_Int32;
|
|
||||||
typedef unsigned long FT_UInt32;
|
|
||||||
|
|
||||||
#else
|
|
||||||
#error "no 32bit type found -- please check your configuration files"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/* look up an integer type that is at least 32 bits */
|
|
||||||
#if FT_SIZEOF_INT >= 4
|
|
||||||
|
|
||||||
typedef int FT_Fast;
|
|
||||||
typedef unsigned int FT_UFast;
|
|
||||||
|
|
||||||
#elif FT_SIZEOF_LONG >= 4
|
|
||||||
|
|
||||||
typedef long FT_Fast;
|
|
||||||
typedef unsigned long FT_UFast;
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/* determine whether we have a 64-bit int type for platforms without */
|
|
||||||
/* Autoconf */
|
|
||||||
#if FT_SIZEOF_LONG == 8
|
|
||||||
|
|
||||||
/* FT_LONG64 must be defined if a 64-bit type is available */
|
|
||||||
#define FT_LONG64
|
|
||||||
#define FT_INT64 long
|
|
||||||
|
|
||||||
#elif defined( _MSC_VER ) && _MSC_VER >= 900 /* Visual C++ (and Intel C++) */
|
|
||||||
|
|
||||||
/* this compiler provides the __int64 type */
|
|
||||||
#define FT_LONG64
|
|
||||||
#define FT_INT64 __int64
|
|
||||||
|
|
||||||
#elif defined( __BORLANDC__ ) /* Borland C++ */
|
|
||||||
|
|
||||||
/* XXXX: We should probably check the value of __BORLANDC__ in order */
|
|
||||||
/* to test the compiler version. */
|
|
||||||
|
|
||||||
/* this compiler provides the __int64 type */
|
|
||||||
#define FT_LONG64
|
|
||||||
#define FT_INT64 __int64
|
|
||||||
|
|
||||||
#elif defined( __WATCOMC__ ) /* Watcom C++ */
|
|
||||||
|
|
||||||
/* Watcom doesn't provide 64-bit data types */
|
|
||||||
|
|
||||||
#elif defined( __MWERKS__ ) /* Metrowerks CodeWarrior */
|
|
||||||
|
|
||||||
#define FT_LONG64
|
|
||||||
#define FT_INT64 long long int
|
|
||||||
|
|
||||||
#elif defined( __GNUC__ )
|
|
||||||
|
|
||||||
/* GCC provides the `long long' type */
|
|
||||||
#define FT_LONG64
|
|
||||||
#define FT_INT64 long long int
|
|
||||||
|
|
||||||
#endif /* FT_SIZEOF_LONG == 8 */
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* A 64-bit data type will create compilation problems if you compile */
|
|
||||||
/* in strict ANSI mode. To avoid them, we disable its use if __STDC__ */
|
|
||||||
/* is defined. You can however ignore this rule by defining the */
|
|
||||||
/* FT_CONFIG_OPTION_FORCE_INT64 configuration macro. */
|
|
||||||
/* */
|
|
||||||
#if defined( FT_LONG64 ) && !defined( FT_CONFIG_OPTION_FORCE_INT64 )
|
|
||||||
|
|
||||||
#ifdef __STDC__
|
|
||||||
|
|
||||||
/* Undefine the 64-bit macros in strict ANSI compilation mode. */
|
|
||||||
/* Since `#undef' doesn't survive in configuration header files */
|
|
||||||
/* we use the postprocessing facility of AC_CONFIG_HEADERS to */
|
|
||||||
/* replace the leading `/' with `#'. */
|
|
||||||
#undef FT_LONG64
|
|
||||||
#undef FT_INT64
|
|
||||||
|
|
||||||
#endif /* __STDC__ */
|
|
||||||
|
|
||||||
#endif /* FT_LONG64 && !FT_CONFIG_OPTION_FORCE_INT64 */
|
|
||||||
|
|
||||||
|
|
||||||
#define FT_BEGIN_STMNT do {
|
|
||||||
#define FT_END_STMNT } while ( 0 )
|
|
||||||
#define FT_DUMMY_STMNT FT_BEGIN_STMNT FT_END_STMNT
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef FT_CONFIG_OPTION_NO_ASSEMBLER
|
|
||||||
/* Provide assembler fragments for performance-critical functions. */
|
|
||||||
/* These must be defined `static __inline__' with GCC. */
|
|
||||||
|
|
||||||
#ifdef __GNUC__
|
|
||||||
|
|
||||||
#if defined( __arm__ ) && !defined( __thumb__ )
|
|
||||||
#define FT_MULFIX_ASSEMBLER FT_MulFix_arm
|
|
||||||
|
|
||||||
static __inline__ FT_Int32
|
|
||||||
FT_MulFix_arm( FT_Int32 a,
|
|
||||||
FT_Int32 b )
|
|
||||||
{
|
|
||||||
register FT_Int32 t, t2;
|
|
||||||
|
|
||||||
|
|
||||||
__asm__ __volatile__ (
|
|
||||||
"smull %1, %2, %4, %3\n\t" /* (lo=%1,hi=%2) = a*b */
|
|
||||||
"mov %0, %2, asr #31\n\t" /* %0 = (hi >> 31) */
|
|
||||||
"add %0, %0, #0x8000\n\t" /* %0 += 0x8000 */
|
|
||||||
"adds %1, %1, %0\n\t" /* %1 += %0 */
|
|
||||||
"adc %2, %2, #0\n\t" /* %2 += carry */
|
|
||||||
"mov %0, %1, lsr #16\n\t" /* %0 = %1 >> 16 */
|
|
||||||
"orr %0, %0, %2, lsl #16\n\t" /* %0 |= %2 << 16 */
|
|
||||||
: "=r"(a), "=&r"(t2), "=&r"(t)
|
|
||||||
: "r"(a), "r"(b) );
|
|
||||||
return a;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif /* __arm__ && !__thumb__ */
|
|
||||||
|
|
||||||
#if defined( __i386__ )
|
|
||||||
#define FT_MULFIX_ASSEMBLER FT_MulFix_i386
|
|
||||||
|
|
||||||
static __inline__ FT_Int32
|
|
||||||
FT_MulFix_i386( FT_Int32 a,
|
|
||||||
FT_Int32 b )
|
|
||||||
{
|
|
||||||
register FT_Int32 result;
|
|
||||||
|
|
||||||
|
|
||||||
__asm__ __volatile__ (
|
|
||||||
"imul %%edx\n"
|
|
||||||
"movl %%edx, %%ecx\n"
|
|
||||||
"sarl $31, %%ecx\n"
|
|
||||||
"addl $0x8000, %%ecx\n"
|
|
||||||
"addl %%ecx, %%eax\n"
|
|
||||||
"adcl $0, %%edx\n"
|
|
||||||
"shrl $16, %%eax\n"
|
|
||||||
"shll $16, %%edx\n"
|
|
||||||
"addl %%edx, %%eax\n"
|
|
||||||
: "=a"(result), "+d"(b)
|
|
||||||
: "a"(a)
|
|
||||||
: "%ecx" );
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif /* i386 */
|
|
||||||
|
|
||||||
#endif /* __GNUC__ */
|
|
||||||
|
|
||||||
#endif /* !FT_CONFIG_OPTION_NO_ASSEMBLER */
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef FT_CONFIG_OPTION_INLINE_MULFIX
|
|
||||||
#ifdef FT_MULFIX_ASSEMBLER
|
|
||||||
#define FT_MULFIX_INLINED FT_MULFIX_ASSEMBLER
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef FT_MAKE_OPTION_SINGLE_OBJECT
|
|
||||||
|
|
||||||
#define FT_LOCAL( x ) static x
|
|
||||||
#define FT_LOCAL_DEF( x ) static x
|
|
||||||
|
|
||||||
#else
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
#define FT_LOCAL( x ) extern "C" x
|
|
||||||
#define FT_LOCAL_DEF( x ) extern "C" x
|
|
||||||
#else
|
|
||||||
#define FT_LOCAL( x ) extern x
|
|
||||||
#define FT_LOCAL_DEF( x ) x
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /* FT_MAKE_OPTION_SINGLE_OBJECT */
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef FT_BASE
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
#define FT_BASE( x ) extern "C" x
|
|
||||||
#else
|
|
||||||
#define FT_BASE( x ) extern x
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /* !FT_BASE */
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef FT_BASE_DEF
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
#define FT_BASE_DEF( x ) x
|
|
||||||
#else
|
|
||||||
#define FT_BASE_DEF( x ) x
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /* !FT_BASE_DEF */
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef FT_EXPORT
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
#define FT_EXPORT( x ) extern "C" x
|
|
||||||
#else
|
|
||||||
#define FT_EXPORT( x ) extern x
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /* !FT_EXPORT */
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef FT_EXPORT_DEF
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
#define FT_EXPORT_DEF( x ) extern "C" x
|
|
||||||
#else
|
|
||||||
#define FT_EXPORT_DEF( x ) extern x
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /* !FT_EXPORT_DEF */
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef FT_EXPORT_VAR
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
#define FT_EXPORT_VAR( x ) extern "C" x
|
|
||||||
#else
|
|
||||||
#define FT_EXPORT_VAR( x ) extern x
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /* !FT_EXPORT_VAR */
|
|
||||||
|
|
||||||
/* The following macros are needed to compile the library with a */
|
|
||||||
/* C++ compiler and with 16bit compilers. */
|
|
||||||
/* */
|
|
||||||
|
|
||||||
/* This is special. Within C++, you must specify `extern "C"' for */
|
|
||||||
/* functions which are used via function pointers, and you also */
|
|
||||||
/* must do that for structures which contain function pointers to */
|
|
||||||
/* assure C linkage -- it's not possible to have (local) anonymous */
|
|
||||||
/* functions which are accessed by (global) function pointers. */
|
|
||||||
/* */
|
|
||||||
/* */
|
|
||||||
/* FT_CALLBACK_DEF is used to _define_ a callback function. */
|
|
||||||
/* */
|
|
||||||
/* FT_CALLBACK_TABLE is used to _declare_ a constant variable that */
|
|
||||||
/* contains pointers to callback functions. */
|
|
||||||
/* */
|
|
||||||
/* FT_CALLBACK_TABLE_DEF is used to _define_ a constant variable */
|
|
||||||
/* that contains pointers to callback functions. */
|
|
||||||
/* */
|
|
||||||
/* */
|
|
||||||
/* Some 16bit compilers have to redefine these macros to insert */
|
|
||||||
/* the infamous `_cdecl' or `__fastcall' declarations. */
|
|
||||||
/* */
|
|
||||||
#ifndef FT_CALLBACK_DEF
|
|
||||||
#ifdef __cplusplus
|
|
||||||
#define FT_CALLBACK_DEF( x ) extern "C" x
|
|
||||||
#else
|
|
||||||
#define FT_CALLBACK_DEF( x ) static x
|
|
||||||
#endif
|
|
||||||
#endif /* FT_CALLBACK_DEF */
|
|
||||||
|
|
||||||
#ifndef FT_CALLBACK_TABLE
|
|
||||||
#ifdef __cplusplus
|
|
||||||
#define FT_CALLBACK_TABLE extern "C"
|
|
||||||
#define FT_CALLBACK_TABLE_DEF extern "C"
|
|
||||||
#else
|
|
||||||
#define FT_CALLBACK_TABLE extern
|
|
||||||
#define FT_CALLBACK_TABLE_DEF /* nothing */
|
|
||||||
#endif
|
|
||||||
#endif /* FT_CALLBACK_TABLE */
|
|
||||||
|
|
||||||
|
|
||||||
FT_END_HEADER
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* __FTCONFIG_H__ */
|
|
||||||
|
|
||||||
|
|
||||||
/* END */
|
|
@ -1,780 +0,0 @@
|
|||||||
/***************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* ftheader.h */
|
|
||||||
/* */
|
|
||||||
/* Build macros of the FreeType 2 library. */
|
|
||||||
/* */
|
|
||||||
/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 by */
|
|
||||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
|
||||||
/* */
|
|
||||||
/* This file is part of the FreeType project, and may only be used, */
|
|
||||||
/* modified, and distributed under the terms of the FreeType project */
|
|
||||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
|
||||||
/* this file you indicate that you have read the license and */
|
|
||||||
/* understand and accept it fully. */
|
|
||||||
/* */
|
|
||||||
/***************************************************************************/
|
|
||||||
|
|
||||||
#ifndef __FT_HEADER_H__
|
|
||||||
#define __FT_HEADER_H__
|
|
||||||
|
|
||||||
|
|
||||||
/*@***********************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Macro> */
|
|
||||||
/* FT_BEGIN_HEADER */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* This macro is used in association with @FT_END_HEADER in header */
|
|
||||||
/* files to ensure that the declarations within are properly */
|
|
||||||
/* encapsulated in an `extern "C" { .. }' block when included from a */
|
|
||||||
/* C++ compiler. */
|
|
||||||
/* */
|
|
||||||
#ifdef __cplusplus
|
|
||||||
#define FT_BEGIN_HEADER extern "C" {
|
|
||||||
#else
|
|
||||||
#define FT_BEGIN_HEADER /* nothing */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/*@***********************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Macro> */
|
|
||||||
/* FT_END_HEADER */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* This macro is used in association with @FT_BEGIN_HEADER in header */
|
|
||||||
/* files to ensure that the declarations within are properly */
|
|
||||||
/* encapsulated in an `extern "C" { .. }' block when included from a */
|
|
||||||
/* C++ compiler. */
|
|
||||||
/* */
|
|
||||||
#ifdef __cplusplus
|
|
||||||
#define FT_END_HEADER }
|
|
||||||
#else
|
|
||||||
#define FT_END_HEADER /* nothing */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* Aliases for the FreeType 2 public and configuration files. */
|
|
||||||
/* */
|
|
||||||
/*************************************************************************/
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Section> */
|
|
||||||
/* header_file_macros */
|
|
||||||
/* */
|
|
||||||
/* <Title> */
|
|
||||||
/* Header File Macros */
|
|
||||||
/* */
|
|
||||||
/* <Abstract> */
|
|
||||||
/* Macro definitions used to #include specific header files. */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* The following macros are defined to the name of specific */
|
|
||||||
/* FreeType~2 header files. They can be used directly in #include */
|
|
||||||
/* statements as in: */
|
|
||||||
/* */
|
|
||||||
/* { */
|
|
||||||
/* #include FT_FREETYPE_H */
|
|
||||||
/* #include FT_MULTIPLE_MASTERS_H */
|
|
||||||
/* #include FT_GLYPH_H */
|
|
||||||
/* } */
|
|
||||||
/* */
|
|
||||||
/* There are several reasons why we are now using macros to name */
|
|
||||||
/* public header files. The first one is that such macros are not */
|
|
||||||
/* limited to the infamous 8.3~naming rule required by DOS (and */
|
|
||||||
/* `FT_MULTIPLE_MASTERS_H' is a lot more meaningful than `ftmm.h'). */
|
|
||||||
/* */
|
|
||||||
/* The second reason is that it allows for more flexibility in the */
|
|
||||||
/* way FreeType~2 is installed on a given system. */
|
|
||||||
/* */
|
|
||||||
/*************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
/* configuration files */
|
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
*
|
|
||||||
* @macro:
|
|
||||||
* FT_CONFIG_CONFIG_H
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* A macro used in #include statements to name the file containing
|
|
||||||
* FreeType~2 configuration data.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
#ifndef FT_CONFIG_CONFIG_H
|
|
||||||
#define FT_CONFIG_CONFIG_H <freetype/config/ftconfig.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
*
|
|
||||||
* @macro:
|
|
||||||
* FT_CONFIG_STANDARD_LIBRARY_H
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* A macro used in #include statements to name the file containing
|
|
||||||
* FreeType~2 interface to the standard C library functions.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
#ifndef FT_CONFIG_STANDARD_LIBRARY_H
|
|
||||||
#define FT_CONFIG_STANDARD_LIBRARY_H <freetype/config/ftstdlib.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
*
|
|
||||||
* @macro:
|
|
||||||
* FT_CONFIG_OPTIONS_H
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* A macro used in #include statements to name the file containing
|
|
||||||
* FreeType~2 project-specific configuration options.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
#ifndef FT_CONFIG_OPTIONS_H
|
|
||||||
#define FT_CONFIG_OPTIONS_H <freetype/config/ftoption.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
*
|
|
||||||
* @macro:
|
|
||||||
* FT_CONFIG_MODULES_H
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* A macro used in #include statements to name the file containing the
|
|
||||||
* list of FreeType~2 modules that are statically linked to new library
|
|
||||||
* instances in @FT_Init_FreeType.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
#ifndef FT_CONFIG_MODULES_H
|
|
||||||
#define FT_CONFIG_MODULES_H <freetype/config/ftmodule.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* */
|
|
||||||
|
|
||||||
/* public headers */
|
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
*
|
|
||||||
* @macro:
|
|
||||||
* FT_FREETYPE_H
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* A macro used in #include statements to name the file containing the
|
|
||||||
* base FreeType~2 API.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
#define FT_FREETYPE_H <freetype/freetype.h>
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
*
|
|
||||||
* @macro:
|
|
||||||
* FT_ERRORS_H
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* A macro used in #include statements to name the file containing the
|
|
||||||
* list of FreeType~2 error codes (and messages).
|
|
||||||
*
|
|
||||||
* It is included by @FT_FREETYPE_H.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
#define FT_ERRORS_H <freetype/fterrors.h>
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
*
|
|
||||||
* @macro:
|
|
||||||
* FT_MODULE_ERRORS_H
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* A macro used in #include statements to name the file containing the
|
|
||||||
* list of FreeType~2 module error offsets (and messages).
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
#define FT_MODULE_ERRORS_H <freetype/ftmoderr.h>
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
*
|
|
||||||
* @macro:
|
|
||||||
* FT_SYSTEM_H
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* A macro used in #include statements to name the file containing the
|
|
||||||
* FreeType~2 interface to low-level operations (i.e., memory management
|
|
||||||
* and stream i/o).
|
|
||||||
*
|
|
||||||
* It is included by @FT_FREETYPE_H.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
#define FT_SYSTEM_H <freetype/ftsystem.h>
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
*
|
|
||||||
* @macro:
|
|
||||||
* FT_IMAGE_H
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* A macro used in #include statements to name the file containing type
|
|
||||||
* definitions related to glyph images (i.e., bitmaps, outlines,
|
|
||||||
* scan-converter parameters).
|
|
||||||
*
|
|
||||||
* It is included by @FT_FREETYPE_H.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
#define FT_IMAGE_H <freetype/ftimage.h>
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
*
|
|
||||||
* @macro:
|
|
||||||
* FT_TYPES_H
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* A macro used in #include statements to name the file containing the
|
|
||||||
* basic data types defined by FreeType~2.
|
|
||||||
*
|
|
||||||
* It is included by @FT_FREETYPE_H.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
#define FT_TYPES_H <freetype/fttypes.h>
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
*
|
|
||||||
* @macro:
|
|
||||||
* FT_LIST_H
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* A macro used in #include statements to name the file containing the
|
|
||||||
* list management API of FreeType~2.
|
|
||||||
*
|
|
||||||
* (Most applications will never need to include this file.)
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
#define FT_LIST_H <freetype/ftlist.h>
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
*
|
|
||||||
* @macro:
|
|
||||||
* FT_OUTLINE_H
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* A macro used in #include statements to name the file containing the
|
|
||||||
* scalable outline management API of FreeType~2.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
#define FT_OUTLINE_H <freetype/ftoutln.h>
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
*
|
|
||||||
* @macro:
|
|
||||||
* FT_SIZES_H
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* A macro used in #include statements to name the file containing the
|
|
||||||
* API which manages multiple @FT_Size objects per face.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
#define FT_SIZES_H <freetype/ftsizes.h>
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
*
|
|
||||||
* @macro:
|
|
||||||
* FT_MODULE_H
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* A macro used in #include statements to name the file containing the
|
|
||||||
* module management API of FreeType~2.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
#define FT_MODULE_H <freetype/ftmodapi.h>
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
*
|
|
||||||
* @macro:
|
|
||||||
* FT_RENDER_H
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* A macro used in #include statements to name the file containing the
|
|
||||||
* renderer module management API of FreeType~2.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
#define FT_RENDER_H <freetype/ftrender.h>
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
*
|
|
||||||
* @macro:
|
|
||||||
* FT_TYPE1_TABLES_H
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* A macro used in #include statements to name the file containing the
|
|
||||||
* types and API specific to the Type~1 format.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
#define FT_TYPE1_TABLES_H <freetype/t1tables.h>
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
*
|
|
||||||
* @macro:
|
|
||||||
* FT_TRUETYPE_IDS_H
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* A macro used in #include statements to name the file containing the
|
|
||||||
* enumeration values which identify name strings, languages, encodings,
|
|
||||||
* etc. This file really contains a _large_ set of constant macro
|
|
||||||
* definitions, taken from the TrueType and OpenType specifications.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
#define FT_TRUETYPE_IDS_H <freetype/ttnameid.h>
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
*
|
|
||||||
* @macro:
|
|
||||||
* FT_TRUETYPE_TABLES_H
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* A macro used in #include statements to name the file containing the
|
|
||||||
* types and API specific to the TrueType (as well as OpenType) format.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
#define FT_TRUETYPE_TABLES_H <freetype/tttables.h>
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
*
|
|
||||||
* @macro:
|
|
||||||
* FT_TRUETYPE_TAGS_H
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* A macro used in #include statements to name the file containing the
|
|
||||||
* definitions of TrueType four-byte `tags' which identify blocks in
|
|
||||||
* SFNT-based font formats (i.e., TrueType and OpenType).
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
#define FT_TRUETYPE_TAGS_H <freetype/tttags.h>
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
*
|
|
||||||
* @macro:
|
|
||||||
* FT_BDF_H
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* A macro used in #include statements to name the file containing the
|
|
||||||
* definitions of an API which accesses BDF-specific strings from a
|
|
||||||
* face.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
#define FT_BDF_H <freetype/ftbdf.h>
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
*
|
|
||||||
* @macro:
|
|
||||||
* FT_CID_H
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* A macro used in #include statements to name the file containing the
|
|
||||||
* definitions of an API which access CID font information from a
|
|
||||||
* face.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
#define FT_CID_H <freetype/ftcid.h>
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
*
|
|
||||||
* @macro:
|
|
||||||
* FT_GZIP_H
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* A macro used in #include statements to name the file containing the
|
|
||||||
* definitions of an API which supports gzip-compressed files.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
#define FT_GZIP_H <freetype/ftgzip.h>
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
*
|
|
||||||
* @macro:
|
|
||||||
* FT_LZW_H
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* A macro used in #include statements to name the file containing the
|
|
||||||
* definitions of an API which supports LZW-compressed files.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
#define FT_LZW_H <freetype/ftlzw.h>
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
*
|
|
||||||
* @macro:
|
|
||||||
* FT_WINFONTS_H
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* A macro used in #include statements to name the file containing the
|
|
||||||
* definitions of an API which supports Windows FNT files.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
#define FT_WINFONTS_H <freetype/ftwinfnt.h>
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
*
|
|
||||||
* @macro:
|
|
||||||
* FT_GLYPH_H
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* A macro used in #include statements to name the file containing the
|
|
||||||
* API of the optional glyph management component.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
#define FT_GLYPH_H <freetype/ftglyph.h>
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
*
|
|
||||||
* @macro:
|
|
||||||
* FT_BITMAP_H
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* A macro used in #include statements to name the file containing the
|
|
||||||
* API of the optional bitmap conversion component.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
#define FT_BITMAP_H <freetype/ftbitmap.h>
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
*
|
|
||||||
* @macro:
|
|
||||||
* FT_BBOX_H
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* A macro used in #include statements to name the file containing the
|
|
||||||
* API of the optional exact bounding box computation routines.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
#define FT_BBOX_H <freetype/ftbbox.h>
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
*
|
|
||||||
* @macro:
|
|
||||||
* FT_CACHE_H
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* A macro used in #include statements to name the file containing the
|
|
||||||
* API of the optional FreeType~2 cache sub-system.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
#define FT_CACHE_H <freetype/ftcache.h>
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
*
|
|
||||||
* @macro:
|
|
||||||
* FT_CACHE_IMAGE_H
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* A macro used in #include statements to name the file containing the
|
|
||||||
* `glyph image' API of the FreeType~2 cache sub-system.
|
|
||||||
*
|
|
||||||
* It is used to define a cache for @FT_Glyph elements. You can also
|
|
||||||
* use the API defined in @FT_CACHE_SMALL_BITMAPS_H if you only need to
|
|
||||||
* store small glyph bitmaps, as it will use less memory.
|
|
||||||
*
|
|
||||||
* This macro is deprecated. Simply include @FT_CACHE_H to have all
|
|
||||||
* glyph image-related cache declarations.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
#define FT_CACHE_IMAGE_H FT_CACHE_H
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
*
|
|
||||||
* @macro:
|
|
||||||
* FT_CACHE_SMALL_BITMAPS_H
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* A macro used in #include statements to name the file containing the
|
|
||||||
* `small bitmaps' API of the FreeType~2 cache sub-system.
|
|
||||||
*
|
|
||||||
* It is used to define a cache for small glyph bitmaps in a relatively
|
|
||||||
* memory-efficient way. You can also use the API defined in
|
|
||||||
* @FT_CACHE_IMAGE_H if you want to cache arbitrary glyph images,
|
|
||||||
* including scalable outlines.
|
|
||||||
*
|
|
||||||
* This macro is deprecated. Simply include @FT_CACHE_H to have all
|
|
||||||
* small bitmaps-related cache declarations.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
#define FT_CACHE_SMALL_BITMAPS_H FT_CACHE_H
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
*
|
|
||||||
* @macro:
|
|
||||||
* FT_CACHE_CHARMAP_H
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* A macro used in #include statements to name the file containing the
|
|
||||||
* `charmap' API of the FreeType~2 cache sub-system.
|
|
||||||
*
|
|
||||||
* This macro is deprecated. Simply include @FT_CACHE_H to have all
|
|
||||||
* charmap-based cache declarations.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
#define FT_CACHE_CHARMAP_H FT_CACHE_H
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
*
|
|
||||||
* @macro:
|
|
||||||
* FT_MAC_H
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* A macro used in #include statements to name the file containing the
|
|
||||||
* Macintosh-specific FreeType~2 API. The latter is used to access
|
|
||||||
* fonts embedded in resource forks.
|
|
||||||
*
|
|
||||||
* This header file must be explicitly included by client applications
|
|
||||||
* compiled on the Mac (note that the base API still works though).
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
#define FT_MAC_H <freetype/ftmac.h>
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
*
|
|
||||||
* @macro:
|
|
||||||
* FT_MULTIPLE_MASTERS_H
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* A macro used in #include statements to name the file containing the
|
|
||||||
* optional multiple-masters management API of FreeType~2.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
#define FT_MULTIPLE_MASTERS_H <freetype/ftmm.h>
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
*
|
|
||||||
* @macro:
|
|
||||||
* FT_SFNT_NAMES_H
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* A macro used in #include statements to name the file containing the
|
|
||||||
* optional FreeType~2 API which accesses embedded `name' strings in
|
|
||||||
* SFNT-based font formats (i.e., TrueType and OpenType).
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
#define FT_SFNT_NAMES_H <freetype/ftsnames.h>
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
*
|
|
||||||
* @macro:
|
|
||||||
* FT_OPENTYPE_VALIDATE_H
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* A macro used in #include statements to name the file containing the
|
|
||||||
* optional FreeType~2 API which validates OpenType tables (BASE, GDEF,
|
|
||||||
* GPOS, GSUB, JSTF).
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
#define FT_OPENTYPE_VALIDATE_H <freetype/ftotval.h>
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
*
|
|
||||||
* @macro:
|
|
||||||
* FT_GX_VALIDATE_H
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* A macro used in #include statements to name the file containing the
|
|
||||||
* optional FreeType~2 API which validates TrueTypeGX/AAT tables (feat,
|
|
||||||
* mort, morx, bsln, just, kern, opbd, trak, prop).
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
#define FT_GX_VALIDATE_H <freetype/ftgxval.h>
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
*
|
|
||||||
* @macro:
|
|
||||||
* FT_PFR_H
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* A macro used in #include statements to name the file containing the
|
|
||||||
* FreeType~2 API which accesses PFR-specific data.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
#define FT_PFR_H <freetype/ftpfr.h>
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
*
|
|
||||||
* @macro:
|
|
||||||
* FT_STROKER_H
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* A macro used in #include statements to name the file containing the
|
|
||||||
* FreeType~2 API which provides functions to stroke outline paths.
|
|
||||||
*/
|
|
||||||
#define FT_STROKER_H <freetype/ftstroke.h>
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
*
|
|
||||||
* @macro:
|
|
||||||
* FT_SYNTHESIS_H
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* A macro used in #include statements to name the file containing the
|
|
||||||
* FreeType~2 API which performs artificial obliquing and emboldening.
|
|
||||||
*/
|
|
||||||
#define FT_SYNTHESIS_H <freetype/ftsynth.h>
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
*
|
|
||||||
* @macro:
|
|
||||||
* FT_XFREE86_H
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* A macro used in #include statements to name the file containing the
|
|
||||||
* FreeType~2 API which provides functions specific to the XFree86 and
|
|
||||||
* X.Org X11 servers.
|
|
||||||
*/
|
|
||||||
#define FT_XFREE86_H <freetype/ftxf86.h>
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
*
|
|
||||||
* @macro:
|
|
||||||
* FT_TRIGONOMETRY_H
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* A macro used in #include statements to name the file containing the
|
|
||||||
* FreeType~2 API which performs trigonometric computations (e.g.,
|
|
||||||
* cosines and arc tangents).
|
|
||||||
*/
|
|
||||||
#define FT_TRIGONOMETRY_H <freetype/fttrigon.h>
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
*
|
|
||||||
* @macro:
|
|
||||||
* FT_LCD_FILTER_H
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* A macro used in #include statements to name the file containing the
|
|
||||||
* FreeType~2 API which performs color filtering for subpixel rendering.
|
|
||||||
*/
|
|
||||||
#define FT_LCD_FILTER_H <freetype/ftlcdfil.h>
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
*
|
|
||||||
* @macro:
|
|
||||||
* FT_UNPATENTED_HINTING_H
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* A macro used in #include statements to name the file containing the
|
|
||||||
* FreeType~2 API which performs color filtering for subpixel rendering.
|
|
||||||
*/
|
|
||||||
#define FT_UNPATENTED_HINTING_H <freetype/ttunpat.h>
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
*
|
|
||||||
* @macro:
|
|
||||||
* FT_INCREMENTAL_H
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* A macro used in #include statements to name the file containing the
|
|
||||||
* FreeType~2 API which performs color filtering for subpixel rendering.
|
|
||||||
*/
|
|
||||||
#define FT_INCREMENTAL_H <freetype/ftincrem.h>
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
*
|
|
||||||
* @macro:
|
|
||||||
* FT_GASP_H
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* A macro used in #include statements to name the file containing the
|
|
||||||
* FreeType~2 API which returns entries from the TrueType GASP table.
|
|
||||||
*/
|
|
||||||
#define FT_GASP_H <freetype/ftgasp.h>
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
*
|
|
||||||
* @macro:
|
|
||||||
* FT_ADVANCES_H
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* A macro used in #include statements to name the file containing the
|
|
||||||
* FreeType~2 API which returns individual and ranged glyph advances.
|
|
||||||
*/
|
|
||||||
#define FT_ADVANCES_H <freetype/ftadvanc.h>
|
|
||||||
|
|
||||||
|
|
||||||
/* */
|
|
||||||
|
|
||||||
#define FT_ERROR_DEFINITIONS_H <freetype/fterrdef.h>
|
|
||||||
|
|
||||||
|
|
||||||
/* The internals of the cache sub-system are no longer exposed. We */
|
|
||||||
/* default to FT_CACHE_H at the moment just in case, but we know of */
|
|
||||||
/* no rogue client that uses them. */
|
|
||||||
/* */
|
|
||||||
#define FT_CACHE_MANAGER_H <freetype/ftcache.h>
|
|
||||||
#define FT_CACHE_INTERNAL_MRU_H <freetype/ftcache.h>
|
|
||||||
#define FT_CACHE_INTERNAL_MANAGER_H <freetype/ftcache.h>
|
|
||||||
#define FT_CACHE_INTERNAL_CACHE_H <freetype/ftcache.h>
|
|
||||||
#define FT_CACHE_INTERNAL_GLYPH_H <freetype/ftcache.h>
|
|
||||||
#define FT_CACHE_INTERNAL_IMAGE_H <freetype/ftcache.h>
|
|
||||||
#define FT_CACHE_INTERNAL_SBITS_H <freetype/ftcache.h>
|
|
||||||
|
|
||||||
|
|
||||||
#define FT_INCREMENTAL_H <freetype/ftincrem.h>
|
|
||||||
|
|
||||||
#define FT_TRUETYPE_UNPATENTED_H <freetype/ttunpat.h>
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Include internal headers definitions from <freetype/internal/...>
|
|
||||||
* only when building the library.
|
|
||||||
*/
|
|
||||||
#ifdef FT2_BUILD_LIBRARY
|
|
||||||
#define FT_INTERNAL_INTERNAL_H <freetype/internal/internal.h>
|
|
||||||
#include FT_INTERNAL_INTERNAL_H
|
|
||||||
#endif /* FT2_BUILD_LIBRARY */
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* __FT2_BUILD_H__ */
|
|
||||||
|
|
||||||
|
|
||||||
/* END */
|
|
@ -1,20 +0,0 @@
|
|||||||
/* This is a generated file. */
|
|
||||||
FT_USE_MODULE( FT_Driver_ClassRec, tt_driver_class )
|
|
||||||
FT_USE_MODULE( FT_Driver_ClassRec, t1_driver_class )
|
|
||||||
FT_USE_MODULE( FT_Driver_ClassRec, cff_driver_class )
|
|
||||||
FT_USE_MODULE( FT_Driver_ClassRec, t1cid_driver_class )
|
|
||||||
FT_USE_MODULE( FT_Driver_ClassRec, pfr_driver_class )
|
|
||||||
FT_USE_MODULE( FT_Driver_ClassRec, t42_driver_class )
|
|
||||||
FT_USE_MODULE( FT_Driver_ClassRec, winfnt_driver_class )
|
|
||||||
FT_USE_MODULE( FT_Driver_ClassRec, pcf_driver_class )
|
|
||||||
FT_USE_MODULE( FT_Driver_ClassRec, bdf_driver_class )
|
|
||||||
FT_USE_MODULE( FT_Module_Class, sfnt_module_class )
|
|
||||||
FT_USE_MODULE( FT_Module_Class, autofit_module_class )
|
|
||||||
FT_USE_MODULE( FT_Module_Class, pshinter_module_class )
|
|
||||||
FT_USE_MODULE( FT_Renderer_Class, ft_raster1_renderer_class )
|
|
||||||
FT_USE_MODULE( FT_Renderer_Class, ft_smooth_renderer_class )
|
|
||||||
FT_USE_MODULE( FT_Renderer_Class, ft_smooth_lcd_renderer_class )
|
|
||||||
FT_USE_MODULE( FT_Renderer_Class, ft_smooth_lcdv_renderer_class )
|
|
||||||
FT_USE_MODULE( FT_Module_Class, psaux_module_class )
|
|
||||||
FT_USE_MODULE( FT_Module_Class, psnames_module_class )
|
|
||||||
/* EOF */
|
|
@ -1,733 +0,0 @@
|
|||||||
/***************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* ftoption.h */
|
|
||||||
/* */
|
|
||||||
/* User-selectable configuration macros (specification only). */
|
|
||||||
/* */
|
|
||||||
/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, */
|
|
||||||
/* 2010 by */
|
|
||||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
|
||||||
/* */
|
|
||||||
/* This file is part of the FreeType project, and may only be used, */
|
|
||||||
/* modified, and distributed under the terms of the FreeType project */
|
|
||||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
|
||||||
/* this file you indicate that you have read the license and */
|
|
||||||
/* understand and accept it fully. */
|
|
||||||
/* */
|
|
||||||
/***************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef __FTOPTION_H__
|
|
||||||
#define __FTOPTION_H__
|
|
||||||
|
|
||||||
|
|
||||||
#include <ft2build.h>
|
|
||||||
|
|
||||||
|
|
||||||
FT_BEGIN_HEADER
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* USER-SELECTABLE CONFIGURATION MACROS */
|
|
||||||
/* */
|
|
||||||
/* This file contains the default configuration macro definitions for */
|
|
||||||
/* a standard build of the FreeType library. There are three ways to */
|
|
||||||
/* use this file to build project-specific versions of the library: */
|
|
||||||
/* */
|
|
||||||
/* - You can modify this file by hand, but this is not recommended in */
|
|
||||||
/* cases where you would like to build several versions of the */
|
|
||||||
/* library from a single source directory. */
|
|
||||||
/* */
|
|
||||||
/* - You can put a copy of this file in your build directory, more */
|
|
||||||
/* precisely in `$BUILD/freetype/config/ftoption.h', where `$BUILD' */
|
|
||||||
/* is the name of a directory that is included _before_ the FreeType */
|
|
||||||
/* include path during compilation. */
|
|
||||||
/* */
|
|
||||||
/* The default FreeType Makefiles and Jamfiles use the build */
|
|
||||||
/* directory `builds/<system>' by default, but you can easily change */
|
|
||||||
/* that for your own projects. */
|
|
||||||
/* */
|
|
||||||
/* - Copy the file <ft2build.h> to `$BUILD/ft2build.h' and modify it */
|
|
||||||
/* slightly to pre-define the macro FT_CONFIG_OPTIONS_H used to */
|
|
||||||
/* locate this file during the build. For example, */
|
|
||||||
/* */
|
|
||||||
/* #define FT_CONFIG_OPTIONS_H <myftoptions.h> */
|
|
||||||
/* #include <freetype/config/ftheader.h> */
|
|
||||||
/* */
|
|
||||||
/* will use `$BUILD/myftoptions.h' instead of this file for macro */
|
|
||||||
/* definitions. */
|
|
||||||
/* */
|
|
||||||
/* Note also that you can similarly pre-define the macro */
|
|
||||||
/* FT_CONFIG_MODULES_H used to locate the file listing of the modules */
|
|
||||||
/* that are statically linked to the library at compile time. By */
|
|
||||||
/* default, this file is <freetype/config/ftmodule.h>. */
|
|
||||||
/* */
|
|
||||||
/* We highly recommend using the third method whenever possible. */
|
|
||||||
/* */
|
|
||||||
/*************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/*************************************************************************/
|
|
||||||
/**** ****/
|
|
||||||
/**** G E N E R A L F R E E T Y P E 2 C O N F I G U R A T I O N ****/
|
|
||||||
/**** ****/
|
|
||||||
/*************************************************************************/
|
|
||||||
/*************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* Uncomment the line below if you want to activate sub-pixel rendering */
|
|
||||||
/* (a.k.a. LCD rendering, or ClearType) in this build of the library. */
|
|
||||||
/* */
|
|
||||||
/* Note that this feature is covered by several Microsoft patents */
|
|
||||||
/* and should not be activated in any default build of the library. */
|
|
||||||
/* */
|
|
||||||
/* This macro has no impact on the FreeType API, only on its */
|
|
||||||
/* _implementation_. For example, using FT_RENDER_MODE_LCD when calling */
|
|
||||||
/* FT_Render_Glyph still generates a bitmap that is 3 times wider than */
|
|
||||||
/* the original size in case this macro isn't defined; however, each */
|
|
||||||
/* triplet of subpixels has R=G=B. */
|
|
||||||
/* */
|
|
||||||
/* This is done to allow FreeType clients to run unmodified, forcing */
|
|
||||||
/* them to display normal gray-level anti-aliased glyphs. */
|
|
||||||
/* */
|
|
||||||
/* #define FT_CONFIG_OPTION_SUBPIXEL_RENDERING */
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* Many compilers provide a non-ANSI 64-bit data type that can be used */
|
|
||||||
/* by FreeType to speed up some computations. However, this will create */
|
|
||||||
/* some problems when compiling the library in strict ANSI mode. */
|
|
||||||
/* */
|
|
||||||
/* For this reason, the use of 64-bit integers is normally disabled when */
|
|
||||||
/* the __STDC__ macro is defined. You can however disable this by */
|
|
||||||
/* defining the macro FT_CONFIG_OPTION_FORCE_INT64 here. */
|
|
||||||
/* */
|
|
||||||
/* For most compilers, this will only create compilation warnings when */
|
|
||||||
/* building the library. */
|
|
||||||
/* */
|
|
||||||
/* ObNote: The compiler-specific 64-bit integers are detected in the */
|
|
||||||
/* file `ftconfig.h' either statically or through the */
|
|
||||||
/* `configure' script on supported platforms. */
|
|
||||||
/* */
|
|
||||||
#undef FT_CONFIG_OPTION_FORCE_INT64
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* If this macro is defined, do not try to use an assembler version of */
|
|
||||||
/* performance-critical functions (e.g. FT_MulFix). You should only do */
|
|
||||||
/* that to verify that the assembler function works properly, or to */
|
|
||||||
/* execute benchmark tests of the various implementations. */
|
|
||||||
/* #define FT_CONFIG_OPTION_NO_ASSEMBLER */
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* If this macro is defined, try to use an inlined assembler version of */
|
|
||||||
/* the `FT_MulFix' function, which is a `hotspot' when loading and */
|
|
||||||
/* hinting glyphs, and which should be executed as fast as possible. */
|
|
||||||
/* */
|
|
||||||
/* Note that if your compiler or CPU is not supported, this will default */
|
|
||||||
/* to the standard and portable implementation found in `ftcalc.c'. */
|
|
||||||
/* */
|
|
||||||
#define FT_CONFIG_OPTION_INLINE_MULFIX
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* LZW-compressed file support. */
|
|
||||||
/* */
|
|
||||||
/* FreeType now handles font files that have been compressed with the */
|
|
||||||
/* `compress' program. This is mostly used to parse many of the PCF */
|
|
||||||
/* files that come with various X11 distributions. The implementation */
|
|
||||||
/* uses NetBSD's `zopen' to partially uncompress the file on the fly */
|
|
||||||
/* (see src/lzw/ftgzip.c). */
|
|
||||||
/* */
|
|
||||||
/* Define this macro if you want to enable this `feature'. */
|
|
||||||
/* */
|
|
||||||
#define FT_CONFIG_OPTION_USE_LZW
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* Gzip-compressed file support. */
|
|
||||||
/* */
|
|
||||||
/* FreeType now handles font files that have been compressed with the */
|
|
||||||
/* `gzip' program. This is mostly used to parse many of the PCF files */
|
|
||||||
/* that come with XFree86. The implementation uses `zlib' to */
|
|
||||||
/* partially uncompress the file on the fly (see src/gzip/ftgzip.c). */
|
|
||||||
/* */
|
|
||||||
/* Define this macro if you want to enable this `feature'. See also */
|
|
||||||
/* the macro FT_CONFIG_OPTION_SYSTEM_ZLIB below. */
|
|
||||||
/* */
|
|
||||||
#define FT_CONFIG_OPTION_USE_ZLIB
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* ZLib library selection */
|
|
||||||
/* */
|
|
||||||
/* This macro is only used when FT_CONFIG_OPTION_USE_ZLIB is defined. */
|
|
||||||
/* It allows FreeType's `ftgzip' component to link to the system's */
|
|
||||||
/* installation of the ZLib library. This is useful on systems like */
|
|
||||||
/* Unix or VMS where it generally is already available. */
|
|
||||||
/* */
|
|
||||||
/* If you let it undefined, the component will use its own copy */
|
|
||||||
/* of the zlib sources instead. These have been modified to be */
|
|
||||||
/* included directly within the component and *not* export external */
|
|
||||||
/* function names. This allows you to link any program with FreeType */
|
|
||||||
/* _and_ ZLib without linking conflicts. */
|
|
||||||
/* */
|
|
||||||
/* Do not #undef this macro here since the build system might define */
|
|
||||||
/* it for certain configurations only. */
|
|
||||||
/* */
|
|
||||||
/* #define FT_CONFIG_OPTION_SYSTEM_ZLIB */
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* DLL export compilation */
|
|
||||||
/* */
|
|
||||||
/* When compiling FreeType as a DLL, some systems/compilers need a */
|
|
||||||
/* special keyword in front OR after the return type of function */
|
|
||||||
/* declarations. */
|
|
||||||
/* */
|
|
||||||
/* Two macros are used within the FreeType source code to define */
|
|
||||||
/* exported library functions: FT_EXPORT and FT_EXPORT_DEF. */
|
|
||||||
/* */
|
|
||||||
/* FT_EXPORT( return_type ) */
|
|
||||||
/* */
|
|
||||||
/* is used in a function declaration, as in */
|
|
||||||
/* */
|
|
||||||
/* FT_EXPORT( FT_Error ) */
|
|
||||||
/* FT_Init_FreeType( FT_Library* alibrary ); */
|
|
||||||
/* */
|
|
||||||
/* */
|
|
||||||
/* FT_EXPORT_DEF( return_type ) */
|
|
||||||
/* */
|
|
||||||
/* is used in a function definition, as in */
|
|
||||||
/* */
|
|
||||||
/* FT_EXPORT_DEF( FT_Error ) */
|
|
||||||
/* FT_Init_FreeType( FT_Library* alibrary ) */
|
|
||||||
/* { */
|
|
||||||
/* ... some code ... */
|
|
||||||
/* return FT_Err_Ok; */
|
|
||||||
/* } */
|
|
||||||
/* */
|
|
||||||
/* You can provide your own implementation of FT_EXPORT and */
|
|
||||||
/* FT_EXPORT_DEF here if you want. If you leave them undefined, they */
|
|
||||||
/* will be later automatically defined as `extern return_type' to */
|
|
||||||
/* allow normal compilation. */
|
|
||||||
/* */
|
|
||||||
/* Do not #undef these macros here since the build system might define */
|
|
||||||
/* them for certain configurations only. */
|
|
||||||
/* */
|
|
||||||
/* #define FT_EXPORT(x) extern x */
|
|
||||||
/* #define FT_EXPORT_DEF(x) x */
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* Glyph Postscript Names handling */
|
|
||||||
/* */
|
|
||||||
/* By default, FreeType 2 is compiled with the `psnames' module. This */
|
|
||||||
/* module is in charge of converting a glyph name string into a */
|
|
||||||
/* Unicode value, or return a Macintosh standard glyph name for the */
|
|
||||||
/* use with the TrueType `post' table. */
|
|
||||||
/* */
|
|
||||||
/* Undefine this macro if you do not want `psnames' compiled in your */
|
|
||||||
/* build of FreeType. This has the following effects: */
|
|
||||||
/* */
|
|
||||||
/* - The TrueType driver will provide its own set of glyph names, */
|
|
||||||
/* if you build it to support postscript names in the TrueType */
|
|
||||||
/* `post' table. */
|
|
||||||
/* */
|
|
||||||
/* - The Type 1 driver will not be able to synthesize a Unicode */
|
|
||||||
/* charmap out of the glyphs found in the fonts. */
|
|
||||||
/* */
|
|
||||||
/* You would normally undefine this configuration macro when building */
|
|
||||||
/* a version of FreeType that doesn't contain a Type 1 or CFF driver. */
|
|
||||||
/* */
|
|
||||||
#define FT_CONFIG_OPTION_POSTSCRIPT_NAMES
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* Postscript Names to Unicode Values support */
|
|
||||||
/* */
|
|
||||||
/* By default, FreeType 2 is built with the `PSNames' module compiled */
|
|
||||||
/* in. Among other things, the module is used to convert a glyph name */
|
|
||||||
/* into a Unicode value. This is especially useful in order to */
|
|
||||||
/* synthesize on the fly a Unicode charmap from the CFF/Type 1 driver */
|
|
||||||
/* through a big table named the `Adobe Glyph List' (AGL). */
|
|
||||||
/* */
|
|
||||||
/* Undefine this macro if you do not want the Adobe Glyph List */
|
|
||||||
/* compiled in your `PSNames' module. The Type 1 driver will not be */
|
|
||||||
/* able to synthesize a Unicode charmap out of the glyphs found in the */
|
|
||||||
/* fonts. */
|
|
||||||
/* */
|
|
||||||
#define FT_CONFIG_OPTION_ADOBE_GLYPH_LIST
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* Support for Mac fonts */
|
|
||||||
/* */
|
|
||||||
/* Define this macro if you want support for outline fonts in Mac */
|
|
||||||
/* format (mac dfont, mac resource, macbinary containing a mac */
|
|
||||||
/* resource) on non-Mac platforms. */
|
|
||||||
/* */
|
|
||||||
/* Note that the `FOND' resource isn't checked. */
|
|
||||||
/* */
|
|
||||||
#define FT_CONFIG_OPTION_MAC_FONTS
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* Guessing methods to access embedded resource forks */
|
|
||||||
/* */
|
|
||||||
/* Enable extra Mac fonts support on non-Mac platforms (e.g. */
|
|
||||||
/* GNU/Linux). */
|
|
||||||
/* */
|
|
||||||
/* Resource forks which include fonts data are stored sometimes in */
|
|
||||||
/* locations which users or developers don't expected. In some cases, */
|
|
||||||
/* resource forks start with some offset from the head of a file. In */
|
|
||||||
/* other cases, the actual resource fork is stored in file different */
|
|
||||||
/* from what the user specifies. If this option is activated, */
|
|
||||||
/* FreeType tries to guess whether such offsets or different file */
|
|
||||||
/* names must be used. */
|
|
||||||
/* */
|
|
||||||
/* Note that normal, direct access of resource forks is controlled via */
|
|
||||||
/* the FT_CONFIG_OPTION_MAC_FONTS option. */
|
|
||||||
/* */
|
|
||||||
#ifdef FT_CONFIG_OPTION_MAC_FONTS
|
|
||||||
#define FT_CONFIG_OPTION_GUESSING_EMBEDDED_RFORK
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* Allow the use of FT_Incremental_Interface to load typefaces that */
|
|
||||||
/* contain no glyph data, but supply it via a callback function. */
|
|
||||||
/* This is required by clients supporting document formats which */
|
|
||||||
/* supply font data incrementally as the document is parsed, such */
|
|
||||||
/* as the Ghostscript interpreter for the PostScript language. */
|
|
||||||
/* */
|
|
||||||
#define FT_CONFIG_OPTION_INCREMENTAL
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* The size in bytes of the render pool used by the scan-line converter */
|
|
||||||
/* to do all of its work. */
|
|
||||||
/* */
|
|
||||||
/* This must be greater than 4KByte if you use FreeType to rasterize */
|
|
||||||
/* glyphs; otherwise, you may set it to zero to avoid unnecessary */
|
|
||||||
/* allocation of the render pool. */
|
|
||||||
/* */
|
|
||||||
#define FT_RENDER_POOL_SIZE 16384L
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* FT_MAX_MODULES */
|
|
||||||
/* */
|
|
||||||
/* The maximum number of modules that can be registered in a single */
|
|
||||||
/* FreeType library object. 32 is the default. */
|
|
||||||
/* */
|
|
||||||
#define FT_MAX_MODULES 32
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* Debug level */
|
|
||||||
/* */
|
|
||||||
/* FreeType can be compiled in debug or trace mode. In debug mode, */
|
|
||||||
/* errors are reported through the `ftdebug' component. In trace */
|
|
||||||
/* mode, additional messages are sent to the standard output during */
|
|
||||||
/* execution. */
|
|
||||||
/* */
|
|
||||||
/* Define FT_DEBUG_LEVEL_ERROR to build the library in debug mode. */
|
|
||||||
/* Define FT_DEBUG_LEVEL_TRACE to build it in trace mode. */
|
|
||||||
/* */
|
|
||||||
/* Don't define any of these macros to compile in `release' mode! */
|
|
||||||
/* */
|
|
||||||
/* Do not #undef these macros here since the build system might define */
|
|
||||||
/* them for certain configurations only. */
|
|
||||||
/* */
|
|
||||||
/* #define FT_DEBUG_LEVEL_ERROR */
|
|
||||||
/* #define FT_DEBUG_LEVEL_TRACE */
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* Memory Debugging */
|
|
||||||
/* */
|
|
||||||
/* FreeType now comes with an integrated memory debugger that is */
|
|
||||||
/* capable of detecting simple errors like memory leaks or double */
|
|
||||||
/* deletes. To compile it within your build of the library, you */
|
|
||||||
/* should define FT_DEBUG_MEMORY here. */
|
|
||||||
/* */
|
|
||||||
/* Note that the memory debugger is only activated at runtime when */
|
|
||||||
/* when the _environment_ variable `FT2_DEBUG_MEMORY' is defined also! */
|
|
||||||
/* */
|
|
||||||
/* Do not #undef this macro here since the build system might define */
|
|
||||||
/* it for certain configurations only. */
|
|
||||||
/* */
|
|
||||||
/* #define FT_DEBUG_MEMORY */
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* Module errors */
|
|
||||||
/* */
|
|
||||||
/* If this macro is set (which is _not_ the default), the higher byte */
|
|
||||||
/* of an error code gives the module in which the error has occurred, */
|
|
||||||
/* while the lower byte is the real error code. */
|
|
||||||
/* */
|
|
||||||
/* Setting this macro makes sense for debugging purposes only, since */
|
|
||||||
/* it would break source compatibility of certain programs that use */
|
|
||||||
/* FreeType 2. */
|
|
||||||
/* */
|
|
||||||
/* More details can be found in the files ftmoderr.h and fterrors.h. */
|
|
||||||
/* */
|
|
||||||
#undef FT_CONFIG_OPTION_USE_MODULE_ERRORS
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* Position Independent Code */
|
|
||||||
/* */
|
|
||||||
/* If this macro is set (which is _not_ the default), FreeType2 will */
|
|
||||||
/* avoid creating constants that require address fixups. Instead the */
|
|
||||||
/* constants will be moved into a struct and additional intialization */
|
|
||||||
/* code will be used. */
|
|
||||||
/* */
|
|
||||||
/* Setting this macro is needed for systems that prohibit address */
|
|
||||||
/* fixups, such as BREW. */
|
|
||||||
/* */
|
|
||||||
/* #define FT_CONFIG_OPTION_PIC */
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/*************************************************************************/
|
|
||||||
/**** ****/
|
|
||||||
/**** S F N T D R I V E R C O N F I G U R A T I O N ****/
|
|
||||||
/**** ****/
|
|
||||||
/*************************************************************************/
|
|
||||||
/*************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* Define TT_CONFIG_OPTION_EMBEDDED_BITMAPS if you want to support */
|
|
||||||
/* embedded bitmaps in all formats using the SFNT module (namely */
|
|
||||||
/* TrueType & OpenType). */
|
|
||||||
/* */
|
|
||||||
#define TT_CONFIG_OPTION_EMBEDDED_BITMAPS
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* Define TT_CONFIG_OPTION_POSTSCRIPT_NAMES if you want to be able to */
|
|
||||||
/* load and enumerate the glyph Postscript names in a TrueType or */
|
|
||||||
/* OpenType file. */
|
|
||||||
/* */
|
|
||||||
/* Note that when you do not compile the `PSNames' module by undefining */
|
|
||||||
/* the above FT_CONFIG_OPTION_POSTSCRIPT_NAMES, the `sfnt' module will */
|
|
||||||
/* contain additional code used to read the PS Names table from a font. */
|
|
||||||
/* */
|
|
||||||
/* (By default, the module uses `PSNames' to extract glyph names.) */
|
|
||||||
/* */
|
|
||||||
#define TT_CONFIG_OPTION_POSTSCRIPT_NAMES
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* Define TT_CONFIG_OPTION_SFNT_NAMES if your applications need to */
|
|
||||||
/* access the internal name table in a SFNT-based format like TrueType */
|
|
||||||
/* or OpenType. The name table contains various strings used to */
|
|
||||||
/* describe the font, like family name, copyright, version, etc. It */
|
|
||||||
/* does not contain any glyph name though. */
|
|
||||||
/* */
|
|
||||||
/* Accessing SFNT names is done through the functions declared in */
|
|
||||||
/* `freetype/ftsnames.h'. */
|
|
||||||
/* */
|
|
||||||
#define TT_CONFIG_OPTION_SFNT_NAMES
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* TrueType CMap support */
|
|
||||||
/* */
|
|
||||||
/* Here you can fine-tune which TrueType CMap table format shall be */
|
|
||||||
/* supported. */
|
|
||||||
#define TT_CONFIG_CMAP_FORMAT_0
|
|
||||||
#define TT_CONFIG_CMAP_FORMAT_2
|
|
||||||
#define TT_CONFIG_CMAP_FORMAT_4
|
|
||||||
#define TT_CONFIG_CMAP_FORMAT_6
|
|
||||||
#define TT_CONFIG_CMAP_FORMAT_8
|
|
||||||
#define TT_CONFIG_CMAP_FORMAT_10
|
|
||||||
#define TT_CONFIG_CMAP_FORMAT_12
|
|
||||||
#define TT_CONFIG_CMAP_FORMAT_13
|
|
||||||
#define TT_CONFIG_CMAP_FORMAT_14
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/*************************************************************************/
|
|
||||||
/**** ****/
|
|
||||||
/**** T R U E T Y P E D R I V E R C O N F I G U R A T I O N ****/
|
|
||||||
/**** ****/
|
|
||||||
/*************************************************************************/
|
|
||||||
/*************************************************************************/
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* Define TT_CONFIG_OPTION_BYTECODE_INTERPRETER if you want to compile */
|
|
||||||
/* a bytecode interpreter in the TrueType driver. */
|
|
||||||
/* */
|
|
||||||
/* By undefining this, you will only compile the code necessary to load */
|
|
||||||
/* TrueType glyphs without hinting. */
|
|
||||||
/* */
|
|
||||||
/* Do not #undef this macro here, since the build system might */
|
|
||||||
/* define it for certain configurations only. */
|
|
||||||
/* */
|
|
||||||
#define TT_CONFIG_OPTION_BYTECODE_INTERPRETER
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* If you define TT_CONFIG_OPTION_UNPATENTED_HINTING, a special version */
|
|
||||||
/* of the TrueType bytecode interpreter is used that doesn't implement */
|
|
||||||
/* any of the patented opcodes and algorithms. The patents related to */
|
|
||||||
/* TrueType hinting have expired worldwide since May 2010; this option */
|
|
||||||
/* is now deprecated. */
|
|
||||||
/* */
|
|
||||||
/* Note that the TT_CONFIG_OPTION_UNPATENTED_HINTING macro is *ignored* */
|
|
||||||
/* if you define TT_CONFIG_OPTION_BYTECODE_INTERPRETER; in other words, */
|
|
||||||
/* either define TT_CONFIG_OPTION_BYTECODE_INTERPRETER or */
|
|
||||||
/* TT_CONFIG_OPTION_UNPATENTED_HINTING but not both at the same time. */
|
|
||||||
/* */
|
|
||||||
/* This macro is only useful for a small number of font files (mostly */
|
|
||||||
/* for Asian scripts) that require bytecode interpretation to properly */
|
|
||||||
/* load glyphs. For all other fonts, this produces unpleasant results, */
|
|
||||||
/* thus the unpatented interpreter is never used to load glyphs from */
|
|
||||||
/* TrueType fonts unless one of the following two options is used. */
|
|
||||||
/* */
|
|
||||||
/* - The unpatented interpreter is explicitly activated by the user */
|
|
||||||
/* through the FT_PARAM_TAG_UNPATENTED_HINTING parameter tag */
|
|
||||||
/* when opening the FT_Face. */
|
|
||||||
/* */
|
|
||||||
/* - FreeType detects that the FT_Face corresponds to one of the */
|
|
||||||
/* `trick' fonts (e.g., `Mingliu') it knows about. The font engine */
|
|
||||||
/* contains a hard-coded list of font names and other matching */
|
|
||||||
/* parameters (see function `tt_face_init' in file */
|
|
||||||
/* `src/truetype/ttobjs.c'). */
|
|
||||||
/* */
|
|
||||||
/* Here a sample code snippet for using FT_PARAM_TAG_UNPATENTED_HINTING. */
|
|
||||||
/* */
|
|
||||||
/* { */
|
|
||||||
/* FT_Parameter parameter; */
|
|
||||||
/* FT_Open_Args open_args; */
|
|
||||||
/* */
|
|
||||||
/* */
|
|
||||||
/* parameter.tag = FT_PARAM_TAG_UNPATENTED_HINTING; */
|
|
||||||
/* */
|
|
||||||
/* open_args.flags = FT_OPEN_PATHNAME | FT_OPEN_PARAMS; */
|
|
||||||
/* open_args.pathname = my_font_pathname; */
|
|
||||||
/* open_args.num_params = 1; */
|
|
||||||
/* open_args.params = ¶meter; */
|
|
||||||
/* */
|
|
||||||
/* error = FT_Open_Face( library, &open_args, index, &face ); */
|
|
||||||
/* ... */
|
|
||||||
/* } */
|
|
||||||
/* */
|
|
||||||
/* #define TT_CONFIG_OPTION_UNPATENTED_HINTING */
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* Define TT_CONFIG_OPTION_INTERPRETER_SWITCH to compile the TrueType */
|
|
||||||
/* bytecode interpreter with a huge switch statement, rather than a call */
|
|
||||||
/* table. This results in smaller and faster code for a number of */
|
|
||||||
/* architectures. */
|
|
||||||
/* */
|
|
||||||
/* Note however that on some compiler/processor combinations, undefining */
|
|
||||||
/* this macro will generate faster, though larger, code. */
|
|
||||||
/* */
|
|
||||||
#define TT_CONFIG_OPTION_INTERPRETER_SWITCH
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* Define TT_CONFIG_OPTION_COMPONENT_OFFSET_SCALED to compile the */
|
|
||||||
/* TrueType glyph loader to use Apple's definition of how to handle */
|
|
||||||
/* component offsets in composite glyphs. */
|
|
||||||
/* */
|
|
||||||
/* Apple and MS disagree on the default behavior of component offsets */
|
|
||||||
/* in composites. Apple says that they should be scaled by the scaling */
|
|
||||||
/* factors in the transformation matrix (roughly, it's more complex) */
|
|
||||||
/* while MS says they should not. OpenType defines two bits in the */
|
|
||||||
/* composite flags array which can be used to disambiguate, but old */
|
|
||||||
/* fonts will not have them. */
|
|
||||||
/* */
|
|
||||||
/* http://partners.adobe.com/asn/developer/opentype/glyf.html */
|
|
||||||
/* http://fonts.apple.com/TTRefMan/RM06/Chap6glyf.html */
|
|
||||||
/* */
|
|
||||||
#undef TT_CONFIG_OPTION_COMPONENT_OFFSET_SCALED
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* Define TT_CONFIG_OPTION_GX_VAR_SUPPORT if you want to include */
|
|
||||||
/* support for Apple's distortable font technology (fvar, gvar, cvar, */
|
|
||||||
/* and avar tables). This has many similarities to Type 1 Multiple */
|
|
||||||
/* Masters support. */
|
|
||||||
/* */
|
|
||||||
#define TT_CONFIG_OPTION_GX_VAR_SUPPORT
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* Define TT_CONFIG_OPTION_BDF if you want to include support for */
|
|
||||||
/* an embedded `BDF ' table within SFNT-based bitmap formats. */
|
|
||||||
/* */
|
|
||||||
#define TT_CONFIG_OPTION_BDF
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/*************************************************************************/
|
|
||||||
/**** ****/
|
|
||||||
/**** T Y P E 1 D R I V E R C O N F I G U R A T I O N ****/
|
|
||||||
/**** ****/
|
|
||||||
/*************************************************************************/
|
|
||||||
/*************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* T1_MAX_DICT_DEPTH is the maximal depth of nest dictionaries and */
|
|
||||||
/* arrays in the Type 1 stream (see t1load.c). A minimum of 4 is */
|
|
||||||
/* required. */
|
|
||||||
/* */
|
|
||||||
#define T1_MAX_DICT_DEPTH 5
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* T1_MAX_SUBRS_CALLS details the maximum number of nested sub-routine */
|
|
||||||
/* calls during glyph loading. */
|
|
||||||
/* */
|
|
||||||
#define T1_MAX_SUBRS_CALLS 16
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* T1_MAX_CHARSTRING_OPERANDS is the charstring stack's capacity. A */
|
|
||||||
/* minimum of 16 is required. */
|
|
||||||
/* */
|
|
||||||
/* The Chinese font MingTiEG-Medium (CNS 11643 character set) needs 256. */
|
|
||||||
/* */
|
|
||||||
#define T1_MAX_CHARSTRINGS_OPERANDS 256
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* Define this configuration macro if you want to prevent the */
|
|
||||||
/* compilation of `t1afm', which is in charge of reading Type 1 AFM */
|
|
||||||
/* files into an existing face. Note that if set, the T1 driver will be */
|
|
||||||
/* unable to produce kerning distances. */
|
|
||||||
/* */
|
|
||||||
#undef T1_CONFIG_OPTION_NO_AFM
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* Define this configuration macro if you want to prevent the */
|
|
||||||
/* compilation of the Multiple Masters font support in the Type 1 */
|
|
||||||
/* driver. */
|
|
||||||
/* */
|
|
||||||
#undef T1_CONFIG_OPTION_NO_MM_SUPPORT
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/*************************************************************************/
|
|
||||||
/**** ****/
|
|
||||||
/**** A U T O F I T M O D U L E C O N F I G U R A T I O N ****/
|
|
||||||
/**** ****/
|
|
||||||
/*************************************************************************/
|
|
||||||
/*************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* Compile autofit module with CJK (Chinese, Japanese, Korean) script */
|
|
||||||
/* support. */
|
|
||||||
/* */
|
|
||||||
#define AF_CONFIG_OPTION_CJK
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* Compile autofit module with Indic script support. */
|
|
||||||
/* */
|
|
||||||
#define AF_CONFIG_OPTION_INDIC
|
|
||||||
|
|
||||||
/* */
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Define this variable if you want to keep the layout of internal
|
|
||||||
* structures that was used prior to FreeType 2.2. This also compiles in
|
|
||||||
* a few obsolete functions to avoid linking problems on typical Unix
|
|
||||||
* distributions.
|
|
||||||
*
|
|
||||||
* For embedded systems or building a new distribution from scratch, it
|
|
||||||
* is recommended to disable the macro since it reduces the library's code
|
|
||||||
* size and activates a few memory-saving optimizations as well.
|
|
||||||
*/
|
|
||||||
#define FT_CONFIG_OPTION_OLD_INTERNALS
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* To detect legacy cache-lookup call from a rogue client (<= 2.1.7),
|
|
||||||
* we restrict the number of charmaps in a font. The current API of
|
|
||||||
* FTC_CMapCache_Lookup() takes cmap_index & charcode, but old API
|
|
||||||
* takes charcode only. To determine the passed value is for cmap_index
|
|
||||||
* or charcode, the possible cmap_index is restricted not to exceed
|
|
||||||
* the minimum possible charcode by a rogue client. It is also very
|
|
||||||
* unlikely that a rogue client is interested in Unicode values 0 to 15.
|
|
||||||
*
|
|
||||||
* NOTE: The original threshold was 4 deduced from popular number of
|
|
||||||
* cmap subtables in UCS-4 TrueType fonts, but now it is not
|
|
||||||
* irregular for OpenType fonts to have more than 4 subtables,
|
|
||||||
* because variation selector subtables are available for Apple
|
|
||||||
* and Microsoft platforms.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifdef FT_CONFIG_OPTION_OLD_INTERNALS
|
|
||||||
#define FT_MAX_CHARMAP_CACHEABLE 15
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* This macro is defined if either unpatented or native TrueType
|
|
||||||
* hinting is requested by the definitions above.
|
|
||||||
*/
|
|
||||||
#ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER
|
|
||||||
#define TT_USE_BYTECODE_INTERPRETER
|
|
||||||
#undef TT_CONFIG_OPTION_UNPATENTED_HINTING
|
|
||||||
#elif defined TT_CONFIG_OPTION_UNPATENTED_HINTING
|
|
||||||
#define TT_USE_BYTECODE_INTERPRETER
|
|
||||||
#endif
|
|
||||||
|
|
||||||
FT_END_HEADER
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* __FTOPTION_H__ */
|
|
||||||
|
|
||||||
|
|
||||||
/* END */
|
|
@ -1,173 +0,0 @@
|
|||||||
/***************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* ftstdlib.h */
|
|
||||||
/* */
|
|
||||||
/* ANSI-specific library and header configuration file (specification */
|
|
||||||
/* only). */
|
|
||||||
/* */
|
|
||||||
/* Copyright 2002, 2003, 2004, 2005, 2006, 2007, 2009 by */
|
|
||||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
|
||||||
/* */
|
|
||||||
/* This file is part of the FreeType project, and may only be used, */
|
|
||||||
/* modified, and distributed under the terms of the FreeType project */
|
|
||||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
|
||||||
/* this file you indicate that you have read the license and */
|
|
||||||
/* understand and accept it fully. */
|
|
||||||
/* */
|
|
||||||
/***************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* This file is used to group all #includes to the ANSI C library that */
|
|
||||||
/* FreeType normally requires. It also defines macros to rename the */
|
|
||||||
/* standard functions within the FreeType source code. */
|
|
||||||
/* */
|
|
||||||
/* Load a file which defines __FTSTDLIB_H__ before this one to override */
|
|
||||||
/* it. */
|
|
||||||
/* */
|
|
||||||
/*************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef __FTSTDLIB_H__
|
|
||||||
#define __FTSTDLIB_H__
|
|
||||||
|
|
||||||
|
|
||||||
#include <stddef.h>
|
|
||||||
|
|
||||||
#define ft_ptrdiff_t ptrdiff_t
|
|
||||||
|
|
||||||
|
|
||||||
/**********************************************************************/
|
|
||||||
/* */
|
|
||||||
/* integer limits */
|
|
||||||
/* */
|
|
||||||
/* UINT_MAX and ULONG_MAX are used to automatically compute the size */
|
|
||||||
/* of `int' and `long' in bytes at compile-time. So far, this works */
|
|
||||||
/* for all platforms the library has been tested on. */
|
|
||||||
/* */
|
|
||||||
/* Note that on the extremely rare platforms that do not provide */
|
|
||||||
/* integer types that are _exactly_ 16 and 32 bits wide (e.g. some */
|
|
||||||
/* old Crays where `int' is 36 bits), we do not make any guarantee */
|
|
||||||
/* about the correct behaviour of FT2 with all fonts. */
|
|
||||||
/* */
|
|
||||||
/* In these case, `ftconfig.h' will refuse to compile anyway with a */
|
|
||||||
/* message like `couldn't find 32-bit type' or something similar. */
|
|
||||||
/* */
|
|
||||||
/**********************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
#include <limits.h>
|
|
||||||
|
|
||||||
#define FT_CHAR_BIT CHAR_BIT
|
|
||||||
#define FT_INT_MAX INT_MAX
|
|
||||||
#define FT_INT_MIN INT_MIN
|
|
||||||
#define FT_UINT_MAX UINT_MAX
|
|
||||||
#define FT_ULONG_MAX ULONG_MAX
|
|
||||||
|
|
||||||
|
|
||||||
/**********************************************************************/
|
|
||||||
/* */
|
|
||||||
/* character and string processing */
|
|
||||||
/* */
|
|
||||||
/**********************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
#include <string.h>
|
|
||||||
|
|
||||||
#define ft_memchr memchr
|
|
||||||
#define ft_memcmp memcmp
|
|
||||||
#define ft_memcpy memcpy
|
|
||||||
#define ft_memmove memmove
|
|
||||||
#define ft_memset memset
|
|
||||||
#define ft_strcat strcat
|
|
||||||
#define ft_strcmp strcmp
|
|
||||||
#define ft_strcpy strcpy
|
|
||||||
#define ft_strlen strlen
|
|
||||||
#define ft_strncmp strncmp
|
|
||||||
#define ft_strncpy strncpy
|
|
||||||
#define ft_strrchr strrchr
|
|
||||||
#define ft_strstr strstr
|
|
||||||
|
|
||||||
|
|
||||||
/**********************************************************************/
|
|
||||||
/* */
|
|
||||||
/* file handling */
|
|
||||||
/* */
|
|
||||||
/**********************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
|
|
||||||
#define FT_FILE FILE
|
|
||||||
#define ft_fclose fclose
|
|
||||||
#define ft_fopen fopen
|
|
||||||
#define ft_fread fread
|
|
||||||
#define ft_fseek fseek
|
|
||||||
#define ft_ftell ftell
|
|
||||||
#define ft_sprintf sprintf
|
|
||||||
|
|
||||||
|
|
||||||
/**********************************************************************/
|
|
||||||
/* */
|
|
||||||
/* sorting */
|
|
||||||
/* */
|
|
||||||
/**********************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
#include <stdlib.h>
|
|
||||||
|
|
||||||
#define ft_qsort qsort
|
|
||||||
|
|
||||||
|
|
||||||
/**********************************************************************/
|
|
||||||
/* */
|
|
||||||
/* memory allocation */
|
|
||||||
/* */
|
|
||||||
/**********************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
#define ft_scalloc calloc
|
|
||||||
#define ft_sfree free
|
|
||||||
#define ft_smalloc malloc
|
|
||||||
#define ft_srealloc realloc
|
|
||||||
|
|
||||||
|
|
||||||
/**********************************************************************/
|
|
||||||
/* */
|
|
||||||
/* miscellaneous */
|
|
||||||
/* */
|
|
||||||
/**********************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
#define ft_atol atol
|
|
||||||
#define ft_labs labs
|
|
||||||
|
|
||||||
|
|
||||||
/**********************************************************************/
|
|
||||||
/* */
|
|
||||||
/* execution control */
|
|
||||||
/* */
|
|
||||||
/**********************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
#include <setjmp.h>
|
|
||||||
|
|
||||||
#define ft_jmp_buf jmp_buf /* note: this cannot be a typedef since */
|
|
||||||
/* jmp_buf is defined as a macro */
|
|
||||||
/* on certain platforms */
|
|
||||||
|
|
||||||
#define ft_longjmp longjmp
|
|
||||||
#define ft_setjmp( b ) setjmp( *(jmp_buf*) &(b) ) /* same thing here */
|
|
||||||
|
|
||||||
|
|
||||||
/* the following is only used for debugging purposes, i.e., if */
|
|
||||||
/* FT_DEBUG_LEVEL_ERROR or FT_DEBUG_LEVEL_TRACE are defined */
|
|
||||||
|
|
||||||
#include <stdarg.h>
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* __FTSTDLIB_H__ */
|
|
||||||
|
|
||||||
|
|
||||||
/* END */
|
|
File diff suppressed because it is too large
Load Diff
@ -1,179 +0,0 @@
|
|||||||
/***************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* ftadvanc.h */
|
|
||||||
/* */
|
|
||||||
/* Quick computation of advance widths (specification only). */
|
|
||||||
/* */
|
|
||||||
/* Copyright 2008 by */
|
|
||||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
|
||||||
/* */
|
|
||||||
/* This file is part of the FreeType project, and may only be used, */
|
|
||||||
/* modified, and distributed under the terms of the FreeType project */
|
|
||||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
|
||||||
/* this file you indicate that you have read the license and */
|
|
||||||
/* understand and accept it fully. */
|
|
||||||
/* */
|
|
||||||
/***************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef __FTADVANC_H__
|
|
||||||
#define __FTADVANC_H__
|
|
||||||
|
|
||||||
|
|
||||||
#include <ft2build.h>
|
|
||||||
#include FT_FREETYPE_H
|
|
||||||
|
|
||||||
#ifdef FREETYPE_H
|
|
||||||
#error "freetype.h of FreeType 1 has been loaded!"
|
|
||||||
#error "Please fix the directory search order for header files"
|
|
||||||
#error "so that freetype.h of FreeType 2 is found first."
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
FT_BEGIN_HEADER
|
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************************
|
|
||||||
*
|
|
||||||
* @section:
|
|
||||||
* quick_advance
|
|
||||||
*
|
|
||||||
* @title:
|
|
||||||
* Quick retrieval of advance values
|
|
||||||
*
|
|
||||||
* @abstract:
|
|
||||||
* Retrieve horizontal and vertical advance values without processing
|
|
||||||
* glyph outlines, if possible.
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* This section contains functions to quickly extract advance values
|
|
||||||
* without handling glyph outlines, if possible.
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Const> */
|
|
||||||
/* FT_ADVANCE_FLAG_FAST_ONLY */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* A bit-flag to be OR-ed with the `flags' parameter of the */
|
|
||||||
/* @FT_Get_Advance and @FT_Get_Advances functions. */
|
|
||||||
/* */
|
|
||||||
/* If set, it indicates that you want these functions to fail if the */
|
|
||||||
/* corresponding hinting mode or font driver doesn't allow for very */
|
|
||||||
/* quick advance computation. */
|
|
||||||
/* */
|
|
||||||
/* Typically, glyphs which are either unscaled, unhinted, bitmapped, */
|
|
||||||
/* or light-hinted can have their advance width computed very */
|
|
||||||
/* quickly. */
|
|
||||||
/* */
|
|
||||||
/* Normal and bytecode hinted modes, which require loading, scaling, */
|
|
||||||
/* and hinting of the glyph outline, are extremely slow by */
|
|
||||||
/* comparison. */
|
|
||||||
/* */
|
|
||||||
#define FT_ADVANCE_FLAG_FAST_ONLY 0x20000000UL
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Function> */
|
|
||||||
/* FT_Get_Advance */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* Retrieve the advance value of a given glyph outline in an */
|
|
||||||
/* @FT_Face. By default, the unhinted advance is returned in font */
|
|
||||||
/* units. */
|
|
||||||
/* */
|
|
||||||
/* <Input> */
|
|
||||||
/* face :: The source @FT_Face handle. */
|
|
||||||
/* */
|
|
||||||
/* gindex :: The glyph index. */
|
|
||||||
/* */
|
|
||||||
/* load_flags :: A set of bit flags similar to those used when */
|
|
||||||
/* calling @FT_Load_Glyph, used to determine what kind */
|
|
||||||
/* of advances you need. */
|
|
||||||
/* <Output> */
|
|
||||||
/* padvance :: The advance value, in either font units or 16.16 */
|
|
||||||
/* format. */
|
|
||||||
/* */
|
|
||||||
/* If @FT_LOAD_VERTICAL_LAYOUT is set, this is the */
|
|
||||||
/* vertical advance corresponding to a vertical layout. */
|
|
||||||
/* Otherwise, it is the horizontal advance in a */
|
|
||||||
/* horizontal layout. */
|
|
||||||
/* */
|
|
||||||
/* <Return> */
|
|
||||||
/* FreeType error code. 0 means success. */
|
|
||||||
/* */
|
|
||||||
/* <Note> */
|
|
||||||
/* This function may fail if you use @FT_ADVANCE_FLAG_FAST_ONLY and */
|
|
||||||
/* if the corresponding font backend doesn't have a quick way to */
|
|
||||||
/* retrieve the advances. */
|
|
||||||
/* */
|
|
||||||
/* A scaled advance is returned in 16.16 format but isn't transformed */
|
|
||||||
/* by the affine transformation specified by @FT_Set_Transform. */
|
|
||||||
/* */
|
|
||||||
FT_EXPORT( FT_Error )
|
|
||||||
FT_Get_Advance( FT_Face face,
|
|
||||||
FT_UInt gindex,
|
|
||||||
FT_Int32 load_flags,
|
|
||||||
FT_Fixed *padvance );
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Function> */
|
|
||||||
/* FT_Get_Advances */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* Retrieve the advance values of several glyph outlines in an */
|
|
||||||
/* @FT_Face. By default, the unhinted advances are returned in font */
|
|
||||||
/* units. */
|
|
||||||
/* */
|
|
||||||
/* <Input> */
|
|
||||||
/* face :: The source @FT_Face handle. */
|
|
||||||
/* */
|
|
||||||
/* start :: The first glyph index. */
|
|
||||||
/* */
|
|
||||||
/* count :: The number of advance values you want to retrieve. */
|
|
||||||
/* */
|
|
||||||
/* load_flags :: A set of bit flags similar to those used when */
|
|
||||||
/* calling @FT_Load_Glyph. */
|
|
||||||
/* */
|
|
||||||
/* <Output> */
|
|
||||||
/* padvance :: The advances, in either font units or 16.16 format. */
|
|
||||||
/* This array must contain at least `count' elements. */
|
|
||||||
/* */
|
|
||||||
/* If @FT_LOAD_VERTICAL_LAYOUT is set, these are the */
|
|
||||||
/* vertical advances corresponding to a vertical layout. */
|
|
||||||
/* Otherwise, they are the horizontal advances in a */
|
|
||||||
/* horizontal layout. */
|
|
||||||
/* */
|
|
||||||
/* <Return> */
|
|
||||||
/* FreeType error code. 0 means success. */
|
|
||||||
/* */
|
|
||||||
/* <Note> */
|
|
||||||
/* This function may fail if you use @FT_ADVANCE_FLAG_FAST_ONLY and */
|
|
||||||
/* if the corresponding font backend doesn't have a quick way to */
|
|
||||||
/* retrieve the advances. */
|
|
||||||
/* */
|
|
||||||
/* Scaled advances are returned in 16.16 format but aren't */
|
|
||||||
/* transformed by the affine transformation specified by */
|
|
||||||
/* @FT_Set_Transform. */
|
|
||||||
/* */
|
|
||||||
FT_EXPORT( FT_Error )
|
|
||||||
FT_Get_Advances( FT_Face face,
|
|
||||||
FT_UInt start,
|
|
||||||
FT_UInt count,
|
|
||||||
FT_Int32 load_flags,
|
|
||||||
FT_Fixed *padvances );
|
|
||||||
|
|
||||||
/* */
|
|
||||||
|
|
||||||
|
|
||||||
FT_END_HEADER
|
|
||||||
|
|
||||||
#endif /* __FTADVANC_H__ */
|
|
||||||
|
|
||||||
|
|
||||||
/* END */
|
|
@ -1,94 +0,0 @@
|
|||||||
/***************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* ftbbox.h */
|
|
||||||
/* */
|
|
||||||
/* FreeType exact bbox computation (specification). */
|
|
||||||
/* */
|
|
||||||
/* Copyright 1996-2001, 2003, 2007 by */
|
|
||||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
|
||||||
/* */
|
|
||||||
/* This file is part of the FreeType project, and may only be used, */
|
|
||||||
/* modified, and distributed under the terms of the FreeType project */
|
|
||||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
|
||||||
/* this file you indicate that you have read the license and */
|
|
||||||
/* understand and accept it fully. */
|
|
||||||
/* */
|
|
||||||
/***************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* This component has a _single_ role: to compute exact outline bounding */
|
|
||||||
/* boxes. */
|
|
||||||
/* */
|
|
||||||
/* It is separated from the rest of the engine for various technical */
|
|
||||||
/* reasons. It may well be integrated in `ftoutln' later. */
|
|
||||||
/* */
|
|
||||||
/*************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef __FTBBOX_H__
|
|
||||||
#define __FTBBOX_H__
|
|
||||||
|
|
||||||
|
|
||||||
#include <ft2build.h>
|
|
||||||
#include FT_FREETYPE_H
|
|
||||||
|
|
||||||
#ifdef FREETYPE_H
|
|
||||||
#error "freetype.h of FreeType 1 has been loaded!"
|
|
||||||
#error "Please fix the directory search order for header files"
|
|
||||||
#error "so that freetype.h of FreeType 2 is found first."
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
FT_BEGIN_HEADER
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Section> */
|
|
||||||
/* outline_processing */
|
|
||||||
/* */
|
|
||||||
/*************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Function> */
|
|
||||||
/* FT_Outline_Get_BBox */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* Compute the exact bounding box of an outline. This is slower */
|
|
||||||
/* than computing the control box. However, it uses an advanced */
|
|
||||||
/* algorithm which returns _very_ quickly when the two boxes */
|
|
||||||
/* coincide. Otherwise, the outline Bézier arcs are traversed to */
|
|
||||||
/* extract their extrema. */
|
|
||||||
/* */
|
|
||||||
/* <Input> */
|
|
||||||
/* outline :: A pointer to the source outline. */
|
|
||||||
/* */
|
|
||||||
/* <Output> */
|
|
||||||
/* abbox :: The outline's exact bounding box. */
|
|
||||||
/* */
|
|
||||||
/* <Return> */
|
|
||||||
/* FreeType error code. 0~means success. */
|
|
||||||
/* */
|
|
||||||
FT_EXPORT( FT_Error )
|
|
||||||
FT_Outline_Get_BBox( FT_Outline* outline,
|
|
||||||
FT_BBox *abbox );
|
|
||||||
|
|
||||||
|
|
||||||
/* */
|
|
||||||
|
|
||||||
|
|
||||||
FT_END_HEADER
|
|
||||||
|
|
||||||
#endif /* __FTBBOX_H__ */
|
|
||||||
|
|
||||||
|
|
||||||
/* END */
|
|
||||||
|
|
||||||
|
|
||||||
/* Local Variables: */
|
|
||||||
/* coding: utf-8 */
|
|
||||||
/* End: */
|
|
@ -1,209 +0,0 @@
|
|||||||
/***************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* ftbdf.h */
|
|
||||||
/* */
|
|
||||||
/* FreeType API for accessing BDF-specific strings (specification). */
|
|
||||||
/* */
|
|
||||||
/* Copyright 2002, 2003, 2004, 2006, 2009 by */
|
|
||||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
|
||||||
/* */
|
|
||||||
/* This file is part of the FreeType project, and may only be used, */
|
|
||||||
/* modified, and distributed under the terms of the FreeType project */
|
|
||||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
|
||||||
/* this file you indicate that you have read the license and */
|
|
||||||
/* understand and accept it fully. */
|
|
||||||
/* */
|
|
||||||
/***************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef __FTBDF_H__
|
|
||||||
#define __FTBDF_H__
|
|
||||||
|
|
||||||
#include <ft2build.h>
|
|
||||||
#include FT_FREETYPE_H
|
|
||||||
|
|
||||||
#ifdef FREETYPE_H
|
|
||||||
#error "freetype.h of FreeType 1 has been loaded!"
|
|
||||||
#error "Please fix the directory search order for header files"
|
|
||||||
#error "so that freetype.h of FreeType 2 is found first."
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
FT_BEGIN_HEADER
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Section> */
|
|
||||||
/* bdf_fonts */
|
|
||||||
/* */
|
|
||||||
/* <Title> */
|
|
||||||
/* BDF and PCF Files */
|
|
||||||
/* */
|
|
||||||
/* <Abstract> */
|
|
||||||
/* BDF and PCF specific API. */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* This section contains the declaration of functions specific to BDF */
|
|
||||||
/* and PCF fonts. */
|
|
||||||
/* */
|
|
||||||
/*************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
/**********************************************************************
|
|
||||||
*
|
|
||||||
* @enum:
|
|
||||||
* FT_PropertyType
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* A list of BDF property types.
|
|
||||||
*
|
|
||||||
* @values:
|
|
||||||
* BDF_PROPERTY_TYPE_NONE ::
|
|
||||||
* Value~0 is used to indicate a missing property.
|
|
||||||
*
|
|
||||||
* BDF_PROPERTY_TYPE_ATOM ::
|
|
||||||
* Property is a string atom.
|
|
||||||
*
|
|
||||||
* BDF_PROPERTY_TYPE_INTEGER ::
|
|
||||||
* Property is a 32-bit signed integer.
|
|
||||||
*
|
|
||||||
* BDF_PROPERTY_TYPE_CARDINAL ::
|
|
||||||
* Property is a 32-bit unsigned integer.
|
|
||||||
*/
|
|
||||||
typedef enum BDF_PropertyType_
|
|
||||||
{
|
|
||||||
BDF_PROPERTY_TYPE_NONE = 0,
|
|
||||||
BDF_PROPERTY_TYPE_ATOM = 1,
|
|
||||||
BDF_PROPERTY_TYPE_INTEGER = 2,
|
|
||||||
BDF_PROPERTY_TYPE_CARDINAL = 3
|
|
||||||
|
|
||||||
} BDF_PropertyType;
|
|
||||||
|
|
||||||
|
|
||||||
/**********************************************************************
|
|
||||||
*
|
|
||||||
* @type:
|
|
||||||
* BDF_Property
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* A handle to a @BDF_PropertyRec structure to model a given
|
|
||||||
* BDF/PCF property.
|
|
||||||
*/
|
|
||||||
typedef struct BDF_PropertyRec_* BDF_Property;
|
|
||||||
|
|
||||||
|
|
||||||
/**********************************************************************
|
|
||||||
*
|
|
||||||
* @struct:
|
|
||||||
* BDF_PropertyRec
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* This structure models a given BDF/PCF property.
|
|
||||||
*
|
|
||||||
* @fields:
|
|
||||||
* type ::
|
|
||||||
* The property type.
|
|
||||||
*
|
|
||||||
* u.atom ::
|
|
||||||
* The atom string, if type is @BDF_PROPERTY_TYPE_ATOM.
|
|
||||||
*
|
|
||||||
* u.integer ::
|
|
||||||
* A signed integer, if type is @BDF_PROPERTY_TYPE_INTEGER.
|
|
||||||
*
|
|
||||||
* u.cardinal ::
|
|
||||||
* An unsigned integer, if type is @BDF_PROPERTY_TYPE_CARDINAL.
|
|
||||||
*/
|
|
||||||
typedef struct BDF_PropertyRec_
|
|
||||||
{
|
|
||||||
BDF_PropertyType type;
|
|
||||||
union {
|
|
||||||
const char* atom;
|
|
||||||
FT_Int32 integer;
|
|
||||||
FT_UInt32 cardinal;
|
|
||||||
|
|
||||||
} u;
|
|
||||||
|
|
||||||
} BDF_PropertyRec;
|
|
||||||
|
|
||||||
|
|
||||||
/**********************************************************************
|
|
||||||
*
|
|
||||||
* @function:
|
|
||||||
* FT_Get_BDF_Charset_ID
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* Retrieve a BDF font character set identity, according to
|
|
||||||
* the BDF specification.
|
|
||||||
*
|
|
||||||
* @input:
|
|
||||||
* face ::
|
|
||||||
* A handle to the input face.
|
|
||||||
*
|
|
||||||
* @output:
|
|
||||||
* acharset_encoding ::
|
|
||||||
* Charset encoding, as a C~string, owned by the face.
|
|
||||||
*
|
|
||||||
* acharset_registry ::
|
|
||||||
* Charset registry, as a C~string, owned by the face.
|
|
||||||
*
|
|
||||||
* @return:
|
|
||||||
* FreeType error code. 0~means success.
|
|
||||||
*
|
|
||||||
* @note:
|
|
||||||
* This function only works with BDF faces, returning an error otherwise.
|
|
||||||
*/
|
|
||||||
FT_EXPORT( FT_Error )
|
|
||||||
FT_Get_BDF_Charset_ID( FT_Face face,
|
|
||||||
const char* *acharset_encoding,
|
|
||||||
const char* *acharset_registry );
|
|
||||||
|
|
||||||
|
|
||||||
/**********************************************************************
|
|
||||||
*
|
|
||||||
* @function:
|
|
||||||
* FT_Get_BDF_Property
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* Retrieve a BDF property from a BDF or PCF font file.
|
|
||||||
*
|
|
||||||
* @input:
|
|
||||||
* face :: A handle to the input face.
|
|
||||||
*
|
|
||||||
* name :: The property name.
|
|
||||||
*
|
|
||||||
* @output:
|
|
||||||
* aproperty :: The property.
|
|
||||||
*
|
|
||||||
* @return:
|
|
||||||
* FreeType error code. 0~means success.
|
|
||||||
*
|
|
||||||
* @note:
|
|
||||||
* This function works with BDF _and_ PCF fonts. It returns an error
|
|
||||||
* otherwise. It also returns an error if the property is not in the
|
|
||||||
* font.
|
|
||||||
*
|
|
||||||
* A `property' is a either key-value pair within the STARTPROPERTIES
|
|
||||||
* ... ENDPROPERTIES block of a BDF font or a key-value pair from the
|
|
||||||
* `info->props' array within a `FontRec' structure of a PCF font.
|
|
||||||
*
|
|
||||||
* Integer properties are always stored as `signed' within PCF fonts;
|
|
||||||
* consequently, @BDF_PROPERTY_TYPE_CARDINAL is a possible return value
|
|
||||||
* for BDF fonts only.
|
|
||||||
*
|
|
||||||
* In case of error, `aproperty->type' is always set to
|
|
||||||
* @BDF_PROPERTY_TYPE_NONE.
|
|
||||||
*/
|
|
||||||
FT_EXPORT( FT_Error )
|
|
||||||
FT_Get_BDF_Property( FT_Face face,
|
|
||||||
const char* prop_name,
|
|
||||||
BDF_PropertyRec *aproperty );
|
|
||||||
|
|
||||||
/* */
|
|
||||||
|
|
||||||
FT_END_HEADER
|
|
||||||
|
|
||||||
#endif /* __FTBDF_H__ */
|
|
||||||
|
|
||||||
|
|
||||||
/* END */
|
|
@ -1,227 +0,0 @@
|
|||||||
/***************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* ftbitmap.h */
|
|
||||||
/* */
|
|
||||||
/* FreeType utility functions for bitmaps (specification). */
|
|
||||||
/* */
|
|
||||||
/* Copyright 2004, 2005, 2006, 2008 by */
|
|
||||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
|
||||||
/* */
|
|
||||||
/* This file is part of the FreeType project, and may only be used, */
|
|
||||||
/* modified, and distributed under the terms of the FreeType project */
|
|
||||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
|
||||||
/* this file you indicate that you have read the license and */
|
|
||||||
/* understand and accept it fully. */
|
|
||||||
/* */
|
|
||||||
/***************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef __FTBITMAP_H__
|
|
||||||
#define __FTBITMAP_H__
|
|
||||||
|
|
||||||
|
|
||||||
#include <ft2build.h>
|
|
||||||
#include FT_FREETYPE_H
|
|
||||||
|
|
||||||
#ifdef FREETYPE_H
|
|
||||||
#error "freetype.h of FreeType 1 has been loaded!"
|
|
||||||
#error "Please fix the directory search order for header files"
|
|
||||||
#error "so that freetype.h of FreeType 2 is found first."
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
FT_BEGIN_HEADER
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Section> */
|
|
||||||
/* bitmap_handling */
|
|
||||||
/* */
|
|
||||||
/* <Title> */
|
|
||||||
/* Bitmap Handling */
|
|
||||||
/* */
|
|
||||||
/* <Abstract> */
|
|
||||||
/* Handling FT_Bitmap objects. */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* This section contains functions for converting FT_Bitmap objects. */
|
|
||||||
/* */
|
|
||||||
/*************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Function> */
|
|
||||||
/* FT_Bitmap_New */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* Initialize a pointer to an @FT_Bitmap structure. */
|
|
||||||
/* */
|
|
||||||
/* <InOut> */
|
|
||||||
/* abitmap :: A pointer to the bitmap structure. */
|
|
||||||
/* */
|
|
||||||
FT_EXPORT( void )
|
|
||||||
FT_Bitmap_New( FT_Bitmap *abitmap );
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Function> */
|
|
||||||
/* FT_Bitmap_Copy */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* Copy a bitmap into another one. */
|
|
||||||
/* */
|
|
||||||
/* <Input> */
|
|
||||||
/* library :: A handle to a library object. */
|
|
||||||
/* */
|
|
||||||
/* source :: A handle to the source bitmap. */
|
|
||||||
/* */
|
|
||||||
/* <Output> */
|
|
||||||
/* target :: A handle to the target bitmap. */
|
|
||||||
/* */
|
|
||||||
/* <Return> */
|
|
||||||
/* FreeType error code. 0~means success. */
|
|
||||||
/* */
|
|
||||||
FT_EXPORT( FT_Error )
|
|
||||||
FT_Bitmap_Copy( FT_Library library,
|
|
||||||
const FT_Bitmap *source,
|
|
||||||
FT_Bitmap *target);
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Function> */
|
|
||||||
/* FT_Bitmap_Embolden */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* Embolden a bitmap. The new bitmap will be about `xStrength' */
|
|
||||||
/* pixels wider and `yStrength' pixels higher. The left and bottom */
|
|
||||||
/* borders are kept unchanged. */
|
|
||||||
/* */
|
|
||||||
/* <Input> */
|
|
||||||
/* library :: A handle to a library object. */
|
|
||||||
/* */
|
|
||||||
/* xStrength :: How strong the glyph is emboldened horizontally. */
|
|
||||||
/* Expressed in 26.6 pixel format. */
|
|
||||||
/* */
|
|
||||||
/* yStrength :: How strong the glyph is emboldened vertically. */
|
|
||||||
/* Expressed in 26.6 pixel format. */
|
|
||||||
/* */
|
|
||||||
/* <InOut> */
|
|
||||||
/* bitmap :: A handle to the target bitmap. */
|
|
||||||
/* */
|
|
||||||
/* <Return> */
|
|
||||||
/* FreeType error code. 0~means success. */
|
|
||||||
/* */
|
|
||||||
/* <Note> */
|
|
||||||
/* The current implementation restricts `xStrength' to be less than */
|
|
||||||
/* or equal to~8 if bitmap is of pixel_mode @FT_PIXEL_MODE_MONO. */
|
|
||||||
/* */
|
|
||||||
/* If you want to embolden the bitmap owned by a @FT_GlyphSlotRec, */
|
|
||||||
/* you should call @FT_GlyphSlot_Own_Bitmap on the slot first. */
|
|
||||||
/* */
|
|
||||||
FT_EXPORT( FT_Error )
|
|
||||||
FT_Bitmap_Embolden( FT_Library library,
|
|
||||||
FT_Bitmap* bitmap,
|
|
||||||
FT_Pos xStrength,
|
|
||||||
FT_Pos yStrength );
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Function> */
|
|
||||||
/* FT_Bitmap_Convert */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* Convert a bitmap object with depth 1bpp, 2bpp, 4bpp, or 8bpp to a */
|
|
||||||
/* bitmap object with depth 8bpp, making the number of used bytes per */
|
|
||||||
/* line (a.k.a. the `pitch') a multiple of `alignment'. */
|
|
||||||
/* */
|
|
||||||
/* <Input> */
|
|
||||||
/* library :: A handle to a library object. */
|
|
||||||
/* */
|
|
||||||
/* source :: The source bitmap. */
|
|
||||||
/* */
|
|
||||||
/* alignment :: The pitch of the bitmap is a multiple of this */
|
|
||||||
/* parameter. Common values are 1, 2, or 4. */
|
|
||||||
/* */
|
|
||||||
/* <Output> */
|
|
||||||
/* target :: The target bitmap. */
|
|
||||||
/* */
|
|
||||||
/* <Return> */
|
|
||||||
/* FreeType error code. 0~means success. */
|
|
||||||
/* */
|
|
||||||
/* <Note> */
|
|
||||||
/* It is possible to call @FT_Bitmap_Convert multiple times without */
|
|
||||||
/* calling @FT_Bitmap_Done (the memory is simply reallocated). */
|
|
||||||
/* */
|
|
||||||
/* Use @FT_Bitmap_Done to finally remove the bitmap object. */
|
|
||||||
/* */
|
|
||||||
/* The `library' argument is taken to have access to FreeType's */
|
|
||||||
/* memory handling functions. */
|
|
||||||
/* */
|
|
||||||
FT_EXPORT( FT_Error )
|
|
||||||
FT_Bitmap_Convert( FT_Library library,
|
|
||||||
const FT_Bitmap *source,
|
|
||||||
FT_Bitmap *target,
|
|
||||||
FT_Int alignment );
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Function> */
|
|
||||||
/* FT_GlyphSlot_Own_Bitmap */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* Make sure that a glyph slot owns `slot->bitmap'. */
|
|
||||||
/* */
|
|
||||||
/* <Input> */
|
|
||||||
/* slot :: The glyph slot. */
|
|
||||||
/* */
|
|
||||||
/* <Return> */
|
|
||||||
/* FreeType error code. 0~means success. */
|
|
||||||
/* */
|
|
||||||
/* <Note> */
|
|
||||||
/* This function is to be used in combination with */
|
|
||||||
/* @FT_Bitmap_Embolden. */
|
|
||||||
/* */
|
|
||||||
FT_EXPORT( FT_Error )
|
|
||||||
FT_GlyphSlot_Own_Bitmap( FT_GlyphSlot slot );
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Function> */
|
|
||||||
/* FT_Bitmap_Done */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* Destroy a bitmap object created with @FT_Bitmap_New. */
|
|
||||||
/* */
|
|
||||||
/* <Input> */
|
|
||||||
/* library :: A handle to a library object. */
|
|
||||||
/* */
|
|
||||||
/* bitmap :: The bitmap object to be freed. */
|
|
||||||
/* */
|
|
||||||
/* <Return> */
|
|
||||||
/* FreeType error code. 0~means success. */
|
|
||||||
/* */
|
|
||||||
/* <Note> */
|
|
||||||
/* The `library' argument is taken to have access to FreeType's */
|
|
||||||
/* memory handling functions. */
|
|
||||||
/* */
|
|
||||||
FT_EXPORT( FT_Error )
|
|
||||||
FT_Bitmap_Done( FT_Library library,
|
|
||||||
FT_Bitmap *bitmap );
|
|
||||||
|
|
||||||
|
|
||||||
/* */
|
|
||||||
|
|
||||||
|
|
||||||
FT_END_HEADER
|
|
||||||
|
|
||||||
#endif /* __FTBITMAP_H__ */
|
|
||||||
|
|
||||||
|
|
||||||
/* END */
|
|
File diff suppressed because it is too large
Load Diff
@ -1,103 +0,0 @@
|
|||||||
/***************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* This file defines the structure of the FreeType reference. */
|
|
||||||
/* It is used by the python script which generates the HTML files. */
|
|
||||||
/* */
|
|
||||||
/***************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
/***************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Chapter> */
|
|
||||||
/* general_remarks */
|
|
||||||
/* */
|
|
||||||
/* <Title> */
|
|
||||||
/* General Remarks */
|
|
||||||
/* */
|
|
||||||
/* <Sections> */
|
|
||||||
/* user_allocation */
|
|
||||||
/* */
|
|
||||||
/***************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
/***************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Chapter> */
|
|
||||||
/* core_api */
|
|
||||||
/* */
|
|
||||||
/* <Title> */
|
|
||||||
/* Core API */
|
|
||||||
/* */
|
|
||||||
/* <Sections> */
|
|
||||||
/* version */
|
|
||||||
/* basic_types */
|
|
||||||
/* base_interface */
|
|
||||||
/* glyph_variants */
|
|
||||||
/* glyph_management */
|
|
||||||
/* mac_specific */
|
|
||||||
/* sizes_management */
|
|
||||||
/* header_file_macros */
|
|
||||||
/* */
|
|
||||||
/***************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
/***************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Chapter> */
|
|
||||||
/* format_specific */
|
|
||||||
/* */
|
|
||||||
/* <Title> */
|
|
||||||
/* Format-Specific API */
|
|
||||||
/* */
|
|
||||||
/* <Sections> */
|
|
||||||
/* multiple_masters */
|
|
||||||
/* truetype_tables */
|
|
||||||
/* type1_tables */
|
|
||||||
/* sfnt_names */
|
|
||||||
/* bdf_fonts */
|
|
||||||
/* cid_fonts */
|
|
||||||
/* pfr_fonts */
|
|
||||||
/* winfnt_fonts */
|
|
||||||
/* font_formats */
|
|
||||||
/* gasp_table */
|
|
||||||
/* */
|
|
||||||
/***************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
/***************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Chapter> */
|
|
||||||
/* cache_subsystem */
|
|
||||||
/* */
|
|
||||||
/* <Title> */
|
|
||||||
/* Cache Sub-System */
|
|
||||||
/* */
|
|
||||||
/* <Sections> */
|
|
||||||
/* cache_subsystem */
|
|
||||||
/* */
|
|
||||||
/***************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
/***************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Chapter> */
|
|
||||||
/* support_api */
|
|
||||||
/* */
|
|
||||||
/* <Title> */
|
|
||||||
/* Support API */
|
|
||||||
/* */
|
|
||||||
/* <Sections> */
|
|
||||||
/* computations */
|
|
||||||
/* list_processing */
|
|
||||||
/* outline_processing */
|
|
||||||
/* quick_advance */
|
|
||||||
/* bitmap_handling */
|
|
||||||
/* raster */
|
|
||||||
/* glyph_stroker */
|
|
||||||
/* system_interface */
|
|
||||||
/* module_management */
|
|
||||||
/* gzip */
|
|
||||||
/* lzw */
|
|
||||||
/* lcd_filtering */
|
|
||||||
/* */
|
|
||||||
/***************************************************************************/
|
|
@ -1,166 +0,0 @@
|
|||||||
/***************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* ftcid.h */
|
|
||||||
/* */
|
|
||||||
/* FreeType API for accessing CID font information (specification). */
|
|
||||||
/* */
|
|
||||||
/* Copyright 2007, 2009 by Dereg Clegg, Michael Toftdal. */
|
|
||||||
/* */
|
|
||||||
/* This file is part of the FreeType project, and may only be used, */
|
|
||||||
/* modified, and distributed under the terms of the FreeType project */
|
|
||||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
|
||||||
/* this file you indicate that you have read the license and */
|
|
||||||
/* understand and accept it fully. */
|
|
||||||
/* */
|
|
||||||
/***************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef __FTCID_H__
|
|
||||||
#define __FTCID_H__
|
|
||||||
|
|
||||||
#include <ft2build.h>
|
|
||||||
#include FT_FREETYPE_H
|
|
||||||
|
|
||||||
#ifdef FREETYPE_H
|
|
||||||
#error "freetype.h of FreeType 1 has been loaded!"
|
|
||||||
#error "Please fix the directory search order for header files"
|
|
||||||
#error "so that freetype.h of FreeType 2 is found first."
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
FT_BEGIN_HEADER
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Section> */
|
|
||||||
/* cid_fonts */
|
|
||||||
/* */
|
|
||||||
/* <Title> */
|
|
||||||
/* CID Fonts */
|
|
||||||
/* */
|
|
||||||
/* <Abstract> */
|
|
||||||
/* CID-keyed font specific API. */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* This section contains the declaration of CID-keyed font specific */
|
|
||||||
/* functions. */
|
|
||||||
/* */
|
|
||||||
/*************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
/**********************************************************************
|
|
||||||
*
|
|
||||||
* @function:
|
|
||||||
* FT_Get_CID_Registry_Ordering_Supplement
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* Retrieve the Registry/Ordering/Supplement triple (also known as the
|
|
||||||
* "R/O/S") from a CID-keyed font.
|
|
||||||
*
|
|
||||||
* @input:
|
|
||||||
* face ::
|
|
||||||
* A handle to the input face.
|
|
||||||
*
|
|
||||||
* @output:
|
|
||||||
* registry ::
|
|
||||||
* The registry, as a C~string, owned by the face.
|
|
||||||
*
|
|
||||||
* ordering ::
|
|
||||||
* The ordering, as a C~string, owned by the face.
|
|
||||||
*
|
|
||||||
* supplement ::
|
|
||||||
* The supplement.
|
|
||||||
*
|
|
||||||
* @return:
|
|
||||||
* FreeType error code. 0~means success.
|
|
||||||
*
|
|
||||||
* @note:
|
|
||||||
* This function only works with CID faces, returning an error
|
|
||||||
* otherwise.
|
|
||||||
*
|
|
||||||
* @since:
|
|
||||||
* 2.3.6
|
|
||||||
*/
|
|
||||||
FT_EXPORT( FT_Error )
|
|
||||||
FT_Get_CID_Registry_Ordering_Supplement( FT_Face face,
|
|
||||||
const char* *registry,
|
|
||||||
const char* *ordering,
|
|
||||||
FT_Int *supplement);
|
|
||||||
|
|
||||||
|
|
||||||
/**********************************************************************
|
|
||||||
*
|
|
||||||
* @function:
|
|
||||||
* FT_Get_CID_Is_Internally_CID_Keyed
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* Retrieve the type of the input face, CID keyed or not. In
|
|
||||||
* constrast to the @FT_IS_CID_KEYED macro this function returns
|
|
||||||
* successfully also for CID-keyed fonts in an SNFT wrapper.
|
|
||||||
*
|
|
||||||
* @input:
|
|
||||||
* face ::
|
|
||||||
* A handle to the input face.
|
|
||||||
*
|
|
||||||
* @output:
|
|
||||||
* is_cid ::
|
|
||||||
* The type of the face as an @FT_Bool.
|
|
||||||
*
|
|
||||||
* @return:
|
|
||||||
* FreeType error code. 0~means success.
|
|
||||||
*
|
|
||||||
* @note:
|
|
||||||
* This function only works with CID faces and OpenType fonts,
|
|
||||||
* returning an error otherwise.
|
|
||||||
*
|
|
||||||
* @since:
|
|
||||||
* 2.3.9
|
|
||||||
*/
|
|
||||||
FT_EXPORT( FT_Error )
|
|
||||||
FT_Get_CID_Is_Internally_CID_Keyed( FT_Face face,
|
|
||||||
FT_Bool *is_cid );
|
|
||||||
|
|
||||||
|
|
||||||
/**********************************************************************
|
|
||||||
*
|
|
||||||
* @function:
|
|
||||||
* FT_Get_CID_From_Glyph_Index
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* Retrieve the CID of the input glyph index.
|
|
||||||
*
|
|
||||||
* @input:
|
|
||||||
* face ::
|
|
||||||
* A handle to the input face.
|
|
||||||
*
|
|
||||||
* glyph_index ::
|
|
||||||
* The input glyph index.
|
|
||||||
*
|
|
||||||
* @output:
|
|
||||||
* cid ::
|
|
||||||
* The CID as an @FT_UInt.
|
|
||||||
*
|
|
||||||
* @return:
|
|
||||||
* FreeType error code. 0~means success.
|
|
||||||
*
|
|
||||||
* @note:
|
|
||||||
* This function only works with CID faces and OpenType fonts,
|
|
||||||
* returning an error otherwise.
|
|
||||||
*
|
|
||||||
* @since:
|
|
||||||
* 2.3.9
|
|
||||||
*/
|
|
||||||
FT_EXPORT( FT_Error )
|
|
||||||
FT_Get_CID_From_Glyph_Index( FT_Face face,
|
|
||||||
FT_UInt glyph_index,
|
|
||||||
FT_UInt *cid );
|
|
||||||
|
|
||||||
/* */
|
|
||||||
|
|
||||||
FT_END_HEADER
|
|
||||||
|
|
||||||
#endif /* __FTCID_H__ */
|
|
||||||
|
|
||||||
|
|
||||||
/* END */
|
|
@ -1,244 +0,0 @@
|
|||||||
/***************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* fterrdef.h */
|
|
||||||
/* */
|
|
||||||
/* FreeType error codes (specification). */
|
|
||||||
/* */
|
|
||||||
/* Copyright 2002, 2004, 2006, 2007, 2010 by */
|
|
||||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
|
||||||
/* */
|
|
||||||
/* This file is part of the FreeType project, and may only be used, */
|
|
||||||
/* modified, and distributed under the terms of the FreeType project */
|
|
||||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
|
||||||
/* this file you indicate that you have read the license and */
|
|
||||||
/* understand and accept it fully. */
|
|
||||||
/* */
|
|
||||||
/***************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
/*******************************************************************/
|
|
||||||
/*******************************************************************/
|
|
||||||
/***** *****/
|
|
||||||
/***** LIST OF ERROR CODES/MESSAGES *****/
|
|
||||||
/***** *****/
|
|
||||||
/*******************************************************************/
|
|
||||||
/*******************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
/* You need to define both FT_ERRORDEF_ and FT_NOERRORDEF_ before */
|
|
||||||
/* including this file. */
|
|
||||||
|
|
||||||
|
|
||||||
/* generic errors */
|
|
||||||
|
|
||||||
FT_NOERRORDEF_( Ok, 0x00, \
|
|
||||||
"no error" )
|
|
||||||
|
|
||||||
FT_ERRORDEF_( Cannot_Open_Resource, 0x01, \
|
|
||||||
"cannot open resource" )
|
|
||||||
FT_ERRORDEF_( Unknown_File_Format, 0x02, \
|
|
||||||
"unknown file format" )
|
|
||||||
FT_ERRORDEF_( Invalid_File_Format, 0x03, \
|
|
||||||
"broken file" )
|
|
||||||
FT_ERRORDEF_( Invalid_Version, 0x04, \
|
|
||||||
"invalid FreeType version" )
|
|
||||||
FT_ERRORDEF_( Lower_Module_Version, 0x05, \
|
|
||||||
"module version is too low" )
|
|
||||||
FT_ERRORDEF_( Invalid_Argument, 0x06, \
|
|
||||||
"invalid argument" )
|
|
||||||
FT_ERRORDEF_( Unimplemented_Feature, 0x07, \
|
|
||||||
"unimplemented feature" )
|
|
||||||
FT_ERRORDEF_( Invalid_Table, 0x08, \
|
|
||||||
"broken table" )
|
|
||||||
FT_ERRORDEF_( Invalid_Offset, 0x09, \
|
|
||||||
"broken offset within table" )
|
|
||||||
FT_ERRORDEF_( Array_Too_Large, 0x0A, \
|
|
||||||
"array allocation size too large" )
|
|
||||||
|
|
||||||
/* glyph/character errors */
|
|
||||||
|
|
||||||
FT_ERRORDEF_( Invalid_Glyph_Index, 0x10, \
|
|
||||||
"invalid glyph index" )
|
|
||||||
FT_ERRORDEF_( Invalid_Character_Code, 0x11, \
|
|
||||||
"invalid character code" )
|
|
||||||
FT_ERRORDEF_( Invalid_Glyph_Format, 0x12, \
|
|
||||||
"unsupported glyph image format" )
|
|
||||||
FT_ERRORDEF_( Cannot_Render_Glyph, 0x13, \
|
|
||||||
"cannot render this glyph format" )
|
|
||||||
FT_ERRORDEF_( Invalid_Outline, 0x14, \
|
|
||||||
"invalid outline" )
|
|
||||||
FT_ERRORDEF_( Invalid_Composite, 0x15, \
|
|
||||||
"invalid composite glyph" )
|
|
||||||
FT_ERRORDEF_( Too_Many_Hints, 0x16, \
|
|
||||||
"too many hints" )
|
|
||||||
FT_ERRORDEF_( Invalid_Pixel_Size, 0x17, \
|
|
||||||
"invalid pixel size" )
|
|
||||||
|
|
||||||
/* handle errors */
|
|
||||||
|
|
||||||
FT_ERRORDEF_( Invalid_Handle, 0x20, \
|
|
||||||
"invalid object handle" )
|
|
||||||
FT_ERRORDEF_( Invalid_Library_Handle, 0x21, \
|
|
||||||
"invalid library handle" )
|
|
||||||
FT_ERRORDEF_( Invalid_Driver_Handle, 0x22, \
|
|
||||||
"invalid module handle" )
|
|
||||||
FT_ERRORDEF_( Invalid_Face_Handle, 0x23, \
|
|
||||||
"invalid face handle" )
|
|
||||||
FT_ERRORDEF_( Invalid_Size_Handle, 0x24, \
|
|
||||||
"invalid size handle" )
|
|
||||||
FT_ERRORDEF_( Invalid_Slot_Handle, 0x25, \
|
|
||||||
"invalid glyph slot handle" )
|
|
||||||
FT_ERRORDEF_( Invalid_CharMap_Handle, 0x26, \
|
|
||||||
"invalid charmap handle" )
|
|
||||||
FT_ERRORDEF_( Invalid_Cache_Handle, 0x27, \
|
|
||||||
"invalid cache manager handle" )
|
|
||||||
FT_ERRORDEF_( Invalid_Stream_Handle, 0x28, \
|
|
||||||
"invalid stream handle" )
|
|
||||||
|
|
||||||
/* driver errors */
|
|
||||||
|
|
||||||
FT_ERRORDEF_( Too_Many_Drivers, 0x30, \
|
|
||||||
"too many modules" )
|
|
||||||
FT_ERRORDEF_( Too_Many_Extensions, 0x31, \
|
|
||||||
"too many extensions" )
|
|
||||||
|
|
||||||
/* memory errors */
|
|
||||||
|
|
||||||
FT_ERRORDEF_( Out_Of_Memory, 0x40, \
|
|
||||||
"out of memory" )
|
|
||||||
FT_ERRORDEF_( Unlisted_Object, 0x41, \
|
|
||||||
"unlisted object" )
|
|
||||||
|
|
||||||
/* stream errors */
|
|
||||||
|
|
||||||
FT_ERRORDEF_( Cannot_Open_Stream, 0x51, \
|
|
||||||
"cannot open stream" )
|
|
||||||
FT_ERRORDEF_( Invalid_Stream_Seek, 0x52, \
|
|
||||||
"invalid stream seek" )
|
|
||||||
FT_ERRORDEF_( Invalid_Stream_Skip, 0x53, \
|
|
||||||
"invalid stream skip" )
|
|
||||||
FT_ERRORDEF_( Invalid_Stream_Read, 0x54, \
|
|
||||||
"invalid stream read" )
|
|
||||||
FT_ERRORDEF_( Invalid_Stream_Operation, 0x55, \
|
|
||||||
"invalid stream operation" )
|
|
||||||
FT_ERRORDEF_( Invalid_Frame_Operation, 0x56, \
|
|
||||||
"invalid frame operation" )
|
|
||||||
FT_ERRORDEF_( Nested_Frame_Access, 0x57, \
|
|
||||||
"nested frame access" )
|
|
||||||
FT_ERRORDEF_( Invalid_Frame_Read, 0x58, \
|
|
||||||
"invalid frame read" )
|
|
||||||
|
|
||||||
/* raster errors */
|
|
||||||
|
|
||||||
FT_ERRORDEF_( Raster_Uninitialized, 0x60, \
|
|
||||||
"raster uninitialized" )
|
|
||||||
FT_ERRORDEF_( Raster_Corrupted, 0x61, \
|
|
||||||
"raster corrupted" )
|
|
||||||
FT_ERRORDEF_( Raster_Overflow, 0x62, \
|
|
||||||
"raster overflow" )
|
|
||||||
FT_ERRORDEF_( Raster_Negative_Height, 0x63, \
|
|
||||||
"negative height while rastering" )
|
|
||||||
|
|
||||||
/* cache errors */
|
|
||||||
|
|
||||||
FT_ERRORDEF_( Too_Many_Caches, 0x70, \
|
|
||||||
"too many registered caches" )
|
|
||||||
|
|
||||||
/* TrueType and SFNT errors */
|
|
||||||
|
|
||||||
FT_ERRORDEF_( Invalid_Opcode, 0x80, \
|
|
||||||
"invalid opcode" )
|
|
||||||
FT_ERRORDEF_( Too_Few_Arguments, 0x81, \
|
|
||||||
"too few arguments" )
|
|
||||||
FT_ERRORDEF_( Stack_Overflow, 0x82, \
|
|
||||||
"stack overflow" )
|
|
||||||
FT_ERRORDEF_( Code_Overflow, 0x83, \
|
|
||||||
"code overflow" )
|
|
||||||
FT_ERRORDEF_( Bad_Argument, 0x84, \
|
|
||||||
"bad argument" )
|
|
||||||
FT_ERRORDEF_( Divide_By_Zero, 0x85, \
|
|
||||||
"division by zero" )
|
|
||||||
FT_ERRORDEF_( Invalid_Reference, 0x86, \
|
|
||||||
"invalid reference" )
|
|
||||||
FT_ERRORDEF_( Debug_OpCode, 0x87, \
|
|
||||||
"found debug opcode" )
|
|
||||||
FT_ERRORDEF_( ENDF_In_Exec_Stream, 0x88, \
|
|
||||||
"found ENDF opcode in execution stream" )
|
|
||||||
FT_ERRORDEF_( Nested_DEFS, 0x89, \
|
|
||||||
"nested DEFS" )
|
|
||||||
FT_ERRORDEF_( Invalid_CodeRange, 0x8A, \
|
|
||||||
"invalid code range" )
|
|
||||||
FT_ERRORDEF_( Execution_Too_Long, 0x8B, \
|
|
||||||
"execution context too long" )
|
|
||||||
FT_ERRORDEF_( Too_Many_Function_Defs, 0x8C, \
|
|
||||||
"too many function definitions" )
|
|
||||||
FT_ERRORDEF_( Too_Many_Instruction_Defs, 0x8D, \
|
|
||||||
"too many instruction definitions" )
|
|
||||||
FT_ERRORDEF_( Table_Missing, 0x8E, \
|
|
||||||
"SFNT font table missing" )
|
|
||||||
FT_ERRORDEF_( Horiz_Header_Missing, 0x8F, \
|
|
||||||
"horizontal header (hhea) table missing" )
|
|
||||||
FT_ERRORDEF_( Locations_Missing, 0x90, \
|
|
||||||
"locations (loca) table missing" )
|
|
||||||
FT_ERRORDEF_( Name_Table_Missing, 0x91, \
|
|
||||||
"name table missing" )
|
|
||||||
FT_ERRORDEF_( CMap_Table_Missing, 0x92, \
|
|
||||||
"character map (cmap) table missing" )
|
|
||||||
FT_ERRORDEF_( Hmtx_Table_Missing, 0x93, \
|
|
||||||
"horizontal metrics (hmtx) table missing" )
|
|
||||||
FT_ERRORDEF_( Post_Table_Missing, 0x94, \
|
|
||||||
"PostScript (post) table missing" )
|
|
||||||
FT_ERRORDEF_( Invalid_Horiz_Metrics, 0x95, \
|
|
||||||
"invalid horizontal metrics" )
|
|
||||||
FT_ERRORDEF_( Invalid_CharMap_Format, 0x96, \
|
|
||||||
"invalid character map (cmap) format" )
|
|
||||||
FT_ERRORDEF_( Invalid_PPem, 0x97, \
|
|
||||||
"invalid ppem value" )
|
|
||||||
FT_ERRORDEF_( Invalid_Vert_Metrics, 0x98, \
|
|
||||||
"invalid vertical metrics" )
|
|
||||||
FT_ERRORDEF_( Could_Not_Find_Context, 0x99, \
|
|
||||||
"could not find context" )
|
|
||||||
FT_ERRORDEF_( Invalid_Post_Table_Format, 0x9A, \
|
|
||||||
"invalid PostScript (post) table format" )
|
|
||||||
FT_ERRORDEF_( Invalid_Post_Table, 0x9B, \
|
|
||||||
"invalid PostScript (post) table" )
|
|
||||||
|
|
||||||
/* CFF, CID, and Type 1 errors */
|
|
||||||
|
|
||||||
FT_ERRORDEF_( Syntax_Error, 0xA0, \
|
|
||||||
"opcode syntax error" )
|
|
||||||
FT_ERRORDEF_( Stack_Underflow, 0xA1, \
|
|
||||||
"argument stack underflow" )
|
|
||||||
FT_ERRORDEF_( Ignore, 0xA2, \
|
|
||||||
"ignore" )
|
|
||||||
FT_ERRORDEF_( No_Unicode_Glyph_Name, 0xA3, \
|
|
||||||
"no Unicode glyph name found" )
|
|
||||||
|
|
||||||
|
|
||||||
/* BDF errors */
|
|
||||||
|
|
||||||
FT_ERRORDEF_( Missing_Startfont_Field, 0xB0, \
|
|
||||||
"`STARTFONT' field missing" )
|
|
||||||
FT_ERRORDEF_( Missing_Font_Field, 0xB1, \
|
|
||||||
"`FONT' field missing" )
|
|
||||||
FT_ERRORDEF_( Missing_Size_Field, 0xB2, \
|
|
||||||
"`SIZE' field missing" )
|
|
||||||
FT_ERRORDEF_( Missing_Fontboundingbox_Field, 0xB3, \
|
|
||||||
"`FONTBOUNDINGBOX' field missing" )
|
|
||||||
FT_ERRORDEF_( Missing_Chars_Field, 0xB4, \
|
|
||||||
"`CHARS' field missing" )
|
|
||||||
FT_ERRORDEF_( Missing_Startchar_Field, 0xB5, \
|
|
||||||
"`STARTCHAR' field missing" )
|
|
||||||
FT_ERRORDEF_( Missing_Encoding_Field, 0xB6, \
|
|
||||||
"`ENCODING' field missing" )
|
|
||||||
FT_ERRORDEF_( Missing_Bbx_Field, 0xB7, \
|
|
||||||
"`BBX' field missing" )
|
|
||||||
FT_ERRORDEF_( Bbx_Too_Big, 0xB8, \
|
|
||||||
"`BBX' too big" )
|
|
||||||
FT_ERRORDEF_( Corrupted_Font_Header, 0xB9, \
|
|
||||||
"Font header corrupted or missing fields" )
|
|
||||||
FT_ERRORDEF_( Corrupted_Font_Glyphs, 0xBA, \
|
|
||||||
"Font glyphs corrupted or missing fields" )
|
|
||||||
|
|
||||||
|
|
||||||
/* END */
|
|
@ -1,206 +0,0 @@
|
|||||||
/***************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* fterrors.h */
|
|
||||||
/* */
|
|
||||||
/* FreeType error code handling (specification). */
|
|
||||||
/* */
|
|
||||||
/* Copyright 1996-2001, 2002, 2004, 2007 by */
|
|
||||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
|
||||||
/* */
|
|
||||||
/* This file is part of the FreeType project, and may only be used, */
|
|
||||||
/* modified, and distributed under the terms of the FreeType project */
|
|
||||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
|
||||||
/* this file you indicate that you have read the license and */
|
|
||||||
/* understand and accept it fully. */
|
|
||||||
/* */
|
|
||||||
/***************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* This special header file is used to define the handling of FT2 */
|
|
||||||
/* enumeration constants. It can also be used to generate error message */
|
|
||||||
/* strings with a small macro trick explained below. */
|
|
||||||
/* */
|
|
||||||
/* I - Error Formats */
|
|
||||||
/* ----------------- */
|
|
||||||
/* */
|
|
||||||
/* The configuration macro FT_CONFIG_OPTION_USE_MODULE_ERRORS can be */
|
|
||||||
/* defined in ftoption.h in order to make the higher byte indicate */
|
|
||||||
/* the module where the error has happened (this is not compatible */
|
|
||||||
/* with standard builds of FreeType 2). You can then use the macro */
|
|
||||||
/* FT_ERROR_BASE macro to extract the generic error code from an */
|
|
||||||
/* FT_Error value. */
|
|
||||||
/* */
|
|
||||||
/* */
|
|
||||||
/* II - Error Message strings */
|
|
||||||
/* -------------------------- */
|
|
||||||
/* */
|
|
||||||
/* The error definitions below are made through special macros that */
|
|
||||||
/* allow client applications to build a table of error message strings */
|
|
||||||
/* if they need it. The strings are not included in a normal build of */
|
|
||||||
/* FreeType 2 to save space (most client applications do not use */
|
|
||||||
/* them). */
|
|
||||||
/* */
|
|
||||||
/* To do so, you have to define the following macros before including */
|
|
||||||
/* this file: */
|
|
||||||
/* */
|
|
||||||
/* FT_ERROR_START_LIST :: */
|
|
||||||
/* This macro is called before anything else to define the start of */
|
|
||||||
/* the error list. It is followed by several FT_ERROR_DEF calls */
|
|
||||||
/* (see below). */
|
|
||||||
/* */
|
|
||||||
/* FT_ERROR_DEF( e, v, s ) :: */
|
|
||||||
/* This macro is called to define one single error. */
|
|
||||||
/* `e' is the error code identifier (e.g. FT_Err_Invalid_Argument). */
|
|
||||||
/* `v' is the error numerical value. */
|
|
||||||
/* `s' is the corresponding error string. */
|
|
||||||
/* */
|
|
||||||
/* FT_ERROR_END_LIST :: */
|
|
||||||
/* This macro ends the list. */
|
|
||||||
/* */
|
|
||||||
/* Additionally, you have to undefine __FTERRORS_H__ before #including */
|
|
||||||
/* this file. */
|
|
||||||
/* */
|
|
||||||
/* Here is a simple example: */
|
|
||||||
/* */
|
|
||||||
/* { */
|
|
||||||
/* #undef __FTERRORS_H__ */
|
|
||||||
/* #define FT_ERRORDEF( e, v, s ) { e, s }, */
|
|
||||||
/* #define FT_ERROR_START_LIST { */
|
|
||||||
/* #define FT_ERROR_END_LIST { 0, 0 } }; */
|
|
||||||
/* */
|
|
||||||
/* const struct */
|
|
||||||
/* { */
|
|
||||||
/* int err_code; */
|
|
||||||
/* const char* err_msg; */
|
|
||||||
/* } ft_errors[] = */
|
|
||||||
/* */
|
|
||||||
/* #include FT_ERRORS_H */
|
|
||||||
/* } */
|
|
||||||
/* */
|
|
||||||
/*************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef __FTERRORS_H__
|
|
||||||
#define __FTERRORS_H__
|
|
||||||
|
|
||||||
|
|
||||||
/* include module base error codes */
|
|
||||||
#include FT_MODULE_ERRORS_H
|
|
||||||
|
|
||||||
|
|
||||||
/*******************************************************************/
|
|
||||||
/*******************************************************************/
|
|
||||||
/***** *****/
|
|
||||||
/***** SETUP MACROS *****/
|
|
||||||
/***** *****/
|
|
||||||
/*******************************************************************/
|
|
||||||
/*******************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
#undef FT_NEED_EXTERN_C
|
|
||||||
|
|
||||||
#undef FT_ERR_XCAT
|
|
||||||
#undef FT_ERR_CAT
|
|
||||||
|
|
||||||
#define FT_ERR_XCAT( x, y ) x ## y
|
|
||||||
#define FT_ERR_CAT( x, y ) FT_ERR_XCAT( x, y )
|
|
||||||
|
|
||||||
|
|
||||||
/* FT_ERR_PREFIX is used as a prefix for error identifiers. */
|
|
||||||
/* By default, we use `FT_Err_'. */
|
|
||||||
/* */
|
|
||||||
#ifndef FT_ERR_PREFIX
|
|
||||||
#define FT_ERR_PREFIX FT_Err_
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/* FT_ERR_BASE is used as the base for module-specific errors. */
|
|
||||||
/* */
|
|
||||||
#ifdef FT_CONFIG_OPTION_USE_MODULE_ERRORS
|
|
||||||
|
|
||||||
#ifndef FT_ERR_BASE
|
|
||||||
#define FT_ERR_BASE FT_Mod_Err_Base
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#else
|
|
||||||
|
|
||||||
#undef FT_ERR_BASE
|
|
||||||
#define FT_ERR_BASE 0
|
|
||||||
|
|
||||||
#endif /* FT_CONFIG_OPTION_USE_MODULE_ERRORS */
|
|
||||||
|
|
||||||
|
|
||||||
/* If FT_ERRORDEF is not defined, we need to define a simple */
|
|
||||||
/* enumeration type. */
|
|
||||||
/* */
|
|
||||||
#ifndef FT_ERRORDEF
|
|
||||||
|
|
||||||
#define FT_ERRORDEF( e, v, s ) e = v,
|
|
||||||
#define FT_ERROR_START_LIST enum {
|
|
||||||
#define FT_ERROR_END_LIST FT_ERR_CAT( FT_ERR_PREFIX, Max ) };
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
#define FT_NEED_EXTERN_C
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /* !FT_ERRORDEF */
|
|
||||||
|
|
||||||
|
|
||||||
/* this macro is used to define an error */
|
|
||||||
#define FT_ERRORDEF_( e, v, s ) \
|
|
||||||
FT_ERRORDEF( FT_ERR_CAT( FT_ERR_PREFIX, e ), v + FT_ERR_BASE, s )
|
|
||||||
|
|
||||||
/* this is only used for <module>_Err_Ok, which must be 0! */
|
|
||||||
#define FT_NOERRORDEF_( e, v, s ) \
|
|
||||||
FT_ERRORDEF( FT_ERR_CAT( FT_ERR_PREFIX, e ), v, s )
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef FT_ERROR_START_LIST
|
|
||||||
FT_ERROR_START_LIST
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/* now include the error codes */
|
|
||||||
#include FT_ERROR_DEFINITIONS_H
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef FT_ERROR_END_LIST
|
|
||||||
FT_ERROR_END_LIST
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/*******************************************************************/
|
|
||||||
/*******************************************************************/
|
|
||||||
/***** *****/
|
|
||||||
/***** SIMPLE CLEANUP *****/
|
|
||||||
/***** *****/
|
|
||||||
/*******************************************************************/
|
|
||||||
/*******************************************************************/
|
|
||||||
|
|
||||||
#ifdef FT_NEED_EXTERN_C
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#undef FT_ERROR_START_LIST
|
|
||||||
#undef FT_ERROR_END_LIST
|
|
||||||
|
|
||||||
#undef FT_ERRORDEF
|
|
||||||
#undef FT_ERRORDEF_
|
|
||||||
#undef FT_NOERRORDEF_
|
|
||||||
|
|
||||||
#undef FT_NEED_EXTERN_C
|
|
||||||
#undef FT_ERR_CONCAT
|
|
||||||
#undef FT_ERR_BASE
|
|
||||||
|
|
||||||
/* FT_KEEP_ERR_PREFIX is needed for ftvalid.h */
|
|
||||||
#ifndef FT_KEEP_ERR_PREFIX
|
|
||||||
#undef FT_ERR_PREFIX
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /* __FTERRORS_H__ */
|
|
||||||
|
|
||||||
|
|
||||||
/* END */
|
|
@ -1,120 +0,0 @@
|
|||||||
/***************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* ftgasp.h */
|
|
||||||
/* */
|
|
||||||
/* Access of TrueType's `gasp' table (specification). */
|
|
||||||
/* */
|
|
||||||
/* Copyright 2007, 2008 by */
|
|
||||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
|
||||||
/* */
|
|
||||||
/* This file is part of the FreeType project, and may only be used, */
|
|
||||||
/* modified, and distributed under the terms of the FreeType project */
|
|
||||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
|
||||||
/* this file you indicate that you have read the license and */
|
|
||||||
/* understand and accept it fully. */
|
|
||||||
/* */
|
|
||||||
/***************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef _FT_GASP_H_
|
|
||||||
#define _FT_GASP_H_
|
|
||||||
|
|
||||||
#include <ft2build.h>
|
|
||||||
#include FT_FREETYPE_H
|
|
||||||
|
|
||||||
#ifdef FREETYPE_H
|
|
||||||
#error "freetype.h of FreeType 1 has been loaded!"
|
|
||||||
#error "Please fix the directory search order for header files"
|
|
||||||
#error "so that freetype.h of FreeType 2 is found first."
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/***************************************************************************
|
|
||||||
*
|
|
||||||
* @section:
|
|
||||||
* gasp_table
|
|
||||||
*
|
|
||||||
* @title:
|
|
||||||
* Gasp Table
|
|
||||||
*
|
|
||||||
* @abstract:
|
|
||||||
* Retrieving TrueType `gasp' table entries.
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* The function @FT_Get_Gasp can be used to query a TrueType or OpenType
|
|
||||||
* font for specific entries in its `gasp' table, if any. This is
|
|
||||||
* mainly useful when implementing native TrueType hinting with the
|
|
||||||
* bytecode interpreter to duplicate the Windows text rendering results.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
*
|
|
||||||
* @enum:
|
|
||||||
* FT_GASP_XXX
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* A list of values and/or bit-flags returned by the @FT_Get_Gasp
|
|
||||||
* function.
|
|
||||||
*
|
|
||||||
* @values:
|
|
||||||
* FT_GASP_NO_TABLE ::
|
|
||||||
* This special value means that there is no GASP table in this face.
|
|
||||||
* It is up to the client to decide what to do.
|
|
||||||
*
|
|
||||||
* FT_GASP_DO_GRIDFIT ::
|
|
||||||
* Grid-fitting and hinting should be performed at the specified ppem.
|
|
||||||
* This *really* means TrueType bytecode interpretation.
|
|
||||||
*
|
|
||||||
* FT_GASP_DO_GRAY ::
|
|
||||||
* Anti-aliased rendering should be performed at the specified ppem.
|
|
||||||
*
|
|
||||||
* FT_GASP_SYMMETRIC_SMOOTHING ::
|
|
||||||
* Smoothing along multiple axes must be used with ClearType.
|
|
||||||
*
|
|
||||||
* FT_GASP_SYMMETRIC_GRIDFIT ::
|
|
||||||
* Grid-fitting must be used with ClearType's symmetric smoothing.
|
|
||||||
*
|
|
||||||
* @note:
|
|
||||||
* `ClearType' is Microsoft's implementation of LCD rendering, partly
|
|
||||||
* protected by patents.
|
|
||||||
*
|
|
||||||
* @since:
|
|
||||||
* 2.3.0
|
|
||||||
*/
|
|
||||||
#define FT_GASP_NO_TABLE -1
|
|
||||||
#define FT_GASP_DO_GRIDFIT 0x01
|
|
||||||
#define FT_GASP_DO_GRAY 0x02
|
|
||||||
#define FT_GASP_SYMMETRIC_SMOOTHING 0x08
|
|
||||||
#define FT_GASP_SYMMETRIC_GRIDFIT 0x10
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
*
|
|
||||||
* @func:
|
|
||||||
* FT_Get_Gasp
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* Read the `gasp' table from a TrueType or OpenType font file and
|
|
||||||
* return the entry corresponding to a given character pixel size.
|
|
||||||
*
|
|
||||||
* @input:
|
|
||||||
* face :: The source face handle.
|
|
||||||
* ppem :: The vertical character pixel size.
|
|
||||||
*
|
|
||||||
* @return:
|
|
||||||
* Bit flags (see @FT_GASP_XXX), or @FT_GASP_NO_TABLE if there is no
|
|
||||||
* `gasp' table in the face.
|
|
||||||
*
|
|
||||||
* @since:
|
|
||||||
* 2.3.0
|
|
||||||
*/
|
|
||||||
FT_EXPORT( FT_Int )
|
|
||||||
FT_Get_Gasp( FT_Face face,
|
|
||||||
FT_UInt ppem );
|
|
||||||
|
|
||||||
/* */
|
|
||||||
|
|
||||||
#endif /* _FT_GASP_H_ */
|
|
||||||
|
|
||||||
|
|
||||||
/* END */
|
|
@ -1,613 +0,0 @@
|
|||||||
/***************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* ftglyph.h */
|
|
||||||
/* */
|
|
||||||
/* FreeType convenience functions to handle glyphs (specification). */
|
|
||||||
/* */
|
|
||||||
/* Copyright 1996-2001, 2002, 2003, 2006, 2008, 2009 by */
|
|
||||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
|
||||||
/* */
|
|
||||||
/* This file is part of the FreeType project, and may only be used, */
|
|
||||||
/* modified, and distributed under the terms of the FreeType project */
|
|
||||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
|
||||||
/* this file you indicate that you have read the license and */
|
|
||||||
/* understand and accept it fully. */
|
|
||||||
/* */
|
|
||||||
/***************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* This file contains the definition of several convenience functions */
|
|
||||||
/* that can be used by client applications to easily retrieve glyph */
|
|
||||||
/* bitmaps and outlines from a given face. */
|
|
||||||
/* */
|
|
||||||
/* These functions should be optional if you are writing a font server */
|
|
||||||
/* or text layout engine on top of FreeType. However, they are pretty */
|
|
||||||
/* handy for many other simple uses of the library. */
|
|
||||||
/* */
|
|
||||||
/*************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef __FTGLYPH_H__
|
|
||||||
#define __FTGLYPH_H__
|
|
||||||
|
|
||||||
|
|
||||||
#include <ft2build.h>
|
|
||||||
#include FT_FREETYPE_H
|
|
||||||
|
|
||||||
#ifdef FREETYPE_H
|
|
||||||
#error "freetype.h of FreeType 1 has been loaded!"
|
|
||||||
#error "Please fix the directory search order for header files"
|
|
||||||
#error "so that freetype.h of FreeType 2 is found first."
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
FT_BEGIN_HEADER
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Section> */
|
|
||||||
/* glyph_management */
|
|
||||||
/* */
|
|
||||||
/* <Title> */
|
|
||||||
/* Glyph Management */
|
|
||||||
/* */
|
|
||||||
/* <Abstract> */
|
|
||||||
/* Generic interface to manage individual glyph data. */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* This section contains definitions used to manage glyph data */
|
|
||||||
/* through generic FT_Glyph objects. Each of them can contain a */
|
|
||||||
/* bitmap, a vector outline, or even images in other formats. */
|
|
||||||
/* */
|
|
||||||
/*************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
/* forward declaration to a private type */
|
|
||||||
typedef struct FT_Glyph_Class_ FT_Glyph_Class;
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Type> */
|
|
||||||
/* FT_Glyph */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* Handle to an object used to model generic glyph images. It is a */
|
|
||||||
/* pointer to the @FT_GlyphRec structure and can contain a glyph */
|
|
||||||
/* bitmap or pointer. */
|
|
||||||
/* */
|
|
||||||
/* <Note> */
|
|
||||||
/* Glyph objects are not owned by the library. You must thus release */
|
|
||||||
/* them manually (through @FT_Done_Glyph) _before_ calling */
|
|
||||||
/* @FT_Done_FreeType. */
|
|
||||||
/* */
|
|
||||||
typedef struct FT_GlyphRec_* FT_Glyph;
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Struct> */
|
|
||||||
/* FT_GlyphRec */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* The root glyph structure contains a given glyph image plus its */
|
|
||||||
/* advance width in 16.16 fixed float format. */
|
|
||||||
/* */
|
|
||||||
/* <Fields> */
|
|
||||||
/* library :: A handle to the FreeType library object. */
|
|
||||||
/* */
|
|
||||||
/* clazz :: A pointer to the glyph's class. Private. */
|
|
||||||
/* */
|
|
||||||
/* format :: The format of the glyph's image. */
|
|
||||||
/* */
|
|
||||||
/* advance :: A 16.16 vector that gives the glyph's advance width. */
|
|
||||||
/* */
|
|
||||||
typedef struct FT_GlyphRec_
|
|
||||||
{
|
|
||||||
FT_Library library;
|
|
||||||
const FT_Glyph_Class* clazz;
|
|
||||||
FT_Glyph_Format format;
|
|
||||||
FT_Vector advance;
|
|
||||||
|
|
||||||
} FT_GlyphRec;
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Type> */
|
|
||||||
/* FT_BitmapGlyph */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* A handle to an object used to model a bitmap glyph image. This is */
|
|
||||||
/* a sub-class of @FT_Glyph, and a pointer to @FT_BitmapGlyphRec. */
|
|
||||||
/* */
|
|
||||||
typedef struct FT_BitmapGlyphRec_* FT_BitmapGlyph;
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Struct> */
|
|
||||||
/* FT_BitmapGlyphRec */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* A structure used for bitmap glyph images. This really is a */
|
|
||||||
/* `sub-class' of @FT_GlyphRec. */
|
|
||||||
/* */
|
|
||||||
/* <Fields> */
|
|
||||||
/* root :: The root @FT_Glyph fields. */
|
|
||||||
/* */
|
|
||||||
/* left :: The left-side bearing, i.e., the horizontal distance */
|
|
||||||
/* from the current pen position to the left border of the */
|
|
||||||
/* glyph bitmap. */
|
|
||||||
/* */
|
|
||||||
/* top :: The top-side bearing, i.e., the vertical distance from */
|
|
||||||
/* the current pen position to the top border of the glyph */
|
|
||||||
/* bitmap. This distance is positive for upwards~y! */
|
|
||||||
/* */
|
|
||||||
/* bitmap :: A descriptor for the bitmap. */
|
|
||||||
/* */
|
|
||||||
/* <Note> */
|
|
||||||
/* You can typecast an @FT_Glyph to @FT_BitmapGlyph if you have */
|
|
||||||
/* `glyph->format == FT_GLYPH_FORMAT_BITMAP'. This lets you access */
|
|
||||||
/* the bitmap's contents easily. */
|
|
||||||
/* */
|
|
||||||
/* The corresponding pixel buffer is always owned by @FT_BitmapGlyph */
|
|
||||||
/* and is thus created and destroyed with it. */
|
|
||||||
/* */
|
|
||||||
typedef struct FT_BitmapGlyphRec_
|
|
||||||
{
|
|
||||||
FT_GlyphRec root;
|
|
||||||
FT_Int left;
|
|
||||||
FT_Int top;
|
|
||||||
FT_Bitmap bitmap;
|
|
||||||
|
|
||||||
} FT_BitmapGlyphRec;
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Type> */
|
|
||||||
/* FT_OutlineGlyph */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* A handle to an object used to model an outline glyph image. This */
|
|
||||||
/* is a sub-class of @FT_Glyph, and a pointer to @FT_OutlineGlyphRec. */
|
|
||||||
/* */
|
|
||||||
typedef struct FT_OutlineGlyphRec_* FT_OutlineGlyph;
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Struct> */
|
|
||||||
/* FT_OutlineGlyphRec */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* A structure used for outline (vectorial) glyph images. This */
|
|
||||||
/* really is a `sub-class' of @FT_GlyphRec. */
|
|
||||||
/* */
|
|
||||||
/* <Fields> */
|
|
||||||
/* root :: The root @FT_Glyph fields. */
|
|
||||||
/* */
|
|
||||||
/* outline :: A descriptor for the outline. */
|
|
||||||
/* */
|
|
||||||
/* <Note> */
|
|
||||||
/* You can typecast an @FT_Glyph to @FT_OutlineGlyph if you have */
|
|
||||||
/* `glyph->format == FT_GLYPH_FORMAT_OUTLINE'. This lets you access */
|
|
||||||
/* the outline's content easily. */
|
|
||||||
/* */
|
|
||||||
/* As the outline is extracted from a glyph slot, its coordinates are */
|
|
||||||
/* expressed normally in 26.6 pixels, unless the flag */
|
|
||||||
/* @FT_LOAD_NO_SCALE was used in @FT_Load_Glyph() or @FT_Load_Char(). */
|
|
||||||
/* */
|
|
||||||
/* The outline's tables are always owned by the object and are */
|
|
||||||
/* destroyed with it. */
|
|
||||||
/* */
|
|
||||||
typedef struct FT_OutlineGlyphRec_
|
|
||||||
{
|
|
||||||
FT_GlyphRec root;
|
|
||||||
FT_Outline outline;
|
|
||||||
|
|
||||||
} FT_OutlineGlyphRec;
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Function> */
|
|
||||||
/* FT_Get_Glyph */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* A function used to extract a glyph image from a slot. Note that */
|
|
||||||
/* the created @FT_Glyph object must be released with @FT_Done_Glyph. */
|
|
||||||
/* */
|
|
||||||
/* <Input> */
|
|
||||||
/* slot :: A handle to the source glyph slot. */
|
|
||||||
/* */
|
|
||||||
/* <Output> */
|
|
||||||
/* aglyph :: A handle to the glyph object. */
|
|
||||||
/* */
|
|
||||||
/* <Return> */
|
|
||||||
/* FreeType error code. 0~means success. */
|
|
||||||
/* */
|
|
||||||
FT_EXPORT( FT_Error )
|
|
||||||
FT_Get_Glyph( FT_GlyphSlot slot,
|
|
||||||
FT_Glyph *aglyph );
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Function> */
|
|
||||||
/* FT_Glyph_Copy */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* A function used to copy a glyph image. Note that the created */
|
|
||||||
/* @FT_Glyph object must be released with @FT_Done_Glyph. */
|
|
||||||
/* */
|
|
||||||
/* <Input> */
|
|
||||||
/* source :: A handle to the source glyph object. */
|
|
||||||
/* */
|
|
||||||
/* <Output> */
|
|
||||||
/* target :: A handle to the target glyph object. 0~in case of */
|
|
||||||
/* error. */
|
|
||||||
/* */
|
|
||||||
/* <Return> */
|
|
||||||
/* FreeType error code. 0~means success. */
|
|
||||||
/* */
|
|
||||||
FT_EXPORT( FT_Error )
|
|
||||||
FT_Glyph_Copy( FT_Glyph source,
|
|
||||||
FT_Glyph *target );
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Function> */
|
|
||||||
/* FT_Glyph_Transform */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* Transform a glyph image if its format is scalable. */
|
|
||||||
/* */
|
|
||||||
/* <InOut> */
|
|
||||||
/* glyph :: A handle to the target glyph object. */
|
|
||||||
/* */
|
|
||||||
/* <Input> */
|
|
||||||
/* matrix :: A pointer to a 2x2 matrix to apply. */
|
|
||||||
/* */
|
|
||||||
/* delta :: A pointer to a 2d vector to apply. Coordinates are */
|
|
||||||
/* expressed in 1/64th of a pixel. */
|
|
||||||
/* */
|
|
||||||
/* <Return> */
|
|
||||||
/* FreeType error code (if not 0, the glyph format is not scalable). */
|
|
||||||
/* */
|
|
||||||
/* <Note> */
|
|
||||||
/* The 2x2 transformation matrix is also applied to the glyph's */
|
|
||||||
/* advance vector. */
|
|
||||||
/* */
|
|
||||||
FT_EXPORT( FT_Error )
|
|
||||||
FT_Glyph_Transform( FT_Glyph glyph,
|
|
||||||
FT_Matrix* matrix,
|
|
||||||
FT_Vector* delta );
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Enum> */
|
|
||||||
/* FT_Glyph_BBox_Mode */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* The mode how the values of @FT_Glyph_Get_CBox are returned. */
|
|
||||||
/* */
|
|
||||||
/* <Values> */
|
|
||||||
/* FT_GLYPH_BBOX_UNSCALED :: */
|
|
||||||
/* Return unscaled font units. */
|
|
||||||
/* */
|
|
||||||
/* FT_GLYPH_BBOX_SUBPIXELS :: */
|
|
||||||
/* Return unfitted 26.6 coordinates. */
|
|
||||||
/* */
|
|
||||||
/* FT_GLYPH_BBOX_GRIDFIT :: */
|
|
||||||
/* Return grid-fitted 26.6 coordinates. */
|
|
||||||
/* */
|
|
||||||
/* FT_GLYPH_BBOX_TRUNCATE :: */
|
|
||||||
/* Return coordinates in integer pixels. */
|
|
||||||
/* */
|
|
||||||
/* FT_GLYPH_BBOX_PIXELS :: */
|
|
||||||
/* Return grid-fitted pixel coordinates. */
|
|
||||||
/* */
|
|
||||||
typedef enum FT_Glyph_BBox_Mode_
|
|
||||||
{
|
|
||||||
FT_GLYPH_BBOX_UNSCALED = 0,
|
|
||||||
FT_GLYPH_BBOX_SUBPIXELS = 0,
|
|
||||||
FT_GLYPH_BBOX_GRIDFIT = 1,
|
|
||||||
FT_GLYPH_BBOX_TRUNCATE = 2,
|
|
||||||
FT_GLYPH_BBOX_PIXELS = 3
|
|
||||||
|
|
||||||
} FT_Glyph_BBox_Mode;
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Enum> */
|
|
||||||
/* ft_glyph_bbox_xxx */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* These constants are deprecated. Use the corresponding */
|
|
||||||
/* @FT_Glyph_BBox_Mode values instead. */
|
|
||||||
/* */
|
|
||||||
/* <Values> */
|
|
||||||
/* ft_glyph_bbox_unscaled :: See @FT_GLYPH_BBOX_UNSCALED. */
|
|
||||||
/* ft_glyph_bbox_subpixels :: See @FT_GLYPH_BBOX_SUBPIXELS. */
|
|
||||||
/* ft_glyph_bbox_gridfit :: See @FT_GLYPH_BBOX_GRIDFIT. */
|
|
||||||
/* ft_glyph_bbox_truncate :: See @FT_GLYPH_BBOX_TRUNCATE. */
|
|
||||||
/* ft_glyph_bbox_pixels :: See @FT_GLYPH_BBOX_PIXELS. */
|
|
||||||
/* */
|
|
||||||
#define ft_glyph_bbox_unscaled FT_GLYPH_BBOX_UNSCALED
|
|
||||||
#define ft_glyph_bbox_subpixels FT_GLYPH_BBOX_SUBPIXELS
|
|
||||||
#define ft_glyph_bbox_gridfit FT_GLYPH_BBOX_GRIDFIT
|
|
||||||
#define ft_glyph_bbox_truncate FT_GLYPH_BBOX_TRUNCATE
|
|
||||||
#define ft_glyph_bbox_pixels FT_GLYPH_BBOX_PIXELS
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Function> */
|
|
||||||
/* FT_Glyph_Get_CBox */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* Return a glyph's `control box'. The control box encloses all the */
|
|
||||||
/* outline's points, including Bézier control points. Though it */
|
|
||||||
/* coincides with the exact bounding box for most glyphs, it can be */
|
|
||||||
/* slightly larger in some situations (like when rotating an outline */
|
|
||||||
/* which contains Bézier outside arcs). */
|
|
||||||
/* */
|
|
||||||
/* Computing the control box is very fast, while getting the bounding */
|
|
||||||
/* box can take much more time as it needs to walk over all segments */
|
|
||||||
/* and arcs in the outline. To get the latter, you can use the */
|
|
||||||
/* `ftbbox' component which is dedicated to this single task. */
|
|
||||||
/* */
|
|
||||||
/* <Input> */
|
|
||||||
/* glyph :: A handle to the source glyph object. */
|
|
||||||
/* */
|
|
||||||
/* mode :: The mode which indicates how to interpret the returned */
|
|
||||||
/* bounding box values. */
|
|
||||||
/* */
|
|
||||||
/* <Output> */
|
|
||||||
/* acbox :: The glyph coordinate bounding box. Coordinates are */
|
|
||||||
/* expressed in 1/64th of pixels if it is grid-fitted. */
|
|
||||||
/* */
|
|
||||||
/* <Note> */
|
|
||||||
/* Coordinates are relative to the glyph origin, using the y~upwards */
|
|
||||||
/* convention. */
|
|
||||||
/* */
|
|
||||||
/* If the glyph has been loaded with @FT_LOAD_NO_SCALE, `bbox_mode' */
|
|
||||||
/* must be set to @FT_GLYPH_BBOX_UNSCALED to get unscaled font */
|
|
||||||
/* units in 26.6 pixel format. The value @FT_GLYPH_BBOX_SUBPIXELS */
|
|
||||||
/* is another name for this constant. */
|
|
||||||
/* */
|
|
||||||
/* Note that the maximum coordinates are exclusive, which means that */
|
|
||||||
/* one can compute the width and height of the glyph image (be it in */
|
|
||||||
/* integer or 26.6 pixels) as: */
|
|
||||||
/* */
|
|
||||||
/* { */
|
|
||||||
/* width = bbox.xMax - bbox.xMin; */
|
|
||||||
/* height = bbox.yMax - bbox.yMin; */
|
|
||||||
/* } */
|
|
||||||
/* */
|
|
||||||
/* Note also that for 26.6 coordinates, if `bbox_mode' is set to */
|
|
||||||
/* @FT_GLYPH_BBOX_GRIDFIT, the coordinates will also be grid-fitted, */
|
|
||||||
/* which corresponds to: */
|
|
||||||
/* */
|
|
||||||
/* { */
|
|
||||||
/* bbox.xMin = FLOOR(bbox.xMin); */
|
|
||||||
/* bbox.yMin = FLOOR(bbox.yMin); */
|
|
||||||
/* bbox.xMax = CEILING(bbox.xMax); */
|
|
||||||
/* bbox.yMax = CEILING(bbox.yMax); */
|
|
||||||
/* } */
|
|
||||||
/* */
|
|
||||||
/* To get the bbox in pixel coordinates, set `bbox_mode' to */
|
|
||||||
/* @FT_GLYPH_BBOX_TRUNCATE. */
|
|
||||||
/* */
|
|
||||||
/* To get the bbox in grid-fitted pixel coordinates, set `bbox_mode' */
|
|
||||||
/* to @FT_GLYPH_BBOX_PIXELS. */
|
|
||||||
/* */
|
|
||||||
FT_EXPORT( void )
|
|
||||||
FT_Glyph_Get_CBox( FT_Glyph glyph,
|
|
||||||
FT_UInt bbox_mode,
|
|
||||||
FT_BBox *acbox );
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Function> */
|
|
||||||
/* FT_Glyph_To_Bitmap */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* Convert a given glyph object to a bitmap glyph object. */
|
|
||||||
/* */
|
|
||||||
/* <InOut> */
|
|
||||||
/* the_glyph :: A pointer to a handle to the target glyph. */
|
|
||||||
/* */
|
|
||||||
/* <Input> */
|
|
||||||
/* render_mode :: An enumeration that describes how the data is */
|
|
||||||
/* rendered. */
|
|
||||||
/* */
|
|
||||||
/* origin :: A pointer to a vector used to translate the glyph */
|
|
||||||
/* image before rendering. Can be~0 (if no */
|
|
||||||
/* translation). The origin is expressed in */
|
|
||||||
/* 26.6 pixels. */
|
|
||||||
/* */
|
|
||||||
/* destroy :: A boolean that indicates that the original glyph */
|
|
||||||
/* image should be destroyed by this function. It is */
|
|
||||||
/* never destroyed in case of error. */
|
|
||||||
/* */
|
|
||||||
/* <Return> */
|
|
||||||
/* FreeType error code. 0~means success. */
|
|
||||||
/* */
|
|
||||||
/* <Note> */
|
|
||||||
/* This function does nothing if the glyph format isn't scalable. */
|
|
||||||
/* */
|
|
||||||
/* The glyph image is translated with the `origin' vector before */
|
|
||||||
/* rendering. */
|
|
||||||
/* */
|
|
||||||
/* The first parameter is a pointer to an @FT_Glyph handle, that will */
|
|
||||||
/* be _replaced_ by this function (with newly allocated data). */
|
|
||||||
/* Typically, you would use (omitting error handling): */
|
|
||||||
/* */
|
|
||||||
/* */
|
|
||||||
/* { */
|
|
||||||
/* FT_Glyph glyph; */
|
|
||||||
/* FT_BitmapGlyph glyph_bitmap; */
|
|
||||||
/* */
|
|
||||||
/* */
|
|
||||||
/* // load glyph */
|
|
||||||
/* error = FT_Load_Char( face, glyph_index, FT_LOAD_DEFAUT ); */
|
|
||||||
/* */
|
|
||||||
/* // extract glyph image */
|
|
||||||
/* error = FT_Get_Glyph( face->glyph, &glyph ); */
|
|
||||||
/* */
|
|
||||||
/* // convert to a bitmap (default render mode + destroying old) */
|
|
||||||
/* if ( glyph->format != FT_GLYPH_FORMAT_BITMAP ) */
|
|
||||||
/* { */
|
|
||||||
/* error = FT_Glyph_To_Bitmap( &glyph, FT_RENDER_MODE_NORMAL, */
|
|
||||||
/* 0, 1 ); */
|
|
||||||
/* if ( error ) // `glyph' unchanged */
|
|
||||||
/* ... */
|
|
||||||
/* } */
|
|
||||||
/* */
|
|
||||||
/* // access bitmap content by typecasting */
|
|
||||||
/* glyph_bitmap = (FT_BitmapGlyph)glyph; */
|
|
||||||
/* */
|
|
||||||
/* // do funny stuff with it, like blitting/drawing */
|
|
||||||
/* ... */
|
|
||||||
/* */
|
|
||||||
/* // discard glyph image (bitmap or not) */
|
|
||||||
/* FT_Done_Glyph( glyph ); */
|
|
||||||
/* } */
|
|
||||||
/* */
|
|
||||||
/* */
|
|
||||||
/* Here another example, again without error handling: */
|
|
||||||
/* */
|
|
||||||
/* */
|
|
||||||
/* { */
|
|
||||||
/* FT_Glyph glyphs[MAX_GLYPHS] */
|
|
||||||
/* */
|
|
||||||
/* */
|
|
||||||
/* ... */
|
|
||||||
/* */
|
|
||||||
/* for ( idx = 0; i < MAX_GLYPHS; i++ ) */
|
|
||||||
/* error = FT_Load_Glyph( face, idx, FT_LOAD_DEFAULT ) || */
|
|
||||||
/* FT_Get_Glyph ( face->glyph, &glyph[idx] ); */
|
|
||||||
/* */
|
|
||||||
/* ... */
|
|
||||||
/* */
|
|
||||||
/* for ( idx = 0; i < MAX_GLYPHS; i++ ) */
|
|
||||||
/* { */
|
|
||||||
/* FT_Glyph bitmap = glyphs[idx]; */
|
|
||||||
/* */
|
|
||||||
/* */
|
|
||||||
/* ... */
|
|
||||||
/* */
|
|
||||||
/* // after this call, `bitmap' no longer points into */
|
|
||||||
/* // the `glyphs' array (and the old value isn't destroyed) */
|
|
||||||
/* FT_Glyph_To_Bitmap( &bitmap, FT_RENDER_MODE_MONO, 0, 0 ); */
|
|
||||||
/* */
|
|
||||||
/* ... */
|
|
||||||
/* */
|
|
||||||
/* FT_Done_Glyph( bitmap ); */
|
|
||||||
/* } */
|
|
||||||
/* */
|
|
||||||
/* ... */
|
|
||||||
/* */
|
|
||||||
/* for ( idx = 0; i < MAX_GLYPHS; i++ ) */
|
|
||||||
/* FT_Done_Glyph( glyphs[idx] ); */
|
|
||||||
/* } */
|
|
||||||
/* */
|
|
||||||
FT_EXPORT( FT_Error )
|
|
||||||
FT_Glyph_To_Bitmap( FT_Glyph* the_glyph,
|
|
||||||
FT_Render_Mode render_mode,
|
|
||||||
FT_Vector* origin,
|
|
||||||
FT_Bool destroy );
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Function> */
|
|
||||||
/* FT_Done_Glyph */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* Destroy a given glyph. */
|
|
||||||
/* */
|
|
||||||
/* <Input> */
|
|
||||||
/* glyph :: A handle to the target glyph object. */
|
|
||||||
/* */
|
|
||||||
FT_EXPORT( void )
|
|
||||||
FT_Done_Glyph( FT_Glyph glyph );
|
|
||||||
|
|
||||||
/* */
|
|
||||||
|
|
||||||
|
|
||||||
/* other helpful functions */
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Section> */
|
|
||||||
/* computations */
|
|
||||||
/* */
|
|
||||||
/*************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Function> */
|
|
||||||
/* FT_Matrix_Multiply */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* Perform the matrix operation `b = a*b'. */
|
|
||||||
/* */
|
|
||||||
/* <Input> */
|
|
||||||
/* a :: A pointer to matrix `a'. */
|
|
||||||
/* */
|
|
||||||
/* <InOut> */
|
|
||||||
/* b :: A pointer to matrix `b'. */
|
|
||||||
/* */
|
|
||||||
/* <Note> */
|
|
||||||
/* The result is undefined if either `a' or `b' is zero. */
|
|
||||||
/* */
|
|
||||||
FT_EXPORT( void )
|
|
||||||
FT_Matrix_Multiply( const FT_Matrix* a,
|
|
||||||
FT_Matrix* b );
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Function> */
|
|
||||||
/* FT_Matrix_Invert */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* Invert a 2x2 matrix. Return an error if it can't be inverted. */
|
|
||||||
/* */
|
|
||||||
/* <InOut> */
|
|
||||||
/* matrix :: A pointer to the target matrix. Remains untouched in */
|
|
||||||
/* case of error. */
|
|
||||||
/* */
|
|
||||||
/* <Return> */
|
|
||||||
/* FreeType error code. 0~means success. */
|
|
||||||
/* */
|
|
||||||
FT_EXPORT( FT_Error )
|
|
||||||
FT_Matrix_Invert( FT_Matrix* matrix );
|
|
||||||
|
|
||||||
|
|
||||||
/* */
|
|
||||||
|
|
||||||
|
|
||||||
FT_END_HEADER
|
|
||||||
|
|
||||||
#endif /* __FTGLYPH_H__ */
|
|
||||||
|
|
||||||
|
|
||||||
/* END */
|
|
||||||
|
|
||||||
|
|
||||||
/* Local Variables: */
|
|
||||||
/* coding: utf-8 */
|
|
||||||
/* End: */
|
|
@ -1,358 +0,0 @@
|
|||||||
/***************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* ftgxval.h */
|
|
||||||
/* */
|
|
||||||
/* FreeType API for validating TrueTypeGX/AAT tables (specification). */
|
|
||||||
/* */
|
|
||||||
/* Copyright 2004, 2005, 2006 by */
|
|
||||||
/* Masatake YAMATO, Redhat K.K, */
|
|
||||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
|
||||||
/* */
|
|
||||||
/* This file is part of the FreeType project, and may only be used, */
|
|
||||||
/* modified, and distributed under the terms of the FreeType project */
|
|
||||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
|
||||||
/* this file you indicate that you have read the license and */
|
|
||||||
/* understand and accept it fully. */
|
|
||||||
/* */
|
|
||||||
/***************************************************************************/
|
|
||||||
|
|
||||||
/***************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* gxvalid is derived from both gxlayout module and otvalid module. */
|
|
||||||
/* Development of gxlayout is supported by the Information-technology */
|
|
||||||
/* Promotion Agency(IPA), Japan. */
|
|
||||||
/* */
|
|
||||||
/***************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef __FTGXVAL_H__
|
|
||||||
#define __FTGXVAL_H__
|
|
||||||
|
|
||||||
#include <ft2build.h>
|
|
||||||
#include FT_FREETYPE_H
|
|
||||||
|
|
||||||
#ifdef FREETYPE_H
|
|
||||||
#error "freetype.h of FreeType 1 has been loaded!"
|
|
||||||
#error "Please fix the directory search order for header files"
|
|
||||||
#error "so that freetype.h of FreeType 2 is found first."
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
FT_BEGIN_HEADER
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Section> */
|
|
||||||
/* gx_validation */
|
|
||||||
/* */
|
|
||||||
/* <Title> */
|
|
||||||
/* TrueTypeGX/AAT Validation */
|
|
||||||
/* */
|
|
||||||
/* <Abstract> */
|
|
||||||
/* An API to validate TrueTypeGX/AAT tables. */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* This section contains the declaration of functions to validate */
|
|
||||||
/* some TrueTypeGX tables (feat, mort, morx, bsln, just, kern, opbd, */
|
|
||||||
/* trak, prop, lcar). */
|
|
||||||
/* */
|
|
||||||
/*************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* */
|
|
||||||
/* Warning: Use FT_VALIDATE_XXX to validate a table. */
|
|
||||||
/* Following definitions are for gxvalid developers. */
|
|
||||||
/* */
|
|
||||||
/* */
|
|
||||||
/*************************************************************************/
|
|
||||||
|
|
||||||
#define FT_VALIDATE_feat_INDEX 0
|
|
||||||
#define FT_VALIDATE_mort_INDEX 1
|
|
||||||
#define FT_VALIDATE_morx_INDEX 2
|
|
||||||
#define FT_VALIDATE_bsln_INDEX 3
|
|
||||||
#define FT_VALIDATE_just_INDEX 4
|
|
||||||
#define FT_VALIDATE_kern_INDEX 5
|
|
||||||
#define FT_VALIDATE_opbd_INDEX 6
|
|
||||||
#define FT_VALIDATE_trak_INDEX 7
|
|
||||||
#define FT_VALIDATE_prop_INDEX 8
|
|
||||||
#define FT_VALIDATE_lcar_INDEX 9
|
|
||||||
#define FT_VALIDATE_GX_LAST_INDEX FT_VALIDATE_lcar_INDEX
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
*
|
|
||||||
* @macro:
|
|
||||||
* FT_VALIDATE_GX_LENGTH
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* The number of tables checked in this module. Use it as a parameter
|
|
||||||
* for the `table-length' argument of function @FT_TrueTypeGX_Validate.
|
|
||||||
*/
|
|
||||||
#define FT_VALIDATE_GX_LENGTH (FT_VALIDATE_GX_LAST_INDEX + 1)
|
|
||||||
|
|
||||||
/* */
|
|
||||||
|
|
||||||
/* Up to 0x1000 is used by otvalid.
|
|
||||||
Ox2xxx is reserved for feature OT extension. */
|
|
||||||
#define FT_VALIDATE_GX_START 0x4000
|
|
||||||
#define FT_VALIDATE_GX_BITFIELD( tag ) \
|
|
||||||
( FT_VALIDATE_GX_START << FT_VALIDATE_##tag##_INDEX )
|
|
||||||
|
|
||||||
|
|
||||||
/**********************************************************************
|
|
||||||
*
|
|
||||||
* @enum:
|
|
||||||
* FT_VALIDATE_GXXXX
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* A list of bit-field constants used with @FT_TrueTypeGX_Validate to
|
|
||||||
* indicate which TrueTypeGX/AAT Type tables should be validated.
|
|
||||||
*
|
|
||||||
* @values:
|
|
||||||
* FT_VALIDATE_feat ::
|
|
||||||
* Validate `feat' table.
|
|
||||||
*
|
|
||||||
* FT_VALIDATE_mort ::
|
|
||||||
* Validate `mort' table.
|
|
||||||
*
|
|
||||||
* FT_VALIDATE_morx ::
|
|
||||||
* Validate `morx' table.
|
|
||||||
*
|
|
||||||
* FT_VALIDATE_bsln ::
|
|
||||||
* Validate `bsln' table.
|
|
||||||
*
|
|
||||||
* FT_VALIDATE_just ::
|
|
||||||
* Validate `just' table.
|
|
||||||
*
|
|
||||||
* FT_VALIDATE_kern ::
|
|
||||||
* Validate `kern' table.
|
|
||||||
*
|
|
||||||
* FT_VALIDATE_opbd ::
|
|
||||||
* Validate `opbd' table.
|
|
||||||
*
|
|
||||||
* FT_VALIDATE_trak ::
|
|
||||||
* Validate `trak' table.
|
|
||||||
*
|
|
||||||
* FT_VALIDATE_prop ::
|
|
||||||
* Validate `prop' table.
|
|
||||||
*
|
|
||||||
* FT_VALIDATE_lcar ::
|
|
||||||
* Validate `lcar' table.
|
|
||||||
*
|
|
||||||
* FT_VALIDATE_GX ::
|
|
||||||
* Validate all TrueTypeGX tables (feat, mort, morx, bsln, just, kern,
|
|
||||||
* opbd, trak, prop and lcar).
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define FT_VALIDATE_feat FT_VALIDATE_GX_BITFIELD( feat )
|
|
||||||
#define FT_VALIDATE_mort FT_VALIDATE_GX_BITFIELD( mort )
|
|
||||||
#define FT_VALIDATE_morx FT_VALIDATE_GX_BITFIELD( morx )
|
|
||||||
#define FT_VALIDATE_bsln FT_VALIDATE_GX_BITFIELD( bsln )
|
|
||||||
#define FT_VALIDATE_just FT_VALIDATE_GX_BITFIELD( just )
|
|
||||||
#define FT_VALIDATE_kern FT_VALIDATE_GX_BITFIELD( kern )
|
|
||||||
#define FT_VALIDATE_opbd FT_VALIDATE_GX_BITFIELD( opbd )
|
|
||||||
#define FT_VALIDATE_trak FT_VALIDATE_GX_BITFIELD( trak )
|
|
||||||
#define FT_VALIDATE_prop FT_VALIDATE_GX_BITFIELD( prop )
|
|
||||||
#define FT_VALIDATE_lcar FT_VALIDATE_GX_BITFIELD( lcar )
|
|
||||||
|
|
||||||
#define FT_VALIDATE_GX ( FT_VALIDATE_feat | \
|
|
||||||
FT_VALIDATE_mort | \
|
|
||||||
FT_VALIDATE_morx | \
|
|
||||||
FT_VALIDATE_bsln | \
|
|
||||||
FT_VALIDATE_just | \
|
|
||||||
FT_VALIDATE_kern | \
|
|
||||||
FT_VALIDATE_opbd | \
|
|
||||||
FT_VALIDATE_trak | \
|
|
||||||
FT_VALIDATE_prop | \
|
|
||||||
FT_VALIDATE_lcar )
|
|
||||||
|
|
||||||
|
|
||||||
/* */
|
|
||||||
|
|
||||||
/**********************************************************************
|
|
||||||
*
|
|
||||||
* @function:
|
|
||||||
* FT_TrueTypeGX_Validate
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* Validate various TrueTypeGX tables to assure that all offsets and
|
|
||||||
* indices are valid. The idea is that a higher-level library which
|
|
||||||
* actually does the text layout can access those tables without
|
|
||||||
* error checking (which can be quite time consuming).
|
|
||||||
*
|
|
||||||
* @input:
|
|
||||||
* face ::
|
|
||||||
* A handle to the input face.
|
|
||||||
*
|
|
||||||
* validation_flags ::
|
|
||||||
* A bit field which specifies the tables to be validated. See
|
|
||||||
* @FT_VALIDATE_GXXXX for possible values.
|
|
||||||
*
|
|
||||||
* table_length ::
|
|
||||||
* The size of the `tables' array. Normally, @FT_VALIDATE_GX_LENGTH
|
|
||||||
* should be passed.
|
|
||||||
*
|
|
||||||
* @output:
|
|
||||||
* tables ::
|
|
||||||
* The array where all validated sfnt tables are stored.
|
|
||||||
* The array itself must be allocated by a client.
|
|
||||||
*
|
|
||||||
* @return:
|
|
||||||
* FreeType error code. 0~means success.
|
|
||||||
*
|
|
||||||
* @note:
|
|
||||||
* This function only works with TrueTypeGX fonts, returning an error
|
|
||||||
* otherwise.
|
|
||||||
*
|
|
||||||
* After use, the application should deallocate the buffers pointed to by
|
|
||||||
* each `tables' element, by calling @FT_TrueTypeGX_Free. A NULL value
|
|
||||||
* indicates that the table either doesn't exist in the font, the
|
|
||||||
* application hasn't asked for validation, or the validator doesn't have
|
|
||||||
* the ability to validate the sfnt table.
|
|
||||||
*/
|
|
||||||
FT_EXPORT( FT_Error )
|
|
||||||
FT_TrueTypeGX_Validate( FT_Face face,
|
|
||||||
FT_UInt validation_flags,
|
|
||||||
FT_Bytes tables[FT_VALIDATE_GX_LENGTH],
|
|
||||||
FT_UInt table_length );
|
|
||||||
|
|
||||||
|
|
||||||
/* */
|
|
||||||
|
|
||||||
/**********************************************************************
|
|
||||||
*
|
|
||||||
* @function:
|
|
||||||
* FT_TrueTypeGX_Free
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* Free the buffer allocated by TrueTypeGX validator.
|
|
||||||
*
|
|
||||||
* @input:
|
|
||||||
* face ::
|
|
||||||
* A handle to the input face.
|
|
||||||
*
|
|
||||||
* table ::
|
|
||||||
* The pointer to the buffer allocated by
|
|
||||||
* @FT_TrueTypeGX_Validate.
|
|
||||||
*
|
|
||||||
* @note:
|
|
||||||
* This function must be used to free the buffer allocated by
|
|
||||||
* @FT_TrueTypeGX_Validate only.
|
|
||||||
*/
|
|
||||||
FT_EXPORT( void )
|
|
||||||
FT_TrueTypeGX_Free( FT_Face face,
|
|
||||||
FT_Bytes table );
|
|
||||||
|
|
||||||
|
|
||||||
/* */
|
|
||||||
|
|
||||||
/**********************************************************************
|
|
||||||
*
|
|
||||||
* @enum:
|
|
||||||
* FT_VALIDATE_CKERNXXX
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* A list of bit-field constants used with @FT_ClassicKern_Validate
|
|
||||||
* to indicate the classic kern dialect or dialects. If the selected
|
|
||||||
* type doesn't fit, @FT_ClassicKern_Validate regards the table as
|
|
||||||
* invalid.
|
|
||||||
*
|
|
||||||
* @values:
|
|
||||||
* FT_VALIDATE_MS ::
|
|
||||||
* Handle the `kern' table as a classic Microsoft kern table.
|
|
||||||
*
|
|
||||||
* FT_VALIDATE_APPLE ::
|
|
||||||
* Handle the `kern' table as a classic Apple kern table.
|
|
||||||
*
|
|
||||||
* FT_VALIDATE_CKERN ::
|
|
||||||
* Handle the `kern' as either classic Apple or Microsoft kern table.
|
|
||||||
*/
|
|
||||||
#define FT_VALIDATE_MS ( FT_VALIDATE_GX_START << 0 )
|
|
||||||
#define FT_VALIDATE_APPLE ( FT_VALIDATE_GX_START << 1 )
|
|
||||||
|
|
||||||
#define FT_VALIDATE_CKERN ( FT_VALIDATE_MS | FT_VALIDATE_APPLE )
|
|
||||||
|
|
||||||
|
|
||||||
/* */
|
|
||||||
|
|
||||||
/**********************************************************************
|
|
||||||
*
|
|
||||||
* @function:
|
|
||||||
* FT_ClassicKern_Validate
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* Validate classic (16-bit format) kern table to assure that the offsets
|
|
||||||
* and indices are valid. The idea is that a higher-level library which
|
|
||||||
* actually does the text layout can access those tables without error
|
|
||||||
* checking (which can be quite time consuming).
|
|
||||||
*
|
|
||||||
* The `kern' table validator in @FT_TrueTypeGX_Validate deals with both
|
|
||||||
* the new 32-bit format and the classic 16-bit format, while
|
|
||||||
* FT_ClassicKern_Validate only supports the classic 16-bit format.
|
|
||||||
*
|
|
||||||
* @input:
|
|
||||||
* face ::
|
|
||||||
* A handle to the input face.
|
|
||||||
*
|
|
||||||
* validation_flags ::
|
|
||||||
* A bit field which specifies the dialect to be validated. See
|
|
||||||
* @FT_VALIDATE_CKERNXXX for possible values.
|
|
||||||
*
|
|
||||||
* @output:
|
|
||||||
* ckern_table ::
|
|
||||||
* A pointer to the kern table.
|
|
||||||
*
|
|
||||||
* @return:
|
|
||||||
* FreeType error code. 0~means success.
|
|
||||||
*
|
|
||||||
* @note:
|
|
||||||
* After use, the application should deallocate the buffers pointed to by
|
|
||||||
* `ckern_table', by calling @FT_ClassicKern_Free. A NULL value
|
|
||||||
* indicates that the table doesn't exist in the font.
|
|
||||||
*/
|
|
||||||
FT_EXPORT( FT_Error )
|
|
||||||
FT_ClassicKern_Validate( FT_Face face,
|
|
||||||
FT_UInt validation_flags,
|
|
||||||
FT_Bytes *ckern_table );
|
|
||||||
|
|
||||||
|
|
||||||
/* */
|
|
||||||
|
|
||||||
/**********************************************************************
|
|
||||||
*
|
|
||||||
* @function:
|
|
||||||
* FT_ClassicKern_Free
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* Free the buffer allocated by classic Kern validator.
|
|
||||||
*
|
|
||||||
* @input:
|
|
||||||
* face ::
|
|
||||||
* A handle to the input face.
|
|
||||||
*
|
|
||||||
* table ::
|
|
||||||
* The pointer to the buffer that is allocated by
|
|
||||||
* @FT_ClassicKern_Validate.
|
|
||||||
*
|
|
||||||
* @note:
|
|
||||||
* This function must be used to free the buffer allocated by
|
|
||||||
* @FT_ClassicKern_Validate only.
|
|
||||||
*/
|
|
||||||
FT_EXPORT( void )
|
|
||||||
FT_ClassicKern_Free( FT_Face face,
|
|
||||||
FT_Bytes table );
|
|
||||||
|
|
||||||
|
|
||||||
/* */
|
|
||||||
|
|
||||||
|
|
||||||
FT_END_HEADER
|
|
||||||
|
|
||||||
#endif /* __FTGXVAL_H__ */
|
|
||||||
|
|
||||||
|
|
||||||
/* END */
|
|
@ -1,102 +0,0 @@
|
|||||||
/***************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* ftgzip.h */
|
|
||||||
/* */
|
|
||||||
/* Gzip-compressed stream support. */
|
|
||||||
/* */
|
|
||||||
/* Copyright 2002, 2003, 2004, 2006 by */
|
|
||||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
|
||||||
/* */
|
|
||||||
/* This file is part of the FreeType project, and may only be used, */
|
|
||||||
/* modified, and distributed under the terms of the FreeType project */
|
|
||||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
|
||||||
/* this file you indicate that you have read the license and */
|
|
||||||
/* understand and accept it fully. */
|
|
||||||
/* */
|
|
||||||
/***************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef __FTGZIP_H__
|
|
||||||
#define __FTGZIP_H__
|
|
||||||
|
|
||||||
#include <ft2build.h>
|
|
||||||
#include FT_FREETYPE_H
|
|
||||||
|
|
||||||
#ifdef FREETYPE_H
|
|
||||||
#error "freetype.h of FreeType 1 has been loaded!"
|
|
||||||
#error "Please fix the directory search order for header files"
|
|
||||||
#error "so that freetype.h of FreeType 2 is found first."
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
FT_BEGIN_HEADER
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Section> */
|
|
||||||
/* gzip */
|
|
||||||
/* */
|
|
||||||
/* <Title> */
|
|
||||||
/* GZIP Streams */
|
|
||||||
/* */
|
|
||||||
/* <Abstract> */
|
|
||||||
/* Using gzip-compressed font files. */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* This section contains the declaration of Gzip-specific functions. */
|
|
||||||
/* */
|
|
||||||
/*************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
/************************************************************************
|
|
||||||
*
|
|
||||||
* @function:
|
|
||||||
* FT_Stream_OpenGzip
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* Open a new stream to parse gzip-compressed font files. This is
|
|
||||||
* mainly used to support the compressed `*.pcf.gz' fonts that come
|
|
||||||
* with XFree86.
|
|
||||||
*
|
|
||||||
* @input:
|
|
||||||
* stream ::
|
|
||||||
* The target embedding stream.
|
|
||||||
*
|
|
||||||
* source ::
|
|
||||||
* The source stream.
|
|
||||||
*
|
|
||||||
* @return:
|
|
||||||
* FreeType error code. 0~means success.
|
|
||||||
*
|
|
||||||
* @note:
|
|
||||||
* The source stream must be opened _before_ calling this function.
|
|
||||||
*
|
|
||||||
* Calling the internal function `FT_Stream_Close' on the new stream will
|
|
||||||
* *not* call `FT_Stream_Close' on the source stream. None of the stream
|
|
||||||
* objects will be released to the heap.
|
|
||||||
*
|
|
||||||
* The stream implementation is very basic and resets the decompression
|
|
||||||
* process each time seeking backwards is needed within the stream.
|
|
||||||
*
|
|
||||||
* In certain builds of the library, gzip compression recognition is
|
|
||||||
* automatically handled when calling @FT_New_Face or @FT_Open_Face.
|
|
||||||
* This means that if no font driver is capable of handling the raw
|
|
||||||
* compressed file, the library will try to open a gzipped stream from
|
|
||||||
* it and re-open the face with it.
|
|
||||||
*
|
|
||||||
* This function may return `FT_Err_Unimplemented_Feature' if your build
|
|
||||||
* of FreeType was not compiled with zlib support.
|
|
||||||
*/
|
|
||||||
FT_EXPORT( FT_Error )
|
|
||||||
FT_Stream_OpenGzip( FT_Stream stream,
|
|
||||||
FT_Stream source );
|
|
||||||
|
|
||||||
/* */
|
|
||||||
|
|
||||||
|
|
||||||
FT_END_HEADER
|
|
||||||
|
|
||||||
#endif /* __FTGZIP_H__ */
|
|
||||||
|
|
||||||
|
|
||||||
/* END */
|
|
File diff suppressed because it is too large
Load Diff
@ -1,353 +0,0 @@
|
|||||||
/***************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* ftincrem.h */
|
|
||||||
/* */
|
|
||||||
/* FreeType incremental loading (specification). */
|
|
||||||
/* */
|
|
||||||
/* Copyright 2002, 2003, 2006, 2007, 2008, 2010 by */
|
|
||||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
|
||||||
/* */
|
|
||||||
/* This file is part of the FreeType project, and may only be used, */
|
|
||||||
/* modified, and distributed under the terms of the FreeType project */
|
|
||||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
|
||||||
/* this file you indicate that you have read the license and */
|
|
||||||
/* understand and accept it fully. */
|
|
||||||
/* */
|
|
||||||
/***************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef __FTINCREM_H__
|
|
||||||
#define __FTINCREM_H__
|
|
||||||
|
|
||||||
#include <ft2build.h>
|
|
||||||
#include FT_FREETYPE_H
|
|
||||||
|
|
||||||
#ifdef FREETYPE_H
|
|
||||||
#error "freetype.h of FreeType 1 has been loaded!"
|
|
||||||
#error "Please fix the directory search order for header files"
|
|
||||||
#error "so that freetype.h of FreeType 2 is found first."
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
FT_BEGIN_HEADER
|
|
||||||
|
|
||||||
/***************************************************************************
|
|
||||||
*
|
|
||||||
* @section:
|
|
||||||
* incremental
|
|
||||||
*
|
|
||||||
* @title:
|
|
||||||
* Incremental Loading
|
|
||||||
*
|
|
||||||
* @abstract:
|
|
||||||
* Custom Glyph Loading.
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* This section contains various functions used to perform so-called
|
|
||||||
* `incremental' glyph loading. This is a mode where all glyphs loaded
|
|
||||||
* from a given @FT_Face are provided by the client application,
|
|
||||||
*
|
|
||||||
* Apart from that, all other tables are loaded normally from the font
|
|
||||||
* file. This mode is useful when FreeType is used within another
|
|
||||||
* engine, e.g., a PostScript Imaging Processor.
|
|
||||||
*
|
|
||||||
* To enable this mode, you must use @FT_Open_Face, passing an
|
|
||||||
* @FT_Parameter with the @FT_PARAM_TAG_INCREMENTAL tag and an
|
|
||||||
* @FT_Incremental_Interface value. See the comments for
|
|
||||||
* @FT_Incremental_InterfaceRec for an example.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
/***************************************************************************
|
|
||||||
*
|
|
||||||
* @type:
|
|
||||||
* FT_Incremental
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* An opaque type describing a user-provided object used to implement
|
|
||||||
* `incremental' glyph loading within FreeType. This is used to support
|
|
||||||
* embedded fonts in certain environments (e.g., PostScript interpreters),
|
|
||||||
* where the glyph data isn't in the font file, or must be overridden by
|
|
||||||
* different values.
|
|
||||||
*
|
|
||||||
* @note:
|
|
||||||
* It is up to client applications to create and implement @FT_Incremental
|
|
||||||
* objects, as long as they provide implementations for the methods
|
|
||||||
* @FT_Incremental_GetGlyphDataFunc, @FT_Incremental_FreeGlyphDataFunc
|
|
||||||
* and @FT_Incremental_GetGlyphMetricsFunc.
|
|
||||||
*
|
|
||||||
* See the description of @FT_Incremental_InterfaceRec to understand how
|
|
||||||
* to use incremental objects with FreeType.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
typedef struct FT_IncrementalRec_* FT_Incremental;
|
|
||||||
|
|
||||||
|
|
||||||
/***************************************************************************
|
|
||||||
*
|
|
||||||
* @struct:
|
|
||||||
* FT_Incremental_MetricsRec
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* A small structure used to contain the basic glyph metrics returned
|
|
||||||
* by the @FT_Incremental_GetGlyphMetricsFunc method.
|
|
||||||
*
|
|
||||||
* @fields:
|
|
||||||
* bearing_x ::
|
|
||||||
* Left bearing, in font units.
|
|
||||||
*
|
|
||||||
* bearing_y ::
|
|
||||||
* Top bearing, in font units.
|
|
||||||
*
|
|
||||||
* advance ::
|
|
||||||
* Horizontal component of glyph advance, in font units.
|
|
||||||
*
|
|
||||||
* advance_v ::
|
|
||||||
* Vertical component of glyph advance, in font units.
|
|
||||||
*
|
|
||||||
* @note:
|
|
||||||
* These correspond to horizontal or vertical metrics depending on the
|
|
||||||
* value of the `vertical' argument to the function
|
|
||||||
* @FT_Incremental_GetGlyphMetricsFunc.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
typedef struct FT_Incremental_MetricsRec_
|
|
||||||
{
|
|
||||||
FT_Long bearing_x;
|
|
||||||
FT_Long bearing_y;
|
|
||||||
FT_Long advance;
|
|
||||||
FT_Long advance_v; /* since 2.3.12 */
|
|
||||||
|
|
||||||
} FT_Incremental_MetricsRec;
|
|
||||||
|
|
||||||
|
|
||||||
/***************************************************************************
|
|
||||||
*
|
|
||||||
* @struct:
|
|
||||||
* FT_Incremental_Metrics
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* A handle to an @FT_Incremental_MetricsRec structure.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
typedef struct FT_Incremental_MetricsRec_* FT_Incremental_Metrics;
|
|
||||||
|
|
||||||
|
|
||||||
/***************************************************************************
|
|
||||||
*
|
|
||||||
* @type:
|
|
||||||
* FT_Incremental_GetGlyphDataFunc
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* A function called by FreeType to access a given glyph's data bytes
|
|
||||||
* during @FT_Load_Glyph or @FT_Load_Char if incremental loading is
|
|
||||||
* enabled.
|
|
||||||
*
|
|
||||||
* Note that the format of the glyph's data bytes depends on the font
|
|
||||||
* file format. For TrueType, it must correspond to the raw bytes within
|
|
||||||
* the `glyf' table. For PostScript formats, it must correspond to the
|
|
||||||
* *unencrypted* charstring bytes, without any `lenIV' header. It is
|
|
||||||
* undefined for any other format.
|
|
||||||
*
|
|
||||||
* @input:
|
|
||||||
* incremental ::
|
|
||||||
* Handle to an opaque @FT_Incremental handle provided by the client
|
|
||||||
* application.
|
|
||||||
*
|
|
||||||
* glyph_index ::
|
|
||||||
* Index of relevant glyph.
|
|
||||||
*
|
|
||||||
* @output:
|
|
||||||
* adata ::
|
|
||||||
* A structure describing the returned glyph data bytes (which will be
|
|
||||||
* accessed as a read-only byte block).
|
|
||||||
*
|
|
||||||
* @return:
|
|
||||||
* FreeType error code. 0~means success.
|
|
||||||
*
|
|
||||||
* @note:
|
|
||||||
* If this function returns successfully the method
|
|
||||||
* @FT_Incremental_FreeGlyphDataFunc will be called later to release
|
|
||||||
* the data bytes.
|
|
||||||
*
|
|
||||||
* Nested calls to @FT_Incremental_GetGlyphDataFunc can happen for
|
|
||||||
* compound glyphs.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
typedef FT_Error
|
|
||||||
(*FT_Incremental_GetGlyphDataFunc)( FT_Incremental incremental,
|
|
||||||
FT_UInt glyph_index,
|
|
||||||
FT_Data* adata );
|
|
||||||
|
|
||||||
|
|
||||||
/***************************************************************************
|
|
||||||
*
|
|
||||||
* @type:
|
|
||||||
* FT_Incremental_FreeGlyphDataFunc
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* A function used to release the glyph data bytes returned by a
|
|
||||||
* successful call to @FT_Incremental_GetGlyphDataFunc.
|
|
||||||
*
|
|
||||||
* @input:
|
|
||||||
* incremental ::
|
|
||||||
* A handle to an opaque @FT_Incremental handle provided by the client
|
|
||||||
* application.
|
|
||||||
*
|
|
||||||
* data ::
|
|
||||||
* A structure describing the glyph data bytes (which will be accessed
|
|
||||||
* as a read-only byte block).
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
typedef void
|
|
||||||
(*FT_Incremental_FreeGlyphDataFunc)( FT_Incremental incremental,
|
|
||||||
FT_Data* data );
|
|
||||||
|
|
||||||
|
|
||||||
/***************************************************************************
|
|
||||||
*
|
|
||||||
* @type:
|
|
||||||
* FT_Incremental_GetGlyphMetricsFunc
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* A function used to retrieve the basic metrics of a given glyph index
|
|
||||||
* before accessing its data. This is necessary because, in certain
|
|
||||||
* formats like TrueType, the metrics are stored in a different place from
|
|
||||||
* the glyph images proper.
|
|
||||||
*
|
|
||||||
* @input:
|
|
||||||
* incremental ::
|
|
||||||
* A handle to an opaque @FT_Incremental handle provided by the client
|
|
||||||
* application.
|
|
||||||
*
|
|
||||||
* glyph_index ::
|
|
||||||
* Index of relevant glyph.
|
|
||||||
*
|
|
||||||
* vertical ::
|
|
||||||
* If true, return vertical metrics.
|
|
||||||
*
|
|
||||||
* ametrics ::
|
|
||||||
* This parameter is used for both input and output.
|
|
||||||
* The original glyph metrics, if any, in font units. If metrics are
|
|
||||||
* not available all the values must be set to zero.
|
|
||||||
*
|
|
||||||
* @output:
|
|
||||||
* ametrics ::
|
|
||||||
* The replacement glyph metrics in font units.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
typedef FT_Error
|
|
||||||
(*FT_Incremental_GetGlyphMetricsFunc)
|
|
||||||
( FT_Incremental incremental,
|
|
||||||
FT_UInt glyph_index,
|
|
||||||
FT_Bool vertical,
|
|
||||||
FT_Incremental_MetricsRec *ametrics );
|
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************************
|
|
||||||
*
|
|
||||||
* @struct:
|
|
||||||
* FT_Incremental_FuncsRec
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* A table of functions for accessing fonts that load data
|
|
||||||
* incrementally. Used in @FT_Incremental_InterfaceRec.
|
|
||||||
*
|
|
||||||
* @fields:
|
|
||||||
* get_glyph_data ::
|
|
||||||
* The function to get glyph data. Must not be null.
|
|
||||||
*
|
|
||||||
* free_glyph_data ::
|
|
||||||
* The function to release glyph data. Must not be null.
|
|
||||||
*
|
|
||||||
* get_glyph_metrics ::
|
|
||||||
* The function to get glyph metrics. May be null if the font does
|
|
||||||
* not provide overriding glyph metrics.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
typedef struct FT_Incremental_FuncsRec_
|
|
||||||
{
|
|
||||||
FT_Incremental_GetGlyphDataFunc get_glyph_data;
|
|
||||||
FT_Incremental_FreeGlyphDataFunc free_glyph_data;
|
|
||||||
FT_Incremental_GetGlyphMetricsFunc get_glyph_metrics;
|
|
||||||
|
|
||||||
} FT_Incremental_FuncsRec;
|
|
||||||
|
|
||||||
|
|
||||||
/***************************************************************************
|
|
||||||
*
|
|
||||||
* @struct:
|
|
||||||
* FT_Incremental_InterfaceRec
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* A structure to be used with @FT_Open_Face to indicate that the user
|
|
||||||
* wants to support incremental glyph loading. You should use it with
|
|
||||||
* @FT_PARAM_TAG_INCREMENTAL as in the following example:
|
|
||||||
*
|
|
||||||
* {
|
|
||||||
* FT_Incremental_InterfaceRec inc_int;
|
|
||||||
* FT_Parameter parameter;
|
|
||||||
* FT_Open_Args open_args;
|
|
||||||
*
|
|
||||||
*
|
|
||||||
* // set up incremental descriptor
|
|
||||||
* inc_int.funcs = my_funcs;
|
|
||||||
* inc_int.object = my_object;
|
|
||||||
*
|
|
||||||
* // set up optional parameter
|
|
||||||
* parameter.tag = FT_PARAM_TAG_INCREMENTAL;
|
|
||||||
* parameter.data = &inc_int;
|
|
||||||
*
|
|
||||||
* // set up FT_Open_Args structure
|
|
||||||
* open_args.flags = FT_OPEN_PATHNAME | FT_OPEN_PARAMS;
|
|
||||||
* open_args.pathname = my_font_pathname;
|
|
||||||
* open_args.num_params = 1;
|
|
||||||
* open_args.params = ¶meter; // we use one optional argument
|
|
||||||
*
|
|
||||||
* // open the font
|
|
||||||
* error = FT_Open_Face( library, &open_args, index, &face );
|
|
||||||
* ...
|
|
||||||
* }
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
typedef struct FT_Incremental_InterfaceRec_
|
|
||||||
{
|
|
||||||
const FT_Incremental_FuncsRec* funcs;
|
|
||||||
FT_Incremental object;
|
|
||||||
|
|
||||||
} FT_Incremental_InterfaceRec;
|
|
||||||
|
|
||||||
|
|
||||||
/***************************************************************************
|
|
||||||
*
|
|
||||||
* @type:
|
|
||||||
* FT_Incremental_Interface
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* A pointer to an @FT_Incremental_InterfaceRec structure.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
typedef FT_Incremental_InterfaceRec* FT_Incremental_Interface;
|
|
||||||
|
|
||||||
|
|
||||||
/***************************************************************************
|
|
||||||
*
|
|
||||||
* @constant:
|
|
||||||
* FT_PARAM_TAG_INCREMENTAL
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* A constant used as the tag of @FT_Parameter structures to indicate
|
|
||||||
* an incremental loading object to be used by FreeType.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
#define FT_PARAM_TAG_INCREMENTAL FT_MAKE_TAG( 'i', 'n', 'c', 'r' )
|
|
||||||
|
|
||||||
/* */
|
|
||||||
|
|
||||||
FT_END_HEADER
|
|
||||||
|
|
||||||
#endif /* __FTINCREM_H__ */
|
|
||||||
|
|
||||||
|
|
||||||
/* END */
|
|
@ -1,213 +0,0 @@
|
|||||||
/***************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* ftlcdfil.h */
|
|
||||||
/* */
|
|
||||||
/* FreeType API for color filtering of subpixel bitmap glyphs */
|
|
||||||
/* (specification). */
|
|
||||||
/* */
|
|
||||||
/* Copyright 2006, 2007, 2008, 2010 by */
|
|
||||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
|
||||||
/* */
|
|
||||||
/* This file is part of the FreeType project, and may only be used, */
|
|
||||||
/* modified, and distributed under the terms of the FreeType project */
|
|
||||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
|
||||||
/* this file you indicate that you have read the license and */
|
|
||||||
/* understand and accept it fully. */
|
|
||||||
/* */
|
|
||||||
/***************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef __FT_LCD_FILTER_H__
|
|
||||||
#define __FT_LCD_FILTER_H__
|
|
||||||
|
|
||||||
#include <ft2build.h>
|
|
||||||
#include FT_FREETYPE_H
|
|
||||||
|
|
||||||
#ifdef FREETYPE_H
|
|
||||||
#error "freetype.h of FreeType 1 has been loaded!"
|
|
||||||
#error "Please fix the directory search order for header files"
|
|
||||||
#error "so that freetype.h of FreeType 2 is found first."
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
FT_BEGIN_HEADER
|
|
||||||
|
|
||||||
/***************************************************************************
|
|
||||||
*
|
|
||||||
* @section:
|
|
||||||
* lcd_filtering
|
|
||||||
*
|
|
||||||
* @title:
|
|
||||||
* LCD Filtering
|
|
||||||
*
|
|
||||||
* @abstract:
|
|
||||||
* Reduce color fringes of LCD-optimized bitmaps.
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* The @FT_Library_SetLcdFilter API can be used to specify a low-pass
|
|
||||||
* filter which is then applied to LCD-optimized bitmaps generated
|
|
||||||
* through @FT_Render_Glyph. This is useful to reduce color fringes
|
|
||||||
* which would occur with unfiltered rendering.
|
|
||||||
*
|
|
||||||
* Note that no filter is active by default, and that this function is
|
|
||||||
* *not* implemented in default builds of the library. You need to
|
|
||||||
* #define FT_CONFIG_OPTION_SUBPIXEL_RENDERING in your `ftoption.h' file
|
|
||||||
* in order to activate it.
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
/****************************************************************************
|
|
||||||
*
|
|
||||||
* @enum:
|
|
||||||
* FT_LcdFilter
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* A list of values to identify various types of LCD filters.
|
|
||||||
*
|
|
||||||
* @values:
|
|
||||||
* FT_LCD_FILTER_NONE ::
|
|
||||||
* Do not perform filtering. When used with subpixel rendering, this
|
|
||||||
* results in sometimes severe color fringes.
|
|
||||||
*
|
|
||||||
* FT_LCD_FILTER_DEFAULT ::
|
|
||||||
* The default filter reduces color fringes considerably, at the cost
|
|
||||||
* of a slight blurriness in the output.
|
|
||||||
*
|
|
||||||
* FT_LCD_FILTER_LIGHT ::
|
|
||||||
* The light filter is a variant that produces less blurriness at the
|
|
||||||
* cost of slightly more color fringes than the default one. It might
|
|
||||||
* be better, depending on taste, your monitor, or your personal vision.
|
|
||||||
*
|
|
||||||
* FT_LCD_FILTER_LEGACY ::
|
|
||||||
* This filter corresponds to the original libXft color filter. It
|
|
||||||
* provides high contrast output but can exhibit really bad color
|
|
||||||
* fringes if glyphs are not extremely well hinted to the pixel grid.
|
|
||||||
* In other words, it only works well if the TrueType bytecode
|
|
||||||
* interpreter is enabled *and* high-quality hinted fonts are used.
|
|
||||||
*
|
|
||||||
* This filter is only provided for comparison purposes, and might be
|
|
||||||
* disabled or stay unsupported in the future.
|
|
||||||
*
|
|
||||||
* @since:
|
|
||||||
* 2.3.0
|
|
||||||
*/
|
|
||||||
typedef enum FT_LcdFilter_
|
|
||||||
{
|
|
||||||
FT_LCD_FILTER_NONE = 0,
|
|
||||||
FT_LCD_FILTER_DEFAULT = 1,
|
|
||||||
FT_LCD_FILTER_LIGHT = 2,
|
|
||||||
FT_LCD_FILTER_LEGACY = 16,
|
|
||||||
|
|
||||||
FT_LCD_FILTER_MAX /* do not remove */
|
|
||||||
|
|
||||||
} FT_LcdFilter;
|
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************************
|
|
||||||
*
|
|
||||||
* @func:
|
|
||||||
* FT_Library_SetLcdFilter
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* This function is used to apply color filtering to LCD decimated
|
|
||||||
* bitmaps, like the ones used when calling @FT_Render_Glyph with
|
|
||||||
* @FT_RENDER_MODE_LCD or @FT_RENDER_MODE_LCD_V.
|
|
||||||
*
|
|
||||||
* @input:
|
|
||||||
* library ::
|
|
||||||
* A handle to the target library instance.
|
|
||||||
*
|
|
||||||
* filter ::
|
|
||||||
* The filter type.
|
|
||||||
*
|
|
||||||
* You can use @FT_LCD_FILTER_NONE here to disable this feature, or
|
|
||||||
* @FT_LCD_FILTER_DEFAULT to use a default filter that should work
|
|
||||||
* well on most LCD screens.
|
|
||||||
*
|
|
||||||
* @return:
|
|
||||||
* FreeType error code. 0~means success.
|
|
||||||
*
|
|
||||||
* @note:
|
|
||||||
* This feature is always disabled by default. Clients must make an
|
|
||||||
* explicit call to this function with a `filter' value other than
|
|
||||||
* @FT_LCD_FILTER_NONE in order to enable it.
|
|
||||||
*
|
|
||||||
* Due to *PATENTS* covering subpixel rendering, this function doesn't
|
|
||||||
* do anything except returning `FT_Err_Unimplemented_Feature' if the
|
|
||||||
* configuration macro FT_CONFIG_OPTION_SUBPIXEL_RENDERING is not
|
|
||||||
* defined in your build of the library, which should correspond to all
|
|
||||||
* default builds of FreeType.
|
|
||||||
*
|
|
||||||
* The filter affects glyph bitmaps rendered through @FT_Render_Glyph,
|
|
||||||
* @FT_Outline_Get_Bitmap, @FT_Load_Glyph, and @FT_Load_Char.
|
|
||||||
*
|
|
||||||
* It does _not_ affect the output of @FT_Outline_Render and
|
|
||||||
* @FT_Outline_Get_Bitmap.
|
|
||||||
*
|
|
||||||
* If this feature is activated, the dimensions of LCD glyph bitmaps are
|
|
||||||
* either larger or taller than the dimensions of the corresponding
|
|
||||||
* outline with regards to the pixel grid. For example, for
|
|
||||||
* @FT_RENDER_MODE_LCD, the filter adds up to 3~pixels to the left, and
|
|
||||||
* up to 3~pixels to the right.
|
|
||||||
*
|
|
||||||
* The bitmap offset values are adjusted correctly, so clients shouldn't
|
|
||||||
* need to modify their layout and glyph positioning code when enabling
|
|
||||||
* the filter.
|
|
||||||
*
|
|
||||||
* @since:
|
|
||||||
* 2.3.0
|
|
||||||
*/
|
|
||||||
FT_EXPORT( FT_Error )
|
|
||||||
FT_Library_SetLcdFilter( FT_Library library,
|
|
||||||
FT_LcdFilter filter );
|
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************************
|
|
||||||
*
|
|
||||||
* @func:
|
|
||||||
* FT_Library_SetLcdFilterWeights
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* Use this function to override the filter weights selected by
|
|
||||||
* @FT_Library_SetLcdFilter. By default, FreeType uses the quintuple
|
|
||||||
* (0x00, 0x55, 0x56, 0x55, 0x00) for FT_LCD_FILTER_LIGHT, and (0x10,
|
|
||||||
* 0x40, 0x70, 0x40, 0x10) for FT_LCD_FILTER_DEFAULT and
|
|
||||||
* FT_LCD_FILTER_LEGACY.
|
|
||||||
*
|
|
||||||
* @input:
|
|
||||||
* library ::
|
|
||||||
* A handle to the target library instance.
|
|
||||||
*
|
|
||||||
* weights ::
|
|
||||||
* A pointer to an array; the function copies the first five bytes and
|
|
||||||
* uses them to specify the filter weights.
|
|
||||||
*
|
|
||||||
* @return:
|
|
||||||
* FreeType error code. 0~means success.
|
|
||||||
*
|
|
||||||
* @note:
|
|
||||||
* Due to *PATENTS* covering subpixel rendering, this function doesn't
|
|
||||||
* do anything except returning `FT_Err_Unimplemented_Feature' if the
|
|
||||||
* configuration macro FT_CONFIG_OPTION_SUBPIXEL_RENDERING is not
|
|
||||||
* defined in your build of the library, which should correspond to all
|
|
||||||
* default builds of FreeType.
|
|
||||||
*
|
|
||||||
* This function must be called after @FT_Library_SetLcdFilter to have
|
|
||||||
* any effect.
|
|
||||||
*
|
|
||||||
* @since:
|
|
||||||
* 2.4.0
|
|
||||||
*/
|
|
||||||
FT_EXPORT( FT_Error )
|
|
||||||
FT_Library_SetLcdFilterWeights( FT_Library library,
|
|
||||||
unsigned char *weights );
|
|
||||||
|
|
||||||
/* */
|
|
||||||
|
|
||||||
|
|
||||||
FT_END_HEADER
|
|
||||||
|
|
||||||
#endif /* __FT_LCD_FILTER_H__ */
|
|
||||||
|
|
||||||
|
|
||||||
/* END */
|
|
@ -1,277 +0,0 @@
|
|||||||
/***************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* ftlist.h */
|
|
||||||
/* */
|
|
||||||
/* Generic list support for FreeType (specification). */
|
|
||||||
/* */
|
|
||||||
/* Copyright 1996-2001, 2003, 2007, 2010 by */
|
|
||||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
|
||||||
/* */
|
|
||||||
/* This file is part of the FreeType project, and may only be used, */
|
|
||||||
/* modified, and distributed under the terms of the FreeType project */
|
|
||||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
|
||||||
/* this file you indicate that you have read the license and */
|
|
||||||
/* understand and accept it fully. */
|
|
||||||
/* */
|
|
||||||
/***************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* This file implements functions relative to list processing. Its */
|
|
||||||
/* data structures are defined in `freetype.h'. */
|
|
||||||
/* */
|
|
||||||
/*************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef __FTLIST_H__
|
|
||||||
#define __FTLIST_H__
|
|
||||||
|
|
||||||
|
|
||||||
#include <ft2build.h>
|
|
||||||
#include FT_FREETYPE_H
|
|
||||||
|
|
||||||
#ifdef FREETYPE_H
|
|
||||||
#error "freetype.h of FreeType 1 has been loaded!"
|
|
||||||
#error "Please fix the directory search order for header files"
|
|
||||||
#error "so that freetype.h of FreeType 2 is found first."
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
FT_BEGIN_HEADER
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Section> */
|
|
||||||
/* list_processing */
|
|
||||||
/* */
|
|
||||||
/* <Title> */
|
|
||||||
/* List Processing */
|
|
||||||
/* */
|
|
||||||
/* <Abstract> */
|
|
||||||
/* Simple management of lists. */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* This section contains various definitions related to list */
|
|
||||||
/* processing using doubly-linked nodes. */
|
|
||||||
/* */
|
|
||||||
/* <Order> */
|
|
||||||
/* FT_List */
|
|
||||||
/* FT_ListNode */
|
|
||||||
/* FT_ListRec */
|
|
||||||
/* FT_ListNodeRec */
|
|
||||||
/* */
|
|
||||||
/* FT_List_Add */
|
|
||||||
/* FT_List_Insert */
|
|
||||||
/* FT_List_Find */
|
|
||||||
/* FT_List_Remove */
|
|
||||||
/* FT_List_Up */
|
|
||||||
/* FT_List_Iterate */
|
|
||||||
/* FT_List_Iterator */
|
|
||||||
/* FT_List_Finalize */
|
|
||||||
/* FT_List_Destructor */
|
|
||||||
/* */
|
|
||||||
/*************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Function> */
|
|
||||||
/* FT_List_Find */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* Find the list node for a given listed object. */
|
|
||||||
/* */
|
|
||||||
/* <Input> */
|
|
||||||
/* list :: A pointer to the parent list. */
|
|
||||||
/* data :: The address of the listed object. */
|
|
||||||
/* */
|
|
||||||
/* <Return> */
|
|
||||||
/* List node. NULL if it wasn't found. */
|
|
||||||
/* */
|
|
||||||
FT_EXPORT( FT_ListNode )
|
|
||||||
FT_List_Find( FT_List list,
|
|
||||||
void* data );
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Function> */
|
|
||||||
/* FT_List_Add */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* Append an element to the end of a list. */
|
|
||||||
/* */
|
|
||||||
/* <InOut> */
|
|
||||||
/* list :: A pointer to the parent list. */
|
|
||||||
/* node :: The node to append. */
|
|
||||||
/* */
|
|
||||||
FT_EXPORT( void )
|
|
||||||
FT_List_Add( FT_List list,
|
|
||||||
FT_ListNode node );
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Function> */
|
|
||||||
/* FT_List_Insert */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* Insert an element at the head of a list. */
|
|
||||||
/* */
|
|
||||||
/* <InOut> */
|
|
||||||
/* list :: A pointer to parent list. */
|
|
||||||
/* node :: The node to insert. */
|
|
||||||
/* */
|
|
||||||
FT_EXPORT( void )
|
|
||||||
FT_List_Insert( FT_List list,
|
|
||||||
FT_ListNode node );
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Function> */
|
|
||||||
/* FT_List_Remove */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* Remove a node from a list. This function doesn't check whether */
|
|
||||||
/* the node is in the list! */
|
|
||||||
/* */
|
|
||||||
/* <Input> */
|
|
||||||
/* node :: The node to remove. */
|
|
||||||
/* */
|
|
||||||
/* <InOut> */
|
|
||||||
/* list :: A pointer to the parent list. */
|
|
||||||
/* */
|
|
||||||
FT_EXPORT( void )
|
|
||||||
FT_List_Remove( FT_List list,
|
|
||||||
FT_ListNode node );
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Function> */
|
|
||||||
/* FT_List_Up */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* Move a node to the head/top of a list. Used to maintain LRU */
|
|
||||||
/* lists. */
|
|
||||||
/* */
|
|
||||||
/* <InOut> */
|
|
||||||
/* list :: A pointer to the parent list. */
|
|
||||||
/* node :: The node to move. */
|
|
||||||
/* */
|
|
||||||
FT_EXPORT( void )
|
|
||||||
FT_List_Up( FT_List list,
|
|
||||||
FT_ListNode node );
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <FuncType> */
|
|
||||||
/* FT_List_Iterator */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* An FT_List iterator function which is called during a list parse */
|
|
||||||
/* by @FT_List_Iterate. */
|
|
||||||
/* */
|
|
||||||
/* <Input> */
|
|
||||||
/* node :: The current iteration list node. */
|
|
||||||
/* */
|
|
||||||
/* user :: A typeless pointer passed to @FT_List_Iterate. */
|
|
||||||
/* Can be used to point to the iteration's state. */
|
|
||||||
/* */
|
|
||||||
typedef FT_Error
|
|
||||||
(*FT_List_Iterator)( FT_ListNode node,
|
|
||||||
void* user );
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Function> */
|
|
||||||
/* FT_List_Iterate */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* Parse a list and calls a given iterator function on each element. */
|
|
||||||
/* Note that parsing is stopped as soon as one of the iterator calls */
|
|
||||||
/* returns a non-zero value. */
|
|
||||||
/* */
|
|
||||||
/* <Input> */
|
|
||||||
/* list :: A handle to the list. */
|
|
||||||
/* iterator :: An iterator function, called on each node of the list. */
|
|
||||||
/* user :: A user-supplied field which is passed as the second */
|
|
||||||
/* argument to the iterator. */
|
|
||||||
/* */
|
|
||||||
/* <Return> */
|
|
||||||
/* The result (a FreeType error code) of the last iterator call. */
|
|
||||||
/* */
|
|
||||||
FT_EXPORT( FT_Error )
|
|
||||||
FT_List_Iterate( FT_List list,
|
|
||||||
FT_List_Iterator iterator,
|
|
||||||
void* user );
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <FuncType> */
|
|
||||||
/* FT_List_Destructor */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* An @FT_List iterator function which is called during a list */
|
|
||||||
/* finalization by @FT_List_Finalize to destroy all elements in a */
|
|
||||||
/* given list. */
|
|
||||||
/* */
|
|
||||||
/* <Input> */
|
|
||||||
/* system :: The current system object. */
|
|
||||||
/* */
|
|
||||||
/* data :: The current object to destroy. */
|
|
||||||
/* */
|
|
||||||
/* user :: A typeless pointer passed to @FT_List_Iterate. It can */
|
|
||||||
/* be used to point to the iteration's state. */
|
|
||||||
/* */
|
|
||||||
typedef void
|
|
||||||
(*FT_List_Destructor)( FT_Memory memory,
|
|
||||||
void* data,
|
|
||||||
void* user );
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Function> */
|
|
||||||
/* FT_List_Finalize */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* Destroy all elements in the list as well as the list itself. */
|
|
||||||
/* */
|
|
||||||
/* <Input> */
|
|
||||||
/* list :: A handle to the list. */
|
|
||||||
/* */
|
|
||||||
/* destroy :: A list destructor that will be applied to each element */
|
|
||||||
/* of the list. */
|
|
||||||
/* */
|
|
||||||
/* memory :: The current memory object which handles deallocation. */
|
|
||||||
/* */
|
|
||||||
/* user :: A user-supplied field which is passed as the last */
|
|
||||||
/* argument to the destructor. */
|
|
||||||
/* */
|
|
||||||
/* <Note> */
|
|
||||||
/* This function expects that all nodes added by @FT_List_Add or */
|
|
||||||
/* @FT_List_Insert have been dynamically allocated. */
|
|
||||||
/* */
|
|
||||||
FT_EXPORT( void )
|
|
||||||
FT_List_Finalize( FT_List list,
|
|
||||||
FT_List_Destructor destroy,
|
|
||||||
FT_Memory memory,
|
|
||||||
void* user );
|
|
||||||
|
|
||||||
|
|
||||||
/* */
|
|
||||||
|
|
||||||
|
|
||||||
FT_END_HEADER
|
|
||||||
|
|
||||||
#endif /* __FTLIST_H__ */
|
|
||||||
|
|
||||||
|
|
||||||
/* END */
|
|
@ -1,99 +0,0 @@
|
|||||||
/***************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* ftlzw.h */
|
|
||||||
/* */
|
|
||||||
/* LZW-compressed stream support. */
|
|
||||||
/* */
|
|
||||||
/* Copyright 2004, 2006 by */
|
|
||||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
|
||||||
/* */
|
|
||||||
/* This file is part of the FreeType project, and may only be used, */
|
|
||||||
/* modified, and distributed under the terms of the FreeType project */
|
|
||||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
|
||||||
/* this file you indicate that you have read the license and */
|
|
||||||
/* understand and accept it fully. */
|
|
||||||
/* */
|
|
||||||
/***************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef __FTLZW_H__
|
|
||||||
#define __FTLZW_H__
|
|
||||||
|
|
||||||
#include <ft2build.h>
|
|
||||||
#include FT_FREETYPE_H
|
|
||||||
|
|
||||||
#ifdef FREETYPE_H
|
|
||||||
#error "freetype.h of FreeType 1 has been loaded!"
|
|
||||||
#error "Please fix the directory search order for header files"
|
|
||||||
#error "so that freetype.h of FreeType 2 is found first."
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
FT_BEGIN_HEADER
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Section> */
|
|
||||||
/* lzw */
|
|
||||||
/* */
|
|
||||||
/* <Title> */
|
|
||||||
/* LZW Streams */
|
|
||||||
/* */
|
|
||||||
/* <Abstract> */
|
|
||||||
/* Using LZW-compressed font files. */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* This section contains the declaration of LZW-specific functions. */
|
|
||||||
/* */
|
|
||||||
/*************************************************************************/
|
|
||||||
|
|
||||||
/************************************************************************
|
|
||||||
*
|
|
||||||
* @function:
|
|
||||||
* FT_Stream_OpenLZW
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* Open a new stream to parse LZW-compressed font files. This is
|
|
||||||
* mainly used to support the compressed `*.pcf.Z' fonts that come
|
|
||||||
* with XFree86.
|
|
||||||
*
|
|
||||||
* @input:
|
|
||||||
* stream :: The target embedding stream.
|
|
||||||
*
|
|
||||||
* source :: The source stream.
|
|
||||||
*
|
|
||||||
* @return:
|
|
||||||
* FreeType error code. 0~means success.
|
|
||||||
*
|
|
||||||
* @note:
|
|
||||||
* The source stream must be opened _before_ calling this function.
|
|
||||||
*
|
|
||||||
* Calling the internal function `FT_Stream_Close' on the new stream will
|
|
||||||
* *not* call `FT_Stream_Close' on the source stream. None of the stream
|
|
||||||
* objects will be released to the heap.
|
|
||||||
*
|
|
||||||
* The stream implementation is very basic and resets the decompression
|
|
||||||
* process each time seeking backwards is needed within the stream
|
|
||||||
*
|
|
||||||
* In certain builds of the library, LZW compression recognition is
|
|
||||||
* automatically handled when calling @FT_New_Face or @FT_Open_Face.
|
|
||||||
* This means that if no font driver is capable of handling the raw
|
|
||||||
* compressed file, the library will try to open a LZW stream from it
|
|
||||||
* and re-open the face with it.
|
|
||||||
*
|
|
||||||
* This function may return `FT_Err_Unimplemented_Feature' if your build
|
|
||||||
* of FreeType was not compiled with LZW support.
|
|
||||||
*/
|
|
||||||
FT_EXPORT( FT_Error )
|
|
||||||
FT_Stream_OpenLZW( FT_Stream stream,
|
|
||||||
FT_Stream source );
|
|
||||||
|
|
||||||
/* */
|
|
||||||
|
|
||||||
|
|
||||||
FT_END_HEADER
|
|
||||||
|
|
||||||
#endif /* __FTLZW_H__ */
|
|
||||||
|
|
||||||
|
|
||||||
/* END */
|
|
@ -1,274 +0,0 @@
|
|||||||
/***************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* ftmac.h */
|
|
||||||
/* */
|
|
||||||
/* Additional Mac-specific API. */
|
|
||||||
/* */
|
|
||||||
/* Copyright 1996-2001, 2004, 2006, 2007 by */
|
|
||||||
/* Just van Rossum, David Turner, Robert Wilhelm, and Werner Lemberg. */
|
|
||||||
/* */
|
|
||||||
/* This file is part of the FreeType project, and may only be used, */
|
|
||||||
/* modified, and distributed under the terms of the FreeType project */
|
|
||||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
|
||||||
/* this file you indicate that you have read the license and */
|
|
||||||
/* understand and accept it fully. */
|
|
||||||
/* */
|
|
||||||
/***************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
/***************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* NOTE: Include this file after <freetype/freetype.h> and after any */
|
|
||||||
/* Mac-specific headers (because this header uses Mac types such as */
|
|
||||||
/* Handle, FSSpec, FSRef, etc.) */
|
|
||||||
/* */
|
|
||||||
/***************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef __FTMAC_H__
|
|
||||||
#define __FTMAC_H__
|
|
||||||
|
|
||||||
|
|
||||||
#include <ft2build.h>
|
|
||||||
|
|
||||||
|
|
||||||
FT_BEGIN_HEADER
|
|
||||||
|
|
||||||
|
|
||||||
/* gcc-3.4.1 and later can warn about functions tagged as deprecated */
|
|
||||||
#ifndef FT_DEPRECATED_ATTRIBUTE
|
|
||||||
#if defined(__GNUC__) && \
|
|
||||||
((__GNUC__ >= 4) || ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 1)))
|
|
||||||
#define FT_DEPRECATED_ATTRIBUTE __attribute__((deprecated))
|
|
||||||
#else
|
|
||||||
#define FT_DEPRECATED_ATTRIBUTE
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Section> */
|
|
||||||
/* mac_specific */
|
|
||||||
/* */
|
|
||||||
/* <Title> */
|
|
||||||
/* Mac Specific Interface */
|
|
||||||
/* */
|
|
||||||
/* <Abstract> */
|
|
||||||
/* Only available on the Macintosh. */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* The following definitions are only available if FreeType is */
|
|
||||||
/* compiled on a Macintosh. */
|
|
||||||
/* */
|
|
||||||
/*************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Function> */
|
|
||||||
/* FT_New_Face_From_FOND */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* Create a new face object from a FOND resource. */
|
|
||||||
/* */
|
|
||||||
/* <InOut> */
|
|
||||||
/* library :: A handle to the library resource. */
|
|
||||||
/* */
|
|
||||||
/* <Input> */
|
|
||||||
/* fond :: A FOND resource. */
|
|
||||||
/* */
|
|
||||||
/* face_index :: Only supported for the -1 `sanity check' special */
|
|
||||||
/* case. */
|
|
||||||
/* */
|
|
||||||
/* <Output> */
|
|
||||||
/* aface :: A handle to a new face object. */
|
|
||||||
/* */
|
|
||||||
/* <Return> */
|
|
||||||
/* FreeType error code. 0~means success. */
|
|
||||||
/* */
|
|
||||||
/* <Notes> */
|
|
||||||
/* This function can be used to create @FT_Face objects from fonts */
|
|
||||||
/* that are installed in the system as follows. */
|
|
||||||
/* */
|
|
||||||
/* { */
|
|
||||||
/* fond = GetResource( 'FOND', fontName ); */
|
|
||||||
/* error = FT_New_Face_From_FOND( library, fond, 0, &face ); */
|
|
||||||
/* } */
|
|
||||||
/* */
|
|
||||||
FT_EXPORT( FT_Error )
|
|
||||||
FT_New_Face_From_FOND( FT_Library library,
|
|
||||||
Handle fond,
|
|
||||||
FT_Long face_index,
|
|
||||||
FT_Face *aface )
|
|
||||||
FT_DEPRECATED_ATTRIBUTE;
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Function> */
|
|
||||||
/* FT_GetFile_From_Mac_Name */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* Return an FSSpec for the disk file containing the named font. */
|
|
||||||
/* */
|
|
||||||
/* <Input> */
|
|
||||||
/* fontName :: Mac OS name of the font (e.g., Times New Roman */
|
|
||||||
/* Bold). */
|
|
||||||
/* */
|
|
||||||
/* <Output> */
|
|
||||||
/* pathSpec :: FSSpec to the file. For passing to */
|
|
||||||
/* @FT_New_Face_From_FSSpec. */
|
|
||||||
/* */
|
|
||||||
/* face_index :: Index of the face. For passing to */
|
|
||||||
/* @FT_New_Face_From_FSSpec. */
|
|
||||||
/* */
|
|
||||||
/* <Return> */
|
|
||||||
/* FreeType error code. 0~means success. */
|
|
||||||
/* */
|
|
||||||
FT_EXPORT( FT_Error )
|
|
||||||
FT_GetFile_From_Mac_Name( const char* fontName,
|
|
||||||
FSSpec* pathSpec,
|
|
||||||
FT_Long* face_index )
|
|
||||||
FT_DEPRECATED_ATTRIBUTE;
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Function> */
|
|
||||||
/* FT_GetFile_From_Mac_ATS_Name */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* Return an FSSpec for the disk file containing the named font. */
|
|
||||||
/* */
|
|
||||||
/* <Input> */
|
|
||||||
/* fontName :: Mac OS name of the font in ATS framework. */
|
|
||||||
/* */
|
|
||||||
/* <Output> */
|
|
||||||
/* pathSpec :: FSSpec to the file. For passing to */
|
|
||||||
/* @FT_New_Face_From_FSSpec. */
|
|
||||||
/* */
|
|
||||||
/* face_index :: Index of the face. For passing to */
|
|
||||||
/* @FT_New_Face_From_FSSpec. */
|
|
||||||
/* */
|
|
||||||
/* <Return> */
|
|
||||||
/* FreeType error code. 0~means success. */
|
|
||||||
/* */
|
|
||||||
FT_EXPORT( FT_Error )
|
|
||||||
FT_GetFile_From_Mac_ATS_Name( const char* fontName,
|
|
||||||
FSSpec* pathSpec,
|
|
||||||
FT_Long* face_index )
|
|
||||||
FT_DEPRECATED_ATTRIBUTE;
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Function> */
|
|
||||||
/* FT_GetFilePath_From_Mac_ATS_Name */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* Return a pathname of the disk file and face index for given font */
|
|
||||||
/* name which is handled by ATS framework. */
|
|
||||||
/* */
|
|
||||||
/* <Input> */
|
|
||||||
/* fontName :: Mac OS name of the font in ATS framework. */
|
|
||||||
/* */
|
|
||||||
/* <Output> */
|
|
||||||
/* path :: Buffer to store pathname of the file. For passing */
|
|
||||||
/* to @FT_New_Face. The client must allocate this */
|
|
||||||
/* buffer before calling this function. */
|
|
||||||
/* */
|
|
||||||
/* maxPathSize :: Lengths of the buffer `path' that client allocated. */
|
|
||||||
/* */
|
|
||||||
/* face_index :: Index of the face. For passing to @FT_New_Face. */
|
|
||||||
/* */
|
|
||||||
/* <Return> */
|
|
||||||
/* FreeType error code. 0~means success. */
|
|
||||||
/* */
|
|
||||||
FT_EXPORT( FT_Error )
|
|
||||||
FT_GetFilePath_From_Mac_ATS_Name( const char* fontName,
|
|
||||||
UInt8* path,
|
|
||||||
UInt32 maxPathSize,
|
|
||||||
FT_Long* face_index )
|
|
||||||
FT_DEPRECATED_ATTRIBUTE;
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Function> */
|
|
||||||
/* FT_New_Face_From_FSSpec */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* Create a new face object from a given resource and typeface index */
|
|
||||||
/* using an FSSpec to the font file. */
|
|
||||||
/* */
|
|
||||||
/* <InOut> */
|
|
||||||
/* library :: A handle to the library resource. */
|
|
||||||
/* */
|
|
||||||
/* <Input> */
|
|
||||||
/* spec :: FSSpec to the font file. */
|
|
||||||
/* */
|
|
||||||
/* face_index :: The index of the face within the resource. The */
|
|
||||||
/* first face has index~0. */
|
|
||||||
/* <Output> */
|
|
||||||
/* aface :: A handle to a new face object. */
|
|
||||||
/* */
|
|
||||||
/* <Return> */
|
|
||||||
/* FreeType error code. 0~means success. */
|
|
||||||
/* */
|
|
||||||
/* <Note> */
|
|
||||||
/* @FT_New_Face_From_FSSpec is identical to @FT_New_Face except */
|
|
||||||
/* it accepts an FSSpec instead of a path. */
|
|
||||||
/* */
|
|
||||||
FT_EXPORT( FT_Error )
|
|
||||||
FT_New_Face_From_FSSpec( FT_Library library,
|
|
||||||
const FSSpec *spec,
|
|
||||||
FT_Long face_index,
|
|
||||||
FT_Face *aface )
|
|
||||||
FT_DEPRECATED_ATTRIBUTE;
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Function> */
|
|
||||||
/* FT_New_Face_From_FSRef */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* Create a new face object from a given resource and typeface index */
|
|
||||||
/* using an FSRef to the font file. */
|
|
||||||
/* */
|
|
||||||
/* <InOut> */
|
|
||||||
/* library :: A handle to the library resource. */
|
|
||||||
/* */
|
|
||||||
/* <Input> */
|
|
||||||
/* spec :: FSRef to the font file. */
|
|
||||||
/* */
|
|
||||||
/* face_index :: The index of the face within the resource. The */
|
|
||||||
/* first face has index~0. */
|
|
||||||
/* <Output> */
|
|
||||||
/* aface :: A handle to a new face object. */
|
|
||||||
/* */
|
|
||||||
/* <Return> */
|
|
||||||
/* FreeType error code. 0~means success. */
|
|
||||||
/* */
|
|
||||||
/* <Note> */
|
|
||||||
/* @FT_New_Face_From_FSRef is identical to @FT_New_Face except */
|
|
||||||
/* it accepts an FSRef instead of a path. */
|
|
||||||
/* */
|
|
||||||
FT_EXPORT( FT_Error )
|
|
||||||
FT_New_Face_From_FSRef( FT_Library library,
|
|
||||||
const FSRef *ref,
|
|
||||||
FT_Long face_index,
|
|
||||||
FT_Face *aface )
|
|
||||||
FT_DEPRECATED_ATTRIBUTE;
|
|
||||||
|
|
||||||
/* */
|
|
||||||
|
|
||||||
|
|
||||||
FT_END_HEADER
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* __FTMAC_H__ */
|
|
||||||
|
|
||||||
|
|
||||||
/* END */
|
|
@ -1,378 +0,0 @@
|
|||||||
/***************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* ftmm.h */
|
|
||||||
/* */
|
|
||||||
/* FreeType Multiple Master font interface (specification). */
|
|
||||||
/* */
|
|
||||||
/* Copyright 1996-2001, 2003, 2004, 2006, 2009 by */
|
|
||||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
|
||||||
/* */
|
|
||||||
/* This file is part of the FreeType project, and may only be used, */
|
|
||||||
/* modified, and distributed under the terms of the FreeType project */
|
|
||||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
|
||||||
/* this file you indicate that you have read the license and */
|
|
||||||
/* understand and accept it fully. */
|
|
||||||
/* */
|
|
||||||
/***************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef __FTMM_H__
|
|
||||||
#define __FTMM_H__
|
|
||||||
|
|
||||||
|
|
||||||
#include <ft2build.h>
|
|
||||||
#include FT_TYPE1_TABLES_H
|
|
||||||
|
|
||||||
|
|
||||||
FT_BEGIN_HEADER
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Section> */
|
|
||||||
/* multiple_masters */
|
|
||||||
/* */
|
|
||||||
/* <Title> */
|
|
||||||
/* Multiple Masters */
|
|
||||||
/* */
|
|
||||||
/* <Abstract> */
|
|
||||||
/* How to manage Multiple Masters fonts. */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* The following types and functions are used to manage Multiple */
|
|
||||||
/* Master fonts, i.e., the selection of specific design instances by */
|
|
||||||
/* setting design axis coordinates. */
|
|
||||||
/* */
|
|
||||||
/* George Williams has extended this interface to make it work with */
|
|
||||||
/* both Type~1 Multiple Masters fonts and GX distortable (var) */
|
|
||||||
/* fonts. Some of these routines only work with MM fonts, others */
|
|
||||||
/* will work with both types. They are similar enough that a */
|
|
||||||
/* consistent interface makes sense. */
|
|
||||||
/* */
|
|
||||||
/*************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Struct> */
|
|
||||||
/* FT_MM_Axis */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* A simple structure used to model a given axis in design space for */
|
|
||||||
/* Multiple Masters fonts. */
|
|
||||||
/* */
|
|
||||||
/* This structure can't be used for GX var fonts. */
|
|
||||||
/* */
|
|
||||||
/* <Fields> */
|
|
||||||
/* name :: The axis's name. */
|
|
||||||
/* */
|
|
||||||
/* minimum :: The axis's minimum design coordinate. */
|
|
||||||
/* */
|
|
||||||
/* maximum :: The axis's maximum design coordinate. */
|
|
||||||
/* */
|
|
||||||
typedef struct FT_MM_Axis_
|
|
||||||
{
|
|
||||||
FT_String* name;
|
|
||||||
FT_Long minimum;
|
|
||||||
FT_Long maximum;
|
|
||||||
|
|
||||||
} FT_MM_Axis;
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Struct> */
|
|
||||||
/* FT_Multi_Master */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* A structure used to model the axes and space of a Multiple Masters */
|
|
||||||
/* font. */
|
|
||||||
/* */
|
|
||||||
/* This structure can't be used for GX var fonts. */
|
|
||||||
/* */
|
|
||||||
/* <Fields> */
|
|
||||||
/* num_axis :: Number of axes. Cannot exceed~4. */
|
|
||||||
/* */
|
|
||||||
/* num_designs :: Number of designs; should be normally 2^num_axis */
|
|
||||||
/* even though the Type~1 specification strangely */
|
|
||||||
/* allows for intermediate designs to be present. This */
|
|
||||||
/* number cannot exceed~16. */
|
|
||||||
/* */
|
|
||||||
/* axis :: A table of axis descriptors. */
|
|
||||||
/* */
|
|
||||||
typedef struct FT_Multi_Master_
|
|
||||||
{
|
|
||||||
FT_UInt num_axis;
|
|
||||||
FT_UInt num_designs;
|
|
||||||
FT_MM_Axis axis[T1_MAX_MM_AXIS];
|
|
||||||
|
|
||||||
} FT_Multi_Master;
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Struct> */
|
|
||||||
/* FT_Var_Axis */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* A simple structure used to model a given axis in design space for */
|
|
||||||
/* Multiple Masters and GX var fonts. */
|
|
||||||
/* */
|
|
||||||
/* <Fields> */
|
|
||||||
/* name :: The axis's name. */
|
|
||||||
/* Not always meaningful for GX. */
|
|
||||||
/* */
|
|
||||||
/* minimum :: The axis's minimum design coordinate. */
|
|
||||||
/* */
|
|
||||||
/* def :: The axis's default design coordinate. */
|
|
||||||
/* FreeType computes meaningful default values for MM; it */
|
|
||||||
/* is then an integer value, not in 16.16 format. */
|
|
||||||
/* */
|
|
||||||
/* maximum :: The axis's maximum design coordinate. */
|
|
||||||
/* */
|
|
||||||
/* tag :: The axis's tag (the GX equivalent to `name'). */
|
|
||||||
/* FreeType provides default values for MM if possible. */
|
|
||||||
/* */
|
|
||||||
/* strid :: The entry in `name' table (another GX version of */
|
|
||||||
/* `name'). */
|
|
||||||
/* Not meaningful for MM. */
|
|
||||||
/* */
|
|
||||||
typedef struct FT_Var_Axis_
|
|
||||||
{
|
|
||||||
FT_String* name;
|
|
||||||
|
|
||||||
FT_Fixed minimum;
|
|
||||||
FT_Fixed def;
|
|
||||||
FT_Fixed maximum;
|
|
||||||
|
|
||||||
FT_ULong tag;
|
|
||||||
FT_UInt strid;
|
|
||||||
|
|
||||||
} FT_Var_Axis;
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Struct> */
|
|
||||||
/* FT_Var_Named_Style */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* A simple structure used to model a named style in a GX var font. */
|
|
||||||
/* */
|
|
||||||
/* This structure can't be used for MM fonts. */
|
|
||||||
/* */
|
|
||||||
/* <Fields> */
|
|
||||||
/* coords :: The design coordinates for this style. */
|
|
||||||
/* This is an array with one entry for each axis. */
|
|
||||||
/* */
|
|
||||||
/* strid :: The entry in `name' table identifying this style. */
|
|
||||||
/* */
|
|
||||||
typedef struct FT_Var_Named_Style_
|
|
||||||
{
|
|
||||||
FT_Fixed* coords;
|
|
||||||
FT_UInt strid;
|
|
||||||
|
|
||||||
} FT_Var_Named_Style;
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Struct> */
|
|
||||||
/* FT_MM_Var */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* A structure used to model the axes and space of a Multiple Masters */
|
|
||||||
/* or GX var distortable font. */
|
|
||||||
/* */
|
|
||||||
/* Some fields are specific to one format and not to the other. */
|
|
||||||
/* */
|
|
||||||
/* <Fields> */
|
|
||||||
/* num_axis :: The number of axes. The maximum value is~4 for */
|
|
||||||
/* MM; no limit in GX. */
|
|
||||||
/* */
|
|
||||||
/* num_designs :: The number of designs; should be normally */
|
|
||||||
/* 2^num_axis for MM fonts. Not meaningful for GX */
|
|
||||||
/* (where every glyph could have a different */
|
|
||||||
/* number of designs). */
|
|
||||||
/* */
|
|
||||||
/* num_namedstyles :: The number of named styles; only meaningful for */
|
|
||||||
/* GX which allows certain design coordinates to */
|
|
||||||
/* have a string ID (in the `name' table) */
|
|
||||||
/* associated with them. The font can tell the */
|
|
||||||
/* user that, for example, Weight=1.5 is `Bold'. */
|
|
||||||
/* */
|
|
||||||
/* axis :: A table of axis descriptors. */
|
|
||||||
/* GX fonts contain slightly more data than MM. */
|
|
||||||
/* */
|
|
||||||
/* namedstyles :: A table of named styles. */
|
|
||||||
/* Only meaningful with GX. */
|
|
||||||
/* */
|
|
||||||
typedef struct FT_MM_Var_
|
|
||||||
{
|
|
||||||
FT_UInt num_axis;
|
|
||||||
FT_UInt num_designs;
|
|
||||||
FT_UInt num_namedstyles;
|
|
||||||
FT_Var_Axis* axis;
|
|
||||||
FT_Var_Named_Style* namedstyle;
|
|
||||||
|
|
||||||
} FT_MM_Var;
|
|
||||||
|
|
||||||
|
|
||||||
/* */
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Function> */
|
|
||||||
/* FT_Get_Multi_Master */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* Retrieve the Multiple Master descriptor of a given font. */
|
|
||||||
/* */
|
|
||||||
/* This function can't be used with GX fonts. */
|
|
||||||
/* */
|
|
||||||
/* <Input> */
|
|
||||||
/* face :: A handle to the source face. */
|
|
||||||
/* */
|
|
||||||
/* <Output> */
|
|
||||||
/* amaster :: The Multiple Masters descriptor. */
|
|
||||||
/* */
|
|
||||||
/* <Return> */
|
|
||||||
/* FreeType error code. 0~means success. */
|
|
||||||
/* */
|
|
||||||
FT_EXPORT( FT_Error )
|
|
||||||
FT_Get_Multi_Master( FT_Face face,
|
|
||||||
FT_Multi_Master *amaster );
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Function> */
|
|
||||||
/* FT_Get_MM_Var */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* Retrieve the Multiple Master/GX var descriptor of a given font. */
|
|
||||||
/* */
|
|
||||||
/* <Input> */
|
|
||||||
/* face :: A handle to the source face. */
|
|
||||||
/* */
|
|
||||||
/* <Output> */
|
|
||||||
/* amaster :: The Multiple Masters/GX var descriptor. */
|
|
||||||
/* Allocates a data structure, which the user must free */
|
|
||||||
/* (a single call to FT_FREE will do it). */
|
|
||||||
/* */
|
|
||||||
/* <Return> */
|
|
||||||
/* FreeType error code. 0~means success. */
|
|
||||||
/* */
|
|
||||||
FT_EXPORT( FT_Error )
|
|
||||||
FT_Get_MM_Var( FT_Face face,
|
|
||||||
FT_MM_Var* *amaster );
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Function> */
|
|
||||||
/* FT_Set_MM_Design_Coordinates */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* For Multiple Masters fonts, choose an interpolated font design */
|
|
||||||
/* through design coordinates. */
|
|
||||||
/* */
|
|
||||||
/* This function can't be used with GX fonts. */
|
|
||||||
/* */
|
|
||||||
/* <InOut> */
|
|
||||||
/* face :: A handle to the source face. */
|
|
||||||
/* */
|
|
||||||
/* <Input> */
|
|
||||||
/* num_coords :: The number of design coordinates (must be equal to */
|
|
||||||
/* the number of axes in the font). */
|
|
||||||
/* */
|
|
||||||
/* coords :: An array of design coordinates. */
|
|
||||||
/* */
|
|
||||||
/* <Return> */
|
|
||||||
/* FreeType error code. 0~means success. */
|
|
||||||
/* */
|
|
||||||
FT_EXPORT( FT_Error )
|
|
||||||
FT_Set_MM_Design_Coordinates( FT_Face face,
|
|
||||||
FT_UInt num_coords,
|
|
||||||
FT_Long* coords );
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Function> */
|
|
||||||
/* FT_Set_Var_Design_Coordinates */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* For Multiple Master or GX Var fonts, choose an interpolated font */
|
|
||||||
/* design through design coordinates. */
|
|
||||||
/* */
|
|
||||||
/* <InOut> */
|
|
||||||
/* face :: A handle to the source face. */
|
|
||||||
/* */
|
|
||||||
/* <Input> */
|
|
||||||
/* num_coords :: The number of design coordinates (must be equal to */
|
|
||||||
/* the number of axes in the font). */
|
|
||||||
/* */
|
|
||||||
/* coords :: An array of design coordinates. */
|
|
||||||
/* */
|
|
||||||
/* <Return> */
|
|
||||||
/* FreeType error code. 0~means success. */
|
|
||||||
/* */
|
|
||||||
FT_EXPORT( FT_Error )
|
|
||||||
FT_Set_Var_Design_Coordinates( FT_Face face,
|
|
||||||
FT_UInt num_coords,
|
|
||||||
FT_Fixed* coords );
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Function> */
|
|
||||||
/* FT_Set_MM_Blend_Coordinates */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* For Multiple Masters and GX var fonts, choose an interpolated font */
|
|
||||||
/* design through normalized blend coordinates. */
|
|
||||||
/* */
|
|
||||||
/* <InOut> */
|
|
||||||
/* face :: A handle to the source face. */
|
|
||||||
/* */
|
|
||||||
/* <Input> */
|
|
||||||
/* num_coords :: The number of design coordinates (must be equal to */
|
|
||||||
/* the number of axes in the font). */
|
|
||||||
/* */
|
|
||||||
/* coords :: The design coordinates array (each element must be */
|
|
||||||
/* between 0 and 1.0). */
|
|
||||||
/* */
|
|
||||||
/* <Return> */
|
|
||||||
/* FreeType error code. 0~means success. */
|
|
||||||
/* */
|
|
||||||
FT_EXPORT( FT_Error )
|
|
||||||
FT_Set_MM_Blend_Coordinates( FT_Face face,
|
|
||||||
FT_UInt num_coords,
|
|
||||||
FT_Fixed* coords );
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Function> */
|
|
||||||
/* FT_Set_Var_Blend_Coordinates */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* This is another name of @FT_Set_MM_Blend_Coordinates. */
|
|
||||||
/* */
|
|
||||||
FT_EXPORT( FT_Error )
|
|
||||||
FT_Set_Var_Blend_Coordinates( FT_Face face,
|
|
||||||
FT_UInt num_coords,
|
|
||||||
FT_Fixed* coords );
|
|
||||||
|
|
||||||
|
|
||||||
/* */
|
|
||||||
|
|
||||||
|
|
||||||
FT_END_HEADER
|
|
||||||
|
|
||||||
#endif /* __FTMM_H__ */
|
|
||||||
|
|
||||||
|
|
||||||
/* END */
|
|
@ -1,483 +0,0 @@
|
|||||||
/***************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* ftmodapi.h */
|
|
||||||
/* */
|
|
||||||
/* FreeType modules public interface (specification). */
|
|
||||||
/* */
|
|
||||||
/* Copyright 1996-2001, 2002, 2003, 2006, 2008, 2009, 2010 by */
|
|
||||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
|
||||||
/* */
|
|
||||||
/* This file is part of the FreeType project, and may only be used, */
|
|
||||||
/* modified, and distributed under the terms of the FreeType project */
|
|
||||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
|
||||||
/* this file you indicate that you have read the license and */
|
|
||||||
/* understand and accept it fully. */
|
|
||||||
/* */
|
|
||||||
/***************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef __FTMODAPI_H__
|
|
||||||
#define __FTMODAPI_H__
|
|
||||||
|
|
||||||
|
|
||||||
#include <ft2build.h>
|
|
||||||
#include FT_FREETYPE_H
|
|
||||||
|
|
||||||
#ifdef FREETYPE_H
|
|
||||||
#error "freetype.h of FreeType 1 has been loaded!"
|
|
||||||
#error "Please fix the directory search order for header files"
|
|
||||||
#error "so that freetype.h of FreeType 2 is found first."
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
FT_BEGIN_HEADER
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Section> */
|
|
||||||
/* module_management */
|
|
||||||
/* */
|
|
||||||
/* <Title> */
|
|
||||||
/* Module Management */
|
|
||||||
/* */
|
|
||||||
/* <Abstract> */
|
|
||||||
/* How to add, upgrade, and remove modules from FreeType. */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* The definitions below are used to manage modules within FreeType. */
|
|
||||||
/* Modules can be added, upgraded, and removed at runtime. */
|
|
||||||
/* */
|
|
||||||
/*************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
/* module bit flags */
|
|
||||||
#define FT_MODULE_FONT_DRIVER 1 /* this module is a font driver */
|
|
||||||
#define FT_MODULE_RENDERER 2 /* this module is a renderer */
|
|
||||||
#define FT_MODULE_HINTER 4 /* this module is a glyph hinter */
|
|
||||||
#define FT_MODULE_STYLER 8 /* this module is a styler */
|
|
||||||
|
|
||||||
#define FT_MODULE_DRIVER_SCALABLE 0x100 /* the driver supports */
|
|
||||||
/* scalable fonts */
|
|
||||||
#define FT_MODULE_DRIVER_NO_OUTLINES 0x200 /* the driver does not */
|
|
||||||
/* support vector outlines */
|
|
||||||
#define FT_MODULE_DRIVER_HAS_HINTER 0x400 /* the driver provides its */
|
|
||||||
/* own hinter */
|
|
||||||
|
|
||||||
|
|
||||||
/* deprecated values */
|
|
||||||
#define ft_module_font_driver FT_MODULE_FONT_DRIVER
|
|
||||||
#define ft_module_renderer FT_MODULE_RENDERER
|
|
||||||
#define ft_module_hinter FT_MODULE_HINTER
|
|
||||||
#define ft_module_styler FT_MODULE_STYLER
|
|
||||||
|
|
||||||
#define ft_module_driver_scalable FT_MODULE_DRIVER_SCALABLE
|
|
||||||
#define ft_module_driver_no_outlines FT_MODULE_DRIVER_NO_OUTLINES
|
|
||||||
#define ft_module_driver_has_hinter FT_MODULE_DRIVER_HAS_HINTER
|
|
||||||
|
|
||||||
|
|
||||||
typedef FT_Pointer FT_Module_Interface;
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <FuncType> */
|
|
||||||
/* FT_Module_Constructor */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* A function used to initialize (not create) a new module object. */
|
|
||||||
/* */
|
|
||||||
/* <Input> */
|
|
||||||
/* module :: The module to initialize. */
|
|
||||||
/* */
|
|
||||||
typedef FT_Error
|
|
||||||
(*FT_Module_Constructor)( FT_Module module );
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <FuncType> */
|
|
||||||
/* FT_Module_Destructor */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* A function used to finalize (not destroy) a given module object. */
|
|
||||||
/* */
|
|
||||||
/* <Input> */
|
|
||||||
/* module :: The module to finalize. */
|
|
||||||
/* */
|
|
||||||
typedef void
|
|
||||||
(*FT_Module_Destructor)( FT_Module module );
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <FuncType> */
|
|
||||||
/* FT_Module_Requester */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* A function used to query a given module for a specific interface. */
|
|
||||||
/* */
|
|
||||||
/* <Input> */
|
|
||||||
/* module :: The module to finalize. */
|
|
||||||
/* */
|
|
||||||
/* name :: The name of the interface in the module. */
|
|
||||||
/* */
|
|
||||||
typedef FT_Module_Interface
|
|
||||||
(*FT_Module_Requester)( FT_Module module,
|
|
||||||
const char* name );
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Struct> */
|
|
||||||
/* FT_Module_Class */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* The module class descriptor. */
|
|
||||||
/* */
|
|
||||||
/* <Fields> */
|
|
||||||
/* module_flags :: Bit flags describing the module. */
|
|
||||||
/* */
|
|
||||||
/* module_size :: The size of one module object/instance in */
|
|
||||||
/* bytes. */
|
|
||||||
/* */
|
|
||||||
/* module_name :: The name of the module. */
|
|
||||||
/* */
|
|
||||||
/* module_version :: The version, as a 16.16 fixed number */
|
|
||||||
/* (major.minor). */
|
|
||||||
/* */
|
|
||||||
/* module_requires :: The version of FreeType this module requires, */
|
|
||||||
/* as a 16.16 fixed number (major.minor). Starts */
|
|
||||||
/* at version 2.0, i.e., 0x20000. */
|
|
||||||
/* */
|
|
||||||
/* module_init :: The initializing function. */
|
|
||||||
/* */
|
|
||||||
/* module_done :: The finalizing function. */
|
|
||||||
/* */
|
|
||||||
/* get_interface :: The interface requesting function. */
|
|
||||||
/* */
|
|
||||||
typedef struct FT_Module_Class_
|
|
||||||
{
|
|
||||||
FT_ULong module_flags;
|
|
||||||
FT_Long module_size;
|
|
||||||
const FT_String* module_name;
|
|
||||||
FT_Fixed module_version;
|
|
||||||
FT_Fixed module_requires;
|
|
||||||
|
|
||||||
const void* module_interface;
|
|
||||||
|
|
||||||
FT_Module_Constructor module_init;
|
|
||||||
FT_Module_Destructor module_done;
|
|
||||||
FT_Module_Requester get_interface;
|
|
||||||
|
|
||||||
} FT_Module_Class;
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Function> */
|
|
||||||
/* FT_Add_Module */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* Add a new module to a given library instance. */
|
|
||||||
/* */
|
|
||||||
/* <InOut> */
|
|
||||||
/* library :: A handle to the library object. */
|
|
||||||
/* */
|
|
||||||
/* <Input> */
|
|
||||||
/* clazz :: A pointer to class descriptor for the module. */
|
|
||||||
/* */
|
|
||||||
/* <Return> */
|
|
||||||
/* FreeType error code. 0~means success. */
|
|
||||||
/* */
|
|
||||||
/* <Note> */
|
|
||||||
/* An error will be returned if a module already exists by that name, */
|
|
||||||
/* or if the module requires a version of FreeType that is too great. */
|
|
||||||
/* */
|
|
||||||
FT_EXPORT( FT_Error )
|
|
||||||
FT_Add_Module( FT_Library library,
|
|
||||||
const FT_Module_Class* clazz );
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Function> */
|
|
||||||
/* FT_Get_Module */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* Find a module by its name. */
|
|
||||||
/* */
|
|
||||||
/* <Input> */
|
|
||||||
/* library :: A handle to the library object. */
|
|
||||||
/* */
|
|
||||||
/* module_name :: The module's name (as an ASCII string). */
|
|
||||||
/* */
|
|
||||||
/* <Return> */
|
|
||||||
/* A module handle. 0~if none was found. */
|
|
||||||
/* */
|
|
||||||
/* <Note> */
|
|
||||||
/* FreeType's internal modules aren't documented very well, and you */
|
|
||||||
/* should look up the source code for details. */
|
|
||||||
/* */
|
|
||||||
FT_EXPORT( FT_Module )
|
|
||||||
FT_Get_Module( FT_Library library,
|
|
||||||
const char* module_name );
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Function> */
|
|
||||||
/* FT_Remove_Module */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* Remove a given module from a library instance. */
|
|
||||||
/* */
|
|
||||||
/* <InOut> */
|
|
||||||
/* library :: A handle to a library object. */
|
|
||||||
/* */
|
|
||||||
/* <Input> */
|
|
||||||
/* module :: A handle to a module object. */
|
|
||||||
/* */
|
|
||||||
/* <Return> */
|
|
||||||
/* FreeType error code. 0~means success. */
|
|
||||||
/* */
|
|
||||||
/* <Note> */
|
|
||||||
/* The module object is destroyed by the function in case of success. */
|
|
||||||
/* */
|
|
||||||
FT_EXPORT( FT_Error )
|
|
||||||
FT_Remove_Module( FT_Library library,
|
|
||||||
FT_Module module );
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Function> */
|
|
||||||
/* FT_Reference_Library */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* A counter gets initialized to~1 at the time an @FT_Library */
|
|
||||||
/* structure is created. This function increments the counter. */
|
|
||||||
/* @FT_Done_Library then only destroys a library if the counter is~1, */
|
|
||||||
/* otherwise it simply decrements the counter. */
|
|
||||||
/* */
|
|
||||||
/* This function helps in managing life-cycles of structures which */
|
|
||||||
/* reference @FT_Library objects. */
|
|
||||||
/* */
|
|
||||||
/* <Input> */
|
|
||||||
/* library :: A handle to a target library object. */
|
|
||||||
/* */
|
|
||||||
/* <Return> */
|
|
||||||
/* FreeType error code. 0~means success. */
|
|
||||||
/* */
|
|
||||||
/* <Since> */
|
|
||||||
/* 2.4.2 */
|
|
||||||
/* */
|
|
||||||
FT_EXPORT( FT_Error )
|
|
||||||
FT_Reference_Library( FT_Library library );
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Function> */
|
|
||||||
/* FT_New_Library */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* This function is used to create a new FreeType library instance */
|
|
||||||
/* from a given memory object. It is thus possible to use libraries */
|
|
||||||
/* with distinct memory allocators within the same program. */
|
|
||||||
/* */
|
|
||||||
/* Normally, you would call this function (followed by a call to */
|
|
||||||
/* @FT_Add_Default_Modules or a series of calls to @FT_Add_Module) */
|
|
||||||
/* instead of @FT_Init_FreeType to initialize the FreeType library. */
|
|
||||||
/* */
|
|
||||||
/* Don't use @FT_Done_FreeType but @FT_Done_Library to destroy a */
|
|
||||||
/* library instance. */
|
|
||||||
/* */
|
|
||||||
/* <Input> */
|
|
||||||
/* memory :: A handle to the original memory object. */
|
|
||||||
/* */
|
|
||||||
/* <Output> */
|
|
||||||
/* alibrary :: A pointer to handle of a new library object. */
|
|
||||||
/* */
|
|
||||||
/* <Return> */
|
|
||||||
/* FreeType error code. 0~means success. */
|
|
||||||
/* */
|
|
||||||
/* <Note> */
|
|
||||||
/* See the discussion of reference counters in the description of */
|
|
||||||
/* @FT_Reference_Library. */
|
|
||||||
/* */
|
|
||||||
FT_EXPORT( FT_Error )
|
|
||||||
FT_New_Library( FT_Memory memory,
|
|
||||||
FT_Library *alibrary );
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Function> */
|
|
||||||
/* FT_Done_Library */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* Discard a given library object. This closes all drivers and */
|
|
||||||
/* discards all resource objects. */
|
|
||||||
/* */
|
|
||||||
/* <Input> */
|
|
||||||
/* library :: A handle to the target library. */
|
|
||||||
/* */
|
|
||||||
/* <Return> */
|
|
||||||
/* FreeType error code. 0~means success. */
|
|
||||||
/* */
|
|
||||||
/* <Note> */
|
|
||||||
/* See the discussion of reference counters in the description of */
|
|
||||||
/* @FT_Reference_Library. */
|
|
||||||
/* */
|
|
||||||
FT_EXPORT( FT_Error )
|
|
||||||
FT_Done_Library( FT_Library library );
|
|
||||||
|
|
||||||
/* */
|
|
||||||
|
|
||||||
typedef void
|
|
||||||
(*FT_DebugHook_Func)( void* arg );
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Function> */
|
|
||||||
/* FT_Set_Debug_Hook */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* Set a debug hook function for debugging the interpreter of a font */
|
|
||||||
/* format. */
|
|
||||||
/* */
|
|
||||||
/* <InOut> */
|
|
||||||
/* library :: A handle to the library object. */
|
|
||||||
/* */
|
|
||||||
/* <Input> */
|
|
||||||
/* hook_index :: The index of the debug hook. You should use the */
|
|
||||||
/* values defined in `ftobjs.h', e.g., */
|
|
||||||
/* `FT_DEBUG_HOOK_TRUETYPE'. */
|
|
||||||
/* */
|
|
||||||
/* debug_hook :: The function used to debug the interpreter. */
|
|
||||||
/* */
|
|
||||||
/* <Note> */
|
|
||||||
/* Currently, four debug hook slots are available, but only two (for */
|
|
||||||
/* the TrueType and the Type~1 interpreter) are defined. */
|
|
||||||
/* */
|
|
||||||
/* Since the internal headers of FreeType are no longer installed, */
|
|
||||||
/* the symbol `FT_DEBUG_HOOK_TRUETYPE' isn't available publicly. */
|
|
||||||
/* This is a bug and will be fixed in a forthcoming release. */
|
|
||||||
/* */
|
|
||||||
FT_EXPORT( void )
|
|
||||||
FT_Set_Debug_Hook( FT_Library library,
|
|
||||||
FT_UInt hook_index,
|
|
||||||
FT_DebugHook_Func debug_hook );
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Function> */
|
|
||||||
/* FT_Add_Default_Modules */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* Add the set of default drivers to a given library object. */
|
|
||||||
/* This is only useful when you create a library object with */
|
|
||||||
/* @FT_New_Library (usually to plug a custom memory manager). */
|
|
||||||
/* */
|
|
||||||
/* <InOut> */
|
|
||||||
/* library :: A handle to a new library object. */
|
|
||||||
/* */
|
|
||||||
FT_EXPORT( void )
|
|
||||||
FT_Add_Default_Modules( FT_Library library );
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************************
|
|
||||||
*
|
|
||||||
* @section:
|
|
||||||
* truetype_engine
|
|
||||||
*
|
|
||||||
* @title:
|
|
||||||
* The TrueType Engine
|
|
||||||
*
|
|
||||||
* @abstract:
|
|
||||||
* TrueType bytecode support.
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* This section contains a function used to query the level of TrueType
|
|
||||||
* bytecode support compiled in this version of the library.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************************
|
|
||||||
*
|
|
||||||
* @enum:
|
|
||||||
* FT_TrueTypeEngineType
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* A list of values describing which kind of TrueType bytecode
|
|
||||||
* engine is implemented in a given FT_Library instance. It is used
|
|
||||||
* by the @FT_Get_TrueType_Engine_Type function.
|
|
||||||
*
|
|
||||||
* @values:
|
|
||||||
* FT_TRUETYPE_ENGINE_TYPE_NONE ::
|
|
||||||
* The library doesn't implement any kind of bytecode interpreter.
|
|
||||||
*
|
|
||||||
* FT_TRUETYPE_ENGINE_TYPE_UNPATENTED ::
|
|
||||||
* The library implements a bytecode interpreter that doesn't
|
|
||||||
* support the patented operations of the TrueType virtual machine.
|
|
||||||
*
|
|
||||||
* Its main use is to load certain Asian fonts which position and
|
|
||||||
* scale glyph components with bytecode instructions. It produces
|
|
||||||
* bad output for most other fonts.
|
|
||||||
*
|
|
||||||
* FT_TRUETYPE_ENGINE_TYPE_PATENTED ::
|
|
||||||
* The library implements a bytecode interpreter that covers
|
|
||||||
* the full instruction set of the TrueType virtual machine (this
|
|
||||||
* was governed by patents until May 2010, hence the name).
|
|
||||||
*
|
|
||||||
* @since:
|
|
||||||
* 2.2
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
typedef enum FT_TrueTypeEngineType_
|
|
||||||
{
|
|
||||||
FT_TRUETYPE_ENGINE_TYPE_NONE = 0,
|
|
||||||
FT_TRUETYPE_ENGINE_TYPE_UNPATENTED,
|
|
||||||
FT_TRUETYPE_ENGINE_TYPE_PATENTED
|
|
||||||
|
|
||||||
} FT_TrueTypeEngineType;
|
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************************
|
|
||||||
*
|
|
||||||
* @func:
|
|
||||||
* FT_Get_TrueType_Engine_Type
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* Return an @FT_TrueTypeEngineType value to indicate which level of
|
|
||||||
* the TrueType virtual machine a given library instance supports.
|
|
||||||
*
|
|
||||||
* @input:
|
|
||||||
* library ::
|
|
||||||
* A library instance.
|
|
||||||
*
|
|
||||||
* @return:
|
|
||||||
* A value indicating which level is supported.
|
|
||||||
*
|
|
||||||
* @since:
|
|
||||||
* 2.2
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
FT_EXPORT( FT_TrueTypeEngineType )
|
|
||||||
FT_Get_TrueType_Engine_Type( FT_Library library );
|
|
||||||
|
|
||||||
|
|
||||||
/* */
|
|
||||||
|
|
||||||
|
|
||||||
FT_END_HEADER
|
|
||||||
|
|
||||||
#endif /* __FTMODAPI_H__ */
|
|
||||||
|
|
||||||
|
|
||||||
/* END */
|
|
@ -1,155 +0,0 @@
|
|||||||
/***************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* ftmoderr.h */
|
|
||||||
/* */
|
|
||||||
/* FreeType module error offsets (specification). */
|
|
||||||
/* */
|
|
||||||
/* Copyright 2001, 2002, 2003, 2004, 2005 by */
|
|
||||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
|
||||||
/* */
|
|
||||||
/* This file is part of the FreeType project, and may only be used, */
|
|
||||||
/* modified, and distributed under the terms of the FreeType project */
|
|
||||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
|
||||||
/* this file you indicate that you have read the license and */
|
|
||||||
/* understand and accept it fully. */
|
|
||||||
/* */
|
|
||||||
/***************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* This file is used to define the FreeType module error offsets. */
|
|
||||||
/* */
|
|
||||||
/* The lower byte gives the error code, the higher byte gives the */
|
|
||||||
/* module. The base module has error offset 0. For example, the error */
|
|
||||||
/* `FT_Err_Invalid_File_Format' has value 0x003, the error */
|
|
||||||
/* `TT_Err_Invalid_File_Format' has value 0x1103, the error */
|
|
||||||
/* `T1_Err_Invalid_File_Format' has value 0x1203, etc. */
|
|
||||||
/* */
|
|
||||||
/* Undefine the macro FT_CONFIG_OPTION_USE_MODULE_ERRORS in ftoption.h */
|
|
||||||
/* to make the higher byte always zero (disabling the module error */
|
|
||||||
/* mechanism). */
|
|
||||||
/* */
|
|
||||||
/* It can also be used to create a module error message table easily */
|
|
||||||
/* with something like */
|
|
||||||
/* */
|
|
||||||
/* { */
|
|
||||||
/* #undef __FTMODERR_H__ */
|
|
||||||
/* #define FT_MODERRDEF( e, v, s ) { FT_Mod_Err_ ## e, s }, */
|
|
||||||
/* #define FT_MODERR_START_LIST { */
|
|
||||||
/* #define FT_MODERR_END_LIST { 0, 0 } }; */
|
|
||||||
/* */
|
|
||||||
/* const struct */
|
|
||||||
/* { */
|
|
||||||
/* int mod_err_offset; */
|
|
||||||
/* const char* mod_err_msg */
|
|
||||||
/* } ft_mod_errors[] = */
|
|
||||||
/* */
|
|
||||||
/* #include FT_MODULE_ERRORS_H */
|
|
||||||
/* } */
|
|
||||||
/* */
|
|
||||||
/* To use such a table, all errors must be ANDed with 0xFF00 to remove */
|
|
||||||
/* the error code. */
|
|
||||||
/* */
|
|
||||||
/*************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef __FTMODERR_H__
|
|
||||||
#define __FTMODERR_H__
|
|
||||||
|
|
||||||
|
|
||||||
/*******************************************************************/
|
|
||||||
/*******************************************************************/
|
|
||||||
/***** *****/
|
|
||||||
/***** SETUP MACROS *****/
|
|
||||||
/***** *****/
|
|
||||||
/*******************************************************************/
|
|
||||||
/*******************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
#undef FT_NEED_EXTERN_C
|
|
||||||
|
|
||||||
#ifndef FT_MODERRDEF
|
|
||||||
|
|
||||||
#ifdef FT_CONFIG_OPTION_USE_MODULE_ERRORS
|
|
||||||
#define FT_MODERRDEF( e, v, s ) FT_Mod_Err_ ## e = v,
|
|
||||||
#else
|
|
||||||
#define FT_MODERRDEF( e, v, s ) FT_Mod_Err_ ## e = 0,
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define FT_MODERR_START_LIST enum {
|
|
||||||
#define FT_MODERR_END_LIST FT_Mod_Err_Max };
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
#define FT_NEED_EXTERN_C
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /* !FT_MODERRDEF */
|
|
||||||
|
|
||||||
|
|
||||||
/*******************************************************************/
|
|
||||||
/*******************************************************************/
|
|
||||||
/***** *****/
|
|
||||||
/***** LIST MODULE ERROR BASES *****/
|
|
||||||
/***** *****/
|
|
||||||
/*******************************************************************/
|
|
||||||
/*******************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef FT_MODERR_START_LIST
|
|
||||||
FT_MODERR_START_LIST
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
FT_MODERRDEF( Base, 0x000, "base module" )
|
|
||||||
FT_MODERRDEF( Autofit, 0x100, "autofitter module" )
|
|
||||||
FT_MODERRDEF( BDF, 0x200, "BDF module" )
|
|
||||||
FT_MODERRDEF( Cache, 0x300, "cache module" )
|
|
||||||
FT_MODERRDEF( CFF, 0x400, "CFF module" )
|
|
||||||
FT_MODERRDEF( CID, 0x500, "CID module" )
|
|
||||||
FT_MODERRDEF( Gzip, 0x600, "Gzip module" )
|
|
||||||
FT_MODERRDEF( LZW, 0x700, "LZW module" )
|
|
||||||
FT_MODERRDEF( OTvalid, 0x800, "OpenType validation module" )
|
|
||||||
FT_MODERRDEF( PCF, 0x900, "PCF module" )
|
|
||||||
FT_MODERRDEF( PFR, 0xA00, "PFR module" )
|
|
||||||
FT_MODERRDEF( PSaux, 0xB00, "PS auxiliary module" )
|
|
||||||
FT_MODERRDEF( PShinter, 0xC00, "PS hinter module" )
|
|
||||||
FT_MODERRDEF( PSnames, 0xD00, "PS names module" )
|
|
||||||
FT_MODERRDEF( Raster, 0xE00, "raster module" )
|
|
||||||
FT_MODERRDEF( SFNT, 0xF00, "SFNT module" )
|
|
||||||
FT_MODERRDEF( Smooth, 0x1000, "smooth raster module" )
|
|
||||||
FT_MODERRDEF( TrueType, 0x1100, "TrueType module" )
|
|
||||||
FT_MODERRDEF( Type1, 0x1200, "Type 1 module" )
|
|
||||||
FT_MODERRDEF( Type42, 0x1300, "Type 42 module" )
|
|
||||||
FT_MODERRDEF( Winfonts, 0x1400, "Windows FON/FNT module" )
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef FT_MODERR_END_LIST
|
|
||||||
FT_MODERR_END_LIST
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/*******************************************************************/
|
|
||||||
/*******************************************************************/
|
|
||||||
/***** *****/
|
|
||||||
/***** CLEANUP *****/
|
|
||||||
/***** *****/
|
|
||||||
/*******************************************************************/
|
|
||||||
/*******************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef FT_NEED_EXTERN_C
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#undef FT_MODERR_START_LIST
|
|
||||||
#undef FT_MODERR_END_LIST
|
|
||||||
#undef FT_MODERRDEF
|
|
||||||
#undef FT_NEED_EXTERN_C
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* __FTMODERR_H__ */
|
|
||||||
|
|
||||||
|
|
||||||
/* END */
|
|
@ -1,203 +0,0 @@
|
|||||||
/***************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* ftotval.h */
|
|
||||||
/* */
|
|
||||||
/* FreeType API for validating OpenType tables (specification). */
|
|
||||||
/* */
|
|
||||||
/* Copyright 2004, 2005, 2006, 2007 by */
|
|
||||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
|
||||||
/* */
|
|
||||||
/* This file is part of the FreeType project, and may only be used, */
|
|
||||||
/* modified, and distributed under the terms of the FreeType project */
|
|
||||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
|
||||||
/* this file you indicate that you have read the license and */
|
|
||||||
/* understand and accept it fully. */
|
|
||||||
/* */
|
|
||||||
/***************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
/***************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* */
|
|
||||||
/* Warning: This module might be moved to a different library in the */
|
|
||||||
/* future to avoid a tight dependency between FreeType and the */
|
|
||||||
/* OpenType specification. */
|
|
||||||
/* */
|
|
||||||
/* */
|
|
||||||
/***************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef __FTOTVAL_H__
|
|
||||||
#define __FTOTVAL_H__
|
|
||||||
|
|
||||||
#include <ft2build.h>
|
|
||||||
#include FT_FREETYPE_H
|
|
||||||
|
|
||||||
#ifdef FREETYPE_H
|
|
||||||
#error "freetype.h of FreeType 1 has been loaded!"
|
|
||||||
#error "Please fix the directory search order for header files"
|
|
||||||
#error "so that freetype.h of FreeType 2 is found first."
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
FT_BEGIN_HEADER
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Section> */
|
|
||||||
/* ot_validation */
|
|
||||||
/* */
|
|
||||||
/* <Title> */
|
|
||||||
/* OpenType Validation */
|
|
||||||
/* */
|
|
||||||
/* <Abstract> */
|
|
||||||
/* An API to validate OpenType tables. */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* This section contains the declaration of functions to validate */
|
|
||||||
/* some OpenType tables (BASE, GDEF, GPOS, GSUB, JSTF, MATH). */
|
|
||||||
/* */
|
|
||||||
/*************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
/**********************************************************************
|
|
||||||
*
|
|
||||||
* @enum:
|
|
||||||
* FT_VALIDATE_OTXXX
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* A list of bit-field constants used with @FT_OpenType_Validate to
|
|
||||||
* indicate which OpenType tables should be validated.
|
|
||||||
*
|
|
||||||
* @values:
|
|
||||||
* FT_VALIDATE_BASE ::
|
|
||||||
* Validate BASE table.
|
|
||||||
*
|
|
||||||
* FT_VALIDATE_GDEF ::
|
|
||||||
* Validate GDEF table.
|
|
||||||
*
|
|
||||||
* FT_VALIDATE_GPOS ::
|
|
||||||
* Validate GPOS table.
|
|
||||||
*
|
|
||||||
* FT_VALIDATE_GSUB ::
|
|
||||||
* Validate GSUB table.
|
|
||||||
*
|
|
||||||
* FT_VALIDATE_JSTF ::
|
|
||||||
* Validate JSTF table.
|
|
||||||
*
|
|
||||||
* FT_VALIDATE_MATH ::
|
|
||||||
* Validate MATH table.
|
|
||||||
*
|
|
||||||
* FT_VALIDATE_OT ::
|
|
||||||
* Validate all OpenType tables (BASE, GDEF, GPOS, GSUB, JSTF, MATH).
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
#define FT_VALIDATE_BASE 0x0100
|
|
||||||
#define FT_VALIDATE_GDEF 0x0200
|
|
||||||
#define FT_VALIDATE_GPOS 0x0400
|
|
||||||
#define FT_VALIDATE_GSUB 0x0800
|
|
||||||
#define FT_VALIDATE_JSTF 0x1000
|
|
||||||
#define FT_VALIDATE_MATH 0x2000
|
|
||||||
|
|
||||||
#define FT_VALIDATE_OT FT_VALIDATE_BASE | \
|
|
||||||
FT_VALIDATE_GDEF | \
|
|
||||||
FT_VALIDATE_GPOS | \
|
|
||||||
FT_VALIDATE_GSUB | \
|
|
||||||
FT_VALIDATE_JSTF | \
|
|
||||||
FT_VALIDATE_MATH
|
|
||||||
|
|
||||||
/* */
|
|
||||||
|
|
||||||
/**********************************************************************
|
|
||||||
*
|
|
||||||
* @function:
|
|
||||||
* FT_OpenType_Validate
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* Validate various OpenType tables to assure that all offsets and
|
|
||||||
* indices are valid. The idea is that a higher-level library which
|
|
||||||
* actually does the text layout can access those tables without
|
|
||||||
* error checking (which can be quite time consuming).
|
|
||||||
*
|
|
||||||
* @input:
|
|
||||||
* face ::
|
|
||||||
* A handle to the input face.
|
|
||||||
*
|
|
||||||
* validation_flags ::
|
|
||||||
* A bit field which specifies the tables to be validated. See
|
|
||||||
* @FT_VALIDATE_OTXXX for possible values.
|
|
||||||
*
|
|
||||||
* @output:
|
|
||||||
* BASE_table ::
|
|
||||||
* A pointer to the BASE table.
|
|
||||||
*
|
|
||||||
* GDEF_table ::
|
|
||||||
* A pointer to the GDEF table.
|
|
||||||
*
|
|
||||||
* GPOS_table ::
|
|
||||||
* A pointer to the GPOS table.
|
|
||||||
*
|
|
||||||
* GSUB_table ::
|
|
||||||
* A pointer to the GSUB table.
|
|
||||||
*
|
|
||||||
* JSTF_table ::
|
|
||||||
* A pointer to the JSTF table.
|
|
||||||
*
|
|
||||||
* @return:
|
|
||||||
* FreeType error code. 0~means success.
|
|
||||||
*
|
|
||||||
* @note:
|
|
||||||
* This function only works with OpenType fonts, returning an error
|
|
||||||
* otherwise.
|
|
||||||
*
|
|
||||||
* After use, the application should deallocate the five tables with
|
|
||||||
* @FT_OpenType_Free. A NULL value indicates that the table either
|
|
||||||
* doesn't exist in the font, or the application hasn't asked for
|
|
||||||
* validation.
|
|
||||||
*/
|
|
||||||
FT_EXPORT( FT_Error )
|
|
||||||
FT_OpenType_Validate( FT_Face face,
|
|
||||||
FT_UInt validation_flags,
|
|
||||||
FT_Bytes *BASE_table,
|
|
||||||
FT_Bytes *GDEF_table,
|
|
||||||
FT_Bytes *GPOS_table,
|
|
||||||
FT_Bytes *GSUB_table,
|
|
||||||
FT_Bytes *JSTF_table );
|
|
||||||
|
|
||||||
/* */
|
|
||||||
|
|
||||||
/**********************************************************************
|
|
||||||
*
|
|
||||||
* @function:
|
|
||||||
* FT_OpenType_Free
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* Free the buffer allocated by OpenType validator.
|
|
||||||
*
|
|
||||||
* @input:
|
|
||||||
* face ::
|
|
||||||
* A handle to the input face.
|
|
||||||
*
|
|
||||||
* table ::
|
|
||||||
* The pointer to the buffer that is allocated by
|
|
||||||
* @FT_OpenType_Validate.
|
|
||||||
*
|
|
||||||
* @note:
|
|
||||||
* This function must be used to free the buffer allocated by
|
|
||||||
* @FT_OpenType_Validate only.
|
|
||||||
*/
|
|
||||||
FT_EXPORT( void )
|
|
||||||
FT_OpenType_Free( FT_Face face,
|
|
||||||
FT_Bytes table );
|
|
||||||
|
|
||||||
|
|
||||||
/* */
|
|
||||||
|
|
||||||
|
|
||||||
FT_END_HEADER
|
|
||||||
|
|
||||||
#endif /* __FTOTVAL_H__ */
|
|
||||||
|
|
||||||
|
|
||||||
/* END */
|
|
@ -1,537 +0,0 @@
|
|||||||
/***************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* ftoutln.h */
|
|
||||||
/* */
|
|
||||||
/* Support for the FT_Outline type used to store glyph shapes of */
|
|
||||||
/* most scalable font formats (specification). */
|
|
||||||
/* */
|
|
||||||
/* Copyright 1996-2001, 2002, 2003, 2005, 2006, 2007, 2008, 2009, 2010 by */
|
|
||||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
|
||||||
/* */
|
|
||||||
/* This file is part of the FreeType project, and may only be used, */
|
|
||||||
/* modified, and distributed under the terms of the FreeType project */
|
|
||||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
|
||||||
/* this file you indicate that you have read the license and */
|
|
||||||
/* understand and accept it fully. */
|
|
||||||
/* */
|
|
||||||
/***************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef __FTOUTLN_H__
|
|
||||||
#define __FTOUTLN_H__
|
|
||||||
|
|
||||||
|
|
||||||
#include <ft2build.h>
|
|
||||||
#include FT_FREETYPE_H
|
|
||||||
|
|
||||||
#ifdef FREETYPE_H
|
|
||||||
#error "freetype.h of FreeType 1 has been loaded!"
|
|
||||||
#error "Please fix the directory search order for header files"
|
|
||||||
#error "so that freetype.h of FreeType 2 is found first."
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
FT_BEGIN_HEADER
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Section> */
|
|
||||||
/* outline_processing */
|
|
||||||
/* */
|
|
||||||
/* <Title> */
|
|
||||||
/* Outline Processing */
|
|
||||||
/* */
|
|
||||||
/* <Abstract> */
|
|
||||||
/* Functions to create, transform, and render vectorial glyph images. */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* This section contains routines used to create and destroy scalable */
|
|
||||||
/* glyph images known as `outlines'. These can also be measured, */
|
|
||||||
/* transformed, and converted into bitmaps and pixmaps. */
|
|
||||||
/* */
|
|
||||||
/* <Order> */
|
|
||||||
/* FT_Outline */
|
|
||||||
/* FT_OUTLINE_FLAGS */
|
|
||||||
/* FT_Outline_New */
|
|
||||||
/* FT_Outline_Done */
|
|
||||||
/* FT_Outline_Copy */
|
|
||||||
/* FT_Outline_Translate */
|
|
||||||
/* FT_Outline_Transform */
|
|
||||||
/* FT_Outline_Embolden */
|
|
||||||
/* FT_Outline_Reverse */
|
|
||||||
/* FT_Outline_Check */
|
|
||||||
/* */
|
|
||||||
/* FT_Outline_Get_CBox */
|
|
||||||
/* FT_Outline_Get_BBox */
|
|
||||||
/* */
|
|
||||||
/* FT_Outline_Get_Bitmap */
|
|
||||||
/* FT_Outline_Render */
|
|
||||||
/* */
|
|
||||||
/* FT_Outline_Decompose */
|
|
||||||
/* FT_Outline_Funcs */
|
|
||||||
/* FT_Outline_MoveTo_Func */
|
|
||||||
/* FT_Outline_LineTo_Func */
|
|
||||||
/* FT_Outline_ConicTo_Func */
|
|
||||||
/* FT_Outline_CubicTo_Func */
|
|
||||||
/* */
|
|
||||||
/*************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Function> */
|
|
||||||
/* FT_Outline_Decompose */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* Walk over an outline's structure to decompose it into individual */
|
|
||||||
/* segments and Bézier arcs. This function also emits `move to' */
|
|
||||||
/* operations to indicate the start of new contours in the outline. */
|
|
||||||
/* */
|
|
||||||
/* <Input> */
|
|
||||||
/* outline :: A pointer to the source target. */
|
|
||||||
/* */
|
|
||||||
/* func_interface :: A table of `emitters', i.e., function pointers */
|
|
||||||
/* called during decomposition to indicate path */
|
|
||||||
/* operations. */
|
|
||||||
/* */
|
|
||||||
/* <InOut> */
|
|
||||||
/* user :: A typeless pointer which is passed to each */
|
|
||||||
/* emitter during the decomposition. It can be */
|
|
||||||
/* used to store the state during the */
|
|
||||||
/* decomposition. */
|
|
||||||
/* */
|
|
||||||
/* <Return> */
|
|
||||||
/* FreeType error code. 0~means success. */
|
|
||||||
/* */
|
|
||||||
FT_EXPORT( FT_Error )
|
|
||||||
FT_Outline_Decompose( FT_Outline* outline,
|
|
||||||
const FT_Outline_Funcs* func_interface,
|
|
||||||
void* user );
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Function> */
|
|
||||||
/* FT_Outline_New */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* Create a new outline of a given size. */
|
|
||||||
/* */
|
|
||||||
/* <Input> */
|
|
||||||
/* library :: A handle to the library object from where the */
|
|
||||||
/* outline is allocated. Note however that the new */
|
|
||||||
/* outline will *not* necessarily be *freed*, when */
|
|
||||||
/* destroying the library, by @FT_Done_FreeType. */
|
|
||||||
/* */
|
|
||||||
/* numPoints :: The maximal number of points within the outline. */
|
|
||||||
/* */
|
|
||||||
/* numContours :: The maximal number of contours within the outline. */
|
|
||||||
/* */
|
|
||||||
/* <Output> */
|
|
||||||
/* anoutline :: A handle to the new outline. */
|
|
||||||
/* */
|
|
||||||
/* <Return> */
|
|
||||||
/* FreeType error code. 0~means success. */
|
|
||||||
/* */
|
|
||||||
/* <Note> */
|
|
||||||
/* The reason why this function takes a `library' parameter is simply */
|
|
||||||
/* to use the library's memory allocator. */
|
|
||||||
/* */
|
|
||||||
FT_EXPORT( FT_Error )
|
|
||||||
FT_Outline_New( FT_Library library,
|
|
||||||
FT_UInt numPoints,
|
|
||||||
FT_Int numContours,
|
|
||||||
FT_Outline *anoutline );
|
|
||||||
|
|
||||||
|
|
||||||
FT_EXPORT( FT_Error )
|
|
||||||
FT_Outline_New_Internal( FT_Memory memory,
|
|
||||||
FT_UInt numPoints,
|
|
||||||
FT_Int numContours,
|
|
||||||
FT_Outline *anoutline );
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Function> */
|
|
||||||
/* FT_Outline_Done */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* Destroy an outline created with @FT_Outline_New. */
|
|
||||||
/* */
|
|
||||||
/* <Input> */
|
|
||||||
/* library :: A handle of the library object used to allocate the */
|
|
||||||
/* outline. */
|
|
||||||
/* */
|
|
||||||
/* outline :: A pointer to the outline object to be discarded. */
|
|
||||||
/* */
|
|
||||||
/* <Return> */
|
|
||||||
/* FreeType error code. 0~means success. */
|
|
||||||
/* */
|
|
||||||
/* <Note> */
|
|
||||||
/* If the outline's `owner' field is not set, only the outline */
|
|
||||||
/* descriptor will be released. */
|
|
||||||
/* */
|
|
||||||
/* The reason why this function takes an `library' parameter is */
|
|
||||||
/* simply to use ft_mem_free(). */
|
|
||||||
/* */
|
|
||||||
FT_EXPORT( FT_Error )
|
|
||||||
FT_Outline_Done( FT_Library library,
|
|
||||||
FT_Outline* outline );
|
|
||||||
|
|
||||||
|
|
||||||
FT_EXPORT( FT_Error )
|
|
||||||
FT_Outline_Done_Internal( FT_Memory memory,
|
|
||||||
FT_Outline* outline );
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Function> */
|
|
||||||
/* FT_Outline_Check */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* Check the contents of an outline descriptor. */
|
|
||||||
/* */
|
|
||||||
/* <Input> */
|
|
||||||
/* outline :: A handle to a source outline. */
|
|
||||||
/* */
|
|
||||||
/* <Return> */
|
|
||||||
/* FreeType error code. 0~means success. */
|
|
||||||
/* */
|
|
||||||
FT_EXPORT( FT_Error )
|
|
||||||
FT_Outline_Check( FT_Outline* outline );
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Function> */
|
|
||||||
/* FT_Outline_Get_CBox */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* Return an outline's `control box'. The control box encloses all */
|
|
||||||
/* the outline's points, including Bézier control points. Though it */
|
|
||||||
/* coincides with the exact bounding box for most glyphs, it can be */
|
|
||||||
/* slightly larger in some situations (like when rotating an outline */
|
|
||||||
/* which contains Bézier outside arcs). */
|
|
||||||
/* */
|
|
||||||
/* Computing the control box is very fast, while getting the bounding */
|
|
||||||
/* box can take much more time as it needs to walk over all segments */
|
|
||||||
/* and arcs in the outline. To get the latter, you can use the */
|
|
||||||
/* `ftbbox' component which is dedicated to this single task. */
|
|
||||||
/* */
|
|
||||||
/* <Input> */
|
|
||||||
/* outline :: A pointer to the source outline descriptor. */
|
|
||||||
/* */
|
|
||||||
/* <Output> */
|
|
||||||
/* acbox :: The outline's control box. */
|
|
||||||
/* */
|
|
||||||
FT_EXPORT( void )
|
|
||||||
FT_Outline_Get_CBox( const FT_Outline* outline,
|
|
||||||
FT_BBox *acbox );
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Function> */
|
|
||||||
/* FT_Outline_Translate */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* Apply a simple translation to the points of an outline. */
|
|
||||||
/* */
|
|
||||||
/* <InOut> */
|
|
||||||
/* outline :: A pointer to the target outline descriptor. */
|
|
||||||
/* */
|
|
||||||
/* <Input> */
|
|
||||||
/* xOffset :: The horizontal offset. */
|
|
||||||
/* */
|
|
||||||
/* yOffset :: The vertical offset. */
|
|
||||||
/* */
|
|
||||||
FT_EXPORT( void )
|
|
||||||
FT_Outline_Translate( const FT_Outline* outline,
|
|
||||||
FT_Pos xOffset,
|
|
||||||
FT_Pos yOffset );
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Function> */
|
|
||||||
/* FT_Outline_Copy */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* Copy an outline into another one. Both objects must have the */
|
|
||||||
/* same sizes (number of points & number of contours) when this */
|
|
||||||
/* function is called. */
|
|
||||||
/* */
|
|
||||||
/* <Input> */
|
|
||||||
/* source :: A handle to the source outline. */
|
|
||||||
/* */
|
|
||||||
/* <Output> */
|
|
||||||
/* target :: A handle to the target outline. */
|
|
||||||
/* */
|
|
||||||
/* <Return> */
|
|
||||||
/* FreeType error code. 0~means success. */
|
|
||||||
/* */
|
|
||||||
FT_EXPORT( FT_Error )
|
|
||||||
FT_Outline_Copy( const FT_Outline* source,
|
|
||||||
FT_Outline *target );
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Function> */
|
|
||||||
/* FT_Outline_Transform */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* Apply a simple 2x2 matrix to all of an outline's points. Useful */
|
|
||||||
/* for applying rotations, slanting, flipping, etc. */
|
|
||||||
/* */
|
|
||||||
/* <InOut> */
|
|
||||||
/* outline :: A pointer to the target outline descriptor. */
|
|
||||||
/* */
|
|
||||||
/* <Input> */
|
|
||||||
/* matrix :: A pointer to the transformation matrix. */
|
|
||||||
/* */
|
|
||||||
/* <Note> */
|
|
||||||
/* You can use @FT_Outline_Translate if you need to translate the */
|
|
||||||
/* outline's points. */
|
|
||||||
/* */
|
|
||||||
FT_EXPORT( void )
|
|
||||||
FT_Outline_Transform( const FT_Outline* outline,
|
|
||||||
const FT_Matrix* matrix );
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Function> */
|
|
||||||
/* FT_Outline_Embolden */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* Embolden an outline. The new outline will be at most 4~times */
|
|
||||||
/* `strength' pixels wider and higher. You may think of the left and */
|
|
||||||
/* bottom borders as unchanged. */
|
|
||||||
/* */
|
|
||||||
/* Negative `strength' values to reduce the outline thickness are */
|
|
||||||
/* possible also. */
|
|
||||||
/* */
|
|
||||||
/* <InOut> */
|
|
||||||
/* outline :: A handle to the target outline. */
|
|
||||||
/* */
|
|
||||||
/* <Input> */
|
|
||||||
/* strength :: How strong the glyph is emboldened. Expressed in */
|
|
||||||
/* 26.6 pixel format. */
|
|
||||||
/* */
|
|
||||||
/* <Return> */
|
|
||||||
/* FreeType error code. 0~means success. */
|
|
||||||
/* */
|
|
||||||
/* <Note> */
|
|
||||||
/* The used algorithm to increase or decrease the thickness of the */
|
|
||||||
/* glyph doesn't change the number of points; this means that certain */
|
|
||||||
/* situations like acute angles or intersections are sometimes */
|
|
||||||
/* handled incorrectly. */
|
|
||||||
/* */
|
|
||||||
/* If you need `better' metrics values you should call */
|
|
||||||
/* @FT_Outline_Get_CBox ot @FT_Outline_Get_BBox. */
|
|
||||||
/* */
|
|
||||||
/* Example call: */
|
|
||||||
/* */
|
|
||||||
/* { */
|
|
||||||
/* FT_Load_Glyph( face, index, FT_LOAD_DEFAULT ); */
|
|
||||||
/* if ( face->slot->format == FT_GLYPH_FORMAT_OUTLINE ) */
|
|
||||||
/* FT_Outline_Embolden( &face->slot->outline, strength ); */
|
|
||||||
/* } */
|
|
||||||
/* */
|
|
||||||
FT_EXPORT( FT_Error )
|
|
||||||
FT_Outline_Embolden( FT_Outline* outline,
|
|
||||||
FT_Pos strength );
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Function> */
|
|
||||||
/* FT_Outline_Reverse */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* Reverse the drawing direction of an outline. This is used to */
|
|
||||||
/* ensure consistent fill conventions for mirrored glyphs. */
|
|
||||||
/* */
|
|
||||||
/* <InOut> */
|
|
||||||
/* outline :: A pointer to the target outline descriptor. */
|
|
||||||
/* */
|
|
||||||
/* <Note> */
|
|
||||||
/* This function toggles the bit flag @FT_OUTLINE_REVERSE_FILL in */
|
|
||||||
/* the outline's `flags' field. */
|
|
||||||
/* */
|
|
||||||
/* It shouldn't be used by a normal client application, unless it */
|
|
||||||
/* knows what it is doing. */
|
|
||||||
/* */
|
|
||||||
FT_EXPORT( void )
|
|
||||||
FT_Outline_Reverse( FT_Outline* outline );
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Function> */
|
|
||||||
/* FT_Outline_Get_Bitmap */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* Render an outline within a bitmap. The outline's image is simply */
|
|
||||||
/* OR-ed to the target bitmap. */
|
|
||||||
/* */
|
|
||||||
/* <Input> */
|
|
||||||
/* library :: A handle to a FreeType library object. */
|
|
||||||
/* */
|
|
||||||
/* outline :: A pointer to the source outline descriptor. */
|
|
||||||
/* */
|
|
||||||
/* <InOut> */
|
|
||||||
/* abitmap :: A pointer to the target bitmap descriptor. */
|
|
||||||
/* */
|
|
||||||
/* <Return> */
|
|
||||||
/* FreeType error code. 0~means success. */
|
|
||||||
/* */
|
|
||||||
/* <Note> */
|
|
||||||
/* This function does NOT CREATE the bitmap, it only renders an */
|
|
||||||
/* outline image within the one you pass to it! Consequently, the */
|
|
||||||
/* various fields in `abitmap' should be set accordingly. */
|
|
||||||
/* */
|
|
||||||
/* It will use the raster corresponding to the default glyph format. */
|
|
||||||
/* */
|
|
||||||
/* The value of the `num_grays' field in `abitmap' is ignored. If */
|
|
||||||
/* you select the gray-level rasterizer, and you want less than 256 */
|
|
||||||
/* gray levels, you have to use @FT_Outline_Render directly. */
|
|
||||||
/* */
|
|
||||||
FT_EXPORT( FT_Error )
|
|
||||||
FT_Outline_Get_Bitmap( FT_Library library,
|
|
||||||
FT_Outline* outline,
|
|
||||||
const FT_Bitmap *abitmap );
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Function> */
|
|
||||||
/* FT_Outline_Render */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* Render an outline within a bitmap using the current scan-convert. */
|
|
||||||
/* This function uses an @FT_Raster_Params structure as an argument, */
|
|
||||||
/* allowing advanced features like direct composition, translucency, */
|
|
||||||
/* etc. */
|
|
||||||
/* */
|
|
||||||
/* <Input> */
|
|
||||||
/* library :: A handle to a FreeType library object. */
|
|
||||||
/* */
|
|
||||||
/* outline :: A pointer to the source outline descriptor. */
|
|
||||||
/* */
|
|
||||||
/* <InOut> */
|
|
||||||
/* params :: A pointer to an @FT_Raster_Params structure used to */
|
|
||||||
/* describe the rendering operation. */
|
|
||||||
/* */
|
|
||||||
/* <Return> */
|
|
||||||
/* FreeType error code. 0~means success. */
|
|
||||||
/* */
|
|
||||||
/* <Note> */
|
|
||||||
/* You should know what you are doing and how @FT_Raster_Params works */
|
|
||||||
/* to use this function. */
|
|
||||||
/* */
|
|
||||||
/* The field `params.source' will be set to `outline' before the scan */
|
|
||||||
/* converter is called, which means that the value you give to it is */
|
|
||||||
/* actually ignored. */
|
|
||||||
/* */
|
|
||||||
/* The gray-level rasterizer always uses 256 gray levels. If you */
|
|
||||||
/* want less gray levels, you have to provide your own span callback. */
|
|
||||||
/* See the @FT_RASTER_FLAG_DIRECT value of the `flags' field in the */
|
|
||||||
/* @FT_Raster_Params structure for more details. */
|
|
||||||
/* */
|
|
||||||
FT_EXPORT( FT_Error )
|
|
||||||
FT_Outline_Render( FT_Library library,
|
|
||||||
FT_Outline* outline,
|
|
||||||
FT_Raster_Params* params );
|
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************************
|
|
||||||
*
|
|
||||||
* @enum:
|
|
||||||
* FT_Orientation
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* A list of values used to describe an outline's contour orientation.
|
|
||||||
*
|
|
||||||
* The TrueType and PostScript specifications use different conventions
|
|
||||||
* to determine whether outline contours should be filled or unfilled.
|
|
||||||
*
|
|
||||||
* @values:
|
|
||||||
* FT_ORIENTATION_TRUETYPE ::
|
|
||||||
* According to the TrueType specification, clockwise contours must
|
|
||||||
* be filled, and counter-clockwise ones must be unfilled.
|
|
||||||
*
|
|
||||||
* FT_ORIENTATION_POSTSCRIPT ::
|
|
||||||
* According to the PostScript specification, counter-clockwise contours
|
|
||||||
* must be filled, and clockwise ones must be unfilled.
|
|
||||||
*
|
|
||||||
* FT_ORIENTATION_FILL_RIGHT ::
|
|
||||||
* This is identical to @FT_ORIENTATION_TRUETYPE, but is used to
|
|
||||||
* remember that in TrueType, everything that is to the right of
|
|
||||||
* the drawing direction of a contour must be filled.
|
|
||||||
*
|
|
||||||
* FT_ORIENTATION_FILL_LEFT ::
|
|
||||||
* This is identical to @FT_ORIENTATION_POSTSCRIPT, but is used to
|
|
||||||
* remember that in PostScript, everything that is to the left of
|
|
||||||
* the drawing direction of a contour must be filled.
|
|
||||||
*
|
|
||||||
* FT_ORIENTATION_NONE ::
|
|
||||||
* The orientation cannot be determined. That is, different parts of
|
|
||||||
* the glyph have different orientation.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
typedef enum FT_Orientation_
|
|
||||||
{
|
|
||||||
FT_ORIENTATION_TRUETYPE = 0,
|
|
||||||
FT_ORIENTATION_POSTSCRIPT = 1,
|
|
||||||
FT_ORIENTATION_FILL_RIGHT = FT_ORIENTATION_TRUETYPE,
|
|
||||||
FT_ORIENTATION_FILL_LEFT = FT_ORIENTATION_POSTSCRIPT,
|
|
||||||
FT_ORIENTATION_NONE
|
|
||||||
|
|
||||||
} FT_Orientation;
|
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************************
|
|
||||||
*
|
|
||||||
* @function:
|
|
||||||
* FT_Outline_Get_Orientation
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* This function analyzes a glyph outline and tries to compute its
|
|
||||||
* fill orientation (see @FT_Orientation). This is done by computing
|
|
||||||
* the direction of each global horizontal and/or vertical extrema
|
|
||||||
* within the outline.
|
|
||||||
*
|
|
||||||
* Note that this will return @FT_ORIENTATION_TRUETYPE for empty
|
|
||||||
* outlines.
|
|
||||||
*
|
|
||||||
* @input:
|
|
||||||
* outline ::
|
|
||||||
* A handle to the source outline.
|
|
||||||
*
|
|
||||||
* @return:
|
|
||||||
* The orientation.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
FT_EXPORT( FT_Orientation )
|
|
||||||
FT_Outline_Get_Orientation( FT_Outline* outline );
|
|
||||||
|
|
||||||
|
|
||||||
/* */
|
|
||||||
|
|
||||||
|
|
||||||
FT_END_HEADER
|
|
||||||
|
|
||||||
#endif /* __FTOUTLN_H__ */
|
|
||||||
|
|
||||||
|
|
||||||
/* END */
|
|
||||||
|
|
||||||
|
|
||||||
/* Local Variables: */
|
|
||||||
/* coding: utf-8 */
|
|
||||||
/* End: */
|
|
@ -1,172 +0,0 @@
|
|||||||
/***************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* ftpfr.h */
|
|
||||||
/* */
|
|
||||||
/* FreeType API for accessing PFR-specific data (specification only). */
|
|
||||||
/* */
|
|
||||||
/* Copyright 2002, 2003, 2004, 2006, 2008, 2009 by */
|
|
||||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
|
||||||
/* */
|
|
||||||
/* This file is part of the FreeType project, and may only be used, */
|
|
||||||
/* modified, and distributed under the terms of the FreeType project */
|
|
||||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
|
||||||
/* this file you indicate that you have read the license and */
|
|
||||||
/* understand and accept it fully. */
|
|
||||||
/* */
|
|
||||||
/***************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef __FTPFR_H__
|
|
||||||
#define __FTPFR_H__
|
|
||||||
|
|
||||||
#include <ft2build.h>
|
|
||||||
#include FT_FREETYPE_H
|
|
||||||
|
|
||||||
#ifdef FREETYPE_H
|
|
||||||
#error "freetype.h of FreeType 1 has been loaded!"
|
|
||||||
#error "Please fix the directory search order for header files"
|
|
||||||
#error "so that freetype.h of FreeType 2 is found first."
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
FT_BEGIN_HEADER
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Section> */
|
|
||||||
/* pfr_fonts */
|
|
||||||
/* */
|
|
||||||
/* <Title> */
|
|
||||||
/* PFR Fonts */
|
|
||||||
/* */
|
|
||||||
/* <Abstract> */
|
|
||||||
/* PFR/TrueDoc specific API. */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* This section contains the declaration of PFR-specific functions. */
|
|
||||||
/* */
|
|
||||||
/*************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
/**********************************************************************
|
|
||||||
*
|
|
||||||
* @function:
|
|
||||||
* FT_Get_PFR_Metrics
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* Return the outline and metrics resolutions of a given PFR face.
|
|
||||||
*
|
|
||||||
* @input:
|
|
||||||
* face :: Handle to the input face. It can be a non-PFR face.
|
|
||||||
*
|
|
||||||
* @output:
|
|
||||||
* aoutline_resolution ::
|
|
||||||
* Outline resolution. This is equivalent to `face->units_per_EM'
|
|
||||||
* for non-PFR fonts. Optional (parameter can be NULL).
|
|
||||||
*
|
|
||||||
* ametrics_resolution ::
|
|
||||||
* Metrics resolution. This is equivalent to `outline_resolution'
|
|
||||||
* for non-PFR fonts. Optional (parameter can be NULL).
|
|
||||||
*
|
|
||||||
* ametrics_x_scale ::
|
|
||||||
* A 16.16 fixed-point number used to scale distance expressed
|
|
||||||
* in metrics units to device sub-pixels. This is equivalent to
|
|
||||||
* `face->size->x_scale', but for metrics only. Optional (parameter
|
|
||||||
* can be NULL).
|
|
||||||
*
|
|
||||||
* ametrics_y_scale ::
|
|
||||||
* Same as `ametrics_x_scale' but for the vertical direction.
|
|
||||||
* optional (parameter can be NULL).
|
|
||||||
*
|
|
||||||
* @return:
|
|
||||||
* FreeType error code. 0~means success.
|
|
||||||
*
|
|
||||||
* @note:
|
|
||||||
* If the input face is not a PFR, this function will return an error.
|
|
||||||
* However, in all cases, it will return valid values.
|
|
||||||
*/
|
|
||||||
FT_EXPORT( FT_Error )
|
|
||||||
FT_Get_PFR_Metrics( FT_Face face,
|
|
||||||
FT_UInt *aoutline_resolution,
|
|
||||||
FT_UInt *ametrics_resolution,
|
|
||||||
FT_Fixed *ametrics_x_scale,
|
|
||||||
FT_Fixed *ametrics_y_scale );
|
|
||||||
|
|
||||||
|
|
||||||
/**********************************************************************
|
|
||||||
*
|
|
||||||
* @function:
|
|
||||||
* FT_Get_PFR_Kerning
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* Return the kerning pair corresponding to two glyphs in a PFR face.
|
|
||||||
* The distance is expressed in metrics units, unlike the result of
|
|
||||||
* @FT_Get_Kerning.
|
|
||||||
*
|
|
||||||
* @input:
|
|
||||||
* face :: A handle to the input face.
|
|
||||||
*
|
|
||||||
* left :: Index of the left glyph.
|
|
||||||
*
|
|
||||||
* right :: Index of the right glyph.
|
|
||||||
*
|
|
||||||
* @output:
|
|
||||||
* avector :: A kerning vector.
|
|
||||||
*
|
|
||||||
* @return:
|
|
||||||
* FreeType error code. 0~means success.
|
|
||||||
*
|
|
||||||
* @note:
|
|
||||||
* This function always return distances in original PFR metrics
|
|
||||||
* units. This is unlike @FT_Get_Kerning with the @FT_KERNING_UNSCALED
|
|
||||||
* mode, which always returns distances converted to outline units.
|
|
||||||
*
|
|
||||||
* You can use the value of the `x_scale' and `y_scale' parameters
|
|
||||||
* returned by @FT_Get_PFR_Metrics to scale these to device sub-pixels.
|
|
||||||
*/
|
|
||||||
FT_EXPORT( FT_Error )
|
|
||||||
FT_Get_PFR_Kerning( FT_Face face,
|
|
||||||
FT_UInt left,
|
|
||||||
FT_UInt right,
|
|
||||||
FT_Vector *avector );
|
|
||||||
|
|
||||||
|
|
||||||
/**********************************************************************
|
|
||||||
*
|
|
||||||
* @function:
|
|
||||||
* FT_Get_PFR_Advance
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* Return a given glyph advance, expressed in original metrics units,
|
|
||||||
* from a PFR font.
|
|
||||||
*
|
|
||||||
* @input:
|
|
||||||
* face :: A handle to the input face.
|
|
||||||
*
|
|
||||||
* gindex :: The glyph index.
|
|
||||||
*
|
|
||||||
* @output:
|
|
||||||
* aadvance :: The glyph advance in metrics units.
|
|
||||||
*
|
|
||||||
* @return:
|
|
||||||
* FreeType error code. 0~means success.
|
|
||||||
*
|
|
||||||
* @note:
|
|
||||||
* You can use the `x_scale' or `y_scale' results of @FT_Get_PFR_Metrics
|
|
||||||
* to convert the advance to device sub-pixels (i.e., 1/64th of pixels).
|
|
||||||
*/
|
|
||||||
FT_EXPORT( FT_Error )
|
|
||||||
FT_Get_PFR_Advance( FT_Face face,
|
|
||||||
FT_UInt gindex,
|
|
||||||
FT_Pos *aadvance );
|
|
||||||
|
|
||||||
/* */
|
|
||||||
|
|
||||||
|
|
||||||
FT_END_HEADER
|
|
||||||
|
|
||||||
#endif /* __FTPFR_H__ */
|
|
||||||
|
|
||||||
|
|
||||||
/* END */
|
|
@ -1,230 +0,0 @@
|
|||||||
/***************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* ftrender.h */
|
|
||||||
/* */
|
|
||||||
/* FreeType renderer modules public interface (specification). */
|
|
||||||
/* */
|
|
||||||
/* Copyright 1996-2001, 2005, 2006, 2010 by */
|
|
||||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
|
||||||
/* */
|
|
||||||
/* This file is part of the FreeType project, and may only be used, */
|
|
||||||
/* modified, and distributed under the terms of the FreeType project */
|
|
||||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
|
||||||
/* this file you indicate that you have read the license and */
|
|
||||||
/* understand and accept it fully. */
|
|
||||||
/* */
|
|
||||||
/***************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef __FTRENDER_H__
|
|
||||||
#define __FTRENDER_H__
|
|
||||||
|
|
||||||
|
|
||||||
#include <ft2build.h>
|
|
||||||
#include FT_MODULE_H
|
|
||||||
#include FT_GLYPH_H
|
|
||||||
|
|
||||||
|
|
||||||
FT_BEGIN_HEADER
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Section> */
|
|
||||||
/* module_management */
|
|
||||||
/* */
|
|
||||||
/*************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
/* create a new glyph object */
|
|
||||||
typedef FT_Error
|
|
||||||
(*FT_Glyph_InitFunc)( FT_Glyph glyph,
|
|
||||||
FT_GlyphSlot slot );
|
|
||||||
|
|
||||||
/* destroys a given glyph object */
|
|
||||||
typedef void
|
|
||||||
(*FT_Glyph_DoneFunc)( FT_Glyph glyph );
|
|
||||||
|
|
||||||
typedef void
|
|
||||||
(*FT_Glyph_TransformFunc)( FT_Glyph glyph,
|
|
||||||
const FT_Matrix* matrix,
|
|
||||||
const FT_Vector* delta );
|
|
||||||
|
|
||||||
typedef void
|
|
||||||
(*FT_Glyph_GetBBoxFunc)( FT_Glyph glyph,
|
|
||||||
FT_BBox* abbox );
|
|
||||||
|
|
||||||
typedef FT_Error
|
|
||||||
(*FT_Glyph_CopyFunc)( FT_Glyph source,
|
|
||||||
FT_Glyph target );
|
|
||||||
|
|
||||||
typedef FT_Error
|
|
||||||
(*FT_Glyph_PrepareFunc)( FT_Glyph glyph,
|
|
||||||
FT_GlyphSlot slot );
|
|
||||||
|
|
||||||
/* deprecated */
|
|
||||||
#define FT_Glyph_Init_Func FT_Glyph_InitFunc
|
|
||||||
#define FT_Glyph_Done_Func FT_Glyph_DoneFunc
|
|
||||||
#define FT_Glyph_Transform_Func FT_Glyph_TransformFunc
|
|
||||||
#define FT_Glyph_BBox_Func FT_Glyph_GetBBoxFunc
|
|
||||||
#define FT_Glyph_Copy_Func FT_Glyph_CopyFunc
|
|
||||||
#define FT_Glyph_Prepare_Func FT_Glyph_PrepareFunc
|
|
||||||
|
|
||||||
|
|
||||||
struct FT_Glyph_Class_
|
|
||||||
{
|
|
||||||
FT_Long glyph_size;
|
|
||||||
FT_Glyph_Format glyph_format;
|
|
||||||
FT_Glyph_InitFunc glyph_init;
|
|
||||||
FT_Glyph_DoneFunc glyph_done;
|
|
||||||
FT_Glyph_CopyFunc glyph_copy;
|
|
||||||
FT_Glyph_TransformFunc glyph_transform;
|
|
||||||
FT_Glyph_GetBBoxFunc glyph_bbox;
|
|
||||||
FT_Glyph_PrepareFunc glyph_prepare;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
typedef FT_Error
|
|
||||||
(*FT_Renderer_RenderFunc)( FT_Renderer renderer,
|
|
||||||
FT_GlyphSlot slot,
|
|
||||||
FT_UInt mode,
|
|
||||||
const FT_Vector* origin );
|
|
||||||
|
|
||||||
typedef FT_Error
|
|
||||||
(*FT_Renderer_TransformFunc)( FT_Renderer renderer,
|
|
||||||
FT_GlyphSlot slot,
|
|
||||||
const FT_Matrix* matrix,
|
|
||||||
const FT_Vector* delta );
|
|
||||||
|
|
||||||
|
|
||||||
typedef void
|
|
||||||
(*FT_Renderer_GetCBoxFunc)( FT_Renderer renderer,
|
|
||||||
FT_GlyphSlot slot,
|
|
||||||
FT_BBox* cbox );
|
|
||||||
|
|
||||||
|
|
||||||
typedef FT_Error
|
|
||||||
(*FT_Renderer_SetModeFunc)( FT_Renderer renderer,
|
|
||||||
FT_ULong mode_tag,
|
|
||||||
FT_Pointer mode_ptr );
|
|
||||||
|
|
||||||
/* deprecated identifiers */
|
|
||||||
#define FTRenderer_render FT_Renderer_RenderFunc
|
|
||||||
#define FTRenderer_transform FT_Renderer_TransformFunc
|
|
||||||
#define FTRenderer_getCBox FT_Renderer_GetCBoxFunc
|
|
||||||
#define FTRenderer_setMode FT_Renderer_SetModeFunc
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Struct> */
|
|
||||||
/* FT_Renderer_Class */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* The renderer module class descriptor. */
|
|
||||||
/* */
|
|
||||||
/* <Fields> */
|
|
||||||
/* root :: The root @FT_Module_Class fields. */
|
|
||||||
/* */
|
|
||||||
/* glyph_format :: The glyph image format this renderer handles. */
|
|
||||||
/* */
|
|
||||||
/* render_glyph :: A method used to render the image that is in a */
|
|
||||||
/* given glyph slot into a bitmap. */
|
|
||||||
/* */
|
|
||||||
/* transform_glyph :: A method used to transform the image that is in */
|
|
||||||
/* a given glyph slot. */
|
|
||||||
/* */
|
|
||||||
/* get_glyph_cbox :: A method used to access the glyph's cbox. */
|
|
||||||
/* */
|
|
||||||
/* set_mode :: A method used to pass additional parameters. */
|
|
||||||
/* */
|
|
||||||
/* raster_class :: For @FT_GLYPH_FORMAT_OUTLINE renderers only. */
|
|
||||||
/* This is a pointer to its raster's class. */
|
|
||||||
/* */
|
|
||||||
typedef struct FT_Renderer_Class_
|
|
||||||
{
|
|
||||||
FT_Module_Class root;
|
|
||||||
|
|
||||||
FT_Glyph_Format glyph_format;
|
|
||||||
|
|
||||||
FT_Renderer_RenderFunc render_glyph;
|
|
||||||
FT_Renderer_TransformFunc transform_glyph;
|
|
||||||
FT_Renderer_GetCBoxFunc get_glyph_cbox;
|
|
||||||
FT_Renderer_SetModeFunc set_mode;
|
|
||||||
|
|
||||||
FT_Raster_Funcs* raster_class;
|
|
||||||
|
|
||||||
} FT_Renderer_Class;
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Function> */
|
|
||||||
/* FT_Get_Renderer */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* Retrieve the current renderer for a given glyph format. */
|
|
||||||
/* */
|
|
||||||
/* <Input> */
|
|
||||||
/* library :: A handle to the library object. */
|
|
||||||
/* */
|
|
||||||
/* format :: The glyph format. */
|
|
||||||
/* */
|
|
||||||
/* <Return> */
|
|
||||||
/* A renderer handle. 0~if none found. */
|
|
||||||
/* */
|
|
||||||
/* <Note> */
|
|
||||||
/* An error will be returned if a module already exists by that name, */
|
|
||||||
/* or if the module requires a version of FreeType that is too great. */
|
|
||||||
/* */
|
|
||||||
/* To add a new renderer, simply use @FT_Add_Module. To retrieve a */
|
|
||||||
/* renderer by its name, use @FT_Get_Module. */
|
|
||||||
/* */
|
|
||||||
FT_EXPORT( FT_Renderer )
|
|
||||||
FT_Get_Renderer( FT_Library library,
|
|
||||||
FT_Glyph_Format format );
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Function> */
|
|
||||||
/* FT_Set_Renderer */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* Set the current renderer to use, and set additional mode. */
|
|
||||||
/* */
|
|
||||||
/* <InOut> */
|
|
||||||
/* library :: A handle to the library object. */
|
|
||||||
/* */
|
|
||||||
/* <Input> */
|
|
||||||
/* renderer :: A handle to the renderer object. */
|
|
||||||
/* */
|
|
||||||
/* num_params :: The number of additional parameters. */
|
|
||||||
/* */
|
|
||||||
/* parameters :: Additional parameters. */
|
|
||||||
/* */
|
|
||||||
/* <Return> */
|
|
||||||
/* FreeType error code. 0~means success. */
|
|
||||||
/* */
|
|
||||||
/* <Note> */
|
|
||||||
/* In case of success, the renderer will be used to convert glyph */
|
|
||||||
/* images in the renderer's known format into bitmaps. */
|
|
||||||
/* */
|
|
||||||
/* This doesn't change the current renderer for other formats. */
|
|
||||||
/* */
|
|
||||||
FT_EXPORT( FT_Error )
|
|
||||||
FT_Set_Renderer( FT_Library library,
|
|
||||||
FT_Renderer renderer,
|
|
||||||
FT_UInt num_params,
|
|
||||||
FT_Parameter* parameters );
|
|
||||||
|
|
||||||
|
|
||||||
/* */
|
|
||||||
|
|
||||||
|
|
||||||
FT_END_HEADER
|
|
||||||
|
|
||||||
#endif /* __FTRENDER_H__ */
|
|
||||||
|
|
||||||
|
|
||||||
/* END */
|
|
@ -1,159 +0,0 @@
|
|||||||
/***************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* ftsizes.h */
|
|
||||||
/* */
|
|
||||||
/* FreeType size objects management (specification). */
|
|
||||||
/* */
|
|
||||||
/* Copyright 1996-2001, 2003, 2004, 2006, 2009 by */
|
|
||||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
|
||||||
/* */
|
|
||||||
/* This file is part of the FreeType project, and may only be used, */
|
|
||||||
/* modified, and distributed under the terms of the FreeType project */
|
|
||||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
|
||||||
/* this file you indicate that you have read the license and */
|
|
||||||
/* understand and accept it fully. */
|
|
||||||
/* */
|
|
||||||
/***************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* Typical application would normally not need to use these functions. */
|
|
||||||
/* However, they have been placed in a public API for the rare cases */
|
|
||||||
/* where they are needed. */
|
|
||||||
/* */
|
|
||||||
/*************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef __FTSIZES_H__
|
|
||||||
#define __FTSIZES_H__
|
|
||||||
|
|
||||||
|
|
||||||
#include <ft2build.h>
|
|
||||||
#include FT_FREETYPE_H
|
|
||||||
|
|
||||||
#ifdef FREETYPE_H
|
|
||||||
#error "freetype.h of FreeType 1 has been loaded!"
|
|
||||||
#error "Please fix the directory search order for header files"
|
|
||||||
#error "so that freetype.h of FreeType 2 is found first."
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
FT_BEGIN_HEADER
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Section> */
|
|
||||||
/* sizes_management */
|
|
||||||
/* */
|
|
||||||
/* <Title> */
|
|
||||||
/* Size Management */
|
|
||||||
/* */
|
|
||||||
/* <Abstract> */
|
|
||||||
/* Managing multiple sizes per face. */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* When creating a new face object (e.g., with @FT_New_Face), an */
|
|
||||||
/* @FT_Size object is automatically created and used to store all */
|
|
||||||
/* pixel-size dependent information, available in the `face->size' */
|
|
||||||
/* field. */
|
|
||||||
/* */
|
|
||||||
/* It is however possible to create more sizes for a given face, */
|
|
||||||
/* mostly in order to manage several character pixel sizes of the */
|
|
||||||
/* same font family and style. See @FT_New_Size and @FT_Done_Size. */
|
|
||||||
/* */
|
|
||||||
/* Note that @FT_Set_Pixel_Sizes and @FT_Set_Char_Size only */
|
|
||||||
/* modify the contents of the current `active' size; you thus need */
|
|
||||||
/* to use @FT_Activate_Size to change it. */
|
|
||||||
/* */
|
|
||||||
/* 99% of applications won't need the functions provided here, */
|
|
||||||
/* especially if they use the caching sub-system, so be cautious */
|
|
||||||
/* when using these. */
|
|
||||||
/* */
|
|
||||||
/*************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Function> */
|
|
||||||
/* FT_New_Size */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* Create a new size object from a given face object. */
|
|
||||||
/* */
|
|
||||||
/* <Input> */
|
|
||||||
/* face :: A handle to a parent face object. */
|
|
||||||
/* */
|
|
||||||
/* <Output> */
|
|
||||||
/* asize :: A handle to a new size object. */
|
|
||||||
/* */
|
|
||||||
/* <Return> */
|
|
||||||
/* FreeType error code. 0~means success. */
|
|
||||||
/* */
|
|
||||||
/* <Note> */
|
|
||||||
/* You need to call @FT_Activate_Size in order to select the new size */
|
|
||||||
/* for upcoming calls to @FT_Set_Pixel_Sizes, @FT_Set_Char_Size, */
|
|
||||||
/* @FT_Load_Glyph, @FT_Load_Char, etc. */
|
|
||||||
/* */
|
|
||||||
FT_EXPORT( FT_Error )
|
|
||||||
FT_New_Size( FT_Face face,
|
|
||||||
FT_Size* size );
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Function> */
|
|
||||||
/* FT_Done_Size */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* Discard a given size object. Note that @FT_Done_Face */
|
|
||||||
/* automatically discards all size objects allocated with */
|
|
||||||
/* @FT_New_Size. */
|
|
||||||
/* */
|
|
||||||
/* <Input> */
|
|
||||||
/* size :: A handle to a target size object. */
|
|
||||||
/* */
|
|
||||||
/* <Return> */
|
|
||||||
/* FreeType error code. 0~means success. */
|
|
||||||
/* */
|
|
||||||
FT_EXPORT( FT_Error )
|
|
||||||
FT_Done_Size( FT_Size size );
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Function> */
|
|
||||||
/* FT_Activate_Size */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* Even though it is possible to create several size objects for a */
|
|
||||||
/* given face (see @FT_New_Size for details), functions like */
|
|
||||||
/* @FT_Load_Glyph or @FT_Load_Char only use the one which has been */
|
|
||||||
/* activated last to determine the `current character pixel size'. */
|
|
||||||
/* */
|
|
||||||
/* This function can be used to `activate' a previously created size */
|
|
||||||
/* object. */
|
|
||||||
/* */
|
|
||||||
/* <Input> */
|
|
||||||
/* size :: A handle to a target size object. */
|
|
||||||
/* */
|
|
||||||
/* <Return> */
|
|
||||||
/* FreeType error code. 0~means success. */
|
|
||||||
/* */
|
|
||||||
/* <Note> */
|
|
||||||
/* If `face' is the size's parent face object, this function changes */
|
|
||||||
/* the value of `face->size' to the input size handle. */
|
|
||||||
/* */
|
|
||||||
FT_EXPORT( FT_Error )
|
|
||||||
FT_Activate_Size( FT_Size size );
|
|
||||||
|
|
||||||
/* */
|
|
||||||
|
|
||||||
|
|
||||||
FT_END_HEADER
|
|
||||||
|
|
||||||
#endif /* __FTSIZES_H__ */
|
|
||||||
|
|
||||||
|
|
||||||
/* END */
|
|
@ -1,200 +0,0 @@
|
|||||||
/***************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* ftsnames.h */
|
|
||||||
/* */
|
|
||||||
/* Simple interface to access SFNT name tables (which are used */
|
|
||||||
/* to hold font names, copyright info, notices, etc.) (specification). */
|
|
||||||
/* */
|
|
||||||
/* This is _not_ used to retrieve glyph names! */
|
|
||||||
/* */
|
|
||||||
/* Copyright 1996-2001, 2002, 2003, 2006, 2009, 2010 by */
|
|
||||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
|
||||||
/* */
|
|
||||||
/* This file is part of the FreeType project, and may only be used, */
|
|
||||||
/* modified, and distributed under the terms of the FreeType project */
|
|
||||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
|
||||||
/* this file you indicate that you have read the license and */
|
|
||||||
/* understand and accept it fully. */
|
|
||||||
/* */
|
|
||||||
/***************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef __FT_SFNT_NAMES_H__
|
|
||||||
#define __FT_SFNT_NAMES_H__
|
|
||||||
|
|
||||||
|
|
||||||
#include <ft2build.h>
|
|
||||||
#include FT_FREETYPE_H
|
|
||||||
|
|
||||||
#ifdef FREETYPE_H
|
|
||||||
#error "freetype.h of FreeType 1 has been loaded!"
|
|
||||||
#error "Please fix the directory search order for header files"
|
|
||||||
#error "so that freetype.h of FreeType 2 is found first."
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
FT_BEGIN_HEADER
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Section> */
|
|
||||||
/* sfnt_names */
|
|
||||||
/* */
|
|
||||||
/* <Title> */
|
|
||||||
/* SFNT Names */
|
|
||||||
/* */
|
|
||||||
/* <Abstract> */
|
|
||||||
/* Access the names embedded in TrueType and OpenType files. */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* The TrueType and OpenType specifications allow the inclusion of */
|
|
||||||
/* a special `names table' in font files. This table contains */
|
|
||||||
/* textual (and internationalized) information regarding the font, */
|
|
||||||
/* like family name, copyright, version, etc. */
|
|
||||||
/* */
|
|
||||||
/* The definitions below are used to access them if available. */
|
|
||||||
/* */
|
|
||||||
/* Note that this has nothing to do with glyph names! */
|
|
||||||
/* */
|
|
||||||
/*************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Struct> */
|
|
||||||
/* FT_SfntName */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* A structure used to model an SFNT `name' table entry. */
|
|
||||||
/* */
|
|
||||||
/* <Fields> */
|
|
||||||
/* platform_id :: The platform ID for `string'. */
|
|
||||||
/* */
|
|
||||||
/* encoding_id :: The encoding ID for `string'. */
|
|
||||||
/* */
|
|
||||||
/* language_id :: The language ID for `string'. */
|
|
||||||
/* */
|
|
||||||
/* name_id :: An identifier for `string'. */
|
|
||||||
/* */
|
|
||||||
/* string :: The `name' string. Note that its format differs */
|
|
||||||
/* depending on the (platform,encoding) pair. It can */
|
|
||||||
/* be a Pascal String, a UTF-16 one, etc. */
|
|
||||||
/* */
|
|
||||||
/* Generally speaking, the string is not */
|
|
||||||
/* zero-terminated. Please refer to the TrueType */
|
|
||||||
/* specification for details. */
|
|
||||||
/* */
|
|
||||||
/* string_len :: The length of `string' in bytes. */
|
|
||||||
/* */
|
|
||||||
/* <Note> */
|
|
||||||
/* Possible values for `platform_id', `encoding_id', `language_id', */
|
|
||||||
/* and `name_id' are given in the file `ttnameid.h'. For details */
|
|
||||||
/* please refer to the TrueType or OpenType specification. */
|
|
||||||
/* */
|
|
||||||
/* See also @TT_PLATFORM_XXX, @TT_APPLE_ID_XXX, @TT_MAC_ID_XXX, */
|
|
||||||
/* @TT_ISO_ID_XXX, and @TT_MS_ID_XXX. */
|
|
||||||
/* */
|
|
||||||
typedef struct FT_SfntName_
|
|
||||||
{
|
|
||||||
FT_UShort platform_id;
|
|
||||||
FT_UShort encoding_id;
|
|
||||||
FT_UShort language_id;
|
|
||||||
FT_UShort name_id;
|
|
||||||
|
|
||||||
FT_Byte* string; /* this string is *not* null-terminated! */
|
|
||||||
FT_UInt string_len; /* in bytes */
|
|
||||||
|
|
||||||
} FT_SfntName;
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Function> */
|
|
||||||
/* FT_Get_Sfnt_Name_Count */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* Retrieve the number of name strings in the SFNT `name' table. */
|
|
||||||
/* */
|
|
||||||
/* <Input> */
|
|
||||||
/* face :: A handle to the source face. */
|
|
||||||
/* */
|
|
||||||
/* <Return> */
|
|
||||||
/* The number of strings in the `name' table. */
|
|
||||||
/* */
|
|
||||||
FT_EXPORT( FT_UInt )
|
|
||||||
FT_Get_Sfnt_Name_Count( FT_Face face );
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Function> */
|
|
||||||
/* FT_Get_Sfnt_Name */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* Retrieve a string of the SFNT `name' table for a given index. */
|
|
||||||
/* */
|
|
||||||
/* <Input> */
|
|
||||||
/* face :: A handle to the source face. */
|
|
||||||
/* */
|
|
||||||
/* idx :: The index of the `name' string. */
|
|
||||||
/* */
|
|
||||||
/* <Output> */
|
|
||||||
/* aname :: The indexed @FT_SfntName structure. */
|
|
||||||
/* */
|
|
||||||
/* <Return> */
|
|
||||||
/* FreeType error code. 0~means success. */
|
|
||||||
/* */
|
|
||||||
/* <Note> */
|
|
||||||
/* The `string' array returned in the `aname' structure is not */
|
|
||||||
/* null-terminated. The application should deallocate it if it is no */
|
|
||||||
/* longer in use. */
|
|
||||||
/* */
|
|
||||||
/* Use @FT_Get_Sfnt_Name_Count to get the total number of available */
|
|
||||||
/* `name' table entries, then do a loop until you get the right */
|
|
||||||
/* platform, encoding, and name ID. */
|
|
||||||
/* */
|
|
||||||
FT_EXPORT( FT_Error )
|
|
||||||
FT_Get_Sfnt_Name( FT_Face face,
|
|
||||||
FT_UInt idx,
|
|
||||||
FT_SfntName *aname );
|
|
||||||
|
|
||||||
|
|
||||||
/***************************************************************************
|
|
||||||
*
|
|
||||||
* @constant:
|
|
||||||
* FT_PARAM_TAG_IGNORE_PREFERRED_FAMILY
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* A constant used as the tag of @FT_Parameter structures to make
|
|
||||||
* FT_Open_Face() ignore preferred family subfamily names in `name'
|
|
||||||
* table since OpenType version 1.4. For backwards compatibility with
|
|
||||||
* legacy systems which has 4-face-per-family restriction.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
#define FT_PARAM_TAG_IGNORE_PREFERRED_FAMILY FT_MAKE_TAG( 'i', 'g', 'p', 'f' )
|
|
||||||
|
|
||||||
|
|
||||||
/***************************************************************************
|
|
||||||
*
|
|
||||||
* @constant:
|
|
||||||
* FT_PARAM_TAG_IGNORE_PREFERRED_SUBFAMILY
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* A constant used as the tag of @FT_Parameter structures to make
|
|
||||||
* FT_Open_Face() ignore preferred subfamily names in `name' table since
|
|
||||||
* OpenType version 1.4. For backwards compatibility with legacy
|
|
||||||
* systems which has 4-face-per-family restriction.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
#define FT_PARAM_TAG_IGNORE_PREFERRED_SUBFAMILY FT_MAKE_TAG( 'i', 'g', 'p', 's' )
|
|
||||||
|
|
||||||
/* */
|
|
||||||
|
|
||||||
|
|
||||||
FT_END_HEADER
|
|
||||||
|
|
||||||
#endif /* __FT_SFNT_NAMES_H__ */
|
|
||||||
|
|
||||||
|
|
||||||
/* END */
|
|
@ -1,716 +0,0 @@
|
|||||||
/***************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* ftstroke.h */
|
|
||||||
/* */
|
|
||||||
/* FreeType path stroker (specification). */
|
|
||||||
/* */
|
|
||||||
/* Copyright 2002, 2003, 2004, 2005, 2006, 2008, 2009 by */
|
|
||||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
|
||||||
/* */
|
|
||||||
/* This file is part of the FreeType project, and may only be used, */
|
|
||||||
/* modified, and distributed under the terms of the FreeType project */
|
|
||||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
|
||||||
/* this file you indicate that you have read the license and */
|
|
||||||
/* understand and accept it fully. */
|
|
||||||
/* */
|
|
||||||
/***************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef __FT_STROKE_H__
|
|
||||||
#define __FT_STROKE_H__
|
|
||||||
|
|
||||||
#include <ft2build.h>
|
|
||||||
#include FT_OUTLINE_H
|
|
||||||
#include FT_GLYPH_H
|
|
||||||
|
|
||||||
|
|
||||||
FT_BEGIN_HEADER
|
|
||||||
|
|
||||||
|
|
||||||
/************************************************************************
|
|
||||||
*
|
|
||||||
* @section:
|
|
||||||
* glyph_stroker
|
|
||||||
*
|
|
||||||
* @title:
|
|
||||||
* Glyph Stroker
|
|
||||||
*
|
|
||||||
* @abstract:
|
|
||||||
* Generating bordered and stroked glyphs.
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* This component generates stroked outlines of a given vectorial
|
|
||||||
* glyph. It also allows you to retrieve the `outside' and/or the
|
|
||||||
* `inside' borders of the stroke.
|
|
||||||
*
|
|
||||||
* This can be useful to generate `bordered' glyph, i.e., glyphs
|
|
||||||
* displayed with a coloured (and anti-aliased) border around their
|
|
||||||
* shape.
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************
|
|
||||||
*
|
|
||||||
* @type:
|
|
||||||
* FT_Stroker
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* Opaque handler to a path stroker object.
|
|
||||||
*/
|
|
||||||
typedef struct FT_StrokerRec_* FT_Stroker;
|
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************
|
|
||||||
*
|
|
||||||
* @enum:
|
|
||||||
* FT_Stroker_LineJoin
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* These values determine how two joining lines are rendered
|
|
||||||
* in a stroker.
|
|
||||||
*
|
|
||||||
* @values:
|
|
||||||
* FT_STROKER_LINEJOIN_ROUND ::
|
|
||||||
* Used to render rounded line joins. Circular arcs are used
|
|
||||||
* to join two lines smoothly.
|
|
||||||
*
|
|
||||||
* FT_STROKER_LINEJOIN_BEVEL ::
|
|
||||||
* Used to render beveled line joins; i.e., the two joining lines
|
|
||||||
* are extended until they intersect.
|
|
||||||
*
|
|
||||||
* FT_STROKER_LINEJOIN_MITER ::
|
|
||||||
* Same as beveled rendering, except that an additional line
|
|
||||||
* break is added if the angle between the two joining lines
|
|
||||||
* is too closed (this is useful to avoid unpleasant spikes
|
|
||||||
* in beveled rendering).
|
|
||||||
*/
|
|
||||||
typedef enum FT_Stroker_LineJoin_
|
|
||||||
{
|
|
||||||
FT_STROKER_LINEJOIN_ROUND = 0,
|
|
||||||
FT_STROKER_LINEJOIN_BEVEL,
|
|
||||||
FT_STROKER_LINEJOIN_MITER
|
|
||||||
|
|
||||||
} FT_Stroker_LineJoin;
|
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************
|
|
||||||
*
|
|
||||||
* @enum:
|
|
||||||
* FT_Stroker_LineCap
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* These values determine how the end of opened sub-paths are
|
|
||||||
* rendered in a stroke.
|
|
||||||
*
|
|
||||||
* @values:
|
|
||||||
* FT_STROKER_LINECAP_BUTT ::
|
|
||||||
* The end of lines is rendered as a full stop on the last
|
|
||||||
* point itself.
|
|
||||||
*
|
|
||||||
* FT_STROKER_LINECAP_ROUND ::
|
|
||||||
* The end of lines is rendered as a half-circle around the
|
|
||||||
* last point.
|
|
||||||
*
|
|
||||||
* FT_STROKER_LINECAP_SQUARE ::
|
|
||||||
* The end of lines is rendered as a square around the
|
|
||||||
* last point.
|
|
||||||
*/
|
|
||||||
typedef enum FT_Stroker_LineCap_
|
|
||||||
{
|
|
||||||
FT_STROKER_LINECAP_BUTT = 0,
|
|
||||||
FT_STROKER_LINECAP_ROUND,
|
|
||||||
FT_STROKER_LINECAP_SQUARE
|
|
||||||
|
|
||||||
} FT_Stroker_LineCap;
|
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************
|
|
||||||
*
|
|
||||||
* @enum:
|
|
||||||
* FT_StrokerBorder
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* These values are used to select a given stroke border
|
|
||||||
* in @FT_Stroker_GetBorderCounts and @FT_Stroker_ExportBorder.
|
|
||||||
*
|
|
||||||
* @values:
|
|
||||||
* FT_STROKER_BORDER_LEFT ::
|
|
||||||
* Select the left border, relative to the drawing direction.
|
|
||||||
*
|
|
||||||
* FT_STROKER_BORDER_RIGHT ::
|
|
||||||
* Select the right border, relative to the drawing direction.
|
|
||||||
*
|
|
||||||
* @note:
|
|
||||||
* Applications are generally interested in the `inside' and `outside'
|
|
||||||
* borders. However, there is no direct mapping between these and the
|
|
||||||
* `left' and `right' ones, since this really depends on the glyph's
|
|
||||||
* drawing orientation, which varies between font formats.
|
|
||||||
*
|
|
||||||
* You can however use @FT_Outline_GetInsideBorder and
|
|
||||||
* @FT_Outline_GetOutsideBorder to get these.
|
|
||||||
*/
|
|
||||||
typedef enum FT_StrokerBorder_
|
|
||||||
{
|
|
||||||
FT_STROKER_BORDER_LEFT = 0,
|
|
||||||
FT_STROKER_BORDER_RIGHT
|
|
||||||
|
|
||||||
} FT_StrokerBorder;
|
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************
|
|
||||||
*
|
|
||||||
* @function:
|
|
||||||
* FT_Outline_GetInsideBorder
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* Retrieve the @FT_StrokerBorder value corresponding to the
|
|
||||||
* `inside' borders of a given outline.
|
|
||||||
*
|
|
||||||
* @input:
|
|
||||||
* outline ::
|
|
||||||
* The source outline handle.
|
|
||||||
*
|
|
||||||
* @return:
|
|
||||||
* The border index. @FT_STROKER_BORDER_RIGHT for empty or invalid
|
|
||||||
* outlines.
|
|
||||||
*/
|
|
||||||
FT_EXPORT( FT_StrokerBorder )
|
|
||||||
FT_Outline_GetInsideBorder( FT_Outline* outline );
|
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************
|
|
||||||
*
|
|
||||||
* @function:
|
|
||||||
* FT_Outline_GetOutsideBorder
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* Retrieve the @FT_StrokerBorder value corresponding to the
|
|
||||||
* `outside' borders of a given outline.
|
|
||||||
*
|
|
||||||
* @input:
|
|
||||||
* outline ::
|
|
||||||
* The source outline handle.
|
|
||||||
*
|
|
||||||
* @return:
|
|
||||||
* The border index. @FT_STROKER_BORDER_LEFT for empty or invalid
|
|
||||||
* outlines.
|
|
||||||
*/
|
|
||||||
FT_EXPORT( FT_StrokerBorder )
|
|
||||||
FT_Outline_GetOutsideBorder( FT_Outline* outline );
|
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************
|
|
||||||
*
|
|
||||||
* @function:
|
|
||||||
* FT_Stroker_New
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* Create a new stroker object.
|
|
||||||
*
|
|
||||||
* @input:
|
|
||||||
* library ::
|
|
||||||
* FreeType library handle.
|
|
||||||
*
|
|
||||||
* @output:
|
|
||||||
* astroker ::
|
|
||||||
* A new stroker object handle. NULL in case of error.
|
|
||||||
*
|
|
||||||
* @return:
|
|
||||||
* FreeType error code. 0~means success.
|
|
||||||
*/
|
|
||||||
FT_EXPORT( FT_Error )
|
|
||||||
FT_Stroker_New( FT_Library library,
|
|
||||||
FT_Stroker *astroker );
|
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************
|
|
||||||
*
|
|
||||||
* @function:
|
|
||||||
* FT_Stroker_Set
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* Reset a stroker object's attributes.
|
|
||||||
*
|
|
||||||
* @input:
|
|
||||||
* stroker ::
|
|
||||||
* The target stroker handle.
|
|
||||||
*
|
|
||||||
* radius ::
|
|
||||||
* The border radius.
|
|
||||||
*
|
|
||||||
* line_cap ::
|
|
||||||
* The line cap style.
|
|
||||||
*
|
|
||||||
* line_join ::
|
|
||||||
* The line join style.
|
|
||||||
*
|
|
||||||
* miter_limit ::
|
|
||||||
* The miter limit for the FT_STROKER_LINEJOIN_MITER style,
|
|
||||||
* expressed as 16.16 fixed point value.
|
|
||||||
*
|
|
||||||
* @note:
|
|
||||||
* The radius is expressed in the same units as the outline
|
|
||||||
* coordinates.
|
|
||||||
*/
|
|
||||||
FT_EXPORT( void )
|
|
||||||
FT_Stroker_Set( FT_Stroker stroker,
|
|
||||||
FT_Fixed radius,
|
|
||||||
FT_Stroker_LineCap line_cap,
|
|
||||||
FT_Stroker_LineJoin line_join,
|
|
||||||
FT_Fixed miter_limit );
|
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************
|
|
||||||
*
|
|
||||||
* @function:
|
|
||||||
* FT_Stroker_Rewind
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* Reset a stroker object without changing its attributes.
|
|
||||||
* You should call this function before beginning a new
|
|
||||||
* series of calls to @FT_Stroker_BeginSubPath or
|
|
||||||
* @FT_Stroker_EndSubPath.
|
|
||||||
*
|
|
||||||
* @input:
|
|
||||||
* stroker ::
|
|
||||||
* The target stroker handle.
|
|
||||||
*/
|
|
||||||
FT_EXPORT( void )
|
|
||||||
FT_Stroker_Rewind( FT_Stroker stroker );
|
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************
|
|
||||||
*
|
|
||||||
* @function:
|
|
||||||
* FT_Stroker_ParseOutline
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* A convenience function used to parse a whole outline with
|
|
||||||
* the stroker. The resulting outline(s) can be retrieved
|
|
||||||
* later by functions like @FT_Stroker_GetCounts and @FT_Stroker_Export.
|
|
||||||
*
|
|
||||||
* @input:
|
|
||||||
* stroker ::
|
|
||||||
* The target stroker handle.
|
|
||||||
*
|
|
||||||
* outline ::
|
|
||||||
* The source outline.
|
|
||||||
*
|
|
||||||
* opened ::
|
|
||||||
* A boolean. If~1, the outline is treated as an open path instead
|
|
||||||
* of a closed one.
|
|
||||||
*
|
|
||||||
* @return:
|
|
||||||
* FreeType error code. 0~means success.
|
|
||||||
*
|
|
||||||
* @note:
|
|
||||||
* If `opened' is~0 (the default), the outline is treated as a closed
|
|
||||||
* path, and the stroker generates two distinct `border' outlines.
|
|
||||||
*
|
|
||||||
* If `opened' is~1, the outline is processed as an open path, and the
|
|
||||||
* stroker generates a single `stroke' outline.
|
|
||||||
*
|
|
||||||
* This function calls @FT_Stroker_Rewind automatically.
|
|
||||||
*/
|
|
||||||
FT_EXPORT( FT_Error )
|
|
||||||
FT_Stroker_ParseOutline( FT_Stroker stroker,
|
|
||||||
FT_Outline* outline,
|
|
||||||
FT_Bool opened );
|
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************
|
|
||||||
*
|
|
||||||
* @function:
|
|
||||||
* FT_Stroker_BeginSubPath
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* Start a new sub-path in the stroker.
|
|
||||||
*
|
|
||||||
* @input:
|
|
||||||
* stroker ::
|
|
||||||
* The target stroker handle.
|
|
||||||
*
|
|
||||||
* to ::
|
|
||||||
* A pointer to the start vector.
|
|
||||||
*
|
|
||||||
* open ::
|
|
||||||
* A boolean. If~1, the sub-path is treated as an open one.
|
|
||||||
*
|
|
||||||
* @return:
|
|
||||||
* FreeType error code. 0~means success.
|
|
||||||
*
|
|
||||||
* @note:
|
|
||||||
* This function is useful when you need to stroke a path that is
|
|
||||||
* not stored as an @FT_Outline object.
|
|
||||||
*/
|
|
||||||
FT_EXPORT( FT_Error )
|
|
||||||
FT_Stroker_BeginSubPath( FT_Stroker stroker,
|
|
||||||
FT_Vector* to,
|
|
||||||
FT_Bool open );
|
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************
|
|
||||||
*
|
|
||||||
* @function:
|
|
||||||
* FT_Stroker_EndSubPath
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* Close the current sub-path in the stroker.
|
|
||||||
*
|
|
||||||
* @input:
|
|
||||||
* stroker ::
|
|
||||||
* The target stroker handle.
|
|
||||||
*
|
|
||||||
* @return:
|
|
||||||
* FreeType error code. 0~means success.
|
|
||||||
*
|
|
||||||
* @note:
|
|
||||||
* You should call this function after @FT_Stroker_BeginSubPath.
|
|
||||||
* If the subpath was not `opened', this function `draws' a
|
|
||||||
* single line segment to the start position when needed.
|
|
||||||
*/
|
|
||||||
FT_EXPORT( FT_Error )
|
|
||||||
FT_Stroker_EndSubPath( FT_Stroker stroker );
|
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************
|
|
||||||
*
|
|
||||||
* @function:
|
|
||||||
* FT_Stroker_LineTo
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* `Draw' a single line segment in the stroker's current sub-path,
|
|
||||||
* from the last position.
|
|
||||||
*
|
|
||||||
* @input:
|
|
||||||
* stroker ::
|
|
||||||
* The target stroker handle.
|
|
||||||
*
|
|
||||||
* to ::
|
|
||||||
* A pointer to the destination point.
|
|
||||||
*
|
|
||||||
* @return:
|
|
||||||
* FreeType error code. 0~means success.
|
|
||||||
*
|
|
||||||
* @note:
|
|
||||||
* You should call this function between @FT_Stroker_BeginSubPath and
|
|
||||||
* @FT_Stroker_EndSubPath.
|
|
||||||
*/
|
|
||||||
FT_EXPORT( FT_Error )
|
|
||||||
FT_Stroker_LineTo( FT_Stroker stroker,
|
|
||||||
FT_Vector* to );
|
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************
|
|
||||||
*
|
|
||||||
* @function:
|
|
||||||
* FT_Stroker_ConicTo
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* `Draw' a single quadratic Bézier in the stroker's current sub-path,
|
|
||||||
* from the last position.
|
|
||||||
*
|
|
||||||
* @input:
|
|
||||||
* stroker ::
|
|
||||||
* The target stroker handle.
|
|
||||||
*
|
|
||||||
* control ::
|
|
||||||
* A pointer to a Bézier control point.
|
|
||||||
*
|
|
||||||
* to ::
|
|
||||||
* A pointer to the destination point.
|
|
||||||
*
|
|
||||||
* @return:
|
|
||||||
* FreeType error code. 0~means success.
|
|
||||||
*
|
|
||||||
* @note:
|
|
||||||
* You should call this function between @FT_Stroker_BeginSubPath and
|
|
||||||
* @FT_Stroker_EndSubPath.
|
|
||||||
*/
|
|
||||||
FT_EXPORT( FT_Error )
|
|
||||||
FT_Stroker_ConicTo( FT_Stroker stroker,
|
|
||||||
FT_Vector* control,
|
|
||||||
FT_Vector* to );
|
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************
|
|
||||||
*
|
|
||||||
* @function:
|
|
||||||
* FT_Stroker_CubicTo
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* `Draw' a single cubic Bézier in the stroker's current sub-path,
|
|
||||||
* from the last position.
|
|
||||||
*
|
|
||||||
* @input:
|
|
||||||
* stroker ::
|
|
||||||
* The target stroker handle.
|
|
||||||
*
|
|
||||||
* control1 ::
|
|
||||||
* A pointer to the first Bézier control point.
|
|
||||||
*
|
|
||||||
* control2 ::
|
|
||||||
* A pointer to second Bézier control point.
|
|
||||||
*
|
|
||||||
* to ::
|
|
||||||
* A pointer to the destination point.
|
|
||||||
*
|
|
||||||
* @return:
|
|
||||||
* FreeType error code. 0~means success.
|
|
||||||
*
|
|
||||||
* @note:
|
|
||||||
* You should call this function between @FT_Stroker_BeginSubPath and
|
|
||||||
* @FT_Stroker_EndSubPath.
|
|
||||||
*/
|
|
||||||
FT_EXPORT( FT_Error )
|
|
||||||
FT_Stroker_CubicTo( FT_Stroker stroker,
|
|
||||||
FT_Vector* control1,
|
|
||||||
FT_Vector* control2,
|
|
||||||
FT_Vector* to );
|
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************
|
|
||||||
*
|
|
||||||
* @function:
|
|
||||||
* FT_Stroker_GetBorderCounts
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* Call this function once you have finished parsing your paths
|
|
||||||
* with the stroker. It returns the number of points and
|
|
||||||
* contours necessary to export one of the `border' or `stroke'
|
|
||||||
* outlines generated by the stroker.
|
|
||||||
*
|
|
||||||
* @input:
|
|
||||||
* stroker ::
|
|
||||||
* The target stroker handle.
|
|
||||||
*
|
|
||||||
* border ::
|
|
||||||
* The border index.
|
|
||||||
*
|
|
||||||
* @output:
|
|
||||||
* anum_points ::
|
|
||||||
* The number of points.
|
|
||||||
*
|
|
||||||
* anum_contours ::
|
|
||||||
* The number of contours.
|
|
||||||
*
|
|
||||||
* @return:
|
|
||||||
* FreeType error code. 0~means success.
|
|
||||||
*
|
|
||||||
* @note:
|
|
||||||
* When an outline, or a sub-path, is `closed', the stroker generates
|
|
||||||
* two independent `border' outlines, named `left' and `right'.
|
|
||||||
*
|
|
||||||
* When the outline, or a sub-path, is `opened', the stroker merges
|
|
||||||
* the `border' outlines with caps. The `left' border receives all
|
|
||||||
* points, while the `right' border becomes empty.
|
|
||||||
*
|
|
||||||
* Use the function @FT_Stroker_GetCounts instead if you want to
|
|
||||||
* retrieve the counts associated to both borders.
|
|
||||||
*/
|
|
||||||
FT_EXPORT( FT_Error )
|
|
||||||
FT_Stroker_GetBorderCounts( FT_Stroker stroker,
|
|
||||||
FT_StrokerBorder border,
|
|
||||||
FT_UInt *anum_points,
|
|
||||||
FT_UInt *anum_contours );
|
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************
|
|
||||||
*
|
|
||||||
* @function:
|
|
||||||
* FT_Stroker_ExportBorder
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* Call this function after @FT_Stroker_GetBorderCounts to
|
|
||||||
* export the corresponding border to your own @FT_Outline
|
|
||||||
* structure.
|
|
||||||
*
|
|
||||||
* Note that this function appends the border points and
|
|
||||||
* contours to your outline, but does not try to resize its
|
|
||||||
* arrays.
|
|
||||||
*
|
|
||||||
* @input:
|
|
||||||
* stroker ::
|
|
||||||
* The target stroker handle.
|
|
||||||
*
|
|
||||||
* border ::
|
|
||||||
* The border index.
|
|
||||||
*
|
|
||||||
* outline ::
|
|
||||||
* The target outline handle.
|
|
||||||
*
|
|
||||||
* @note:
|
|
||||||
* Always call this function after @FT_Stroker_GetBorderCounts to
|
|
||||||
* get sure that there is enough room in your @FT_Outline object to
|
|
||||||
* receive all new data.
|
|
||||||
*
|
|
||||||
* When an outline, or a sub-path, is `closed', the stroker generates
|
|
||||||
* two independent `border' outlines, named `left' and `right'
|
|
||||||
*
|
|
||||||
* When the outline, or a sub-path, is `opened', the stroker merges
|
|
||||||
* the `border' outlines with caps. The `left' border receives all
|
|
||||||
* points, while the `right' border becomes empty.
|
|
||||||
*
|
|
||||||
* Use the function @FT_Stroker_Export instead if you want to
|
|
||||||
* retrieve all borders at once.
|
|
||||||
*/
|
|
||||||
FT_EXPORT( void )
|
|
||||||
FT_Stroker_ExportBorder( FT_Stroker stroker,
|
|
||||||
FT_StrokerBorder border,
|
|
||||||
FT_Outline* outline );
|
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************
|
|
||||||
*
|
|
||||||
* @function:
|
|
||||||
* FT_Stroker_GetCounts
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* Call this function once you have finished parsing your paths
|
|
||||||
* with the stroker. It returns the number of points and
|
|
||||||
* contours necessary to export all points/borders from the stroked
|
|
||||||
* outline/path.
|
|
||||||
*
|
|
||||||
* @input:
|
|
||||||
* stroker ::
|
|
||||||
* The target stroker handle.
|
|
||||||
*
|
|
||||||
* @output:
|
|
||||||
* anum_points ::
|
|
||||||
* The number of points.
|
|
||||||
*
|
|
||||||
* anum_contours ::
|
|
||||||
* The number of contours.
|
|
||||||
*
|
|
||||||
* @return:
|
|
||||||
* FreeType error code. 0~means success.
|
|
||||||
*/
|
|
||||||
FT_EXPORT( FT_Error )
|
|
||||||
FT_Stroker_GetCounts( FT_Stroker stroker,
|
|
||||||
FT_UInt *anum_points,
|
|
||||||
FT_UInt *anum_contours );
|
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************
|
|
||||||
*
|
|
||||||
* @function:
|
|
||||||
* FT_Stroker_Export
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* Call this function after @FT_Stroker_GetBorderCounts to
|
|
||||||
* export all borders to your own @FT_Outline structure.
|
|
||||||
*
|
|
||||||
* Note that this function appends the border points and
|
|
||||||
* contours to your outline, but does not try to resize its
|
|
||||||
* arrays.
|
|
||||||
*
|
|
||||||
* @input:
|
|
||||||
* stroker ::
|
|
||||||
* The target stroker handle.
|
|
||||||
*
|
|
||||||
* outline ::
|
|
||||||
* The target outline handle.
|
|
||||||
*/
|
|
||||||
FT_EXPORT( void )
|
|
||||||
FT_Stroker_Export( FT_Stroker stroker,
|
|
||||||
FT_Outline* outline );
|
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************
|
|
||||||
*
|
|
||||||
* @function:
|
|
||||||
* FT_Stroker_Done
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* Destroy a stroker object.
|
|
||||||
*
|
|
||||||
* @input:
|
|
||||||
* stroker ::
|
|
||||||
* A stroker handle. Can be NULL.
|
|
||||||
*/
|
|
||||||
FT_EXPORT( void )
|
|
||||||
FT_Stroker_Done( FT_Stroker stroker );
|
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************
|
|
||||||
*
|
|
||||||
* @function:
|
|
||||||
* FT_Glyph_Stroke
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* Stroke a given outline glyph object with a given stroker.
|
|
||||||
*
|
|
||||||
* @inout:
|
|
||||||
* pglyph ::
|
|
||||||
* Source glyph handle on input, new glyph handle on output.
|
|
||||||
*
|
|
||||||
* @input:
|
|
||||||
* stroker ::
|
|
||||||
* A stroker handle.
|
|
||||||
*
|
|
||||||
* destroy ::
|
|
||||||
* A Boolean. If~1, the source glyph object is destroyed
|
|
||||||
* on success.
|
|
||||||
*
|
|
||||||
* @return:
|
|
||||||
* FreeType error code. 0~means success.
|
|
||||||
*
|
|
||||||
* @note:
|
|
||||||
* The source glyph is untouched in case of error.
|
|
||||||
*/
|
|
||||||
FT_EXPORT( FT_Error )
|
|
||||||
FT_Glyph_Stroke( FT_Glyph *pglyph,
|
|
||||||
FT_Stroker stroker,
|
|
||||||
FT_Bool destroy );
|
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************
|
|
||||||
*
|
|
||||||
* @function:
|
|
||||||
* FT_Glyph_StrokeBorder
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* Stroke a given outline glyph object with a given stroker, but
|
|
||||||
* only return either its inside or outside border.
|
|
||||||
*
|
|
||||||
* @inout:
|
|
||||||
* pglyph ::
|
|
||||||
* Source glyph handle on input, new glyph handle on output.
|
|
||||||
*
|
|
||||||
* @input:
|
|
||||||
* stroker ::
|
|
||||||
* A stroker handle.
|
|
||||||
*
|
|
||||||
* inside ::
|
|
||||||
* A Boolean. If~1, return the inside border, otherwise
|
|
||||||
* the outside border.
|
|
||||||
*
|
|
||||||
* destroy ::
|
|
||||||
* A Boolean. If~1, the source glyph object is destroyed
|
|
||||||
* on success.
|
|
||||||
*
|
|
||||||
* @return:
|
|
||||||
* FreeType error code. 0~means success.
|
|
||||||
*
|
|
||||||
* @note:
|
|
||||||
* The source glyph is untouched in case of error.
|
|
||||||
*/
|
|
||||||
FT_EXPORT( FT_Error )
|
|
||||||
FT_Glyph_StrokeBorder( FT_Glyph *pglyph,
|
|
||||||
FT_Stroker stroker,
|
|
||||||
FT_Bool inside,
|
|
||||||
FT_Bool destroy );
|
|
||||||
|
|
||||||
/* */
|
|
||||||
|
|
||||||
FT_END_HEADER
|
|
||||||
|
|
||||||
#endif /* __FT_STROKE_H__ */
|
|
||||||
|
|
||||||
|
|
||||||
/* END */
|
|
||||||
|
|
||||||
|
|
||||||
/* Local Variables: */
|
|
||||||
/* coding: utf-8 */
|
|
||||||
/* End: */
|
|
@ -1,80 +0,0 @@
|
|||||||
/***************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* ftsynth.h */
|
|
||||||
/* */
|
|
||||||
/* FreeType synthesizing code for emboldening and slanting */
|
|
||||||
/* (specification). */
|
|
||||||
/* */
|
|
||||||
/* Copyright 2000-2001, 2003, 2006, 2008 by */
|
|
||||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
|
||||||
/* */
|
|
||||||
/* This file is part of the FreeType project, and may only be used, */
|
|
||||||
/* modified, and distributed under the terms of the FreeType project */
|
|
||||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
|
||||||
/* this file you indicate that you have read the license and */
|
|
||||||
/* understand and accept it fully. */
|
|
||||||
/* */
|
|
||||||
/***************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/*************************************************************************/
|
|
||||||
/*************************************************************************/
|
|
||||||
/*************************************************************************/
|
|
||||||
/*************************************************************************/
|
|
||||||
/********* *********/
|
|
||||||
/********* WARNING, THIS IS ALPHA CODE! THIS API *********/
|
|
||||||
/********* IS DUE TO CHANGE UNTIL STRICTLY NOTIFIED BY THE *********/
|
|
||||||
/********* FREETYPE DEVELOPMENT TEAM *********/
|
|
||||||
/********* *********/
|
|
||||||
/*************************************************************************/
|
|
||||||
/*************************************************************************/
|
|
||||||
/*************************************************************************/
|
|
||||||
/*************************************************************************/
|
|
||||||
/*************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
/* Main reason for not lifting the functions in this module to a */
|
|
||||||
/* `standard' API is that the used parameters for emboldening and */
|
|
||||||
/* slanting are not configurable. Consider the functions as a */
|
|
||||||
/* code resource which should be copied into the application and */
|
|
||||||
/* adapted to the particular needs. */
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef __FTSYNTH_H__
|
|
||||||
#define __FTSYNTH_H__
|
|
||||||
|
|
||||||
|
|
||||||
#include <ft2build.h>
|
|
||||||
#include FT_FREETYPE_H
|
|
||||||
|
|
||||||
#ifdef FREETYPE_H
|
|
||||||
#error "freetype.h of FreeType 1 has been loaded!"
|
|
||||||
#error "Please fix the directory search order for header files"
|
|
||||||
#error "so that freetype.h of FreeType 2 is found first."
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
FT_BEGIN_HEADER
|
|
||||||
|
|
||||||
/* Embolden a glyph by a `reasonable' value (which is highly a matter of */
|
|
||||||
/* taste). This function is actually a convenience function, providing */
|
|
||||||
/* a wrapper for @FT_Outline_Embolden and @FT_Bitmap_Embolden. */
|
|
||||||
/* */
|
|
||||||
/* For emboldened outlines the metrics are estimates only; if you need */
|
|
||||||
/* precise values you should call @FT_Outline_Get_CBox. */
|
|
||||||
FT_EXPORT( void )
|
|
||||||
FT_GlyphSlot_Embolden( FT_GlyphSlot slot );
|
|
||||||
|
|
||||||
/* Slant an outline glyph to the right by about 12 degrees. */
|
|
||||||
FT_EXPORT( void )
|
|
||||||
FT_GlyphSlot_Oblique( FT_GlyphSlot slot );
|
|
||||||
|
|
||||||
/* */
|
|
||||||
|
|
||||||
FT_END_HEADER
|
|
||||||
|
|
||||||
#endif /* __FTSYNTH_H__ */
|
|
||||||
|
|
||||||
|
|
||||||
/* END */
|
|
@ -1,347 +0,0 @@
|
|||||||
/***************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* ftsystem.h */
|
|
||||||
/* */
|
|
||||||
/* FreeType low-level system interface definition (specification). */
|
|
||||||
/* */
|
|
||||||
/* Copyright 1996-2001, 2002, 2005, 2010 by */
|
|
||||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
|
||||||
/* */
|
|
||||||
/* This file is part of the FreeType project, and may only be used, */
|
|
||||||
/* modified, and distributed under the terms of the FreeType project */
|
|
||||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
|
||||||
/* this file you indicate that you have read the license and */
|
|
||||||
/* understand and accept it fully. */
|
|
||||||
/* */
|
|
||||||
/***************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef __FTSYSTEM_H__
|
|
||||||
#define __FTSYSTEM_H__
|
|
||||||
|
|
||||||
|
|
||||||
#include <ft2build.h>
|
|
||||||
|
|
||||||
|
|
||||||
FT_BEGIN_HEADER
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Section> */
|
|
||||||
/* system_interface */
|
|
||||||
/* */
|
|
||||||
/* <Title> */
|
|
||||||
/* System Interface */
|
|
||||||
/* */
|
|
||||||
/* <Abstract> */
|
|
||||||
/* How FreeType manages memory and i/o. */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* This section contains various definitions related to memory */
|
|
||||||
/* management and i/o access. You need to understand this */
|
|
||||||
/* information if you want to use a custom memory manager or you own */
|
|
||||||
/* i/o streams. */
|
|
||||||
/* */
|
|
||||||
/*************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* M E M O R Y M A N A G E M E N T */
|
|
||||||
/* */
|
|
||||||
/*************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
*
|
|
||||||
* @type:
|
|
||||||
* FT_Memory
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* A handle to a given memory manager object, defined with an
|
|
||||||
* @FT_MemoryRec structure.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
typedef struct FT_MemoryRec_* FT_Memory;
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
*
|
|
||||||
* @functype:
|
|
||||||
* FT_Alloc_Func
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* A function used to allocate `size' bytes from `memory'.
|
|
||||||
*
|
|
||||||
* @input:
|
|
||||||
* memory ::
|
|
||||||
* A handle to the source memory manager.
|
|
||||||
*
|
|
||||||
* size ::
|
|
||||||
* The size in bytes to allocate.
|
|
||||||
*
|
|
||||||
* @return:
|
|
||||||
* Address of new memory block. 0~in case of failure.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
typedef void*
|
|
||||||
(*FT_Alloc_Func)( FT_Memory memory,
|
|
||||||
long size );
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
*
|
|
||||||
* @functype:
|
|
||||||
* FT_Free_Func
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* A function used to release a given block of memory.
|
|
||||||
*
|
|
||||||
* @input:
|
|
||||||
* memory ::
|
|
||||||
* A handle to the source memory manager.
|
|
||||||
*
|
|
||||||
* block ::
|
|
||||||
* The address of the target memory block.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
typedef void
|
|
||||||
(*FT_Free_Func)( FT_Memory memory,
|
|
||||||
void* block );
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
*
|
|
||||||
* @functype:
|
|
||||||
* FT_Realloc_Func
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* A function used to re-allocate a given block of memory.
|
|
||||||
*
|
|
||||||
* @input:
|
|
||||||
* memory ::
|
|
||||||
* A handle to the source memory manager.
|
|
||||||
*
|
|
||||||
* cur_size ::
|
|
||||||
* The block's current size in bytes.
|
|
||||||
*
|
|
||||||
* new_size ::
|
|
||||||
* The block's requested new size.
|
|
||||||
*
|
|
||||||
* block ::
|
|
||||||
* The block's current address.
|
|
||||||
*
|
|
||||||
* @return:
|
|
||||||
* New block address. 0~in case of memory shortage.
|
|
||||||
*
|
|
||||||
* @note:
|
|
||||||
* In case of error, the old block must still be available.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
typedef void*
|
|
||||||
(*FT_Realloc_Func)( FT_Memory memory,
|
|
||||||
long cur_size,
|
|
||||||
long new_size,
|
|
||||||
void* block );
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
*
|
|
||||||
* @struct:
|
|
||||||
* FT_MemoryRec
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* A structure used to describe a given memory manager to FreeType~2.
|
|
||||||
*
|
|
||||||
* @fields:
|
|
||||||
* user ::
|
|
||||||
* A generic typeless pointer for user data.
|
|
||||||
*
|
|
||||||
* alloc ::
|
|
||||||
* A pointer type to an allocation function.
|
|
||||||
*
|
|
||||||
* free ::
|
|
||||||
* A pointer type to an memory freeing function.
|
|
||||||
*
|
|
||||||
* realloc ::
|
|
||||||
* A pointer type to a reallocation function.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
struct FT_MemoryRec_
|
|
||||||
{
|
|
||||||
void* user;
|
|
||||||
FT_Alloc_Func alloc;
|
|
||||||
FT_Free_Func free;
|
|
||||||
FT_Realloc_Func realloc;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* I / O M A N A G E M E N T */
|
|
||||||
/* */
|
|
||||||
/*************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
*
|
|
||||||
* @type:
|
|
||||||
* FT_Stream
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* A handle to an input stream.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
typedef struct FT_StreamRec_* FT_Stream;
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
*
|
|
||||||
* @struct:
|
|
||||||
* FT_StreamDesc
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* A union type used to store either a long or a pointer. This is used
|
|
||||||
* to store a file descriptor or a `FILE*' in an input stream.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
typedef union FT_StreamDesc_
|
|
||||||
{
|
|
||||||
long value;
|
|
||||||
void* pointer;
|
|
||||||
|
|
||||||
} FT_StreamDesc;
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
*
|
|
||||||
* @functype:
|
|
||||||
* FT_Stream_IoFunc
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* A function used to seek and read data from a given input stream.
|
|
||||||
*
|
|
||||||
* @input:
|
|
||||||
* stream ::
|
|
||||||
* A handle to the source stream.
|
|
||||||
*
|
|
||||||
* offset ::
|
|
||||||
* The offset of read in stream (always from start).
|
|
||||||
*
|
|
||||||
* buffer ::
|
|
||||||
* The address of the read buffer.
|
|
||||||
*
|
|
||||||
* count ::
|
|
||||||
* The number of bytes to read from the stream.
|
|
||||||
*
|
|
||||||
* @return:
|
|
||||||
* The number of bytes effectively read by the stream.
|
|
||||||
*
|
|
||||||
* @note:
|
|
||||||
* This function might be called to perform a seek or skip operation
|
|
||||||
* with a `count' of~0. A non-zero return value then indicates an
|
|
||||||
* error.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
typedef unsigned long
|
|
||||||
(*FT_Stream_IoFunc)( FT_Stream stream,
|
|
||||||
unsigned long offset,
|
|
||||||
unsigned char* buffer,
|
|
||||||
unsigned long count );
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
*
|
|
||||||
* @functype:
|
|
||||||
* FT_Stream_CloseFunc
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* A function used to close a given input stream.
|
|
||||||
*
|
|
||||||
* @input:
|
|
||||||
* stream ::
|
|
||||||
* A handle to the target stream.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
typedef void
|
|
||||||
(*FT_Stream_CloseFunc)( FT_Stream stream );
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
*
|
|
||||||
* @struct:
|
|
||||||
* FT_StreamRec
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* A structure used to describe an input stream.
|
|
||||||
*
|
|
||||||
* @input:
|
|
||||||
* base ::
|
|
||||||
* For memory-based streams, this is the address of the first stream
|
|
||||||
* byte in memory. This field should always be set to NULL for
|
|
||||||
* disk-based streams.
|
|
||||||
*
|
|
||||||
* size ::
|
|
||||||
* The stream size in bytes.
|
|
||||||
*
|
|
||||||
* pos ::
|
|
||||||
* The current position within the stream.
|
|
||||||
*
|
|
||||||
* descriptor ::
|
|
||||||
* This field is a union that can hold an integer or a pointer. It is
|
|
||||||
* used by stream implementations to store file descriptors or `FILE*'
|
|
||||||
* pointers.
|
|
||||||
*
|
|
||||||
* pathname ::
|
|
||||||
* This field is completely ignored by FreeType. However, it is often
|
|
||||||
* useful during debugging to use it to store the stream's filename
|
|
||||||
* (where available).
|
|
||||||
*
|
|
||||||
* read ::
|
|
||||||
* The stream's input function.
|
|
||||||
*
|
|
||||||
* close ::
|
|
||||||
* The stream's close function.
|
|
||||||
*
|
|
||||||
* memory ::
|
|
||||||
* The memory manager to use to preload frames. This is set
|
|
||||||
* internally by FreeType and shouldn't be touched by stream
|
|
||||||
* implementations.
|
|
||||||
*
|
|
||||||
* cursor ::
|
|
||||||
* This field is set and used internally by FreeType when parsing
|
|
||||||
* frames.
|
|
||||||
*
|
|
||||||
* limit ::
|
|
||||||
* This field is set and used internally by FreeType when parsing
|
|
||||||
* frames.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
typedef struct FT_StreamRec_
|
|
||||||
{
|
|
||||||
unsigned char* base;
|
|
||||||
unsigned long size;
|
|
||||||
unsigned long pos;
|
|
||||||
|
|
||||||
FT_StreamDesc descriptor;
|
|
||||||
FT_StreamDesc pathname;
|
|
||||||
FT_Stream_IoFunc read;
|
|
||||||
FT_Stream_CloseFunc close;
|
|
||||||
|
|
||||||
FT_Memory memory;
|
|
||||||
unsigned char* cursor;
|
|
||||||
unsigned char* limit;
|
|
||||||
|
|
||||||
} FT_StreamRec;
|
|
||||||
|
|
||||||
|
|
||||||
/* */
|
|
||||||
|
|
||||||
|
|
||||||
FT_END_HEADER
|
|
||||||
|
|
||||||
#endif /* __FTSYSTEM_H__ */
|
|
||||||
|
|
||||||
|
|
||||||
/* END */
|
|
@ -1,350 +0,0 @@
|
|||||||
/***************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* fttrigon.h */
|
|
||||||
/* */
|
|
||||||
/* FreeType trigonometric functions (specification). */
|
|
||||||
/* */
|
|
||||||
/* Copyright 2001, 2003, 2005, 2007 by */
|
|
||||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
|
||||||
/* */
|
|
||||||
/* This file is part of the FreeType project, and may only be used, */
|
|
||||||
/* modified, and distributed under the terms of the FreeType project */
|
|
||||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
|
||||||
/* this file you indicate that you have read the license and */
|
|
||||||
/* understand and accept it fully. */
|
|
||||||
/* */
|
|
||||||
/***************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef __FTTRIGON_H__
|
|
||||||
#define __FTTRIGON_H__
|
|
||||||
|
|
||||||
#include FT_FREETYPE_H
|
|
||||||
|
|
||||||
#ifdef FREETYPE_H
|
|
||||||
#error "freetype.h of FreeType 1 has been loaded!"
|
|
||||||
#error "Please fix the directory search order for header files"
|
|
||||||
#error "so that freetype.h of FreeType 2 is found first."
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
FT_BEGIN_HEADER
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Section> */
|
|
||||||
/* computations */
|
|
||||||
/* */
|
|
||||||
/*************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
*
|
|
||||||
* @type:
|
|
||||||
* FT_Angle
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* This type is used to model angle values in FreeType. Note that the
|
|
||||||
* angle is a 16.16 fixed float value expressed in degrees.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
typedef FT_Fixed FT_Angle;
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
*
|
|
||||||
* @macro:
|
|
||||||
* FT_ANGLE_PI
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* The angle pi expressed in @FT_Angle units.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
#define FT_ANGLE_PI ( 180L << 16 )
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
*
|
|
||||||
* @macro:
|
|
||||||
* FT_ANGLE_2PI
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* The angle 2*pi expressed in @FT_Angle units.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
#define FT_ANGLE_2PI ( FT_ANGLE_PI * 2 )
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
*
|
|
||||||
* @macro:
|
|
||||||
* FT_ANGLE_PI2
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* The angle pi/2 expressed in @FT_Angle units.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
#define FT_ANGLE_PI2 ( FT_ANGLE_PI / 2 )
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
*
|
|
||||||
* @macro:
|
|
||||||
* FT_ANGLE_PI4
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* The angle pi/4 expressed in @FT_Angle units.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
#define FT_ANGLE_PI4 ( FT_ANGLE_PI / 4 )
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
*
|
|
||||||
* @function:
|
|
||||||
* FT_Sin
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* Return the sinus of a given angle in fixed point format.
|
|
||||||
*
|
|
||||||
* @input:
|
|
||||||
* angle ::
|
|
||||||
* The input angle.
|
|
||||||
*
|
|
||||||
* @return:
|
|
||||||
* The sinus value.
|
|
||||||
*
|
|
||||||
* @note:
|
|
||||||
* If you need both the sinus and cosinus for a given angle, use the
|
|
||||||
* function @FT_Vector_Unit.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
FT_EXPORT( FT_Fixed )
|
|
||||||
FT_Sin( FT_Angle angle );
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
*
|
|
||||||
* @function:
|
|
||||||
* FT_Cos
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* Return the cosinus of a given angle in fixed point format.
|
|
||||||
*
|
|
||||||
* @input:
|
|
||||||
* angle ::
|
|
||||||
* The input angle.
|
|
||||||
*
|
|
||||||
* @return:
|
|
||||||
* The cosinus value.
|
|
||||||
*
|
|
||||||
* @note:
|
|
||||||
* If you need both the sinus and cosinus for a given angle, use the
|
|
||||||
* function @FT_Vector_Unit.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
FT_EXPORT( FT_Fixed )
|
|
||||||
FT_Cos( FT_Angle angle );
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
*
|
|
||||||
* @function:
|
|
||||||
* FT_Tan
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* Return the tangent of a given angle in fixed point format.
|
|
||||||
*
|
|
||||||
* @input:
|
|
||||||
* angle ::
|
|
||||||
* The input angle.
|
|
||||||
*
|
|
||||||
* @return:
|
|
||||||
* The tangent value.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
FT_EXPORT( FT_Fixed )
|
|
||||||
FT_Tan( FT_Angle angle );
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
*
|
|
||||||
* @function:
|
|
||||||
* FT_Atan2
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* Return the arc-tangent corresponding to a given vector (x,y) in
|
|
||||||
* the 2d plane.
|
|
||||||
*
|
|
||||||
* @input:
|
|
||||||
* x ::
|
|
||||||
* The horizontal vector coordinate.
|
|
||||||
*
|
|
||||||
* y ::
|
|
||||||
* The vertical vector coordinate.
|
|
||||||
*
|
|
||||||
* @return:
|
|
||||||
* The arc-tangent value (i.e. angle).
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
FT_EXPORT( FT_Angle )
|
|
||||||
FT_Atan2( FT_Fixed x,
|
|
||||||
FT_Fixed y );
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
*
|
|
||||||
* @function:
|
|
||||||
* FT_Angle_Diff
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* Return the difference between two angles. The result is always
|
|
||||||
* constrained to the ]-PI..PI] interval.
|
|
||||||
*
|
|
||||||
* @input:
|
|
||||||
* angle1 ::
|
|
||||||
* First angle.
|
|
||||||
*
|
|
||||||
* angle2 ::
|
|
||||||
* Second angle.
|
|
||||||
*
|
|
||||||
* @return:
|
|
||||||
* Constrained value of `value2-value1'.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
FT_EXPORT( FT_Angle )
|
|
||||||
FT_Angle_Diff( FT_Angle angle1,
|
|
||||||
FT_Angle angle2 );
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
*
|
|
||||||
* @function:
|
|
||||||
* FT_Vector_Unit
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* Return the unit vector corresponding to a given angle. After the
|
|
||||||
* call, the value of `vec.x' will be `sin(angle)', and the value of
|
|
||||||
* `vec.y' will be `cos(angle)'.
|
|
||||||
*
|
|
||||||
* This function is useful to retrieve both the sinus and cosinus of a
|
|
||||||
* given angle quickly.
|
|
||||||
*
|
|
||||||
* @output:
|
|
||||||
* vec ::
|
|
||||||
* The address of target vector.
|
|
||||||
*
|
|
||||||
* @input:
|
|
||||||
* angle ::
|
|
||||||
* The address of angle.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
FT_EXPORT( void )
|
|
||||||
FT_Vector_Unit( FT_Vector* vec,
|
|
||||||
FT_Angle angle );
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
*
|
|
||||||
* @function:
|
|
||||||
* FT_Vector_Rotate
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* Rotate a vector by a given angle.
|
|
||||||
*
|
|
||||||
* @inout:
|
|
||||||
* vec ::
|
|
||||||
* The address of target vector.
|
|
||||||
*
|
|
||||||
* @input:
|
|
||||||
* angle ::
|
|
||||||
* The address of angle.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
FT_EXPORT( void )
|
|
||||||
FT_Vector_Rotate( FT_Vector* vec,
|
|
||||||
FT_Angle angle );
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
*
|
|
||||||
* @function:
|
|
||||||
* FT_Vector_Length
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* Return the length of a given vector.
|
|
||||||
*
|
|
||||||
* @input:
|
|
||||||
* vec ::
|
|
||||||
* The address of target vector.
|
|
||||||
*
|
|
||||||
* @return:
|
|
||||||
* The vector length, expressed in the same units that the original
|
|
||||||
* vector coordinates.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
FT_EXPORT( FT_Fixed )
|
|
||||||
FT_Vector_Length( FT_Vector* vec );
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
*
|
|
||||||
* @function:
|
|
||||||
* FT_Vector_Polarize
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* Compute both the length and angle of a given vector.
|
|
||||||
*
|
|
||||||
* @input:
|
|
||||||
* vec ::
|
|
||||||
* The address of source vector.
|
|
||||||
*
|
|
||||||
* @output:
|
|
||||||
* length ::
|
|
||||||
* The vector length.
|
|
||||||
*
|
|
||||||
* angle ::
|
|
||||||
* The vector angle.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
FT_EXPORT( void )
|
|
||||||
FT_Vector_Polarize( FT_Vector* vec,
|
|
||||||
FT_Fixed *length,
|
|
||||||
FT_Angle *angle );
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
*
|
|
||||||
* @function:
|
|
||||||
* FT_Vector_From_Polar
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* Compute vector coordinates from a length and angle.
|
|
||||||
*
|
|
||||||
* @output:
|
|
||||||
* vec ::
|
|
||||||
* The address of source vector.
|
|
||||||
*
|
|
||||||
* @input:
|
|
||||||
* length ::
|
|
||||||
* The vector length.
|
|
||||||
*
|
|
||||||
* angle ::
|
|
||||||
* The vector angle.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
FT_EXPORT( void )
|
|
||||||
FT_Vector_From_Polar( FT_Vector* vec,
|
|
||||||
FT_Fixed length,
|
|
||||||
FT_Angle angle );
|
|
||||||
|
|
||||||
/* */
|
|
||||||
|
|
||||||
|
|
||||||
FT_END_HEADER
|
|
||||||
|
|
||||||
#endif /* __FTTRIGON_H__ */
|
|
||||||
|
|
||||||
|
|
||||||
/* END */
|
|
@ -1,588 +0,0 @@
|
|||||||
/***************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* fttypes.h */
|
|
||||||
/* */
|
|
||||||
/* FreeType simple types definitions (specification only). */
|
|
||||||
/* */
|
|
||||||
/* Copyright 1996-2001, 2002, 2004, 2006, 2007, 2008 by */
|
|
||||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
|
||||||
/* */
|
|
||||||
/* This file is part of the FreeType project, and may only be used, */
|
|
||||||
/* modified, and distributed under the terms of the FreeType project */
|
|
||||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
|
||||||
/* this file you indicate that you have read the license and */
|
|
||||||
/* understand and accept it fully. */
|
|
||||||
/* */
|
|
||||||
/***************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef __FTTYPES_H__
|
|
||||||
#define __FTTYPES_H__
|
|
||||||
|
|
||||||
|
|
||||||
#include <ft2build.h>
|
|
||||||
#include FT_CONFIG_CONFIG_H
|
|
||||||
#include FT_SYSTEM_H
|
|
||||||
#include FT_IMAGE_H
|
|
||||||
|
|
||||||
#include <stddef.h>
|
|
||||||
|
|
||||||
|
|
||||||
FT_BEGIN_HEADER
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Section> */
|
|
||||||
/* basic_types */
|
|
||||||
/* */
|
|
||||||
/* <Title> */
|
|
||||||
/* Basic Data Types */
|
|
||||||
/* */
|
|
||||||
/* <Abstract> */
|
|
||||||
/* The basic data types defined by the library. */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* This section contains the basic data types defined by FreeType~2, */
|
|
||||||
/* ranging from simple scalar types to bitmap descriptors. More */
|
|
||||||
/* font-specific structures are defined in a different section. */
|
|
||||||
/* */
|
|
||||||
/* <Order> */
|
|
||||||
/* FT_Byte */
|
|
||||||
/* FT_Bytes */
|
|
||||||
/* FT_Char */
|
|
||||||
/* FT_Int */
|
|
||||||
/* FT_UInt */
|
|
||||||
/* FT_Int16 */
|
|
||||||
/* FT_UInt16 */
|
|
||||||
/* FT_Int32 */
|
|
||||||
/* FT_UInt32 */
|
|
||||||
/* FT_Short */
|
|
||||||
/* FT_UShort */
|
|
||||||
/* FT_Long */
|
|
||||||
/* FT_ULong */
|
|
||||||
/* FT_Bool */
|
|
||||||
/* FT_Offset */
|
|
||||||
/* FT_PtrDist */
|
|
||||||
/* FT_String */
|
|
||||||
/* FT_Tag */
|
|
||||||
/* FT_Error */
|
|
||||||
/* FT_Fixed */
|
|
||||||
/* FT_Pointer */
|
|
||||||
/* FT_Pos */
|
|
||||||
/* FT_Vector */
|
|
||||||
/* FT_BBox */
|
|
||||||
/* FT_Matrix */
|
|
||||||
/* FT_FWord */
|
|
||||||
/* FT_UFWord */
|
|
||||||
/* FT_F2Dot14 */
|
|
||||||
/* FT_UnitVector */
|
|
||||||
/* FT_F26Dot6 */
|
|
||||||
/* */
|
|
||||||
/* */
|
|
||||||
/* FT_Generic */
|
|
||||||
/* FT_Generic_Finalizer */
|
|
||||||
/* */
|
|
||||||
/* FT_Bitmap */
|
|
||||||
/* FT_Pixel_Mode */
|
|
||||||
/* FT_Palette_Mode */
|
|
||||||
/* FT_Glyph_Format */
|
|
||||||
/* FT_IMAGE_TAG */
|
|
||||||
/* */
|
|
||||||
/*************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Type> */
|
|
||||||
/* FT_Bool */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* A typedef of unsigned char, used for simple booleans. As usual, */
|
|
||||||
/* values 1 and~0 represent true and false, respectively. */
|
|
||||||
/* */
|
|
||||||
typedef unsigned char FT_Bool;
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Type> */
|
|
||||||
/* FT_FWord */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* A signed 16-bit integer used to store a distance in original font */
|
|
||||||
/* units. */
|
|
||||||
/* */
|
|
||||||
typedef signed short FT_FWord; /* distance in FUnits */
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Type> */
|
|
||||||
/* FT_UFWord */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* An unsigned 16-bit integer used to store a distance in original */
|
|
||||||
/* font units. */
|
|
||||||
/* */
|
|
||||||
typedef unsigned short FT_UFWord; /* unsigned distance */
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Type> */
|
|
||||||
/* FT_Char */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* A simple typedef for the _signed_ char type. */
|
|
||||||
/* */
|
|
||||||
typedef signed char FT_Char;
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Type> */
|
|
||||||
/* FT_Byte */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* A simple typedef for the _unsigned_ char type. */
|
|
||||||
/* */
|
|
||||||
typedef unsigned char FT_Byte;
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Type> */
|
|
||||||
/* FT_Bytes */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* A typedef for constant memory areas. */
|
|
||||||
/* */
|
|
||||||
typedef const FT_Byte* FT_Bytes;
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Type> */
|
|
||||||
/* FT_Tag */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* A typedef for 32-bit tags (as used in the SFNT format). */
|
|
||||||
/* */
|
|
||||||
typedef FT_UInt32 FT_Tag;
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Type> */
|
|
||||||
/* FT_String */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* A simple typedef for the char type, usually used for strings. */
|
|
||||||
/* */
|
|
||||||
typedef char FT_String;
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Type> */
|
|
||||||
/* FT_Short */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* A typedef for signed short. */
|
|
||||||
/* */
|
|
||||||
typedef signed short FT_Short;
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Type> */
|
|
||||||
/* FT_UShort */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* A typedef for unsigned short. */
|
|
||||||
/* */
|
|
||||||
typedef unsigned short FT_UShort;
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Type> */
|
|
||||||
/* FT_Int */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* A typedef for the int type. */
|
|
||||||
/* */
|
|
||||||
typedef signed int FT_Int;
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Type> */
|
|
||||||
/* FT_UInt */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* A typedef for the unsigned int type. */
|
|
||||||
/* */
|
|
||||||
typedef unsigned int FT_UInt;
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Type> */
|
|
||||||
/* FT_Long */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* A typedef for signed long. */
|
|
||||||
/* */
|
|
||||||
typedef signed long FT_Long;
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Type> */
|
|
||||||
/* FT_ULong */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* A typedef for unsigned long. */
|
|
||||||
/* */
|
|
||||||
typedef unsigned long FT_ULong;
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Type> */
|
|
||||||
/* FT_F2Dot14 */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* A signed 2.14 fixed float type used for unit vectors. */
|
|
||||||
/* */
|
|
||||||
typedef signed short FT_F2Dot14;
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Type> */
|
|
||||||
/* FT_F26Dot6 */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* A signed 26.6 fixed float type used for vectorial pixel */
|
|
||||||
/* coordinates. */
|
|
||||||
/* */
|
|
||||||
typedef signed long FT_F26Dot6;
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Type> */
|
|
||||||
/* FT_Fixed */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* This type is used to store 16.16 fixed float values, like scaling */
|
|
||||||
/* values or matrix coefficients. */
|
|
||||||
/* */
|
|
||||||
typedef signed long FT_Fixed;
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Type> */
|
|
||||||
/* FT_Error */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* The FreeType error code type. A value of~0 is always interpreted */
|
|
||||||
/* as a successful operation. */
|
|
||||||
/* */
|
|
||||||
typedef int FT_Error;
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Type> */
|
|
||||||
/* FT_Pointer */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* A simple typedef for a typeless pointer. */
|
|
||||||
/* */
|
|
||||||
typedef void* FT_Pointer;
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Type> */
|
|
||||||
/* FT_Offset */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* This is equivalent to the ANSI~C `size_t' type, i.e., the largest */
|
|
||||||
/* _unsigned_ integer type used to express a file size or position, */
|
|
||||||
/* or a memory block size. */
|
|
||||||
/* */
|
|
||||||
typedef size_t FT_Offset;
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Type> */
|
|
||||||
/* FT_PtrDist */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* This is equivalent to the ANSI~C `ptrdiff_t' type, i.e., the */
|
|
||||||
/* largest _signed_ integer type used to express the distance */
|
|
||||||
/* between two pointers. */
|
|
||||||
/* */
|
|
||||||
typedef ft_ptrdiff_t FT_PtrDist;
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Struct> */
|
|
||||||
/* FT_UnitVector */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* A simple structure used to store a 2D vector unit vector. Uses */
|
|
||||||
/* FT_F2Dot14 types. */
|
|
||||||
/* */
|
|
||||||
/* <Fields> */
|
|
||||||
/* x :: Horizontal coordinate. */
|
|
||||||
/* */
|
|
||||||
/* y :: Vertical coordinate. */
|
|
||||||
/* */
|
|
||||||
typedef struct FT_UnitVector_
|
|
||||||
{
|
|
||||||
FT_F2Dot14 x;
|
|
||||||
FT_F2Dot14 y;
|
|
||||||
|
|
||||||
} FT_UnitVector;
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Struct> */
|
|
||||||
/* FT_Matrix */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* A simple structure used to store a 2x2 matrix. Coefficients are */
|
|
||||||
/* in 16.16 fixed float format. The computation performed is: */
|
|
||||||
/* */
|
|
||||||
/* { */
|
|
||||||
/* x' = x*xx + y*xy */
|
|
||||||
/* y' = x*yx + y*yy */
|
|
||||||
/* } */
|
|
||||||
/* */
|
|
||||||
/* <Fields> */
|
|
||||||
/* xx :: Matrix coefficient. */
|
|
||||||
/* */
|
|
||||||
/* xy :: Matrix coefficient. */
|
|
||||||
/* */
|
|
||||||
/* yx :: Matrix coefficient. */
|
|
||||||
/* */
|
|
||||||
/* yy :: Matrix coefficient. */
|
|
||||||
/* */
|
|
||||||
typedef struct FT_Matrix_
|
|
||||||
{
|
|
||||||
FT_Fixed xx, xy;
|
|
||||||
FT_Fixed yx, yy;
|
|
||||||
|
|
||||||
} FT_Matrix;
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Struct> */
|
|
||||||
/* FT_Data */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* Read-only binary data represented as a pointer and a length. */
|
|
||||||
/* */
|
|
||||||
/* <Fields> */
|
|
||||||
/* pointer :: The data. */
|
|
||||||
/* */
|
|
||||||
/* length :: The length of the data in bytes. */
|
|
||||||
/* */
|
|
||||||
typedef struct FT_Data_
|
|
||||||
{
|
|
||||||
const FT_Byte* pointer;
|
|
||||||
FT_Int length;
|
|
||||||
|
|
||||||
} FT_Data;
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <FuncType> */
|
|
||||||
/* FT_Generic_Finalizer */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* Describe a function used to destroy the `client' data of any */
|
|
||||||
/* FreeType object. See the description of the @FT_Generic type for */
|
|
||||||
/* details of usage. */
|
|
||||||
/* */
|
|
||||||
/* <Input> */
|
|
||||||
/* The address of the FreeType object which is under finalization. */
|
|
||||||
/* Its client data is accessed through its `generic' field. */
|
|
||||||
/* */
|
|
||||||
typedef void (*FT_Generic_Finalizer)(void* object);
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Struct> */
|
|
||||||
/* FT_Generic */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* Client applications often need to associate their own data to a */
|
|
||||||
/* variety of FreeType core objects. For example, a text layout API */
|
|
||||||
/* might want to associate a glyph cache to a given size object. */
|
|
||||||
/* */
|
|
||||||
/* Most FreeType object contains a `generic' field, of type */
|
|
||||||
/* FT_Generic, which usage is left to client applications and font */
|
|
||||||
/* servers. */
|
|
||||||
/* */
|
|
||||||
/* It can be used to store a pointer to client-specific data, as well */
|
|
||||||
/* as the address of a `finalizer' function, which will be called by */
|
|
||||||
/* FreeType when the object is destroyed (for example, the previous */
|
|
||||||
/* client example would put the address of the glyph cache destructor */
|
|
||||||
/* in the `finalizer' field). */
|
|
||||||
/* */
|
|
||||||
/* <Fields> */
|
|
||||||
/* data :: A typeless pointer to any client-specified data. This */
|
|
||||||
/* field is completely ignored by the FreeType library. */
|
|
||||||
/* */
|
|
||||||
/* finalizer :: A pointer to a `generic finalizer' function, which */
|
|
||||||
/* will be called when the object is destroyed. If this */
|
|
||||||
/* field is set to NULL, no code will be called. */
|
|
||||||
/* */
|
|
||||||
typedef struct FT_Generic_
|
|
||||||
{
|
|
||||||
void* data;
|
|
||||||
FT_Generic_Finalizer finalizer;
|
|
||||||
|
|
||||||
} FT_Generic;
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Macro> */
|
|
||||||
/* FT_MAKE_TAG */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* This macro converts four-letter tags which are used to label */
|
|
||||||
/* TrueType tables into an unsigned long to be used within FreeType. */
|
|
||||||
/* */
|
|
||||||
/* <Note> */
|
|
||||||
/* The produced values *must* be 32-bit integers. Don't redefine */
|
|
||||||
/* this macro. */
|
|
||||||
/* */
|
|
||||||
#define FT_MAKE_TAG( _x1, _x2, _x3, _x4 ) \
|
|
||||||
(FT_Tag) \
|
|
||||||
( ( (FT_ULong)_x1 << 24 ) | \
|
|
||||||
( (FT_ULong)_x2 << 16 ) | \
|
|
||||||
( (FT_ULong)_x3 << 8 ) | \
|
|
||||||
(FT_ULong)_x4 )
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* L I S T M A N A G E M E N T */
|
|
||||||
/* */
|
|
||||||
/*************************************************************************/
|
|
||||||
/*************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Section> */
|
|
||||||
/* list_processing */
|
|
||||||
/* */
|
|
||||||
/*************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Type> */
|
|
||||||
/* FT_ListNode */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* Many elements and objects in FreeType are listed through an */
|
|
||||||
/* @FT_List record (see @FT_ListRec). As its name suggests, an */
|
|
||||||
/* FT_ListNode is a handle to a single list element. */
|
|
||||||
/* */
|
|
||||||
typedef struct FT_ListNodeRec_* FT_ListNode;
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Type> */
|
|
||||||
/* FT_List */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* A handle to a list record (see @FT_ListRec). */
|
|
||||||
/* */
|
|
||||||
typedef struct FT_ListRec_* FT_List;
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Struct> */
|
|
||||||
/* FT_ListNodeRec */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* A structure used to hold a single list element. */
|
|
||||||
/* */
|
|
||||||
/* <Fields> */
|
|
||||||
/* prev :: The previous element in the list. NULL if first. */
|
|
||||||
/* */
|
|
||||||
/* next :: The next element in the list. NULL if last. */
|
|
||||||
/* */
|
|
||||||
/* data :: A typeless pointer to the listed object. */
|
|
||||||
/* */
|
|
||||||
typedef struct FT_ListNodeRec_
|
|
||||||
{
|
|
||||||
FT_ListNode prev;
|
|
||||||
FT_ListNode next;
|
|
||||||
void* data;
|
|
||||||
|
|
||||||
} FT_ListNodeRec;
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Struct> */
|
|
||||||
/* FT_ListRec */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* A structure used to hold a simple doubly-linked list. These are */
|
|
||||||
/* used in many parts of FreeType. */
|
|
||||||
/* */
|
|
||||||
/* <Fields> */
|
|
||||||
/* head :: The head (first element) of doubly-linked list. */
|
|
||||||
/* */
|
|
||||||
/* tail :: The tail (last element) of doubly-linked list. */
|
|
||||||
/* */
|
|
||||||
typedef struct FT_ListRec_
|
|
||||||
{
|
|
||||||
FT_ListNode head;
|
|
||||||
FT_ListNode tail;
|
|
||||||
|
|
||||||
} FT_ListRec;
|
|
||||||
|
|
||||||
|
|
||||||
/* */
|
|
||||||
|
|
||||||
#define FT_IS_EMPTY( list ) ( (list).head == 0 )
|
|
||||||
|
|
||||||
/* return base error code (without module-specific prefix) */
|
|
||||||
#define FT_ERROR_BASE( x ) ( (x) & 0xFF )
|
|
||||||
|
|
||||||
/* return module error code */
|
|
||||||
#define FT_ERROR_MODULE( x ) ( (x) & 0xFF00U )
|
|
||||||
|
|
||||||
#define FT_BOOL( x ) ( (FT_Bool)( x ) )
|
|
||||||
|
|
||||||
FT_END_HEADER
|
|
||||||
|
|
||||||
#endif /* __FTTYPES_H__ */
|
|
||||||
|
|
||||||
|
|
||||||
/* END */
|
|
@ -1,274 +0,0 @@
|
|||||||
/***************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* ftwinfnt.h */
|
|
||||||
/* */
|
|
||||||
/* FreeType API for accessing Windows fnt-specific data. */
|
|
||||||
/* */
|
|
||||||
/* Copyright 2003, 2004, 2008 by */
|
|
||||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
|
||||||
/* */
|
|
||||||
/* This file is part of the FreeType project, and may only be used, */
|
|
||||||
/* modified, and distributed under the terms of the FreeType project */
|
|
||||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
|
||||||
/* this file you indicate that you have read the license and */
|
|
||||||
/* understand and accept it fully. */
|
|
||||||
/* */
|
|
||||||
/***************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef __FTWINFNT_H__
|
|
||||||
#define __FTWINFNT_H__
|
|
||||||
|
|
||||||
#include <ft2build.h>
|
|
||||||
#include FT_FREETYPE_H
|
|
||||||
|
|
||||||
#ifdef FREETYPE_H
|
|
||||||
#error "freetype.h of FreeType 1 has been loaded!"
|
|
||||||
#error "Please fix the directory search order for header files"
|
|
||||||
#error "so that freetype.h of FreeType 2 is found first."
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
FT_BEGIN_HEADER
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Section> */
|
|
||||||
/* winfnt_fonts */
|
|
||||||
/* */
|
|
||||||
/* <Title> */
|
|
||||||
/* Window FNT Files */
|
|
||||||
/* */
|
|
||||||
/* <Abstract> */
|
|
||||||
/* Windows FNT specific API. */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* This section contains the declaration of Windows FNT specific */
|
|
||||||
/* functions. */
|
|
||||||
/* */
|
|
||||||
/*************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
*
|
|
||||||
* @enum:
|
|
||||||
* FT_WinFNT_ID_XXX
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* A list of valid values for the `charset' byte in
|
|
||||||
* @FT_WinFNT_HeaderRec. Exact mapping tables for the various cpXXXX
|
|
||||||
* encodings (except for cp1361) can be found at ftp://ftp.unicode.org
|
|
||||||
* in the MAPPINGS/VENDORS/MICSFT/WINDOWS subdirectory. cp1361 is
|
|
||||||
* roughly a superset of MAPPINGS/OBSOLETE/EASTASIA/KSC/JOHAB.TXT.
|
|
||||||
*
|
|
||||||
* @values:
|
|
||||||
* FT_WinFNT_ID_DEFAULT ::
|
|
||||||
* This is used for font enumeration and font creation as a
|
|
||||||
* `don't care' value. Valid font files don't contain this value.
|
|
||||||
* When querying for information about the character set of the font
|
|
||||||
* that is currently selected into a specified device context, this
|
|
||||||
* return value (of the related Windows API) simply denotes failure.
|
|
||||||
*
|
|
||||||
* FT_WinFNT_ID_SYMBOL ::
|
|
||||||
* There is no known mapping table available.
|
|
||||||
*
|
|
||||||
* FT_WinFNT_ID_MAC ::
|
|
||||||
* Mac Roman encoding.
|
|
||||||
*
|
|
||||||
* FT_WinFNT_ID_OEM ::
|
|
||||||
* From Michael Pöttgen <michael@poettgen.de>:
|
|
||||||
*
|
|
||||||
* The `Windows Font Mapping' article says that FT_WinFNT_ID_OEM
|
|
||||||
* is used for the charset of vector fonts, like `modern.fon',
|
|
||||||
* `roman.fon', and `script.fon' on Windows.
|
|
||||||
*
|
|
||||||
* The `CreateFont' documentation says: The FT_WinFNT_ID_OEM value
|
|
||||||
* specifies a character set that is operating-system dependent.
|
|
||||||
*
|
|
||||||
* The `IFIMETRICS' documentation from the `Windows Driver
|
|
||||||
* Development Kit' says: This font supports an OEM-specific
|
|
||||||
* character set. The OEM character set is system dependent.
|
|
||||||
*
|
|
||||||
* In general OEM, as opposed to ANSI (i.e., cp1252), denotes the
|
|
||||||
* second default codepage that most international versions of
|
|
||||||
* Windows have. It is one of the OEM codepages from
|
|
||||||
*
|
|
||||||
* http://www.microsoft.com/globaldev/reference/cphome.mspx,
|
|
||||||
*
|
|
||||||
* and is used for the `DOS boxes', to support legacy applications.
|
|
||||||
* A German Windows version for example usually uses ANSI codepage
|
|
||||||
* 1252 and OEM codepage 850.
|
|
||||||
*
|
|
||||||
* FT_WinFNT_ID_CP874 ::
|
|
||||||
* A superset of Thai TIS 620 and ISO 8859-11.
|
|
||||||
*
|
|
||||||
* FT_WinFNT_ID_CP932 ::
|
|
||||||
* A superset of Japanese Shift-JIS (with minor deviations).
|
|
||||||
*
|
|
||||||
* FT_WinFNT_ID_CP936 ::
|
|
||||||
* A superset of simplified Chinese GB 2312-1980 (with different
|
|
||||||
* ordering and minor deviations).
|
|
||||||
*
|
|
||||||
* FT_WinFNT_ID_CP949 ::
|
|
||||||
* A superset of Korean Hangul KS~C 5601-1987 (with different
|
|
||||||
* ordering and minor deviations).
|
|
||||||
*
|
|
||||||
* FT_WinFNT_ID_CP950 ::
|
|
||||||
* A superset of traditional Chinese Big~5 ETen (with different
|
|
||||||
* ordering and minor deviations).
|
|
||||||
*
|
|
||||||
* FT_WinFNT_ID_CP1250 ::
|
|
||||||
* A superset of East European ISO 8859-2 (with slightly different
|
|
||||||
* ordering).
|
|
||||||
*
|
|
||||||
* FT_WinFNT_ID_CP1251 ::
|
|
||||||
* A superset of Russian ISO 8859-5 (with different ordering).
|
|
||||||
*
|
|
||||||
* FT_WinFNT_ID_CP1252 ::
|
|
||||||
* ANSI encoding. A superset of ISO 8859-1.
|
|
||||||
*
|
|
||||||
* FT_WinFNT_ID_CP1253 ::
|
|
||||||
* A superset of Greek ISO 8859-7 (with minor modifications).
|
|
||||||
*
|
|
||||||
* FT_WinFNT_ID_CP1254 ::
|
|
||||||
* A superset of Turkish ISO 8859-9.
|
|
||||||
*
|
|
||||||
* FT_WinFNT_ID_CP1255 ::
|
|
||||||
* A superset of Hebrew ISO 8859-8 (with some modifications).
|
|
||||||
*
|
|
||||||
* FT_WinFNT_ID_CP1256 ::
|
|
||||||
* A superset of Arabic ISO 8859-6 (with different ordering).
|
|
||||||
*
|
|
||||||
* FT_WinFNT_ID_CP1257 ::
|
|
||||||
* A superset of Baltic ISO 8859-13 (with some deviations).
|
|
||||||
*
|
|
||||||
* FT_WinFNT_ID_CP1258 ::
|
|
||||||
* For Vietnamese. This encoding doesn't cover all necessary
|
|
||||||
* characters.
|
|
||||||
*
|
|
||||||
* FT_WinFNT_ID_CP1361 ::
|
|
||||||
* Korean (Johab).
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define FT_WinFNT_ID_CP1252 0
|
|
||||||
#define FT_WinFNT_ID_DEFAULT 1
|
|
||||||
#define FT_WinFNT_ID_SYMBOL 2
|
|
||||||
#define FT_WinFNT_ID_MAC 77
|
|
||||||
#define FT_WinFNT_ID_CP932 128
|
|
||||||
#define FT_WinFNT_ID_CP949 129
|
|
||||||
#define FT_WinFNT_ID_CP1361 130
|
|
||||||
#define FT_WinFNT_ID_CP936 134
|
|
||||||
#define FT_WinFNT_ID_CP950 136
|
|
||||||
#define FT_WinFNT_ID_CP1253 161
|
|
||||||
#define FT_WinFNT_ID_CP1254 162
|
|
||||||
#define FT_WinFNT_ID_CP1258 163
|
|
||||||
#define FT_WinFNT_ID_CP1255 177
|
|
||||||
#define FT_WinFNT_ID_CP1256 178
|
|
||||||
#define FT_WinFNT_ID_CP1257 186
|
|
||||||
#define FT_WinFNT_ID_CP1251 204
|
|
||||||
#define FT_WinFNT_ID_CP874 222
|
|
||||||
#define FT_WinFNT_ID_CP1250 238
|
|
||||||
#define FT_WinFNT_ID_OEM 255
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Struct> */
|
|
||||||
/* FT_WinFNT_HeaderRec */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* Windows FNT Header info. */
|
|
||||||
/* */
|
|
||||||
typedef struct FT_WinFNT_HeaderRec_
|
|
||||||
{
|
|
||||||
FT_UShort version;
|
|
||||||
FT_ULong file_size;
|
|
||||||
FT_Byte copyright[60];
|
|
||||||
FT_UShort file_type;
|
|
||||||
FT_UShort nominal_point_size;
|
|
||||||
FT_UShort vertical_resolution;
|
|
||||||
FT_UShort horizontal_resolution;
|
|
||||||
FT_UShort ascent;
|
|
||||||
FT_UShort internal_leading;
|
|
||||||
FT_UShort external_leading;
|
|
||||||
FT_Byte italic;
|
|
||||||
FT_Byte underline;
|
|
||||||
FT_Byte strike_out;
|
|
||||||
FT_UShort weight;
|
|
||||||
FT_Byte charset;
|
|
||||||
FT_UShort pixel_width;
|
|
||||||
FT_UShort pixel_height;
|
|
||||||
FT_Byte pitch_and_family;
|
|
||||||
FT_UShort avg_width;
|
|
||||||
FT_UShort max_width;
|
|
||||||
FT_Byte first_char;
|
|
||||||
FT_Byte last_char;
|
|
||||||
FT_Byte default_char;
|
|
||||||
FT_Byte break_char;
|
|
||||||
FT_UShort bytes_per_row;
|
|
||||||
FT_ULong device_offset;
|
|
||||||
FT_ULong face_name_offset;
|
|
||||||
FT_ULong bits_pointer;
|
|
||||||
FT_ULong bits_offset;
|
|
||||||
FT_Byte reserved;
|
|
||||||
FT_ULong flags;
|
|
||||||
FT_UShort A_space;
|
|
||||||
FT_UShort B_space;
|
|
||||||
FT_UShort C_space;
|
|
||||||
FT_UShort color_table_offset;
|
|
||||||
FT_ULong reserved1[4];
|
|
||||||
|
|
||||||
} FT_WinFNT_HeaderRec;
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Struct> */
|
|
||||||
/* FT_WinFNT_Header */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* A handle to an @FT_WinFNT_HeaderRec structure. */
|
|
||||||
/* */
|
|
||||||
typedef struct FT_WinFNT_HeaderRec_* FT_WinFNT_Header;
|
|
||||||
|
|
||||||
|
|
||||||
/**********************************************************************
|
|
||||||
*
|
|
||||||
* @function:
|
|
||||||
* FT_Get_WinFNT_Header
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* Retrieve a Windows FNT font info header.
|
|
||||||
*
|
|
||||||
* @input:
|
|
||||||
* face :: A handle to the input face.
|
|
||||||
*
|
|
||||||
* @output:
|
|
||||||
* aheader :: The WinFNT header.
|
|
||||||
*
|
|
||||||
* @return:
|
|
||||||
* FreeType error code. 0~means success.
|
|
||||||
*
|
|
||||||
* @note:
|
|
||||||
* This function only works with Windows FNT faces, returning an error
|
|
||||||
* otherwise.
|
|
||||||
*/
|
|
||||||
FT_EXPORT( FT_Error )
|
|
||||||
FT_Get_WinFNT_Header( FT_Face face,
|
|
||||||
FT_WinFNT_HeaderRec *aheader );
|
|
||||||
|
|
||||||
|
|
||||||
/* */
|
|
||||||
|
|
||||||
FT_END_HEADER
|
|
||||||
|
|
||||||
#endif /* __FTWINFNT_H__ */
|
|
||||||
|
|
||||||
|
|
||||||
/* END */
|
|
||||||
|
|
||||||
|
|
||||||
/* Local Variables: */
|
|
||||||
/* coding: utf-8 */
|
|
||||||
/* End: */
|
|
@ -1,83 +0,0 @@
|
|||||||
/***************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* ftxf86.h */
|
|
||||||
/* */
|
|
||||||
/* Support functions for X11. */
|
|
||||||
/* */
|
|
||||||
/* Copyright 2002, 2003, 2004, 2006, 2007 by */
|
|
||||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
|
||||||
/* */
|
|
||||||
/* This file is part of the FreeType project, and may only be used, */
|
|
||||||
/* modified, and distributed under the terms of the FreeType project */
|
|
||||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
|
||||||
/* this file you indicate that you have read the license and */
|
|
||||||
/* understand and accept it fully. */
|
|
||||||
/* */
|
|
||||||
/***************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef __FTXF86_H__
|
|
||||||
#define __FTXF86_H__
|
|
||||||
|
|
||||||
#include <ft2build.h>
|
|
||||||
#include FT_FREETYPE_H
|
|
||||||
|
|
||||||
#ifdef FREETYPE_H
|
|
||||||
#error "freetype.h of FreeType 1 has been loaded!"
|
|
||||||
#error "Please fix the directory search order for header files"
|
|
||||||
#error "so that freetype.h of FreeType 2 is found first."
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
FT_BEGIN_HEADER
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Section> */
|
|
||||||
/* font_formats */
|
|
||||||
/* */
|
|
||||||
/* <Title> */
|
|
||||||
/* Font Formats */
|
|
||||||
/* */
|
|
||||||
/* <Abstract> */
|
|
||||||
/* Getting the font format. */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* The single function in this section can be used to get the font */
|
|
||||||
/* format. Note that this information is not needed normally; */
|
|
||||||
/* however, there are special cases (like in PDF devices) where it is */
|
|
||||||
/* important to differentiate, in spite of FreeType's uniform API. */
|
|
||||||
/* */
|
|
||||||
/* This function is in the X11/xf86 namespace for historical reasons */
|
|
||||||
/* and in no way depends on that windowing system. */
|
|
||||||
/* */
|
|
||||||
/*************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Function> */
|
|
||||||
/* FT_Get_X11_Font_Format */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* Return a string describing the format of a given face, using values */
|
|
||||||
/* which can be used as an X11 FONT_PROPERTY. Possible values are */
|
|
||||||
/* `TrueType', `Type~1', `BDF', `PCF', `Type~42', `CID~Type~1', `CFF', */
|
|
||||||
/* `PFR', and `Windows~FNT'. */
|
|
||||||
/* */
|
|
||||||
/* <Input> */
|
|
||||||
/* face :: */
|
|
||||||
/* Input face handle. */
|
|
||||||
/* */
|
|
||||||
/* <Return> */
|
|
||||||
/* Font format string. NULL in case of error. */
|
|
||||||
/* */
|
|
||||||
FT_EXPORT( const char* )
|
|
||||||
FT_Get_X11_Font_Format( FT_Face face );
|
|
||||||
|
|
||||||
/* */
|
|
||||||
|
|
||||||
FT_END_HEADER
|
|
||||||
|
|
||||||
#endif /* __FTXF86_H__ */
|
|
@ -1,504 +0,0 @@
|
|||||||
/***************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* t1tables.h */
|
|
||||||
/* */
|
|
||||||
/* Basic Type 1/Type 2 tables definitions and interface (specification */
|
|
||||||
/* only). */
|
|
||||||
/* */
|
|
||||||
/* Copyright 1996-2001, 2002, 2003, 2004, 2006, 2008, 2009 by */
|
|
||||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
|
||||||
/* */
|
|
||||||
/* This file is part of the FreeType project, and may only be used, */
|
|
||||||
/* modified, and distributed under the terms of the FreeType project */
|
|
||||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
|
||||||
/* this file you indicate that you have read the license and */
|
|
||||||
/* understand and accept it fully. */
|
|
||||||
/* */
|
|
||||||
/***************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef __T1TABLES_H__
|
|
||||||
#define __T1TABLES_H__
|
|
||||||
|
|
||||||
|
|
||||||
#include <ft2build.h>
|
|
||||||
#include FT_FREETYPE_H
|
|
||||||
|
|
||||||
#ifdef FREETYPE_H
|
|
||||||
#error "freetype.h of FreeType 1 has been loaded!"
|
|
||||||
#error "Please fix the directory search order for header files"
|
|
||||||
#error "so that freetype.h of FreeType 2 is found first."
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
FT_BEGIN_HEADER
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Section> */
|
|
||||||
/* type1_tables */
|
|
||||||
/* */
|
|
||||||
/* <Title> */
|
|
||||||
/* Type 1 Tables */
|
|
||||||
/* */
|
|
||||||
/* <Abstract> */
|
|
||||||
/* Type~1 (PostScript) specific font tables. */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* This section contains the definition of Type 1-specific tables, */
|
|
||||||
/* including structures related to other PostScript font formats. */
|
|
||||||
/* */
|
|
||||||
/*************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
/* Note that we separate font data in PS_FontInfoRec and PS_PrivateRec */
|
|
||||||
/* structures in order to support Multiple Master fonts. */
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Struct> */
|
|
||||||
/* PS_FontInfoRec */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* A structure used to model a Type~1 or Type~2 FontInfo dictionary. */
|
|
||||||
/* Note that for Multiple Master fonts, each instance has its own */
|
|
||||||
/* FontInfo dictionary. */
|
|
||||||
/* */
|
|
||||||
typedef struct PS_FontInfoRec_
|
|
||||||
{
|
|
||||||
FT_String* version;
|
|
||||||
FT_String* notice;
|
|
||||||
FT_String* full_name;
|
|
||||||
FT_String* family_name;
|
|
||||||
FT_String* weight;
|
|
||||||
FT_Long italic_angle;
|
|
||||||
FT_Bool is_fixed_pitch;
|
|
||||||
FT_Short underline_position;
|
|
||||||
FT_UShort underline_thickness;
|
|
||||||
|
|
||||||
} PS_FontInfoRec;
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Struct> */
|
|
||||||
/* PS_FontInfo */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* A handle to a @PS_FontInfoRec structure. */
|
|
||||||
/* */
|
|
||||||
typedef struct PS_FontInfoRec_* PS_FontInfo;
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Struct> */
|
|
||||||
/* T1_FontInfo */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* This type is equivalent to @PS_FontInfoRec. It is deprecated but */
|
|
||||||
/* kept to maintain source compatibility between various versions of */
|
|
||||||
/* FreeType. */
|
|
||||||
/* */
|
|
||||||
typedef PS_FontInfoRec T1_FontInfo;
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Struct> */
|
|
||||||
/* PS_PrivateRec */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* A structure used to model a Type~1 or Type~2 private dictionary. */
|
|
||||||
/* Note that for Multiple Master fonts, each instance has its own */
|
|
||||||
/* Private dictionary. */
|
|
||||||
/* */
|
|
||||||
typedef struct PS_PrivateRec_
|
|
||||||
{
|
|
||||||
FT_Int unique_id;
|
|
||||||
FT_Int lenIV;
|
|
||||||
|
|
||||||
FT_Byte num_blue_values;
|
|
||||||
FT_Byte num_other_blues;
|
|
||||||
FT_Byte num_family_blues;
|
|
||||||
FT_Byte num_family_other_blues;
|
|
||||||
|
|
||||||
FT_Short blue_values[14];
|
|
||||||
FT_Short other_blues[10];
|
|
||||||
|
|
||||||
FT_Short family_blues [14];
|
|
||||||
FT_Short family_other_blues[10];
|
|
||||||
|
|
||||||
FT_Fixed blue_scale;
|
|
||||||
FT_Int blue_shift;
|
|
||||||
FT_Int blue_fuzz;
|
|
||||||
|
|
||||||
FT_UShort standard_width[1];
|
|
||||||
FT_UShort standard_height[1];
|
|
||||||
|
|
||||||
FT_Byte num_snap_widths;
|
|
||||||
FT_Byte num_snap_heights;
|
|
||||||
FT_Bool force_bold;
|
|
||||||
FT_Bool round_stem_up;
|
|
||||||
|
|
||||||
FT_Short snap_widths [13]; /* including std width */
|
|
||||||
FT_Short snap_heights[13]; /* including std height */
|
|
||||||
|
|
||||||
FT_Fixed expansion_factor;
|
|
||||||
|
|
||||||
FT_Long language_group;
|
|
||||||
FT_Long password;
|
|
||||||
|
|
||||||
FT_Short min_feature[2];
|
|
||||||
|
|
||||||
} PS_PrivateRec;
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Struct> */
|
|
||||||
/* PS_Private */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* A handle to a @PS_PrivateRec structure. */
|
|
||||||
/* */
|
|
||||||
typedef struct PS_PrivateRec_* PS_Private;
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Struct> */
|
|
||||||
/* T1_Private */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* This type is equivalent to @PS_PrivateRec. It is deprecated but */
|
|
||||||
/* kept to maintain source compatibility between various versions of */
|
|
||||||
/* FreeType. */
|
|
||||||
/* */
|
|
||||||
typedef PS_PrivateRec T1_Private;
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Enum> */
|
|
||||||
/* T1_Blend_Flags */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* A set of flags used to indicate which fields are present in a */
|
|
||||||
/* given blend dictionary (font info or private). Used to support */
|
|
||||||
/* Multiple Masters fonts. */
|
|
||||||
/* */
|
|
||||||
typedef enum T1_Blend_Flags_
|
|
||||||
{
|
|
||||||
/*# required fields in a FontInfo blend dictionary */
|
|
||||||
T1_BLEND_UNDERLINE_POSITION = 0,
|
|
||||||
T1_BLEND_UNDERLINE_THICKNESS,
|
|
||||||
T1_BLEND_ITALIC_ANGLE,
|
|
||||||
|
|
||||||
/*# required fields in a Private blend dictionary */
|
|
||||||
T1_BLEND_BLUE_VALUES,
|
|
||||||
T1_BLEND_OTHER_BLUES,
|
|
||||||
T1_BLEND_STANDARD_WIDTH,
|
|
||||||
T1_BLEND_STANDARD_HEIGHT,
|
|
||||||
T1_BLEND_STEM_SNAP_WIDTHS,
|
|
||||||
T1_BLEND_STEM_SNAP_HEIGHTS,
|
|
||||||
T1_BLEND_BLUE_SCALE,
|
|
||||||
T1_BLEND_BLUE_SHIFT,
|
|
||||||
T1_BLEND_FAMILY_BLUES,
|
|
||||||
T1_BLEND_FAMILY_OTHER_BLUES,
|
|
||||||
T1_BLEND_FORCE_BOLD,
|
|
||||||
|
|
||||||
/*# never remove */
|
|
||||||
T1_BLEND_MAX
|
|
||||||
|
|
||||||
} T1_Blend_Flags;
|
|
||||||
|
|
||||||
/* */
|
|
||||||
|
|
||||||
|
|
||||||
/*# backwards compatible definitions */
|
|
||||||
#define t1_blend_underline_position T1_BLEND_UNDERLINE_POSITION
|
|
||||||
#define t1_blend_underline_thickness T1_BLEND_UNDERLINE_THICKNESS
|
|
||||||
#define t1_blend_italic_angle T1_BLEND_ITALIC_ANGLE
|
|
||||||
#define t1_blend_blue_values T1_BLEND_BLUE_VALUES
|
|
||||||
#define t1_blend_other_blues T1_BLEND_OTHER_BLUES
|
|
||||||
#define t1_blend_standard_widths T1_BLEND_STANDARD_WIDTH
|
|
||||||
#define t1_blend_standard_height T1_BLEND_STANDARD_HEIGHT
|
|
||||||
#define t1_blend_stem_snap_widths T1_BLEND_STEM_SNAP_WIDTHS
|
|
||||||
#define t1_blend_stem_snap_heights T1_BLEND_STEM_SNAP_HEIGHTS
|
|
||||||
#define t1_blend_blue_scale T1_BLEND_BLUE_SCALE
|
|
||||||
#define t1_blend_blue_shift T1_BLEND_BLUE_SHIFT
|
|
||||||
#define t1_blend_family_blues T1_BLEND_FAMILY_BLUES
|
|
||||||
#define t1_blend_family_other_blues T1_BLEND_FAMILY_OTHER_BLUES
|
|
||||||
#define t1_blend_force_bold T1_BLEND_FORCE_BOLD
|
|
||||||
#define t1_blend_max T1_BLEND_MAX
|
|
||||||
|
|
||||||
|
|
||||||
/* maximum number of Multiple Masters designs, as defined in the spec */
|
|
||||||
#define T1_MAX_MM_DESIGNS 16
|
|
||||||
|
|
||||||
/* maximum number of Multiple Masters axes, as defined in the spec */
|
|
||||||
#define T1_MAX_MM_AXIS 4
|
|
||||||
|
|
||||||
/* maximum number of elements in a design map */
|
|
||||||
#define T1_MAX_MM_MAP_POINTS 20
|
|
||||||
|
|
||||||
|
|
||||||
/* this structure is used to store the BlendDesignMap entry for an axis */
|
|
||||||
typedef struct PS_DesignMap_
|
|
||||||
{
|
|
||||||
FT_Byte num_points;
|
|
||||||
FT_Long* design_points;
|
|
||||||
FT_Fixed* blend_points;
|
|
||||||
|
|
||||||
} PS_DesignMapRec, *PS_DesignMap;
|
|
||||||
|
|
||||||
/* backwards-compatible definition */
|
|
||||||
typedef PS_DesignMapRec T1_DesignMap;
|
|
||||||
|
|
||||||
|
|
||||||
typedef struct PS_BlendRec_
|
|
||||||
{
|
|
||||||
FT_UInt num_designs;
|
|
||||||
FT_UInt num_axis;
|
|
||||||
|
|
||||||
FT_String* axis_names[T1_MAX_MM_AXIS];
|
|
||||||
FT_Fixed* design_pos[T1_MAX_MM_DESIGNS];
|
|
||||||
PS_DesignMapRec design_map[T1_MAX_MM_AXIS];
|
|
||||||
|
|
||||||
FT_Fixed* weight_vector;
|
|
||||||
FT_Fixed* default_weight_vector;
|
|
||||||
|
|
||||||
PS_FontInfo font_infos[T1_MAX_MM_DESIGNS + 1];
|
|
||||||
PS_Private privates [T1_MAX_MM_DESIGNS + 1];
|
|
||||||
|
|
||||||
FT_ULong blend_bitflags;
|
|
||||||
|
|
||||||
FT_BBox* bboxes [T1_MAX_MM_DESIGNS + 1];
|
|
||||||
|
|
||||||
/* since 2.3.0 */
|
|
||||||
|
|
||||||
/* undocumented, optional: the default design instance; */
|
|
||||||
/* corresponds to default_weight_vector -- */
|
|
||||||
/* num_default_design_vector == 0 means it is not present */
|
|
||||||
/* in the font and associated metrics files */
|
|
||||||
FT_UInt default_design_vector[T1_MAX_MM_DESIGNS];
|
|
||||||
FT_UInt num_default_design_vector;
|
|
||||||
|
|
||||||
} PS_BlendRec, *PS_Blend;
|
|
||||||
|
|
||||||
|
|
||||||
/* backwards-compatible definition */
|
|
||||||
typedef PS_BlendRec T1_Blend;
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Struct> */
|
|
||||||
/* CID_FaceDictRec */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* A structure used to represent data in a CID top-level dictionary. */
|
|
||||||
/* */
|
|
||||||
typedef struct CID_FaceDictRec_
|
|
||||||
{
|
|
||||||
PS_PrivateRec private_dict;
|
|
||||||
|
|
||||||
FT_UInt len_buildchar;
|
|
||||||
FT_Fixed forcebold_threshold;
|
|
||||||
FT_Pos stroke_width;
|
|
||||||
FT_Fixed expansion_factor;
|
|
||||||
|
|
||||||
FT_Byte paint_type;
|
|
||||||
FT_Byte font_type;
|
|
||||||
FT_Matrix font_matrix;
|
|
||||||
FT_Vector font_offset;
|
|
||||||
|
|
||||||
FT_UInt num_subrs;
|
|
||||||
FT_ULong subrmap_offset;
|
|
||||||
FT_Int sd_bytes;
|
|
||||||
|
|
||||||
} CID_FaceDictRec;
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Struct> */
|
|
||||||
/* CID_FaceDict */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* A handle to a @CID_FaceDictRec structure. */
|
|
||||||
/* */
|
|
||||||
typedef struct CID_FaceDictRec_* CID_FaceDict;
|
|
||||||
|
|
||||||
/* */
|
|
||||||
|
|
||||||
|
|
||||||
/* backwards-compatible definition */
|
|
||||||
typedef CID_FaceDictRec CID_FontDict;
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Struct> */
|
|
||||||
/* CID_FaceInfoRec */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* A structure used to represent CID Face information. */
|
|
||||||
/* */
|
|
||||||
typedef struct CID_FaceInfoRec_
|
|
||||||
{
|
|
||||||
FT_String* cid_font_name;
|
|
||||||
FT_Fixed cid_version;
|
|
||||||
FT_Int cid_font_type;
|
|
||||||
|
|
||||||
FT_String* registry;
|
|
||||||
FT_String* ordering;
|
|
||||||
FT_Int supplement;
|
|
||||||
|
|
||||||
PS_FontInfoRec font_info;
|
|
||||||
FT_BBox font_bbox;
|
|
||||||
FT_ULong uid_base;
|
|
||||||
|
|
||||||
FT_Int num_xuid;
|
|
||||||
FT_ULong xuid[16];
|
|
||||||
|
|
||||||
FT_ULong cidmap_offset;
|
|
||||||
FT_Int fd_bytes;
|
|
||||||
FT_Int gd_bytes;
|
|
||||||
FT_ULong cid_count;
|
|
||||||
|
|
||||||
FT_Int num_dicts;
|
|
||||||
CID_FaceDict font_dicts;
|
|
||||||
|
|
||||||
FT_ULong data_offset;
|
|
||||||
|
|
||||||
} CID_FaceInfoRec;
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Struct> */
|
|
||||||
/* CID_FaceInfo */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* A handle to a @CID_FaceInfoRec structure. */
|
|
||||||
/* */
|
|
||||||
typedef struct CID_FaceInfoRec_* CID_FaceInfo;
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Struct> */
|
|
||||||
/* CID_Info */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* This type is equivalent to @CID_FaceInfoRec. It is deprecated but */
|
|
||||||
/* kept to maintain source compatibility between various versions of */
|
|
||||||
/* FreeType. */
|
|
||||||
/* */
|
|
||||||
typedef CID_FaceInfoRec CID_Info;
|
|
||||||
|
|
||||||
|
|
||||||
/************************************************************************
|
|
||||||
*
|
|
||||||
* @function:
|
|
||||||
* FT_Has_PS_Glyph_Names
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* Return true if a given face provides reliable PostScript glyph
|
|
||||||
* names. This is similar to using the @FT_HAS_GLYPH_NAMES macro,
|
|
||||||
* except that certain fonts (mostly TrueType) contain incorrect
|
|
||||||
* glyph name tables.
|
|
||||||
*
|
|
||||||
* When this function returns true, the caller is sure that the glyph
|
|
||||||
* names returned by @FT_Get_Glyph_Name are reliable.
|
|
||||||
*
|
|
||||||
* @input:
|
|
||||||
* face ::
|
|
||||||
* face handle
|
|
||||||
*
|
|
||||||
* @return:
|
|
||||||
* Boolean. True if glyph names are reliable.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
FT_EXPORT( FT_Int )
|
|
||||||
FT_Has_PS_Glyph_Names( FT_Face face );
|
|
||||||
|
|
||||||
|
|
||||||
/************************************************************************
|
|
||||||
*
|
|
||||||
* @function:
|
|
||||||
* FT_Get_PS_Font_Info
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* Retrieve the @PS_FontInfoRec structure corresponding to a given
|
|
||||||
* PostScript font.
|
|
||||||
*
|
|
||||||
* @input:
|
|
||||||
* face ::
|
|
||||||
* PostScript face handle.
|
|
||||||
*
|
|
||||||
* @output:
|
|
||||||
* afont_info ::
|
|
||||||
* Output font info structure pointer.
|
|
||||||
*
|
|
||||||
* @return:
|
|
||||||
* FreeType error code. 0~means success.
|
|
||||||
*
|
|
||||||
* @note:
|
|
||||||
* The string pointers within the font info structure are owned by
|
|
||||||
* the face and don't need to be freed by the caller.
|
|
||||||
*
|
|
||||||
* If the font's format is not PostScript-based, this function will
|
|
||||||
* return the `FT_Err_Invalid_Argument' error code.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
FT_EXPORT( FT_Error )
|
|
||||||
FT_Get_PS_Font_Info( FT_Face face,
|
|
||||||
PS_FontInfo afont_info );
|
|
||||||
|
|
||||||
|
|
||||||
/************************************************************************
|
|
||||||
*
|
|
||||||
* @function:
|
|
||||||
* FT_Get_PS_Font_Private
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* Retrieve the @PS_PrivateRec structure corresponding to a given
|
|
||||||
* PostScript font.
|
|
||||||
*
|
|
||||||
* @input:
|
|
||||||
* face ::
|
|
||||||
* PostScript face handle.
|
|
||||||
*
|
|
||||||
* @output:
|
|
||||||
* afont_private ::
|
|
||||||
* Output private dictionary structure pointer.
|
|
||||||
*
|
|
||||||
* @return:
|
|
||||||
* FreeType error code. 0~means success.
|
|
||||||
*
|
|
||||||
* @note:
|
|
||||||
* The string pointers within the @PS_PrivateRec structure are owned by
|
|
||||||
* the face and don't need to be freed by the caller.
|
|
||||||
*
|
|
||||||
* If the font's format is not PostScript-based, this function returns
|
|
||||||
* the `FT_Err_Invalid_Argument' error code.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
FT_EXPORT( FT_Error )
|
|
||||||
FT_Get_PS_Font_Private( FT_Face face,
|
|
||||||
PS_Private afont_private );
|
|
||||||
|
|
||||||
/* */
|
|
||||||
|
|
||||||
|
|
||||||
FT_END_HEADER
|
|
||||||
|
|
||||||
#endif /* __T1TABLES_H__ */
|
|
||||||
|
|
||||||
|
|
||||||
/* END */
|
|
File diff suppressed because it is too large
Load Diff
@ -1,759 +0,0 @@
|
|||||||
/***************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* tttables.h */
|
|
||||||
/* */
|
|
||||||
/* Basic SFNT/TrueType tables definitions and interface */
|
|
||||||
/* (specification only). */
|
|
||||||
/* */
|
|
||||||
/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2008, 2009, 2010 by */
|
|
||||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
|
||||||
/* */
|
|
||||||
/* This file is part of the FreeType project, and may only be used, */
|
|
||||||
/* modified, and distributed under the terms of the FreeType project */
|
|
||||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
|
||||||
/* this file you indicate that you have read the license and */
|
|
||||||
/* understand and accept it fully. */
|
|
||||||
/* */
|
|
||||||
/***************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef __TTTABLES_H__
|
|
||||||
#define __TTTABLES_H__
|
|
||||||
|
|
||||||
|
|
||||||
#include <ft2build.h>
|
|
||||||
#include FT_FREETYPE_H
|
|
||||||
|
|
||||||
#ifdef FREETYPE_H
|
|
||||||
#error "freetype.h of FreeType 1 has been loaded!"
|
|
||||||
#error "Please fix the directory search order for header files"
|
|
||||||
#error "so that freetype.h of FreeType 2 is found first."
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
FT_BEGIN_HEADER
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Section> */
|
|
||||||
/* truetype_tables */
|
|
||||||
/* */
|
|
||||||
/* <Title> */
|
|
||||||
/* TrueType Tables */
|
|
||||||
/* */
|
|
||||||
/* <Abstract> */
|
|
||||||
/* TrueType specific table types and functions. */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* This section contains the definition of TrueType-specific tables */
|
|
||||||
/* as well as some routines used to access and process them. */
|
|
||||||
/* */
|
|
||||||
/*************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Struct> */
|
|
||||||
/* TT_Header */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* A structure used to model a TrueType font header table. All */
|
|
||||||
/* fields follow the TrueType specification. */
|
|
||||||
/* */
|
|
||||||
typedef struct TT_Header_
|
|
||||||
{
|
|
||||||
FT_Fixed Table_Version;
|
|
||||||
FT_Fixed Font_Revision;
|
|
||||||
|
|
||||||
FT_Long CheckSum_Adjust;
|
|
||||||
FT_Long Magic_Number;
|
|
||||||
|
|
||||||
FT_UShort Flags;
|
|
||||||
FT_UShort Units_Per_EM;
|
|
||||||
|
|
||||||
FT_Long Created [2];
|
|
||||||
FT_Long Modified[2];
|
|
||||||
|
|
||||||
FT_Short xMin;
|
|
||||||
FT_Short yMin;
|
|
||||||
FT_Short xMax;
|
|
||||||
FT_Short yMax;
|
|
||||||
|
|
||||||
FT_UShort Mac_Style;
|
|
||||||
FT_UShort Lowest_Rec_PPEM;
|
|
||||||
|
|
||||||
FT_Short Font_Direction;
|
|
||||||
FT_Short Index_To_Loc_Format;
|
|
||||||
FT_Short Glyph_Data_Format;
|
|
||||||
|
|
||||||
} TT_Header;
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Struct> */
|
|
||||||
/* TT_HoriHeader */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* A structure used to model a TrueType horizontal header, the `hhea' */
|
|
||||||
/* table, as well as the corresponding horizontal metrics table, */
|
|
||||||
/* i.e., the `hmtx' table. */
|
|
||||||
/* */
|
|
||||||
/* <Fields> */
|
|
||||||
/* Version :: The table version. */
|
|
||||||
/* */
|
|
||||||
/* Ascender :: The font's ascender, i.e., the distance */
|
|
||||||
/* from the baseline to the top-most of all */
|
|
||||||
/* glyph points found in the font. */
|
|
||||||
/* */
|
|
||||||
/* This value is invalid in many fonts, as */
|
|
||||||
/* it is usually set by the font designer, */
|
|
||||||
/* and often reflects only a portion of the */
|
|
||||||
/* glyphs found in the font (maybe ASCII). */
|
|
||||||
/* */
|
|
||||||
/* You should use the `sTypoAscender' field */
|
|
||||||
/* of the OS/2 table instead if you want */
|
|
||||||
/* the correct one. */
|
|
||||||
/* */
|
|
||||||
/* Descender :: The font's descender, i.e., the distance */
|
|
||||||
/* from the baseline to the bottom-most of */
|
|
||||||
/* all glyph points found in the font. It */
|
|
||||||
/* is negative. */
|
|
||||||
/* */
|
|
||||||
/* This value is invalid in many fonts, as */
|
|
||||||
/* it is usually set by the font designer, */
|
|
||||||
/* and often reflects only a portion of the */
|
|
||||||
/* glyphs found in the font (maybe ASCII). */
|
|
||||||
/* */
|
|
||||||
/* You should use the `sTypoDescender' */
|
|
||||||
/* field of the OS/2 table instead if you */
|
|
||||||
/* want the correct one. */
|
|
||||||
/* */
|
|
||||||
/* Line_Gap :: The font's line gap, i.e., the distance */
|
|
||||||
/* to add to the ascender and descender to */
|
|
||||||
/* get the BTB, i.e., the */
|
|
||||||
/* baseline-to-baseline distance for the */
|
|
||||||
/* font. */
|
|
||||||
/* */
|
|
||||||
/* advance_Width_Max :: This field is the maximum of all advance */
|
|
||||||
/* widths found in the font. It can be */
|
|
||||||
/* used to compute the maximum width of an */
|
|
||||||
/* arbitrary string of text. */
|
|
||||||
/* */
|
|
||||||
/* min_Left_Side_Bearing :: The minimum left side bearing of all */
|
|
||||||
/* glyphs within the font. */
|
|
||||||
/* */
|
|
||||||
/* min_Right_Side_Bearing :: The minimum right side bearing of all */
|
|
||||||
/* glyphs within the font. */
|
|
||||||
/* */
|
|
||||||
/* xMax_Extent :: The maximum horizontal extent (i.e., the */
|
|
||||||
/* `width' of a glyph's bounding box) for */
|
|
||||||
/* all glyphs in the font. */
|
|
||||||
/* */
|
|
||||||
/* caret_Slope_Rise :: The rise coefficient of the cursor's */
|
|
||||||
/* slope of the cursor (slope=rise/run). */
|
|
||||||
/* */
|
|
||||||
/* caret_Slope_Run :: The run coefficient of the cursor's */
|
|
||||||
/* slope. */
|
|
||||||
/* */
|
|
||||||
/* Reserved :: 8~reserved bytes. */
|
|
||||||
/* */
|
|
||||||
/* metric_Data_Format :: Always~0. */
|
|
||||||
/* */
|
|
||||||
/* number_Of_HMetrics :: Number of HMetrics entries in the `hmtx' */
|
|
||||||
/* table -- this value can be smaller than */
|
|
||||||
/* the total number of glyphs in the font. */
|
|
||||||
/* */
|
|
||||||
/* long_metrics :: A pointer into the `hmtx' table. */
|
|
||||||
/* */
|
|
||||||
/* short_metrics :: A pointer into the `hmtx' table. */
|
|
||||||
/* */
|
|
||||||
/* <Note> */
|
|
||||||
/* IMPORTANT: The TT_HoriHeader and TT_VertHeader structures should */
|
|
||||||
/* be identical except for the names of their fields which */
|
|
||||||
/* are different. */
|
|
||||||
/* */
|
|
||||||
/* This ensures that a single function in the `ttload' */
|
|
||||||
/* module is able to read both the horizontal and vertical */
|
|
||||||
/* headers. */
|
|
||||||
/* */
|
|
||||||
typedef struct TT_HoriHeader_
|
|
||||||
{
|
|
||||||
FT_Fixed Version;
|
|
||||||
FT_Short Ascender;
|
|
||||||
FT_Short Descender;
|
|
||||||
FT_Short Line_Gap;
|
|
||||||
|
|
||||||
FT_UShort advance_Width_Max; /* advance width maximum */
|
|
||||||
|
|
||||||
FT_Short min_Left_Side_Bearing; /* minimum left-sb */
|
|
||||||
FT_Short min_Right_Side_Bearing; /* minimum right-sb */
|
|
||||||
FT_Short xMax_Extent; /* xmax extents */
|
|
||||||
FT_Short caret_Slope_Rise;
|
|
||||||
FT_Short caret_Slope_Run;
|
|
||||||
FT_Short caret_Offset;
|
|
||||||
|
|
||||||
FT_Short Reserved[4];
|
|
||||||
|
|
||||||
FT_Short metric_Data_Format;
|
|
||||||
FT_UShort number_Of_HMetrics;
|
|
||||||
|
|
||||||
/* The following fields are not defined by the TrueType specification */
|
|
||||||
/* but they are used to connect the metrics header to the relevant */
|
|
||||||
/* `HMTX' table. */
|
|
||||||
|
|
||||||
void* long_metrics;
|
|
||||||
void* short_metrics;
|
|
||||||
|
|
||||||
} TT_HoriHeader;
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Struct> */
|
|
||||||
/* TT_VertHeader */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* A structure used to model a TrueType vertical header, the `vhea' */
|
|
||||||
/* table, as well as the corresponding vertical metrics table, i.e., */
|
|
||||||
/* the `vmtx' table. */
|
|
||||||
/* */
|
|
||||||
/* <Fields> */
|
|
||||||
/* Version :: The table version. */
|
|
||||||
/* */
|
|
||||||
/* Ascender :: The font's ascender, i.e., the distance */
|
|
||||||
/* from the baseline to the top-most of */
|
|
||||||
/* all glyph points found in the font. */
|
|
||||||
/* */
|
|
||||||
/* This value is invalid in many fonts, as */
|
|
||||||
/* it is usually set by the font designer, */
|
|
||||||
/* and often reflects only a portion of */
|
|
||||||
/* the glyphs found in the font (maybe */
|
|
||||||
/* ASCII). */
|
|
||||||
/* */
|
|
||||||
/* You should use the `sTypoAscender' */
|
|
||||||
/* field of the OS/2 table instead if you */
|
|
||||||
/* want the correct one. */
|
|
||||||
/* */
|
|
||||||
/* Descender :: The font's descender, i.e., the */
|
|
||||||
/* distance from the baseline to the */
|
|
||||||
/* bottom-most of all glyph points found */
|
|
||||||
/* in the font. It is negative. */
|
|
||||||
/* */
|
|
||||||
/* This value is invalid in many fonts, as */
|
|
||||||
/* it is usually set by the font designer, */
|
|
||||||
/* and often reflects only a portion of */
|
|
||||||
/* the glyphs found in the font (maybe */
|
|
||||||
/* ASCII). */
|
|
||||||
/* */
|
|
||||||
/* You should use the `sTypoDescender' */
|
|
||||||
/* field of the OS/2 table instead if you */
|
|
||||||
/* want the correct one. */
|
|
||||||
/* */
|
|
||||||
/* Line_Gap :: The font's line gap, i.e., the distance */
|
|
||||||
/* to add to the ascender and descender to */
|
|
||||||
/* get the BTB, i.e., the */
|
|
||||||
/* baseline-to-baseline distance for the */
|
|
||||||
/* font. */
|
|
||||||
/* */
|
|
||||||
/* advance_Height_Max :: This field is the maximum of all */
|
|
||||||
/* advance heights found in the font. It */
|
|
||||||
/* can be used to compute the maximum */
|
|
||||||
/* height of an arbitrary string of text. */
|
|
||||||
/* */
|
|
||||||
/* min_Top_Side_Bearing :: The minimum top side bearing of all */
|
|
||||||
/* glyphs within the font. */
|
|
||||||
/* */
|
|
||||||
/* min_Bottom_Side_Bearing :: The minimum bottom side bearing of all */
|
|
||||||
/* glyphs within the font. */
|
|
||||||
/* */
|
|
||||||
/* yMax_Extent :: The maximum vertical extent (i.e., the */
|
|
||||||
/* `height' of a glyph's bounding box) for */
|
|
||||||
/* all glyphs in the font. */
|
|
||||||
/* */
|
|
||||||
/* caret_Slope_Rise :: The rise coefficient of the cursor's */
|
|
||||||
/* slope of the cursor (slope=rise/run). */
|
|
||||||
/* */
|
|
||||||
/* caret_Slope_Run :: The run coefficient of the cursor's */
|
|
||||||
/* slope. */
|
|
||||||
/* */
|
|
||||||
/* caret_Offset :: The cursor's offset for slanted fonts. */
|
|
||||||
/* This value is `reserved' in vmtx */
|
|
||||||
/* version 1.0. */
|
|
||||||
/* */
|
|
||||||
/* Reserved :: 8~reserved bytes. */
|
|
||||||
/* */
|
|
||||||
/* metric_Data_Format :: Always~0. */
|
|
||||||
/* */
|
|
||||||
/* number_Of_HMetrics :: Number of VMetrics entries in the */
|
|
||||||
/* `vmtx' table -- this value can be */
|
|
||||||
/* smaller than the total number of glyphs */
|
|
||||||
/* in the font. */
|
|
||||||
/* */
|
|
||||||
/* long_metrics :: A pointer into the `vmtx' table. */
|
|
||||||
/* */
|
|
||||||
/* short_metrics :: A pointer into the `vmtx' table. */
|
|
||||||
/* */
|
|
||||||
/* <Note> */
|
|
||||||
/* IMPORTANT: The TT_HoriHeader and TT_VertHeader structures should */
|
|
||||||
/* be identical except for the names of their fields which */
|
|
||||||
/* are different. */
|
|
||||||
/* */
|
|
||||||
/* This ensures that a single function in the `ttload' */
|
|
||||||
/* module is able to read both the horizontal and vertical */
|
|
||||||
/* headers. */
|
|
||||||
/* */
|
|
||||||
typedef struct TT_VertHeader_
|
|
||||||
{
|
|
||||||
FT_Fixed Version;
|
|
||||||
FT_Short Ascender;
|
|
||||||
FT_Short Descender;
|
|
||||||
FT_Short Line_Gap;
|
|
||||||
|
|
||||||
FT_UShort advance_Height_Max; /* advance height maximum */
|
|
||||||
|
|
||||||
FT_Short min_Top_Side_Bearing; /* minimum left-sb or top-sb */
|
|
||||||
FT_Short min_Bottom_Side_Bearing; /* minimum right-sb or bottom-sb */
|
|
||||||
FT_Short yMax_Extent; /* xmax or ymax extents */
|
|
||||||
FT_Short caret_Slope_Rise;
|
|
||||||
FT_Short caret_Slope_Run;
|
|
||||||
FT_Short caret_Offset;
|
|
||||||
|
|
||||||
FT_Short Reserved[4];
|
|
||||||
|
|
||||||
FT_Short metric_Data_Format;
|
|
||||||
FT_UShort number_Of_VMetrics;
|
|
||||||
|
|
||||||
/* The following fields are not defined by the TrueType specification */
|
|
||||||
/* but they're used to connect the metrics header to the relevant */
|
|
||||||
/* `HMTX' or `VMTX' table. */
|
|
||||||
|
|
||||||
void* long_metrics;
|
|
||||||
void* short_metrics;
|
|
||||||
|
|
||||||
} TT_VertHeader;
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Struct> */
|
|
||||||
/* TT_OS2 */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* A structure used to model a TrueType OS/2 table. This is the long */
|
|
||||||
/* table version. All fields comply to the TrueType specification. */
|
|
||||||
/* */
|
|
||||||
/* Note that we now support old Mac fonts which do not include an */
|
|
||||||
/* OS/2 table. In this case, the `version' field is always set to */
|
|
||||||
/* 0xFFFF. */
|
|
||||||
/* */
|
|
||||||
typedef struct TT_OS2_
|
|
||||||
{
|
|
||||||
FT_UShort version; /* 0x0001 - more or 0xFFFF */
|
|
||||||
FT_Short xAvgCharWidth;
|
|
||||||
FT_UShort usWeightClass;
|
|
||||||
FT_UShort usWidthClass;
|
|
||||||
FT_Short fsType;
|
|
||||||
FT_Short ySubscriptXSize;
|
|
||||||
FT_Short ySubscriptYSize;
|
|
||||||
FT_Short ySubscriptXOffset;
|
|
||||||
FT_Short ySubscriptYOffset;
|
|
||||||
FT_Short ySuperscriptXSize;
|
|
||||||
FT_Short ySuperscriptYSize;
|
|
||||||
FT_Short ySuperscriptXOffset;
|
|
||||||
FT_Short ySuperscriptYOffset;
|
|
||||||
FT_Short yStrikeoutSize;
|
|
||||||
FT_Short yStrikeoutPosition;
|
|
||||||
FT_Short sFamilyClass;
|
|
||||||
|
|
||||||
FT_Byte panose[10];
|
|
||||||
|
|
||||||
FT_ULong ulUnicodeRange1; /* Bits 0-31 */
|
|
||||||
FT_ULong ulUnicodeRange2; /* Bits 32-63 */
|
|
||||||
FT_ULong ulUnicodeRange3; /* Bits 64-95 */
|
|
||||||
FT_ULong ulUnicodeRange4; /* Bits 96-127 */
|
|
||||||
|
|
||||||
FT_Char achVendID[4];
|
|
||||||
|
|
||||||
FT_UShort fsSelection;
|
|
||||||
FT_UShort usFirstCharIndex;
|
|
||||||
FT_UShort usLastCharIndex;
|
|
||||||
FT_Short sTypoAscender;
|
|
||||||
FT_Short sTypoDescender;
|
|
||||||
FT_Short sTypoLineGap;
|
|
||||||
FT_UShort usWinAscent;
|
|
||||||
FT_UShort usWinDescent;
|
|
||||||
|
|
||||||
/* only version 1 tables: */
|
|
||||||
|
|
||||||
FT_ULong ulCodePageRange1; /* Bits 0-31 */
|
|
||||||
FT_ULong ulCodePageRange2; /* Bits 32-63 */
|
|
||||||
|
|
||||||
/* only version 2 tables: */
|
|
||||||
|
|
||||||
FT_Short sxHeight;
|
|
||||||
FT_Short sCapHeight;
|
|
||||||
FT_UShort usDefaultChar;
|
|
||||||
FT_UShort usBreakChar;
|
|
||||||
FT_UShort usMaxContext;
|
|
||||||
|
|
||||||
} TT_OS2;
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Struct> */
|
|
||||||
/* TT_Postscript */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* A structure used to model a TrueType PostScript table. All fields */
|
|
||||||
/* comply to the TrueType specification. This structure does not */
|
|
||||||
/* reference the PostScript glyph names, which can be nevertheless */
|
|
||||||
/* accessed with the `ttpost' module. */
|
|
||||||
/* */
|
|
||||||
typedef struct TT_Postscript_
|
|
||||||
{
|
|
||||||
FT_Fixed FormatType;
|
|
||||||
FT_Fixed italicAngle;
|
|
||||||
FT_Short underlinePosition;
|
|
||||||
FT_Short underlineThickness;
|
|
||||||
FT_ULong isFixedPitch;
|
|
||||||
FT_ULong minMemType42;
|
|
||||||
FT_ULong maxMemType42;
|
|
||||||
FT_ULong minMemType1;
|
|
||||||
FT_ULong maxMemType1;
|
|
||||||
|
|
||||||
/* Glyph names follow in the file, but we don't */
|
|
||||||
/* load them by default. See the ttpost.c file. */
|
|
||||||
|
|
||||||
} TT_Postscript;
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Struct> */
|
|
||||||
/* TT_PCLT */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* A structure used to model a TrueType PCLT table. All fields */
|
|
||||||
/* comply to the TrueType specification. */
|
|
||||||
/* */
|
|
||||||
typedef struct TT_PCLT_
|
|
||||||
{
|
|
||||||
FT_Fixed Version;
|
|
||||||
FT_ULong FontNumber;
|
|
||||||
FT_UShort Pitch;
|
|
||||||
FT_UShort xHeight;
|
|
||||||
FT_UShort Style;
|
|
||||||
FT_UShort TypeFamily;
|
|
||||||
FT_UShort CapHeight;
|
|
||||||
FT_UShort SymbolSet;
|
|
||||||
FT_Char TypeFace[16];
|
|
||||||
FT_Char CharacterComplement[8];
|
|
||||||
FT_Char FileName[6];
|
|
||||||
FT_Char StrokeWeight;
|
|
||||||
FT_Char WidthType;
|
|
||||||
FT_Byte SerifStyle;
|
|
||||||
FT_Byte Reserved;
|
|
||||||
|
|
||||||
} TT_PCLT;
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Struct> */
|
|
||||||
/* TT_MaxProfile */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* The maximum profile is a table containing many max values which */
|
|
||||||
/* can be used to pre-allocate arrays. This ensures that no memory */
|
|
||||||
/* allocation occurs during a glyph load. */
|
|
||||||
/* */
|
|
||||||
/* <Fields> */
|
|
||||||
/* version :: The version number. */
|
|
||||||
/* */
|
|
||||||
/* numGlyphs :: The number of glyphs in this TrueType */
|
|
||||||
/* font. */
|
|
||||||
/* */
|
|
||||||
/* maxPoints :: The maximum number of points in a */
|
|
||||||
/* non-composite TrueType glyph. See also */
|
|
||||||
/* the structure element */
|
|
||||||
/* `maxCompositePoints'. */
|
|
||||||
/* */
|
|
||||||
/* maxContours :: The maximum number of contours in a */
|
|
||||||
/* non-composite TrueType glyph. See also */
|
|
||||||
/* the structure element */
|
|
||||||
/* `maxCompositeContours'. */
|
|
||||||
/* */
|
|
||||||
/* maxCompositePoints :: The maximum number of points in a */
|
|
||||||
/* composite TrueType glyph. See also the */
|
|
||||||
/* structure element `maxPoints'. */
|
|
||||||
/* */
|
|
||||||
/* maxCompositeContours :: The maximum number of contours in a */
|
|
||||||
/* composite TrueType glyph. See also the */
|
|
||||||
/* structure element `maxContours'. */
|
|
||||||
/* */
|
|
||||||
/* maxZones :: The maximum number of zones used for */
|
|
||||||
/* glyph hinting. */
|
|
||||||
/* */
|
|
||||||
/* maxTwilightPoints :: The maximum number of points in the */
|
|
||||||
/* twilight zone used for glyph hinting. */
|
|
||||||
/* */
|
|
||||||
/* maxStorage :: The maximum number of elements in the */
|
|
||||||
/* storage area used for glyph hinting. */
|
|
||||||
/* */
|
|
||||||
/* maxFunctionDefs :: The maximum number of function */
|
|
||||||
/* definitions in the TrueType bytecode for */
|
|
||||||
/* this font. */
|
|
||||||
/* */
|
|
||||||
/* maxInstructionDefs :: The maximum number of instruction */
|
|
||||||
/* definitions in the TrueType bytecode for */
|
|
||||||
/* this font. */
|
|
||||||
/* */
|
|
||||||
/* maxStackElements :: The maximum number of stack elements used */
|
|
||||||
/* during bytecode interpretation. */
|
|
||||||
/* */
|
|
||||||
/* maxSizeOfInstructions :: The maximum number of TrueType opcodes */
|
|
||||||
/* used for glyph hinting. */
|
|
||||||
/* */
|
|
||||||
/* maxComponentElements :: The maximum number of simple (i.e., non- */
|
|
||||||
/* composite) glyphs in a composite glyph. */
|
|
||||||
/* */
|
|
||||||
/* maxComponentDepth :: The maximum nesting depth of composite */
|
|
||||||
/* glyphs. */
|
|
||||||
/* */
|
|
||||||
/* <Note> */
|
|
||||||
/* This structure is only used during font loading. */
|
|
||||||
/* */
|
|
||||||
typedef struct TT_MaxProfile_
|
|
||||||
{
|
|
||||||
FT_Fixed version;
|
|
||||||
FT_UShort numGlyphs;
|
|
||||||
FT_UShort maxPoints;
|
|
||||||
FT_UShort maxContours;
|
|
||||||
FT_UShort maxCompositePoints;
|
|
||||||
FT_UShort maxCompositeContours;
|
|
||||||
FT_UShort maxZones;
|
|
||||||
FT_UShort maxTwilightPoints;
|
|
||||||
FT_UShort maxStorage;
|
|
||||||
FT_UShort maxFunctionDefs;
|
|
||||||
FT_UShort maxInstructionDefs;
|
|
||||||
FT_UShort maxStackElements;
|
|
||||||
FT_UShort maxSizeOfInstructions;
|
|
||||||
FT_UShort maxComponentElements;
|
|
||||||
FT_UShort maxComponentDepth;
|
|
||||||
|
|
||||||
} TT_MaxProfile;
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Enum> */
|
|
||||||
/* FT_Sfnt_Tag */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* An enumeration used to specify the index of an SFNT table. */
|
|
||||||
/* Used in the @FT_Get_Sfnt_Table API function. */
|
|
||||||
/* */
|
|
||||||
typedef enum FT_Sfnt_Tag_
|
|
||||||
{
|
|
||||||
ft_sfnt_head = 0, /* TT_Header */
|
|
||||||
ft_sfnt_maxp = 1, /* TT_MaxProfile */
|
|
||||||
ft_sfnt_os2 = 2, /* TT_OS2 */
|
|
||||||
ft_sfnt_hhea = 3, /* TT_HoriHeader */
|
|
||||||
ft_sfnt_vhea = 4, /* TT_VertHeader */
|
|
||||||
ft_sfnt_post = 5, /* TT_Postscript */
|
|
||||||
ft_sfnt_pclt = 6, /* TT_PCLT */
|
|
||||||
|
|
||||||
sfnt_max /* internal end mark */
|
|
||||||
|
|
||||||
} FT_Sfnt_Tag;
|
|
||||||
|
|
||||||
/* */
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Function> */
|
|
||||||
/* FT_Get_Sfnt_Table */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* Return a pointer to a given SFNT table within a face. */
|
|
||||||
/* */
|
|
||||||
/* <Input> */
|
|
||||||
/* face :: A handle to the source. */
|
|
||||||
/* */
|
|
||||||
/* tag :: The index of the SFNT table. */
|
|
||||||
/* */
|
|
||||||
/* <Return> */
|
|
||||||
/* A type-less pointer to the table. This will be~0 in case of */
|
|
||||||
/* error, or if the corresponding table was not found *OR* loaded */
|
|
||||||
/* from the file. */
|
|
||||||
/* */
|
|
||||||
/* Use a typecast according to `tag' to access the structure */
|
|
||||||
/* elements. */
|
|
||||||
/* */
|
|
||||||
/* <Note> */
|
|
||||||
/* The table is owned by the face object and disappears with it. */
|
|
||||||
/* */
|
|
||||||
/* This function is only useful to access SFNT tables that are loaded */
|
|
||||||
/* by the sfnt, truetype, and opentype drivers. See @FT_Sfnt_Tag for */
|
|
||||||
/* a list. */
|
|
||||||
/* */
|
|
||||||
FT_EXPORT( void* )
|
|
||||||
FT_Get_Sfnt_Table( FT_Face face,
|
|
||||||
FT_Sfnt_Tag tag );
|
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************************
|
|
||||||
*
|
|
||||||
* @function:
|
|
||||||
* FT_Load_Sfnt_Table
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* Load any font table into client memory.
|
|
||||||
*
|
|
||||||
* @input:
|
|
||||||
* face ::
|
|
||||||
* A handle to the source face.
|
|
||||||
*
|
|
||||||
* tag ::
|
|
||||||
* The four-byte tag of the table to load. Use the value~0 if you want
|
|
||||||
* to access the whole font file. Otherwise, you can use one of the
|
|
||||||
* definitions found in the @FT_TRUETYPE_TAGS_H file, or forge a new
|
|
||||||
* one with @FT_MAKE_TAG.
|
|
||||||
*
|
|
||||||
* offset ::
|
|
||||||
* The starting offset in the table (or file if tag == 0).
|
|
||||||
*
|
|
||||||
* @output:
|
|
||||||
* buffer ::
|
|
||||||
* The target buffer address. The client must ensure that the memory
|
|
||||||
* array is big enough to hold the data.
|
|
||||||
*
|
|
||||||
* @inout:
|
|
||||||
* length ::
|
|
||||||
* If the `length' parameter is NULL, then try to load the whole table.
|
|
||||||
* Return an error code if it fails.
|
|
||||||
*
|
|
||||||
* Else, if `*length' is~0, exit immediately while returning the
|
|
||||||
* table's (or file) full size in it.
|
|
||||||
*
|
|
||||||
* Else the number of bytes to read from the table or file, from the
|
|
||||||
* starting offset.
|
|
||||||
*
|
|
||||||
* @return:
|
|
||||||
* FreeType error code. 0~means success.
|
|
||||||
*
|
|
||||||
* @note:
|
|
||||||
* If you need to determine the table's length you should first call this
|
|
||||||
* function with `*length' set to~0, as in the following example:
|
|
||||||
*
|
|
||||||
* {
|
|
||||||
* FT_ULong length = 0;
|
|
||||||
*
|
|
||||||
*
|
|
||||||
* error = FT_Load_Sfnt_Table( face, tag, 0, NULL, &length );
|
|
||||||
* if ( error ) { ... table does not exist ... }
|
|
||||||
*
|
|
||||||
* buffer = malloc( length );
|
|
||||||
* if ( buffer == NULL ) { ... not enough memory ... }
|
|
||||||
*
|
|
||||||
* error = FT_Load_Sfnt_Table( face, tag, 0, buffer, &length );
|
|
||||||
* if ( error ) { ... could not load table ... }
|
|
||||||
* }
|
|
||||||
*/
|
|
||||||
FT_EXPORT( FT_Error )
|
|
||||||
FT_Load_Sfnt_Table( FT_Face face,
|
|
||||||
FT_ULong tag,
|
|
||||||
FT_Long offset,
|
|
||||||
FT_Byte* buffer,
|
|
||||||
FT_ULong* length );
|
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************************
|
|
||||||
*
|
|
||||||
* @function:
|
|
||||||
* FT_Sfnt_Table_Info
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* Return information on an SFNT table.
|
|
||||||
*
|
|
||||||
* @input:
|
|
||||||
* face ::
|
|
||||||
* A handle to the source face.
|
|
||||||
*
|
|
||||||
* table_index ::
|
|
||||||
* The index of an SFNT table. The function returns
|
|
||||||
* FT_Err_Table_Missing for an invalid value.
|
|
||||||
*
|
|
||||||
* @output:
|
|
||||||
* tag ::
|
|
||||||
* The name tag of the SFNT table.
|
|
||||||
*
|
|
||||||
* length ::
|
|
||||||
* The length of the SFNT table.
|
|
||||||
*
|
|
||||||
* @return:
|
|
||||||
* FreeType error code. 0~means success.
|
|
||||||
*
|
|
||||||
* @note:
|
|
||||||
* SFNT tables with length zero are treated as missing.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
FT_EXPORT( FT_Error )
|
|
||||||
FT_Sfnt_Table_Info( FT_Face face,
|
|
||||||
FT_UInt table_index,
|
|
||||||
FT_ULong *tag,
|
|
||||||
FT_ULong *length );
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Function> */
|
|
||||||
/* FT_Get_CMap_Language_ID */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* Return TrueType/sfnt specific cmap language ID. Definitions of */
|
|
||||||
/* language ID values are in `freetype/ttnameid.h'. */
|
|
||||||
/* */
|
|
||||||
/* <Input> */
|
|
||||||
/* charmap :: */
|
|
||||||
/* The target charmap. */
|
|
||||||
/* */
|
|
||||||
/* <Return> */
|
|
||||||
/* The language ID of `charmap'. If `charmap' doesn't belong to a */
|
|
||||||
/* TrueType/sfnt face, just return~0 as the default value. */
|
|
||||||
/* */
|
|
||||||
FT_EXPORT( FT_ULong )
|
|
||||||
FT_Get_CMap_Language_ID( FT_CharMap charmap );
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* <Function> */
|
|
||||||
/* FT_Get_CMap_Format */
|
|
||||||
/* */
|
|
||||||
/* <Description> */
|
|
||||||
/* Return TrueType/sfnt specific cmap format. */
|
|
||||||
/* */
|
|
||||||
/* <Input> */
|
|
||||||
/* charmap :: */
|
|
||||||
/* The target charmap. */
|
|
||||||
/* */
|
|
||||||
/* <Return> */
|
|
||||||
/* The format of `charmap'. If `charmap' doesn't belong to a */
|
|
||||||
/* TrueType/sfnt face, return -1. */
|
|
||||||
/* */
|
|
||||||
FT_EXPORT( FT_Long )
|
|
||||||
FT_Get_CMap_Format( FT_CharMap charmap );
|
|
||||||
|
|
||||||
/* */
|
|
||||||
|
|
||||||
|
|
||||||
FT_END_HEADER
|
|
||||||
|
|
||||||
#endif /* __TTTABLES_H__ */
|
|
||||||
|
|
||||||
|
|
||||||
/* END */
|
|
@ -1,107 +0,0 @@
|
|||||||
/***************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* tttags.h */
|
|
||||||
/* */
|
|
||||||
/* Tags for TrueType and OpenType tables (specification only). */
|
|
||||||
/* */
|
|
||||||
/* Copyright 1996-2001, 2004, 2005, 2007, 2008 by */
|
|
||||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
|
||||||
/* */
|
|
||||||
/* This file is part of the FreeType project, and may only be used, */
|
|
||||||
/* modified, and distributed under the terms of the FreeType project */
|
|
||||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
|
||||||
/* this file you indicate that you have read the license and */
|
|
||||||
/* understand and accept it fully. */
|
|
||||||
/* */
|
|
||||||
/***************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef __TTAGS_H__
|
|
||||||
#define __TTAGS_H__
|
|
||||||
|
|
||||||
|
|
||||||
#include <ft2build.h>
|
|
||||||
#include FT_FREETYPE_H
|
|
||||||
|
|
||||||
#ifdef FREETYPE_H
|
|
||||||
#error "freetype.h of FreeType 1 has been loaded!"
|
|
||||||
#error "Please fix the directory search order for header files"
|
|
||||||
#error "so that freetype.h of FreeType 2 is found first."
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
FT_BEGIN_HEADER
|
|
||||||
|
|
||||||
|
|
||||||
#define TTAG_avar FT_MAKE_TAG( 'a', 'v', 'a', 'r' )
|
|
||||||
#define TTAG_BASE FT_MAKE_TAG( 'B', 'A', 'S', 'E' )
|
|
||||||
#define TTAG_bdat FT_MAKE_TAG( 'b', 'd', 'a', 't' )
|
|
||||||
#define TTAG_BDF FT_MAKE_TAG( 'B', 'D', 'F', ' ' )
|
|
||||||
#define TTAG_bhed FT_MAKE_TAG( 'b', 'h', 'e', 'd' )
|
|
||||||
#define TTAG_bloc FT_MAKE_TAG( 'b', 'l', 'o', 'c' )
|
|
||||||
#define TTAG_bsln FT_MAKE_TAG( 'b', 's', 'l', 'n' )
|
|
||||||
#define TTAG_CFF FT_MAKE_TAG( 'C', 'F', 'F', ' ' )
|
|
||||||
#define TTAG_CID FT_MAKE_TAG( 'C', 'I', 'D', ' ' )
|
|
||||||
#define TTAG_cmap FT_MAKE_TAG( 'c', 'm', 'a', 'p' )
|
|
||||||
#define TTAG_cvar FT_MAKE_TAG( 'c', 'v', 'a', 'r' )
|
|
||||||
#define TTAG_cvt FT_MAKE_TAG( 'c', 'v', 't', ' ' )
|
|
||||||
#define TTAG_DSIG FT_MAKE_TAG( 'D', 'S', 'I', 'G' )
|
|
||||||
#define TTAG_EBDT FT_MAKE_TAG( 'E', 'B', 'D', 'T' )
|
|
||||||
#define TTAG_EBLC FT_MAKE_TAG( 'E', 'B', 'L', 'C' )
|
|
||||||
#define TTAG_EBSC FT_MAKE_TAG( 'E', 'B', 'S', 'C' )
|
|
||||||
#define TTAG_feat FT_MAKE_TAG( 'f', 'e', 'a', 't' )
|
|
||||||
#define TTAG_FOND FT_MAKE_TAG( 'F', 'O', 'N', 'D' )
|
|
||||||
#define TTAG_fpgm FT_MAKE_TAG( 'f', 'p', 'g', 'm' )
|
|
||||||
#define TTAG_fvar FT_MAKE_TAG( 'f', 'v', 'a', 'r' )
|
|
||||||
#define TTAG_gasp FT_MAKE_TAG( 'g', 'a', 's', 'p' )
|
|
||||||
#define TTAG_GDEF FT_MAKE_TAG( 'G', 'D', 'E', 'F' )
|
|
||||||
#define TTAG_glyf FT_MAKE_TAG( 'g', 'l', 'y', 'f' )
|
|
||||||
#define TTAG_GPOS FT_MAKE_TAG( 'G', 'P', 'O', 'S' )
|
|
||||||
#define TTAG_GSUB FT_MAKE_TAG( 'G', 'S', 'U', 'B' )
|
|
||||||
#define TTAG_gvar FT_MAKE_TAG( 'g', 'v', 'a', 'r' )
|
|
||||||
#define TTAG_hdmx FT_MAKE_TAG( 'h', 'd', 'm', 'x' )
|
|
||||||
#define TTAG_head FT_MAKE_TAG( 'h', 'e', 'a', 'd' )
|
|
||||||
#define TTAG_hhea FT_MAKE_TAG( 'h', 'h', 'e', 'a' )
|
|
||||||
#define TTAG_hmtx FT_MAKE_TAG( 'h', 'm', 't', 'x' )
|
|
||||||
#define TTAG_JSTF FT_MAKE_TAG( 'J', 'S', 'T', 'F' )
|
|
||||||
#define TTAG_just FT_MAKE_TAG( 'j', 'u', 's', 't' )
|
|
||||||
#define TTAG_kern FT_MAKE_TAG( 'k', 'e', 'r', 'n' )
|
|
||||||
#define TTAG_lcar FT_MAKE_TAG( 'l', 'c', 'a', 'r' )
|
|
||||||
#define TTAG_loca FT_MAKE_TAG( 'l', 'o', 'c', 'a' )
|
|
||||||
#define TTAG_LTSH FT_MAKE_TAG( 'L', 'T', 'S', 'H' )
|
|
||||||
#define TTAG_LWFN FT_MAKE_TAG( 'L', 'W', 'F', 'N' )
|
|
||||||
#define TTAG_MATH FT_MAKE_TAG( 'M', 'A', 'T', 'H' )
|
|
||||||
#define TTAG_maxp FT_MAKE_TAG( 'm', 'a', 'x', 'p' )
|
|
||||||
#define TTAG_META FT_MAKE_TAG( 'M', 'E', 'T', 'A' )
|
|
||||||
#define TTAG_MMFX FT_MAKE_TAG( 'M', 'M', 'F', 'X' )
|
|
||||||
#define TTAG_MMSD FT_MAKE_TAG( 'M', 'M', 'S', 'D' )
|
|
||||||
#define TTAG_mort FT_MAKE_TAG( 'm', 'o', 'r', 't' )
|
|
||||||
#define TTAG_morx FT_MAKE_TAG( 'm', 'o', 'r', 'x' )
|
|
||||||
#define TTAG_name FT_MAKE_TAG( 'n', 'a', 'm', 'e' )
|
|
||||||
#define TTAG_opbd FT_MAKE_TAG( 'o', 'p', 'b', 'd' )
|
|
||||||
#define TTAG_OS2 FT_MAKE_TAG( 'O', 'S', '/', '2' )
|
|
||||||
#define TTAG_OTTO FT_MAKE_TAG( 'O', 'T', 'T', 'O' )
|
|
||||||
#define TTAG_PCLT FT_MAKE_TAG( 'P', 'C', 'L', 'T' )
|
|
||||||
#define TTAG_POST FT_MAKE_TAG( 'P', 'O', 'S', 'T' )
|
|
||||||
#define TTAG_post FT_MAKE_TAG( 'p', 'o', 's', 't' )
|
|
||||||
#define TTAG_prep FT_MAKE_TAG( 'p', 'r', 'e', 'p' )
|
|
||||||
#define TTAG_prop FT_MAKE_TAG( 'p', 'r', 'o', 'p' )
|
|
||||||
#define TTAG_sfnt FT_MAKE_TAG( 's', 'f', 'n', 't' )
|
|
||||||
#define TTAG_SING FT_MAKE_TAG( 'S', 'I', 'N', 'G' )
|
|
||||||
#define TTAG_trak FT_MAKE_TAG( 't', 'r', 'a', 'k' )
|
|
||||||
#define TTAG_true FT_MAKE_TAG( 't', 'r', 'u', 'e' )
|
|
||||||
#define TTAG_ttc FT_MAKE_TAG( 't', 't', 'c', ' ' )
|
|
||||||
#define TTAG_ttcf FT_MAKE_TAG( 't', 't', 'c', 'f' )
|
|
||||||
#define TTAG_TYP1 FT_MAKE_TAG( 'T', 'Y', 'P', '1' )
|
|
||||||
#define TTAG_typ1 FT_MAKE_TAG( 't', 'y', 'p', '1' )
|
|
||||||
#define TTAG_VDMX FT_MAKE_TAG( 'V', 'D', 'M', 'X' )
|
|
||||||
#define TTAG_vhea FT_MAKE_TAG( 'v', 'h', 'e', 'a' )
|
|
||||||
#define TTAG_vmtx FT_MAKE_TAG( 'v', 'm', 't', 'x' )
|
|
||||||
|
|
||||||
|
|
||||||
FT_END_HEADER
|
|
||||||
|
|
||||||
#endif /* __TTAGS_H__ */
|
|
||||||
|
|
||||||
|
|
||||||
/* END */
|
|
@ -1,59 +0,0 @@
|
|||||||
/***************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* ttunpat.h */
|
|
||||||
/* */
|
|
||||||
/* Definitions for the unpatented TrueType hinting system */
|
|
||||||
/* */
|
|
||||||
/* Copyright 2003, 2006 by */
|
|
||||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
|
||||||
/* */
|
|
||||||
/* Written by Graham Asher <graham.asher@btinternet.com> */
|
|
||||||
/* */
|
|
||||||
/* This file is part of the FreeType project, and may only be used, */
|
|
||||||
/* modified, and distributed under the terms of the FreeType project */
|
|
||||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
|
||||||
/* this file you indicate that you have read the license and */
|
|
||||||
/* understand and accept it fully. */
|
|
||||||
/* */
|
|
||||||
/***************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef __TTUNPAT_H__
|
|
||||||
#define __TTUNPAT_H__
|
|
||||||
|
|
||||||
|
|
||||||
#include <ft2build.h>
|
|
||||||
#include FT_FREETYPE_H
|
|
||||||
|
|
||||||
#ifdef FREETYPE_H
|
|
||||||
#error "freetype.h of FreeType 1 has been loaded!"
|
|
||||||
#error "Please fix the directory search order for header files"
|
|
||||||
#error "so that freetype.h of FreeType 2 is found first."
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
FT_BEGIN_HEADER
|
|
||||||
|
|
||||||
|
|
||||||
/***************************************************************************
|
|
||||||
*
|
|
||||||
* @constant:
|
|
||||||
* FT_PARAM_TAG_UNPATENTED_HINTING
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* A constant used as the tag of an @FT_Parameter structure to indicate
|
|
||||||
* that unpatented methods only should be used by the TrueType bytecode
|
|
||||||
* interpreter for a typeface opened by @FT_Open_Face.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
#define FT_PARAM_TAG_UNPATENTED_HINTING FT_MAKE_TAG( 'u', 'n', 'p', 'a' )
|
|
||||||
|
|
||||||
/* */
|
|
||||||
|
|
||||||
FT_END_HEADER
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* __TTUNPAT_H__ */
|
|
||||||
|
|
||||||
|
|
||||||
/* END */
|
|
@ -1,61 +0,0 @@
|
|||||||
/***************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* ft2build.h */
|
|
||||||
/* */
|
|
||||||
/* Build macros of the FreeType 2 library. */
|
|
||||||
/* */
|
|
||||||
/* Copyright 1996-2001, 2003, 2006 by */
|
|
||||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
|
||||||
/* */
|
|
||||||
/* This file is part of the FreeType project, and may only be used, */
|
|
||||||
/* modified, and distributed under the terms of the FreeType project */
|
|
||||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
|
||||||
/* this file you indicate that you have read the license and */
|
|
||||||
/* understand and accept it fully. */
|
|
||||||
/* */
|
|
||||||
/***************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/* */
|
|
||||||
/* This is a Unix-specific version of <ft2build.h> that should be used */
|
|
||||||
/* exclusively *after* installation of the library. */
|
|
||||||
/* */
|
|
||||||
/* It assumes that `/usr/local/include/freetype2' (or whatever is */
|
|
||||||
/* returned by the `freetype-config --cflags' or `pkg-config --cflags' */
|
|
||||||
/* command) is in your compilation include path. */
|
|
||||||
/* */
|
|
||||||
/* We don't need to do anything special in this release. However, for */
|
|
||||||
/* a future FreeType 2 release, the following installation changes will */
|
|
||||||
/* be performed: */
|
|
||||||
/* */
|
|
||||||
/* - The contents of `freetype-2.x/include/freetype' will be installed */
|
|
||||||
/* to `/usr/local/include/freetype2' instead of */
|
|
||||||
/* `/usr/local/include/freetype2/freetype'. */
|
|
||||||
/* */
|
|
||||||
/* - This file will #include <freetype2/config/ftheader.h>, instead */
|
|
||||||
/* of <freetype/config/ftheader.h>. */
|
|
||||||
/* */
|
|
||||||
/* - The contents of `ftheader.h' will be processed with `sed' to */
|
|
||||||
/* replace all `<freetype/xxx>' with `<freetype2/xxx>'. */
|
|
||||||
/* */
|
|
||||||
/* - Adding `/usr/local/include/freetype2' to your compilation include */
|
|
||||||
/* path will not be necessary anymore. */
|
|
||||||
/* */
|
|
||||||
/* These changes will be transparent to client applications which use */
|
|
||||||
/* freetype-config (or pkg-config). No modifications will be necessary */
|
|
||||||
/* to compile with the new scheme. */
|
|
||||||
/* */
|
|
||||||
/*************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef __FT2_BUILD_UNIX_H__
|
|
||||||
#define __FT2_BUILD_UNIX_H__
|
|
||||||
|
|
||||||
/* `<prefix>/include/freetype2' must be in your current inclusion path */
|
|
||||||
#include <freetype/config/ftheader.h>
|
|
||||||
|
|
||||||
#endif /* __FT2_BUILD_UNIX_H__ */
|
|
||||||
|
|
||||||
|
|
||||||
/* END */
|
|
@ -1,889 +0,0 @@
|
|||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef GD_H
|
|
||||||
#define GD_H 1
|
|
||||||
|
|
||||||
#define GD_MAJOR_VERSION 2
|
|
||||||
#define GD_MINOR_VERSION 1
|
|
||||||
#define GD_RELEASE_VERSION 0
|
|
||||||
#define GD_EXTRA_VERSION "alpha"
|
|
||||||
#define GD_VERSION_STRING "2.1.0-alpha"
|
|
||||||
|
|
||||||
/* Do the DLL dance: dllexport when building the DLL,
|
|
||||||
dllimport when importing from it, nothing when
|
|
||||||
not on Silly Silly Windows (tm Aardman Productions). */
|
|
||||||
|
|
||||||
/* 2.0.20: for headers */
|
|
||||||
|
|
||||||
/* 2.0.24: __stdcall also needed for Visual BASIC
|
|
||||||
and other languages. This breaks ABI compatibility
|
|
||||||
with previous DLL revs, but it's necessary. */
|
|
||||||
|
|
||||||
/* 2.0.29: WIN32 programmers can declare the NONDLL macro if they
|
|
||||||
wish to build gd as a static library or by directly including
|
|
||||||
the gd sources in a project. */
|
|
||||||
|
|
||||||
#if !defined(WIN32) && !defined(_WIN32_WCE)
|
|
||||||
#define NONDLL 1
|
|
||||||
#endif /* WIN32 */
|
|
||||||
|
|
||||||
#ifdef NONDLL
|
|
||||||
#define BGD_DECLARE(rt) extern rt
|
|
||||||
#else
|
|
||||||
#ifdef BGDWIN32
|
|
||||||
|
|
||||||
#define BGD_DECLARE(rt) __declspec(dllexport) rt __stdcall
|
|
||||||
#else
|
|
||||||
#define BGD_DECLARE(rt) __declspec(dllimport) rt _stdcall
|
|
||||||
#endif /* BGDWIN32 */
|
|
||||||
#endif /* NONDLL */
|
|
||||||
|
|
||||||
/* 2.0.20: for actual storage of exported data, functions don't need this,
|
|
||||||
currently needed only for font pointers */
|
|
||||||
#ifdef NONDLL
|
|
||||||
/* 2.0.25: bring back extern */
|
|
||||||
#define BGD_EXPORT_DATA_PROT extern
|
|
||||||
#define BGD_EXPORT_DATA_IMPL
|
|
||||||
#else
|
|
||||||
#ifdef BGDWIN32
|
|
||||||
#define BGD_EXPORT_DATA_PROT __declspec(dllexport) extern
|
|
||||||
#define BGD_EXPORT_DATA_IMPL __declspec(dllexport)
|
|
||||||
#else
|
|
||||||
#define BGD_EXPORT_DATA_PROT __declspec(dllimport) extern
|
|
||||||
#define BGD_EXPORT_DATA_IMPL __declspec(dllimport)
|
|
||||||
#endif /* BGDWIN32 */
|
|
||||||
#endif /* NONDLL */
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C"
|
|
||||||
{
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* some might want to set DEFAULT_FONTPATH from configure in config.h */
|
|
||||||
#ifdef NETWARE
|
|
||||||
/* default fontpath for netware systems, could probably be handled in configure for 2.1 */
|
|
||||||
#define DEFAULT_FONTPATH "sys:/java/nwgfx/lib/x11/fonts/ttf;."
|
|
||||||
#define PATHSEPARATOR ";"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* 2.0.23: more Type 1 fonts */
|
|
||||||
#ifndef DEFAULT_FONTPATH
|
|
||||||
/* default fontpath for unix systems - whatever happened to standards ! */
|
|
||||||
#define DEFAULT_FONTPATH "/usr/X11R6/lib/X11/fonts/TrueType:/usr/X11R6/lib/X11/fonts/truetype:/usr/X11R6/lib/X11/fonts/TTF:/usr/share/fonts/TrueType:/usr/share/fonts/truetype:/usr/openwin/lib/X11/fonts/TrueType:/usr/X11R6/lib/X11/fonts/Type1:/usr/lib/X11/fonts/Type1:/usr/openwin/lib/X11/fonts/Type1"
|
|
||||||
#endif
|
|
||||||
#ifndef PATHSEPARATOR
|
|
||||||
#define PATHSEPARATOR ":"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* gd.h: declarations file for the graphic-draw module.
|
|
||||||
* Permission to use, copy, modify, and distribute this software and its
|
|
||||||
* documentation for any purpose and without fee is hereby granted, provided
|
|
||||||
* that the above copyright notice appear in all copies and that both that
|
|
||||||
* copyright notice and this permission notice appear in supporting
|
|
||||||
* documentation. This software is provided "AS IS." Thomas Boutell and
|
|
||||||
* Boutell.Com, Inc. disclaim all warranties, either express or implied,
|
|
||||||
* including but not limited to implied warranties of merchantability and
|
|
||||||
* fitness for a particular purpose, with respect to this code and accompanying
|
|
||||||
* documentation. */
|
|
||||||
|
|
||||||
/* stdio is needed for file I/O. */
|
|
||||||
#include <stdio.h>
|
|
||||||
#include "gd_io.h"
|
|
||||||
|
|
||||||
/* The maximum number of palette entries in palette-based images.
|
|
||||||
In the wonderful new world of gd 2.0, you can of course have
|
|
||||||
many more colors when using truecolor mode. */
|
|
||||||
|
|
||||||
#define gdMaxColors 256
|
|
||||||
|
|
||||||
/* Image type. See functions below; you will not need to change
|
|
||||||
the elements directly. Use the provided macros to
|
|
||||||
access sx, sy, the color table, and colorsTotal for
|
|
||||||
read-only purposes. */
|
|
||||||
|
|
||||||
/* If 'truecolor' is set true, the image is truecolor;
|
|
||||||
pixels are represented by integers, which
|
|
||||||
must be 32 bits wide or more.
|
|
||||||
|
|
||||||
True colors are repsented as follows:
|
|
||||||
|
|
||||||
ARGB
|
|
||||||
|
|
||||||
Where 'A' (alpha channel) occupies only the
|
|
||||||
LOWER 7 BITS of the MSB. This very small
|
|
||||||
loss of alpha channel resolution allows gd 2.x
|
|
||||||
to keep backwards compatibility by allowing
|
|
||||||
signed integers to be used to represent colors,
|
|
||||||
and negative numbers to represent special cases,
|
|
||||||
just as in gd 1.x. */
|
|
||||||
|
|
||||||
#define gdAlphaMax 127
|
|
||||||
#define gdAlphaOpaque 0
|
|
||||||
#define gdAlphaTransparent 127
|
|
||||||
#define gdRedMax 255
|
|
||||||
#define gdGreenMax 255
|
|
||||||
#define gdBlueMax 255
|
|
||||||
#define gdTrueColorGetAlpha(c) (((c) & 0x7F000000) >> 24)
|
|
||||||
#define gdTrueColorGetRed(c) (((c) & 0xFF0000) >> 16)
|
|
||||||
#define gdTrueColorGetGreen(c) (((c) & 0x00FF00) >> 8)
|
|
||||||
#define gdTrueColorGetBlue(c) ((c) & 0x0000FF)
|
|
||||||
|
|
||||||
enum gdCropMode {
|
|
||||||
GD_CROP_DEFAULT = 0,
|
|
||||||
GD_CROP_TRANSPARENT,
|
|
||||||
GD_CROP_BLACK,
|
|
||||||
GD_CROP_WHITE,
|
|
||||||
GD_CROP_SIDES
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
/* This function accepts truecolor pixel values only. The
|
|
||||||
source color is composited with the destination color
|
|
||||||
based on the alpha channel value of the source color.
|
|
||||||
The resulting color is opaque. */
|
|
||||||
|
|
||||||
BGD_DECLARE(int) gdAlphaBlend (int dest, int src);
|
|
||||||
|
|
||||||
typedef struct gdImageStruct
|
|
||||||
{
|
|
||||||
/* Palette-based image pixels */
|
|
||||||
unsigned char **pixels;
|
|
||||||
int sx;
|
|
||||||
int sy;
|
|
||||||
/* These are valid in palette images only. See also
|
|
||||||
'alpha', which appears later in the structure to
|
|
||||||
preserve binary backwards compatibility */
|
|
||||||
int colorsTotal;
|
|
||||||
int red[gdMaxColors];
|
|
||||||
int green[gdMaxColors];
|
|
||||||
int blue[gdMaxColors];
|
|
||||||
int open[gdMaxColors];
|
|
||||||
/* For backwards compatibility, this is set to the
|
|
||||||
first palette entry with 100% transparency,
|
|
||||||
and is also set and reset by the
|
|
||||||
gdImageColorTransparent function. Newer
|
|
||||||
applications can allocate palette entries
|
|
||||||
with any desired level of transparency; however,
|
|
||||||
bear in mind that many viewers, notably
|
|
||||||
many web browsers, fail to implement
|
|
||||||
full alpha channel for PNG and provide
|
|
||||||
support for full opacity or transparency only. */
|
|
||||||
int transparent;
|
|
||||||
int *polyInts;
|
|
||||||
int polyAllocated;
|
|
||||||
struct gdImageStruct *brush;
|
|
||||||
struct gdImageStruct *tile;
|
|
||||||
int brushColorMap[gdMaxColors];
|
|
||||||
int tileColorMap[gdMaxColors];
|
|
||||||
int styleLength;
|
|
||||||
int stylePos;
|
|
||||||
int *style;
|
|
||||||
int interlace;
|
|
||||||
/* New in 2.0: thickness of line. Initialized to 1. */
|
|
||||||
int thick;
|
|
||||||
/* New in 2.0: alpha channel for palettes. Note that only
|
|
||||||
Macintosh Internet Explorer and (possibly) Netscape 6
|
|
||||||
really support multiple levels of transparency in
|
|
||||||
palettes, to my knowledge, as of 2/15/01. Most
|
|
||||||
common browsers will display 100% opaque and
|
|
||||||
100% transparent correctly, and do something
|
|
||||||
unpredictable and/or undesirable for levels
|
|
||||||
in between. TBB */
|
|
||||||
int alpha[gdMaxColors];
|
|
||||||
/* Truecolor flag and pixels. New 2.0 fields appear here at the
|
|
||||||
end to minimize breakage of existing object code. */
|
|
||||||
int trueColor;
|
|
||||||
int **tpixels;
|
|
||||||
/* Should alpha channel be copied, or applied, each time a
|
|
||||||
pixel is drawn? This applies to truecolor images only.
|
|
||||||
No attempt is made to alpha-blend in palette images,
|
|
||||||
even if semitransparent palette entries exist.
|
|
||||||
To do that, build your image as a truecolor image,
|
|
||||||
then quantize down to 8 bits. */
|
|
||||||
int alphaBlendingFlag;
|
|
||||||
/* Should the alpha channel of the image be saved? This affects
|
|
||||||
PNG at the moment; other future formats may also
|
|
||||||
have that capability. JPEG doesn't. */
|
|
||||||
int saveAlphaFlag;
|
|
||||||
|
|
||||||
/* There should NEVER BE ACCESSOR MACROS FOR ITEMS BELOW HERE, so this
|
|
||||||
part of the structure can be safely changed in new releases. */
|
|
||||||
|
|
||||||
/* 2.0.12: anti-aliased globals. 2.0.26: just a few vestiges after
|
|
||||||
switching to the fast, memory-cheap implementation from PHP-gd. */
|
|
||||||
int AA;
|
|
||||||
int AA_color;
|
|
||||||
int AA_dont_blend;
|
|
||||||
|
|
||||||
/* 2.0.12: simple clipping rectangle. These values
|
|
||||||
must be checked for safety when set; please use
|
|
||||||
gdImageSetClip */
|
|
||||||
int cx1;
|
|
||||||
int cy1;
|
|
||||||
int cx2;
|
|
||||||
int cy2;
|
|
||||||
|
|
||||||
/* 2.1.0: allows to specify resolution in dpi */
|
|
||||||
unsigned int res_x;
|
|
||||||
unsigned int res_y;
|
|
||||||
}
|
|
||||||
gdImage;
|
|
||||||
|
|
||||||
typedef gdImage *gdImagePtr;
|
|
||||||
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
/* # of characters in font */
|
|
||||||
int nchars;
|
|
||||||
/* First character is numbered... (usually 32 = space) */
|
|
||||||
int offset;
|
|
||||||
/* Character width and height */
|
|
||||||
int w;
|
|
||||||
int h;
|
|
||||||
/* Font data; array of characters, one row after another.
|
|
||||||
Easily included in code, also easily loaded from
|
|
||||||
data files. */
|
|
||||||
char *data;
|
|
||||||
}
|
|
||||||
gdFont;
|
|
||||||
|
|
||||||
/* Text functions take these. */
|
|
||||||
typedef gdFont *gdFontPtr;
|
|
||||||
|
|
||||||
/* For backwards compatibility only. Use gdImageSetStyle()
|
|
||||||
for MUCH more flexible line drawing. Also see
|
|
||||||
gdImageSetBrush(). */
|
|
||||||
#define gdDashSize 4
|
|
||||||
|
|
||||||
/* Special colors. */
|
|
||||||
|
|
||||||
#define gdStyled (-2)
|
|
||||||
#define gdBrushed (-3)
|
|
||||||
#define gdStyledBrushed (-4)
|
|
||||||
#define gdTiled (-5)
|
|
||||||
|
|
||||||
/* NOT the same as the transparent color index.
|
|
||||||
This is used in line styles only. */
|
|
||||||
#define gdTransparent (-6)
|
|
||||||
|
|
||||||
#define gdAntiAliased (-7)
|
|
||||||
|
|
||||||
/* Functions to manipulate images. */
|
|
||||||
|
|
||||||
/* Creates a palette-based image (up to 256 colors). */
|
|
||||||
BGD_DECLARE(gdImagePtr) gdImageCreate (int sx, int sy);
|
|
||||||
|
|
||||||
/* An alternate name for the above (2.0). */
|
|
||||||
#define gdImageCreatePalette gdImageCreate
|
|
||||||
|
|
||||||
/* Creates a truecolor image (millions of colors). */
|
|
||||||
BGD_DECLARE(gdImagePtr) gdImageCreateTrueColor (int sx, int sy);
|
|
||||||
|
|
||||||
/* Creates an image from various file types. These functions
|
|
||||||
return a palette or truecolor image based on the
|
|
||||||
nature of the file being loaded. Truecolor PNG
|
|
||||||
stays truecolor; palette PNG stays palette-based;
|
|
||||||
JPEG is always truecolor. */
|
|
||||||
BGD_DECLARE(gdImagePtr) gdImageCreateFromPng (FILE * fd);
|
|
||||||
BGD_DECLARE(gdImagePtr) gdImageCreateFromPngCtx (gdIOCtxPtr in);
|
|
||||||
BGD_DECLARE(gdImagePtr) gdImageCreateFromPngPtr (int size, void *data);
|
|
||||||
|
|
||||||
/* These read the first frame only */
|
|
||||||
BGD_DECLARE(gdImagePtr) gdImageCreateFromGif (FILE * fd);
|
|
||||||
BGD_DECLARE(gdImagePtr) gdImageCreateFromGifCtx (gdIOCtxPtr in);
|
|
||||||
BGD_DECLARE(gdImagePtr) gdImageCreateFromGifPtr (int size, void *data);
|
|
||||||
BGD_DECLARE(gdImagePtr) gdImageCreateFromWBMP (FILE * inFile);
|
|
||||||
BGD_DECLARE(gdImagePtr) gdImageCreateFromWBMPCtx (gdIOCtx * infile);
|
|
||||||
BGD_DECLARE(gdImagePtr) gdImageCreateFromWBMPPtr (int size, void *data);
|
|
||||||
BGD_DECLARE(gdImagePtr) gdImageCreateFromJpeg (FILE * infile);
|
|
||||||
BGD_DECLARE(gdImagePtr) gdImageCreateFromJpegCtx (gdIOCtx * infile);
|
|
||||||
BGD_DECLARE(gdImagePtr) gdImageCreateFromJpegPtr (int size, void *data);
|
|
||||||
|
|
||||||
BGD_DECLARE(gdImagePtr) gdImageCreateFromTiff(FILE *inFile);
|
|
||||||
BGD_DECLARE(gdImagePtr) gdImageCreateFromTiffCtx(gdIOCtx *infile);
|
|
||||||
BGD_DECLARE(gdImagePtr) gdImageCreateFromTiffPtr(int size, void *data);
|
|
||||||
|
|
||||||
BGD_DECLARE(gdImagePtr) gdImageCreateFromTga( FILE * fp );
|
|
||||||
BGD_DECLARE(gdImagePtr) gdImageCreateFromTgaCtx(gdIOCtx* ctx);
|
|
||||||
BGD_DECLARE(gdImagePtr) gdImageCreateFromTgaPtr(int size, void *data);
|
|
||||||
|
|
||||||
BGD_DECLARE(gdImagePtr) gdImageCreateFromBmp (FILE * inFile);
|
|
||||||
BGD_DECLARE(gdImagePtr) gdImageCreateFromBmpPtr (int size, void *data);
|
|
||||||
BGD_DECLARE(gdImagePtr) gdImageCreateFromBmpCtx (gdIOCtxPtr infile);
|
|
||||||
|
|
||||||
/* A custom data source. */
|
|
||||||
/* The source function must return -1 on error, otherwise the number
|
|
||||||
of bytes fetched. 0 is EOF, not an error! */
|
|
||||||
/* context will be passed to your source function. */
|
|
||||||
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
int (*source) (void *context, char *buffer, int len);
|
|
||||||
void *context;
|
|
||||||
}
|
|
||||||
gdSource, *gdSourcePtr;
|
|
||||||
|
|
||||||
/* Deprecated in favor of gdImageCreateFromPngCtx */
|
|
||||||
BGD_DECLARE(gdImagePtr) gdImageCreateFromPngSource (gdSourcePtr in);
|
|
||||||
|
|
||||||
BGD_DECLARE(gdImagePtr) gdImageCreateFromGd (FILE * in);
|
|
||||||
BGD_DECLARE(gdImagePtr) gdImageCreateFromGdCtx (gdIOCtxPtr in);
|
|
||||||
BGD_DECLARE(gdImagePtr) gdImageCreateFromGdPtr (int size, void *data);
|
|
||||||
|
|
||||||
BGD_DECLARE(gdImagePtr) gdImageCreateFromGd2 (FILE * in);
|
|
||||||
BGD_DECLARE(gdImagePtr) gdImageCreateFromGd2Ctx (gdIOCtxPtr in);
|
|
||||||
BGD_DECLARE(gdImagePtr) gdImageCreateFromGd2Ptr (int size, void *data);
|
|
||||||
|
|
||||||
BGD_DECLARE(gdImagePtr) gdImageCreateFromGd2Part (FILE * in, int srcx, int srcy, int w,
|
|
||||||
int h);
|
|
||||||
BGD_DECLARE(gdImagePtr) gdImageCreateFromGd2PartCtx (gdIOCtxPtr in, int srcx, int srcy,
|
|
||||||
int w, int h);
|
|
||||||
BGD_DECLARE(gdImagePtr) gdImageCreateFromGd2PartPtr (int size, void *data, int srcx, int srcy,
|
|
||||||
int w, int h);
|
|
||||||
/* 2.0.10: prototype was missing */
|
|
||||||
BGD_DECLARE(gdImagePtr) gdImageCreateFromXbm (FILE * in);
|
|
||||||
|
|
||||||
/* NOTE: filename, not FILE */
|
|
||||||
BGD_DECLARE(gdImagePtr) gdImageCreateFromXpm (char *filename);
|
|
||||||
|
|
||||||
BGD_DECLARE(void) gdImageDestroy (gdImagePtr im);
|
|
||||||
|
|
||||||
/* Replaces or blends with the background depending on the
|
|
||||||
most recent call to gdImageAlphaBlending and the
|
|
||||||
alpha channel value of 'color'; default is to overwrite.
|
|
||||||
Tiling and line styling are also implemented
|
|
||||||
here. All other gd drawing functions pass through this call,
|
|
||||||
allowing for many useful effects. */
|
|
||||||
|
|
||||||
BGD_DECLARE(void) gdImageSetPixel (gdImagePtr im, int x, int y, int color);
|
|
||||||
/* FreeType 2 text output with hook to extra flags */
|
|
||||||
|
|
||||||
BGD_DECLARE(int) gdImageGetPixel (gdImagePtr im, int x, int y);
|
|
||||||
BGD_DECLARE(int) gdImageGetTrueColorPixel (gdImagePtr im, int x, int y);
|
|
||||||
|
|
||||||
BGD_DECLARE(void) gdImageAABlend (gdImagePtr im);
|
|
||||||
|
|
||||||
BGD_DECLARE(void) gdImageLine (gdImagePtr im, int x1, int y1, int x2, int y2, int color);
|
|
||||||
|
|
||||||
/* For backwards compatibility only. Use gdImageSetStyle()
|
|
||||||
for much more flexible line drawing. */
|
|
||||||
BGD_DECLARE(void) gdImageDashedLine (gdImagePtr im, int x1, int y1, int x2, int y2,
|
|
||||||
int color);
|
|
||||||
/* Corners specified (not width and height). Upper left first, lower right
|
|
||||||
second. */
|
|
||||||
BGD_DECLARE(void) gdImageRectangle (gdImagePtr im, int x1, int y1, int x2, int y2,
|
|
||||||
int color);
|
|
||||||
/* Solid bar. Upper left corner first, lower right corner second. */
|
|
||||||
BGD_DECLARE(void) gdImageFilledRectangle (gdImagePtr im, int x1, int y1, int x2, int y2,
|
|
||||||
int color);
|
|
||||||
BGD_DECLARE(void) gdImageSetClip(gdImagePtr im, int x1, int y1, int x2, int y2);
|
|
||||||
BGD_DECLARE(void) gdImageGetClip(gdImagePtr im, int *x1P, int *y1P, int *x2P, int *y2P);
|
|
||||||
BGD_DECLARE(void) gdImageSetResolution(gdImagePtr im, const unsigned int res_x, const unsigned int res_y);
|
|
||||||
BGD_DECLARE(int) gdImageBoundsSafe (gdImagePtr im, int x, int y);
|
|
||||||
BGD_DECLARE(void) gdImageChar (gdImagePtr im, gdFontPtr f, int x, int y, int c,
|
|
||||||
int color);
|
|
||||||
BGD_DECLARE(void) gdImageCharUp (gdImagePtr im, gdFontPtr f, int x, int y, int c,
|
|
||||||
int color);
|
|
||||||
BGD_DECLARE(void) gdImageString (gdImagePtr im, gdFontPtr f, int x, int y,
|
|
||||||
unsigned char *s, int color);
|
|
||||||
BGD_DECLARE(void) gdImageStringUp (gdImagePtr im, gdFontPtr f, int x, int y,
|
|
||||||
unsigned char *s, int color);
|
|
||||||
BGD_DECLARE(void) gdImageString16 (gdImagePtr im, gdFontPtr f, int x, int y,
|
|
||||||
unsigned short *s, int color);
|
|
||||||
BGD_DECLARE(void) gdImageStringUp16 (gdImagePtr im, gdFontPtr f, int x, int y,
|
|
||||||
unsigned short *s, int color);
|
|
||||||
|
|
||||||
/* 2.0.16: for thread-safe use of gdImageStringFT and friends,
|
|
||||||
call this before allowing any thread to call gdImageStringFT.
|
|
||||||
Otherwise it is invoked by the first thread to invoke
|
|
||||||
gdImageStringFT, with a very small but real risk of a race condition.
|
|
||||||
Return 0 on success, nonzero on failure to initialize freetype. */
|
|
||||||
BGD_DECLARE(int) gdFontCacheSetup (void);
|
|
||||||
|
|
||||||
/* Optional: clean up after application is done using fonts in
|
|
||||||
BGD_DECLARE( )
|
|
||||||
gdImageStringFT(). */
|
|
||||||
BGD_DECLARE(void) gdFontCacheShutdown (void);
|
|
||||||
/* 2.0.20: for backwards compatibility. A few applications did start calling
|
|
||||||
this function when it first appeared although it was never documented.
|
|
||||||
Simply invokes gdFontCacheShutdown. */
|
|
||||||
BGD_DECLARE(void) gdFreeFontCache (void);
|
|
||||||
|
|
||||||
/* Calls gdImageStringFT. Provided for backwards compatibility only. */
|
|
||||||
BGD_DECLARE(char *) gdImageStringTTF (gdImage * im, int *brect, int fg, char *fontlist,
|
|
||||||
double ptsize, double angle, int x, int y,
|
|
||||||
char *string);
|
|
||||||
|
|
||||||
/* FreeType 2 text output */
|
|
||||||
BGD_DECLARE(char *) gdImageStringFT (gdImage * im, int *brect, int fg, char *fontlist,
|
|
||||||
double ptsize, double angle, int x, int y,
|
|
||||||
char *string);
|
|
||||||
|
|
||||||
/* 2.0.5: provides an extensible way to pass additional parameters.
|
|
||||||
Thanks to Wez Furlong, sorry for the delay. */
|
|
||||||
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
int flags; /* Logical OR of gdFTEX_ values */
|
|
||||||
double linespacing; /* fine tune line spacing for '\n' */
|
|
||||||
int charmap; /* TBB: 2.0.12: may be gdFTEX_Unicode,
|
|
||||||
gdFTEX_Shift_JIS, gdFTEX_Big5,
|
|
||||||
or gdFTEX_Adobe_Custom;
|
|
||||||
when not specified, maps are searched
|
|
||||||
for in the above order. */
|
|
||||||
int hdpi; /* if (flags & gdFTEX_RESOLUTION) */
|
|
||||||
int vdpi; /* if (flags & gdFTEX_RESOLUTION) */
|
|
||||||
char *xshow; /* if (flags & gdFTEX_XSHOW)
|
|
||||||
then, on return, xshow is a malloc'ed
|
|
||||||
string containing xshow position data for
|
|
||||||
the last string.
|
|
||||||
|
|
||||||
NB. The caller is responsible for gdFree'ing
|
|
||||||
the xshow string.
|
|
||||||
*/
|
|
||||||
char *fontpath; /* if (flags & gdFTEX_RETURNFONTPATHNAME)
|
|
||||||
then, on return, fontpath is a malloc'ed
|
|
||||||
string containing the actual font file path name
|
|
||||||
used, which can be interesting when fontconfig
|
|
||||||
is in use.
|
|
||||||
|
|
||||||
The caller is responsible for gdFree'ing the
|
|
||||||
fontpath string.
|
|
||||||
*/
|
|
||||||
|
|
||||||
}
|
|
||||||
gdFTStringExtra, *gdFTStringExtraPtr;
|
|
||||||
|
|
||||||
#define gdFTEX_LINESPACE 1
|
|
||||||
#define gdFTEX_CHARMAP 2
|
|
||||||
#define gdFTEX_RESOLUTION 4
|
|
||||||
#define gdFTEX_DISABLE_KERNING 8
|
|
||||||
#define gdFTEX_XSHOW 16
|
|
||||||
/* The default unless gdFTUseFontConfig(1); has been called:
|
|
||||||
fontlist is a full or partial font file pathname or list thereof
|
|
||||||
(i.e. just like before 2.0.29) */
|
|
||||||
#define gdFTEX_FONTPATHNAME 32
|
|
||||||
/* Necessary to use fontconfig patterns instead of font pathnames
|
|
||||||
as the fontlist argument, unless gdFTUseFontConfig(1); has
|
|
||||||
been called. New in 2.0.29 */
|
|
||||||
#define gdFTEX_FONTCONFIG 64
|
|
||||||
/* Sometimes interesting when fontconfig is used: the fontpath
|
|
||||||
element of the structure above will contain a gdMalloc'd string
|
|
||||||
copy of the actual font file pathname used, if this flag is set
|
|
||||||
when the call is made */
|
|
||||||
#define gdFTEX_RETURNFONTPATHNAME 128
|
|
||||||
|
|
||||||
/* If flag is nonzero, the fontlist parameter to gdImageStringFT
|
|
||||||
and gdImageStringFTEx shall be assumed to be a fontconfig font pattern
|
|
||||||
if fontconfig was compiled into gd. This function returns zero
|
|
||||||
if fontconfig is not available, nonzero otherwise. */
|
|
||||||
BGD_DECLARE(int) gdFTUseFontConfig(int flag);
|
|
||||||
|
|
||||||
/* These are NOT flags; set one in 'charmap' if you set the
|
|
||||||
gdFTEX_CHARMAP bit in 'flags'. */
|
|
||||||
#define gdFTEX_Unicode 0
|
|
||||||
#define gdFTEX_Shift_JIS 1
|
|
||||||
#define gdFTEX_Big5 2
|
|
||||||
#define gdFTEX_Adobe_Custom 3
|
|
||||||
|
|
||||||
BGD_DECLARE(char *) gdImageStringFTEx (gdImage * im, int *brect, int fg, char *fontlist,
|
|
||||||
double ptsize, double angle, int x, int y,
|
|
||||||
char *string, gdFTStringExtraPtr strex);
|
|
||||||
|
|
||||||
/* Point type for use in polygon drawing. */
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
int x, y;
|
|
||||||
}
|
|
||||||
gdPoint, *gdPointPtr;
|
|
||||||
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
int x, y;
|
|
||||||
int width, height;
|
|
||||||
}
|
|
||||||
gdRect, *gdRectPtr;
|
|
||||||
|
|
||||||
|
|
||||||
BGD_DECLARE(void) gdImagePolygon (gdImagePtr im, gdPointPtr p, int n, int c);
|
|
||||||
BGD_DECLARE(void) gdImageOpenPolygon (gdImagePtr im, gdPointPtr p, int n, int c);
|
|
||||||
BGD_DECLARE(void) gdImageFilledPolygon (gdImagePtr im, gdPointPtr p, int n, int c);
|
|
||||||
|
|
||||||
/* These functions still work with truecolor images,
|
|
||||||
for which they never return error. */
|
|
||||||
BGD_DECLARE(int) gdImageColorAllocate (gdImagePtr im, int r, int g, int b);
|
|
||||||
/* gd 2.0: palette entries with non-opaque transparency are permitted. */
|
|
||||||
BGD_DECLARE(int) gdImageColorAllocateAlpha (gdImagePtr im, int r, int g, int b, int a);
|
|
||||||
/* Assumes opaque is the preferred alpha channel value */
|
|
||||||
BGD_DECLARE(int) gdImageColorClosest (gdImagePtr im, int r, int g, int b);
|
|
||||||
/* Closest match taking all four parameters into account.
|
|
||||||
A slightly different color with the same transparency
|
|
||||||
beats the exact same color with radically different
|
|
||||||
transparency */
|
|
||||||
BGD_DECLARE(int) gdImageColorClosestAlpha (gdImagePtr im, int r, int g, int b, int a);
|
|
||||||
/* An alternate method */
|
|
||||||
BGD_DECLARE(int) gdImageColorClosestHWB (gdImagePtr im, int r, int g, int b);
|
|
||||||
/* Returns exact, 100% opaque matches only */
|
|
||||||
BGD_DECLARE(int) gdImageColorExact (gdImagePtr im, int r, int g, int b);
|
|
||||||
/* Returns an exact match only, including alpha */
|
|
||||||
BGD_DECLARE(int) gdImageColorExactAlpha (gdImagePtr im, int r, int g, int b, int a);
|
|
||||||
/* Opaque only */
|
|
||||||
BGD_DECLARE(int) gdImageColorResolve (gdImagePtr im, int r, int g, int b);
|
|
||||||
/* Based on gdImageColorExactAlpha and gdImageColorClosestAlpha */
|
|
||||||
BGD_DECLARE(int) gdImageColorResolveAlpha (gdImagePtr im, int r, int g, int b, int a);
|
|
||||||
|
|
||||||
/* A simpler way to obtain an opaque truecolor value for drawing on a
|
|
||||||
truecolor image. Not for use with palette images! */
|
|
||||||
|
|
||||||
#define gdTrueColor(r, g, b) (((r) << 16) + \
|
|
||||||
((g) << 8) + \
|
|
||||||
(b))
|
|
||||||
|
|
||||||
/* Returns a truecolor value with an alpha channel component.
|
|
||||||
gdAlphaMax (127, **NOT 255**) is transparent, 0 is completely
|
|
||||||
opaque. */
|
|
||||||
|
|
||||||
#define gdTrueColorAlpha(r, g, b, a) (((a) << 24) + \
|
|
||||||
((r) << 16) + \
|
|
||||||
((g) << 8) + \
|
|
||||||
(b))
|
|
||||||
|
|
||||||
BGD_DECLARE(void) gdImageColorDeallocate (gdImagePtr im, int color);
|
|
||||||
|
|
||||||
/* Converts a truecolor image to a palette-based image,
|
|
||||||
using a high-quality two-pass quantization routine
|
|
||||||
which attempts to preserve alpha channel information
|
|
||||||
as well as R/G/B color information when creating
|
|
||||||
a palette. If ditherFlag is set, the image will be
|
|
||||||
dithered to approximate colors better, at the expense
|
|
||||||
of some obvious "speckling." colorsWanted can be
|
|
||||||
anything up to 256. If the original source image
|
|
||||||
includes photographic information or anything that
|
|
||||||
came out of a JPEG, 256 is strongly recommended.
|
|
||||||
|
|
||||||
Better yet, don't use these function -- write real
|
|
||||||
truecolor PNGs and JPEGs. The disk space gain of
|
|
||||||
conversion to palette is not great (for small images
|
|
||||||
it can be negative) and the quality loss is ugly.
|
|
||||||
|
|
||||||
DIFFERENCES: gdImageCreatePaletteFromTrueColor creates and
|
|
||||||
returns a new image. gdImageTrueColorToPalette modifies
|
|
||||||
an existing image, and the truecolor pixels are discarded. */
|
|
||||||
|
|
||||||
BGD_DECLARE(gdImagePtr) gdImageCreatePaletteFromTrueColor (gdImagePtr im, int ditherFlag,
|
|
||||||
int colorsWanted);
|
|
||||||
|
|
||||||
BGD_DECLARE(void) gdImageTrueColorToPalette (gdImagePtr im, int ditherFlag,
|
|
||||||
int colorsWanted);
|
|
||||||
|
|
||||||
/* Specifies a color index (if a palette image) or an
|
|
||||||
RGB color (if a truecolor image) which should be
|
|
||||||
considered 100% transparent. FOR TRUECOLOR IMAGES,
|
|
||||||
THIS IS IGNORED IF AN ALPHA CHANNEL IS BEING
|
|
||||||
SAVED. Use gdImageSaveAlpha(im, 0); to
|
|
||||||
turn off the saving of a full alpha channel in
|
|
||||||
a truecolor image. Note that gdImageColorTransparent
|
|
||||||
is usually compatible with older browsers that
|
|
||||||
do not understand full alpha channels well. TBB */
|
|
||||||
BGD_DECLARE(void) gdImageColorTransparent (gdImagePtr im, int color);
|
|
||||||
|
|
||||||
BGD_DECLARE(void) gdImagePaletteCopy (gdImagePtr dst, gdImagePtr src);
|
|
||||||
|
|
||||||
typedef int (*gdCallbackImageColor)(gdImagePtr im, int src);
|
|
||||||
|
|
||||||
BGD_DECLARE(int) gdImageColorReplace(gdImagePtr im, int src, int dst);
|
|
||||||
BGD_DECLARE(int) gdImageColorReplaceThreshold(gdImagePtr im, int src, int dst, float threshold);
|
|
||||||
BGD_DECLARE(int) gdImageColorReplaceArray(gdImagePtr im, int len, int *src, int *dst);
|
|
||||||
BGD_DECLARE(int) gdImageColorReplaceCallback(gdImagePtr im, gdCallbackImageColor callback);
|
|
||||||
|
|
||||||
BGD_DECLARE(void) gdImageGif (gdImagePtr im, FILE * out);
|
|
||||||
BGD_DECLARE(void) gdImagePng (gdImagePtr im, FILE * out);
|
|
||||||
BGD_DECLARE(void) gdImagePngCtx (gdImagePtr im, gdIOCtx * out);
|
|
||||||
BGD_DECLARE(void) gdImageGifCtx (gdImagePtr im, gdIOCtx * out);
|
|
||||||
BGD_DECLARE(void) gdImageTiff(gdImagePtr im, FILE *outFile);
|
|
||||||
BGD_DECLARE(void *) gdImageTiffPtr(gdImagePtr im, int *size);
|
|
||||||
BGD_DECLARE(void) gdImageTiffCtx(gdImagePtr image, gdIOCtx *out);
|
|
||||||
|
|
||||||
BGD_DECLARE(void *) gdImageBmpPtr(gdImagePtr im, int *size, int compression);
|
|
||||||
BGD_DECLARE(void) gdImageBmp(gdImagePtr im, FILE *outFile, int compression);
|
|
||||||
BGD_DECLARE(void) gdImageBmpCtx(gdImagePtr im, gdIOCtxPtr out, int compression);
|
|
||||||
|
|
||||||
/* 2.0.12: Compression level: 0-9 or -1, where 0 is NO COMPRESSION at all,
|
|
||||||
1 is FASTEST but produces larger files, 9 provides the best
|
|
||||||
compression (smallest files) but takes a long time to compress, and
|
|
||||||
-1 selects the default compiled into the zlib library. */
|
|
||||||
BGD_DECLARE(void) gdImagePngEx (gdImagePtr im, FILE * out, int level);
|
|
||||||
BGD_DECLARE(void) gdImagePngCtxEx (gdImagePtr im, gdIOCtx * out, int level);
|
|
||||||
|
|
||||||
BGD_DECLARE(void) gdImageWBMP (gdImagePtr image, int fg, FILE * out);
|
|
||||||
BGD_DECLARE(void) gdImageWBMPCtx (gdImagePtr image, int fg, gdIOCtx * out);
|
|
||||||
|
|
||||||
/* Guaranteed to correctly free memory returned
|
|
||||||
by the gdImage*Ptr functions */
|
|
||||||
BGD_DECLARE(void) gdFree (void *m);
|
|
||||||
|
|
||||||
/* Best to free this memory with gdFree(), not free() */
|
|
||||||
BGD_DECLARE(void *) gdImageWBMPPtr (gdImagePtr im, int *size, int fg);
|
|
||||||
|
|
||||||
/* 100 is highest quality (there is always a little loss with JPEG).
|
|
||||||
0 is lowest. 10 is about the lowest useful setting. */
|
|
||||||
BGD_DECLARE(void) gdImageJpeg (gdImagePtr im, FILE * out, int quality);
|
|
||||||
BGD_DECLARE(void) gdImageJpegCtx (gdImagePtr im, gdIOCtx * out, int quality);
|
|
||||||
|
|
||||||
/* Best to free this memory with gdFree(), not free() */
|
|
||||||
BGD_DECLARE(void *) gdImageJpegPtr (gdImagePtr im, int *size, int quality);
|
|
||||||
|
|
||||||
/* Legal values for Disposal. gdDisposalNone is always used by
|
|
||||||
the built-in optimizer if previm is passed. */
|
|
||||||
|
|
||||||
enum {
|
|
||||||
gdDisposalUnknown,
|
|
||||||
gdDisposalNone,
|
|
||||||
gdDisposalRestoreBackground,
|
|
||||||
gdDisposalRestorePrevious
|
|
||||||
};
|
|
||||||
|
|
||||||
BGD_DECLARE(void) gdImageGifAnimBegin(gdImagePtr im, FILE *outFile, int GlobalCM, int Loops);
|
|
||||||
BGD_DECLARE(void) gdImageGifAnimAdd(gdImagePtr im, FILE *outFile, int LocalCM, int LeftOfs, int TopOfs, int Delay, int Disposal, gdImagePtr previm);
|
|
||||||
BGD_DECLARE(void) gdImageGifAnimEnd(FILE *outFile);
|
|
||||||
BGD_DECLARE(void) gdImageGifAnimBeginCtx(gdImagePtr im, gdIOCtx *out, int GlobalCM, int Loops);
|
|
||||||
BGD_DECLARE(void) gdImageGifAnimAddCtx(gdImagePtr im, gdIOCtx *out, int LocalCM, int LeftOfs, int TopOfs, int Delay, int Disposal, gdImagePtr previm);
|
|
||||||
BGD_DECLARE(void) gdImageGifAnimEndCtx(gdIOCtx *out);
|
|
||||||
BGD_DECLARE(void *) gdImageGifAnimBeginPtr(gdImagePtr im, int *size, int GlobalCM, int Loops);
|
|
||||||
BGD_DECLARE(void *) gdImageGifAnimAddPtr(gdImagePtr im, int *size, int LocalCM, int LeftOfs, int TopOfs, int Delay, int Disposal, gdImagePtr previm);
|
|
||||||
BGD_DECLARE(void *) gdImageGifAnimEndPtr(int *size);
|
|
||||||
|
|
||||||
/* A custom data sink. For backwards compatibility. Use
|
|
||||||
gdIOCtx instead. */
|
|
||||||
/* The sink function must return -1 on error, otherwise the number
|
|
||||||
of bytes written, which must be equal to len. */
|
|
||||||
/* context will be passed to your sink function. */
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
int (*sink) (void *context, const char *buffer, int len);
|
|
||||||
void *context;
|
|
||||||
}
|
|
||||||
gdSink, *gdSinkPtr;
|
|
||||||
|
|
||||||
BGD_DECLARE(void) gdImagePngToSink (gdImagePtr im, gdSinkPtr out);
|
|
||||||
|
|
||||||
BGD_DECLARE(void) gdImageGd (gdImagePtr im, FILE * out);
|
|
||||||
BGD_DECLARE(void) gdImageGd2 (gdImagePtr im, FILE * out, int cs, int fmt);
|
|
||||||
|
|
||||||
/* Best to free this memory with gdFree(), not free() */
|
|
||||||
BGD_DECLARE(void *) gdImageGifPtr (gdImagePtr im, int *size);
|
|
||||||
|
|
||||||
/* Best to free this memory with gdFree(), not free() */
|
|
||||||
BGD_DECLARE(void *) gdImagePngPtr (gdImagePtr im, int *size);
|
|
||||||
BGD_DECLARE(void *) gdImagePngPtrEx (gdImagePtr im, int *size, int level);
|
|
||||||
|
|
||||||
/* Best to free this memory with gdFree(), not free() */
|
|
||||||
BGD_DECLARE(void *) gdImageGdPtr (gdImagePtr im, int *size);
|
|
||||||
|
|
||||||
/* Best to free this memory with gdFree(), not free() */
|
|
||||||
BGD_DECLARE(void *) gdImageGd2Ptr (gdImagePtr im, int cs, int fmt, int *size);
|
|
||||||
|
|
||||||
/* Style is a bitwise OR ( | operator ) of these.
|
|
||||||
gdArc and gdChord are mutually exclusive;
|
|
||||||
gdChord just connects the starting and ending
|
|
||||||
angles with a straight line, while gdArc produces
|
|
||||||
a rounded edge. gdPie is a synonym for gdArc.
|
|
||||||
gdNoFill indicates that the arc or chord should be
|
|
||||||
outlined, not filled. gdEdged, used together with
|
|
||||||
gdNoFill, indicates that the beginning and ending
|
|
||||||
angles should be connected to the center; this is
|
|
||||||
a good way to outline (rather than fill) a
|
|
||||||
'pie slice'. */
|
|
||||||
#define gdArc 0
|
|
||||||
#define gdPie gdArc
|
|
||||||
#define gdChord 1
|
|
||||||
#define gdNoFill 2
|
|
||||||
#define gdEdged 4
|
|
||||||
|
|
||||||
BGD_DECLARE(void) gdImageFilledArc (gdImagePtr im, int cx, int cy, int w, int h, int s,
|
|
||||||
int e, int color, int style);
|
|
||||||
BGD_DECLARE(void) gdImageArc (gdImagePtr im, int cx, int cy, int w, int h, int s, int e,
|
|
||||||
int color);
|
|
||||||
BGD_DECLARE(void) gdImageEllipse(gdImagePtr im, int cx, int cy, int w, int h, int color);
|
|
||||||
BGD_DECLARE(void) gdImageFilledEllipse (gdImagePtr im, int cx, int cy, int w, int h,
|
|
||||||
int color);
|
|
||||||
BGD_DECLARE(void) gdImageFillToBorder (gdImagePtr im, int x, int y, int border,
|
|
||||||
int color);
|
|
||||||
BGD_DECLARE(void) gdImageFill (gdImagePtr im, int x, int y, int color);
|
|
||||||
BGD_DECLARE(void) gdImageCopy (gdImagePtr dst, gdImagePtr src, int dstX, int dstY,
|
|
||||||
int srcX, int srcY, int w, int h);
|
|
||||||
BGD_DECLARE(void) gdImageCopyMerge (gdImagePtr dst, gdImagePtr src, int dstX, int dstY,
|
|
||||||
int srcX, int srcY, int w, int h, int pct);
|
|
||||||
BGD_DECLARE(void) gdImageCopyMergeGray (gdImagePtr dst, gdImagePtr src, int dstX,
|
|
||||||
int dstY, int srcX, int srcY, int w, int h,
|
|
||||||
int pct);
|
|
||||||
|
|
||||||
/* Stretches or shrinks to fit, as needed. Does NOT attempt
|
|
||||||
to average the entire set of source pixels that scale down onto the
|
|
||||||
destination pixel. */
|
|
||||||
BGD_DECLARE(void) gdImageCopyResized (gdImagePtr dst, gdImagePtr src, int dstX, int dstY,
|
|
||||||
int srcX, int srcY, int dstW, int dstH, int srcW,
|
|
||||||
int srcH);
|
|
||||||
|
|
||||||
/* gd 2.0: stretches or shrinks to fit, as needed. When called with a
|
|
||||||
truecolor destination image, this function averages the
|
|
||||||
entire set of source pixels that scale down onto the
|
|
||||||
destination pixel, taking into account what portion of the
|
|
||||||
destination pixel each source pixel represents. This is a
|
|
||||||
floating point operation, but this is not a performance issue
|
|
||||||
on modern hardware, except for some embedded devices. If the
|
|
||||||
destination is a palette image, gdImageCopyResized is
|
|
||||||
substituted automatically. */
|
|
||||||
BGD_DECLARE(void) gdImageCopyResampled (gdImagePtr dst, gdImagePtr src, int dstX,
|
|
||||||
int dstY, int srcX, int srcY, int dstW, int dstH,
|
|
||||||
int srcW, int srcH);
|
|
||||||
|
|
||||||
/* gd 2.0.8: gdImageCopyRotated is added. Source
|
|
||||||
is a rectangle, with its upper left corner at
|
|
||||||
srcX and srcY. Destination is the *center* of
|
|
||||||
the rotated copy. Angle is in degrees, same as
|
|
||||||
gdImageArc. Floating point destination center
|
|
||||||
coordinates allow accurate rotation of
|
|
||||||
objects of odd-numbered width or height. */
|
|
||||||
BGD_DECLARE(void) gdImageCopyRotated (gdImagePtr dst,
|
|
||||||
gdImagePtr src,
|
|
||||||
double dstX, double dstY,
|
|
||||||
int srcX, int srcY,
|
|
||||||
int srcWidth, int srcHeight, int angle);
|
|
||||||
|
|
||||||
BGD_DECLARE(void) gdImageSetBrush (gdImagePtr im, gdImagePtr brush);
|
|
||||||
BGD_DECLARE(void) gdImageSetTile (gdImagePtr im, gdImagePtr tile);
|
|
||||||
BGD_DECLARE(void) gdImageSetAntiAliased (gdImagePtr im, int c);
|
|
||||||
BGD_DECLARE(void) gdImageSetAntiAliasedDontBlend (gdImagePtr im, int c, int dont_blend);
|
|
||||||
BGD_DECLARE(void) gdImageSetStyle (gdImagePtr im, int *style, int noOfPixels);
|
|
||||||
/* Line thickness (defaults to 1). Affects lines, ellipses,
|
|
||||||
rectangles, polygons and so forth. */
|
|
||||||
BGD_DECLARE(void) gdImageSetThickness (gdImagePtr im, int thickness);
|
|
||||||
/* On or off (1 or 0) for all three of these. */
|
|
||||||
BGD_DECLARE(void) gdImageInterlace (gdImagePtr im, int interlaceArg);
|
|
||||||
BGD_DECLARE(void) gdImageAlphaBlending (gdImagePtr im, int alphaBlendingArg);
|
|
||||||
BGD_DECLARE(void) gdImageSaveAlpha (gdImagePtr im, int saveAlphaArg);
|
|
||||||
|
|
||||||
|
|
||||||
BGD_DECLARE(gdImagePtr) gdImageCrop(gdImagePtr src, const gdRect *crop);
|
|
||||||
BGD_DECLARE(gdImagePtr) gdImageAutoCrop(gdImagePtr im, const unsigned int mode);
|
|
||||||
BGD_DECLARE(gdImagePtr) gdImageThresholdCrop(gdImagePtr im, const unsigned int color, const float threshold);
|
|
||||||
|
|
||||||
BGD_DECLARE(void) gdImageFlipHorizontal(gdImagePtr im);
|
|
||||||
BGD_DECLARE(void) gdImageFlipVertical(gdImagePtr im);
|
|
||||||
BGD_DECLARE(void) gdImageFlipBoth(gdImagePtr im);
|
|
||||||
|
|
||||||
BGD_DECLARE(gdImagePtr) gdImageNeuQuant(gdImagePtr im, const int max_color, int sample_factor);
|
|
||||||
|
|
||||||
enum gdPixelateMode {
|
|
||||||
GD_PIXELATE_UPPERLEFT,
|
|
||||||
GD_PIXELATE_AVERAGE
|
|
||||||
};
|
|
||||||
|
|
||||||
BGD_DECLARE(int) gdImagePixelate(gdImagePtr im, int block_size, const unsigned int mode);
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
int sub;
|
|
||||||
int plus;
|
|
||||||
unsigned int num_colors;
|
|
||||||
int *colors;
|
|
||||||
unsigned int seed;
|
|
||||||
} gdScatter, *gdScatterPtr;
|
|
||||||
|
|
||||||
BGD_DECLARE(int) gdImageScatter(gdImagePtr im, int sub, int plus);
|
|
||||||
BGD_DECLARE(int) gdImageScatterColor(gdImagePtr im, int sub, int plus, int colors[], unsigned int num_colors);
|
|
||||||
BGD_DECLARE(int) gdImageScatterEx(gdImagePtr im, gdScatterPtr s);
|
|
||||||
|
|
||||||
/* Macros to access information about images. */
|
|
||||||
|
|
||||||
/* Returns nonzero if the image is a truecolor image,
|
|
||||||
zero for a palette image. */
|
|
||||||
|
|
||||||
#define gdImageTrueColor(im) ((im)->trueColor)
|
|
||||||
|
|
||||||
#define gdImageSX(im) ((im)->sx)
|
|
||||||
#define gdImageSY(im) ((im)->sy)
|
|
||||||
#define gdImageColorsTotal(im) ((im)->colorsTotal)
|
|
||||||
#define gdImageRed(im, c) ((im)->trueColor ? (int) gdTrueColorGetRed(c) : \
|
|
||||||
(im)->red[(c)])
|
|
||||||
#define gdImageGreen(im, c) ((im)->trueColor ? (int) gdTrueColorGetGreen(c) : \
|
|
||||||
(im)->green[(c)])
|
|
||||||
#define gdImageBlue(im, c) ((im)->trueColor ? (int) gdTrueColorGetBlue(c) : \
|
|
||||||
(im)->blue[(c)])
|
|
||||||
#define gdImageAlpha(im, c) ((im)->trueColor ? (int) gdTrueColorGetAlpha(c) : \
|
|
||||||
(im)->alpha[(c)])
|
|
||||||
#define gdImageGetTransparent(im) ((im)->transparent)
|
|
||||||
#define gdImageGetInterlaced(im) ((im)->interlace)
|
|
||||||
|
|
||||||
/* These macros provide direct access to pixels in
|
|
||||||
palette-based and truecolor images, respectively.
|
|
||||||
If you use these macros, you must perform your own
|
|
||||||
bounds checking. Use of the macro for the correct type
|
|
||||||
of image is also your responsibility. */
|
|
||||||
#define gdImagePalettePixel(im, x, y) (im)->pixels[(y)][(x)]
|
|
||||||
#define gdImageTrueColorPixel(im, x, y) (im)->tpixels[(y)][(x)]
|
|
||||||
|
|
||||||
#define gdImageResolutionX(im) (im)->res_x
|
|
||||||
#define gdImageResolutionY(im) (im)->res_y
|
|
||||||
|
|
||||||
/* I/O Support routines. */
|
|
||||||
|
|
||||||
BGD_DECLARE(gdIOCtx *) gdNewFileCtx (FILE *);
|
|
||||||
/* If data is null, size is ignored and an initial data buffer is
|
|
||||||
allocated automatically. NOTE: this function assumes gd has the right
|
|
||||||
to free or reallocate "data" at will! Also note that gd will free
|
|
||||||
"data" when the IO context is freed. If data is not null, it must point
|
|
||||||
to memory allocated with gdMalloc, or by a call to gdImage[something]Ptr.
|
|
||||||
If not, see gdNewDynamicCtxEx for an alternative. */
|
|
||||||
BGD_DECLARE(gdIOCtx *) gdNewDynamicCtx (int size, void *data);
|
|
||||||
/* 2.0.21: if freeFlag is nonzero, gd will free and/or reallocate "data" as
|
|
||||||
needed as described above. If freeFlag is zero, gd will never free
|
|
||||||
or reallocate "data", which means that the context should only be used
|
|
||||||
for *reading* an image from a memory buffer, or writing an image to a
|
|
||||||
memory buffer which is already large enough. If the memory buffer is
|
|
||||||
not large enough and an image write is attempted, the write operation
|
|
||||||
will fail. Those wishing to write an image to a buffer in memory have
|
|
||||||
a much simpler alternative in the gdImage[something]Ptr functions. */
|
|
||||||
BGD_DECLARE(gdIOCtx *) gdNewDynamicCtxEx (int size, void *data, int freeFlag);
|
|
||||||
BGD_DECLARE(gdIOCtx *) gdNewSSCtx (gdSourcePtr in, gdSinkPtr out);
|
|
||||||
BGD_DECLARE(void *) gdDPExtractData (struct gdIOCtx *ctx, int *size);
|
|
||||||
|
|
||||||
#define GD2_CHUNKSIZE 128
|
|
||||||
#define GD2_CHUNKSIZE_MIN 64
|
|
||||||
#define GD2_CHUNKSIZE_MAX 4096
|
|
||||||
|
|
||||||
#define GD2_VERS 2
|
|
||||||
#define GD2_ID "gd2"
|
|
||||||
|
|
||||||
#define GD2_FMT_RAW 1
|
|
||||||
#define GD2_FMT_COMPRESSED 2
|
|
||||||
|
|
||||||
/* Image comparison definitions */
|
|
||||||
BGD_DECLARE(int) gdImageCompare (gdImagePtr im1, gdImagePtr im2);
|
|
||||||
|
|
||||||
#define GD_CMP_IMAGE 1 /* Actual image IS different */
|
|
||||||
#define GD_CMP_NUM_COLORS 2 /* Number of Colours in pallette differ */
|
|
||||||
#define GD_CMP_COLOR 4 /* Image colours differ */
|
|
||||||
#define GD_CMP_SIZE_X 8 /* Image width differs */
|
|
||||||
#define GD_CMP_SIZE_Y 16 /* Image heights differ */
|
|
||||||
#define GD_CMP_TRANSPARENT 32 /* Transparent colour */
|
|
||||||
#define GD_CMP_BACKGROUND 64 /* Background colour */
|
|
||||||
#define GD_CMP_INTERLACE 128 /* Interlaced setting */
|
|
||||||
#define GD_CMP_TRUECOLOR 256 /* Truecolor vs palette differs */
|
|
||||||
|
|
||||||
#define GD_RESOLUTION 96 /* dots per inch */
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* newfangled special effects */
|
|
||||||
#include "gdfx.h"
|
|
||||||
|
|
||||||
#endif /* GD_H */
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
@ -1,52 +0,0 @@
|
|||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef GD_IO_H
|
|
||||||
#define GD_IO_H 1
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
|
|
||||||
#ifdef VMS
|
|
||||||
# define Putchar gdPutchar
|
|
||||||
#endif
|
|
||||||
|
|
||||||
typedef struct gdIOCtx
|
|
||||||
{
|
|
||||||
int (*getC)(struct gdIOCtx *);
|
|
||||||
int (*getBuf)(struct gdIOCtx *, void *, int);
|
|
||||||
void (*putC)(struct gdIOCtx *, int);
|
|
||||||
int (*putBuf)(struct gdIOCtx *, const void *, int);
|
|
||||||
/* seek must return 1 on SUCCESS, 0 on FAILURE. Unlike fseek! */
|
|
||||||
int (*seek)(struct gdIOCtx *, const int);
|
|
||||||
long (*tell)(struct gdIOCtx *);
|
|
||||||
void (*gd_free)(struct gdIOCtx *);
|
|
||||||
}
|
|
||||||
gdIOCtx;
|
|
||||||
|
|
||||||
typedef struct gdIOCtx *gdIOCtxPtr;
|
|
||||||
|
|
||||||
void Putword(int w, gdIOCtx *ctx);
|
|
||||||
void Putchar(int c, gdIOCtx *ctx);
|
|
||||||
|
|
||||||
void gdPutC(const unsigned char c, gdIOCtx *ctx);
|
|
||||||
int gdPutBuf(const void *, int, gdIOCtx *);
|
|
||||||
void gdPutWord(int w, gdIOCtx *ctx);
|
|
||||||
void gdPutInt(int w, gdIOCtx *ctx);
|
|
||||||
|
|
||||||
int gdGetC(gdIOCtx *ctx);
|
|
||||||
int gdGetBuf(void *, int, gdIOCtx *);
|
|
||||||
int gdGetByte(int *result, gdIOCtx *ctx);
|
|
||||||
int gdGetWord(int *result, gdIOCtx *ctx);
|
|
||||||
int gdGetWordLSB(signed short int *result, gdIOCtx *ctx);
|
|
||||||
int gdGetInt(int *result, gdIOCtx *ctx);
|
|
||||||
int gdGetIntLSB(signed int *result, gdIOCtx *ctx);
|
|
||||||
|
|
||||||
int gdSeek(gdIOCtx *ctx, const int offset);
|
|
||||||
long gdTell(gdIOCtx *ctx);
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
@ -1,73 +0,0 @@
|
|||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef GDFX_H
|
|
||||||
#define GDFX_H 1
|
|
||||||
|
|
||||||
#include "gd.h"
|
|
||||||
|
|
||||||
/* im MUST be square, but can have any size. Returns a new image
|
|
||||||
of width and height radius * 2, in which the X axis of
|
|
||||||
the original has been remapped to theta (angle) and the Y axis
|
|
||||||
of the original has been remapped to rho (distance from center).
|
|
||||||
This is known as a "polar coordinate transform." */
|
|
||||||
|
|
||||||
BGD_DECLARE(gdImagePtr) gdImageSquareToCircle(gdImagePtr im, int radius);
|
|
||||||
|
|
||||||
/* Draws the text 'top' and 'bottom' on 'im', curved along the
|
|
||||||
edge of a circle of radius 'radius', with its
|
|
||||||
center at 'cx' and 'cy'. 'top' is written clockwise
|
|
||||||
along the top; 'bottom' is written counterclockwise
|
|
||||||
along the bottom. 'textRadius' determines the 'height'
|
|
||||||
of each character; if 'textRadius' is 1/2 of 'radius',
|
|
||||||
characters extend halfway from the edge to the center.
|
|
||||||
'fillPortion' varies from 0 to 1.0, with useful values
|
|
||||||
from about 0.4 to 0.9, and determines how much of the
|
|
||||||
180 degrees of arc assigned to each section of text
|
|
||||||
is actually occupied by text; 0.9 looks better than
|
|
||||||
1.0 which is rather crowded. 'font' is a freetype
|
|
||||||
font; see gdImageStringFT. 'points' is passed to the
|
|
||||||
freetype engine and has an effect on hinting; although
|
|
||||||
the size of the text is determined by radius, textRadius,
|
|
||||||
and fillPortion, you should pass a point size that
|
|
||||||
'hints' appropriately -- if you know the text will be
|
|
||||||
large, pass a large point size such as 24.0 to get the
|
|
||||||
best results. 'fgcolor' can be any color, and may have
|
|
||||||
an alpha component, do blending, etc.
|
|
||||||
|
|
||||||
Returns 0 on success, or an error string. */
|
|
||||||
|
|
||||||
BGD_DECLARE(char *) gdImageStringFTCircle(
|
|
||||||
gdImagePtr im,
|
|
||||||
int cx,
|
|
||||||
int cy,
|
|
||||||
double radius,
|
|
||||||
double textRadius,
|
|
||||||
double fillPortion,
|
|
||||||
char *font,
|
|
||||||
double points,
|
|
||||||
char *top,
|
|
||||||
char *bottom,
|
|
||||||
int fgcolor);
|
|
||||||
|
|
||||||
/* 2.0.16:
|
|
||||||
* Sharpen function added on 2003-11-19
|
|
||||||
* by Paul Troughton (paul<dot>troughton<at>ieee<dot>org)
|
|
||||||
* Simple 3x3 convolution kernel
|
|
||||||
* Makes use of seperability
|
|
||||||
* Faster, but less flexible, than full-blown unsharp masking
|
|
||||||
* pct is sharpening percentage, and can be greater than 100
|
|
||||||
* Silently does nothing to non-truecolor images
|
|
||||||
* Silently does nothing for pct<0, as not a useful blurring function
|
|
||||||
* Leaves transparency/alpha-channel untouched
|
|
||||||
*/
|
|
||||||
|
|
||||||
BGD_DECLARE(void) gdImageSharpen (gdImagePtr im, int pct);
|
|
||||||
|
|
||||||
#endif /* GDFX_H */
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
@ -1,44 +0,0 @@
|
|||||||
/* jconfig.h. Generated automatically by configure. */
|
|
||||||
/* jconfig.cfg --- source file edited by configure script */
|
|
||||||
/* see jconfig.doc for explanations */
|
|
||||||
|
|
||||||
#define HAVE_PROTOTYPES
|
|
||||||
#define HAVE_UNSIGNED_CHAR
|
|
||||||
#define HAVE_UNSIGNED_SHORT
|
|
||||||
#undef void
|
|
||||||
#undef const
|
|
||||||
#undef CHAR_IS_UNSIGNED
|
|
||||||
#define HAVE_STDDEF_H
|
|
||||||
#define HAVE_STDLIB_H
|
|
||||||
#undef NEED_BSD_STRINGS
|
|
||||||
#define NEED_SYS_TYPES_H
|
|
||||||
#undef NEED_FAR_POINTERS /* DJGPP uses flat 32-bit addressing */
|
|
||||||
#undef NEED_SHORT_EXTERNAL_NAMES
|
|
||||||
/* Define this if you get warnings about undefined structures. */
|
|
||||||
#undef INCOMPLETE_TYPES_BROKEN
|
|
||||||
|
|
||||||
#ifdef JPEG_INTERNALS
|
|
||||||
|
|
||||||
#undef RIGHT_SHIFT_IS_UNSIGNED
|
|
||||||
#define INLINE __inline__
|
|
||||||
/* These are for configuring the JPEG memory manager. */
|
|
||||||
#undef DEFAULT_MAX_MEM
|
|
||||||
#undef NO_MKTEMP
|
|
||||||
|
|
||||||
#endif /* JPEG_INTERNALS */
|
|
||||||
|
|
||||||
#ifdef JPEG_CJPEG_DJPEG
|
|
||||||
|
|
||||||
#define BMP_SUPPORTED /* BMP image file format */
|
|
||||||
#define GIF_SUPPORTED /* GIF image file format */
|
|
||||||
#define PPM_SUPPORTED /* PBMPLUS PPM/PGM image file format */
|
|
||||||
#undef RLE_SUPPORTED /* Utah RLE image file format */
|
|
||||||
#define TARGA_SUPPORTED /* Targa image file format */
|
|
||||||
|
|
||||||
#undef TWO_FILE_COMMANDLINE /* optional */
|
|
||||||
#undef USE_SETMODE /* Needed to make one-file style work in DJGPP */
|
|
||||||
#undef NEED_SIGNAL_CATCHER /* Define this if you use jmemname.c */
|
|
||||||
#undef DONT_USE_B_MODE
|
|
||||||
#undef PROGRESS_REPORT /* optional */
|
|
||||||
|
|
||||||
#endif /* JPEG_CJPEG_DJPEG */
|
|
@ -1,304 +0,0 @@
|
|||||||
/*
|
|
||||||
* jerror.h
|
|
||||||
*
|
|
||||||
* Copyright (C) 1994-1997, Thomas G. Lane.
|
|
||||||
* Modified 1997-2009 by Guido Vollbeding.
|
|
||||||
* This file is part of the Independent JPEG Group's software.
|
|
||||||
* For conditions of distribution and use, see the accompanying README file.
|
|
||||||
*
|
|
||||||
* This file defines the error and message codes for the JPEG library.
|
|
||||||
* Edit this file to add new codes, or to translate the message strings to
|
|
||||||
* some other language.
|
|
||||||
* A set of error-reporting macros are defined too. Some applications using
|
|
||||||
* the JPEG library may wish to include this file to get the error codes
|
|
||||||
* and/or the macros.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* To define the enum list of message codes, include this file without
|
|
||||||
* defining macro JMESSAGE. To create a message string table, include it
|
|
||||||
* again with a suitable JMESSAGE definition (see jerror.c for an example).
|
|
||||||
*/
|
|
||||||
#ifndef JMESSAGE
|
|
||||||
#ifndef JERROR_H
|
|
||||||
/* First time through, define the enum list */
|
|
||||||
#define JMAKE_ENUM_LIST
|
|
||||||
#else
|
|
||||||
/* Repeated inclusions of this file are no-ops unless JMESSAGE is defined */
|
|
||||||
#define JMESSAGE(code,string)
|
|
||||||
#endif /* JERROR_H */
|
|
||||||
#endif /* JMESSAGE */
|
|
||||||
|
|
||||||
#ifdef JMAKE_ENUM_LIST
|
|
||||||
|
|
||||||
typedef enum {
|
|
||||||
|
|
||||||
#define JMESSAGE(code,string) code ,
|
|
||||||
|
|
||||||
#endif /* JMAKE_ENUM_LIST */
|
|
||||||
|
|
||||||
JMESSAGE(JMSG_NOMESSAGE, "Bogus message code %d") /* Must be first entry! */
|
|
||||||
|
|
||||||
/* For maintenance convenience, list is alphabetical by message code name */
|
|
||||||
JMESSAGE(JERR_BAD_ALIGN_TYPE, "ALIGN_TYPE is wrong, please fix")
|
|
||||||
JMESSAGE(JERR_BAD_ALLOC_CHUNK, "MAX_ALLOC_CHUNK is wrong, please fix")
|
|
||||||
JMESSAGE(JERR_BAD_BUFFER_MODE, "Bogus buffer control mode")
|
|
||||||
JMESSAGE(JERR_BAD_COMPONENT_ID, "Invalid component ID %d in SOS")
|
|
||||||
JMESSAGE(JERR_BAD_CROP_SPEC, "Invalid crop request")
|
|
||||||
JMESSAGE(JERR_BAD_DCT_COEF, "DCT coefficient out of range")
|
|
||||||
JMESSAGE(JERR_BAD_DCTSIZE, "DCT scaled block size %dx%d not supported")
|
|
||||||
JMESSAGE(JERR_BAD_DROP_SAMPLING,
|
|
||||||
"Component index %d: mismatching sampling ratio %d:%d, %d:%d, %c")
|
|
||||||
JMESSAGE(JERR_BAD_HUFF_TABLE, "Bogus Huffman table definition")
|
|
||||||
JMESSAGE(JERR_BAD_IN_COLORSPACE, "Bogus input colorspace")
|
|
||||||
JMESSAGE(JERR_BAD_J_COLORSPACE, "Bogus JPEG colorspace")
|
|
||||||
JMESSAGE(JERR_BAD_LENGTH, "Bogus marker length")
|
|
||||||
JMESSAGE(JERR_BAD_LIB_VERSION,
|
|
||||||
"Wrong JPEG library version: library is %d, caller expects %d")
|
|
||||||
JMESSAGE(JERR_BAD_MCU_SIZE, "Sampling factors too large for interleaved scan")
|
|
||||||
JMESSAGE(JERR_BAD_POOL_ID, "Invalid memory pool code %d")
|
|
||||||
JMESSAGE(JERR_BAD_PRECISION, "Unsupported JPEG data precision %d")
|
|
||||||
JMESSAGE(JERR_BAD_PROGRESSION,
|
|
||||||
"Invalid progressive parameters Ss=%d Se=%d Ah=%d Al=%d")
|
|
||||||
JMESSAGE(JERR_BAD_PROG_SCRIPT,
|
|
||||||
"Invalid progressive parameters at scan script entry %d")
|
|
||||||
JMESSAGE(JERR_BAD_SAMPLING, "Bogus sampling factors")
|
|
||||||
JMESSAGE(JERR_BAD_SCAN_SCRIPT, "Invalid scan script at entry %d")
|
|
||||||
JMESSAGE(JERR_BAD_STATE, "Improper call to JPEG library in state %d")
|
|
||||||
JMESSAGE(JERR_BAD_STRUCT_SIZE,
|
|
||||||
"JPEG parameter struct mismatch: library thinks size is %u, caller expects %u")
|
|
||||||
JMESSAGE(JERR_BAD_VIRTUAL_ACCESS, "Bogus virtual array access")
|
|
||||||
JMESSAGE(JERR_BUFFER_SIZE, "Buffer passed to JPEG library is too small")
|
|
||||||
JMESSAGE(JERR_CANT_SUSPEND, "Suspension not allowed here")
|
|
||||||
JMESSAGE(JERR_CCIR601_NOTIMPL, "CCIR601 sampling not implemented yet")
|
|
||||||
JMESSAGE(JERR_COMPONENT_COUNT, "Too many color components: %d, max %d")
|
|
||||||
JMESSAGE(JERR_CONVERSION_NOTIMPL, "Unsupported color conversion request")
|
|
||||||
JMESSAGE(JERR_DAC_INDEX, "Bogus DAC index %d")
|
|
||||||
JMESSAGE(JERR_DAC_VALUE, "Bogus DAC value 0x%x")
|
|
||||||
JMESSAGE(JERR_DHT_INDEX, "Bogus DHT index %d")
|
|
||||||
JMESSAGE(JERR_DQT_INDEX, "Bogus DQT index %d")
|
|
||||||
JMESSAGE(JERR_EMPTY_IMAGE, "Empty JPEG image (DNL not supported)")
|
|
||||||
JMESSAGE(JERR_EMS_READ, "Read from EMS failed")
|
|
||||||
JMESSAGE(JERR_EMS_WRITE, "Write to EMS failed")
|
|
||||||
JMESSAGE(JERR_EOI_EXPECTED, "Didn't expect more than one scan")
|
|
||||||
JMESSAGE(JERR_FILE_READ, "Input file read error")
|
|
||||||
JMESSAGE(JERR_FILE_WRITE, "Output file write error --- out of disk space?")
|
|
||||||
JMESSAGE(JERR_FRACT_SAMPLE_NOTIMPL, "Fractional sampling not implemented yet")
|
|
||||||
JMESSAGE(JERR_HUFF_CLEN_OVERFLOW, "Huffman code size table overflow")
|
|
||||||
JMESSAGE(JERR_HUFF_MISSING_CODE, "Missing Huffman code table entry")
|
|
||||||
JMESSAGE(JERR_IMAGE_TOO_BIG, "Maximum supported image dimension is %u pixels")
|
|
||||||
JMESSAGE(JERR_INPUT_EMPTY, "Empty input file")
|
|
||||||
JMESSAGE(JERR_INPUT_EOF, "Premature end of input file")
|
|
||||||
JMESSAGE(JERR_MISMATCHED_QUANT_TABLE,
|
|
||||||
"Cannot transcode due to multiple use of quantization table %d")
|
|
||||||
JMESSAGE(JERR_MISSING_DATA, "Scan script does not transmit all data")
|
|
||||||
JMESSAGE(JERR_MODE_CHANGE, "Invalid color quantization mode change")
|
|
||||||
JMESSAGE(JERR_NOTIMPL, "Not implemented yet")
|
|
||||||
JMESSAGE(JERR_NOT_COMPILED, "Requested feature was omitted at compile time")
|
|
||||||
JMESSAGE(JERR_NO_ARITH_TABLE, "Arithmetic table 0x%02x was not defined")
|
|
||||||
JMESSAGE(JERR_NO_BACKING_STORE, "Backing store not supported")
|
|
||||||
JMESSAGE(JERR_NO_HUFF_TABLE, "Huffman table 0x%02x was not defined")
|
|
||||||
JMESSAGE(JERR_NO_IMAGE, "JPEG datastream contains no image")
|
|
||||||
JMESSAGE(JERR_NO_QUANT_TABLE, "Quantization table 0x%02x was not defined")
|
|
||||||
JMESSAGE(JERR_NO_SOI, "Not a JPEG file: starts with 0x%02x 0x%02x")
|
|
||||||
JMESSAGE(JERR_OUT_OF_MEMORY, "Insufficient memory (case %d)")
|
|
||||||
JMESSAGE(JERR_QUANT_COMPONENTS,
|
|
||||||
"Cannot quantize more than %d color components")
|
|
||||||
JMESSAGE(JERR_QUANT_FEW_COLORS, "Cannot quantize to fewer than %d colors")
|
|
||||||
JMESSAGE(JERR_QUANT_MANY_COLORS, "Cannot quantize to more than %d colors")
|
|
||||||
JMESSAGE(JERR_SOF_DUPLICATE, "Invalid JPEG file structure: two SOF markers")
|
|
||||||
JMESSAGE(JERR_SOF_NO_SOS, "Invalid JPEG file structure: missing SOS marker")
|
|
||||||
JMESSAGE(JERR_SOF_UNSUPPORTED, "Unsupported JPEG process: SOF type 0x%02x")
|
|
||||||
JMESSAGE(JERR_SOI_DUPLICATE, "Invalid JPEG file structure: two SOI markers")
|
|
||||||
JMESSAGE(JERR_SOS_NO_SOF, "Invalid JPEG file structure: SOS before SOF")
|
|
||||||
JMESSAGE(JERR_TFILE_CREATE, "Failed to create temporary file %s")
|
|
||||||
JMESSAGE(JERR_TFILE_READ, "Read failed on temporary file")
|
|
||||||
JMESSAGE(JERR_TFILE_SEEK, "Seek failed on temporary file")
|
|
||||||
JMESSAGE(JERR_TFILE_WRITE,
|
|
||||||
"Write failed on temporary file --- out of disk space?")
|
|
||||||
JMESSAGE(JERR_TOO_LITTLE_DATA, "Application transferred too few scanlines")
|
|
||||||
JMESSAGE(JERR_UNKNOWN_MARKER, "Unsupported marker type 0x%02x")
|
|
||||||
JMESSAGE(JERR_VIRTUAL_BUG, "Virtual array controller messed up")
|
|
||||||
JMESSAGE(JERR_WIDTH_OVERFLOW, "Image too wide for this implementation")
|
|
||||||
JMESSAGE(JERR_XMS_READ, "Read from XMS failed")
|
|
||||||
JMESSAGE(JERR_XMS_WRITE, "Write to XMS failed")
|
|
||||||
JMESSAGE(JMSG_COPYRIGHT, JCOPYRIGHT)
|
|
||||||
JMESSAGE(JMSG_VERSION, JVERSION)
|
|
||||||
JMESSAGE(JTRC_16BIT_TABLES,
|
|
||||||
"Caution: quantization tables are too coarse for baseline JPEG")
|
|
||||||
JMESSAGE(JTRC_ADOBE,
|
|
||||||
"Adobe APP14 marker: version %d, flags 0x%04x 0x%04x, transform %d")
|
|
||||||
JMESSAGE(JTRC_APP0, "Unknown APP0 marker (not JFIF), length %u")
|
|
||||||
JMESSAGE(JTRC_APP14, "Unknown APP14 marker (not Adobe), length %u")
|
|
||||||
JMESSAGE(JTRC_DAC, "Define Arithmetic Table 0x%02x: 0x%02x")
|
|
||||||
JMESSAGE(JTRC_DHT, "Define Huffman Table 0x%02x")
|
|
||||||
JMESSAGE(JTRC_DQT, "Define Quantization Table %d precision %d")
|
|
||||||
JMESSAGE(JTRC_DRI, "Define Restart Interval %u")
|
|
||||||
JMESSAGE(JTRC_EMS_CLOSE, "Freed EMS handle %u")
|
|
||||||
JMESSAGE(JTRC_EMS_OPEN, "Obtained EMS handle %u")
|
|
||||||
JMESSAGE(JTRC_EOI, "End Of Image")
|
|
||||||
JMESSAGE(JTRC_HUFFBITS, " %3d %3d %3d %3d %3d %3d %3d %3d")
|
|
||||||
JMESSAGE(JTRC_JFIF, "JFIF APP0 marker: version %d.%02d, density %dx%d %d")
|
|
||||||
JMESSAGE(JTRC_JFIF_BADTHUMBNAILSIZE,
|
|
||||||
"Warning: thumbnail image size does not match data length %u")
|
|
||||||
JMESSAGE(JTRC_JFIF_EXTENSION,
|
|
||||||
"JFIF extension marker: type 0x%02x, length %u")
|
|
||||||
JMESSAGE(JTRC_JFIF_THUMBNAIL, " with %d x %d thumbnail image")
|
|
||||||
JMESSAGE(JTRC_MISC_MARKER, "Miscellaneous marker 0x%02x, length %u")
|
|
||||||
JMESSAGE(JTRC_PARMLESS_MARKER, "Unexpected marker 0x%02x")
|
|
||||||
JMESSAGE(JTRC_QUANTVALS, " %4u %4u %4u %4u %4u %4u %4u %4u")
|
|
||||||
JMESSAGE(JTRC_QUANT_3_NCOLORS, "Quantizing to %d = %d*%d*%d colors")
|
|
||||||
JMESSAGE(JTRC_QUANT_NCOLORS, "Quantizing to %d colors")
|
|
||||||
JMESSAGE(JTRC_QUANT_SELECTED, "Selected %d colors for quantization")
|
|
||||||
JMESSAGE(JTRC_RECOVERY_ACTION, "At marker 0x%02x, recovery action %d")
|
|
||||||
JMESSAGE(JTRC_RST, "RST%d")
|
|
||||||
JMESSAGE(JTRC_SMOOTH_NOTIMPL,
|
|
||||||
"Smoothing not supported with nonstandard sampling ratios")
|
|
||||||
JMESSAGE(JTRC_SOF, "Start Of Frame 0x%02x: width=%u, height=%u, components=%d")
|
|
||||||
JMESSAGE(JTRC_SOF_COMPONENT, " Component %d: %dhx%dv q=%d")
|
|
||||||
JMESSAGE(JTRC_SOI, "Start of Image")
|
|
||||||
JMESSAGE(JTRC_SOS, "Start Of Scan: %d components")
|
|
||||||
JMESSAGE(JTRC_SOS_COMPONENT, " Component %d: dc=%d ac=%d")
|
|
||||||
JMESSAGE(JTRC_SOS_PARAMS, " Ss=%d, Se=%d, Ah=%d, Al=%d")
|
|
||||||
JMESSAGE(JTRC_TFILE_CLOSE, "Closed temporary file %s")
|
|
||||||
JMESSAGE(JTRC_TFILE_OPEN, "Opened temporary file %s")
|
|
||||||
JMESSAGE(JTRC_THUMB_JPEG,
|
|
||||||
"JFIF extension marker: JPEG-compressed thumbnail image, length %u")
|
|
||||||
JMESSAGE(JTRC_THUMB_PALETTE,
|
|
||||||
"JFIF extension marker: palette thumbnail image, length %u")
|
|
||||||
JMESSAGE(JTRC_THUMB_RGB,
|
|
||||||
"JFIF extension marker: RGB thumbnail image, length %u")
|
|
||||||
JMESSAGE(JTRC_UNKNOWN_IDS,
|
|
||||||
"Unrecognized component IDs %d %d %d, assuming YCbCr")
|
|
||||||
JMESSAGE(JTRC_XMS_CLOSE, "Freed XMS handle %u")
|
|
||||||
JMESSAGE(JTRC_XMS_OPEN, "Obtained XMS handle %u")
|
|
||||||
JMESSAGE(JWRN_ADOBE_XFORM, "Unknown Adobe color transform code %d")
|
|
||||||
JMESSAGE(JWRN_ARITH_BAD_CODE, "Corrupt JPEG data: bad arithmetic code")
|
|
||||||
JMESSAGE(JWRN_BOGUS_PROGRESSION,
|
|
||||||
"Inconsistent progression sequence for component %d coefficient %d")
|
|
||||||
JMESSAGE(JWRN_EXTRANEOUS_DATA,
|
|
||||||
"Corrupt JPEG data: %u extraneous bytes before marker 0x%02x")
|
|
||||||
JMESSAGE(JWRN_HIT_MARKER, "Corrupt JPEG data: premature end of data segment")
|
|
||||||
JMESSAGE(JWRN_HUFF_BAD_CODE, "Corrupt JPEG data: bad Huffman code")
|
|
||||||
JMESSAGE(JWRN_JFIF_MAJOR, "Warning: unknown JFIF revision number %d.%02d")
|
|
||||||
JMESSAGE(JWRN_JPEG_EOF, "Premature end of JPEG file")
|
|
||||||
JMESSAGE(JWRN_MUST_RESYNC,
|
|
||||||
"Corrupt JPEG data: found marker 0x%02x instead of RST%d")
|
|
||||||
JMESSAGE(JWRN_NOT_SEQUENTIAL, "Invalid SOS parameters for sequential JPEG")
|
|
||||||
JMESSAGE(JWRN_TOO_MUCH_DATA, "Application transferred too many scanlines")
|
|
||||||
|
|
||||||
#ifdef JMAKE_ENUM_LIST
|
|
||||||
|
|
||||||
JMSG_LASTMSGCODE
|
|
||||||
} J_MESSAGE_CODE;
|
|
||||||
|
|
||||||
#undef JMAKE_ENUM_LIST
|
|
||||||
#endif /* JMAKE_ENUM_LIST */
|
|
||||||
|
|
||||||
/* Zap JMESSAGE macro so that future re-inclusions do nothing by default */
|
|
||||||
#undef JMESSAGE
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef JERROR_H
|
|
||||||
#define JERROR_H
|
|
||||||
|
|
||||||
/* Macros to simplify using the error and trace message stuff */
|
|
||||||
/* The first parameter is either type of cinfo pointer */
|
|
||||||
|
|
||||||
/* Fatal errors (print message and exit) */
|
|
||||||
#define ERREXIT(cinfo,code) \
|
|
||||||
((cinfo)->err->msg_code = (code), \
|
|
||||||
(*(cinfo)->err->error_exit) ((j_common_ptr) (cinfo)))
|
|
||||||
#define ERREXIT1(cinfo,code,p1) \
|
|
||||||
((cinfo)->err->msg_code = (code), \
|
|
||||||
(cinfo)->err->msg_parm.i[0] = (p1), \
|
|
||||||
(*(cinfo)->err->error_exit) ((j_common_ptr) (cinfo)))
|
|
||||||
#define ERREXIT2(cinfo,code,p1,p2) \
|
|
||||||
((cinfo)->err->msg_code = (code), \
|
|
||||||
(cinfo)->err->msg_parm.i[0] = (p1), \
|
|
||||||
(cinfo)->err->msg_parm.i[1] = (p2), \
|
|
||||||
(*(cinfo)->err->error_exit) ((j_common_ptr) (cinfo)))
|
|
||||||
#define ERREXIT3(cinfo,code,p1,p2,p3) \
|
|
||||||
((cinfo)->err->msg_code = (code), \
|
|
||||||
(cinfo)->err->msg_parm.i[0] = (p1), \
|
|
||||||
(cinfo)->err->msg_parm.i[1] = (p2), \
|
|
||||||
(cinfo)->err->msg_parm.i[2] = (p3), \
|
|
||||||
(*(cinfo)->err->error_exit) ((j_common_ptr) (cinfo)))
|
|
||||||
#define ERREXIT4(cinfo,code,p1,p2,p3,p4) \
|
|
||||||
((cinfo)->err->msg_code = (code), \
|
|
||||||
(cinfo)->err->msg_parm.i[0] = (p1), \
|
|
||||||
(cinfo)->err->msg_parm.i[1] = (p2), \
|
|
||||||
(cinfo)->err->msg_parm.i[2] = (p3), \
|
|
||||||
(cinfo)->err->msg_parm.i[3] = (p4), \
|
|
||||||
(*(cinfo)->err->error_exit) ((j_common_ptr) (cinfo)))
|
|
||||||
#define ERREXIT6(cinfo,code,p1,p2,p3,p4,p5,p6) \
|
|
||||||
((cinfo)->err->msg_code = (code), \
|
|
||||||
(cinfo)->err->msg_parm.i[0] = (p1), \
|
|
||||||
(cinfo)->err->msg_parm.i[1] = (p2), \
|
|
||||||
(cinfo)->err->msg_parm.i[2] = (p3), \
|
|
||||||
(cinfo)->err->msg_parm.i[3] = (p4), \
|
|
||||||
(cinfo)->err->msg_parm.i[4] = (p5), \
|
|
||||||
(cinfo)->err->msg_parm.i[5] = (p6), \
|
|
||||||
(*(cinfo)->err->error_exit) ((j_common_ptr) (cinfo)))
|
|
||||||
#define ERREXITS(cinfo,code,str) \
|
|
||||||
((cinfo)->err->msg_code = (code), \
|
|
||||||
strncpy((cinfo)->err->msg_parm.s, (str), JMSG_STR_PARM_MAX), \
|
|
||||||
(*(cinfo)->err->error_exit) ((j_common_ptr) (cinfo)))
|
|
||||||
|
|
||||||
#define MAKESTMT(stuff) do { stuff } while (0)
|
|
||||||
|
|
||||||
/* Nonfatal errors (we can keep going, but the data is probably corrupt) */
|
|
||||||
#define WARNMS(cinfo,code) \
|
|
||||||
((cinfo)->err->msg_code = (code), \
|
|
||||||
(*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), -1))
|
|
||||||
#define WARNMS1(cinfo,code,p1) \
|
|
||||||
((cinfo)->err->msg_code = (code), \
|
|
||||||
(cinfo)->err->msg_parm.i[0] = (p1), \
|
|
||||||
(*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), -1))
|
|
||||||
#define WARNMS2(cinfo,code,p1,p2) \
|
|
||||||
((cinfo)->err->msg_code = (code), \
|
|
||||||
(cinfo)->err->msg_parm.i[0] = (p1), \
|
|
||||||
(cinfo)->err->msg_parm.i[1] = (p2), \
|
|
||||||
(*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), -1))
|
|
||||||
|
|
||||||
/* Informational/debugging messages */
|
|
||||||
#define TRACEMS(cinfo,lvl,code) \
|
|
||||||
((cinfo)->err->msg_code = (code), \
|
|
||||||
(*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), (lvl)))
|
|
||||||
#define TRACEMS1(cinfo,lvl,code,p1) \
|
|
||||||
((cinfo)->err->msg_code = (code), \
|
|
||||||
(cinfo)->err->msg_parm.i[0] = (p1), \
|
|
||||||
(*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), (lvl)))
|
|
||||||
#define TRACEMS2(cinfo,lvl,code,p1,p2) \
|
|
||||||
((cinfo)->err->msg_code = (code), \
|
|
||||||
(cinfo)->err->msg_parm.i[0] = (p1), \
|
|
||||||
(cinfo)->err->msg_parm.i[1] = (p2), \
|
|
||||||
(*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), (lvl)))
|
|
||||||
#define TRACEMS3(cinfo,lvl,code,p1,p2,p3) \
|
|
||||||
MAKESTMT(int * _mp = (cinfo)->err->msg_parm.i; \
|
|
||||||
_mp[0] = (p1); _mp[1] = (p2); _mp[2] = (p3); \
|
|
||||||
(cinfo)->err->msg_code = (code); \
|
|
||||||
(*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), (lvl)); )
|
|
||||||
#define TRACEMS4(cinfo,lvl,code,p1,p2,p3,p4) \
|
|
||||||
MAKESTMT(int * _mp = (cinfo)->err->msg_parm.i; \
|
|
||||||
_mp[0] = (p1); _mp[1] = (p2); _mp[2] = (p3); _mp[3] = (p4); \
|
|
||||||
(cinfo)->err->msg_code = (code); \
|
|
||||||
(*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), (lvl)); )
|
|
||||||
#define TRACEMS5(cinfo,lvl,code,p1,p2,p3,p4,p5) \
|
|
||||||
MAKESTMT(int * _mp = (cinfo)->err->msg_parm.i; \
|
|
||||||
_mp[0] = (p1); _mp[1] = (p2); _mp[2] = (p3); _mp[3] = (p4); \
|
|
||||||
_mp[4] = (p5); \
|
|
||||||
(cinfo)->err->msg_code = (code); \
|
|
||||||
(*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), (lvl)); )
|
|
||||||
#define TRACEMS8(cinfo,lvl,code,p1,p2,p3,p4,p5,p6,p7,p8) \
|
|
||||||
MAKESTMT(int * _mp = (cinfo)->err->msg_parm.i; \
|
|
||||||
_mp[0] = (p1); _mp[1] = (p2); _mp[2] = (p3); _mp[3] = (p4); \
|
|
||||||
_mp[4] = (p5); _mp[5] = (p6); _mp[6] = (p7); _mp[7] = (p8); \
|
|
||||||
(cinfo)->err->msg_code = (code); \
|
|
||||||
(*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), (lvl)); )
|
|
||||||
#define TRACEMSS(cinfo,lvl,code,str) \
|
|
||||||
((cinfo)->err->msg_code = (code), \
|
|
||||||
strncpy((cinfo)->err->msg_parm.s, (str), JMSG_STR_PARM_MAX), \
|
|
||||||
(*(cinfo)->err->emit_message) ((j_common_ptr) (cinfo), (lvl)))
|
|
||||||
|
|
||||||
#endif /* JERROR_H */
|
|
@ -1,369 +0,0 @@
|
|||||||
/*
|
|
||||||
* jmorecfg.h
|
|
||||||
*
|
|
||||||
* Copyright (C) 1991-1997, Thomas G. Lane.
|
|
||||||
* Modified 1997-2011 by Guido Vollbeding.
|
|
||||||
* This file is part of the Independent JPEG Group's software.
|
|
||||||
* For conditions of distribution and use, see the accompanying README file.
|
|
||||||
*
|
|
||||||
* This file contains additional configuration options that customize the
|
|
||||||
* JPEG software for special applications or support machine-dependent
|
|
||||||
* optimizations. Most users will not need to touch this file.
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Define BITS_IN_JSAMPLE as either
|
|
||||||
* 8 for 8-bit sample values (the usual setting)
|
|
||||||
* 12 for 12-bit sample values
|
|
||||||
* Only 8 and 12 are legal data precisions for lossy JPEG according to the
|
|
||||||
* JPEG standard, and the IJG code does not support anything else!
|
|
||||||
* We do not support run-time selection of data precision, sorry.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define BITS_IN_JSAMPLE 8 /* use 8 or 12 */
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Maximum number of components (color channels) allowed in JPEG image.
|
|
||||||
* To meet the letter of the JPEG spec, set this to 255. However, darn
|
|
||||||
* few applications need more than 4 channels (maybe 5 for CMYK + alpha
|
|
||||||
* mask). We recommend 10 as a reasonable compromise; use 4 if you are
|
|
||||||
* really short on memory. (Each allowed component costs a hundred or so
|
|
||||||
* bytes of storage, whether actually used in an image or not.)
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define MAX_COMPONENTS 10 /* maximum number of image components */
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Basic data types.
|
|
||||||
* You may need to change these if you have a machine with unusual data
|
|
||||||
* type sizes; for example, "char" not 8 bits, "short" not 16 bits,
|
|
||||||
* or "long" not 32 bits. We don't care whether "int" is 16 or 32 bits,
|
|
||||||
* but it had better be at least 16.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* Representation of a single sample (pixel element value).
|
|
||||||
* We frequently allocate large arrays of these, so it's important to keep
|
|
||||||
* them small. But if you have memory to burn and access to char or short
|
|
||||||
* arrays is very slow on your hardware, you might want to change these.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#if BITS_IN_JSAMPLE == 8
|
|
||||||
/* JSAMPLE should be the smallest type that will hold the values 0..255.
|
|
||||||
* You can use a signed char by having GETJSAMPLE mask it with 0xFF.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifdef HAVE_UNSIGNED_CHAR
|
|
||||||
|
|
||||||
typedef unsigned char JSAMPLE;
|
|
||||||
#define GETJSAMPLE(value) ((int) (value))
|
|
||||||
|
|
||||||
#else /* not HAVE_UNSIGNED_CHAR */
|
|
||||||
|
|
||||||
typedef char JSAMPLE;
|
|
||||||
#ifdef CHAR_IS_UNSIGNED
|
|
||||||
#define GETJSAMPLE(value) ((int) (value))
|
|
||||||
#else
|
|
||||||
#define GETJSAMPLE(value) ((int) (value) & 0xFF)
|
|
||||||
#endif /* CHAR_IS_UNSIGNED */
|
|
||||||
|
|
||||||
#endif /* HAVE_UNSIGNED_CHAR */
|
|
||||||
|
|
||||||
#define MAXJSAMPLE 255
|
|
||||||
#define CENTERJSAMPLE 128
|
|
||||||
|
|
||||||
#endif /* BITS_IN_JSAMPLE == 8 */
|
|
||||||
|
|
||||||
|
|
||||||
#if BITS_IN_JSAMPLE == 12
|
|
||||||
/* JSAMPLE should be the smallest type that will hold the values 0..4095.
|
|
||||||
* On nearly all machines "short" will do nicely.
|
|
||||||
*/
|
|
||||||
|
|
||||||
typedef short JSAMPLE;
|
|
||||||
#define GETJSAMPLE(value) ((int) (value))
|
|
||||||
|
|
||||||
#define MAXJSAMPLE 4095
|
|
||||||
#define CENTERJSAMPLE 2048
|
|
||||||
|
|
||||||
#endif /* BITS_IN_JSAMPLE == 12 */
|
|
||||||
|
|
||||||
|
|
||||||
/* Representation of a DCT frequency coefficient.
|
|
||||||
* This should be a signed value of at least 16 bits; "short" is usually OK.
|
|
||||||
* Again, we allocate large arrays of these, but you can change to int
|
|
||||||
* if you have memory to burn and "short" is really slow.
|
|
||||||
*/
|
|
||||||
|
|
||||||
typedef short JCOEF;
|
|
||||||
|
|
||||||
|
|
||||||
/* Compressed datastreams are represented as arrays of JOCTET.
|
|
||||||
* These must be EXACTLY 8 bits wide, at least once they are written to
|
|
||||||
* external storage. Note that when using the stdio data source/destination
|
|
||||||
* managers, this is also the data type passed to fread/fwrite.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifdef HAVE_UNSIGNED_CHAR
|
|
||||||
|
|
||||||
typedef unsigned char JOCTET;
|
|
||||||
#define GETJOCTET(value) (value)
|
|
||||||
|
|
||||||
#else /* not HAVE_UNSIGNED_CHAR */
|
|
||||||
|
|
||||||
typedef char JOCTET;
|
|
||||||
#ifdef CHAR_IS_UNSIGNED
|
|
||||||
#define GETJOCTET(value) (value)
|
|
||||||
#else
|
|
||||||
#define GETJOCTET(value) ((value) & 0xFF)
|
|
||||||
#endif /* CHAR_IS_UNSIGNED */
|
|
||||||
|
|
||||||
#endif /* HAVE_UNSIGNED_CHAR */
|
|
||||||
|
|
||||||
|
|
||||||
/* These typedefs are used for various table entries and so forth.
|
|
||||||
* They must be at least as wide as specified; but making them too big
|
|
||||||
* won't cost a huge amount of memory, so we don't provide special
|
|
||||||
* extraction code like we did for JSAMPLE. (In other words, these
|
|
||||||
* typedefs live at a different point on the speed/space tradeoff curve.)
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* UINT8 must hold at least the values 0..255. */
|
|
||||||
|
|
||||||
#ifdef HAVE_UNSIGNED_CHAR
|
|
||||||
typedef unsigned char UINT8;
|
|
||||||
#else /* not HAVE_UNSIGNED_CHAR */
|
|
||||||
#ifdef CHAR_IS_UNSIGNED
|
|
||||||
typedef char UINT8;
|
|
||||||
#else /* not CHAR_IS_UNSIGNED */
|
|
||||||
typedef short UINT8;
|
|
||||||
#endif /* CHAR_IS_UNSIGNED */
|
|
||||||
#endif /* HAVE_UNSIGNED_CHAR */
|
|
||||||
|
|
||||||
/* UINT16 must hold at least the values 0..65535. */
|
|
||||||
|
|
||||||
#ifdef HAVE_UNSIGNED_SHORT
|
|
||||||
typedef unsigned short UINT16;
|
|
||||||
#else /* not HAVE_UNSIGNED_SHORT */
|
|
||||||
typedef unsigned int UINT16;
|
|
||||||
#endif /* HAVE_UNSIGNED_SHORT */
|
|
||||||
|
|
||||||
/* INT16 must hold at least the values -32768..32767. */
|
|
||||||
|
|
||||||
#ifndef XMD_H /* X11/xmd.h correctly defines INT16 */
|
|
||||||
typedef short INT16;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* INT32 must hold at least signed 32-bit values. */
|
|
||||||
|
|
||||||
#ifndef XMD_H /* X11/xmd.h correctly defines INT32 */
|
|
||||||
#ifndef _BASETSD_H_ /* Microsoft defines it in basetsd.h */
|
|
||||||
#ifndef _BASETSD_H /* MinGW is slightly different */
|
|
||||||
#ifndef QGLOBAL_H /* Qt defines it in qglobal.h */
|
|
||||||
typedef long INT32;
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Datatype used for image dimensions. The JPEG standard only supports
|
|
||||||
* images up to 64K*64K due to 16-bit fields in SOF markers. Therefore
|
|
||||||
* "unsigned int" is sufficient on all machines. However, if you need to
|
|
||||||
* handle larger images and you don't mind deviating from the spec, you
|
|
||||||
* can change this datatype.
|
|
||||||
*/
|
|
||||||
|
|
||||||
typedef unsigned int JDIMENSION;
|
|
||||||
|
|
||||||
#define JPEG_MAX_DIMENSION 65500L /* a tad under 64K to prevent overflows */
|
|
||||||
|
|
||||||
|
|
||||||
/* These macros are used in all function definitions and extern declarations.
|
|
||||||
* You could modify them if you need to change function linkage conventions;
|
|
||||||
* in particular, you'll need to do that to make the library a Windows DLL.
|
|
||||||
* Another application is to make all functions global for use with debuggers
|
|
||||||
* or code profilers that require it.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* a function called through method pointers: */
|
|
||||||
#define METHODDEF(type) static type
|
|
||||||
/* a function used only in its module: */
|
|
||||||
#define LOCAL(type) static type
|
|
||||||
/* a function referenced thru EXTERNs: */
|
|
||||||
#define GLOBAL(type) type
|
|
||||||
/* a reference to a GLOBAL function: */
|
|
||||||
#define EXTERN(type) extern type
|
|
||||||
|
|
||||||
|
|
||||||
/* This macro is used to declare a "method", that is, a function pointer.
|
|
||||||
* We want to supply prototype parameters if the compiler can cope.
|
|
||||||
* Note that the arglist parameter must be parenthesized!
|
|
||||||
* Again, you can customize this if you need special linkage keywords.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifdef HAVE_PROTOTYPES
|
|
||||||
#define JMETHOD(type,methodname,arglist) type (*methodname) arglist
|
|
||||||
#else
|
|
||||||
#define JMETHOD(type,methodname,arglist) type (*methodname) ()
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/* Here is the pseudo-keyword for declaring pointers that must be "far"
|
|
||||||
* on 80x86 machines. Most of the specialized coding for 80x86 is handled
|
|
||||||
* by just saying "FAR *" where such a pointer is needed. In a few places
|
|
||||||
* explicit coding is needed; see uses of the NEED_FAR_POINTERS symbol.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef FAR
|
|
||||||
#ifdef NEED_FAR_POINTERS
|
|
||||||
#define FAR far
|
|
||||||
#else
|
|
||||||
#define FAR
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* On a few systems, type boolean and/or its values FALSE, TRUE may appear
|
|
||||||
* in standard header files. Or you may have conflicts with application-
|
|
||||||
* specific header files that you want to include together with these files.
|
|
||||||
* Defining HAVE_BOOLEAN before including jpeglib.h should make it work.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef HAVE_BOOLEAN
|
|
||||||
typedef int boolean;
|
|
||||||
#endif
|
|
||||||
#ifndef FALSE /* in case these macros already exist */
|
|
||||||
#define FALSE 0 /* values of boolean */
|
|
||||||
#endif
|
|
||||||
#ifndef TRUE
|
|
||||||
#define TRUE 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* The remaining options affect code selection within the JPEG library,
|
|
||||||
* but they don't need to be visible to most applications using the library.
|
|
||||||
* To minimize application namespace pollution, the symbols won't be
|
|
||||||
* defined unless JPEG_INTERNALS or JPEG_INTERNAL_OPTIONS has been defined.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifdef JPEG_INTERNALS
|
|
||||||
#define JPEG_INTERNAL_OPTIONS
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef JPEG_INTERNAL_OPTIONS
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* These defines indicate whether to include various optional functions.
|
|
||||||
* Undefining some of these symbols will produce a smaller but less capable
|
|
||||||
* library. Note that you can leave certain source files out of the
|
|
||||||
* compilation/linking process if you've #undef'd the corresponding symbols.
|
|
||||||
* (You may HAVE to do that if your compiler doesn't like null source files.)
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* Capability options common to encoder and decoder: */
|
|
||||||
|
|
||||||
#define DCT_ISLOW_SUPPORTED /* slow but accurate integer algorithm */
|
|
||||||
#define DCT_IFAST_SUPPORTED /* faster, less accurate integer method */
|
|
||||||
#define DCT_FLOAT_SUPPORTED /* floating-point: accurate, fast on fast HW */
|
|
||||||
|
|
||||||
/* Encoder capability options: */
|
|
||||||
|
|
||||||
#define C_ARITH_CODING_SUPPORTED /* Arithmetic coding back end? */
|
|
||||||
#define C_MULTISCAN_FILES_SUPPORTED /* Multiple-scan JPEG files? */
|
|
||||||
#define C_PROGRESSIVE_SUPPORTED /* Progressive JPEG? (Requires MULTISCAN)*/
|
|
||||||
#define DCT_SCALING_SUPPORTED /* Input rescaling via DCT? (Requires DCT_ISLOW)*/
|
|
||||||
#define ENTROPY_OPT_SUPPORTED /* Optimization of entropy coding parms? */
|
|
||||||
/* Note: if you selected 12-bit data precision, it is dangerous to turn off
|
|
||||||
* ENTROPY_OPT_SUPPORTED. The standard Huffman tables are only good for 8-bit
|
|
||||||
* precision, so jchuff.c normally uses entropy optimization to compute
|
|
||||||
* usable tables for higher precision. If you don't want to do optimization,
|
|
||||||
* you'll have to supply different default Huffman tables.
|
|
||||||
* The exact same statements apply for progressive JPEG: the default tables
|
|
||||||
* don't work for progressive mode. (This may get fixed, however.)
|
|
||||||
*/
|
|
||||||
#define INPUT_SMOOTHING_SUPPORTED /* Input image smoothing option? */
|
|
||||||
|
|
||||||
/* Decoder capability options: */
|
|
||||||
|
|
||||||
#define D_ARITH_CODING_SUPPORTED /* Arithmetic coding back end? */
|
|
||||||
#define D_MULTISCAN_FILES_SUPPORTED /* Multiple-scan JPEG files? */
|
|
||||||
#define D_PROGRESSIVE_SUPPORTED /* Progressive JPEG? (Requires MULTISCAN)*/
|
|
||||||
#define IDCT_SCALING_SUPPORTED /* Output rescaling via IDCT? */
|
|
||||||
#define SAVE_MARKERS_SUPPORTED /* jpeg_save_markers() needed? */
|
|
||||||
#define BLOCK_SMOOTHING_SUPPORTED /* Block smoothing? (Progressive only) */
|
|
||||||
#undef UPSAMPLE_SCALING_SUPPORTED /* Output rescaling at upsample stage? */
|
|
||||||
#define UPSAMPLE_MERGING_SUPPORTED /* Fast path for sloppy upsampling? */
|
|
||||||
#define QUANT_1PASS_SUPPORTED /* 1-pass color quantization? */
|
|
||||||
#define QUANT_2PASS_SUPPORTED /* 2-pass color quantization? */
|
|
||||||
|
|
||||||
/* more capability options later, no doubt */
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Ordering of RGB data in scanlines passed to or from the application.
|
|
||||||
* If your application wants to deal with data in the order B,G,R, just
|
|
||||||
* change these macros. You can also deal with formats such as R,G,B,X
|
|
||||||
* (one extra byte per pixel) by changing RGB_PIXELSIZE. Note that changing
|
|
||||||
* the offsets will also change the order in which colormap data is organized.
|
|
||||||
* RESTRICTIONS:
|
|
||||||
* 1. The sample applications cjpeg,djpeg do NOT support modified RGB formats.
|
|
||||||
* 2. The color quantizer modules will not behave desirably if RGB_PIXELSIZE
|
|
||||||
* is not 3 (they don't understand about dummy color components!). So you
|
|
||||||
* can't use color quantization if you change that value.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define RGB_RED 0 /* Offset of Red in an RGB scanline element */
|
|
||||||
#define RGB_GREEN 1 /* Offset of Green */
|
|
||||||
#define RGB_BLUE 2 /* Offset of Blue */
|
|
||||||
#define RGB_PIXELSIZE 3 /* JSAMPLEs per RGB scanline element */
|
|
||||||
|
|
||||||
|
|
||||||
/* Definitions for speed-related optimizations. */
|
|
||||||
|
|
||||||
|
|
||||||
/* If your compiler supports inline functions, define INLINE
|
|
||||||
* as the inline keyword; otherwise define it as empty.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef INLINE
|
|
||||||
#ifdef __GNUC__ /* for instance, GNU C knows about inline */
|
|
||||||
#define INLINE __inline__
|
|
||||||
#endif
|
|
||||||
#ifndef INLINE
|
|
||||||
#define INLINE /* default is to define it as empty */
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/* On some machines (notably 68000 series) "int" is 32 bits, but multiplying
|
|
||||||
* two 16-bit shorts is faster than multiplying two ints. Define MULTIPLIER
|
|
||||||
* as short on such a machine. MULTIPLIER must be at least 16 bits wide.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef MULTIPLIER
|
|
||||||
#define MULTIPLIER int /* type for fastest integer multiply */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/* FAST_FLOAT should be either float or double, whichever is done faster
|
|
||||||
* by your compiler. (Note that this type is only used in the floating point
|
|
||||||
* DCT routines, so it only matters if you've defined DCT_FLOAT_SUPPORTED.)
|
|
||||||
* Typically, float is faster in ANSI C compilers, while double is faster in
|
|
||||||
* pre-ANSI compilers (because they insist on converting to double anyway).
|
|
||||||
* The code below therefore chooses float if we have ANSI-style prototypes.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef FAST_FLOAT
|
|
||||||
#ifdef HAVE_PROTOTYPES
|
|
||||||
#define FAST_FLOAT float
|
|
||||||
#else
|
|
||||||
#define FAST_FLOAT double
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /* JPEG_INTERNAL_OPTIONS */
|
|
File diff suppressed because it is too large
Load Diff
@ -1,126 +0,0 @@
|
|||||||
#ifndef _RAR_ARCHIVE_
|
|
||||||
#define _RAR_ARCHIVE_
|
|
||||||
|
|
||||||
class Pack;
|
|
||||||
|
|
||||||
enum {EN_LOCK=1,EN_VOL=2,EN_FIRSTVOL=4};
|
|
||||||
|
|
||||||
class Archive:public File
|
|
||||||
{
|
|
||||||
private:
|
|
||||||
bool IsSignature(byte *D);
|
|
||||||
void UpdateLatestTime(FileHeader *CurBlock);
|
|
||||||
void ConvertNameCase(char *Name);
|
|
||||||
void ConvertNameCase(wchar *Name);
|
|
||||||
void ConvertUnknownHeader();
|
|
||||||
size_t ReadOldHeader();
|
|
||||||
void UnexpEndArcMsg();
|
|
||||||
|
|
||||||
#if !defined(SHELL_EXT) && !defined(NOCRYPT)
|
|
||||||
CryptData HeadersCrypt;
|
|
||||||
byte HeadersSalt[SALT_SIZE];
|
|
||||||
#endif
|
|
||||||
#ifndef SHELL_EXT
|
|
||||||
ComprDataIO SubDataIO;
|
|
||||||
byte SubDataSalt[SALT_SIZE];
|
|
||||||
#endif
|
|
||||||
RAROptions *Cmd,DummyCmd;
|
|
||||||
|
|
||||||
MarkHeader MarkHead;
|
|
||||||
OldMainHeader OldMhd;
|
|
||||||
|
|
||||||
int RecoverySectors;
|
|
||||||
int64 RecoveryPos;
|
|
||||||
|
|
||||||
RarTime LatestTime;
|
|
||||||
int LastReadBlock;
|
|
||||||
int CurHeaderType;
|
|
||||||
|
|
||||||
bool SilentOpen;
|
|
||||||
public:
|
|
||||||
Archive(RAROptions *InitCmd=NULL);
|
|
||||||
bool IsArchive(bool EnableBroken);
|
|
||||||
size_t SearchBlock(int BlockType);
|
|
||||||
size_t SearchSubBlock(const char *Type);
|
|
||||||
int ReadBlock(int BlockType);
|
|
||||||
void WriteBlock(int BlockType,BaseBlock *wb=NULL);
|
|
||||||
int PrepareNamesToWrite(char *Name,wchar *NameW,char *DestName,byte *DestNameW);
|
|
||||||
void SetLhdSize();
|
|
||||||
size_t ReadHeader();
|
|
||||||
void CheckArc(bool EnableBroken);
|
|
||||||
void CheckOpen(char *Name,wchar *NameW=NULL);
|
|
||||||
bool WCheckOpen(char *Name,wchar *NameW=NULL);
|
|
||||||
bool TestLock(int Mode);
|
|
||||||
void MakeTemp();
|
|
||||||
void CopyMainHeader(Archive &Src,bool CopySFX=true,char *NameToDisplay=NULL);
|
|
||||||
bool ProcessToFileHead(Archive &Src,bool LastBlockAdded,
|
|
||||||
Pack *Pack=NULL,const char *SkipName=NULL);
|
|
||||||
void TmpToArc(Archive &Src);
|
|
||||||
void CloseNew(int AdjustRecovery,bool CloseVolume);
|
|
||||||
void WriteEndBlock(bool CloseVolume);
|
|
||||||
void CopyFileRecord(Archive &Src);
|
|
||||||
void CopyArchiveData(Archive &Src);
|
|
||||||
bool GetComment(Array<byte> *CmtData,Array<wchar> *CmtDataW);
|
|
||||||
void ViewComment();
|
|
||||||
void ViewFileComment();
|
|
||||||
void SetLatestTime(RarTime *NewTime);
|
|
||||||
void SeekToNext();
|
|
||||||
bool CheckAccess();
|
|
||||||
bool IsArcDir();
|
|
||||||
bool IsArcLabel();
|
|
||||||
void ConvertAttributes();
|
|
||||||
int GetRecoverySize(bool Required);
|
|
||||||
void VolSubtractHeaderSize(size_t SubSize);
|
|
||||||
void AddSubData(byte *SrcData,size_t DataSize,File *SrcFile,const char *Name,bool AllowSplit);
|
|
||||||
bool ReadSubData(Array<byte> *UnpData,File *DestFile);
|
|
||||||
int GetHeaderType() {return(CurHeaderType);};
|
|
||||||
size_t ReadCommentData(Array<byte> *CmtData,Array<wchar> *CmtDataW);
|
|
||||||
void WriteCommentData(byte *Data,size_t DataSize,bool FileComment);
|
|
||||||
RAROptions* GetRAROptions() {return(Cmd);}
|
|
||||||
void SetSilentOpen(bool Mode) {SilentOpen=Mode;}
|
|
||||||
|
|
||||||
BaseBlock ShortBlock;
|
|
||||||
MainHeader NewMhd;
|
|
||||||
FileHeader NewLhd;
|
|
||||||
EndArcHeader EndArcHead;
|
|
||||||
SubBlockHeader SubBlockHead;
|
|
||||||
FileHeader SubHead;
|
|
||||||
CommentHeader CommHead;
|
|
||||||
ProtectHeader ProtectHead;
|
|
||||||
AVHeader AVHead;
|
|
||||||
SignHeader SignHead;
|
|
||||||
UnixOwnersHeader UOHead;
|
|
||||||
MacFInfoHeader MACHead;
|
|
||||||
EAHeader EAHead;
|
|
||||||
StreamHeader StreamHead;
|
|
||||||
|
|
||||||
int64 CurBlockPos;
|
|
||||||
int64 NextBlockPos;
|
|
||||||
|
|
||||||
bool OldFormat;
|
|
||||||
bool Solid;
|
|
||||||
bool Volume;
|
|
||||||
bool MainComment;
|
|
||||||
bool Locked;
|
|
||||||
bool Signed;
|
|
||||||
bool NotFirstVolume;
|
|
||||||
bool Protected;
|
|
||||||
bool Encrypted;
|
|
||||||
size_t SFXSize;
|
|
||||||
bool BrokenFileHeader;
|
|
||||||
|
|
||||||
bool Splitting;
|
|
||||||
|
|
||||||
ushort HeaderCRC;
|
|
||||||
|
|
||||||
int64 VolWrite;
|
|
||||||
int64 AddingFilesSize;
|
|
||||||
size_t AddingHeadersSize;
|
|
||||||
|
|
||||||
bool NewArchive;
|
|
||||||
|
|
||||||
char FirstVolumeName[NM];
|
|
||||||
wchar FirstVolumeNameW[NM];
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif
|
|
@ -1,122 +0,0 @@
|
|||||||
#ifndef _RAR_ARRAY_
|
|
||||||
#define _RAR_ARRAY_
|
|
||||||
|
|
||||||
extern ErrorHandler ErrHandler;
|
|
||||||
|
|
||||||
template <class T> class Array
|
|
||||||
{
|
|
||||||
private:
|
|
||||||
T *Buffer;
|
|
||||||
size_t BufSize;
|
|
||||||
size_t AllocSize;
|
|
||||||
public:
|
|
||||||
Array();
|
|
||||||
Array(size_t Size);
|
|
||||||
~Array();
|
|
||||||
inline void CleanData();
|
|
||||||
inline T& operator [](size_t Item);
|
|
||||||
inline size_t Size();
|
|
||||||
void Add(size_t Items);
|
|
||||||
void Alloc(size_t Items);
|
|
||||||
void Reset();
|
|
||||||
void operator = (Array<T> &Src);
|
|
||||||
void Push(T Item);
|
|
||||||
T* Addr() {return(Buffer);}
|
|
||||||
};
|
|
||||||
|
|
||||||
template <class T> void Array<T>::CleanData()
|
|
||||||
{
|
|
||||||
Buffer=NULL;
|
|
||||||
BufSize=0;
|
|
||||||
AllocSize=0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
template <class T> Array<T>::Array()
|
|
||||||
{
|
|
||||||
CleanData();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
template <class T> Array<T>::Array(size_t Size)
|
|
||||||
{
|
|
||||||
Buffer=(T *)rarmalloc(sizeof(T)*Size);
|
|
||||||
if (Buffer==NULL && Size!=0)
|
|
||||||
ErrHandler.MemoryError();
|
|
||||||
|
|
||||||
AllocSize=BufSize=Size;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
template <class T> Array<T>::~Array()
|
|
||||||
{
|
|
||||||
if (Buffer!=NULL)
|
|
||||||
rarfree(Buffer);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
template <class T> inline T& Array<T>::operator [](size_t Item)
|
|
||||||
{
|
|
||||||
return(Buffer[Item]);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
template <class T> inline size_t Array<T>::Size()
|
|
||||||
{
|
|
||||||
return(BufSize);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
template <class T> void Array<T>::Add(size_t Items)
|
|
||||||
{
|
|
||||||
BufSize+=Items;
|
|
||||||
if (BufSize>AllocSize)
|
|
||||||
{
|
|
||||||
size_t Suggested=AllocSize+AllocSize/4+32;
|
|
||||||
size_t NewSize=Max(BufSize,Suggested);
|
|
||||||
|
|
||||||
Buffer=(T *)rarrealloc(Buffer,NewSize*sizeof(T));
|
|
||||||
if (Buffer==NULL)
|
|
||||||
ErrHandler.MemoryError();
|
|
||||||
AllocSize=NewSize;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
template <class T> void Array<T>::Alloc(size_t Items)
|
|
||||||
{
|
|
||||||
if (Items>AllocSize)
|
|
||||||
Add(Items-BufSize);
|
|
||||||
else
|
|
||||||
BufSize=Items;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
template <class T> void Array<T>::Reset()
|
|
||||||
{
|
|
||||||
if (Buffer!=NULL)
|
|
||||||
{
|
|
||||||
rarfree(Buffer);
|
|
||||||
Buffer=NULL;
|
|
||||||
}
|
|
||||||
BufSize=0;
|
|
||||||
AllocSize=0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
template <class T> void Array<T>::operator =(Array<T> &Src)
|
|
||||||
{
|
|
||||||
Reset();
|
|
||||||
Alloc(Src.BufSize);
|
|
||||||
if (Src.BufSize!=0)
|
|
||||||
memcpy((void *)Buffer,(void *)Src.Buffer,Src.BufSize*sizeof(T));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
template <class T> void Array<T>::Push(T Item)
|
|
||||||
{
|
|
||||||
Add(1);
|
|
||||||
(*this)[Size()-1]=Item;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
@ -1,57 +0,0 @@
|
|||||||
#ifndef _RAR_CMDDATA_
|
|
||||||
#define _RAR_CMDDATA_
|
|
||||||
|
|
||||||
#define DefaultStoreList "7z;ace;arj;bz2;cab;gz;jpeg;jpg;lha;lzh;mp3;rar;taz;tgz;z;zip"
|
|
||||||
|
|
||||||
class CommandData:public RAROptions
|
|
||||||
{
|
|
||||||
private:
|
|
||||||
void ProcessSwitchesString(char *Str);
|
|
||||||
void ProcessSwitch(char *Switch,wchar *SwitchW=NULL);
|
|
||||||
void BadSwitch(char *Switch);
|
|
||||||
bool ExclCheckArgs(StringList *Args,char *CheckName,bool CheckFullPath,int MatchMode);
|
|
||||||
uint GetExclAttr(char *Str);
|
|
||||||
|
|
||||||
bool FileLists;
|
|
||||||
bool NoMoreSwitches;
|
|
||||||
bool BareOutput;
|
|
||||||
public:
|
|
||||||
CommandData();
|
|
||||||
~CommandData();
|
|
||||||
void Init();
|
|
||||||
void Close();
|
|
||||||
void ParseArg(char *Arg,wchar *ArgW);
|
|
||||||
void ParseDone();
|
|
||||||
void ParseEnvVar();
|
|
||||||
void ReadConfig(int argc,char *argv[]);
|
|
||||||
bool IsConfigEnabled(int argc,char *argv[]);
|
|
||||||
void OutTitle();
|
|
||||||
void OutHelp();
|
|
||||||
bool IsSwitch(int Ch);
|
|
||||||
bool ExclCheck(char *CheckName,bool CheckFullPath,bool CheckInclList);
|
|
||||||
bool StoreCheck(char *CheckName);
|
|
||||||
bool TimeCheck(RarTime &ft);
|
|
||||||
bool SizeCheck(int64 Size);
|
|
||||||
bool AnyFiltersActive();
|
|
||||||
int IsProcessFile(FileHeader &NewLhd,bool *ExactMatch=NULL,int MatchType=MATCH_WILDSUBPATH);
|
|
||||||
void ProcessCommand();
|
|
||||||
void AddArcName(char *Name,wchar *NameW);
|
|
||||||
bool GetArcName(char *Name,wchar *NameW,int MaxSize);
|
|
||||||
bool CheckWinSize();
|
|
||||||
|
|
||||||
int GetRecoverySize(char *Str,int DefSize);
|
|
||||||
|
|
||||||
char Command[NM+16];
|
|
||||||
wchar CommandW[NM+16];
|
|
||||||
|
|
||||||
char ArcName[NM];
|
|
||||||
wchar ArcNameW[NM];
|
|
||||||
|
|
||||||
StringList *FileArgs;
|
|
||||||
StringList *ExclArgs;
|
|
||||||
StringList *InclArgs;
|
|
||||||
StringList *ArcNames;
|
|
||||||
StringList *StoreArgs;
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif
|
|
@ -1,24 +0,0 @@
|
|||||||
/****************************************************************************
|
|
||||||
* Contents: 'Carryless rangecoder' by Dmitry Subbotin *
|
|
||||||
****************************************************************************/
|
|
||||||
|
|
||||||
const uint TOP=1 << 24, BOT=1 << 15;
|
|
||||||
|
|
||||||
class RangeCoder
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
void InitDecoder(Unpack *UnpackRead);
|
|
||||||
inline int GetCurrentCount();
|
|
||||||
inline uint GetCurrentShiftCount(uint SHIFT);
|
|
||||||
inline void Decode();
|
|
||||||
inline void PutChar(unsigned int c);
|
|
||||||
inline unsigned int GetChar();
|
|
||||||
|
|
||||||
uint low, code, range;
|
|
||||||
struct SUBRANGE
|
|
||||||
{
|
|
||||||
uint LowCount, HighCount, scale;
|
|
||||||
} SubRange;
|
|
||||||
|
|
||||||
Unpack *UnpackRead;
|
|
||||||
};
|
|
@ -1,36 +0,0 @@
|
|||||||
#ifndef _RAR_COMPRESS_
|
|
||||||
#define _RAR_COMPRESS_
|
|
||||||
|
|
||||||
class ComprDataIO;
|
|
||||||
class PackingFileTable;
|
|
||||||
|
|
||||||
#define CODEBUFSIZE 0x4000
|
|
||||||
#define MAXWINSIZE 0x400000
|
|
||||||
#define MAXWINMASK (MAXWINSIZE-1)
|
|
||||||
|
|
||||||
#define LOW_DIST_REP_COUNT 16
|
|
||||||
|
|
||||||
#define NC 299 /* alphabet = {0, 1, 2, ..., NC - 1} */
|
|
||||||
#define DC 60
|
|
||||||
#define LDC 17
|
|
||||||
#define RC 28
|
|
||||||
#define HUFF_TABLE_SIZE (NC+DC+RC+LDC)
|
|
||||||
#define BC 20
|
|
||||||
|
|
||||||
#define NC20 298 /* alphabet = {0, 1, 2, ..., NC - 1} */
|
|
||||||
#define DC20 48
|
|
||||||
#define RC20 28
|
|
||||||
#define BC20 19
|
|
||||||
#define MC20 257
|
|
||||||
|
|
||||||
enum {CODE_HUFFMAN,CODE_LZ,CODE_LZ2,CODE_REPEATLZ,CODE_CACHELZ,
|
|
||||||
CODE_STARTFILE,CODE_ENDFILE,CODE_VM,CODE_VMDATA};
|
|
||||||
|
|
||||||
|
|
||||||
enum FilterType {
|
|
||||||
FILTER_NONE, FILTER_PPM /*dummy*/, FILTER_E8, FILTER_E8E9,
|
|
||||||
FILTER_UPCASETOLOW, FILTER_AUDIO, FILTER_RGB, FILTER_DELTA,
|
|
||||||
FILTER_ITANIUM, FILTER_E8E9V2
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif
|
|
@ -1,46 +0,0 @@
|
|||||||
#ifndef _RAR_CONSIO_
|
|
||||||
#define _RAR_CONSIO_
|
|
||||||
|
|
||||||
#if !defined(SILENT) && !defined(SFX_MODULE)
|
|
||||||
enum {SOUND_OK,SOUND_ALARM,SOUND_ERROR,SOUND_QUESTION};
|
|
||||||
#endif
|
|
||||||
|
|
||||||
enum PASSWORD_TYPE {PASSWORD_GLOBAL,PASSWORD_FILE,PASSWORD_ARCHIVE};
|
|
||||||
|
|
||||||
void InitConsoleOptions(MESSAGE_TYPE MsgStream,bool Sound);
|
|
||||||
|
|
||||||
#ifndef SILENT
|
|
||||||
void mprintf(const char *fmt,...);
|
|
||||||
void eprintf(const char *fmt,...);
|
|
||||||
void Alarm();
|
|
||||||
void GetPasswordText(char *Str,int MaxLength);
|
|
||||||
bool GetPassword(PASSWORD_TYPE Type,const char *FileName,char *Password,int MaxLength);
|
|
||||||
int Ask(const char *AskStr);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
void OutComment(char *Comment,size_t Size);
|
|
||||||
|
|
||||||
#ifdef SILENT
|
|
||||||
#ifdef __GNUC__
|
|
||||||
#define mprintf(args...)
|
|
||||||
#define eprintf(args...)
|
|
||||||
#else
|
|
||||||
#ifdef _MSC_VER
|
|
||||||
inline void mprintf(const char *fmt,...) {}
|
|
||||||
#else
|
|
||||||
inline void mprintf(const char *fmt,const char *a=NULL,const char *b=NULL) {}
|
|
||||||
#endif
|
|
||||||
inline void eprintf(const char *fmt,const char *a=NULL,const char *b=NULL) {}
|
|
||||||
inline void mprintf(const char *fmt,int b) {}
|
|
||||||
inline void eprintf(const char *fmt,int b) {}
|
|
||||||
inline void mprintf(const char *fmt,const char *a,int b) {}
|
|
||||||
inline void eprintf(const char *fmt,const char *a,int b) {}
|
|
||||||
#endif
|
|
||||||
inline void Alarm() {}
|
|
||||||
inline void GetPasswordText(char *Str,int MaxLength) {}
|
|
||||||
inline unsigned int GetKey() {return(0);}
|
|
||||||
inline bool GetPassword(PASSWORD_TYPE Type,const char *FileName,char *Password,int MaxLength) {return(false);}
|
|
||||||
inline int Ask(const char *AskStr) {return(0);}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
@ -1,10 +0,0 @@
|
|||||||
#ifndef _RAR_CRC_
|
|
||||||
#define _RAR_CRC_
|
|
||||||
|
|
||||||
extern uint CRCTab[256];
|
|
||||||
|
|
||||||
void InitCRC();
|
|
||||||
uint CRC(uint StartCRC,const void *Addr,size_t Size);
|
|
||||||
ushort OldCRC(ushort StartCRC,const void *Addr,size_t Size);
|
|
||||||
|
|
||||||
#endif
|
|
@ -1,62 +0,0 @@
|
|||||||
#ifndef _RAR_CRYPT_
|
|
||||||
#define _RAR_CRYPT_
|
|
||||||
|
|
||||||
enum { OLD_DECODE=0,OLD_ENCODE=1,NEW_CRYPT=2 };
|
|
||||||
|
|
||||||
|
|
||||||
struct CryptKeyCacheItem
|
|
||||||
{
|
|
||||||
#ifndef _SFX_RTL_
|
|
||||||
CryptKeyCacheItem()
|
|
||||||
{
|
|
||||||
*Password=0;
|
|
||||||
}
|
|
||||||
|
|
||||||
~CryptKeyCacheItem()
|
|
||||||
{
|
|
||||||
memset(AESKey,0,sizeof(AESKey));
|
|
||||||
memset(AESInit,0,sizeof(AESInit));
|
|
||||||
memset(Password,0,sizeof(Password));
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
byte AESKey[16],AESInit[16];
|
|
||||||
char Password[MAXPASSWORD];
|
|
||||||
bool SaltPresent;
|
|
||||||
byte Salt[SALT_SIZE];
|
|
||||||
bool HandsOffHash;
|
|
||||||
};
|
|
||||||
|
|
||||||
class CryptData
|
|
||||||
{
|
|
||||||
private:
|
|
||||||
void Encode13(byte *Data,uint Count);
|
|
||||||
void Decode13(byte *Data,uint Count);
|
|
||||||
void Crypt15(byte *Data,uint Count);
|
|
||||||
void UpdKeys(byte *Buf);
|
|
||||||
void Swap(byte *Ch1,byte *Ch2);
|
|
||||||
void SetOldKeys(const char *Password);
|
|
||||||
|
|
||||||
Rijndael rin;
|
|
||||||
|
|
||||||
byte SubstTable[256];
|
|
||||||
uint Key[4];
|
|
||||||
ushort OldKey[4];
|
|
||||||
byte PN1,PN2,PN3;
|
|
||||||
|
|
||||||
byte AESKey[16],AESInit[16];
|
|
||||||
|
|
||||||
static CryptKeyCacheItem Cache[4];
|
|
||||||
static int CachePos;
|
|
||||||
public:
|
|
||||||
void SetCryptKeys(const char *Password,const byte *Salt,bool Encrypt,bool OldOnly,bool HandsOffHash);
|
|
||||||
void SetAV15Encryption();
|
|
||||||
void SetCmt13Encryption();
|
|
||||||
void EncryptBlock20(byte *Buf);
|
|
||||||
void DecryptBlock20(byte *Buf);
|
|
||||||
void EncryptBlock(byte *Buf,size_t Size);
|
|
||||||
void DecryptBlock(byte *Buf,size_t Size);
|
|
||||||
void Crypt(byte *Data,uint Count,int Method);
|
|
||||||
static void SetSalt(byte *Salt,int SaltSize);
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif
|
|
@ -1,140 +0,0 @@
|
|||||||
#ifndef _UNRAR_DLL_
|
|
||||||
#define _UNRAR_DLL_
|
|
||||||
|
|
||||||
#define ERAR_END_ARCHIVE 10
|
|
||||||
#define ERAR_NO_MEMORY 11
|
|
||||||
#define ERAR_BAD_DATA 12
|
|
||||||
#define ERAR_BAD_ARCHIVE 13
|
|
||||||
#define ERAR_UNKNOWN_FORMAT 14
|
|
||||||
#define ERAR_EOPEN 15
|
|
||||||
#define ERAR_ECREATE 16
|
|
||||||
#define ERAR_ECLOSE 17
|
|
||||||
#define ERAR_EREAD 18
|
|
||||||
#define ERAR_EWRITE 19
|
|
||||||
#define ERAR_SMALL_BUF 20
|
|
||||||
#define ERAR_UNKNOWN 21
|
|
||||||
#define ERAR_MISSING_PASSWORD 22
|
|
||||||
|
|
||||||
#define RAR_OM_LIST 0
|
|
||||||
#define RAR_OM_EXTRACT 1
|
|
||||||
#define RAR_OM_LIST_INCSPLIT 2
|
|
||||||
|
|
||||||
#define RAR_SKIP 0
|
|
||||||
#define RAR_TEST 1
|
|
||||||
#define RAR_EXTRACT 2
|
|
||||||
|
|
||||||
#define RAR_VOL_ASK 0
|
|
||||||
#define RAR_VOL_NOTIFY 1
|
|
||||||
|
|
||||||
#define RAR_DLL_VERSION 4
|
|
||||||
|
|
||||||
#ifdef _UNIX
|
|
||||||
#define CALLBACK
|
|
||||||
#define PASCAL
|
|
||||||
#define LONG long
|
|
||||||
#define HANDLE void *
|
|
||||||
#define LPARAM long
|
|
||||||
#define UINT unsigned int
|
|
||||||
#endif
|
|
||||||
|
|
||||||
struct RARHeaderData
|
|
||||||
{
|
|
||||||
char ArcName[260];
|
|
||||||
char FileName[260];
|
|
||||||
unsigned int Flags;
|
|
||||||
unsigned int PackSize;
|
|
||||||
unsigned int UnpSize;
|
|
||||||
unsigned int HostOS;
|
|
||||||
unsigned int FileCRC;
|
|
||||||
unsigned int FileTime;
|
|
||||||
unsigned int UnpVer;
|
|
||||||
unsigned int Method;
|
|
||||||
unsigned int FileAttr;
|
|
||||||
char *CmtBuf;
|
|
||||||
unsigned int CmtBufSize;
|
|
||||||
unsigned int CmtSize;
|
|
||||||
unsigned int CmtState;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
struct RARHeaderDataEx
|
|
||||||
{
|
|
||||||
char ArcName[1024];
|
|
||||||
wchar_t ArcNameW[1024];
|
|
||||||
char FileName[1024];
|
|
||||||
wchar_t FileNameW[1024];
|
|
||||||
unsigned int Flags;
|
|
||||||
unsigned int PackSize;
|
|
||||||
unsigned int PackSizeHigh;
|
|
||||||
unsigned int UnpSize;
|
|
||||||
unsigned int UnpSizeHigh;
|
|
||||||
unsigned int HostOS;
|
|
||||||
unsigned int FileCRC;
|
|
||||||
unsigned int FileTime;
|
|
||||||
unsigned int UnpVer;
|
|
||||||
unsigned int Method;
|
|
||||||
unsigned int FileAttr;
|
|
||||||
char *CmtBuf;
|
|
||||||
unsigned int CmtBufSize;
|
|
||||||
unsigned int CmtSize;
|
|
||||||
unsigned int CmtState;
|
|
||||||
unsigned int Reserved[1024];
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
struct RAROpenArchiveData
|
|
||||||
{
|
|
||||||
char *ArcName;
|
|
||||||
unsigned int OpenMode;
|
|
||||||
unsigned int OpenResult;
|
|
||||||
char *CmtBuf;
|
|
||||||
unsigned int CmtBufSize;
|
|
||||||
unsigned int CmtSize;
|
|
||||||
unsigned int CmtState;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct RAROpenArchiveDataEx
|
|
||||||
{
|
|
||||||
char *ArcName;
|
|
||||||
wchar_t *ArcNameW;
|
|
||||||
unsigned int OpenMode;
|
|
||||||
unsigned int OpenResult;
|
|
||||||
char *CmtBuf;
|
|
||||||
unsigned int CmtBufSize;
|
|
||||||
unsigned int CmtSize;
|
|
||||||
unsigned int CmtState;
|
|
||||||
unsigned int Flags;
|
|
||||||
unsigned int Reserved[32];
|
|
||||||
};
|
|
||||||
|
|
||||||
enum UNRARCALLBACK_MESSAGES {
|
|
||||||
UCM_CHANGEVOLUME,UCM_PROCESSDATA,UCM_NEEDPASSWORD
|
|
||||||
};
|
|
||||||
|
|
||||||
typedef int (CALLBACK *UNRARCALLBACK)(UINT msg,LPARAM UserData,LPARAM P1,LPARAM P2);
|
|
||||||
|
|
||||||
typedef int (PASCAL *CHANGEVOLPROC)(char *ArcName,int Mode);
|
|
||||||
typedef int (PASCAL *PROCESSDATAPROC)(unsigned char *Addr,int Size);
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
HANDLE PASCAL RAROpenArchive(struct RAROpenArchiveData *ArchiveData);
|
|
||||||
HANDLE PASCAL RAROpenArchiveEx(struct RAROpenArchiveDataEx *ArchiveData);
|
|
||||||
int PASCAL RARCloseArchive(HANDLE hArcData);
|
|
||||||
int PASCAL RARReadHeader(HANDLE hArcData,struct RARHeaderData *HeaderData);
|
|
||||||
int PASCAL RARReadHeaderEx(HANDLE hArcData,struct RARHeaderDataEx *HeaderData);
|
|
||||||
int PASCAL RARProcessFile(HANDLE hArcData,int Operation,char *DestPath,char *DestName);
|
|
||||||
int PASCAL RARProcessFileW(HANDLE hArcData,int Operation,wchar_t *DestPath,wchar_t *DestName);
|
|
||||||
void PASCAL RARSetCallback(HANDLE hArcData,UNRARCALLBACK Callback,LPARAM UserData);
|
|
||||||
void PASCAL RARSetChangeVolProc(HANDLE hArcData,CHANGEVOLPROC ChangeVolProc);
|
|
||||||
void PASCAL RARSetProcessDataProc(HANDLE hArcData,PROCESSDATAPROC ProcessDataProc);
|
|
||||||
void PASCAL RARSetPassword(HANDLE hArcData,char *Password);
|
|
||||||
int PASCAL RARGetDllVersion();
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
@ -1,20 +0,0 @@
|
|||||||
#ifndef _RAR_ENCNAME_
|
|
||||||
#define _RAR_ENCNAME_
|
|
||||||
|
|
||||||
class EncodeFileName
|
|
||||||
{
|
|
||||||
private:
|
|
||||||
void AddFlags(int Value);
|
|
||||||
|
|
||||||
byte *EncName;
|
|
||||||
byte Flags;
|
|
||||||
uint FlagBits;
|
|
||||||
size_t FlagsPos;
|
|
||||||
size_t DestSize;
|
|
||||||
public:
|
|
||||||
EncodeFileName();
|
|
||||||
size_t Encode(char *Name,wchar *NameW,byte *EncName);
|
|
||||||
void Decode(char *Name,byte *EncName,size_t EncSize,wchar *NameW,size_t MaxDecSize);
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif
|
|
@ -1,63 +0,0 @@
|
|||||||
#ifndef _RAR_ERRHANDLER_
|
|
||||||
#define _RAR_ERRHANDLER_
|
|
||||||
|
|
||||||
#if (defined(GUI) || !defined(_WIN_32)) && !defined(SFX_MODULE) && !defined(_WIN_CE) || defined(RARDLL)
|
|
||||||
#define ALLOW_EXCEPTIONS
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#define rarmalloc malloc
|
|
||||||
#define rarcalloc calloc
|
|
||||||
#define rarrealloc realloc
|
|
||||||
#define rarfree free
|
|
||||||
#define rarstrdup strdup
|
|
||||||
#define rarstrdupw strdupw
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
enum { SUCCESS,WARNING,FATAL_ERROR,CRC_ERROR,LOCK_ERROR,WRITE_ERROR,
|
|
||||||
OPEN_ERROR,USER_ERROR,MEMORY_ERROR,CREATE_ERROR,USER_BREAK=255};
|
|
||||||
|
|
||||||
class ErrorHandler
|
|
||||||
{
|
|
||||||
private:
|
|
||||||
void ErrMsg(const char *ArcName,const char *fmt,...);
|
|
||||||
|
|
||||||
int ExitCode;
|
|
||||||
int ErrCount;
|
|
||||||
bool EnableBreak;
|
|
||||||
bool Silent;
|
|
||||||
bool DoShutdown;
|
|
||||||
public:
|
|
||||||
ErrorHandler();
|
|
||||||
void Clean();
|
|
||||||
void MemoryError();
|
|
||||||
void OpenError(const char *FileName);
|
|
||||||
void CloseError(const char *FileName);
|
|
||||||
void ReadError(const char *FileName);
|
|
||||||
bool AskRepeatRead(const char *FileName);
|
|
||||||
void WriteError(const char *ArcName,const char *FileName);
|
|
||||||
void WriteErrorFAT(const char *FileName);
|
|
||||||
bool AskRepeatWrite(const char *FileName,bool DiskFull);
|
|
||||||
void SeekError(const char *FileName);
|
|
||||||
void GeneralErrMsg(const char *Msg);
|
|
||||||
void MemoryErrorMsg();
|
|
||||||
void OpenErrorMsg(const char *FileName);
|
|
||||||
void OpenErrorMsg(const char *ArcName,const char *FileName);
|
|
||||||
void CreateErrorMsg(const char *FileName);
|
|
||||||
void CreateErrorMsg(const char *ArcName,const char *FileName);
|
|
||||||
void ReadErrorMsg(const char *ArcName,const char *FileName);
|
|
||||||
void WriteErrorMsg(const char *ArcName,const char *FileName);
|
|
||||||
void Exit(int ExitCode);
|
|
||||||
void SetErrorCode(int Code);
|
|
||||||
int GetErrorCode() {return(ExitCode);}
|
|
||||||
int GetErrorCount() {return(ErrCount);}
|
|
||||||
void SetSignalHandlers(bool Enable);
|
|
||||||
void Throw(int Code);
|
|
||||||
void SetSilent(bool Mode) {Silent=Mode;};
|
|
||||||
void SetShutdown(bool Mode) {DoShutdown=Mode;};
|
|
||||||
void SysErrMsg();
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif
|
|
@ -1,8 +0,0 @@
|
|||||||
#ifndef _RAR_EXTINFO_
|
|
||||||
#define _RAR_EXTINFO_
|
|
||||||
|
|
||||||
|
|
||||||
void SetExtraInfo(CommandData *Cmd,Archive &Arc,char *Name,wchar *NameW);
|
|
||||||
void SetExtraInfoNew(CommandData *Cmd,Archive &Arc,char *Name,wchar *NameW);
|
|
||||||
|
|
||||||
#endif
|
|
@ -1,43 +0,0 @@
|
|||||||
#ifndef _RAR_EXTRACT_
|
|
||||||
#define _RAR_EXTRACT_
|
|
||||||
|
|
||||||
enum EXTRACT_ARC_CODE {EXTRACT_ARC_NEXT,EXTRACT_ARC_REPEAT};
|
|
||||||
|
|
||||||
class CmdExtract
|
|
||||||
{
|
|
||||||
private:
|
|
||||||
EXTRACT_ARC_CODE ExtractArchive(CommandData *Cmd);
|
|
||||||
RarTime StartTime; // time when extraction started
|
|
||||||
|
|
||||||
ComprDataIO DataIO;
|
|
||||||
Unpack *Unp;
|
|
||||||
unsigned long TotalFileCount;
|
|
||||||
|
|
||||||
unsigned long FileCount;
|
|
||||||
unsigned long MatchedArgs;
|
|
||||||
bool FirstFile;
|
|
||||||
bool AllMatchesExact;
|
|
||||||
bool ReconstructDone;
|
|
||||||
|
|
||||||
char ArcName[NM];
|
|
||||||
wchar ArcNameW[NM];
|
|
||||||
|
|
||||||
char Password[MAXPASSWORD];
|
|
||||||
bool PasswordAll;
|
|
||||||
bool PrevExtracted;
|
|
||||||
char DestFileName[NM];
|
|
||||||
wchar DestFileNameW[NM];
|
|
||||||
bool PasswordCancelled;
|
|
||||||
public:
|
|
||||||
CmdExtract();
|
|
||||||
~CmdExtract();
|
|
||||||
void DoExtract(CommandData *Cmd);
|
|
||||||
void ExtractArchiveInit(CommandData *Cmd,Archive &Arc);
|
|
||||||
bool ExtractCurrentFile(CommandData *Cmd,Archive &Arc,size_t HeaderSize,
|
|
||||||
bool &Repeat);
|
|
||||||
static void UnstoreFile(ComprDataIO &DataIO,int64 DestUnpSize);
|
|
||||||
|
|
||||||
bool SignatureFound;
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif
|
|
@ -1,13 +0,0 @@
|
|||||||
#ifndef _RAR_FILECREATE_
|
|
||||||
#define _RAR_FILECREATE_
|
|
||||||
|
|
||||||
bool FileCreate(RAROptions *Cmd,File *NewFile,char *Name,wchar *NameW,
|
|
||||||
OVERWRITE_MODE Mode,bool *UserReject,int64 FileSize=INT64NDF,
|
|
||||||
uint FileTime=0);
|
|
||||||
bool GetAutoRenamedName(char *Name);
|
|
||||||
|
|
||||||
#if defined(_WIN_32) && !defined(_WIN_CE)
|
|
||||||
bool UpdateExistingShortName(char *Name,wchar *NameW);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
@ -1,98 +0,0 @@
|
|||||||
#ifndef _RAR_FILE_
|
|
||||||
#define _RAR_FILE_
|
|
||||||
|
|
||||||
#ifdef _WIN_32
|
|
||||||
typedef HANDLE FileHandle;
|
|
||||||
#define BAD_HANDLE INVALID_HANDLE_VALUE
|
|
||||||
#else
|
|
||||||
typedef FILE* FileHandle;
|
|
||||||
#define BAD_HANDLE NULL
|
|
||||||
#endif
|
|
||||||
|
|
||||||
class RAROptions;
|
|
||||||
|
|
||||||
enum FILE_HANDLETYPE {FILE_HANDLENORMAL,FILE_HANDLESTD,FILE_HANDLEERR};
|
|
||||||
|
|
||||||
enum FILE_ERRORTYPE {FILE_SUCCESS,FILE_NOTFOUND,FILE_READERROR};
|
|
||||||
|
|
||||||
struct FileStat
|
|
||||||
{
|
|
||||||
uint FileAttr;
|
|
||||||
uint FileTime;
|
|
||||||
int64 FileSize;
|
|
||||||
bool IsDir;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
class File
|
|
||||||
{
|
|
||||||
private:
|
|
||||||
void AddFileToList(FileHandle hFile);
|
|
||||||
|
|
||||||
FileHandle hFile;
|
|
||||||
bool LastWrite;
|
|
||||||
FILE_HANDLETYPE HandleType;
|
|
||||||
bool SkipClose;
|
|
||||||
bool IgnoreReadErrors;
|
|
||||||
bool NewFile;
|
|
||||||
bool AllowDelete;
|
|
||||||
bool AllowExceptions;
|
|
||||||
#ifdef _WIN_32
|
|
||||||
bool NoSequentialRead;
|
|
||||||
#endif
|
|
||||||
protected:
|
|
||||||
bool OpenShared;
|
|
||||||
public:
|
|
||||||
char FileName[NM];
|
|
||||||
wchar FileNameW[NM];
|
|
||||||
|
|
||||||
FILE_ERRORTYPE ErrorType;
|
|
||||||
|
|
||||||
uint CloseCount;
|
|
||||||
public:
|
|
||||||
File();
|
|
||||||
virtual ~File();
|
|
||||||
void operator = (File &SrcFile);
|
|
||||||
bool Open(const char *Name,const wchar *NameW=NULL,bool OpenShared=false,bool Update=false);
|
|
||||||
void TOpen(const char *Name,const wchar *NameW=NULL);
|
|
||||||
bool WOpen(const char *Name,const wchar *NameW=NULL);
|
|
||||||
bool Create(const char *Name,const wchar *NameW=NULL,bool ShareRead=true);
|
|
||||||
void TCreate(const char *Name,const wchar *NameW=NULL,bool ShareRead=true);
|
|
||||||
bool WCreate(const char *Name,const wchar *NameW=NULL,bool ShareRead=true);
|
|
||||||
bool Close();
|
|
||||||
void Flush();
|
|
||||||
bool Delete();
|
|
||||||
bool Rename(const char *NewName,const wchar *NewNameW=NULL);
|
|
||||||
void Write(const void *Data,size_t Size);
|
|
||||||
int Read(void *Data,size_t Size);
|
|
||||||
int DirectRead(void *Data,size_t Size);
|
|
||||||
void Seek(int64 Offset,int Method);
|
|
||||||
bool RawSeek(int64 Offset,int Method);
|
|
||||||
int64 Tell();
|
|
||||||
void Prealloc(int64 Size);
|
|
||||||
byte GetByte();
|
|
||||||
void PutByte(byte Byte);
|
|
||||||
bool Truncate();
|
|
||||||
void SetOpenFileTime(RarTime *ftm,RarTime *ftc=NULL,RarTime *fta=NULL);
|
|
||||||
void SetCloseFileTime(RarTime *ftm,RarTime *fta=NULL);
|
|
||||||
static void SetCloseFileTimeByName(const char *Name,RarTime *ftm,RarTime *fta);
|
|
||||||
void GetOpenFileTime(RarTime *ft);
|
|
||||||
bool IsOpened() {return(hFile!=BAD_HANDLE);};
|
|
||||||
int64 FileLength();
|
|
||||||
void SetHandleType(FILE_HANDLETYPE Type);
|
|
||||||
FILE_HANDLETYPE GetHandleType() {return(HandleType);};
|
|
||||||
bool IsDevice();
|
|
||||||
void fprintf(const char *fmt,...);
|
|
||||||
static bool RemoveCreated();
|
|
||||||
FileHandle GetHandle() {return(hFile);};
|
|
||||||
void SetIgnoreReadErrors(bool Mode) {IgnoreReadErrors=Mode;};
|
|
||||||
char *GetName() {return(FileName);}
|
|
||||||
int64 Copy(File &Dest,int64 Length=INT64NDF);
|
|
||||||
void SetAllowDelete(bool Allow) {AllowDelete=Allow;}
|
|
||||||
void SetExceptions(bool Allow) {AllowExceptions=Allow;}
|
|
||||||
#ifdef _WIN_32
|
|
||||||
void RemoveSequentialFlag() {NoSequentialRead=true;}
|
|
||||||
#endif
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif
|
|
@ -1,44 +0,0 @@
|
|||||||
#ifndef _RAR_FILEFN_
|
|
||||||
#define _RAR_FILEFN_
|
|
||||||
|
|
||||||
enum MKDIR_CODE {MKDIR_SUCCESS,MKDIR_ERROR,MKDIR_BADPATH};
|
|
||||||
|
|
||||||
MKDIR_CODE MakeDir(const char *Name,const wchar *NameW,bool SetAttr,uint Attr);
|
|
||||||
bool CreatePath(const char *Path,const wchar *PathW,bool SkipLastName);
|
|
||||||
void SetDirTime(const char *Name,const wchar *NameW,RarTime *ftm,RarTime *ftc,RarTime *fta);
|
|
||||||
bool IsRemovable(const char *Name);
|
|
||||||
int64 GetFreeDisk(const char *Name);
|
|
||||||
bool FileExist(const char *Name,const wchar *NameW=NULL);
|
|
||||||
bool WildFileExist(const char *Name,const wchar *NameW=NULL);
|
|
||||||
bool IsDir(uint Attr);
|
|
||||||
bool IsUnreadable(uint Attr);
|
|
||||||
bool IsLabel(uint Attr);
|
|
||||||
bool IsLink(uint Attr);
|
|
||||||
void SetSFXMode(const char *FileName);
|
|
||||||
void EraseDiskContents(const char *FileName);
|
|
||||||
bool IsDeleteAllowed(uint FileAttr);
|
|
||||||
void PrepareToDelete(const char *Name,const wchar *NameW=NULL);
|
|
||||||
uint GetFileAttr(const char *Name,const wchar *NameW=NULL);
|
|
||||||
bool SetFileAttr(const char *Name,const wchar *NameW,uint Attr);
|
|
||||||
void ConvertNameToFull(const char *Src,char *Dest);
|
|
||||||
void ConvertNameToFull(const wchar *Src,wchar *Dest);
|
|
||||||
char* MkTemp(char *Name);
|
|
||||||
|
|
||||||
|
|
||||||
enum CALCCRC_SHOWMODE {CALCCRC_SHOWNONE,CALCCRC_SHOWTEXT,CALCCRC_SHOWALL};
|
|
||||||
uint CalcFileCRC(File *SrcFile,int64 Size=INT64NDF,CALCCRC_SHOWMODE ShowMode=CALCCRC_SHOWNONE);
|
|
||||||
|
|
||||||
bool RenameFile(const char *SrcName,const wchar *SrcNameW,const char *DestName,const wchar *DestNameW);
|
|
||||||
bool DelFile(const char *Name);
|
|
||||||
bool DelFile(const char *Name,const wchar *NameW);
|
|
||||||
bool DelDir(const char *Name);
|
|
||||||
bool DelDir(const char *Name,const wchar *NameW);
|
|
||||||
|
|
||||||
#if defined(_WIN_32) && !defined(_WIN_CE)
|
|
||||||
bool SetFileCompression(char *Name,wchar *NameW,bool State);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
|
@ -1,9 +0,0 @@
|
|||||||
#ifndef _RAR_FILESTR_
|
|
||||||
#define _RAR_FILESTR_
|
|
||||||
|
|
||||||
bool ReadTextFile(const char *Name,StringList *List,bool Config,
|
|
||||||
bool AbortOnError=false,RAR_CHARSET SrcCharset=RCH_DEFAULT,
|
|
||||||
bool Unquote=false,bool SkipComments=false,
|
|
||||||
bool ExpandEnvStr=false);
|
|
||||||
|
|
||||||
#endif
|
|
@ -1,53 +0,0 @@
|
|||||||
#ifndef _RAR_FINDDATA_
|
|
||||||
#define _RAR_FINDDATA_
|
|
||||||
|
|
||||||
enum FINDDATA_FLAGS {
|
|
||||||
FDDF_SECONDDIR=1 // Second encounter of same directory in SCAN_GETDIRSTWICE ScanTree mode
|
|
||||||
};
|
|
||||||
|
|
||||||
struct FindData
|
|
||||||
{
|
|
||||||
char Name[NM];
|
|
||||||
wchar NameW[NM];
|
|
||||||
int64 Size;
|
|
||||||
uint FileAttr;
|
|
||||||
uint FileTime;
|
|
||||||
bool IsDir;
|
|
||||||
RarTime mtime;
|
|
||||||
RarTime ctime;
|
|
||||||
RarTime atime;
|
|
||||||
#ifdef _WIN_32
|
|
||||||
char ShortName[NM];
|
|
||||||
FILETIME ftCreationTime;
|
|
||||||
FILETIME ftLastAccessTime;
|
|
||||||
FILETIME ftLastWriteTime;
|
|
||||||
#endif
|
|
||||||
uint Flags;
|
|
||||||
bool Error;
|
|
||||||
};
|
|
||||||
|
|
||||||
class FindFile
|
|
||||||
{
|
|
||||||
private:
|
|
||||||
#ifdef _WIN_32
|
|
||||||
static HANDLE Win32Find(HANDLE hFind,const char *Mask,const wchar *MaskW,struct FindData *fd);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
char FindMask[NM];
|
|
||||||
wchar FindMaskW[NM];
|
|
||||||
bool FirstCall;
|
|
||||||
#ifdef _WIN_32
|
|
||||||
HANDLE hFind;
|
|
||||||
#else
|
|
||||||
DIR *dirp;
|
|
||||||
#endif
|
|
||||||
public:
|
|
||||||
FindFile();
|
|
||||||
~FindFile();
|
|
||||||
void SetMask(const char *FindMask);
|
|
||||||
void SetMaskW(const wchar *FindMaskW);
|
|
||||||
bool Next(struct FindData *fd,bool GetSymLink=false);
|
|
||||||
static bool FastFind(const char *FindMask,const wchar *FindMaskW,struct FindData *fd,bool GetSymLink=false);
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif
|
|
@ -1,51 +0,0 @@
|
|||||||
#ifndef _RAR_GETBITS_
|
|
||||||
#define _RAR_GETBITS_
|
|
||||||
|
|
||||||
class BitInput
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
enum BufferSize {MAX_SIZE=0x8000}; // Size of input buffer.
|
|
||||||
protected:
|
|
||||||
int InAddr; // Curent byte position in the buffer.
|
|
||||||
int InBit; // Current bit position in the current byte.
|
|
||||||
public:
|
|
||||||
BitInput();
|
|
||||||
~BitInput();
|
|
||||||
|
|
||||||
byte *InBuf; // Dynamically allocated input buffer.
|
|
||||||
|
|
||||||
void InitBitInput()
|
|
||||||
{
|
|
||||||
InAddr=InBit=0;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Move forward by 'Bits' bits.
|
|
||||||
void addbits(uint Bits)
|
|
||||||
{
|
|
||||||
Bits+=InBit;
|
|
||||||
InAddr+=Bits>>3;
|
|
||||||
InBit=Bits&7;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Return 16 bits from current position in the buffer.
|
|
||||||
// Bit at (InAddr,InBit) has the highest position in returning data.
|
|
||||||
uint getbits()
|
|
||||||
{
|
|
||||||
uint BitField=(uint)InBuf[InAddr] << 16;
|
|
||||||
BitField|=(uint)InBuf[InAddr+1] << 8;
|
|
||||||
BitField|=(uint)InBuf[InAddr+2];
|
|
||||||
BitField >>= (8-InBit);
|
|
||||||
return(BitField & 0xffff);
|
|
||||||
}
|
|
||||||
|
|
||||||
void faddbits(uint Bits);
|
|
||||||
uint fgetbits();
|
|
||||||
|
|
||||||
// Check if buffer has enough space for IncPtr bytes. Returns 'true'
|
|
||||||
// if buffer will be overflown.
|
|
||||||
bool Overflow(uint IncPtr)
|
|
||||||
{
|
|
||||||
return(InAddr+IncPtr>=MAX_SIZE);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
#endif
|
|
@ -1,14 +0,0 @@
|
|||||||
#ifndef _RAR_GLOBAL_
|
|
||||||
#define _RAR_GLOBAL_
|
|
||||||
|
|
||||||
#ifdef INCLUDEGLOBAL
|
|
||||||
#define EXTVAR
|
|
||||||
#else
|
|
||||||
#define EXTVAR extern
|
|
||||||
#endif
|
|
||||||
|
|
||||||
EXTVAR ErrorHandler ErrHandler;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
|
@ -1,308 +0,0 @@
|
|||||||
#ifndef _RAR_HEADERS_
|
|
||||||
#define _RAR_HEADERS_
|
|
||||||
|
|
||||||
#define SIZEOF_MARKHEAD 7
|
|
||||||
#define SIZEOF_OLDMHD 7
|
|
||||||
#define SIZEOF_NEWMHD 13
|
|
||||||
#define SIZEOF_OLDLHD 21
|
|
||||||
#define SIZEOF_NEWLHD 32
|
|
||||||
#define SIZEOF_SHORTBLOCKHEAD 7
|
|
||||||
#define SIZEOF_LONGBLOCKHEAD 11
|
|
||||||
#define SIZEOF_SUBBLOCKHEAD 14
|
|
||||||
#define SIZEOF_COMMHEAD 13
|
|
||||||
#define SIZEOF_PROTECTHEAD 26
|
|
||||||
#define SIZEOF_AVHEAD 14
|
|
||||||
#define SIZEOF_SIGNHEAD 15
|
|
||||||
#define SIZEOF_UOHEAD 18
|
|
||||||
#define SIZEOF_MACHEAD 22
|
|
||||||
#define SIZEOF_EAHEAD 24
|
|
||||||
#define SIZEOF_BEEAHEAD 24
|
|
||||||
#define SIZEOF_STREAMHEAD 26
|
|
||||||
|
|
||||||
#define PACK_VER 29
|
|
||||||
#define PACK_CRYPT_VER 29
|
|
||||||
#define UNP_VER 36
|
|
||||||
#define CRYPT_VER 29
|
|
||||||
#define AV_VER 20
|
|
||||||
#define PROTECT_VER 20
|
|
||||||
|
|
||||||
#define MHD_VOLUME 0x0001U
|
|
||||||
#define MHD_COMMENT 0x0002U
|
|
||||||
#define MHD_LOCK 0x0004U
|
|
||||||
#define MHD_SOLID 0x0008U
|
|
||||||
#define MHD_PACK_COMMENT 0x0010U
|
|
||||||
#define MHD_NEWNUMBERING 0x0010U
|
|
||||||
#define MHD_AV 0x0020U
|
|
||||||
#define MHD_PROTECT 0x0040U
|
|
||||||
#define MHD_PASSWORD 0x0080U
|
|
||||||
#define MHD_FIRSTVOLUME 0x0100U
|
|
||||||
#define MHD_ENCRYPTVER 0x0200U
|
|
||||||
|
|
||||||
#define LHD_SPLIT_BEFORE 0x0001U
|
|
||||||
#define LHD_SPLIT_AFTER 0x0002U
|
|
||||||
#define LHD_PASSWORD 0x0004U
|
|
||||||
#define LHD_COMMENT 0x0008U
|
|
||||||
#define LHD_SOLID 0x0010U
|
|
||||||
|
|
||||||
#define LHD_WINDOWMASK 0x00e0U
|
|
||||||
#define LHD_WINDOW64 0x0000U
|
|
||||||
#define LHD_WINDOW128 0x0020U
|
|
||||||
#define LHD_WINDOW256 0x0040U
|
|
||||||
#define LHD_WINDOW512 0x0060U
|
|
||||||
#define LHD_WINDOW1024 0x0080U
|
|
||||||
#define LHD_WINDOW2048 0x00a0U
|
|
||||||
#define LHD_WINDOW4096 0x00c0U
|
|
||||||
#define LHD_DIRECTORY 0x00e0U
|
|
||||||
|
|
||||||
#define LHD_LARGE 0x0100U
|
|
||||||
#define LHD_UNICODE 0x0200U
|
|
||||||
#define LHD_SALT 0x0400U
|
|
||||||
#define LHD_VERSION 0x0800U
|
|
||||||
#define LHD_EXTTIME 0x1000U
|
|
||||||
#define LHD_EXTFLAGS 0x2000U
|
|
||||||
|
|
||||||
#define SKIP_IF_UNKNOWN 0x4000U
|
|
||||||
#define LONG_BLOCK 0x8000U
|
|
||||||
|
|
||||||
#define EARC_NEXT_VOLUME 0x0001U // not last volume
|
|
||||||
#define EARC_DATACRC 0x0002U // store CRC32 of RAR archive (now used only in volumes)
|
|
||||||
#define EARC_REVSPACE 0x0004U // reserve space for end of REV file 7 byte record
|
|
||||||
#define EARC_VOLNUMBER 0x0008U // store a number of current volume
|
|
||||||
|
|
||||||
enum HEADER_TYPE {
|
|
||||||
MARK_HEAD=0x72,MAIN_HEAD=0x73,FILE_HEAD=0x74,COMM_HEAD=0x75,AV_HEAD=0x76,
|
|
||||||
SUB_HEAD=0x77,PROTECT_HEAD=0x78,SIGN_HEAD=0x79,NEWSUB_HEAD=0x7a,
|
|
||||||
ENDARC_HEAD=0x7b
|
|
||||||
};
|
|
||||||
|
|
||||||
enum { EA_HEAD=0x100,UO_HEAD=0x101,MAC_HEAD=0x102,BEEA_HEAD=0x103,
|
|
||||||
NTACL_HEAD=0x104,STREAM_HEAD=0x105 };
|
|
||||||
|
|
||||||
enum HOST_SYSTEM {
|
|
||||||
HOST_MSDOS=0,HOST_OS2=1,HOST_WIN32=2,HOST_UNIX=3,HOST_MACOS=4,
|
|
||||||
HOST_BEOS=5,HOST_MAX
|
|
||||||
};
|
|
||||||
|
|
||||||
#define SUBHEAD_TYPE_CMT "CMT"
|
|
||||||
#define SUBHEAD_TYPE_ACL "ACL"
|
|
||||||
#define SUBHEAD_TYPE_STREAM "STM"
|
|
||||||
#define SUBHEAD_TYPE_UOWNER "UOW"
|
|
||||||
#define SUBHEAD_TYPE_AV "AV"
|
|
||||||
#define SUBHEAD_TYPE_RR "RR"
|
|
||||||
#define SUBHEAD_TYPE_OS2EA "EA2"
|
|
||||||
#define SUBHEAD_TYPE_BEOSEA "EABE"
|
|
||||||
|
|
||||||
/* new file inherits a subblock when updating a host file */
|
|
||||||
#define SUBHEAD_FLAGS_INHERITED 0x80000000
|
|
||||||
|
|
||||||
#define SUBHEAD_FLAGS_CMT_UNICODE 0x00000001
|
|
||||||
|
|
||||||
struct OldMainHeader
|
|
||||||
{
|
|
||||||
byte Mark[4];
|
|
||||||
ushort HeadSize;
|
|
||||||
byte Flags;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
struct OldFileHeader
|
|
||||||
{
|
|
||||||
uint PackSize;
|
|
||||||
uint UnpSize;
|
|
||||||
ushort FileCRC;
|
|
||||||
ushort HeadSize;
|
|
||||||
uint FileTime;
|
|
||||||
byte FileAttr;
|
|
||||||
byte Flags;
|
|
||||||
byte UnpVer;
|
|
||||||
byte NameSize;
|
|
||||||
byte Method;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
struct MarkHeader
|
|
||||||
{
|
|
||||||
byte Mark[7];
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
struct BaseBlock
|
|
||||||
{
|
|
||||||
ushort HeadCRC;
|
|
||||||
HEADER_TYPE HeadType;//byte
|
|
||||||
ushort Flags;
|
|
||||||
ushort HeadSize;
|
|
||||||
|
|
||||||
bool IsSubBlock()
|
|
||||||
{
|
|
||||||
if (HeadType==SUB_HEAD)
|
|
||||||
return(true);
|
|
||||||
if (HeadType==NEWSUB_HEAD && (Flags & LHD_SOLID)!=0)
|
|
||||||
return(true);
|
|
||||||
return(false);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
struct BlockHeader:BaseBlock
|
|
||||||
{
|
|
||||||
union {
|
|
||||||
uint DataSize;
|
|
||||||
uint PackSize;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
struct MainHeader:BaseBlock
|
|
||||||
{
|
|
||||||
ushort HighPosAV;
|
|
||||||
uint PosAV;
|
|
||||||
byte EncryptVer;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
#define SALT_SIZE 8
|
|
||||||
|
|
||||||
struct FileHeader:BlockHeader
|
|
||||||
{
|
|
||||||
uint UnpSize;
|
|
||||||
byte HostOS;
|
|
||||||
uint FileCRC;
|
|
||||||
uint FileTime;
|
|
||||||
byte UnpVer;
|
|
||||||
byte Method;
|
|
||||||
ushort NameSize;
|
|
||||||
union {
|
|
||||||
uint FileAttr;
|
|
||||||
uint SubFlags;
|
|
||||||
};
|
|
||||||
/* optional */
|
|
||||||
uint HighPackSize;
|
|
||||||
uint HighUnpSize;
|
|
||||||
/* names */
|
|
||||||
char FileName[NM];
|
|
||||||
wchar FileNameW[NM];
|
|
||||||
/* optional */
|
|
||||||
Array<byte> SubData;
|
|
||||||
byte Salt[SALT_SIZE];
|
|
||||||
|
|
||||||
RarTime mtime;
|
|
||||||
RarTime ctime;
|
|
||||||
RarTime atime;
|
|
||||||
RarTime arctime;
|
|
||||||
/* dummy */
|
|
||||||
int64 FullPackSize;
|
|
||||||
int64 FullUnpSize;
|
|
||||||
|
|
||||||
void Clear(size_t SubDataSize)
|
|
||||||
{
|
|
||||||
SubData.Alloc(SubDataSize);
|
|
||||||
Flags=LONG_BLOCK;
|
|
||||||
SubFlags=0;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool CmpName(const char *Name)
|
|
||||||
{
|
|
||||||
return(strcmp(FileName,Name)==0);
|
|
||||||
}
|
|
||||||
|
|
||||||
FileHeader& operator = (FileHeader &hd)
|
|
||||||
{
|
|
||||||
SubData.Reset();
|
|
||||||
memcpy(this,&hd,sizeof(*this));
|
|
||||||
SubData.CleanData();
|
|
||||||
SubData=hd.SubData;
|
|
||||||
return(*this);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
struct EndArcHeader:BaseBlock
|
|
||||||
{
|
|
||||||
uint ArcDataCRC; // optional archive CRC32
|
|
||||||
ushort VolNumber; // optional current volume number
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
// SubBlockHeader and its successors were used in RAR 2.x format.
|
|
||||||
// RAR 3.x uses FileHeader with NEWSUB_HEAD HeadType for subblocks.
|
|
||||||
struct SubBlockHeader:BlockHeader
|
|
||||||
{
|
|
||||||
ushort SubType;
|
|
||||||
byte Level;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
struct CommentHeader:BaseBlock
|
|
||||||
{
|
|
||||||
ushort UnpSize;
|
|
||||||
byte UnpVer;
|
|
||||||
byte Method;
|
|
||||||
ushort CommCRC;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
struct ProtectHeader:BlockHeader
|
|
||||||
{
|
|
||||||
byte Version;
|
|
||||||
ushort RecSectors;
|
|
||||||
uint TotalBlocks;
|
|
||||||
byte Mark[8];
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
struct AVHeader:BaseBlock
|
|
||||||
{
|
|
||||||
byte UnpVer;
|
|
||||||
byte Method;
|
|
||||||
byte AVVer;
|
|
||||||
uint AVInfoCRC;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
struct SignHeader:BaseBlock
|
|
||||||
{
|
|
||||||
uint CreationTime;
|
|
||||||
ushort ArcNameSize;
|
|
||||||
ushort UserNameSize;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
struct UnixOwnersHeader:SubBlockHeader
|
|
||||||
{
|
|
||||||
ushort OwnerNameSize;
|
|
||||||
ushort GroupNameSize;
|
|
||||||
/* dummy */
|
|
||||||
char OwnerName[NM];
|
|
||||||
char GroupName[NM];
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
struct EAHeader:SubBlockHeader
|
|
||||||
{
|
|
||||||
uint UnpSize;
|
|
||||||
byte UnpVer;
|
|
||||||
byte Method;
|
|
||||||
uint EACRC;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
struct StreamHeader:SubBlockHeader
|
|
||||||
{
|
|
||||||
uint UnpSize;
|
|
||||||
byte UnpVer;
|
|
||||||
byte Method;
|
|
||||||
uint StreamCRC;
|
|
||||||
ushort StreamNameSize;
|
|
||||||
/* dummy */
|
|
||||||
byte StreamName[NM];
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
struct MacFInfoHeader:SubBlockHeader
|
|
||||||
{
|
|
||||||
uint fileType;
|
|
||||||
uint fileCreator;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
|
@ -1,6 +0,0 @@
|
|||||||
#ifndef _RAR_ISNT_
|
|
||||||
#define _RAR_ISNT_
|
|
||||||
|
|
||||||
int WinNT();
|
|
||||||
|
|
||||||
#endif
|
|
@ -1,6 +0,0 @@
|
|||||||
#ifndef _RAR_LIST_
|
|
||||||
#define _RAR_LIST_
|
|
||||||
|
|
||||||
void ListArchive(CommandData *Cmd);
|
|
||||||
|
|
||||||
#endif
|
|
@ -1,354 +0,0 @@
|
|||||||
#define MYesNo "_Yes_No"
|
|
||||||
#define MYesNoAll "_Yes_No_All"
|
|
||||||
#define MYesNoAllQ "_Yes_No_All_nEver_Quit"
|
|
||||||
#define MYesNoAllRenQ "_Yes_No_All_nEver_Rename_Quit"
|
|
||||||
#define MContinueQuit "_Continue_Quit"
|
|
||||||
#define MRetryAbort "_Retry_Abort"
|
|
||||||
#define MCopyright "\nRAR %s Copyright (c) 1993-%d Alexander Roshal %d %s %d"
|
|
||||||
#define MRegTo "\nRegistered to %s\n"
|
|
||||||
#define MShare "\nShareware version Type RAR -? for help\n"
|
|
||||||
#define MUCopyright "\nUNRAR %s freeware Copyright (c) 1993-%d Alexander Roshal\n"
|
|
||||||
#define MBeta "beta"
|
|
||||||
#define MMonthJan "Jan"
|
|
||||||
#define MMonthFeb "Feb"
|
|
||||||
#define MMonthMar "Mar"
|
|
||||||
#define MMonthApr "Apr"
|
|
||||||
#define MMonthMay "May"
|
|
||||||
#define MMonthJun "Jun"
|
|
||||||
#define MMonthJul "Jul"
|
|
||||||
#define MMonthAug "Aug"
|
|
||||||
#define MMonthSep "Sep"
|
|
||||||
#define MMonthOct "Oct"
|
|
||||||
#define MMonthNov "Nov"
|
|
||||||
#define MMonthDec "Dec"
|
|
||||||
#define MRARTitle1 "\nUsage: rar <command> -<switch 1> -<switch N> <archive> <files...>"
|
|
||||||
#define MUNRARTitle1 "\nUsage: unrar <command> -<switch 1> -<switch N> <archive> <files...>"
|
|
||||||
#define MRARTitle2 "\n <@listfiles...> <path_to_extract\\>"
|
|
||||||
#define MCHelpCmd "\n\n<Commands>"
|
|
||||||
#define MCHelpCmdA "\n a Add files to archive"
|
|
||||||
#define MCHelpCmdC "\n c Add archive comment"
|
|
||||||
#define MCHelpCmdCF "\n cf Add files comment"
|
|
||||||
#define MCHelpCmdCH "\n ch Change archive parameters"
|
|
||||||
#define MCHelpCmdCW "\n cw Write archive comment to file"
|
|
||||||
#define MCHelpCmdD "\n d Delete files from archive"
|
|
||||||
#define MCHelpCmdE "\n e Extract files to current directory"
|
|
||||||
#define MCHelpCmdF "\n f Freshen files in archive"
|
|
||||||
#define MCHelpCmdI "\n i[par]=<str> Find string in archives"
|
|
||||||
#define MCHelpCmdK "\n k Lock archive"
|
|
||||||
#define MCHelpCmdL "\n l[t,b] List archive [technical, bare]"
|
|
||||||
#define MCHelpCmdM "\n m[f] Move to archive [files only]"
|
|
||||||
#define MCHelpCmdP "\n p Print file to stdout"
|
|
||||||
#define MCHelpCmdR "\n r Repair archive"
|
|
||||||
#define MCHelpCmdRC "\n rc Reconstruct missing volumes"
|
|
||||||
#define MCHelpCmdRN "\n rn Rename archived files"
|
|
||||||
#define MCHelpCmdRR "\n rr[N] Add data recovery record"
|
|
||||||
#define MCHelpCmdRV "\n rv[N] Create recovery volumes"
|
|
||||||
#define MCHelpCmdS "\n s[name|-] Convert archive to or from SFX"
|
|
||||||
#define MCHelpCmdT "\n t Test archive files"
|
|
||||||
#define MCHelpCmdU "\n u Update files in archive"
|
|
||||||
#define MCHelpCmdV "\n v[t,b] Verbosely list archive [technical,bare]"
|
|
||||||
#define MCHelpCmdX "\n x Extract files with full path"
|
|
||||||
#define MCHelpSw "\n\n<Switches>"
|
|
||||||
#define MCHelpSwm "\n - Stop switches scanning"
|
|
||||||
#define MCHelpSwAC "\n ac Clear Archive attribute after compression or extraction"
|
|
||||||
#define MCHelpSwAD "\n ad Append archive name to destination path"
|
|
||||||
#define MCHelpSwAG "\n ag[format] Generate archive name using the current date"
|
|
||||||
#define MCHelpSwAI "\n ai Ignore file attributes"
|
|
||||||
#define MCHelpSwAO "\n ao Add files with Archive attribute set"
|
|
||||||
#define MCHelpSwAP "\n ap<path> Set path inside archive"
|
|
||||||
#define MCHelpSwAS "\n as Synchronize archive contents"
|
|
||||||
#define MCHelpSwAV "\n av Put authenticity verification (registered versions only)"
|
|
||||||
#define MCHelpSwAVm "\n av- Disable authenticity verification check"
|
|
||||||
#define MCHelpSwCm "\n c- Disable comments show"
|
|
||||||
#define MCHelpSwCFGm "\n cfg- Disable read configuration"
|
|
||||||
#define MCHelpSwCL "\n cl Convert names to lower case"
|
|
||||||
#define MCHelpSwCU "\n cu Convert names to upper case"
|
|
||||||
#define MCHelpSwDF "\n df Delete files after archiving"
|
|
||||||
#define MCHelpSwDH "\n dh Open shared files"
|
|
||||||
#define MCHelpSwDR "\n dr Delete files to Recycle Bin"
|
|
||||||
#define MCHelpSwDS "\n ds Disable name sort for solid archive"
|
|
||||||
#define MCHelpSwDW "\n dw Wipe files after archiving"
|
|
||||||
#define MCHelpSwEa "\n e[+]<attr> Set file exclude and include attributes"
|
|
||||||
#define MCHelpSwED "\n ed Do not add empty directories"
|
|
||||||
#define MCHelpSwEE "\n ee Do not save and extract extended attributes"
|
|
||||||
#define MCHelpSwEN "\n en Do not put 'end of archive' block"
|
|
||||||
#define MCHelpSwEP "\n ep Exclude paths from names"
|
|
||||||
#define MCHelpSwEP1 "\n ep1 Exclude base directory from names"
|
|
||||||
#define MCHelpSwEP2 "\n ep2 Expand paths to full"
|
|
||||||
#define MCHelpSwEP3 "\n ep3 Expand paths to full including the drive letter"
|
|
||||||
#define MCHelpSwF "\n f Freshen files"
|
|
||||||
#define MCHelpSwHP "\n hp[password] Encrypt both file data and headers"
|
|
||||||
#define MCHelpSwIDP "\n id[c,d,p,q] Disable messages"
|
|
||||||
#define MCHelpSwIEML "\n ieml[addr] Send archive by email"
|
|
||||||
#define MCHelpSwIERR "\n ierr Send all messages to stderr"
|
|
||||||
#define MCHelpSwILOG "\n ilog[name] Log errors to file (registered versions only)"
|
|
||||||
#define MCHelpSwINUL "\n inul Disable all messages"
|
|
||||||
#define MCHelpSwIOFF "\n ioff Turn PC off after completing an operation"
|
|
||||||
#define MCHelpSwISND "\n isnd Enable sound"
|
|
||||||
#define MCHelpSwK "\n k Lock archive"
|
|
||||||
#define MCHelpSwKB "\n kb Keep broken extracted files"
|
|
||||||
#define MCHelpSwMn "\n m<0..5> Set compression level (0-store...3-default...5-maximal)"
|
|
||||||
#define MCHelpSwMC "\n mc<par> Set advanced compression parameters"
|
|
||||||
#define MCHelpSwMD "\n md<size> Dictionary size in KB (64,128,256,512,1024,2048,4096 or A-G)"
|
|
||||||
#define MCHelpSwMS "\n ms[ext;ext] Specify file types to store"
|
|
||||||
#define MCHelpSwMT "\n mt<threads> Set the number of threads"
|
|
||||||
#define MCHelpSwN "\n n<file> Include only specified file"
|
|
||||||
#define MCHelpSwNa "\n n@ Read file names to include from stdin"
|
|
||||||
#define MCHelpSwNal "\n n@<list> Include files listed in specified list file"
|
|
||||||
#define MCHelpSwO "\n o[+|-] Set the overwrite mode"
|
|
||||||
#define MCHelpSwOC "\n oc Set NTFS Compressed attribute"
|
|
||||||
#define MCHelpSwOL "\n ol Save symbolic links as the link instead of the file"
|
|
||||||
#define MCHelpSwOR "\n or Rename files automatically"
|
|
||||||
#define MCHelpSwOS "\n os Save NTFS streams"
|
|
||||||
#define MCHelpSwOW "\n ow Save or restore file owner and group"
|
|
||||||
#define MCHelpSwP "\n p[password] Set password"
|
|
||||||
#define MCHelpSwPm "\n p- Do not query password"
|
|
||||||
#define MCHelpSwR "\n r Recurse subdirectories"
|
|
||||||
#define MCHelpSwRm "\n r- Disable recursion"
|
|
||||||
#define MCHelpSwR0 "\n r0 Recurse subdirectories for wildcard names only"
|
|
||||||
#define MCHelpSwRI "\n ri<P>[:<S>] Set priority (0-default,1-min..15-max) and sleep time in ms"
|
|
||||||
#define MCHelpSwRR "\n rr[N] Add data recovery record"
|
|
||||||
#define MCHelpSwRV "\n rv[N] Create recovery volumes"
|
|
||||||
#define MCHelpSwS "\n s[<N>,v[-],e] Create solid archive"
|
|
||||||
#define MCHelpSwSm "\n s- Disable solid archiving"
|
|
||||||
#define MCHelpSwSC "\n sc<chr>[obj] Specify the character set"
|
|
||||||
#define MCHelpSwSFX "\n sfx[name] Create SFX archive"
|
|
||||||
#define MCHelpSwSI "\n si[name] Read data from standard input (stdin)"
|
|
||||||
#define MCHelpSwSL "\n sl<size> Process files with size less than specified"
|
|
||||||
#define MCHelpSwSM "\n sm<size> Process files with size more than specified"
|
|
||||||
#define MCHelpSwT "\n t Test files after archiving"
|
|
||||||
#define MCHelpSwTK "\n tk Keep original archive time"
|
|
||||||
#define MCHelpSwTL "\n tl Set archive time to latest file"
|
|
||||||
#define MCHelpSwTN "\n tn<time> Process files newer than <time>"
|
|
||||||
#define MCHelpSwTO "\n to<time> Process files older than <time>"
|
|
||||||
#define MCHelpSwTA "\n ta<date> Process files modified after <date> in YYYYMMDDHHMMSS format"
|
|
||||||
#define MCHelpSwTB "\n tb<date> Process files modified before <date> in YYYYMMDDHHMMSS format"
|
|
||||||
#define MCHelpSwTS "\n ts<m,c,a>[N] Save or restore file time (modification, creation, access)"
|
|
||||||
#define MCHelpSwU "\n u Update files"
|
|
||||||
#define MCHelpSwV "\n v Create volumes with size autodetection or list all volumes"
|
|
||||||
#define MCHelpSwVUnr "\n v List all volumes"
|
|
||||||
#define MCHelpSwVn "\n v<size>[k,b] Create volumes with size=<size>*1000 [*1024, *1]"
|
|
||||||
#define MCHelpSwVD "\n vd Erase disk contents before creating volume"
|
|
||||||
#define MCHelpSwVER "\n ver[n] File version control"
|
|
||||||
#define MCHelpSwVN "\n vn Use the old style volume naming scheme"
|
|
||||||
#define MCHelpSwVP "\n vp Pause before each volume"
|
|
||||||
#define MCHelpSwW "\n w<path> Assign work directory"
|
|
||||||
#define MCHelpSwX "\n x<file> Exclude specified file"
|
|
||||||
#define MCHelpSwXa "\n x@ Read file names to exclude from stdin"
|
|
||||||
#define MCHelpSwXal "\n x@<list> Exclude files listed in specified list file"
|
|
||||||
#define MCHelpSwY "\n y Assume Yes on all queries"
|
|
||||||
#define MCHelpSwZ "\n z[file] Read archive comment from file"
|
|
||||||
#define MBadArc "\nERROR: Bad archive %s\n"
|
|
||||||
#define MAskPsw "Enter password (will not be echoed)"
|
|
||||||
#define MAskPswEcho "Enter password"
|
|
||||||
#define MReAskPsw "\nReenter password: "
|
|
||||||
#define MFor " for "
|
|
||||||
#define MNotMatchPsw "\nERROR: Passwords do not match\n"
|
|
||||||
#define MErrWrite "Write error in the file %s"
|
|
||||||
#define MErrRead "Read error in the file %s"
|
|
||||||
#define MErrSeek "Seek error in the file %s"
|
|
||||||
#define MErrFClose "Cannot close the file %s"
|
|
||||||
#define MErrOutMem "Not enough memory"
|
|
||||||
#define MErrBrokenArc "Corrupt archive - use 'Repair' command"
|
|
||||||
#define MProgAborted "Program aborted"
|
|
||||||
#define MErrRename "\nCannot rename %s to %s"
|
|
||||||
#define MAbsNextVol "\nCannot find volume %s"
|
|
||||||
#define MBreak "\nUser break\n"
|
|
||||||
#define MAskCreatVol "\nCreate next volume ?"
|
|
||||||
#define MAskNextDisk "\nDisk full. Insert next"
|
|
||||||
#define MCreatVol "\n\nCreating %sarchive %s\n"
|
|
||||||
#define MAskNextVol "\nInsert disk with %s"
|
|
||||||
#define MTestVol "\n\nTesting archive %s\n"
|
|
||||||
#define MExtrVol "\n\nExtracting from %s\n"
|
|
||||||
#define MConverting "\nConverting %s"
|
|
||||||
#define MCvtToSFX "\nConvert archives to SFX"
|
|
||||||
#define MCvtFromSFX "\nRemoving SFX module"
|
|
||||||
#define MNotSFX "\n%s is not SFX archive"
|
|
||||||
#define MNotRAR "\n%s is not RAR archive"
|
|
||||||
#define MNotFirstVol "\n%s is not the first volume"
|
|
||||||
#define MCvtOldFormat "\n%s - cannot convert to SFX archive with old format"
|
|
||||||
#define MCannotCreate "\nCannot create %s"
|
|
||||||
#define MCannotOpen "\nCannot open %s"
|
|
||||||
#define MUnknownMeth "\nUnknown method in %s"
|
|
||||||
#define MVerRequired "\nYou need RAR %d.%d to unpack it"
|
|
||||||
#define MOk " OK"
|
|
||||||
#define MDone "\nDone"
|
|
||||||
#define MLockingArc "\nLocking archive"
|
|
||||||
#define MNotMdfOld "\n\nERROR: Cannot modify old format archive"
|
|
||||||
#define MNotMdfLock "\n\nERROR: Locked archive"
|
|
||||||
#define MNotMdfVol "\n\nERROR: Cannot modify volume"
|
|
||||||
#define MVerifyAV "\nVerifying authenticity information ... "
|
|
||||||
#define MFailedAV " Failed\n"
|
|
||||||
#define MStrAV1 "\n\nArchive %s"
|
|
||||||
#define MStrAV2 "\ncreated at %s"
|
|
||||||
#define MStrAV3 "\nby %s\n"
|
|
||||||
#define MLogFailedAV "Invalid authenticity information"
|
|
||||||
#define MAddingAV "\nAdding authenticity verification "
|
|
||||||
#define MAVOldStyle "\n\nOld style authenticity information"
|
|
||||||
#define MPackAskReg "\nEvaluation copy. Please register.\n"
|
|
||||||
#define MCreateArchive "\nCreating %sarchive %s\n"
|
|
||||||
#define MUpdateArchive "\nUpdating %sarchive %s\n"
|
|
||||||
#define MAddSolid "solid "
|
|
||||||
#define MAddFile "\nAdding %-58s "
|
|
||||||
#define MUpdFile "\nUpdating %-58s "
|
|
||||||
#define MAddPoints "\n... %-58s "
|
|
||||||
#define MCannotUpdPswSolid "\nERROR: Cannot update solid archives with password\n"
|
|
||||||
#define MMoveDelFiles "\n\nDeleting files %s..."
|
|
||||||
#define MMoveDelDirs "and directories"
|
|
||||||
#define MMoveDelFile "\nDeleting %-30s"
|
|
||||||
#define MMoveDeleted " deleted"
|
|
||||||
#define MMoveNotDeleted " NOT DELETED"
|
|
||||||
#define MClearAttrib "\n\nClearing attributes..."
|
|
||||||
#define MMoveDelDir "\nDeleting directory %-30s"
|
|
||||||
#define MWarErrFOpen "\nWARNING: Cannot open %d %s"
|
|
||||||
#define MErrOpenFiles "files"
|
|
||||||
#define MErrOpenFile "file"
|
|
||||||
#define MAddNoFiles "\nWARNING: No files"
|
|
||||||
#define MMdfEncrSol "\n%s: encrypted"
|
|
||||||
#define MCannotMdfEncrSol "\nCannot modify solid archive containing encrypted files"
|
|
||||||
#define MAddAnalyze "\nAnalyzing archived files: "
|
|
||||||
#define MRepacking "\nRepacking archived files: "
|
|
||||||
#define MCRCFailed "\n%-20s - CRC failed"
|
|
||||||
#define MExtrTest "\n\nTesting archive %s\n"
|
|
||||||
#define MExtracting "\n\nExtracting from %s\n"
|
|
||||||
#define MUseCurPsw "\n%s - use current password ?"
|
|
||||||
#define MCreatDir "\nCreating %-56s"
|
|
||||||
#define MExtrSkipFile "\nSkipping %-56s"
|
|
||||||
#define MExtrTestFile "\nTesting %-56s"
|
|
||||||
#define MExtrFile "\nExtracting %-56s"
|
|
||||||
#define MExtrPoints "\n... %-56s"
|
|
||||||
#define MExtrErrMkDir "\nCannot create directory %s"
|
|
||||||
#define MExtrPrinting "\n------ Printing %s\n\n"
|
|
||||||
#define MEncrBadCRC "\nEncrypted file: CRC failed in %s (password incorrect ?)"
|
|
||||||
#define MExtrNoFiles "\nNo files to extract"
|
|
||||||
#define MExtrAllOk "\nAll OK"
|
|
||||||
#define MExtrTotalErr "\nTotal errors: %ld"
|
|
||||||
#define MFileExists "\n\n%s already exists. Overwrite it ?"
|
|
||||||
#define MAskOverwrite "\nOverwrite %s ?"
|
|
||||||
#define MAskNewName "\nEnter new name: "
|
|
||||||
#define MLogMainHead "\nThe archive header is corrupt"
|
|
||||||
#define MLogFileHead "\n%s - the file header is corrupt"
|
|
||||||
#define MLogCommHead "\nThe comment header is corrupt\n"
|
|
||||||
#define MLogProtectHead "The data recovery header is corrupt"
|
|
||||||
#define MReadStdinCmt "\nReading comment from stdin\n"
|
|
||||||
#define MReadCommFrom "\nReading comment from %s"
|
|
||||||
#define MDelComment "\nDeleting comment from %s"
|
|
||||||
#define MAddComment "\nAdding comment to %s"
|
|
||||||
#define MFCommAdd "\nAdding file comments"
|
|
||||||
#define MAskFComm "\n\nReading comment for %s : %s from stdin\n"
|
|
||||||
#define MLogCommBrk "\nThe archive comment is corrupt"
|
|
||||||
#define MCommAskCont "\nPress 'Enter' to continue or 'Q' to quit:"
|
|
||||||
#define MLogBrokFCmt "\nThe file comment is corrupt"
|
|
||||||
#define MWriteCommTo "\nWrite comment to %s"
|
|
||||||
#define MCommNotPres "\nComment is not present"
|
|
||||||
#define MDelFrom "\nDeleting from %s"
|
|
||||||
#define MDeleting "\nDeleting %s"
|
|
||||||
#define MEraseArc "\nErasing empty archive %s"
|
|
||||||
#define MNoDelFiles "\nNo files to delete"
|
|
||||||
#define MLogTitle "\n\n-------- %2d %s %d, archive %s\n"
|
|
||||||
#define MPathTooLong "\nERROR: Path too long\n"
|
|
||||||
#define MListSolid "Solid "
|
|
||||||
#define MListSFX "SFX "
|
|
||||||
#define MListVol1 "volume"
|
|
||||||
#define MListVol2 "Volume"
|
|
||||||
#define MListArc1 "archive"
|
|
||||||
#define MListArc2 "Archive"
|
|
||||||
#define MListRecRec "\nRecovery record is present\n"
|
|
||||||
#define MListLock "\nLock is present\n"
|
|
||||||
#define MListPathComm "\nPathname/Comment\n "
|
|
||||||
#define MListName "\n Name "
|
|
||||||
#define MListTitle " Size Packed Ratio Date Time Attr CRC Meth Ver\n"
|
|
||||||
#define MListTechTitle " Host OS Solid Old\n"
|
|
||||||
#define MListEAHead "\n OS/2 extended attributes"
|
|
||||||
#define MListUOHead "\n Unix Owner/Group data: %-14s %-14s"
|
|
||||||
#define MListBeEAHead "\n BeOS extended attributes"
|
|
||||||
#define MListNTACLHead "\n NTFS security data"
|
|
||||||
#define MListStrmHead "\n NTFS stream: %s"
|
|
||||||
#define MListUnkHead "\n Unknown subheader type: 0x%04x"
|
|
||||||
#define MFileComment "\nComment: "
|
|
||||||
#define MYes "Yes"
|
|
||||||
#define MNo "No"
|
|
||||||
#define MListNoFiles " 0 files\n"
|
|
||||||
#define MRprReconstr "\nReconstructing %s"
|
|
||||||
#define MRprBuild "\nBuilding %s"
|
|
||||||
#define MRprOldFormat "\nCannot repair archive with old format"
|
|
||||||
#define MRprFind "\nFound %s"
|
|
||||||
#define MRprAskIsSol "\nThe archive header is corrupt. Mark archive as solid ?"
|
|
||||||
#define MRprNoFiles "\nNo files found"
|
|
||||||
#define MRprSuspEntry "\n\nSuspicious entry %s"
|
|
||||||
#define MRprDir "\nDirectory"
|
|
||||||
#define MRprSuspSize "\nSize %ld Packed %ld"
|
|
||||||
#define MRprSuspAdd "\nAdd it to archive ?"
|
|
||||||
#define MLogUnexpEOF "\nUnexpected end of archive"
|
|
||||||
#define MRepAskReconst "\nReconstruct archive structure ?"
|
|
||||||
#define MRecScanning "\nScanning..."
|
|
||||||
#define MRecRNotFound "\nData recovery record not found"
|
|
||||||
#define MRecRFound "\nData recovery record found"
|
|
||||||
#define MRecSecDamage "\nSector %ld (offsets %lX...%lX) damaged"
|
|
||||||
#define MRecCorrected " - data recovered"
|
|
||||||
#define MRecFailed " - cannot recover data"
|
|
||||||
#define MAddRecRec "\nAdding data recovery record"
|
|
||||||
#define MEraseForVolume "\n\nErasing contents of drive %c:\n"
|
|
||||||
#define MGetOwnersError "\nWARNING: Cannot get %s owner and group\n"
|
|
||||||
#define MErrGetOwnerID "\nWARNING: Cannot get owner %s ID\n"
|
|
||||||
#define MErrGetGroupID "\nWARNING: Cannot get group %s ID\n"
|
|
||||||
#define MOwnersBroken "\nERROR: %s group and owner data are corrupt\n"
|
|
||||||
#define MSetOwnersError "\nWARNING: Cannot set %s owner and group\n"
|
|
||||||
#define MErrLnkRead "\nWARNING: Cannot read symbolic link %s"
|
|
||||||
#define MErrCreateLnk "\nWARNING: Cannot create link %s"
|
|
||||||
#define MSymLinkExists "\nWARNING: Symbolic link %s already exists"
|
|
||||||
#define MAskRetryCreate "\nCannot create %s. Retry ?"
|
|
||||||
#define MListMACHead1 "\n MacOS file type: %c%c%c%c ; "
|
|
||||||
#define MListMACHead2 "file creator: %c%c%c%c\n"
|
|
||||||
#define MDataBadCRC "\n%-20s : packed data CRC failed in volume %s"
|
|
||||||
#define MFileRO "\n%s is read-only"
|
|
||||||
#define MACLGetError "\nWARNING: Cannot get %s security data\n"
|
|
||||||
#define MACLSetError "\nWARNING: Cannot set %s security data\n"
|
|
||||||
#define MACLBroken "\nERROR: %s security data are corrupt\n"
|
|
||||||
#define MACLUnknown "\nWARNING: Unknown format of %s security data\n"
|
|
||||||
#define MStreamBroken "\nERROR: %s stream data are corrupt\n"
|
|
||||||
#define MStreamUnknown "\nWARNING: Unknown format of %s stream data\n"
|
|
||||||
#define MInvalidName "\nERROR: Invalid file name %s"
|
|
||||||
#define MEABroken "\nERROR: %s extended attributes are corrupt\n"
|
|
||||||
#define MEAUnknHeader "\nWARNING: %s - unknown format of extended attributes\n"
|
|
||||||
#define MCannotSetEA "\nWARNING: cannot set extended attributes to %s\n"
|
|
||||||
#define MCannotGetEA "\nERROR: Cannot get extended attributes of %s\n"
|
|
||||||
#define MShowEA " (+EA)"
|
|
||||||
#define MSkipEA "\n...skipping extended attributes"
|
|
||||||
#define MProcessArc "\n\nProcessing archive %s"
|
|
||||||
#define MSyncScanError "\nFile search errors, cannot synchronize archive"
|
|
||||||
#define MCorrectingName "\nWARNING: Attempting to correct the invalid file name"
|
|
||||||
#define MUnpCannotMerge "\nWARNING: You need to start extraction from a previous volume to unpack %s"
|
|
||||||
#define MUnknownOption "\nERROR: Unknown option: %s"
|
|
||||||
#define MSubHeadCorrupt "\nERROR: Corrupt data header found, ignored"
|
|
||||||
#define MSubHeadUnknown "\nWARNING: Unknown data header format, ignored"
|
|
||||||
#define MSubHeadDataCRC "\nERROR: Corrupt %s data block"
|
|
||||||
#define MSubHeadType "\nData header type: %s"
|
|
||||||
#define MScanError "\nCannot read contents of %s"
|
|
||||||
#define MNotVolume "\n%s is not volume"
|
|
||||||
#define MRecVolDiffSets "\nERROR: %s and %s belong to different sets"
|
|
||||||
#define MRecVolMissing "\n%d volumes missing"
|
|
||||||
#define MRecVolFound "\n%d recovery volumes found"
|
|
||||||
#define MRecVolAllExist "\nNothing to reconstruct"
|
|
||||||
#define MRecVolCannotFix "\nReconstruction impossible"
|
|
||||||
#define MReconstructing "\nReconstructing..."
|
|
||||||
#define MCreating "\nCreating %s"
|
|
||||||
#define MRenaming "\nRenaming %s to %s"
|
|
||||||
#define MNTFSRequired "\nWrite error: only NTFS file system supports files larger than 4 GB"
|
|
||||||
#define MErrChangeAttr "\nWARNING: Cannot change attributes of %s"
|
|
||||||
#define MWrongSFXVer "\nERROR: default SFX module does not support RAR %d.%d archives"
|
|
||||||
#define MCannotEncName "\nCannot encrypt archive already contained encrypted files"
|
|
||||||
#define MCannotEmail "\nCannot email the file %s"
|
|
||||||
#define MCopyrightS "\nRAR SFX archive"
|
|
||||||
#define MSHelpCmd "\n\n<Commands>"
|
|
||||||
#define MSHelpCmdE "\n -x Extract from archive (default)"
|
|
||||||
#define MSHelpCmdT "\n -t Test archive files"
|
|
||||||
#define MSHelpCmdV "\n -v Verbosely list contents of archive"
|
|
||||||
#define MMaxPathLimit "\nTotal path and file name length must not exceed %d characters"
|
|
||||||
#define MRecVolLimit "\nTotal number of usual and recovery volumes must not exceed 255"
|
|
||||||
#define MVolumeNumber "volume %d"
|
|
||||||
#define MCannotDelete "\nCannot delete %s"
|
|
||||||
#define MCalcCRC "\nCalculating the control sum"
|
|
||||||
#define MTooLargeSFXArc "\nWARNING: Too large SFX archive. Windows cannot run the executable file exceeding 4 GB."
|
|
||||||
#define MCalcCRCAllVol "\nCalculating control sums of all volumes."
|
|
||||||
#define MNotEnoughDisk "\nERROR: Not enough disk space for %s."
|
|
@ -1,18 +0,0 @@
|
|||||||
#ifndef _RAR_LOG_
|
|
||||||
#define _RAR_LOG_
|
|
||||||
|
|
||||||
void InitLogOptions(char *LogName);
|
|
||||||
|
|
||||||
#ifndef SILENT
|
|
||||||
void Log(const char *ArcName,const char *Format,...);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef SILENT
|
|
||||||
#ifdef __GNUC__
|
|
||||||
#define Log(args...)
|
|
||||||
#else
|
|
||||||
inline void Log(const char *a,const char *b,const char *c=NULL,const char *d=NULL) {}
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
@ -1,27 +0,0 @@
|
|||||||
#ifndef _RAR_MATCH_
|
|
||||||
#define _RAR_MATCH_
|
|
||||||
|
|
||||||
enum {
|
|
||||||
MATCH_NAMES, // Compare names only.
|
|
||||||
|
|
||||||
MATCH_PATH, // Compares names and paths. Both must match exactly.
|
|
||||||
// Unlike MATCH_EXACTPATH, also matches names if
|
|
||||||
// mask contains path only and this path is a part
|
|
||||||
// of name path.
|
|
||||||
|
|
||||||
MATCH_EXACTPATH, // Compares names and paths. Both must match exactly.
|
|
||||||
|
|
||||||
MATCH_SUBPATH, // Names must be the same, but path in mask is allowed
|
|
||||||
// to be only a part of name path.
|
|
||||||
|
|
||||||
MATCH_WILDSUBPATH // Works as MATCH_SUBPATH if mask contains wildcards
|
|
||||||
// and as MATCH_PATH otherwise.
|
|
||||||
};
|
|
||||||
|
|
||||||
#define MATCH_MODEMASK 0x0000ffff
|
|
||||||
#define MATCH_FORCECASESENSITIVE 0x80000000
|
|
||||||
|
|
||||||
bool CmpName(char *Wildcard,char *Name,int CmpPath);
|
|
||||||
bool CmpName(wchar *Wildcard,wchar *Name,int CmpPath);
|
|
||||||
|
|
||||||
#endif
|
|
@ -1,132 +0,0 @@
|
|||||||
#ifndef _RAR_PPMMODEL_
|
|
||||||
#define _RAR_PPMMODEL_
|
|
||||||
|
|
||||||
#include "coder.hpp"
|
|
||||||
#include "suballoc.hpp"
|
|
||||||
|
|
||||||
const int MAX_O=64; /* maximum allowed model order */
|
|
||||||
|
|
||||||
const int INT_BITS=7, PERIOD_BITS=7, TOT_BITS=INT_BITS+PERIOD_BITS,
|
|
||||||
INTERVAL=1 << INT_BITS, BIN_SCALE=1 << TOT_BITS, MAX_FREQ=124;
|
|
||||||
|
|
||||||
#ifndef STRICT_ALIGNMENT_REQUIRED
|
|
||||||
#pragma pack(1)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
struct SEE2_CONTEXT
|
|
||||||
{ // SEE-contexts for PPM-contexts with masked symbols
|
|
||||||
ushort Summ;
|
|
||||||
byte Shift, Count;
|
|
||||||
void init(int InitVal)
|
|
||||||
{
|
|
||||||
Summ=InitVal << (Shift=PERIOD_BITS-4);
|
|
||||||
Count=4;
|
|
||||||
}
|
|
||||||
uint getMean()
|
|
||||||
{
|
|
||||||
uint RetVal=SHORT16(Summ) >> Shift;
|
|
||||||
Summ -= RetVal;
|
|
||||||
return RetVal+(RetVal == 0);
|
|
||||||
}
|
|
||||||
void update()
|
|
||||||
{
|
|
||||||
if (Shift < PERIOD_BITS && --Count == 0)
|
|
||||||
{
|
|
||||||
Summ += Summ;
|
|
||||||
Count=3 << Shift++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
class ModelPPM;
|
|
||||||
struct PPM_CONTEXT;
|
|
||||||
|
|
||||||
struct STATE
|
|
||||||
{
|
|
||||||
byte Symbol;
|
|
||||||
byte Freq;
|
|
||||||
PPM_CONTEXT* Successor;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct FreqData
|
|
||||||
{
|
|
||||||
ushort SummFreq;
|
|
||||||
STATE _PACK_ATTR * Stats;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct PPM_CONTEXT
|
|
||||||
{
|
|
||||||
ushort NumStats;
|
|
||||||
union
|
|
||||||
{
|
|
||||||
FreqData U;
|
|
||||||
STATE OneState;
|
|
||||||
};
|
|
||||||
|
|
||||||
PPM_CONTEXT* Suffix;
|
|
||||||
inline void encodeBinSymbol(ModelPPM *Model,int symbol); // MaxOrder:
|
|
||||||
inline void encodeSymbol1(ModelPPM *Model,int symbol); // ABCD context
|
|
||||||
inline void encodeSymbol2(ModelPPM *Model,int symbol); // BCD suffix
|
|
||||||
inline void decodeBinSymbol(ModelPPM *Model); // BCDE successor
|
|
||||||
inline bool decodeSymbol1(ModelPPM *Model); // other orders:
|
|
||||||
inline bool decodeSymbol2(ModelPPM *Model); // BCD context
|
|
||||||
inline void update1(ModelPPM *Model,STATE* p); // CD suffix
|
|
||||||
inline void update2(ModelPPM *Model,STATE* p); // BCDE successor
|
|
||||||
void rescale(ModelPPM *Model);
|
|
||||||
inline PPM_CONTEXT* createChild(ModelPPM *Model,STATE* pStats,STATE& FirstState);
|
|
||||||
inline SEE2_CONTEXT* makeEscFreq2(ModelPPM *Model,int Diff);
|
|
||||||
};
|
|
||||||
|
|
||||||
#ifndef STRICT_ALIGNMENT_REQUIRED
|
|
||||||
#ifdef _AIX
|
|
||||||
#pragma pack(pop)
|
|
||||||
#else
|
|
||||||
#pragma pack()
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
const uint UNIT_SIZE=Max(sizeof(PPM_CONTEXT),sizeof(RAR_MEM_BLK));
|
|
||||||
const uint FIXED_UNIT_SIZE=12;
|
|
||||||
|
|
||||||
/*
|
|
||||||
inline PPM_CONTEXT::PPM_CONTEXT(STATE* pStats,PPM_CONTEXT* ShorterContext):
|
|
||||||
NumStats(1), Suffix(ShorterContext) { pStats->Successor=this; }
|
|
||||||
inline PPM_CONTEXT::PPM_CONTEXT(): NumStats(0) {}
|
|
||||||
*/
|
|
||||||
|
|
||||||
template <class T>
|
|
||||||
inline void _PPMD_SWAP(T& t1,T& t2) { T tmp=t1; t1=t2; t2=tmp; }
|
|
||||||
|
|
||||||
|
|
||||||
class ModelPPM
|
|
||||||
{
|
|
||||||
private:
|
|
||||||
friend struct PPM_CONTEXT;
|
|
||||||
|
|
||||||
SEE2_CONTEXT SEE2Cont[25][16], DummySEE2Cont;
|
|
||||||
|
|
||||||
struct PPM_CONTEXT *MinContext, *MedContext, *MaxContext;
|
|
||||||
STATE* FoundState; // found next state transition
|
|
||||||
int NumMasked, InitEsc, OrderFall, MaxOrder, RunLength, InitRL;
|
|
||||||
byte CharMask[256], NS2Indx[256], NS2BSIndx[256], HB2Flag[256];
|
|
||||||
byte EscCount, PrevSuccess, HiBitsFlag;
|
|
||||||
ushort BinSumm[128][64]; // binary SEE-contexts
|
|
||||||
|
|
||||||
RangeCoder Coder;
|
|
||||||
SubAllocator SubAlloc;
|
|
||||||
|
|
||||||
void RestartModelRare();
|
|
||||||
void StartModelRare(int MaxOrder);
|
|
||||||
inline PPM_CONTEXT* CreateSuccessors(bool Skip,STATE* p1);
|
|
||||||
|
|
||||||
inline void UpdateModel();
|
|
||||||
inline void ClearMask();
|
|
||||||
public:
|
|
||||||
ModelPPM();
|
|
||||||
void CleanUp(); // reset PPM variables after data error
|
|
||||||
bool DecodeInit(Unpack *UnpackRead,int &EscChar);
|
|
||||||
int DecodeChar();
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif
|
|
@ -1,162 +0,0 @@
|
|||||||
#ifndef _RAR_OPTIONS_
|
|
||||||
#define _RAR_OPTIONS_
|
|
||||||
|
|
||||||
#define DEFAULT_RECOVERY -1
|
|
||||||
|
|
||||||
#define DEFAULT_RECVOLUMES -10
|
|
||||||
|
|
||||||
enum PATH_EXCL_MODE {
|
|
||||||
EXCL_NONE,EXCL_BASEPATH,EXCL_SKIPWHOLEPATH,EXCL_SAVEFULLPATH,
|
|
||||||
EXCL_SKIPABSPATH,EXCL_ABSPATH
|
|
||||||
};
|
|
||||||
|
|
||||||
enum {SOLID_NONE=0,SOLID_NORMAL=1,SOLID_COUNT=2,SOLID_FILEEXT=4,
|
|
||||||
SOLID_VOLUME_DEPENDENT=8,SOLID_VOLUME_INDEPENDENT=16};
|
|
||||||
|
|
||||||
enum {ARCTIME_NONE,ARCTIME_KEEP,ARCTIME_LATEST};
|
|
||||||
|
|
||||||
enum EXTTIME_MODE {
|
|
||||||
EXTTIME_NONE,EXTTIME_1S,EXTTIME_HIGH1,EXTTIME_HIGH2,EXTTIME_HIGH3
|
|
||||||
};
|
|
||||||
|
|
||||||
enum {NAMES_ORIGINALCASE,NAMES_UPPERCASE,NAMES_LOWERCASE};
|
|
||||||
|
|
||||||
enum MESSAGE_TYPE {MSG_STDOUT,MSG_STDERR,MSG_ERRONLY,MSG_NULL};
|
|
||||||
|
|
||||||
enum RECURSE_MODE
|
|
||||||
{
|
|
||||||
RECURSE_NONE=0, // no recurse switches
|
|
||||||
RECURSE_DISABLE, // switch -r-
|
|
||||||
RECURSE_ALWAYS, // switch -r
|
|
||||||
RECURSE_WILDCARDS, // switch -r0
|
|
||||||
};
|
|
||||||
|
|
||||||
enum OVERWRITE_MODE
|
|
||||||
{
|
|
||||||
OVERWRITE_DEFAULT=0, // ask for extraction, silently overwrite for archiving
|
|
||||||
OVERWRITE_ALL,
|
|
||||||
OVERWRITE_NONE,
|
|
||||||
OVERWRITE_AUTORENAME,
|
|
||||||
OVERWRITE_FORCE_ASK
|
|
||||||
};
|
|
||||||
|
|
||||||
enum RAR_CHARSET { RCH_DEFAULT=0,RCH_ANSI,RCH_OEM,RCH_UNICODE };
|
|
||||||
|
|
||||||
#define MAX_FILTERS 16
|
|
||||||
enum FilterState {FILTER_DEFAULT=0,FILTER_AUTO,FILTER_FORCE,FILTER_DISABLE};
|
|
||||||
|
|
||||||
|
|
||||||
struct FilterMode
|
|
||||||
{
|
|
||||||
FilterState State;
|
|
||||||
int Param1;
|
|
||||||
int Param2;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
class RAROptions
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
RAROptions();
|
|
||||||
~RAROptions();
|
|
||||||
void Init();
|
|
||||||
|
|
||||||
uint ExclFileAttr;
|
|
||||||
uint InclFileAttr;
|
|
||||||
bool InclAttrSet;
|
|
||||||
uint WinSize;
|
|
||||||
char TempPath[NM];
|
|
||||||
char SFXModule[NM];
|
|
||||||
char ExtrPath[NM];
|
|
||||||
wchar ExtrPathW[NM];
|
|
||||||
char CommentFile[NM];
|
|
||||||
RAR_CHARSET CommentCharset;
|
|
||||||
RAR_CHARSET FilelistCharset;
|
|
||||||
char ArcPath[NM];
|
|
||||||
wchar ArcPathW[NM];
|
|
||||||
char Password[MAXPASSWORD];
|
|
||||||
bool EncryptHeaders;
|
|
||||||
char LogName[NM];
|
|
||||||
MESSAGE_TYPE MsgStream;
|
|
||||||
bool Sound;
|
|
||||||
OVERWRITE_MODE Overwrite;
|
|
||||||
int Method;
|
|
||||||
int Recovery;
|
|
||||||
int RecVolNumber;
|
|
||||||
bool DisablePercentage;
|
|
||||||
bool DisableCopyright;
|
|
||||||
bool DisableDone;
|
|
||||||
int Solid;
|
|
||||||
int SolidCount;
|
|
||||||
bool ClearArc;
|
|
||||||
bool AddArcOnly;
|
|
||||||
bool AV;
|
|
||||||
bool DisableComment;
|
|
||||||
bool FreshFiles;
|
|
||||||
bool UpdateFiles;
|
|
||||||
PATH_EXCL_MODE ExclPath;
|
|
||||||
RECURSE_MODE Recurse;
|
|
||||||
int64 VolSize;
|
|
||||||
Array<int64> NextVolSizes;
|
|
||||||
uint CurVolNum;
|
|
||||||
bool AllYes;
|
|
||||||
bool DisableViewAV;
|
|
||||||
bool DisableSortSolid;
|
|
||||||
int ArcTime;
|
|
||||||
int ConvertNames;
|
|
||||||
bool ProcessOwners;
|
|
||||||
bool SaveLinks;
|
|
||||||
int Priority;
|
|
||||||
int SleepTime;
|
|
||||||
bool KeepBroken;
|
|
||||||
bool EraseDisk;
|
|
||||||
bool OpenShared;
|
|
||||||
bool DeleteFiles;
|
|
||||||
bool SyncFiles;
|
|
||||||
bool GenerateArcName;
|
|
||||||
char GenerateMask[80];
|
|
||||||
bool ProcessEA;
|
|
||||||
bool SaveStreams;
|
|
||||||
bool SetCompressedAttr;
|
|
||||||
bool IgnoreGeneralAttr;
|
|
||||||
RarTime FileTimeBefore;
|
|
||||||
RarTime FileTimeAfter;
|
|
||||||
int64 FileSizeLess;
|
|
||||||
int64 FileSizeMore;
|
|
||||||
bool OldNumbering;
|
|
||||||
bool Lock;
|
|
||||||
bool Test;
|
|
||||||
bool VolumePause;
|
|
||||||
FilterMode FilterModes[MAX_FILTERS];
|
|
||||||
char EmailTo[NM];
|
|
||||||
uint VersionControl;
|
|
||||||
bool NoEndBlock;
|
|
||||||
bool AppendArcNameToPath;
|
|
||||||
bool Shutdown;
|
|
||||||
EXTTIME_MODE xmtime;
|
|
||||||
EXTTIME_MODE xctime;
|
|
||||||
EXTTIME_MODE xatime;
|
|
||||||
EXTTIME_MODE xarctime;
|
|
||||||
char CompressStdin[NM];
|
|
||||||
|
|
||||||
#ifdef PACK_SMP
|
|
||||||
uint Threads;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef RARDLL
|
|
||||||
char DllDestName[NM];
|
|
||||||
wchar DllDestNameW[NM];
|
|
||||||
int DllOpMode;
|
|
||||||
int DllError;
|
|
||||||
LPARAM UserData;
|
|
||||||
UNRARCALLBACK Callback;
|
|
||||||
CHANGEVOLPROC ChangeVolProc;
|
|
||||||
PROCESSDATAPROC ProcessDataProc;
|
|
||||||
#endif
|
|
||||||
};
|
|
||||||
#endif
|
|
@ -1,259 +0,0 @@
|
|||||||
#ifndef _RAR_OS_
|
|
||||||
#define _RAR_OS_
|
|
||||||
|
|
||||||
#define FALSE 0
|
|
||||||
#define TRUE 1
|
|
||||||
|
|
||||||
#ifdef __EMX__
|
|
||||||
#define INCL_BASE
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(RARDLL) && !defined(SILENT)
|
|
||||||
#define SILENT
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(_WIN_32) || defined(_EMX)
|
|
||||||
#define ENABLE_BAD_ALLOC
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#if defined(_WIN_32) || defined(_EMX)
|
|
||||||
|
|
||||||
#define LITTLE_ENDIAN
|
|
||||||
#define NM 1024
|
|
||||||
|
|
||||||
#ifdef _WIN_32
|
|
||||||
|
|
||||||
#define STRICT
|
|
||||||
#undef WINVER
|
|
||||||
#undef _WIN32_WINNT
|
|
||||||
#define WINVER 0x0400
|
|
||||||
#define _WIN32_WINNT 0x0300
|
|
||||||
|
|
||||||
|
|
||||||
#define WIN32_LEAN_AND_MEAN
|
|
||||||
|
|
||||||
#include <windows.h>
|
|
||||||
#include <prsht.h>
|
|
||||||
|
|
||||||
#ifndef _WIN_CE
|
|
||||||
#include <shellapi.h>
|
|
||||||
#include <shlobj.h>
|
|
||||||
#include <winioctl.h>
|
|
||||||
|
|
||||||
|
|
||||||
#endif // _WIN_CE
|
|
||||||
|
|
||||||
|
|
||||||
#endif // _WIN_32
|
|
||||||
|
|
||||||
#ifndef _WIN_CE
|
|
||||||
#include <sys/types.h>
|
|
||||||
#include <sys/stat.h>
|
|
||||||
#include <dos.h>
|
|
||||||
#endif // _WIN_CE
|
|
||||||
|
|
||||||
#if !defined(_EMX) && !defined(_MSC_VER) && !defined(_WIN_CE)
|
|
||||||
#include <dir.h>
|
|
||||||
#endif
|
|
||||||
#ifdef _MSC_VER
|
|
||||||
#if _MSC_VER<1500
|
|
||||||
#define for if (0) ; else for
|
|
||||||
#endif
|
|
||||||
#ifndef _WIN_CE
|
|
||||||
#include <direct.h>
|
|
||||||
#endif
|
|
||||||
#else
|
|
||||||
#include <dirent.h>
|
|
||||||
#endif // _MSC_VER
|
|
||||||
|
|
||||||
#ifndef _WIN_CE
|
|
||||||
#include <share.h>
|
|
||||||
#endif // _WIN_CE
|
|
||||||
|
|
||||||
#if defined(ENABLE_BAD_ALLOC) && !defined(_WIN_CE)
|
|
||||||
#include <new.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef _EMX
|
|
||||||
#include <unistd.h>
|
|
||||||
#include <pwd.h>
|
|
||||||
#include <grp.h>
|
|
||||||
#include <errno.h>
|
|
||||||
#ifdef _DJGPP
|
|
||||||
#include <utime.h>
|
|
||||||
#else
|
|
||||||
#include <os2.h>
|
|
||||||
#include <sys/utime.h>
|
|
||||||
#include <emx/syscalls.h>
|
|
||||||
#endif
|
|
||||||
#else
|
|
||||||
#if defined(_MSC_VER) || defined(__MINGW32__)
|
|
||||||
#include <exception>
|
|
||||||
#else
|
|
||||||
#include <except.h>
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <stdarg.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <ctype.h>
|
|
||||||
#ifndef _WIN_CE
|
|
||||||
#include <fcntl.h>
|
|
||||||
#include <dos.h>
|
|
||||||
#include <io.h>
|
|
||||||
#include <time.h>
|
|
||||||
#include <signal.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
|
||||||
#ifdef _WIN_32
|
|
||||||
#pragma hdrstop
|
|
||||||
#endif // _WIN_32
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define ENABLE_ACCESS
|
|
||||||
|
|
||||||
#define DefConfigName "rar.ini"
|
|
||||||
#define DefLogName "rar.log"
|
|
||||||
|
|
||||||
|
|
||||||
#define PATHDIVIDER "\\"
|
|
||||||
#define PATHDIVIDERW L"\\"
|
|
||||||
#define CPATHDIVIDER '\\'
|
|
||||||
#define MASKALL "*"
|
|
||||||
#define MASKALLW L"*"
|
|
||||||
|
|
||||||
#define READBINARY "rb"
|
|
||||||
#define READTEXT "rt"
|
|
||||||
#define UPDATEBINARY "r+b"
|
|
||||||
#define CREATEBINARY "w+b"
|
|
||||||
#define APPENDTEXT "at"
|
|
||||||
|
|
||||||
#if defined(_WIN_32)
|
|
||||||
#ifdef _MSC_VER
|
|
||||||
#define _stdfunction __cdecl
|
|
||||||
#else
|
|
||||||
#define _stdfunction _USERENTRY
|
|
||||||
#endif
|
|
||||||
#else
|
|
||||||
#define _stdfunction
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef _UNIX
|
|
||||||
|
|
||||||
#define NM 1024
|
|
||||||
|
|
||||||
#ifdef _BEOS
|
|
||||||
#include <be/kernel/fs_info.h>
|
|
||||||
#include <be/kernel/fs_attr.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <unistd.h>
|
|
||||||
#include <sys/types.h>
|
|
||||||
#include <sys/stat.h>
|
|
||||||
#include <sys/file.h>
|
|
||||||
#if defined(__QNXNTO__)
|
|
||||||
#include <sys/param.h>
|
|
||||||
#endif
|
|
||||||
#if defined(__FreeBSD__) || defined (__NetBSD__) || defined (__OpenBSD__) || defined(__APPLE__)
|
|
||||||
#include <sys/param.h>
|
|
||||||
#include <sys/mount.h>
|
|
||||||
#else
|
|
||||||
#endif
|
|
||||||
#include <pwd.h>
|
|
||||||
#include <grp.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <stdarg.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <ctype.h>
|
|
||||||
#include <fcntl.h>
|
|
||||||
#include <errno.h>
|
|
||||||
#include <dirent.h>
|
|
||||||
#include <time.h>
|
|
||||||
#include <signal.h>
|
|
||||||
#include <utime.h>
|
|
||||||
#include <locale.h>
|
|
||||||
|
|
||||||
#define ENABLE_ACCESS
|
|
||||||
|
|
||||||
#define DefConfigName ".rarrc"
|
|
||||||
#define DefLogName ".rarlog"
|
|
||||||
|
|
||||||
|
|
||||||
#define PATHDIVIDER "/"
|
|
||||||
#define PATHDIVIDERW L"/"
|
|
||||||
#define CPATHDIVIDER '/'
|
|
||||||
#define MASKALL "*"
|
|
||||||
#define MASKALLW L"*"
|
|
||||||
|
|
||||||
#define READBINARY "r"
|
|
||||||
#define READTEXT "r"
|
|
||||||
#define UPDATEBINARY "r+"
|
|
||||||
#define CREATEBINARY "w+"
|
|
||||||
#define APPENDTEXT "a"
|
|
||||||
|
|
||||||
#define _stdfunction
|
|
||||||
|
|
||||||
#ifdef _APPLE
|
|
||||||
#if defined(__BIG_ENDIAN__) && !defined(BIG_ENDIAN)
|
|
||||||
#define BIG_ENDIAN
|
|
||||||
#undef LITTLE_ENDIAN
|
|
||||||
#endif
|
|
||||||
#if defined(__i386__) && !defined(LITTLE_ENDIAN)
|
|
||||||
#define LITTLE_ENDIAN
|
|
||||||
#undef BIG_ENDIAN
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(__sparc) || defined(sparc) || defined(__hpux)
|
|
||||||
#ifndef BIG_ENDIAN
|
|
||||||
#define BIG_ENDIAN
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
typedef const char* MSGID;
|
|
||||||
|
|
||||||
#define safebuf static
|
|
||||||
|
|
||||||
#if !defined(LITTLE_ENDIAN) && !defined(BIG_ENDIAN)
|
|
||||||
#if defined(__i386) || defined(i386) || defined(__i386__)
|
|
||||||
#define LITTLE_ENDIAN
|
|
||||||
#elif defined(BYTE_ORDER) && BYTE_ORDER == LITTLE_ENDIAN
|
|
||||||
#define LITTLE_ENDIAN
|
|
||||||
#elif defined(BYTE_ORDER) && BYTE_ORDER == BIG_ENDIAN
|
|
||||||
#define BIG_ENDIAN
|
|
||||||
#else
|
|
||||||
#error "Neither LITTLE_ENDIAN nor BIG_ENDIAN are defined. Define one of them."
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(LITTLE_ENDIAN) && defined(BIG_ENDIAN)
|
|
||||||
#if defined(BYTE_ORDER) && BYTE_ORDER == BIG_ENDIAN
|
|
||||||
#undef LITTLE_ENDIAN
|
|
||||||
#elif defined(BYTE_ORDER) && BYTE_ORDER == LITTLE_ENDIAN
|
|
||||||
#undef BIG_ENDIAN
|
|
||||||
#else
|
|
||||||
#error "Both LITTLE_ENDIAN and BIG_ENDIAN are defined. Undef one of them."
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if !defined(BIG_ENDIAN) && !defined(_WIN_CE) && defined(_WIN_32)
|
|
||||||
/* allow not aligned integer access, increases speed in some operations */
|
|
||||||
#define ALLOW_NOT_ALIGNED_INT
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(__sparc) || defined(sparc) || defined(__sparcv9)
|
|
||||||
/* prohibit not aligned access to data structures in text comression
|
|
||||||
algorithm, increases memory requirements */
|
|
||||||
#define STRICT_ALIGNMENT_REQUIRED
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif // _RAR_OS_
|
|
@ -1,49 +0,0 @@
|
|||||||
#ifndef _RAR_PATHFN_
|
|
||||||
#define _RAR_PATHFN_
|
|
||||||
|
|
||||||
char* PointToName(const char *Path);
|
|
||||||
wchar* PointToName(const wchar *Path);
|
|
||||||
char* PointToLastChar(const char *Path);
|
|
||||||
char* ConvertPath(const char *SrcPath,char *DestPath);
|
|
||||||
wchar* ConvertPath(const wchar *SrcPath,wchar *DestPath);
|
|
||||||
void SetExt(char *Name,const char *NewExt);
|
|
||||||
void SetExt(wchar *Name,const wchar *NewExt);
|
|
||||||
void SetSFXExt(char *SFXName);
|
|
||||||
void SetSFXExt(wchar *SFXName);
|
|
||||||
char *GetExt(const char *Name);
|
|
||||||
wchar *GetExt(const wchar *Name);
|
|
||||||
bool CmpExt(const char *Name,const char *Ext);
|
|
||||||
bool IsWildcard(const char *Str,const wchar *StrW=NULL);
|
|
||||||
bool IsPathDiv(int Ch);
|
|
||||||
bool IsDriveDiv(int Ch);
|
|
||||||
int GetPathDisk(const char *Path);
|
|
||||||
void AddEndSlash(char *Path);
|
|
||||||
void AddEndSlash(wchar *Path);
|
|
||||||
void GetFilePath(const char *FullName,char *Path,int MaxLength);
|
|
||||||
void GetFilePath(const wchar *FullName,wchar *Path,int MaxLength);
|
|
||||||
void RemoveNameFromPath(char *Path);
|
|
||||||
void RemoveNameFromPath(wchar *Path);
|
|
||||||
void GetAppDataPath(char *Path);
|
|
||||||
void GetRarDataPath(char *Path);
|
|
||||||
bool EnumConfigPaths(char *Path,int Number);
|
|
||||||
void GetConfigName(const char *Name,char *FullName,bool CheckExist);
|
|
||||||
char* GetVolNumPart(char *ArcName);
|
|
||||||
void NextVolumeName(char *ArcName,wchar *ArcNameW,uint MaxLength,bool OldNumbering);
|
|
||||||
bool IsNameUsable(const char *Name);
|
|
||||||
void MakeNameUsable(char *Name,bool Extended);
|
|
||||||
char* UnixSlashToDos(char *SrcName,char *DestName=NULL,uint MaxLength=NM);
|
|
||||||
char* DosSlashToUnix(char *SrcName,char *DestName=NULL,uint MaxLength=NM);
|
|
||||||
wchar* UnixSlashToDos(wchar *SrcName,wchar *DestName=NULL,uint MaxLength=NM);
|
|
||||||
bool IsFullPath(const char *Path);
|
|
||||||
bool IsFullPath(const wchar *Path);
|
|
||||||
bool IsDiskLetter(const char *Path);
|
|
||||||
bool IsDiskLetter(const wchar *Path);
|
|
||||||
void GetPathRoot(const char *Path,char *Root);
|
|
||||||
int ParseVersionFileName(char *Name,wchar *NameW,bool Truncate);
|
|
||||||
char* VolNameToFirstName(const char *VolName,char *FirstName,bool NewNumbering);
|
|
||||||
wchar* GetWideName(const char *Name,const wchar *NameW,wchar *DestW);
|
|
||||||
|
|
||||||
|
|
||||||
inline char* GetOutputName(const char *Name) {return((char *)Name);};
|
|
||||||
|
|
||||||
#endif
|
|
@ -1,77 +0,0 @@
|
|||||||
#ifndef _RAR_RARCOMMON_
|
|
||||||
#define _RAR_RARCOMMON_
|
|
||||||
|
|
||||||
#include "raros.hpp"
|
|
||||||
#include "os.hpp"
|
|
||||||
|
|
||||||
#ifdef RARDLL
|
|
||||||
#include "dll.hpp"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef _WIN_CE
|
|
||||||
#include "version.hpp"
|
|
||||||
#endif
|
|
||||||
#include "rartypes.hpp"
|
|
||||||
#include "rardefs.hpp"
|
|
||||||
#include "rarlang.hpp"
|
|
||||||
#include "unicode.hpp"
|
|
||||||
#include "errhnd.hpp"
|
|
||||||
#include "array.hpp"
|
|
||||||
#include "timefn.hpp"
|
|
||||||
#include "options.hpp"
|
|
||||||
#include "headers.hpp"
|
|
||||||
#include "pathfn.hpp"
|
|
||||||
#include "strfn.hpp"
|
|
||||||
#include "strlist.hpp"
|
|
||||||
#include "file.hpp"
|
|
||||||
#include "sha1.hpp"
|
|
||||||
#include "crc.hpp"
|
|
||||||
#include "rijndael.hpp"
|
|
||||||
#include "crypt.hpp"
|
|
||||||
#include "filefn.hpp"
|
|
||||||
#include "filestr.hpp"
|
|
||||||
#include "find.hpp"
|
|
||||||
#include "scantree.hpp"
|
|
||||||
#include "savepos.hpp"
|
|
||||||
#include "getbits.hpp"
|
|
||||||
#include "rdwrfn.hpp"
|
|
||||||
#include "archive.hpp"
|
|
||||||
#include "match.hpp"
|
|
||||||
#include "cmddata.hpp"
|
|
||||||
#include "filcreat.hpp"
|
|
||||||
#include "consio.hpp"
|
|
||||||
#include "system.hpp"
|
|
||||||
#include "isnt.hpp"
|
|
||||||
#include "log.hpp"
|
|
||||||
#include "rawread.hpp"
|
|
||||||
#include "encname.hpp"
|
|
||||||
#include "resource.hpp"
|
|
||||||
#include "compress.hpp"
|
|
||||||
|
|
||||||
|
|
||||||
#include "rarvm.hpp"
|
|
||||||
#include "model.hpp"
|
|
||||||
|
|
||||||
|
|
||||||
#include "unpack.hpp"
|
|
||||||
|
|
||||||
|
|
||||||
#include "extinfo.hpp"
|
|
||||||
#include "extract.hpp"
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#include "list.hpp"
|
|
||||||
|
|
||||||
|
|
||||||
#include "rs.hpp"
|
|
||||||
#include "recvol.hpp"
|
|
||||||
#include "volume.hpp"
|
|
||||||
#include "smallfn.hpp"
|
|
||||||
#include "ulinks.hpp"
|
|
||||||
|
|
||||||
#include "global.hpp"
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
|
@ -1,24 +0,0 @@
|
|||||||
#ifndef _RAR_DEFS_
|
|
||||||
#define _RAR_DEFS_
|
|
||||||
|
|
||||||
#define Min(x,y) (((x)<(y)) ? (x):(y))
|
|
||||||
#define Max(x,y) (((x)>(y)) ? (x):(y))
|
|
||||||
|
|
||||||
#define ASIZE(x) (sizeof(x)/sizeof(x[0]))
|
|
||||||
|
|
||||||
#define MAXPASSWORD 128
|
|
||||||
#define MAXSFXSIZE 0x80000
|
|
||||||
|
|
||||||
#define DefSFXName "default.sfx"
|
|
||||||
#define DefSortListName "rarfiles.lst"
|
|
||||||
|
|
||||||
#ifndef FA_RDONLY
|
|
||||||
#define FA_RDONLY 0x01
|
|
||||||
#define FA_HIDDEN 0x02
|
|
||||||
#define FA_SYSTEM 0x04
|
|
||||||
#define FA_LABEL 0x08
|
|
||||||
#define FA_DIREC 0x10
|
|
||||||
#define FA_ARCH 0x20
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
@ -1,10 +0,0 @@
|
|||||||
#ifndef _RAR_LANG_
|
|
||||||
#define _RAR_LANG_
|
|
||||||
|
|
||||||
#ifdef USE_RC
|
|
||||||
#include "rarres.hpp"
|
|
||||||
#else
|
|
||||||
#include "loclang.hpp"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
@ -1,41 +0,0 @@
|
|||||||
#ifndef _RAR_RAROS_
|
|
||||||
#define _RAR_RAROS_
|
|
||||||
|
|
||||||
#ifdef __EMX__
|
|
||||||
#define _EMX
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef __DJGPP__
|
|
||||||
#define _DJGPP
|
|
||||||
#define _EMX
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(__WIN32__) || defined(_WIN32)
|
|
||||||
#define _WIN_32
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef _WIN32_WCE
|
|
||||||
#define _WIN_32
|
|
||||||
#define _WIN_CE
|
|
||||||
#ifdef WM_FILECHANGEINFO
|
|
||||||
#define PC2002
|
|
||||||
#else
|
|
||||||
#undef PC2002
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef __BEOS__
|
|
||||||
#define _UNIX
|
|
||||||
#define _BEOS
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef __APPLE__
|
|
||||||
#define _UNIX
|
|
||||||
#define _APPLE
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if !defined(_EMX) && !defined(_WIN_32) && !defined(_BEOS) && !defined(_APPLE)
|
|
||||||
#define _UNIX
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
@ -1,47 +0,0 @@
|
|||||||
#ifndef _RAR_TYPES_
|
|
||||||
#define _RAR_TYPES_
|
|
||||||
|
|
||||||
typedef unsigned char byte; // unsigned 8 bits
|
|
||||||
typedef unsigned short ushort; // preferably 16 bits, but can be more
|
|
||||||
typedef unsigned int uint; // 32 bits or more
|
|
||||||
|
|
||||||
#define PRESENT_INT32 // undefine if signed 32 bits is not available
|
|
||||||
|
|
||||||
typedef unsigned int uint32; // 32 bits exactly
|
|
||||||
typedef signed int int32; // signed 32 bits exactly
|
|
||||||
|
|
||||||
// If compiler does not support 64 bit variables, we can define
|
|
||||||
// uint64 and int64 as 32 bit, but it will limit the maximum processed
|
|
||||||
// file size to 2 GB.
|
|
||||||
#if defined(__BORLANDC__) || defined(_MSC_VER)
|
|
||||||
typedef unsigned __int64 uint64; // unsigned 64 bits
|
|
||||||
typedef signed __int64 int64; // signed 64 bits
|
|
||||||
#else
|
|
||||||
typedef unsigned long long uint64; // unsigned 64 bits
|
|
||||||
typedef signed long long int64; // signed 64 bits
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#if defined(_WIN_32) || defined(__GNUC__) || defined(__sgi) || defined(_AIX) || defined(__sun) || defined(__hpux) || defined(_OSF_SOURCE)
|
|
||||||
typedef wchar_t wchar;
|
|
||||||
#else
|
|
||||||
typedef ushort wchar;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Get lowest 16 bits.
|
|
||||||
#define SHORT16(x) (sizeof(ushort)==2 ? (ushort)(x):((x)&0xffff))
|
|
||||||
|
|
||||||
// Get lowest 32 bits.
|
|
||||||
#define UINT32(x) (sizeof(uint32)==4 ? (uint32)(x):((x)&0xffffffff))
|
|
||||||
|
|
||||||
// Make 64 bit integer from two 32 bit.
|
|
||||||
#define INT32TO64(high,low) ((((uint64)(high))<<32)+((uint64)low))
|
|
||||||
|
|
||||||
// Special int64 value, large enough to be never found in real life.
|
|
||||||
// We use it in situations, when we need to indicate that parameter
|
|
||||||
// is not defined and probably should be calculated inside of function.
|
|
||||||
// Lower part is intentionally 0x7fffffff, not 0xffffffff, to make it
|
|
||||||
// compatible with 32 bit int64.
|
|
||||||
#define INT64NDF INT32TO64(0x7fffffff,0x7fffffff)
|
|
||||||
|
|
||||||
#endif
|
|
@ -1,113 +0,0 @@
|
|||||||
#ifndef _RAR_VM_
|
|
||||||
#define _RAR_VM_
|
|
||||||
|
|
||||||
#define VM_STANDARDFILTERS
|
|
||||||
|
|
||||||
#ifndef SFX_MODULE
|
|
||||||
#define VM_OPTIMIZE
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#define VM_MEMSIZE 0x40000
|
|
||||||
#define VM_MEMMASK (VM_MEMSIZE-1)
|
|
||||||
#define VM_GLOBALMEMADDR 0x3C000
|
|
||||||
#define VM_GLOBALMEMSIZE 0x2000
|
|
||||||
#define VM_FIXEDGLOBALSIZE 64
|
|
||||||
|
|
||||||
enum VM_Commands
|
|
||||||
{
|
|
||||||
VM_MOV, VM_CMP, VM_ADD, VM_SUB, VM_JZ, VM_JNZ, VM_INC, VM_DEC,
|
|
||||||
VM_JMP, VM_XOR, VM_AND, VM_OR, VM_TEST, VM_JS, VM_JNS, VM_JB,
|
|
||||||
VM_JBE, VM_JA, VM_JAE, VM_PUSH, VM_POP, VM_CALL, VM_RET, VM_NOT,
|
|
||||||
VM_SHL, VM_SHR, VM_SAR, VM_NEG, VM_PUSHA,VM_POPA, VM_PUSHF,VM_POPF,
|
|
||||||
VM_MOVZX,VM_MOVSX,VM_XCHG, VM_MUL, VM_DIV, VM_ADC, VM_SBB, VM_PRINT,
|
|
||||||
|
|
||||||
#ifdef VM_OPTIMIZE
|
|
||||||
VM_MOVB, VM_MOVD, VM_CMPB, VM_CMPD,
|
|
||||||
|
|
||||||
VM_ADDB, VM_ADDD, VM_SUBB, VM_SUBD, VM_INCB, VM_INCD, VM_DECB, VM_DECD,
|
|
||||||
VM_NEGB, VM_NEGD,
|
|
||||||
#endif
|
|
||||||
|
|
||||||
VM_STANDARD
|
|
||||||
};
|
|
||||||
|
|
||||||
enum VM_StandardFilters {
|
|
||||||
VMSF_NONE, VMSF_E8, VMSF_E8E9, VMSF_ITANIUM, VMSF_RGB, VMSF_AUDIO,
|
|
||||||
VMSF_DELTA, VMSF_UPCASE
|
|
||||||
};
|
|
||||||
|
|
||||||
enum VM_Flags {VM_FC=1,VM_FZ=2,VM_FS=0x80000000};
|
|
||||||
|
|
||||||
enum VM_OpType {VM_OPREG,VM_OPINT,VM_OPREGMEM,VM_OPNONE};
|
|
||||||
|
|
||||||
struct VM_PreparedOperand
|
|
||||||
{
|
|
||||||
VM_OpType Type;
|
|
||||||
uint Data;
|
|
||||||
uint Base;
|
|
||||||
uint *Addr;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct VM_PreparedCommand
|
|
||||||
{
|
|
||||||
VM_Commands OpCode;
|
|
||||||
bool ByteMode;
|
|
||||||
VM_PreparedOperand Op1,Op2;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
struct VM_PreparedProgram
|
|
||||||
{
|
|
||||||
VM_PreparedProgram()
|
|
||||||
{
|
|
||||||
AltCmd=NULL;
|
|
||||||
FilteredDataSize=0;
|
|
||||||
CmdCount=0;
|
|
||||||
}
|
|
||||||
|
|
||||||
Array<VM_PreparedCommand> Cmd;
|
|
||||||
VM_PreparedCommand *AltCmd;
|
|
||||||
int CmdCount;
|
|
||||||
|
|
||||||
Array<byte> GlobalData;
|
|
||||||
Array<byte> StaticData; // static data contained in DB operators
|
|
||||||
uint InitR[7];
|
|
||||||
|
|
||||||
byte *FilteredData;
|
|
||||||
uint FilteredDataSize;
|
|
||||||
};
|
|
||||||
|
|
||||||
class RarVM:private BitInput
|
|
||||||
{
|
|
||||||
private:
|
|
||||||
inline uint GetValue(bool ByteMode,uint *Addr);
|
|
||||||
inline void SetValue(bool ByteMode,uint *Addr,uint Value);
|
|
||||||
inline uint* GetOperand(VM_PreparedOperand *CmdOp);
|
|
||||||
void DecodeArg(VM_PreparedOperand &Op,bool ByteMode);
|
|
||||||
#ifdef VM_OPTIMIZE
|
|
||||||
void Optimize(VM_PreparedProgram *Prg);
|
|
||||||
#endif
|
|
||||||
bool ExecuteCode(VM_PreparedCommand *PreparedCode,uint CodeSize);
|
|
||||||
#ifdef VM_STANDARDFILTERS
|
|
||||||
VM_StandardFilters IsStandardFilter(byte *Code,uint CodeSize);
|
|
||||||
void ExecuteStandardFilter(VM_StandardFilters FilterType);
|
|
||||||
uint FilterItanium_GetBits(byte *Data,int BitPos,int BitCount);
|
|
||||||
void FilterItanium_SetBits(byte *Data,uint BitField,int BitPos,int BitCount);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
byte *Mem;
|
|
||||||
uint R[8];
|
|
||||||
uint Flags;
|
|
||||||
public:
|
|
||||||
RarVM();
|
|
||||||
~RarVM();
|
|
||||||
void Init();
|
|
||||||
void Prepare(byte *Code,uint CodeSize,VM_PreparedProgram *Prg);
|
|
||||||
void Execute(VM_PreparedProgram *Prg);
|
|
||||||
void SetLowEndianValue(uint *Addr,uint Value);
|
|
||||||
void SetMemory(uint Pos,byte *Data,uint DataSize);
|
|
||||||
static uint ReadData(BitInput &Inp);
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif
|
|
@ -1,32 +0,0 @@
|
|||||||
#ifndef _RAR_RAWREAD_
|
|
||||||
#define _RAR_RAWREAD_
|
|
||||||
|
|
||||||
class RawRead
|
|
||||||
{
|
|
||||||
private:
|
|
||||||
Array<byte> Data;
|
|
||||||
File *SrcFile;
|
|
||||||
size_t DataSize;
|
|
||||||
size_t ReadPos;
|
|
||||||
#ifndef SHELL_EXT
|
|
||||||
CryptData *Crypt;
|
|
||||||
#endif
|
|
||||||
public:
|
|
||||||
RawRead(File *SrcFile);
|
|
||||||
void Read(size_t Size);
|
|
||||||
void Read(byte *SrcData,size_t Size);
|
|
||||||
void Get(byte &Field);
|
|
||||||
void Get(ushort &Field);
|
|
||||||
void Get(uint &Field);
|
|
||||||
void Get8(int64 &Field);
|
|
||||||
void Get(byte *Field,size_t Size);
|
|
||||||
void Get(wchar *Field,size_t Size);
|
|
||||||
uint GetCRC(bool ProcessedOnly);
|
|
||||||
size_t Size() {return DataSize;}
|
|
||||||
size_t PaddedSize() {return Data.Size()-DataSize;}
|
|
||||||
#ifndef SHELL_EXT
|
|
||||||
void SetCrypt(CryptData *Crypt) {RawRead::Crypt=Crypt;}
|
|
||||||
#endif
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif
|
|
@ -1,89 +0,0 @@
|
|||||||
#ifndef _RAR_DATAIO_
|
|
||||||
#define _RAR_DATAIO_
|
|
||||||
|
|
||||||
class CmdAdd;
|
|
||||||
class Unpack;
|
|
||||||
|
|
||||||
|
|
||||||
class ComprDataIO
|
|
||||||
{
|
|
||||||
private:
|
|
||||||
void ShowUnpRead(int64 ArcPos,int64 ArcSize);
|
|
||||||
void ShowUnpWrite();
|
|
||||||
|
|
||||||
|
|
||||||
bool UnpackFromMemory;
|
|
||||||
size_t UnpackFromMemorySize;
|
|
||||||
byte *UnpackFromMemoryAddr;
|
|
||||||
|
|
||||||
bool UnpackToMemory;
|
|
||||||
size_t UnpackToMemorySize;
|
|
||||||
byte *UnpackToMemoryAddr;
|
|
||||||
|
|
||||||
size_t UnpWrSize;
|
|
||||||
byte *UnpWrAddr;
|
|
||||||
|
|
||||||
int64 UnpPackedSize;
|
|
||||||
|
|
||||||
bool Progress;
|
|
||||||
bool TestMode;
|
|
||||||
bool SkipUnpCRC;
|
|
||||||
|
|
||||||
File *SrcFile;
|
|
||||||
File *DestFile;
|
|
||||||
|
|
||||||
CmdAdd *Command;
|
|
||||||
|
|
||||||
FileHeader *SubHead;
|
|
||||||
int64 *SubHeadPos;
|
|
||||||
|
|
||||||
#ifndef NOCRYPT
|
|
||||||
CryptData Crypt;
|
|
||||||
CryptData Decrypt;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
int LastPercent;
|
|
||||||
|
|
||||||
char CurrentCommand;
|
|
||||||
|
|
||||||
public:
|
|
||||||
ComprDataIO();
|
|
||||||
virtual ~ComprDataIO() {}
|
|
||||||
void Init();
|
|
||||||
virtual int UnpRead(byte *Addr,size_t Count);
|
|
||||||
virtual void UnpWrite(byte *Addr,size_t Count);
|
|
||||||
void EnableShowProgress(bool Show) {Progress=Show;}
|
|
||||||
void GetUnpackedData(byte **Data,size_t *Size);
|
|
||||||
void SetPackedSizeToRead(int64 Size) {UnpPackedSize=Size;}
|
|
||||||
void SetTestMode(bool Mode) {TestMode=Mode;}
|
|
||||||
void SetSkipUnpCRC(bool Skip) {SkipUnpCRC=Skip;}
|
|
||||||
void SetFiles(File *SrcFile,File *DestFile);
|
|
||||||
void SetCommand(CmdAdd *Cmd) {Command=Cmd;}
|
|
||||||
void SetSubHeader(FileHeader *hd,int64 *Pos) {SubHead=hd;SubHeadPos=Pos;}
|
|
||||||
void SetEncryption(int Method,const char *Password,const byte *Salt,bool Encrypt,bool HandsOffHash);
|
|
||||||
void SetAV15Encryption();
|
|
||||||
void SetCmt13Encryption();
|
|
||||||
void SetUnpackToMemory(byte *Addr,uint Size);
|
|
||||||
void SetCurrentCommand(char Cmd) {CurrentCommand=Cmd;}
|
|
||||||
|
|
||||||
bool PackVolume;
|
|
||||||
bool UnpVolume;
|
|
||||||
bool NextVolumeMissing;
|
|
||||||
int64 TotalPackRead;
|
|
||||||
int64 UnpArcSize;
|
|
||||||
int64 CurPackRead,CurPackWrite,CurUnpRead,CurUnpWrite;
|
|
||||||
|
|
||||||
// Size of already processed archives.
|
|
||||||
// Used to calculate the total operation progress.
|
|
||||||
int64 ProcessedArcSize;
|
|
||||||
|
|
||||||
int64 TotalArcSize;
|
|
||||||
|
|
||||||
uint PackFileCRC,UnpFileCRC,PackedCRC;
|
|
||||||
|
|
||||||
int Encryption;
|
|
||||||
int Decryption;
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif
|
|
@ -1,16 +0,0 @@
|
|||||||
#ifndef _RAR_RECVOL_
|
|
||||||
#define _RAR_RECVOL_
|
|
||||||
|
|
||||||
class RecVolumes
|
|
||||||
{
|
|
||||||
private:
|
|
||||||
File *SrcFile[256];
|
|
||||||
Array<byte> Buf;
|
|
||||||
public:
|
|
||||||
RecVolumes();
|
|
||||||
~RecVolumes();
|
|
||||||
void Make(RAROptions *Cmd,char *ArcName,wchar *ArcNameW);
|
|
||||||
bool Restore(RAROptions *Cmd,const char *Name,const wchar *NameW,bool Silent);
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user